- 博客(107)
- 资源 (22)
- 收藏
- 关注
原创 使用Ansible进行平滑发布服务整理
针对每次发布服务都是单个实例发布的情况,在目前或者以后进行开发升级,手动发布的流程可以进行优化。 使用ansible的平滑发布,可以一次串行或者并行升级多个实例。创建发布组[test]192.168.248.53192.168.248.73定义ansible发布任务配置--- - hosts: "{{ machine }}" remote_user: dev...
2018-05-04 15:08:27
3533
原创 Xshell配置Xagent登陆服务器
免密登录本地免密登录Linux服务器在新建会话的时候使用Public Key的方式进行登录验证即可。 对于本地与远程Linux服务器的登录操作,使用SSH免密登录的方式确实比使用密码的方式更加简单安全。Linux服务器之间免密登录由于SSH证书私钥是存在本地的,在Linux服务器上面都只存了对应的公钥,并没有私钥。举个例子例如有服务器:A(192.169.0.100),B(192.169.0.10
2017-09-29 16:47:12
23333
2
原创 RESTful API总结
误区使用restful的api设计,对于springmvc进行api定义不是很方便?例如,设计一个查询一个应用下面某个订单号信息的api 假如使用传统的url设计思路http://www.example.com/order?appKey=adsds&orderId=2434545对应要写的mapping方法为@GetMapping("order") public Order getOrde
2017-08-06 18:25:57
1298
原创 Feign接口编写规范
不要在接口类名上使用RequestMapping虽然可以使用,但同时SpringMVC会把该接口的实例当作Controller开放出去,这个可以在启动的Mapping日志中查看到。 这样的做法会污染调用方的mapping映射空间。假如在controller中存在相同路径的url,会造成项目启动失败。
2017-07-26 14:21:08
4808
原创 dev,test环境公用一个Eureka的总结
保证不同环境服务调用稳定为了dev环境和test环境下的服务调用不会乱串,必须在eureka上报中指定自己的所属分区配置application-test.ymleureka: instance: metadata-map: zone: test而dev环境中的配置不需要特别指定,以默认的zone即可。 这样,在服务在Eureka中注册成功后,从Eureka中拉取全部注册的A
2017-07-13 15:12:31
8655
1
原创 Spring Cloud微服务交互设计总结
采用http协议进行数据交互在spring cloud微服务交互中,基本上还是采用http协议进行数据交互。 与dubbo不同的是,http协议与编程语言无关,所以无法向dubbo一样,将抛出的Exception的内容进行序列化传到调用方,所以只能采用错误码的方式来传递异常消息。数据的包装形式当调用正常的情况下,只需要返回完整的数据对象即可。josnObject or jsonArray当出现错误
2017-07-13 13:14:59
2695
原创 spring cloud 监控配置
pom.xml中添加依赖引入监控相关的jar<!-- 监控 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId></dependency>actuator内置常规的endpoint(端点),通过spring
2017-06-27 17:54:48
1200
原创 hystrix适用场景
在分布式架构中,当某个服务单元发生故障(类似用电器发生短路)之后,通过断路器的故障监控(类似熔断保险丝),向调用方返回一个错误响应,而不是长时间的等待。这样就不会使得线程因调用故障服务被长时间占用不释放,避免了故障在分布式系统中的蔓延。hystrix适用场景核心无降级业务计费业务,id生成器业务作为核心业务,是整个短信业务的核心,如果引入熔断机制会导致业务流程失败,相当于整个短信业务不可用,所以这类
2017-06-13 16:31:01
4420
原创 业务建模:枚举字段的类型选择
选择合适的枚举值在数据库建表的时候,经常会遇到建立状态、性别、类型等字段的业务需求。这些字段有一个共同的特点,它们的业务含义通常就是这么几个取值。这样的字段我们可以成为枚举字段。确定一个字段是否是枚举字段,得参考它所表达的业务含义。如果是在电商业务中,商品表有商品类型字段,一般的电商都是可以动态添加或者删除类型,也就是说,商品类型可能有无数个取值,那么它就不是枚举字段。选择合适的存储方式对于性别字段
2017-04-29 13:34:33
5023
原创 Feign logging
spring cloud netfix组件中,feign相关的日志默认是不会输出的。 Logger.Level用于通知Feign进行记录的log的详细程度。NONE, No logging (DEFAULT).BASIC, Log only the request method and URL and the response status code and execution time.HEAD
2017-04-14 15:15:16
4461
原创 项目改造接入Spring Cloud流程
首先,项目先改造为spring boot工程建议,采用下列方式引入spring boot依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.2.RELEASE
2017-03-29 14:24:13
12084
原创 apache beach压力测试工具使用
安装abyum -y install httpd-tools检查是否安装成功查看ab是否安装成功,可以切换到上述目录下,使用ab –V命令进行检测。如下:ab -V进行压力测试##test.txt参数文件要存在当前目录下ab -n1 -c1 -T'application/json' -p test.txt http://www.baidu.com/具体的参数可以通过ab -h 或者Apache
2017-03-24 17:03:38
2175
原创 服务注册与发现
在分布式系统中,各个子系统都是多个实例存在,这个时候必须要引入一个服务协调器,用于给调用方提供可用的调用提供者的命名消息。 服务协调器,如zookeeper,etcd,eureka 他们必须要有的特性: - 本身高可用,由多个服务节点构成,就算有些节点挂掉也不影响正常运行,避免了单点故障。 - 本身是一个分布式,一致性的 k-v 存储系统。提供方启动的时候将自身配置信息向协调器中进行注册
2017-02-24 17:16:03
1497
原创 cp命令详解
cp [OPTION]... SOURCE... DIRECTORYcp命令比较灵活,既能复制文件,也能复制整个目录。 源类型\目标条件 路径是文件 路径是目录 路径不存在 单文件 覆盖此文件 复制到此目录下 如果路径最后是以‘/’结尾,当做目录处理,复制就会报错;此路径的上级目录必须存在,复制并改名为此文件名 多文件 复制到此目录下 目录
2017-02-19 16:11:38
2749
原创 docker常用命令
停止全部容器docker stop $(docker ps -a -q)删除全部容器docker rm $(docker ps -a -q)删除全部imagesdocker rmi $(docker images -q)删除untagged images,也就是那些id为的imagedocker rmi $(docker images | grep "^<none>" | awk "{print $
2017-02-09 16:17:31
647
原创 项目开发编码设置
在多人协同开发的团队中,为了兼顾MAC,WINDOWS,LINUX平台上的IDE,建议采用UTF-8编码,换行采用LINUX的换行符\n
2017-01-24 10:43:10
532
原创 maven部署的时候同时部署source.jar
配置maven-source-plugin在项目的pom.xml中添加如下代码块 <build> <plugins> <plugin> <artifactId>maven-source-plugin</artifactId> <executions>
2017-01-17 18:36:53
9065
原创 Spring-Rabbit消费多个mq中相同的队列
因为业务规模比较大,采用多台rabbitmq服务器进行处理,在每台rabbitmq建立相同的exchange,采用客户端分片的方式,生产者根据hash分发消息到不同的服务器中。 作为消费者,必须能支持消费全部rabbitmq的相同的exchange。这里因为4台mq,就在代码中写死数组下标package cn.jpush.sms.common;import org.springframework.
2017-01-11 20:40:11
4800
原创 使用SonarQube Scanner分析项目代码
SonarQube Scanner,作为代码扫描的工具,通过它,将项目的代码读取并发送至SonarQube服务器中,才能让SonarQube进行代码分析。 可以认为SonarQube Scanner就是SonarQube的客户端。SonarQube Scanner很方便和不同类型的构建工具进行整合与Maven项目整合Maven仓库中就有SonarQube Scanner工具的插件,只要在Setti
2017-01-08 23:33:12
8729
2
原创 gitlab-runner配置
gitlab-runner链接gitlab-runner register --non-interactive --name my-runner --url http://gitlab.example.com --registration-token my-registration-token --executor shell --tag-list common-runnerExecutor的选择g
2017-01-03 23:07:34
9878
原创 持续集成环境选择:Jenkins VS gitlab-ci
JenkinsJenkins作为老牌的持续集成框架,在这么多年的发展中,积累很多优秀的plugin工具,对进行持续集成工作带来很大的便利。gitlab-cigitlab-ci作为gitlab提供的一个持续集成的套件,完美和gitlab进行集成,gitlab-ci已经集成进gitlab服务器中,在使用的时候只需要安装配置gitlab-runner即可。 gitlab-runner基本上提供了一个可以
2017-01-02 20:56:11
21733
原创 Oracle中的条件分支语句
CASE WHEN 语法SELECT grade, COUNT (CASE WHEN sex = 1 THEN 1 /*sex 1为男生,2位女生*/ ELSE NULL END) 男生数, COUNT (CASE WHEN sex = 2 THEN 1
2017-01-02 00:36:31
4202
原创 Oracle中的空串与NULL
在oracle 环境中,空串与NULL 是等价的,所以尽量使用NULL 来表示空的含义。null 与任何值做逻辑运算得结果都为 false,包括和null本身: 用 is null 判断时,空字符串和 null 都 is null: null 和任何数值进行数学运算,结果都为 null:
2017-01-02 00:33:11
2774
原创 ORACLE 集合操作
ORACLE语句中的集合关键字: union和union all的区别是,union会自动压缩多个结果集合中的重复结果,而union all则将所有的结果全部显示出来,不管是不是重复。 Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序; Union All:对两个结果集进行并集操作,包括重复行,不进行排序; Intersect:对两个结果集进行交集操作,不包括重复行,同时
2017-01-02 00:31:35
414
原创 ORACLE 递归树
connect_by_isleafconnect_by_isleaf函数,用来判断当前节点是否包含下级节点,如果包含的话,说明不是叶子节点,这里返回0;反之,如果不包含下级节点,这里返回1。如果只有一层节点,次节点是叶子节点。sys_connect_by_path函数,就是从start with开始的地方开始遍历,并记下其遍历到的节点,start with开始的地方被视为根节点,将遍历到的路径根据函
2017-01-02 00:30:19
656
原创 DDL和DML
DDLData Definition Language 数据定义语言create table 创建表 alter table 修改表 drop table 删除表 truncate table 删除表中所有行 create index 创建索引 drop index 删除索引当执行DDL语句时,在每一条语句前后,oracle都将提交当前的事务。如果用户使用insert命令
2017-01-02 00:29:16
1051
原创 Spring进行Bean配置的方式:Annotation VS Xml
无论通过哪种进行的Bean配置,最终都会被Spring扫描到生成对应的BeanDefinition,进而根据BeanDefinition配置信息在ApplicationContext中进行初始化并且依赖注入。Annotation VS Xml采用Annotaion配置简单,编码简单易读,对于需要注入的字段可以通过Alt + /进行提示,不用担心在Xml中拼错字段 采用Java元配置,编写的时候可以
2017-01-02 00:25:51
717
原创 Spring Boot整合Spring MVC
在Spring Boot工程中,只需要在pom.xml中配置 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>既可以在启动的时候开启w
2017-01-01 19:17:48
12208
1
原创 Mysql读取json字段出现中文乱码
mysql版本为5.7,通过navicat查看json格式的数据是正常显示,但是通过java程序读取显示乱码。 读取其他字段都是正常的,也没有特殊设置json格式的字符集。通过排查发现,此问题为mysql-connector-java.5.1.37的bug升级MySQL的jdbc驱动程序,即可解决此问题 <dependency> <groupId>mysql<
2016-12-21 13:13:43
10614
1
原创 Eclipse设置Organize Import
在团队协作中,必须统一Import的组织格式,避免因为eclipse,idea各自不同的导入顺序造成代码经常性变更,再对比代码时不好看。 因为这边以idea的导入规则为准,所以eclipse必须参照idea的导入规则进行相应的修改。idea导入规则修改eclipse导入规则
2016-12-15 18:58:31
6517
1
原创 SpringMVC添加自定义注解格式化数据
遇到一个问题接口传入开始时间、结束时间,格式为yyyyMMdd,要求查询的数据必须用给定的时间段进行过滤。 比如http://127.0.0.1:8095/iportal-dev/v1/sms/sending/list?stime=20161001&etime=20161130但是服务端接受时间后,按照业务要求,应该格式为20161001 00:00:00< 时间段 <20161130 23:59
2016-12-15 16:52:19
5219
1
原创 CentOS7设置网络自动启动
定位网卡文件切换到网卡配置文件的目录,找到网卡的配置文件。 (centos7修改了网卡的命名规则,不再是我们熟悉的eth0了,而是ifcfg-eno+随机字符),例如我的就是ifcfg-eno3s0编辑网卡文件 编辑ifcfg-eno3s0,最后一行的onboot选项,把默认的no改成yes
2016-11-04 16:28:31
11045
原创 jenkins整合sonarqube
准备jenkins安装sonarQube安装jenkins中安装SonarQube Plugin插件配置sonar serverJenkins–》系统设置–》SonarQube servers 这里,sonarqube本地安装的是6.0的版本,为了登陆的时候可以选择账号、密码的方式方便进行整合,这里配置设置Server version为5.2。 如果设置为5.3 or higher选择,
2016-11-04 15:23:52
12020
原创 gitlab安装与配置
配置external_url编辑/etc/gitlab/gitlab.rb## Url on which GitLab will be reachable.## For more details on configuring external_url see:## https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/setti
2016-11-04 14:27:14
3587
原创 VM12安装Mac OS X 10.11
解锁VM下载unlocker208,解压(注意:解压的路径不要带中文,不然程序执行不下去)。 打开解压目录,“以管理员身份运行程序”执行win-install.bat。创建Mac虚拟机和平时一样创建虚拟机,在unlocker成功后,选择好安装程序光盘镜像文件后,点击下一步,在创建虚拟机的时候会多出Apple Mac OS X类型的操作系统。修改验证配置创建完成后,开启虚拟机是会报错,无法启动。
2016-11-04 11:12:48
1511
原创 GitLab 使用163邮箱发送邮件
开启smtp服务登陆163邮箱,开启SMTP服务。修改配置文件编辑/etc/gitlab/gitlab.rb 注意,163开启smtp协议是会开启客户端授权,所以password应该填写的是客户端授权密码,而不是邮箱的登陆密码。 yourname改为对应的邮箱名。gitlab_rails['smtp_enable'] = truegitlab_rails['smtp_address'] = "
2016-11-04 10:48:08
3446
原创 web.xml替换成java config的方式
servlet3.0+规范后,允许servlet,filter,listener不必声明在web.xml中,而是以硬编码的方式存在,实现容器的零配置。 为此,Spring为其提供了一个实现类SpringServletContainerInitializer 来处理启动容器时加载相关配置。 SpringServletContainerInitializer 主要是获取WebApplicationI
2016-11-03 11:51:15
5635
原创 gradle更新snapshot的jar
通常,gradle下载引用的jar文件的话,会缓存到本地,不会重复去下载。但是,我们引用的是snapshot的jar,这种jar文件一般是其他项目组的代码,这种jar一般都进行迭代开发,会重复更新上传到nexus代码仓库中,我们必须在每次启动的时候能更新最新依赖的jar。 所以,必须在build.gradle中配置。默认是24小时,gradle会检查一次依赖,可以设置每次build都进行检查。co
2016-10-25 14:41:22
10844
原创 gitlab利用webhook通知jenkins进行构建
设置jenkin回调地址通常,jenkins在项目配置的时候,是可以配置远程构建触发器,设置好jenkins的回调url,就可以让jenkins进行构建。 但是,源码服务器是gitlab的情况下,我们可以不用配置jenkins的回调url,利用插件Gitlab Hook Plugin,它帮助我们在git类型的构建任务中都配置了一个默认的回调url。配置web hook如果jenkins安装了Git
2016-10-25 12:58:12
9076
n个人围成一圈,从1开始数
2012-05-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人