hengyunabc的专栏

日落黄金台金黄落日 -- 横云断岭

排序:
默认
按更新时间
按访问量

新blog地址: http://hengyunabc.github.io/

新blog地址http://hengyunabc.github.io/新blog切换到github.io 上,先试用一段时间。

2015-02-17 10:53:15

阅读数:3320

评论数:0

详细解析boost中bind的实现

写在前面的话 在C++11之后,std::bind是C++标准库的一个组件了。一开始想弄个C++11的实现来研究下,发现里面用到了可变参数模板(代码变得非常神奇). http://llvm.org/svn/llvm-project/libcxx/trunk/include/functional...

2012-07-26 01:41:52

阅读数:13313

评论数:19

C++中虚函数(virtual function)到底有多慢

本文地址:http://blog.csdn.net/hengyunabc/article/details/7461919 虚函数为什么慢,cpu分支预测技术,虚函数到底要调用哪些汇编,虚函数实现的简单图示,虚函数不能内联, 印象中经常看到有人批评C++的虚函数很慢,但是虚函数为什么慢,虚函数到...

2012-04-16 10:37:57

阅读数:5351

评论数:7

C++编译器到底能帮我们把代码优化到什么程度?

本文地址:http://blog.csdn.net/hengyunabc/article/details/7170865 一个简单的累加求和程序: TYPE S=0; for(int i = 0;i < SIZE; i++) { S += a[i]; } 很多人都...

2012-01-02 01:38:49

阅读数:3866

评论数:3

深入Spring Boot:快速集成Dubbo + Hystrix

背景 Hystrix 旨在通过控制那些访问远程系统、服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。Hystrix具备拥有回退机制和断路器功能的线程和信号隔离,请求缓存和请求打包,以及监控和配置等功能。 Dubbo是Alibaba开源的,目前国内最流行的java rpc框架。 本...

2018-06-14 15:07:31

阅读数:21

评论数:0

优化技巧:提前if判断帮助CPU分支预测

分支预测 在stackoverflow上有一个非常有名的问题:[为什么处理有序数组要比非有序数组快?]( https://stackoverflow.com/questions/11227809/why-is-it-faster-to-process-a-sorted-array-than-a...

2018-05-16 20:05:18

阅读数:184

评论数:1

深入Spring Boot:实现对Fat Jar jsp的支持

spring boot 对于jsp支持的限制 对于jsp的支持,Spring Boot官方只支持了war的打包方式,不支持fat jar。参考官方文档: https://docs.spring.io/spring-boot/docs/current/reference/html/boot-fea...

2018-05-16 19:48:13

阅读数:298

评论数:0

深入Spring Boot: 怎样排查 java.lang.ArrayStoreException

java.lang.ArrayStoreException 分析 这个demo来说明怎样排查一个spring boot 1应用升级到spring boot 2时可能出现的java.lang.ArrayStoreException。 demo地址:https://github.com/hengy...

2018-03-07 19:12:25

阅读数:1050

评论数:0

从java9共享内存加载modules说起

jdk9后加载lib/modules的方式 从jdk的代码里可以看出来,默认的实现加载lib/modules是用mmap来加载的。 class NativeImageBuffer { static { java.security.AccessController.d...

2018-02-23 15:35:19

阅读数:329

评论数:0

深入Spring Boot:排查@Transactional引起的NullPointerException

写在前面这个demo来说明怎么排查一个@Transactional引起的NullPointerException。https://github.com/hengyunabc/spring-boot-inside/tree/master/demo-Transactional-NullPointerE...

2017-12-14 19:37:02

阅读数:846

评论数:0

深入Spring Boot:怎样排查expected single matching bean but found 2的异常

写在前面这个demo来说明怎么排查一个常见的spring expected single matching bean but found 2的异常。https://github.com/hengyunabc/spring-boot-inside/tree/master/demo-expected-...

2017-12-09 22:12:59

阅读数:1627

评论数:0

深入Spring Boot:怎样排查 Cannot determine embedded database driver class for database type NONE

写在前面这个demo来说明怎么一步步排查一个常见的spring boot AutoConfiguration的错误。调试排查 Cannot determine embedded database driver class for database type NONE 的错误把工程导入IDE里,直接...

2017-12-09 22:10:19

阅读数:6956

评论数:2

深入Spring Boot:Spring Context的继承关系和影响

前言对于一个简单的Spring boot应用,它的spring context是只会有一个。 非web spring boot应用,context是AnnotationConfigApplicationContext web spring boot应用,context是AnnotationConf...

2017-08-21 20:36:05

阅读数:2444

评论数:1

深入Spring Boot:ClassLoader的继承关系和影响

前言对spring boot本身启动原理的分析,请参考:http://hengyunabc.github.io/spring-boot-application-start-analysis/Spring boot里的ClassLoader继承关系可以运行下面提供的demo,分别在不同的场景下运行,...

2017-08-19 16:31:31

阅读数:2438

评论数:1

深入Spring Boot:那些注入不了的Spring占位符(${}表达式)

Spring里的占位符spring里的占位符通常表现的形式是:<bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSourc...

2017-07-20 00:54:07

阅读数:2099

评论数:0

深入JVM分析spring-boot应用hibernate-validator NoClassDefFoundError

问题 可重现的Demo代码:demo.zip 最近排查一个spring boot应用抛出hibernate.validator NoClassDefFoundError的问题,异常信息如下:Caused by: java.lang.NoClassDefFoundError: Could not i...

2017-05-10 01:16:26

阅读数:2637

评论数:5

正确实现用spring扫描自定义的annotation

在使用spring时,有时候有会有一些自定义annotation的需求,比如一些Listener的回调函数。比如:@Service public class MyService { @MyListener public void onMessage(Message msg){ ...

2016-05-01 14:07:04

阅读数:11050

评论数:2

详细分析罕见的ClassCircularityError异常导致的StackOverflowError

先打一个广告。greys是一个很不错的java诊断工具:https://github.com/oldmanpushcart/greys-anatomy最近尝试用greys来实时统计jvm里的异常生成数量,在增强Throwable时,发现应用会抛出StackOverflowError。下面记录详细的...

2016-04-10 13:11:46

阅读数:3355

评论数:0

从java进程里dump出类的class文件的小工具--dumpclass

Serviceability Agent想要查看一些被增强过的类的字节码,或者一些AOP框架的生成类,就需要dump出运行时的java进程里的字节码。从运行的java进程里dump出运行中的类的class文件的方法,所知道的有两种 用agent attatch 到进程,然后利用Instrument...

2016-04-09 19:50:04

阅读数:4304

评论数:0

应用内置embeded tomcat,并打包为fat jar的解决方案

需求大量的微服务框架引起了一大波embeded tomcat,executable fat jar的潮流。显然spring boot是最出色的解决方案,但是spring boot有两个不足的地方: 不支持配置web.xml文件,对于旧应用迁移不方便 一些配置在web.xml里配置起来很直观,放到代...

2016-04-05 23:49:23

阅读数:4733

评论数:3

spring boot executable jar/war 原理

spring boot executable jar/warspring boot里其实不仅可以直接以 java -jar demo.jar的方式启动,还可以把jar/war变为一个可以执行的脚本来启动,比如./demo.jar。把这个executable jar/war 链接到/etc/init...

2016-04-03 14:24:11

阅读数:8616

评论数:1

spring boot应用启动原理分析

spring boot quick start在spring boot里,很吸引人的一个特性是可以直接把应用打包成为一个jar/war,然后这个jar/war是可以直接启动的,不需要另外配置一个Web Server。如果之前没有使用过spring boot可以通过下面的demo来感受下。 下面以...

2015-11-30 22:36:38

阅读数:151154

评论数:32

禁止JVM执行外部命令Runtime.exec -- 由Apache Commons Collections漏洞引发的思考

Apache Commons Collections远程代码执行漏洞最近出来一个比较严重的漏洞,在使用了Apache Commons Collections的Java应用,可以远程代码执行。包括最新版的WebLogic、WebSphere、JBoss、Jenkins、OpenNMS这些大名鼎鼎的J...

2015-11-13 20:40:42

阅读数:5645

评论数:2

开源全局配置中心XDiamond

项目地址: https://github.com/hengyunabc/xdiamond简介全局配置中心,存储应用的配置项,解决配置混乱分散的问题。名字来源于淘宝的开源项目diamond,前面加上一个字母X以示区别。wiki设计思路在线演示地址:xdiamond.coding.io,登陆选择sta...

2015-08-19 11:16:00

阅读数:21899

评论数:3

利用github搭建个人maven仓库

缘起之前看到有开源项目用了github来做maven仓库,寻思自己也做一个。研究了下,记录下。简单来说,共有三步: deploy到本地目录 把本地目录提交到gtihub上 配置github地址为仓库地址 配置local file maven仓库deploy到本地maven可以通过http, ftp...

2015-08-06 02:53:54

阅读数:19235

评论数:4

扯谈spring mvc之WebApplicationContext的继承关系

spring mvc里的root/child WebApplicationContext的继承关系在传统的spring mvc程序里会有两个WebApplicationContext,一个是parent,从applicationContext.xml里加载的,一个是child,从servlet-c...

2015-07-26 22:01:39

阅读数:10649

评论数:0

tomcat ssi配置及升级导致ssi include错误问题解决

最近tomcat升级版本时,遇到了ssi解析的问题,记录下解决的过程,还有tomcat ssi配置的要点。tomcat 配置SSI的两种方式Tomcat有两种方式支持SSI:Servlet和Filter。SSIServlet通过Servlet,org.apache.catalina.ssi.SSI...

2015-04-15 19:19:05

阅读数:6107

评论数:0

为什么基于TCP的应用需要心跳包(TCP keep-alive原理分析)

TCP keep-alive的三个参数用man命令,可以查看linux的tcp的参数:man 7 tcp其中keep-alive相关的参数有三个: tcp_keepalive_intvl (integer; default: 75; since Linux 2.4) ...

2015-03-16 19:12:50

阅读数:24952

评论数:0

基于redis的分布式ID生成器

项目地址https://github.com/hengyunabc/redis-id-generator基于redis的分布式ID生成器。准备首先,要知道redis的EVAL,EVALSHA命令:http://redis.readthedocs.org/en/latest/script/eval....

2015-03-13 19:22:59

阅读数:28978

评论数:23

Cookie & Session & CSRF

新blog地址:http://hengyunabc.github.io/cookie-and-session-and-csrf/在线幻灯片地址: Cookie & Session & CSRF

2015-03-09 19:42:52

阅读数:2280

评论数:0

防止页面被iframe恶意嵌套

新blog地址:http://hengyunabc.github.io/prevent-iframe-stealing/缘起在看资料时,看到这样的防止iframe嵌套的代码:try { if (window.top != window.self) { var ref = d...

2015-03-09 19:40:21

阅读数:7242

评论数:2

kafka manager安装

项目信息https://github.com/yahoo/kafka-manager这个项目比 https://github.com/claudemamo/kafka-web-console 要好用一些,显示的信息更加丰富,kafka-manager本身可以是一个集群。不过kafka-manag...

2015-03-09 19:35:59

阅读数:24466

评论数:7

基于dropwizard/metrics ,kafka,zabbix构建应用统计数据收集展示系统

新blog地址:http://hengyunabc.github.io/about-metrics/想要实现的功能 应用可以用少量的代码,实现统计某类数据的功能 统计的数据可以很方便地展示 metricsmetrics,按字面意思是度量,指标。举具体的例子来说,一个web服务器: - 一分钟内请...

2015-03-05 23:13:47

阅读数:9614

评论数:0

一步一步用jenkins,ansible,supervisor打造一个web构建发布系统

新blog地址:http://hengyunabc.github.io/deploy-system-build-with-jenkins-ansible-supervisor/一步一步用jenkins,ansible,supervisor打造一个web构建发布系统。本来应该还有gitlab这一环节...

2015-03-05 01:08:04

阅读数:28728

评论数:0

netstat统计的tcp连接数与⁄proc⁄pid⁄fd下socket类型fd数量不一致的分析

新blog地址:http://hengyunabc.github.io/netstat-difference-proc-fd-socket-stat/最近,线上一个应用,发现socket数缓慢增长,并且不回收,超过警告线之后,被运维监控自动重启了。首先到zabbix上观察JVM历史记录,发现JVM...

2015-02-17 11:15:26

阅读数:12332

评论数:1

zookeeper 大量连接断开重连原因排查

问题现象 最后发现线上的zookeeper的日志zookeeper.out 文件居然有6G,后来设置下日志为滚动输出,参考: http://blog.csdn.net/hengyunabc/article/details/19006911 但是改了之后,发现一天的日志量就是100多M,滚动日志一...

2014-11-24 19:56:41

阅读数:101011

评论数:18

HBase数据同步到ElasticSearch的方案

ElasticSearch的River机制 ElasticSearch自身提供了一个River机制,用于同步数据。 这里可以找到官方目前推荐的River: http://www.elasticsearch.org/guide/en/elasticsearch/rivers/current/ 但是...

2014-11-15 16:22:11

阅读数:23231

评论数:5

Memcached 二进制协议(BinaryProtocol) incr指令泄露内存数据的bug

缘起 最近有个分布式限速的需求。支付宝的接口双11只允许每秒调用10次。 单机的限速,自然是用google guava的RateLimiter。 http://docs.guava-libraries.googlecode.com/git-history/master/javadoc/com...

2014-11-07 20:19:14

阅读数:4801

评论数:2

解决ActiveMQ的“Invalid broker URI”异常的历程

最近碰到一个问题,把解决的过程记录下来。 故障原因 同事的应用上线,Tomcat无法正常启动。抛出这样的异常: org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) a...

2014-11-07 18:46:34

阅读数:8086

评论数:0

kafka web console安装

kafka自己居然没有还一个Web管理界面。。 这里有个第三方的:  https://github.com/claudemamo/kafka-web-console 坑爹的是居然没有详细的安装步骤,只有一些简单的说明,对于不熟悉scala play开发的人来说,很蛋疼。下面记录详细的安装过程。 ...

2014-10-24 19:15:37

阅读数:17161

评论数:7

移动App通讯协议及序列化方式的选择

简单列一下不同协议,序列化方式等的考虑。 http还是私有协议? http协议优/缺点: 在服务器端只需要提供一份接口,浏览器和app共用。在app中嵌入web view也很容易。 http协议的相关工具非常多。开发人员很方便 。比如负载均衡,直接nginx搞定。 比如统计一个接口的...

2014-07-12 17:59:36

阅读数:6851

评论数:0

Android 的WebView使用CookieManager崩溃的问题

应用里,如果用户退出登陆了,而WebView里还没有退出登陆,这就有点蛋疼了。所以在用户退出时,要清除WebView的Cookie。但是据说调用CookieManager应用可能会崩溃。 先来看下微信是怎么做的,反编绎了下微信的apk,发现是这样的: private void a(Acti...

2014-07-03 20:18:39

阅读数:6639

评论数:2

从一篇Blog看两个并发编程错误

发现公司支付宝接入的代码有点神奇,在网上搜索了下,找到原始版本。估计有不少人都是抄那份代码的。 原文在:http://blog.csdn.net/simdanfeg/article/details/9011603    Android支付接入(一):支付宝 但是代码里有两个明显的并发问题,尽管在...

2014-07-03 20:03:00

阅读数:1803

评论数:1

C++11的thread代码分析

本文分析的是llvm libc++的实现:http://libcxx.llvm.org/ class thread thread类直接包装了一个pthread_t,在linux下实际是unsigned long int。 class thread { pthread_t __t...

2014-06-29 20:50:57

阅读数:10277

评论数:0

移动App该如何保存用户密码

移动App该如何保存用户密码? 这个实际上和桌面程序是一样的。 先看下一些软件是如何保存用户密码的: 我们先来看下QQ是怎么保存密码的: 参考:http://bbs.pediy.com/archive/index.php?t-159045.html, 桌面QQ在2012的时候把密码md5计算...

2014-06-28 14:15:01

阅读数:44967

评论数:12

C++11中的mutex, lock,condition variable实现分析

本文分析的是llvm libc++的实现:http://libcxx.llvm.org/ C++11中的各种mutex, lock对象,实际上都是对posix的mutex,condition的封装。不过里面也有很多细节值得学习。 std::mutex 先来看下std::mutex: 包增了一个pt...

2014-06-22 22:57:32

阅读数:9707

评论数:1

C++11中once_flag,call_once实现分析

本文的分析基于llvm的libc++,而不是gun的libstdc++,因为libstdc++的代码里太多宏了,看起来蛋疼。 在多线程编程中,有一个常见的情景是某个任务只需要执行一次。在C++11中提供了很方便的辅助类once_flag,call_once。 声明 首先来看一下once_flag和...

2014-06-22 01:29:00

阅读数:6463

评论数:1

写程序很难之去除字符串的空白字符

在做性能调优时,用JProfiler测试Web应用的性能,发现有个replaceBlank函数占用了10%的CPU时间,进去看了下,是个简单的用正则去除XML文档里空白字符串的功能。但是这个简单功能却消耗了10%的性能。 在Web应用里,去掉空白字符串,似乎是个简单的功能,但是真正写起来,却也有些...

2014-06-16 02:51:44

阅读数:4922

评论数:0

Java的LockSupport.park()实现分析

LockSupport类是Java6(JSR166-JUC)引入的一个类,提供了基本的线程同步原语。LockSupport实际上是调用了Unsafe类里的函数,归结到Unsafe里,只有两个函数: public native void unpark(Thread jthread); pu...

2014-06-03 02:52:12

阅读数:23422

评论数:5

并行编程之条件变量(posix condition variables)

在整理Java LockSupport.park()的东东,看到了个"Spurious wakeup",重新梳理下。 首先来个《UNIX环境高级编程》里的例子: #include struct msg { struct msg *m_next; /* ... more s...

2014-06-02 00:24:44

阅读数:4621

评论数:2

提示
确定要删除当前文章?
取消 删除
关闭
关闭