<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[more_try的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/more_try</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; more_try]]></copyright><item><title><![CDATA[Windows安装docker 遇到的容器间通信以及容器和宿主机通信相关问题]]></title><link>https://blog.youkuaiyun.com/more_try/article/details/106376109</link><guid>https://blog.youkuaiyun.com/more_try/article/details/106376109</guid><author>more_try</author><pubDate>Wed, 27 May 2020 10:48:42 +0800</pubDate><description><![CDATA[问题1
在练习docker运行spring cloud项目的时候，我打算用两个容器运行eureka和config服务，使用docker-compose运行镜像，配置文件如下

version: '3'
services:
  eureka:
    image: eureka
#    restart: always
    tty: true
    container_name: eureka
    network_mode: "host"
    environment:
      - TZ=As]]></description><category></category></item><item><title><![CDATA[springboot druid mybatis 多数据源配置和事务处理]]></title><link>https://blog.youkuaiyun.com/more_try/article/details/106302664</link><guid>https://blog.youkuaiyun.com/more_try/article/details/106302664</guid><author>more_try</author><pubDate>Sat, 23 May 2020 16:56:19 +0800</pubDate><description><![CDATA[目录参数配置数据源数据库名称等基础配置数据库1数据库2事务
参数配置
spring:
  datasource:
    # 使用阿里的Druid连接池
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    druid:
      paperpushsystem:
        url: 
        username: 
        password: ]]></description><category></category></item><item><title><![CDATA[CPU缓存与伪共享]]></title><link>https://blog.youkuaiyun.com/more_try/article/details/105472671</link><guid>https://blog.youkuaiyun.com/more_try/article/details/105472671</guid><author>more_try</author><pubDate>Sun, 12 Apr 2020 17:30:42 +0800</pubDate><description><![CDATA[计算机使用缓存机制加快io速度。

缓存一般是由缓存行(cache line)，一般一行有64字节，读取数据时一次将之后的64字节加载带缓存行，下次可以先从缓存行中获取数据，命中的话
可以提高读取速度，未命中时从上一级缓存获取，直到从内存中获取。
但是也会存在缓存竞争，如果CPU1与CPU2的L1缓存相同，那么他们需要竞争该缓存的使用权，如果CPU1修改了L1缓存，那么会使得CPU2的L1缓存失效...]]></description><category></category></item><item><title><![CDATA[字符串截取]]></title><link>https://blog.youkuaiyun.com/more_try/article/details/105222351</link><guid>https://blog.youkuaiyun.com/more_try/article/details/105222351</guid><author>more_try</author><pubDate>Tue, 31 Mar 2020 14:38:50 +0800</pubDate><description><![CDATA[提供字符串截取的一些工具方法，防止中文、表情符等编码出现乱码情况。
按字符长度截取
    /**
     * @param beginIndex 起始位置
     * @param characterNum 字符个数
     * @param str        原始文本
     * @Author WangJie
     * @Description 截取n个字符，可以处理表情符号...]]></description><category></category></item><item><title><![CDATA[java使用mangodb进行多条件组合查询]]></title><link>https://blog.youkuaiyun.com/more_try/article/details/105064973</link><guid>https://blog.youkuaiyun.com/more_try/article/details/105064973</guid><author>more_try</author><pubDate>Tue, 24 Mar 2020 10:02:47 +0800</pubDate><description><![CDATA[and or组合查询

构造BasicDBObject

        BasicDBList andList = new BasicDBList();
        BasicDBObject groupCond = new BasicDBObject();
        groupCond.put("conversationID","GROUP" + groupId);
        ...]]></description><category></category></item><item><title><![CDATA[获取接口或父类的类型和类型变量的类型]]></title><link>https://blog.youkuaiyun.com/more_try/article/details/103347386</link><guid>https://blog.youkuaiyun.com/more_try/article/details/103347386</guid><author>more_try</author><pubDate>Mon, 02 Dec 2019 13:52:47 +0800</pubDate><description><![CDATA[原理

通过类对象的genericSuperclass与getGenericInterfaces获取父类或接口类型。
强转为泛型参数类ParameterizedType
通过ParameterizedType的getActualTypeArguments方法获取所有的泛型参数类型

代码
构造需要的类
public class SampleTest {
    interface A&lt;T&g...]]></description><category></category></item><item><title><![CDATA[Java调用ffmpeg实现视频转gif、webp动图]]></title><link>https://blog.youkuaiyun.com/more_try/article/details/102960225</link><guid>https://blog.youkuaiyun.com/more_try/article/details/102960225</guid><author>more_try</author><pubDate>Thu, 07 Nov 2019 18:07:39 +0800</pubDate><description><![CDATA[java调用ffmpeg 实现视频转动图]]></description><category></category></item><item><title><![CDATA[使用fastjson以numberLong为例对MongoDB查询结果反序列化]]></title><link>https://blog.youkuaiyun.com/more_try/article/details/97414820</link><guid>https://blog.youkuaiyun.com/more_try/article/details/97414820</guid><author>more_try</author><pubDate>Fri, 26 Jul 2019 20:22:00 +0800</pubDate><description><![CDATA[mangodb中记录的数据为
{ 
    "_id" : ObjectId("5d3ac7a9c7cf3e3da8343961"), 
    "createTime" : NumberLong(1564133289504), 
    "isPopup" : true, 
    "level" : NumberInt(55), 
    "type" : NumberInt(1), 
   ...]]></description><category></category></item><item><title><![CDATA[Java 8新特性：时间工具类]]></title><link>https://blog.youkuaiyun.com/more_try/article/details/90695797</link><guid>https://blog.youkuaiyun.com/more_try/article/details/90695797</guid><author>more_try</author><pubDate>Thu, 30 May 2019 13:50:09 +0800</pubDate><description><![CDATA[文章目录获取时区字符串转时间时间格式化输出与Date的转换与时间戳的转换时间调整到特定某天时间间隔
获取时区
//获取时区
    @Test
    public void getZone(){
        //默认时区
        ZoneId zoneId = ZoneId.systemDefault();
        System.out.println(zoneId.toSt...]]></description><category></category></item><item><title><![CDATA[ThreadLocal源码分析]]></title><link>https://blog.youkuaiyun.com/more_try/article/details/89314500</link><guid>https://blog.youkuaiyun.com/more_try/article/details/89314500</guid><author>more_try</author><pubDate>Mon, 15 Apr 2019 16:24:00 +0800</pubDate><description><![CDATA[原理
每个Thread实例会有自己的ThreadLocalMap实例，ThreadLocal的set(value)方法会获取当前线程，把value存储到线程自己的ThreadLocalMap中，也就实现了线程之间的隔离：每次涉及到ThreadLocal的操作，实际上都是线程在操作自己的副本，线程之间不会共享ThreadLocal实例中的value值。所以ThreadLocal适用于在多线程环境，变...]]></description><category></category></item><item><title><![CDATA[利用注解+RequestBodyAdvice实现http请求内容加解密]]></title><link>https://blog.youkuaiyun.com/more_try/article/details/88682588</link><guid>https://blog.youkuaiyun.com/more_try/article/details/88682588</guid><author>more_try</author><pubDate>Wed, 20 Mar 2019 11:09:22 +0800</pubDate><description><![CDATA[注解主要用来指定那些需要加解密的controller方法，实现比较简单

@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface SecretAnnotation {
    boolean encode() default false;
    boolean decode() def...]]></description><category></category></item><item><title><![CDATA[ReentrantReadWriteLock源码解析]]></title><link>https://blog.youkuaiyun.com/more_try/article/details/88095343</link><guid>https://blog.youkuaiyun.com/more_try/article/details/88095343</guid><author>more_try</author><pubDate>Fri, 08 Mar 2019 19:05:38 +0800</pubDate><description><![CDATA[原理

共享锁（读锁）与独占锁（写锁）锁互斥
读锁获取资源时，其他线程可以读锁获取资源，可重入。
写锁获取资源时，只有获取写锁的线程可以再次加锁即锁重入。
获取写锁的线程还可以获取读锁，写锁释放即锁降级。

源码
ReentrantReadWriteLock源码
ReentrantReadWriteLock中有ReadLock和WriteLock，使用时新建ReentrantReadWriteLo...]]></description><category></category></item><item><title><![CDATA[数组实现队列，阻塞队列]]></title><link>https://blog.youkuaiyun.com/more_try/article/details/88095392</link><guid>https://blog.youkuaiyun.com/more_try/article/details/88095392</guid><author>more_try</author><pubDate>Sun, 03 Mar 2019 22:29:43 +0800</pubDate><description><![CDATA[今天做了一个笔试题，使用数组实现一个队列。现在记录一下当时的实现，之后再对这个实现进行改造升级。

/**
 * @program: read-write
 * @description: 数组实现队列
 * @author: WangJie
 * @create: 2019-03-03 21:45
 **/
public class MyQueue&amp;amp;amp;amp;amp;amp;lt;T&amp;amp;amp;amp;amp;amp;gt; {
    private ...]]></description><category></category></item><item><title><![CDATA[this引用逸出]]></title><link>https://blog.youkuaiyun.com/more_try/article/details/86742767</link><guid>https://blog.youkuaiyun.com/more_try/article/details/86742767</guid><author>more_try</author><pubDate>Fri, 01 Feb 2019 16:51:02 +0800</pubDate><description><![CDATA[逸出：某个不应被发布的对象被发布
发布：使对象在作用域之外的代码中被使用。例如get()获得对象或者将new出的对象放到外部集合中。
《Java并发编程实战》3-2节中提到this隐式逸出，并给出了示例代码：
public class ThisEscape {
    public ThisEscape(EventSource source) {
        source.registerLi...]]></description><category></category></item><item><title><![CDATA[理解volatile的保证可见性与不保证原子性]]></title><link>https://blog.youkuaiyun.com/more_try/article/details/86694639</link><guid>https://blog.youkuaiyun.com/more_try/article/details/86694639</guid><author>more_try</author><pubDate>Tue, 29 Jan 2019 20:04:42 +0800</pubDate><description><![CDATA[可见性
编译器重排序
指令执行机制
CPU只对寄存器中的数据进行计算，为了加快寄存器和内存的数据交换，会有一个缓存区，寄存器与缓存区交换速度更快。数据从缓存区写回内存中这个动作由系统决定。所以会存在某一数据被修改，却没有被立即同步到内存中，导致其他线程拿到的值是过期值。而加了volatile则相当于告诉计算机将这个值立即写回内存，对其他线程可见。
不保证原子性
volatile字段可以保证线程拿到...]]></description><category></category></item><item><title><![CDATA[延迟初始化的两种方式 《Effective Java》摘抄]]></title><link>https://blog.youkuaiyun.com/more_try/article/details/85052530</link><guid>https://blog.youkuaiyun.com/more_try/article/details/85052530</guid><author>more_try</author><pubDate>Mon, 17 Dec 2018 17:19:13 +0800</pubDate><description><![CDATA[
对静态域使用延迟初始化

    public class FieldType{
        private static class FieldHolder{
            static final FieldType field = computeFieldValue();
        }
        static FieldType getField(){
     ...]]></description><category></category></item><item><title><![CDATA[倒计数锁存器 Countdown Latch 《Effective Java》摘抄]]></title><link>https://blog.youkuaiyun.com/more_try/article/details/85050453</link><guid>https://blog.youkuaiyun.com/more_try/article/details/85050453</guid><author>more_try</author><pubDate>Mon, 17 Dec 2018 15:41:59 +0800</pubDate><description><![CDATA[
倒计数锁存器是一次性的障碍，允许一个或多个线程等待一个或多个其他线程来做某些事情。CountDownLatch的唯一构造器带有一个 int类型的参数，这个参数是指允许所有在等待的线程被处理之前，必须在锁存器上调用countDown方法的次数。

//多个任务执行时间计时
    public static long time(Executor executor,int concurrency,f...]]></description><category></category></item><item><title><![CDATA[《Java 并发编程实战》信号量 Semaphore 摘抄]]></title><link>https://blog.youkuaiyun.com/more_try/article/details/85015871</link><guid>https://blog.youkuaiyun.com/more_try/article/details/85015871</guid><author>more_try</author><pubDate>Sat, 15 Dec 2018 17:07:41 +0800</pubDate><description><![CDATA[
计数信号量用来控制同时访问某个特定资源的操作数量，或者同时执行某个指定操作的数量。计数信号量还可以用来实现某种资源池，或者对容器施加边界。

/**
 * @description: 可设置边界容量的阻塞容器
 * @create: 2018-12-15 16:51
 **/
public class BoundeHashSet&amp;amp;lt;T&amp;amp;gt; {
    private final Set&amp;amp;...]]></description><category></category></item><item><title><![CDATA[使用docker+WordPress快速搭建个人博客]]></title><link>https://blog.youkuaiyun.com/more_try/article/details/84323211</link><guid>https://blog.youkuaiyun.com/more_try/article/details/84323211</guid><author>more_try</author><pubDate>Wed, 21 Nov 2018 15:18:04 +0800</pubDate><description><![CDATA[编写docker-compose.yml文件
version: '3.0'
services:
  wordpress:
    restart: always
    tty: true
    container_name: wordpress
    image: docker.io/wordpress
    #绑定到宿主机80端口
    ports:
    - &quot;80:80&quot;
   ...]]></description><category></category></item><item><title><![CDATA[事务学习笔记]]></title><link>https://blog.youkuaiyun.com/more_try/article/details/84260399</link><guid>https://blog.youkuaiyun.com/more_try/article/details/84260399</guid><author>more_try</author><pubDate>Mon, 19 Nov 2018 21:19:44 +0800</pubDate><description><![CDATA[spring事务传播机制

PROPAGATION_REQUIRED
默认方式，A方法调用B方法，B设置为PROPAGATION_REQUIRED,如果A有事务，则B使用A的事务，若A无事务，则B新建事务。
PROPAGATION_SUPPORTS
A方法调用B方法，B设置为PROPAGATION_SUPPORTS,如果A有事务，则B使用A的事务，若A无事务，则B也无事务。
PROPAGATION...]]></description><category></category></item></channel></rss>