随笔分类 -  java基础

摘要:不要说精通Java、Spring,能掌握70%就很不错了,其他的高级特性。。。 我们平常开发java程序时,总想开发一个代理程序监视记录类的运行情况,比如性能监控或运维人员很需要,比如调用业务方法时记录日志、计时等,除了AOP实现之外,还有一种实现,那就是基于java高级特性Instrumentat 阅读全文
posted @ 2022-03-11 14:40 高压锅里的大萝卜 阅读(401) 评论(0) 推荐(0) 编辑
摘要:1 基础知识 普通对象的结构如下,按64位机器的长度计算1. 对象头(_mark), 8个字节2. Oop指针,如果是32G内存以下的,默认开启对象指针压缩,4个字节3. 数据区4. Padding(内存对齐),按照8的倍数对齐 数组对象结构是1. 对象头(_mark), 8个字节2. Oop指针, 阅读全文
posted @ 2022-03-11 14:36 高压锅里的大萝卜 阅读(3491) 评论(3) 推荐(1) 编辑
摘要:什么是ThreadLocal? ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。 测试代码: package com.javaBase.LineDistance; /** * 〈一句话功能简述〉; * 〈功能详 阅读全文
posted @ 2022-03-08 09:13 高压锅里的大萝卜 阅读(62) 评论(0) 推荐(0) 编辑
摘要:前言我们常用的创建线程方式一般有下面 2 种: 继承Thread,重写run方法实现Runnable接口,重新run方法其实在 Executor 框架中还有一种方法可以实现异步,那就是实现 Callable 接口并重写call方法。虽然是实现 Callable ,但是在 Executor 实际运行时 阅读全文
posted @ 2022-03-01 11:45 高压锅里的大萝卜 阅读(740) 评论(0) 推荐(1) 编辑
摘要:hreadPoolExecutor提供了四个构造方法: 我们以最后一个构造方法(参数最多的那个),对其参数进行解释: public ThreadPoolExecutor(int corePoolSize, // 1 int maximumPoolSize, // 2 long keepAliveTi 阅读全文
posted @ 2022-02-28 17:33 高压锅里的大萝卜 阅读(39) 评论(0) 推荐(0) 编辑
摘要:多线程环境下,HashMap扩容会导致死锁,下面图解过程: 并发下的Rehash(多线程)1)假设我们有两个线程,都执行以下扩容代码。 do { Entry<K,V> next = e.next; // <--假设线程一执行到这里就被调度挂起了,执行其他操作 int i = indexFor(e.h 阅读全文
posted @ 2022-02-28 16:46 高压锅里的大萝卜 阅读(287) 评论(0) 推荐(0) 编辑
摘要:Collection | ├AbstractCollection 对Collection接口的最小化抽象实现 | │ | ├List 有序集合 | │-├AbstractList 有序集合的最小化抽象实现 | │-├ArrayList 基于数组实现的有序集合 | │-├LinkedList 基于链表 阅读全文
posted @ 2022-02-28 14:04 高压锅里的大萝卜 阅读(56) 评论(0) 推荐(0) 编辑
摘要:一.java io流 概况 按照技术体系分为BIO、NIO、AIO 每种技术体系都有以下分类 1. 流内容角度分类: 1.字节流 > 输入或者输出都是字节。 2.字符流 > 输入或者输出都是字符,相比字节流,其实是多做一步,自动把字符转换成字节或者把字节转换为字符(涉及到字符集或者操作系统默认字符集 阅读全文
posted @ 2022-02-25 11:56 高压锅里的大萝卜 阅读(163) 评论(0) 推荐(0) 编辑
摘要:1 length()字符串的长度 String a = "Hello Word!"; System.out.println(a.length); 输出的结果是字符串长度10。 2 charAt()截取一个字符 String a = "Hello Word"; System.out.println(a 阅读全文
posted @ 2022-02-24 15:23 高压锅里的大萝卜 阅读(103) 评论(0) 推荐(0) 编辑
摘要:一.背景 针对对象的某个接口,动态生成该对象的代理,增加对象被调用之前和之后的控制逻辑。 二.代码示例 public static interface Student {//接口 void exam(); } public static class MiddleSchoolStudent imple 阅读全文
posted @ 2022-02-24 14:04 高压锅里的大萝卜 阅读(22) 评论(0) 推荐(0) 编辑
摘要:一.泛型代码示意: public interface List<E> extends Collection<E> {//泛型接口定义,接口名后面跟尖括号,尖括号里面的表示类型名称,相当于变量X那种感觉;泛型类和泛型接口定义格式一样 int size(); boolean isEmpty(); boo 阅读全文
posted @ 2022-02-23 17:51 高压锅里的大萝卜 阅读(40) 评论(0) 推荐(0) 编辑
摘要:示例代码如下: public class Person implements Serializable {//实现Serializable接口,就可以被序列化和反序列化 /*** *类序列化版本号 *如果类有变化,比如有个字段类型改了,就要改变这个值; *如果待反序列化的文件和类中的这个版本号不一致 阅读全文
posted @ 2022-02-23 15:55 高压锅里的大萝卜 阅读(42) 评论(0) 推荐(0) 编辑
摘要:一. Cloneable + clone方法实现拷贝 示例代码如下: static class Account implements Cloneable{ public int id; public String name; @Override protected Account clone() { 阅读全文
posted @ 2022-02-23 15:30 高压锅里的大萝卜 阅读(382) 评论(0) 推荐(0) 编辑
摘要:一.背景 并发包中的各种并发工具基础都是用了AQS(AbstractQueuedSynchronizer),这个工具和Synchronizer关键字提供的功能类似,但是比Synchronizer要更好用 有如下改进: 1.获取锁时,AQS时能响应中断(阻塞线程被唤醒后会检查中断标志位,来响应中断); 阅读全文
posted @ 2022-02-17 17:31 高压锅里的大萝卜 阅读(91) 评论(0) 推荐(0) 编辑
摘要:一.Synchronized使用方法 1.同步静态方法 private static synchronized t1(){ } 2.同步方法 private synchronized t2(){ } 3.同步代码块 synchronized(object){ } 4.线程同步 synchronize 阅读全文
posted @ 2022-02-16 16:29 高压锅里的大萝卜 阅读(128) 评论(0) 推荐(0) 编辑
摘要:gc中不能被回收的对象,叫做gc root,官网上说的太细了;现在大体总结一下如下: 1.SystemClassLoader加载的类(包括了静态变量) 就是appClassLoader(classpath指定的目录中的类,都能被其加载) 2.虚拟机缓存类对象 常量池(Constant Pool) 符 阅读全文
posted @ 2022-02-16 13:15 高压锅里的大萝卜 阅读(864) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示