自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

netHibernate的专栏

——我只是一只虫而已

  • 博客(80)
  • 资源 (9)
  • 收藏
  • 关注

原创 protocol buffer newBuilder速度慢问题

最近的这个项目一直使用protocol buffer作为协议层,大家在使用的过程中发现,每次在创建消息的builder——即newBuilder的时候,会非常的慢(常常需要20ms以上),以至于大家现在基本是谈newBuilder色变的地步。今天亮亮终于忍不住,问我为啥一个builder的创建那么慢呢,我正在玩儿游戏,抽空调出源码来看了一下,发现里面就真是new了一个Builder对象,这个Bui

2015-04-15 19:57:39 2126

原创 Linux查看内存引出的那些事儿

话说团队的兄弟有一天问我,为啥咱唯一的一个服务器,内存都用完了,我还想在上面测性能呢。我一听,第一反应:不可能!我说你胡扯呢吧,咱那可是16G的一个物理机,上面就跑了git服务器,怎么可能把内存吃完了呢。他撇了撇嘴:不信自己上去看。既然这么说了,我便远程登上去瞅瞅吧。第一想到的就是top命令,于是,敲了top,得到了以下的截图:就剩下3个G了(这个还是多的,当天就剩

2015-03-20 16:22:09 1308

原创 使用Hibernate连接MySQL数据库,MySQL连接超时断开的问题

最近让人头疼的一个问题,就是服务器在不确定的时点会出现关于数据库连接的Exception,大致的Exception如下:org.hibernate.util.JDBCExceptionReporter - SQL Error:0, SQLState: 08S01org.hi

2011-08-04 12:14:40 25291 5

原创 参加Nginx技术分享的总结

参加了公司前两天的一个关于Nginx的技术分享,一直很懒,今天把参加后的总结记录一下。Nginx的作用:HTTP Server反向代理,用于将用户的请求转发到后端的Server上,过滤掉一些无用的请求,不用直接进入后端Server邮件服务器Nginx可以同时响应上万的请求,效率要

2011-07-23 17:23:02 5292 1

原创 Ubuntu使用add-apt-repository增加源时如何设置代理服务器

<br />在公司使用Ubuntu最头疼的事情就是代理服务器的问题。当我们使用add-apt-repository添加源的时候,因为公司要通过代理服务器才能访问网络,所以总是会报出如下的错误:<br /><urlopen error [Errno -2] Name or service not known><br />不管你如何更改代理设置,即使export https_proxy都不行。<br />下面是解决方法,至少在我的环境里是可以的:<br />$sudo bash#export https_p

2011-05-24 09:04:00 8088

转载 如何选择开源许可证?

该文章是从阮一峰的博客上转载而来的,原文的地址在这里:如何选择开源许可证?。如何为代码选择开源许可证,这是一个问题。世界上的开源许可证,大概有上百种。很少有人搞得清楚它们的区别。即使在最流行的六种----GPL、BSD、MIT、Mozilla、Apache和LGPL----之中做选择,也很复杂。乌克兰程序员Paul Bagwell,画了一张分析图,说明应该怎么选择。这是我见过的最简单的讲解,只用两分钟,你就能搞清楚这六种许可证之间的最大区别。下面是原作者制作的中文版:

2011-05-02 23:39:00 1681

原创 在Linux下让Firefox 4像Chrome一样隐藏Title Bar

Firefox 4推出有一段时间了,它的表现确实不错。FF4在windows下现在已经可以把标签栏放到标题栏中以节省空间(这一点和chrome一样),但是目前在linux下,FF4却无法做到这一点。为了让自己既能用上心爱的FF4,有能够达到像chrome一样的标签栏效果,在google了n长时间之后终于靠网上大虾米小鱼虫的帮忙达到了这个目的。在配置的过程中走了一些弯路,所以分享在这里方便自己也方便大家。

2011-04-22 09:48:00 7661

原创 Google Go,不一样的语言特性

<br />这篇文章是我看了《Rob Pike谈Google Go:并发,Type System,内存管理和GC》这后的一个总结,原始的访谈文章请点击这里:Rob Pike谈Google Go:并发,Type System,内存管理和GC。<br />虽然我个人不是很喜欢Go的语法,但是看了这个访谈,我还是被Go的一些特性所吸引。世界上没有包治百病的灵丹妙药,不存在所谓的“银弹”,当我在使用Java的时候,Go的这些特性正是我苦苦找寻的东西:Go拥有非常快的编译器和编译速度<br />Go目前为止有两个

2011-04-21 12:47:00 3334

原创 我们需要getter和setter方法么?

<br />在日常工作中,Java是我最频繁使用的语言。关于getter和setter我也听说过不少。我的感觉是在许多场合,我们不需要getter和setter方法。<br /><br />回想一下我们写JavaBean,创建一个类,然后编写一些private字段,最后使用一个smart IDE帮助我们生成对应的getter和setter方法(或者使用某个第三方类库的annotation)。但是让我们仔细的想一下,我们是怎样使用这些字段的,换句话说,我们为什么一上来就把字段写成了private?<br

2011-04-19 23:23:00 4815 4

原创 Effective Java读书笔记八

Item9:当覆写equals方法时,一定要覆写hashCode方法这一条非常重要,再次提一下:覆写了equals方法就一定要覆写hashCode方法。因为如果不这么做的话就会违反hashCode的准则,从而让基于hash的colloections——HashMap,HashSet等——的使用出现问题。下面是hashCode方法的准则:对同一个对象调用多次hashCode方法,得到的是同一个整数,但是这个整数在同一个Application多次执行中不一定相同。如果equals方法判断两个对象相等,那么这

2011-04-18 23:43:00 1601

原创 Effective Java读书笔记七

Item 8:覆写equals方法应该遵守的准则最简单的准则就是不覆写equals方法,这样就能避免很多问题。以下的这些情况不需要覆写equals方法:类的每一个实例都是唯一的:比如Thread,我们关注的是它本身作为一个活动的实体,而不是一个值。我们不关注某个类是否是逻辑相等的:比如java.util.Random类覆写了equals方法来检查两个Random的实例是否会产生相同的随机数,但是这个对我们来说基本毫无用处。超类已经覆写了equals方法,并且该覆写对子类也适用:就像AbstractSet,A

2011-04-13 00:50:00 1500

原创 Effective Java读书笔记六

Item 7:尽量不要使用finalizerJoshua一上来就强调:Finalizer是无法预言的,危险的并且大部分情况下是不必要的。使用finalizer会给代码带来不稳定的行为,低下的性能,还有可移植性的问题。根据JLS,finalizer无法保证被按时的执行。我们知道,当一个对象过期之后,在垃圾回收器回收之前会自动的调用finalizer方法,所以有的时候我们就会把一些对象的收尾工作放在finalizer方法中,比如文件的关闭,数据库连接的释放等。但是,正是因为JLS的这个“无法保证”,会让程序不定

2011-03-26 01:02:00 1420

原创 Effective Java读书笔记五

Item 6:消除对过期对象的引用看这个item之前没有过多的想过Java对象过期的问题。因为对象是由JVM控制的,JVM的垃圾回收机制也是Java区别于C++之类的语言的优点。可能是我一厢情愿了,所以在日常编程中忽视了这个问题。下面是java.util.ArrayList类中remove method的摘抄:public E remove(int index){ checkBoundExclusive(index); E r = data[index]; modCount++

2011-03-24 23:08:00 1488

原创 Effective Java读书笔记四

Item5:避免创建不需要得对象在很多时候我们可以重用已有的对象而不需要创建新的对象,尤其这个对象是immutable的。比如String类型的对象,我们一般不会这么用:String s = new String("stringette"); // DON'T DO THIS! 因为这种做法每次都会创建一个新的String对象,对性能是一种损耗,而String是一个immutable的类型。当一个immutable类既提供了构造函数,又提供了static factory methods的时候,我们首先考虑使

2011-03-23 23:32:00 1277

原创 Effective Java读书笔记三

Item 3:用private的构造函数或者enum类型来增强singleton模式先说一个singleton模式的缺点:使用singleton模式会让依赖于它的代码难于测试,因为在测试的时候我们无法用创建一个mock来隔离singletong对象。除非singleton类实现了一个interface,而我们的代码依赖于这个interface。所以在日常工作中,如果需要使用singleton模式的话,最好在它和singleton类之间做一个隔离,好让我们在测试的时候创建mock隔离它。在Java 5.0之前

2011-03-22 23:29:00 1452

原创 Effective Java读书笔记二

Item 2:当构造函数参数过多时考虑使用Builder来创建对象我们在设计类的时候,有些类难免会有许多的字段(fields),而这些字段可能需要在创建对象的时候对它们进行赋值。一般我们会考虑两种方式:使用构造函数或者使用setter方法。使用构造函数的缺点很明显,如果我们的字段过多,那么就会让构造函数的参数过多,在这种情况下,不但不容易理解和阅读,而且非常容易出错(这时候就体现出具名参数的好处了)。另外,对于static factory methods也是一样的。而使用setter方法可以减少构造函数的参

2011-03-21 23:15:00 1647

原创 Effective Java读书笔记一

最近开始读Joshua Bloch的Effective Java的第二版,打算花一些时间把它看完。记得上一次读它的第一版还是在大学的时候,转眼间已经是4年之久了。上次因为各种原因并没有把第一版看完,所以这次一定要好好的读一下它的第二版。废话少说,今天看了它的第二章:Creating and Destroying Objects(第一章是介绍),这一章包含了7个条目:一、使用static factory methods(静态工厂方法)代替构造函数static factory methods和Factory M

2011-03-21 00:11:00 2228

原创 用Scala瞎写的直接插入排序算法

<br />继续用Scala瞎写,这次写的是直接插入排序算法。(插入算法有很多种,直接插入算法是其中一种,其它的还有二分插入,链表插入等)<br /> 直接插入排序的基本概念<br />直接插入排序的概念是通过构建有序的序列,对于未排序的数据,在已排序的序列中从后向前扫描,找到相应位置并插入。<br /> 拿数组来说<br />首先比较数组的头两个数,将它们变为有序的,接下来将数组的第三个数与前两个数从后向前扫描,把第三个数插入到有序的序列中,再处理第四个数,一直到完。<br /> 把它写出来<br />根

2011-01-26 16:56:00 2481

原创 Tell, Don't Ask

<br />不知道看什么的时候看到了这篇文章,非常带感,所以这里写一些自己的感受。>>围观原文请猛击这里<<<br /> 啥是Tell,Don't Ask?<br />在这里,我把Alec Sharp大神的话摘抄在这里:<br />Procedural code gets information then makes decisions. Object-oriented code tells objects to do things. <br />— Alec Sharp<br />我觉得这句话很好的将面向

2011-01-24 16:09:00 2741 1

转载 Scala下的开发工具

最近看了一篇介绍Scala下开发工具的文章,原文在这里:Development Tools available for Scala Language。我最近一直在学习Scala,因此就借花献佛,把这片文章里的东西搬过来,给各位学习Scala的童鞋参考。1. Simple Build Tool (SBT) for Scala languageSBT是Scala下非常强大的构建工具,想想Ant和Maven,SBT在Scala下更加出色。以下是SBT的一些特性:快速、对代码无侵入并且易于配置所有的配置、定制和扩展

2011-01-21 16:08:00 5603

原创 用Scala瞎写的冒泡排序算法

学习Scala有段时间了,一直找不到好的实践方式。无意间看到了冒泡排序,就想着用Scala来写写冒泡排序。写到最后发现,真的是乱写一通,不过对于冒泡排序和Scala语言都有了一个新的认识。这就够了。这片文章就是记录我是如何左拼右凑用Scala把冒泡排序写出来的。

2011-01-19 11:24:00 3581 2

原创 2010年的总结

<br />本来这个总结应该在2010年最后一天之前完成的,可惜,我又发挥了自己一贯拖拉的毛病,一直拖到今天。<br /><br />其实打心底自己还是很怕写这个总结的,毕竟,我不敢去回想自己的那些惨不忍睹的小收获。但是,为了鞭策自己,这个总结还是要咬牙写的。自己已经不再年轻了,必须得面对自己了。<br />Java<br />从学校出来,我是靠这个语言找到工作的。但是回想在2010年,我对Java的理解并没有什么长进,这是最惭愧的地方。唯一能够算得上数的就是终于咬牙把《深入Java虚拟机》看了

2011-01-07 16:02:00 1830

原创 float类型在内存中的表示

我们经常遇到两个float类型的数相加或者相减,总是得不到我们想要的结果,比如10.0f-9.1f。这里面的猫腻都来自于计算机对float类型的转换和存储方式。这篇文章里主要记述了float类型如何转换成内存中表示的二进制形式,以及如何利用二进制进行运算。知道了这些后,我们就不会再对float运算不准确感到惊讶了。

2011-01-06 15:11:00 18852 8

原创 修复"The symbol grub xputs not found"问题

闲来无事,把自己的ubuntu系统从10.04升级到了10.10。升级的过程非常的顺利,一切就绪后重启,杯具了,启动到Grub界面的时候黑了,出现了一行 "The symbol grub xputs not found", 紧接着就是 "grub rescue>" 和一闪一闪的光标,提示着系统进不去了。我当时就傻了,grub在我毫无反应的情况下挂了。可是想想不对啊,自己前不久才将公司的机器升级了,怎么自己的电脑就杯具了呢?想来想去,公司和家里的电脑唯一的区别就是grub版本不同了。公司的是grub,而家里的

2010-10-18 22:56:00 4256

原创 Scala中隐式转换(implicit conversion)的优先顺序

<br />在学习Scala的时候,隐式转换(implicit conversion)这个特性让我实在是闹不住啊。于是乎一边试用一边感慨:真的是太强大,太方便了。<br /><br />不过,越是强大且方便的东西,越容易用出毛病来。在我不求甚解的情况下,毛病就来了,我把它称为隐式转换优先顺序问题:<br /><br />假设我们有一个表示文本的行数的类LineNumber:<br />class LineNumber ( val num : Int ) <br />我们可以用这个类来表示一本书中每一页的行数

2010-09-18 20:14:00 9146 1

原创 Scala 2.8新特性:Default Argument

<br />这里就不翻译Default Arguments的意义了,因为我觉得很难找到一个合适的词来准确的描述它。<br /><br />Scala 2.8中提供了Default Arguments这个新的特性,终于可以高兴的说:不用再使用implicit argument来做Default Argument了。<br />先来看看Scala 2.8中Default Argument的使用:<br /><br />def f(a: Int, b: String = "defaultString", c:

2010-08-11 22:03:00 1920

原创 Scala 2.8的新特性:具名参数

Scala 2.8中引入的新特性——具名参数。这里主要记录一下什么是具名参数,具名参数在Scala中如何使用以及具名参数这个特性与Scala其它特性相结合时需要注意些什么。

2010-08-05 11:34:00 2133

原创 Scala 2.8的新特性:Type Specialization(类型专门化)

Scala 2.8中包含了一个新的特性——Type Specialization(类型专门化),个人觉得这是一个很有用的特性,在我们一直诟病字节码速度的今天,这个特性的提出可以更进一步的提高我们程序的速度。而我们需要做的,仅仅是使用这个特性而已。

2010-07-22 15:14:00 3624

原创 Scala 2.8中新的数组

Scala 2.8重新设计了集合框架,引入了许多新的特性来改良数组类型和已有String类型。这篇文章大部分翻译自官方的PDF,虽然简单,但是可以让我们快速的了解新版本中数组那令人激动的特性。

2010-07-21 11:45:00 10429 2

转载 云计算七问七答

<br />缘起<br />最近因为工作需要,又再度开始接触 Amazon EC2/S3(早在2006初这个服务刚推出不久时曾用过一次,那时是RoR加一堆merb,不过后来随着项目结束也就渐渐忘了这事),结果这次随便查了些资料却发现“云计算”这个单词似乎已无所不在泛滥成灾,也让我一时兴起想了解一下到底现在大家口中所谓的“云计算”是在指什么。<br /><br />之所以这样好奇主要的原因是在许多地方都看到有人自称在提供云计算服务,但这些服务间彼此的性质、形态与做法差异性却很大,例如EC2与GAE两者就不太一

2010-06-23 10:23:00 1357

原创 Java中的byte

最近因为在做金融项目,里面对byte的操作要求比较多,所以在这里整理了一下关于Java中的byte类型。Java虚拟机中没有byte类型恩。。。怎么说呢,个人感觉这个说法有点儿唬人的意思。的确,当这个想法刚刚出现在我的脑海中的时候我觉得也有些胡扯,毕竟byte类型就在那里,怎么能说Java虚拟机中没有byte类型呢?好吧,我来稍稍的解释一下。Java虚拟机对基本类型的操作基本都是在栈上

2010-05-11 15:31:00 37901 13

原创 Learning Closure:学习闭包

 先让我回忆一下第一次见到这个词时的情景:那是在2006年的某天,当时一个朋友像打了鸡血一样兴奋的给我推荐了一个5句话就可以创建一个网站的框架——Rails,看完演示后我也像打了鸡血一样兴奋的瞟了一眼这个框架背后的语言——Ruby。从此,我知道了一个让我感到陌生、高深甚至深不可测到可以装B的词,这就是闭包。让我惭愧的是,我真的是时常拿这个词出去装B,但是却长时间不知道它的真正含义。甚至一度觉得

2010-05-11 15:25:00 1515 1

翻译 用8种有趣的技巧来检查项目的运行情况

该文章是从乔梁的一篇博文链接到原文的,看了之后觉得这些小技巧确实有用,所以把我看到的意思写出来并且将原文转载过来。 我的理解:在上周伦敦举行的Embedding Agile Methods小型讨论会上,Keith Richards提出了一些有趣的小技巧来检查项目的运行情况:是否团队中的每一个人都能够用粗的画图笔(flip-chart marker)在一张便签纸上写下项目的目标?

2009-12-30 09:15:00 1071

转载 计算机补码和模的概念

名词解释:补码:1 在计算机系统中,数值一律有补码来表示(存储). 使用补码,可以将符号位和其他位统一处理;同时,减法也可按加法来处理.另外,两个用补码表示的数据相加时候,如果最高位(符号位)有进位,则进违被舍弃.         2 补码与原码的转换过程几乎是相同的                              数值的补码表示也分两种情况:              

2009-09-09 07:50:00 6359 2

转载 【转】Java的内存泄露

Java 的一个重要优点就是通过垃圾收集器(Garbage Collection,GC)自动管理内存的回收,程序员不需要通过调用函数来释放内存。因此,很多程序员认为Java不存在内存泄漏问题,或者认为即使有内存泄漏也不是程序的责任,而是GC或JVM的问题。其实,这种想法是不正确的,因为Java也存在内存泄露,但它的表现与C++不同。随着越来越多的服务器程序采用Java技术,例如JSP,

2009-03-22 16:46:00 1002

原创 java.util.ArrayList

<!-- @page { size: 21cm 29.7cm; margin: 2cm } TD P { margin-bottom: 0cm } P { margin-bottom: 0.21cm }-->java.util.ArrayList.java: 疑问:transient在这里类中发现了以前没有见过的transient关键字。这个关键字

2008-01-07 17:30:00 2762

原创 什么是持续集成(CI)

持续集成(CI)是一种实践,可以让团队在持续的基础 上收到反馈并进行改进,不必等到开发周期后期才寻找和修复缺陷。诸如 CruiseControl 之类的检查工具是在后台运行的,它们轮询版本控制存储库,从中寻找更改之处。当发现某一更改时,这类工具就会通过 Ant 执行预定义的构建脚本。持续检查借助持续集成的实践得以改进。 参考的资料:Martin Fowler——Continuous Int

2007-12-19 09:21:00 4783

原创 Linux 下apache 2.2.6和Tomcat 6.0 整合

<!-- @page { size: 21cm 29.7cm; margin: 2cm } P { margin-bottom: 0.21cm }-->Linux 下apache 2.2.6和Tomcat 6.0 整合:1、下载和安装apache和Tomcat并且安装(在Linux下,apache的默认安装目录在/usr/local/apache2下);

2007-12-05 14:02:00 2876 1

原创 Ubuntu7.10安装Antivir和dazuko纪实

自己的系统是Ubuntu7.10,Linux内核版本为2.6.22-14,安装Dazuku和Antivir,在网上google了n久发现安装的教程都是过去式了,所以在这里简要的说一下自己的安装过程,供大家参考: 1、到www.dazuku.org上下载最新的dazuko包,最新为2.3.4。不要下载deb了,在我安装的时候还没有2.3.4的deb;到antivir上去下载最新的For Linux

2007-11-30 10:55:00 2263 1

原创 安装ruby-debug-base是mkmf(LoadError)问题的解决办法

当我们在基于Debian的系统上安装ruby-debug-base的时候,有时候会遇到一下错误:Building native extensions.  This could take a while...ERROR:  While executing gem ... (Gem::Installer::ExtensionBuildError)    ERROR: Failed to build g

2007-11-21 15:20:00 1796

Ruby语言规范

中文 pdf格式。<br><br>*坚决支持免费共享

2007-10-08

HIbernate中文开发手册

Hibernate的中文开发手册,有入门和对框架详细的介绍。可以深入学习一下。pdf中文格式<br><br>*坚决支持免费共享

2007-09-26

Hibernate开发指南

Hibernate开发指南中文pdf,刚学hibernate的可以下来参考。<br><br>*坚决支持免费共享

2007-09-26

Spring2 开发参考手册

Spring2开发参考手册 中文chm格式<br>另有pdf格式<br><br>*坚决支持免费共享

2007-09-26

Spring2 开发参考手册

Spring2的开发参考手册,中文pdf格式。<br>另有chm格式,需要的可以自己寻找。<br><br>*坚决支持免费共享

2007-09-26

Rails Recipes

Rails Recipes,英文版的pdf,英文不好的可以不下。可以提高rails的应用能力!<br><br><br>*坚决支持免费共享

2007-09-19

css学习手册

css学习用,入门推荐<br/><br/>*坚决支持免费共享

2007-04-19

Ruby中文教程(带源码)

中文版。很好的学习Ruby的资料!<br/><br/>*坚决支持免费共享

2007-04-19

空空如也

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

TA关注的人

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