- 博客(18)
- 收藏
- 关注
原创 类加载过程
文章目录类加载过程类加载过程类的加载(不是new出来的对象),连接,初始化过程都是在程序运行期间完成的连接过程可分为三个部分验证。验证加载的class文件是否正确符合规范准备。为类中的静态变量分配内存,并附上初始值。如int初始值为0,boolean为false,引用类型为null解析。将类,字段,方法的符号引用转成可以使用的直接引用初始化类和接口只有在 “首次主动使用” 时才进行初始化通过new创建类的实例对静态变量取值或者赋值 static String a = “1”
2023-03-16 15:55:15
77
原创 排序算法。
一、冒泡排序重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。比较相邻的元素。如果第一个比第二个大,就交换它们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。重复步骤1~3,直到排序完成。public static void main(String[] args) { int[] sortArray = new int[] {1, 8, 9, 65, 3, 8
2023-03-16 15:54:02
68
原创 rabbitmq
一、应用场景异步处理,比较耗时又不需要同步的操作可以放入队列中进行传递请求,这样消息的发送方和接收方互不干扰即为解耦广播,一次发送大家共享,减少了冗余的操作流量削峰,一次性有大量请求过来,防止应用崩溃。所有请求全部进入消息队列,消费者逐个处理。二、消息队列过程客户端连接到消息队列服务器,建立TCP连接也就是connectionchannel是在connection内部创建的逻辑连接,线程将会创建单独的channel进行通讯,而不需要每次都创建一个connection。客户端声明一个exc
2023-03-16 15:52:25
108
原创 常用工具类
一、Arrays数组被声明后,长度不能发生改变,如果继续往数组添加元素会报错二、使用步骤1.引入库代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsimport warningswarnings.filterwarnings('ignore')import sslssl._create_default_https_context =
2023-03-16 15:51:18
64
原创 SQL优化
避免where条件加null。可以加上默认值避免使用!= 和<>避免使用or select id from t where num=10 or num=20可以这样查询:select id from t where num=10union allselect id from t where num=20不使用like %a%where左边不要计算连续的值123456 between .
2023-03-16 15:50:06
111
原创 Threadlocal
内存泄漏:不再会被使用的对象或者变量占用的内存不能被回收,就是内存泄露当ThreadLocal t = new ThreadLocal,代码执行完成后t被回收,但是Thread类中的MAP的value没有被回收,只有等线程结束后才回收。但是遇到线程池,会导致线程重复。造成内存泄漏t的值使用完后及时调用remove方法...
2023-03-16 15:49:00
59
原创 mysql事务
一、mysql事务四大特性 ACIDA 原子性Atomicity 执行的事务全部成功,或者回滚到执行事务前的状态C 一致性Consistency 事务执行前后数据必须一致,执行前a+b=1,执行后也是a+b=1I 隔离性isolation 多个事务之间的数据,彼此独立和透明互不影响D 持久性durability 事务一旦被提交,数据改变永久性二、mysql事务隔离级别1. 脏读:事务A读取事务B更新的数据,然后事务B回滚,A读到的数据是脏数据2. 不可重复读:事务A多次读取同一数据,事务B
2021-07-12 00:05:19
88
原创 线程池解析
一、几种常用线程池Executors.newSingleThreadExecutor() 单个的线程池 使用的LinkedBlockingQueueExecutors.newFixedThreadPool(10) 固定数量线程池 使用的LinkedBlockingQueueExecutors.newCachedThreadPool() 可缓存的线程池 使用的SynchronousQueue通过ThreadPoolExecutor构造器,前面三个也是通过构造方法创建public ThreadPool
2021-07-07 11:01:14
54
原创 spring
生命周期Spring启动,查找并加载需要被Spring管理的bean,进行Bean的实例化Bean实例化后对将Bean的引入和值注入到Bean的属性中如果Bean实现了BeanNameAware接口的话,Spring将Bean的Id传递给setBeanName()方法如果Bean实现了BeanFactoryAware接口的话,Spring将调用setBeanFactory()方法,将BeanFactory容器实例传入如果Bean实现了ApplicationContextAware接口的话,Spr
2021-06-29 11:13:31
61
原创 redis
一、redis基础数据结构字符串string列表list集合set有序集合sort set散列hash二、基本命令dbsize 获取存储数据个数exists key 判断是否存在keydel key 删除指定数据scan 0 match key count 10 从0下标开始查找key,查找10条数据type key 返回key的数据类型expire key 1000 设置key1000秒过期时间ttl key 返回整数表示剩余时间,-1表示永久有效,-2已经失效过期二、
2021-06-27 23:05:17
291
原创 Thread相关方法
一、Thread.currentThread().interrupted()中断当前线程,如果线程被阻塞sleep, wait, join则会中断阻塞,抛出异常。可以捕获异常处理逻辑二、Thread.interrupted()作用:返回当前线程是否被中断。且如果当前线程被中断,取消中断过程,线程被阻塞。如果未被中断,则线程被阻塞三、Thread.currentThread().isInterrupted()返回线程是否被中断,无取消中断的效果。如果截图,返回了线程被中断,最后的执行
2021-06-04 17:06:26
318
原创 守护线程.
前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot a
2021-06-02 14:26:46
48
原创 分布式锁。
分布式锁一般有三种实现方式数据库乐观锁。基于Redis的分布式锁。基于ZooKeeper的分布式锁。一、Redis实现分布式锁通过setnx,不存在key则插入成功,存在key则不插入且加上过期时间,防止释放锁失败一直死锁插入和设置过期时间是原子性操作释放锁,只有当前持有改锁的客户端能够释放锁。通过Lua脚本执行,如果redis value相同才删除key /** * 获取分布式锁, 且锁加上过期时间 * 单个redis服务器, 已有key存在, 则函数不会调用
2021-03-30 18:42:12
55
原创 深浅复制。
一、浅复制将一个对象的引用指向另外一个新的对象,两个对象的引用地址相同二、深复制通过实现Cloneable接口,重写clone()方法,对于基本数据类型的成员对象,因为基础数据类型是值传递的,所以是直接将属性值赋值给新的对象。基础类型的拷贝,其中一个对象修改该值,不会影响另外一个(和浅拷贝一样)。对于有多层对象的,每个对象都需要实现 Cloneable并重写 clone() 方法。public class Student implements Cloneable { publi
2021-03-25 17:32:04
88
原创 类加载器。
一、类加载器ClassLoader示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsimport warningswarnings.filterwarnings('ignore')import sslssl._create_def
2021-03-24 11:46:35
59
原创 AbstractQueuedSynchronizer
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码
2021-03-03 12:06:24
44
原创 ArrayList Collections.synchronizedList CopyOnWriteArrayList
文章目录一、Collections.synchronizedList二、使用步骤1.引入库2.读入数据参考内容一、Collections.synchronizedList1. 使用方法 List list = Collections.synchronizedList(new ArrayList()); 且该方法返回的是一个方法都加锁的对象SynchronizedList2. 多线程下使用迭代器访问数据时,需要手动加锁3. 通过反编译后的.class文件看出,增强for循环底层用的迭代器实现二、
2021-03-02 16:52:57
125
原创 泛型。。。
泛型, Object和?的区别前言一、pandas是什么?二、Object和?2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、Object和?1. Object是所有类的父类2. ?,当数据类型不
2021-02-26 15:46:32
64
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人