HTTP 的长连接和短连接
本文总结分享网络编程中涉及的长连接、短连接概念。一、什么是长连接HTTP1.1规定了默认保持长连接(HTTP persistent connection ,也有翻译为持久连接),数据传输完成了保持TCP连接不断开(不发RST包、不四次握手),等待在同域名下继续用这个通道传输数据;相反的就是短连接。HTTP首部的Connection:...
View Article关于高可用的系统
在《 这多年来我一直在钻研的技术》这篇文章中,我讲述了一下,我这么多年来一直在关注的技术领域,其中我多次提到了工业级的软件,我还以为有很多人会问我怎么定义工业级?以及一个高可用性的软件系统应该要怎么干出来?这样我也可以顺理成章的写下这篇文章,但是没有人问,那么,我只好厚颜无耻的自己写下这篇文章了。哈哈。另外,我在一些讨论高可用系统的地方看到大家只讨论各个公司的技术方案,...
View ArticleJava代码优化
前言2016年3月修改,结合自己的工作和平时学习的体验重新谈一下为什么要进行代码优化。在修改之前,我的说法是这样的:就像鲸鱼吃虾米一样,也许吃一个两个虾米对于鲸鱼来说作用不大,但是吃的虾米多了,鲸鱼自然饱了。...
View Article如何升级成HTTPS
上一篇文章我介绍了 HTTP/2 协议,它只有在 HTTPS 环境才会生效。为了升级到 HTTP/2 协议,必须先启用 HTTPS。如果你不了解 HTTPS 协议(学名 TLS 协议),可以参考我以前的文章。《HTTPS 协议概述》《图解 HTTPS 协议》《HTTPS 协议的七个误解》《HTTPS 协议的延迟有多大?》本文介绍如何将一个 HTTP 网站升级到 HTTPS 。一、获取证书升级到...
View Article11大Java开源中文分词器的使用方法和分词效果对比
本文的目标有两个:1、学会使用11大Java开源中文分词器2、对比分析11大Java开源中文分词器的分词效果本文给出了11大Java开源中文分词的使用方法以及分词结果对比代码,至于效果哪个好,那要用的人结合自己的应用场景自己来判断。11大Java开源中文分词器,不同的分词器有不同的用法,定义的接口也不一样,我们先定义一个统一的接口:/** * 获取文本的所有分词结果, 对比不同分词器结果 *...
View Article如何在半小时搭建一个简单的日志分析平台?
人们常常说数据如金,可是,能被利用起的数据,才是“金”。而互联网的数据,常常以日志的媒介的形式存在,并需要从中提取其中的”数据”。从这些数据中,我们可以做用户画像(每个用户都点了什么广告,对哪些开源技术感兴趣),安全审计,安全防护(如果1小时内登录请求数到达一定值就报警),业务数据统计(如开源中国每天的博客数是多少,可视化编辑格式和markdown格式各占比例是多少)等等。之所以能做这些,是因为用户...
View Article浅谈移动应用的技术选型
在这个巨变的时代,技术选型是个很难做决定的事情,而移动应用技术领域在几个巨头(Google,Facebook,Apple etc.)的带动下更是日新月异。所以说要选择一个适合业务需求并且匹配开发人员能力的技术方案并不是一件简单的事情。我也只是在移动开发上做过一点微小的工作,此处仅能抛个砖,希望各位有玉的大神尽管砸过来。做移动应用开发,说起来技术方案不外乎HTML5(没错,做Mobile...
View Article天猫总架构师何崚:好的技术团队不是“需求翻译机”或“架构优化机”
一个好的技术团队应该具备哪些特质?一个好的技术团队的leader应该怎样实施管理?技术和业务如何做到完美结合?这是来自天猫技术团队的经验,仅供参考。前言2012年,无线化大规模到来的前夕,淘宝成立了天猫团队,四年来天猫的不断发展离不开其背后技术团队强有力的支持。这样的一个技术团队,是怎样实施管理的?是怎样平衡完成需求和提升技术能力这两者之间的关系的?其核心竞争力是什么,怎样长期保持核心竞争力?而作为...
View ArticleJava直接(堆外)内存使用详解
本篇主要讲解如何使用直接内存(堆外内存),并按照下面的步骤进行说明:相关背景-->读写操作-->关键属性-->读写实践-->扩展-->参考说明希望对想使用直接内存的朋友,提供点快捷的参考。数据类型下面这些,都是在使用...
View Article一篇文章带你了解Kubernetes安装
由于之前在阿里云上部署的 Docker 1.12.2的Swarm集群没能正常展示出其所宣称的Routing mesh和VIP等功能,为了满足项目需要,我们只能转向另外一种容器集群管理和服务编排工具 Kubernetes。注:之前Docker1.12集群的Routing mesh和VIP功能失效的问题,经过在github上...
View Article一个经典例子让你彻彻底底理解java回调机制
以前不理解什么叫回调,天天听人家说加一个回调方法啥的,心里想我草,什么叫回调方法啊?然后自己就在网上找啊找啊找,找了很多也不是很明白,现在知道了,所谓回调:就是A类中调用B类中的某个方法C,然后B类中反过来调用A类中的方法D,D这个方法就叫回调方法,这样子说你是不是有点晕晕的,其实我刚开始也是这样不理解,看了人家说比较经典的回调方式:Class A实现接口CallBack callback——...
View ArticleJava性能优化指南,及唯品会的实战
来了唯品会一年多,不少时间花在与服务化框架、业务应用的性能的缠斗上。前几天正好趁着中生代社区的 十月十城技术沙龙,把脑海中 关于性能优化的记忆全部理了一遍….讲完回家,又本着认真严谨的态度再理了一遍,终于成为现在这份...
View Article性能优化那些事
写在之前的话,最近一年多来几乎没更新博客,更多的原因是自知资历尚潜,要学习的东西太多,要接触的东西也太多,没有足够的精力投入到博客上,或许有一天时机成熟会再提高更新频率吧,但有一点不会变的是,学习的路上数十年如一日,我会一直坚持,争取有更多的机会可以走出来,但前提是我有了足够的深度和广度。谢谢大家的支持。————————————————————————————————————————————————...
View ArticleNetty SSL性能调优
嗯,这篇不长的文章,是一个晚上工作到三点的血泪加班史总结而成。多一个读,可能就少一个人加班。《 TLS协议分析 与 现代加密通信协议设计》 首先要感谢这篇文章,如果没有它,我可能还要花更多的时间才能完成。文章有点长,能看多少是多少,每句都是收获。1.背景知识1.1 协议史1996: SSL3.0. 写成RFC,开始流行。目前(2015年)已经不安全,必须禁用。1999: TLS1.0....
View Article一个20秒SQL慢查询优化的经历与处理方案
背景前几天在项目上线过程中,发现有一个页面无法正确获取数据,经排查原来是接口调用超时,而最后发现是因为SQL查询长达到20多秒而导致了问题的发生。这里,没有高深的理论或技术,只是备忘一下经历和解读一些思想误区。复杂SQL语句的构成这里不过多对业务功能进行描述,但为了突出问题所在,会用类比的语句来描述当时的场景。复杂的SQL语句可以表达如下:SELECT * FROM a_table AS a...
View ArticleJVM 性能调优实战之:一次系统性能瓶颈的寻找过程
玩过性能优化的朋友都清楚,性能优化的关键并不在于怎么进行优化,而在于怎么找到当前系统的性能瓶颈。 性能优化分为好几个层次,比如系统层次、算法层次、代码层次…JVM 的性能优化被认为是底层优化,门槛较高,精通这种技能的人比较少。笔者呆过几家技术力量不算弱的公司,每个公司内部真正能够进行 JVM 性能调优的人寥寥无几、甚至没有。如是乎,能够有效通过 JVM...
View ArticleJVM 性能调优实战之:使用阿里开源工具 TProfiler 在海量业务代码中精确定位性能代码
本文是《 JVM 性能调优实战之:一次系统性能瓶颈的寻找过程》 的后续篇,该篇介绍了如何使用 JDK 自身提供的工具进行 JVM 调优将 TPS 由 2.5 提升到 20 (提升了 7 倍),并准确定位系统瓶颈:我们应用里静态对象不是太多、有大量的业务线程在频繁创建一些生命周期很长的临时对象,代码里有问题。那么问题来了,如何在海量业务代码里边准确定位这些性能代码?本文将介绍如何使用阿里开源工具...
View ArticleAPP 缓存数据线程安全问题探讨
问题一般一个 iOS APP 做的事就是:请求数据->保存数据->展示数据,一般用 Sqlite 作为持久存储层,保存从网络拉取的数据,下次读取可以直接从 Sqlite DB 读取。我们先忽略从网络请求数据这一环节,假设数据已经保存在 DB 里,那我们要做的事就是,ViewController 从 DB 取数据,再传给 view 渲染: 这是最简单的情况,随着程序变复杂,多个...
View ArticleLucene 6.0 实战:索引热备份及恢复
索引备份的几个关键问题最简单的备份方式是关闭IndexWriter,然后逐一拷贝索引文件,但是如果索引比较大,那么这种备份操作会持续较长时间,而在备份期间,程序无法对索引文件进行修改,很多搜索程序是不能接受索引操作期间如此长时间停顿的那么不关闭IndexWriter又如何呢?这样也不行,因为在拷贝索引期间,如果索引文件发生变化,会导致备份的索引文件损坏另外一个问题就是如果原索引文件损坏的话,再备份它...
View Article