随笔分类 - 面面俱到
摘要: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 非对称加密 非对称加密算法实现机密信息交换的基本过程是:
阅读全文
摘要:为什么用了 HTTPS 就是安全的? HTTPS 的底层原理如何实现? 用了 HTTPS 就一定安全吗? HTTPS 的实现原理 大家可能都听说过 HTTPS 协议之所以是安全的,是因为 HTTPS 协议会对传输的数据进行加密,而加密过程是使用了非对称加密实现。 但其实,HTTPS 在内容传输的加密
阅读全文
摘要:在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,这样不仅效率低下,而且大量浪费有限的内存空间。 因此当对字符串进行修改的时候,需要使用 StringBuffer 和 Str
阅读全文
摘要:Java内存区域和内存模型是不一样的东西,内存区域是指JVM运行时将数据分区域存储,强调对内存空间的划分。 而内存模型(Java Memory Model,简称 JMM )是定义了线程和主内存之间的抽象关系,即 JMM 定义了 JVM 在计算机内存(RAM)中的工作方式,如果我们要想深入了解Java
阅读全文
摘要:肯定不是。 首先,如果程序连try块都执行不到,那么finally块自然就不会执行到了。 有两个场景: 在执行try块之前直接return 在执行try块之前制造一个错误 只要进入try块,不管是给try块中造了个异常,还是在try块中进行return,finally块都是会执行的,只是执行时机有所
阅读全文
摘要:可以的,启动dubbo时,消费者会从注册中心拉取注册的生产者的接口等数据,缓存到本地。每次调用时,按照本地存储的地址进行调用。 注册中心对等集群,任意一台宕掉后,将自动切换到另一台。 注册中心全部宕掉后,服务提供者和服务消费者仍能通过本地缓存通讯。 Dubbo架构的健壮性: 监控中心宕掉不影响使用,
阅读全文
摘要:drop直接删掉表。 truncate删除表中数据,再插入时自增长id又从1开始。 delete删除表中数据,可以加where字句。 delete语句会记录日志以便进行回滚操作;truncate table不会记录日志,在删除的过程中不会激活与表有关的删除触发器,执行速度快。 当表被truncate
阅读全文
摘要:我们基本已经形成了常识,需要用到金钱的地方要用BigDecimal而不是其他,而我们也都知道浮点型变量在进行计算的时候会出现丢失精度的问题。 那么,你知道其实BigDecimal也会丢失精度吗?而使用BigDecimal的背后又有什么值得去探究的地方吗? 如下一段代码: System.out.pri
阅读全文
摘要:JVM的运行数据区 方法区 不止是存“方法”,而是存储整个class文件的信息,JVM运行时,类加载器子系统将会提取class文件里面的类信息,并将其存放在方法区中。例如类的名称、类的类型(枚举、类、接口)、字段、方法等等。 堆(Heap) 每个应用都唯一对应一个JVM实例,而每一个JVM实例唯一对
阅读全文
摘要:J.U.C即java.util.concurrent包,为我们提供了很多高性能的并发类,可以说是java并发的核心。 Concurrent包下所有类底层都是依靠CAS操作来实现,而sun.misc.Unsafe为我们提供了一系列的CAS操作。 AQS框架是J.U.C中实现锁及同步机制的基础,其底层是
阅读全文
摘要:策略模式 工厂方法模式 Builder模式 策略模式 策略模式就是一个接口下有多个实现类,而每种实现类会处理某一种情况。 比如我们在抽奖系统中,有多种奖励方式可供选择,比如积分,虚拟币和现金等。在存储时,我们必然会使用一个类似于type的字段用于表征这几种发放奖励的,那么这里我们就可以使用多态的方式
阅读全文