- 博客(18)
- 收藏
- 关注
原创 学习SpringCloud之服务调用Feign
简介SpringCloudFeign是的作用是微服务间实现声明式的调用。同时还整合了Ribbon和Hystrix的功能。声明式调用的好处在于,避免了像之前介绍Ribbon时使用RestTemplate调用服务那样,需要拼接请求URL,包括请求参数。这样不但减少出错的机会,代码上也比较整洁好阅读和理解。以下示例均基于SpringCloud的Greenwich.SR1版本,且需要...
2019-04-11 09:59:05 189
原创 学习SpringCloud之服务注册与发现Consul
简介SpringCloudConsul和SpringCloudEureka一样是作用于微服务架构中的服务治理。由于Eureka已经停止维护,Consul是一个很好的替代品。除了服务治理以外,Consul还提供一个简易的键/值储存,这可以用于作为动态配置等等。以下示例均基于SpringCloud的Greenwich.SR1版本,Consul版本为v1.4.4,且需要依赖到之前介...
2019-04-10 10:17:35 194
原创 学习SpringCloud之服务网关Gateway
简介SpringCloudGateway和SpringCloudZuul一样是微服务网关,不过Gateway是SpringCloud官方推出的,而Zuul是Netflix推出的。看其他人的一些文章说是Gateway是用于取代Zuul的第二代网关,这个我在官方找不到资料说明。主要术语Route: 路由。Predicate: 断言,即匹配规则。Filter: 过滤器,用于修改请求...
2019-04-10 10:15:51 584
原创 学习SpringCloud之配置中心Config
简介SpringCloudConfig是一个集中性、动态的、可拓展的配置服务,并且提供多种存储配置内容的方式,为微服务架构中的其他应用提供配置。支持存储方式:Git BackendFile System BackendVault BackendJDBC BackendRedis BackendCredHub Backend配置文件的命名格式:/{applicati...
2019-04-10 09:36:36 201
原创 学习SpringCloud之服务网关Zuul
简介什么是服务网关?实现统一入口,接收所有的请求,并根据定义的规则转发到相应的服务上。在此过程中还可以完成系统中一些通用统一的工作,如权限校验,限流等。Zuul就是NetFlix提供的一个服务网关,用于实现路由、过滤器等功能。Netflix uses Zuul for the following:AuthenticationInsightsStress Testin...
2019-04-10 09:33:21 326
原创 学习SpringCloud之负载均衡Ribbon
简介什么是负载均衡?负载均衡是分布式架构中不可或缺的一个组件,其意义在于通过一定的规则或者算法去将请求分摊到各个服务提供者。Ribbon是一个客户端的负载均衡器,它提供一系列让你控制HTTP和TCP客户端的能力。以下示例均基于SpringCloud的Greenwich.SR1版本,且需要依赖到之前介绍Eureka的文章基础依赖 <dependencies&g...
2019-04-10 09:28:47 212
原创 学习SpringCloud之断路器Hystrix
简介什么是断路器?断路器就是为了解决微服务架构中的“雪崩”现象,即某个服务出现问题会导致其他服务阻塞,严重最终会导致服务器瘫痪。当服务出现问题是,断路器会负责断开这个该服务的依赖,以防止问题蔓延,保护整体服务。Hystrix也是SpringCloudNetflix微服务套件中的一个组件,作为断路器的角色。以下示例均基于SpringCloud的Greenwich.SR1版本...
2019-04-10 09:26:07 176
原创 学习SpringCloud之服务注册与发现Eureka
简介Eureka是SpringCloudNetflix微服务套件中的一个组件。负责服务的注册和发现。其中包含EurekaServer为服务端,即服务注册中心。以及EurekaClient,即各个注册的微服务。Eureka支持高可用的配置,支持自动保护模式,允许故障期间继续提供服务。以下示例均基于SpringCloud的Greenwich.SR1版本。基础依赖创建项目后,先引入S...
2019-04-10 09:22:32 119
原创 音频处理基础
一、基础概念采样频率(Sampling Rate),单位时间内采集的样本数,是采样周期的倒数,指两个采样之间的时间间隔。采样频率必须至少是信号中最大频率分量频率的两倍,否则就不能从信号采样中恢复原始信号,这其实就是著名的香农采样定理。CD音质(一般的音频)采样率为 44.1 kHz,人耳只能听到20Hz到20khz范围的声音。量化深度,表示一个样本的二进制的位数,即样本的比特数...
2019-04-09 15:12:23 610
原创 iOS加载本地HTML
目标:读取本地的HTML文件来展示H5页面。HTML文件会需要根据URL中不同的Hash Tag来显示不同的页面。例如#!/register显示注册页,#!/login显示登录页等等。HTML文件还需要根据URL传入的参数请求数据。iOS8以后,苹果推出了新框架WebKit。所以分别用UIWebView和WKWebView来实现看看。
2017-04-17 15:43:05 19389 3
原创 iOS基于AVPlayer自定义播放器
@interface PlayerView : UIView@property (nonatomic, strong) AVPlayer *avPlayer;@end1. 配置AVPlayer本身是无法显示视频的,首先要把AVPlayer添加到AVPlayerLayer。 @abstract Indicates the instance of AVPlayer for which the
2016-09-13 15:52:49 1102
原创 iOS 读取通讯录
iOS9之前#import <AddressBook/AddressBook.h>// 先创建一个通讯录的对象。ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, nil);// 从iOS6之后,读取用户通讯录需要先获得权限。ABAddressBookRequestAccessWithCompletion(ad
2016-01-14 11:14:54 1411
原创 Docker的安装使用
一、简介Docker是一个开源的基于 LXC(Linux Container) 的高级容器引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器,能提供虚机化,从而达到隔离应用,可移植到任意安装有Docker的机器上运行,开发者编译测试通过的容器可以批量地在生产环境中部署。Docker通常用于如下场景:web应用的自动化打包和发布;自动化测试和持续集成、发布;在服务型环境中部署和
2016-01-07 16:44:33 374
原创 ElasticSearch基础使用
1. 安装ElasticSearch。Elasticsearch - 下载地址windows 控制台进入 ( cd ) ElasticSearch目录下的 bin 目录, 然后运行 elasticsearch.batlinux 终端进入 ( cd ) ElasticSearch目录下的 bin 目录, 然后运行 ./elasticsearch执行$ curl localhost:9200返回
2015-08-17 22:17:59 3344
原创 生成验证码
验证码(CAPTCHA)是”Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机还是人的公共全自动程序。可以防止 :恶意破解密码、刷票、论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试。验证码包含两部
2015-07-03 16:29:59 310
原创 Socket应用
一. Java网络相关API的应用 1. InetAddress类的应用InetAddress类用于标识网络上的硬件资源,主要用来表示互联网协议(IP)地址的相关信息。 因为InetAddress类没有构造方法,所以不能直接new一个新的实例。我们可以通过InetAddress类中的一些静态方法来获取到一个实例。InetAddress address = InetAddress.getLocalH
2015-07-01 16:32:48 292
原创 使用SAX解析XML文件
与DOM方式不同的是,SAX是使用一个Handler类来完成解析XML文件的。创建一个SAXParserFactory对象。 SAXParserFactory factory = SAXParserFactory.newInstance();利用SAXParserFactory对象来创建一个SAXParser对象。 SAXParser parser = factory.newSAXParser();
2015-06-30 23:15:37 379
原创 使用DOM解析XML文件
创建一个DocumentBuilderFactory对象。 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();利用DocumentBuilderFactory对象来创建一个DocumentBuilder对象。 DocumentBuilder db = dbf.newDocumentBuilder();
2015-06-30 20:44:36 334
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人