4.6k4 分钟

2025-01-26🌱上海: ⛅️ 🌡️+9°C 🌬️↓17km/h 前两天在群里了解到了Anki记忆卡片,首先大概介绍下Anki记忆卡片主要是干什么的? Anki记忆卡采用了SM2算法可以在短时间内快速记忆一些知识点,有点类似闪念,或者说就是自定义的刷题卡片。 # 一、工具安装 首先我们下载两个主要工具,以下是官网下载地址: Obsidian - Sharpen your thinking Anki - powerful, intelligent flashcards 后续还需要安装它们所需的核心插件。 Anki端:anki connector 插件 Obsidian端:E
1.1k1 分钟

2025-01-26🌱上海: ⛅️ 🌡️+9°C 🌬️↓17km/h “说来奇怪,有些人,通常是些生命中的过客,会在你的思绪与梦境中占有很重的分量” 银杏树的叶子渐渐凋零,整个林子也显得愈发清寂,满地黄色也褪去变成了白色。今年的冬天异常的寒冷,整条河面早早被封冻,好似怕河流一去不复返。大概马上要过年了,寒冷的街道反而比往常显得热闹。阿光双手插在棉衣的口袋里,踩在雪上慢慢前行,断断续续的传来吱呀吱呀的声音。 阿光和大鹏约好了今天在银杏林见面,大鹏已经早早到了这里,无聊的捡起旁边的石头砸向河面,河面上全是坑坑洼洼。冬天的阳光打在河面上反而显得更加刺眼,大鹏手放在额头遮挡阳光朝
1.2k1 分钟

2025-01-26🌱上海: ⛅️ 🌡️+9°C 🌬️↓17km/h "那些不适应这个世界的人,其实已经快要找到自我了。" 阿光常常坐在公园的长椅上发呆,人来人往,也不知在看些什么,想些什么。直到远边的云被夕阳晕成红色,路灯也跟着亮起,阿光才会慢慢从长椅上起来拍拍屁股,往夕阳的方向走去,阿光的家就在那边。 阿光低着头看自己脚下的影子渐渐拉长又变短,循环往复。突然被从后面过来的一条手臂挽住了脖子,压得腰也跟着弯了下来。“嘿,光,干嘛去呢?他妈的找了你一天,跟你说我今天发现了个很好玩的地方。” 大鹏本还生气又转嬉笑地说到。阿光站起身来,挠了挠头,不知道说什
14k13 分钟

2025-01-22🌱上海: ☀️ 🌡️+12°C 🌬️↖14km/h # 说说AQS吧 全称AbstractQueuedSynchronizer (抽象队列同步器),AQS是很多同步器的基础框架,比如ReentranLock、CountDownLatch和Semaphore等都是基于AQS实现的,简单来说,AQS就是起到了一个抽象、封装的作用,其中提供一系列关于同步的排队、入队、加锁、中断等方法,通过实现这些方法,可以生成自定义的同步器。 AQS内部主要维护了一个volatile的int类型的state变量和一个FIFO队列,在state=1的时候表示当前的锁已
42k38 分钟

2025-01-21🌱上海: ☀️ 🌡️+14°C 🌬️↖8km/h # 深入理解线程池原理 # 线程池的创建 # 使用Executors工厂类创建 # 固定大小线程池(FixedThreadPool) // 创建一个固定大小为 5 的线程池 ExecutorService executorService = Executors.newFixedThreadPool(5); Executors.newFixedThreadPool(5):创建一个固定大小为 5 的线程池,核心线程数和最大线程数都为 5。 # 单线程线程池(S
22k20 分钟

2025-01-20🌱上海: ☀️ 🌡️+8°C 🌬️←9km/h 说说Java中HashMap的原理? # 通过源码深入了解HashMap 首先来了解一下比较重要一些变量定义 // 默认初始容量 - 必须是 2 的幂次方。 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // 即 16 // 最大容量,如果构造函数中通过参数隐式指定了更高的值,则使用此最大容量。 // 必须是
30k28 分钟

2025-01-19🌱上海: ☀️ 🌡️+13°C 🌬️↘7km/h # 接口和抽象类有什么区别? # 抽象类 # 1. 定义抽象类 定义抽象类的时候需要用到关键字abstract,同时需要放在class关键字前面。 关于抽象类的命名。在阿里的java开发手册上有强调,“抽象类命名要使用 Abstract 或 Base 开头”。 package com.muzi.abstractinterfaceclass.abstractClassText; // 定义抽象的动物类 public abstract class AbstractAnimal {
9.3k8 分钟

2025-01-18🌱上海: ☀️ 🌡️+13°C 🌬️↑10km/h # 说下你常用的Linux命令 # 常用总结 # 扩展知识 # 如何在linux服务器上查看生产日志? 虽然现在基本生产上都日志收集管理系统,但是我们有时候查看一些特定的日志,还是使用命令比较方便 但是如何优雅的查看生产日志还是需要仔细学习一下的,比如仅使用cat命令来查看日志文件,不但无法查看实时日志,严重的情况还可能影响服务器的运行。那接下来就分别讲解一下不同的查看日志的命令。 # tail命令 这个命令也是常用的日志查看命令,可以查看实时日志的更新,当日志有更新的时候,实时打印到控制台显示。 参
6.1k6 分钟

2025-01-15🌱上海: ☀️ 🌡️+4°C 🌬️↓14km/h 什么是用户态和内核态? # 总结分析 运行模式 权限级别 可执行操作 优势 用户态 较低 不能直接访问硬件或进行特权操作,需通过系统调用让内核执行敏感操作 安全性高,程序问题不影响操作系统稳定性 内核态 最高 可直接访问硬件资源并执行如内存管理、进程调度等特权操作 能高效管理硬件与系统资源 # 深入分析 其实简单来说内核态就是操作系统运行线程,用户态就是线程执行用户自己的程序 用户态不能直接使用系统资源,也不能改变CPU的工作状态,只能访问到用户程序自己的存储空间 内核态可以直接使
16k15 分钟

# I/O模型有哪些? # 总结分析 I/O 模型 特点 阻塞 I/O 调用 I/O 操作时进程阻塞,直到数据准备好或操作完成才继续执行 非阻塞 I/O I/O 操作不阻塞进程,数据未准备好立即返回错误或状态,进程可继续执行其他操作 I/O 多路复用 使用 select、poll、epoll 等系统调用,可同时等待多个 I/O 操作,有就绪的就进行处理 信号驱动 I/O 数据准备好时,内核发信号通知进程进行 I/O 操作,进程接收到信号后再读写数据 异步 I