随笔分类 -  面面俱到

摘要:SimpleDateFormat(下面简称sdf)类内部有一个Calendar对象引用,它用来储存和这个sdf相关的日期信息,例如sdf.parse(dateStr), sdf.format(date) 诸如此类的方法参数传入的日期相关String, Date等等, 都是交由Calendar引用来储 阅读全文
posted @ 2023-03-20 13:50 残城碎梦 阅读(31) 评论(0) 推荐(0) 编辑
摘要:es 写数据过程 客户端选择一个 node 发送请求过去,这个 node 就是 coordinating node (协调节点)。 coordinating node 对 document 进行路由,将请求转发给对应的 node(有 primary shard,主分片)。 实际的 node 上的 p 阅读全文
posted @ 2023-03-20 11:21 残城碎梦 阅读(49) 评论(0) 推荐(0) 编辑
摘要:异步复制 多线程复制 增强半同步复制 异步复制 MySQL的复制默认是异步的,主从复制至少需要两个MySQL服务,这些MySQL服务可以分布在不同的服务器上,也可以在同一台服务器上。 MySQL主从异步复制是最常见的复制场景。数据的完整性依赖于主库binlog的不丢失,只要主库的binlog不丢失, 阅读全文
posted @ 2023-03-20 09:43 残城碎梦 阅读(97) 评论(0) 推荐(0) 编辑
摘要:常见的受检异常如下: java.lang.ClassNotFoundException 找不到某个类 java.lang.CloneNotSupportedException 不支持克隆异常,当没有实现Cloneable接口或者不支持克隆方法时,调用其clone()方法则抛出该异常。 java.la 阅读全文
posted @ 2023-03-20 09:02 残城碎梦 阅读(194) 评论(0) 推荐(0) 编辑
摘要:NoClassDefFoundError 是一个 Error 类型的异常,是由 JVM 引起的,不应该尝试捕获这个异常。 引起该异常的原因是 JVM 或 ClassLoader 尝试加载某类时在内存中找不到该类的定义,该动作发生在运行期间,即编译时该类存在,但是在运行时却找不到了,可能是编译后被删除 阅读全文
posted @ 2023-03-20 08:47 残城碎梦 阅读(16) 评论(0) 推荐(0) 编辑
摘要:在一个方法中如果发生异常,这个方法会创建一个异常对象,并转交给 JVM,该异常对象包含异常名称,异常描述以及异常发生时应用程序的状态。创建异常对象并转交给 JVM 的过程称为抛出异常。可能有一系列的方法调用,最终才进入抛出异常的方法,这一系列方法调用的有序列表叫做调用栈。 JVM 会顺着调用栈去查找 阅读全文
posted @ 2023-03-20 08:42 残城碎梦 阅读(48) 评论(0) 推荐(0) 编辑
摘要:分布式事务的实现主要有以下 5 种方案: XA 方案 TCC 方案 本地消息表 可靠消息最终一致性方案 最大努力通知方案 两阶段提交方案/XA方案 所谓的 XA 方案,即:两阶段提交,有一个事务管理器的概念,负责协调多个数据库(资源管理器)的事务,事务管理器先问问各个数据库你准备好了吗?如果每个数据 阅读全文
posted @ 2023-03-19 21:46 残城碎梦 阅读(34) 评论(0) 推荐(0) 编辑
摘要:Spring Boot目的是用来简化Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。 在过去,我们要让一个Spring项目启动,往往需要配置很多的xml配置文件,但是在使用SpringBoot之后,我们甚至无需写一行xml,就可以直接 阅读全文
posted @ 2023-03-19 21:25 残城碎梦 阅读(36) 评论(0) 推荐(0) 编辑
摘要:controller默认是单例的,不要使用非静态的成员变量,否则会发生数据逻辑混乱。正因为单例所以不是线程安全的。 如何保证并发的安全? 不要在controller中定义成员变量。 万一必须要定义一个非静态成员变量时候,则通过注解@Scope("prototype"),将其设置为多例模式。 在Con 阅读全文
posted @ 2023-03-19 21:04 残城碎梦 阅读(21) 评论(0) 推荐(0) 编辑
摘要:引用拷贝 创建一个指向对象的引用变量的拷贝。 对象拷贝 创建对象本身的一个副本。 注:深拷贝和浅拷贝都是对象拷贝 浅拷贝 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。即对象的浅拷贝会对“主”对象进行拷贝,但不会复制主对象里面的对象。”里面的对象“会在原 阅读全文
posted @ 2023-03-19 21:02 残城碎梦 阅读(25) 评论(0) 推荐(0) 编辑
摘要:MySQL中有六种日志文件,分别是:重做日志(redo log)、回滚日志(undo log)、二进制日志(binlog)、错误日志(errorlog)、慢查询日志(slow query log)、一般查询日志(general log),中继日志(relay log)。 重做日志(redo log) 阅读全文
posted @ 2023-03-19 18:25 残城碎梦 阅读(114) 评论(0) 推荐(0) 编辑
摘要:事务的四大特性(ACID):原子性(Atomicity)、一致性(Consistency)、隔离型(Isolation)以及持久性(Durability)。 事务想要做到什么效果?无非是要做到可靠性以及并发处理: 可靠性:数据库要保证当insert或update操作时抛异常或者数据库crash的时候 阅读全文
posted @ 2023-03-19 18:22 残城碎梦 阅读(85) 评论(0) 推荐(0) 编辑
摘要:ZooKeeper是一个开放源码的分布式应用程序协调服务,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。 ZooKeeper设计目的 最终一致性:client不论连接到哪个Server,展示给它都是同一个视图,这是zookeeper最重要的性能。 可靠性:具有简单、健壮、良好的性能,如 阅读全文
posted @ 2023-03-19 17:47 残城碎梦 阅读(52) 评论(0) 推荐(0) 编辑
摘要:阻塞队列的处理方法 阻塞队列实现了 BlockingQueue 接口,并且有多组处理方法。 抛出异常 add方式是往队列里面添加元素,如果队列满了,会抛出异常 remove方法是删除元素,如果队列里面的不够删除了则抛出异常 element 方法是返回队列的头部节点,但是并不删除。如果用这个方法去操作 阅读全文
posted @ 2023-03-19 15:29 残城碎梦 阅读(32) 评论(0) 推荐(0) 编辑
摘要:减少上下文切换的方法有无锁并发编程、CAS算法、使用最少线程和使用协程。 无锁并发编程。多线程竞争锁时,会引起上下文切换,所以多线程处理数据时,可以使用一些方法来避免使用锁。如将数据的ID按照Hash算法取模分段,不同的线程处理不同段的数据。 CAS算法。Java的Atomic包使用CAS算法来更新 阅读全文
posted @ 2023-03-19 15:12 残城碎梦 阅读(50) 评论(0) 推荐(0) 编辑
摘要:java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查),将会导致数据不准确,相互之间产生冲突,因此加入同步锁以避免在该线程没有完成操作之前,被其他线程的调用,从而保证了该变量的唯一性和准确性。 同步方法 有synchronized关键字修饰的方法。 同步代码块 有s 阅读全文
posted @ 2023-03-19 15:11 残城碎梦 阅读(51) 评论(0) 推荐(0) 编辑
摘要:Lock 是一个接口,而 synchronized 是 Java 中的关键字,synchronized 是内置的语言实现; synchronized 在发生异常时,会自动释放线程占有的锁,因此不会导致死锁现象发生;而 Lock 在发生异常时,如果没有主动通过 unLock() 去释放锁,则很可能造成 阅读全文
posted @ 2023-03-19 15:04 残城碎梦 阅读(16) 评论(0) 推荐(0) 编辑
摘要:CyclicBarrier允许一组线程互相等待,直到到达某个公共屏障点 (Common Barrier Point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 Barrier 在释放等待线程后可以重用,所以称它为循环 ( Cycl 阅读全文
posted @ 2023-03-19 15:03 残城碎梦 阅读(49) 评论(0) 推荐(0) 编辑
摘要:ConcurrentHashMap 的实现方式和 Hashtable 不同,不采用独占锁的形式,更高效,其中在JDK1.7 和 JDK1.8 中实现的方式也略有不同。 JDK1.7 中采用分段锁和 HashEntry 使锁更加细化。ConcurrentHashMap 采用了分段锁技术,其中 Segm 阅读全文
posted @ 2023-03-19 15:01 残城碎梦 阅读(21) 评论(0) 推荐(0) 编辑
摘要:什么是CAS CAS 是compareand swap 的缩写, 即我们所说的比较交换。 CAS 是一种基于锁的操作, 而且是乐观锁。在java 中锁分为乐观锁和悲观锁。悲观锁是将资源锁住,等一个之前获得锁的线程释放锁之后, 下一个线程才可以访问。而乐观锁采取了一种宽泛的态度,通过某种方式不加锁来处 阅读全文
posted @ 2023-03-19 14:58 残城碎梦 阅读(52) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示