Pan's pidr
码龄6年
关注
提问 私信
  • 博客:65,440
    动态:12
    65,452
    总访问量
  • 29
    原创
  • 956,330
    排名
  • 13
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:山西省
  • 加入CSDN时间: 2018-08-15
博客简介:

Panda的学习日常

博客描述:
记录学习过程中的收获以及遇到的问题
查看详细资料
个人成就
  • 获得48次点赞
  • 内容获得23次评论
  • 获得141次收藏
创作历程
  • 13篇
    2021年
  • 8篇
    2020年
  • 8篇
    2019年
成就勋章
TA的专栏
  • JVM
    1篇
  • Java后端
    14篇
  • 并发编程
    1篇
  • MySQL
    3篇
  • 操作系统
    1篇
  • Ubuntu
    3篇
  • hpc
    1篇
  • 小技巧
    5篇
  • Android开发
    4篇
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

347人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

JVM 垃圾收集

文章目录判断是否可回收引用计数算法可达性分析算法如何判断⼀个类是⽆⽤的类?回收方法区垃圾收集算法标记-清除算法复制算法标记-整理算法回收时机安全点安全区域垃圾收集器CMS收集器CMS 三色标记法G1收集器划分规则运作过程回收策略索引策略ZGC 垃圾回收器回收过程并发转移着色指针读屏障处理过程卡表(Card Table)杂识分代垃圾回收器中新生代和老年代为什么新生代有两个Survivor分区?判断是否可回收引用计数算法对象中加一个计数器保存引用该对象的地方的个数缺点是不能解决循环依赖的问题可达性分析
原创
发布博客 2021.09.29 ·
465 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Java 中的各种锁及其原理

概览在并发编程中,锁是一种常用的保证线程安全的方法。Java 中常用的锁主要有两类,一种是 Synchronized 修饰的锁,被称为 Java 内置锁或监视器锁。另一种就是在 J2SE 1.5 版本之后的 java.util.concurrent 包(下称 j.u.c 包)中的各类同步器,包括 ReentrantLock(可重入锁),ReentrantReadWriteLock(可重入读写锁),Semaphore(信号量),CountDownLatch 等。这些同步器都是基于 AbstractQueue
原创
发布博客 2021.09.23 ·
2079 阅读 ·
2 点赞 ·
0 评论 ·
7 收藏

MySQL 三大日志:binlog、redo log 和 undo log 使用与原理

文章目录binlogbinlog日志格式binlog 使用场景binlog 刷盘时机查看 binlog 日志redo logredo log日志格式redo log使用场景redo log刷盘时机LSNredo log与binlog区别为什么 binlog 没有 crash-safe 能力两阶段提交怎么保证两份日志之间的逻辑一致组提交undo log事务提交undo log处理过程insert undo logupdate undo logpurge 线程的清理过程MySQL 崩溃恢复日志是mysql数
原创
发布博客 2021.09.17 ·
846 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

MySQL 事务管理

重点:begin/start transaction 命令并不是一个事务的起点,在执行到它们之后的第一个操作 InnoDB 表的语句,事务才真正启动。如果想要马上启动一个事务,可以使用 start transaction with consistent snapshot 这个命令。事务隔离级别根据读和提交的关系来分类的读未提交:一个事务还没提交时,它做的变更就能被别的事务看到;读提交:一个事务提交之后,能被其他事务看到;可重复读:一个事务执行过程中看到的数据,总是根这个事务在启动时看到的数据一致
原创
发布博客 2021.09.17 ·
457 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

MVCC (Multi-Version Concurrency Control 多版本的并发控制协议)

数据结构隐藏列InnoDB中每行数据都有两个隐藏列,一个保存了行的事务ID(DB_TRX_ID),一个保存了行的回滚指针(DB_ROLL_PT)。每开始一个新的事务,都会自动递增产生一个新的事务id。事务开始时刻的会把事务id放到当前事务影响的行事务id中,当查询时需要用当前事务id和每行记录的事务id进行比较。数据的历史版本就是不同事务修改数据的过程事务id,这个过程不一定是递增或者递减的基于undo log的版本链前面说到每行数据的隐藏列中包含了指向undo log的指针,而每条undo lo
原创
发布博客 2021.09.17 ·
387 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏

JVM 中的内存屏障

java内存屏障的原理与应用_Java_breakout_alex的博客-CSDN博客 - 掘金 (juejin.cn)一文解决内存屏障 | 程序猿说你好 (monkeysayhi.github.io)内存屏障 - 简书 (jianshu.com)内存屏障的作用确保一些特定操作执行的顺序影响一些数据的可见性(其中一种方式就是强制更新一次不同 CPU 的缓存)可见性可见性:当一个线程修改了线程共享变量的值,其它线程在使用前,能够得到最新的修改值。有两种可见性问题:CPU 在硬件架构上的
原创
发布博客 2021.09.07 ·
521 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

select、poll、epoll 底层探讨

select概述将监听的文件描述符分为三组,每一组监听不同的需要进行的IO操作(读、写、异常)。当select返回时,无差别轮询所有流,找出能读出数据,或者写入数据的流,每组文件描述符会被select过滤,只留下可以进行对应IO操作的文件描述符。有数量限制:受单个进程能打开的文件描述符数量受 FD_SIZE(默认1024) 限制,修改这个宏需要重新编译内核。也看到有另一种说法如下(说法来源于《网络编程实战》C10K问题章节):使用 ulimit -n 查看单个进程能打开的文件描述符数量(默认
原创
发布博客 2021.08.19 ·
431 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

修改U盘、移动硬盘时提示目标文件夹访问被拒绝的问题解决思路

今天遇到一个很奇怪的现象,那就是在向移动硬盘复制东西的时候一直提示我目标文件夹访问被拒绝,即使是管理员权限或者登录到管理员账号也没用,折腾着半天,在用一些网上的解决方法的时候,又遇到了一些其他问题,因此在这里总结一下,基本上网上能找到的方法在这里都能找到,找不到的方法也能在这里找到。分析在解决问题之前,一定要先对问题进行分析,才能做到对症下药,是药三分毒,找错方向浪费了时间可就找不回来了,列举出需要分析的情况如下:是否是只读对外接磁盘(将 U盘、移动硬盘统称为外接磁盘)的修改,不论是增删改都不行检
原创
发布博客 2021.07.10 ·
14035 阅读 ·
4 点赞 ·
3 评论 ·
5 收藏

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 ·
411 阅读 ·
0 点赞 ·
0 评论 ·
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 ·
534 阅读 ·
0 点赞 ·
1 评论 ·
2 收藏

彻底解决MyBatis映射失败的问题(Invalid bound statement (not found))

解决问题要从问题的本质去找方法,比如MyBatis映射不对,只有两种可能,一种是因为名字对应不上,比如接口的名字和namespace不对应,或者里面的方法名字不对应之类的;另一种就是找不到文件,或者找不到接口文件,或者找不到Mapper.xml文件所以MyBatis映射失败的时候,应该从以下几个方向去解决检查名字检查接口名字和mapper中的namespace检查方法名是否一致这两个方法都可以通过插件来很好的解决,如果装上MyBatis插件之后可以相互跳转,说明名字没有问题。检查文件检查接
原创
发布博客 2021.01.19 ·
8275 阅读 ·
1 点赞 ·
1 评论 ·
4 收藏

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 ·
423 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

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 ·
3543 阅读 ·
4 点赞 ·
0 评论 ·
17 收藏

“==”和“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 ·
140 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏

Java的四种引用类型的回收时机以及使用场景

强引用Object obj = new Object();Java默认创建的对象都是强引用类型抛出OutOfMemoryError终止程序也不会回收具有强引用的对象;通过将对象设置为null来弱化引用,使其被回收;软引用Object obj = new Object();SoftReference sf = new SoftReference(obj);这里sf是对obj的一个软引用,软引用引用的对象会在系统将要发生内存溢出之前,被列入垃圾回收的范围进入回收。可以用来实现高速缓存弱引用
原创
发布博客 2020.12.28 ·
760 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

常见的Java容器总结

前言:写的比较简略,主要是用作记录与总结HashMap的底层实现数据结构HashMap底层是用数组实现的,以链表的方式来解决散列冲突,当链表长度达到一定数值之后,将链表重构为红黑树初始化刚开始创建一个HashMap的时候,可以指定初始容量的大小,之后的HashCode就是在这个基础上生成的,以及数据的增长因子插入判断是否为空计算hash值,判断是否存在插入之后判断是否需要扩容扩容时机:当size > 允许的最大元素数量threshold,就会触发扩容,threashold默认
原创
发布博客 2020.12.28 ·
143 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

从一个对象的“生命周期”来讲解JVM

从一个对象的生命周期来讲解JVM首先是 Java 虚拟机架构图,后面很多地方都会用到这个图,首先是一个 Class 文件,通过 ClassLoader 将类加载到方法区中然后是对象被创建到堆区中,程序中的变量等数据保存在Java虚拟机运行时数据区中图源网络,侵删对象是来源于类的,所以首先讲解类的创建类的创建一个Class文件通过双亲委派机制,经过加载、验证、准备、解析以及初始化这五个步骤之后,被加载到JVM虚拟机中等待被使用双亲委派机制流程图,对应有如下类加载器:BootstrapCla
原创
发布博客 2020.12.19 ·
155 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

最最基础Java后端

最最基础Java后端最最基础的Java后端,仅供了解后端运作的过程,里面的方法和套路拿来就能实现一个Java后端,但深入需要学习额外的知识,比如Servlet和JDBC,文中除Java基础知识外,只涉及这两方面的知识,学习了Servlet和JDBC之后,可以了解Java后端的运作过程,对学习Spring和Mybatis等知识都有帮助整体理解Servlet过程已经在图中展示出来,这里直接贴...
原创
发布博客 2020.04.23 ·
255 阅读 ·
1 点赞 ·
2 评论 ·
1 收藏

idea打包web项目为war包,并部署到服务器的正确做法(图文详细教程)

在网上找了很久,发现很多方法是错误的,有的连web.xml文件以及classes文件夹、lib文件夹都没生成。同时在部署过程中还出现本地调试正常,但是放到服务器上就不能访问的问题。因此有很多注意事项,写下这篇博客以作记录。Idea打包web项目为war包(详细图文步骤)打开Projec Structure创建WEB-INF文件夹以及在这个文件夹下的子目录classes...
原创
发布博客 2020.04.23 ·
6894 阅读 ·
12 点赞 ·
2 评论 ·
27 收藏

如何获取MIPS汇编对应的机器码

在看《自己动手写CPU》的时候,里面需要将MIPS转换成机器码作为输入的指令,不过书上的工具以及一些步骤在实际中是不能用的,因此在这里将“从MIPS汇编转换成机器码”的完整过程下来安装Linux虚拟机因为汇编工具需要在Linux的环境下运行,所以需要安装Linux虚拟机,我用的软件是VMware,Linux系统是Ubuntu 18.04,具体的安装过程网上有很多教程,这里就不再详细的叙述了安...
原创
发布博客 2020.04.20 ·
5062 阅读 ·
3 点赞 ·
2 评论 ·
11 收藏
加载更多