`
足至迹留
  • 浏览: 486831 次
  • 性别: Icon_minigender_1
  • 来自: OnePiece
社区版块
存档分类
最新评论
文章列表
MyEclipse工程里新增文件夹时有普通Folder和Source Folder的区别,java源文件放到普通Folder里时package会受Folder名影响,也就是Folder文件夹名要作为package路径的一部分,而SourceFolder则不影响package名。 如果是导入的工程因为路径而报错,可以直接修改MyEclipse工程根目录下的.classpath文件: <classpathentry kind="src" path="src/main/java"/> 修改这里的path部分,path就代表源文件的SourceFold ...
1、错误描述 Access restriction: The type CommPortIdentifier is not accessible due to restriction on required library D:\Program Files\Java\jdk1.6.0_45\jre\lib\ext\RXTXcomm.jar 串口编程用到第三方的包RXTX,按说明防止好dll和包后,import包开发一切正常,但是maven打包时报上面的错误。 2. 问题解决 进入工程的build path-> Libraries,然后Remove掉JRE System Library, ...
函数调用再寻常不过了,一再强调的就是好的函数一定是只做一件事情的,只因为一个原因而改变的,因而也是容易命一个好名字的。 7.1 Rename method (函数改名) 极力推荐的一种编程风格就是:将复杂的处理过程分解为小函数。 ...
6.1 Decompose Conditional (分解条件表达式) 如果有一个复杂的条件(if-else)语句,可以从if,else中分别提炼出独立函数。 程序中,复杂的条件逻辑是最常导致复杂度上升的地点之一。必须编写代码检查不同的条件分支,根据不同的分支做不同的事,然后,很快会得到一个相当长的函数。大型函数自身就会使代码的可读性下降,而条件逻辑则会使代码难阅读。 和任何大块头代码一样,可以将它分解为多个独立函数,根据每个小块代码的用途,为分解而得的新函数命名。 6.2 Consolidate Conditional Expression(合并条件表达式) 如果有一系列条件测试,都得到 ...
程序中处理的所有对象都是数据,所有抽象、算法都是为了表示数据、处理数据。下面我们就看看如何更好的组织数据。 5.1 Self Encapsulate Field (自封装字段) 在同一个类中如果直接访问这个类的一个字段,则与字段之间的耦合关 ...
在对象的设计过程中,“决定把责任放在哪儿”即使不是最重要的事,也是最重要的事之一。常常只需要使用Move method和move field简单地移动对象行为,就可以解决这些问题。如果这两个手法都需要用到,建议先使用move field再使用 ...
重构,无外乎就是重新组织变量(实例变量,静态变量,局部变量,临时变量),表达式,函数,类,继承机制(extends, implements)等,以提高代码的可读性,可维护性等。代码世界里不希望看到高富帅,一切都以“小”为美。单 ...
1. in和exists IN 操作符允许我们在 WHERE 子句中规定多个值。 SQL IN 语法: SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,...) in 是把外表和内表作hash 连接,而exists是对外表(主表)作loop循环,每次loop循环再对内表进行查询。认为exists比in效率高的说法是不准确的,要看条件。 如果查询的两个表大小相当,那么用in和exists差别不大。  如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in。 1 ...
2.11 Parallel Inheritance hierarchies (平行继承体系) Parallel Inheritance Hierarchies其实是Shotgun Surgery 的特殊情况 。在这种情况下,每当你为某个类增加一个子类,必须也为另一个类相应增加一个子类。如果你发现某个继承体系的类名称前缀和另一个继承体系的类名称前缀完全相同,便是闻到了这种坏味道 。 消除这种重复性的一般策略是:让一个继承体系的实例引用另一个继承体系的实例。如果再接再励运用 Move Method和Move Field ,就可以将引用端的继承体系消灭于无形。 2.12 Lazy Class (冗 ...
当闻到代码里的坏味道时,你就可以考虑重构了。所谓的坏味道就是代码里看起来不符合设计难以理解难以修改的代码。 关于“何时重构”并没有一个精确衡量标准。没有任何度量规矩比得上一个见多识广者的直觉,这里只能介绍一些迹象何时可以用重构解决问题。我们必须培养自己的判断力,学会判断一个类内有多少实例变量算是太大,一个函数内有多少行代码才算太长。大致分为22个现象,本篇介绍前10个,下一篇介绍其他的12个。这里提到的一些做法,比如extrat method后面也会逐个介绍。 2.1 Duplicated Code (重复代码) 坏味道行列中首当其冲的就是Duplicated  Code.  如果你在一个以上 ...
4.4 消息通知 4.4.1 任务队列 在网站开发中,当页面需要进行如发送邮件、复杂数据运算等耗时较长的操作时会阻塞页面的渲染。为了避免用户等待太久,应该使用独立的线程来完成这类操作。不过一些编程语言或框架不易实现多线程,这时很容易就会想到通过其他进程来实现。 设想有一个进程能够完成发邮件的功能,那么在页面中只需要想办法通知这个进程向指定的地址发送邮件就可以了。 通知的过程可以借助任务队列来实现。任务队列顾名思义,就是“传递任务的队列”。与任务队列进行交互的实体有两类,一类是生产者(producer),一类是消费者(consumer)。生产者会将需要处理的任务放入任务队列中,而消费者则不断地从任 ...
一、 问题描述 先来看一下异常信息,启动tomcat时就报错: 2015-3-20 15:22:39 org.apache.catalina.core.StandardContext listenerStart 严重: Exception sending context initialized event to listener instance of class com.***.***.action.GateWayMonitorListener java.util.concurrent.RejectedExecutionException at java.util.co ...
4.3 排序 4.3.1 有序集合的集合操作 集合类型提供了强大的集合操作命令,但是如果需要排序就要用到有序集合类型(但这只能对有序集合类型一种类型排序)。Redis的作者在设计Redis的命令时考虑到了不同数据类型的使用场景,对 ...
1. 生存时间 1.1 命令介绍 在实际的开发中经常会遇到一些有时效的数据,比如限时优惠活动、缓存或验证码等,过了一定的时间就需要删除这些数据。在关系数据库中一般需要额外的一个字段记录到期时间,然后定期检测删除过期数据。而在Redis中可以使用EXPIRE命令设置一个键的生存时间,到时间后Redis会自动删除它。 EXPIRE命令的使用方法为: EXPIRE key seconds 其中seconds参数表示键的生存时间,单位是秒。如要想让session:29e3d键在15分钟后被删除: redis>SET session:29e3d uid1314 OK redis>EXPIRE ses ...
1. 事务 1.1 概述 Redis中的事务(transaction)是一组命令的集合。事务同命令一样都是Redis的最小执行单 位,一个事务中的命令要么都执行,要么都不执行。事务的应用非常普遍,如银行转账过程中A给B汇款,首先系统从A的账户中将 ...
Global site tag (gtag.js) - Google Analytics