TECHNOLOGY
文章平均质量分 93
hy_coming
不忘初心 方得始终
展开
-
《通信协议》——HTTP1.0&HTTP1.1不同点(6)
当客户端浏览器访问的某个 HTML 或其他类型的 Web 页中包含有其他的 Web 资源(如 JavaScript 文件、图像文件、CSS 文件等),每遇到这样一个 Web 资源,浏览器就会重新建立一个 TCP 连接,这样就会导致有大量的“握手报文”和“挥手报文”占用了带宽。也就是说在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输 HTTP 数据的 TCP 连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。标签,该标签标记了被请求资源在服务器端的最后一次修改。转载 2023-04-08 19:18:32 · 219 阅读 · 0 评论 -
【统一配置】携程apollo(阿波罗)
随着业务量的越来越大,配置文件也变的越来越大,管理起来也是越来越麻烦,另外就是每次需要修改配置文件的时候都需要发版,这是头痛的问题,所以需要考虑是不是整个统一的配置中心并且支持热发布等其他有用的功能,很明显,你遇到的问题别人早就遇到过了并且给出了很好的解决方案,比如下面这几个Apollo(阿波罗),携程开源 spring-cloud/spring-cloud-config diamond,淘宝,已不维护 disconf,蚂蚁金服考虑到现在市场上应用最广泛的应该是开源的 Apollo(阿波罗),本原创 2020-11-12 21:05:36 · 465 阅读 · 0 评论 -
【Netty】——相关知识
依赖 <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>4.1.30.Final</version> ...原创 2020-01-31 23:08:49 · 138 阅读 · 0 评论 -
【Dubbo】——项目目录结构
一、项目结构二、模块分包三、模块分析dubbo-common 公共逻辑模块:包括 Util 类和通用模型dubbo-remoting 远程通信模块:提供客户端和服务端的通信功能dubbo-rpc 远程调用模块:抽象各种协议,以及动态代理,只包含一对一的调用,不关心集群的管理,dubbo-rpc 是整个dubbo的一个核心模块。dubbo-cluster...原创 2019-12-16 17:22:40 · 1878 阅读 · 0 评论 -
【限流】——RateLimiter限流方案
背景在说限流方案之前我们需要知道在什么样的场景下需要限流,以前我们都是应用部署在单台机器上,但是随着流量的增大单台服务已经扛不住压力了,所以就变成了新的的集群部署,将流量压力分担到多台机器上,来提高吞吐量,但是互联网企业嘛,在一些节日或者特殊的日子里会搞一些抢购的活动,这个并发压力可能是平时的很多倍吧,按照正常的思路来说我们增加机器横向扩展吧,可是平时的话流量没有这么大,购买这些机器其实是非常...原创 2019-11-29 16:02:00 · 1902 阅读 · 0 评论 -
【TestNG】——自动化测试框架
背景随着科技的发展,业务做的也是越来越大,越来越复杂,所以导致我们的业务编码也是越来越复杂,对于程序员和测试来说无疑是增加更多的测试难度,所以需要一个成熟的测试框架势在必行,TestNG应该是程序员和测试人员一个比较好的选择,这里就不说在这个基础上衍生的自动化测试框架了,只是说程序员怎么借助TestNG来更好的方便我们做单元测试,一次性搞定各种情况。一、IDEA+SpringBoot+Te...原创 2019-11-27 18:09:27 · 671 阅读 · 0 评论 -
JDK1.8新特性值Optional
https://blog.csdn.net/zknxx/article/details/78586799转载 2019-11-26 17:24:01 · 115 阅读 · 0 评论 -
【Dubbo】——注册中心
目前Dubbo主要支持5种形式的注册中心,其中推荐使用zookeeper注册中心Multicast 注册中心Multicast 注册中心不需要启动任何中心节点,只要广播地址一样,就可以互相发现。提供方启动时广播自己的地址 消费方启动时广播订阅请求 提供方收到订阅请求时,单播自己的地址给订阅者,如果设置了 unicast=false,则广播给订阅者 消费方收到提供方地址时,连接...转载 2019-11-22 16:41:06 · 569 阅读 · 1 评论 -
【Dubbo】——通信协议及序列化方式
Dubbo目前主要支持9中协议,下面为大家一一说明dubbo://Dubbo 缺省协议采用单一长连接和 NIO 异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况。反之,Dubbo 缺省协议不适合传送大数据量的服务,比如传文件,传视频等,除非请求量很低。特性缺省协议,使用基于 mina 1.1.7 和 hessian 3.2.1 的 tb...原创 2019-11-22 09:55:41 · 1144 阅读 · 0 评论 -
【JMeter】——压力测试框架
一、概述(百度百科)Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强...原创 2019-10-23 13:41:52 · 1024 阅读 · 0 评论 -
【Junit】——IDEA集成Junit自动生成单元测试框架
一、IDEA下载在settings中找到Plugins,搜索junitG下载完成后重启idea二、使用在settings中搜索Junit配置propertiesOutput path(创建位置,根据自己的目录结构修改文件目录):${SOURCEPATH}/../../test/java/${PACKAGE}/${FILENAME}Default template...原创 2019-10-23 10:53:50 · 1372 阅读 · 0 评论 -
【Mybatis】——开启二级缓存
背景在日常的开发过程中,总会检查到以前的接口性能是特别的不好,但是有历史原因又不敢去动里面的逻辑,但是当我们使用的mybatis的时候,并且发现这个接口比较频繁的查询某一个数据的时候,并且这个数据对于用户来说可以存在一定的延迟,那么mybatis的二级缓存就派上用场了,接下来看下我们怎么来开启mybatis的二级缓存的吧一、基于Spring+Mybatis mybaits的二级缓存是...原创 2019-10-20 13:11:26 · 344 阅读 · 0 评论 -
【优雅停机】——kill -9 pid、kill -15 pid、Ctrl+C
最近瞥了一眼项目的重启脚本,发现运维一直在使用 kill-9<pid> 的方式重启 springboot embedded tomcat,其实大家几乎一致认为: kill-9<pid> 的方式比较暴力,但究竟会带来什么问题却很少有人能分析出个头绪。这篇文章主要记录下自己的思考过程。kill -9 和 kill -15 有什么区别?在以前,我们发布 WEB 应用通常的...转载 2019-10-16 22:25:07 · 6221 阅读 · 2 评论 -
《通信协议》——HTTP协议(2)
HTTP协议总结目录用 [TOC]来生成目录:HTTP协议总结目录前言HTTP简介HTTP工作原理HTTP特点HTTP消息结构HTTP请求方法HTTP响应头信息HTTP状态码HTTP content-typeundefined总结参考前言 http协议对于程序员来说并不陌生,可以说基于网络传输的大部分遵循这个协议,可见这个协议的重要性,今利用空闲时间把自己的学习总结分享给原创 2017-10-24 17:23:44 · 370 阅读 · 0 评论 -
【Git】—— 提交规范
制定一个 git commit 信息的提交规范是开发团队工作流必不可少的环节。试想一下,如果查看主分支上的历史库也就是你查看 git log 的时候,打印出来的信息杂乱无章的话,如果代码遇到问题,可能需要很大的精力与成本来查找到导致问题的代码提交,所以团队需要制定规范来引导成员编写规范的 commit 信息。接下来的 commit 信息规范参考了 angularjs 团队的开发者指引与笔者的工...原创 2019-07-11 08:45:27 · 280 阅读 · 0 评论 -
【漏洞】——心脏滴血(CVE-2014-0160)
漏洞范围:OpenSSL1.0.1版本漏洞成因:Heartbleed漏洞是由于未能在memcpy()调用受害用户输入内容作为长度参数之前正确进行边界检查。攻击者可以追踪OpenSSL所分配的64KB缓存、将超出必要范围的字节信息复制到缓存当中再返回缓存内容,这样一来受害者的内存内容就会以每次64KB的速度进行泄露。心脏出血(英语:Heartbleed),也简称为心血漏洞,是一个出现...转载 2019-07-01 10:23:25 · 1932 阅读 · 1 评论 -
【mybatis】——script标签作用
1、用script标签包围,然后像xml语法一样书写@Select({"<script>", "SELECT * FROM tbl_order", "WHERE 1=1", "<when test='title!=null'>", "AND mydate = #{mydate}", "</when>", ...转载 2019-07-19 17:57:34 · 14020 阅读 · 0 评论 -
【zookeeper】——分布式锁
背景前面我们说到过redis作为的分布式锁的实现方式,本篇文章主要是使用zookeeper作为分布式锁的实现方式,总体来说就是zookeeper的实现的实现方式下相对复杂一点,但是优势更加明显redis 分布式锁,其实需要自己不断去尝试获取锁,比较消耗性能。 zk 分布式锁,获取不到锁,注册个监听器即可,不需要不断主动尝试获取锁,性能开销较小。 redis 获取锁的那个客户端 出现 b...原创 2019-07-21 17:01:40 · 368 阅读 · 0 评论 -
【分布式】——分布式session
背景当前的环境下基本都是微服务的分布式架构,虽然带来了很多的好处,但是同时也带来了很多的问题,比如:分布式事务、接口幂等性、分布式锁,另外一个就是现在需要说得分布式 sessionsession 是啥?浏览器有个 cookie,在一段时间内这个 cookie 都存在,然后每次发请求过来都带上一个特殊的jsessionid cookie,就根据这个东西,在服务端可以维护一个对应的 sess...转载 2019-07-21 17:21:54 · 91 阅读 · 0 评论 -
【分布式】——幂等性
背景现在你的一个服务提供一些外部接口调用,然后你这个服务又是部署在多台机器上的,然后前端在操作的时候我们正好的调用了请求,加入我们的业务功能是扣款,然后在负载均衡的时候你的请求被发送到不同的机器上,所以你需要保证的就是同样的一次请求只能成功一次,另外的需要丢弃调。那么如何保证分布式环境下的幂等性呢?思路保证幂等性主要是以下三点:对于每个请求需要有一个唯一标识:比如订单支付请求,可以...原创 2019-07-28 12:31:56 · 283 阅读 · 0 评论 -
【工具】——各种资源下载
之前的在下载visio的时候看到一个网站不错,这里记录一下,方便后续查看地址:http://www.itellyou.cn/原创 2019-07-28 13:13:37 · 283 阅读 · 0 评论 -
【分布式】——分布式事务
背景既然用到分布式系统,那一定会用到分布式事务的,那么分布式事务目前是怎么来实现的呢?一般是以下几种方案:XA 方案 TCC 方案 本地消息表 可靠消息最终一致性方案 最大努力通知方案一、两阶段提交方案/XA方案所谓的 XA 方案,即:两阶段提交,有一个事务管理器的概念,负责协调多个数据库(资源管理器)的事务,事务管理器先问问各个数据库你准备好了吗?如果每个数据库都回复 ok...原创 2019-07-28 14:26:47 · 172 阅读 · 0 评论 -
【ElasticSearch】——架构初识(1)
背景现在需要针对大量的数据进行搜索,比如对生产上的日志进行查询,对于这种大数据量的,一般都是需要用到分布式搜索,而ElasticSearch是一个比较好的选择。一、概念ElasticSearch就是分布式搜索引擎,底层就是基于lucene,核心思想就是在多台机器上启动多个es进程实例,组成一个es集群。es中存储的基本单位是索引,一个索引就是对应mysql中的一张表,type代表一种类...原创 2019-10-02 13:32:30 · 121 阅读 · 0 评论 -
【ElasticSearch】——深入理解(2)
es 写数据过程客户端选择一个 node 发送请求过去,这个 node 就是coordinating node(协调节点)。 coordinating node对 document 进行路由,将请求转发给对应的 node(有 primary shard)。 实际的 node 上的primary shard处理请求,然后将数据同步到replica node。 coordinati...原创 2019-10-02 13:49:03 · 116 阅读 · 0 评论 -
【高并发】——设计系统(1)
背景其实如何设计一个高并发系统是一个非常复杂的过程,但是我们可以将他们简单的拆分成几个单独的技术模块:系统拆分:一般用dubbo或者其他的 缓存:很好的支持高并发,一般是redis MQ:消息队列,能够异步处理,很好的支持高并发 分库分表:提高数据库的高并发、sql执行效率 读写分离:一般读多写少的会比较好 ElasticSearch:分布式搜索引擎,一些全文搜索可以考虑一、M...原创 2019-10-03 13:56:00 · 96 阅读 · 0 评论 -
【高并发】——设计系统(2)
前面已经说了关于MQ消息的一些问题,接下来,如果需要你来设计一个MQ框架,你会怎么去考虑?MQ需要支持伸缩性,也就是不要的时候快速扩容,那就参考kafka的设计理念broker -> topic -> partition,每个 partition 放一个机器,就存一部分数据。如果现在资源不够了,简单啊,给 topic 增加 partition,然后做数据迁移,增加机器 MQ的数据...原创 2019-10-04 11:42:34 · 74 阅读 · 0 评论 -
【限流】——nginx 限流配置
限流算法令牌桶算法算法思想是:令牌以固定速率产生,并缓存到令牌桶中; 令牌桶放满时,多余的令牌被丢弃; 请求要消耗等比例的令牌才能被处理; 令牌不够时,请求被缓存。漏桶算法算法思想是:水(请求)从上方倒入水桶,从水桶下方流出(被处理); 来不及流出的水存在水桶中(缓冲),以固定速率流出; 水桶满后水溢出(丢弃)。 这个算法的核心是:缓存请求、匀速处理、多余...转载 2019-07-05 17:33:07 · 415 阅读 · 0 评论 -
【git】——重置git本地记住的密码
当遇到验证失败时可以尝试用下面两种方式修改1. 进入“控制面板”=>"用户账户"=>"凭据管理器"=>"管理Windows凭据"找到对应的git凭据删除,再次使用git时会重新要求输入账户密码2. 使用cmd命令在cmd中输入git credential-manager uninstall该命令会重置本地的所有密码...转载 2019-07-15 11:28:22 · 3624 阅读 · 0 评论 -
《Docker》——初识
如今Docker的使用已经非常普遍,特别在一线互联网公司。使用Docker技术可以帮助企业快速水平扩展服务,从而到达弹性部署业务的能力。在云服务概念兴起之后,Docker的使用场景和范围进一步发展,如今在微服务架构越来越流行的情况下,微服务+Docker的完美组合,更加方便微服务架构运维部署落地。什么是Docker?Docker 是世界领先的软件容器平台。开发人员利用 Docker 可以消...转载 2019-03-25 17:48:48 · 141 阅读 · 0 评论 -
《通信协议》——TCP/IP协议(4)
一、前言通过前面的学习我们已经知道了通信协议的相关层级,同时也了解了应用层的http协议,需要知道的是这个协议其实是对TCP协议和IP协议的包装,内部是还是通过TCP协议去实现的,看下面的两张图HTTP通信传输二、说明TCP/IPTCP/IP 意味着 TCP 和 IP 在一起协同工作。TCP 负责应用软件(比如你的浏览器)和网络软件之间的通信。IP 负责计算机之...原创 2019-03-21 15:52:26 · 209 阅读 · 0 评论 -
《通信协议》——HTTP和HTTPS(3)
一、前言通过《通信协议》——HTTP协议(2)的学习,我们已经知道关于http协议的相关信息,但是随着科技的发展,我们发现基于http传输的数据在传输的过程中是以明文的方式进行传输的,所以https应运而生,下面来看看什么是https吧《图解HTTP》这本书中曾提过HTTPS是身披SSL外壳的HTTP。HTTPS是一种通过计算机网络进行安全通信的传输协议,经由HTTP进行通信,利用SS...原创 2019-03-04 09:56:07 · 1182 阅读 · 0 评论 -
《通信协议》——HTTP状态码详解
状态码 含义 100 客户端应当继续发送请求。这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝。客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应。服务器必须在请求完成后向客户端发送一个最终响应。 101 服务器已经理解了客户端的请求,并将通过Upgrade 消息头通知客户端采用不同的协议来完成这个请求。在发送完这个响应最后的空行后...转载 2018-12-26 16:07:07 · 147 阅读 · 0 评论 -
《Git》——工具说明
一、定义Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。Torvalds 开始着手开发 Git 是为了作为一种过渡方案来替代 BitKe分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git ...原创 2019-02-25 16:26:18 · 232 阅读 · 0 评论 -
《Nginx》——应用说明
一、定义Nginx (engine x) 是一个高性能的HTTP和反向代理服务,也是一个IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011...原创 2019-02-25 18:08:27 · 363 阅读 · 0 评论 -
《通信协议》——初识(1)
一、背景在开发的过程当中,知道所有应用之间的交互都是基于一定的网络协议,所以深入了解通信协议对我们来说显得尤为重要,特别是对于后端程序员,日常的开发就是写接口,所以这一部分的知识是我们必须深入了解的。互联网的本质就是一系列的网络协议,这个协议就叫OSI协议(一系列协议),按照功能不同,分工不同,人为的分成七层。实际上这个七层是不存在的。没有这七层的概念,只是人为的划分而已,方便区分。每一层...原创 2019-03-21 14:12:52 · 375 阅读 · 0 评论 -
《WebService》 ——应用
一、四种常用的发布方式1.CXF方式ApacheCXF是一个开源服务框架。ApacheCXF=Celtix+XFire,ApacheCXF的前身叫ApacheCeltiXfire,现在已经正式更名为ApacheCXF了,以下简称为CXF。CXF继承了Celtix和XFire两大开源项目的精华,比如:JAX-WSandJAX-RS,主要特性包括:l...原创 2018-07-14 15:05:18 · 3415 阅读 · 0 评论 -
《WebService》——简介
WebService原理图一、什么是Web Service1. 什么是Web Service呢?从表面上看,WebService就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API。这就是说,你能够用编程的方法通过Web调用来实现某个功能的应用程序。从深层次上看,Web Service是一种新的Web应用程序分支,它们是自包含、自描述、模块化的应用,可以在网络(通常为Web...原创 2018-07-14 14:30:30 · 208 阅读 · 0 评论 -
《Zookeeper》——工作原理
1、Zookeeper的角色 » 领导者(leader),负责进行投票的发起和决议,更新系统状态 » 学习者(learner),包括跟随者(follower)和观察者(observer),follower用于接受客户端请求并想客户端返回结果,在选主过程中参与投票 » Observer可以接受客户端连接,将写请求转发给leader,但observer不参加投票过程,只同步leader的...转载 2019-03-01 08:28:37 · 139 阅读 · 0 评论 -
《通信协议》——Socket(5.1)
一、前言前面我们已经了解通信协议OSI模型的七层原理,也学习了TCP/IP协议的原理,HTTP协议的原理,在我们正常的一个浏览器的请求都是基于HTTP协议,也就是一个http请求。但是http请求是一个短连接,每一次服务端回复完之后就会断开,那么现在有这样的一种需求就是需要保证数据的实时性并保证双方都能主动发起,比如说聊天工具,或者是其他的是对时效性要求比较高的情形,也就是我们可能需要一个长连...原创 2019-03-23 13:00:22 · 521 阅读 · 0 评论 -
《ElasticSearch》——初识
1.Elasticsearch的概述Elasticsearch(ES)是一个基于Lucene构建的开源、分布式、RESTful接口的全文搜索引擎。Elasticsearch还是一个分布式文档数据库,其中每个字段均可被索引,而且每个字段的数据均可被搜索,ES能够横向扩展至数以百计的服务器存储以及处理PB级的数据。可以在极短的时间内存储、搜索和分析大量的数据。通常作为具有复杂搜索场景情况下的核心发...转载 2019-03-26 17:51:17 · 177 阅读 · 0 评论