• 一文带你深入理解 Redis 内存模型!
    目前为止,内存的使用成本仍然相对较高,使用内存不能无所顾忌;根据需求合理的评估 Redis 的内存使用量,选择合适的机器配置,可以在满足需求的情况下节约成本。了解 Redis 内存模型可以选择更合适的数据类型和编码,更好的利用 Redis 内存。当 Redis 出现阻塞、内存占用等问题时,尽快发现导致问题的原因,便于分析解决问题。二者之所以有所不同,一方面是因为内存碎片和 Redis 进程运行需要占用内存,使得前者可能比后者小,另一方面虚拟内存的存在,使得前者可能比后者大。内存碎片内存碎片是 Redis 在分配、回收物理内存过程中产生的。
  • 从 MySQL 执行原理告诉你:为什么分页场景下,请求速度非常慢?
    扫描下方二维码试听从一个问题说起五年前在腾讯的时候,发现分页场景下,mysql请求速度非常慢。我就问我师父为什么,他反问“索引场景,mysql中获得第n大的数,时间复杂度是多少?”这里可能会提出疑问,为什么会有这种行为,这是和mysql的分层有关系,limit offset 只能作用于引擎层返回的结果集。其中 Join 有内连接,左外右外连接等多种连接方式。怎么解决《高性能MySQL》提到了两种方案方案一根据业务实际需求,看能否替换为下一页,上一页的功能,特别在ios, android端,以前那种完全的分页是不常见的。在业务确实需要用分页的情况下,使用该方案可以大幅度提高性能。
  • 大白话聊聊 Kafka 的架构原理和网络设计,它的性能高在什么地方?
    可是kafka并不是这样,比如现在consumerA去消费了一个topicA里面的数据。而consumerD也是消费不到的,所以在kafka中,不同组可有唯一的一个消费者去消费同一主题的数据。kafka也是主从式的架构,主节点就叫controller,其余的为从节点,controller是需要和zookeeper进行配合管理整个kafka集群。加餐时间1.Kafka性能好在什么地方?kafka的设计中,数据其实是存储在磁盘上面,一般来说,会把数据存储在内存上面性能才会好。但是kafka用的是顺序写,追加数据是追加到末尾,磁盘顺序写的性能极高,在磁盘个数一定,转数达到一定的情况下,基本和内存速度一致随机写的话是在文件的某个位置修改数据,性能会较低。
  • 中华石杉互联网 Java 工程师面试突击第3季,继一二季之后,又一重磅力作!
    说声抱歉:面试突击第三季,让大家久等了今年8月,我在公众号狸猫技术窝上架了21天互联网java进阶面试训练营我带着大家一起,用21天的时间,剖析了java进阶面试中对分布式专题考察的各种技术点。面试第二季结束后,评论区以及狸猫技术交流群时常会有同学问道:老师,啥时候出java面试突击第三季啊?面试突击第3季内容和一二季内容一脉相承,主要解决了一二季中没有涉及到的,但是在面试中高频出现的一些问题。
  • Redis 缓存+定时写入数据库实现高性能点赞功能!
    扫描下方二维码试读本文基于 SpringCloud, 用户发起点赞、取消点赞后先存入 Redis 中,再每隔两小时从 Redis 读取点赞数据写入数据库中做持久化存储。点赞、取消点赞是高频次的操作,若每次都读写数据库,大量的操作会影响数据库性能,所以需要做缓存。至于多久从 Redis 取一次数据存到数据库中,根据项目的实际情况定吧,我是暂时设了两个小时。文章分四部分介绍:Redis 缓存设计及实现数据库设计数据库操作开启定时任务持久化存储到数据库一、Redis 缓存设计及实现1.1 Redis 安装及运行Redis 安装请自行查阅相关教程。
  • 线上经验总结:一台 Java 服务器可以跑多少个线程?
    扫描下方二维码 试读 一台java服务器能跑多少个线程?这个问题来自一次线上报警如下图,超过了我们的配置阈值。 京东自研UMP监控分析打出jstack文件,通过IBM Thread and Monitor Dump Analyzer for Java工具查看如下:IBM Thread and Monitor Dump Analyzer for Java共计1661个线程,和监控数据得出的吻合。但这个数量应该是大了,我们都知道线程多了,就会有线程切换,带来性能开销。当时就想到一台java服务器到底可以跑多少个...
  • 如何优雅的处理 Java 中的空值?
    有时候,更可怕的是系统因为这些空值的情况,会抛出空指针异常,导致业务系统发生问题。业务中的空值场景存在一个UserSearchService用来提供用户查询的功能:publicinterfaceUserSearchService{ListlistUser();Userget;}问题现场对于面向对象语言来讲,抽象层级特别的重要。如果调用者是一个谨慎的人,他会进行是否为null的条件判断。基于此,我们将它进行优化:publicListlistUser(){ListuserList=userListRepostity.selectByExample;if{returnLists.newArrayList();//guava类库提供的方式}returnuserList;}对于接口,它一定会返回List,即使没有数据,它仍然会返回List;通过以上的修改,我们成功的避免了有可能发生的空指针异常,这样的写法更安全!通过代码的时候得知它的返回值很有可能是null!
  • 为什么魂斗罗只有128KB,却可以实现那么长的剧情?
    扫描下方二维码 试读 个人觉得fc最神奇的游戏还属超级玛丽,32个关卡,每关都不同,各种隐藏要素,好像代码区才10多k,数据区10多k。反汇编看完还是不敢相信这点东西能玩一个童年… 现在helloworld的二进制都可能比这大多了。首先128k并不小,主要消耗存储空间的不是程序。当然对于128k来说程序大小自然也要考虑,鉴于fc是八位机而且FC采用的是CISC处理器,一条指令就能完成很多事情,所以程序的大小也就现代64位RISC处理器的十几到几百分之一。资源才是大户(包括图像、音乐、地图数据、关卡数据等等)...
  • 微服务中的网关到底是个什么鬼?
    优雅下线优雅下线也是网关需要关注的一个问题,网关底层会涉及到很多种协议,比如HTTP、Dubbo,而HTTP又可以继续细分,比如域名、注册中心等有些自身就支持优雅下线,比如Nginx自身是支持健康监测机制的,如果检测到某一个节点已经挂掉了,就会把这个节点摘掉对于应用正常下线,需要结合发布系统,首先进行逻辑下线,然后对后续Nginx的健康监测请求直接返回失败,然后等待一段时间,然后再将应用实际下线掉。需要谨慎设置超时时间,如果设置不当,且服务隔离做的不是很完善的话,网关很容易被一个慢接口拖垮。
个人资料

聊技术、论职场!阿里、京东、头条、美团等数位顶尖技术专家强强联手,为IT人打造一个“有温度”的技术窝!