Java
文章平均质量分 54
January丶
个人博客:https://zysite.top
说明:文章优先更新在个人博客站点。
展开
-
2021年6月面试题Java后台(字节、招银、花旗、携程)
招银网络科技(深圳)技术面和HR一起面。自我介绍、项目。技术问题:介绍下生产者消费者模型。通过怎样的设计可以提高消费速度。生产者消费者模型中怎么避免重复消费、遗漏消费。线程run方法和start方法的区别。说下冒泡排序思路,有没有更快的排序算法,说下实现思路。问题相对较少。项目占了不少时间,全程大概一个小时。花旗金融(上海)一面:自我介绍(英文)。项目细节(英文)。问项目问题(中文)。技术问题(中文):常用的集合类有哪些。HashMap中put方法的流程大致说下。H原创 2021-07-01 22:13:58 · 3548 阅读 · 0 评论 -
解决Redis序列化Java8 LocalDate、LocalDateTime等时间类报错
前言在使用 Redis 缓存时,Java 8 中的日期类序列化会报错。有以下两种解决方法:Redis 配置类中添加对应序列化/反序列化器@Slf4j@EnableCaching@Configurationpublic class RedisConfig extends CachingConfigurerSupport { //过期时间 1 小时 private Duration timeToLive = Duration.ofHours(1L); /** *原创 2021-06-22 18:18:18 · 2405 阅读 · 0 评论 -
Java实现LRU算法(哈希表加双向链表)
LRULRU 全称 Least Recently Used,意为最近最少使用,是最常见的页面置换算法,也常用于实现缓存淘汰策略。实现哈希表 + 双向链表。链表头节点代表最近使用过的数据。对于 get 操作,首先判断 key 是否存在:如果 key 不存在,则返回 -1;如果 key 存在,则 key 对应的节点是最近被使用的节点。通过哈希表定位到该节点在双向链表中的位置,并将其移动到双向链表的头部,最后返回该节点的值。对于 put 操作,首先判断 key 是否存在:如果 ke原创 2021-05-26 19:46:46 · 355 阅读 · 0 评论 -
JVM类加载机制
JVM类加载机制JVM 类加载机制分为五个部分:加载,验证,准备,解析,初始化。1. 加载加载是类加载过程中的一个阶段, 这个阶段会在内存中生成一个代表这个类的 java.lang.Class 对象, 作为元空间这个类的各种数据的入口。注意这里不一定非得要从一个 Class 文件获取,这里既可以从 ZIP 包中读取(比如从 jar 包和 war 包中读取),也可以在运行时计算生成(动态代理),也可以由其它文件生成(比如将 JSP 文件转换成对应的 Class 类)。2. 验证这一阶段的主要目的是原创 2020-12-20 17:10:52 · 82 阅读 · 0 评论 -
JVM垃圾回收
Java堆(heap)构成Java堆是线程共享的内存区域,几乎所有的对象和数组都保存在这里。也是垃圾收集器进行垃圾收集的最重要的内存区域。由于现代JVM的GC算法采用分代收集算法,所以从GC的角度,堆可以被划分为新生代(Eden区、SurvivorFrom区、SurvivorTo区),老年代(Old)。新生代占堆内存的1/3。老年代占2/3。新生代中:Eden占8/10,SurvivorFrom和SurvivorTo各占1/10。新生代Eden区SurvivorFrom区Surv原创 2020-12-20 17:05:24 · 87 阅读 · 0 评论 -
Java类文件中的字节码指令
目录字节码指令使用javap工具注意:本章内容紧接上篇文章 通过HelloWorld读懂Java类(.class)文件结构字节码指令通过读取HelloWorld.class文件的内容,我们得知方法信息部分包含字节码指令。如:<init>方法部分的字节码指令为2A B7 00 01 B1其中:2A代表aload_0,即加载slot 0的局部变量,即this,作为下面invokespecial的参数B7代表invokespecial,即预备调用构造方法00 01代表常量池中的第一项原创 2020-12-20 16:59:25 · 299 阅读 · 1 评论 -
通过HelloWorld读懂Java类(.class)文件结构
目录Hello World类文件结构魔数版本常量池访问标识和继承信息成员变量方法信息附加属性Hello World一个最简单的Hello World程序源代码如下:package top.zysite;public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World"); }}通过javac -parameters -d . He原创 2020-12-20 16:57:21 · 464 阅读 · 2 评论 -
CyclicBarrier、CountDownLatch、Semaphore对比
目录CountDownLantchCyclicBarrierSemaphore对比CountDownLantch称作线程计数器。当某个线程需要等待其他 n 个线程执行完毕后才能执行,就可以使用CountDownLantch。public static void main(String[] args) throws InterruptedException { int num = 2; final CountDownLatch latch = new CountDownLatch(nu原创 2020-10-17 22:51:50 · 116 阅读 · 0 评论 -
Java基础:注解篇
目录概念分类按照来源分类按照作用分类JDK注解使用JDK注解示例自定义注解自定义注解格式注解中抽象方法约束自定义注解的本质元注解@Target@Retention@Documented@Inherited完整的自定义注解示例概念注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、...原创 2019-09-17 22:41:45 · 112 阅读 · 0 评论