<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[L_J_X03的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/L_J_X03</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; L_J_X03]]></copyright><item><title><![CDATA[服务器端排查问题常见命令]]></title><link>https://blog.youkuaiyun.com/L_J_X03/article/details/122121820</link><guid>https://blog.youkuaiyun.com/L_J_X03/article/details/122121820</guid><author>L_J_X03</author><pubDate>Fri, 24 Dec 2021 10:52:18 +0800</pubDate><description><![CDATA[top：查看资源信息
ps -mp 30477 -o THREAD,tid,time  查询线程ID(tid)
jstack pid | grep tid -A 30 : 显示该进程中的线程的堆栈情况
netstat -ntu ： 查看那些IP访问服务器
lsof -i:31002  查看端口进程
netstat -tunlp 查看udp与tcp访问信息
netstat -lnp : 查询所有的监听端口

...]]></description><category></category></item><item><title><![CDATA[解析通用的响应状态码]]></title><link>https://blog.youkuaiyun.com/L_J_X03/article/details/120184161</link><guid>https://blog.youkuaiyun.com/L_J_X03/article/details/120184161</guid><author>L_J_X03</author><pubDate>Wed, 08 Sep 2021 17:09:24 +0800</pubDate><description><![CDATA[400：坏的请求，例如错误的请求参数
406：客户端无法解析浏览器的返回内容
202: 接受但并未处理(异步请求)

]]></description><category></category></item><item><title><![CDATA[Redis的lru算法]]></title><link>https://blog.youkuaiyun.com/L_J_X03/article/details/117443694</link><guid>https://blog.youkuaiyun.com/L_J_X03/article/details/117443694</guid><author>L_J_X03</author><pubDate>Wed, 02 Jun 2021 15:08:36 +0800</pubDate><description><![CDATA[LRU：least Recently Used的缩写，最近最少使用，是一种常用的页面置换算法，选择最近最久未使用的数据予以淘汰。

]]></description><category></category></item><item><title><![CDATA[Redis的相关问题]]></title><link>https://blog.youkuaiyun.com/L_J_X03/article/details/117441284</link><guid>https://blog.youkuaiyun.com/L_J_X03/article/details/117441284</guid><author>L_J_X03</author><pubDate>Tue, 01 Jun 2021 14:24:24 +0800</pubDate><description><![CDATA[redis只存热点高频的数据
1.生产上Redis的内存设置为多少(在conf文件夹里面进行配置)
maxmemory 决定redis的默认配置(它的单位为：字节类型)
默认的redis内存大小：在64位的操作系统下是不限制内存大小，如果是32位操作系统最大内存为3GB
生产推荐是占物理内存的四分之三
修改内存设置的两种方式：
1.conf文件进行配置
2.redis动态进行修改
进行redis内部：操作命令
#设置最大内存
config set maxmemory 1024
#获取相关信息
config ]]></description><category></category></item><item><title><![CDATA[Redis的分布式锁]]></title><link>https://blog.youkuaiyun.com/L_J_X03/article/details/117415560</link><guid>https://blog.youkuaiyun.com/L_J_X03/article/details/117415560</guid><author>L_J_X03</author><pubDate>Tue, 01 Jun 2021 13:23:37 +0800</pubDate><description><![CDATA[两种加锁类型：
1.JVM加锁
2.分布式微服务架构，拆分后各个微服务之间为例避免冲突和数据库故障而加入的一种锁，分布式锁。
多个服务间+保证同一个时间段内+同一个用户只能有一个请求（防止关键业务出现数据冲突和并发错误）
创建微服务的口诀：
1.建Module
2.改pom
3.写yaml
4.主启动
5.写业务
6.小测试
Synchronized：要不线程释放锁，要么报错，可能导致线程大量的积压
ReentrantLock：在规定时间内拿不到锁就放弃。tryLock
分布式加锁的问题：
1.如果在每个服]]></description><category></category></item><item><title><![CDATA[Redis基础]]></title><link>https://blog.youkuaiyun.com/L_J_X03/article/details/117411864</link><guid>https://blog.youkuaiyun.com/L_J_X03/article/details/117411864</guid><author>L_J_X03</author><pubDate>Mon, 31 May 2021 13:38:23 +0800</pubDate><description><![CDATA[Redis中文官网：http://redis.cn/
Redis英文官网：https://redis.io/
注意：redis的命令是不区分大小写，但是redis的key是区分大小写
帮助命令： help @类型
例如： help @String
String的使用场景：
商品编号，订单号 使用的是INCR






#查看key什么时候过
ttl key的名称

hash的使用场景:
redis的hash  类似于  java的map&lt;String,Map&lt;k,v&gt;&gt;
适用于早期]]></description><category></category></item><item><title><![CDATA[spring的循环依赖(Spring创建bean的大致流程)]]></title><link>https://blog.youkuaiyun.com/L_J_X03/article/details/117320807</link><guid>https://blog.youkuaiyun.com/L_J_X03/article/details/117320807</guid><author>L_J_X03</author><pubDate>Fri, 28 May 2021 11:10:58 +0800</pubDate><description><![CDATA[循环依赖在spring当中的简介：循环依赖官网简介
spring的循环依赖：
bean之间存在相互依赖，形成一个闭环。
两种注入方法对循环依赖的影响。
构造方法注入与setter方法注入。
使用构造方法注入会出现循环依赖的问题，抛出异常；使用setter方法注入不会出现循环依赖的问题，而且是用的singleton，如果setter注入用的prototype，则会出现初始化异常：BeanCurrentlyInCreationException
spring使用的三级缓存来解决循环依赖:DefaultSingl]]></description><category></category></item><item><title><![CDATA[spring不同版本下的AOP]]></title><link>https://blog.youkuaiyun.com/L_J_X03/article/details/117290332</link><guid>https://blog.youkuaiyun.com/L_J_X03/article/details/117290332</guid><author>L_J_X03</author><pubDate>Thu, 27 May 2021 09:21:30 +0800</pubDate><description><![CDATA[springBoot 1.5.9 底层用的spring 4
正常代码执行顺序：
环绕通知
before
执行代码
环绕通知
after
afterReturning
异常代码执行顺序：
环绕通知
before
after
afterThrowing
springBoot2.3.3  spring是5
正常代码执行顺序：
环绕通知
before
执行代码
afterReturning
after
环绕通知
异常代码执行顺序：
环绕通知
before
afterThrowing
after

...]]></description><category></category></item><item><title><![CDATA[AQS源码解读]]></title><link>https://blog.youkuaiyun.com/L_J_X03/article/details/117249549</link><guid>https://blog.youkuaiyun.com/L_J_X03/article/details/117249549</guid><author>L_J_X03</author><pubDate>Wed, 26 May 2021 11:25:36 +0800</pubDate><description><![CDATA[以ReentrantLock进行AQS讲解
ReentrantLock有个Sync内部类继承AQS接口。ReentrantLock的公平锁与非公平锁都是继承Sync


ReentrantLock的加锁的三个步骤：
1.尝试加锁
2.加锁失败后，线程进入队列。
3.加入队列只会，进入阻塞状态。

...]]></description><category></category></item><item><title><![CDATA[AQS体系]]></title><link>https://blog.youkuaiyun.com/L_J_X03/article/details/117221992</link><guid>https://blog.youkuaiyun.com/L_J_X03/article/details/117221992</guid><author>L_J_X03</author><pubDate>Tue, 25 May 2021 09:38:14 +0800</pubDate><description><![CDATA[AQS：通常指的是AbstractQueuedSynchronizer(但是它们三是相互关联的关系)—抽象的队列同步器



与LockSupport相关的锁有：ReentrantLock，ReenTrantReadWriteLock,CountDownLatch.SemaPhone等相关。




脑图：

锁：面向锁的使用者
同步器：面向锁的实现者

将抢占资源的线程封装成一个node节点
使用一个valatile修饰的变量(state)来表示同步状态

state状态等于0表示现在没有线程在等待，可.]]></description><category></category></item><item><title><![CDATA[LockSupport]]></title><link>https://blog.youkuaiyun.com/L_J_X03/article/details/117195549</link><guid>https://blog.youkuaiyun.com/L_J_X03/article/details/117195549</guid><author>L_J_X03</author><pubDate>Mon, 24 May 2021 13:32:03 +0800</pubDate><description><![CDATA[在java.util.concurrent.locks包下
使用java在线API:
https://www.matools.com/api/java8
LockSupport是线程的wait/notify的改良加强版
LOckSupport的park和unpark的作用分别是阻塞线程与解除阻塞线程的事
三种线程的等待/唤醒方法
1.Object对象的wait方法使线程等待，notify方法唤醒线程
注意：不在同一个代码块等待和唤醒功能是不能被用的，会报异常
注意：要等待在前，唤醒在后。如果唤醒在前。等待在]]></description><category></category></item><item><title><![CDATA[可重入锁]]></title><link>https://blog.youkuaiyun.com/L_J_X03/article/details/117194885</link><guid>https://blog.youkuaiyun.com/L_J_X03/article/details/117194885</guid><author>L_J_X03</author><pubDate>Sun, 23 May 2021 14:56:40 +0800</pubDate><description><![CDATA[可重入锁：
同一个线程在外层方法里面获取了锁，在进入内层方法的时候会自动获取锁，不会因为之前获取锁还没有释放而阻塞。
ReentrantLock与synchronized都是可重入锁，可在一定程度上避免死锁。
隐式锁(即使用Synchronized的锁)：synchronized默认是可重入锁，synchronized分为同步代码块和同步方法
显式锁(Lock):也有Reentrant这样的可重入锁
实例1–synchronized之同步代码块
package com.example.demo.LockTe]]></description><category></category></item><item><title><![CDATA[java字符串常量池内部加载]]></title><link>https://blog.youkuaiyun.com/L_J_X03/article/details/117119288</link><guid>https://blog.youkuaiyun.com/L_J_X03/article/details/117119288</guid><author>L_J_X03</author><pubDate>Fri, 21 May 2021 15:55:55 +0800</pubDate><description><![CDATA[关于String的intern方法

事例：
package com.example.demo.javaconstant;

public class ConstantTest {
    public static void main(String[] args) {
        String str1 = new StringBuffer("58").append("tongcheng").toString();
        System.out.println(str1);
        S]]></description><category></category></item><item><title><![CDATA[github网址能ping通，但是浏览器访问不了]]></title><link>https://blog.youkuaiyun.com/L_J_X03/article/details/117113436</link><guid>https://blog.youkuaiyun.com/L_J_X03/article/details/117113436</guid><author>L_J_X03</author><pubDate>Fri, 21 May 2021 11:18:29 +0800</pubDate><description><![CDATA[github网址能ping通

浏览器请求超时
解决方法
#使用命令刷新dns
ipconfig /flushdns


注意：可能不会马上生效，多刷几次，会通的

]]></description><category></category></item><item><title><![CDATA[调试+排查+检索(中的检索github相关操作)]]></title><link>https://blog.youkuaiyun.com/L_J_X03/article/details/117082920</link><guid>https://blog.youkuaiyun.com/L_J_X03/article/details/117082920</guid><author>L_J_X03</author><pubDate>Fri, 21 May 2021 11:14:32 +0800</pubDate><description><![CDATA[使用github进行知识检索

]]></description><category></category></item><item><title><![CDATA[生产环境服务器变慢，诊断思路和性能评估]]></title><link>https://blog.youkuaiyun.com/L_J_X03/article/details/117080890</link><guid>https://blog.youkuaiyun.com/L_J_X03/article/details/117080890</guid><author>L_J_X03</author><pubDate>Thu, 20 May 2021 16:16:21 +0800</pubDate><description><![CDATA[案例步骤：
1.先用top命令查看cpu占用最高的
2.使用ps -ef 或者 jps 来找到到底是那个程序导致cpu占用高
ps -ef | grep 进程号 | grep -v grep
jps -l

3.定位到具体的线程与代码
ps -mp 进程id -o THREAD,tid,time 


找出进程里面线程占cpu最多的线程

找到时间长且占用率大的线程id转换成16进制(英文字母小写)
线程id：9379  十六进制：24a3

4.讲需要的线程id转换成16进制(英文小写格式)
线程id：9]]></description><category></category></item><item><title><![CDATA[Linux常用命令]]></title><link>https://blog.youkuaiyun.com/L_J_X03/article/details/117075533</link><guid>https://blog.youkuaiyun.com/L_J_X03/article/details/117075533</guid><author>L_J_X03</author><pubDate>Thu, 20 May 2021 16:09:28 +0800</pubDate><description><![CDATA[生产环境服务器变慢，诊断思路和性能评估
1.整机：top（按1可以查看具体cpu的状况）
load average ： 系统的负载均衡
三个参数的含义：一分钟的负载均衡的平均参数，五分钟的负载均衡的平均参数，十五分钟的平均参数
三个参数相加/3 &gt; 60% 表示系统负担压力大
可以使用uptime来查看 load average
2.CPU：vmstat (主要查看CPU)
公式： vmstat -n 2 3
每两秒采样一次，总共采样3次



查看所有cpu核信息 mpstat -P  ALL 2 ]]></description><category></category></item><item><title><![CDATA[JVMGC+SpringBoot微服务的生产部署和参数调优]]></title><link>https://blog.youkuaiyun.com/L_J_X03/article/details/117074920</link><guid>https://blog.youkuaiyun.com/L_J_X03/article/details/117074920</guid><author>L_J_X03</author><pubDate>Thu, 20 May 2021 14:20:43 +0800</pubDate><description><![CDATA[1.先把springBoot项目打包成war包
2.知道war包存放地址使用cmd
3.
内部运行： java -jar war包名称
外部运行：java -server JVM参数  -jar war名称
4.
使用 jps -l 查看进程号
使用 jinfo -flags 进程号：查看进程参数

...]]></description><category></category></item><item><title><![CDATA[G1回收器]]></title><link>https://blog.youkuaiyun.com/L_J_X03/article/details/117067771</link><guid>https://blog.youkuaiyun.com/L_J_X03/article/details/117067771</guid><author>L_J_X03</author><pubDate>Thu, 20 May 2021 14:04:47 +0800</pubDate><description><![CDATA[G1是面向服务端的垃圾收集器

在jdk9以后将G2变成默认的垃圾回收机制以替代CMS

注意：G1是横跨两区(新生区和老年区)
JVM参数
-XX:+UseG1GC





GC也分4个回收过程
设置GC的JVM参数
-XX:+UseG1GC   -Xmx32g  -XX:MaxGCPauseMillis=100
-XX:MaxGCPauseMillis 最大GC停顿时间单位毫秒，软目标，JVM将尽可能(但不保证)停顿小于这个时间


...]]></description><category></category></item><item><title><![CDATA[如何选择垃圾收集器]]></title><link>https://blog.youkuaiyun.com/L_J_X03/article/details/117066824</link><guid>https://blog.youkuaiyun.com/L_J_X03/article/details/117066824</guid><author>L_J_X03</author><pubDate>Thu, 20 May 2021 10:52:30 +0800</pubDate><description><![CDATA[如何选择垃圾收集器：



]]></description><category></category></item></channel></rss>