自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

横云断岭的专栏

日落黄金台金黄落日--微信公众号:横云断岭的专栏

  • 博客(210)
  • 资源 (4)
  • 收藏
  • 关注

原创 不用重新配置,用jconsole连接远程机器进程及获得本地进程的JMX Url的终极办法

估计有很多人都在想用jconsole连接远程机器上的进程时,发现没有配置jmx端口,或者其它的东东。下面介始一种很简单的办法,可以不用重启远程机器的进程:ssh -X  192.168.66.66  -l username连接上去之后,可以直接运行jconsole进程,然后在本机就会弹出一个jconsole的窗口了。实际上这个不是用jconsole连接远程机器的进程,而是把

2013-11-30 21:39:42 5432

原创 Java中的随机数生成器:Random,ThreadLocalRandom,SecureRandom

Java中的随机数生成器:Random,ThreadLocalRandom,SecureRandom

2013-11-30 15:19:06 27654 1

原创 编绎OpenJDK

因为对于Java里的vtable,itable,有个地方还没搞明白,不得已去下个OpenJDK来研究下。本来很不愿意去编绎OpenJDK,因为很有可能做的只是无用功,还有可能要去解决各种找不到链接库的问题。不过,没想到虽然有些麻烦,但是出人意料的顺利。环境:ubuntu 13.10,已经安装了oracle jdk7。首先下载:wget http://down

2013-11-20 01:56:10 2975

原创 Spring Mobile是如何判断访问设备的类型的

Spring最近换域名了,去转转,发现了一个有意思的项目:spring mobile。http://projects.spring.io/spring-mobile/这个项目有很多实用的功能,如识别访问我们网站的设备是什么类型的(手机,平板,PC),据域名或者url来切换不同访问内容,据不同的访问设备转到不同的view中。识别访问设备类型的核心代码在org.springfr

2013-11-17 08:04:23 8590

原创 Java泛型原理笔记

T 到底是什么东东Java泛型的语法相当的别扭,看到一个这样的写法,感觉到很神奇,正好研究下Java泛型是怎么实现的。public class A{ public static void main(String[] args) { A a = new A(); a.test(); String r = a.test(); } public T test() {

2013-11-16 18:36:35 5394

原创 JSP 笔记

很久以前的笔记了,翻出来整理下。有用的资源在Tomcat的webapps/examples/ 目录下有很多实用详细的jsp代码例子。JSP的本质首先,JSP本质上是一个Servlet,jsp编绎器会把jsp文件编绎成一个对应的java类,而这个java类是实际上是一个servlet,从继承层次就可以看出来。比如home.jsp,在tomcat下会生成一个home_jsp的类:

2013-11-16 03:50:28 1619

原创 Java中异常Exception的实现的一些分析

文章地址:http://blog.csdn.net/hengyunabc/article/details/14108617前言:最近发现一个很有用的Eclipse插件:http://andrei.gmxhome.de/bytecode/,可以在Eclipse直接查看,调试Java的字节码。顺带研究了下Java里异常的实现机制,还有JDK7里的mutil catch的实现原理。

2013-11-03 22:05:31 6907

原创 spring如何在xml里配置Calendar,Date

文章地址:http://blog.csdn.net/hengyunabc/article/details/14107963在Spring MVC里可以通过message converter机制来对数据进行格式化,但是在普通的Spring xml配置里就无能为力了。在网上找了一通,发现也有很多人苦恼这个问题,不妨记录下。Spring 自带一个PropertyEditor的机制,但

2013-11-03 20:26:55 4283

原创 ActiveMQ-WebConsole修复增强版

ActiveMQ-WebConsole修复增强版项目地址:https://github.com/hengyunabc/activemq-webconsole-enhanced这个修复增强版基于ActiveMQ5.8.0:http://activemq.apache.org/activemq-580-release.html 。修复了一些显示的bug,并增强了web cons

2013-06-29 17:35:36 2497

原创 在线学习编程网站收集

 下面收集一些个人觉得比较好的在线学习编程网站。当然用google搜索下,会有很多推荐。 update 2015-11-11收集到几个做题网站http://www.codewars.com/  Codewarshttp://codeforces.com/        codeforceshttps://www.hackerrank.com/    HackerRank...

2013-06-16 14:38:42 13070 5

原创 查找本地进程的jmx url的代码

好久没写blog了,先来篇充充数。。当想用JMX连接本地进程,而这个进程又没有配置JMX相关的参数,怎样才能连到这个进程?下面的代码是从ActiveMQ的代码里抠出来的,可以得到本地进程的jmx url。不过当目标进程配置了-Djava.io.tmpdir 参数时,不能正常工作,原因是JDK的bug。参考:http://dikar.iteye.com/blog/1415

2013-06-08 02:53:59 3755

原创 扯谈下UTF-8

前言:本来想翻译这篇文章的(作者是utf-8编码,golang发明者之一):UTF-8: Bits, Bytes, and Benefits,http://research.swtch.com/utf8一则翻译起来很痛苦,二则觉得这篇文章有些地方可能说得不是太明白,所以结合其它的一些东东扯谈下utf-8。Unicode:先扯谈下Unicode。Unicode就是为每一个

2012-08-28 01:39:58 5207 2

原创 为什么我们需要STM(Software Transactional Memory)

原文:http://morepypy.blogspot.com/2011/08/we-need-software-transactional-memory.html这是pypy开发者写的一篇blog,里面提到了Python,Java等多线程实现的情况,还有一个很有意思的东东:STM(Software Transactional Memory)。简单记录下一些心得和想法(很可能有不对的地方:

2012-07-30 19:02:33 7172 1

原创 详细解析boost中bind的实现

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

2012-07-26 01:41:52 15550 14

原创 C++ 中cout<<endl的实现

话说像下面的语句,应该大家都明白这是通过重载operator cout<<123;cout但是像cout是怎样实现的?起初猜想endl是一个class或者struct,再通过一个friend函数来实现的。但是翻下stl的实现,原来endl是一个函数!templateinline basic_ostream& endl(basic_ostream& __os) {

2012-07-22 22:36:35 7886

原创 Kryo简介及代码阅读笔记

更新:2012-08-01版本 2.16长时间运行可能会导致OOM,版本2.18有bug,不能正确序列化map和collection。真是悲剧,所用的每一个版本都有bug。不过从代码来看,作者有时的确比较随便。。测试用例也少。。(比起msgpack少多了)========================================Kryo官方网站:https://code.go...

2012-07-19 19:07:49 36310 1

原创 Redis中的双向链表的实现

不得不说,数据结构书上的代码都是不实际的。C语言的代码写得比较少,因此多记录下有用的代码。adlist.h:/* adlist.h - A generic doubly linked list implementation * * Copyright (c) 2006-2010, Salvatore Sanfilippo * All rights reserved. *

2012-07-15 23:45:34 1780

原创 测试Go语言的interface的效率

interface是Go语言中的一大特点,甚至说是灵魂也不为过。interface应该会在Go程序中大量出现和使用,因为有必要了解和测试下它的效率。测试思路:使用vector包,测试原生的IntVector和用interface包装后的vector的效率。Go1中去掉了vector包,不过当时我把vector的代码保留了一份,在代码库里应该也能找到。我找到了一个版本的:

2012-07-10 11:57:22 3728 3

原创 测试多线程对多核cpu的分支预测的影响

前言:现代的cpu都有流水线,分支预测功能,CPU的分支预测准确性可以达到98%以上,但是如果预测失败,则流水线失效,性能损失很严重。CPU使用的分支预测技术可以参考:处理器分支预测研究的历史和现状.pdf同时多线程处理器上的动态分支预测器设计方案研究.pdf正确地利用这些特性,可以写出高效的程序。比如在写if,else语句时,应当把大概率事件放到if语句中

2012-07-09 00:47:54 4620 3

原创 vitess中rpc兼容http请求的技巧

vitess是google的一个mysql项目,用go和python实现。https://code.google.com/p/vitess/vitess中用rpc方式来中转mysql的请求,其中rpc的实现很有意思,兼容了http请求。兼容http请求有明显的好处:1.可以用现成的监控工具来监控服务是否正常,不用另外写插件2.可以方便地实现查询信息功能,不用另外再开发工具或者界面

2012-07-08 00:17:53 2890

原创 Mysql Java驱动代码阅读笔记及JDBC规范笔记

一前言:以前刚开始用java连接mysql时,都是连猜带蒙的。比如:一个Statement,Connection何时关闭?Connection能不能先于Statement关闭?ResultSet是怎样存放数据的?怎样才能高效操纵ResultSet?PrepareStatement到底是怎样回事?连接池是怎样工作的?二、从JDBC driver代码分析:在

2012-07-06 15:32:11 4548 2

原创 为什么Java中的HashMap<K, V>的get函数是get(Object key),而不是get(K key)?

帮别人的代码改bug,发现有一大堆bug是由get或者remove传递进去的参数类型不匹配而造成的。比如: Map m = new HashMap(); m.put(new Short((short) 2), "2222"); System.out.println(m.get(2));上面的代码输出是null。一般人很难发现传递进去的int和Short类型不匹配,而

2012-06-27 16:16:58 8844 6

翻译 泛型编程的困境

原文:http://research.swtch.com/generic常用的数据结构(vectors,queues,maps,trees,等等)似乎是评估一个新语言的一个热门话题。Go语言的FAQ中有一条就是关于Go中的泛型编程。对于泛型编程的通常有以下三种处理方式:1.(C语言)放弃泛型。这样苦了程序员,但是这样没前增加太多复杂的东西到语言中。2.(C++语言)编译期特化或者大量地...

2012-06-24 22:50:35 9688 7

原创 测试Java的synchronize和ReentrantLock在单线程下的效率

ReentrantLock 在多线程情况下要远胜synchronize,这点没有疑问。最近要写个程序,有个变量是有多数情况下是一个线程读写,有少数情况下是多个线程并发读写。所以要测试下ReentrantLock 在单线程下和synchronize的效率对比。在测试的过程中发现一个有意思的现象。测试代码见后面。测试代码1结果:noLockTime: 0:00:00.004no

2012-06-14 02:40:21 3254

原创 Java中的数据结构一览

Java的类库实在是很多,以至于很多人都不太了解,结果总是自己造轮子。下面汇总了Java中的一些数据结构,加上一些实现的分析,同时备忘。至于时间复杂度,个人觉得写出来的用处不大。如果明白它是怎么实现的,那自然就知道它的时间复杂度。如果不理解它的实现,把时间复杂度背得再熟也没用。接口:Collection子接口:BlockingDe

2012-06-13 02:14:13 18107

原创 Java中的sun.misc.Unsafe包

chronicle项目:https://github.com/peter-lawrey/Java-Chronicle这个项目是利用mmap机制来实现高效的读写数据,号称每秒写入5到20百万条数据。作者有个测试,写入1百万条log用时0.234秒,用java自带的logger,用时7.347秒。在看chronicle的源代码,发现一个牛B的利用Unsafe来直接读写内存,从而提高

2012-06-13 00:53:57 24484 2

原创 从Java中String的subString函数说起

今天在用VisualVM查看进程的堆dump时,发现一些有意思的地方,见下图:在“OQL控制台”页面中可以看到“过度分配的字符串”,“布尔值太多”。从这里,可以看到一些有意思的地方。有垃圾回收机制的语言通常有很多优化1..String是不能改变的,所以subString通常是和原来的String使用的是同一份内存,不会有内存拷贝。所以有可能会出现有一个小字符串占

2012-06-03 14:51:49 2938

原创 为什么逗号表达式返回最后一个表达式的结果?--从另一个角度看C++

auto v = func1(), func2(), func3();因为一个函数调用是要经过参数压栈,调用完了,还有退栈(栈清理)的过程。而这个退栈的工作可以由调用者或者被调用者来进行,因此也分为两种不同的调用约定:__cdecl和_stdcall,当然这个扯远了。要是再扯远点,还有利用寄存器,省去压栈的fastcall和C++特有的thiscall。正因为函数调用是一个不断地入

2012-06-03 13:29:33 2081 1

原创 关于ISO-8859-1编码

在Java的一些程序中经常可以看到有这样的代码: String.getBytes("ISO-8859-1") 。虽然我是大概知道这个是以单字节来解码的,我也不写这样的代码。但是见得多了,总要多了解下。以下from http://baike.baidu.com/view/2613676.htmISO-8859-1  ISO-8859-1编码是单字节编码,向下兼容ASCII

2012-05-31 15:15:49 2361

原创 Java中的异常对程序效率有无影响

当异常没有发生时,没有影响。其实从异常实现的角度来看,在throw语句处,跳转到异常的处理代码,不同的异常处理,应该类似C++中的虚函数表一样的数构结构(待考证)。所以如果没有抛出异常,那和普通的代码完全一样。至于在抛出异常时要处理的开销和不使用异常,用返回码等来判断不同的错误,不仅代码复杂,而且也一样要有处理的开销。测试代码:import java.util.Date;pub

2012-05-14 01:52:48 4402

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

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

2012-04-16 10:37:57 7735 8

转载 Java的内存布局

from:https://www.ibm.com/developerworks/cn/java/j-codetoheap/从 Java 代码到 Java 堆理解和优化您的应用程序的内存使用Chris Bailey, Java 支持架构师, IBM简介: 本文将为您提供 Java™ 代码内存使用情况的深入见解,包括将 int 值置入一个In

2012-04-14 23:57:50 4687 2

原创 Java中的几个HashMap/ConcurrentHashMap实现分析

一、HashMap,即java.util.HashMap标准链地址法实现。这个不用多解析,下图十分明了。(图片来自网络)二、Collections.synchronizedMap() 函数返回的线程安全的HashMap这个的实现比较简单。代码中有: private final Map m; // Backing Map final Object

2012-04-10 01:31:33 8963 5

翻译 MongoDB 全文检索和标签功能

简单翻译。原文:http://www.mongodb.org/display/DOCS/Full+Text+Search+in+MongoMongoDB是通过增加一个tags的数组来实现标签功能(tagging)。obj = {  name:     "Apollo"     ,        text:  "Some text about

2012-04-05 14:34:39 15748

转载 100个开源C/C++项目中的bugs(二)未定义行为、与运算优先级相关的错误

from:http://www.oschina.net/question/1579_45444未定义行为首先,一小段理论知识未定义行为是某些编程语言的特性(尤其在C和C++中),在某些情形下产生的结果將依赖于编译器的实现或指定的优化选项。换句话说,规范并没有定义 某情况下该语言的行为,仅仅是说:“在 A 条件下,B 结果是未定义的”。在这种情况下错误在你的程序中被认

2012-03-23 02:59:38 1600

转载 100个开源C/C++项目中的bugs(一)数组和字符串处理的错误

from:http://www.oschina.net/question/1579_45444100个开源C/C++项目中的bugs摘要介绍发现错误样本的各类开源项目数组和字符串处理的错误未定义行为与运算符优先级相关的错误格式化输出错误代码打印错误例子不正确的使用基本函数和类无效代码的例子总为 true 或 false 的条件

2012-03-23 02:52:12 2451

原创 在windows下配置Eclipse + go环境

本文章地址:http://blog.csdn.net/hengyunabc/article/details/73714462012-03-31:新版的goclipse改进很大,本文有些内容已过时。1.下载go的windows下的安装包:    https://code.google.com/p/go/downloads/list    也可以下载源代码,用MinGW

2012-03-20 00:10:29 30513 5

原创 eclipse 设置备忘

每次都找半天,还不如自己记下来。1.设置新项目的默认编码Window->Preferences->General->Workspace->Text file encoding2.删除插件http://wiki.eclipse.org/FAQ_How_do_I_remove_a_plug-in%3FHelp > About Eclipse SDK > In

2012-03-19 10:51:47 1243

原创 GridFS详细分析

GridFS简介GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件。http://www.mongodb.org/display/DOCS/GridFShttp://www.mongodb.org/display/DOCS/GridFS+SpecificationGridFS使用MongoDB提供了一个命令行工具mongofiles可以来处理GridFS,在b...

2012-02-25 19:21:10 34510 5

转载 RPC框架几行代码就够了

虽然以前也大概知道rpc的实现原理,也看过部分msgpack的实现,但是对于反射不是很了解。现在看到一个简单完整的实现,也解决我的以前的另一个疑惑:http://topic.csdn.net/u/20111028/14/092f98d0-ecdc-48b2-bf8b-317d5071ab6f.html?seed=361547001&r=77648361#r_77648361不过,还

2012-02-23 14:33:06 1767 1

The XA Specification XA规范

The XA Specification XA规范

2014-02-20

处理器分支预测研究的历史和现状

处理器分支预测研究的历史和现状。 一篇介绍cpu分支预测技术的文章。

2012-07-08

同时多线程处理器上的动态分支预测器设计方案研究.pdf

同时多线程处理器上的动态分支预测器设计方案研究。 一篇关于分支预测的论文

2012-07-08

QT 提问的程序代码

QT 提问的程序代码 QT 提问的程序代码 QT 提问的程序代码 QT 提问的程序代码 QT 提问的程序代码

2010-12-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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