- 博客(38)
- 收藏
- 关注
原创 数据库乐观锁知识点
2、其次,由于乐观锁是基于数据版本号或时间戳实现的,如果数据更新非常频繁,那么版本号或时间戳的变化也会非常快,这可能会导致并发更新的成功率降低。当更新操作执行时,只有当当前的 timestamp 值等于预期值 ‘2024-03-31 10:00:00’ 时才会更新,否则更新操作将失败。在使用乐观锁的情况下,不会对数据库中的数据进行加锁,而是通过对比当前数据版本号来判断是否允许更新。当更新操作执行时,只有当当前的 version 值等于预期值 0 时才会更新,否则更新操作将失败。数据库乐观锁实现方式。
2024-09-09 09:30:11 437
原创 Zookeeper知识点
ZooKeeper 是一个分布式的,开放源码的分布式应用程序协同服务。ZooKeeper 的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。
2024-09-06 14:21:02 1015
原创 手写HashMap(链表+数组)
手写HashMappackage HashMap;/** * @author ma * @date 2022/1/24 */public class MyHashMap<K, V> { class Node<K, V>{ //键值对 private K key; private V value; //链表、后继 private Node<K, V> next;
2022-01-24 22:39:23 332
原创 十大排序算法Java版
十大排序算法时间、空间复杂度比较排序算法平均时间复杂度最差时间复杂度空间复杂度数据对象稳定性冒泡排序O(n2)O(n2)O(1)稳定选择排序O(n2)O(n2)O(1)数组不稳定、链表稳定插入排序O(n2)O(n2)O(1)稳定快速排序O(n*log2n)O(n2)O(log2n)不稳定堆排序O(n*log2n)O(n*log2n)O(1)不稳定归并排序O(n*log2n)O(n*log2n)O(n)
2022-01-22 13:07:44 206
原创 Java常见设计模式详解
设计模式的类型创建型模式–>对象怎么来结构型模式–>对象和谁有关行为型模式–>对象与对象在干什么序号模式 & 描述包括1创建型模式 这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。工厂模式(Factory Pattern)、抽象工厂模式(Abstract Factory Pattern)、单例模式(Singleton Pattern)
2022-01-13 09:32:06 260
原创 JVM知识点大全
什么是JVM?JVM——Java虚拟机,它是Java实现平台无关性的基石Java程序运行的时候,编译器将Java文件编译成平台无关的Java字节码文件(.class),接下来对应平台JVM对字节码文件进行解释,翻译成对应平台匹配的机器指令并运行同时JVM也是一个跨语言的平台,和语言无关,只和class的文件格式关联,任何语言,只要能翻译成符合规范的字节码文件,都能被JVM运行JVM的内存区域JVM内存区域最粗略的划分可以分为堆和栈,按照虚拟机规范,可以分为以下几个区域:JVM内存分为线程私有的区
2021-12-31 15:37:42 959
原创 枚举知识详解
枚举的使用限定了值域,更安全了在JDK5中新引入的枚举完美地解决了之前通过常量来表示离散量所带来的问题,大大加强了程序的可读性、易用性和可维护性,并且在此基础之上又进行了扩展,使之可以像类一样去使用,更是为Java对离散量的表示上升了一个台阶。因此,如果在Java中需要表示诸如颜色、方式、类别、状态等等数目有限、形式离散、表达又极为明确的量,应当尽量舍弃常量表示的做法,而将枚举作为首要的选择enum关键字在 java5 中引入,表示一种特殊类型的类,其总是继承java.lang.Enum类以这种方
2021-12-28 17:55:16 333
原创 MySQL全面优化
Mysql优化三个方面:SQL优化设计优化硬件优化SQL优化通过优化SQL语句以及索引来提高MySQL数据库的运行效率分页优化SELECT film_id,description FROM film ORDER BY title LIMIT 50,5;优化方案:延迟关联先通过where条件提取出主键,再将该表与原数据表关联,通过主键id提取数据行,而不是通过原来的二级索引提取数据行SELECT film.film_id,film.descriptionFROM film
2021-12-15 11:13:26 1313
原创 Redis缓存相关问题
缓存相关问题缓存穿透定义查询一个不存在的数据,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到DB去查询,可能导致DB挂掉解决方法布隆过滤器将数据库中所有的查询条件,放入布隆过滤器中,当一个请求过来时,先经过布隆过滤器进行查询,如果判断请求查询值存在,则继续查,如果判断请求查询不存在,直接丢弃缓存空对象查询返回的数据为空,仍把这个空值进行缓存,并设置一个较短的过期时间布隆过滤器(Bloom Filter)概念:是一种空间效率高的概率型数据结构,专门
2021-12-09 22:35:39 91
原创 Redis性能优化
性能优化避免慢查询命令当发现redis性能变慢的时候,可以通过redis日志,或者是latency monitor工具,查询变慢的请求,根据请求对应的具体命令以及官方文档,确认下是否采用了复杂度高的查询,如果确实存在大量的慢查询命令则优化用其他高效的命令替代eg:当需要返回一个set中的所有成员时,使用sscan多次迭代返回代替smembers(避免一次返回大量数据,造成线程阻塞)当需要执行排序、并集、交集操作时,可以在客户端完成,而不要使用sort、sunion、sinter这些命令
2021-12-09 17:58:28 2342
原创 Docker基础知识
简介Docker是一个开源的应用容器引擎,是一个轻量级容器技术Docker支持将软件编译成一个镜像,然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像运行中的这个镜像称为容器,容器启动是非常快速的核心概念docker主机(Host):安装了docket程序的机器(Docker直接安装在操作系统之上)docker客户端(Client):连接docker主机进行操作docker仓库(Registry):用来保存各种打包好的软件docker镜像(Imag
2021-12-08 10:36:35 103
原创 微服务与Spring Cloud
微服务概念微服务是一种小型的应用程序,并且使用轻量级的设计方法和轻量级的HTTP通信定义微服务架构:将复杂的系统使用组件化的形式进行拆分,并使用轻量通信方式进行整合的一种设计方法微服务:通过这种架构设计方法拆分出来的一个独立的组件化的小应用精髓:分而治之,合而用之流程:微服务轻量级的HTTP通信,不同于传统的做法,使用实现设定好的IP和端口号进行访问,而是通过服务注册与发现的机制,使用服务的实例名称进行调用。在这个过程中,服务发现机制将协同路由代理服务和负载均衡器一起工作,当客户端使用服务
2021-12-06 15:01:45 576
原创 Kafka基础知识以及安装步骤
Kafka基础知识消息系统点对点消息系统发送者——消息队列——接收者生产者发消息到队列,一个队列可以有多个消费者,但一条消息只能被一个接收者接收,当没有消费者时,这个消息会被保存直到有一个可用的消费者,通过队列实现了一个可靠的负载均衡发布订阅消息系统发送者——消息队列——多个接收者生产者发消息到队列,订阅了这个topic的订阅者可以收到消息术语Producer:消息生产者:向Broker发指定Topic消息的客户端Consumer:消息消费者:通过订阅一组Topic的
2021-12-03 15:30:44 239
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人