03 2021 档案
发表于 2021-03-29 15:11阅读:891评论:0推荐:7
摘要:@ java基础怎么学? 当时,作为懵懂的小白,大一学习了c和c++,还有数据结构,后来才自学的java。有了c++的基础,其实学java确实感觉挺容易上手。如果没有c或者c++的基础,建议开始需要先把java的基础打好,基础是指什么?基础的语法,能用!至于源码,不建议在刚刚开始学就看源码,绝对劝退
阅读全文 »
发表于 2021-03-27 15:12阅读:450评论:0推荐:0
摘要:前面我们提到,在防止缓存穿透的情况(缓存穿透是指,缓存和数据库都没有的数据,被大量请求,比如订单号不可能为-1,但是用户请求了大量订单号为-1的数据,由于数据不存在,缓存就也不会存在该数据,所有的请求都会直接穿透到数据库。),我们可以考虑使用布隆过滤器,来过滤掉绝对不存于集合中的元素。 布隆过滤器是
阅读全文 »
发表于 2021-03-26 16:50阅读:526评论:0推荐:0
摘要:要想回答这个问题,可以先把各种都讲特性,然后再从底层存储结构,线程安全,默认大小,扩容机制,迭代器,增删改查效率这几个方向入手。 特性列举 ArrayList:动态数组,使用的时候,只需要操作即可,内部已经实现扩容机制。 线程不安全 有顺序,会按照添加进去的顺序排好 基于数组实现,随机访问速度快,插
阅读全文 »
发表于 2021-03-25 14:07阅读:90评论:0推荐:0
摘要:问题描述 在Windows 操作系统上,push代码到git的时候,出现了Failed to connect to github.com port 443: Timed out的错误。一脸懵逼,浏览器网页也访问不了。 思路以及解决方案 一开始,我以为自己代理网络出现了问题,关掉之后,还是一样的问题。
阅读全文 »
发表于 2021-03-25 13:52阅读:173评论:0推荐:0
摘要:平时我们使用缓存的方案,一般是在数据库中存储一份,在缓存中同步存储一份。当请求过来的视乎,可以先从缓存中取数据,如果有数据,直接返回缓存中的结果。如果缓存中没有数据,那么去数据库中取出数据,同时更新到缓存中,返回结果。如果数据库中也没有数据,可以直接返回空。 关于缓存,一般会有以下几个常见的问题 缓
阅读全文 »
发表于 2021-03-25 13:51阅读:897评论:0推荐:0
摘要:前面讲解到实战问题】-- 设计礼品领取的架构设计以及多次领取现象解决?,如果出现网络延迟的情况下,多个请求阻塞,那么恶意攻击就可以全部请求领取接口成功,而针对这种做法,我们使用setnx来解决,确保只有一个请求可以进入接口请求。 public String receiveGitf(int activ
阅读全文 »
发表于 2021-03-17 10:24阅读:401评论:0推荐:1
摘要:类加载子系统 类文件首先需要经过类加载子系统,进行加载,进类信息等加载到运行时数据区,生成Klass的实例。 在类加载子系统中有以下3个阶段操作(广义上的加载): 加载阶段 Bootstrap ClassLoader:引导类加载器,主要加载JDK里面的核心类 Extension ClassLoade
阅读全文 »
发表于 2021-03-16 10:44阅读:351评论:0推荐:0
摘要:开局一张图,前面已经从每一部分解析过JVM的内存结构了,现在按照顺序来分析: 整体上来看:类文件从类加载子系统,加载完成之后,主要存放在方法区(JRockit和H9没有方法区,这里指的是HotSpot)。运行时的数据主要是存放在运行时数据区,代码的解释编译优化以及垃圾收集,都是在执行引擎中。本地方法
阅读全文 »
发表于 2021-03-11 12:59阅读:405评论:0推荐:0
摘要:Sun Classic VM 世界上第一款商用 Java 虚拟机,JDK1.4 已经淘汰。 内部只有解释器,可以自己外挂JIT编译器,但是二者只能使用其一,不能配合工作。 hotspot 内置了该虚拟机。 解释器,需要逐行解释执行,效率低下。譬如:如果循环两千次,循环体很大,每次执行都需要解释执行。
阅读全文 »
发表于 2021-03-09 11:43阅读:139评论:0推荐:0
摘要:Github仓库地址:https://github.com/Damaer/JvmNote 文档地址:https://damaer.github.io/JvmNote/ JVM生命周期 启动 执行 退出 启动 Java虚拟机的启动时通过引导加载器(bootstrap class loader)创建一个
阅读全文 »
发表于 2021-03-07 14:50阅读:676评论:0推荐:1
摘要:2011年,JDK7发布,1.7u4中,开始启用新的垃圾回收器G1(但是不是默认)。 2017年,发布JDK9,G1成为默认GC,代替CMS。(一般公司使用jdk8的时候,会通过参数,指定GC为G1) 2018年,发布JDK11,带来了革命性ZGC,性能比较强。 虚拟机介绍 虚拟机,就是虚拟的计算机
阅读全文 »
发表于 2021-03-05 01:11阅读:281评论:0推荐:0
摘要:基础数据类型交换 这个话题,需要从最最基础的一道题目说起,看题目:以下代码a和b的值会交换么: public static void main(String[] args) { int a = 1, b = 2; swapInt(a, b); System.out.println("a=" + a
阅读全文 »
发表于 2021-03-03 00:09阅读:119评论:0推荐:0
摘要:代理模式:为其他对象提供一种代理以控制对这个对象的访问,在某种情况下,一个对象不适合或者不能够直接引用另一个对象,而代理对象可以在客户类和目标对象之间起到中介的作用。 可以这么理解:使用代理对象,是为了在不修改目标对象的基础上,增强主业务的逻辑。就相当于某个普通人(目标对象),他现在需要打官司,那么
阅读全文 »