随笔分类 -  编程实践

摘要:概念定义 代理模式是一种使用代理对象来执行目标对象的方法并在代理对象中增强目标对象方法的一种设计模式。 使用代理模式的原因有: + 中介隔离作用:在某些情况下,一个客户类 不想或者不能直接引用 一个委托对象,而代理对象可以在客户类和委托对象之间起到 中介 的作用(代理类和委托类实现相同的接口)。以现 阅读全文
posted @ 2019-10-30 22:31 clover_toeic 阅读(3435) 评论(0) 推荐(4)
摘要:概念定义 享元(Flyweight)模式运用共享技术高效地支持大量 细粒度 对象的复用。 当系统中存在大量相似或相同的对象时,有可能会造成内存溢出等问题。享元模式尝试 重用现有的同类对象,如果未找到匹配的对象则创建新对象 ,从而减少系统中重复创建对象实例的性能和内存消耗。 享元模式将对象的信息分为两 阅读全文
posted @ 2019-10-12 21:59 clover_toeic 阅读(238) 评论(0) 推荐(0)
摘要:概念定义 使用原型实例指定待创建对象的种类,并通过拷贝该原型来创建新的对象。Prototype模式允许一个原型对象克隆(复制)出多个与其相同的对象,而无需知道任何如何创建的细节。 应用场景 + 对象的创建过程较为复杂且需要频繁创建 + 期望根据现有的实例来生成新的实例,例如: 对象种类繁多而无法整合 阅读全文
posted @ 2019-10-12 21:58 clover_toeic 阅读(424) 评论(0) 推荐(0)
摘要:概念定义 工厂方法(Factory Method)模式,又称多态工厂(Polymorphic Factory)模式或虚拟构造器(Virtual Constructor)模式。工厂方法模式通过定义工厂抽象父类(或接口)负责定义创建对象的公共接口,而工厂子类(或实现类)则负责生成具体的对象。 工厂方法模 阅读全文
posted @ 2019-10-12 21:58 clover_toeic 阅读(2061) 评论(0) 推荐(0)
摘要:概念定义 简单工厂(Simple Factory)模式,又称静态工厂方法(Static Factory Method)模式,即定义一个工厂类,根据传入的不同参数创建不同的产品实例,这些实例对象具有共同的父类或接口。 应用场景 + 需要创建的产品对象较少,否则工厂逻辑会过于复杂。 + 客户端只关心产品 阅读全文
posted @ 2019-10-12 21:58 clover_toeic 阅读(722) 评论(0) 推荐(0)
摘要:概念定义 抽象工厂(Abstract Factory)模式提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 抽象工厂模式中,系统的产品有 多于一个 的产品族(一个产品族里定义多个产品),而系统只消费其中某一族的产品。换句话说,抽象工厂创建一整套具有相互依赖或作用关系的产品(至少两 阅读全文
posted @ 2019-10-12 21:58 clover_toeic 阅读(319) 评论(0) 推荐(0)
摘要:概念定义 Singleton(单例)模式是指在程序运行期间, 某些类只实例化一次,创建一个全局唯一对象。因此,单例类只能有一个实例,且必须自己创建自己的这个唯一实例,并对外提供访问该实例的方式。 单例模式主要是为了避免创建多个实例造成的资源浪费,以及多个实例多次调用容易导致结果出现不一致等问题。例如 阅读全文
posted @ 2019-10-12 21:57 clover_toeic 阅读(444) 评论(0) 推荐(0)
摘要:概念定义 Builder模式是一步一步创建一个复杂对象的创建型模式。该模式将构建复杂对象的过程和它的部件解耦,使得构建过程和部件的表示隔离开来。 应用场景 + 对象创建过程比较复杂,或对创建顺序或组合有依赖(经典Builder模式,可参阅GOF《设计模式》)。 + 创建对象时所需参数较多,且包含较多 阅读全文
posted @ 2019-09-24 20:45 clover_toeic 阅读(3752) 评论(0) 推荐(0)
摘要:前言 在使用Iterator遍历容器类的过程中,如果对容器的内容进行增加和删除,就会出现ConcurrentModificationException异常。该异常的分析和解决方案详见博文《Java ConcurrentModificationException 异常分析与解决方案》和《解决Array 阅读全文
posted @ 2018-02-23 21:27 clover_toeic 阅读(630) 评论(0) 推荐(0)
摘要:前言 本文总结了作者在Java代码检视中遇到的一些关于日志打印的问题,并给出修改建议。因能力有限,难免存在错漏,欢迎指正。 一. 不规范的异常打印 使用slf4j日志组件时,logger.error(与log.warn)接受Throwable参数,以打印异常名和详细的堆栈信息(可能内部调用e.pri 阅读全文
posted @ 2018-02-13 17:43 clover_toeic 阅读(7446) 评论(3) 推荐(0)
摘要:[案例1】 【点评】 应在JudgeNode类里定义equals()方法(估计刚从面向过程语言"转行"过来...)。 【案例2】 【点评】 可简化为return new String[]{linkStatus.get(AC), getLinkMsg()}; 【案例3】 【点评】 1. instanc 阅读全文
posted @ 2017-11-25 22:58 clover_toeic 阅读(1434) 评论(0) 推荐(0)
摘要:JDK 1.8(Java 8)里新增String.join()方法用于字符串连接。本文基于《Java实现String.join()和效率比较》一文,分析和比较四种自定义实现与String.join()方法的效率,并纠正原文的一些错误。 代码示例如下: 选取三次运行输出结果如下: 可见,join4() 阅读全文
posted @ 2017-11-25 21:33 clover_toeic 阅读(4972) 评论(0) 推荐(0)
摘要:【背景】 平台A和平台B进行网络通信,通信接口以C语言结构体形式定义,存于名如interface_plata_platb.h的头文件内。正常情况下,平台A和平台B分别存储一份接口文件,其内容应该完全相同。由于同名的接口文件分两处存储,变更时很容易出现不同步的问题(例如两个平台分别A使用变更前后的接口 阅读全文
posted @ 2016-12-13 09:38 clover_toeic 阅读(1142) 评论(0) 推荐(0)
摘要:【题目】 开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。 处理: 1、 记录最多8条错误记录,循环记录,对相同的错误记录(净文件名称和行号完全匹配)只记录一条,错误计数增加; 2、 超过16个字符的文件名称,只记录文件的最后有效16个字符; 3、 输入的文件可能带路径,记录 阅读全文
posted @ 2016-12-02 09:44 clover_toeic 阅读(824) 评论(0) 推荐(0)
摘要:【编程小练习】字符串大写字母转小写 题目很基础。既然是基础编程题,就尽量不要调用库函数,如tolower()。 以下给出作者的解法(思路详见注释): 运行效果如下: 熟悉表驱动法编程的读者很容易看出, 其实是张预置的字符转换表。更进一步,可理解为一种"模式"。基于这一思想,提取该表作为函数入参,由调 阅读全文
posted @ 2016-09-01 20:11 clover_toeic 阅读(1146) 评论(0) 推荐(0)
摘要:Python实现代码统计工具——终极加速篇 声明 本文对于先前系列文章中实现的C/Python代码统计工具(CPLineCounter),通过C扩展接口重写核心算法加以优化,并与网上常见的统计工具做对比。实测表明,CPLineCounter在统计精度和性能方面均优于其他同类统计工具。以千万行代码为例 阅读全文
posted @ 2016-07-04 10:04 clover_toeic 阅读(4816) 评论(1) 推荐(7)
摘要:大整数加减运算的C语言实现 标签: 大整数加减 C [TOC] 一. 问题提出 培训老师给出一个题目:用C语言实现一个大整数计算器。初步要求支持大整数的加、减运算,例如 或`1000000000000 999999999999=1`。 C语言中,整型变量所能存储的最宽数据为0xFFFF FFFF,对 阅读全文
posted @ 2016-06-22 15:37 clover_toeic 阅读(10867) 评论(0) 推荐(3)
摘要:Python判断列表是否已排序的各种方法及其性能分析 标签: Python 列表排序 [TOC] 声明 本文基于Python2.7语言,给出判断列表是否已排序的多种方法,并在作者的Windows XP主机(Pentium G630 2.7GHz主频2GB内存)上对比和分析其性能表现。 一. 问题提出 阅读全文
posted @ 2016-06-20 13:11 clover_toeic 阅读(11481) 评论(1) 推荐(6)
摘要:Python实现C代码统计工具(四) 标签: Python 计时 持久化 [TOC] 声明 本文介绍若干种有别于cProfile/profile模块的Python程序计时方法,并对 "《Python实现C代码统计工具(三)》" 中的C代码统计工具进行性能优化。本文所述的方法也适用于其他Python脚 阅读全文
posted @ 2016-06-02 14:37 clover_toeic 阅读(1134) 评论(0) 推荐(1)
摘要:Python代码统计工具 标签: Python 代码统计 [TOC] 声明 本文将对 "《Python实现C代码统计工具(一)~(三)》" 中的C代码统计工具进行扩展,以支持Python脚本自身的行数统计。 一. 问题提出 此前实现的C代码统计工具仅能分析和统计C语言代码文件,但其设计思想也适用于P 阅读全文
posted @ 2016-05-27 16:47 clover_toeic 阅读(2694) 评论(2) 推荐(3)