- 博客(93)
- 资源 (1)
- 收藏
- 关注
原创 浅谈单例模式
单例模式是一种常用的软件设计模式,其核心目的是确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。这种模式在需要控制资源访问、节省系统资源、管理共享资源以及需要统一调度操作等场景下非常有用。
2024-12-10 11:20:25
943
原创 浅谈synchronized
上次,在《浅谈Java并发编程》一文中,我们了解到,synchronized关键字可以用来解决并发编程中的原子性问题,其实,synchronized关键字不仅可以解决原子性问题,还可以解决有序性和可见性问题。那么synchronized关键字是怎么做到的呢?synchronized关键字如何使用,有什么优缺点呢?一起来看看吧。
2024-12-07 18:32:11
698
原创 浅谈Java并发编程
最近看了看并发编程相关的一些书籍和文章,想谈一谈自己对于并发编程的一些理解和看法,一些浅薄之见,如有不对的地方还请大家批评指正。想要讲清楚一件事,我认为最重要的是以下几点:what?这个东西是啥?why?为什么有了这个东西?这个东西是用来干啥的?解决什么问题?how?这个东西为了解决问题,是怎么做的?只要能把这几点讲清楚,整个事情就一目了然了。今天,我们就用这个框架,来聊一聊并发编程。
2024-12-07 18:30:42
880
原创 递归及其使用
递归是指在函数的定义中使用函数自身的过程。简单来说,递归是通过将大问题分解为更小的子问题来解决问题的一种方法。递归函数在执行时会反复调用自身,直到达到某个终止条件。
2024-06-08 02:30:07
991
原创 使用JSON_EXTRACT匹配某个json类型字段中的某个具体字段
此外,还可以通过使用JSON_UNQUOTE函数来移除提取的结果中的引号,如果结果是一个字符串。在上面的例子中,我们使用JSON_EXTRACT函数从json_doc字段中提取了"employee"对象的"name"属性和"departments"数组的第一个元素。路径可以使用点号(.)来访问JSON对象的属性,也可以使用方括号([])来访问JSON数组的索引。需要注意的是,JSON_EXTRACT函数在MySQL 5.7版本之后才可用,并且需要在MySQL中启用JSON功能。
2024-05-27 22:50:36
965
原创 使用tkMapper时避免传入null值导致查询数据不符合预期
因此实际的SQL会导致一些不符合预期的数据被查出来,如果查询后执行的是更新操作,会带来脏数据;如果查询后执行的是删除操作,会带来误删除;如果这个删除还是个物理删除…那么有没有什么方法能够避免这个问题呢?
2024-05-27 22:24:09
630
原创 使用Optional和直接返回null,哪个更好?
在处理不确定是否能获得对象时,使用 Optional 类型要优于直接返回 null。通过使用 Optional,我们可以明确表示可能为空的情况,强制进行空值检查,并提供链式操作。这种方式提高了代码的可读性、可维护性和安全性。尽管 Optional 类型在处理可能为空的对象时有很多好处,但在使用时也需要谨慎。过度使用 Optional 可能会导致代码变得复杂,因此应根据具体情况合理使用。
2023-09-17 02:26:02
461
原创 基于Redisson使用自定义注解实现分布式锁
基于Redisson使用自定义注解来实现分布式锁,获取不到锁时等待指定时间,并在期间不断尝试获取锁
2023-08-01 18:18:46
482
原创 在Ubuntu 22.04 LTS Jammy Linux 系统上安装MySQL
本教程将展示使用命令终端在Ubuntu 22.04 LTS Jammy 上安装MySQL数据库服务器的简单步骤。
2023-05-17 17:34:40
1619
原创 CountDownLatch:Java中的同步工具
CountDownLatch是Java中的一个同步工具,它允许一个或多个线程等待其他线程完成它们的操作后再继续执行。CountDownLatch通常用于实现等待-通知机制,其中一个或多个线程等待其他线程完成它们的操作,然后再继续执行。在多线程编程中,CountDownLatch是一种非常有用的工具,可以帮助我们实现复杂的同步逻辑.。
2023-04-12 18:04:00
566
原创 cron表达式语法规则及常见示例
cron表达式是一种用于设置定时任务的语法规则。它由6个字段组成,分别表示秒、分、小时、日期、月份和星期几。每个字段都可以设置一个数字、一组数字(用逗号分隔)、一段数字范围(用短横线分隔)、通配符(表示任意值)或者特定的字符(如星期几的英文缩写)。
2023-04-09 21:11:42
6927
原创 大规模数据量下ES如何实现高性能检索?
ElasticSearch,是基于Lucene库的搜索引擎。它提供了一个分布式、多租户的全文搜索引擎,具有HTTP web接口和无模式JSON文档。根据DB引擎排名,Elasticsearch是最受欢迎的企业搜索引擎。ES的特点是分布式、高扩展以及近实时。那么,大规模数据量下ES是如何实现高性能检索的呢?回到我们的文章标题,ES是如何实现高性能模糊查询的呢?ES通过分词然后对每一个单词及其对应文档建立倒排索引,使得能够快速根据关键词找到对应文档id;
2023-02-28 23:11:57
2525
1
原创 parallelStream() 踩坑指南,出现null元素,输出list的size不符合预期
parallelStream()踩坑指南。使用parallelStream()时出现返回的List的size不符合预期,出现null元素,以及出现IndexOutOfBounds和NPE
2022-12-24 16:30:00
2753
1
原创 MySQL中count(*)和information_schema.tables中的table_rows值不相同
前两天我还在高高兴兴地写了一篇文章《一条SQL查询出MySQL数据库中所有表的数据量大小》,心想这也太方便了,只用一条SQL就能统计出所有表的数据量,但没想到,最终还是翻车了。。。
2022-12-03 15:27:29
4126
2
原创 分布式事务之CP架构、AP架构解决方案
在分布式事务之CAP定理一文中,我们了解到一个分布式系统不可能同时满足数据一致性(consistency)、服务可用性(availability)、分区容错性(partition-tolerance)。现实情况下,我们面对的是一个不可靠的网络、有一定概率宕机的设备,这两个因素都会导致Partition,因而分布式系统实现中 P 是一个必须项,而不是可选项。对于分布式系统工程实践,CAP理论更合适的描述是:在满足分区容错的前提下,没有算法能同时满足数据一致性和服务可用性。
2022-11-10 11:38:54
5310
原创 分布式事务之BASE理论
在分布式事务之CAP定理一文中,我们了解到了分布式事务不可能同时实现Consistency、Availability 和 Partition-tolerance。Basically Available(基本可用);Soft state(软状态);Eventually consistent(最终一致性);BASE定理的核心思想:即使无法做到强一致性,但是每个应用可以根据自身的业务特定,采用合适的方式来达到最终一致性。
2022-11-10 00:58:26
379
原创 GET与POST的区别
GET和POST只是HTTP协议中的两种请求方式,而HTTP协议是基于TCP/IP的应用层协议,所以无论GET还是POST,用的都是同一个传输层协议,所以在传输上是没有区别的。
2022-11-09 17:18:12
522
原创 Undo Log、Redo Log、binlog与两阶段提交
在事务ACID与隔离级别一文中我们了解到,事务的Atomicity(原子性)是通过Undo Log来实现的。Undo Log其实就是在事务操作任何数据之前,先将要被覆盖的数据备份到Undo Log,然后才进行数据的修改。如果事务执行过程中出现了错误,或者用户执行了ROLLBACK操作,那么系统就可以根据Undo Log中备份的数据,将数据恢复到事务开始前的初始状态。Redo Log是InnoDB存储引擎特有的日志,位于引擎层;Redo Log 是一种物理日志,记录的是“在某个数据页上做了什么修改”;
2022-11-09 15:33:10
924
原创 使用tkmapper避免更新on update字段
在日常开发中,我们的MySQL数据库表都会有mtime字段,用来记录某条记录最后一次更新的时间,一般设置为on update,也就是这条记录有任何的变动,mtime字段的值就会自动更新。如何在不更新mtime的情况下,更新其他字段呢?
2022-10-17 15:54:04
591
原创 Elasticsearch倒排索引(二)深入Term Index
Term Index是一种对映射关系中的词语集合也就是Term Dictionary进行高效索引的数据结构。Term Index是以怎样的形式进行组织的呢?
2022-09-20 00:47:39
2300
原创 Python环境找不到vlc —— 要先安装VLC Media Player
Python环境找不到vlc —— 要先安装VLC Media Player
2022-09-19 18:17:52
3240
原创 conda list 与 pip list 命令的区别
1. `conda list`和`pip list`命令都是列出环境下所有已安装的包;2. `conda list`命令除了得到当前虚拟环境下的所有已安装的包,还会显示关联环境下的已安装的包;3. `pip list`命令只显示当前虚拟环境下的所有已安装的包;4. 当关联环境下有某个包,再用conda命令在其他虚拟环境下下载该包时,就会直接关联,无需下载;5. `pip list`命令得到的结果是`conda list`得到的结果的子集;
2022-09-19 18:11:24
8293
1
原创 Elasticsearch倒排索引(一)简介
关系数据库的索引大多是B-Tree结构,而ES使用倒排索引。倒排索引中的所有词语存储在词典中,每个词语又指向包含它的文档信息列表。在某些情况下,两种不同的数据索引方法决定了这两种产品在性能和速度上的差异。例如,在包含数亿数据的关系型数据表上执行最简单的计count查询时,关系型数据库可能需要几秒的响应时间。如果数据表的设计不合理,甚至可能拖垮整个数据库,影响其他数据服务;而ES可以在毫秒级别返回,该查询对整个集群的影响微乎其微。除此之外,ES建立在Lucene基础之上,与生俱来就能完成分词匹配,并且支持多种
2022-09-19 00:58:23
1049
原创 Python判断字符串相等
有时候两个字符串打印出来看着一样,但是判断却是`False`?如果两个字符串末尾有其他符号,比如回车`\n`,print的时候无法发现的有时候`==`判断是 `True` ,`is` 判断却是 `False`?这是因为两个字符串来自不同的内存块,内存地址不一样。`id() `函数用于获取对象的内存地址。
2022-09-16 17:22:13
14472
原创 NoSQL常用数据结构 LSM Tree 简介
LSM Tree 的全名是 Log Structured Merge Tree;顾名思义,LSM Tree是一种采用了日志追加写方式,有一定的结构,且会合并的树;LSM Tree的核心特点是:是一种分层,有序,面向磁盘的数据结构,其核心思想是充分利用磁盘批量的顺序写性能要远比随机写性能高出很多。...
2022-08-16 23:26:30
1322
原创 一文讲透Redis缓存穿透、缓存击穿与缓存雪崩
1. Redis缓存穿透:key对应的数据在缓存和数据库中都不存在;2. Redis缓存击穿:key对应的数据在缓存中不存在,在数据库中存在;3. Redis缓存雪崩:key对应的数据在数据库中存在,但在缓存中集中失效;......
2022-08-15 10:47:59
751
原创 一文读懂什么是布隆过滤器
1. 布隆过滤器(Bloom Filter)是1970年由布隆提出的。2. 它实际上是一个很长的二进制位数组和一系列随机映射函数。3. 布隆过滤器可以用于检索一个元素是否在一个集合中。4. 它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难。...
2022-08-15 10:39:49
653
原创 Redis持久化RDB与AOF
1. 很多时候我们需要持久化数据,也就是将内存中的数据写⼊到硬盘⾥⾯,⼤部分原因是为了之后重⽤数据(⽐如重启机器、机器故障之后恢复数据),或者是为了防⽌系统故障⽽将数据备份到⼀个远程位置。2. Redis会单独fork一个与当前进程一模一样的子进程来进行持久化,这个子进程的所有数据(变量、环境变量、程序程序计数器等)都和原进程一模一样,会先将数据写入到一个临时文件中,待持久化结束了,再用这个临时文件替换上次持久化好的文件,整个过程中,主进程不进行任何的I/O操作,这就确保了极高的性能。3. redis.
2022-08-10 22:16:41
363
原创 ElasticSearch 之 文本搜索
1. 作为一款搜索引擎框架,文本搜索是其核心功能。2. ES在文本索引的建立和搜索过程中依赖两大组件,即Lucene和分析器。3. Lucene负责进行倒排索引的物理构建,分析器负责在建立倒排索引前和搜索前对文本进行分词和语法处理。...
2022-08-02 23:00:53
1249
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人