
JAVA
文章平均质量分 96
aBOUNTWINTER
这个作者很懒,什么都没留下…
展开
-
正则表达式
String类的正则表达式操作:String reg="\d*";1.整个字符串是否匹配: String matches();2.切割:String split();3.替换 String replace3.取匹配子串简单常用的正则表达式:并集:[a-d[m-p]] a到d或m到p交集:[a-z&&[def]] d,e或f [a-z&&原创 2015-07-27 11:40:05 · 474 阅读 · 0 评论 -
java-类路径下加载
getClass().getResource("path")获取相对当前类的资源,path 路径是相对于当前类的路径getClassLoader().getResource()获取相对于classpath路径的资源原创 2016-01-11 18:41:54 · 2135 阅读 · 0 评论 -
java-源码解读-FutureTask
使用场景java多线程编程中,我们经常使用线程池提交任务,并且通过Future来获取任务执行的结果,以此达到异步或者并行执行的效果。通常我们是这样使用线程池:public class ExecutorServiceDemo { public static void main(String[] args) { // 创建一个线程池对象,控制要创建几个线程对象。 ...原创 2017-07-18 10:39:53 · 2563 阅读 · 2 评论 -
java-性能
1.使用ThreadLocalRandom.current()代替Math.random()产生随机数Java 7之前我们使用Math.random()产生随机数,使用原子变量来保存当前的种子,这样两个线程同时调用序列时得到的是伪随机数,而不是相同数量的两倍。ThreadLocalRandom是JDK 7之后提供并发产生随机数,能够解决多个线程发生的竞争争夺。ThreadLocal原创 2015-10-15 16:55:37 · 575 阅读 · 0 评论 -
java-常用工具命令
jps可以列出本机所有java进程的pid jps [ options ] [ hostid ] 选项 -q 仅输出VM标识符,不包括class name,jar name,arguments in main method -m 输出main method的参数 -l 输出完全的包名,应用主类名,jar的完全路径名 -v 输出jvm参数 -V 输出通过flag文原创 2016-01-07 11:00:01 · 489 阅读 · 0 评论 -
java-实现资源访问的超时和并发控制
实现资源访问的超时和并发控制 try { Future future = this.threadPoolExecutor.submit(runnable); while (!future.isDone()) { future.get(“超时时间”, TimeUnit.SECONDS); }原创 2015-07-28 17:28:31 · 1046 阅读 · 0 评论 -
java-源码解读-线程池实现原理-0
线程池初识我们一般这样使用线程池:public class ExecutorServiceDemo { public static void main(String[] args) { // 创建一个线程池对象,控制要创建几个线程对象。 ExecutorService pool = Executors.newFixedThreadPool(2); ...原创 2017-08-16 19:38:55 · 694 阅读 · 0 评论 -
java-源码解读-java类加载机制
作为一个java程序员,估计没有人不知道java的类加载机制是委托父加载器加载,也知道java有这么几大类加载器,分别是BootStrapClassLoader,ExtClassLoader,AppClassLoader以及自定义类加载器。但对于他们的之间的关系是怎样建立起来,估计很少有人说得清楚,下面就通过最权威的源码(jdk1.8),回答以上问题。ClassLoaderjava用Cla原创 2017-09-21 10:53:34 · 663 阅读 · 0 评论 -
java-源码解读-线程池实现原理-1
为什么要使用线程池合理利用线程池能够带来三个好处。(复制过来的,懒)第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。线程池的使用先定义线...原创 2017-11-22 20:09:39 · 406 阅读 · 0 评论 -
缓存行
我们经常提到一个短语Mechanical Sympathy,这个短语也是Martin博客的标题(译注:Martin Thompson),Mechanical Sympathy讲的是底层硬件是如何运作的,以及与其协作而非相悖的编程方式。我在上一篇文章中提到RingBuffer后,我们收到一些关于RingBuffer中填充高速缓存行的评论和疑问。由于这个适合用漂亮的图片来说明,所以我想这是下一个我转载 2017-11-28 10:57:38 · 2446 阅读 · 1 评论 -
java-ContextClassLoader的意义
Thread的实现化过程:public Thread() { init(null, null, "Thread-" + nextThreadNum(), 0);}private void init(ThreadGroup g, Runnable target, String name, long stackSize) { ini原创 2016-07-06 13:22:15 · 639 阅读 · 0 评论 -
java-Java对象的强、软、弱和虚引用原理
1.Java对象的强、软、弱和虚引用在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。这 就像在日常生活中,从商店购买了某样物品后,如果有用,就一直保留它,否则就把它扔到垃圾箱,由清洁工人收走。一般说来,如果物品已经被扔到垃圾箱,想再 把它捡回来使用就不可能了。 但有时候情况并不这...转载 2018-02-01 14:32:07 · 438 阅读 · 0 评论 -
java-源码解读-线程池提交之execute和submit有何不同
先上测试用例package com.phl.threadpool;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Future;/** * @Title:SubmitExecuteMain * @Descripti...原创 2017-09-28 14:42:21 · 3729 阅读 · 0 评论 -
java-源码解读-jdk1.6-LinkedHashMap与HashMap
摘要: HashMap和双向链表合二为一即是LinkedHashMap。所谓LinkedHashMap,其落脚点在HashMap,因此更准确地说,它是一个将所有Entry节点链入一个双向链表的HashMap。由于LinkedHashMap是HashMap的子类,所以LinkedHashMap自然会拥有HashMap的所有特性。比如,LinkedHashMap的元素存取过程基本与HashMap基本...转载 2018-04-03 15:16:58 · 373 阅读 · 0 评论 -
java-synchronized与volatile
重排序的影响重排序不会给单线程带来内存可见性的问题。多线程中,线程交互执行时,重排序可能会造成内存可见性的问题。synchronized 即能保证可见性,又能保证原子性。volatile只能保证可见性,不能保证原子性。导致共享变量在线程间不可见的原因1.线程的交叉执行2.重排序结合线程交叉执行3.共享变量更新后的值没有及时更新到主内存中synchron...原创 2016-10-12 10:28:18 · 365 阅读 · 0 评论 -
java-jar的格式
ManifestDefault ManifestWhen you create a JAR file, the default manifest file simply contains the following:Manifest-Version: 1.0Created-By: 1.7.0_06 (Oracle Corporation)hese lines sh原创 2016-07-28 19:41:28 · 1693 阅读 · 0 评论 -
java-类初始化
类初始化时机遇到new ,getstatic,putstatic,或invokestatic 这4条字节码指令时,如果类没有进行过初始化,则需要先触发其初始化。这4条指令最常见的java代码场景是:使用new关键字实例化对象的时候。读取或设置一个类的静态字段(被final修饰,已在编译期把结果放入常量池的静态字段除外)使用java.lang.reflect包的方法对类进行反原创 2016-08-24 13:29:59 · 416 阅读 · 0 评论 -
Spring-资源
Spring’s Resource interface is meant to be a more capable interface for abstracting access to low-level resources。public interface Resource extends InputStreamSource { boolean exists();原创 2015-08-27 15:41:14 · 622 阅读 · 0 评论 -
Spring-事件体系
Spring事件体系包括三个组件:事件,事件监听器,事件广播器。事件:ApplicationEvent事件监听器:ApplicationListener,对监听到的事件进行处理。事件广播器:ApplicationEventMulticaster,将Springpublish的事件广播给所有的监听器。Spring在ApplicationCo转载 2015-08-29 10:44:53 · 529 阅读 · 0 评论 -
java-解决随机类型概率问题
举个例子,游戏中玩家推倒了一个boss,会按如下概率掉落物品:10%掉武器 20%掉饰品 30%掉戒指 40%掉披风。现在要给出下一个掉落的物品类型,或者说一个掉落的随机序列,要求符合上述概率。一般人会想到的两种解法第一种算法,构造一个容量为100(或其他)的数组,将其中10个元素填充为类型1(武器),20个元素填充为类型2(饰品)...构造完毕之后,在1到100之间取原创 2015-08-05 11:20:27 · 1075 阅读 · 1 评论 -
java-System.getEnv()与System.getProperties()
System.getenv() SHELL : /bin/bash d : e TMPDIR : /var/folders/ds/jh5_6dhd0_14jwrx4tb5nr6r0000gn/T/ JAVA_HOME : /Library/Java/JavaVirtualM原创 2015-12-18 09:57:00 · 1203 阅读 · 0 评论 -
spring-扩展点-BeanPostProcessor
BeanPostProcessorThe org.springframework.beans.factory.config.BeanPostProcessor interface consists of exactly two callback methods. When such a class is registered as a post-processor with the con转载 2015-08-29 09:29:24 · 575 阅读 · 0 评论 -
dubbo实现
dubbo实现转载 2015-08-05 10:56:56 · 437 阅读 · 0 评论 -
java-ThreadLocal的实现
1.每个线程内部都维护一个ThreadLocalMap。ThreadLocal.ThreadLocalMap threadLocals = null;2.ThreadLocal的set: public void set(T value) { Thread t = Thread.currentThread(); ThreadLocalMa原创 2016-01-22 17:39:46 · 387 阅读 · 0 评论 -
java-迭代删除
package com.phl;import java.util.ArrayList;/** * Created by panhongliang on 16/1/30. */public class Test { public static void main(String[] args) { List arrayList=new ArrayList();原创 2016-01-30 17:56:16 · 850 阅读 · 0 评论 -
java-备忘
集合 commons-collections commons-collections 3.2.2属性文件操作 commons-configuration commons-configuration 1.10原创 2016-06-21 17:18:12 · 351 阅读 · 0 评论 -
java-编译openJdk
Using java runtime at: /opt/jdk1.7.0_04/jreError occurred during initialization of VMUnable to load native library: /opt/jdk1.7.0_04/jre/lib/i386/libjava.so: symbol JVM_SetNativeThreadName, versio原创 2016-08-30 15:12:46 · 2014 阅读 · 1 评论 -
java-事件监听
在发生事件的地方触发监听事件的监听器中的方法。1.public abstract class XXXEvent extends EventObject{ ->事件}2.public interface XXXEventListenerE extends XXXEvent> extends EventListener{ ->监听器 public void onAction(){}}3.pub原创 2015-07-28 16:26:18 · 522 阅读 · 0 评论