<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[WaiCyuyan的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/WaiCyuyan</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; WaiCyuyan]]></copyright><item><title><![CDATA[java 泛型详解-绝对是对泛型方法讲解最详细的，没有之一]]></title><link>https://blog.youkuaiyun.com/WaiCyuyan/article/details/103137628</link><guid>https://blog.youkuaiyun.com/WaiCyuyan/article/details/103137628</guid><author>WaiCyuyan</author><pubDate>Tue, 19 Nov 2019 10:51:42 +0800</pubDate><description><![CDATA[版权声明：本文为博主原创文章，遵循 CC 4.0 BY-SA 版权协议，转载请附上原文出处链接和本声明。
本文链接：https://blog.youkuaiyun.com/s10461/article/details/53941091
对java的泛型特性的了解仅限于表面的浅浅一层，直到在学习设计模式时发现有不了解的用法，才想起详细的记录一下。

本文参考java 泛型详解、Java中的泛型方法、java泛...]]></description><category></category></item><item><title><![CDATA[深入理解JVM－虚拟机加载机制－类加载过程]]></title><link>https://blog.youkuaiyun.com/WaiCyuyan/article/details/92806777</link><guid>https://blog.youkuaiyun.com/WaiCyuyan/article/details/92806777</guid><author>WaiCyuyan</author><pubDate>Wed, 19 Jun 2019 10:46:37 +0800</pubDate><description><![CDATA[转自 https://blog.youkuaiyun.com/limm33/article/details/56664298



本文是基于周志明的《深入理解Java虚拟机》

 虚拟机把描述类的数据从Class文件加载到内存，并对数据进行检验、转换解析和初始化，最终形成可以被虚拟机直接使用的Java类型，这就是虚拟机的类加载机制。
 从类被加载到虚拟机内存中开始，到卸载出内存为止，类的生...]]></description><category></category></item><item><title><![CDATA[Spring Boot：通过spring-boot-starter-data-redis源码了解starter和autoconfigure模块]]></title><link>https://blog.youkuaiyun.com/WaiCyuyan/article/details/90641836</link><guid>https://blog.youkuaiyun.com/WaiCyuyan/article/details/90641836</guid><author>WaiCyuyan</author><pubDate>Tue, 28 May 2019 16:25:01 +0800</pubDate><description><![CDATA[注：本文Spring Boot为2.X版本
在Spring Boot中，官方提供了spring-boot-autoconfigure包和starter包用来帮助我们简化配置，比如之前要建一个Spring mvc项目，需要我们配置web.xml，dispatcherservlet-servlet.xml，applicationContext.xml等等。而在Spring Boot中只需要在pom中引...]]></description><category></category></item><item><title><![CDATA[Spring @Bean vs @Service注解区别]]></title><link>https://blog.youkuaiyun.com/WaiCyuyan/article/details/89520570</link><guid>https://blog.youkuaiyun.com/WaiCyuyan/article/details/89520570</guid><author>WaiCyuyan</author><pubDate>Thu, 25 Apr 2019 17:28:47 +0800</pubDate><description><![CDATA[今天跟同事讨论了一下在Spring Boot中，是使用@Configuration和@Bean的组合来创建Bean还是直接使用 @Service等注解放在类上的方式。笔者倾向于使用第一种，即@Configuration和@Bean的组合。
先来看一个例子，目标是创建SearchService的一个Bean。
直接使用@Service的方式：


// SearchService.java
	pa...]]></description><category></category></item><item><title><![CDATA[Spring系列之Spring常用注解总结]]></title><link>https://blog.youkuaiyun.com/WaiCyuyan/article/details/89519585</link><guid>https://blog.youkuaiyun.com/WaiCyuyan/article/details/89519585</guid><author>WaiCyuyan</author><pubDate>Thu, 25 Apr 2019 16:55:05 +0800</pubDate><description><![CDATA[传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop、事物，这么做有两个缺点：
1、如果所有的内容都配置在.xml文件中，那么.xml文件将会十分庞大；如果按需求分开.xml文件，那么.xml文件又会非常多。总之这将导致配置文件的可读性与可维护性变得很低。
2、在开发中在.java文件和.xml文件之间不断切换，是一件麻烦的事，同时这种思维上的不连贯也会降低开发的效率。
为...]]></description><category></category></item><item><title><![CDATA[java生产环境发布代码]]></title><link>https://blog.youkuaiyun.com/WaiCyuyan/article/details/88557509</link><guid>https://blog.youkuaiyun.com/WaiCyuyan/article/details/88557509</guid><author>WaiCyuyan</author><pubDate>Thu, 14 Mar 2019 17:34:27 +0800</pubDate><description><![CDATA[代码目录



/data1/www/***/jiaoyi-erp/
jiaoyi-erp.tar.gz
jiaoyi-erp/
bin/app_control.bash         README.md      
conf/         standard-erp-web.jar

dev环境jenkins发布代码，在工程的配置里面有上线...]]></description><category></category></item><item><title><![CDATA[Docker安装指定版本]]></title><link>https://blog.youkuaiyun.com/WaiCyuyan/article/details/88398948</link><guid>https://blog.youkuaiyun.com/WaiCyuyan/article/details/88398948</guid><author>WaiCyuyan</author><pubDate>Mon, 11 Mar 2019 17:21:47 +0800</pubDate><description><![CDATA[使用脚本安装 Docker

1、使用sudo或root权限登录 Centos。

2、确保 yum 包更新到最新。


$ sudo yum update

3、执行 Docker 安装脚本。


$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh

执行这个脚本会添加docker.r...]]></description><category></category></item><item><title><![CDATA[java面试题]]></title><link>https://blog.youkuaiyun.com/WaiCyuyan/article/details/88342155</link><guid>https://blog.youkuaiyun.com/WaiCyuyan/article/details/88342155</guid><author>WaiCyuyan</author><pubDate>Fri, 08 Mar 2019 10:19:08 +0800</pubDate><description><![CDATA[简述jvm中堆和栈的区别
栈内存: 在方法中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配
当在一段代码块定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后
java会自动释放掉为该变量所分配的内存空间, 该内存空间可以立即被另作他用
堆内存: 堆内存用来存放由new创建的对象和数组. 在堆中分配的内存,由java虚拟机的自动垃圾回收器来管理

Str...]]></description><category></category></item><item><title><![CDATA[Java jar命令 常见用法]]></title><link>https://blog.youkuaiyun.com/WaiCyuyan/article/details/88062309</link><guid>https://blog.youkuaiyun.com/WaiCyuyan/article/details/88062309</guid><author>WaiCyuyan</author><pubDate>Fri, 01 Mar 2019 16:30:27 +0800</pubDate><description><![CDATA[一、jar命令作用：

　进行打包-- 把多个文件打包成一个压缩包 -- 这个压缩包和Winzip的压缩格式是一样的.

　区别在于jar压缩的文件默认多一个META-INF的文件夹,该文件夹下包含一个Manifest.mf(清单文件)的文件

　通常来说jar命令得到的压缩包有三种(压缩格式完全一样,只是后缀名不同而已):

　　A、*.jar- 它里面包含N个class文件。

　　B、*...]]></description><category></category></item><item><title><![CDATA[Thread类的run()和start()方法的区别]]></title><link>https://blog.youkuaiyun.com/WaiCyuyan/article/details/88062264</link><guid>https://blog.youkuaiyun.com/WaiCyuyan/article/details/88062264</guid><author>WaiCyuyan</author><pubDate>Fri, 01 Mar 2019 16:28:31 +0800</pubDate><description><![CDATA[一、线程的start()方法

start（）方法来启动线程，真正实现了多线程运行，这时无需等待run方法体代码执行完毕而直接继续执行下面的代码： 通过调用Thread类的start()方法来启动一个线程，这时此线程是处于就绪状态，并没有运行。然后通过此Thread类调用方法run()来完成其运行操作的，这里方法run()称为线程体，它包含了要执行的这个线程的内容，Run方法运行结束，此...]]></description><category></category></item><item><title><![CDATA[Git恢复之前版本的两种方法reset、revert（图文详解）]]></title><link>https://blog.youkuaiyun.com/WaiCyuyan/article/details/87935539</link><guid>https://blog.youkuaiyun.com/WaiCyuyan/article/details/87935539</guid><author>WaiCyuyan</author><pubDate>Tue, 26 Feb 2019 15:13:44 +0800</pubDate><description><![CDATA[一、问题描述

在利用github实现多人合作程序开发的过程中，我们有时会出现错误提交的情况，此时我们希望能撤销提交操作，让程序回到提交前的样子，本文总结了两种解决方法：回退（reset）、反做（revert）。
二、背景知识

git的版本管理，及HEAD的理解

使用git的每次提交，Git都会自动把它们串成一条时间线，这条时间线就是一个分支。如果没有新建分支，那么只有一条时间线，即只有一个分...]]></description><category></category></item><item><title><![CDATA[git checkout 命令详解]]></title><link>https://blog.youkuaiyun.com/WaiCyuyan/article/details/87934068</link><guid>https://blog.youkuaiyun.com/WaiCyuyan/article/details/87934068</guid><author>WaiCyuyan</author><pubDate>Tue, 26 Feb 2019 14:52:58 +0800</pubDate><description><![CDATA[在日常的git操作中，git checkout——检出，是我们的常用命令。最为常用的两种情形是创建分支和切换分支。

在下面的命令中，使用了一些简写，在这里说明一下：


git st # git status
git ci  # git commit
git br # git branch
git co # git checkout
git mg # git merge
git line # g...]]></description><category></category></item><item><title><![CDATA[git账号配置]]></title><link>https://blog.youkuaiyun.com/WaiCyuyan/article/details/86645078</link><guid>https://blog.youkuaiyun.com/WaiCyuyan/article/details/86645078</guid><author>WaiCyuyan</author><pubDate>Fri, 25 Jan 2019 14:05:51 +0800</pubDate><description><![CDATA[配置user_name,email_name

$ git config --global user.name &quot;superGG1990&quot;

$ git config --global user.email &quot;superGG1990@163.com&quot;


ssh-keygen -t rsa -C &quot;luyang759@pingan.com.cn&quot;

生成公钥私钥

一路enter,不需要输入密码
...]]></description><category></category></item><item><title><![CDATA[maven的package与install命令区别]]></title><link>https://blog.youkuaiyun.com/WaiCyuyan/article/details/86611338</link><guid>https://blog.youkuaiyun.com/WaiCyuyan/article/details/86611338</guid><author>WaiCyuyan</author><pubDate>Wed, 23 Jan 2019 15:35:14 +0800</pubDate><description><![CDATA[maven项目管理工具，集成了打包功能(生成jar包)



mvn clean ：清除目标目录中的生成结果

mvn package ： 依据项目生成 jar 文件

mvn install ：在本地 Repository 中安装 jar



package(依赖的jar包会在本地仓库生成，本项目的jar包没有在本地仓库生成)

install本项目jar包会在本地仓库生成

packag...]]></description><category></category></item><item><title><![CDATA[nginx的web缓存服务环境部署记录]]></title><link>https://blog.youkuaiyun.com/WaiCyuyan/article/details/79755209</link><guid>https://blog.youkuaiyun.com/WaiCyuyan/article/details/79755209</guid><author>WaiCyuyan</author><pubDate>Fri, 30 Mar 2018 11:32:24 +0800</pubDate><description><![CDATA[web缓存位于内容源Web服务器和客户端之间,当用户访问一个URL时,Web缓存服务器会去后端Web源服务器取回要输出的内容,然后,当下一个请求到来时,如果访问的是相同的URL，Web缓存服务器直接输出内容给客户端,而不是向源服务器再次发送请求.Web缓存降低了内容源Web服务器,数据库的负载,减少了网络延迟,提高了用户访问的响应速度,增强了用户体验.web缓存服务器中,最著名的要数Squid C...]]></description><category></category></item><item><title><![CDATA[redis和memcache学习]]></title><link>https://blog.youkuaiyun.com/WaiCyuyan/article/details/79731382</link><guid>https://blog.youkuaiyun.com/WaiCyuyan/article/details/79731382</guid><author>WaiCyuyan</author><pubDate>Wed, 28 Mar 2018 17:49:58 +0800</pubDate><description><![CDATA[https://segmentfault.com/a/1190000009695841redis单线程进程和线程的学习redis为什么是单线程？因为CPU不是redis的瓶颈，redis的瓶颈最可能是内存和网络带宽。万一CPU成了redis的瓶颈了或者不想浪费CPU多核，多开几个redis进程  考虑性能问题的前提是得了解性能的瓶颈在哪。redis 目标就是高性能内存kv存储。 异步io，纯内存操...]]></description><category></category></item><item><title><![CDATA[联合memcache，repcached，magent，monit四个组件搭建高可用集群方案]]></title><link>https://blog.youkuaiyun.com/WaiCyuyan/article/details/79716626</link><guid>https://blog.youkuaiyun.com/WaiCyuyan/article/details/79716626</guid><author>WaiCyuyan</author><pubDate>Tue, 27 Mar 2018 17:37:43 +0800</pubDate><description><![CDATA[一、基本介绍 1、组件承担的角色 1）memcache负责缓存对象。 2）repcached负责单主单从的同步备份。 3）magent代理实现N主N备。 4）monit监听以上组件的各个实例端口，保证故障自动重启。2、集群思路 1）利用repcached对memcache进行1对1的主备设计 2）利用magent多MA负载分担实现N主N备方案。 3）利用monit的监听机制，实例宕机后，能够快速重...]]></description><category></category></item><item><title><![CDATA[memcached分布式缓存]]></title><link>https://blog.youkuaiyun.com/WaiCyuyan/article/details/79715576</link><guid>https://blog.youkuaiyun.com/WaiCyuyan/article/details/79715576</guid><author>WaiCyuyan</author><pubDate>Tue, 27 Mar 2018 16:49:34 +0800</pubDate><description><![CDATA[阅读目录1、memcached分布式简介2、取模算法方式3、一致哈希算法方式回到顶部1、memcached分布式简介　　memcached虽然称为“分布式”缓存服务器，但服务器端并没有“分布式”功能。Memcache集群主机不能够相互通信传输数据，它的“分布式”是基于客户端的程序逻辑算法进一步实现的。请看下面简图：根据上图我们简述分析分布式memcached的set与get的过程set过程：1、首...]]></description><category></category></item><item><title><![CDATA[Memcached的Slab Allocation机制管理内存]]></title><link>https://blog.youkuaiyun.com/WaiCyuyan/article/details/79698030</link><guid>https://blog.youkuaiyun.com/WaiCyuyan/article/details/79698030</guid><author>WaiCyuyan</author><pubDate>Mon, 26 Mar 2018 14:47:19 +0800</pubDate><description><![CDATA[#Memcached那些事 本文不是为了介绍Memcached是什么，而是讨论在使用Memcached的时候你必须知道的一些事情。以便于方便排查和更好的使用Memcached。本文主要围绕两个方面来讨论这个话题：Memcached的使用和监控。 ##如何更好的使用Memcached 这部分讨论的是如何能够合理有效的让Memcached为我们服务，通过什么方式来调控Memcached，让它工作的更好...]]></description><category></category></item><item><title><![CDATA[mysql学习]]></title><link>https://blog.youkuaiyun.com/WaiCyuyan/article/details/79657278</link><guid>https://blog.youkuaiyun.com/WaiCyuyan/article/details/79657278</guid><author>WaiCyuyan</author><pubDate>Thu, 22 Mar 2018 17:35:26 +0800</pubDate><description><![CDATA[进入到mysql的安装目录中的bin文件夹，里面会有mysqlbinlog命令，只有这样才能正常使用，命令格式如下：./mysqlbinlog 文件路径 --stop-datetime=&quot;具体日期，精确到秒&quot; --start-datetime=&quot;time&quot;如./mysqlbinlog /usr/local/mysql/var/mysql-bin.000011 stop-date=&quot;2016-06-...]]></description><category></category></item></channel></rss>