<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[smy166153的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/smy166153</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; smy166153]]></copyright><item><title><![CDATA[Gorrila论文阅读]]></title><link>https://blog.youkuaiyun.com/smy166153/article/details/120565449</link><guid>https://blog.youkuaiyun.com/smy166153/article/details/120565449</guid><author>smy166153</author><pubDate>Thu, 30 Sep 2021 13:56:07 +0800</pubDate><description><![CDATA[简介
大规模的互联网服务旨在在出现意外故障时保持高可用性和响应性。提供这种服务通常需要在大量系统中每秒监视和分析数千万个测量值，一个特别有效的解决方案是在时间序列数据库(TSDB)中存储和查询这些测量值。Gorilla 通过村存储时间戳的变化量的变化量（delta of delta)以及对存储的value进行异或（XOR）操作从而提升读写性能，查询延迟降低了73倍，查询吞吐率提升了14倍。
Gorilla在监控数据写入HBase存储之前，起到一个write-through cache的作用。Gorilla的]]></description><category></category></item><item><title><![CDATA[深度学习基本概念]]></title><link>https://blog.youkuaiyun.com/smy166153/article/details/118930511</link><guid>https://blog.youkuaiyun.com/smy166153/article/details/118930511</guid><author>smy166153</author><pubDate>Tue, 20 Jul 2021 11:17:01 +0800</pubDate><description><![CDATA[1.深度学习基本概念
1.1  张量
我们在学习线性代数的时候，学习过向量和矩阵。对于张量从数学和物理方面讲解就篇幅过长。我们可以简单的理解张量（Tensor)为向量以及矩阵的扩展。向量可以理解为一维张量，矩阵可以理解为二维张量。对于更高阶的可以以深度学习里常要处理的图片来举例。彩色图片有（RGB)三个通道，可以看作一个三维张量即H*W*C,(H为高度，w为宽带，c是通道数目)。在深度学习里常使用四维的张量，NCHW或NHWC两种其中N为批次的大小。
在深度学习的网络构造过程中，会遇到各种各样的线性变换，这]]></description><category></category></item><item><title><![CDATA[FairMOT论文阅读笔记]]></title><link>https://blog.youkuaiyun.com/smy166153/article/details/118656485</link><guid>https://blog.youkuaiyun.com/smy166153/article/details/118656485</guid><author>smy166153</author><pubDate>Sun, 11 Jul 2021 21:20:52 +0800</pubDate><description><![CDATA[Abstract
近些年目标检测和Re-ID有很大的发展，但是没有人在单个网络中联合这两个任务。由于re-ID任务没有公平的学习，这导致了大量id的转换。不公平之处在于两个方面:(1)他们将重新身份识别视为次要任务，其准确性在很大程度上取决于主要检测任务。所以训练很大程度上偏向于检测任务，而忽略了重识别任务；(2)它们使用感兴趣区域对齐来提取直接从对象检测中借用的重标识特征。然而，这在表征对象时引入了许多模糊性，因为许多采样点可能属于干扰实例或背景。为了解决这些问题，我们提出了一种简单的方法FairMOT，]]></description><category></category></item><item><title><![CDATA[Redis学习（十）——db.c]]></title><link>https://blog.youkuaiyun.com/smy166153/article/details/118333926</link><guid>https://blog.youkuaiyun.com/smy166153/article/details/118333926</guid><author>smy166153</author><pubDate>Tue, 29 Jun 2021 20:50:37 +0800</pubDate><description><![CDATA[文章目录1.lookupKey2.lookupKeyRead3.lookupKeyReadOrReply4.addReply5.addReplyErrorFormat6.dbRandomKey7.dbUnshareStringValue8.emptyDb9.selectDb10.flushdbCommand11.flushallCommand12.delCommand13.keysCommand14.scanGenericCommand15.moveCommand16.expireIfNeeded17.ex]]></description><category></category></item><item><title><![CDATA[Redis学习（九）——数据库]]></title><link>https://blog.youkuaiyun.com/smy166153/article/details/118307372</link><guid>https://blog.youkuaiyun.com/smy166153/article/details/118307372</guid><author>smy166153</author><pubDate>Mon, 28 Jun 2021 21:03:45 +0800</pubDate><description><![CDATA[文章目录一、数据库的结构二、有关数据库的操作1.键空间的操作2.键的生存时间或过期时间3.过期键的删除4.AOF、RDB对过期键的处理4.复制
一、数据库的结构
数据库的数据结构如下
typedef struct redisDb {

    // 数据库键空间
    dict *dict;                

    // 键的过期时间，字典的键为键，字典的值为过期事件 UNIX 时间戳
    dict *expires;             

    // 正处于阻塞状态的键
 ]]></description><category></category></item><item><title><![CDATA[Redis学习（八）——object.c源码]]></title><link>https://blog.youkuaiyun.com/smy166153/article/details/118190987</link><guid>https://blog.youkuaiyun.com/smy166153/article/details/118190987</guid><author>smy166153</author><pubDate>Thu, 24 Jun 2021 20:57:57 +0800</pubDate><description><![CDATA[文章目录1.createObject2.createRawStringObject3.createEmbeedStringObject4.createStringObject5.createStringObjectFromLongLong6.createStringObjectFromLongDouble7.dupstringObject8.createListObject9.createZiplistObject10.createSetObject11.createIntsetObject12.creat]]></description><category></category></item><item><title><![CDATA[Redis学习（七）——对象]]></title><link>https://blog.youkuaiyun.com/smy166153/article/details/118187265</link><guid>https://blog.youkuaiyun.com/smy166153/article/details/118187265</guid><author>smy166153</author><pubDate>Thu, 24 Jun 2021 16:20:17 +0800</pubDate><description><![CDATA[文章目录一、对象二、字符串对象三、列表对象四、哈希对象五、集合对象六、有序集合对象
一、对象
前面学习了SDS、双端列表，字典，压缩列表，整数集合等。但是Redis并没有直接使用这些数据结构来实现键值对数据库，而是使用这些数据结构来创建一个对象系统，这个系统包含字符串对象，列表对象，哈希对象，集合对象和有序集合对象。
通过这五种不同类型的对象，redis在执行命令前，根据对象的类型来判断一下对象是否可以执行给定的命令，另一个好处是我们可以通过不同的场合从而设置多种不同的数据结构实现，从而优化对象在不同场景的]]></description><category></category></item><item><title><![CDATA[Redis学习（六）——压缩列表]]></title><link>https://blog.youkuaiyun.com/smy166153/article/details/118151595</link><guid>https://blog.youkuaiyun.com/smy166153/article/details/118151595</guid><author>smy166153</author><pubDate>Wed, 23 Jun 2021 22:45:18 +0800</pubDate><description><![CDATA[文章目录一、压缩列表
一、压缩列表
压缩列表(ziplist)是列表键和哈希键的底层实现之一。当一个列表键只包含列表项，并且每个列表要么就是长度较短的字符串，要么就是小整数值，那么redis就会使用压缩列表作为列表键的底层实现。
压缩列表是redis为了节约而开发的，是一系列由特殊编码的连续内存块组成的顺序型数据结构。一个压缩列表可以包含任意多个节点，每个节点包含一个字节数组或者一个整数值。
压缩列表的布局&lt;zlbytes&gt;&lt;zltail&gt;&lt;zllen&gt;&lt;entry]]></description><category></category></item><item><title><![CDATA[Redis学习（五）——整数集合]]></title><link>https://blog.youkuaiyun.com/smy166153/article/details/118144781</link><guid>https://blog.youkuaiyun.com/smy166153/article/details/118144781</guid><author>smy166153</author><pubDate>Wed, 23 Jun 2021 13:38:08 +0800</pubDate><description><![CDATA[文章目录一、整数集合1.介绍2.升级三、API四、源码1.intsetNew2.intsetAdd3.intsetRemove4.intsetFind5.intsetRandom6.intsetGet
一、整数集合
1.介绍
整数集合是集合键的底层实现之一，当一个集合只包含整数元素，并且这个集合的元素不多时，redis就会使用整数集合作为集合键的底层实现。
整数集合用于保存整数值的集合抽象数据结构，它可以保存 类型为int16_t、int32_或者int64_t的整数值，并且保证集合中不会出现重复元素。
它]]></description><category></category></item><item><title><![CDATA[Redis学习（四） —— 跳跃表]]></title><link>https://blog.youkuaiyun.com/smy166153/article/details/118112828</link><guid>https://blog.youkuaiyun.com/smy166153/article/details/118112828</guid><author>smy166153</author><pubDate>Tue, 22 Jun 2021 20:25:30 +0800</pubDate><description><![CDATA[文章目录一、跳跃表二、 跳跃表API三、API的源码1.zslCreate2.zslFree3.zslInsert4.zslDelete5.zslFirstInRange6.zslLastInRange7.zslGetRank
一、跳跃表
跳跃表(skiplist) 是一种有序数据结构，它通过在每个节点中维持多个指向其它 节点的指针，从而达到快速访问节点的目的，其结构如下：
typedef struct zskiplistNode {

    // 成员对象
    robj *obj;

    // ]]></description><category></category></item><item><title><![CDATA[Redis学习（三）——字典]]></title><link>https://blog.youkuaiyun.com/smy166153/article/details/118100759</link><guid>https://blog.youkuaiyun.com/smy166153/article/details/118100759</guid><author>smy166153</author><pubDate>Tue, 22 Jun 2021 14:59:15 +0800</pubDate><description><![CDATA[文章目录一、字典1.字典的结构二、哈希算法和rehash三、字典的API四、源码1.dicCreate2.dicExpand3.dicRehash4.dicAddRaw5.dictReplace6.dictReplaceRaw7.dictGenericDelete8.dictRelease9.dictFind10.dictFetchValue11.dictResize12.dicGetIterator13.dictGetSafeIterator14. dictNext15.dictReleaseIterat]]></description><category></category></item><item><title><![CDATA[Redis学习（二）——链表]]></title><link>https://blog.youkuaiyun.com/smy166153/article/details/118069250</link><guid>https://blog.youkuaiyun.com/smy166153/article/details/118069250</guid><author>smy166153</author><pubDate>Sun, 20 Jun 2021 17:49:34 +0800</pubDate><description><![CDATA[文章目录一、链表的结构二、链表的API三、链表api源码1.listCreate2.listRelease3.listAddNodeHead4.listAddNodeTail5.listInsertNode6.listDelNode7.listGetIterator8.listReleaseItertor9.listRewind10.listRewindTail11.listNext12.listDup13.listSearchKey14.listIndex15.listRotate
一、链表的结构
typ]]></description><category></category></item><item><title><![CDATA[Redis学习（1）-SDS]]></title><link>https://blog.youkuaiyun.com/smy166153/article/details/118052883</link><guid>https://blog.youkuaiyun.com/smy166153/article/details/118052883</guid><author>smy166153</author><pubDate>Sat, 19 Jun 2021 20:38:27 +0800</pubDate><description><![CDATA[文章目录前言一、SDS的定义二、区别及优点三、SDS的API以及源码1.sdsnewlen2.sdsnew3.sdsempty4.sdslen
前言
一、SDS的定义
Redis没有直接使用C语言传统的字符串表示（以下简称字符串），使用的是一种叫简单动态字符串(simple dynamic string)的类型。
sds.h/sdshdr结构表示SDS值
如下
struct sdshdr {
    
    // buf 中已使用的长度
    int len;

    // buf 中剩余可用空间的长]]></description><category></category></item><item><title><![CDATA[zookeeper内部原理]]></title><link>https://blog.youkuaiyun.com/smy166153/article/details/118024822</link><guid>https://blog.youkuaiyun.com/smy166153/article/details/118024822</guid><author>smy166153</author><pubDate>Fri, 18 Jun 2021 21:40:16 +0800</pubDate><description><![CDATA[文章目录一、请求，事务和标识符二、群首选举三、Zab：状态更新的广播协议四、观察者五、本地存储
一、请求，事务和标识符
zookeeper在本地处理只读请求（exists、getData和getChildren）因为服务器会在本地处理请求，那么此时zookeeper处理只读请求，那么它的性能就会很高。而那些会改变zookeeper状态的请求，将会被转发给群首，群首执行响应的请求，并形成状态的更新，我们称之为事务。
当群首产生了一个事务，就会为该事务分配一个标识符，我们称之为zookeeper会话ID（zxi]]></description><category></category></item><item><title><![CDATA[zookeeper注意事项]]></title><link>https://blog.youkuaiyun.com/smy166153/article/details/118016628</link><guid>https://blog.youkuaiyun.com/smy166153/article/details/118016628</guid><author>smy166153</author><pubDate>Fri, 18 Jun 2021 13:50:48 +0800</pubDate><description><![CDATA[文章目录一、使用ACL1.内置的鉴权模式2.SASL和kerberos二、恢复会话三、顺序性保1.连接丢失时的顺序性2.同步API和多线程的顺序性3.同步和异步混用的顺序性
一、使用ACL
对于zookeeper，开发人员往往负责访问控制的权限，而不是管理员。这是因为每次创建znode节点，必须设置访问权限，而子节点并不会继承父节点的访问权限。访问权限的检查是基于每一个znode节点的。
zookeeper通过访问控制表来控制访问权限。一个ACL包括以下形式的记录：schema:auth-info。
zoo]]></description><category></category></item><item><title><![CDATA[curator增删改查以及监视]]></title><link>https://blog.youkuaiyun.com/smy166153/article/details/117990820</link><guid>https://blog.youkuaiyun.com/smy166153/article/details/117990820</guid><author>smy166153</author><pubDate>Thu, 17 Jun 2021 19:12:06 +0800</pubDate><description><![CDATA[文章目录一、Curator二、引入依赖二、增删改查
前言
代码可以看这个
https://gitee.com/song_mengyu/Example/tree/master/Project/Zookeeper-Curator-Demos我的仓库
一、Curator
Curator是zookeeper的一个高层次封装库，为开发人员封装了zookeeper的一组开发库，它的核心目标就是为你管理Zookeeper的相关操作，将连接的复杂性隐藏起来。
Curator为开发人员实现了一组常用的操作管理的菜谱，同时结合]]></description><category></category></item><item><title><![CDATA[docker安装zookeeper]]></title><link>https://blog.youkuaiyun.com/smy166153/article/details/117962147</link><guid>https://blog.youkuaiyun.com/smy166153/article/details/117962147</guid><author>smy166153</author><pubDate>Wed, 16 Jun 2021 17:57:36 +0800</pubDate><description><![CDATA[首先
docker  search zookeeper

我们选择官方的，所以接下来下载镜像
docker pull zookeeper

然后运行
 docker run -d -p 2181:2181 --name myzookeeper --restart always zookeeper

docker ps可以看到
然后我们进入容器内开启一个client试一下能不能用
docker exec -it myzookeeper bash

然后输入命令开启一个客户端
./bin/zkCli.sh

结]]></description><category></category></item><item><title><![CDATA[了解Zookeeper]]></title><link>https://blog.youkuaiyun.com/smy166153/article/details/117948320</link><guid>https://blog.youkuaiyun.com/smy166153/article/details/117948320</guid><author>smy166153</author><pubDate>Wed, 16 Jun 2021 14:22:01 +0800</pubDate><description><![CDATA[文章目录一、Zookeeper概述二、Zookeeper基础1.API2. znode的不同类型3.监视与通知，4.版本三、Zookeeper架构1.zookeeper仲裁2. 会话
一、Zookeeper概述
ZooKeeper是一个分布式的，开放源码的分布式应用程序协调服务，是Google的Chubby一个开源的实现，是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件，提供的功能包括：配置维护、域名服务、分布式同步、组服务等。
关于zookeeper 这样的系统功能的讨论都围]]></description><category></category></item><item><title><![CDATA[RabbitMQ虚拟主机]]></title><link>https://blog.youkuaiyun.com/smy166153/article/details/117792269</link><guid>https://blog.youkuaiyun.com/smy166153/article/details/117792269</guid><author>smy166153</author><pubDate>Fri, 11 Jun 2021 10:06:06 +0800</pubDate><description><![CDATA[文章目录一、介绍二、创建三、代码四、结果
一、介绍
每一个RabbitMQ服务器都能创建虚拟的消息服务器，我们称之为虚拟主机（virtual host)，简称vhost.每一个vhost是一个独立的小型服务器，拥有自己独立的队列，交换器等。它拥有自己独立的权限。vhost之于这个RabbitMQ服务器就像虚拟机于物理服务器一样。它能将众多客户分割开来，又可以避免队列和交换器等的命名冲突。vhost之间是绝对隔离的。
通常来讲，默认的vhost名字是"/".
二、创建
使用命令行模式
rabbitmqctl ]]></description><category></category></item><item><title><![CDATA[RabbitMQ的TTL和死信队列]]></title><link>https://blog.youkuaiyun.com/smy166153/article/details/117782856</link><guid>https://blog.youkuaiyun.com/smy166153/article/details/117782856</guid><author>smy166153</author><pubDate>Thu, 10 Jun 2021 16:45:23 +0800</pubDate><description><![CDATA[文章目录前言一、TTL2.死信队列3.结果
前言
代码可以在 我的仓库里找到https://gitee.com/song_mengyu/Example/tree/master/Project/rabbit-ttl
一、TTL
TTL ，Time to Live,过期时间，rabbitMQ可以对消息和队列设置。
设置类
package com.my;

import org.springframework.amqp.core.Queue;
import org.springframework.beans.fa]]></description><category></category></item></channel></rss>