Java
文章平均质量分 84
发条橙33
这个作者很懒,什么都没留下…
展开
-
JavaSE线程知识回顾
1.实现多线程的方法1.1 继承Thread类步骤:1.自定义类继承Thread类 2.重写run方法,run方法中是需要执行的多线程程序 3.创建自定义类的对象 4.对象.start()public static void main(String[] args) { MyThread m1 = new MyThread(); MyThread m2 = new MyThread(); m1.start(); m2.start();原创 2021-03-08 17:00:14 · 119 阅读 · 1 评论 -
常用设计模式(继续更新中...)
1. 设计模式七大原则1.1 单一职责原则2.2 接口隔离原则原创 2020-08-15 17:58:21 · 169 阅读 · 0 评论 -
基于Docker的RabbitMQ学习
1.安装docker拉取镜像:docker pull rabbitmq运行镜像:docker run -dit --name Myrabbitmq -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 rabbitmq其中5672为应用访问端口,15672为web端口,如果是阿里云需要在阿里云开放安全组。之后发现ip:15672仍然不能访问,执行如下两条命令即可。doc原创 2020-08-01 11:02:11 · 186 阅读 · 0 评论 -
Redis总结
1.基础知识docker执行redis命令行:docker exec -it 容器id redis-cli命令含义select n切换数据库DBSIZE查看数据库大小keys *查看数据库所有的keyflushdb清空当前数据库flushall清空所有数据库EXISTS 键名判断当前key是否存在move 键名 数据库id移动键值对到对应数据库get 键名得到对应的valuetype 键名得到当前key的类型ex原创 2020-07-20 10:47:55 · 147 阅读 · 0 评论 -
MySQL优化之explain与index
1.explain执行格式:explain+sql语句以下将对每个字段进行讲解。1.1 id分三种情况:(1)id相同,执行顺序由上而下。执行顺序1->3->2。(2)如果是子查询,id序号递增,id越大越先被执行。执行顺序3->1->2。(3)id相同可以认为是一组,从上往下顺序执行,在所有组中,id越大越先被执行。执行顺序3->衍生表_>2。1.2 select_type常用的六个值:simple简单的select查询,查询中不包括子查原创 2020-06-26 16:38:02 · 2851 阅读 · 0 评论 -
linux常用命令总结
命令命令功能ls查看所有文件 ,-a 查看包括隐藏文件的所有文件 -l 查看文件详细信息cd切换目录 ,… 上一层 (两个点),/开头绝对目录,~ 回到当前用户命令touch新建文件pwd显示当前所在目录mkdir创建文件夹rmdir删除文件夹,仅能删除空目录cp复制文件夹,cp 原文件 要复制到的文件夹mv移动文件或目录, mv 原文件 要复制到的文件夹,也可以重命名rm移除文件或目录chmod更改文件9属性,...原创 2020-06-20 23:26:51 · 153 阅读 · 0 评论 -
JVM中的引用
强引用、软引用、弱引用和虚引用的区别?适用场景?强、软、弱、虚四种引用强度依次逐渐减弱。**强引用:**不回收**软引用:**内存不足就回收(仍然存在引用关系)**弱引用:**发现就回收(仍然存在引用关系)**虚引用:**对象被回收时收到系统通知...原创 2020-06-08 14:39:39 · 108 阅读 · 0 评论 -
JVM垃圾回收算法详解
JVM的垃圾回收存在于堆和元空间(方法区或永久代)中,最多发生在新生代,偶尔发生在老年代,基本不发生在方法区。对象存活判断:一个对象不被任意的存活对象继续引用时,就已经死亡。判断对象存活的两种方式:引用计数算法和可达性分析算法。1.垃圾标记阶段的算法之一:引用计数算法2.垃圾标记阶段的算法之二:可达性分析(根搜索算法)3.清除阶段的算法之一:标记-清除算法当堆中的内存被耗尽时,就会停止整个程序(stop the world),进行标记和清除两项工作。标记:垃圾回收器从引用根节点开始遍原创 2020-06-07 19:18:31 · 141 阅读 · 0 评论 -
JVM运行时数据区
其中蓝框中的红色部分代表一个进程一份,灰色代表一个线程一份,如一个运行的程序中有5个线程,这5个线程共享方法区和堆,而每个线程都有一份程序计数器、本地方法栈和虚拟机栈,共5组。1. PC寄存器PC寄存器用来存储指向下一条指令的地址,也就是即将要执行的代码。由执行引擎读取下一条指令。在JVM中,每个线程都有自己的PC寄存器,就是用来记录当前线程的程序执行到哪了。线程私有,与线程的生命周期一致。PC寄存器既没有GC,也没有OOM。两个小问题1.1 为什么要使用PC寄存器来记录线程的执行地址?CP.原创 2020-06-04 22:19:45 · 181 阅读 · 1 评论 -
类加载器以及双亲委派模型
1.类加载器系统的类加载器分为引导类加载器或启动类加载器(Bootstrap ClassLoader)和自定义类加载器。其中自定义类加载器指的是所有继承于ClassLoader的类加载器。 //获取系统类加载器 ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader(); System.out.println(systemClassLoader);//sun.misc.Launcher$AppCl原创 2020-05-27 19:20:14 · 114 阅读 · 0 评论 -
类的加载过程
分为三个过程:加载,链接(验证,准备,解析),初始化1. 加载在内存中生成一个代表这个类的class对象。2. 链接(验证,准备,解析)2.1 验证保证被加载类的正确性。2.2 准备为类变量分配内存并且设置变量的默认初始值。(不包含用final修饰的static,final在编译时候就会分配,准备阶段为显式初始化。也不会为实例变量分配初始化,类变量分配在方法区,而实例变量随着对象一起分配到Java堆中。)简单来说,只用static修饰时,准备阶段先分配值为零,初始化时再分配对应值。用fina原创 2020-05-26 22:14:01 · 140 阅读 · 0 评论 -
spring整合mybatis
按照mybatis-spring官方文档整理。1.准备实体类User2.dao层接口UserMapper类public User getUserById(int id);3.配置dao层接口,UserMapper.xml相当于UserMapper的实现类。//namespace表示xml文件与UserMapper接口绑定<mapper namespace="com.sgl.d...原创 2020-05-05 11:15:16 · 155 阅读 · 0 评论 -
MyBatis配置实现方法
根据mybatis官方文档配置Mybatis1.实体类2.UserDao(UserMapper)接口类3.副配置文件(相当于UserDaoImpl类)<mapper namespace="com.sgl.dao.UserMapper"> <select id="getUserList" resultType="com.sgl.pojo.User"> ...原创 2020-05-04 22:12:44 · 133 阅读 · 0 评论 -
Spring的aop两种配置实现方法
Spring的AOP实现实现方式一:配置文件实现(xml)配置文件:ioc配置需要装配的对象(包括切面类):<bean id="userService" class="com.sgl.service.UserServiceImpl"></bean><bean id="pointCut" class="com.sgl.diy.PointCut"><...原创 2020-05-03 16:31:20 · 197 阅读 · 0 评论