Java IO流

Java IO流

java io流知识体系(引用自pdai

Java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。

Java.io 包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。

一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。

阅读更多

java反射

反射

Java反射机制是在运行状态中,对于任何一个类,都能获得它的所有属性和方法,对于任何一个对象,都能够调用它的任意一个方法和属性。

RTTI(Run-Time Type Identification)运行时类型识别。其作用是在运行时识别一个对象的类型和类的信息。主要有两种方式:一种是“传统的”RTTI,它假定我们在编译时已经知道了所有的类型;另一种是“反射”机制,它允许我们在运行时发现和使用类的信息。反射就是把java类中的各种成分映射成一个个的Java对象。如果要动态获取到这些信息,需要依靠Class对象。Class类对象将一个类的方法、变量等信息告诉运行的程序。

阅读更多

缓存读写策略

Cache Aside Pattern(旁路缓存模式)

Cache Aside Pattern适合读多写少的场景。Cache Aside Pattern中服务端需要同时维系DB和cache,并且最终的结果以DB为准。

下面是该策略模式下缓存读写步骤。

写:

  • 首先更新数据库
  • 然后直接删除cache中的数据
阅读更多

华为项目

Containerd 1.4在CentOS 8.1下的兼容性验证

1. 安装go

2. 克隆release1.4分支

1
git clone https://github.com/containerd/containerd -b release/1.4 

3. 安装protoc

1
2
wget -c https://github.com/protocolbuffers/protobuf/releases/download/v3.11.4/protoc-3.11.4-linux-aarch_64.zip
sudo unzip protoc-3.11.4-linux-aarch_64.zip -d /usr/local
阅读更多

ThreadLocal详解

ThreadLocal解析

本文参照一枝花算不算浪漫

ThreadLocal的特点:

  • 线程并发:在多线程场景下
  • 传递数据:可以通过ThreadLocal在同一线程,不同组件中传递公共变量
  • 线程隔离:每个线程的变量都是独立的,不会相互影响

主要探讨以下问题:

  • ThreadLocal的key是弱引用,那么在ThreadLocal.get()的时候,发生GC之后,key是否为null?
  • ThreadLocal中ThreadLocalMap的数据结构?
  • ThreadLocalMap的Hash算法?
  • ThreadLocalMap的扩容机制?
  • ThreadLocalMap中过期key的清理机制?探测式清理和启发式清理流程?
  • ThreadLocalMap.set()方法实现原理?
  • ThreadLocalMap.get()方法实现原理?
阅读更多

Redis面经(持续更新)

缓存与数据库双写不一致的问题

  1. 延迟双删
  2. 内存队列
  3. 设置缓存过期时间
  4. 读多写多的场景,使用缓存是否有意义?
  5. 不用缓存,会出现数据穿透,数据库无法承载高并发
  6. canal
  7. 针对第五点,怎么办?(tidb)
阅读更多

Java常见并发容器总结

Java常见并发容器总结

JDK提供的并发容器大部分都在java.util.concurrent(juc)

  • ConcurentHahsMap:线程安全的HashMap
  • CopyOnWriteArrayList:线程安全的List,适用于读多写少的场景。
  • ConcurrentLinkedQueue:高效的并发队列,使用链表实现。可以当作一个线程安全的LinkedList,这是一个非阻塞队列。
  • BlockingQueue:这个一个接口,JDK内部通过链表、数组等方式实现了这个接口。表示阻塞队列,适合用于作为数据共享的通道。
  • ConcurrentSkipListMap:线程安全的跳表。
阅读更多

Atomic原子类总结

Atomic原子类

Atomic是基于unsafe类和自旋操作实现的,要理解Atomic首先需要理解CAS。Atomic是指一个操作是不可中断的,即使在多个线程一起执行的时候,一个操作一旦开始,就不会被其他线程干扰。

所以,所谓源自类就说具有原子/原子操作特征的类。根据操作的数据类型,可以讲JUC包中的原子类分为4类。

要理解Atomic首先得了解CAS,CAS(Compare and Swap),其功能就是判断内存中的某个值是否与预期的值相等,相等就用新值更新旧值,否则就不更新。Java中CAS是基于unsafe类首先的,所有的unsafe类中的方法都是native(原生)方法,直接调用操作系用底层资源执行任务。

阅读更多
Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×