获得徽章 1
- #青训营笔记创作活动#
1月30日,打卡day18
在《MySQL内存篇》中曾详细讲到了InnoDB引擎的工作原理,当查询一条数据时都会将其结果集放入到BufferPool的数据缓冲页中,如果每次用*来查询数据,查到的结果集自然会更大,占用的内存也会越大,单个结果集的数据越大,整个内存缓冲池中能存下的数据也就越少,当其他SQL操作时,在内存中找不到数据,又会去触发磁盘IO,最终导致MySQL整体性能下降。
展开评论点赞 - #青训营笔记创作活动#
1月29日,打卡day17
如果报LogstashTcpSocketAppender这个类找不到,需要添加一个依赖: <dependency> <groupId>net.logstash.logback</groupId> <artifactId>logstash-logback-encoder</artifactId> <version>6.6</version> </dependency> 复制代码 其实这个依赖就是用来网络通信的,来传输日志。 测试 这时启动应用,观看 Logstash 的控制台,会跟着打印日志,再打开 ES ,创建我们配置好的查询索引,神奇的事情发生了,日志一条一条的展示出来。展开评论点赞 - #青训营笔记创作活动#
1月28日,打卡day16
我们这是个工具模块,本身并不会被启动,也没有启动类,更没有什么配置文件,那这种情况下,我们该如何获得redis呢?
答案是:找引入我们的的模块要 RedisTemplate。因为这些Bean都是被spring管控的,包括RedisTemplate,也包括我们现在写的RequestLimitAspect ,它们将来都是在spring容器内的,所以我们直接在代码里找spring进行注入就可以了。将来引入我们的模块中如果有RedisTemplate可用,那我们自然就可以拿到。
展开评论点赞 - #青训营笔记创作活动#
1月27日,打卡day15
Redis 直接以内存的方式存储可以达到最快的读写速度,如果开启了持久化则通过异步的方式将数据写入磁盘,因此Redis 具有快速和数据持久化的特征
Redis 能够用来实现分布式锁的命令有 INCR、SETNX、SET,并利用过期时间命令 expire 作为辅助
展开评论点赞 - #青训营笔记创作活动#
1月26日,打卡day14
当一个客户端尝试与MySQL建立连接时,MySQL内部都会派发一条线程负责处理该客户端接下来的所有工作。而数据库的连接层负责的就是所有客户端的接入工作,MySQL的连接一般都是基于TCP/IP协议建立网络连接,因此凡是可以支持TCP/IP的语言,几乎都能与MySQL建立连接。
展开评论点赞 - 1月25日,打卡day13
#青训营笔记创作活动#
如果你觉得这个issue挺有意思,那么你可以主动地提出申请。
到此,我们就算拿到了这个issue的开发任务,接下来可以进行开发相关的工作。展开评论点赞 - #青训营笔记创作活动#
1月24日,打卡day12
分组交换的思想源于报文交换,也采用存储转发的原理,但不同的是分组交换的最小信息单位是分组,而报文交换则是一个个报文。分组加速了数据在网络中的传输,一个分组的存储与前一个分组转发可以并行,所以本质分组交换也是存储展开评论点赞 - 1月23日,打卡day11
这个中间层就成了这帮服务器的一个代理人一样,客户端有啥事都找代理人,只管发出自己的请求,再由代理人去找某个服务器去完成响应。整个过程下来,客户端只知道自己的请求被代理人帮忙搞定了,但代理人具体找了那个服务器去完成,客户端并不知道,也不需要知道。
像这种,屏蔽掉具体有哪些服务器的代理方式就是所谓的反向代理。 #青训营笔记创作活动#展开评论点赞 - #青训营笔记创作活动#
1月21日,打卡day10
对于一些变更频率比较高的数据,采用集中式缓存,这样可以确保数据变更之后所有节点都可以实时感知到,确保数据一致;
对于一些极少变更的数据(比如一些系统配置项)或者是一些对短期一致性要求不高的数据(比如用户昵称、签名等)则采用本地缓存,大大减少对远端集中式缓存的网络IO次数。
展开评论点赞 - #青训营笔记创作活动#
1月20日,打卡day9
返回的fd是指socket句柄,可以理解为socket的身份证号。通过这个fd你可以在内核中找到唯一的socket结构。
如果想要通过这个socket发消息,只需要操作这个fd就行了,比如执行 send(fd, msg, ...),内核就会通过这个fd句柄找到socket然后进行发数据的操作。
展开评论点赞