自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

华仔-技术博客

前阿里P9,《编程的逻辑》《从零开始学架构》《大厂晋升指南》《架构实战营》

  • 博客(152)
  • 资源 (11)
  • 收藏
  • 关注

原创 软件设计漫谈之三:30分钟掌握面向对象类的设计原则

30分钟掌握面向对象类的设计原则看过设计模式的人不少,但看过Martin的面向对象的设计原则的估计不多(详情可参考《敏捷软件开发:原则、模式与实践》)。实际上这两者是相辅相成的:设计模式是具体的实践方法,而设计原则是指导思想;设计模式让你知道How,而设计原则让你知道Why。《敏捷软件开发:原则、模式与实践》原著洋洋洒洒几十万言,介绍

2009-12-30 13:04:00 6143 5

原创 软件设计漫谈之二:设计模式只是一把锤子!

              设计模式只是一把锤子!    谈起设计模式,那是几乎无人不知,无人不晓,大名鼎鼎的“GOF”(中文有的翻译为“四人帮”)惊世之作,真是“平生不识GOF,学尽设计也枉然!”    然而,设计模式真的是软件设计的“瑞士军刀”,切、削、锯、钻样样精通么?    读过设计模式的朋友估计不少,但真正注意过《设计模式》的副标题的估计很少,而这个副标题却是避免误解设计模式

2009-12-28 11:22:00 3705 3

原创 软件设计漫谈之一:什么是软件设计?

              软件设计漫谈之一:什么是软件设计?“哇,设计!”每当说起这个词,你的脑海里是否很快闪出“天才”、“灵感”、“创意”。。。。。。等词汇,同时闪现出一些戴着又大又圆的黑边眼镜,一边踱来踱去,忽而又两眼一亮,大叫一声“I got it”的设计师形象?甚至想起了达芬奇、米开朗琪罗等艺术家?如果是这样的话,有两个消息要告诉你:坏消息是你理解错了,好消息是本文对你有帮助

2009-12-25 11:19:00 4886 2

原创 需求分析的故事——如何练就需求分析的火眼金晴?

             需求分析的故事——如何练就需求分析的火眼金晴? 话说小P刚刚加入到一个项目组里面,项目经理安排他做需求分析,小P一听需求分析就有点不乐意,心里嘀咕:“需求有什么分析的啊?客户要什么给什么呗,简直是浪费我这个人才!”虽然不乐意,但毕竟工作还是要做,很快小P接到了的第一个需求,客户打电话来说“我要一只羊”,小P一听就觉得太简单了,简单的写了一下需求“XXX客户

2009-11-14 18:37:00 5835 6

原创 象牙塔里学不到的东西——如何做好工作?

                  象牙塔里学不到的东西——如何做好工作? 每年的9月份,快毕业的学生就开始忙碌起来,揣着或厚或薄的简历,穿着新买来的衣服,满怀着希望和梦想,投出去一份又一份的简历,然后忐忑不安的等待着那期望中的电话铃响起。当好不容易过五关斩六将终于得到Offer后,那种自豪感、自信感、以及对美好未来的憧憬,简直要让人幸福得要晕!终于来到了朝思暮想的公司,开始了自己的职

2009-11-09 21:39:00 3668

翻译 多核时代:并行程序设计探讨(10)——任务分组模式Group Task Pattern

                                                    任务分组模式Group Task Pattern1.1        问题一个问题的多个任务如何聚集成一组,以简化依赖关系的管理?1.2        上下文当任务和数据分解完成后,就可以应用此模式了。任务分组模式描述了分析任务之间的依赖关系的第一步。在任务分解的过程中,我们

2009-11-01 12:44:00 2046

翻译 Oracle数据安全解决方案(3)——Oracle Audit Vault

 原文地址:http://www.oracle.com/technology/products/audit-vault/pdf/bwp_security_audit_vault.pdf                                          Oracle Audit Vault企业安全挑战满足合规性的规章制度,以及降低安全危害的风险,是现在安全方面面临的T

2009-10-23 23:12:00 5847

翻译 Oracle数据安全解决方案(2)——Oracle Database Vault

原文地址:http://download.oracle.com/docs/cd/B28359_01/server.111/b31222/dvintro.htmOracle Database Vault本篇包含如下内容:·         什么是Oracle Database Vault?·         Oracle Database Vault组成部分·         O

2009-10-11 20:22:00 6622 1

翻译 Oracle数据安全解决方案(1)——透明数据加密TDE

原文地址:http://www.oracle.com/technology/oramag/oracle/05-sep/o55security.htmlTECHNOLOGY: Security  透明数据加密TDEBy Arup Nanda 不写一行代码,透明的加密敏感数据!    这可能是你的公司最恐怖的噩梦:有人偷走了数据库的备份磁带!当然,你可能

2009-09-23 22:49:00 9104

翻译 多核时代:并行程序设计探讨(9)——数据分解模式Data Decomposition

                                                   Data Decomposition1.1        问题如何将待解决的问题的数据分解为能够并行运行的数据单元(units)?1.2        上下文并行算法的设计者必须首先详细了解待解决的问题,除此之外,还必须识别如下几个关键因素:1)计算强相关的部分:待解决问题中的

2009-09-20 20:34:00 2800

翻译 多核时代:并行程序设计探讨(8)——任务分解模式Task Decomposition

                                                              Task Decomposition从本章开始我们就正式来介绍每个模式了,参考设计模式的做法,每个模式我们都按照如下的内容进行介绍:问题(Problem)、上下文(context)、考虑因素(Forces)、解决方法(Solutions)。至于样例,就请各位看官直接看原文

2009-09-14 21:58:00 3020

原创 多核时代:并行程序设计探讨(7)——并行编程模式概览

                                          并行编程模式概览前面的5、6篇博文,都是和并行编程相关的基础知识,如果你一路看来,基本上也能够开始进行并行编程设计了,也可以和别人吹吹牛、聊聊天了。但“欲穷千里目,更上一层楼”,前面的毕竟都是基础知识,拿来直接设计,虽然能够完成任务,但就像在茫茫大海中航行,没有灯塔,难免会走很多弯路、甚至绝路!所以我们

2009-09-08 20:25:00 3782 1

原创 多核时代:并行程序设计探讨(6)——多机协作(又叫分布式处理)

                                  多机协作(又叫分布式处理)嗯,费了九牛二虎之力,终于将Windows和Linux对比完了。你是否准备伸个懒腰,喝杯热咖啡,听点音乐来放松一下呢?别急,革命尚未成功,同志还需努力,铁还得趁热打。还记得第二篇博文里面总结的两种并行实现技术没有?一个是“多进程多线程”,另一个是“多机协作”,到目前为止我们基本上只把“多进程多线程

2009-08-17 23:26:00 3610 2

原创 多核时代:并行程序设计探讨(5)——Windows和Linux对决(进程间同步)

Windows和Linux对决(线程间同步)1.1        Windows线程同步1.1.1   关键代码区Critical Section所谓“关键代码区”,相信大家看名字也能理解个大概了。首先:它很关键,第二:它是代码区。之所以关键,当然目的就是每次只能一个线程能够进入;既然是代码区,那就是只能在一组拥有同样代码的线程中用。那什么情况下会用到关键代码区呢?当然是要保护多个

2009-08-08 23:31:00 4795 1

原创 多核时代:并行程序设计探讨(4)——Windows和Linux对决(进程间通信)

                             进程间通信多进程和多线程本质上就是将原来一个进程或者线程处理的任务分给了多个进程或者线程,也可以说是将原来一个CPU处理的任务分给了多个CPU处理,类似于随着生产力的发展,原来一个人包打天下的个人英雄主义时代被分工合作的团队取代一样。既然是一个团队,就必然涉及到分工合作问题,并行程序的设计本质上就是解决“分工”和“合作”的问题。其中

2009-08-04 20:47:00 6839 3

原创 多核时代:并行程序设计探讨(3)——Windows和Linux对决(多进程多线程)

并行程序设计探讨(3)——Windows和Linux对决(多进程多线程)前面的博文经过分析总结,最后得出两种并行技术:多进程多线程、多机协作。对于多进程和多线程来说,最有代表性且最常见的的莫过于Windows和Linux(作为UNIX类操作系统的代表,下同)这两个操作系统了。真是冤家路窄,Windows和Linux这对冤家在这里又碰面了!!当然,我这里不是要挑起Windows和Linu

2009-07-11 11:49:00 7904

原创 多核时代:并行程序设计探讨(2)——并行实现技术

并行程序设计探讨(2)——并行实现技术通过“并行程序设计探讨(1)”的介绍,相信大家都已经对并行系统相关的概念有了初步的了解。不过看起来挺吓人的,一堆的术语和概念,想起来头就有点大!!幸运的是真正需要进行并行程序设计的系统其实不多,我们来看看:SISD:本质上决定了不可能是并行的;SIMD:专有系统,相信绝大部分人都没有接触过;MISD:没有这样的系统;MIMD:本质上就是

2009-06-30 23:02:00 3253 2

原创 多核时代:并行程序设计探讨(1)——并行系统

 并行程序设计探讨(1)——并行系统大家可能会有疑问:你一会儿并行,一会儿多核,到底是谁跟谁啊?我开始也有这个疑问,甚至以为并行就是多核,其实两个并不能对等,一句话就是:多核是并行的一种。并行本身是一个广泛的概念,其实早在多核之前并行处理就已经存在N久了,大家想想看:IBM、SUN、HP的小型机,哪个不是多CPU的?甚至连DELL的工作站,都是两CPU的,更不用说那些中型机、大型机

2009-06-24 23:07:00 4388

原创 技海无涯:正则表达式相关的知识和技术(4)——自动机(完结篇)

自动机自动机,顾名思义,就是能够自动完成事情的“机器”。但是为什么要用自动机,什么又叫“自动”呢?我们看看普通的处理方式,简单的就是if了,例如:判断某字符串是否是“Hello,Word”,我们都会这么写:if(str == “Hello,Word”)普通的比较可以满足大部分的场景,但对于正则表达式这种比较的话,普通的if就完全不能满足了,例如a*b|c,可以是如下字符串:ab

2009-06-12 23:57:00 2336 1

原创 技海无涯:正则表达式相关的知识和技术(3)——编程技巧:堆栈的本质探讨

编程技巧——堆栈的本质探讨如果我要说本章的编程技巧就是为了介绍堆栈的使用技巧,你可能会笑掉大牙:哈哈,堆栈,这不是小儿科吗?!!是的,每个编程的人都知道的堆栈,而且说起堆栈,大家肯定会马上想到“后进先出(LIFO)”,这是教科书关于堆栈本质的解释。没错,堆栈的本质是LIFO,但绝不是简单的先进后出就完了,结合各种各样的压栈出栈操作,堆栈可以实现很强大的功能。下面就以正则表达式涉及的两个

2009-06-02 23:08:00 2443

原创 技海无涯:正则表达式相关的知识和技术(2)——算法

  转换算法为了让正则表达式最终能够被机器识别,并且能够用其来匹配目标字符串,必须首先将正则表达式转换为NFA或者DFA(后面介绍)两种等价的自动机,一般的转换过程如下:正则表达式—①—>NFA—②—>DFA。当然也可以直接这样转换,当然这个算法复杂度更高:正则表达式—③—>DFA。上面的每个过程对应一个算法,下面我们分别简单的介绍三种算法。 ①正则表达式——>

2009-05-24 20:14:00 2312

原创 技海无涯:正则表达式相关的知识和技术(1)——表达式

正则表达式,看似简单,实则博大精深。简简单单几个字符:|、*、(、)……却能够演绎出无穷无尽的变化。初看正则表达式,其实就是一串子字符串,但隐藏在这字符串背后的各种各样的知识、技能、技巧,却一点也不简单。以前在学习《编译原理(龙书)》的时候,也是一目十行的将其跳过,这次偶尔需要用到正则表达式,然后自己就上网搜了搜,结果发现水不是一般的深,耗费了3个晚上的时间搜索、查阅,才稍微理清了这些相关知识

2009-05-19 22:11:00 2761 3

原创 PMP:“拍好马屁”,改变人生! (1)

PMP:“拍好马屁”,改变人生:)PMP?拍马屁的缩写!?当然不是了,全称是Project Management Professional(详细内容可参考“zengjibing的文章”http://blog.csdn.net/zengjibing/archive/2009/02/13/3888892.aspx),是一个项目管理认证的考试,2008排名IT热门认证第4名。但是为什

2009-04-28 20:36:00 3097

原创 不要重复发明轮子:C++重用的5重境界(5)——消息通信(完结篇)

 第五重境界:消息通信话说当年明教教主在连乾坤大挪移的时候,实际上并没有所谓的第7重,这第7重只是创始人凭借着自己的聪明才智想出来的,根本无法证实是否正确,幸好张无忌没有练才躲过一劫。其实我们这里的所谓第5重也是我凭空想出来的:)大家接下来也可以看到,这一重境界其实和C++或者DLL完全没有关系,但这一重境界绝对不是凭空乱想,而且也绝对不是无法证实的,这一重境界是每个IT人都知道的,也

2009-04-25 20:57:00 2681 3

原创 不要重复发明轮子:C++重用的5重境界(4)——继承接口DLL

第四重境界:继承接口DLL看起来“代理接口DLL”已经能够很好的完成任务了,但追求完美的你是否总觉得有的地方不够优美呢?关键就在于这部分:InterfaceClass:: Function1(int param1, char param2 ){    return m_pRealizeClass-> Function1(param1, param2 );}以上这段代码是代理

2009-04-19 20:14:00 2689 1

原创 不要重复发明轮子:C++重用的5重境界(3)——代理接口DLL

第三重境界:代理接口DLL看到这个名字,可能大家有点迷糊:代理?接口?DLL?三个风马牛不相及的东东扯到一块是什么意思呢?其实只要按照字面意思就能够大概理解:代理:就是设计模式中的代理模式;接口:就是Java中的Interface一个概念;DLL:就是动态链接库了:)翻译成一句完整的话就是:DLL通过代理模式对外提供接口。 下面我们看看这个“代理接口DLL”是如何实

2009-04-12 21:13:00 2762 3

原创 不要重复发明轮子:C++重用的5重境界(2)——简单DLL

 第二重境界:简单DLL稍有经验的人都知道,要解决代码重用的问题其实已经有简单的方法了,那就是动态链接库(Windows平台是DLL,Linux/UNIX是so,下面以DLL为例说明)。简单的DLL实现如下:将对象、方法的定义放在DLL里面,使用时只需要包含DLL的头文件即可。这样简单的一个设计,就能够解决代码重用的一个大问题:一份DLL只占一份磁盘空间、一份内存空间。但为什么

2009-04-12 21:11:00 2471

原创 不要重复发明轮子:C++重用的5重境界(1)——代码重用

软件领域有一个著名的描述软件重用的谚语:不要重复发明轮子!这个道理是很简单,也很明白的,谁都不想重复无用的劳动,但具体实践中我们该如何避免重复发明轮子呢?各位注意了,谚语中是说“重复发明”,不是说“重复使用”,也就是说我们实践中其实也是避免不了重复使用轮子的,因此实践中我们的对策也可以用一句简单的语句表达:发明能够重复使用的轮子!下面我们就以C++语言为例,看看究竟如何“发明重复使用的

2009-04-12 21:08:00 3209

原创 数据库范式:掀起你的盖头来(3)

3                 范式的两面:天使与魔鬼有人说:掌握了数据库范式你就是数据库设计高手了!!呵呵,成为高手看来也很简单的啊:)但此话对了一半,掌握数据库范式可以算一般高手,因为毕竟能够掌握范式并应用的人不算很多;但算不上高高手,为什么呢?因为范式不是万能的,也有自己的适应范围和局限性,如果到处不加原则和场合的使用,它很可能就是一个带给你梦魇的魔鬼!首先我们看看数据库范式

2009-03-28 23:03:00 2699 1

原创 数据库范式:掀起你的盖头来(2)

 2.2                             第二范式2NF2NF可以如下描述:不存在属于部分主键的属性。什么情况下会出现属于部分主键的属性呢?这个没有通用的原则,我们只能举一个例子来说明。例如:成绩表Score主键是StudentID和CourseID,另外还有两个属性:一个是成绩Grade,一个是StudentName。这里的Grade就是完全由两个主键决定

2009-03-27 21:45:00 2210

原创 数据库范式:掀起你的盖头来(1)

1                 介绍凡是做过数据库设计的,只要不是大菜鸟,听到范式两个字,马上就会在脑海中浮现1NF,2NF,3NF,BCNF这些术语,但是若要大家详细的将这几个东东的专业定义描述出来。。。。。。呵呵,至少大部分人都会晕的,什么功能依赖、函数依赖,~!@#¥%……&*,my god!反正我是记不住:) 但既然上了IT这条贼船,就无法避免和数据库设计打交道,丑媳妇总是

2009-03-27 20:16:00 2980

原创 Digester:一个通用xml引擎的设计剖析

   一:Digester介绍   Digester是Jakarta 子项目Commons下的一个模块,支持基于规则的对任意XML文档的处理。它最初是Structs项目的一部分,后因其通用性而划归Commons.   本文不是描述Digester如何使用,而是深入分析Digester的源码,对其设计进行分析,从而从中学到设计方法和一些设计理念,正所谓“授人鱼,不如授人以渔”。 

2009-03-22 18:47:00 3074

十年磨一剑之架构设计

浓缩10年工作经历精华,结合电信领域和互联网领域的经验,剥去架构设计高大上的神秘外衣,提炼架构设计的终极大法,菜鸟也能做架构设计。 主要内容包括:什么是架构设计、架构设计的终极大法、架构设计的基本原则、如何提升架构设计能力

2014-12-24

零缺陷”开发技巧

零缺陷开发技巧,简单易懂,一学即会,一用就有效果,让你写10K代码只有1个bug的方法

2014-12-24

TCP头信息详解(英文版 pdf)

详细介绍来的TCP头相关的信息,例如mss、sack、win等字段是什么含义,从英文网站上下载的,转换为pdf了,如果要看原文,直接点击pdf上的链接即可

2013-12-13

spring_in_action中文第二版(高清完整书签版).part2

spring_in_action中文第二版(高清完整书签版) 第二部分,手工添加和校正了所有书签。 CSDN上传限制,拆分为2个包

2013-11-05

apache-ant-1.7.1-src

Apache ant的源码,用于给有需要的同学用。

2009-03-21

设计模式精解 Design_Patterns_Explained

本文详细解释了设计模式隐含的思想,GOF的书只讲解了有哪些模式,而本文解释了“为什么”要用这些设计模式,对于理解GOF的设计模式有非常大的帮助,让你从死记硬背GOF模式中解脱出来,从而能够灵活的应用到实际工作中去

2009-03-11

软件架构设计艺术:方法和技术

描述了架构设计要考虑的内容、方法、技术,适合于系统设计师,架构师

2009-03-11

Linux指令详解——详细介绍了每条Linux操作系统的命令

Linux命令描述,详细介绍了每条Linux操作系统的命令,避免大家去读英文的man手册

2009-01-11

空空如也

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

TA关注的人

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