![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
小菜洋子
1873176818@qq.com
展开
-
RabbiitMQ 消息丢失问题
Rabbitmq 消息丢失原创 2022-10-31 16:31:31 · 526 阅读 · 1 评论 -
Spring xml配置文件中命名空间的实现
1 在spring中使用xml配置bean的时候 ,我们可能会使用到其他的命名空间。例如我们配置aop.<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springfram原创 2022-05-25 10:22:44 · 325 阅读 · 0 评论 -
Java中 registerNatives的原理
在看JDK中的源码是,有的类通常会使用以下的结构,来注册本类可以使用的Native方法private static native void registerNatives(); static { registerNatives(); }我们以Thread.java类的 registerNatives的注册为例找到Thread.c这个文件可以发现有以下数组static JNINativeMethod methods[] = { {"start0",原创 2022-05-17 23:57:16 · 604 阅读 · 0 评论 -
Guava中AbstractIterator源码分析
今天阅读Guava源码发现一个通用的迭代器设计。package com.google.common.collect;import static com.google.common.base.Preconditions.checkState;import com.google.common.annotations.GwtCompatible;import com.google.errorprone.annotations.CanIgnoreReturnValue;import java.ut原创 2022-05-05 00:05:06 · 405 阅读 · 0 评论 -
Systemd入门
systemd 介绍systemd是目前Linux系统上主要的系统守护进程管理工具,由于init一方面对于进程的管理是串行化的,容易出现阻塞情况,另一方面init也仅仅是执行启动脚本,并不能对服务本身进行更多的管理。所以从CentOS 7开始也由systemd取代了init作为默认的系统进程管理工具。systemd所管理的所有系统资源都称作Unit,通过systemd命令集可以方便的对这些Unit进行管理。比如systemctl、hostnamectl、timedatectl、localctl等命令原创 2022-05-03 00:36:17 · 229 阅读 · 0 评论 -
Java MethodHandle 使用中的一个坑
1 先创建一个实体类import java.lang.invoke.MethodHandles;public class Student { private int id; private String name; public int getId() { return id; } public String getName() { return name; } public Student(int id原创 2022-04-15 12:07:40 · 638 阅读 · 0 评论 -
Java SPI 之 ServiceLoader
Java spi的实现机制原创 2022-04-02 18:50:05 · 2582 阅读 · 0 评论 -
ASM 在方法进入时候添加语句和方法退出的时候添加语句
ASM原创 2022-03-26 09:52:37 · 467 阅读 · 0 评论 -
ASM 添加字段已经生成相对应的get set 方法
1 首先创建一个实体类Student. 代码如下package com.org.xcyz.asm;public class Student { private int id; private String name; private boolean sex; public int getId() { return id; } public void setId(int id) { this.id = id;原创 2022-03-22 08:12:42 · 412 阅读 · 0 评论 -
理解Java Class 中的 StackMapTable
Java class StackMapTable原创 2022-03-21 10:18:04 · 665 阅读 · 0 评论 -
Java泛型的协变与逆变
Java 泛型原创 2022-03-17 00:50:35 · 3233 阅读 · 0 评论 -
Integer 中 getChars
static void getChars(int i, int index, char[] buf) { int q, r; int charPos = index; char sign = 0; if (i < 0) { sign = '-'; i = -i; } // Generate two digits per iteration .原创 2022-03-16 23:26:19 · 243 阅读 · 0 评论 -
HashMap 中的 tableSizeFor方法
tableSizeFor原创 2022-03-11 11:47:23 · 275 阅读 · 0 评论 -
java序列化的安全问题
如果一个函数或者对象,不管它位于多么遥远的地方,都可以在本地直接被调用,那该有多好 呀!这是一个非常朴素、美好的想法。基于这个设想,诞生了很多伟大的技术和协议,比如远程 过程调用(RPC)、远程方法调用(RMI)、分布式对象(Distributed Object)、组件对象模 型(COM)、公共对象请求代理(CORBA)和简单对象访问协议(SOAP)等……这个列表还可 以很长很长。...原创 2020-03-27 14:10:31 · 1494 阅读 · 0 评论 -
JVM参数详解
java -XX:+PrintFlagsInitial查看JVM初始化默认参数。有:=修改过,没有:默认值java -XX:+PrintFlagsFinal 查看JVM最终运行时的默认参数。有:=修改过,没有:默认值java -XX:+PrintCommandLineFlags -version。偏重查看默认垃圾回收算法-Xms初始堆内存大小(1/64)-Xmx最大堆内存大小(1/4...原创 2020-02-10 18:54:46 · 65 阅读 · 0 评论 -
关于数字的二进制表示反码补码有符号数无符号数的一些认识
1 首先我们应该明白计算机对于数字的加减运算其实是一种运算,在计算机中只有加法运算,因为计算机只是实现了加法器。即计算机中是不区分加法和减法的,只有加法。基于这个观点我们来推导出一些基本的认识。计算机首先要处理的是0怎么表示。理论上在规定长度的内存里,你想怎么表示就怎么表示,只要你设计的机器可以自圆其说。于是规定所有位数上都是0的数字是0.16位的数16位都是0,32位的数字32位都是0....原创 2020-01-08 22:58:51 · 466 阅读 · 0 评论 -
JVM配置参数
Trace跟踪参数:-verbose:gc-XX:+PrintGC-XX:+PrintGCDetails-XX:+PrintGCTimeStamps-Xloggc:log/gc.log-XX:+PrintHeapAtGC(每一次GC时都可以看到heap)-XX:+TraceClassLoading(监控类加载信息)-XX:PrintClassHistggram(内存中类实例占用的空间详细显示)堆的...原创 2018-06-30 21:22:17 · 132 阅读 · 0 评论 -
GC的算法和种类
GC 垃圾回收1960年List使用了GCjava中GC的对象是堆空间和永久区(hotspot虚拟机)GC:处理的问题:什么对象该GC,怎么GC,什么时候GCgc算法:(判断GC对象)判断对象是否存活1 引用计数法(COM,Python,ActionScript){很难处理循环引用的问题}2可达性算法。(可触及,不可触及,可复活{finalize只会被调用一次如果这次没有被复活,就不可及了。fin...原创 2018-06-30 22:21:04 · 175 阅读 · 0 评论 -
java GC的参数
1 串行回收器最古老最稳定,效率高,可能会产生比较长时间的停顿-XX:+UseSerialGC新生代老年代都会使用穿行回收器回收新生代:复制算法老年代:标记压缩算法 2并行收集器ParNewGC-XX:+UseParNewGCSerialGC的并行版本新生代ParNewGC老年代SerialGC3Parallel收集器并行收集器-XX:+UseParallelGC-XX:+UseParallel...原创 2018-07-01 00:19:01 · 229 阅读 · 0 评论 -
java类装载器
1 class的装载流程加载--->链接----->初始化(1)加载:取得类的二进制流,转化为方法区的数据结构,生成java.lang.Class对象(2)链接:验证:保证class的格式是正确的。文件格式验证元数据验证字节码验证 符号引用验证准备:分配内存,并为类设置初始值(方法区中)除了final变量其他都是默认初始值解析:将符号引用替换为直接引用(将字符串代表的变量变化为直接引用...原创 2018-07-01 01:29:13 · 181 阅读 · 0 评论 -
IO模型
I/O类型:同步和异步:关注的是消息通知的机制同步:调用发出之后不会立即返回,但是一旦返回,则返回调用的结果。异步:调用发出之后,被调用方立即返回结果。但是并非返回最终结果;被调用方通过状态,通知机制 等通知调用者,或者通过回调函数来处理结果阻塞和非阻塞:关注的是调用者等待被调用者结果时的状态阻塞:调用结果返回之前,调用者一直被挂起,调用者只有在得到返回结果之后才可以继续工作非阻塞:调用结果返回之...原创 2018-07-13 02:20:43 · 89 阅读 · 0 评论 -
Java class文件格式
class 文件格式 JVM所执行的代码使用了一种平台中立的二进制格式表示并且通常以文件的形式存储,所以叫做class文件格式。class文件格式精确的定义了类和接口的表现形式。 ...原创 2018-07-14 12:16:28 · 192 阅读 · 0 评论 -
Java ASM
什么是 ASM ?ASM 是一个 Java 字节码操控框架。它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。Java class 被存储在严格格式定义的 .class 文件里,这些类文件拥有足够的元数据来解析类中的所有元素:类名称、方法、属性以及 Java 字节码(指令)。ASM 从类文件中读入信息...转载 2018-10-07 17:56:50 · 159 阅读 · 0 评论 -
深入浅出spring第一课时
1 传统的javaee以ejb为代表的开发太臃肿,Rod Josn觉得j2ee开发需要简化,促使了spring的诞生。spring使用Apach2.0的协议,便于商业上的使用。 2 2009年spring被vmware收购 ...原创 2018-10-19 15:46:06 · 100 阅读 · 0 评论 -
对象 的头和域
1 对象头 我们将对象中保存对象本身信息的部分称为“头”。对象头主要包含对象的大小和种类。如果不清楚对象的大小,就无法判别内存中存储的对象的边界。如果不清楚对象的种类那么就无法去进行动态绑定,也就是无法去实现多态。另外头中事先存有运行 GC 所需的信息。然而根据 GC 算法的不同,信息也不同。例如GC 标记 - 清除算法,就是在对象的头部中设置 1 个 flag(标志位)来记录对象...原创 2019-03-30 10:49:20 · 286 阅读 · 0 评论 -
GC的一些基本概念
1 对象 对象在不同场合具有不同的意义。在GC领域中对象代表的是应用程序利用的数据集合,同时也是GC的基本单位,一般的对象都是由头(header)和域(fild)组成的。(基于我所使用的两种语言java和python都是这样的)2 对象头(header)对象头一般存储着对象的元数据(大致可以分为类型信息和GC信息在Cpython中python所有的对象都是使用一个PyObj的指针去引用的。这个...原创 2019-05-01 20:56:01 · 401 阅读 · 0 评论 -
Maven简介
Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(ProjectLifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。 当你使用Maven的时候,你用一个明确定义的项目对象模...原创 2019-05-21 09:31:15 · 72 阅读 · 0 评论 -
HotSpotVM 命令行选项
java VM命令行选项分为3类:标准选项,非标准选项,非稳定选项标准选项要求所有类型的java虚拟机都要实现非标准选项以-X开头,不要求所有的JVM必须实现非稳定选项通常是为了特定需求需要对JVM运行进行校正,并且需要由系统参数的配置权限。通常以-XX开头,每种JVM都有自己的非稳定选项...原创 2019-08-01 07:00:11 · 281 阅读 · 0 评论 -
centos6.5安装jdk配置环境变量
JAVA_HOME=/usr/local/jdk/JAVA_BIN=/usr/local/jdk/binJRE_HOME=/usr/local/jdk/jrePATH=$PATH:/usr/local/jdk/bin:/usr/local/jdk/jre/binCLASSPATH=/usr/local/jdk/jre/lib:/usr/local/jdk/lib:/usr/local/jdk/jr...原创 2018-05-24 15:09:26 · 672 阅读 · 0 评论