zookeeper 大量连接断开重连原因排查
问题现象最后发现线上的zookeeper的日志zookeeper.out 文件居然有6G,后来设置下日志为滚动输出,参考:http://blog.csdn.net/hengyunabc/article/details/19006911但是改了之后,发现一天的日志量就是100多M,滚动日志一天就被冲掉了,这个不科学。再仔细查看下日志里的内容,发现有很多连接建立好,马上又断开:2014-11-24...
View Article关于Java并发编程的总结和思考
为什么需要并发并发其实是一种解耦合的策略,它帮助我们把做什么(目标)和什么时候做(时机)分开。这样做可以明显改进应用程序的吞吐量(获得更多的CPU调度时间)和结构(程序有多个部分在协同工作)。做过Java Web开发的人都知道,Java...
View ArticleRESTful 架构风格下的 4 大常见安全问题
伴随着RESTful架构风格的大量应用微服务架构的流行,一些本来难以察觉到的安全问题也逐渐开始显现出来。在我经历过的各种采用RESTful微服务架构风格的应用中,某些安全问题几乎在每个应用中都会出现。然而它们并非是什么高深的技术难题,只不过是借着微服务的流行而显得越发突出,这些都可以通过一些安全实践来避免。本文将一些典型的问题列举出来,希望能引起开发团队的注意,帮助他们绕过这些安全问题的“坑”。1....
View ArticleJVM初探——使用堆外内存减少Full GC
问题: 大部分主流互联网企业线上Server JVM选用了CMS收集器(如Taobao、LinkedIn、Vdian), 虽然CMS可与用户线程并发GC以降低STW时间, 但它也并非十分完美, 尤其是当出现 Concurrent Mode Failure由并行GC转入串行时, 将导致非常长时间的 Stop The World(详细可参考 JVM初探- 内存分配、GC原理与垃圾收集器).解决: 由...
View ArticleApache Beam:一个开源的统一的分布式数据处理编程库
Apache Beam是一个开源的数据处理编程库,由Google共享给Apache的项目,前不久刚刚成为Apache TLP项目。它提供了一个高级的、统一的编程模型,允许我们通过构建Pipeline的方式实现批量、流数据处理,并且构建好的Pipeline能够运行在底层不同的执行引擎上。刚刚接触该开源项目时,我的第一感觉就是:在编程API的设计上,数据集及其操作的抽象有点类似Apache...
View ArticleJVM上最快的Bloom filter实现
英文原始出处: Bloom filter for Scala, the fastest for JVM本文介绍的是我用Scala实现的Bloom filter。 源代码在 github上。依照 性能测试结果,它是JVM上的 最快的Bloom filter实现。零分配(Zero-allocation)和高度优化的代码。 无内存限制,所以没有包含元素的数量限制和可控的误报率(false...
View Article从Gitlab误删除数据库想到的
昨天,Gitlab.com发生了一个大事,某同学误删了数据库,这个事看似是个低级错误,不过,因为Gitlab把整个过程的细节都全部暴露出来了,所以,可以看到很多东西,而对于类似这样的事情,我自己以前也干过,而在最近的两公司中我也见过(Amazon中见过一次,阿里中见过至少四次),正好通过这个事来说说一下自己的一些感想和观点吧。...
View Article分布式系统中唯一 ID 的生成方法
本文主要介绍在一个分布式系统中, 怎么样生成全局唯一的 ID一, 问题描述在分布式系统存在多个 Shard 的场景中, 同时在各个 Shard 插入数据时, 怎么给这些数据生成全局的 unique ID?在单机系统中 (例如一个 MySQL 实例), unique ID 的生成是非常简单的, 直接利用 MySQL 自带的自增 ID 功能就可以实现.但在一个存在多个 Shards 的分布式系统...
View Article每天自动备份MySQL数据库的shell脚本
经常备份数据库是一个好习惯,虽然数据库损坏或数据丢失的概率很低,但一旦发生这种事情,后悔是没用的。一般网站或应用的后台都有备份数据库的功能按钮,但需要去手工执行。我们需要一种安全的,每天自动备份的方法。下面的这个shell脚本就是能让你通过过设定Crontab来每天备份MySQL数据库的方法。#!/bin/bash # 数据库认证 user="" password="" host=""...
View ArticleLinux下正确删除海量文件的姿势
这里说的“海量”并不是指体积大,而是指数量,比如一个目录下有数百万个小文件。最近在优化服务器时发现postfix下的maildrop目录和clientmqueue目录下发现有大量的文件,进入这些目录里使用ls命令是愚蠢的做法,而直接执行 rm *,没有任何反应,文件数量也没有减少,也就是说,在海量文件目录里直接使用rm命令进行删除是无效的。那么正确的方法是什么呢?有两种方法可选: 第一种:find...
View Article防范 CSRF 跨站请求伪造
CSRF(Cross-site request forgery,中文为 跨站请求伪造)是一种利用网站可信用户的权限去执行未授权的命令的一种恶意攻击。通过...
View Articlehttp request乱码的真相
首先,从浏览器端看下有多少种情况:1.在浏览器的地址栏,或者搜索框里输入地址:http://www.test.com/衣服/search?keyword=T恤2.在一个指定了编码的网页中,提交一个form,如:<html> <head> <meta charset="gbk"> </head> <body>...
View ArticleSpring Cloud Netflix构建微服务入门实践
在使用Spring Cloud Netflix构建微服务之前,我们先了解一下Spring Cloud集成的Netflix...
View ArticleAndroid优化
I. 网络相关更多网络优化,可参考: Android网络http头信息带Cache-Control域 确定缓存过期时间 防止重复请求直接用IP直连,不用域名,策略性跟新本地IP列表。 –...
View Article2017年你不能错过的Java类库
这篇文章是在我看过 Andres Almiray 的一篇 介绍文后,整理出来的。因为内容非常好,我便将它整理成参考列表分享给大家, 同时附上各个库的特性简介和示例。 请欣赏!GuiceGuice (发音同 ‘juice’) ,是一个 Google 开发的轻量级依赖性注入框架,适合 Java 6 以上的版本。# Typical dependency injection public class...
View ArticleSpringBoot的事务管理
Springboot内部提供的事务管理器是根据autoconfigure来进行决定的。比如当使用jpa的时候,也就是pom中加入了spring-boot-starter-data-jpa这个starter之后(之前我们分析过...
View ArticleJVM诊断调优CheatSheet
常用Shell命令查看网络状况 netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'使用top去获取进程cpu使用率;使用/proc文件查看进程所占内存。 #!/bin/bash for i in `ps -ef | egrep -v "awk|$0" | awk '/'$1'/{print $2}'` do...
View ArticleSpring boot executable jar/war 原理
Spring boot executable jar/warspring boot里其实不仅可以直接以 Java -jar demo.jar的方式启动,还可以把jar/war变为一个可以执行的脚本来启动,比如./demo.jar。把这个executable jar/war 链接到/etc/init.d下面,还可以变为Linux下的一个service。只要在spring boot maven...
View ArticleNetty 超时机制及心跳程序实现
本文介绍了 Netty 超时机制的原理,以及如何在连接闲置时发送一个心跳来维持连接。Netty 超时机制的介绍Netty 的超时类型 IdleState 主要分为:ALL_IDLE : 一段时间内没有数据接收或者发送READER_IDLE : 一段时间内没有数据接收WRITER_IDLE : 一段时间内没有数据发送在 Netty 的 timeout 包下,主要类有:IdleStateEvent :...
View Article