Java后端
文章平均质量分 75
Pan's pidr
这个作者很懒,什么都没留下…
展开
-
JVM 垃圾收集
文章目录判断是否可回收引用计数算法可达性分析算法如何判断⼀个类是⽆⽤的类?回收方法区垃圾收集算法标记-清除算法复制算法标记-整理算法回收时机安全点安全区域垃圾收集器CMS收集器CMS 三色标记法G1收集器划分规则运作过程回收策略索引策略ZGC 垃圾回收器回收过程并发转移着色指针读屏障处理过程卡表(Card Table)杂识分代垃圾回收器中新生代和老年代为什么新生代有两个Survivor分区?判断是否可回收引用计数算法对象中加一个计数器保存引用该对象的地方的个数缺点是不能解决循环依赖的问题可达性分析原创 2021-09-29 17:44:27 · 445 阅读 · 0 评论 -
Java 中的各种锁及其原理
概览在并发编程中,锁是一种常用的保证线程安全的方法。Java 中常用的锁主要有两类,一种是 Synchronized 修饰的锁,被称为 Java 内置锁或监视器锁。另一种就是在 J2SE 1.5 版本之后的 java.util.concurrent 包(下称 j.u.c 包)中的各类同步器,包括 ReentrantLock(可重入锁),ReentrantReadWriteLock(可重入读写锁),Semaphore(信号量),CountDownLatch 等。这些同步器都是基于 AbstractQueue原创 2021-09-23 17:59:22 · 2041 阅读 · 0 评论 -
JVM 中的内存屏障
java内存屏障的原理与应用_Java_breakout_alex的博客-CSDN博客 - 掘金 (juejin.cn)一文解决内存屏障 | 程序猿说你好 (monkeysayhi.github.io)内存屏障 - 简书 (jianshu.com)内存屏障的作用确保一些特定操作执行的顺序影响一些数据的可见性(其中一种方式就是强制更新一次不同 CPU 的缓存)可见性可见性:当一个线程修改了线程共享变量的值,其它线程在使用前,能够得到最新的修改值。有两种可见性问题:CPU 在硬件架构上的原创 2021-09-07 22:32:13 · 501 阅读 · 0 评论 -
mysql8.x 出现不能登录的情况(ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password:YS)
如果不是粗心,那么可能是密码错误,也可能是修改远程访问错误导致不能在本地访问。进入mysql关闭mysql的验证:修改配置文件 /etc/my.cnf,在下面加入一行skip-grant-tables=1重启mysql服务:systemctl restart mysqld使用root用户登录到mysql:mysql -u root修改密码使用命令:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_passwor原创 2021-02-01 13:51:29 · 307 阅读 · 0 评论 -
将SSM(Spring + SpringMVC + MyBatis) + JSP项目中的Spring重构为Spring Boot
整体思路参考这篇博客:https://blog.csdn.net/xiaocxyczh/article/details/78681374Spring MVC 到 Spring Boot 的简化之路https://juejin.cn/post/6844903573453537294Spring Boot 与 Spring MVC是两种不同的配置方式,一种是使用starter启动器来完成自动配置,另一种是在xml中进行配置,将Spring MVC重构为Spring Boot之后,已经不识别xml了,这个原创 2021-01-27 19:47:22 · 515 阅读 · 1 评论 -
彻底解决MyBatis映射失败的问题(Invalid bound statement (not found))
解决问题要从问题的本质去找方法,比如MyBatis映射不对,只有两种可能,一种是因为名字对应不上,比如接口的名字和namespace不对应,或者里面的方法名字不对应之类的;另一种就是找不到文件,或者找不到接口文件,或者找不到Mapper.xml文件所以MyBatis映射失败的时候,应该从以下几个方向去解决检查名字检查接口名字和mapper中的namespace检查方法名是否一致这两个方法都可以通过插件来很好的解决,如果装上MyBatis插件之后可以相互跳转,说明名字没有问题。检查文件检查接原创 2021-01-19 10:18:30 · 7876 阅读 · 1 评论 -
Ubuntu安装Redis
刚开始用apt来安装的,结果一直报错,安装好了之后,版本太低,并且不能启动,最后放弃了,改为使用源码安装。使用源码安装参考这篇文章:https://www.geek-share.com/detail/2775832907.html需要注意的是在运行的时候要指定配置文件,比如./redis-server ../redis.conf,不然修改的配置文件都没用。如果没有改为 bind 0.0.0.0 ,虽然远程能够连接上,但是一旦使用命令,比如ping,set之类的,就会出现 “Error: 在驱动器原创 2021-01-18 00:42:20 · 395 阅读 · 0 评论 -
idea打包web项目为war包,并部署到服务器的正确做法(图文详细教程)
在网上找了很久,发现很多方法是错误的,有的连web.xml文件以及classes文件夹、lib文件夹都没生成。同时在部署过程中还出现本地调试正常,但是放到服务器上就不能访问的问题。因此有很多注意事项,写下这篇博客以作记录。Idea打包web项目为war包(详细图文步骤)打开Projec Structure创建WEB-INF文件夹以及在这个文件夹下的子目录classes...原创 2020-04-23 09:17:02 · 6513 阅读 · 2 评论 -
JDK、Mybatis、Mysql、Maven、Spring Boot以及Spring Cloud的版本对应关系
背景之前做个Spring Cloud的demo,光是配环境就花了不少时间,所以留个记录同时也帮助大家更方便的找到对应的版本关系。Spring Boot 与 MybatisMysql 与 JavaSpring Boot 版本+ jdk 版本 + Maven 版本的对应关系Spring Cloud 与 Spring Boot在Spring Cloud的官网中有进入官网之后,查看对应版本的参考文档最开始的地方就有对应的Spring Boot版本Spring Cloud的各个组件原创 2021-01-16 20:13:28 · 3375 阅读 · 0 评论 -
“==”和“equals”的底层探讨(Stirng与字符串常量池)
String有两种声明方式一种是直接String str1 = “xxx”,另一种是String str2 = new String(“xxx”)前者是在字符串常量池中找相应的对象引用,如果有就直接引用,后者是不管有没有都会创建一个新的对象(可以通过intern关键字将new创建的字符串引用放到字符串常量池中)几种创建方式常量赋值String str1 = "ab";直接在字符串常量池中创建字符串常量编译器优化String str1 = "ab";String str2 = "a" +原创 2020-12-28 09:51:20 · 122 阅读 · 0 评论 -
Java的四种引用类型的回收时机以及使用场景
强引用Object obj = new Object();Java默认创建的对象都是强引用类型抛出OutOfMemoryError终止程序也不会回收具有强引用的对象;通过将对象设置为null来弱化引用,使其被回收;软引用Object obj = new Object();SoftReference sf = new SoftReference(obj);这里sf是对obj的一个软引用,软引用引用的对象会在系统将要发生内存溢出之前,被列入垃圾回收的范围进入回收。可以用来实现高速缓存弱引用原创 2020-12-28 09:35:54 · 699 阅读 · 0 评论 -
常见的Java容器总结
前言:写的比较简略,主要是用作记录与总结HashMap的底层实现数据结构HashMap底层是用数组实现的,以链表的方式来解决散列冲突,当链表长度达到一定数值之后,将链表重构为红黑树初始化刚开始创建一个HashMap的时候,可以指定初始容量的大小,之后的HashCode就是在这个基础上生成的,以及数据的增长因子插入判断是否为空计算hash值,判断是否存在插入之后判断是否需要扩容扩容时机:当size > 允许的最大元素数量threshold,就会触发扩容,threashold默认原创 2020-12-28 09:14:45 · 126 阅读 · 0 评论 -
从一个对象的“生命周期”来讲解JVM
从一个对象的生命周期来讲解JVM首先是 Java 虚拟机架构图,后面很多地方都会用到这个图,首先是一个 Class 文件,通过 ClassLoader 将类加载到方法区中然后是对象被创建到堆区中,程序中的变量等数据保存在Java虚拟机运行时数据区中图源网络,侵删对象是来源于类的,所以首先讲解类的创建类的创建一个Class文件通过双亲委派机制,经过加载、验证、准备、解析以及初始化这五个步骤之后,被加载到JVM虚拟机中等待被使用双亲委派机制流程图,对应有如下类加载器:BootstrapCla原创 2020-12-19 12:10:28 · 129 阅读 · 1 评论 -
最最基础Java后端
最最基础Java后端最最基础的Java后端,仅供了解后端运作的过程,里面的方法和套路拿来就能实现一个Java后端,但深入需要学习额外的知识,比如Servlet和JDBC,文中除Java基础知识外,只涉及这两方面的知识,学习了Servlet和JDBC之后,可以了解Java后端的运作过程,对学习Spring和Mybatis等知识都有帮助整体理解Servlet过程已经在图中展示出来,这里直接贴...原创 2020-04-23 11:23:18 · 234 阅读 · 2 评论