<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Tnewer的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Tnewer</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Tnewer]]></copyright><item><title><![CDATA[消息中间件-rocketmq 如何保证服务的稳定性]]></title><link>https://blog.youkuaiyun.com/Tnewer/article/details/124292797</link><guid>https://blog.youkuaiyun.com/Tnewer/article/details/124292797</guid><author>Tnewer</author><pubDate>Wed, 20 Apr 2022 11:19:46 +0800</pubDate><description><![CDATA[消息中间件-rocketmq 如何保证服务的稳定性
对于一个消息中间件来说，无非从三个方面去看它的稳定性

消息投递
消息存储
消息消费

首先对于消息投递来说， rocketmq内部是有消息的重试机制，在一定重试次数和超时时间内 都可以进行重试。当然如果内部的重试还不能解决问题，就需要我们业务上来进行手动重试， 比如将消息先写入数据库，给定一个状态，当消息投递成功后，修改状态等。。。
其次对于消息存储来说， rocketmq采用等是主从模式， 可以设置 master +多个slave 来保证高可用， 数据]]></description><category></category></item><item><title><![CDATA[redis高频面试题（二）]]></title><link>https://blog.youkuaiyun.com/Tnewer/article/details/124272782</link><guid>https://blog.youkuaiyun.com/Tnewer/article/details/124272782</guid><author>Tnewer</author><pubDate>Tue, 19 Apr 2022 16:38:00 +0800</pubDate><description><![CDATA[#redis高频面试题
1. 缓存回收/淘汰
Redis对于内存的回收有两种方式，一种是过期key的回收，另一种是超过redis的最大内存后的内存释放。
对于第一种情况，Redis会在：
1、每一次访问的时候判断key的过期时间是否到达，如果到达，就删除key
2、redis启动时会创建一个定时事件，会定期清理部分过期的key，默认是每秒执行十次检查，每次过期key清理的时间不超过CPU时间的25%，即若hz=1，则一次清理时间最大为250ms，若hz=10，则一次清理时间最大为25ms。
对于第二种情况，]]></description><category></category></item><item><title><![CDATA[redis高频面试题（一）]]></title><link>https://blog.youkuaiyun.com/Tnewer/article/details/124243409</link><guid>https://blog.youkuaiyun.com/Tnewer/article/details/124243409</guid><author>Tnewer</author><pubDate>Mon, 18 Apr 2022 10:50:57 +0800</pubDate><description><![CDATA[redis 相关面试题
1. 列举redis 常用的数据类型 和项目中的实际应用
5大常用数据类型：string， list， set， zset， hash
列举：
list 可以用来实现简单的队列消息（仅限简单）
set， zset 可以用来做集合， 交集， 并集， 比如 共同关注等
hash 可以存储具体信息。比如某个用户的用户信息
以自己实际项目为准最好
2. redis 是多线程的吗/redis是线程安全的吗
redis的工作线程（执行命令的线程）是单线程的
在redis6.0版本之后， 处理网络]]></description><category></category></item><item><title><![CDATA[网络协议之三次握手和四次挥手]]></title><link>https://blog.youkuaiyun.com/Tnewer/article/details/124006528</link><guid>https://blog.youkuaiyun.com/Tnewer/article/details/124006528</guid><author>Tnewer</author><pubDate>Thu, 07 Apr 2022 10:43:05 +0800</pubDate><description><![CDATA[三次握手，四次挥手]]></description><category></category></item><item><title><![CDATA[每日学一点-Go Map 的数据结构]]></title><link>https://blog.youkuaiyun.com/Tnewer/article/details/120746594</link><guid>https://blog.youkuaiyun.com/Tnewer/article/details/120746594</guid><author>Tnewer</author><pubDate>Wed, 13 Oct 2021 16:37:25 +0800</pubDate><description><![CDATA[map 数据结构
golang中的Map是由链式哈希表实现的，底层是由hash实现的，数据结构为hash数组 + buckets桶 + 溢出的桶链表，每个桶存储最多8个key-value键值对
链式哈希表从根本上说是由一组链表构成。每个链表都可以看做是一个“桶”，我们将所有的元素通过散列的方式放到具体的不同的桶中。插入元素时，首先将其键传入一个哈希函数（该过程称为哈希键），函数通过散列的方式告知元素属于哪个“桶”，然后在相应的链表头插入元素。
// A header for a Go map.
type h]]></description><category></category></item><item><title><![CDATA[每日学一点-GO如何调度的]]></title><link>https://blog.youkuaiyun.com/Tnewer/article/details/120725659</link><guid>https://blog.youkuaiyun.com/Tnewer/article/details/120725659</guid><author>Tnewer</author><pubDate>Tue, 12 Oct 2021 16:56:22 +0800</pubDate><description><![CDATA[@每日一道面试题-GO
golang的goroutine是如何调度的？
golang的调度区别于c语言， 自己实现了一套调度模式 即常说的 GMP 模式
GMP 模式

G 就是go运行时产生的G对象；
M 就是内核线程， 是执行者；
P 就是调度处理器， 对 G 与 M 实现合理的 匹配；

GO代码运行过程

go程序运行时， 执行main 函数 ， 会产生一个 G1， 主线程M1 会绑定一个空闲的P1 这时候P1就会执行G1
main 函数 里如果还有新的goroutine 生成时， 就会产生新的G2]]></description><category></category></item><item><title><![CDATA[初学设计模式的一点疑惑--依赖注入模式传参问题]]></title><link>https://blog.youkuaiyun.com/Tnewer/article/details/89356647</link><guid>https://blog.youkuaiyun.com/Tnewer/article/details/89356647</guid><author>Tnewer</author><pubDate>Wed, 17 Apr 2019 15:12:29 +0800</pubDate><description><![CDATA[最近在 学习设计模式,初学 有些不理解的地方!
class MysqlConfiguration
{
    private $host;
    private $port;
    private $username;
    private $password;
    private $db_name;
    public function __construct(string $hos...]]></description><category></category></item></channel></rss>