一切福田,不離方寸,從心而覓,感無不通。

Category Archives: Backend

整理一些学习Spring Boot/Spring Cloud资料

Spring Boot 系列文章:http://www.ityouknow.com/spring-boot.html Spring Cloud 系列文章:http://www.ityouknow.com/spring-cloud.html Spring Cloud 从入门到精通:https://blog.csdn.net/valada/article/details/80892573

龙生   15 Jul 2019
View Details

SpringCloud五大核心组件

Spring Cloud由众多子项目组成,如Spring Cloud Config、Spring Cloud Netflix、Spring Cloud Consul 等,提供了搭建分布式系统及微服务常用的工具,如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性token、全局锁、选主、分布式会话和集群状态等,满足了构建微服务所需的所有解决方案。 服务发现——Netflix Eureka 客服端负载均衡——Netflix Ribbon 断路器——Netflix Hystrix 服务网关——Netflix Zuul 分布式配置——Spring Cloud Config Eureka 2eur.png 一个RESTful服务,用来定位运行在AWS地区(Region)中的中间层服务。由两个组件组成:Eureka服务器和Eureka客户端。Eureka服务器用作服务注册服务器。Eureka客户端是一个java客户端,用来简化与服务器的交互、作为轮询负载均衡器,并提供服务的故障切换支持。Netflix在其生产环境中使用的是另外的客户端,它提供基于流量、资源利用率以及出错状态的加权负载均衡。 Ribbon Ribbon,主要提供客户侧的软件负载均衡算法。 3ri.png Ribbon客户端组件提供一系列完善的配置选项,比如连接超时、重试、重试算法等。Ribbon内置可插拔、可定制的负载均衡组件。下面是用到的一些负载均衡策略: 简单轮询负载均衡 加权响应时间负载均衡 区域感知轮询负载均衡 随机负载均衡 Ribbon中还包括以下功能: 易于与服务发现组件(比如Netflix的Eureka)集成 使用Archaius完成运行时配置 使用JMX暴露运维指标,使用Servo发布 多种可插拔的序列化选择 异步和批处理操作(即将推出) 自动SLA框架(即将推出) 系统管理/指标控制台(即将推出) Hystrix 41h.png 断路器可以防止一个应用程序多次试图执行一个操作,即很可能失败,允许它继续而不等待故障恢复或者浪费 CPU 周期,而它确定该故障是持久的。断路器模式也使应用程序能够检测故障是否已经解决。如果问题似乎已经得到纠正​​,应用程序可以尝试调用操作。欢迎大家一起学习研究相关技术愿意了解源码的朋友直接求求交流分享技术:2147775633 42h.png 断路器增加了稳定性和灵活性,以一个系统,提供稳定性,而系统从故障中恢复,并尽量减少此故障的对性能的影响。它可以帮助快速地拒绝对一个操作,即很可能失败,而不是等待操作超时(或者不返回)的请求,以保持系统的响应时间。如果断路器提高每次改变状态的时间的事件,该信息可以被用来监测由断路器保护系统的部件的健康状况,或以提醒管理员当断路器跳闸,以在打开状态。 43h.png 流程图 44h.png Zuul 51z.png 类似nginx,反向代理的功能,不过netflix自己增加了一些配合其他组件的特性。 Spring Cloud Config 52z.png 这个还是静态的,得配合Spring Cloud Bus实现动态的配置更新。 更多详细源码参考来源:http://minglisoft.cn/honghu/technology.html 作者:IT小跑兵 链接:https://www.jianshu.com/p/02f3995001d0 来源:简书 简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

龙生   15 Jul 2019
View Details

ASP.NET Core WebApi使用Swagger生成api说明文档看这篇就够了

引言 在使用asp.net core 进行api开发完成后,书写api说明文档对于程序员来说想必是件很痛苦的事情吧,但文档又必须写,而且文档的格式如果没有具体要求的话,最终完成的文档则完全取决于开发者的心情。或者详细点,或者简单点。那么有没有一种快速有效的方法来构建api说明文档呢?答案是肯定的, Swagger就是最受欢迎的REST APIs文档生成工具之一! 为什么使用Swagger作为REST APIs文档生成工具 Swagger 可以生成一个具有互动性的API控制台,开发者可以用来快速学习和尝试API。 Swagger 可以生成客户端SDK代码用于各种不同的平台上的实现。 Swagger 文件可以在许多不同的平台上从代码注释中自动生成。 Swagger 有一个强大的社区,里面有许多强悍的贡献者。 asp.net core中如何使用Swagger生成api说明文档呢 Swashbuckle.AspNetCore 是一个开源项目,用于生成 ASP.NET Core Web API 的 Swagger 文档。 NSwag 是另一个用于将 Swagger UI 或 ReDoc 集成到 ASP.NET Core Web API 中的开源项目。 它提供了为 API 生成 C# 和 TypeScript 客户端代码的方法。 下面以Swashbuckle.AspNetCore为例为大家进行展示 Swashbuckle由哪些组成部分呢? Swashbuckle.AspNetCore.Swagger:将 SwaggerDocument 对象公开为 JSON 终结点的 Swagger 对象模型和中间件。 Swashbuckle.AspNetCore.SwaggerGen:从路由、控制器和模型直接生成 SwaggerDocument 对象的 Swagger 生成器。 它通常与 Swagger 终结点中间件结合,以自动公开 Swagger JSON。 Swashbuckle.AspNetCore.SwaggerUI:Swagger UI 工具的嵌入式版本。 它解释 Swagger JSON 以构建描述 Web API 功能的可自定义的丰富体验。 它包括针对公共方法的内置测试工具。 如何使用vs2017安装Swashbuckle呢? 从“程序包管理器控制台”窗口进行安装 转到“视图” > “其他窗口” > “程序包管理器控制台” 导航到包含 TodoApi.csproj 文件的目录 请执行以下命令 ·Install-Package […]

龙生   15 Jul 2019
View Details

HSqlDB(java内置数据库)

1 HSqlDB简介 HSQLDB是一款Java内置的数据库,非常适合在用于快速的测试和演示的Java程序中。(无需独立安装数据库)  HSQLDB有三种模式: 1. Server 就像Mysql那样 2. In-Process 又叫做 Standalone 模式,数据放在本地文件,伴随JVM一起启动,是HSQLDB的主要应用场景 3. Memory-only, 仅仅在内存中,一旦重启,数据就消失。 2 客户端 2.1 运行HSQLDB_Client类中的main方法 其主方法调用了DatabaseManagerSwing的主方法 这回导致启动一个Swing做的客户端 2.2 创建数据库,账号和密码 填写连接参数 1. Setting Name:输入test 2. Type: 选择HSQL Database Engine Standalone 3. Driver: 使用默认的org.hsqldb.jdbcDriver 4. URL: 输入 Jdbc:hsqldb:file: D:/SoftWareInstall/HSqlDB/test 5. User: root 6: Password:root 第3步: 这是Standalone方式,对于同一个数据库,只能启动一次,不支持多进程连接同一个数据库,所以后续在写JAVA代码连接的时候,必须把这个客户端关闭掉才行。 第4步: Jdbc:hsqldb:file: D:/SoftWareInstall/HSqlDB/test会导致在D:/SoftWareInstall/HSqlDB目录下创建一个test数据库 第5,6步:会导致创建账号密码,以后再连接D:/SoftWareInstall/HSqlDB下的test数据库,就必须用这个账号密码了。 2.3 创建表 CREATE TABLE category (   id int NOT NULL GENERATED BY DEFAULT AS IDENTITY,   name varchar(255) DEFAULT NULL,   PRIMARY KEY (id) ) ; insert into category values (null,'水果'); insert into category values (null,'衣服'); insert into […]

龙生   15 Jul 2019
View Details

HLS

HLS (HTTP Live Streaming)是Apple的动态码率自适应技术。主要用于PC和Apple终端的音视频服务。包括一个m3u(8)的索引文件,TS媒体分片文件和key加密串文件。   常用的流媒体协议主要有 HTTP 渐进下载和基于 RTSP/RTP 的实时流媒体协议,这二种基本是完全不同的东西,目前比较方便又好用的是用 HTTP 渐进下载方法。在这个中 apple 公司的 HTTP Live Streaming 是这个方面的代表。它最初是苹果公司针对iPhone、iPod、iTouch和iPad等移动设备而开发的流.现在见到在桌面也有很多应用了,HTML5 是直接支持这个。 但是HLS协议的小切片方式会生成大量的文件,存储或处理这些文件会造成大量资源浪费。如果要实现数天的时移,索引量将会是个巨额数字,并明显影响请求速度。因此,HLS协议对存储I/O要求相当苛刻。对此,也有公司提出了非常好的解决方案。 新型点播服务器系统,独创了内存缓存数据实时切片技术,颠覆了这种传统实现方法,从根本上解决了大量切片的碎片问题,使得单台服务器的切片与打包能力不再是瓶颈。其基本原理如下: 不将TS切片文件存到磁盘,而是存在内存当中,这种技术使得服务器的磁盘上面不再会有“数以吨计”的文件碎片,极大减少了磁盘的I/O次数,延长了服务器磁盘的使用寿命,极大提高了服务器运行的稳定性。同时,由于使用这种技术,使得终端请求数据时直接从服务器的内存中获取,极大提高了对终端数据请求的反应速度,优化了视频观看体验。 from:https://baike.baidu.com/item/HLS/8328931

龙生   09 Jul 2019
View Details

有关当前主流视频网站采用的解决方案

这几天由于工作中要搭建视频点播平台,分析了一下当前主流视频网站采用的技术。主要分析了腾讯、优酷、土豆、爱奇艺这几个平台,他们采用的技术却惊人的相似。全都是采用m3u8这样的解决方案,视频分成小段,方便在网络中的快速传输。也能防止非技术人员的下载~~,如果真正意义上的防下载,几乎是不可能的,尤其是基于H5的技术。 虎牙直播用的也是m3u8的解决方案,有一些延迟,不过可以接受。斗鱼用的渐进时流的推送,但直播结束时应该也是可以保存起来的。 不过话又说回来,点播和直播的意义并不防下载,这个防下载还应该以知识产权相关的法律去保障,同时培养公民尊重知识产权。 扯远了,说说m3u8解决方案用的具体细节吧: 1.首先m3u8来自Apple公司的HLS( HTTP Live Streaming 是Apple的动态码率自适应技术)。 2.动态解码,或者说分段可以用开源软件FFmpeg,功能相当强大。网址:http://ffmpeg.org/ 3.播放器就用简单易用的Chimee,免费哦。网址:http://chimee.org/    当然也可以用收费的flowplayer,都有H5的解决方案。网址:https://flowplayer.com/

龙生   09 Jul 2019
View Details

ffmpeg基础使用

参考 ffmpeg常用命令 ffmpeg参数中文详细解释 [总结]FFMPEG视音频编解码零基础学习方法 一、安装 打开https://ffmpeg.zeranoe.com/builds/,该网站中的FFMPEG分为3个版本:Static,Shared,Dev。 前两个版本可以直接在命令行中使用,他们的区别在于:Static里面只有3个应用程序:ffmpeg.exe,ffplay.exe,ffprobe.exe,每个exe的体积都很大,相关的Dll已经被编译到exe里面去了。Shared里面除了3个应用程序:ffmpeg.exe,ffplay.exe,ffprobe.exe之外,还有一些Dll,比如说avcodec-54.dll之类的。Shared里面的exe体积很小,他们在运行的时候,到相应的Dll中调用功能。Dev版本是用于开发的,里面包含了库文件xxx.lib以及头文件xxx.h,这个版本不包含exe文件。 这里下载了static版本,是个zip压缩文件,解压到指定目录,去配置环境变量,比如e:\ffmpeg20180919\bin,这样bin下面的ffmpeg.exe就可以在命令行中使用了,可以用ffmpeg -version测试一下: image.png 放一个mp4视频,然后把声音提取到output.acc,用命令测试一下:ffmpeg -i mov_bbb.mp4 -acodec copy -vn output.aac 二、常用命令 主要参数:

视频参数:

音频参数:

1. 视频格式转换 (其实格式转换说法不太准确,但大家都这么叫,准确的说,应该是视频容器转换) 比如一个avi文件,想转为mp4,或者一个mp4想转为ts。 ffmpeg -i input.avi output.mp4 ffmpeg -i input.mp4 output.ts 插个号外:某天我在知乎上看到一段视频,想转给微信好友看,怎么操作呢。这里参考如何全自动下载知乎上的视频到本地(注意不要滥用),先打开要观看的视频页面,再F12清空,然后开始播放视频,就能看到类似https://vdn.vzuu.com/SD/49c84c7c-c61a-11e8-8bad-0242ac112a0a.mp4?auth_key=1539832492-0-0-c61c22f39c&expiration=1539832492&disable_local_cache=1这样的字符串,然后用ffmpeg -i "https://vdn.vzuu.com/SD/49c8…" output.mp4即可下载。弄到电脑上,用电脑QQ发送到手机QQ上,在手机QQ上点击选择保存到手机上。然后在微信里选照片就能看到这个视频了(注意视频文件不要超过20M,另外最开始用的不是电脑QQ,而是百度网盘,发现不行……)。 2. 提取音频 比如我有一个“晓松奇谈”,可是我不想看到他的脸,我只想听声音, 地铁上可以听,咋办? ffmpeg -i 晓松奇谈.mp4 -acodec copy -vn output.aac 上面的命令,默认mp4的audio codec是aac,如果不是会出错,咱可以暴力一点,不管什么音频,都转为最常见的aac。 ffmpeg -i 晓松奇谈.mp4 -acodec aac -vn output.aac (-vn 不处理视频 ) 3. 提取视频 我目测有些IT员工,特别是做嵌入式的,比如机顶盒,想debug一下,没有音频的情况下,播放一个视频几天几夜会不会crash,这时候你需要一个纯视频文件,可以这么干。 ffmpeg -i input.mp4 -vcodec copy -an output.mp4 -an 不处理音频 4. 视频剪切 经常要测试视频,但是只需要测几秒钟,可是视频却有几个G,咋办?切啊! 下面的命令,就可以从时间为00:00:15开始,截取5秒钟的视频。 ffmpeg -ss 00:00:15 -t 00:00:05 -i input.mp4 -vcodec copy […]

龙生   09 Jul 2019
View Details

安装sass,npm install node-sass --save报错的原因和解决办法

Vue安装sass的命令: 1、npm install node-sass --save-dev 2、npm install sass-loader --save-dev 在进行第一步的时候,我们会发现用报了下面这个的错,在百度一下问题的时候,发现原因是: 首先要知道的是,安装 node-sass 时在 node scripts/install 阶段会从 github.com 上下载一个 .node 文件,大部分安装不成功的原因都源自这里,因为 GitHub Releases 里的文件都托管在 s3.amazonaws.com 上面,而这个网址在国内总是网络不稳定,所以我们需要通过第三方服务器下载这个文件。 解决方法: 1、首先安装淘宝镜像

  2、 用cnpm重新安装一次 cnpm install node-sass --save-dev cnpm install sass-loader --save-dev 这样就可以把问题解决了(^_^)   from:https://blog.csdn.net/lgysjfs/article/details/83039906

龙生   08 Jul 2019
View Details

数据库,使用Druid 加密数据库密码

首先我们得下载一个druid-1.0.16.jar的包 其次键入命令 java -cp druid-1.0.16.jar com.alibaba.druid.filter.config.ConfigTools your_password 这时候会生成privatekey,publickey,以及password,相关的截图如下 注意1:如果使用的不是druid-1.0.16.jar可能只会生成一个password。 注意2:如果没配置好,可能会报一大推奇奇怪怪的错误,比如:org.springframework.beans.factory.BeanCreationException: Error creatingbean with name 'shiroFilter':….     配置Druid解密数据库密码 jdbc.type=mysql jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/jesng?useUnicode=true&characterEncoding=utf-8 jdbc.username=root jdbc.password=IVpkS/WvZQKLcm4+f7xlLFo5FzxGIj3O1br9TcvLlq2a17mmt0SWe9Qq1hyVKsnbsRdU6FKTItc6vVIF9RRpTw== jdbc.publickey=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKYBLQ067pCDwEfysD6rAIWZD4C2K7BO09NFYMmA+VD4i+28znGk9F3w3uCFp6vYf633rPJpx+hoHU/+9gBIewUCAwEAAQ== 配置Druid解密数据库密码的主要新增的两行配置。 1、<property name="connectionProperties" value="druid.stat.slowSqlMillis=5000;config.decrypt=true;config.decrypt.key=${jdbc.publickey}"/> 作用:配置ConfigFilter解密密码  ,注意出的publickey对应 2、<property name="filters" value="config" />   作用:提示Druid数据源需要对数据库密码进行解密   from:https://www.cnblogs.com/xiaohu1218/p/7791986.html

龙生   08 Jul 2019
View Details

Idea error:程序包javax.servlet.http不存在

1.idea 初始配置的tomcat7,配置spring boot项目启动失败,单个controller都启动失败,原因是idea内置tomcat7,会失败 2.idea需要配置tomcat8.然后加载依赖关系 a. idea项目左上角,file-->project structure 配置依赖 b.点击libraries  右侧有一个加号点击然后添加 c.找到tomcat lib文件夹,依赖lib文件夹即可   from:https://blog.csdn.net/qq_33919114/article/details/79232774

龙生   05 Jul 2019
View Details
1 108 109 110 282