<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[qin的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qin34</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qin34]]></copyright><item><title><![CDATA[es示例。。。]]></title><link>https://blog.youkuaiyun.com/qin34/article/details/127887206</link><guid>https://blog.youkuaiyun.com/qin34/article/details/127887206</guid><author>qin34</author><pubDate>Wed, 16 Nov 2022 16:09:54 +0800</pubDate><description><![CDATA[es示例]]></description><category></category></item><item><title><![CDATA[多路查找树:B-tree/b+tree]]></title><link>https://blog.youkuaiyun.com/qin34/article/details/108885634</link><guid>https://blog.youkuaiyun.com/qin34/article/details/108885634</guid><author>qin34</author><pubDate>Wed, 30 Sep 2020 15:13:24 +0800</pubDate><description><![CDATA[多路查找树：结点可以存储多个元素；一个结点的孩子数可以多余2个
4种特殊形式：


2-3树:每一个结点都具有2个孩子（称为 2结点）或者3个孩子（称为 3结点）（不能出现一个结点只有1个或超过3个孩子的）
1、一个 2结点 包含一个数据元素B，左子树小于B,右子树大于B
2、一个 3结点 包含一小B一大D 2个数据元素和3个孩子，左子树小于较小数据元素D的元素
右子树大于较大元素B的数据元素，中间子树包含介于两数据元素B\D之间的元素
3、所有的叶子都在同一层次上


2-3-4树：对2-3树的扩展
1、]]></description><category></category></item><item><title><![CDATA[算法-分块索引和倒排索引]]></title><link>https://blog.youkuaiyun.com/qin34/article/details/108852806</link><guid>https://blog.youkuaiyun.com/qin34/article/details/108852806</guid><author>qin34</author><pubDate>Mon, 28 Sep 2020 16:45:29 +0800</pubDate><description><![CDATA[分块索引：块与块是有序的 ，块内无序的；最大值也要小于最小值
倒排索引：对文章分词，分词结果都索引到这篇文章

]]></description><category></category></item><item><title><![CDATA[算法-二叉排序树]]></title><link>https://blog.youkuaiyun.com/qin34/article/details/108852624</link><guid>https://blog.youkuaiyun.com/qin34/article/details/108852624</guid><author>qin34</author><pubDate>Mon, 28 Sep 2020 16:39:33 +0800</pubDate><description><![CDATA[二叉排序树：第一个元素为根root，大于root的作为右结点，小于的作为左结点；依次类似安排
public class BST {
    public static void main(String[] args) {
        List&lt;BitNode&gt; nodeList= Stream.of(62,88,58,47,35,73,51,99,37,93).map(BitNode::new).collect(Collectors.toList());
        BitNode ro]]></description><category></category></item><item><title><![CDATA[算法-有序表查找]]></title><link>https://blog.youkuaiyun.com/qin34/article/details/108789658</link><guid>https://blog.youkuaiyun.com/qin34/article/details/108789658</guid><author>qin34</author><pubDate>Fri, 25 Sep 2020 09:33:27 +0800</pubDate><description><![CDATA[public class SortSearch {
    int [] example={1,11,23,34,36,38,44,46,49,50,56,57,67,69,71,72,75,78,83,86,89,91,93,97,99,100};

    public static void main(String[] args) {
        new SortSearch().fibonacci(100);
    }
    //斐波那契查找
    public void fibonacc]]></description><category></category></item><item><title><![CDATA[数据结构-图-关键路径]]></title><link>https://blog.youkuaiyun.com/qin34/article/details/108757000</link><guid>https://blog.youkuaiyun.com/qin34/article/details/108757000</guid><author>qin34</author><pubDate>Wed, 23 Sep 2020 17:07:12 +0800</pubDate><description><![CDATA[用边表示活动的网，变得权值表示活动持续时间，活动之间制约关系没有矛盾的基础上
用顶点表示事件；用有向边表示活动，权值表示活动的持续时间

求出到达各个状态（顶点）的最早时间（按最大计）要从源点开始向汇点顺推：
求出到达各个状态（顶点）的最晚时间（按最小计）过程是要从汇点开始向源点逆推

边的最早时间  = 这条边的尾顶点的最早时间
边的最晚时间  = 这条边的头顶点的最晚时间-边的权值

边的最早时间==边的最晚时间  则是关键路径


...]]></description><category></category></item><item><title><![CDATA[数据结构-图-求最短路径-迪杰斯特拉/弗洛伊德]]></title><link>https://blog.youkuaiyun.com/qin34/article/details/108667614</link><guid>https://blog.youkuaiyun.com/qin34/article/details/108667614</guid><author>qin34</author><pubDate>Fri, 18 Sep 2020 16:16:28 +0800</pubDate><description><![CDATA[public class ShortTree {
    private static final int infinity=65535;
    private String [] topPoint={"0","1","2","3","4","5","6","7","8"};
    private int length=9;
    private int[][] sides={
            {0, 1,  5, infinity, infinity, infinity, infinity,]]></description><category></category></item><item><title><![CDATA[最小生成树-普里姆算法\克鲁斯卡尔算法]]></title><link>https://blog.youkuaiyun.com/qin34/article/details/108582998</link><guid>https://blog.youkuaiyun.com/qin34/article/details/108582998</guid><author>qin34</author><pubDate>Mon, 14 Sep 2020 17:02:09 +0800</pubDate><description><![CDATA[/**
 * 最小生成树：找寻图中连接所有顶点的最短距离的路径
 * 普里姆算法(prim)和克鲁斯卡尔算法(kruskal)
 *       v0    v1    v2    v3    v4    v5    v6    v7   v8
 * v0    0     10    #     #     #     11    #     #    #
 * v1    10    0     18    #     #     #     16    #    12
 * v2    #     #]]></description><category></category></item><item><title><![CDATA[数据结构：图]]></title><link>https://blog.youkuaiyun.com/qin34/article/details/108536633</link><guid>https://blog.youkuaiyun.com/qin34/article/details/108536633</guid><author>qin34</author><pubDate>Fri, 11 Sep 2020 16:09:27 +0800</pubDate><description><![CDATA[/**
 * 图：G(V,E) V顶点，E边  有向边&lt;a,d&gt; 无向边(a,d)
 * 无向完全图：任意2个顶点之间都存在边。共（n*(n-1) / 2）条边
 * 有向完全图：任意2个顶点之间都存在方向互为相反的2条弧。 共 n*(n-1）条边
 * 权：图中边带数字的
 * 度：相邻边的数目。边数=每个顶点度的和*2 。
 *      无向图的度：TD(V)
 *      有向图的度：入度ID(V)=出度OD(V)  TD(V)=ID(V)+OD(V)
 * 连通分量：是一个图的子图；]]></description><category></category></item><item><title><![CDATA[赫夫曼编码]]></title><link>https://blog.youkuaiyun.com/qin34/article/details/108492997</link><guid>https://blog.youkuaiyun.com/qin34/article/details/108492997</guid><author>qin34</author><pubDate>Wed, 09 Sep 2020 16:50:01 +0800</pubDate><description><![CDATA[摘自《大话数据结构》
/**
 * 赫夫曼树，压缩和解压缩在此基础上研究出来
 * 带权路径长度（WPL）最小的二叉树称为赫夫曼树
 * 算法：1、给定的n个权值{w1....}构成n颗二叉树的集合F={T1....Tn},（从小到大排序）
 *      其中每颗二叉树Ti中只有一个带权为w1根节点，其左右子树为空
 *      2、在F中选择选2颗根结点的权值最小的树作为左右子树构造一颗新的二叉树K，
 *      且置新的二叉树的根结点的权值为其左右子树上权值之和
 *      3、在F中删除这]]></description><category></category></item><item><title><![CDATA[数据结构-树（1）]]></title><link>https://blog.youkuaiyun.com/qin34/article/details/108492881</link><guid>https://blog.youkuaiyun.com/qin34/article/details/108492881</guid><author>qin34</author><pubDate>Wed, 09 Sep 2020 16:48:01 +0800</pubDate><description><![CDATA[/**
 * 计算机的存储结构有顺序存储和链式存储
 * 结点的度：结点拥有的子树数
 * 叶结点/终端结点：度为0的结点
 * 分支结点/非终端结点：度不为0
 * 内部结点：除根结点外的分支结点
 *
 * 树的表示：双亲表示法、孩子表示法、孩子兄弟表示法
 * 二叉树：每个结点最多2颗子树；左右有顺序；即使只有一颗子树，也要区分左右
 * 特殊二叉树：
 *      斜树：左斜树、右斜树  结点的个数与二叉树的深度相同
 *      满二叉树：所有结点都存在左子树和右子树，并且所有叶子都在同一层上]]></description><category></category></item><item><title><![CDATA[KMP]]></title><link>https://blog.youkuaiyun.com/qin34/article/details/108449636</link><guid>https://blog.youkuaiyun.com/qin34/article/details/108449636</guid><author>qin34</author><pubDate>Mon, 07 Sep 2020 15:53:48 +0800</pubDate><description><![CDATA[KMP模式匹配
计算next值：下标从0开始，当j=x,取0-(j-1)的字符，判断前缀和后缀字符是否相等，相等的字符个数
字符的前缀是值不包含最后一个字符在内的所有，
前缀和后缀最大长度为k 的相同前缀后缀
如：t=“aaaaa aab” 当j=4 t4=aaaa 前缀aaa 后缀aaa next=3

public void getNext(String t,int next[]){
        int i;
        i=1;
        next[0]=0;
        whil.]]></description><category></category></item><item><title><![CDATA[CompletableFuture学习]]></title><link>https://blog.youkuaiyun.com/qin34/article/details/108400218</link><guid>https://blog.youkuaiyun.com/qin34/article/details/108400218</guid><author>qin34</author><pubDate>Fri, 04 Sep 2020 11:00:11 +0800</pubDate><description><![CDATA[//supplyAsync 和 runAsync 区别在前个有返回值，后一个没有返回值
    public static void supplyAsync() throws ExecutionException, InterruptedException {
        ExecutorService executorService = Executors.newCachedThreadPool();
//        executorService.submit(() -&gt; {
//    ]]></description><category></category></item><item><title><![CDATA[linux全替换]]></title><link>https://blog.youkuaiyun.com/qin34/article/details/104308452</link><guid>https://blog.youkuaiyun.com/qin34/article/details/104308452</guid><author>qin34</author><pubDate>Fri, 14 Feb 2020 11:04:30 +0800</pubDate><description><![CDATA[find . -name “*.sh” -print | xargs perl -pi -e ‘s/A/B/g’

]]></description><category></category></item><item><title><![CDATA[docker常用命令]]></title><link>https://blog.youkuaiyun.com/qin34/article/details/103986352</link><guid>https://blog.youkuaiyun.com/qin34/article/details/103986352</guid><author>qin34</author><pubDate>Wed, 15 Jan 2020 11:52:14 +0800</pubDate><description><![CDATA[docker images 显示本地所有镜像
docker rmi 镜像ID ；删除本地镜像
docker build -t ss:0.0.1 dockerfile所在目录 ；-t 镜像打tag  创建本地镜像
docker push host/ss:0.0.1  推送本地镜像到镜像仓库 host镜像仓库地址，需     	要现在机器上登录
docker run -d -p host:cohost...]]></description><category></category></item><item><title><![CDATA[Elasticsearch]]></title><link>https://blog.youkuaiyun.com/qin34/article/details/103975029</link><guid>https://blog.youkuaiyun.com/qin34/article/details/103975029</guid><author>qin34</author><pubDate>Tue, 14 Jan 2020 16:13:20 +0800</pubDate><description><![CDATA[反向索引又叫倒排索引，是根据文章内容中的关键字建立索引。
搜索引擎原理就是建立反向索引。
Elasticsearch 在 Lucene 的基础上进行封装，实现了分布式搜索引擎。
Elasticsearch 中的索引、类型和文档的概念比较重要，类似于 MySQL 中的数据库、表和行。
Elasticsearch 也是 Master-slave 架构，也实现了数据的分片和备份。
Elasticsea...]]></description><category></category></item><item><title><![CDATA[springboot异步记录日志]]></title><link>https://blog.youkuaiyun.com/qin34/article/details/103278222</link><guid>https://blog.youkuaiyun.com/qin34/article/details/103278222</guid><author>qin34</author><pubDate>Wed, 27 Nov 2019 16:30:26 +0800</pubDate><description><![CDATA[&lt;appender name="CONSOLE-LOG" class="ch.qos.logback.core.ConsoleAppender"&gt;
    &lt;layout class="ch.qos.logback.classic.PatternLayout"&gt;
        &lt;pattern&gt;[%d{yyyy-MM-dd' 'HH:mm:ss.sss}] ...]]></description><category></category></item><item><title><![CDATA[记录一次SQL优化]]></title><link>https://blog.youkuaiyun.com/qin34/article/details/93851334</link><guid>https://blog.youkuaiyun.com/qin34/article/details/93851334</guid><author>qin34</author><pubDate>Thu, 27 Jun 2019 11:11:08 +0800</pubDate><description><![CDATA[先说下背景：
广告表ad  城市表city_area_code  按城市显示广告关系表 ad_r_area_Code(索引是ad_id 、area_code)
管理平台有个页面显示列表，如图：

之前用的一个大的SQL去写
SELECT a.id, a.title, GROUP_CONCAT(c.`name` SEPARATOR '、') AS area_code_name
FROM ad   a...]]></description><category></category></item><item><title><![CDATA[Java代码读写分离]]></title><link>https://blog.youkuaiyun.com/qin34/article/details/93734993</link><guid>https://blog.youkuaiyun.com/qin34/article/details/93734993</guid><author>qin34</author><pubDate>Wed, 26 Jun 2019 14:07:07 +0800</pubDate><description><![CDATA[转载原文
代码环境是springboot+mybatis+druib连接池。想要读写分离就需要配置多个数据源，在进行写操作是选择写的数据源，读操作时选择读的数据源。其中有两个关键点：

如何切换数据源
如何根据不同的方法选择正确的数据源

1)、如何切换数据源
通常用springboot时都是使用它的默认配置，只需要在配置文件中定义好连接属性就行了，但是现在我们需要自己来配置了，spring是支持...]]></description><category></category></item><item><title><![CDATA[MySQL 5.7 配置主从]]></title><link>https://blog.youkuaiyun.com/qin34/article/details/93732247</link><guid>https://blog.youkuaiyun.com/qin34/article/details/93732247</guid><author>qin34</author><pubDate>Wed, 26 Jun 2019 13:49:20 +0800</pubDate><description><![CDATA[安装MySQL，参考安装MySQL5.7
主从复制有2种，一种是基于语句复制，另一种是基于行，5.7版本的默认是基于行复制

配置主数据库
修改主数据库配置/etc/my.cnf，不同的linux，配置文件所在位置不同

server-id=1  #设置server-id 数字  唯一，不可重复，
log_bin=master-bin #开启二进制日志
expire_logs_days=10
ma...]]></description><category></category></item></channel></rss>