
java基础
文章平均质量分 60
java基础
xxb249
电脑爱好者,半个电脑程序员
展开
-
java处理纳秒时间
【代码】java处理纳秒时间。原创 2023-02-21 17:34:01 · 1084 阅读 · 0 评论 -
TLS/SSL证书彻底扫盲
TLS/SSL关于证书理解与单双向认证原创 2023-02-17 20:38:50 · 1370 阅读 · 0 评论 -
Java动态代理基本用法
一、JDK动态代理1.1、创建一个接口public interface Fruit { String getName(); String getColor(); Float getPrice(); String toValue();}1.2、实现这个接口package com.atguigu.function;public class Apple implements Fruit { private String name; pri原创 2022-01-28 08:55:58 · 300 阅读 · 0 评论 -
java反射接口说明
在反射中关于构造器相关接口比较多,繁琐。这里罗列一下,各自区别类别 方法名字 有Declared (可获取公有,私有) getDeclaredConstructor() 1、单数 2、获取所有无参构造方法,公有,私有 getDeclaredConstructors() 1、复数 2、获取所有构造方法,包括:无参,有参数,公有,私有 没有Declared (只能获取公有)..原创 2021-11-05 23:53:30 · 229 阅读 · 0 评论 -
Servlet基本概念
1、Servlet三大组件:Servlet、Listener、Filter2、Servlet四种域对象:jsp、request、session、application(范围由小到大)原创 2021-10-23 21:00:47 · 228 阅读 · 0 评论 -
java注解原理
一、注解本质二、注解实现原创 2021-10-13 17:56:52 · 217 阅读 · 1 评论 -
java线程间通信wait/notify 和 CountDownLatch应用
淘宝面试题:实现一个容器,提供两个方法,add,size,写两个线程,线程1添加10个元素到容器中,线程2实现监控元素的个数,当到5个时候,线程2给出提示并结束。很明显是一个多线程通信问题。方法1:通过wait-notify,重点:wait操作释放锁,notify不释放锁,wait后面的代码要想执行必须获得锁才可以执行。 import java.util.ArrayList;import java.util.List; public class TaobaoTest { pub原创 2021-04-21 20:08:53 · 443 阅读 · 1 评论 -
ThreadLocal和引用关系
一、引用类型-强软弱虚强引用:通常=表示的引用软引用:SoftReference,在内存不足时,垃圾回收器才回收弱引用:WeakReference,无论内存是否足够,只要 JVM 开始进行垃圾回收,那些被弱引用关联的对象都会被回收。ThreadLocal中使用了弱引用虚引用:最弱的一种引用,垃圾回收器直接回收,主要堆外内存管理场景。例如:通过虚引用关联一块堆外内存的对象,当虚引用对象被回收后,引用堆外内存还没有回收,因此需要通知(采用一个Queue方式)gc进行回收二、ThreadLocal原创 2021-04-08 21:11:45 · 840 阅读 · 0 评论 -
CAS,synchronized底层实现,锁升级
一、重量级锁和轻量级锁重量级锁:synchronized,但是synchronized目前已经优化,即锁升级操作轻量级锁:JUC、CAS区别:重量级锁需要经过linux内核态完成,轻量级锁只需要在用户态完成二、CAS (Compare And Swap)在jvm底层是通过汇编指令:lock cpu 和cmpxchg实现三、synchronized锁升级过程普通对象->偏向锁->轻量级锁->重量级锁什么是偏向锁:偏向第一个持有该锁的线程,也就是如果没有竞争,只原创 2021-04-08 10:19:26 · 400 阅读 · 0 评论 -
多线程可见性(java c语言)
一、javapublic class Main { public boolean b = true; public void m() { System.out.println("start"); while(this.b){ } System.out.println("end"); } public static void main(String[] args) throws Exception{原创 2021-04-07 19:41:45 · 217 阅读 · 0 评论 -
java单例写法以及各种毛病
一、最简单、支持高并发的单例(饿汉式,不管三七二十一,上来就创建)public class Singleton { private static Singleton INSTANCE = new Singleton(); private Singleton() {} public static Singleton getInstance() { return INSTANCE; } public static void main(String[原创 2021-04-07 17:55:09 · 195 阅读 · 0 评论 -
java class文件以及对象内存分布
根据java虚拟机规范里面的描述:java对象分为三部分:对象头(Object Header), 实例数据(instance data),对齐填充(padding,无论32位、64位虚拟机都是8字节对齐)。如图32位虚拟机mark word:8字节class pointer:4字节,代表当前对象是哪个类,实际指向的XX.class64位虚拟机:mark word:8字节class pointer:4字节,代表当前对象是哪个类,实际指向的XX.class下面我们以对象(Ojbe原创 2021-04-06 13:53:04 · 968 阅读 · 1 评论 -
lombok注解实现(annotation)
一、注解注解相关内容,可自行百度。这里介绍通过语法树,修改源码的方式:主要实现在方法入口、退出打印。二、idea创建工程通过idea创建一个工程,并且添加两个module,如下图所示:2.1、ztrace工程2.1.1、pom文件<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http.原创 2020-11-26 19:41:06 · 1107 阅读 · 0 评论 -
java getLocalHostName底层实现
最近工作getLocalHostName返回值和linux 命令hostname返回值不太一样,就深入研究了一下jdk源码实现,请参考代码注释。JNIEXPORT jstring JNICALLJava_java_net_Inet4AddressImpl_getLocalHostName(JNIEnv *env, jobject this) { char hostname[NI_MAXHOST+1]; hostname[0] = '\0'; if (JVM_GetHost原创 2020-11-04 17:53:59 · 1002 阅读 · 0 评论 -
Netty源码分析之Reactor线程模型
Netty线程模型源码分析原创 2017-12-21 18:32:56 · 2451 阅读 · 0 评论 -
Netty源码分析之流水线
Netty流水线处理流程简析原创 2017-12-25 09:55:19 · 561 阅读 · 0 评论