<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[墨者的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/congge_1993</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; congge_1993]]></copyright><item><title><![CDATA[MapStruct属性复制框架学习笔记]]></title><link>https://blog.youkuaiyun.com/congge_1993/article/details/99691783</link><guid>https://blog.youkuaiyun.com/congge_1993/article/details/99691783</guid><author>congge_1993</author><pubDate>Sat, 17 Aug 2019 13:27:24 +0800</pubDate><description><![CDATA[Java中DO,VO,DTO结构一样，但在意义上或者说功能上不一样，DO定义实体，VO定义视图层数据返回，DTO用于查询实体参数，通常进行转化可以自写setter/getter方法或者使用BeanUtils的属性复制方法（运行期利用反射），具体原理可以查看源码或者百度。MapStruct是同学推荐的一个开源工具，是在编译期生成对应的实体类来完成属性复制，使用方便，这里做个简单的笔记...]]></description><category></category></item><item><title><![CDATA[log4j2在SpringMVC中的使用]]></title><link>https://blog.youkuaiyun.com/congge_1993/article/details/88188196</link><guid>https://blog.youkuaiyun.com/congge_1993/article/details/88188196</guid><author>congge_1993</author><pubDate>Tue, 05 Mar 2019 16:44:05 +0800</pubDate><description><![CDATA[在看开源druid数据库连接池时，了解到druid不依赖log组件但会根据当前环境选择一种合适的log实现，默认顺序为log4j-&amp;gt;log4j2-&amp;gt;slf4j-&amp;gt;common-log-&amp;gt;jdkLogging，druid介绍了log4j2在springboot中的使用，发现确实很方便，在springmvc中简化了监听器的配置，接入也很方便，步骤如下：

 1、...]]></description><category></category></item><item><title><![CDATA[InnoDB，5项最佳实践]]></title><link>https://blog.youkuaiyun.com/congge_1993/article/details/82985288</link><guid>https://blog.youkuaiyun.com/congge_1993/article/details/82985288</guid><author>congge_1993</author><pubDate>Tue, 09 Oct 2018 17:12:37 +0800</pubDate><description><![CDATA[一、关于count(*)知识点：MyISAM会直接存储总行数，InnoDB则不会，需要按行扫描。

 

潜台词是，对于select count(*) from t; 如果数据量大，MyISAM会瞬间返回，而InnoDB则会一行行扫描。

 

实践：数据量大的表，InnoDB不要轻易select count(*)，性能消耗极大。常见坑：只有查询全表的总行数，MyISAM才会直接返回结果，当加了w...]]></description><category></category></item><item><title><![CDATA[SpringBoot整合Swagger问题整理]]></title><link>https://blog.youkuaiyun.com/congge_1993/article/details/82629266</link><guid>https://blog.youkuaiyun.com/congge_1993/article/details/82629266</guid><author>congge_1993</author><pubDate>Tue, 11 Sep 2018 17:45:56 +0800</pubDate><description><![CDATA[1、swagger版本与springboot版本

本项目使用的是Swagger版本是2.7.0，该版本对应的spring版本是4.3.10，所使用的SpringBoot版本在1.5.6.RELEASE版本左右都是可以的。一般版本差距太大才会导致冲突。

2、按步骤导入jar包，添加配置类后，启动时未报错，但访问http://localhost:8080/swagger-ui.html时页面显示空...]]></description><category></category></item><item><title><![CDATA[分布式缓存（一）——认识缓存]]></title><link>https://blog.youkuaiyun.com/congge_1993/article/details/80585929</link><guid>https://blog.youkuaiyun.com/congge_1993/article/details/80585929</guid><author>congge_1993</author><pubDate>Tue, 05 Jun 2018 20:43:23 +0800</pubDate><description><![CDATA[    1、缓存：是存储在计算机上的一个原始数据复制集，以便于访问。缓存在不同的场景有着不同的意义，采用的技术手段也不一样。不涉及操作系统和硬件的缓存，根据在软件系统中所处位置的不同，缓存可分为：客户端缓存服务端缓存网络中的缓存    根据规模和部署方式缓存也可分为：单体缓存缓存集群分布式缓存    2、为什么使用缓存？    最主要的因素是用户体验。用户体验是主观的且注重实际应用，被使用者的状态...]]></description><category></category></item><item><title><![CDATA[二进制字节数组与十六进制字符串间的转换]]></title><link>https://blog.youkuaiyun.com/congge_1993/article/details/80444327</link><guid>https://blog.youkuaiyun.com/congge_1993/article/details/80444327</guid><author>congge_1993</author><pubDate>Thu, 24 May 2018 22:08:31 +0800</pubDate><description><![CDATA[       在加密算法中，经常会遇到将加密后得到的二进制字节数组转16进制字符串后返回；在解密算法中，则需要将字符串转二进制然后解密；下面将列举常用的几种转换方法，在文末会给出几种常用加解密算法示例。        1、二进制数组转十六进制    /**
     * 将二进制转成16进制，加密时用(方式之一)
     *
     * @param bytes 加密得到的二进制字节数组
  ...]]></description><category></category></item><item><title><![CDATA[DispatcherServlet理解]]></title><link>https://blog.youkuaiyun.com/congge_1993/article/details/80410552</link><guid>https://blog.youkuaiyun.com/congge_1993/article/details/80410552</guid><author>congge_1993</author><pubDate>Tue, 22 May 2018 20:02:53 +0800</pubDate><description><![CDATA[    DispatcherServlet是前端控制器设计模式的实现，主要用来拦截请求并进行职责的分派，从前端请求发起到返回执行了一系列的调度处理，主要处理过程如下：    （1）捕获请求，通过web.xml中配置url-pattern拦截指定请求    （2）通过HandlerMapping获取适当的Handler即Controller执行并返回    （3）若配置有拦截器，则会在handler...]]></description><category></category></item><item><title><![CDATA[Spring事务配置——图解说明]]></title><link>https://blog.youkuaiyun.com/congge_1993/article/details/80316105</link><guid>https://blog.youkuaiyun.com/congge_1993/article/details/80316105</guid><author>congge_1993</author><pubDate>Mon, 14 May 2018 22:10:50 +0800</pubDate><description><![CDATA[Spring事务配置可以总结为下图：图片地址：https://www.processon.com/view/5af992d6e4b05352c2baf19a]]></description><category></category></item><item><title><![CDATA[java并发编程读书摘要]]></title><link>https://blog.youkuaiyun.com/congge_1993/article/details/80135077</link><guid>https://blog.youkuaiyun.com/congge_1993/article/details/80135077</guid><author>congge_1993</author><pubDate>Sat, 28 Apr 2018 15:31:32 +0800</pubDate><description><![CDATA[一、基础概念了解    1、上下文切换：CPU通过时间片来循环执行任务，时间片用完会切换到下一个线程，但是会保存当前状态，任务从保存到再加载的过程就是一次上下文切换。    2、减少上下文切换的方式：      无锁并发编程：避免竞争锁造成的上下文切换      CAS算法：Compare and Swap,核心方法compareAndSetInt      使用最少线程：避免创建不必要的线程  ...]]></description><category></category></item><item><title><![CDATA[线程池监控——自定义线程池]]></title><link>https://blog.youkuaiyun.com/congge_1993/article/details/80111897</link><guid>https://blog.youkuaiyun.com/congge_1993/article/details/80111897</guid><author>congge_1993</author><pubDate>Fri, 27 Apr 2018 18:50:10 +0800</pubDate><description><![CDATA[    如果在系统中大量使用线程池，则有必要对线程池进行监控，方便在出现问题时，可以根据线程池的使用状态快速定位问题。可以根据线程池提供的参数进行监控，常用属性如下：    taskCount:线程池需要执行的任务数量    completedTaskCount:已完成的任务数量    largestPoolSize:线程池曾经创建过的最大线程数量，可以推测出是否达到corePoolSize和Ma...]]></description><category></category></item><item><title><![CDATA[实战java高并发程序设计读书概要整理]]></title><link>https://blog.youkuaiyun.com/congge_1993/article/details/80004890</link><guid>https://blog.youkuaiyun.com/congge_1993/article/details/80004890</guid><author>congge_1993</author><pubDate>Thu, 19 Apr 2018 14:54:46 +0800</pubDate><description><![CDATA[一、要了解的基本概念    1、同步和异步：形容一次方法调用，同步要等待返回继续执行；异步调用不需等待返回就可以继续执行    2、并行和并发：多个任务一起执行，并行是同时执行；并发是交替执行也可能是串行执行    3、临界区：用来表示一种公共资源或共享数据，每次只能一个线程访问    4、阻塞和非阻塞：形容多线程之间的相互影响，阻塞是因为某个线程抢占了资源而导致其他线程被挂起，非阻塞则表示线程之...]]></description><category></category></item><item><title><![CDATA[无锁算法-CAS]]></title><link>https://blog.youkuaiyun.com/congge_1993/article/details/80004539</link><guid>https://blog.youkuaiyun.com/congge_1993/article/details/80004539</guid><author>congge_1993</author><pubDate>Thu, 19 Apr 2018 14:43:33 +0800</pubDate><description><![CDATA[    要实现无锁（lock-free）的非阻塞算法有多种实现方法，其中CAS(Compare and Swap)是一种有名的无锁算法。        CAS（Compare and Swap），即比较并替换，实现并发算法时常用到的一种技术，是用乐观锁技术实现的一种无锁（lock-free）算法。当多个线程尝试使用CAS同时更新同一个变量时，只有其中一个线程能更新变量的值，而其它线程都失败，失败的...]]></description><category></category></item><item><title><![CDATA[List排除、去重与equals和hashCode方法重写]]></title><link>https://blog.youkuaiyun.com/congge_1993/article/details/79003803</link><guid>https://blog.youkuaiyun.com/congge_1993/article/details/79003803</guid><author>congge_1993</author><pubDate>Mon, 08 Jan 2018 16:30:03 +0800</pubDate><description><![CDATA[目前，对于List集合去子集和去重经测试对应两种不同的实现，去子集是直接采用集合类提供的RemoveAll（）方法；去重是采用HashSet作为中介处理。首先看一下两种方式的实现：
1、RemoveAll（Collection c）使用
list.removeAll(list1);通过查看该方法源码可以知道，会先遍历list1然后判断list中是否包含该对象，继续查看contains方法，会发]]></description><category></category></item><item><title><![CDATA[《Learning Redis》学习笔记二：服务器功能]]></title><link>https://blog.youkuaiyun.com/congge_1993/article/details/78813144</link><guid>https://blog.youkuaiyun.com/congge_1993/article/details/78813144</guid><author>congge_1993</author><pubDate>Fri, 15 Dec 2017 15:45:33 +0800</pubDate><description><![CDATA[Redis除了提供key-value存储还提供了以结构化方式存储数据的语义，能够以同样的语义在程序中例如map/list等中存储信息。以下主要探讨redis的提供的一些功能，这些功能使得redis相对于数据存储更像是框架构建：
1、Real time message（实时消息）
Redis虽然不存储信息，但是支持消息的实时发送和接收，多个消息是以消息队列按顺序发送的。redis提供了publi]]></description><category></category></item><item><title><![CDATA[《Learning Redis》学习笔记一：基础介绍]]></title><link>https://blog.youkuaiyun.com/congge_1993/article/details/78810181</link><guid>https://blog.youkuaiyun.com/congge_1993/article/details/78810181</guid><author>congge_1993</author><pubDate>Fri, 15 Dec 2017 11:56:24 +0800</pubDate><description><![CDATA[Redis是面向key-value存储速度最快的NoSql数据库之一，既可基于内存也可持久化。作为key-value数据存储，在一些非功能性需求中主要有以下特点：
1、数据集插入快，无异常
2、随机读：所有keys放内存因此读取速度非常快，Redis使用虚拟内存将keys存内存，将最小最近使用的values放磁盘来避免内存消耗
3、容错性和负载均衡：采用主从拓扑结构，master-slave]]></description><category></category></item><item><title><![CDATA[SpringBoot+MockMvc测试Controller笔记整理]]></title><link>https://blog.youkuaiyun.com/congge_1993/article/details/78541182</link><guid>https://blog.youkuaiyun.com/congge_1993/article/details/78541182</guid><author>congge_1993</author><pubDate>Wed, 15 Nov 2017 15:42:18 +0800</pubDate><description><![CDATA[基础框架：Springboot(版本信息：1.5.6.RELEASE)
环境信息：JDK1.8
测试jar包：spring-boot-starter-test
之前在其它项目见过使用Mock进行单元测试，SpringMvc环境下可以直接模拟请求进来Controller的测试，相比常用的Sping Junit和Spring TestNG等也有一定的可借鉴之处，
本篇结合相关资料进行Mock测]]></description><category></category></item><item><title><![CDATA[SSM框架整合Junit测试]]></title><link>https://blog.youkuaiyun.com/congge_1993/article/details/77866420</link><guid>https://blog.youkuaiyun.com/congge_1993/article/details/77866420</guid><author>congge_1993</author><pubDate>Wed, 06 Sep 2017 15:24:05 +0800</pubDate><description><![CDATA[基础框架为spring+springMVC+mybaties，spring版本4+，junit版本4+，接下来介绍junit接入步骤：
1、核心jar包引入：实际操作过程中出现很多类找不到异常报错，是因为有依赖的jar包未引入或是版本太低
       
            junit
            junit
            4.12
        

       ]]></description><category></category></item><item><title><![CDATA[SSM框架引入logback日志框架]]></title><link>https://blog.youkuaiyun.com/congge_1993/article/details/77775245</link><guid>https://blog.youkuaiyun.com/congge_1993/article/details/77775245</guid><author>congge_1993</author><pubDate>Fri, 01 Sep 2017 17:31:32 +0800</pubDate><description><![CDATA[1、本章主要结合实例描述如何在SpringMVC框架中引入logback日志框架，关于常见的几种日志框架的介绍和性能对比大家可以自行去了解。
2、整合logback：
2.1、jar包引入，logback-ext-spring为spring支持jar

            ch.qos.logback
            logback-classic
            1.1]]></description><category></category></item><item><title><![CDATA[Oracle索引总结（转载）]]></title><link>https://blog.youkuaiyun.com/congge_1993/article/details/77531884</link><guid>https://blog.youkuaiyun.com/congge_1993/article/details/77531884</guid><author>congge_1993</author><pubDate>Thu, 24 Aug 2017 16:32:31 +0800</pubDate><description><![CDATA[原文地址：Oracle索引总结

oracle索引总结





简介

1.说明

　　1）索引是数据库对象之一，用于加快数据的检索，类似于书籍的索引。在数据库中索引可以减少数据库程序查询结果时需要读取的数据量，类似于在书籍中我们利用索引可以不用翻阅整本书即可找到想要的信息。

　　2）索引是建立在表上的可选对象；索引的关键在于通过一组排序后的索引键来取代默认的全表扫]]></description><category></category></item><item><title><![CDATA[maven-mybaties-generator学习笔记整理]]></title><link>https://blog.youkuaiyun.com/congge_1993/article/details/77529413</link><guid>https://blog.youkuaiyun.com/congge_1993/article/details/77529413</guid><author>congge_1993</author><pubDate>Thu, 24 Aug 2017 14:55:52 +0800</pubDate><description><![CDATA[MGB可以反向生成对应数据表的实体bean、mapper接口类以及对应的sqlmap.xml，关于该插件的详细介绍可以参考官方介绍。
接下来整理一下使用maven管理的SSM框架中如何使用mybaties-generator插件：
1、pom中引入插件

	
                org.mybatis.generator
                mybatis-gene]]></description><category></category></item></channel></rss>