摘要:
MySQL中有六种日志文件,分别是:重做日志(redo log)、回滚日志(undo log)、二进制日志(binlog)、错误日志(errorlog)、慢查询日志(slow query log)、一般查询日志(general log),中继日志(relay log)。 重做日志(redo log) 阅读全文
摘要:
事务的四大特性(ACID):原子性(Atomicity)、一致性(Consistency)、隔离型(Isolation)以及持久性(Durability)。 事务想要做到什么效果?无非是要做到可靠性以及并发处理: 可靠性:数据库要保证当insert或update操作时抛异常或者数据库crash的时候 阅读全文
摘要:
ZooKeeper是一个开放源码的分布式应用程序协调服务,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。 ZooKeeper设计目的 最终一致性:client不论连接到哪个Server,展示给它都是同一个视图,这是zookeeper最重要的性能。 可靠性:具有简单、健壮、良好的性能,如 阅读全文
摘要:
阻塞队列的处理方法 阻塞队列实现了 BlockingQueue 接口,并且有多组处理方法。 抛出异常 add方式是往队列里面添加元素,如果队列满了,会抛出异常 remove方法是删除元素,如果队列里面的不够删除了则抛出异常 element 方法是返回队列的头部节点,但是并不删除。如果用这个方法去操作 阅读全文
摘要:
减少上下文切换的方法有无锁并发编程、CAS算法、使用最少线程和使用协程。 无锁并发编程。多线程竞争锁时,会引起上下文切换,所以多线程处理数据时,可以使用一些方法来避免使用锁。如将数据的ID按照Hash算法取模分段,不同的线程处理不同段的数据。 CAS算法。Java的Atomic包使用CAS算法来更新 阅读全文
摘要:
java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查),将会导致数据不准确,相互之间产生冲突,因此加入同步锁以避免在该线程没有完成操作之前,被其他线程的调用,从而保证了该变量的唯一性和准确性。 同步方法 有synchronized关键字修饰的方法。 同步代码块 有s 阅读全文
摘要:
Lock 是一个接口,而 synchronized 是 Java 中的关键字,synchronized 是内置的语言实现; synchronized 在发生异常时,会自动释放线程占有的锁,因此不会导致死锁现象发生;而 Lock 在发生异常时,如果没有主动通过 unLock() 去释放锁,则很可能造成 阅读全文
摘要:
CyclicBarrier允许一组线程互相等待,直到到达某个公共屏障点 (Common Barrier Point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 Barrier 在释放等待线程后可以重用,所以称它为循环 ( Cycl 阅读全文
摘要:
ConcurrentHashMap 的实现方式和 Hashtable 不同,不采用独占锁的形式,更高效,其中在JDK1.7 和 JDK1.8 中实现的方式也略有不同。 JDK1.7 中采用分段锁和 HashEntry 使锁更加细化。ConcurrentHashMap 采用了分段锁技术,其中 Segm 阅读全文
摘要:
什么是CAS CAS 是compareand swap 的缩写, 即我们所说的比较交换。 CAS 是一种基于锁的操作, 而且是乐观锁。在java 中锁分为乐观锁和悲观锁。悲观锁是将资源锁住,等一个之前获得锁的线程释放锁之后, 下一个线程才可以访问。而乐观锁采取了一种宽泛的态度,通过某种方式不加锁来处 阅读全文
摘要:
AQS 是构建锁或者其他同步组件的基础框架(如 ReentrantLock、ReentrantReadWriteLock、Semaphore 等), 包含了实现同步器的细节(获取同步状态、FIFO 同步队列)。AQS 的主要使用方式是继承,子类通过继承同步器,并实现它的抽象方法来管理同步状态。 维护 阅读全文
摘要:
服务熔断 当某服务出现不可用或响应超时的情况时,为了防止整个系统出现雪崩,暂时停止对该服务的调用。 服务降级 服务降级是从整个系统的负荷情况出发和考虑的,对某些负荷会比较高的情况,为了预防某些功能(业务场景)出现负荷过载或者响应慢的情况,在其内部暂时舍弃对一些非核心的接口和数据的请求,而直接返回一个 阅读全文
摘要:
微服务架构的系统是一个分布式的系统,按业务进行划分为独立的服务单元,解决单体系统的不足,同时也满足越来越复杂的业务需求。 单体架构存在的不足 在小型应用的初期,访问量小的时候这种架构的性价比还是比较高的,开发速度快,成本低,但是随着业务的发展,逻辑越来越复杂,代码量越来越大,代码得可读性和可维护性越 阅读全文
摘要:
应对大流量的一些思路 缓存:数据尽早进入缓存,离程序近一点,不要大量频繁的访问DB 降级:如果不是核心链路,那么就把这个服务降级掉。 限流:在一定时间内把请求限制在一定范围内,保证系统不被冲垮,同时尽可能提升系统的吞吐量。 有些时候,缓存和降级是解决不了问题的,比如,电商的双十一,用户的购买,下单等 阅读全文
摘要:
在JVM的新生代内存中,为什么除了Eden区,还要设置两个Survivor区? 为什么要有Survivor区 如果没有Survivor,Eden区每进行一次Minor GC,存活的对象就会被送到老年代。老年代很快被填满,触发Major GC(因为Major GC一般伴随着Minor GC,也可以看做 阅读全文
摘要:
TCP协议特点 当一台计算机想要与另一台计算机通讯时,两台计算机之间的通信需要畅通且可靠,这样才能保证正确收发数据。例如,当你想查看网页或查看电子邮件时,希望完整且按顺序查看网页,而不丢失任何内容。当你下载文件时,希望获得的是完整的文件,而不仅仅是文件的一部分,因为如果数据丢失或乱序,都不是你希望得 阅读全文
摘要:
什么是docker docker是一个开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源。 docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的linux服务器,也可以实现虚拟化。 容器是完全使用沙箱机制,相互之间不会有任何接口,并且 阅读全文
摘要:
在实际的业务中,难免会跟第三方系统进行数据的交互与传递,那么如何保证数据在传输过程中的安全呢(防窃取)?除了https的协议之外,能不能加上通用的一套算法以及规范来保证传输的安全性呢? 过程如下: 接口调用方(客户端)向接口提供方(服务器)申请接口调用账号,申请成功后,接口提供方会给接口调用方一个a 阅读全文
摘要:
我们需要明白: 最常用的数据尽可能放在更高层、更小的存储器中,只有在当前层找不到,才向更低层、更大的存储器中寻找。这也就解释了,当处理大规模数据的时候(指无法将数据一次性存入内存),算法的实际运行时间,往往取决于数据在不同存储级别之间的IO次数。因此,要想提升速度,关键在于减少IO。 磁盘读取数据是 阅读全文
摘要:
对称加密 对称加密,是指,加密方和解密方使用同样的秘钥来进行加密和解密。 在对称加密算法中,数据发信方将明文(原始数据)和加密(密钥)一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。 常用的对称加密算法:AES,RC4,3DES 非对称加密 非对称加密算法实现机密信息交换的基本过程是: 阅读全文