`
guanpanpan
  • 浏览: 15946 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论
文章列表
编程从一个角度来说,象是在推土,或者设定个小目标,完成,再设定一个小目标再完成,每一小步都有成功的喜悦。是在做一个类似一小步,一小步创作的东西,每一步有小成果,有它的趣味性和创造性,有每次一个小胜利的喜悦。编程的过程从一个角度来说更象是扫雷,每次一小步,还要保证扫过的地方一定没有雷,有它的谨慎性。   总的来说程序可以分为衔接部分和功能部分。功能程序要要有单元测试来保证。集成测试来保证衔接部分和单元协作的正确性。 面向过程和面向对象和分合的关系:分合角度,面向过程主合A->B->C,面向对象主分分为ABC三对象;组件角度,面向过程和衔接程序相呼应,面向对象和功能程序相对应。面 ...
整体过程   1) 原代码重构成逻辑块清晰的过程化代码 2) 对不同逻辑块进行抽取成服务类 3) 从领域对象的角度分析服务类,通过单一职责来梳理服务类   (二)原代码重构成逻辑块清晰的过程化代码
减少重复学习,在原来掌握的基础上进行提高。质疑驱动,不断对已经掌握的知识进行质疑。   如果能把已经掌握的东西总结成模式,才是真正掌握了。
 制作业引言 如果我们现制造一个汽车,如果我们制造完汽车跑不起来,就得去检查哪里出了问题,这样很麻烦,为了减少麻烦,我们把制造汽车分成一个步骤,1.部件的制造,如发动机,轮胎。2.部件检测3.用经过检测的部件来组装汽车4整车试运行。这样可以大大减少出错的概率。  软件业 对比软件行业,做一个程序,也可以把这个程序分为功能部分和组装功能的部分,我分别称之为功能程序和衔接程序,功能程序要有单元测试来保驾,衔接程序要有集成测试来保驾,整个程序要有验收测试来保驾。  软件自测试程序 如果做完一个程序,可以随时让程序自己告诉我们自己是否是可以正常运行的,无疑是很好的诱惑,这种程序称之为可自测 ...
在京东这一段时间做了很多数据的迁徙,做一些总结。(以sqlserver迁徙至mysql为例) 迁徙的需求:业务数据从sqlserver迁徙至mysql,尽量减少系统停用的时间。 迁徙流程: 中间件接写,开启changelog 原来sqlserver的读取写入统一由中间件接管,保证读写统一。中间件写入时把变更信息记录到changelog表。changelog(主键,变更主键,变更表,变更类型,状态,创建时间,修改时间),状态为0
ultredit *E^+*^p替换行 *result:true$删除以什么结尾的行 \n(\s*\n)+ ,在“替换为”里输入:\n 
(一)需求-开发-测试关系 现公司很多需求在产品提出后,是否完善是个问题,在实际工作中,发现测试测试功能要从开发处问得需求,开发在开发的过程当中要承担很大的需求任务,当然开发确实要思考需求,但这不妨碍产品提出更完善的需求。建议如下: 软件工程中对需求的是否合格的标准是是否可测试 ***需求完成后,测试使用需求文档生成测试用例用于测试,需求文档告诉测试测什么,开发告诉测试怎么测。 ***测试不仅仅是测试程序是否正确,同时也对对需求的完备性进行测试。 注:敏捷开发中开发兼职需求,但需求依然是完备的。
1)根据要解决的问题来设计线程或者类体系,保证带来的复杂性都是因为问题的复杂性而带来(用多线程可带来好处的地才使用),并且要试图从技术上尽量缩减方案的复杂性(比如用JDK5新线程代替原来wait,notify)。(数据迁徙重构有感) 针对代码:要思考多这几个类解决了什么问题,多几个线程又解决了什么问题,深层次的调用又解决了什么问题,如果没有解决什么问题,只是复杂,还是删除掉吧。 2)重构代码要有自动测试护航,哪怕是只有验收测试。 3)写足够少的代码,保证每小步都可执行,可观测,在每次小正确时考虑是否要重构。
1.有异常信息的技术性调试 如果有异常信息,一定要从异常信息出现的原因入手。 例如:java.lang.NoSuchMethodError: org.springframework.util.ObjectUtils.isArray(Ljava/lang/Object;) 解读:肯定找到类了,类里面没有方法。 分析:自己本地没错,服务器上有错,就是在本地能找到方法,在服务器上找不到。也就是说肯定有一个类有此方法,并且还有一个同包的类无此方法,应该是jar包冲突。然后找到包含此类的jar包确认下就可以。 2.结果不对的逻辑性调试
1) 通用方法 一个方法处理多个业务,比如修改用户传入一个用户对象,方法根据邮箱,手机..是否为空来处理修改手机,邮箱等业务 处理方法:每个业务要分开,单一职责 2) 对象内的平行方法 A(a1,a2,a3),a1,a2,a3方法中有相似功能。 IA(a)ßA(a,abstract b)ß
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.sprin ...
利用存储过程执行一批语句 DELIMITER $$   DROP PROCEDURE IF EXISTS `proc1`$$   CREATE  PROCEDURE `proc1`() BEGIN declare i integer; set i=0; while i<=100 do begin set @TABLENAME=CONCAT('update  ','sns_userinfo_ext_',i,' set mobile_flag=1,mail_flag=1;'); PREPARE STMT FROM @TABLENAME;    EXECUTE ST ...
Why:一些加密,hash算经常会用到 示例数 Integer.toBinaryString(-5) 正值:0000 0000 0000 0000 0000 0000 0000 0101 反码:1111 1111 1111 1111 1111 1111 1111 1010  +1:  1111 11
mysql数值范围 TINYINT 1字节 -128~127 0~255 INT          4      21亿  -2147483648~21,4748,3647        默认11 SMALLINT             32768到32767                无符号的范围是0到65535 BIGINT     8      922亿亿  -9223372036854775808~922,3372,0368,5477,5807 默认20  int(3) zerofill 010  只控制显示宽度,不控制存储宽度 UNSIGNED 可修饰无符号型 ...
原始类型空指针 Integer a=null; if(a==0)会抛出空指针 Map隐含添加冲突 Iterator是工作在一个独立的线程中,它会建立一个
Global site tag (gtag.js) - Google Analytics