代码改变世界

09 2011 档案

摘要:http://blog.csdn.net/zdl1016/article/details/1698629原文地址:可变参数。1:必须有一个提前参数,(即:...之前必须要有一个参数),用以计算出后面的第一个未知参数的地址. 知道了第一个未知参数的地址之后, 就可以根据fmt格式化串,可以依次计算出剩余的参数地址.sprintf()的原型:sprintf(char* buffer,const char* fmt, ... ) ,其中,fmt就是提前参数2:每一个可变阐述函数,其编写者与使用者 都要有一个参数的使用约定。不然,会乱套。3:可变函数实现的技术基础1:所有参数,在汇编级别,其大小都是4 阅读全文
posted @ 2011-09-30 14:49 Rollen Holt 阅读(399) 评论(0) 推荐(0)
摘要:各位C、C++开发的朋友们,有没有想过小小的printf也会有陷阱呢?这篇文章,我们就深入来探究一下(代码均在suse10 32位系统下编译测试通过)。废话不多说,直接上代码:12int64_t a = 1;printf("%d\n", a);结果是多少呢?当然是1,你可能会说。我们来看一下结果:1果然是1!但是你会不会以为是 a 首先被自动转化成了 int 类型,然后输入为 1的呢?如果真这么简单,本文到此也该结束了。我们换一个写法:123int64_t a = 1;int b = 2;printf("%d, %d\n", a, b);这次的结果是多少 阅读全文
posted @ 2011-09-30 13:51 Rollen Holt 阅读(414) 评论(0) 推荐(1)
摘要:简介:在基于 Java 语言的编程中,我们经常碰到汉字的处理及显示的问题。一大堆看不懂的乱码肯定不是我们愿意看到的显示效果,怎样才能够让那些汉字正确显示呢?Java语言默认的编码方式是UNICODE,而我们中国人通常使用的文件和数据库都是基于GB2312或者BIG5等方式编码的,怎样才能够恰当地选择汉字编码方式并正确地处理汉字的编码呢?本文将从汉字编码的常识入手,结合Java编程实例,分析以上两个问题并提出解决它们的方案。现在 Java 编程语言已经广泛应用于互联网世界,早在 Sun 公司开发 Java 语言的时候,就已经考虑到对非英文字符的支持了。Sun 公司公布的 Java 运行环境(JR 阅读全文
posted @ 2011-09-27 23:23 Rollen Holt 阅读(614) 评论(0) 推荐(0)
摘要:简介:网上就 JSP/Servlet 中 DBCS 字符编码问题有许多优秀的文章和讨论,本文对它们作一些整理,并结合 IBM WebSphere Application Server3.5(WAS)的解决方法作一些说明,希望它不是多余的。问题的起源每个国家(或区域)都规定了计算机信息交换用的字符编码集,如美国的扩展 ASCII 码 , 中国的 GB2312-80,日本的 JIS 等,作为该国家 / 区域内信息处理的基础,有着统一编码的重要作用。字符编码集按长度分为 SBCS(单字节字符集),DBCS(双字节字符集)两大类。早期的软件(尤其是操作系统),为了解决本地字符信息的计算机处理,出现了各 阅读全文
posted @ 2011-09-27 23:22 Rollen Holt 阅读(371) 评论(0) 推荐(0)
摘要:简介:本文从五个方面对J2EE进行了比较全面的介绍。从J2EE的概念说起,到它的优势,到J2EE典型的四层模型,和它的框架结构,最后是J2EE十三种核心技术的一个简介。本文分门别类的对J2EE中的服务,组件,层次,容器,API都做了比较详细的介绍,相信看完此文,读者会对J2EE有一个更清晰的认识。J2EE的概念目前,Java 2平台有3个版本,它们是适用于小型设备和智能卡的Java 2平台Micro版(Java 2 Platform Micro Edition,J2ME)、适用于桌面系统的Java 2平台标准版(Java 2 Platform Standard Edition,J2SE)、适用 阅读全文
posted @ 2011-09-27 23:08 Rollen Holt 阅读(853) 评论(0) 推荐(1)
摘要:简介:很多算法用尾递归方法表示会显得格外简明。编译器会自动把这种方法转换成循环,以提高程序的性能。但在 Java 语言规范中,并没有要求一定要作这种转换,因此,并不是所有的 Java 虚拟机(JVM)都会做这种转换。这就意味着在 Java 语言中采用尾递归方法将导致巨大的内存占用,而这并不是我们期望的结果。Eric Allen 在本文中阐述了动态编译将会保持语言的语义,而静态编译则通常不会。他说明了为什么这是一个重要问题,并提供了一段代码来帮助判断您的即时(JIT)编译器是否会在保持语言语义的同时做尾递归代码转换。尾递归及其转换相当多的程序包含有循环,这些循环运行的时间占了程序总运行时间的很大 阅读全文
posted @ 2011-09-27 13:04 Rollen Holt 阅读(1738) 评论(0) 推荐(2)
摘要:Brian Goetz(brian@quiotix.com), 首席顾问, Quiotix简介:JDK 5.0 中增加的泛型类型,是 Java 语言中类型安全的一次重要改进。但是,对于初次使用泛型类型的用户来说,泛型的某些方面看起来可能不容易明白,甚至非常奇怪。在本月的“Java 理论和实践”中,Brian Goetz 分析了束缚第一次使用泛型的用户的常见陷阱。您可以通过讨论论坛与作者和其他读者分享您对本文的看法。(也可以单击本文顶端或底端的讨论来访问这个论坛。)表面上看起来,无论语法还是应用的环境(比如容器类),泛型类型(或者泛型)都类似于 C++ 中的模板。但是这种相似性仅限于表面,Jav 阅读全文
posted @ 2011-09-27 12:32 Rollen Holt 阅读(886) 评论(0) 推荐(1)
摘要:Scala结合了面向对象编程与函数编程思想,使用一种能够完全兼容Java、可以运行在Java虚拟机上的、简洁的语法。对于函数编程风格的支持,尤其是对于Lambda表达式的支持,能够有助于减少必须要编写的逻辑无关固定代码,也许让它可以更简单的关注要面对的任务本身,而相对的Java中对Lamdba表达式的支持要到预定于2012年发布的JavaSE8才会实现。本文就是对于Scala介绍。相关厂商内容Flash Builder 4.5高级版试用版免费高速下载QClub(北京站)——《云计算与虚拟化在企业架构中的实施》(10月12日 晚7点)作为第一步,先安装好最新的Scala发布包Typesafe s 阅读全文
posted @ 2011-09-26 23:08 Rollen Holt 阅读(1680) 评论(0) 推荐(1)
摘要:注:本文由敏捷翻译-张秀君编译自Avdi Grimm的博文《Letter to a Young Developer》。如需转载,请参见文后声明。 我收到了很多年轻开发人员写给我的邮件,希望可以提升自己的编程能力。我肯定不是第一个讨论这个话题的人,所以我不确定还可以说出什么新意。然而,我认为,这里还是有几个重要点,非常值得列出:要跟其他开发者一起工作。我们正处在科技史上的黄金时期,这是第一次,身处何地,雇主是谁变得不那么重要。只要你的网络带宽足够,你就可以与身处地球任何位置的另一位开发者搭档共同编写代码。越来越多我认识的资深开发者都在贡献自己的时间分享这样的知识。我朋友Evan Light有.. 阅读全文
posted @ 2011-09-23 09:29 Rollen Holt 阅读(318) 评论(0) 推荐(1)
摘要:简介:本文详细论述如何在 JNI 编程中避免内存泄漏。论述了 JNI 编程中可能引发的明显的内存泄漏。本文的重点是阐述 JNI 编程中潜在的内存泄漏,希望读者通过本文对 Local reference 有更深刻的理解,了解 Local reference 表的存在,区分 Local reference 和局部变量,从而认识到 Local reference 可能引发的 native memory 内存泄漏JNI 编程简介JNI,Java Native Interface,是 native code 的编程接口。JNI 使 Java 代码程序可以与 native code 交互——在 Java 阅读全文
posted @ 2011-09-22 09:47 Rollen Holt 阅读(562) 评论(0) 推荐(0)
摘要:许 令波, Java 工程师, 淘宝网简介:编码问题一直困扰着开发人员,尤其在 Java 中更加明显,因为 Java 是跨平台语言,不同平台之间编码之间的切换较多。本文将向你详细介绍 Java 中编码问题出现的根本原因,你将了解到:Java 中经常遇到的几种编码格式的区别;Java 中经常需要编码的场景;出现中文问题的原因分析;在开发 Java web 程序时可能会存在编码的几个地方,一个 HTTP 请求怎么控制编码格式?如何避免出现中文问题?几种常见的编码格式为什么要编码不知道大家有没有想过一个问题,那就是为什么要编码?我们能不能不编码?要回答这个问题必须要回到计算机是如何表示我们人类能够理 阅读全文
posted @ 2011-09-22 09:45 Rollen Holt 阅读(1053) 评论(3) 推荐(1)
摘要:虽然很少有 Java™ 开发人员能够忽视多线程编程和支持它的 Java 平台库,更少有人有时间深入研究线程。相反地,我们临时学习线程,在需要时向我们的工具箱添加新的技巧和技术。以这种方式构建和运行适当的应用程序是可行的,但是您可以做的不止这些。理解 Java 编译器的线程处理特性和 JVM 将有助于您编写更高效、性能更好的 Java 代码。在这期的5 件事系列中,我将通过同步方法、volatile 变量和原子类介绍多线程编程的一些更隐晦的方面。我的讨论特别关注于这些构建如何与 JVM 和 Java 编译器交互,以及不同的交互如何影响 Java 应用程序的性能。1. 同步方法或同步代码块?您可能 阅读全文
posted @ 2011-09-18 09:15 Rollen Holt 阅读(2622) 评论(0) 推荐(2)
摘要:Jtest 简介Jtest 是 Parasoft 公司推出的一款针对 Java 语言的自动化代码优化和测试工具,它通过自动化实现对 Java 应用程序的单元测试和编码规范校验,从而提高代码的可靠性以及 Java 软件开发团队的开发效率。主要功能静态代码分析:静态代码分析是指不运行源程序,仅通过分析源程序的语法、结构、接口等来检查程序正确性,找出代码隐藏的缺陷之处。Jtest 的静态代码分析功能能够按照其内置的超过 800 条的 Java 编码规范自动检查并纠正这些隐蔽且难以修复的编码错误。同时,还支持用户自定义编码规则,帮助用户预防一些特殊用法的错误。自动化单元测试:Jtest 能自动建立测试 阅读全文
posted @ 2011-09-18 09:10 Rollen Holt 阅读(7784) 评论(0) 推荐(0)
摘要:引言将 Java 对象序列化为二进制文件的 Java 序列化技术是 Java 系列技术中一个较为重要的技术点,在大部分情况下,开发人员只需要了解被序列化的类需要实现 Serializable 接口,使用 ObjectInputStream 和 ObjectOutputStream 进行对象的读写。然而在有些情况下,光知道这些还远远不够,文章列举了笔者遇到的一些真实情境,它们与 Java 序列化相关,通过分析情境出现的原因,使读者轻松牢记 Java 序列化中的一些高级认识。回页首文章结构本文将逐一的介绍几个情境,顺序如下面的列表。序列化 ID 的问题静态变量序列化父类的序列化与 Transien 阅读全文
posted @ 2011-09-18 09:09 Rollen Holt 阅读(427) 评论(0) 推荐(1)
摘要:解决信息超载并简化多任务处理Mik Kersten, Mylyn 项目主管;总裁 & CTO, Tasktop Technologies简介:现在,在 2.0 版中,Mylyn(以前称为 Mylar)通过将任务无缝集成到 Eclipse 中并在工作时自动管理任务上下文,提高了效率。Mylyn 项目主管 Mik Kersten 更新了他撰写的分两部分的 Mylyn 使用指南。第 1 部分介绍 Mylyn 的任务管理功能和它与 Bugzilla 之类的储存库的集成。本文为第 2 部分,解释当在 Eclipse 中处理大型应用程序时,Mylyn 的上下文管理功能如何简化多任务处理以及如何减少 阅读全文
posted @ 2011-09-17 15:03 Rollen Holt 阅读(1140) 评论(0) 推荐(0)
摘要:Mik Kersten, Mylyn 项目主管;总裁 & CTO, Tasktop Technologies简介:现在,在 2.0 版中,Mylyn(以前称为 Mylar)通过将任务无缝集成到 Eclipse 中并在工作时自动管理任务上下文,提高了效率。Mylyn 项目主管 Mik Kersten 更新了他撰写的分两部分的 Mylyn 使用指南,以便包括根据 Mylyn 1.0 的大量用户反馈而作出的改进。第 1 部分介绍 Mylyn 的任务管理功能和它与 Bugzilla、Trac 和 JIRA 等储存库的集成。在第 2 部分,您将了解上下文管理如何简化多任务执行,以及如何减少信息超 阅读全文
posted @ 2011-09-17 15:02 Rollen Holt 阅读(3282) 评论(0) 推荐(1)
摘要:Ctrl+1快速修复(最经典的快捷键,就不用多说了)Ctrl+D:删除当前行Ctrl+Alt+↓复制当前行到下一行(复制增加)Ctrl+Alt+↑复制当前行到上一行(复制增加)Alt+↓当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)Alt+↑当前行和上面一行交互位置(同上)Alt+←前一个编辑的页面Alt+→下一个编辑的页面(当然是针对上面那条来说了)Alt+Enter显示当前选择资源(工程,or文件or文件)的属性Shift+Enter在当前行的下一行插入空行(这时鼠标可以在当前行的任一位置,不一定是最后)Shift+Ctrl+Enter在当前行插入空行(原理同上条)Ctrl 阅读全文
posted @ 2011-09-16 23:59 Rollen Holt 阅读(407) 评论(0) 推荐(1)
摘要:ourceAsStream ()返回的是inputstreamgetResource()返回:URLClass.getResource("") 返回的是当前Class这个类所在包开始的为置Class.getResource("/") 返回的是classpath的位置getClassLoader().getResource("") 返回的是classpath的位置getClassLoader().getResource("/") 错误的!!======================================= 阅读全文
posted @ 2011-09-16 23:58 Rollen Holt 阅读(3158) 评论(0) 推荐(0)
摘要:这是给新手最好的VIM的升级教程了,没有列举所有的命令,只是列举了那些最有用的命令。非常不错。——————————正文开始——————————你想以最快的速度学习人类史上最好的文本编辑器VIM吗?你先得懂得如何在VIM幸存下来,然后一点一点地学习各种戏法。Vimthe Six Billion Dollar editorBetter, Stronger, Faster.学习vim并且其会成为你最后一个使用的文本编辑器。没有比这个更好的文本编辑器了,非常地难学,但是却不可思议地好用。我建议下面这四个步骤:存活感觉良好觉得更好,更强,更快使用VIM的超能力当你走完这篇文章,你会成为一个vim的 su 阅读全文
posted @ 2011-09-16 23:41 Rollen Holt 阅读(312) 评论(0) 推荐(0)
摘要:转自:http://www.blogjava.net/DLevin/archive/2011/09/05/358035.html2.11在ClassFile、method_info、field_info中同时存在的Attribute2.11.1Synthetic AttributeSynthetic Attribute用于指示当前类、接口、方法或字段由编译器生成,而不在源代码中存在(不包含类初始函数和实例初始函数)。相同的功能还有一种方式就是在类、接口、方法或字段的访问权限中设置ACC_SYNTHETIC标记。Synthetic Attribute由JDK1.1中引入,以支持内嵌类和接口(ne 阅读全文
posted @ 2011-09-14 23:18 Rollen Holt 阅读(820) 评论(0) 推荐(0)
摘要:转自:http://www.blogjava.net/DLevin/archive/2011/09/05/358034.html2.9methodsmethods数组记录了类或接口中的所有方法,包括实例方法、静态方法、实例初始化方法和类初始化方法,但不包括父类或父接口中定义的方法。methods数组中每项都是method_info类型值,它描述了方法的详细信息,如名称、描述符、方法中的attribute(如Code Attribute记录了方法的字节码)等。method_infotypedescriptorremarku2access_flags记录方法的访问权限。见2.9.1u2name_i 阅读全文
posted @ 2011-09-14 23:17 Rollen Holt 阅读(5145) 评论(1) 推荐(0)
摘要:转自:http://www.blogjava.net/DLevin/archive/2011/09/05/358033.html小介:去年在读《深入解析JVM》的时候写的,记得当时还想着用自己的代码解析字节码的,最后只完成了一部分。现在都不知道还有没有保留着,貌似Apache有现成的BCEL工程可以做这件事。当时也只是为了学习。这份资料主要参考《深入解析JVM》和《Java虚拟机规范》貌似是1.2版本的,整理出来的。里面包含了一些自己的理解和用实际代码的测试。有兴趣的童鞋可以研究研究。嘿嘿。要有错误也希望能为小弟指点出来,感激不尽。:)1.总体格式Class File formattypede 阅读全文
posted @ 2011-09-14 23:16 Rollen Holt 阅读(4562) 评论(1) 推荐(0)
摘要:转自:http://www.blogjava.net/DLevin/archive/2011/09/05/358032.htmlJava虚拟机体内部系结构包括class文件、类装载子系统、运行时数据区、之行引擎、本地方法调用结构,其中运行时数据区包括方法区、堆、Java栈、程序计数器、本地方法栈等。具体结构如下图所示(摘自Inside Java Virtual Machine):1.class文件在Java中,所有源文件都编译成二进制的字节码,然后由虚拟机装载运行。一般这样的字节码是以class文件的形式存在。在运行时,由ClassLoader类(System ClassLoader or U 阅读全文
posted @ 2011-09-14 23:15 Rollen Holt 阅读(368) 评论(0) 推荐(1)
摘要:转自:http://www.blogjava.net/DLevin/archive/2011/09/13/358498.htmlJava二进制指令代码以以下格式紧凑排列(opcode占一个字节):opcode operand*除了tableswitch和lookupswitch两条指令中间存在填充字节以外,其他指令都没有填充字节,即使在两条指令之间也没有。因而在读取指令的时候,要根据指令的定义读取。通过对上面Java指令集的分析可以知道,Java指令集中很大一部分没有操作数,因而对这部分指令,只需要读取一个字节的操作码,将操作码映射成助记符即可。而对其他带操作数的指令,则需要根据不同类型分析( 阅读全文
posted @ 2011-09-14 23:13 Rollen Holt 阅读(2569) 评论(0) 推荐(0)
摘要:转自:http://www.blogjava.net/DLevin/archive/2011/09/13/358497.htmlJava二进制指令代码解析Java源码在运行之前都要编译成为字节码格式(如.class文件),然后由ClassLoader将字节码载入运行。在字节码文件中,指令代码只是其中的一部分,里面还记录了字节码文件的编译版本、常量池、访问权限、所有成员变量和成员方法等信息(详见Java字节码格式详解)。本文主要简单介绍不同Java指令的功能以及在代码中如何解析二进制指令。Java指令是基于栈的体系结构,大部分的指令默认的操作数在栈中。映像中ARM是基于寄存器的操作指令,而x86 阅读全文
posted @ 2011-09-14 23:12 Rollen Holt 阅读(2323) 评论(0) 推荐(0)
摘要:本文是从Letter to a Young Developer这篇文章翻译而来。我收到了不少新手的来信,他们都希望能成长为一名真正的程序员。我绝对不是第一个谈论这个话题的人,所以,我不知道应该做哪方面的补充。不管怎样,下面的是一些一直记在我心头的、有必要读一下的建议:找其他开发人员合作开发。我们正处在科技历史上第一个绝好的时代,你几乎不用在意在哪工作、为谁工作。只要你有一个还过得去的网络,你就可以和另外一个在世界任何角落里的人一起来完成某段程序。我知道,越来越多的有经验的开发人员开始把他们的一部分时间投入到这种知识共享里。我的朋友Evan Light特地留出了时间来开发一个帮助Ruby爱好者合 阅读全文
posted @ 2011-09-14 22:53 Rollen Holt 阅读(244) 评论(0) 推荐(1)
摘要:转载自:http://hi.baidu.com/colorfulsky_08/blog/item/e335281f7efc20f0e1fe0bd2.html一、Java编程入门类对于没有Java编程经验的程序员要入门,随便读什么入门书籍都一样,这个阶段需要你快速的掌握Java基础语法和基本用法,宗旨就是“囫囵吞枣不求甚解”,先对Java熟悉起来再说。用很短的时间快速过一遍Java语法,连懵带猜多写写代码,要“知其然”。1、《Java编程思想》在有了一定的Java编程经验之后,你需要“知其所以然”了。这个时候《Java编程思想》是一本让你知其所以然的好书,它对于基本的面向对象知识有比较清楚的交待 阅读全文
posted @ 2011-09-14 12:39 Rollen Holt 阅读(680) 评论(1) 推荐(0)
摘要:相信你自己的思想,相信你内心深处所确认的东西众人也会承认——这就是天才。尽管摩西、柏拉图、弥尔顿的语言平易无奇,但他们之成为伟人,其最杰出的贡献乃在于蔑视书本教条,摆脱传统习俗,说出他们自己的,而不是别人的思想。一个人应学会更多地发现和观察自己心灵深处那一闪即过的火花,而不只限于仰观诗人、圣者领空里的光芒。可惜的是,人总不留意自己的思想,不知不觉就把它抛弃了,仅仅因为那是属于他自己的。在天才的著作里,我们认出了那些自己业已放弃的思想,它们显得疏异而庄严。于是,它们为我们拱手接纳——即便伟大的文学作品也没有比这更深刻的教训了。这些失而复得的思想警谕我们:在大众之声与我们相悖时,我们也应遵从自己确 阅读全文
posted @ 2011-09-04 17:25 Rollen Holt 阅读(542) 评论(0) 推荐(1)