<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Eaphy's Blog]]></title><description><![CDATA[专注于技术，厚积而薄发！]]></description><link>https://blog.youkuaiyun.com/eaphyy</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; eaphyy]]></copyright><item><title><![CDATA[博客迁移至 https://eaphy.github.io/]]></title><link>https://blog.youkuaiyun.com/eaphyy/article/details/95391305</link><guid>https://blog.youkuaiyun.com/eaphyy/article/details/95391305</guid><author>eaphyy</author><pubDate>Wed, 10 Jul 2019 22:42:49 +0800</pubDate><description><![CDATA[个人博客

]]></description><category></category></item><item><title><![CDATA[mysql 分区表]]></title><link>https://blog.youkuaiyun.com/eaphyy/article/details/92614278</link><guid>https://blog.youkuaiyun.com/eaphyy/article/details/92614278</guid><author>eaphyy</author><pubDate>Mon, 17 Jun 2019 13:52:11 +0800</pubDate><description><![CDATA[分区表特点：
在逻辑上为一个表，在物理上存储在多个文件中。
1、确认mysql服务器是否支持分区表：
  mysql&gt;  show plugins；


查询结果如有partition这一行，则支持分区。
2、分区类型
1）按hash分区
CREATE TABLE `t_user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varc...]]></description><category></category></item><item><title><![CDATA[github 搜索技巧]]></title><link>https://blog.youkuaiyun.com/eaphyy/article/details/90641182</link><guid>https://blog.youkuaiyun.com/eaphyy/article/details/90641182</guid><author>eaphyy</author><pubDate>Tue, 28 May 2019 16:02:20 +0800</pubDate><description><![CDATA[1、in
springcloud in:name,description,readme     //搜索项目名字，描述，自述文件中含有springcloud的项目


2、stars
springcloud stars:&gt;=500     //搜索star数大于等于500的springcloud的项目

springcloud stars:100..500  //搜索star数在100-50...]]></description><category></category></item><item><title><![CDATA[java 高频面试题 208 道]]></title><link>https://blog.youkuaiyun.com/eaphyy/article/details/89312277</link><guid>https://blog.youkuaiyun.com/eaphyy/article/details/89312277</guid><author>eaphyy</author><pubDate>Mon, 15 Apr 2019 15:04:47 +0800</pubDate><description><![CDATA[Java 基础
1. JDK 和 JRE 有什么区别？
JDK：Java Development Kit 的简称，java 开发工具包，提供了 java 的开发环境和运行环境。
JRE：Java Runtime Environment 的简称，java 运行环境，为 java 的运行提供了所需环境。
具体来说 JDK 其实包含了 JRE，同时还包含了编译 java 源码的编译器 javac，还包含...]]></description><category></category></item><item><title><![CDATA[TCP 的三次握手和四次挥手]]></title><link>https://blog.youkuaiyun.com/eaphyy/article/details/88866413</link><guid>https://blog.youkuaiyun.com/eaphyy/article/details/88866413</guid><author>eaphyy</author><pubDate>Thu, 28 Mar 2019 12:27:16 +0800</pubDate><description><![CDATA[三次握手：

1、c 向 s 发送 SYN 新建连接标志 1，seq 序列号为 x
2、s 向 c 发送 SYN 新建连接标志 1，ACK 确认标志 1，seq 序列号 y，ack 确认号 x+1
3、c 向 s 发送 ACK 确认标志 1，seq 序列号 x+1，ack 确认号 y+1
四次挥手：

1、c 向 s 发送 FIN 关闭连接标志 1，seq 序列号为 x
2、s 向 c 发送 AC...]]></description><category></category></item><item><title><![CDATA[JDK动态代理与CGLib动态代理]]></title><link>https://blog.youkuaiyun.com/eaphyy/article/details/88842303</link><guid>https://blog.youkuaiyun.com/eaphyy/article/details/88842303</guid><author>eaphyy</author><pubDate>Wed, 27 Mar 2019 13:20:47 +0800</pubDate><description><![CDATA[一、JDK 动态代理
1.1 详细介绍：
在java的动态代理机制中，有两个重要的类或接口，一个是 InvocationHandler(Interface)、另一个则是 Proxy(Class)，这一个类和接口是实现我们动态代理所必须用到的。
1.1.1 InvocationHandler
每一个动态代理类都必须要实现InvocationHandler这个接口，并且每个代理类的实例都关联了一个ha...]]></description><category></category></item><item><title><![CDATA[一致性 hash 算法]]></title><link>https://blog.youkuaiyun.com/eaphyy/article/details/88841768</link><guid>https://blog.youkuaiyun.com/eaphyy/article/details/88841768</guid><author>eaphyy</author><pubDate>Wed, 27 Mar 2019 12:41:49 +0800</pubDate><description><![CDATA[一、什么是一致性hash算法 ？
一致性Hash算法是使用取模的方法，是对2^32取模，什么意思呢？简单来说，一致性Hash算法将整个哈希值空间组织成一个虚拟的圆环，如假设某哈希函数H的值空间为0-2^32-1（即哈希值是一个32位无符号整形），整个哈希环如下：  
整个空间按顺时针方向组织，圆环的正上方的点代表0，0点右侧的第一个点代表1，以此类推，2、3、4、5、6……直到2^32-1，也就是...]]></description><category></category></item><item><title><![CDATA[Nginx 的基本使用]]></title><link>https://blog.youkuaiyun.com/eaphyy/article/details/87563704</link><guid>https://blog.youkuaiyun.com/eaphyy/article/details/87563704</guid><author>eaphyy</author><pubDate>Sun, 17 Feb 2019 22:44:01 +0800</pubDate><description><![CDATA[
虚拟机安装centos7作为服务器，ip 为 192.168.0.8
部署了两台tomcat（一台端口为8080，一台端口为9080），一台 nginx
本地windows添加host，192.168.0.8 指向 www.ieaphy.com

1、在/usr/local/nginx/conf/nginx.conf ，添加 include vhost/*.conf ;
#user  nobod...]]></description><category></category></item><item><title><![CDATA[基于 spring session 的单点登录]]></title><link>https://blog.youkuaiyun.com/eaphyy/article/details/87556347</link><guid>https://blog.youkuaiyun.com/eaphyy/article/details/87556347</guid><author>eaphyy</author><pubDate>Sun, 17 Feb 2019 20:50:03 +0800</pubDate><description><![CDATA[1、pom.xml 添加依赖
    &amp;lt;dependency&amp;gt;
      &amp;lt;groupId&amp;gt;org.springframework.session&amp;lt;/groupId&amp;gt;
      &amp;lt;artifactId&amp;gt;spring-session-data-redis&amp;lt;/artifactId&amp;gt;
      &amp;lt;version&amp;gt;1.2.0.R...]]></description><category></category></item><item><title><![CDATA[Springmvc 全局异常处理的两种方式]]></title><link>https://blog.youkuaiyun.com/eaphyy/article/details/87534461</link><guid>https://blog.youkuaiyun.com/eaphyy/article/details/87534461</guid><author>eaphyy</author><pubDate>Sun, 17 Feb 2019 17:52:27 +0800</pubDate><description><![CDATA[一、@ControllerAdvice + @ExceptionHandler
二、实现 HandlerExceptionResolver

]]></description><category></category></item><item><title><![CDATA[基于 redis 的单点登录原理]]></title><link>https://blog.youkuaiyun.com/eaphyy/article/details/87468250</link><guid>https://blog.youkuaiyun.com/eaphyy/article/details/87468250</guid><author>eaphyy</author><pubDate>Sat, 16 Feb 2019 19:48:54 +0800</pubDate><description><![CDATA[
原理：就是在一个网站的根地址里添加一个cookie，cookie的value就是用户登录的sessionid，将这个sessioid作为redis的key，用户的信息作为value，存储在redis里，这样该网站所有的子域名都可以获取到这个cookie，然后根据cookie里的sessionid去redis里读取用户的信息。

    @RequestMapping(value = &quot;login...]]></description><category></category></item><item><title><![CDATA[ThreadLocal 的总结]]></title><link>https://blog.youkuaiyun.com/eaphyy/article/details/86608761</link><guid>https://blog.youkuaiyun.com/eaphyy/article/details/86608761</guid><author>eaphyy</author><pubDate>Wed, 23 Jan 2019 14:28:28 +0800</pubDate><description><![CDATA[ThreadLocal 为每一个使用该变量的线程都提供了独立的副本，可以做到线程间的数据隔离，每一个线程都访问各自内部的副本变量。
常用方法：

public void set(T t);
public T get();
protected T initalValue();   //默认值为null

一、set 方法
1）、获取当前线程
2）、根据当前线程获取 ThreadLocalMap
3）...]]></description><category></category></item><item><title><![CDATA[Future 模式]]></title><link>https://blog.youkuaiyun.com/eaphyy/article/details/86608246</link><guid>https://blog.youkuaiyun.com/eaphyy/article/details/86608246</guid><author>eaphyy</author><pubDate>Wed, 23 Jan 2019 12:55:56 +0800</pubDate><description><![CDATA[future 的主要作用就是异步调用，让一些耗时的任务在后台慢慢处理，于此同时先去执行其他的任务。countdownlatch 其实也可以实现，只不过future更为强大，countdownlatch 只能获知任务的完成情况，不能得到任务的执行结果，future 则可以在任务执行完毕之后得到任务执行结果。
一般我们使用futuretask和callable的组合。futuretask 常用方法：
...]]></description><category></category></item><item><title><![CDATA[java 批量重命名工具 （可执行jar文件）]]></title><link>https://blog.youkuaiyun.com/eaphyy/article/details/85574635</link><guid>https://blog.youkuaiyun.com/eaphyy/article/details/85574635</guid><author>eaphyy</author><pubDate>Wed, 02 Jan 2019 01:16:22 +0800</pubDate><description><![CDATA[有时候下载一些视频，不管是学习视频也好，电视剧也罢，很多网站都会在文件名上加上自己的网址，有的还很长，看的很不爽！闲来无事，用java写了个批量重命名的jar文件，没什么技术含量……不过省的我一个个去重命名了。
比如，我们下载下来的文件是这样的：

如果我想让所有文件名中去掉【www.eaphy.com】，那么运行jar文件，选择视频所在的文件夹，在“重复的文字：”填入 【www.eaphy.co...]]></description><category></category></item><item><title><![CDATA[java 中的深拷贝与浅拷贝]]></title><link>https://blog.youkuaiyun.com/eaphyy/article/details/85474538</link><guid>https://blog.youkuaiyun.com/eaphyy/article/details/85474538</guid><author>eaphyy</author><pubDate>Mon, 31 Dec 2018 17:29:11 +0800</pubDate><description><![CDATA[深拷贝与浅拷贝的区别在于：
对于基本数据类型，浅拷贝和深拷贝都是直接拷贝的值。
对于引用数据类型，浅拷贝拷贝的是引用（即内存地址，不开辟新的内存空间），深拷贝是开辟了新的内存空间，创建了相同值的对象。
想要实现拷贝很简单，让被拷贝的对象实现Cloneable接口，然后重写Object的clone方法即可：
@Getter
@Setter
@ToString
@AllArgsConstructor
...]]></description><category></category></item><item><title><![CDATA[正则表达式的运用]]></title><link>https://blog.youkuaiyun.com/eaphyy/article/details/85225451</link><guid>https://blog.youkuaiyun.com/eaphyy/article/details/85225451</guid><author>eaphyy</author><pubDate>Sun, 23 Dec 2018 19:41:13 +0800</pubDate><description><![CDATA[作为一个开发者，正则表达式是我们需要经常使用的，往常遇到总是直接百度网上的结果，最近由于python爬虫的学习，需要经常使用正则表达式，今天正好认真学一下。
特殊字符




字符
描述




^
以什么开始


$
以什么结尾


.
代表任意单个字符


+
代表最少出现一次


*
代表前面字符可任意长度


?
代表非贪婪模式


|
代表或


{2}
代表前面字符出现的次数（即2次)...]]></description><category></category></item><item><title><![CDATA[python 字符串的方法总结]]></title><link>https://blog.youkuaiyun.com/eaphyy/article/details/85040341</link><guid>https://blog.youkuaiyun.com/eaphyy/article/details/85040341</guid><author>eaphyy</author><pubDate>Sun, 16 Dec 2018 20:57:17 +0800</pubDate><description><![CDATA[
test = 'bbC!dEA'
test1 = '{name}+{age}'
test2 = '{0}+{1}'
test3 = 'user\temail\tpass\nwang\t123@qq.com\t123\nwang\t123@qq.com\t123'

# 首字母大写，其余小写
v1 = test.capitalize()
print(v1)
# 结果： Bbc!dea

# 所有字...]]></description><category></category></item><item><title><![CDATA[windows 下 Python 虚拟环境和scrapy项目的搭建]]></title><link>https://blog.youkuaiyun.com/eaphyy/article/details/85032174</link><guid>https://blog.youkuaiyun.com/eaphyy/article/details/85032174</guid><author>eaphyy</author><pubDate>Sun, 16 Dec 2018 12:50:12 +0800</pubDate><description><![CDATA[       请先确定本机电脑已经安装 python ，并且配置好环境变量。如果在 cmd 中使用pip命令提示不是内部命令的话，此处也需要配置环境变量，pip.exe一般在你python安装路径下面的Scripts目录下， 在系统变量 path 中添加 D:\Program Files\python\Scripts（安装路径）即可。

 

安装 virtualenv ，（ -i https:/...]]></description><category></category></item><item><title><![CDATA[Semaphore 的运用]]></title><link>https://blog.youkuaiyun.com/eaphyy/article/details/84981243</link><guid>https://blog.youkuaiyun.com/eaphyy/article/details/84981243</guid><author>eaphyy</author><pubDate>Wed, 12 Dec 2018 23:51:38 +0800</pubDate><description><![CDATA[在Java并发编程中，Semaphore （信号量）主要用来控制线程并发的数量。

主要方法：

Semaphore(int permits):构造方法，创建具有给定许可数的计数信号量并设置为非公平信号量。

Semaphore(int permits,boolean fair):构造方法，当fair等于true时，创建具有给定许可数的计数信号量并设置为公平信号量。

void acquire()...]]></description><category></category></item><item><title><![CDATA[java8  optional 类的运用]]></title><link>https://blog.youkuaiyun.com/eaphyy/article/details/84962950</link><guid>https://blog.youkuaiyun.com/eaphyy/article/details/84962950</guid><author>eaphyy</author><pubDate>Tue, 11 Dec 2018 22:46:39 +0800</pubDate><description><![CDATA[常用方法：
    public static &amp;lt;T&amp;gt; Optional&amp;lt;T&amp;gt; of(T value)；// 为Optional设值，值为空抛异常
    public static &amp;lt;T&amp;gt; Optional&amp;lt;T&amp;gt; ofNullable(T value) ；// 为Optional设值，值为空不抛异常
    public T get()；// 如果...]]></description><category></category></item></channel></rss>