<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[codeLife1993的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/codeLife1993</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; codeLife1993]]></copyright><item><title><![CDATA[Java导出Excel模版多级联动下拉及导入]]></title><link>https://blog.youkuaiyun.com/codeLife1993/article/details/138915651</link><guid>https://blog.youkuaiyun.com/codeLife1993/article/details/138915651</guid><author>codeLife1993</author><pubDate>Wed, 15 May 2024 17:12:27 +0800</pubDate><description><![CDATA[【代码】Java导出Excel模版多级联动下拉。]]></description><category></category></item><item><title><![CDATA[多线程异步执行等待结果并组合]]></title><link>https://blog.youkuaiyun.com/codeLife1993/article/details/135649302</link><guid>https://blog.youkuaiyun.com/codeLife1993/article/details/135649302</guid><author>codeLife1993</author><pubDate>Wed, 17 Jan 2024 14:32:22 +0800</pubDate><description><![CDATA[1.使用CompletableFuture异步执行 并获取返回结果组合。0.使用CountDownLatch阻塞等待结果。]]></description><category></category></item><item><title><![CDATA[SpringBoot项目集成kafka及常规配置]]></title><link>https://blog.youkuaiyun.com/codeLife1993/article/details/131257725</link><guid>https://blog.youkuaiyun.com/codeLife1993/article/details/131257725</guid><author>codeLife1993</author><pubDate>Sat, 17 Jun 2023 10:57:14 +0800</pubDate><description><![CDATA[使用 spring-kafka 的api，在springboot项目中集成kafka能力，封装配置。]]></description><category></category></item><item><title><![CDATA[Java调用linux脚本实现文件分割合并上传]]></title><link>https://blog.youkuaiyun.com/codeLife1993/article/details/130523407</link><guid>https://blog.youkuaiyun.com/codeLife1993/article/details/130523407</guid><author>codeLife1993</author><pubDate>Sat, 06 May 2023 13:41:21 +0800</pubDate><description><![CDATA[优化前：因项目部署在内网环境，只有部分服务可以外网访问。之前部署项目，需要在本地打包，上传到运维机连vpn上传到内网服务器，通过脚本启动。]]></description><category></category></item><item><title><![CDATA[ThreadPoolExecutor原理解析]]></title><link>https://blog.youkuaiyun.com/codeLife1993/article/details/128972349</link><guid>https://blog.youkuaiyun.com/codeLife1993/article/details/128972349</guid><author>codeLife1993</author><pubDate>Fri, 10 Feb 2023 16:31:38 +0800</pubDate><description><![CDATA[成员变量ctl是Integer的原子变量，使用一个变量同时记录线程池状态和线程池中线程个数，假设计算机硬件的Integer类型是32位二进制标示，如下面代码所示，其中高3位用来表示线程池状态，后面29位用来记录线程池线程个数。当用户线程提交任务到线程池后，在线程池没有执行拒绝策略的情况下，用户线 程会马上返回，而提交的任务要么直接切换到线程池中的Worker线程来执行，要么先放入线程池的阻塞队列里面，稍后再由Worker线程来执行。]]></description><category></category></item><item><title><![CDATA[nginx常用配置]]></title><link>https://blog.youkuaiyun.com/codeLife1993/article/details/128303127</link><guid>https://blog.youkuaiyun.com/codeLife1993/article/details/128303127</guid><author>codeLife1993</author><pubDate>Tue, 13 Dec 2022 15:48:21 +0800</pubDate><description><![CDATA[【代码】nginx常用配置。]]></description><category></category></item><item><title><![CDATA[个人家装自用]]></title><link>https://blog.youkuaiyun.com/codeLife1993/article/details/126853149</link><guid>https://blog.youkuaiyun.com/codeLife1993/article/details/126853149</guid><author>codeLife1993</author><pubDate>Wed, 14 Sep 2022 15:19:30 +0800</pubDate><description><![CDATA[网络。]]></description><category></category></item><item><title><![CDATA[grafana+prometheus+black_box 实现端口检测]]></title><link>https://blog.youkuaiyun.com/codeLife1993/article/details/126852376</link><guid>https://blog.youkuaiyun.com/codeLife1993/article/details/126852376</guid><author>codeLife1993</author><pubDate>Wed, 14 Sep 2022 15:12:44 +0800</pubDate><description><![CDATA[grafana+prometheus+black_box 实现端口检测]]></description><category></category></item><item><title><![CDATA[Java线程池实现缓存功能]]></title><link>https://blog.youkuaiyun.com/codeLife1993/article/details/126409602</link><guid>https://blog.youkuaiyun.com/codeLife1993/article/details/126409602</guid><author>codeLife1993</author><pubDate>Thu, 18 Aug 2022 17:01:52 +0800</pubDate><description><![CDATA[java线程池实现定时任务]]></description><category></category></item><item><title><![CDATA[loki+promtail+grafana日志框架搭建]]></title><link>https://blog.youkuaiyun.com/codeLife1993/article/details/123402824</link><guid>https://blog.youkuaiyun.com/codeLife1993/article/details/123402824</guid><author>codeLife1993</author><pubDate>Thu, 10 Mar 2022 15:32:53 +0800</pubDate><description><![CDATA[下载loki promtail grafana


#loki promtail 
https://github.com/grafana/loki/releases
#grafana
https://grafana.com/grafana/download?pg=get&amp;plcmt=selfmanaged-box1-cta1

启动命令


./grafana-server web &amp;
nohup /mnt/data/filebeat/filebeat -e &gt; logs/stdout]]></description><category></category></item><item><title><![CDATA[JVM调优(CMS+PerNew垃圾回收)]]></title><link>https://blog.youkuaiyun.com/codeLife1993/article/details/123207901</link><guid>https://blog.youkuaiyun.com/codeLife1993/article/details/123207901</guid><author>codeLife1993</author><pubDate>Tue, 01 Mar 2022 16:35:46 +0800</pubDate><description><![CDATA[0.问题及排查思路

0.1 线上故障

    线上服务器服务进程假死，进程还存在，但是日志已经不打印了，访问失败超时不响应。

0.2 排查思路

    0.2.1 使用 jps -l 查看java进程的进程号 假设进程号为9999


[root@izbp1bym5hklu4zctqz logs]$ jps -l
24611 com.alibaba.dubbo.container.Main
11015 sun.tools.jps.Jps
15113 com.alibaba.dubbo...]]></description><category></category></item><item><title><![CDATA[dubbo设置自定义路由]]></title><link>https://blog.youkuaiyun.com/codeLife1993/article/details/122327892</link><guid>https://blog.youkuaiyun.com/codeLife1993/article/details/122327892</guid><author>codeLife1993</author><pubDate>Wed, 05 Jan 2022 17:19:32 +0800</pubDate><description><![CDATA[1.新建路由工厂


import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.extension.Activate;
import org.apache.dubbo.rpc.cluster.Router;
import org.apache.dubbo.rpc.cluster.RouterFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 ]]></description><category></category></item><item><title><![CDATA[dubbo自定义集群扩展]]></title><link>https://blog.youkuaiyun.com/codeLife1993/article/details/122325609</link><guid>https://blog.youkuaiyun.com/codeLife1993/article/details/122325609</guid><author>codeLife1993</author><pubDate>Wed, 05 Jan 2022 15:59:16 +0800</pubDate><description><![CDATA[新建集群
	
import com.alibaba.dubbo.rpc.Invoker;
import com.alibaba.dubbo.rpc.RpcException;
import com.alibaba.dubbo.rpc.cluster.Cluster;
import com.alibaba.dubbo.rpc.cluster.Directory;

public class IpRouteCluster implements Cluster {

    public final static]]></description><category></category></item><item><title><![CDATA[java内存及线程问题排查常用命令]]></title><link>https://blog.youkuaiyun.com/codeLife1993/article/details/122199419</link><guid>https://blog.youkuaiyun.com/codeLife1993/article/details/122199419</guid><author>codeLife1993</author><pubDate>Tue, 28 Dec 2021 18:11:45 +0800</pubDate><description><![CDATA[0. 观察进程的上下文切换


vmstat 1 3
代表每秒收集一次性能指标，总共获取3次
procs
r：等待运行的进程数
b：处于非中断睡眠状态的进程数
memory
swpd：虚拟内存使用情况
free：空闲的内存
buff：用来作为缓冲的内存数
cache：缓存大小
swap
si：从磁盘交换到内存的交换页数量
so：从内存交换到磁盘的交换页数量
io
bi：发送到块设备的块数
bo：从块设备接收到的块数
system
in：每秒中断数
cs：每秒上下文切换次数
cpu
us：用户CPU使用时间
]]></description><category></category></item><item><title><![CDATA[Linux挂载硬盘]]></title><link>https://blog.youkuaiyun.com/codeLife1993/article/details/121703531</link><guid>https://blog.youkuaiyun.com/codeLife1993/article/details/121703531</guid><author>codeLife1993</author><pubDate>Fri, 03 Dec 2021 17:25:05 +0800</pubDate><description><![CDATA[#查看硬盘详细信息
fdisk -l

#分区初始化
fdisk /dev/xvde

输入n设定新的硬盘分割区 

输入p硬盘为主要分割区primary

分区数 默认值 回车

起始扇区 默认值 回车

last扇区 默认值 回车

w保存

#加载分区
partprobe

#在分区建立文件系统
mkfs -t ext4 /dev/xvde1

#挂载
mount /dev/xvde1 /mnt

#备份文件
cp /etc/fstab /etc/fstab.bak

#设置开机主动挂载
echo .]]></description><category></category></item><item><title><![CDATA[LeetCode-20[有效的括号]]]></title><link>https://blog.youkuaiyun.com/codeLife1993/article/details/120463405</link><guid>https://blog.youkuaiyun.com/codeLife1993/article/details/120463405</guid><author>codeLife1993</author><pubDate>Fri, 24 Sep 2021 21:23:43 +0800</pubDate><description><![CDATA[description :

给定一个只包括 '('，')'，'{'，'}'，'['，']'的字符串 s ，判断字符串是否有效。

有效字符串需满足：

左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。


示例 1：

输入：s = "()"
输出：true
示例2：

输入：s = "()[]{}"
输出：true
示例3：

输入：s = "(]"
输出：false
示例4：

输入：s = "([)]"
输出：false
示例5：

输入：s = "{[]}"
输出：tr...]]></description><category></category></item><item><title><![CDATA[LeetCode-14[最长公共前缀]]]></title><link>https://blog.youkuaiyun.com/codeLife1993/article/details/120316217</link><guid>https://blog.youkuaiyun.com/codeLife1993/article/details/120316217</guid><author>codeLife1993</author><pubDate>Wed, 15 Sep 2021 20:20:22 +0800</pubDate><description><![CDATA[description:

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀，返回空字符串""。



示例 1：


输入：strs = ["flower","flow","flight"]
输出："fl"


示例 2：


输入：strs = ["dog","racecar","car"]
输出：""
解释：输入不存在公共前缀。



提示：

1 &lt;= strs.length &lt;= 200
	0 &lt;= strs[i].length &lt;= 200
	str.]]></description><category></category></item><item><title><![CDATA[LeetCode-13[罗马数字转整数]]]></title><link>https://blog.youkuaiyun.com/codeLife1993/article/details/120292762</link><guid>https://blog.youkuaiyun.com/codeLife1993/article/details/120292762</guid><author>codeLife1993</author><pubDate>Tue, 14 Sep 2021 17:43:23 +0800</pubDate><description><![CDATA[discribtion:

罗马数字包含以下七种字符:I，V，X，L，C，D和M。

字符     数值
I       1
V       5
X       10
L       50
C       100
D       500
M       1000
例如， 罗马数字 2 写做II，即为两个并列的 1。12 写做XII，即为X+II。 27 写做XXVII, 即为XX...]]></description><category></category></item><item><title><![CDATA[LeetCode-7[整数反转]]]></title><link>https://blog.youkuaiyun.com/codeLife1993/article/details/120227718</link><guid>https://blog.youkuaiyun.com/codeLife1993/article/details/120227718</guid><author>codeLife1993</author><pubDate>Fri, 10 Sep 2021 18:27:31 +0800</pubDate><description><![CDATA[题目

给你一个 32 位的有符号整数x，返回将x中的数字部分反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围[−231, 231 − 1]，就返回 0。

假设环境不允许存储 64 位整数（有符号或无符号）。



示例 1：


输入：x = 123
输出：321


示例 2：


输入：x = -123
输出：-321


示例 3：


输入：x = 120
输出：21


示例 4：


输入：x = 0
输出：0




提示：

-231 &lt;= x &lt;...]]></description><category></category></item><item><title><![CDATA[LeetCode-9 [回文数]]]></title><link>https://blog.youkuaiyun.com/codeLife1993/article/details/120204224</link><guid>https://blog.youkuaiyun.com/codeLife1993/article/details/120204224</guid><author>codeLife1993</author><pubDate>Thu, 09 Sep 2021 16:34:34 +0800</pubDate><description><![CDATA[class Solution {

    /**
     * 首先明确 /是取整（即商的整数） %是取余(左边小于右边，结果为左边，左边大于右边，结果为余数)
     * 思路: 1.假设为4位数 x/1000的结果为千位数字 x%10的结果为个位数字 比较千位数与个位数是否相等
     * 2.取出中间数字 继续循环比较
     *
     * @param x 入参
     * @return 是否为回文数
     */
    public boolean isPalindrome(.]]></description><category></category></item></channel></rss>