自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(59)
  • 资源 (5)
  • 收藏
  • 关注

原创 JVM内存结构和GC调优

JVM内存结构和GC调优

2023-02-22 18:21:23 574

原创 MySQL 性能优化思路和工具

MySQL 性能优化思路和工具

2023-02-21 19:47:34 3175

原创 mysql 索引原理和使用

mysql 索引原理和使用

2023-02-21 01:51:11 208

原创 Mysql架构与内部模块

mysql架构与内部模块

2023-02-20 18:55:42 444

原创 java并发编程原理3 (CountDownLatch,Semaphore,CopyOnWriteArrayList,ConcurrentHashMap)

CountDownLatch,Semaphore,CopyOnWriteArrayList,ConcurrentHashMap

2023-02-19 23:32:17 141

原创 java并发编程原理2 (AQS, ReentrantLock,线程池)

java并发编程知识点

2023-02-19 18:18:25 617

原创 java并发编程原理1(原子性,可见行,有序性,volatile,synchronized)

java并发编程相关知识点

2023-02-19 18:07:43 453

原创 springboot源码分析(一):启动过程

1、springboot的入口程序@SpringBootApplicationpublic class StartupApplication { public static void main(String[] args) { SpringApplication.run(StartupApplication.class, args); }}当程序开始执行之后,会调用SpringApplication的构造方法,进行某些初始参数的设置//创建一个新的实例,这个应用

2022-04-11 21:30:19 179

原创 分布式事务框架LCN使用、原理和源码阅读

官网: https://www.codingapi.com/docs/home/原理:来着官网使用:一个eureka。一个TM,两个RM,分别为订单服务和支付服务。具体详细配置请访问官网。订单服务Controller: @PostMapping("/add-order") @Transactional(rollbackFor = Exception.class) @LcnTransaction public String add(@RequestBody T

2021-11-07 22:50:58 177

原创 Tomcat和Nginx调优和配置

Nginx调优和配置静态资源配置:设置location 参数,配置匹配的规则,就是匹配哪些静态资源,然后设置路径。location ~ .*.(gif|jpg|jpeg|png)$ {进程数的优化:如果服务器性能比较好可以设置大一些提高Nginx的效率。worker_processes 8超时时间:设置超时时间,默认的是60s,Nginx会自动踢出超时的连接,保持可用性。keepalive_timeout 90;Tomcat调优和配置最大的线程数 maxThreads:Tomcat使用线程来处理接

2021-10-06 01:35:11 305

原创 ThreadLocal使用和原理(完结)

这里写目录标题一 是什么二 实际使用和使用场景2.1 Helloworld:2.2 工作中实际应用2.3 框架中的应用2.3.1 Spring的数据库连接一 是什么作者的描述:This class provides thread-local variables. These variables differfrom their normal counterparts in that each thread that accesses one(via its {@code get} or {@

2021-07-11 23:31:34 244

原创 JVM 运行时内存

Java 堆从 GC 的角度可以细分为: 新生代和老年代。新生代 是用来存放新生的对象。一般占据堆的 1/3 空间。由于频繁创建对象,所以新生代会频繁触发MinorGC 进行垃圾回收。新生代又分为 Eden 区、ServivorFrom、ServivorTo 三个区。MinorGC 采用复制算法:eden、servicorFrom 复制到 ServicorTo,年龄+1,默认15次就放到老年代。内存比较大的对象也会直接放到老年代。老年代主要存放应用程序中生命周期长的内存对象。老年代的对象比较稳定,

2021-06-06 01:01:51 113 1

原创 虚拟机怎么判断对象是否需要回收?

虚拟机怎么判断这个对象是否需要回收?Java虚拟机采用的是可达性分析算法这个算法的基本思路就是通过一系列的称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索。搜索所走过的路径称为引用链(Reference Chain),当一个对象到GC Roots没有任何引用链相连时,则证明此对象是不可用的,即可被回收。在Java语言中,可作为GC Roots的对象包括:虚拟机栈(栈帧中的本地变量表)中引用的对象。方法区中类静态属性引用的对象。方法区中常量引用的对象。本地方法栈中Native

2021-06-06 00:53:39 106

原创 hashmap扩容为何为何是2的n次幂

hashmap 的内存结构是数组加链表为了使值均匀的分布在数组里,尽可能减少碰撞,增加查询的效率,减少空间的浪费。可以使用key的hashcode去查找,因为hash的时间复杂度是1,速度比较快。然后hash值取模 % 数组的长度 -1。但是与运算& 比取模%速率要快些。所以Java官方使用了与运算&。运算&的特点是11为1,10 或者00为0。这里有个比较巧妙的地方就是:2的n次幂转换为2进制最后一位都是08 1000 16 10000因为key的hash值是跟

2021-06-06 00:44:15 813

原创 线程状态与互相转换

线程状态6个状态定义: java.lang.Thread. StateNew:尚未启动的线程的线程状态。Runnable:可运行线程的线程状态,等待CPU调度。Blocked:线程阻塞等待监视器锁定的线程状态。处于synchronized同步代码块或方法中被阻塞。Waiting:等待线程的线程状态。下列不带超时的方式:0bject.wait、Thread.join、 LockSupport.parkTimed Waiting:具有指定等待时间的等待线程的线程状态。下列带 超时的方式:Th

2020-06-21 23:22:09 106

原创 23种设计模式学习记录之策略模式

本文所有案例代码码云:https://gitee.com/helloworld6379/designPatternGithub:Github地址设计模式概述1 设计模式是程序员在面对同类软件工程设计问题所总结出来的有用的经验,模式不是代码,而是某类问题的通用解决方案,设计模式(Design pattern)代表了最佳的实践。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。2 设计模式的本质提高 软件的维护性,通用性和扩展性,并降低软件的复杂度。3 设计模式并不局限于

2020-06-20 01:11:58 132

原创 23种设计模式学习记录之观察者模式

想说的话:在大学的时候曾经学过这23种设计模式,但是那时没啥编程经验,糊里糊涂过了一遍,没多久就忘记了,工作之后将精力主要集中在学习新技术上,比如springboot,cloud,docker,vue。毕业两年后去面试,发现设计模式还是java程序员需要迈过的一道坎,面试的时候问到代理模式和适配器模式有什么区别,你在工作中用到了什么设计模式,怎么用的?答不上来的特别尴尬,所以决定重新学习这几种设计模式,争取在工作中使用上。本文所有案例代码码云:https://gitee.com/helloworld6

2020-06-12 00:30:04 148

原创 23种设计模式学习记录之模板方法模式

想说的话:在大学的时候曾经学过这23种设计模式,但是那时没啥编程经验,糊里糊涂过了一遍,没多久就忘记了,工作之后将精力主要集中在学习新技术上,比如springboot,cloud,docker,vue。毕业两年后去面试,发现设计模式还是java程序员需要迈过的一道坎,面试的时候问到代理模式和适配器模式有什么区别,你在工作中用到了什么设计模式,怎么用的?答不上来的特别尴尬,所以决定重新学习这几种设计模式,争取在工作中使用上。本文所有案例代码码云:https://gitee.com/helloworld6

2020-06-07 16:18:31 131

原创 23种设计模式学习记录之单例设计模式

想说的话:在大学的时候曾经学过这23种设计模式,但是那时没啥编程经验,糊里糊涂过了一遍,没多久就忘记了,工作之后将精力主要集中在学习新技术上,比如springboot,cloud,docker,vue。毕业两年后去面试,发现设计模式还是java程序员需要迈过的一道坎,面试的时候问到代理模式和适配器模式有什么区别,你在工作中用到了什么设计模式,怎么用的?答不上来的特别尴尬,所以决定重新学习这几种设计模式,争取在工作中使用上。设计模式概述1 设计模式是程序员在面对同类软件工程设计问题所总结出来的有用的经验

2020-05-21 23:34:25 195

原创 Docker使用

一 简介1.1Docker的由来一款产品从开发到上线,从操作系统,到运行环境,再到应用配置。作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各种版本的迭代之后,不同版本环境的兼容,对运维人员都是考验Docker之所以发展如此迅速,也是因为它对此给出了一个标准化的解决方案。环境配置如此麻烦,换一台机器,就要重来一次,费力费时。很多人想到,能不能从根...

2020-05-06 01:12:55 520

原创 利用MQ事务消息实现分布式事务

利用MQ事务消息实现分布式事务

2023-05-09 10:32:59 702

原创 docker安装mysql一段时间不连接后会自动断开解决

docker安装mysql一段时间不连接后会自动断开解决

2023-05-01 11:36:48 670

原创 工作事务常出现的问题

工作中经常见的事务异常

2023-03-21 16:06:04 123

原创 开发接口需要考虑哪些问题?

开发接口需要考虑的问题

2023-03-08 18:55:09 526

原创 如何实现接口幂等性

接口幂等性

2023-03-07 15:43:50 735 1

原创 RocketMQ源码分析

RocketMQ源码分析

2023-02-27 18:23:31 4514 4

原创 工作常用linux命令

工作常用linux命令

2022-11-10 17:24:40 204

原创 springboot源码解析:启动过程

springboot的入口程序@SpringBootApplicationpublic class StartupApplication { public static void main(String[] args) { SpringApplication.run(StartupApplication.class, args); }}当程序开始执行之后,会调用SpringApplication的构造方法,进行某些初始参数的设置//创建一个新的实例,这个应用程序

2021-10-10 22:51:44 140

原创 redis穿透,击穿和雪崩的原因和解决方案

穿透:没有这个值,一直获取,缓存中设为空字符串返回。击穿:一个数据没有,大量请求去查询数据库,压力大。用锁,一个线程去读数据库。雪崩:同一时间大量对象失效,设置过期时间随机,热点数据永不过期。...

2021-10-06 01:08:04 51

原创 拦截器Filter、过滤器HandlerInterceptor和监听器 Listener区别

Spring的拦截器与Servlet的Filter 有相似之处,比如二者都是AOP编程思想的体现,都能实现权限检查、日志记录等。不同的是:1、使用范围不同: Filter 是Servlet规范规定的,只能用于Web程序中。而拦截器既可以用于Web程序,也可以用于Application、Swing 程序中。2、规范不同: Filter是在Servlet 规范中定义的,是Servlet容器支持的。而拦截器是在Spring容器内的,是Spring框架支持的。3、使用的资源不同: 同其他的代码块一样, 拦截器

2021-10-06 00:06:15 195

原创 JVM常用参数

-Xms 初始堆大小-Xmx 最大堆大小 -Xmn 年轻代大小-XX:NewSize 设置年轻代大小 -XX:MaxNewSize 年轻代最大值-XX:PermSize 设置持久代-XX:MaxPermSize 设置持久代最大值-XX:NewRatio 年轻代(包

2021-10-05 00:37:00 68

原创 idea快捷键

复制上一行 ctrl + d剪切当前行 ctrl + x删除当前行 Ctrl + Ymain方法 psvm格式化代码:全选中 Ctrl + Alt + L可选中光标所在的单词或段落 Ctrl + W 显示最近打开的文件记录列表 Ctrl + ECtrl + N 根据输入的 类名 查找类文件Ctrl + Alt + O 优化导入的类,可以对当前文件和整个包目录使用 (必备)Ctrl + Shift + / 代码块注释 (必备)Ctrl + Shift + Enter 自动结束

2021-07-07 22:50:26 94 2

转载 ReentrantLock和AQS原理

观摩大佬七八年前的文章:https://blog.csdn.net/luonanqin/article/details/41871909也不知道大佬现在咋样了。ReentrantLock类图:AbstractOwnableSynchronizer类保持和获取独占线程。AbstractQueuedSynchronizer是以虚拟队列的方式管理线程的锁获取与锁释放,以及各种情况下的线程中断。提供了默认的同步实现,但是获取锁和释放锁的实现定义为抽象方法,由子类实现。目的是使开发人员可以自由定义获取锁以

2021-07-04 18:28:13 98

转载 JMM内存模型、计算机内存模型、CPU缓存一致性原则(MESI)、volatile、指令重排和内存屏障(Memory Barrier)

转自知乎 作者:祥先生链接:https://www.zhihu.com/question/296949412/answer/864851230一、JMM概念java内存模型,英文全称为java memory model,简称JMM。查询维基百科和oracle官网对JMM(java内存模型)的定义:维基百科原文:The Java memory model describes how threads in the Javaprogramming language interact through m

2021-07-03 00:03:49 372

转载 Java对象结构与synchronized实现原理及MarkWord详解

本博客的本意不是技术分享只是在学习过程中感觉需要复习的知识点记录整理下来方便复习,以便面试的时候用具体细节请阅读《深入理解Java虚拟机》若本文对你有帮助那十分荣幸。JAVA对象的总体结构由于Java面向对象的思想,在JVM中需要大量存储对象,存储时为了实现一些额外的功能,需要在对象中添加一些标记字段用于增强对象功能 。在学习并发编程知识synchronized时,我们总是难以理解其实现原理,因为偏向锁、轻量级锁、重量级锁都涉及到对象头,所以了解java对象头是我们深入了解synchronize

2021-07-01 23:57:39 574

原创 多线程面试相关技术点

1、线程启动run和start 的区别run 只是执行了一个方法start 开启了一个线程2、线程状态和之间的转换1 new 被创建出来 还没调用start2 runnable 调用start方法之后,被线程调度器执行,也就是操作系统执行。整个状态叫runnable,runnable 内部有两个状态,一个叫ready就绪,在CPU的等待队列,一个叫running。挂起就是线程执行时间片到了,CPU需要执行下一个线程了3 timedwaiting4 waiting5 blocked 阻

2021-06-29 00:10:30 187

原创 虚拟机内存模型

虚拟机内存模型主要包含线程共享和线程独享部分。方法区和堆内存是线程共享,虚拟机栈、本地方法栈和程序计数器是线程独占部分。方法区/永久代:JVM用来存储加载的类信息、常量、静态变量、编译后的代码等数据。虚拟机规范中这是一个逻辑区划。具体实现根据不同虚拟机来实现。如: oracle的HotSpot在JDK7中方法区放在永久代,JDK8放在元数据空间。堆内存:堆内存还可以细分为:新生代(Eden、 From Survivor、To Survivor)和老年代JVM启动时创建,存放对象的实例。垃圾.

2021-06-06 00:58:14 364

原创 windows安装解压版mysql

windows安装解压版mysql解压后放到安装目录:配置环境变量创建data目录,存放数据配置文件解压后放到安装目录:配置环境变量path 下加C:\DevProFiles\mysql-8.0.23-winx64\bin;创建data目录,存放数据配置文件写到这步去官网看了看,官网给出了安装包的下载地址https://dev.mysql.com/doc/refman/8.0/en/windows-installation.html那就下载执行吧https://dev.mysql.

2021-03-21 21:25:24 79

原创 centos7与centos6命令差异

查看ipcentos6 : ifconfigcentos7 : ip addr修改hostnamecentos6 : 修改/etc/sysconfig/networkcentos7 : 修改/etc/hostname,也可以直接使用命令 hostnamectl set-hostname yourhostname修改ipcentos6: vim /etc/sysconfig/network-scripts/ifcfg-eth0centos7: vim /etc/sysconfig/net

2020-06-27 15:12:49 359

原创 JAVA程序运行原理分析

Class文件内容java源码编译完成后会生成class字节码文件。class文件包含JAVA程序执行的字节码;数据严格按照格式紧凑排列在class文件中的二进制流,中间无任何分隔符;文件开头有一个0xcafebabe(16进制)特殊的一个标志。JVM运行时数据区方法区JVM用来存储加载的类信息、常量、静态变量、编译后的代码等数据。虚拟机规范中这是一个逻辑区划。具体实现根据不同虚拟机来实现。如: oracle的HotSpot在java7中方法区放在永久代,java8放在元数据空间,并且通过

2020-06-21 19:23:19 160

再保管理系统需求规格说明书.docx

再保管理系统需求规格说明书,用户再保管理系统需求调研。

2019-06-30

保险基础知识.ppt

保险行业的基本概念,做保险类开发可能需要用到的。可做员工培训用。

2019-06-30

基于Android客户端的应用市场设计与实现论文

基于Android客户端的应用市场设计与实现论文

2017-02-04

网上购物系统概要设计说明书

网上购物系统概要设计说明书

2017-02-04

供电企业电力营销管理系统(超详细)

供电企业电力营销管理系统详细介绍

2017-02-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除