- 博客(27)
- 收藏
- 关注
原创 四种线程池类型
ExecutorService threadPool = Executors.newFixedThreadPool(5);ExecutorService threadPool4 = Executors.newSingleThreadExecutor();ExecutorService threadPool2 = Executors.newCachedThreadPool();Executo...
2019-04-24 11:49:44 2356
原创 生产者消费者模式
//wait 和 notifypublic class ProducerConsumerWithWaitNofity { public static void main(String[] args) { Resource resource = new Resource(); //生产者线程 ProducerThread p1 = new ...
2019-04-24 11:48:19 186
原创 ThreadPoolExecutor讲解
public static void main(String[] args) { final ExecutorService threadPool = new ThreadPoolExecutor( 3, 10, 60L, ...
2019-04-24 10:48:42 190
原创 java多线程并发系列之闭锁(Latch)和栅栏(CyclicBarrier)
闭锁(Latch):一种同步方法,可以延迟线程的进度直到线程到达某个终点状态。通俗的讲就是,一个闭锁相当于一扇大门,在大门打开之前所有线程都被阻断,一旦大门打开所有线程都将通过,但是一旦大门打开,所有线程都通过了,那么这个闭锁的状态就失效了,门的状态也就不能变了,只能是打开状态。也就是说闭锁的状态是一次性的,它确保在闭锁打开之前所有特定的活动都需要在闭锁打开之后才能完成栅栏(Cycl...
2019-04-23 12:27:17 194
翻译 sql语句中各子部分的执行顺序
红色序号给出了执行的顺序:(1)from:对Table1和Table2执行笛卡尔积,也就是两个表的行的各种组合,共5*5=25行,生成虚拟表VT1(2)on:选择VT1中的那些Table1.id=Table2.id的所有行,生成虚拟表VT2。(3)inner join:这里是内部连接,直接就是VT2,如果是outer join,如left join、right join、full jo
2017-05-11 15:32:21 2201
原创 Spring编程式事务
Spring编程式事务:spring 的org.springframework.transaction.support.TransactionTemplate可以实现编程式事务:TransactionTemplate transactionTemplate = new TransactionTemplate();transactionTemplate.execute(new Tran
2017-05-09 12:25:37 240
原创 Spring Property配置
Spring 的Property配置针对的是类里的setter方法,例如: 此段配置是对mybatis的事务隔离级别进行配置,isolationLevelName在org.springframework.transaction.support.TransactionTemplate有其相应的org.springframework.transac
2017-05-08 15:20:26 561
原创 Mybatis #和$的区别
#会进行预编译,其实现是通过JDBC的PreparedStatement类,mybatis启用了预编译功能,在sql执行前,会先将上面的sql发送给数据库进行编译,执行时,直接使用编译好的sql,替换占位符“?”就可以了。因为sql注入只能对编译过程起作用,所以这样的方式就很好地避免了sql注入的问题,在mybatis中,”${xxx}”这样格式的参数会直接参与sql编译,从而不能避免注入攻击。但
2017-04-18 15:19:45 239
原创 java中方法的形参产生的是对象的副本
class SubTest{int a;String b;public SubTest(int a, String b){this.a = a;this.b = b;}}public class MyTest {private static void change(SubTest test){test.a = 100;test = new
2017-03-20 12:54:03 442
原创 java gc触发
由于对象进行了分代处理,因此垃圾回收区域、时间也不一样。GC有两种类型:Scavenge GC和Full GC。Scavenge GC一般情况下,当新对象生成,并且在Eden申请空间失败时,就会触发Scavenge GC,对Eden区域进行GC,清除非存活对象,并且把尚且存活的对象移动到Survivor区。然后整理Survivor的两个区。这种方式的GC是对年轻代的Eden
2017-03-15 19:40:06 1429
原创 java 字符串的intern方法
String a = new String("java").intern(); String b = new String("java").intern(); System.out.println(a.equals(b)); System.out.println(a == b);输出结果:truetrueequals比较的对象的值,==比较的对象的地址
2017-03-15 19:13:05 302
原创 最大子串和的问题,java实现
public class MyTest { public static void main(String[] args) { int[] a = {-1,2,3,50,-16,1,20,-12}; int maxSum = 0; int first = 0; int last = 0; for(int i=0; i for(
2017-03-15 15:00:15 697
原创 并发和并行
并发:指系统或CPU的单位时间处理能力,如单核CPU的并发是通过在单位时间内再对时间分片,将线程在时间片内交替执行,而网站系统的并发指系统对连接或请求数的处理能力。并行:指同一时间点多个任务同时执行,如多核CPU在同一个时间点可以执行多个线程,这些线程之间是同时进行,无交替现象。
2017-01-18 18:04:04 187
原创 Java hashTable和hashMap的区别
1.官方推荐使用HashMap;2.HashTable线程安全,HashMap非线程安全,但效率较高;3.遍历方法上略有不同;4.HashTable的键和值都不能存NUll,HashMap可以;5.HashTable的默认初始hash数组的长度是11,之后会以oldsize*2+1的大小增加,HashMap的默认大小是16,之后会以oldsize*2的倍数增加
2017-01-09 14:09:47 284
原创 java生产者消费者
写了一个生产者消费者模式,但好像有数据不一致的问题,先记录下:package com.itrip.rp.openapi;import java.util.ArrayList;import java.util.List;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;
2016-12-28 16:23:32 211
转载 JDBC连接【转载】
public class MysqlDemo { public static void main(String[] args) throws Exception { Connection conn = null; String sql; // MySQL的JDBC URL编写方式:jdbc:mysql://主机名称:连接端口/数据库的名称?参
2016-12-28 15:19:56 165
原创 java中静态代码块,构造代码块,静态代码块的区别
执行顺序:(优先级从高到低。)静态代码块>main方法>构造代码块>构造方法普通代码块:在方法或语句中出现的{}就称为普通代码块。普通代码块和一般的语句执行顺序由他们在代码中出现的次序决定--“先出现先执行”构造块:直接在类中定义且没有加static关键字的代码块称为{}构造代码块。构造代码块在创建对象(new)时被调用,每次创建对象都会被调用,并且构造代码块的执行次序优先于类构造
2016-12-28 15:01:18 345
原创 Java中int,Integer,equals,==的区别
public class TestClass {public static void main(String[] args) {Integer a= new Integer(5);Integer b= new Integer(5);Integer c=127;Integer d = 127;Integer e = 128;Integer f = 128;in
2016-12-26 20:04:15 3706
原创 程序变量为什么不能以数字开头,也不能用关键字和保留字
词法分析基本上分三步,第一步把词法单元分割出来,第二步判断词性,是数字,是普通变量,是关键字,还是是类型变量...第三步确定其符合本词性所限定的语法规则,然后进行下一步的处理如果第一个字符就能判断词性的话,接下来就是把这个词交给相应词性的正则表达式匹配器来判断是否通过如果数字能做普通变量的开头,那么就要先匹配数字,直到遇到特定字符串再
2016-12-15 16:23:04 2539
原创 Mysql使用注意事项
1.mysql中int(m)的m是显示长度,实际保存长度是2的32方,即4个字节。2.varchar(100) not nulldefault'***',当insert语句中没有name字段时以default的值为准,当insert中有name字段,但值为null时会报错。3.mysql的timestamp字段如果不设置默认值,那么当进行更新操作时,此类字段会自动更新时间
2016-12-15 16:20:55 421
原创 Java replace和replaceAll的区别
replace和replaceAll都是替换全部,区别是前者是字符替换,后者是正则表达式替换,replace("aa$bb","#")的结果是“aa#bb”,replaceAll的结果是aa$bb#,因为在replaceAll中$符是正则表达式结尾符的意思
2016-12-15 16:16:53 672
原创 Spring InitializingBean接口的作用
Spirng的InitializingBean为bean提供了定义初始化方法的方式。InitializingBean是一个接口,它仅仅包含一个方法:afterPropertiesSet()。凡是继承该接口的类在初始化bean时都会执行afterPropertiesSet方法。@Component 用于将此类加入到容器中,这样启动时spring加载此类,就会执行afterProperties
2016-12-15 16:12:56 288
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人