- 博客(18)
- 收藏
- 关注
原创 Java架构师大厂面试致命十连问,你接得住吗?
1.什么是缓存雪崩?怎么解决?通常,我们会使用缓存用于缓冲对 DB 的冲击,如果缓存宕机,所有请求将直接打在 DB,造成 DB 宕机——从而导致整个系统宕机。如何解决呢?2 种策略(同时使用):对缓存做高可用,防止缓存宕机使用断路器,如果缓存宕机,为了防止系统全部宕机,限制部分流量进入 DB,保证部分可用,其余的请求返回断路器的默认值。2.什么是缓存和数据库双写不一致?怎么解决?解释:连续写数据库和缓存,但是操作期间,出现并发了,数据不一致了。通常,更新缓存和数据库有以下几种顺序:
2021-06-25 15:43:02
526
6
原创 Java random随机数/ seed 种子 / System.nanoTime() 的理解 与 使用
伪随机(preundorandom):通过算法产生的随机数都是伪随机!!只有通过真实的随机事件产生的随机数才是真随机!!比如,通过机器的硬件噪声产生随机数、通过大气噪声产生随机数Random生成的随机数都是伪随机数!!!是由可确定的函数(常用线性同余),通过一个种子(常用时钟),产生的伪随机数。这意味着:如果知道了种子,或者已经产生的随机数,都可能获得接下来随机数序列的信息(可预测性)Random类拥有两个构造方法,用于实现随机数生成器:Random( ) 构造一个随机数生成器,种子是 与nan
2021-06-22 14:14:43
899
2
原创 让一个3年CRUD Java程序员直接涨9k的246Java微服务学习笔记有多厉害?
本人18年毕业于长沙某大专,实习期间通过进入和学校合作的一家互联网公司,一直在公司干着千遍一律的CRUD,生活看不到希望,感觉一直在这里CRUD没有希望,所以在春节回来后就离职了,一直在家中学习。和一些大佬在VX群里交流学习的过程中,无意中从一位腾讯云大佬手中拿到了这份由腾讯云大佬亲码的“Java微服务”学习笔记!作为这个时代码代码的秃头人员,对微服务肯定是不陌生的,如果连微服务都没用过,还真不好意思出去面试,指不定被面试官吊打多少次。毕竟现在互联网公司和一些创业公司都要用到微服务,像亚马逊、谷歌、阿里
2021-05-14 16:02:41
226
1
原创 玩转JVM中的对象及引用④:对象的分配策略及优化技术
一、基本垃圾回收算法①按照基本回收策略分(1)引用计数(Reference Counting)比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一 个计数。垃圾回收时,只用收集计数为 0 的对象。此算法最致命的是无法处理循环引用的 问题。(2)可达性分析清理标记-清除(Mark-Sweep):此算法执行分两阶段。第一阶段从引用根节点开始标记所有被引用的对象,第二阶段遍历整个堆,把未标记的对象清除。此算法需要暂停整个应用,同时, 会产生内存碎片复制(Copying)
2021-04-16 09:41:20
165
原创 玩转JVM中的对象及引用③:对象的存活以及各种引用
对象生死判断算法垃圾回收的第一步就是判断对象是否存活,只有“死去”的对象,才会被垃圾回收器所收回。①引用计数器算法引用计算器判断对象是否存活的算法是这样的:给每一个对象设置一个引用计数器,每当有一个地方引用这个对象的时候,计数器就加1,与之相反,每当引用失效的时候就减1。优点: 实现简单、性能高。缺点: 增减处理频繁消耗cpu计算、计数器占用很多位浪费空间、最重要的缺点是无法解决循环引用的问题。因为引用计数器算法很难解决循环引用的问题,所以主流的Java虚拟机都没有使用引用计数器算法来管理内存。
2021-04-15 09:53:04
171
2
原创 玩转JVM中的对象及引用②:对象的内存布局及访问
一、对象的内存布局问:在 Java 对象创建后,到底是如何被存储在Java内存里的呢?答:在Java虚拟机(HotSpot)中,对象在 Java 内存中的 存储布局 可分为三块:对象头 存储区域实例数据 存储区域对齐填充 存储区域①对象头 区域此处存储的信息包括两部分:对象自身的运行时数据(Mark Word)如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等该部分数据被设计成1个 非固定的数据结构 以便在极小的空间存储尽量多的信息
2021-04-14 09:33:32
302
2
原创 玩转JVM中的对象及引用①:虚拟机中对象的创建过程
一、类加载检查当Java虚拟机遇到一条new指令的时候,它会先去运行时常量池中寻找new的类的符号引用,并且检查这个符号引用所代表的类是否已经被加载、解析、初始化过。如果没有即需要进行相应的类加载过程。二、为新生对象分配Java堆内存对象所需要的内存大小在Java类加载的时候已经确定下来了。为对象分配堆内存相当于把一块内存分出来放置对象。主要分配内存的方式有两种:指针碰撞和空闲列表。指针碰撞:如果堆内存空间是规整的,那么,只需要将指针向空闲区域移动对象大小的内存即可以实现分配内存。空闲列表:
2021-04-13 13:53:34
147
1
原创 阿里疯传“SpringCloud Alibaba”学习笔记!
Srpingcloud Alibaba是什么?Spring Cloud Alibaba 是阿里巴巴提供的微服务开发一站式解决方案,是阿里巴巴开源中间件与 Spring Cloud 体系的融合。在 Spring Cloud 项目中孵化,很可能成为 Spring Cloud 第二代的标准实现。在业界广泛使用,已有很多成功案例。那么很多人要问了,为什么已经有了SpringCloud 还要去研发 SpringCloud Alibaba?SpringCloud:部分组件停止维护和更新,给开发带来
2021-04-12 09:30:36
3277
8
原创 今日课题——Nginx入门教学
NGINX联合创始人安德鲁·阿列克谢夫(Andrew Alexeev)曾说:NGINX是为对Apache性能不满意的人而构建的。随着Internet需求的变化,Web服务器的工作也在变化。NGINX的构建比以往任何时候都更有效率,更可扩展,更安全,更强大。本文提供了Nginx的基本概念及知识。以开发者必备的Nginx基础知识为主,罗列了一些Nginx教程,希望对大家有所帮助。一.环境服务器版本:CentOS 7.2为了保证学习阶段不遇到奇怪的事情,请保证以下四点确认系统网络确认yum可用确认
2020-12-18 20:52:25
203
5
原创 一道非常棘手的 常见Java 面试题:i++ 是线程安全的吗?
i++ 是线程安全的吗?相信很多中高级的 Java 面试者都遇到过这个问题,很多对这个不是很清楚的肯定是一脸蒙逼。内心肯定还在质疑,i++ 居然还有线程安全问题?只能说自己了解的不够多,自己的水平有限。先来看下面的示例来验证下 i++ 到底是不是线程安全的。1000个线程,每个线程对共享变量 count 进行 1000 次 ++ 操作。上面的例子我们期望的结果应该是 1000000,但运行 N 遍,你会发现总是不为 1000000,至少你现在知道了 i++ 操作它不是线程安全的了。先来看 JMM
2020-12-13 20:50:01
372
12
原创 8. Java 基础:异常
目录一、异常继承体系二、发生异常到时候,程序的执行特征:三、异常与错误的区别四、抛出异常 throw五、声明异常 throws六、捕获异常 try…catch…finally七、try…catch…finally 异常处理的组合方式八、异常在方法重写中细节九、Throwable类中的常用方法十、try和finally中都有return语句,执行哪一个return?十一、自定义异常一、异常继承体系异常是程序运行过程中出现的错误。Java 把异常当作对象来处理,把异常信息封装成了一个类,并定义一个基类 j
2020-12-12 21:31:36
393
6
原创 7. Java 基础:Object类 和 String类
目录一、Object 类1. 概述2. equals() 方法3. getClass() 方法4. hashCode() 方法5. finalize() 方法6. clone() 方法7. toString() 方法二、String 类1. 概述2. 构造方法3. String类的判断功能4. String类的获取功能一、Object 类1. 概述Object 类是类层次结构的 根类。每个类都使用 Object 作为超类。每个类,都直接或间接继承 Object 类我们所定义类,没有显示继承其他类
2020-12-10 19:23:30
271
原创 6. Java基础:内部类
目录一、概述二、内部类的特点三、内部类的分类四、成员内部类1. 定义2.例子3. 成员内部类的同名变量调用:五、局部内部类1. 概述2. 例子3. 局部内部类访问局部变量的注意事项:六、匿名内部类1. 概述2. 特点:3. 格式:4. 匿名内部类如果不定义变量引用,则就是匿名对象5. 匿名内部类的使用:七、静态内部类1. 概述2. 访问特征:3.例子:一、概述将类写在其他类的内部,可以写在其他类的 成员位置 和 局部位置,这时写在其他类内部的类就称为内部类。其他类也称为外部类。什么时候使用内部类?
2020-12-09 21:25:44
122
原创 5. Java基础:接口(概念、声明、实现、继承、新特性)
目录一、接口的概念二、接口的声明三、接口的实现四、接口中成员变量的特点五、接口中成员方法的特点六、类和接口的多实现七、接口的继承八、接口与类的区别:九、抽象类和接口的区别十、接口中的方法是否可以被重载和覆盖?十一、接口的新特性——默认方法和静态方法(jdk8之后)十二、标记接口一、接口的概念接口是功能的集合,同样可看做是一种特殊的数据类型,是比抽象类更为抽象的类。接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成。这样将功能的定义与实现分离,优化了程序设计
2020-12-08 20:09:18
445
原创 4. Java 基础:构造方法
目录一、 概述1. 构造方法作用和定义2. 构造方法的特点3. 注意事项二、 构造方法的重载三、 类的初始化过程四、this 关键字1. this 关键字:本类对象的引用2. 成员变量隐藏五、子父类中的构造方法1. 调用2. 当父类中没有无参数构造方法的时候,怎么办?3. 为什么子类对象创建都要访问父类中的构造方法?4. 创建子类对象过程的细节六、 super 关键字七、 static 关键字1. static 特点2. static 注意事项3. 静态变量和成员变量的区别4. 定义静态常量八、 final
2020-12-07 21:20:56
154
6
原创 3. Java 基础:面向对象的三大特征
目录一、封装1. 概述2. 封装的特点3. 封装的实现二、 继承1. 概述2. 继承的逻辑关系3. 继承的特点:4. 继承的注意事项:5. 继承后子类父类成员变量的特点6. 继承后子类父类成员方法的特性7. 继承的初始化顺序8. 方法重载和方法覆盖三、 多态1. 概述2. 多态调用的三种格式3. 注意事项:4. 多态中成员访问的特点5. 编译时多态(方法重载 overload)6. 运行时多态7. 多态的转型8. instanceof 关键字四、 抽象类1. 概述2. 抽象类的定义格式3. 抽象类特点4.
2020-12-06 21:04:34
145
6
原创 2.Java 基础:面向对象
目录一、 面向对象和面向过程1. 概述2. 面向对象的一般步骤:二、 类和对象的关系1. 概述2. 创建对象举例:三、 成员变量和局部变量1. 变量的作用域 {}:2. 成员变量和局部变量的区别3. 对象数组:存储对象4. 方法参数四、引用类型的兼容性五、单一职责原则六、 代码块1. 概述2. 局部代码块3. 构造代码块4. 静态代码块七、 类的访问控制权限1. 概述2. 公有的:public3. 私有的:private4. 受保护的:protected5. 默认(不加任何访问修饰符)6. 访问权限图:八、
2020-12-05 22:12:04
173
3
原创 1. Java 基础:基础知识
目录:一、Java 概述1. Java体系2. 常用的DOS命令3. JDK、JRE、跨平台、Java平台4. Java代码的编写执行过程5. 注释6. 关键字、标识符7. Java中的数据类型8. Java中的常量二、变量和运算符1. 变量和计算机存储单元2. 数据类型和常量3. 数据类型转换4. 运算符 和 优先级三、引用数据类型、流程控制语句 和 数组1. 引用数据类型2. 流程控制语句3. 数组四、方法1. 引入2. 语法格式3. 方法调用4. 注意事.
2020-12-04 14:41:30
265
8
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人