- 浏览: 84679 次
- 性别:
- 来自: 北京
-
最新评论
-
wishjlucky:
分析得很详细
ognl.OgnlException: target is null for setProperty(null, "description", [Ljava.l -
onlydo:
只看到发送邮件,收邮件在哪里?
Spring邮件收发
文章列表
今天看到一个观点,觉得挺有道理的。“做技术的应该找大一点儿的公司和平台,为以后铺路”。确实啊,如果一直在小公司呆着,你永远都只能是小打小闹,不会有什么突破。等你稍微老一点儿,一大堆勤奋而且工资要求又低的新人涌入这个行业的时候,你就会被拍死在沙滩上!
去大公司的道理看似废话,大公司和大平台谁都想去啊,但不是每个人都能去的。我认为这不是重点,重点是,在你工作了一段时间之后,你还有没有想去大公司的欲望。
回顾自己四五年编码工作,期间当然也有过精彩时刻,但总的来说,还是有很多不足。有些时候不忙,有些时候即使忙也是瞎忙。算是有些蹉跎、有些碌碌无为了吧。到现在,我还需要费点儿劲儿才能想起 ...
首先,最简单的是一对多的连接,比如:
select student from Teacher t join t.students student where student....
如果是多对一呢?这里有隐式和显示的区别(上面的一对多的情况属于隐式连接)。可以像下面这样
select student from Student student
where student.teacher.age>30
这属于隐式的,Hibernate会自动连接Teacher表。也可以像下面这样显示的连接:
select student from Student student
left ...
- 2014-12-17 19:17
- 浏览 805
- 评论(0)
网上一搜“Eclipse插件安装”一大堆文章,之前也懒得记。刚才又安装了以下SVN插件,伤心啊。
我已经将SVN插件压缩文件下载到了本地,然后使用help->Install from site的安装方式来安装,结果先滚出一堆什么乱七八糟的东西来, ...
- 2014-12-02 23:03
- 浏览 787
- 评论(0)
快速排序可能是应用最广泛的排序算法了。流行的原因是因为它实现简单、适用于各种不同的输入数据且在一般的应用中比其他算法都要快得多。快速排序属于原地排序,不需要额外的空间(相对于归并排序)。快速排序算法的时间复杂度为NlogN。
快速排序和归并排序类似,也是分治思想是应用。归并排序每次将数组一分为二,将两边都排序之后再合并。快速排序算法是每次将数组进行切分,保证切分点在相对于两边的子数组是有序的。左边的子数组都不大于切分点,右边的字数组都不小于切分点。
public class QuickSort extends AbstractSort implements Sort {
@Overr ...
- 2014-11-22 10:40
- 浏览 688
- 评论(0)
这里不打算说明正则表达式的具体细节,只讲Java中使用正则表达式的一些基础知识。
一个简单的例子,使用正则表达式来匹配电话号码,电话号码包括了三到四位的区号;可有可无的连接符;6位到八位的电话号码。正则表达式如下:
\d{3,4}-?\d{6,9}
这里仅仅是举个例子,实际使用中,考虑到电话号码的合法性,区号还需要改进。简单而言,像下面这样就能使用这个正则表达式对字符串进行验证了:
boolean match = Pattern.matches("\\d{3,4}-?\\d{6,9}", "010-23232222");match就是我们需要的 ...
- 2014-11-16 17:51
- 浏览 3819
- 评论(0)
归并排序是分治思想的一个很好的例子。它比希尔排序在时间复杂度上更优,为NlogN,并且属于稳定排序方法(稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,ri=rj,且ri在rj之前,而在排序后的序列中,ri仍在rj之前,则称这种排序算法是稳定的;否则称为不稳定的)。
自上而下的归并排序思想是,依赖于递归,逐级将待排序对象分割为较小的集合,直到这个集合只剩下一个元素,最后再归并每两个集合,排序的动作就发生在这个归并(merge)的时候。一分一合之间,集合就被排序了。
public class MergeSort {
...
- 2014-11-15 18:53
- 浏览 771
- 评论(0)
首先,拿到一个Class,可以通过如下方式来判断是否是一个数组类型:
Class<?> c = f.getType();
if(c.isArray()){
...
}可以通过:
c.getComponentType()来获取到数组元素的类型。
然后,可以通过下面的方式来创建一个数组:
Object o = Array.newInstance(c, n);
添加数组元素到数组中:
val = ...//构建数组元素
Array.set(o, i, val);
下面的oo就是最后的结果了:
Object[] oo = (Object[])o;
...
- 2014-11-03 11:32
- 浏览 413
- 评论(0)
首先,将涉及到排序的基本操作抽象为一个接口,其中包括一下一些方法:(这里的约定是从小到大的排序)
public interface Sort {
/**
* 对数组a进行排序
* @param a
*/
public void sort(Comparable[] a);
/**
* 大小比较
* @param a
* @param b
* @return 如果a<b,返回true,否则false
*/
public boolean less(Comparable a,Comparable b);
/**
* 交换数组中连个元素的 ...
- 2014-10-26 22:30
- 浏览 679
- 评论(0)
本来想用InstallAnyWhere来制作一个安装文件,里面包含一个tomcat,结果发现InstallAnyWhere一时半会儿可能学不下来。我的目的是想用Java SWT做一个壳子,内嵌一个浏览器,这个浏览器访问tomcat应用,让整个程序看起来像是一个CS架构的 ...
- 2014-10-24 16:55
- 浏览 3248
- 评论(0)
安装文件:http://pan.baidu.com/s/1o6NsbgA 密码:1qrh
破解工具:http://pan.baidu.com/s/1kTA6WEb 密码:wnjs
1、 在安装的最后一步选择激活,点击下一步
2、 随便输入一串激活码,如(1111111111……),点击下一步.3、 提示出错,不用管,选择电子邮件激活,下一步4、 出现一串的序列码,拷贝它。5、 打开[InstallShield.12.豪华完全版].keygen.exe;粘上那串序列码,点create^,会生成一串很长的序列码,拷贝它。6、 回到第四步的对话框,粘上序列码,ok.
- 2014-10-24 10:39
- 浏览 948
- 评论(0)
算法来自Algorithms一书1.5节,在此备忘。
该书配套网站:http://algs4.cs.princeton.edu/15uf/
算法解决的问题
解决的是动态连通性问题,给定N个点和N个点之间的连通数据,例如:
N = 10(0,1,2,3,4,5,6,7,8,9)
连通数据:
(4,3)
(3,8)
(6,5)
(9,4)
(2,1)
(8,9)
(5,0)
(7,2)
(6,1)
(1,0)
(6,7)
效果图如下:
问题就是,如何判断给定的两个点是连通的?比如上图中,(8,9)、(1,0)、(6,7)都是连通的。如何判断这些节点中有多少个连 ...
- 2014-10-19 17:18
- 浏览 1074
- 评论(0)
1.iReport和jasperreport之间的关系
个人理解的,iReport仅是一个报表设计器,他所能产生的结果就是jrxml文件,即报表设计木板文件。具体生成为报表,如pdf,word的时候,需要依赖于jasperreport库。
2.使用流程:
这是官方文档中的 ...
- 2014-10-18 18:56
- 浏览 688
- 评论(0)
一般的集合,如ArrayList、HashSet、HashMap等,都是线程不安全的。不安全的表现是什么?
ConcurrentModifyException
都知道,在遍历集合的时候不能对集合进行添加和删除操作,否则就会抛这个一场。如果一个线程正在遍历一个集合的时候另外一个线程往这个集合中增加或删除了元素,那么程序就会出这个异常。
这个异常的原理是,集合中有一个版本号,每次修改(添加或删除)集合的时候,版本号都会往上涨。当开始遍历集合的时候,先记录下这个版本号,在遍历期间,如果发现这个版本号和集合当前的版本号不等,就会抛这个异常。
死循环
集合的hasNext方法实现如下:
...
- 2014-10-18 18:29
- 浏览 796
- 评论(0)
BlockingQueue在生产者消费者模式中运用非常广泛,生产者往队列中增加产品,消费中从队列中获取产品。在增加和删除队列元素的时候,是否阻塞是可选的,比如队列为空时再获取队列元素时,是返回空、返回null还是抛异常,下面的摘自api文档的说明:
Throws exception
Special value
Blocks
Times out
Insert
add(e)
offer(e)
put(e)
offer(e, time, unit)
Remove
remove()
poll()
- 2014-10-18 17:54
- 浏览 635
- 评论(0)
Exchanger可以实现两个线程之间的数据交换:
final Exchanger<String> exchanger = new Exchanger<String>();
new Thread(new Runnable(){
@Override
public void run() {
try {
Thread.sleep(new Random().nextInt(5000));
} catch (InterruptedException e) {
e.printStackTrace();
}
S ...
- 2014-10-18 17:17
- 浏览 612
- 评论(0)