<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[libankling2008的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/libankling2008</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; libankling2008]]></copyright><item><title><![CDATA[nginx 实现系统日常性能监控]]></title><link>https://blog.youkuaiyun.com/libankling2008/article/details/134922149</link><guid>https://blog.youkuaiyun.com/libankling2008/article/details/134922149</guid><author>libankling2008</author><pubDate>Mon, 11 Dec 2023 11:21:27 +0800</pubDate><description><![CDATA[在日常运维中，我们通过nginx实现了日常系统性能监控。结合nginx的参数配置，通过命令来统计请求的信息，通过这些信息来分析系统的慢请求，慢请求中最长时间的请求，慢请求中请求最频繁的请求等数据。通过这些数据来优化系统，提升性能。]]></description><category></category></item><item><title><![CDATA[SpringBoot整合SpringSecurity 入门篇超级简单]]></title><link>https://blog.youkuaiyun.com/libankling2008/article/details/118609899</link><guid>https://blog.youkuaiyun.com/libankling2008/article/details/118609899</guid><author>libankling2008</author><pubDate>Fri, 09 Jul 2021 21:36:21 +0800</pubDate><description><![CDATA[1.pom添加jar包引用
 &lt;dependency&gt;
	&lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
	&lt;artifactId&gt;spring-boot-starter-security&lt;/artifactId&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
	&lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
	&]]></description><category></category></item><item><title><![CDATA[SpringBoot是如何加载application.properties配置文件的？]]></title><link>https://blog.youkuaiyun.com/libankling2008/article/details/118579641</link><guid>https://blog.youkuaiyun.com/libankling2008/article/details/118579641</guid><author>libankling2008</author><pubDate>Thu, 08 Jul 2021 19:34:47 +0800</pubDate><description><![CDATA[1.一个问题引发的思考
 我在resouce下面增加了两个文件app.key,app.pub,application.properties 添加对应配置
 jwt.private.key=classpath:app.key
 jwt.public.key=classpath:app.pub

 Config类中配置了对文件的引用
 @Value("${jwt.public.key}")
 RSAPublicKey key;

 结果启动后提示
 java.io.FileNotFoundException: ]]></description><category></category></item><item><title><![CDATA[SpringBoot 开发实战 | 第四节 SpringBoot整合validation校验]]></title><link>https://blog.youkuaiyun.com/libankling2008/article/details/118496444</link><guid>https://blog.youkuaiyun.com/libankling2008/article/details/118496444</guid><author>libankling2008</author><pubDate>Mon, 05 Jul 2021 20:14:38 +0800</pubDate><description><![CDATA[1.引入jar包
&lt;dependency&gt;
	&lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
	&lt;artifactId&gt;spring-boot-starter-validation&lt;/artifactId&gt;
&lt;/dependency&gt;
&lt;!-- fastjson --&gt;
&lt;dependency&gt;
	&lt;groupId&gt;com.alibaba&lt;/groupId]]></description><category></category></item><item><title><![CDATA[linux下SpringBoot优雅更新、停机、发布]]></title><link>https://blog.youkuaiyun.com/libankling2008/article/details/118436147</link><guid>https://blog.youkuaiyun.com/libankling2008/article/details/118436147</guid><author>libankling2008</author><pubDate>Sat, 03 Jul 2021 09:58:38 +0800</pubDate><description><![CDATA[#!/bin/bash
# 定义变量
today=`date +%y%m%d`
pid=
app=demo-service
jarFile=${app}.jar
sourcePath=/home/code/springboot/


#更新代码,启动带上分支可以切换到指定分支
cd ${sourcePath}/demo/
if [ -n "$1" ] ;then
    echo "you have  input is $1"
    git checkout $1
fi
echo '当前分支::'
git]]></description><category></category></item><item><title><![CDATA[开发人员的日常linux命令 vim/more/less/ps/netstat 基础操作]]></title><link>https://blog.youkuaiyun.com/libankling2008/article/details/118365656</link><guid>https://blog.youkuaiyun.com/libankling2008/article/details/118365656</guid><author>libankling2008</author><pubDate>Wed, 30 Jun 2021 20:20:30 +0800</pubDate><description><![CDATA[1.查找相关命令
# 查找软件安装 
whereis mysql
# 查找关键字所在的文件,当前目录往下走，最多查找2层
find . -maxdepth 2 -name "*.log" | xargs grep "error"

2.vim 基础操作



]]></description><category></category></item><item><title><![CDATA[SpringBoot 开发实战 | 第三节 mybatis-plus 分页、复杂条件查询]]></title><link>https://blog.youkuaiyun.com/libankling2008/article/details/118266001</link><guid>https://blog.youkuaiyun.com/libankling2008/article/details/118266001</guid><author>libankling2008</author><pubDate>Sun, 27 Jun 2021 09:20:51 +0800</pubDate><description><![CDATA[1.定义mybatis-plus的配置文件
该配置文件主要是配置了自带的分页插件PaginationInnerInterceptor，同时把对dao的扫码路径也转移到该配置文件中，启动类的dao扫描就可以删除了。
@Configuration
@MapperScan("com.leeong.demo.dao")
public class MybatisPlusConfig {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor]]></description><category></category></item><item><title><![CDATA[linux下 截取一个时间段的日志输出到指定文件]]></title><link>https://blog.youkuaiyun.com/libankling2008/article/details/117927478</link><guid>https://blog.youkuaiyun.com/libankling2008/article/details/117927478</guid><author>libankling2008</author><pubDate>Tue, 15 Jun 2021 16:15:24 +0800</pubDate><description><![CDATA[more catalina.out | sed -n '/2021-06-15 18:48:/,/2021-06-15 18:55:/p' &gt; info.log


]]></description><category></category></item><item><title><![CDATA[SpringBoot 开发实战 | 第二节 SpringBoot 整合 mybatis-plus]]></title><link>https://blog.youkuaiyun.com/libankling2008/article/details/117826357</link><guid>https://blog.youkuaiyun.com/libankling2008/article/details/117826357</guid><author>libankling2008</author><pubDate>Fri, 11 Jun 2021 20:39:42 +0800</pubDate><description><![CDATA[1.说明
第二节的代码是以第一节代码为基础的。可通过第一节或者gitee的地址来获取
第一节地址：https://blog.youkuaiyun.com/libankling2008/article/details/117790889
gitee地址：https://gitee.com/null_484_1073/springboot.git
2. 修改pom配置
# 新增
&lt;dependency&gt;
	&lt;groupId&gt;com.baomidou&lt;/groupId&gt;
	&lt;arti]]></description><category></category></item><item><title><![CDATA[SpringBoot 开发实战 | 第一节 快速搭建SpringBoot crud 开发框架]]></title><link>https://blog.youkuaiyun.com/libankling2008/article/details/117790889</link><guid>https://blog.youkuaiyun.com/libankling2008/article/details/117790889</guid><author>libankling2008</author><pubDate>Thu, 10 Jun 2021 21:19:31 +0800</pubDate><description><![CDATA[1. 下载通用模板
从https://start.spring.io/ 下载公共模板,右侧添加web,mysql,mybatis相关的类，下载后导入到idea中

2. 配置application.properties
配置端口、环境、数据源、mybatis相关配置
server.port=8080
spring.profiles.active=dev

# datasource
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/ds0?allowMulti]]></description><category></category></item><item><title><![CDATA[springboot @Cacheable 的实现原理]]></title><link>https://blog.youkuaiyun.com/libankling2008/article/details/117586654</link><guid>https://blog.youkuaiyun.com/libankling2008/article/details/117586654</guid><author>libankling2008</author><pubDate>Sat, 05 Jun 2021 10:27:57 +0800</pubDate><description><![CDATA[1. springboot cache 的使用
  a.pom引入jar spring-boot-starter-cache
  b.启动类增加注解@EnableCaching
  c.需要缓存的方法增加注解 @Cacheable(cacheNames = "com:xxx",key = "''+#id")

图1

2. Cacheable 的实现原理猜测
 实现原理是什么呢？脑海第一反应应该当然是大名鼎鼎是AOP、动态代理、Interceptor
 这些概念，那我们怎么去验证呢？

3. Cacheab]]></description><category></category></item><item><title><![CDATA[线上环境频繁GC问题排查,Finalizer对象该背这个锅吗？]]></title><link>https://blog.youkuaiyun.com/libankling2008/article/details/116789217</link><guid>https://blog.youkuaiyun.com/libankling2008/article/details/116789217</guid><author>libankling2008</author><pubDate>Sat, 15 May 2021 08:07:59 +0800</pubDate><description><![CDATA[问题描述
公司的一个SpringMVC服务，最近在做运维检查的时候发现young gc 和 full gc太频繁，远远超过了正常情况。服务器配置是4核8G，该服务分配了6G内存。通过arthas的dashboard统计情况在20个小时之内发送的young gc和 full gc 次数，如下图：young gc 393次，full gc 19次

问题排查

在eden区达到80%的时候，通过arthas 的 heapdump dupm了堆内存文件

java -jar arthas-boot.jar
挂账对]]></description><category></category></item><item><title><![CDATA[arthas 组合命令jad/mc/redefine，再也不用担心生产环境问题排查困难了]]></title><link>https://blog.youkuaiyun.com/libankling2008/article/details/116058550</link><guid>https://blog.youkuaiyun.com/libankling2008/article/details/116058550</guid><author>libankling2008</author><pubDate>Fri, 23 Apr 2021 15:54:14 +0800</pubDate><description><![CDATA[通过arthas神器的组合命令来实现不重启应用的情况下动态加入日志打印信息来诊断生产问题。操作步骤如下：


启动arthas

  curl -O https://arthas.aliyun.com/arthas-boot.jar
  java -jar arthas-boot.jar
  挂载对应进程，进入arthas环境


反编译class 生成java文件到指定路径

jad --source-only com.example.demo.arthas.user.UserController ...]]></description><category></category></item><item><title><![CDATA[mysql explain详解，这一篇文章就够了]]></title><link>https://blog.youkuaiyun.com/libankling2008/article/details/106625241</link><guid>https://blog.youkuaiyun.com/libankling2008/article/details/106625241</guid><author>libankling2008</author><pubDate>Mon, 08 Jun 2020 20:50:23 +0800</pubDate><description><![CDATA[建表语句
create table a(
	id int auto_increment,
	aname varchar(12),
	age int, 
	primary key(id)
);

create table b(
	id int auto_increment,
	aid int,
	bname varchar(12),
	remark char(1),
	cname varchar(10),
	primary key(id),
	index bname(bname) using btree,
	]]></description><category></category></item><item><title><![CDATA[springboot代码中如何获取jedisPool的配置参数]]></title><link>https://blog.youkuaiyun.com/libankling2008/article/details/106499836</link><guid>https://blog.youkuaiyun.com/libankling2008/article/details/106499836</guid><author>libankling2008</author><pubDate>Tue, 02 Jun 2020 17:01:33 +0800</pubDate><description><![CDATA[最近项目中本地代码需要获取到Jedis配置参数，特意从springboot启动跟踪的整个参数的初始化、赋值过程，特将知识点记录如下。
1.spring-boot-autoconfigure包下面集成了对redis客户端的config类，有Jedis,Lettuce，本次关注的是Jedis。
2.我们找到对应的配置类 JedisConnectionConfiguration，从下图可以看到注解中加入了连接池，和Jedis

@Configuration
@ConditionalOnClass({ Generi]]></description><category></category></item><item><title><![CDATA[异步子线程如何获取主线程的request中的属性]]></title><link>https://blog.youkuaiyun.com/libankling2008/article/details/106467998</link><guid>https://blog.youkuaiyun.com/libankling2008/article/details/106467998</guid><author>libankling2008</author><pubDate>Mon, 01 Jun 2020 10:47:35 +0800</pubDate><description><![CDATA[1.啥也不说先上代码

2.我们来探究下这两行代码能实现属性共享的原理，其中的关键就是RequestContextHolder类
3.RequestContextHolder类字面解释就是以线程绑定的的形式保存web请求的相关信息的holder类,通过设置inheritable属性来决定是否能被子线程继承;该类里面包含两个ThreadLocal全局属性

4.其中的inheritableRequestAttributesHolder 存储的request属性就表示运行子线程去继承的，第一个步骤的 Reque]]></description><category></category></item></channel></rss>