hibernate映射关系
java代码public class Customer {
private Integer customerId;
private String customerName;
public Integer getCustomerId() {
return customerId;
}
public void setCustomerId(Integer customerId) {
this.customerId = customerId;
}
public String getCustomerName() {
return customerName;
}
public void setCustomerName(String customerName) {
this.customerName = customerName;
}
}
public class Order {
private Integer orderId;
...
深入理解java虚拟机-读书笔记
1.局部变量表存放了编译期可知的各种基本数据类型(boolean\byte\char\short\int\float\long\double)、对象引用(reference类型,它不等同于对象本身,可能是一个指向对象起始地址的引用指针,也可能是指向一个代表对象的句柄或其他与此对象相关的位置)和returnAddress类型(指向了一条字节码指令的地址)。
其中64位长度的long和double类型的数据会占用两个局部变量空间(slot),其余的数据类型只占用一个。局部变量表所需的内存空间在编译期间完成分配,当进入一个方法时,这个方法需要在帧中分配多大的局部变量空间是完全确定的,在方法运行期间不会改变局部变量表的大小。
在java虚拟机规范中,这个区域规定了两种异常状况:
1. 如果线程请求的栈深度大于虚拟机所允许的深度,将抛出StackOverFlow异常;
2. 如果栈可以动态扩展,如果扩展时无法申请到足够的内存,就会抛出OutOfMemoryError异常。
设计模式-备忘录模式
定义保存一个对象的某个状态,以便在适当的时候恢复对象。
适用场景
保存及恢复数据相关业务场景。
后悔的时候,既想恢复到之前的状态。
总结
优点
为用户提供一种可恢复的机制。
存档信息的封装。
缺点
资源占用。
设计模式-观察者模式
定义定义了对象之间的一对多依赖,让多个观察者对象同时监听某一个主题对象,当主题对象发生变化时,他的所有依赖者(观察者)都会收到通知并更新。
适用场景
关联行为场景,建立一套触发机制。
UML
总结
优点
观察者和被观察者之间建立一个抽象的耦合。
观察者模式支持广播通信。
缺点
观察者之间有过多的细节依赖,增加了时间消耗及程序的复杂度。
使用要得当,要避免循环调用。
设计模式-解释器模式
定义给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。为了解释一种语言,而为语言创建的解释器。
适用场景
某个特定类型问题发生频率足够高。
平时需要写的并不多。
总结
优点
语法有很多类表示,容易改变及扩展此语言。
缺点
当语法规则数目太多时,增加了系统的复杂度。
设计模式-策略模式
定义定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化不会影响到使用算法的用户。
适用场景
系统有很多类,而他们的区别仅仅在于他们的行为不同。
一个系统需要动态的在几种算法中选择一个。
UML
总结
优点
符合开闭原则。
避免使用多重条件转移语句。
提高算法的保密性和安全性。
缺点
客户端必须知道所有的策略类,并自行决定使用哪一种策略类。
产生很多策略类。
jenkins配置邮件通知
jenkins系统配置
设置jenkins地址和管理员邮箱地址
系统管理–>系统设置–>Jenkins Location
设置发件人等信息
系统管理–>系统设置–>Extended E-mail Notification
PS:这里的发件人邮箱地址切记要和系统管理员邮件地址保持一致(当然,也可以设置专门的发件人邮箱,不过不影响使用,根据具体情况设置即可)
配置邮件模板default Content
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>
</head>
<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"
offset="0">
<table width="95%" cellpa ...
局域网内搭建邮件服务器-hMailServer
hMailServer安装
hMailServer,到hMailServer网站下载最新版本hMailServer安装包。
双击安装文件
设置密码,该密码在配置服务器时使用。
配置hMailServer
打开配置程序
因为内网中没有DNS服务器,所以域名随便取一个。
添加邮件地址
配置SMTP
打开logging
配置ip Ranges
修改hosts文件,添加SMTP的域名解析为本机地址。
到此,hmailServer服务端配置完成。
配置foxmail客户端
visualsvn配置hooks调用jenkins自动构建
jenkins配置
为了让Jenkins中的job可以被触发,job需要被显式地配置为启用SCM轮询才行,未启用SCM轮询选项的job将不会被post-commit hook所触发。下图为在job中启用SCM轮询的示例:
如果Jenkins启用了跨站点请求伪造防护(默认启用)选项,那么上面的请求会返回一个403错误(“No valid crumb was included”)。在”系统管理”→”全局安全配置”中,可以看到跨站点请求伪造防护是否有启用:
VisualSVN配置
提交到 VisualSVN Server 时 hook 的 post-commit.bat(post-commit.cmd) 不执行的解决方法:
这是因为 bat 文件执行需要权限,而 VisualSVN Server 默认用的是 NETWORK 用户组,该组没有执行 bat 的权限,导致了 post-commit.bat 文件不能执行,解决方法如下:
配置hooks
curl -X POST http://localhost:6080/job/cecaudit/build?delay=0sec ...
设计模式-模板方法模式
定义定义了一个算法的骨架,并允许子类为一个或多个步骤提供实现。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法的某些步骤。
适用场景
一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。
各个子类中公共的行为被提取出来并集中到一个公共父类中,从而避免代码重复。
UML
总结
优点
提高复用性。
提高扩展性。
符合开闭原则。
缺点
类数目增加。
增加了系统实现的复杂度。
继承关系自身缺点,如果父类添加新的抽象方法,所有子类都要改一遍。
设计模式-迭代器模式
定义提供了一种方法,顺序访问一个集合中的各个元素,而又不暴露该对象的内部表示。
适用场景
访问一个集合对象的内容而无需暴露它的内部表示。
为遍历不同的集合结构提供一个统一的接口。
UML
Iterator(抽象迭代器):它定义了访问和遍历元素的接口,声明了用于遍历数据元素的方法,例如:用于获取第一个元素的first()方法,用于访问下一个元素的next()方法,用于判断是否还有下一个元素的hasNext()方法,用于获取当前元素的currentItem()方法等,在具体迭代器中将实现这些方法。
ConcreteIterator(具体迭代器):它实现了抽象迭代器接口,完成对聚合对象的遍历,同时在具体迭代器中通过游标来记录在聚合对象中所处的当前位置,在具体实现时,游标通常是一个表示位置的非负整数。
Aggregate(抽象聚合类):它用于存储和管理元素对象,声明一个createIterator()方法用于创建一个迭代器对象,充当抽象迭代器工厂角色。
ConcreteAggregate(具体聚合类):它实现了在抽象聚合类中声明的createIterator()方法,该方法返回一 ...