<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[yugz1981的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/eailen1981</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; eailen1981]]></copyright><item><title><![CDATA[MyBatis动态创建SqlSessionFactory]]></title><link>https://blog.youkuaiyun.com/eailen1981/article/details/132717758</link><guid>https://blog.youkuaiyun.com/eailen1981/article/details/132717758</guid><author>eailen1981</author><pubDate>Wed, 06 Sep 2023 16:11:44 +0800</pubDate><description><![CDATA[【代码】MyBatis动态创建SqlSessionFactory。]]></description><category></category></item><item><title><![CDATA[can‘t have 2 modules with the following key]]></title><link>https://blog.youkuaiyun.com/eailen1981/article/details/129242858</link><guid>https://blog.youkuaiyun.com/eailen1981/article/details/129242858</guid><author>eailen1981</author><pubDate>Mon, 27 Feb 2023 15:25:53 +0800</pubDate><description><![CDATA[can't have 2 modules with the following key]]></description><category></category></item><item><title><![CDATA[JVM性能调优]]></title><link>https://blog.youkuaiyun.com/eailen1981/article/details/120624102</link><guid>https://blog.youkuaiyun.com/eailen1981/article/details/120624102</guid><author>eailen1981</author><pubDate>Wed, 06 Oct 2021 13:57:14 +0800</pubDate><description><![CDATA[一、JVM内存模型及垃圾收集算法
1.根据Java虚拟机规范，JVM将内存划分为：
New（年轻代）
Tenured（年老代）
永久代（Perm）
其中New和Tenured属于堆内存，堆内存会从JVM启动参数（-Xmx:3G）指定的内存中分配，Perm不属于堆内存，有虚拟机直接分配，但可以通过-XX:PermSize -XX:MaxPermSize 等参数调整其大小。
年轻代（New）：年轻代用来存放JVM刚分配的Java对象
年老代（Tenured)：年轻代中经过垃圾回收没有回收掉的对象将被Copy到.]]></description><category></category></item><item><title><![CDATA[前端必知必会之 JS 单线程与异步]]></title><link>https://blog.youkuaiyun.com/eailen1981/article/details/116757941</link><guid>https://blog.youkuaiyun.com/eailen1981/article/details/116757941</guid><author>eailen1981</author><pubDate>Thu, 13 May 2021 17:18:00 +0800</pubDate><description><![CDATA[已知，JavaScript 是单线程的，天生异步，适合 IO 密集型，不适合 CPU 密集型，但是，为什么是异步的喃，异步由何而来的喃，我们将在这里逐渐讨论实现。
一、进程与线程

浏览器是多进程的
它主要包括以下进程：

Browser 进程：浏览器的主进程，唯一，负责创建和销毁其它进程、网络资源的下载与管理、浏览器界面的展示、前进后退等。
GPU 进程：用于 3D 绘制等，最多一个。
第三方插件进程：每种类型的插件对应一个进程，仅当使用该插件时才创建。
浏览器渲染进程（浏览器内核）：内部是多线程的，每打]]></description><category></category></item><item><title><![CDATA[Maven 的41种骨架功能介绍]]></title><link>https://blog.youkuaiyun.com/eailen1981/article/details/116450464</link><guid>https://blog.youkuaiyun.com/eailen1981/article/details/116450464</guid><author>eailen1981</author><pubDate>Thu, 06 May 2021 11:40:41 +0800</pubDate><description><![CDATA[Maven 的41种骨架：
…&gt;mvn archetype:generate
1: internal -&gt; appfuse-basic-jsf (创建一个基于Hibernate，Spring和JSF的Web应用程序的原型)
2: internal -&gt; appfuse-basic-spring (创建一个基于Hibernate，Spring和Spring MVC的Web应用程序的原型)
3: internal -&gt; appfuse-basic-struts (创建一个基于Hibern]]></description><category></category></item><item><title><![CDATA[那些年我们用过的流计算框架]]></title><link>https://blog.youkuaiyun.com/eailen1981/article/details/116449333</link><guid>https://blog.youkuaiyun.com/eailen1981/article/details/116449333</guid><author>eailen1981</author><pubDate>Thu, 06 May 2021 11:02:45 +0800</pubDate><description><![CDATA[数据时代，从数据中获取业务需要的信息才能创造价值，这类工作就需要计算框架来完成。传统的数据处理流程中，总是先收集数据，然后将数据放到DB中。当人们需要的时候通过DB对数据做query，得到答案或进行相关的处理。这样看起来虽然非常合理，但是结果却非常紧凑，尤其是在一些实时搜索应用环境中的某些具体问题，类似于MapReduce方式的离线处理并不能很好地解决。
基于此，一种新的数据计算结构—流计算方式出现了，它可以很好地对大规模流动数据在不断变化的运动过程中实时地进行分析，捕捉到可能有用的信息，并把结果发送到下一]]></description><category></category></item><item><title><![CDATA[java版 简易斗地主(五)]]></title><link>https://blog.youkuaiyun.com/eailen1981/article/details/115278729</link><guid>https://blog.youkuaiyun.com/eailen1981/article/details/115278729</guid><author>eailen1981</author><pubDate>Sun, 28 Mar 2021 12:03:24 +0800</pubDate><description><![CDATA[Rule类
最重要的一个类了.
1是判断出牌是否合法,同时 判断是什么牌型
2对比 两幅牌的大小
public class Rule {

    public static int compare(ThrowLog d1, ArrayList&lt;ThrowLog&gt; all) {
        try{
            if(all.size()==0) {
                return  1;
            }
            ThrowLog t =]]></description><category></category></item><item><title><![CDATA[java版 简易斗地主(四)]]></title><link>https://blog.youkuaiyun.com/eailen1981/article/details/115278677</link><guid>https://blog.youkuaiyun.com/eailen1981/article/details/115278677</guid><author>eailen1981</author><pubDate>Sun, 28 Mar 2021 11:59:01 +0800</pubDate><description><![CDATA[PokerGroup类
斗地主的所有牌型的定义类
public enum PokerGroup {
    Unvalid("未知", 0),

    Single("单", 1),
    Duad("对", 1),
    Three("三", 1),

    StraightFlush("顺", 1),
    StraightFlush2("对顺", 1),
    StraightFlush3("飞机", 1),
    StraightFlush3WithSingle("飞机带单", 1),]]></description><category></category></item><item><title><![CDATA[java版 简易斗地主(三)]]></title><link>https://blog.youkuaiyun.com/eailen1981/article/details/115278591</link><guid>https://blog.youkuaiyun.com/eailen1981/article/details/115278591</guid><author>eailen1981</author><pubDate>Sun, 28 Mar 2021 11:54:39 +0800</pubDate><description><![CDATA[Loop类
为每一次出牌循环,从第一个玩家开始,一直到没有人能大过,此次出牌循环结束
比较重要的一个类.有点起到了 裁判的作用.
public class Loop {

    public Loop(Integer index) {
        this.index = index;
    }

    private Integer index;

    private ArrayList&lt;ThrowLog&gt; _logs = new ArrayList&lt;&gt;();

  ]]></description><category></category></item><item><title><![CDATA[java版 简易斗地主(二)]]></title><link>https://blog.youkuaiyun.com/eailen1981/article/details/115278480</link><guid>https://blog.youkuaiyun.com/eailen1981/article/details/115278480</guid><author>eailen1981</author><pubDate>Sun, 28 Mar 2021 11:47:54 +0800</pubDate><description><![CDATA[Room类 主入口
sort为洗牌顺序,主要是为了方便测试bug,可以重现牌局
landowner 是 0,1,2 三个玩家 谁为地主.
public class Room {

    public static void main(String[] args) {
        ArrayList&lt;Player&gt; player = new ArrayList&lt;Player&gt;();
        player.add(new Player("P1"));
        pla]]></description><category></category></item><item><title><![CDATA[java版 简易斗地主(一)]]></title><link>https://blog.youkuaiyun.com/eailen1981/article/details/115175227</link><guid>https://blog.youkuaiyun.com/eailen1981/article/details/115175227</guid><author>eailen1981</author><pubDate>Wed, 24 Mar 2021 14:17:23 +0800</pubDate><description><![CDATA[前几天看了别人写的斗地主代码,突然也想自己写一个.
还没有仔细测试过,有时候会出bug异常结束. V_V
先上结果:
最开始的输出 如下:
==================
P3(地主)的牌为:
  大王　 ,   红桃2 ,   方片2 ,   方片A ,   梅花A ,   方片Q ,   黑桃J ,   黑桃10 ,   梅花9 ,   红桃8 ,   黑桃8 ,   黑桃7 ,   方片6 ,   红桃6 ,   红桃5 ,   方片5 ,   黑桃4 ,   梅花3 ,   黑桃3 ,   红]]></description><category></category></item><item><title><![CDATA[WebRTC 用屏幕分享录制一段视频]]></title><link>https://blog.youkuaiyun.com/eailen1981/article/details/114976982</link><guid>https://blog.youkuaiyun.com/eailen1981/article/details/114976982</guid><author>eailen1981</author><pubDate>Thu, 18 Mar 2021 14:10:35 +0800</pubDate><description><![CDATA[前一章节了解了屏幕分享的API，感觉跟我们常用的“屏幕共享”好像。
那么可不可以用此进行一个屏幕录制呢？
“纸上得来终觉浅，觉知此事要躬行。”看着挺简单的一个东西，没有落实都算说大话。
首先画上三个按钮：
&lt;button @click=“start” :disabled=“disabled.start”&gt;开始录制
&lt;button @click=“stop” :disabled=“disabled.stop”&gt;结束录制
&lt;button @click=“download” :dis]]></description><category></category></item><item><title><![CDATA[Docker 实战总结（非常全面），赶紧收藏！]]></title><link>https://blog.youkuaiyun.com/eailen1981/article/details/113175181</link><guid>https://blog.youkuaiyun.com/eailen1981/article/details/113175181</guid><author>eailen1981</author><pubDate>Tue, 26 Jan 2021 10:43:32 +0800</pubDate><description><![CDATA[Docker简介
Docker是一个开源的应用容器引擎，开发者可以打包自己的应用到容器里面，然后迁移到其他机器的docker应用中，可以实现快速部署。
简单的理解，docker就是一个软件集装箱化平台，就像船只、火车、卡车运输集装箱而不论其内部的货物一样，软件容器充当软件部署的标准单元，其中可以包含不同的代码和依赖项。
按照这种方式容器化软件，开发人员和 IT 专业人员只需进行极少修改或不修改，即可将其部署到不同的环境，如果出现的故障，也可以通过镜像，快速恢复服务。
image
Docker优势
1.特性优]]></description><category></category></item><item><title><![CDATA[Docker 的部署方式]]></title><link>https://blog.youkuaiyun.com/eailen1981/article/details/113172953</link><guid>https://blog.youkuaiyun.com/eailen1981/article/details/113172953</guid><author>eailen1981</author><pubDate>Tue, 26 Jan 2021 09:20:24 +0800</pubDate><description><![CDATA[Docker 的部署方式
在使用 docker run 命令启动 Docker 容器时，如果需要进行端口映射、目录挂载、网络信息等配置，整条命令将变得非常长，并且由于是一条 shell 命令，修改和复用也不方便。我们在大规模部署容器的时候不可能手动去输入众多的命令，所以需要一些工具来辅助我们实现 docker run 命令的编写，同时实现简单快捷的大规模部署。
docker-compose 部署
docker-compose 是一个读取特定格式的 yaml 文件并将其转换为 docker run 命令的工具]]></description><category></category></item><item><title><![CDATA[Linux find命令根据时间筛选出文件进行删除]]></title><link>https://blog.youkuaiyun.com/eailen1981/article/details/112934480</link><guid>https://blog.youkuaiyun.com/eailen1981/article/details/112934480</guid><author>eailen1981</author><pubDate>Thu, 21 Jan 2021 13:38:31 +0800</pubDate><description><![CDATA[需求:删除 /home/file/ 目录下10天之前生成的txt类型的文件
find /home/file/  -ctime +10 -name “*.txt” -print | xargs rm -f
或者
find /home/file/  -ctime +10 -name “*.txt” -delete
经过测试在文件比较多的情况下 第二条命令比第一条速度更快。
//时间条件
-amin n: 查找n分钟以前被访问过的所有文件。
-atime n: 查找n天以前被访问过的所有文件。
-cmin n: ]]></description><category></category></item><item><title><![CDATA[基于Qt、FFMpeg的音视频播放器设计一]]></title><link>https://blog.youkuaiyun.com/eailen1981/article/details/112506522</link><guid>https://blog.youkuaiyun.com/eailen1981/article/details/112506522</guid><author>eailen1981</author><pubDate>Tue, 12 Jan 2021 09:38:00 +0800</pubDate><description><![CDATA[前言：整个项目的源代码 https://download.youkuaiyun.com/download/hfuu1504011020/10672140
最近刚完成基于Qt、FFMpeg的音视频播放器相关C++程序，实现了一个音视频播放器的全部功能，其中以模块为主，每一个模块，分为几个小模块，总结每个小模块，再整合起来，过程比较好理解，因为本人也是刚学习阶段，对于这样方式的总结，个人感觉还是比较容易理解的，过程也比较清晰，只是内容有点多。
中间涉及的过程主要有：
1、 开发环境准备
2、FFMPEG视频处理原理以及实现]]></description><category></category></item><item><title><![CDATA[mysql各个集群方案的优劣]]></title><link>https://blog.youkuaiyun.com/eailen1981/article/details/112267262</link><guid>https://blog.youkuaiyun.com/eailen1981/article/details/112267262</guid><author>eailen1981</author><pubDate>Wed, 06 Jan 2021 13:35:13 +0800</pubDate><description><![CDATA[集群的好处
•	高可用性：故障检测及迁移，多节点备份。
•	可伸缩性：新增数据库节点便利，方便扩容。
•	负载均衡：切换某服务访问某节点，分摊单个节点的数据库压力。
集群要考虑的风险
•	网络分裂：群集还可能由于网络故障而拆分为多个部分，每部分内的节点相互连接，但各部分之间的节点失去连接。
•	脑裂：导致数据库节点彼此独立运行的集群故障称为“脑裂”。这种情况可能导致数据不一致，并且无法修复，例如当两个数据库节点独立更新同一表上的同一行时。
文章目录
一，mysql原厂出品
1，MySQL Replicati]]></description><category></category></item><item><title><![CDATA[MySQL 行锁 表锁机制]]></title><link>https://blog.youkuaiyun.com/eailen1981/article/details/112258343</link><guid>https://blog.youkuaiyun.com/eailen1981/article/details/112258343</guid><author>eailen1981</author><pubDate>Wed, 06 Jan 2021 09:49:49 +0800</pubDate><description><![CDATA[MySQL 行锁 表锁机制
MySQL 表锁和行锁机制
行锁变表锁，是福还是坑？如果你不清楚MySQL加锁的原理，你会被它整的很惨！不知坑在何方？没事，我来给你们标记几个坑。遇到了可别乱踩。通过本章内容，带你学习MySQL的行锁，表锁，两种锁的优缺点，行锁变表锁的原因，以及开发中需要注意的事项。还在等啥？经验等你来拿！
MySQL的存储引擎是从MyISAM到InnoDB，锁从表锁到行锁。后者的出现从某种程度上是弥补前者的不足。比如：MyISAM不支持事务，InnoDB支持事务。表锁虽然开销小，锁表快，但高并]]></description><category></category></item><item><title><![CDATA[Nginx支持WebSocket反向代理-学习小结]]></title><link>https://blog.youkuaiyun.com/eailen1981/article/details/112241933</link><guid>https://blog.youkuaiyun.com/eailen1981/article/details/112241933</guid><author>eailen1981</author><pubDate>Tue, 05 Jan 2021 16:22:31 +0800</pubDate><description><![CDATA[WebSocket是目前比较成熟的技术了，WebSocket协议为创建客户端和服务器端需要实时双向通讯的webapp提供了一个选择。其为HTML5的一部分，WebSocket相较于原来开发这类app的方法来说，其能使开发更加地简单。大部分现在的浏览器都支持WebSocket，比如Firefox，IE，Chrome，Safari，Opera，并且越来越多的服务器框架现在也同样支持WebSocket。
在实际的生产环境中，要求多个WebSocket服务器必须具有高性能和高可用，那么WebSocket协议就需要一]]></description><category></category></item><item><title><![CDATA[如何优化MySQL insert性能]]></title><link>https://blog.youkuaiyun.com/eailen1981/article/details/112230831</link><guid>https://blog.youkuaiyun.com/eailen1981/article/details/112230831</guid><author>eailen1981</author><pubDate>Tue, 05 Jan 2021 14:01:02 +0800</pubDate><description><![CDATA[对于一些数据量较大的系统，面临的问题除了是查询效率低下，还有一个很重要的问题就是插入时间长。我们就有一个业务系统，每天的数据导入需要4-5个钟。这种费时的操作其实是很有风险的，假设程序出了问题，想重跑操作那是一件痛苦的事情。因此，提高大数据量系统的MySQL insert效率是很有必要的。
经过对MySQL的测试，发现一些可以提高insert效率的方法，供大家参考参考。


一条SQL语句插入多条数据。
常用的插入语句如：
INSERT INTO insert_table (datetime, uid, c]]></description><category></category></item></channel></rss>