
Java基础
haozhugogo
这个作者很懒,什么都没留下…
展开
-
开发中内存溢出问题及解决
原文地址:http://www.cnblogs.com/yangyi1024/p/6417874.html内存溢出的解决思路内存溢出是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于虚拟机能提供的最大内存。 引起内存溢出的原因有很多种,常见的有以下几种: 1.内存中加载的数据量过于庞大,如一次从数据库取出过多数据; 2.集合类转载 2017-08-26 18:23:56 · 6143 阅读 · 0 评论 -
Java 两个整数相除保留两位小数,将小数转化为百分数
java 两个整数相除保留两位小数: java中,当两个整数相除时,由于小数点以后的数字会被截断,运算结果将为整数,此时若希望得到运算结果为浮点数,必须将两整数其一或是两者都强制转换为浮点数。例如:(float)a/b // 将整数其中一个强制转换为浮点数,再与另一个整数相除a/(float)b(float)a/(float)b // 将两个整数同时强制转换为浮点数转载 2017-09-14 12:37:58 · 8566 阅读 · 0 评论 -
Java中Process和Runtime()使用,以及调用cmd命令阻塞在process.waitfor( )的问题解决
原文地址:http://249wangmang.blog.163.com/blog/static/52630765201261334351635/最近在java中调用perl程序,由于perl中使用斯坦福分词器,有很多控制台输出,导致一直阻塞在process.waitfor( ),只有强制终止java程序后,结果文件才会输出。根据下面两个博客内容成功解决。用Java编写转载 2017-10-27 13:33:10 · 2603 阅读 · 0 评论 -
Mac 配置java环境变量
1. 打开终端,输入以下命令行,打开.bash_profile文件vi .bash_profile 2. 在文本编辑模式下,输入以下命令行,JAVA_HOME的路径视自己安装的路径而定export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home export PATH原创 2017-04-23 17:18:03 · 588 阅读 · 0 评论 -
Lambda表达式和Java集合框架
原文地址:https://www.cnblogs.com/CarpenterLee/p/6507161.htmlJava8为容器新增一些有用的方法,这些方法有些是为完善原有功能,有些是为引入函数式编程(Lambda表达式),学习和使用这些方法有助于我们写出更加简洁有效的代码.本文分别以ArrayList和HashMap为例,讲解Java8集合框架(Java Collections Fram转载 2017-11-09 15:28:55 · 200 阅读 · 0 评论 -
Java 8 Optional类深度解析
原文地址:http://www.importnew.com/6675.html身为一名Java程序员,大家可能都有这样的经历:调用一个方法得到了返回值却不能直接将返回值作为参数去调用别的方法。我们首先要判断这个返回值是否为null,只有在非空的前提下才能将其作为其他方法的参数。这正是一些类似Guava的外部API试图解决的问题。一些JVM编程语言比如Scala、Ceylon等已经将对在核心转载 2017-10-27 16:41:57 · 222 阅读 · 0 评论 -
JVM内存管理:深入Java内存区域与OOM
Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。 概述:对于从事C、C++程序开发的开发人员来说,在内存管理领域,他们即是拥有最高权力的皇帝又是执行最基础工作的劳动人民——拥有每一个对象的“所有权”,又担负着每一个对象生命开始到终结的维护责任。 对于Java程序员来说,不需要在为每一个new操作去写配对的delete/f转载 2017-12-25 14:27:47 · 185 阅读 · 0 评论 -
Java内存模型之happens-before
http://www.cnblogs.com/chenssy/p/6393321.html转载 2017-05-21 21:44:11 · 289 阅读 · 0 评论 -
几种任务调度的 Java 实现方法与比较
http://www.cnblogs.com/shenliang123/p/3231312.html转载 2017-05-19 18:33:20 · 185 阅读 · 0 评论 -
%100取余
原创 2017-04-23 17:28:44 · 4686 阅读 · 0 评论 -
深入理解Java之线程池
这篇写的不错,有深度,又容易理解:http://www.cnblogs.com/exe19/p/5359885.html转载 2017-05-14 15:10:03 · 462 阅读 · 0 评论 -
怎么理解Condition
终于找到一篇能解释清楚的了。http://ifeve.com/understand-condition/转载 2017-05-24 21:50:07 · 467 阅读 · 0 评论 -
Unsafe与CAS
原文地址:http://www.cnblogs.com/xrq730/p/4976007.html转载 2017-05-14 18:02:35 · 232 阅读 · 0 评论 -
同步屏障CyclicBarrier
http://ifeve.com/concurrency-cyclicbarrier/转载 2017-05-24 23:33:59 · 286 阅读 · 0 评论 -
最详细的Log4j使用教程
原文地址:http://www.codeceo.com/article/log4j-usage.html转载 2017-04-24 22:45:06 · 350 阅读 · 0 评论 -
Java多线程-工具篇-BlockingQueue
http://www.cnblogs.com/jackyuj/archive/2010/11/24/1886553.html转载 2017-05-25 22:28:26 · 304 阅读 · 0 评论 -
聊聊并发(六)ConcurrentLinkedQueue的实现原理分析
http://ifeve.com/concurrentlinkedqueue/转载 2017-05-25 22:54:06 · 245 阅读 · 0 评论 -
git 常用命令行
Git是一个分布式的版本控制工具,本篇文章从介绍 Git开始,重点在于介绍Git的基本命令和使用技巧,让你尝试使用Git的同时,体验到原来一个版本控制工具可以对开发产生如此之多的影响,文章分为两部分,第一部分介绍Git的一些常用命令,其中穿插介绍Git的基本概念和原理,第二篇重点介绍Git的使用技巧,最后会在Git Hub上创建一个开源项目开启你的Git实战之旅Git是什么Git在Wikip转载 2017-04-25 13:27:56 · 353 阅读 · 0 评论 -
GC日志的格式分析
33.125: [GC [DefNew: 3324K->152K(3712K), 0.0025925 secs] 3324K->152K(11904K), 0.0031680 secs] 100.667: [Full GC [Tenured: 0K->210K(10240K), 0.0149142 secs] 4603K->210K(19456K), [Perm : 2999K->2999转载 2017-12-25 18:30:17 · 324 阅读 · 0 评论 -
static关键字的四种用法
在java的关键字中,static和final是两个我们必须掌握的关键字。不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构。下面我们先来了解一下static关键字及其用法。static关键字1.修饰成员变量在我们平时的使用当中,static最常用的功能就是修饰类的属性和方法,让他们成为类的成员属性和方法,我们通常将用stati转载 2018-01-29 15:05:31 · 190 阅读 · 0 评论 -
深入理解Java PriorityQueue
原文地址:https://www.cnblogs.com/CarpenterLee/p/5488070.htmlPriorityQueueJava中PriorityQueue通过二叉小顶堆实现,可以用一棵完全二叉树表示。本文从Queue接口函数出发,结合生动的图解,深入浅出地分析PriorityQueue每个操作的具体过程和时间复杂度,将让读者建立对PriorityQueue建立清晰而深入...转载 2019-05-27 13:56:06 · 142 阅读 · 0 评论 -
Java高并发之无锁与Atomic源码分析
https://www.cnblogs.com/xdecode/p/9022525.html这篇讲的不错,里面有很重要的一句话“另外, 虽然上述步骤繁多, 实际上CAS整一个操作过程是一个原子操作,它是由一条CPU指令完成的,从指令层保证操作可靠, 不会被多线程干扰.”...原创 2019-06-20 17:03:18 · 262 阅读 · 0 评论 -
Java中volatile的作用以及用法
https://www.cnblogs.com/sunrunzhi/p/3930297.htmlvolatile让变量每次在使用的时候,都从主存中取。而不是从各个线程的“工作内存”。volatile具有synchronized关键字的“可见性”,但是没有synchronized关键字的“并发正确性”,也就是说不保证线程执行的有序性。也就是说,volatile变量对于每次使用,线程都能得...转载 2019-06-20 17:12:33 · 4665 阅读 · 0 评论 -
Java 代理模式和装饰者模式的区别
https://www.cnblogs.com/onlywujun/archive/2013/03/28/2985887.html装饰模式:以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案;代理模式:给一个对象提供一个代理对象,并有代理对象来控制对原有对象的引用;装饰模式应该为所装饰的对象增强功能;代理模式对代理的对象施加控制,并不提供对象本身的增强功能二者的实现机制确...转载 2019-06-27 15:12:22 · 659 阅读 · 0 评论 -
一图看懂Java锁膨胀过程
小黑和小黄是好朋友,一天,小黑乔迁新居,邀请好朋友小黄来家里庆祝,他们喝了牛奶,吃了巧克力,饭后,两个好朋友在沙发看电视,突然……小黑把小黄带到了卫生间,小黄惊呆了,原来,最近小黑在学习Java并发编程,总是搞不清synchronized锁的膨胀,于是制作了这个智能门帮助自己理解。小黑也没有使用过这个卫生间,正好小黄要用,就来看看这个门有多智能吧,据说,它能在保证卫生间只有一个...转载 2019-07-16 11:40:15 · 463 阅读 · 0 评论 -
Java volatile如何防止指令重排序
voliate关键字的两个作用1、 保证变量的可见性:当一个被volatile关键字修饰的变量被一个线程修改的时候,其他线程可以立刻得到修改之后的结果。当一个线程向被volatile关键字修饰的变量写入数据的时候,虚拟机会强制它被值刷新到主内存中。当一个线程用到被volatile关键字修饰的值的时候,虚拟机会强制要求它从主内存中读取。2、 屏蔽指令重排序:指令重排序是编译器和处理器为了高效...转载 2019-07-16 12:03:27 · 5156 阅读 · 1 评论 -
ThreadPoolExecutor线程池各参数的含义
https://www.cnblogs.com/cdf-opensource-007/p/8769777.html原创 2019-07-16 16:16:45 · 690 阅读 · 0 评论 -
JVM调优常用参数配置
堆配置-Xms:初始堆大小-Xms:最大堆大小-XX:NewSize=n:设置年轻代大小-XX:NewRatio=n:设置年轻代和年老代的比值。如:为3表示年轻代和年老代比值为1:3,年轻代占整个年轻代年老代和的1/4-XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如3表示Eden: 3 Survivor:2,一...转载 2019-07-16 17:03:46 · 271 阅读 · 0 评论 -
Java日志框架:slf4j作用及其实现原理
https://www.cnblogs.com/xrq730/p/8619156.htmlhttps://my.oschina.net/pingpangkuangmo/blog/406618原创 2019-08-15 16:04:03 · 197 阅读 · 0 评论 -
既然Java反射可以访问和修改私有成员变量,那封装成private还有意义么
作者:大宽宽链接:https://www.zhihu.com/question/28161668/answer/518225224来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。简单来说,private并不是解决“安全”问题的。安全是指不让代码被非法看到/访问。但是只要人能拿到代码,总会有办法去查看和改变代码。其他答案提到反射可以用SecurityM...转载 2019-05-06 10:27:57 · 356 阅读 · 0 评论 -
Jmap
什么是堆Dump堆Dump是反应Java堆使用情况的内存镜像,其中主要包括系统信息、虚拟机属性、完整的线程Dump、所有类和对象的状态等。 一般,在内存不足、GC异常等情况下,我们就会怀疑有内存泄露。这个时候我们就可以制作堆Dump来查看具体情况。分析原因。基础知识Java虚拟机的内存组成以及堆内存介绍 Java GC工作原理 常见内存错误:outOfMem转载 2017-12-26 17:47:08 · 2324 阅读 · 1 评论 -
java try后面括号的作用
Java7新特性,支持使用try后面跟随()括号管理释放资源例如通常使用try代码块 1 try { 2 fis = new FileInputStream(source); 3 fos = new FileOutputStream(target); 4 5 byte[] buf = new byte[8转载 2018-01-31 11:14:44 · 1861 阅读 · 0 评论 -
final关键字的几种用法
在java的关键字中,static和final是两个我们必须掌握的关键字。不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构。下面我们来了解一下final关键字及其用法。final关键字在java中,final的含义在不同的场景下有细微的差别,但总体上来说,它指的是“这是不可变的”。下面,我们来讲final的四种主要用法。1.修转载 2018-01-29 12:42:15 · 12519 阅读 · 1 评论 -
this引用逸出
最近在看《Java 并发编程实践》看到3.2章里面的关于发布和逸出的部分,写一下心得,算是mark一下,主要是构造过程中this引用的逸出。书上面给出了一个构造过程中this逸出的例子:public class ThisEscape { public ThisEscape(EventSource source) { source.registerListener(new转载 2018-01-29 13:20:33 · 207 阅读 · 0 评论 -
Collections.synchronizedList
摘要: 1 :详细的解析:Collections.synchronizedList 2 :关注要点,为什么在有synchroniezed方法的同时会出现 Collections.synchronizedList 3 :知识背景: 您可能需要了解java Synchronized方法的加锁的各种机制,包括如何上锁,锁对象@NotThreadSafe class B转载 2018-01-29 18:17:39 · 450 阅读 · 0 评论 -
Java正则表达式的语法与示例
原文地址:https://www.cnblogs.com/lzq198754/p/5780340.html1匹配验证-验证Email是否正确1234567891011121314public static void main(String[] args) { // 要验证的字符串 String str = "service@xsoftlab.net"; // 邮箱验证规则 ...转载 2018-03-15 11:57:05 · 195 阅读 · 0 评论 -
Java中Comparable和Comparator接口区别分析
Comparable 简介Comparable 是排序接口。若一个类实现了Comparable接口,就意味着“该类支持排序”。 即然实现Comparable接口的类支持排序,假设现在存在“实现Comparable接口的类的对象的List列表(或数组)”,则该List列表(或数组)可以通过 Collections.sort(或 Arrays.sort)进行排序。此外,“实现Compar...转载 2018-08-06 00:49:18 · 247 阅读 · 0 评论 -
JVM源码分析之Object.wait/notify实现
最简单的东西,往往包含了最复杂的实现,因为需要为上层的存在提供一个稳定的基础,Object作为java中所有对象的基类,其存在的价值不言而喻,其中wait和notify方法的实现多线程协作提供了保证。public class WaitNotifyCase { public static void main(String[] args) { final Object l...转载 2019-01-31 16:58:36 · 420 阅读 · 0 评论 -
关于Java类加载双亲委派机制的思考(附一道面试题)
http://www.cnblogs.com/lanxuezaipiao/p/4138511.html预定义类加载器和双亲委派机制 JVM预定义的三种类型类加载器: 启动(Bootstrap)类加载器:是用本地代码实现的类装入器,它负责将<Java_Runtime_Home>/lib下面的类库加载到内存中(比如rt.jar)。由于引导类加载器涉及到虚拟机本地实现细节,开...转载 2019-05-08 14:30:54 · 166 阅读 · 0 评论 -
jstack和线程dump分析
一:jstackjstack命令的语法格式: jstack 。可以用jps查看java进程id。这里要注意的是:1. 不同的 JAVA虚机的线程 DUMP的创建方法和文件格式是不一样的,不同的 JVM版本, dump信息也有差别。本文中,只以 SUN的 hotspot JVM 5.0_06 为例。2. 在实际运行中,往往一次 dump的信息,还不足以确认问题。建议产生三次 dum转载 2017-12-26 17:26:06 · 225 阅读 · 0 评论