- 博客(23)
- 收藏
- 关注
原创 serializable必要性和先进性
其实,看一下接口的注释说明就知道,当我们让实体类实现Serializable接口时,其实是在告诉JVM此类可被序列化,可被默认的序列化机制序列化。序列化的过程,就是一个“freeze”的过程,它将一个对象freeze(冷冻)住,然后进行存储,等到再次需要的时候,再将这个对象de-freeze就可以立即使用。是启用其序列化功能的接口。实现java.io.Serializable 接口的类是可序列化的。我们以为的没有进行序列化,其实是在声明的各个不同变量的时候,由具体的数据类型帮助我们实现了序列化操作。
2023-09-21 21:25:36
60
原创 服务层异常该如何处理
我们面对异常往往会遵循约定俗成的一些规范或者习惯性抛出异常,那么我们该如何正确处理异常呢,实际上我们处理异常是为了写正确的代码,那么我们提供以下思路,我们应该思考下面几个问题:由解决的问题决定的。问题不同,解决方案不同。如一个web接口接受用户请求,参数age,也许业务要求字段是0~150之间整数。如输入字符串或负数就肯定不接受。一般在后端某地做输入合法性检查,不过就抛异常。但归根到底这问题“正确”解决方法总是要以某种形式提示用户。而提示用户是某种前端工作,就要看界面是app,H5+AJAX还是类似于[js
2023-09-19 21:41:43
91
原创 系统为什么需要分层
计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决,计算机整个体系从上到下都是按照严格的层次结构设计的。好了,再来说回:“为什么网络要分层?
2023-09-18 21:41:29
64
原创 es分片(搜索)
翻页的时候,翻得越深,每个shard返回的数据越多,而且协调节点处理的时间越长,当然是用scroll,scroll会一次性的生成所有数据的一个快照,然后每次翻页都是通过移动游标完成的。对于那些你觉得比较热的数据,经常会有人访问的数据,最好做一个专门的缓存预热子系统,就是对热数据,每隔一段时间,你就提前访问以下,让数据进入filesystem cache里面去,这样期待下次访问的时候,性能会更好一些。ES 中的文档存储在索引中,索引的最小存储单位是分片,不同的索引存储在不同的分片中。
2023-09-16 21:30:49
557
原创 es概念简述
逐行扫描,也就是全表扫描,随着数据量增加,其查询效率也会越来越低。- 根据非索引字段,或者索引字段中的部分词条查找时,只能全表扫描。- 因为词条唯一性,可以给词条创建索引,例如hash表结构索引。- 创建表,每行数据包括词条、词条所在文档id、位置等信息。1)用户搜索数据,条件是title符合`"%手机%"`倒排索引的概念是基于MySQL这样的正向索引而言的。- 将每一个文档的数据利用算法分词,得到一个个词条。- 根据词条搜索、模糊搜索时,速度非常快。两者再基于某种方式,实现数据的同步,保证一致性。
2023-09-15 20:01:14
31
原创 Mq重复消费问题
Kafka,Kafka 实际上有个 offset 的概念,就是每个消息写进去,都有一个 offset,代表消息的序号,然后 consumer 消费了数据之后,每隔一段时间(定时定期),会把自己消费过的消息的 offset 提交一下。因为在网络延迟的情况下,消息重复发送的问题不可避免的发生,如果非要实现消息不可重复发送,那基本太难,因为网络环境无法预知,还会使程序复杂度加大,因此默认允许消息重复发送。幂等性,通俗点说,就一个数据,或者一个请求,给你重复来多次,你得确保对应的数据是不会改变的,不能出错。
2023-09-13 20:59:15
163
原创 rmq优势
Channel 是在 connection内部建立的逻辑连接,如果应用程序支持多线程,通常每个thread创建单独的 channel 进行通讯,AMQP method包含了channel id 帮助客户端和message broker 识别 channel,所以 channel之间是完全隔离的。Virtual host:出于多租户和安全因素设计的,把 AMQP 的基本组件划分到一个虚拟的分组中,类似于网络中的 namespace概念。的一种语言,在电信领域使用广泛。
2023-09-12 21:36:29
98
原创 JSON转换
(4)、JSON.toJSONString(user, SerializerFeature.WriteNullStringAsEmpty),会将String类型的字段加上"",没有显示初始化的String类型参数保留,保留默认初始化为null的字段,同时丢掉其他未初始化的、非String类型的字段。
2023-09-11 21:44:26
32
原创 【无标题】
今天给大家分享的是Mybatis-plus 插件的分页机制,说起分页机制,相信我们程序员都不陌生,今天,我就给大家分享一下Mybatis-plus的分页机制,供大家学习和Copy。这一小结,我们主要是对mybatis-pluts 插件的分页功能的使用,做了简单介绍。以上就是我们使用分页的步骤了,这里需要注意一些问题,一定要把相应的注解给加上去,要不然,是没办法使用的。如果你想看代码,可以直接跳到代码区域,这里只是一些简单的说明,如果你想学习,建议可以看看这一块的任容。使用方法,返回分页的数据。
2023-09-05 21:48:04
33
原创 mybatis分页查询问题
今天给大家分享的是Mybatis-plus 插件的分页机制,说起分页机制,相信我们程序员都不陌生,今天,我就给大家分享一下Mybatis-plus的分页机制,供大家学习和Copy。我们需要在这个配置类中添加paginationInterceptor()方法,进行分页功能的配置,其实就是配置分页功能的拦截器。这一小结,我们主要是对mybatis-pluts 插件的分页功能的使用,做了简单介绍。如果你想看代码,可以直接跳到代码区域,这里只是一些简单的说明,如果你想学习,建议可以看看这一块的任容。
2023-09-04 17:58:09
288
原创 设计模式详解
3. 行为型模式:用于描述对象的行为,包括责任链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式和访问者模式。行为型模式:描述类或对象之间如何相互协作共同完成单个对象无法完成的任务,代表有模板方法模式、策略模式、观察者模式、备忘录模式。2. 结构型模式:用于描述类或对象的组合,包括适配器模式、桥接模式、组合模式、装饰者模式、外观模式、享元模式和代理模式。创建型模式:主要是描述对象的创建,代表有单例、原型模式、工厂方法、抽象工厂、建造者模式。
2023-08-25 21:25:08
38
原创 redis缓存机制
缓存穿透指的是先查询Redis,如果Redis中没有数据再查询数据库,如果数据库也没有这条数据则会导致缓存穿透问题。缓存击穿是指一个即将在Redis中保存的数据被查询,查询结果在Redis中不存在但是数据库中有,导致缓存击穿问题。在使用缓存时,需要考虑数据量不能太大、使用频繁的数据适合保存在Redis中、保存在Redis中的数据一般不会频繁修改。为了解决Redis内存容量有限的问题,可以采用缓存淘汰策略,如allkeys-random,即随机删除所有数据中的某些数据。
2023-08-24 22:07:51
197
原创 事物传播机制中的transactional
5. 在执行buyGoodsByTx() 方法 先调用 事务管理器的 doBegin() , 调用 buyGoodsByTx()\n如果执行没有发生异常,则调用 事务管理器的 doCommit(), 如果发生异常 调用事务管理器的 doRollback()3.@Transactional 底层使用的仍然是AOP机制\n。4. 底层是使用动态代理对象来调用buyGoodsByTx\n。即将标识的方法中的,对数据库的操作作为一个事务管理\n。
2023-08-23 22:49:36
38
原创 redis
【5】Zset(sorted set:有序集合)**:**Reids Zset 和 Set 一样也是 String 类型元素的结合,且不允许重复的成员。● INCR/DECR/INCRBY/DECRBY:前两个是递增 1 和递减 1 【INCR key】,后两个是指定递增和递减的数字【INCRBY KEY 倍数】。【3】List(列表):Redis 列表是简单的字符串列表,按照插入顺序排序,可以在列表的头部或者尾部插入新的节点。● GET:获取某个 key 的 value 值【GET key】;
2023-08-21 20:48:19
27
原创 lombok那些迷人的特性
Builder可以被放在一个类上,或者一个构造函数上,或者一个方法上。虽然 "在类上 "和 "在构造函数上 "的模式是最常见的使用情况,但@Builder最容易用 "方法 "的使用情况来解释。在构建器中: target的每个参数的类似“setter”的方法:它与该参数具有相同的类型和相同的名称。在包含target的类中:一个builder()方法,它可以创建一个新的builder实例。在构建器中: target的每个参数一个私有的非静态非final字段。在构建器中:一个包私有无参数空构造函数。
2023-08-20 16:18:32
35
原创 【无标题】
2.就是因为Spring对一些Bean(如RequestContextHolder、TransactionSynchronizationManager、LocaleContextHolder等)中非线程安全的“状态性对象”采用ThreadLocal进行封装,让它们也成为线程安全的“状态性对象”,因此有状态的Bean就能够以singleton的方式在多线程中正常工作了。
2023-08-18 21:23:11
35
原创 那些困扰Java人的bug
3.Sql语句报错,大家写代码经常会蜜汁自信而不经意间写下错误的sql语句,排查错误又难以发现,比如我们使用注解的方式crud在书写table操作代码的时候往往不能正确引用,正确引用应该是表名.字段的形式。4.依赖文件导入报错,project爆红情况应该十分常见,深受其害的同学,可以尝试护士错误直接执行diamagnetic,我们会发现并不影响代码执行,这个错误原因暂时并没有发现,属于比较离奇的报错.5.数据库未连接,这种情况通常由于思路的不清晰导致,掌握正确连接数据库是高开的基本素养。
2023-08-15 21:12:12
64
原创 依赖和常用工具
函数--定义一个函数(方法)实现两个数相加--><script>// 方式一:定义函数(方法)// 方式二:定义函数</script>
2023-08-14 21:10:42
45
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人