`
nathan09
  • 浏览: 144697 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论
文章列表
一、并发问题的产生 多线程/进程同时操作(读/写)同一数据 二、并发问题的种类 丢失更新(lost update) 第一类更新丢失(回滚丢失): 当2个事务更新相同的数据源,如果第一个事务被提交,而另外一个事务却被撤销,那 ...
1.软件构建即编程,主要包括编码与调试、详细设计、规划构建、单元测试、集成、集成测试。构建是软件开发的核心活动,主要精力集中之处,产物是源代码。 2.软件的隐喻——建筑 3.三思而后行:前期准备(设计蓝图和建筑许可证在软件业的等价物,包括问题/产品定义、需求分析、架构)——目的:尽早发现并处理问题,识别并降低风险 3.1 前期准备的重要性:类比 在一个被污染了的环境中,水虱在受到核沾染的水中游泳,鲫鱼体内积聚了滴滴涕,而沙丁鱼生活的水域又遭受了石油污染,那么,不幸的海鸥由于处在食物链的最后一环,因此,它吃的不仅仅是沙丁鱼体内的石油,还有鲜鱼体内的滴滴涕和水虱体内的核废料。在程序设计中,如 ...
桥接模式:将抽象部分与它的实现部分分离,使得二者可以独立地变化。(说实话,这个很难理解!!!) 抽象部分:继承关系里的抽象类,一般位于上层,平台无关 实现部分:继承关系里的实现类,一般位于底层,平台相关、实现细节 还是不理解,看实例讲解吧! 比如对一个操作系统来说,平台无关的是高层代码,属于抽象部分,而底层Bootloader、驱动程序则属于实现部分,是平台相关的。这里假设该操作系统具有良好的可移植性,即遵循DIP原则。 图1:可以移植的操作系统模型 对一个操作系统只要遵循这个模型,那么它就具备非常高的移植性。我们来看如何将这个操作系统轻松的移植到不同的硬件平台上去,假设需要移植 ...
代理——控制对主题的访问,有时控制主题的创建,完全代替主题,或者什么都不做,只是简单转发 装饰者——只添加新功能,不做其他控制 从使用者的角度看,代理一般不改变对象行为,装饰肯定会增加对象行为。 代理: 装饰者:
装饰者和被装饰者实现了同一个接口,给被装饰者增加功能。即装饰者和被装饰者一定是在同一继承体系的。 适配器和被适配者不实现同一接口,适配器将被适配者转换成客户适用的接口暴露给客户使用。 装饰者: 适配器:
一、状态模式实现: 1.每个动作一个方法 2.每个状态一个类 二、状态模式和策略模式的区别: 状态模式——状态频繁的发生变化 策略模式——策略在制定后,一般不变 状态: 策略:
今天又复习了一遍命令模式 命令模式是指,将“请求”封装成命令对象。命令对象是通过封装接收者和绑定一组动作来封装请求的。 通过命令模式,将动作的请求者和动作的执行者进行解耦。即请求的调用者只接收并处理命令对象,但并不知道命令对象所封装的特定接收者。 command模式的结构图: 即,客户使用命令接收者(Receiver)来创建命令对象(ConcreteCommand),并将命令对象交给调用者(Invoker),执行调用者的相应动作,触发命令执行(execute),最终由命令对象调用接收者的action。 命令模式的参与者: • Command 声明执行操作的接口。• Co ...
什么是单件? 单件就是保证一个类仅有一个实例,并提供一个访问它的全局访问点。——GOF 单件模式简单吗? 简单,的确简单,因为只有一个类。 单件不简单! 其实单件并不见得简单,而且还有点小复杂。其复杂度正是为了保证单件所要达到“仅有一个实例”的宏伟目标而引起的。 当然在一般情况下,单件是简单的。但是在考虑了懒加载、并发、反射、序列化、子类化等诸多因素后,为了保证只有一个实例,复杂度就大大提高了。 下面就从这些方面一一来看如何保证单件只有一个实例,然后看看是不是并不像想象的简单。 1.So easy!饿汉 很简单,直接访问静态域,为防修改,定义成final的。当然构造函数必须 ...
简单工厂: 提供一个方法创建单个对象(方法内部往往包含对参数的判断来创建具体的对象),供外部对象使用——组合 工厂方法: 是一个特殊的模板方法,由子类创建具体的对象,供父类使用——继承 抽象工厂: 提供一组方法创建对象家族,供外部对象使用——组合 PS:简单工厂可以看成是简单的抽象工厂,只创建一个对象的抽象工厂
系统设计的本质 •系统设计的本质是寻找隐藏于应用背后抽象 •需求和用例不会表述或提及这些抽象,它们太过专注细节以至于不能表达底层抽象的一般性 如何抽象 •抽象需要根据需求的全局来展开 •不能只按个别用例来展开 •抽象就是归纳、总结,并提炼需求的共同逻辑 关于数据库 •数据库是实现细节!应该尽可能的推迟考虑数据库。有太多的应用程序之所以和数据库绑定在一起而无法分离,就是因为一开始设计时就把数据库考虑在内了。请记住抽象的定义:“本质部分的放大,无关紧要部分的去除。”在项目的分析设计阶段数据库就是无关紧要的,它只不过是一项用来存储和访问数据的技术而已! 面向对象的 ...
Command模式 Command模式的3种用法Active object模式 是对Command的应用 是实现多线程的基础技术 Active Object 并发模式在 Java 中的应用 http://www.ibm.com/developerworks/cn/java/j-lo-activeobject/index.html模板方法与策略模式 为什么说组合由于继承 ...
Ubuntu11.10下编译 OpenJDK7 http://blog.csdn.net/yhmhappy2006/article/details/7281710基本垃圾收集算法 标记-清除(Mark-Sweep) 效率问题 内存碎片 适用于老年代复制(Copying) 解决碎片问题 可用内存缩小(一半) 存活率高时,复制效率低 用于新生代标记-整理(Mark-Compact) 适用于老年代 老年代存活率高,不适合复制算法垃圾收集器 新生代垃圾收集器-基于复制 Serial 单线程(暂停用户线程) 复制 Client模式默认ParNew 多线程并行(暂停用户线 ...
线上系统出现问题时,需要记载系统当前运行状况,总结一下,大概需要关注以下几个方面: 1.负载:——top命令 在linux上,执行top 等命令,关注load, Memory, CPU 等系统概况,以及关注CPU和memory 占用较多的进程。 使用top -H, 并按 shift+p 对CPU进行排序,找到当前占用CPU最多的线程。(top -u bpm -H),-H 按线程显示,否则按进程显示 使用 ps -T <pid> |wc -l 找到当前运行的java 进程的线程数。 2.Thread dump——jstack kill -3 <pid> jst ...
文章: 1.Thread Dump分析:http://blog.csdn.net/wanyanxgf/article/details/6944987 2.jstack和线程dump分析:http://jameswxx.iteye.com/blog/1041173 3. threaddump :http://blog.sina.com.cn/s/blog_53b6edca0100gm69.html 插件: Lockness:http://lockness.plugin.free.fr/home.php
eclipse启动参数优化 -Xms512m -Xmx512m -Xmn128m -XX:PermSize=96m -XX:MaxPermSize=96m -XX:+DisableExplicitGC -Xnoclassgc -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=85 -Xverify:none
Global site tag (gtag.js) - Google Analytics