JAVA
文章平均质量分 70
RockyPeng3
justsoso.fun
展开
-
你真的会拼接字符串吗?
执行结果截图:(jdk版本:1.8)原创 2023-11-13 18:11:47 · 121 阅读 · 0 评论 -
JetBrains-License-Server
兄弟们,这里分享一个IntelliJ IDEA最新版的License Server列表原创 2023-03-07 10:17:45 · 6126 阅读 · 6 评论 -
JAVA发送邮件提示MessagingException、SSLHandshakeException
JAVA发送邮件提示MessagingException、SSLHandshakeException原创 2022-06-14 11:31:03 · 949 阅读 · 0 评论 -
深坑:SecureRandom.getInstanceStrong() next方法阻塞啦
背景我遇到的场景是,我们有个生成随机数的场景,采用的便是 SecureRandom.getInstanceStrong() 获取Random 实例。在windows电脑以及在docker环境中都运行正常,所以没发现问题。直到我们把代码部署到centos系统中时发现了问题(没有采用docker)。就发现这个方法执行时间很长,导致前端接口504 time out 错误。最开始感觉很纳闷,一样的代码怎么会这样子。经过排查才发现是next方法执行时间很长导致的。深究原因可以参考: https://blog.c原创 2021-11-03 22:24:23 · 2841 阅读 · 0 评论 -
不重启 JVM,如何替换掉已经加载的类?
不重启 JVM,如何替换掉已经加载的类?场景在遥远的希艾斯星球爪哇国塞沃城中,两名年轻的程序员正在为一件事情苦恼,程序出问题了,一时看不出问题出在哪里,于是有了以下对话:“Debug一下吧。”“线上机器,没开Debug端口。”“看日志,看看请求值和返回值分别是什么?”“那段代码没打印日志。”“改代码,加日志,重新发布一次。”“怀疑是线程池的问题,重启会破坏现场。”长达几十秒的沉默之后:“据说,排查问题的最高境界,就是只通过Review代码来发现问题。”比几十秒长几十倍的沉默之后:“我轮询原创 2021-08-12 18:54:50 · 864 阅读 · 0 评论 -
PasteImageIntoMarkdown插件开发记录
文章目录PasteImageIntoMarkdown插件开发记录背景功能增强插件名称插件仓库PasteImageIntoMarkdown插件开发记录背景由于这段时间需要经常使用markdown写一些文档,本来之前用过其他软件,但是总有点不是那么顺手。于是开始尝试使用idea写,写完后可以很方便的提交到仓库。于是找了半天找到了插件叫Paste Image Into Markdown. 但这...原创 2020-01-11 18:43:50 · 3048 阅读 · 0 评论 -
Java synchronized实现原理深度剖析
Sync的实现原理sync是jvm的内置锁,底层是通过对象监视器来实现。而对象监视器的底层实现是通过cas+自旋或者操作系统的互斥量来实现的。通过javap -c 命令可以查看到sync方法前后有成对的monitorenter/monitorexit指令。cas: compare and swap ,比对并交换。这个操作是cpu指令级的功能,可以保证原子性。这个操作需要三个参数:1.数据存...原创 2019-11-07 20:07:17 · 1105 阅读 · 0 评论 -
Open-source Project官方地址
很遗憾这篇博文,由于是专门手机各个官方连接地址的,所以链接较多,csdn不允许保存。请前往点击这里下载。由于积分不多了,所以这个文档需要一个积分。。应该不多吧。。。确实没有积分的童鞋,可以向我索要:1138857971@qq.com原创 2014-04-21 19:32:23 · 1812 阅读 · 0 评论 -
JProfiler8在ubuntu14上没有界面,提示HeadlessException
解决办法: sudo apt-get autoremove openjdk-7-jre-headless 我自己没有使用自带的openjdk,而是安装的jdk8.原创 2014-12-25 21:56:26 · 1005 阅读 · 0 评论 -
Class文件二进制分析
本篇博文描述的是对一个很简单的java文件的对应的class文件的二进制分析.要分析class文件的二进制格式,必须了解对应版本的jvm specification.由于jvm specification中关于class文件的内容有点多,所以这里不在描述相同的内容.说明:本篇博文中设计的class文件对应的jvm specification版本是 jvm 8.原创 2015-01-02 00:24:26 · 9257 阅读 · 13 评论 -
读Unsafe类源码
Unsafe类简介JUC中很多的实现都是调用了Unsafe类来实现的,所以这里阅读下该类的内容.Unsafe类包装了很多低级别的非安全性操作.虽然该类及其所有的方法都是public的,但是它只能被受信任的代码使用(也就是jdk中的代码)读源码过程中.原创 2015-06-06 13:11:19 · 2603 阅读 · 2 评论 -
读AbstractQueuedSynchronizer类源码
这个类的代码除去注释差不多有千多行,要想把所有代码都读完,然后按照作者的思路给理解完,是不容易的.这里我仔仔细细读了差不多一半的代码,说难倒不是很难.虽然没有完全看完,但是基本上理解了作者代码的意图..说得简单些,就是操作一个双向链表.而链表中的每个节点有多种状态.AQS就是要保证整个双向链表和节点的状态的正确性.连续看了好几天的JUC相关的源码,现在脑袋真有点晕乎乎的.原创 2015-06-06 23:01:49 · 1438 阅读 · 2 评论 -
读LockSupport源码
LockSupport类简介LockSupport类是其他类实现锁和同步的基础.读了源码就会知道,这个类主要利用了Unsafe类中提供的part和unpart两个方法.原创 2015-06-06 13:52:18 · 1627 阅读 · 0 评论 -
Thread & ExecutorService & ThreadPoolExecutor 总览
Thread & ExecutorService & ThreadPoolExecutor 总览原创 2016-09-17 10:02:39 · 1267 阅读 · 0 评论 -
BTrace入门
BTrace入门原创 2016-09-18 17:28:35 · 3849 阅读 · 1 评论 -
AIO实现TimeServer
- 实现返回当前服务器时间的功能- 采用半双工模式(主要是因为采用telnet为客户端,然后telnet默认情况下是半双工)- 客户端连接后,可以发送 time,stop命令. 只有客户端发送stop命令后,服务段才主动断开链路。原创 2016-12-21 17:34:35 · 677 阅读 · 0 评论 -
Java内部类
内部类:是指把一个类的声明放到另一个类的声明中,甚至是放到一个方法内部,这样的类称为 内部类。内部类分为 命名内部类和匿名内部类:命名内部类:就像平时声明一个类一样,有个名字。只是放的位置是另一个类的内部或一个方法的内部。匿名内部类:就是没有类名,一般将匿名内部类作为参数传递。两种内部类例子如下:1、内部类的对象只能在外部类内部进行创建,并通过外部类提供的接口拿到。.....原创 2013-11-06 18:14:27 · 1090 阅读 · 0 评论 -
线上FullGC频繁排查-druid
线上FullGC频繁的排查问题原创 2017-04-11 17:30:07 · 45792 阅读 · 7 评论 -
Spring Cloud(零):微服务的那些事儿
Spring Cloud(零):微服务的那些事儿spring cloud 是微服务分布式部署的一套解决方案。它涵盖了很多组件,比如配置中心、服务发现注册、负载均衡、阻断器、消息总线、数据监控等,这些组件都是为微服务分布式部署中几乎都会遇到的问题。微服务:通俗的讲就是功能相关的的一个集合作为一个服务单独进行部署,那么很多个这样的集合就构成了微服务。用专业一点的俗语讲就是把满足 srp(si...原创 2019-09-05 18:20:19 · 1057 阅读 · 0 评论 -
Remove SVN From Intellij IDEA
在百度上怎么搜,就是没有zhao'da原创 2014-08-29 14:19:45 · 3606 阅读 · 4 评论 -
java反序列化时的类加载
序列化对象在Java中 主要有两个目的,一个是钝化存储对象,另一个是通过网络传输对象。 后者是移动或者远程计算的基础。前者比较好办,对象存储之后,往往由同一个程序再读出, 对象在解析的时候不存在类加载的问题。后者比较麻烦,接收序列化对象的一端往往同发送端的类加载器环境不一样,很有可能找不到发送端才有的类代码,因此也 就无法反序列化对象,造成ClassNotFoundException。转载 2014-09-10 11:06:03 · 3654 阅读 · 0 评论 -
有趣代码二
直接上代码:import java.util.Date;public class Super_Keyword extends Date { public static void main(String[] args) { Super_Keyword sk = new Super_Keyword(); sk.test(); } public void test() {原创 2013-11-06 22:54:03 · 1058 阅读 · 0 评论 -
abstract 的 method是否可同时是 native的?
不能。应为native的方法涉及到JNI编程,JNI编程简单的说就是用java代码调用C语言编写的代码。而abstract 方法的要求实现类使用java语言实现,这显然是矛盾的,所以abstract的方法不能同时是native的。原创 2013-11-06 15:04:03 · 1243 阅读 · 0 评论 -
abstract method是否可以同时是 static的?
不可以因为static的方法是不能被继承的,而abstract方式是要被子类实现的,那就必须要求该方法是能被继承的,这显然矛盾了。所以不能。原创 2013-11-06 20:26:06 · 2874 阅读 · 0 评论 -
abstract 的方法是否可同时是 synchronized ?
不可以因为假设有这么一个方法,synchronized 的方法的同步锁对象是 this ,而包含这个抽象方法的接口或抽象类也许有多个子类,那么那个 this 到底是指哪一个子类就无法确定。所以不可以。原创 2013-11-06 16:10:57 · 3423 阅读 · 0 评论 -
abstract class 和 interface 的区别
1、interface中只能包含静态常量和抽象方法,且静态常量是public final static 的,抽象方法是 public abstract 的。2、abstract class 除了能包含 interface 所能包含的东西外,还能包含具体类能包含的任何东西。3、抽象类可以实现接口,抽象类可以继承抽象类,抽象类可以继承具体类,接口可以继承接口。4、接口主要用于系统框架的设原创 2013-11-06 14:37:36 · 1011 阅读 · 0 评论 -
面向对象设计语言的显著特征
1、抽象:抽象就是把具有相同或相似之处的事务给归为一类,把他们的共性之处给提取出来。忽略与当前主题无关的方面,重视与当前主题有关的方面。抽象包括过程抽象和数据抽象两个方面。比如有两个房间的桌子,它们的共性就有它们都是桌子,都有编号,都有颜色等等,那么这些共性就可以提取出来作为描述这两间房桌子的属性。那么有必要区分是这个房间的桌子还是那个房间的桌子吗?这就要根据当前的主题而定,如果需要就再提取出它们原创 2013-11-06 13:57:10 · 1097 阅读 · 0 评论 -
JAVA的类访问修饰符
同一类 同包中的类 子孙类 不同包的类 public ✔ ✔ ✔ ✔ protected原创 2013-11-05 20:29:49 · 1031 阅读 · 0 评论 -
==与equals的区别
==用于比较两个变量的值是否相等,也就是比较两个变量对应的内存中的数值是否相同。当比较两个基本数据类型或判断两个引用变量是否指向同一个对象时,应该采用==操作符。当一个引用变量指向一个对象类型时,此时设计到两块内存。一个是对象自身的内存,另一个是这个变量的内存。比如Object o = new Object();new Object()是一块内存,而这个变量o是另一块内存,其保存的值就是这个对原创 2013-11-05 19:50:20 · 952 阅读 · 0 评论 -
SVN服务器搭建以及在MyEclipse中的使用方法
SVN服务器搭建1、官网下载TortoiseSvn安装程序。下载地址:http://tortoisesvn.net/downloads.html2、傻瓜式安装。本文中安装路径为:D:\Program Files\TortoiseSVN3、创建Repository。就相当于一个数据库,客户端可以写不同版本的文件,也可读不同版本的文件。创建方法如下:确定一个存放目录(可原创 2013-11-24 03:19:16 · 5120 阅读 · 1 评论 -
Persistence 与HibernatePersistence详解
javax.persistence.Persistence暴露出来了两个方法:public static EntityManagerFactory createEntityManagerFactory(String persistenceUnitName)public static EntityManagerFactory createEntityManagerFactory(原创 2013-11-24 21:27:03 · 6002 阅读 · 0 评论 -
JNI入门
JNI(Java Native Interface)实例:采用jni,调用C语言编写的dll,该dll负责打印出“Hello World,^_^. JNI……..”1、 编写java程序:1):HelloWorld.javaPublic class HelloWorld{ Static{ System.loadLibraray(“HelloWorld_C”); /原创 2013-11-06 15:19:10 · 1251 阅读 · 0 评论 -
Overload与Override
Overload重载:指同一个类中可以同时存在多个同名的方法,但是方法的参数个数、参数类型及参数顺序不能相同(返回值类型可以改变)。Override重写:指子类中存在与父类某个方法的方法名、参数个数和参数类型完全一样的方法。通过子类创建的实例调用这个方法时,将调用子类中的这个方法。就相当于子类中的这个方法把父类中的这个同名方法给覆盖了一样了。重写是面向对象编程中多态性的实现方式之一原创 2013-11-05 21:56:06 · 1030 阅读 · 0 评论 -
Servlet实例创建时刻
之前没有仔细研究这个问题,学的时候别人说Servlet实例是在web container启动时也即是服务器启动过程就new 出来。某个Servlet实例一旦new 出来,马上就会执行其init(ServletConfig sc)方法。上面这句话,前半句是错了,后半句是正确的,这个直到今天我才发现。哇,这么久了,现在才发现这个错误,对自己感到一丝悲哀啊。。好,废话不多说,先看我做的实验:准备原创 2014-01-12 11:29:50 · 2355 阅读 · 2 评论 -
迷宫算法实现
直接上代码,痛快点。package algorithm;import junit.framework.TestCase;/** * Created by Rocky on 14-3-31. * 下午7:59 */public class MyMaze extends TestCase { /** * @param maze 0表示可走,1表示不可走,原创 2014-04-01 20:04:26 · 1233 阅读 · 0 评论 -
Java技术丛书
那些读过的感觉不错的技术书主要是java方面的《深入JAVA虚拟机 第二版》从中可以了解到JVM工作原理,字节码执行过程等,虽然出版日期有些久远,部分内容或许有些过时,但仍然值得一读。《Java虚拟机规范(Java SE 7)》如果不太熟悉jvm,这个读起来非常乏味(只有规范,没有多余解释),如果读过上面那一本,再读这个,非常有亲切感。转载 2014-03-29 17:46:53 · 925 阅读 · 0 评论 -
一个一百亿的计算器的实现
网上一搜一大把,搜出来的结果几乎都是我很崇敬的张孝祥老师写的这道题的思路,甚至有的直接把原文copy paste过来,没有一个用代码实现了的。于是自己琢磨了下,这里发布出来。虽然标题是一百亿,但实现结果可用于任意大整数。直接上代码。这里只实现了大整数相加。有了这个,不难实现减、乘等其他操作。代码复制粘帖即可运行。MyBigInteger.javaimport java.util.A原创 2014-03-28 23:16:06 · 8591 阅读 · 1 评论 -
Java类静态代码块、构造块、构造器的执行顺序
代码:public class TestClass { static { System.out.println("1"); } { System.out.println("2"); } public TestClass() { System.err.println("3"); //注意这里是err原创 2014-03-15 18:25:34 · 1027 阅读 · 0 评论 -
ConcurrentHashMap原理分析
原文链接:http://blog.csdn.net/liuzhengkang/article/details/2916620转载 2014-03-04 15:15:47 · 872 阅读 · 0 评论 -
JAVA程序的内存分配
栈区由编译器自动分配和释放,存放临时变量和函数参数值等堆区由程序员分配和释放,如果程序员不手动释放,则由GC或操作系统释放代码区存放函数体二进制代码全局区存放全局变量静态区存放静态变量常量区存放常量原创 2013-11-04 23:50:26 · 700 阅读 · 0 评论