杂集
文章平均质量分 80
一些短篇的系列文章
hry2015
这个作者很懒,什么都没留下…
展开
-
微信小程序学习和实践总结
微信小程序学习和实践总结: 技术方案选型;原生小程序的UI库推荐;小程序和公众号账号的如何统一; 消息推送机制;小程序推广三类方式; 小程序的如何发布; 如何获取公共号微信用户openid原创 2019-06-18 19:34:57 · 9604 阅读 · 1 评论 -
组件使用总结:使用 JAXB 实现 XML文件和java对象互转
JAXBJAXB:实现xml和java对象互转JAXB是一个业界的标准,实现XML文件和Java对象的互转。JAXB是JDK 的组成部分。我们不需要下载第三方jar包 即可做到轻松转换。重要类和接口: ○ JAXBContext类,是应用的入口,用于管理XML/Java绑定信息。 ○ Marshaller接口,将Java对象序列化为XML数据。 ○ Unmarshaller接口,将...原创 2018-11-04 13:40:24 · 765 阅读 · 0 评论 -
工作总结 - 重构1 重构总结
最近对一个老的系统进行重构,有些感触,写出来做个总结重构的原则保证和第三方的交互接口没有变化,保证新系统上线后,第三方不需要任何改动就可以使用新系统 新系统的功能不能少于老系统正在使用的功能修正老系统中存在的bug,优化性能沟通尽可能的拿到新系统的相关资料和熟悉业务的开发,测试,项目经理等沟通,熟悉业务使用老系统,加深对老系统的了解列出所有需要重构的功能,初步和相关人员达到...原创 2017-04-21 10:38:00 · 1260 阅读 · 2 评论 -
工作总结 - 重构2 重构服务平滑替换旧服务的流程
本文是之前文章重构总结的后续文章,本文介绍代码重构完成后,重构服务平滑替换旧服务的流程。 代码开发完毕,此时线网上旧的代码依然在正常运行,此时我们不能一下子将新服务替换旧的服务。我们通常要经过以下几个流程:改造旧服务,使其兼容新服务模型在重构后的服务中,我们可能会对已有的数据库、交互接口、中间件等进行变更。为了保证后续新老服务的平滑升级,在确认新服务的模型后,还需要对旧服务进行开发,...原创 2018-03-01 19:20:13 · 1333 阅读 · 0 评论 -
工作总结 - 服务迁移备忘和总结
最近刚刚完成一次服务迁移的工作,本人刚刚从离职同事的手中接手两个新的工程,立即要执行这么大的变动,对我也是巨大的挑战,现对迁移过程和碰到到问题进行记录。 因为业务的需要,需要将2台服务器上的服务迁移到新的2台服务上,主要需求如下:服务器A1,A2是要迁移的源服务器。服务器B1,B2是要迁移的目标服务器。服务器A1,A2上部署两个服务:lss和confService。这两个服务是j...原创 2018-04-24 20:16:54 · 2663 阅读 · 0 评论 -
工作总结 - 大数据表分页查询优化
在我们进行数据查询时,不可避免要碰到分页的问题。我们通常会在返回数据表格页面下方显示如下信息用于对分页的信息的操作:总数: 200 [首页] [上一页] 2,[3],4,5 [下一页] [尾页] 对于小表我们可以直接操作数据获取如下信息使用sql语句计算出符合条件的记录总数 select count(1) from table where xxx in (1,2,3)...原创 2018-05-06 11:17:02 · 2958 阅读 · 0 评论 -
压力测试工具 - AB(ApacheBench)
概述AB(ApacheBench)用来做http的压力测试。 ubuntu里安装ab测试工具sudo apt-get install apache2-utils 测试命令最常用的测试命令如下: ab -n 100 -c 10 http://192.168.188.6:8080/distributeLock-n表示请求数,-c表示并发数带自定义header请求: ab -n 1 -c 1 -H "原创 2017-07-05 22:24:11 · 2975 阅读 · 0 评论 -
IntelliJ IDEA工具 - 使用IntelliJ IDEA导入Github工程
本博客的代码全部存储在Github在,为了方便大家下载代码。本文演示如何从Github中加载代码到本地工程中。本文使用的IDE是IntelliJ IDEA。原创 2017-09-14 19:41:40 · 29146 阅读 · 1 评论 -
博客文章汇总
概述本文对本博客所有的文章进行汇总Spring Boot 用法的博客总结Spring SpEL系列一 基础用法 Spring SpEL系列二 @Value,xml, Java代码使用SpEL Spring Boot系列一 spring boot 集成 slf4j 和 logback Spring Boot系列二 Spring @Async异步线程池用法总结 Spring Boot系列三 Sp原创 2018-04-07 23:15:50 · 1533 阅读 · 0 评论 -
网络系列二 通过wireshark学习三次握手、四次挥手、数据传输
1. 概述本文使用wireshark先捕获客户端(10.240.89.99) 向服务端( 47.95.47.253)请求页面http://blog.csdn.net/hry2015/过程中的包。先介绍TCP的三次握手协议,数据传送过程以及四次挥手协议,然后结合捕获的包学习这些协议需要注意的是,文章接下来的部分依然使用相对序列号/确认号2. 三次握手协议2.1. 理论客户端和服务端是通过三次握手协议建原创 2018-01-08 21:27:18 · 9559 阅读 · 5 评论 -
网络系列一 结合wireshark学习TCP/IP协议中帧,IP包,TCP包的包结构及字段意义
1. 概述TCP/IP应该是程序员的基本功,但是之前对这个印象总是模模糊糊,花了一些时间对相关的东西进行了整理。本文介绍网络传输中的基本元素,主要包括如下内容帧的分类、结构及字段意义结合wireshark学习TCP/IP协议中帧,IP包,TCP包的包结构及字段意义序列号和确认号TCP的窗口机制和可用窗口大小协商机制2. 帧网络上,单次传输的数据量是有限。在传输数据时,...原创 2018-01-04 20:08:28 · 5573 阅读 · 3 评论 -
freeswitch系列五 解决xlite和freeswitch通话没有语音的问题
1. 概述本文解决如下问题:xlite之间已经正常的进行sip协议的交互,并且1008和1018已经呼通,但是1008和1018互相之间无法听到声音。主要涉及如下内容: 1. 语音不通的原因分析 2. SDP协议 2. NAT的问题 3. freeswitch如何实现NAT的穿越的问题2. 案例环境说明软电话使用x-lite,使用freeswitch的默认的两个号码1008和1018。fre原创 2017-10-29 22:38:25 · 13432 阅读 · 2 评论 -
freeswitch系列四 通过实例学习sip协议的注册、呼叫、挂断流程
1. 概述本文通过tcpdump对真实环境里的软电话的注册、呼叫、挂断流程进行抓包,通过真实的例子学习SIP协议。本文主要包括以下方面:A. 详解软电话的注册时的SIP包和流程图B. 详解软电话之间呼叫、挂断的SIP包和流程图C. 详细介绍了协议中各个字段的意义原创 2017-10-25 22:13:28 · 16881 阅读 · 1 评论 -
freeswitch系列三 SIP软电话xlite、linphonec接入kamailio+freeswitch
本节我们介绍SIP客户端和服务端进行通话。 本节我们介绍2个SIP客户端:xlite和linphonec. 如果你在windows下开发,推荐使用xlite。xlite是图形化界面,简单易用。 如果你的SIP服务已经部署到生产环境(通常使用linux操作系统),这时我们通常只能使用命令行模式,原创 2017-08-22 20:07:12 · 10088 阅读 · 4 评论 -
freeswitch系列二 kamailio 5.0安装及实现kamailio集成freeswitch
kamailio是个纯粹的SIP服务器。本文介绍先如何在debian8下安装debian5.0,然后详细介绍如何实现使用kamailio做freeswitch均衡负载。kamailio同时实现做为代理服务器、注册服务器、重定向服务器。原创 2017-08-17 20:11:10 · 9172 阅读 · 2 评论 -
freeswitch系列一 在debian中安装freeswitch1.6
1. 概述本文介绍如何安装在debian 8系统中安装freeswitch。通过systemctl管理服务,查看日志及重要的目录原创 2017-08-15 20:08:08 · 3024 阅读 · 0 评论 -
Mysql系列二 mysql语法总结
本文对常用SQL语法进行总结,包括以下部分: 1. 数据库创建、删除、查看语法 2. 表创建、删除、查看语法 3. 视图创建、删除、查看语法 4. 触发器创建、删除、查看语法 5. 各种查询操作语法 6. 索引创建、删除、查看语法 7. 权限创建、删除、查看语法原创 2017-07-30 18:37:38 · 3631 阅读 · 0 评论 -
Mysql系列一 windows 环境下安装解压版mysql
个人不喜欢用install版本的mysql,喜欢用解压版mysql。下面介绍如何在windows下安装免解压版的mysql. 详细步骤如下从官网下载解压版mysql,并解压到目录:D:\dev_tool\mysql\mysql-5.7.18-winx64\在 D:\dev_tool\mysql\mysql-5.7.18-winx64\下创建文件my.ini,并进行相应的配置,详细见文件:[mys原创 2017-06-08 22:26:34 · 575 阅读 · 0 评论 -
clipboard使用总结
概述clipboard.js是一款轻量级的实现复制文本到剪贴板功能的JavaScript插件。通过该插件可以将输入框,文本域,DIV元素中的文本等文本内容复制到剪贴板中 clipboard.js支持主流的浏览器:chrome 42+; Firefox 41+; IE 9+; opera 29+; Safari 10+; 官网使用方式引入js文件以下所有的代码都使用到以下js文件<scri原创 2017-04-28 23:42:25 · 60889 阅读 · 0 评论 -
docker系列二 创建自己的docker及Dockerfile语法
编写测试工程主要代码如下DockerApplication : 服务类@SpringBootApplication@RestControllerpublic class DockerApplication { @RequestMapping("/") public String home() { return "Hello Docker World原创 2017-03-14 20:35:01 · 1339 阅读 · 0 评论 -
docker系列一 docker 安装和常用命令
安装DockerDocker命令前置条件Docker 服务命令Docker 镜像命令查看images搜索dockerdocker命令来下载镜像删除镜像命令为docker rmiDocker 容器命令根据镜像创建容器并启动查看运行中的容器列表启动容器停止容器查看容器的日志登录容器1端口映射安装Dockersudo apt-get updatesudo apt-get原创 2017-03-02 19:26:55 · 4846 阅读 · 1 评论 -
Jsoup使用总结
对HTML页面的解析,之前使用HTMLParser,现在解析HTML的控件是Jsoup。本文对Jsoup的用法做个总结 。 Jsoup的主要功能有三部分组成:从字符串,网页,本地文件等方式生成Documentn在生成Doucment后,根据Dom和css或类似jquery的selector语法获取Element,然后再从Elements中获取节点属性、文本、html对Element的进行操作,包括HTML的值原创 2017-06-07 22:00:13 · 3646 阅读 · 2 评论 -
Grpc系列二 Grpc4种服务方法的定义和实现
1. 概述1.1 服务定义向其它的RPC服务一样,GPRC的基础是服务的定义。服务定义远程调用方法的名称、传入参数和返回参数。GRPC默认使用 Protobuf描述服务,protobuf的信息见这篇博客Protobuf3 的第一个Java demoGRPC一共定义4种服务方法:一元RPC(Unary RPCs ):这是最简单的定义,客户端发送一个请求,服务端返回一个结果服务器流RPC(Serve原创 2017-05-11 22:50:41 · 8325 阅读 · 0 评论 -
Grpc系列一 第一个hello world 例子
1. 概念gRPC的定义:一个高性能、通用的开源RPC框架主要面向移动应用开发: gRPC提供了一种简单的方法来精确地定义服务和为iOS、Android和后台支持服务自动生成可靠性很强的客户端功能库。基于HTTP/2协议标准而设计,基于ProtoBuf(Protocol Buffers)序列化协议开发支持众多开发语言2. Hello world Demo2.1 定义RPC服务 proto/原创 2017-05-03 21:58:02 · 5402 阅读 · 0 评论 -
Protobuf3 系列三 更新Message类型
如果已经存在的Message类型不能满足要求,比如我们要在Message格式中需要新增一个额外字段,但是我们仍然希望用旧的代码处理新的Message格式。对于这种情况,Protobuf3的有着非常好的支持。更新Message,需要满足以下要求: 不要改变已经存在的数字标签以下.proto中各个字段定义如下:”string”: 定义字段类型“query”:定义字段名称“1”:表示数字标签;原创 2017-05-14 19:31:51 · 7667 阅读 · 0 评论 -
Protobuf3 系列二 定义复杂的proto文件
定义复杂的对象这是Protobuf3的系列二: 如何在protobuf中定义更复杂的对象proto文件除了定义string, int等基础对象外(protobuf的基础数据结构和Java变量的对应关系见文章末尾),还可以在proto中定义更复杂的对象,详细如下: 定义List列表:值可以是普通变量,也可以复杂对象message ComplexObject { repeated string原创 2017-04-25 19:56:18 · 47458 阅读 · 2 评论 -
Protobuf3 系列一 第一个Java demo
概念 Protocol buffers are a flexible, efficient, automated mechanism for serializing structured data – think XML, but smaller, faster, and simpler简单的说, Protobuf3是类似json,xml的数据交换协议,但是它比它们传输的数据更小,传原创 2017-04-20 19:57:40 · 8839 阅读 · 2 评论