关闭

[置顶] 新blog地址: http://hengyunabc.github.io/

新blog地址http://hengyunabc.github.io/新blog切换到github.io 上,先试用一段时间。...
阅读(2324) 评论(0)

[置顶] 详细解析boost中bind的实现

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

[置顶] C++中虚函数(virtual function)到底有多慢

本文地址:http://blog.csdn.net/hengyunabc/article/details/7461919 虚函数为什么慢,cpu分支预测技术,虚函数到底要调用哪些汇编,虚函数实现的简单图示,虚函数不能内联, 印象中经常看到有人批评C++的虚函数很慢,但是虚函数为什么慢,虚函数到底有多慢呢? 一、理论分析 虚函数慢的原因主要有三个: 多了几条汇编指令(运行时得到对应...
阅读(4243) 评论(6)

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

本文地址:http://blog.csdn.net/hengyunabc/article/details/7170865 一个简单的累加求和程序: TYPE S=0; for(int i = 0;i < SIZE; i++) { S += a[i]; } 很多人都觉得这个程序写得不好,编译器不能生成很好的汇编代码。于是有了以下的几种“优化”: #inc...
阅读(3407) 评论(3)

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

Spring里的占位符spring里的占位符通常表现的形式是: 或者@Configuration @Impo...
阅读(290) 评论(0)

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

问题 可重现的Demo代码:demo.zip 最近排查一个spring boot应用抛出hibernate.validator NoClassDefFoundError的问题,异常信息如下:Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.validator.internal.eng...
阅读(559) 评论(5)

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

在使用spring时,有时候有会有一些自定义annotation的需求,比如一些Listener的回调函数。比如:@Service public class MyService { @MyListener public void onMessage(Message msg){ } }一开始的时候,我是在Spring的ContextRefreshedEvent事件里,通过c...
阅读(4972) 评论(2)

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

先打一个广告。greys是一个很不错的java诊断工具:https://github.com/oldmanpushcart/greys-anatomy最近尝试用greys来实时统计jvm里的异常生成数量,在增强Throwable时,发现应用会抛出StackOverflowError。下面记录详细的分析过程。在真正分析之前,先介绍JVM对反射方法调用的优化和greys的工作原理。JVM对反射方法调用的...
阅读(1794) 评论(0)

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

Serviceability Agent想要查看一些被增强过的类的字节码,或者一些AOP框架的生成类,就需要dump出运行时的java进程里的字节码。从运行的java进程里dump出运行中的类的class文件的方法,所知道的有两种 用agent attatch 到进程,然后利用Instrumentation和ClassFileTransformer就可以获取 到类的字节码了。 使用sd-jdi.ja...
阅读(2494) 评论(0)

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

需求大量的微服务框架引起了一大波embeded tomcat,executable fat jar的潮流。显然spring boot是最出色的解决方案,但是spring boot有两个不足的地方: 不支持配置web.xml文件,对于旧应用迁移不方便 一些配置在web.xml里配置起来很直观,放到代码里配置就难搞清楚顺序了。比如一些filter的顺序关系。 spring boot的方案依赖spring...
阅读(2726) 评论(0)

spring 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 plug...
阅读(4879) 评论(0)

spring boot应用启动原理分析

spring boot quick start在spring boot里,很吸引人的一个特性是可以直接把应用打包成为一个jar/war,然后这个jar/war是可以直接启动的,不需要另外配置一个Web Server。如果之前没有使用过spring boot可以通过下面的demo来感受下。 下面以这个工程为例,演示如何启动Spring boot项目:git clone git@github.com:...
阅读(77098) 评论(29)

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

Apache Commons Collections远程代码执行漏洞最近出来一个比较严重的漏洞,在使用了Apache Commons Collections的Java应用,可以远程代码执行。包括最新版的WebLogic、WebSphere、JBoss、Jenkins、OpenNMS这些大名鼎鼎的Java应用。这个漏洞的严重的地方在于,即使你的代码里没有使用到Apache Commons Collec...
阅读(4006) 评论(1)

开源全局配置中心XDiamond

项目地址: https://github.com/hengyunabc/xdiamond简介全局配置中心,存储应用的配置项,解决配置混乱分散的问题。名字来源于淘宝的开源项目diamond,前面加上一个字母X以示区别。wiki设计思路在线演示地址:xdiamond.coding.io,登陆选择standard,用户名密码:admin/admin特性 所见即所得,在管理界面上看到的所有配置即项目运行时的...
阅读(13557) 评论(2)

利用github搭建个人maven仓库

缘起之前看到有开源项目用了github来做maven仓库,寻思自己也做一个。研究了下,记录下。简单来说,共有三步: deploy到本地目录 把本地目录提交到gtihub上 配置github地址为仓库地址 配置local file maven仓库deploy到本地maven可以通过http, ftp, ssh等deploy到远程服务器,也可以deploy到本地文件系统里。例如: <distribut...
阅读(12075) 评论(4)

扯谈spring mvc之WebApplicationContext的继承关系

spring mvc里的root/child WebApplicationContext的继承关系在传统的spring mvc程序里会有两个WebApplicationContext,一个是parent,从applicationContext.xml里加载的,一个是child,从servlet-context.xml里加载的。 两者是继承关系,child WebApplicationContext...
阅读(7087) 评论(0)

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

最近tomcat升级版本时,遇到了ssi解析的问题,记录下解决的过程,还有tomcat ssi配置的要点。tomcat 配置SSI的两种方式Tomcat有两种方式支持SSI:Servlet和Filter。SSIServlet通过Servlet,org.apache.catalina.ssi.SSIServlet,默认处理”*.shtml”的URL。配置方式:修改tomcat的 conf/web.xm...
阅读(4465) 评论(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) The number of seconds between TCP keep-alive pr...
阅读(15633) 评论(0)

基于redis的分布式ID生成器

项目地址https://github.com/hengyunabc/redis-id-generator基于redis的分布式ID生成器。准备首先,要知道redis的EVAL,EVALSHA命令:http://redis.readthedocs.org/en/latest/script/eval.htmlhttp://redis.readthedocs.org/en/latest/script/ev...
阅读(18153) 评论(21)
158条 共11页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:1468136次
    • 积分:11153
    • 等级:
    • 排名:第1358名
    • 原创:127篇
    • 转载:29篇
    • 译文:2篇
    • 评论:329条
    博客专栏
    文章分类
    最新评论