- 博客(35)
- 资源 (2)
- 收藏
- 关注
原创 Redis 为什么用跳表实现有序集合
这里我们需要先了解一下 Redis 用到跳表的数据结构有序集合的使用,Redis 有个比较常用的数据结构叫**有序集合(sorted set,简称 zset)**,正如其名它是一个可以保证有序且元素唯一的集合,所以它经常用于排行榜等需要进行统计排列的场景。本文通过大量篇幅介绍跳表的工作原理和实现,帮助读者更进一步的熟悉跳表这一数据结构的优劣,最后再结合各个数据结构操作的特点进行比对,从而帮助读者更好的理解这道面试题,建议读者实现理解跳表时,尽可能配合执笔模拟来了解跳表的增删改查详细过程。
2024-09-26 08:48:38 1224
原创 10 种超赞的 MyBatis SQL写法!
如果传递的是一个List,则mybatis会封装为一个list为key,list值为object的map,如果是array,则封装成一个array为key,array的值为object的map,如果自己封装呢,则colloection里放的是自己封装的map里的key值。此外,如果标签返回的内容是以AND 或OR 开头的,则它会剔除掉。使用时比较灵活, new一个这样的实体类,我们需要限制那个条件,只需要附上相应的值就会where这个条件,相反不去赋值就可以不在where中判断。
2024-09-25 14:48:09 803
转载 Java线程池实现原理
面对业务中使用线程池遇到的实际问题,我们曾回到支持并发性问题本身来思考有没有取代线程池的方案,也曾尝试着去追求线程池参数设置的合理性,但面对业界方案具体落地的复杂性、可维护性以及真实运行环境的不确定性,我们在前两个方向上可谓“举步维艰”。最终,我们回到线程池参数动态化方向上探索,得出一个且可以解决业务问题的方案,虽然本质上还是没有逃离使用线程池的范畴,但是在成本和收益之间,算是取得了一个很好的平衡。
2024-09-04 10:54:35 477
原创 Kubernetes故障篇:calico/node is not ready: BIRD is not ready
解决方案:调整calicao网络插件的网卡发现机制,修改IP_AUTODETECTION_METHOD对应的value值。官方提供的yaml文件中,ip识别策略(IPDETECTMETHOD)没有配置,即默认为first-found,这会导致一个网络异常的ip作为nodeIP被注册,从而影响node-to-node mesh。我们可以修改成can-reach或者interface的策略,尝试连接某一个Ready的node的IP,以此选择出正确的IP。
2024-07-26 17:04:01 524
原创 Sersync+Rsync原理及部署
rsync在同步的时候,并不知道具体是哪个文件或者哪个目录发生了变化,每次都是对整个目录进行同步,当数据量很大时,整个目录同步非常耗时(rsync要对整个目录遍历查找对比文件),因此,效率很低。然后,在调用rsync客户端的命令,将写入或更新事件对应的文件通过rsync推送到目标服务器。(2)rsync在同步的时候,只同步发生变化的这个文件或者这个目录(每次发生变化的数据相对整个同步目录数据来说是很小的,rsync在遍历查找比对文件时,速度很快),因此,效率很高。(不覆盖更新的文件)
2024-07-26 16:46:45 629
原创 03-Dynamic Mapping 和常见字段类型
Mapping中的字段一旦设定后,禁止直接修改。因为倒排索引生成后不允许直接修改。需要重新建立新的索引,做reindex操作。对新增字段的处理:true、false、strict。
2024-05-09 16:17:04 298
原创 01-基本概念- 索引,文档和 REST API
显示每个节点分片数量、占用空间。查询指定索引(各种信息)查看所有索引的分片信息。查看指定索引分片信息。显示node节点属性。
2024-05-08 14:13:41 200
原创 SpringBoot中这样用ObjectMapper
而对象转String的方法每秒可以执行830万次,性能提升了300倍(看到结果的一瞬间我傻眼了,一度怀疑是写错代码了)!使用单例模式进行字符串转对象时性能可以提升18倍,而对象转String性能快了惊人的290万倍,所以在Spring中如何正确的使用ObjectMapper不用我再说了吧~老鸟们都知道,在创建工具类时要将工具类设置成单例的,这样不仅可以保证线程安全,也可以保证在系统全局只能创建一个对象,避免频繁创建对象的成本。可你要说没问题吧,在追求性能的同学眼里,这属实算是十恶不赦的代码了。
2024-05-07 17:22:16 505
原创 别再用“! = null”做判空了!Optional更好用!
他当时认为这是一个很简单和自然的想法,但后来发现这是一个非常糟糕的设计,因为它导致了无数的错误、漏洞和系统崩溃。他认为 null 是一种不明确的表示,它既可以表示一个值不存在,也可以表示一个值未知,也可以表示一个值无效。Optional 类是 java 8 中引入的一个新的类,它的作用是封装一个可能为空的值,从而避免空指针异常(NullPointerException)。总之,Optional 类是一个非常有用的类,它可以帮助我们更好地处理可能为空的值,提高代码的质量和效率。
2024-05-07 17:15:28 561
原创 git相关操作命令
以上命令的意思是:“取出 client 分支,找出它从 server 分支分歧之后的补丁, 然后把这些补丁在 master 分支上重放一遍,让 client 看起来像直接基于 master 修改一样”。Git 暂存区(Staging Area,也有时被称为“索引”)是 Git 版本控制系统的一个非常强大和独特的特性,它允许开发者在最终提交改动到仓库之前,对即将提交的文件和更改进行精细的审查和修改。在对两个分支进行变基时,所生成的“重放”并不一定要在目标分支上应用,你也可以指定另外的一个分支进行应用。
2024-05-07 17:12:23 846
原创 Controller层代码就该这么写,简洁又优雅!
做好了这一切改动后,可以发现 Controller 的代码变得非常简洁,可以很清楚地知道每一个参数、每一个 DTO 的校验规则,可以很明确地看到每一个 Controller 方法返回的是什么数据,也可以方便每一个异常应该如何进行反馈。自动校验参数真的是一项非常必要、非常有意义的工作。而统一拦截异常的目的一个是为了可以与前面定义下来的统一包装返回结构能对应上,另一个是我们希望无论系统发生什么异常,Http 的状态码都要是 200 ,尽可能由业务来区分系统的异常。它的定位,我认为是「不可或缺的配角」。
2024-05-07 16:57:25 677
原创 leetcode-二叉树
二叉树(Binary Tree)是一种常见的树形结构,它由节点(Node)和节点之间的关系构成。每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树中的每个节点可以为空(null)。
2024-01-30 16:58:33 1323 1
原创 文件服务器-NFS
NFS(Network File System)即网络文件系统,它允许网络中的计算机之间通过网络共享资源。将NFS主机分享的目录,挂载到本地客户端当中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,在客户端端看起来,就像访问本地文件一样。RPC,基于C/S模型。程序可以使用这个协议请求网络中另一台计算机上某程序的服务而不需知道网络细节,甚至可以请求对方的系统调用。
2024-01-30 16:57:14 334 1
转载 二维码扫码登录原理
我们从登陆的本质触发,探索二维码扫码登录是如何做到的告诉系统我是谁向系统证明我谁在这个过程中,我们先简单讲了两个前提知识,一个是二维码原理,一个是基于 token 的认证机制。然后我们以二维码状态为轴,分析了这背后的逻辑: 通过 token 认证机制与二维码状态变化来实现扫码登录.需要指出的是,前面的讲的登录流程,它适用于同一个系统的 PC 端,WEB 端,移动端。
2024-01-30 16:55:20 118 1
原创 MySql安装-windows
编辑my.ini文件的内容(MySQL 8.0版本,不需要加skip-grant-tables,路径改为自己电脑上对应的路径)执行 mysqld --initialize-insecure --user=mysql (没输出ERROR信息则没报错)输入:cd /d D:\work\MySQL\mysql-8.3.0\bin (路径换为你电脑对应的位置即可)3.此时输入:mysqld -install (安装mysql服务)右键我的电脑->属性->高级系统设置->环境变量。文件下面的bin文件夹。
2024-01-18 14:03:27 1406 1
原创 深入了解Java中的跳表
跳表是一种高效的数据结构,通过层级索引的方式在有序链表上实现了快速的查找和插入操作。虽然在Java标准库中并没有直接提供跳表的实现,但你可以通过自己实现或使用第三方库来享受跳表的优势。参考文献:[1]:跳表(跳跃表,skipList)总结-java版_java跳表-CSDN博客。
2024-01-14 16:49:04 882 1
原创 欢迎使用CSDN-markdown编辑器
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2016-07-21 10:23:39 95
原创 Callable与Future的介绍
Callable与Future两功能是Java在后续版本中为了适应多并法才加入的,Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其他线程执行的任务。Callable的接口定义如下;public interface Callable { V call() throws Exception;}
2016-03-11 16:27:12 136 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人