K氏读书杂感——Java

卫衣 / 双肩包 / T 恤/羽绒服等任选,下单送 CSDN 年卡 程序员周边任选一款实物,直接赠送 CSDN 会员年卡+ Coding Plan,写代码学习装备一起拿下 立即抢购

[声明]:本文由kingofark创作。本文中的所有内容仅代表kingofark个人的观点,与任何其他个人或团体无关。任何人或团体都可以复制、传播本文,但需附上完整的本声明。kingofark对于不同意上述各点或不履行上述各要求的人或团体的言行不负任何责任。特此声明。

 

 

K氏读书杂感——Java

 

 

[kingofark的话]:是的,五评计划写不下去了……因为来不及看那么多书…… :-p  所以就退化成了有时间便随便说说罢。猛然间非常无厘头的想到“××营养米粉”,所以将文章谓之“K氏读书杂感”。

“推荐度”显示了kingofark个人对书的看法,范围在010之间,10即是指kingofark觉得极好(虽然并非就肯定时完美),0指的什么就不用累述了(虽然并非就肯定是渣滓)。“推荐度”免不了会带有个人偏执情绪,所以请您不要大以为然。

 

[]:《Java编程思想 2版》影印版,Bruce Eckel著,机械工业出版社

 

[推荐度]10

[推荐理由]

 

Thinking In Java》这样的书,Bruce Eckel这个人,似乎没有必要介绍了。机械工业出版社的经典原版书库是笔者最为期待的图书系列之一,《Java编程思想 2版》影印版自然是我必买的书籍。有侧重点的通读之后,给我印象深的大约有三……噢,不,是四处:inner classesswingJNI以及书的装帧质量。

 

其一:作者用了近30页介绍了(唔,这还能算是介绍吗?)inner classes,其之各种用法与变形被全全展现了出来。

 

其二:庞大的swing被挑出最重点的若干个介绍出来,感觉非常清晰,全没有查看api documentation时候的庞杂感。

 

其三:对JNI的介绍简短精悍、非常有用。如果你有兴趣查看j2sdk源代码的话(比如collections),会发现一到“敏感”的地方,就使用了JNI。对于一个学习Java的人来说,JNI是一个未必常用但必须知晓的技术。笔者曾饶有兴趣的在j2sdk源代码中翻了翻,看看哪些地方用了JNI

 

其四:通过阅读这本书,笔者更加透彻的理解了“熵” 的原理,坚定了“The Truth Is Out There”的信念。被平平摊开在桌子上(注意,没有对其施加任何压力,只是让其自然摊开——当时笔者在看第471页)的这本《Java编程思想 2版》影印版,首先在24小时之内自行进化成为“0-470页”和“471-末页”上下两册;笔者试图对其进行粘和,可是其在粘和后1小时之内继续分册,分册数呈线性增长趋势;就此以后,企图粘和这些实体的任何试验均以失败告终。所以kingofark的结论是“你观察它,它就变复杂了”(这也算X档案吧!?莫特探员救我!)。

 

该书的练习中,时常会看到作者提出诸如prove这样的要求。笔者认为,作为练习的解答者和初学者,不仅要show,还要prove,所以除了编出代码显示出运行结果,不妨由此自己多做些引申。你不仅可以用javap查看被disassemble出来的code,还可以用java –verbose查看详细的运行情况,也可以用jdb细细了解运行的实时状况。心里很有底的prove,正说明了你对java背后机制的掌握——这不是开始深入进去了吗?

 

另外,笔者感觉该书中的许多范例程序都是相当好的,非常值得细细体会和把握。

 

……哦,英文不行?那就让我们一起期待侯捷先生译的《Thinking In Java 2/e中文版》吧J

 

 

[]:《Java高效编程指南》,Joshua Bloch 著,闻山 等译,机械工业出版社

 

[推荐度]0

[推荐理由]

 

译文行文不流畅(但绝非国内最差,甚至都算“还可以”),许多句子虽然说并不是完全不能理解,但却要耗费些许时间去分析和猜测句子结构——就国语水平从小学就很差的笔者而言,还不如直接看原版英文来得快。

 

译文中出现的翻译谬误不能说不严重,仅就目录中的标题而言:

 

Item24:Make defensive copies when needed”(kingofark译:在需要的时候实施保护性拷贝)

被译为:

6.2 使用保护性拷贝”

 

Item32:Avoid strings where other types are more appropriate”(kingofark译:当使用其它型别更为恰当的时候,就避免使用strings

被译为:

7.4 尽量避免使用串”

 

原作者Joshua Bloch特别在前言里面提到,该书按照《Effective C++》格式给出一条条原则,其原版英文书也确实是这么做的,使用了“Item: …”的方式在标题中给出了这些原则。

 

大家看出在简体中译本里面的问题了吗?

 

假如有一本《kingofark高效生活指南》,里面提到

Don’t wee-wee in public(不要在公共场合当众撒尿)”,

译为“不要撒尿”

可不可以呢?

 

如果有人憋尿得了尿毒症,岂不是要找kingofark扯皮?

 

如果有人教你“不要撒尿”,你听不听呢?……反正kingofark是不敢听信的。

 

如果有一本教你“不要撒尿”的生活指南,你看不看呢?……反正kingofark是不敢看的。

 

高效?搞笑?!指南?灾难?!

 

最后想告诉那些愿意看书的人:笔者通过在google上搜索,下载到了该书原文的第3567pdf——还是蛮多的嘛J

 

 

[]:《Java程序调试实用手册 第二版》,Will David Mitchell 著,裘岚 译,电子工业出版社

 

[推荐度]9

[推荐理由]

 

那天,笔者刚刚在书店看到本书的第一版,想来想去还是决定买一本,万没想到下次来买的时候,标明“第二版”的书都出来了——奇怪的是,从该书的说明页(就是声明版权、标价的那一页)看来,仍然是原版第一版。

 

笔者没有通读该书,但感觉全文风趣轻松、译文较为流畅(有些地方比较不顺),行文叙事之中体现出作者丰富的经验和独到的见解——这是一个好征兆。在技术层面上,笔者也还没有找到什么“马脚”。该书的内容可谓丰富:漏洞的发现、防止与清除,debugger的使用、测试、错误信息,以及丰富有用的附录。光从涉及的内容来看,笔者认为这正是一本java程序员应该学习的东西。

 

令笔者印象深刻的是第7章“心理训练”、第1212.6节“错误信息的内容”、附录C“计算机编程的24条法规”,以及附录EWord宏”。

 

[7章“心理训练”]

正文简单的谈到写注释、起名称以及个别独立的问题(7.2 不要混合使用深度搜索和广度搜索),让人觉得题不符实。倒是7.4节“环境”着实让笔者忍俊不禁。7.4节中,作者指出“调试时所处的环境非常重要”,给出了9条“帮助你改善身边的环境”的意见:

 

(第4条)“关闭计算机屏幕上的电子邮件提示。……”

 

(第5条)“如果接受一封巨大的电子邮件,请别人替你完成这件事”

 

(第7条)“找一个可以上升和降至一半的旗杆及一面旗帜,在旗帜上写下:‘降半旗时请不要打扰我。’人们会尊重你的决定。”

 

这些似乎有些偏执、自私甚至搞笑的意见,乍看上去,或许只得你一笑一恶;然而笔者认为,作者很形象的说明了“自己营造好的工作环境”的重要性,

 

于国内,这些条目大有借鉴学习之处——观之国内情势,全天工作打开QQ与无关人员聊天者,大有人在;心浮气燥,整天收信者,大有人在。其实说来说去,还是那句话,好的习惯和端正的态度重于一切——要不然怎么总是那么多“IT皮包公司”惨淡经营?

 

[1212.6 错误信息的内容]

12.6.1 发生了什么事?

12.6.2 为什么发生

12.6.3 其后将发生什么现象?

12.6.4 现在用户可做什么?

12.6.5 将来用户能做什么?

12.6.6 现在用户从何处可以得到帮助?

12.6.7 用户如何才能帮助开发人员改善情况?

12.6.8 最近在用户的软件中发生过类似问题否?

12.6.9 用户应该如何向技术人员描述问题?

12.6.10 聊天室和帮助室

12.6.11 软件开发人员将为用户提供什么补偿?

 

12.6.112.6.11详细叙述了如何处理面向用户的错误信息,并在12.6.912.6.9.1“为什么不使用FAQ系统?”中独到的提出:

“(为什么不使用FAQ系统?)除了FAQ系统可能使用户感到乏味和不值得这一事实之外,看起来只有半数机会可以找到答案。多数用户都希望向某个谈论问题,原因只有一个,因为这才是讨论。”——不管同不同意作者的观点,笔者都不得不佩服作者对待作为产品的软件细致入微的考虑(作者在12.6.9.2中给出了很有启发性的建议)。

 

软件作为一个产品,其服务是全方位的,你需要为用户考虑周到,这是天经地义的。想到国内,笔者又想发牢骚:人家老外总是做得特好——我们赞叹啦、不服气啦、不以为然啦、瞧不起啦……其实这有什么呢?要我说人家就四个字:认真负责。我们有吗?

 

12.6.12 12.6.18 讲述了开发者遇到错误报告时,在技术方面的应对措施。

12.6.19 “屏幕或者报告中应该显示什么内容”一节精炼的给出:

“消息应该回答用户的如下问题:

l       发生了什么?……(略)

l       接下来发生什么?……(略)”

 

[附录C“计算机编程的24条法规”]

24条或许算不上什么经典之作,有些也是大家熟悉的条款。笔者认为这样的条目多多益善,打印出来贴一张在显眼的地方,绝对不会没有好处。

 

[附录EWord宏”]

这一章给出了Word宏代码,“可以将一个普通的字处理程序变为一个不错的Java编辑器。”或许现在缺乏Java编辑器的人不在多数,但这倒是一个使用宏的上佳示例,还是非常有价值的(尤其你可以借此向朋友展示你这个“搞电脑的人”是如何“神奇的”使用WordJ)。书中给出了关于处理书签和跳转、隐藏的文本、个人注释、绿色的关键字、编程帮助的宏,并提供了可以得到更多宏的网址。

 

推荐度9,笔者未看到更多同类型的书。这本书并不完美,但显得重要、必要。

 

(完)

Visual C++实战进阶:从开发环境配置到Windows核心编程 C++作为高性能系统编程的核心语言,其价值在于对底层硬件的直接控制和高效率执行。在Windows平台上,Visual C++开发环境提供了与操作系统深度集成的工具链,通过Visual Studio IDE和MSVC编译器,开发者能够构建从桌面应用到系统服务的各类程序。其技术价值体现在对Windows API的完整支持、优秀的运行时性能以及对历史代码的兼容性上,这使得它在游戏开发、工业控制、高性能计算等场景中不可替代。在实际工程中,开发者常面临microsoft visual c++ redistributa 阅读详情

相关推荐

VC++医院门诊收费系统优化:异步改造与性能提升实战

在软件工程领域,高性能桌面应用开发一直是关键课题,尤其在对稳定性、实时性要求极高的医疗等行业核心业务系统中。其技术原理通常涉及本地化性能优化、资源管理与并发控制,以确保系统在高负载下的可靠运行。从技术价值看,这类系统往往需要处理大量实时交易,对响应时间和数据一致性有严苛要求,直接关系到业务连续性与用户体验。应用场景广泛存在于金融、医疗、工业控制等领域,例如医院门诊收费、实时交易处理等关键业务环节。本文聚焦于VC++技术栈在医院门诊管理系统中的深度优化,通过异步化改造、数据库查询优化与崩溃调试机制,解决系统卡

weixin_34037515的博客 382

C++生成dump文件

C++ windows工程中 简单生成 dump文件,以便问题定位

vc++ 6.0使用dbghelp.dll生成dmp内存转储文件

vc++ 6.0使用dbghelp.dll生成dmp内存转储文件,包含h、lib和dbghelp.dll文件,仅供参考。

MFC程序生成dmp文件

#include <dbghelp.h> int GenerateMiniDump(PEXCEPTION_POINTERS pExceptionPointers) { // 定义函数指针 typedef BOOL(WINAPI * MiniDumpWriteDumpT)( HANDLE, DWORD, HANDLE, MINIDUMP_TYPE, PMIN...

Think88666的博客 1531

VS中生成及调试Dmp文件

程序在非调试模式下运行的时候对于程序的一些异常往往很难捕获到,导致无法定位到问题的所在,此时如果在程序发生异常的时候能够生成dmp文件,那么对于程序的异常定位将会有很大的帮助,下面介绍一下VS中如何生成dmp文件以及如何通过dmp定位到异常位置。Vs在debug模式下会自动生成pdb文件,但是在release模式下默认是不生成pdb文件的,此时可以通过修改属性来生成。4、设置调试源文件路径,在解决方案上右键-属性-调试源文件。1、把exe、pdb、dmp文件放到同一目录中,2、使用vs打开dmp文件。

阿龙的思考 5868

MFC自动生成dmp文件用以排查exe运行崩溃

/ 从 “DbgHelp.dll” 库中获取 “MiniDumpWriteDump” 函数。//则需要 InitCommonControlsEx()。否则,将无法创建窗口。// 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,// 如果一个运行在 Windows XP 上的应用程序清单指定要。// 将它设置为包括所有要在应用程序中使用的。// 这里做一些异常的过滤或提示。//创建dum文件保存的文件夹。

ficitor的博客 1324

MFC程序RELEASE版本输出DUMP定位在代码行

有时给客户使用Release版本时,会偶尔出现崩溃的问题,这样很不好定位。但通过程序输出的dump文件可以定位到代码。 客户那边出现崩溃时,只需要把.dmp文件拷贝过来,然后放在工程.map和.pdb同级目录,然后用VS打开即可。具体过程如下: 1.在工程属性的release中设置如下,目的是产生DEBUG信息需要的.map和.pdb文件 2.在工程中添加dump.h头文件,...

shejiannan的专栏 1416

MFC dump找bug

原来的网址:http://www.cppblog.com/woaidongmao/archive/2009/10/21/99135.html 前言:利用drwtsn32或NTSD进行程序崩溃处理,都可以生成可用于调试的dmp格式文件。使用VS2005打开生成的DMP文件,能很方便的找出BUG所在位置。本文将讨论以下内容: 1、  程序编译选项 2、  利用VS2005 分析d

725

mfc设置静态库和minidump、restart

静态库 MFC静态库 crt静态库(/MT) /MD动态库 minidump生成 通过SetUnhandledExceptionFilter设置全局异常钩子函数 SetUnhandledExceptionFilter(global_exception); long __stdcall global_exception(_EXCEPTION_POINTERS* excp) { BOOST_...

daoer_sofu的专栏 683

”无法找到所需的资源“——GDI绘图相关——MFC运行异常

这两天用程序时碰到神奇的问题,软件短时间运行OK,但一定时间后(6个小时及以上),界面刷新失败,对软件长时间不处理后,软件自动退出。以前软件因堆内存耗尽退出的都会产生dmp文件,根据这个比较好定位问题。但是此次的软件退出,有时并不会产生dmp文件,有时虽然会有dmp文件,但调用堆栈都停止在系统级DLL调用,和软件本身好像并没有关系,使我也不知道问题到底出在什么地方。 停止的调用堆...

Sudouble的专栏 379

MFC快速参考指南:核心架构、实用技巧与疑难排查

Windows GUI编程是桌面应用开发的基础,其核心在于理解事件驱动模型与窗口消息机制。MFC(Microsoft Foundation Classes)作为对Win32 API的C++面向对象封装,通过文档/视图架构实现了数据与显示的分离,并借助消息映射机制简化了事件处理。这一框架在工业控制、专业软件等遗留系统维护中仍具重要技术价值。对于开发者而言,掌握其核心类(如CWnd、CDC、CString)的使用、理解多线程下的UI更新规则,并能排查常见的编译链接问题,是提升开发效率的关键。本文聚焦MFC快速参

anjichan4261的博客 447

VC++实战KTV点歌系统:MFC+DirectShow+SQLite工业级桌面应用开发

桌面应用开发是软件工程中的重要领域,尤其在需要高性能、高稳定性和深度硬件交互的场景中。其核心原理在于直接调用操作系统原生API,避免中间层带来的性能损耗和不确定性,从而实现对系统资源的精细控制。这种技术价值在实时音视频处理、工业控制等对响应速度和可靠性要求极高的领域尤为突出。应用场景广泛,从多媒体播放器到嵌入式设备控制界面,都依赖于高效的桌面程序架构。本文聚焦于使用VC++与MFC框架,结合DirectShow多媒体框架和SQLite数据库,开发一个高稳定性的KTV点歌系统。该项目涉及UI交互、数据库操作、

dianzongfan5428的博客 448

利用VS2005进行dump文件调试

转自 http://blog.csdn.net/alicehyxx/archive/2009/07/14/4348140.aspx 前言:利用drwtsn32或NTSD进行程序崩溃处理,都可以生成可用于调试的dmp格式文件。使用VS2005打开生成的DMP文件,能很方便的找出BUG所在位置。本文将讨论以下内容:1、  程序编译选项2、  利用VS2005 分析dump文件3

理性的幻想 1162

linux使用反汇编解决程序崩溃,用MFC时,如果程序崩溃,检查内存,然后注意GDI数量,在任务管理器里选项-查看列-GDI数量...

MFC时,如果程序崩溃,检查内存,然后注意GDI数量,在任务管理器里选项-查看列-GDI数量…在为一个音乐播放器增加功能时莫明奇妙的出现程序崩溃,定位到是由于QTableWidget 的setItem方法导致的,最终在此处找到了解决方式. 大致是说不能在setItem之前连接cellChanged 信号,把连接cellChanged信号的语句放置在一连串的setItem(在表格插入一行后调用的)...

weixin_39733232的博客 634

VC++6.0仿360界面POP3邮件监控系统:Win32桌面开发与多线程实战

在Windows桌面应用开发领域,理解底层系统机制是构建稳定高效软件的基础。Win32 API和MFC框架作为微软原生技术栈,直接操作消息循环、窗口过程与GDI绘图,是掌握Windows GUI编程核心原理的关键。通过多线程编程,可以实现后台任务与用户界面的高效协同,避免界面卡顿,提升应用响应性。这些技术在现代桌面软件开发中,尤其在需要精细UI定制和高性能要求的场景下,依然具有重要价值。本文以POP3邮件监控系统为例,深入解析了如何使用VC++6.0实现一个功能完整的本地邮件客户端,其中涉及仿360安全卫士

weixin_33721427的博客 400

VC++多路远程监控系统:C/S架构、Xvid编码与自定义网络协议实战

实时音视频传输是流媒体技术的核心应用之一,其原理涉及音视频数据的采集、编码、网络传输、解码与渲染等多个环节。在技术实现上,C/S(客户端-服务器)架构因其连接稳定、控制力强,常被用于对实时性要求高的监控、直播等场景。网络传输层协议的选择尤为关键,TCP保证可靠但延迟高,UDP延迟低但可能丢包,因此混合使用TCP传输控制信令、UDP传输媒体流成为常见方案,以兼顾可靠性与实时性。视频编码则通过压缩算法大幅减少数据量,例如MPEG-4、H.264等,以适配网络带宽。这些技术共同支撑了从安防监控到视频会议等广泛的应

weixin_34293911的博客 393

一个最简单的DUMP分析示例

转自:https://blog.csdn.net/hustd10/article/details/52075324?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase .

狂奔之林的博客 1204
上一篇: kingofark的第2个“五评计划”——五评C++(2)
下一篇: 中文翻译吾见之——门外汉的场合
kingofark
博客等级 码龄26年 330粉丝 134原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值