- 浏览: 57152 次
- 性别:
- 来自: 北京
博客专栏
-
设计模式
浏览量:7364
最新评论
-
alixjiang:
getInstance应该在同步锁的保护之下吧
设计模式-单例模式 -
再_见孙悟空:
就是信息的转发
设计模式-中介者模式 -
DanielHan:
中介者模式中,中介者参与同事角色之间的通信方式,使用的是观察者 ...
设计模式-中介者模式 -
net_hare:
这个和观察者模式有什么区别
设计模式-中介者模式 -
xinglan500:
用代码解释很好哦。多谢博主啦。
JAVA反射机制之一
文章列表
1.字符串长度函数CHAR_LENGTH(str),LENGTH(str)
CHAR_LENGTH()返回值为字符串str的长度,长度的单位为字符。一个多字节字符算作一个单字符。对于一个包含五个二字节字符集,LENGTH() 返回值为 10, 而 CHAR_LENGTH() 的返回值为 5
select CHAR_LENGTH('你是'); --2
select LENGTH('你是'); --6
2.拼接函数
CONCAT(str1 ,str2 ,...):
返回结果为连接参数产生的字符串。如有任何一个参数为 NULL ,则返回值为NULL。
CONCAT_WS(separator ,st ...
一.获取当前时间或日期
1.NOW()年月日时分秒
2.CURDATE()年月日
3.CURRENT_DATE()年月日
4.CURRENT_TIME()时分秒
5.CURRENT_TIMESTAMP()年月日时分秒
6.CURTIME()时分秒
7.LOCALTIME()年月日时分秒
8.LOCALTIMESTAMP()年月日时分秒
9.SYSDATE()年月日时分秒
10.SYSDATE ...
1.group by
group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面
select id,account from user_userinfo GROUP BY account
此语句执行时会报错
但是对于mysql数据库来说会得到结果:
原因:mysql集成limit 1在group by中,由于innoDB引擎默认是按主键id升序排列,故limit 1以后就是此结果。
2.having
HAVING 子句对 GROUP BY 子句设置条件的方式与 WHERE 和 SELECT 的交互方式类似。WHERE ...
MyISAM 表
MySQL Select 默认排序是按照物理存储顺序显示的。(不进行额外排序).也就是说SELECT * FROM tbl;会产生“表扫描”。如果表没有删除、替换、更新操作,记录会显示为插入的顺序。
InnoDB 表
同样的情况,会按主键的顺序排列。
varchar类型的字段排序方式
id为varchar
select id,account from user_userinfo order by id
结果:
备忘录模式(Memento Pattern)
在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。
涉及角色:
1.Original(发起人):负责创建一个备忘录Memento,用以记录当前时刻自身的内部状态,并可使用备忘录恢复内部状态。Originator可以根据需要决定Memento存储自己的哪些内部状态。
2.Memento(备忘录):负责存储Originator对象的内部状态,并可以防止Originator以外的其他对象访问备忘录。备忘录有两个接口:Caretaker只能看到备忘录的窄接口,他只能将备忘录传递给其他对象。O ...
状态模式(State Pattern)
当一个对象的内在状态改变时允许改变其行为,这个对象看起来就像是改变了。
举例:Word文本编辑器的两种模式:编辑模式、预览模式,在编辑模式下可以添加、修改、删除、查看文档,而在预览模式下只能查看文档。
Context类,用于保存当前模式
public class Context {
//预览模式
public static final int PREVIEW_STATE=-1;
//编辑模式
public static final int EDIT_STATE=0;
//当前状态
private IState curStat ...
中介者模式(Mediator Pattern)
用一个中介对象来封装一系列对象之间的交互,使各个对象不需要显式地引用其他对象实例,从而降低各个对象之间的耦合度,并且可以独立地改变对象间的交互关系。
举例:多人聊天,一个人发消息,其他人都能收到(服务器相当于中介者)
抽象用户类
public abstract class AbstractUser{
private IMediator mediator;
private String name;
public AbstractUser(String name,IMediator mediator){
this.nam ...
迭代器模式(Iterator Pattern)
提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示
JDK中java.util.Iterator就运用了迭代器模式
public interface Iterator<E> {
/**
* Returns {@code true} if the iteration has more elements.
* (In other words, returns {@code true} if {@link #next} would
* return an element ...
责任链模式(Chain of Responsibility Pattern)
责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。
举例:学生请假,小病一般班长就可以批假,稍严重的病老师就可以批假,重病校长可以批假。
学生接口
public interface IStudent {
/**
* description 0:班长可以处理 1:老师可以处 ...
代理模式(Proxy Pattern)
代理模式是软件设计模式中的一种基本技巧。代理模式的主要作用是为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不想或者不能直接引用另一个对象,而代理对象可以在客 ...
是AbstractStringBuilder的子类
构造方法
/**
* Constructs a string buffer with no characters in it and an
* initial capacity of 16 characters.
*/
public StringBuffer() {
super(16);
}
初始容量为16个字符
此类的所有方法都带关键字synchronized,说明此类是线程安全的
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence
Serializable
序列化接口:主要用于io传输,暂不做研究。
Comparable
详情请看博文http://danielhan.iteye.com/blog/2015449
CharSequence
字符序列接口
/**
* Allocates a new {@code String} so that it represents the seq ...
/**
* The value is used for character storage.
*/
char[] value;
/**
* The count is the number of characters used.
*/
int count;
这是此类的两个成员变量,value是存储字符用的,value.length表示字符容量。
count表示已经使用的长度。
对应的方法:
/**
* Returns the length (character count).
...
如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。
比如一个 ArrayList 类,在 ...
当需要对一个对象进行排序时,该对象应该实现Comparable接口,并实现其唯一的方法:int compareTo(T o)
在该方法中定义自己的排序规则,当调用Arrays.sort(Object[] a)方法时则回调compareTo()方法,并按照自己的规则对对象数组进行排序。
返回值及比较规则:
1、返回负值---->小于
2、返回零------>等于
3、返回正值---->大于
例子:
public class Worker implements Comparable<Worker>{
private String name;
p ...