<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[DevilDark的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/DevilDark</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; DevilDark]]></copyright><item><title><![CDATA[spring AOP 总结]]></title><link>https://blog.youkuaiyun.com/DevilDark/article/details/98522958</link><guid>https://blog.youkuaiyun.com/DevilDark/article/details/98522958</guid><author>DevilDark</author><pubDate>Mon, 05 Aug 2019 22:31:36 +0800</pubDate><description><![CDATA[应用场景
用户注册，注册成功之后进行邮件通知，初始化客户数据等操作，可以丢进消息队列，通知对应的业务服务进行相应的操作，保证用户注册的性能。
MQ优点

异步
消峰
解耦
消息队列利用”发布-订阅“工作，消息发送者发送消息至分布式消息队列即结束对消息的处理，消息接收者从消息队列读取消息进行后续处理。对新增业务，只要对该类消息感兴趣，即可订阅该消息，对原有系统和业务没有任何影响，从而实现网站业务的可...]]></description><category></category></item><item><title><![CDATA[sql优化]]></title><link>https://blog.youkuaiyun.com/DevilDark/article/details/88763901</link><guid>https://blog.youkuaiyun.com/DevilDark/article/details/88763901</guid><author>DevilDark</author><pubDate>Sat, 23 Mar 2019 16:50:55 +0800</pubDate><description><![CDATA[写明查询具体某几列，减少*的使用，表名过长时,尽量使用表的别名

*和列名一样
2，在业务密集的SQL当中尽量不采用IN操作符，用EXISTS 方案代替。
in 和 exists的区别: 如果子查询得出的结果集记录较少，主查询中的表较大且又有索引时应该用in, 反之如果外层的主查询记录较少，子查询中的表大，又有索引时使用exists。其实我们区分in和exists主要是造成了驱动顺序的改变(这是...]]></description><category></category></item><item><title><![CDATA[java中读写锁的使用（ReadWriteLock）]]></title><link>https://blog.youkuaiyun.com/DevilDark/article/details/80364761</link><guid>https://blog.youkuaiyun.com/DevilDark/article/details/80364761</guid><author>DevilDark</author><pubDate>Fri, 18 May 2018 15:09:47 +0800</pubDate><description><![CDATA[一、在JDK文档中关于读写锁的相关说明

ReadWriteLock 维护了一对相关的 锁 ，一个用于只读操作，另一个用于写入操作。只要没有 writer， 读取锁 可以由多个 reader 线程同时保持。 写入锁 是独占的。 
所有 ReadWriteLock 实现都必须保证 writeLock 操作的内存同步效果也要保持与相关 readLock 的联系。也就是说，成功获取读锁的线程会看到写入锁...]]></description><category></category></item><item><title><![CDATA[java 静态代理和动态代理]]></title><link>https://blog.youkuaiyun.com/DevilDark/article/details/79450991</link><guid>https://blog.youkuaiyun.com/DevilDark/article/details/79450991</guid><author>DevilDark</author><pubDate>Mon, 05 Mar 2018 21:01:11 +0800</pubDate><description><![CDATA[1、动态代理（Dynamic Proxy） 
　　代理分为静态代理和动态代理，静态代理是在编译时就将接口、实现类、代理类一股脑儿全部手动完成，但如果我们需要很多的代理，每一个都这么手动的去创建实属浪费时间，而且会有大量的重复代码，此时我们就可以采用动态代理，动态代理可以在程序运行期间根据需要动态的创建代理类及其实例，来完成具体的功能。 
　　其实方法直接调用就可以完成功能，为什么还要加个代理呢？ ...]]></description><category></category></item><item><title><![CDATA[Unicode和UTF-8]]></title><link>https://blog.youkuaiyun.com/DevilDark/article/details/78245262</link><guid>https://blog.youkuaiyun.com/DevilDark/article/details/78245262</guid><author>DevilDark</author><pubDate>Sun, 15 Oct 2017 23:00:08 +0800</pubDate><description><![CDATA[ASCII码 
我们知道，在计算机内部，所有的信息最终都表示为一个二进制的字符串。每一个二进制位（bit）有0和1两种状态，因此八个二进制位就可以组合出256种状态，这被称为一个字节（byte）。也就是说，一个字节一共可以用来表示256种不同的状态，每一个状态对应一个符号，就是256个符号，从0000000到11111111。 
上个世纪60年代，美国制定了一套字符编码，对英语字符与二进制位之间的关]]></description><category></category></item><item><title><![CDATA[JVM 中的永久代]]></title><link>https://blog.youkuaiyun.com/DevilDark/article/details/78238750</link><guid>https://blog.youkuaiyun.com/DevilDark/article/details/78238750</guid><author>DevilDark</author><pubDate>Sun, 15 Oct 2017 09:52:11 +0800</pubDate><description><![CDATA[PermGen（永久代）绝大部分 Java 程序员应该都见过 “java.lang.OutOfMemoryError: PermGen space “这个异常。这里的 “PermGen space”其实指的就是方法区。不过方法区和“PermGen space”又有着本质的区别。前者是 JVM 的规范，而后者则是 JVM 规范的一种实现，并且只有 HotSpot 才有 “PermGen space”，]]></description><category></category></item><item><title><![CDATA[二叉树前序，中序，后序遍历]]></title><link>https://blog.youkuaiyun.com/DevilDark/article/details/77951743</link><guid>https://blog.youkuaiyun.com/DevilDark/article/details/77951743</guid><author>DevilDark</author><pubDate>Tue, 12 Sep 2017 22:57:47 +0800</pubDate><description><![CDATA[今天来总结下二叉树前序、中序、后序遍历相互求法，即如果知道两个的遍历，如何求第三种遍历方法，比较笨的方法是画出来二叉树，然后根据各种遍历不同的特性来求，也可以编程求出，下面我们分别说明。首先，我们看看前序、中序、后序遍历的特性：  
前序遍历：  
    1.访问根节点  
    2.前序遍历左子树  
    3.前序遍历右子树  
中序遍历：  
    1.中序遍历左子树  
    2.]]></description><category></category></item><item><title><![CDATA[Linux下添加新网卡eht3]]></title><link>https://blog.youkuaiyun.com/DevilDark/article/details/77934900</link><guid>https://blog.youkuaiyun.com/DevilDark/article/details/77934900</guid><author>DevilDark</author><pubDate>Mon, 11 Sep 2017 16:47:39 +0800</pubDate><description><![CDATA[1、修改配置文件vim /etc/udev/rules.d/70-persistent-net.rules 
这里定义了四个网卡，其中NAME为eth3的网卡为我们自己新增的网卡，复制eth3对应的mac地址00:0c:29:16:5c:0b3、接下来修改/etc/sysconfig/network-scripts/ifcfg-eth3文件，将mac地址修改成与70-persistent-net.r]]></description><category></category></item><item><title><![CDATA[二叉树的前序、中序和后序遍历]]></title><link>https://blog.youkuaiyun.com/DevilDark/article/details/77931371</link><guid>https://blog.youkuaiyun.com/DevilDark/article/details/77931371</guid><author>DevilDark</author><pubDate>Mon, 11 Sep 2017 11:27:50 +0800</pubDate><description><![CDATA[1.前根序遍历：先遍历根结点，然后遍历左子树，最后遍历右子树。ABDHECFG2.中根序遍历：先遍历左子树，然后遍历根结点，最后遍历右子树。HDBEAFCG3.后根序遍历：先遍历左子树，然后遍历右子树，最后遍历根节点。HDEBFGCA]]></description><category></category></item><item><title><![CDATA[堆排序]]></title><link>https://blog.youkuaiyun.com/DevilDark/article/details/77931217</link><guid>https://blog.youkuaiyun.com/DevilDark/article/details/77931217</guid><author>DevilDark</author><pubDate>Mon, 11 Sep 2017 11:17:07 +0800</pubDate><description><![CDATA[1. 堆原理1．父结点的键值总是大于或等于（小于或等于）任何一个子节点的键值。2．每个结点的左子树和右子树都是一个二叉堆（都是最大堆或最小堆）。当父结点的键值总是大于或等于任何一个子节点的键值时为最大堆。当父结点的键值总是小于或等于任何一个子节点的键值时为最小堆。可以看出，其实堆排序的数据都是存储在数组中的，只是我们操作的时候把它用作完全二叉树进行排序。3 . 堆的存储 
一般都用数组来表示堆，i结]]></description><category></category></item><item><title><![CDATA[java并发编程]]></title><link>https://blog.youkuaiyun.com/DevilDark/article/details/77886990</link><guid>https://blog.youkuaiyun.com/DevilDark/article/details/77886990</guid><author>DevilDark</author><pubDate>Thu, 07 Sep 2017 21:10:51 +0800</pubDate><description><![CDATA[http://www.cnblogs.com/paddix/p/5374810.html]]></description><category></category></item><item><title><![CDATA[String 内存分配]]></title><link>https://blog.youkuaiyun.com/DevilDark/article/details/77838577</link><guid>https://blog.youkuaiyun.com/DevilDark/article/details/77838577</guid><author>DevilDark</author><pubDate>Mon, 04 Sep 2017 16:07:16 +0800</pubDate><description><![CDATA[看了好多文章，网上大多数文章写的不是很详细，结合很多文章之后，写下自己的理解  从一个例子开始String s = new String( "myString" );其中字符串常量是”myString”，在编译时被存储在常量池（常量池在方法区）的某个位置。在解析阶段，虚拟机发现字符串常量”myString”，它会在一个内部字符串常量列表中查找，如果没有找到，那么会在堆里面创建一个包含字符序列[myS]]></description><category></category></item><item><title><![CDATA[LintCode - 数组 - 132 Pattern]]></title><link>https://blog.youkuaiyun.com/DevilDark/article/details/77780756</link><guid>https://blog.youkuaiyun.com/DevilDark/article/details/77780756</guid><author>DevilDark</author><pubDate>Fri, 01 Sep 2017 22:44:13 +0800</pubDate><description><![CDATA[描述Given a sequence of n integers a1, a2, …, an, a 132 pattern is a subsequence ai, aj, ak such that i < j < k and ai < ak < aj. Design an algorithm that takes a list of n numbers as input and checks wh]]></description><category></category></item><item><title><![CDATA[Java内存区域划分]]></title><link>https://blog.youkuaiyun.com/DevilDark/article/details/77771467</link><guid>https://blog.youkuaiyun.com/DevilDark/article/details/77771467</guid><author>DevilDark</author><pubDate>Fri, 01 Sep 2017 12:15:22 +0800</pubDate><description><![CDATA[Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的“高墙”，墙外面的人想进去，墙里面的人却想出来。   Java虚拟机在执行Java程序的过程中会把它管理的内存划分为若干个不同的数据区域。
java虚拟机运行时数据区
一、程序计数器程序计数器可以看做是当前线程所执行的字节码的行号指示器。在JVM的概念模型里，字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令。]]></description><category></category></item><item><title><![CDATA[linux下安装mysql]]></title><link>https://blog.youkuaiyun.com/DevilDark/article/details/70495162</link><guid>https://blog.youkuaiyun.com/DevilDark/article/details/70495162</guid><author>DevilDark</author><pubDate>Sun, 23 Apr 2017 11:55:55 +0800</pubDate><description><![CDATA[安装环境：系统是 centos6.5
1、下载
　　　　下载地址：http://dev.mysql.com/downloads/mysql/5.6.html#downloads
　　　　下载版本：我这里选择的5.6.33，通用版，linux下64位
　　　　也可以直接复制64位的下载地址，通过命令下载：wget http://dev.mysql.com/get/Downloads/MySQL-5.6]]></description><category></category></item><item><title><![CDATA[freemarker常用标签]]></title><link>https://blog.youkuaiyun.com/DevilDark/article/details/70147469</link><guid>https://blog.youkuaiyun.com/DevilDark/article/details/70147469</guid><author>DevilDark</author><pubDate>Wed, 12 Apr 2017 21:00:55 +0800</pubDate><description><![CDATA[一、FreeMarker模板文件主要有4个部分组成
1、文本，直接输出的部分
2、注释，即<#–…–>格式不会输出
3、插值（Interpolation）：即${..}或者#{..}格式的部分,将使用数据模型中的部分替代输出
4、FTL指令：FreeMarker指令，和HTML标记类似，名字前加#予以区分，不会输出。  1、文本，直接输出的部分FTL指令规则
FreeMarker有三种FTL标签，这]]></description><category></category></item><item><title><![CDATA[solr schema.xml 加入中文分析器 IKAnalyzer 就找不到solrcore]]></title><link>https://blog.youkuaiyun.com/DevilDark/article/details/68946051</link><guid>https://blog.youkuaiyun.com/DevilDark/article/details/68946051</guid><author>DevilDark</author><pubDate>Sat, 01 Apr 2017 16:49:33 +0800</pubDate><description><![CDATA[solr-4.10.3 兼容 IKAnalyzer2012_u6.jar会出现问题，换用IKAnalyzer2012FF_u1.jar即可解决问题]]></description><category></category></item><item><title><![CDATA[spring @Autowired与@Resource 的区别]]></title><link>https://blog.youkuaiyun.com/DevilDark/article/details/57416492</link><guid>https://blog.youkuaiyun.com/DevilDark/article/details/57416492</guid><author>DevilDark</author><pubDate>Sun, 26 Feb 2017 16:05:31 +0800</pubDate><description><![CDATA[1、@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上。 2、@Autowired默认按类型装配（这个注解是属业spring的），默认情况下必须要求依赖对象必须存在，如果要允许null 值，可以设置它的required属性为false，如：@Autowired(required=false) ，如果我们想使用名称装配可以结合@Qualifie]]></description><category></category></item><item><title><![CDATA[failed to read candidate component class]]></title><link>https://blog.youkuaiyun.com/DevilDark/article/details/57132837</link><guid>https://blog.youkuaiyun.com/DevilDark/article/details/57132837</guid><author>DevilDark</author><pubDate>Sat, 25 Feb 2017 22:33:39 +0800</pubDate><description><![CDATA[大多数原因都是因为spring3.x不被jdk1.8支持，所以解决办法就是改变工程的jdk版本在eclipse选择到要改变jdk版本web工程，右键–>properties–>Project Facets–>java 改为1.7]]></description><category></category></item><item><title><![CDATA[springmvc解决乱码问题（get和post）]]></title><link>https://blog.youkuaiyun.com/DevilDark/article/details/54891622</link><guid>https://blog.youkuaiyun.com/DevilDark/article/details/54891622</guid><author>DevilDark</author><pubDate>Mon, 06 Feb 2017 12:31:39 +0800</pubDate><description><![CDATA[1.post提交出现的中文乱码问题
解决办法：在web.xml中添加过滤器
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param]]></description><category></category></item></channel></rss>