java
文章平均质量分 57
楚航
河北工业大学梦云智软件开发团队成员。
展开
-
Redis与MySQL双写一致性如何保证?
1.操作数据库时,是删除缓存呢,还是更新缓存?删除缓存。看下面这样一个例子:线程A先发起一个写操作,第一步先更新数据库 线程B再发起一个写操作,第二步更新了数据库 由于网络等原因,线程B先更新了缓存 线程A更新缓存。这时候,缓存保存的是A的数据(老数据),数据库保存的是B的数据(新数据),数据不一致了,脏数据出现啦。如果是删除缓存取代更新缓存则不会出现这个脏数据问题。更新缓存相对于删除缓存,还有两点劣势:如果你写入的缓存值,是经过复杂计算才得到的话。更新缓存频率高的话,就浪费性能啦。原创 2021-08-18 14:57:36 · 184 阅读 · 0 评论 -
红黑树、B+树等相关面试题
一、为什么hashmap使用红黑树而不是用其它的树1.为什么不适用二叉搜索树(BST)问题主要出现在二叉排序树在添加元素的时候极端情况下会出现线性结构。举例说明:由于二叉排序树左子树所有节点的值均小于根节点的特点,如果我们添加的元素都比根节点小,会导致左子树线性增长,这样就失去了用树型结构替换链表的初衷,导致查询时间增长。所以这是不用二叉查找树的原因。2.为什么不使用平衡二叉树(AVL)AVL树比红黑树保持更加严格的平衡。在AVL树中,从根到任何叶子的最短路径和最长路径之间的差异最多为1原创 2021-08-16 21:07:29 · 802 阅读 · 0 评论 -
代码书写规范
减少for循环使用 改为使用java 8 新特性stream。stream使代码更加简洁,性能更佳,以及诸多优点(可参考https://zhuanlan.zhihu.com/p/141588699)。 字符串拼接可以在循环中使用 “” + “” 拼接,新版的jdk会自动把加号拼接的形式转换为StringBuilder 字符串拼接常用函数String.join() 变量命名规范 (1)少使用data、flag等变量,使用更加具体如isSend等。变量名长度8-20为宜..原创 2021-08-16 11:21:04 · 205 阅读 · 0 评论 -
Thrift学习
RPC(Remote Procedure Call)远程过程调用,主要解决远程通信间的问题,不需要了解底层网络的通信机制。知名度较高的有Thrift(FB的)、dubbo(阿里的)。RPC原理RPC一般需要经历4个步骤:1、建立通信首先要解决通讯的问题:即A机器想要调用B机器,首先得建立起通信连接,主要是通过在客户端和服务器之间建立TCP连接。2、服务寻址要解决寻址的问题,A服务器上如何连接到B服务器(如主机或IP地址)以及特定的端口,方法的名称是什么。3、网络传输1)序列化原创 2021-08-16 11:19:49 · 97 阅读 · 0 评论 -
分布式实战
最近导师负责的魅力王府井项目因为要发放数字货币,要求项目中一二级界面的接口达到两万tps,所以就学习一下是如何从几百的tps提高到2w+的。话不多少,上图tps从几百到2W+的提升主要做了两件事。扩节点,从2个节点扩到了12个节点,性能提升了三四倍 使用JetCache缓存框架扩节点没有什么可说的,重点说一下第二点。导师之前已经写了一个sdk包(主要是在jetcache的基础上配置redis信息等,便于其他的小伙伴使用),直接引入依赖,通过注解的方式就可以使用JetCache。在该项目的业务原创 2021-02-18 16:34:51 · 223 阅读 · 3 评论 -
消息中心——短信、邮件、推送、文件上传中台系统(京东实习)总结
来京东实习一个半月了,一个多月的时间都花在消息中台上,所以总结记录一下。先说一下实习感受,团队的氛围确实挺好的,挺照顾我这个实习生,有问题大家都挺乐意帮忙的。年末公司发的大礼包实习生没有,leader就把他的礼包给我了,真的好暖好暖,哈哈。导师也真的很认真负责,前两三个星期导师每天晚上都会花两小三个小时对我进行指导,从数据库的设计到编码规范等。最近年底,好些项目比较忙,导师、leader和有的同事已经连着两个星期都是凌晨2点多回去的,最晚的时候凌晨五点才下班,认真工作的样子,很帅!题外话说多了哈。...原创 2021-01-31 17:10:16 · 3748 阅读 · 1 评论