
Java
文章平均质量分 74
Java
唐伯虎点蚊香dw
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JVM 的指针压缩
在介绍完关于内存对齐的相关内容之后,我们来介绍下前边经常提到的压缩指针。可以通过JVM参数开启,当然默认是开启的。在本小节内容开启之前,我们先来讨论一个问题,那就是为什么要使用压缩指针??假设我们现在正在准备将32位系统切换到64位系统,起初我们可能会期望系统性能会立马得到提升,但现实情况可能并不是这样的。在JVM中导致性能下降的最主要原因就是64位系统中的。在前边我们也提到过,64位系统中对象的引用以及类型指针占用也就是8个字节。这就导致了在64位系统中的对象引用占用的内存空间是32位系统中的两倍大小,因转载 2022-06-22 17:17:53 · 812 阅读 · 0 评论 -
使用NMT和pmap解决JVM资源泄漏问题
NMT是Native Memory Tracking的缩写,一个JDK自带的小工具,用来跟踪JVM本地内存分配情况(本地内存指的是non-heap,例如JVM在运行时需要分配一些辅助数据结构用于自身的运行)。NMT功能默认关闭,可以在Java程序启动参数中加入以下参数来开启:-XX:NativeMemoryTracking=[summary | detail]其中,“summary”和“deatil”的差别主要在输出信息的详细程度。开启NMT功能后,就可以使用JDK提供的jcmd命令来读取NMT采集转载 2022-06-17 10:12:57 · 1958 阅读 · 0 评论 -
JVM LOCK#指令
lock指令做了什么之前有说过IA-32架构,关于CPU架构的问题大家有兴趣的可以自己查询一下,这里查询一下IA-32手册关于lock指令的描述,没有IA-32手册的可以去这个地址下载IA-32手册下载地址,是个中文版本的手册。我摘抄一下IA-32手册中关于lock指令作用的一些描述(因为lock指令的作用在手册中散落在各处,并不是在某一章或者某一节专门讲):在修改内存操作时,使用LOCK前缀去调用加锁的读-修改-写操作,这种机制用于多处理器系统中处理器之间进行可靠的通讯,具体描述如下:(1)转载 2021-10-19 10:03:29 · 772 阅读 · 0 评论 -
RSA非堆成加密的密钥生成以及加密和解密
RSA非堆成加密有公钥和私钥,公钥用于加密,私钥用于解密一,密钥生成import java.security.Key;import java.security.KeyPair;import java.security.KeyPairGenerator;import java.util.Map;import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder;public class CreateSecretKey { p...原创 2020-09-22 16:23:10 · 499 阅读 · 0 评论 -
使用公钥加密配置文件中的用户名密码
1.引入依赖<dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>3.0.2</version></dependency>2.生成public key 和private key,可以网上在线生成http://www.meto原创 2020-08-14 13:40:02 · 870 阅读 · 0 评论 -
java干货
Redis原子性: 1.单个操作或者单条命令具有原子性 2.redis支持简单的事务,可以监听一个watch,开启事务,如果期间监听的值没有改变,则继续,否,则回滚 3.数据流具有原子性,即pipleine 4.lua命令具有原子性 数据库的悲观锁和乐观锁 1.悲观锁也可以称作独占锁,如果是主键查询可以对单行加锁,否则是对整个表加锁,这样回导致程序不断的挂起,释放...原创 2020-01-03 20:40:07 · 173 阅读 · 0 评论 -
高效java以及Mysql幻读
1.常量接口不应该被效仿在接口中定义常量可以使得实现类中很方便的使用这些常量,但是这是不规范的 首先接口是面向api的,实现一个常量接口会导致实现细节泄露到类的到处api中 其次,如果一个非final类实现了常量接口,那么它的所有子类的命名空间都会被接口中 的常量污染2.谨慎使用接口默认方法 比如Colleciton中后期增加了removeif这个方法,...原创 2020-01-02 16:55:59 · 234 阅读 · 0 评论 -
深入java虚拟机之类的初始化
类初始化是类加载过程的最后一个阶段,到初始化阶段,才真正开始执行类中的Java程序代码。虚拟机规范严格规定了有且只有四种情况必须立即对类进行初始化: 遇到new、getstatic、putstatic、invokestatic这四条字节码指令时,如果类还没有进行过初始化,则需要先触发其初始化。生成这四条指令最常见的Java代码场景是:使用new关键字实例化对象时、读取或设置一...原创 2017-10-18 14:50:43 · 105 阅读 · 0 评论 -
java 外部Tools-Executors|Semaphor|Exchanger|CyclicBarrier|CountDownLatch
前面写了两篇JDBC源码的文章,自己都觉得有点枯燥,先插一段JUC系列的文章来换换胃口,前面有文章大概介绍过J U C包含的东西,JUC体系包含的内容也是非常的多,不是一两句可以说清楚的,我这首先列出将会列举的JUC相关的内容,然后介绍本文的版本:Tools部分J.U.C体系的主要大板块包含内容,如下图所示: 注意这个里面每个部分都包含很多的类和处理器,而且是相互包含,相互引用的...原创 2017-03-07 15:46:32 · 138 阅读 · 0 评论 -
线程池创建ThreadPoolExecutor
先贴出一个创建线程池的实例:import java.util.concurrent.LinkedBlockingQueue;import java.util.concurrent.ThreadPoolExecutor;import java.util.concurrent.TimeUnit;public class ThreadPoolDemo { private T...原创 2017-03-09 11:42:51 · 123 阅读 · 0 评论 -
面试干货
一、数据库的隔离级别分哪些?https://www.cnblogs.com/fjdingsd/p/5273008.html 数据库隔离级别包括串行,可重复读,读已提交,读未提交,在jdbc中需要设置autoCommit(false)来开启事务,然后设置setTransactionIsolation(隔离级别)二、为什么redis没用一致性hash,选用的hash槽首先需要了解什么...原创 2018-05-18 17:15:42 · 175 阅读 · 0 评论 -
activemq Broker启动方式
1、直接运行安装目录的bin\activemq.bat 2、可以通过在应用程序中以编码的方式启动broker,例如: Java代码 BrokerService broker =new BrokerService(); broker.setBrokerName("testName");//如果启动多个Broker时,必须为Broker...原创 2017-03-17 13:35:18 · 184 阅读 · 0 评论 -
超详细java中的ClassLoader详解
ClassLoader翻译过来就是类加载器,普通的java开发者其实用到的不多,但对于某些框架开发者来说却非常常见。理解ClassLoader的加载机制,也有利于我们编写出更高效的代码。ClassLoader的具体作用就是将class文件加载到jvm虚拟机中去,程序就可以正确运行了。但是,jvm启动的时候,并不会一次性加载所有的class文件,而是根据需要去动态加载。想想也是的,一次性...转载 2019-06-27 09:41:10 · 6595 阅读 · 0 评论 -
深入java虚拟机之内存模型
内存区域 Java虚拟机在执行Java程序的过程中会把他所管理的内存划分为若干个不同的数据区域。Java虚拟机规范将JVM所管理的内存分为以下几个运行时数据区:程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区。下面详细阐述各数据区所存储的数据类型。 程序计数器(Program Counter Register) 一块较小的内存空间...原创 2017-10-18 13:27:50 · 104 阅读 · 0 评论 -
java内存模型及GC原理
前段时间在一个项目的性能测试中又发生了一次OOM(Out of swap sapce),情形和以前网店版的那次差不多,比上次更奇怪的是,此次搞了几天之后啥都没调整系统就自动好了,死活没法再重现之前的OOM了!问题虽然蹊跷,但也趁此机会再次对JVM堆模型、GC垃圾算法等进行了一次系统梳理;基本概念堆/HeapJVM管理的内存叫堆;在32Bit操作系统上有4G的限制,一般来说Wind...原创 2017-10-11 13:44:25 · 183 阅读 · 0 评论 -
文件传输
将文件转换为二进制的文件,并将二进制写进文件package ceshiOA;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;impo...原创 2016-11-14 15:45:37 · 103 阅读 · 0 评论 -
通过pinyin4j将汉字转换为拼音
pinyin4j提供了汉语转拼音的一个开源库, 支持多种拼音系统:汉语拼音、 通用拼音 、威氏拼音、注音二式、雅礼、 国语罗马字。 但是遗憾的是不支持多音字 首先下载jar包:http://pinyin4j.sourceforge.net/package ceshiOA;import net.sourceforge.pinyin4j.PinyinHelper;impo...原创 2017-04-06 16:24:25 · 316 阅读 · 0 评论 -
java反射
java的反射机制可以通过java类的名字类生成类的对象,并可以获取类的方法,字段等一;获取Class类的几种方法 ①getClass 如String s = "a" ; Class cla = s.getClass(); 哈可以通过cla.getSuperClass()来获取父类②通过class的静态方法class.forName("name") ;③通过.clas...原创 2016-12-26 17:57:05 · 95 阅读 · 0 评论 -
JAVA Bigdecimal介绍
一、BigDecimal介绍 Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大或者更小的数进行运算和处理。float和double只能用来做科学计算或者是工程计算,在商业计算中若需要精确的计算结果则要用java.math.BigDecima...原创 2017-06-16 13:38:56 · 105 阅读 · 0 评论 -
linux服务器堆栈
一、首先查询java进程:ps -ef |grep java找到需要打堆栈的进程二、到服务器的jdk下bin目录下输入:jstack -l 41778 > /opt/11.txt将41778进程堆栈打印到11.txt 三、查看服务器进程gc情况jstat -gcutil 41778 2000 2500 查看进程41778的gc情况,打印2500行...原创 2017-06-23 16:18:10 · 302 阅读 · 0 评论 -
java将文件压缩成tar.gz
public static File compressTarFile(List<File> list, String targzipFilePath, String targzipFileName){ byte[] buf = new byte[1024]; //设定读入缓冲区尺寸 try{ //建立压缩文件...2017-07-25 10:53:41 · 1658 阅读 · 0 评论 -
JAVA代理
在java开发中,有很多地方都会用到代理,代理也有很多的方式可以实现,这里先介绍java自带的实现接口InvocationHandler方式:首先来举一个例子,有这么一个类:BookFacadeProxy import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java....原创 2017-01-19 17:50:21 · 155 阅读 · 0 评论 -
java获取系统剪切板中的内容
public static String getString(){ Clipboard sysClip = Toolkit.getDefaultToolkit().getSystemClipboard();Transferable clipTf =sysClip.getContents(null);if(clipTf.isDataFlavorSupported(DataFlavo...2017-01-20 13:40:59 · 1500 阅读 · 0 评论 -
JVM性能调优监控工具的实用
现实企业级Java开发中,有时候我们会碰到下面这些问题:OutOfMemoryError,内存不足内存泄露线程死锁锁争用(Lock Contention)Java进程消耗CPU过高...... 这些问题在日常开发中可能被很多人忽视(比如有的人遇到上面的问题只是重启服务器或者调大内存,而不会深究问题根源),...原创 2017-08-23 13:23:27 · 166 阅读 · 0 评论 -
javaJDK实现代理
首先:先来写一个实现类的接口,比如我们就写一个火车启动的过程public interface Train { public void move() ; public void stop();} 因为JDK代理必须使用接口来实现,所以接口是必须的,然后我们就来写一个实现类,来实现火车的启动与停止,public class TrainIm...原创 2017-02-06 14:40:30 · 130 阅读 · 0 评论 -
CGlib实现代理
JDK实现代理必须使代理对象实现接口,而CGLIb则改变了这一点首先创建一个业务实现类不继承不实现接口,就简单一点吧public class ProxyObject { public void show(){ System.out.println("show"); }} 接着就是写一个代理类:import java.lang.reflect.Method;...原创 2017-02-06 14:49:13 · 104 阅读 · 0 评论 -
java文件压缩与解压
一、压缩import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.util.zip.ZipEntr...原创 2016-10-09 13:42:53 · 145 阅读 · 0 评论