自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 高并发 - 容灾专题

同城容灾和异地容灾 都是建立两个数据中心,一个负责日常生产运行,另一个为备份中心。 同城的距离比较近,通信线路质量好,比较容易实现数据的同步复制,数据完整性更好;异地的距离较远,会有少量数据丢失。 同城容灾可以防范火灾、建筑物破坏、供电故障、人为破坏等灾难;异地容灾可进一步防范地震、水灾等风险。 两地三中心 近年国内出现较多大范围的自然灾害,以同城双活 + 异地灾备的两地三中心模式随之出现,这一方案兼具高可用性和灾难备份的能力。 同城双活的2个中心具备基本等同的业务处理能力,并通过高速链路实时同步数据,双

2021-02-03 14:37:46 194

原创 高并发-高并发系统设计概要

什么是高并发、高性能和高可用? 高并发是业务场景,高性能和高可用是高并发系统的核心技术指标。 如何实现高性能? 5大设计思想 1、扩展 垂直扩展:升级配置、分库分表、无锁 水平扩展:Ngnix、无状态、分布式 2、缓存 CDN:内容分发网络,通过寻找最近节点来减少传播时延 应用层缓存:redis 内存缓存 数据层缓存 分布式缓存 数据预热 3、异步 消息队列:削峰填谷、解耦、最终一致性 4、分离 读写分离 动静分离 冷热分离 5、复用 池化:线程池、数据库连接池 组件化 长连接 如何

2021-02-03 14:34:21 96

原创 高并发-缓存

什么是缓存? 开辟一个新的数据交换区,以解决原始数据获取代价太大的问题,让数据得到更快的访问。 缓存有哪些常用的策略? CDN:内容分发网络,通过寻找最近节点来减少传播时延 应用层缓存:redis 内存缓存 数据层缓存 分布式缓存 数据预热 缓存有哪些常见的问题? 问题1 缓存雪崩 缓存失效→缓存击穿→缓存雪崩 策略: 过期时间=baes 时间+随机时间 key置null值 BloomFilter 场景:一个有数亿用户和百亿级新闻的feed app,可以用BloomFilter判断某用户是否阅读某新闻。

2021-02-03 14:25:22 75

原创 职场心得

个人 没人愿意和一个没有精气神、成天挂这个脸的人相处 放下烦恼,都是色相,寻找意义 向上 适度谦卑,不要随意,领导就是领导。 大事小事做到位,不要做半件事情。

2021-02-02 11:58:41 74

原创 JVM GC

对象存活有哪些判断方法? 1、引用计数法 2、可达性分析法 通过一系列的 ‘GC Roots’ 的对象作为起始点,从这些节点出发所走过的路径称为引用链。当一个对象到 GC Roots 没有任何引用链相连的时候说明对象不可用。 可作为GC Roots的对象:虚拟机栈/本地方法栈中引用的对象、方法区类静态属性/常用引用的对象 四种引用? 1、强引用:类似于 Object obj = new Object(); 创建的,只要强引用在就不回收。 2、软引用:SoftReference 类实现软引用。在系统要发生内

2021-02-01 20:18:13 65

原创 JVM 基础理论知识

什么是JVM? JVM,Java Virtual Machine,Java虚拟机。 Java源程序通过编译器编译成为.class文件,即字节码文件, 字节码文件通过不同平台的JVM转化为系统可识别的机器码,实现跨平台。 JVM有哪些常见异常? 1、StackOverflowError:线程请求的栈深度大于虚拟机所允许的深度。 2、OutOfMemoryError:虚拟机动态扩展时无法申请到足够的内存 new对象的过程 检查常量池中是否能定位到该类的符号引用,以及类是否已被加载、解析和初始化,如果没有,执

2021-02-01 11:18:29 97

原创 JVM 类加载

类的加载过程? 1、加载 通过一个类的全限定名来获取定义次类的二进制流 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构 2、验证 确保 Class 文件的字节流中包含的信息符合当前虚拟机要求 3、准备 为类分配内存并设置类变量初始值 4、解析 虚拟机将常量池内的符号引用替换为直接引用的过程 5、初始化 开始执行类中的 Java 代码 双亲委派机制? 如果一个类加载器收到一个类加载的请求,它首先不会自己加载,而是把这个请求委派给父类加载器。只有父类无法完成时子类才会尝试加载。 除顶层启动类加载

2021-02-01 11:12:38 50

原创 JVM 内存相关

JVM的内存模型是什么? 1、程序计数器 线程私有 记录的是正在执行的字节码行号指示器 2、虚拟机栈 线程私有 java方法的内存模型,每个方法在执行时都会创建一个栈帧,用于存储局部变量表、操作数栈、方法出口等信息,一个java方法从调用到执行结束,对应着一个栈帧从虚拟机栈入栈到出栈的过程。 3、本地方法栈 线程私有 虚拟机栈为Java方法服务,本地方法栈为虚拟机使用到的Native方法服务,也有StackOverflowError 和 OutOfMemoryError 异常。 4、堆 线程共享 主要存放对

2021-01-29 17:31:27 53

原创 Java IO 相关

Java IO有哪些分类? 按流向分,分为输入流和输出流;按内容分,分为字节流和字符流。 InputStream/Reader: 所有输入流的基类,前者是字节输入流,后者是字符输入流。 OutputStream/Writer: 所有输出流的基类,前者是字节输出流,后者是字符输出流。 BIO、NIO、AIO的区别? BIO (Blocking IO): 同步阻塞IO,数据的读取写入必须阻塞在一个线程内等待其完成。 NIO(Non-blocking IO):同步非阻塞 IO,客户端和服务器端可通过Channe

2021-01-29 17:19:40 55

原创 Java 集合相关

什么是集合? Map接口和Collection接口是所有集合类的父接口、 1、Collection接口 List:Arraylist、Vector、LinkedList Set:HashSet、LinkedHashSet、TreeSet 2、Map接口 HashMap、LinkedHashMap、HashTable、TreeMap ArrayList和LinkedList的区别? ArrayList基于动态数组实现,LinkedList基于双向链表实现。 随机访问、插入删除的效率不同 ArrayList

2021-01-29 17:17:00 100

原创 Java 反射

什么是反射? 在运行态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性。 这种动态获取类信息、动态调用对象的方法的功能称为java语言的反射机制。 反射机制优缺点 优点: 可动态获取类信息、动态执行对象方法,提高代码的灵活度。 缺点: 性能比一般的java代码要慢很多。 应用场景 具体方法 ...

2021-01-29 11:36:57 62

原创 Java String相关

字符和字符串的区别 字符常量是单引号引起的一个字符 字符串常量是双引号引起的若干个字符。 字符常量只占一个字节 字符串常量占若干个字节。 字符串常量池 字符串常量池位于堆内存,避免开辟多块空间存储相同的字符串,提高内存的使用率。 在创建字符串时 JVM 会首先检查字符串常量池,如果该字符串已经存在池中,则返回它的引用,如果不存在,则实例化一个字符串放到池中,并返回其引用。 String为什么不可变? private final char value[]; str的内容不可变,但指向的内存地址(引用)可变

2021-01-29 11:28:14 68

原创 Java 基础理论知识

什么是Java? Java是一门面向对象编程语言 Java语言有哪些特点? 1、面向对象 封装,继承,多态 2、跨平台性 java语言编写的程序,一次编译后,可以在多个系统平台上运行。 原理:不同系统可以安装相应的java虚拟机 3、健壮性 内存自动管理 面向对象有哪些特征? 1、抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。 2、封装:封装把一个对象的属性私有化,外界无法访问,也可以提供一些可以被外界访问属性的方法。 3、继承:继承是使用已存在的类作为基础建立新类

2021-01-28 20:53:18 746

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除