
Java
文章平均质量分 91
java语言基础知识、源码分析、编码感悟。
bit-cafe
深入学习才能体会到知识带来的快了!
展开
-
线程池任务异常处理
线程池异常处理,execute方法、submit方法有什么区别?原创 2022-06-14 07:30:00 · 1784 阅读 · 0 评论 -
ThreadPoolExecute执行流程、状态流转
ThreadPoolExecute执行流程、状态流转、Worker执行任务为何要加锁原创 2022-06-13 07:30:00 · 929 阅读 · 0 评论 -
statement 、prepareStatement的用法和解释
一、prepareStatement 的用法和解释1.PreparedStatement是预编译的,对于批量处理可以大大提高效率. 也叫JDBC存储过程2.使用 Statement 对象。在对数据库只执行一次性存取的时侯,用 Statement 对象进行处理。PreparedStatement 对象的开销比Statement大,对于一次性操作并不会带来额外的好处。3.stateme原创 2015-09-06 16:56:50 · 29975 阅读 · 1 评论 -
jude 使用学习
我希望你能够使用JUDE去学习和体验UML,JUDE是一个建模工具,你可以用它去画UML。下面我会指导你通过一些实例去学习使用JUDE来画UML。一、Overview l UML and UML toolsl Description of JUDEl Installation of JUDEl Fundamental Componen转载 2016-02-17 22:34:50 · 11609 阅读 · 3 评论 -
JDBC 配置文件工厂模式封装
package com.tesjd; import java.sql.*; //已测试过 public class DB { //在使用时都要加载驱动所以放在静态代码块中 static { try{ Class.forName("com.mysql.jdbc.Driver"); }catch(Class原创 2013-07-05 10:59:45 · 1942 阅读 · 0 评论 -
解析 xml 空格错误
在解析xml时 要注意一个问题那就是 “ ” 之前不能有空格,如果出现空格就会报如下异常,所以在写xml文件时要注意不能在开始有空格!org.dom4j.DocumentException: Error on line 1 of document : The processing instruction target matching "[xX][mM][lL]" is not原创 2016-04-26 08:52:11 · 5484 阅读 · 1 评论 -
List集合的并集、交集、差集以及源码
其实list集合在平时开发中使用的比较多,下面我们来看看list集合的并集、交集、差集以及源码1、并集:jdk api 中并集的实现有两种方式:(1)、在原集合的末尾追加(2)、在原集合的指定位置开始追加(1)、addAll(Collection<? extendsE> c) 按照指定 collection 的迭代器所返回的元素顺序原创 2016-05-17 19:48:56 · 5300 阅读 · 0 评论 -
Quartz的Demo
下面我们来看看两个小demo实现定时任务的执行:一、package test2;import org.quartz.CronScheduleBuilder;import org.quartz.JobBuilder;import org.quartz.JobDetail;import org.quartz.Scheduler;import org.quartz.Scheduler原创 2016-06-17 17:45:32 · 943 阅读 · 0 评论 -
Arrays.asList返回的集合
以前也知道Arrays.asList 返回的List集合和现在java.util.List 集合不一样,但具体没看,今天在项目中用到并报错排查了一下就找到问题了,记录一下:一、下面是Arrays类下的ArrayList 类和方法源码:1、Arrays 调用方法 @SafeVarargs public static List asList(T... a) {原创 2016-06-17 13:33:58 · 1602 阅读 · 0 评论 -
jdbc 学习总结
通过前面的学习我们或多或少学到了一些东西也有一些自己的理解下面就总结一下:一、jdbc 使用的流程:1、驱动的加载Class.forName("com.mysql.jdbc.Driver");了解java反射的话看到这个就明白了,就是将指定的类添加到jvm内存中,这里也就是将com.mysql.jdbc.Driver 这个类添加到jvm内存中。当类初始化时会执行类的stat原创 2016-01-09 17:03:53 · 1688 阅读 · 0 评论 -
java String 类的replace 和replaceAll 方法替换“?”号
这两个 方法确实简单,我们也知道他们就是用来进行字符和字符串的替换的,但是还是注意:replace(char oldChar, char newChar) 返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。replaceAll(String regex,Stri原创 2016-01-21 21:20:11 · 14258 阅读 · 0 评论 -
jdbc 详解
jdbc 先关的文章看了很多,自己也写了一篇,但是看到这篇文章个人感觉作者写的确实很好,先看看后面相关的文章,可惜也是转载的文章而且没有原文地址,也只能看到这么一篇!!在以java application server应用为主的平台是,JDBC的最高级应用是DataSource的实现,其它的,JDO,webcache,hibernate等不过是一种封装,所以看数据库应用的性能转载 2016-01-11 22:02:18 · 3232 阅读 · 0 评论 -
mysql jdbc驱动源码分析(获取链接 connection)
在前一篇中我们分析了驱动的加载,这篇我们看看数据库链接的获取即Connection的获取,废话少说进入正题。一、获取链接的方式有三种:1、getConnection(String url,java.util.Properties info);2、getConnection(String url,String user, String password);3、getConne原创 2015-12-27 14:00:46 · 6070 阅读 · 0 评论 -
诊断Java中的内存泄露
每次我怀疑有内存泄漏时,我都要翻箱倒柜找这些命令。所以,这里总结一下以备后用:首先,我用下面的命令监视进程:1while ( sleep 1 ) ; do ps -p $PID -o %cpu,%mem,rss ; done(如果有的话还转载 2015-12-07 23:02:17 · 677 阅读 · 0 评论 -
mysql jdbc驱动源码分析(驱动加载)
jdbc链接数据库的时候我们知道有如下几个步骤:1、加载驱动2、获取数据库链接Connection3、获取statement、preparedstatement4、执行查询、更新语句获取结果ResultSet5、调用ResultSet结果集实例的方法来获取数据6、释放资源第一篇我们就来看看驱动以及加载驱动:我们刚开始学的时候会有这样的疑问,什么是驱动驱动原创 2015-12-22 23:52:02 · 4363 阅读 · 0 评论 -
java中的异常以及 try catch finally以及finally的执行顺序
java try、catch、finally及finally执行顺序详解1.为什么要用finally先看一个没有finally的异常处理try-catch语句:假设count为要使用到的资源,并且用完要求释放此资源。那么我们可以把释放资源的语句放到try-catch后执行,当前的程序不管是在执行完try语句块还是catch语句块,都会顺序执行到下原创 2013-10-21 21:43:41 · 23272 阅读 · 4 评论 -
发送邮件(java)
像发送邮件这种都是一个工具代码,所以备份一下,如有需要可以直接复制:注意: 使用java 发邮件的时候要导入一个jar包,下载地址: javax.mail代码如下:package com.fang.autosendmail;import java.util.Date;import java.util.Properties;import javax.mail.B原创 2015-12-04 14:17:38 · 1186 阅读 · 0 评论 -
Iterator的remove()和Collection的remove()
一、遍历集合的方式有很多,这里就以List 为例如果是单线程的我们一般使用: int len= list.size()for (int i=0;i<len;i++){}如果是多线程的程序,我们就用Iterator 迭代器来遍历:Iterator it= list.iterator()while(it.hasNext()){T t= it.next(); /原创 2015-12-02 23:51:14 · 9639 阅读 · 2 评论 -
List集合的clear方法
在使用list 结合的时候习惯了 list=null ;在创建这样的方式,但是发现使用list的clear 方法很不错,尤其是有大量循环的时候1、list 接口 的ArrayList 类的clear() 方法源码如下:/** * Removes all of the elements from this list. The list will * be empt原创 2015-12-02 23:05:27 · 33286 阅读 · 2 评论 -
java HttpsURLConnection 实现https请求
转自:http://www.blogjava.net/etlan/archive/2006/06/29/55767.html摘 要 JSSE是一个SSL和TLS的纯Java实现,通过JSSE可以很容易地编程实现对HTTPS站点的访问。但是,如果该站点的证书未经权威机构的验证,JSSE将拒绝信任该证书从而不能访问HTTPS站点。本文在简要介绍JSSE的基础上提出了两种解决该问题的方法。转载 2016-08-25 09:11:43 · 27172 阅读 · 1 评论 -
关于 Content-Type:application/x-www-form-urlencoded 和 Content-Type:multipart/related
最近项目中用到的一个是用一个页面接收c程序post过来的一断字符串..总接收不到值...我用C#写一个测试可以正常接收到值.最后抓包比较区别只是Content-Type:application/x-www-form-urlencoded 和 Content-Type:multipart/related查资料得: application/x-www-form-转载 2016-08-14 10:31:19 · 1569 阅读 · 0 评论 -
google本地缓存LoadingCache使用
在项目中语使用本地缓存记录一下,具体代码如下:@Servicepublic class StrategyLocal { private static final Logger LOG = LoggerFactory.getLogger(StrategyLocal.class); @Autowired private RouteInfoDAO routeInfoDAO; private原创 2017-10-27 20:05:32 · 6105 阅读 · 4 评论 -
Java 延迟队列实例
延时队列,第一他是个队列,所以具有对列功能第二就是延时,这就是延时对列,功能也就是将任务放在该延时对列中,只有到了延时时刻才能从该延时对列中获取任务否则获取不到……应用场景比较多,比如延时1分钟发短信,延时1分钟再次执行等,下面先看看延时队列demo之后再看延时队列在项目中的使用:简单的延时队列要有三部分:第一实现了Delayed接口的消息体、第二消费消息的消费者、第三存放消息的延时队列,原创 2017-09-24 23:27:43 · 5495 阅读 · 1 评论 -
Hashtable 、ConcurrentHashMap源码学习
一、简介HashTable是线程安全的HashMap,两个实现原理都是一样的,只是HashTable集合的所有方法都是synchronized方法,而ConcurrentHashMap就不一样了,他最底层的存储使用的也是和HashMap一样的但是,在线程安全处理上有很大区别,他使用了分段的概念,来减小锁的范围,而且在获取时就没有加锁,而是使用了volatile变量来修饰V和Next,总的来说C...原创 2017-05-07 20:07:17 · 488 阅读 · 0 评论 -
HashMap、HashTable、TreeMap 深入分析及源码解析
在Java的集合中Map接口的实现实例中用的比较多的就是HashMap,今天我们一起来学学HashMap,顺便学学和他有关联的HashTable、HashTree一、HashMap 1、基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了非同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此原创 2015-06-08 01:58:45 · 6546 阅读 · 2 评论 -
CountDownLatch和CyclicBarrier的区别
在网上看到很多人对于CountDownLatch和CyclicBarrier的区别简单理解为CountDownLatch是一次性的,而CyclicBarrier在调用reset之后还可以继续使用。那如果只是这么简单的话,我觉得CyclicBarrier简单命名为ResetableCountDownLatch好了,显然不是的。CountDownLatch: A synchronizati原创 2017-04-09 22:06:03 · 603 阅读 · 0 评论 -
java多线程3(线程的阻塞和生命周期)
上一篇文章中我们看到了多个线程的顺序执行和非顺序执行的情况,我们知道现在大多jvm都是抢占式的所以出现非顺序的情况是正常的,而为了某些需求我们也可以同过线程阻塞来实现线程的顺序执行,下面我们就看看看线程阻塞的方式有哪些,他们之间有什么联系有什么区别。一、线程的阻塞方式1、sleep(long millis)(1)、Thread类的sleep方法就是让当前正在运行的线程休眠(阻塞)指定时原创 2017-01-15 18:41:10 · 1229 阅读 · 0 评论 -
java多线程4(synchronized方法、代码块)
在之前的文章中创建线程,启动多个线程去完成不同的任务,这样在多处理器的机器上效率会高一些,但是如果多线程都要访问同一个共享资源,这时如果不用一些方法让线程同步执行,则就会出现脏读等现象,执行后得到的结果也不是我们想要的结果,出现这种情况是因为操作是非线程安全安全而导致的,如果是线程安全的则不会出现这种情况,下面来看看什么是线程安全什么是非线程安全的定义:线程安全:当多个线程类并发操原创 2017-01-18 18:48:29 · 986 阅读 · 0 评论 -
深入理解volatile关键字
volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我转载 2017-01-19 12:02:30 · 487 阅读 · 0 评论 -
java 多线程5(volatile关键字)
synchronized 同步方法、同步代码块能实现多线程在同一时刻只有一个线程能执行同步方法或同步代码块中代码即实现同步代码块的队列执行,下面来看看volatile关键字。使用volatile关键字增加了实例变量在多个线程之间的可见性但volatile关键字最致命的的缺点是不支持原子性。synchronized和volatile对比1、关键字volatile是线程同步的轻量级原创 2017-01-19 11:58:04 · 519 阅读 · 0 评论 -
java对象锁和类锁全面解析(多线程synchronized关键字)
最近工作有用到一些多线程的东西,之前吧,有用到synchronized同步块,不过是别人怎么用就跟着用,并没有搞清楚锁的概念。最近也是遇到一些问题,不搞清楚锁的概念,很容易碰壁,甚至有些时候自己连用没用对都不知道。今天把一些疑惑都解开了,写篇文章分享给大家,文章还算比较全面。当然可能有小宝鸽理解得不够深入透彻的地方,如果说得不正确还望指出。看之前有必要跟某些猿友说一下,如果看一遍没转载 2017-01-19 09:25:58 · 598 阅读 · 1 评论 -
线程管理框架Executor,ExecutorService
之前的我们的线程启动是使用new Thread().start()这种方式来启动的,而且当要执行多个任务的时候就会创建多个线程来执行这些任务,下面我们来看看使用Executor框架来管理线程。为什么要使用Executor线程池框架1、每次执行任务创建线程 new Thread()比较消耗性能,创建一个线程是比较耗时、耗资源的。2、调用 new Thread()创建的线程缺乏管理,被称为原创 2017-02-09 15:27:24 · 1520 阅读 · 1 评论 -
CopyOnWrite并发集合
Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个线程想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并发容器,它们是CopyOnWriteArrayList和CopyOnWriteArraySet转载 2017-02-05 15:57:05 · 631 阅读 · 0 评论 -
java多线程2(线程的创建方式以及启动)
上一篇文章中我们学习了任务,线程的概念以及任务和线程的关系,下面看看创建线程的方式有哪些一、线程创建方式Thread类的继承、Runnable接口的实现、Callable接口的实现(Callable接口有返回值)平时大家使用多的可能就是Thread类的继承和Runnable接口的实现这两种,下面我们来看看实例1、继承Thread类创建线程package test3;publ原创 2017-01-10 00:28:42 · 507 阅读 · 0 评论 -
并发容器ConcurrentHashMap深度剖析
还记得大学快毕业的时候要准备找工作了,然后就看各种面试相关的书籍,还记得很多面试书中都说到:HashMap是非线程安全的,HashTable是线程安全的。那个时候没怎么写Java代码,所以根本就没有听说过ConcurrentHashMap,只知道面试的时候就记住这句话就行了…至于为什么是线程安全的,内部怎么实现的,通通不了解。今天我们将深入剖析一个比HashTable性转载 2017-02-04 18:10:46 · 706 阅读 · 0 评论 -
java多线程1(任务、线程)
这里我们先来看看一些概念:1、任务:任务可以简单的理解为一段代码,一个类的一个方法或者多个方法去做一件和多件事情,这就是任务,这段代码,方法你怎么写,写在哪里都可以。package test3;public class MainTest {public static void main(String[] args) { System.out.println("输出任务");}}原创 2017-01-09 16:35:39 · 610 阅读 · 0 评论 -
mysql jdbc驱动源码分析(Statement的executeQuery 和executeUpdate方法)
在前面的章节中我们获取了Statement对象,下面我们来看看Statement的executeQuery() 和executeUpdate() 方法来执行相关操作。原创 2016-01-03 20:10:53 · 6083 阅读 · 3 评论 -
preparestatement
//使用预处理来连接数据库import java.sql.*;public class DDD{public static void main(String []args){ String driver ="com.mysql.jdbc.Driver"; String URL="jdbc:mysql://localhost:3306/d原创 2013-04-30 17:06:20 · 1171 阅读 · 0 评论 -
JDBC--- 通过java来操作mysql事例
JDBC : java databases connection java 数据库连接; 在我们编写java程序来访问数据库,我们可以从中看到主要有两块;java程序 数据库但是有个疑问那我们写的java程序是怎么访问java的这两个之间没有任何的关系啊!是的的确是这样的。下面解决这个问题: 但我们使用了jdbc,可由厂商操作实现操作数据库接口的驱动程序,而java程序这几人员原创 2013-04-22 18:29:00 · 1126 阅读 · 0 评论 -
java实现直接出入、希尔、直接选择、快速排序
package com.tts;import java.util.Random;public class Sort {public static void sort(int[]a,int n){ int i,j ; int temp; for(i=0;i temp=a[i+1]; j=i; while(j>-1&&temp a[j+1]=a[j];原创 2013-12-01 13:58:41 · 1359 阅读 · 0 评论