文章列表
通过编程无法避免的,用已检查异常异常处理。比如网络断开。如DataFormatException。
RuntimeException通过编程可以避免,要在编程时对出现的RuntimeException的情况判断。比如除数是0,数组越界等。
但现在还有比较流程用RuntimeException来替换掉所有有Exception。这种情况主要是为了代码更美观。在调用链上谁可以处理谁就可以捕。用RuntimeException封装Exception的两种方法,直接封装和用RuntimeException子类。详见:《java编程思想P280》
异常和方法返回值的选择,个人倾向于方法返回值。 ...
今天发现公司的自定义标签autoStart不支持属性文件 autoStart="${boot.mq}",看过源代码确实是直接读出的
String autoStart = element.getAttribute("autoStart");
if ((autoStart == null) || (autoStart.isEmpty()) || (autoStart.equals("true"))) {
builder.setInitMethodName("open");
} ...
CountDownLatch latch latch = new CountDownLatch(dbMax)
ExecutorService executorService = Executors.newFixedThreadPool(size);
executorService.execute(new UserinfoRunable(dbNo, tableNo));
executorService.shutdown();
try {
latch.await();
} catch (InterruptedException e1) {
log.erro ...
文件相关
下载文件:sz 上传文件 rz 删除文件:rm rm -rf *
拷贝:cp –r d1 d2
移动: mv file.exe /tools
ll, ls -l 文件信息
查看文件大小:du 文件名
vi /etc/hosts
有时我们程序需要不断处理一件事情
如果实时性要求很高,如几秒内,那用程序启动线程循环处理是个不错的选择。
但如果实时性要求不是很高,分钟级或以下,那可以选择换个方式,使用linux crontab
好处:只要linux不挂,程序就可以正常运行,linux服务器重启后服务也不受影响。比上种方式更稳定,编程更简单。
linuxcrontab设置
在命令端输入crontab -e,加入定时调用
*/5 * * * * /opt/consumegradesql/run_add.sh
linux脚本run_add.sh:
注意:crontab,在设定环境变量java_home时必 ...
1)加载类
2)加载资源
com.explorers.Test.class.getResourceAsStream("abc.jpg") com.explorers.Test.class.getResourceAsStream("/com/explorers/abc.jpg") ClassLoader.getResourceAsStream("com/explorers/abc.jpg")
如果查找配置文件,有时会做出如果程序找不到配置文件就退出,如果不是在程序启动时调用,而是在静态方法时调用,则会出现在类第一次加载时程 ...
批量更新数据
/**
* 批量更新数据
* @author guanpanpan
*
* @param <T>
*/
public abstract class BatchUpdate<T> {
public final static Logger log = LoggerFactory.getLogger(BatchUpdate.class);
public void execute(DB db, Collection<T> datas) throws SQLException {
if (datas = ...
1.接口
package com.jd.consume.domain.lock;
import java.util.List;
import com.jd.consume.domain.model.OrderTask;
/**
* 用户消费任务锁定
* @author guanpanpan
*
*/
public interface DataLock {
/**
* 从数据库中查询一定数量的OrderTask,并进行lock,lock到指定条数就返回,如果lock不到就返回空集合
* @param modeSize 总模数
...
•需求:软件的价值-领域部分,和技术无关
•设计:减少成本
•领域建模:贯通需求和设计,突出领域模型,让领域的复杂度和代码的复杂度相匹配
•抽象:并不是象现实世界,而是对现实世界中根据我们要解决的问题进行的抽象建模,比如房子根据我们关注点不同可以抽象成门窗户等构成,但也可以抽象成水泥,钢筋等构成的。
界面层
应用逻辑层
领域层(实体,值对象,服务)
基础设施层
是允许再加层的,比如要向其它系统提供远程服务。可以在应用逻辑上层,加入一个门面或外观,然后再加一层WebService层。如果改天改用ICE直接再在外观上层加个ICE层就好。
领域逻辑的实现:
...
1.spring配置文件
<?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="htt ...
总论
1.可以不用多线程最好不要用
2.如果可以不共享数据最好不要共享
3.服务器端最佳线程数量=((线程等待时间+线程cpu时间)/线程cpu时间) * cpu数量
因为数据库访问等待造成线程等待时间长比较长见,下面的例子就是以数据 ...
1.配置文件important.properties
##lock
addConsumeLock.maxLockSize=2
addConsumeLock.getSize=4
##thread
addConsumeJob.threadSize=2
##orderTaskRepository
orderTaskRepository.postTableSuffix=2012
2.配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http:/ ...