编程思想
文章平均质量分 90
suwu150
业精于勤,荒于嬉;行成于思,毁于随;磨刀不误砍柴工。
展开
-
码农该如何延长周末体验感
以上这些任务中最好能够在周六安排比较耗费体力的一些活动,因为周六去做完这些任务,回顾一想完成了这么多任务,就会有一种自豪感,而且想想明天还有一天周末能够做其他任务,就会感觉比较舒适,在周末时,最好能够安排一些比较轻松的活动,然后就早早入睡,准备周一的工作生活。总结来说,作为码农,延长周末的体验感需要平衡工作和生活,保持身心健康,寻找自己的兴趣爱好,并不断学习和挑战。当前时代,需要不停的学习进步,才能避免被淘汰,大厂有大厂的竞争规则,小厂也有小厂的卷,只有不停的增长自身的水平,才能够避免被淘汰。原创 2023-07-30 17:48:01 · 1081 阅读 · 0 评论 -
如何使用nodejs创建Web服务器
Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,Web服务器的基本功能就是提供Web信息浏览服务。它只需支持HTTP协议、HTML文档格式及URL,与客户端的网络浏览器配合。大多数 web 服务器都支持服务端的脚本语言(php、python、ruby)等,并通过脚本语言从数据库获取数据,将结果返回给客户端浏览器。目前最主流的三个Web服务器是Apache、Nginx、IIS。原创 2017-06-04 17:03:33 · 52566 阅读 · 20 评论 -
日常开发为什么需要做Code Review
出现这种情况的常见算法一般都是先找出数组中固定的某一个值,然后在用这个值去做业务逻辑,这样可能得和业务人员确定是否存在更加优化的处理方案,比如下面是用了es6中结构赋值的方案去减少了一次检索的过程,这种双循环的,一般都仔细检查下看看是否有优化方案。提高代码质量: 可以帮助开发者更好地编写代码,减少错误和缺陷,提高代码的质量和可维护性。看的我是一堆乱麻,不由得让我开始思考,程序员果真是懒,如果再勤快一些,可能会进行代码的封装和考虑这些公用方法及组件的抽取,同时也存在项目中Code Review 的缺失。原创 2023-05-04 22:36:36 · 2497 阅读 · 1 评论 -
设计模式(14)-模板方法模式(Template Method)
设计模式(13)-策略模式(Strategy) 14、模板方法模式(Template Method) 模板方法模式,就是指:一个抽象类中,有一个主方法,再定义1...n个方法,可以是抽象的,也可以是实际的方法,定义一个类,继承该抽象类,重写抽象方法,通过调用抽象类的方法,实现对子类的调用 其实就是我们之前所说的: 子类重新/实现父类中的方法,那么调用该方法的时候则是调用到了子类中重写之后的方法 例子:转载 2016-09-12 00:02:03 · 466 阅读 · 0 评论 -
设计模式(15)-观察者模式(Observer)
观察者模式很好理解,类似于邮件订阅和RSS订阅,当我们浏览一些博客时,经常会看到RSS图标,就这的意思是,当你订阅了该文章,如果后续有更新,会及时通知你。其实,简单来讲就一句话:当一个对象变化时,其它依赖该对象的对象都会收到通知,并且随着变化!对象之间是一种一对多的关系。 我们在GUI那一章学习的事件监听机制就是可以这种设置模式来构建的代码 例子察者接口 public interface Observer { public void upda转载 2016-09-12 01:42:20 · 436 阅读 · 0 评论 -
设计模式(16)-迭代器模式(Iterator)
设计模式(15)-观察者模式(Observer) 16、迭代器模式(Iterator) 顾名思义,迭代器模式就是顺序访问聚集中的对象,一般来说,集合中非常常见,如果对集合类比较熟悉的话,理解本模式会十分轻松。 例子: public interface Collection { public Iterator iterator(); /*取得集合元素*/ public Object get(in转载 2016-09-12 01:44:06 · 389 阅读 · 0 评论 -
设计模式(17)-责任链模式(Chain of Responsibility)
责任链模式,有多个对象,每个对象持有对下一个对象的引用,这样就会形成一条链,请求在这条链上传递,直到某一对象决定处理该请求。但是发出者并不清楚到底最终哪个对象会处理该请求,所以,责任链模式可以实现,在隐瞒客户端的情况下,对系统进行动态的调整。 (web应该中学习到的Filter其实就是一个责任链设计模式) 例子: public interface Handler { public void operator(); }转载 2016-09-12 07:41:53 · 471 阅读 · 0 评论 -
设计模式(18)-命令模式(Command)
命令模式很好理解,举个例子,司令员下令让士兵去干件事情,从整个事情的角度来考虑,司令员的作用是,发出口令,口令经过传递,传到了士兵耳朵里,士兵去执行。这个过程好在三者(司令、命令、士兵)相互解耦,任何一方都不用去依赖其他人的具体实现,只需要做好自己的事儿就行,司令员要的是结果,不会去关注到底士兵是怎么实现的。//命令执行的接口 public interface Command { public void exe(); } //具体实现的命令转载 2016-09-12 07:51:41 · 485 阅读 · 0 评论 -
设计模式(19)-备忘录模式(Memento)
也可以叫备份模式,主要目的是保存一个对象的某个状态,以便在适当的时候恢复对象:假设有原始类A,A中有各种属性,A可以决定需要备份的属性,备忘录类B是用来存储A的一些内部状态,类C呢,就是一个用来存储备忘录的,且只能存储,不能修改等操作。 //原始类,里面有需要保存的属性value public class Original { private String value; public String getValue()转载 2016-09-12 07:53:24 · 413 阅读 · 0 评论 -
设计模式(20)-状态模式(State)
核心思想就是:当对象的状态改变时,同时改变其行为,很好理解!就拿QQ来说,有几种状态,在线、隐身、忙碌等,每个状态对应不同的操作。再比如交通灯,有红黄绿三种状态,每种状态下操作也是不一样的 例子: //状态类 public class State { private String value; public String getValue() { return value; }转载 2016-09-12 07:54:46 · 448 阅读 · 0 评论 -
设计模式(21)-访问者模式(Visitor)
设计模式(20)-状态模式(State)访问者模式把数据结构和作用于结构上的操作解耦合,使得对数据操作可相对自由地演化。访问者模式适用于数据结构相对稳定,算法又易变化的系统。因为访问者模式使得算法操作增加变得容易。若系统数据结构对象易于变化,经常有新的数据对象增加进来,则不适合使用访问者模式。访问者模式的优点是增加操作很容易,因为增加操作意味着增加新的访问者。访问者模式将有关行为集中到一个访问者对象中,其改变不影响系统数据结构。其缺点就是增加新的数据结构很困难。 简单来说,访问者模式就转载 2016-09-12 08:02:08 · 431 阅读 · 0 评论 -
设计模式(22)-中介者模式(Mediator)
、中介者模式(Mediator) 中介者模式也是用来降低类和类之间的耦合的,因为如果类和类之间有依赖关系的话,不利于功能的拓展和维护,因为只要修改一个对象,其它关联的对象都得进行修改。如果使用中介者模式,只需关心和Mediator类的关系,具体类类之间的关系及调度交给Mediator就行 例子 //中间者接口 public interface Mediator { public void createMediator();转载 2016-09-12 08:11:24 · 357 阅读 · 0 评论 -
设计模式(23)-解释器模式(Interpreter)
解释器接口(这里的是专门解析数学运算表达式) 在以下情况下可以使用解释器模式: 有一个简单的语法规则,比如一个sql语句,如果我们需要根据sql语句进行其他语言的转换,就可以使用解释器模式来对语句进行解释。 一些重复发生的问题,比如加减乘除四则运算,但是公式每次都不同,有时是a+b-c*d,有时是a*b+c-d,等等等等个,公式千变万化,但是都是由加减乘除四个非终结符来连接的,这时我们就可以使用解释器模式。 public interface Expression转载 2016-09-12 08:20:22 · 498 阅读 · 0 评论 -
设计模式(13)-策略模式(Strategy)
设计模式(12)-享元模式(Flyweight) 接下来我们再看剩余的11种行为型模式:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式 13、策略模式(Strategy) 策略模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。需要设计一个接口,为一系列实现类提供统一的方法,多个实现类实现该接口,也可以设计一个抽象类(可有可无,属于辅助类),提转载 2016-09-12 00:00:09 · 425 阅读 · 0 评论 -
设计模式(12)-享元模式(Flyweight)
设计模式(11)-组合模式(Composite) 12、享元模式(Flyweight) 享元模式的主要目的是实现对象的共享,即共享池,当系统中对象多的时候可以减少内存的开销,通常与工厂模式一起使用。 例子: //数据库连接池 public class ConnectionPool { private Vector<Connection> pool; /*公有属性*/转载 2016-09-11 23:58:02 · 399 阅读 · 0 评论 -
设计模式(1)-工厂方法模式
二、Java的23中设计模式 1、工厂方法模式(Factory Method) 工厂方法模式分为三种:普通工厂模式 多个工厂方法模式 静态工厂方法模式 1.1、普通工厂模式,就是建立一个工厂类,对实现了同一接口的产品类进行实例的创建 例子: //发送短信和邮件的接口public interface Sender { public void Send(); } //发送邮件的实现类 public c转载 2016-09-11 20:39:27 · 411 阅读 · 0 评论 -
设计模式(2)-抽象工厂模式(Abstract Factory)
设计模式(1)-工厂方法模式 2、抽象工厂模式(Abstract Factory) 工厂方法模式有一个问题就是,类的创建依赖工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则,所以,从设计角度考虑,有一定的问题,如何解决?就用到抽象工厂模式,创建多个工厂类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。 例子: //发送短信和邮件的接口public interface Sender转载 2016-09-11 20:52:01 · 309 阅读 · 0 评论 -
设计模式(3)-单例模式(Singleton)
设计模式(2)-抽象工厂模式(Abstract Factory) 3、单例模式(Singleton) 单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。这样的模式有几个好处: 1、某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。 2、省去了new操作符,降低了系统内存的使用频率,减轻GC压力。 3、有些类如交易所的核心交易引擎,控制着交易流程,如果该类可以创建多个的话,系统完全乱转载 2016-09-11 21:15:34 · 509 阅读 · 0 评论 -
设计模式(4)-建造者模式(Builder)
设计模式(3)-单例模式(Singleton) 4、建造者模式(Builder) 工厂类模式提供的是创建单个类的模式,而建造者模式则是将各种产品集中起来进行管理,用来创建复合对象,所谓复合对象就是指某个类具有不同的属性。建造者模式主要用于“分步骤构建一个复杂的对象”,在这其中“分步骤”是一个稳定的算法,而复杂对象的各个部分则经常变化。因此, 建造者模式主要用来解决“对象部分”的需求变化。 这样可以对对象构造的过程进行更加精细的控制。 例子:转载 2016-09-11 21:43:53 · 432 阅读 · 0 评论 -
设计模式(5)-原型模式(Prototype)
设计模式(4)-建造者模式(Builder) 5、原型模式(Prototype) 原型模式虽然是创建型的模式,但是与工程模式没有关系,从名字即可看出,该模式的思想就是将一个对象作为原型,对其进行复制、克隆,产生一个和原对象类似的新对象。在Java中,复制对象是通过clone()实现的,先创建一个原型类: public class Prototype i转载 2016-09-11 23:36:29 · 456 阅读 · 0 评论 -
设计模式(6)-适配器模式(Adapter)
设计模式(5)-原型模式(Prototype) 上面是五种是创建型模式,接下来看一下7种结构型模式 : 适配器模式、装饰模式、代理模式、外观模式、桥接模式、组合模式、享元模式 6、适配器模式(Adapter) 适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。主要分为三类:类转载 2016-09-11 23:39:17 · 440 阅读 · 0 评论 -
OOAD:面向对象的分析和设计
OOAD:面向对象的分析和设计1.什么是面向对象 面向对象(Object-Orientation,简称OO)是一种系统建模技术/编程思想。 面向对象编程(Object-Orientation Propramming,简称OOP)是按照OO的方法学来开发程序的编程方式。 面向对象分析方法 Object-Oriented Analysis, 简称OOA 分析阶段主要解决以下问题: 1.建立针对业务问题域的清晰视图 2.列出系统必须转载 2016-09-04 01:38:47 · 3584 阅读 · 1 评论 -
设计模式(7)-装饰模式(Decorator)
设计模式(6)-适配器模式(Adapter) 7、装饰模式(Decorator) 顾名思义,装饰模式就是给一个对象增加一些新的功能,而且是【动态】的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例 这里的动态指的是用户可以根据自己的需求把之前定好的功能任意组合。 JDK中的IO流部转载 2016-09-11 23:48:59 · 421 阅读 · 0 评论 -
设计模式(8)-代理模式(Proxy)
设计模式(7)-装饰模式(Decorator) 8、代理模式(Proxy) 其实每个模式名称就表明了该模式的作用,代理模式就是多一个代理类出来,替原对象进行一些操作,比如我们在租房子的时候回去找中介,为什么呢?因为你对该地区房屋的信息掌握的不够全面,希望找一个更熟悉的人去帮你做,此处的代理就是这个意思。再如我们有的时候打官司,我们需要请律师,因为律师在法律方面有专长,可以替我们进行操作,表达我们的想法。 例子: //公共接转载 2016-09-11 23:51:04 · 501 阅读 · 0 评论 -
设计模式(9)-外观模式(Facade)
设计模式(8)-装饰模式(Decorator) 9、外观模式(Facade) 外观模式也可以叫做门面模式 为子系统或者模块中的一组接口提供一个一致的访问方式,此模式定义了一个高层接口,这个接口使得各个子系统/模块中的功能更加容易使用。 实际应用中,我们在对付一些老旧的代码或者即便不是老旧code,但涉及多个子系统时,除了重写全部代码,我们还可能采用这样一种策略:重新进行类的设计,将原来分散在源码中的类/结构及方法重新组合,形成新的、统一的接口转载 2016-09-11 23:52:56 · 438 阅读 · 0 评论 -
设计模式(10)-桥接模式(Bridge)
设计模式(9)-外观模式(Facade)10、桥接模式(Bridge) 桥接模式(也叫桥梁模式)就是将抽象部分和实现部分分离,使它们都可以独立的变化。桥接的用意是:将抽象化与实现化解耦,使得二者可以独立变化,像我们常用的JDBC桥和DriverManager一样,JDBC进行连接数据库的时候,在各个数据库之间进行切换,基本不需要动太多的代码,甚至丝毫不用动,原因就是JDBC提供统一接口,每个数据库提供各自的实现,用一个叫做数据库驱动的程序来桥接就行了。 例子:转载 2016-09-11 23:54:24 · 455 阅读 · 0 评论 -
设计模式(11)-组合模式(Composite)
设计模式(10)-桥接模式(Bridge) 11、组合模式(Composite) 组合模式有时又叫部分-整体模式,在处理类似树形结构的问题时比较方便 例子: //节点类 public class TreeNode { private String name; private TreeNode parent; private Vector<TreeNode> ch转载 2016-09-11 23:56:24 · 457 阅读 · 0 评论 -
设计模式概念及分类
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因。一、转载 2016-09-11 20:31:03 · 566 阅读 · 0 评论