<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[大道至简]]></title><description><![CDATA[if you only do what you can do，you will never be more than you are now.侵权勿扰！！！]]></description><link>https://blog.csdn.net/ssspk_</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; ssspk_]]></copyright><item><title><![CDATA[SpringBoot启动时实现自动执行代码的几种方式讲解]]></title><link>https://blog.csdn.net/ssspk_/article/details/122186131</link><guid>https://blog.csdn.net/ssspk_/article/details/122186131</guid><author>ssspk_</author><pubDate>Tue, 28 Dec 2021 10:05:14 +0800</pubDate><description><![CDATA[目前开发的SpringBoot项目在启动的时候需要预加载一些资源。而如何实现启动过程中执行代码，或启动成功后执行，是有很多种方式可以选择，我们可以在static代码块中实现，也可以在构造方法里实现，也可以使用@PostConstruct注解实现。

当然也可以去实现Spring的ApplicationRunner与CommandLineRunner接口去实现启动后运行的功能。在这里整理一下，在这些位置执行的区别以及加载顺序。

java自身的启动时加载方式

static代码块

static静态代码块，在]]></description><category></category></item><item><title><![CDATA[SpringBoot中使用异步方法优化Service逻辑，提高接口响应速度]]></title><link>https://blog.csdn.net/ssspk_/article/details/121283866</link><guid>https://blog.csdn.net/ssspk_/article/details/121283866</guid><author>ssspk_</author><pubDate>Fri, 12 Nov 2021 11:03:22 +0800</pubDate><description><![CDATA[1. 为什么需要异步方法?

先说结论: 合理使用异步方法可以让业务接口快到飞起!

异步方法适用于逻辑与逻辑之间可以相互分割互不影响的业务中, 如生成验证码和发送验证码组成的业务, 其实无需等到真正发送成功验证码才对客户端进行响应, 可以让短信发送这一耗时操作转为异步执行, 解耦耗时操作和核心业务;

同理还有文章阅读的业务逻辑 = 查询文章详情 + 更新文章阅读量后再响应客户端, 其实也无需等到阅读量更新后才响应文章详情给客户端, 用户查看文章是主要逻辑, 而文章阅读量更新是次要逻辑, 况且阅读量就算更]]></description><category></category></item><item><title><![CDATA[Shell 获取外部脚本中的变量]]></title><link>https://blog.csdn.net/ssspk_/article/details/105098312</link><guid>https://blog.csdn.net/ssspk_/article/details/105098312</guid><author>ssspk_</author><pubDate>Wed, 25 Mar 2020 16:31:52 +0800</pubDate><description><![CDATA[a.sh
#!/bin/bash
url="http://www.baidu.com"

b.sh
#!/bin/bash
#使用 . 号来引用a.sh 文件
. ./a.sh
# 或者使用以下包含文件代码
# source ./test1.sh
echo "输出网址：$url"

[sun@localhost ~]$ sh b.sh  #运行b.sh 注：被包含的sh文件不需要可执行权限。
输...]]></description><category></category></item><item><title><![CDATA[DNS负载均衡和NGINX负载均衡]]></title><link>https://blog.csdn.net/ssspk_/article/details/105046468</link><guid>https://blog.csdn.net/ssspk_/article/details/105046468</guid><author>ssspk_</author><pubDate>Mon, 23 Mar 2020 13:09:00 +0800</pubDate><description><![CDATA[负载均衡：把请求均匀的分摊到多个服务器上处理

DNS负载均衡

DNS负载均衡是通过DNS服务器实现的，主要用于把请求均匀的分布到nginx服务器上，真实情况可能是根据区域区分请求，但是一个地域中请求还是需要均匀的分配到nginx服务器上
实现原理：DNS服务器为同一个主机名配置多个IP地址，在应答DNS查询时，DNS服务器对每个查询将以DNS文件中主机记录的IP地址按顺序返回不同的解析结果，将...]]></description><category></category></item><item><title><![CDATA[Nginx配置详解]]></title><link>https://blog.csdn.net/ssspk_/article/details/105046046</link><guid>https://blog.csdn.net/ssspk_/article/details/105046046</guid><author>ssspk_</author><pubDate>Mon, 23 Mar 2020 12:32:07 +0800</pubDate><description><![CDATA[#指定admin&amp;root用户才可以操作nginx
user admin admin; 
#指定处理请求的进程数，一般设置为CPU核数
worker_processes 1; 
#指定错误日志存放路径
error_log /usr/local/soft/nginx/logs/error.log
#指定pid进程文件存放路径
pid   /usr/local/soft/n...]]></description><category></category></item><item><title><![CDATA[多进程编程思想]]></title><link>https://blog.csdn.net/ssspk_/article/details/105045537</link><guid>https://blog.csdn.net/ssspk_/article/details/105045537</guid><author>ssspk_</author><pubDate>Mon, 23 Mar 2020 12:15:43 +0800</pubDate><description><![CDATA[进程与线程的区别

1.进程

我们都知道计算机的核心是CPU，它承担了所有的计算任务；而操作系统是计算机的管理者，它负责任务的调度、资源的分配和管理，统领整个计算机硬件；应用程序侧是具有某种功能的程序，程序是运行于操作系统之上的。

进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程，是操作系统进行资源分配和调度的一个独立单位，是应用程序运行的载体。进程是一种抽象的概念，从来没有...]]></description><category></category></item><item><title><![CDATA[shell - cp]]></title><link>https://blog.csdn.net/ssspk_/article/details/104905166</link><guid>https://blog.csdn.net/ssspk_/article/details/104905166</guid><author>ssspk_</author><pubDate>Mon, 16 Mar 2020 18:29:19 +0800</pubDate><description><![CDATA[Linux cp命令主要用于复制文件或目录。

语法
cp [options] source dest
参数说明：

-a：此选项通常在复制目录时使用，它保留链接、文件属性，并复制目录下的所有内容。其作用等于dpR参数组合。
-d：复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。
-f： 覆盖已经存在的目标文件而不给出提示。
-i： 与-f选项相反，在覆盖目标文件之前给出提示，...]]></description><category></category></item><item><title><![CDATA[shell - chown]]></title><link>https://blog.csdn.net/ssspk_/article/details/104904357</link><guid>https://blog.csdn.net/ssspk_/article/details/104904357</guid><author>ssspk_</author><pubDate>Mon, 16 Mar 2020 18:17:29 +0800</pubDate><description><![CDATA[更改每个文件的所有者和/或所属组。
 -c, --changes            类似 verbose，但只在有更改时才显示结果
   --dereference         受影响的是符号链接所指示的对象，而非符号链接本身
 -h, --no-dereference      会影响符号链接本身，而非符号链接所指示的目...]]></description><category></category></item><item><title><![CDATA[shell - chmod]]></title><link>https://blog.csdn.net/ssspk_/article/details/104898454</link><guid>https://blog.csdn.net/ssspk_/article/details/104898454</guid><author>ssspk_</author><pubDate>Mon, 16 Mar 2020 16:26:03 +0800</pubDate><description><![CDATA[将每个文件的模式更改为指定值。

 -c, --changes           类似 --verbose，但只在有更改时才显示结果
 -f, --silent, --quiet        去除大部份的错误信息
 -v, --verbose            为处理的所有文件显示诊断信息
   --refere...]]></description><category></category></item><item><title><![CDATA[linux文件系统ext2\ext3\ext4\xfs详解]]></title><link>https://blog.csdn.net/ssspk_/article/details/104878293</link><guid>https://blog.csdn.net/ssspk_/article/details/104878293</guid><author>ssspk_</author><pubDate>Sun, 15 Mar 2020 14:25:43 +0800</pubDate><description><![CDATA[1.ext2

介绍：

第二代扩展文件系统是LINUX内核所用的文件系统，用以代替ext，是 EXT文件系统的升级版，

特点：

在ext2文件系统中，文件由inode（包含有文件的所有信息）进行唯一标识。一个文件可能对应多个文件名，只有在所有文件名都被删除后，该文件才会被删除。此外，同一文件在磁盘中存放和被打开时所对应的inode是不同的，并由内核负责同步。

2.ext3

介绍：

EX...]]></description><category></category></item><item><title><![CDATA[linux-关机重启命令]]></title><link>https://blog.csdn.net/ssspk_/article/details/104875158</link><guid>https://blog.csdn.net/ssspk_/article/details/104875158</guid><author>ssspk_</author><pubDate>Sun, 15 Mar 2020 11:07:22 +0800</pubDate><description><![CDATA[shutdown 命令
shutdown [选项] 时间
-c 取消前一个关机命令
-h 关机
-r 重启
shutdown -h now 马上关机
halt 关机
poweroff 关机
init 0 关机
reboot 重启
init 6 重启

系统运行级别
0 关机
1 单用户
2 不完全多用户，不含NFS服务
3 完全多用户
4 未分配
5 图形界面
6 重启
runlevel 查询系统...]]></description><category></category></item><item><title><![CDATA[Linux常见目录的作用]]></title><link>https://blog.csdn.net/ssspk_/article/details/104874532</link><guid>https://blog.csdn.net/ssspk_/article/details/104874532</guid><author>ssspk_</author><pubDate>Sun, 15 Mar 2020 10:45:37 +0800</pubDate><description><![CDATA[1.linux常见目录



2.常见目录作用

目录名
			目录的作用
		/bin/
			系统命令保存目录,所有用户都可以执行,在单用户模式下也可以使用此目录下的命令
		/sbin/
			系统环境设置相关命令的保存目录,只可以root用户执行
		/usr/bin/
			系统命令保存目录,所有用户都可以执行,这些命令与系统启动无关,在单用户模式下不可以执行
		/usr/sbin/...]]></description><category></category></item><item><title><![CDATA[shell - ps]]></title><link>https://blog.csdn.net/ssspk_/article/details/104580033</link><guid>https://blog.csdn.net/ssspk_/article/details/104580033</guid><author>ssspk_</author><pubDate>Sat, 29 Feb 2020 19:28:14 +0800</pubDate><description><![CDATA[参数说明：

　　-a 显示现行终端机下的所有进程，包括其他用户的进程。
　　-A 显示所有进程。
　　-c 显示CLS和PRI栏位。
　　c 列出进程时，显示每个进程真正的指令名称，而不包含路径，参数或常驻服务的标示。
　　-C&lt;指令名称&gt; 　指定执行指令的名称，并列出该指令的进程的状况。
　　-d 　显示所有进程，但不包括阶段作业领导者的进程。
　　-e 　此参数的效果...]]></description><category></category></item><item><title><![CDATA[shell - ls]]></title><link>https://blog.csdn.net/ssspk_/article/details/104564831</link><guid>https://blog.csdn.net/ssspk_/article/details/104564831</guid><author>ssspk_</author><pubDate>Fri, 28 Feb 2020 21:38:11 +0800</pubDate><description><![CDATA[用法：ls [选项]... [文件]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.
长选项必须使用的参数对于短选项时也是必需使用的。

-a, --all...]]></description><category></category></item><item><title><![CDATA[集合基础增强原理分析]]></title><link>https://blog.csdn.net/ssspk_/article/details/92799291</link><guid>https://blog.csdn.net/ssspk_/article/details/92799291</guid><author>ssspk_</author><pubDate>Tue, 18 Jun 2019 20:30:07 +0800</pubDate><description><![CDATA[List集合基础增强底层源码分析

集合分为三个系列，分别为：List、set、map

List系列

特点：元素有序可重复

有序指的是元素的添加顺序，也就是说，元素被第一个存进去的时候，它就在第一位，这就是list集合的元素添加顺序；

通常情况下我们所说的有序有两个概念，第一个是添加顺序，第二个是大小顺序（实际上就是元素值的大小）

List下面重点关注两个实现类分别是：

ArrayLi...]]></description><category></category></item><item><title><![CDATA[并发编程 -- 多线程（一）]]></title><link>https://blog.csdn.net/ssspk_/article/details/92683173</link><guid>https://blog.csdn.net/ssspk_/article/details/92683173</guid><author>ssspk_</author><pubDate>Mon, 17 Jun 2019 19:14:04 +0800</pubDate><description><![CDATA[进程

在理解多线程之前，我们先需要了解什么是进程？

进程说白了就是在你的内存空间中开辟出的一个独立的空间；

如果还不理解的话，我再解释一下；

想必各位之前都安装过软件吧，你安装完软件之后，在你的软件安装包里面是不是有一个.exe文件，那你双击exe文件的时候，在你的任务管理器，在里面就有一个进程选项卡，就是说，每当你打开一个exe文件的时候，它都会显示在任务管理器的进程当中，所以就可以把运...]]></description><category></category></item><item><title><![CDATA[Mybatis 一级缓存和二级缓存]]></title><link>https://blog.csdn.net/ssspk_/article/details/92679334</link><guid>https://blog.csdn.net/ssspk_/article/details/92679334</guid><author>ssspk_</author><pubDate>Mon, 17 Jun 2019 18:59:03 +0800</pubDate><description><![CDATA[查询缓存

首先，我们先看一下这个标题“查询缓存”，那就说明跟增、删、改是没有任何关联的，只有在查询时，才会遇到缓存，增删改不涉及！

查询缓存目前Mybatis中提供了两个，分别是：一级缓存、二级缓存；

一级缓存

先说一下一级缓存的范围：同一个SqlSession对象，也就说，我们是同一个SqlSession对象，又要进行同样的查询操作，那么，我们就可以去缓存中获取；

所以，SqlSess...]]></description><category></category></item><item><title><![CDATA[Session执行机制与原理]]></title><link>https://blog.csdn.net/ssspk_/article/details/92674222</link><guid>https://blog.csdn.net/ssspk_/article/details/92674222</guid><author>ssspk_</author><pubDate>Mon, 17 Jun 2019 18:38:41 +0800</pubDate><description><![CDATA[什么是Session

首先了解一下Session的中文意思：一次会话，什么是一次会话呢？我举个例子：就我们现在上网，打开浏览器浏览网站当时开始到你关闭浏览器，就称之为一次会话；

也可以这么理解，当你在网上购物，浏览、选择商品、付款、退出，这个就可以理解成一次会话；

一次开始到一次结束；

快速理解Session的执行机制

比如我现在客户端向服务端发送一个请求，这个时候服务端就用会一个Ses...]]></description><category></category></item><item><title><![CDATA[Cookie]]></title><link>https://blog.csdn.net/ssspk_/article/details/92611751</link><guid>https://blog.csdn.net/ssspk_/article/details/92611751</guid><author>ssspk_</author><pubDate>Mon, 17 Jun 2019 13:39:27 +0800</pubDate><description><![CDATA[Cookie不是内置对象，所以用的时候需要new出来，Cookie是由服务端产生的，再发送给客户端保存，它不是内置对象，却是由服务端产生的，产生完后给了客户端；

它存在于客户端，却不是客户端产生的，是服务端产生的，产生完后给你了

Cookie的作用

Cookie就是我们所理解的缓存，本地缓存；

比如客户端访问服务端，第一次访问结束后，我就会产生一个Cookie，把这个Cookie保留到客户...]]></description><category></category></item><item><title><![CDATA[RabbitMQ 详解（一）]]></title><link>https://blog.csdn.net/ssspk_/article/details/91047035</link><guid>https://blog.csdn.net/ssspk_/article/details/91047035</guid><author>ssspk_</author><pubDate>Thu, 06 Jun 2019 17:11:38 +0800</pubDate><description><![CDATA[RabbitMQ 即一个消息队列，主要是用来实现应用程序的异步和解耦，同时也能起到消息缓冲，消息分发的作用。

消息中间件在互联网公司的使用中越来越多，刚才还看到新闻阿里将 RocketMQ 捐献给了 Apache，当然了今天的主角还是讲 RabbitMQ。消息中间件最主要的作用是解耦，中间件最标准的用法是生产者生产消息传送到队列，消费者从队列中拿取消息并处理，生产者不用关心是谁来消费，消费者不用...]]></description><category></category></item></channel></rss>