
java知识体系
三月泡
这个作者很懒,什么都没留下…
展开
-
osgi环境下,eclipse提示找不到MANIFEST.MF文件节点Bundle-ClassPath下引入的lib文件夹jar包问题
如图:当我从svn上下载一个osgi工程到eclipse里,报如下错误,根据提示,build-path引入的包找不到,根据包的路径提示,这些包是在MANIFEST.MF文件定义的。然后从工程里看lib文件夹下,并没有任何文件夹,有的bundle工程连lib文件夹都没有刚开始的解决思路是,在工程里建立lib目录,然后将这些jar从其他同事电脑里拷贝过来,然后添加到构建路径里...原创 2019-04-02 15:37:17 · 2119 阅读 · 0 评论 -
osgi环境下eclipse报错【Could not create directory D:\XXX\eclipse_XXX.】,解决方法笔记
如图:解决方法:图中jmx port 与config\xxx-container.configcontainer.jmx.deploy.service.open.port一致图中rmiport 与config\xxx-container.configcontainer.jmx.deploy.service.open.rmiport一致...原创 2019-04-03 11:21:13 · 1234 阅读 · 1 评论 -
如何阅读jdk开发资源包rt.jar源码
如何阅读jdk开发资源包rt.jar源码?1、首先从openjdk网站下载源码包:http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/6bfaecb8ff77/src/share/classes/2、要了解每一个一级包的大概作用3、重点阅读常用关键类...原创 2019-04-17 13:50:13 · 610 阅读 · 0 评论 -
win7环境下使用vs2010调试hotspot源码
一、使用VS2010生成HotSpot VM项目1、将Cygwin64的bin路径加入环境变量Path中,在我这里即C:\Cygwin64\bin2、进入E:\jvm\jdk8u-dev\hotspot\make\windows,编辑create.bat,line 142:改成自己的cygwin安装目录3、在cmd窗口执行如下指令cdE:\jvm\jdk8u-dev\hots...原创 2019-04-17 21:21:53 · 663 阅读 · 0 评论 -
jdk7新命令行工具jcmd
以前用的比较多的命令如jps,jmap等。但是新的jcmd命令使用很不错。例如:1、想查看有哪些java进程jcmd -l2、查看Bootstrap进程的详细信息jcmd 16310 help3、导出堆信息jcmd 18346 GC.heap_dump /home/orca/heap.dump ...原创 2019-05-16 14:30:45 · 266 阅读 · 0 评论 -
jmap查询java进程堆空间大小
原创 2019-05-16 14:35:36 · 1310 阅读 · 0 评论 -
java线程堆栈分析
1、java线程堆栈分析工具jca457.jar主要用于分析死锁情况,线程调用使用情况,方法使用频率等。使用jps命令找到Java线程pid号,然后将堆栈信息导出到某个文件jstack pid > filename java -jar jca457.jar filename生成表格形式数据,方便分析。2、堆内存分析工具Memory Anal...原创 2019-05-16 14:41:04 · 812 阅读 · 0 评论 -
为什么JDK1.8之前没有响应式编程?
为什么JDK1.8之前没有响应式编程?原创 2019-05-27 21:34:42 · 453 阅读 · 1 评论 -
线程池里的线程有哪些状态?与单个线程的状态一致吗?
线程池里的线程有哪些状态?与单个线程的状态一致吗?原创 2019-05-27 21:35:50 · 167 阅读 · 0 评论 -
堆外内存提高网络传输和磁盘IO速率的原因?
堆外内存提高网络传输和磁盘IO速率的原因?原创 2019-05-27 21:37:56 · 385 阅读 · 0 评论 -
java基于回调的事件处理实现
java基于回调的事件处理实现原创 2019-05-27 22:04:11 · 494 阅读 · 0 评论 -
如何实现,系统迁移导致缓存命中率不变化,JAVA实现
如何实现,系统迁移导致缓存命中率不变化,JAVA实现原创 2019-05-28 11:27:33 · 107 阅读 · 0 评论 -
jdk1.8源码解析
jdk1.8源码解析1.图谱2.详细分析原创 2019-05-28 21:48:12 · 418 阅读 · 0 评论 -
eclipse4.2 以后中文注释缩进异常
原创 2019-06-04 16:55:55 · 447 阅读 · 0 评论 -
基于栈指令集架构的JAVA字节码执行流程
<<深入理解JAVA虚拟机>>提到,JAVA是基于栈指令集架构的,与基于寄存器的指令集架构是两套不同的指令体系。看到这里,我就有些地方不太理解了。基于栈指令集,进栈出栈、执行操作,而且大多数都是零地址指令的。这与传统的C语言编写代码,编译成机器码交给CPU执行不同,传统的都是把指令交给寄存器,从某个地址拿数据,执行寄存器指令操作。但是JAVA栈指令都是零地址的,所有代码...原创 2019-03-27 09:23:04 · 281 阅读 · 0 评论 -
字节码被java虚拟机解释器解释后执行的机器码与C语言编译后的机器码一样吗?
如题:JAVA是基于栈的指令集架构的,所有指令都是在栈上完成的。JAVA代码被编译后,变成字节码,字节码是按照java虚拟机规范生成的。但是程序最终执行都是依赖物理机器的吧。所有字节码虽然都是解释执行的,解释出来的都是机器码吧?跟C代码编译的依赖操作系统直接运行的机器码,应该是一致的吧?还是不一致呢?从<<hotspot实战>>中对ineg指令的解释,JVM生成的机...原创 2019-03-27 09:07:30 · 959 阅读 · 0 评论 -
SecurityManager安全级别
SecurityManager安全级别是代码级别的。不是应用程序安装在操作系统层级别的。检查执行中的某个代码是否有相应的权限。原创 2019-03-30 17:08:47 · 161 阅读 · 0 评论 -
ThreadLocal理解
ThreadLocal(线程变量副本)Synchronized实现内存共享。(这句话看不懂?)ThreadLocal为每个线程维护一个本地变量。采用空间换时间,它用于线程间的数据隔离,为每一个使用该变量的线程提供一个副本,每个线程都可以独立地改变自己的副本,而不会和其他线程的副本冲突。ThreadLocal类中维护一个Map,用于存储每一个线程的变量副本,Map中元素的键为线程对象,而...转载 2018-12-02 22:31:48 · 118 阅读 · 0 评论 -
Java内存模型
java虚拟机规范中将Java运行时数据分为六种:1.程序计数器:是一个数据结构,用于保存当前正常执行的程序的内存地址。Java虚拟机的多线程就是通过线程轮流切换并分配处理器时间来实现的,为了线程切换后能恢复到正确的位置,每条线程都需要一个独立的程序计数器,互不影响,该区域为“线程私有”。(这个叫法有点别扭!)2.Java虚拟机栈:线程私有的,与线程生命周期相同,用于存储局部变量表,操作栈...转载 2018-12-02 22:33:05 · 83 阅读 · 0 评论 -
java数据结构
原创 2018-12-07 22:01:51 · 102 阅读 · 0 评论 -
网络通信模型
在高性能的I/O设计中,有两个比较著名的模式Reactor和Proactor模式,其中Reactor模式用于同步I/O,而Proactor运用于异步I/O操作。BIO模型: 同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。在JDK1.4出来之前,我们建立网络连接...转载 2018-12-05 21:06:15 · 302 阅读 · 0 评论 -
75道面试题解答
1、hashcode相等两个类一定相等吗?equals呢?相反呢?首先要明白什么叫两个类相等?答案是2个类的地址相等则认为对象相等,即两个类相等。先来看看hashcode是如何生成的?根据jdk的源码,并没有java的实现方式。而是在native方法里,用cpp文件即c++代码实现的。hashcode的生成策略有自增序列,随机数,内存地址等多种,最终取值根据底层算法来定。那么可以推断出来,...转载 2018-12-05 22:02:59 · 331 阅读 · 0 评论 -
JDK 并发容器总结
目录:一 JDK 提供的并发容器总结二 ConcurrentHashMap三 CopyOnWriteArrayList3.1 CopyOnWriteArrayList 简介3.2 CopyOnWriteArrayList 是如何做到的?3.3 CopyOnWriteArrayList 读取和写入源码简单分析3.3.1 CopyOnWriteArrayList 读取操作的实现...转载 2018-12-13 11:46:08 · 231 阅读 · 0 评论 -
logback输出类名加链接写法
[%d{yyyy-MM-dd HH:mm:ss.SSS}][%-5level][%replace(%caller{1}){'\t|Caller.{1}0| at|\r\n', ''}] ==> %msg%ncaller{1}表示调用层次深度=》1表示调用层Caller.{1}0表示第一层,带字符0[2018-12-19 13:43:47.637][DEBUG][Caller+0...原创 2018-12-19 13:45:19 · 1416 阅读 · 0 评论 -
kubectl故障对应相关
kubectl故障对应相关,本文将会简单介绍一下如下命令项番 命令 说明No.1 edit 编辑服务器侧资源No.2 replace 使用文件名或者标准输入资源No.3 patch 部分更新资源相关信息No.4 apply 使用文件或者标准输入更改配置信息No.5 scale 重新设定Deployment/Rep...转载 2019-01-09 14:13:22 · 233 阅读 · 0 评论 -
BIO、NIO、AIO按行读取文件汇总
三种读取方式,都能按行读取文件,没有最好的,只有最适合的。根据公司的业务场景,选择适合自己的。下面贴代码:DbConfig.javapackage com.wangyh.bean;import java.io.*;import java.nio.ByteBuffer;import java.nio.channels.AsynchronousFileChannel;import ...原创 2019-01-23 13:02:56 · 702 阅读 · 0 评论 -
LockSupport.park之c++源码记录及问题
上层调用java代码 park.cpp文件位置,以及os.cpp文件位置。但是我没有找到os类的定义位置,知道的大牛,留言告诉我下。实现文件位置:void Parker::park(bool isAbsolute, jlong time) { // Optional fast-path check: // Return immediately if a pe...原创 2019-01-29 22:16:34 · 435 阅读 · 0 评论 -
vs2010编译openjdk1.8源码
参考资料:https://blog.youkuaiyun.com/lpwstr/article/details/78840188http://www.cnblogs.com/lighten/p/5906359.htmlhttps://blog.youkuaiyun.com/a510835147/article/details/73011498vs2015与vs2010语法不一样,如果需要用vs2015编译...原创 2019-02-10 17:31:16 · 869 阅读 · 0 评论 -
String类intern()实现谜团,jdk1.8下
这里先转一下网上的帖子内容:在《深入理解Java虚拟机》书中,提到在jdk1.7的版本中用String.intern()返回引用public class RuntimeConstantPoolOOM { public static void main(String[]args) { String str1=new StringBuilder("计算机").appe...原创 2019-03-17 13:08:21 · 310 阅读 · 0 评论 -
简单好用的java缓存框架guava,完美替代hashmap定时自动清理功能
工作中经常需要用到把一些数据暂时缓存起来,以免重复查询数据库,又不想启用哪些配置复杂的缓存框架,做文件配置或者安装之类的工作。首先会想到静态的hashmap来解决。如private static final Map<String,Object> map=new Hashmap<>();这样做很方便,也很简单。但是承受不住一些生产环境大流量的场景,会导致内存不足的问...原创 2019-03-21 16:49:11 · 2779 阅读 · 0 评论 -
java线程wait函数到底是如何实现的
private final static Lock lock = new ReentrantLock(); private final static Condition cond = lock.newCondition(); public void run() { while (!Thread.currentThread().isInterrupted()) { tr...原创 2019-03-13 14:17:36 · 1569 阅读 · 0 评论 -
volatile详解【笔记】
一、volatile保证可见性和有序性1、JMM缓存不一致存在的问题2、通过volatile解决缓存可见性2.1.idea开发软件设置如下:2.2将2个依赖库放入jre安装的bin目录3、JMM数据元子操作4.MESI缓存一致性协议实现底层原理图二、volatile不能保证原子性1、如图,2个线程并发修改同一个对象数据,会产生预期外的结果...原创 2019-08-24 11:04:54 · 186 阅读 · 0 评论