@@ -234,7 +234,7 @@
- 容器虚拟化技术,后续进一步学习 k8s
+ 容器虚拟化技术,待后续进一步学习 k8s
-
+
- Docker
Compose:用于定义和运行多容器 Docker
diff --git a/2024/Git/index.html b/2024/Git/index.html
index 99a3c60..24646f6 100644
--- a/2024/Git/index.html
+++ b/2024/Git/index.html
@@ -28,7 +28,7 @@
-
+
@@ -155,18 +155,18 @@
@@ -234,7 +234,7 @@
更新于
-
+
@@ -371,6 +371,9 @@ 常用命令
git fetch <remote_name> <local_branch_name>
【获取远程仓库的更新,但不自动合并到你的工作】
+
+- [--all] 获取远程的所有分支
+
git push [OPTIONS]【推送到远程分支】
[<remote_name>
@@ -379,7 +382,7 @@
常用命令
删除远程分支
[-u <remote_name> --all]
本地的仓库和远程仓库进行关联
-[--set-upstream <remote_branch_name>
+
[--set-upstream <remote_repository>
<local_branch_name>] 将本地分支与远程分支关联
[--force] 强制提交,会覆盖所有 behind 的提交
@@ -416,7 +419,7 @@ 常用命令
[-v] 每个分支的最后一次提交
[-vv] 跟踪信息
[-r] 查看远程分支
-[-d <branch_name>] 删除分支
+[-D <branch_name>] 删除分支
[--set-upstream-to <remotename>/<remote_branch>
<local_branch>]
跟踪远程分支。在本地新建一个分支后,需要做远程分支关联,目的是在执行git
@@ -467,8 +470,8 @@ Chapter 6 GitHub
diff --git a/2024/Hexo/index.html b/2024/Hexo/index.html
index 1c0d2b4..25a84da 100644
--- a/2024/Hexo/index.html
+++ b/2024/Hexo/index.html
@@ -153,18 +153,18 @@
diff --git a/2024/Stay-Focused/index.html b/2024/Stay-Focused/index.html
index ee5e4a3..bce4f4c 100644
--- a/2024/Stay-Focused/index.html
+++ b/2024/Stay-Focused/index.html
@@ -153,18 +153,18 @@
@@ -321,13 +321,13 @@ 固定日程安排
diff --git a/404/index.html b/404/index.html
index 6dbf906..66fb93a 100644
--- a/404/index.html
+++ b/404/index.html
@@ -150,18 +150,18 @@
diff --git a/Design-Pattern/index.html b/Design-Pattern/index.html
index 5dd1185..7f2ce31 100644
--- a/Design-Pattern/index.html
+++ b/Design-Pattern/index.html
@@ -19,15 +19,15 @@
-
+
-
+
-
+
@@ -153,18 +153,18 @@
@@ -210,7 +210,7 @@
-
+
@@ -232,7 +232,7 @@
更新于
-
+
@@ -247,7 +247,7 @@ - Docker
Compose:用于定义和运行多容器 Docker
diff --git a/2024/Git/index.html b/2024/Git/index.html
index 99a3c60..24646f6 100644
--- a/2024/Git/index.html
+++ b/2024/Git/index.html
@@ -28,7 +28,7 @@
-
+
@@ -155,18 +155,18 @@
@@ -234,7 +234,7 @@
更新于 - + @@ -371,6 +371,9 @@
常用命令
git fetch <remote_name> <local_branch_name> 【获取远程仓库的更新,但不自动合并到你的工作】
+-
+
- [--all] 获取远程的所有分支 +
git push [OPTIONS]【推送到远程分支】
[<remote_name> @@ -379,7 +382,7 @@
常用命令
删除远程分支[-u <remote_name> --all] 本地的仓库和远程仓库进行关联
-[--set-upstream <remote_branch_name> +
[--set-upstream <remote_repository> <local_branch_name>] 将本地分支与远程分支关联
[--force] 强制提交,会覆盖所有 behind 的提交
常用命令
Chapter 6 GitHub
@@ -232,7 +232,7 @@
- 设计模式与其具体实现
+ 项目架构的设计模式,和Java开发中的具体实现
@@ -294,7 +294,7 @@ 适配器模式
diff --git a/How-to-Work/index.html b/How-to-Work/index.html
index 7f457a4..6a16f41 100644
--- a/How-to-Work/index.html
+++ b/How-to-Work/index.html
@@ -153,18 +153,18 @@
diff --git a/Interview-Questions/index.html b/Interview-Questions/index.html
index 9e97de1..021b8eb 100644
--- a/Interview-Questions/index.html
+++ b/Interview-Questions/index.html
@@ -153,18 +153,18 @@
diff --git a/JUC-Lock/1240-17140467896205.webp b/JUC-Lock/1240-17140467896205.webp
deleted file mode 100644
index 9d071ab..0000000
Binary files a/JUC-Lock/1240-17140467896205.webp and /dev/null differ
diff --git a/JUC-Lock/1240.webp b/JUC-Lock/1240.webp
deleted file mode 100644
index e5d0081..0000000
Binary files a/JUC-Lock/1240.webp and /dev/null differ
diff --git a/JUC-Lock/3230688-20231101142351434-473719587.png b/JUC-Lock/3230688-20231101142351434-473719587.png
deleted file mode 100644
index a2adc86..0000000
Binary files a/JUC-Lock/3230688-20231101142351434-473719587.png and /dev/null differ
diff --git a/JUC-Lock/aqs-exclusive-mode-acquire-lock.png b/JUC-Lock/aqs-exclusive-mode-acquire-lock.png
deleted file mode 100644
index 57d6720..0000000
Binary files a/JUC-Lock/aqs-exclusive-mode-acquire-lock.png and /dev/null differ
diff --git a/JUC-Lock/clh-queue-state.png b/JUC-Lock/clh-queue-state.png
deleted file mode 100644
index f1c5c64..0000000
Binary files a/JUC-Lock/clh-queue-state.png and /dev/null differ
diff --git a/JUC-Lock/image-20240415164535374.png b/JUC-Lock/image-20240415164535374.png
deleted file mode 100644
index 8b8b553..0000000
Binary files a/JUC-Lock/image-20240415164535374.png and /dev/null differ
diff --git a/JUC-Lock/index.html b/JUC-Lock/index.html
deleted file mode 100644
index 30c4f54..0000000
--- a/JUC-Lock/index.html
+++ /dev/null
@@ -1,630 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Java 并发锁 | 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 闻
-
-
- Yesterday is history, tomorrow is a mystery but today is a gift.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Java 并发锁
-
-
-
-
-
-
-
-
-
-
-
- Java.util.concurrent 中有很多 Java 并发相关工具,例如 锁
-ReentrantLock
、线程 Callable
-FutureTask
、信号量 Semaphore
、共享锁
-CountDownLatch
-此外 Java 原生的 volatile
和 synchronized
-关键字也是并发编程的关键。
-
-简单的 CAS 实现:AtomicInteger.compareAndSet(1, 2)
-synchronized 关键字
-属性:可重入锁、独占锁、非公平锁
-每个对象都有一个 monitor
-对象于之关联,synchronized
通过对象监视器
-monitor
和操作系统的 Mutex Lock
-实现加锁和解锁,被锁住的区域是临界区
:临界区内被锁保护,线程间只能串行访问的代码;
-作用域:
-
-- 修饰实例方法,锁当前对象实例。
-
-- 修饰的方法在编译成字节码的时候,在 flag 上标记 ACC_SYNCHRONIZED
-
-- 修饰静态方法,锁当前类,会作用于所有实例。
-- 修饰同步语句块,程序指定 Object / .class。
-
-- 通过 monitorenter 和 monitorexit 指令实现
-
-
-锁粗化和锁消除:
-
-- 锁粗化:将多次锁请求合并成一个请求,以降低短时间内大量锁请求、同步、释放带来的性能损耗
-- 锁消除:Java 虚拟机在 JIT
-编译时,通过对运行上下文的扫描,去除不可能存在共享资源竞争的锁,通过锁消除,可以节省毫无意义的请求锁时间
-
-
-.java -> .class 字节码:Javac
-字节码 -> 机器码:JIT(Just-in-time)动态(即时)编译;AOT(Ahead
-Of Time)运行前编译
-
-锁升级策略
-
-偏向锁:只有一个线程持有锁,无竞争情况时,线程可以直接获得锁,没有额外的开销。CAS
-修改 Markword 头信息,该操作一般不会撤销,以避免 CAS 开销。
-轻量级锁:多个线程都是在不同的时间段来请求同一把锁时,JVM
-会使用轻量级锁:通过 CAS
-尝试获取锁,不阻塞线程。如果竞争失败直接会升级成重量级锁,升级过程会自旋尝试获取锁。
-重量级锁:加锁的过程中,采用自适应自旋,避免直接阻塞线程。自旋失败才会阻塞线程并入队,阻塞操作LockSupport.park
由操作系统来实现,性能消耗高。唤醒线程的策略见下图:(waitset
-环形双向链表;cxq 栈;entrylist 双向链表)
-
-
-下图是对象头中的 MarkWord:MarkWord
-结构之所以搞得这么复杂,是因为需要节省内存,让同一个内存区域在不同阶段有不同的用处(图有误,hashcode
-占 32 位)
-
-- 指向线程栈中锁记录的指针 = 持有锁线程的 lockRecord 的指针
-- 指向重量级锁的指针 = 指向 monitor 的指针
-
-
-ReentrantLock
-属性:可重入锁、独占锁、公平锁 or 非公平锁
-特点:可限时等待、可响应中断、可实现选择性通知
-使用场景:阻塞队列 ArrayBlockingQueue
-LinkedBlockingDeque
通过 Condition
-实现队列满插入和队列空取出的阻塞;作为读写锁
-ReentrantReadWriteLock
的父类
-源码结构:
-public class ReentrantLock implements Lock {
// 同步控制器(指向公平锁或非公平锁)
private final Sync sync;
abstract static class Sync extends AbstractQueuedSynchronizer{
final boolean nonfairTryAcquire(int acquires) {...}
protected final boolean tryRelease(int releases) {...}
}
// 不公平锁
static final class NonfairSync extends Sync{
final void lock() {...}
protected final boolean tryAcquire(int acquires) {...}
}
// 公平锁
static final class FairSync extends Sync {
final void lock() {...}
protected final boolean tryAcquire(int acquires) {...}
}
// 实现 Lock 接口
public void lock() {
sync.lock();
}
public boolean tryLock() {
return sync.nonfairTryAcquire(1);
}
public void unlock() {
sync.release(1);
}
}
-ReentrantLock
独占锁运行过程(可重入锁的
-state
表示==重入的次数==,会大于1)
-
-
-加锁失败时阻塞
-ReentrantLock
在 CAS 加锁失败之后会将 Thread
-封装成一个Node
类型的对象加入CLH
队列中
-然后调用LockSupport.park(this)
进行阻塞(LockSupport
是一个
-native 方法实现的工具类,在 hotspot
-源码中通过mutex
来实现的)
-与 synchronized 对比
-
-
-
-
-
-
-
-
-比较
-ReentrantLock
-synchronized
-
-
-
-
-如何实现任务的等待-唤醒?
-Condition 类
-await/signal
,可以有选择性的进行线程通知
-Object 的 wait/notify
,被通知的线程是由 JVM 选择的
-
-
-如何释放锁?
-需要手动释放锁
-出代码块后自动释放
-
-
-底层如何实现?
-API 实现
-JVM 内部锁升级策略
-
-
-是否可实现可中断锁、公平锁?
-可以
-不可以
-
-
-占用资源大不大?
-通过自旋CAS
和Unsafe.park/unpark
挂起唤醒线程
-锁升级策略:轻量级锁CAS
不会阻塞挂起;重量级锁才会和ReentrantLock
一样park/unpark
-
-
-
-可中断锁:获取锁的过程中可以被中断,不需要一直等到获取锁之后才能进行其他逻辑处理。
-不可中断锁:一旦线程申请了锁,就只能等到拿到锁以后才能进行其他的逻辑处理。
-AbstractQueuedSynchronizer
-抽象类
-ReentrantLock、倒计时器、信号量的 Sync 和线程池的 worker 都是基于 AQS
-实现的。AQS
-封装了线程的入队与出队、状态更新以及阻塞与唤醒等底层细节,通过重写tryAcquire(int)
、tryRelease(int)
等方法,实现类可以实现具体的资源控制逻辑。
-AQS
-核心思想:如果被请求的共享资源空闲,则将当前请求资源的线程设置为有效的工作线程,并且将共享资源设置为锁定状态。如果被请求的共享资源被占用,通过
-CLH 锁实现线程阻塞等待以及被唤醒时锁分配。
-CLH 锁:自旋锁的一种改进,利用 ==FIFO 双端队列== 和 ==Node 节点==
-维护等待获取资源的线程队列,==state
-成员变量==表示同步状态,每个节点中包括了线程的引用、
-当前节点在队列中的状态、前驱节点和后继节点。
-源码结构:
-public abstract class AbstractQueuedSynchronizer extends AbstractOwnableSynchronizer {
// 表示锁的持有数量
private volatile int state;
// 双向队列(链表实现)
private transient volatile Node head;
private transient volatile Node tail;
// 本地方法 eg:unsafe.compareAndSwapInt
private static final Unsafe unsafe = Unsafe.getUnsafe();
// 封装线程的节点
static final class Node {
// 标识当前节点对应的等待状态(不非负数时,仅作为普通标识,下文有详细介绍)
volatile int waitStatus;
volatile Node prev;
volatile Node next;
volatile Thread thread;
// 共享锁:Semaphore、CountDownLatch
static final Node SHARED = new Node();
// 独占锁:ReentrantLock
static final Node EXCLUSIVE = null;
// 条件队列中,表示下一个节点
// 同步队列中,表示当前节点想要获取的是排他锁还是共享锁
Node nextWaiter;
}
// 条件队列,保存有触发条件的 Node,实现选择性通知
// 作用类似于 Object 内置的监视器方法:wait notify notifyAll
public class ConditionObject implements Condition{
private transient Node firstWaiter;
private transient Node lastWaiter;
}
// 超时中断
static final long spinForTimeoutThreshold = 1000L;
}
-
-- waitStatus 状态枚举值(初始值为 0,表示初始化状态)【使用情况】
-
-CANCELLED
表示线程已经被取消【响应中断】
-SIGNAL
表示后继节点的线程需要被唤醒【同步队列】
-CONDITION
-表示线程在条件队列中等待某个条件满足【条件队列】
-PROPAGATE
表示共享模式下的资源传播【共享锁】
-
-
-实现类可以是独占锁或者共享锁
-
-- 独占锁:tryAcquire-tryRelease
-- 共享锁:tryAcquireShared-tryReleaseShared
-
-线程调度逻辑:
-当线程尝试获取资源失败时,会创建一个==Node节点==并将当前线程包装进去,然后利用==CAS算法==将其安全地加入到==等待队列的尾部==,并阻塞。Link
-
-
-在释放资源时,AQS会根据资源管理策略从队列中选择合适的节点并唤醒对应线程。
-CLH 锁
-
-Craig, Landin, and Hagersten locks
-实现线程阻塞等待以及被唤醒时锁分配的机制
-
-CLH 锁是对自旋锁的一种改良,是一种隐式的链表队列
-
-采用模板方法设计模式
-模板方法:抽象出步骤的执行顺序作为抽象方法,具体的实现方法交给子类实现。
-自定义 Synchronizer
时需要重写几个 AQS
-提供的钩子方法(通过钩子方法控制 state
-为何值时代表加锁成功/失败、解锁成功/失败):tryAcquire-tryRelease、tryAcquireShared-tryReleaseShared、isHeldExclusively
-
-- 解释一下信号量、倒计时器、可重入锁的 state 的含义
-
-LockSupport 类
-操作 Node 中的 thread,实现线程的阻塞 park
和解除阻塞
-unpark
。Link
-具体来说,操作”许可“(多次 unpark
-也只能获取一次许可,不可叠加),底层通过mutex
(互斥量)和condition
(条件变量)实现。【mutex
存在用户态和内核态的切换】
-
-
-
-
-
-
-
-
-Java 线程中断方法
-方法意义
-
-
-
-
-Thread.currentThread().interrupt()
-将线程的状态置为"中断"
-
-
-Thread.interrupted()
-获取当前线程的中断状态,并且会清除线程的状态标记,静态方法
-
-
-Thread.isInterrupted()
-获取调用该方法的对象所表示的线程,不会清除线程的状态标记,实例方法阻塞和中断的区别?
-
-
-
-阻塞和中断的区别?
-
-Lock 接口
-
-
-
-
-
-
-
-方法
-描述
-
-
-
-
-lock(): void
-加锁(ReentrantLock 默认不可响应中断)
-
-
-lockInterruptibly(): void
-加锁,阻塞等待锁的过程中,可以相应中断
-
-
-tryLock(): boolean
-非阻塞获取锁
-
-
-tryLock(long, TimeUnit): boolean
-时间段内获取锁
-
-
-unlock(): void
-解锁
-
-
-newCondition(): Condition
-获取条件等待队列
-
-
-
-公平锁 & 非公平锁
-AbstractQueuedSynchronizer.hasQueuedPredecessors()
-线程在获取锁前,先判断一下自己在不在队列的首位,只有队首线程能被运行
-ReentrantReadWriteLock
-继承自 ReentrantLock
-读锁是共享锁,写锁是独占锁;读读不互斥、读写互斥、写写互斥;写锁可以升级成读锁
-
-- 共享锁:一把锁可以被多个线程同时获得。
-- 独占锁:一把锁只能被一个线程获得。
-
-StampedLock
-不是直接实现 Lock
或
-ReadWriteLock
接口,而是基于 CLH 锁
-实现的
-Semaphore
-信号量,可选择公平 / 非公平锁。
-控制同时访问特定资源的线程数量,通常用于那些资源有明确访问数量限制的场景,比如限流(仅限于单机模式,实际项目中推荐使用
-Redis +Lua 来做限流)
-CountDownLatch
-倒计时器:await()
阻塞当前线程,当
-count
为零(即 state)时,唤醒所有被阻塞的线程。
-CountDownLatch
-是一次性的,计数器的值只能在构造方法中初始化一次,之后没有任何机制再次对其设置值,当
-CountDownLatch
使用完毕后,它不能再次被使用
-CyclicBarrier
-循环栅栏:让==一组线程==到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程都会继续干活。
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0%
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/JUC-ThreadPool/316ff338f8dab2826a5d32dfb75ffede4158.png b/JUC-ThreadPool/316ff338f8dab2826a5d32dfb75ffede4158.png
deleted file mode 100644
index 9d70897..0000000
Binary files a/JUC-ThreadPool/316ff338f8dab2826a5d32dfb75ffede4158.png and /dev/null differ
diff --git a/JUC-ThreadPool/31bad766983e212431077ca8da92762050214.png b/JUC-ThreadPool/31bad766983e212431077ca8da92762050214.png
deleted file mode 100644
index fbe43d0..0000000
Binary files a/JUC-ThreadPool/31bad766983e212431077ca8da92762050214.png and /dev/null differ
diff --git a/JUC-ThreadPool/582d1606d57ff99aa0e5f8fc59c7819329028.png b/JUC-ThreadPool/582d1606d57ff99aa0e5f8fc59c7819329028.png
deleted file mode 100644
index b4f5f6e..0000000
Binary files a/JUC-ThreadPool/582d1606d57ff99aa0e5f8fc59c7819329028.png and /dev/null differ
diff --git a/JUC-ThreadPool/5a889b90d0f2c2a0f6a4f294b9094194112106.png b/JUC-ThreadPool/5a889b90d0f2c2a0f6a4f294b9094194112106.png
deleted file mode 100644
index 11b3f89..0000000
Binary files a/JUC-ThreadPool/5a889b90d0f2c2a0f6a4f294b9094194112106.png and /dev/null differ
diff --git a/JUC-ThreadPool/606323a07fb7e31cb91f46c879d99b8d735272.gif b/JUC-ThreadPool/606323a07fb7e31cb91f46c879d99b8d735272.gif
deleted file mode 100644
index 659bff9..0000000
Binary files a/JUC-ThreadPool/606323a07fb7e31cb91f46c879d99b8d735272.gif and /dev/null differ
diff --git a/JUC-ThreadPool/77441586f6b312a54264e3fcf5eebe2663494.png b/JUC-ThreadPool/77441586f6b312a54264e3fcf5eebe2663494.png
deleted file mode 100644
index 8486a20..0000000
Binary files a/JUC-ThreadPool/77441586f6b312a54264e3fcf5eebe2663494.png and /dev/null differ
diff --git a/JUC-ThreadPool/82aa288ea62d74c03afcd2308d302b6910425.png b/JUC-ThreadPool/82aa288ea62d74c03afcd2308d302b6910425.png
deleted file mode 100644
index 69aa490..0000000
Binary files a/JUC-ThreadPool/82aa288ea62d74c03afcd2308d302b6910425.png and /dev/null differ
diff --git a/JUC-ThreadPool/912883e51327e0c7a9d753d11896326511272.png b/JUC-ThreadPool/912883e51327e0c7a9d753d11896326511272.png
deleted file mode 100644
index de8707b..0000000
Binary files a/JUC-ThreadPool/912883e51327e0c7a9d753d11896326511272.png and /dev/null differ
diff --git a/JUC-ThreadPool/91ghx5ru0n.jpeg b/JUC-ThreadPool/91ghx5ru0n.jpeg
deleted file mode 100644
index e8806fc..0000000
Binary files a/JUC-ThreadPool/91ghx5ru0n.jpeg and /dev/null differ
diff --git a/JUC-ThreadPool/ThreadPoolExecutor.png b/JUC-ThreadPool/ThreadPoolExecutor.png
deleted file mode 100644
index 5d45f9e..0000000
Binary files a/JUC-ThreadPool/ThreadPoolExecutor.png and /dev/null differ
diff --git a/JUC-ThreadPool/b969e49a7eedbd52b014f86e86dcd3fc49634.png b/JUC-ThreadPool/b969e49a7eedbd52b014f86e86dcd3fc49634.png
deleted file mode 100644
index d8d8e01..0000000
Binary files a/JUC-ThreadPool/b969e49a7eedbd52b014f86e86dcd3fc49634.png and /dev/null differ
diff --git a/JUC-ThreadPool/cef5469b5ec2e67ecca1b99a07260e4e22003.png b/JUC-ThreadPool/cef5469b5ec2e67ecca1b99a07260e4e22003.png
deleted file mode 100644
index 80a6c68..0000000
Binary files a/JUC-ThreadPool/cef5469b5ec2e67ecca1b99a07260e4e22003.png and /dev/null differ
diff --git a/JUC-ThreadPool/f45b271b656f3ae243875fcb2af36a1141224.png b/JUC-ThreadPool/f45b271b656f3ae243875fcb2af36a1141224.png
deleted file mode 100644
index d0de501..0000000
Binary files a/JUC-ThreadPool/f45b271b656f3ae243875fcb2af36a1141224.png and /dev/null differ
diff --git a/JUC-ThreadPool/image-20240419151937541.png b/JUC-ThreadPool/image-20240419151937541.png
deleted file mode 100644
index 06d91d5..0000000
Binary files a/JUC-ThreadPool/image-20240419151937541.png and /dev/null differ
diff --git a/JUC-ThreadPool/index.html b/JUC-ThreadPool/index.html
deleted file mode 100644
index 6f4c72b..0000000
--- a/JUC-ThreadPool/index.html
+++ /dev/null
@@ -1,665 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-ThreadPoolExecutor 和 CompletableFuture 实践 | 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 闻
-
-
- Yesterday is history, tomorrow is a mystery but today is a gift.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ThreadPoolExecutor 和 CompletableFuture 实践
-
-
-
-
-
- 线程池的创建、使用方法,以及如何正确构造有父子关系、先后关系、与或关系的多线程并发场景。
-
-
-
-
-
-
- 池化思想,维护一个池子,减少创建/销毁的开销,合理分配系统资源,但会增加调度开销。参考美团技术博客:底层设计思想、业务实现
-ThreadPoolExecutor
-线程池实现类
-执行流程图
-
-线程池生命周期
-
-任务调度流程
-所有任务的调度都是由execute方法完成的,这部分完成的工作是:检查现在线程池的运行状态、运行线程数、运行策略,决定接下来执行的流程,是直接申请线程执行,或是缓冲到队列中执行,亦或是直接拒绝该任务。其执行过程如下:
-
-- 首先检测线程池运行状态,如果不是
RUNNING
,则直接拒绝,线程池要保证在RUNNING的状态下执行任务。
-- 如果
workerCount < corePoolSize
,则创建并启动一个线程来执行新提交的任务。
-- 如果
workerCount >= corePoolSize,且线程池内的阻塞队列未满
,则将任务添加到该阻塞队列中。
-- 如果
workerCount >= corePoolSize && workerCount < maximumPoolSize,且线程池内的阻塞队列已满
,则创建并启动一个线程来执行新提交的任务。
-- 如果
workerCount >= maximumPoolSize,并且线程池内的阻塞队列已满
,
-则根据拒绝策略来处理该任务, 默认的处理方式是直接抛异常。
-
-
-底层结构
-ThreadPoolExecutor 构造函数
-public ThreadPoolExecutor(
int corePoolSize, //线程池的核心线程数量
int maximumPoolSize, //线程池的最大线程数
long keepAliveTime, //当线程数大于核心线程数时,多余的空闲线程存活的最长时间
TimeUnit unit, //时间单位
BlockingQueue<Runnable> workQueue, //任务队列,用来储存等待执行任务的队列
ThreadFactory threadFactory, //线程工厂,用来创建线程,一般默认即可
RejectedExecutionHandler handler //拒绝策略,当提交的任务过多而不能及时处理时,我们可以定制策略来处理任务
) {...}
-核心线程数:CPU 密集型任务(N+1) I/O 密集型任务(2N) CPU 核心数 N
-阻塞队列 BlockingQueue
-
-阻塞队列中保存即将运行的任务,BlockingQueue 与 Queue
-的主要区别是:
-
-- 通过在入队和出队时进行加锁,保证了队列线程安全
-- 支持阻塞的入队和出队方法:当队列满时,会阻塞入队的线程,直到队列不满;当队列为空时,会阻塞出队的线程,直到队列中有元素。
-
-底层实现
-
-- 采用 ReentrantLock 同步队列实现加锁解锁、阻塞释放
-- 队列为空或已满的情况,采用条件队列 Condition
-
-
-
-
-
-
-
-
-阻塞队列
-描述
-
-
-
-
-ArrayBlockingQueue
-有界队列
-
-
-LinkedBlockingQueue
-不设置大小的话,默认无界队列
-
-
-SynchronousQueue
-如果有空闲线程,则使用空闲线程来处理;否则新建一个线程来处理任务
-
-
-DelayedWorkQueue
-内部元素并不是按照放入的时间排序,而是会按照延迟的时间长短对任务进行排序
-
-
-PriorityBlockingQueue
-优先级阻塞队列
-
-
-
-创建线程工厂类 ThreadFactory
-
-参数可以设定线程名
-
-
-- java rt包:原生 ThreadFactory 类
-- hutool: ThreadFactoryBuilder
-- google guava.jar: ThreadFactoryBuilder
-
-自定义线程工厂
-public static class testThreadPoolFactory implements ThreadFactory {
private AtomicInteger threadIdx = new AtomicInteger(0);
private String threadNamePrefix;
public testThreadPoolFactory(String Prefix) {
threadNamePrefix = Prefix;
}
@Override
public Thread newThread(Runnable r) {
Thread thread = new Thread(r);
thread.setName(threadNamePrefix + "-xxljob-" + threadIdx.getAndIncrement());
return thread;
}
}
-任务拒绝策略
-
-在使用线程池并且使用有界队列的时候,如果队列满了,任务添加到线程池的时候就会拒绝,具体的拒绝策略可以设定
-
-
-
-
-
-
-
-
-拒绝策略
-描述
-
-
-
-
-AbortPolicy
-线程池队列满了丢掉这个任务并且抛出 RejectedExecutionException
-异常
-
-
-DiscardPolicy
-如果线程池队列满了,会直接丢掉这个任务并且不会有任何异常
-
-
-DiscardOldestPolicy
-如果队列满了,会将最早进入队列的任务删掉腾出空间,再尝试加入队列
-
-
-CallerRunsPolicy
-如果添加到线程池失败,那么主线程会自己去执行该任务
-
-
-
-自定义拒绝策略
-public class MyRejectPolicy implements RejectedExecutionHandler{
public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
//Sender是我的Runnable类,里面有message字段
if (r instanceof Sender) {
Sender sender = (Sender) r;
//直接打印
System.out.println(sender.getMessage());
}
}
}
-线程池实现接口
-
-ExecutorService接口:(1)扩充执行任务的能力,补充可以为一个或一批异步任务生成
-Future
-的方法;(2)提供了管控线程池的方法,比如停止线程池的运行。
-public interface ExecutorService extends Executor {
//不再接受新任务,待所有任务执行完毕后关闭 ExecutorService
void shutdown();
//不再接受新任务,直接关闭 ExecutorService,返回没有执行的任务列表
List<Runnable> shutdownNow();
//判断ExecutorService是否关闭
boolean isShutdown();
//判断ExecutorService是否终止
boolean isTerminated();
//等待ExecutorService到达终止状态
boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException;
//当task执行成功的时候future.get()返回执行结果
<T> Future<T> submit(Callable<T> task);
//当task执行成功的时候future.get()返回result
<T> Future<T> submit(Runnable task, T result);
//当task执行成功的时候future.get()返回null
Future<?> submit(Runnable task);
//批量提交任务并获得他们的future,Task列表与Future列表一一对应
<T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks) throws InterruptedException;
<T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit) throws InterruptedException;
//批量提交任务并获得一个已经成功执行的任务的结果
<T> T invokeAny(Collection<? extends Callable<T>> tasks) throws InterruptedException, ExecutionException;
<T> T invokeAny(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException;
}
-顶层接口 Executor
-:==将任务提交和任务执行进行解耦==。用户无需关注如何创建线程,如何调度线程来执行任务,用户只需提供Runnable对象,将任务的运行逻辑提交到执行器(Executor)中,由Executor框架完成线程的调配和任务的执行部分。
-public interface Executor {
// 在未来的某个时间执行 command (方法用于提交不需要返回值的任务,所以无法判断任务是否被线程池执行成功与否)
void execute(Runnable command);
}
-Executors 线程池工厂类
-FixedThreadPool 固定线程数
-运行中的 FixedThreadPool(未执行 shutdown()或
-shutdownNow())不会拒绝任务,在任务比较多的时候会导致
-OOM(内存溢出)
-public static ExecutorService newFixedThreadPool(int nThreads) {
return new ThreadPoolExecutor(nThreads, nThreads,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>());
}
-
-SingleThreadExecutor
-只有一个线程的线程池(FixedThreadPool 的特例)
-CachedThreadPool 根据需要创建新线程的线程池
-
-CompletableFuture
-异步执行结果类
-
-RxJava、Reactor 比 CompletableFuture
-增加了操作融合、延迟执行、回压等特性
-
-CompletableFuture实现 Future、CompletionStage 接口。
-
-- Future
-表示异步计算的结果,可以通过
Future
-类获取到耗时任务的执行结果
-- CompletionStage
-用于表示异步执行过程中的一个步骤(Stage),这个步骤可能是由另外一个
-CompletionStage 触发的,随着当前步骤的完成,也可能会触发其他一系列
-CompletionStage
-的执行。从而我们可以根据实际业务对这些步骤进行多样化的编排组合,CompletionStage
-接口正是定义了这样的能力,我们可以通过其提供的 thenAppy、thenCompose
-等函数式编程方法来组合编排这些步骤。
-
-FutureTask
相当于对Callable
-进行了封装,管理着任务执行的情况,存储了 Callable
的
-call
方法的任务执行结果
-注意事项
-
-- Future 需要获取返回值,才能获取异常信息(即线程需要实现
-
Callable
接口,而 Runnable
-接口创建线程不会返回结果或抛出检查异常)
-- CompletableFuture 的 get() 方法是阻塞等待的
-- 异步调用强制传自定义线程池,做好线程池隔离
-- 自定义线程池时,仔细考虑延迟队列满时,应采取什么拒绝策略
-
-Q1:程序执行在哪个线程上?
-A1:
-同步方法(即不带Async后缀的方法)有两种情况。
-
-如果注册时被依赖的操作已经执行完成,则直接由当前线程执行。
-如果注册时被依赖的操作还未执行完,则由回调线程(按照当前 CF
-运行情况区分)执行。
-
-异步方法(即带Async后缀的方法):可以选择是否传递线程池参数Executor运行在指定线程池中;当不传递Executor时,会使用ForkJoinPool中的共用线程池CommonPool
-Q2:同步回调和异步回调的区别
-A2:
-同步回调:把函数 b 传递给函数 a。执行 a 的时候,回调了 b,a
-要一直等到 b 执行完才能继续执行;
-异步回调:把函数 b 传递给函数 a。执行 a 的时候,回调了 b,然后 a
-就继续往后执行,b 独自执行。
-线程池循环引用会导致死锁
-public Object doGet() {
ExecutorService threadPool1 = new ThreadPoolExecutor(10, 10, 0L, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<>(100));
CompletableFuture cf1 = CompletableFuture.supplyAsync(() -> {
//do sth
return CompletableFuture.supplyAsync(() -> {
System.out.println("child");
return "child";
}, threadPool1).join();//子任务
}, threadPool1);
return cf1.join();
}
-threadPool1 大小为 10,当同一时刻有 10 个请求到达,则 threadPool1
-被打满,子任务请求线程时进入阻塞队列排队,但是父任务的完成又依赖于子任务,这时由于子任务得不到线程,父任务无法完成。主线程执行
-cf1.join() 进入阻塞状态,并且永远无法恢复。
-异步RPC调用注意不要阻塞IO线程池
-如果是使用基于 NIO(比如Netty)的异步 RPC,则返回结果是由 IO
-线程负责设置的,即==回调方法由 IO 线程触发==,CompletableFuture
-同步回调(如thenApply、thenAccept等无Async后缀的方法)如果依赖的异步 RPC
-调用的返回结果,那么这些==同步回调将运行在IO线程==上,而整个服务只有一个IO线程池,这时需要==保证同步回调中不能有阻塞等耗时过长的逻辑==,否则在这些逻辑执行完成前,IO线程将一直被占用,影响整个服务的响应。
-实际使用场景
-
-
-
-服务端和客户端信息交换频繁,提升系统吞吐量
-I/O密集型任务,对内调度各个下游服务获取数据进行聚合
-对业务流程进行编排,降低任务依赖导致的阻塞
-避免 guava 的 ListenableFuture 回调所导致的回调地狱
-零依赖-构造方法
-ExecutorService executor = Executors.newFixedThreadPool(5);
//1、使用runAsync或supplyAsync发起异步调用
CompletableFuture<String> cf1 = CompletableFuture.supplyAsync(() -> {
return "result1";
}, executor);
//2、CompletableFuture.completedFuture()直接创建一个已完成状态的CompletableFuture
CompletableFuture<String> cf2 = CompletableFuture.completedFuture("result2");
//3、先初始化一个未完成的CompletableFuture,然后通过complete()、completeExceptionally(),完成该CompletableFuture
CompletableFuture<String> cf = new CompletableFuture<>();
cf.complete("success");
-一元依赖-异步回调
-CompletableFuture<String> cf3 = cf1.thenApply(result1 -> {
//result1为CF1的结果
//......
return "result3";
});
CompletableFuture<String> cf5 = cf2.thenApply(result2 -> {
//result2为CF2的结果
//......
return "result5";
});
-二元依赖-多任务
-CompletableFuture<String> cf4 = cf1.thenCombine(cf2, (result1, result2) -> {
//result1和result2分别为cf1和cf2的结果
return "result4";
});
-多元依赖
-CompletableFuture<Void> cf6 = CompletableFuture.allOf(cf3, cf4, cf5);
CompletableFuture<String> result = cf6.thenApply(v -> {
//这里的join并不会阻塞,因为传给thenApply的函数是在CF3、CF4、CF5全部完成时,才会执行 。
result3 = cf3.join();
result4 = cf4.join();
result5 = cf5.join();
//根据result3、result4、result5组装最终result;
return "result";
});
-使用方法
-
-构造方法
-// 使用默认内置线程池ForkJoinPool.commonPool(),根据supplier构建执行任务
public static <U> CompletableFuture<U> supplyAsync(Supplier<U> supplier)
// 自定义线程池,根据supplier构建执行任务
public static <U> CompletableFuture<U> supplyAsync(Supplier<U> supplier, Executor executor)
// 使用默认内置线程池ForkJoinPool.commonPool(),根据runnable构建执行任务
public static CompletableFuture<Void> runAsync(Runnable runnable)
// 自定义线程池,根据runnable构建执行任务
public static CompletableFuture<Void> runAsync(Runnable runnable, Executor executor)
-获取结果方法
-public T get()
public T get(long timeout, TimeUnit unit)
public T getNow(T valueIfAbsent)
// 不抛出异常
public T join()
-异步回调方法
-// 执行第二个任务时,则第二个任务和第一个任务是共用同一个线程池
public CompletableFuture<Void> thenRunAsync(Runnable action);
// 执行第二个任务时,使用给定的线程池
public CompletableFuture<Void> thenRunAsync(Runnable action, Executor executor);
// 第二个回调方法任务,会将该任务的执行结果,作为入参,传递到回调方法中,但是回调方法是没有返回值的
public CompletableFuture<Void> thenAcceptAsync(Consumer<? super T> action);
public CompletableFuture<Void> thenAcceptAsync(Consumer<? super T> action, Executor executor);
// 执行第二个回调方法任务,会将第一个任务的执行结果,作为入参,传递到回调方法中,并且回调方法是有返回值的
public <U> CompletableFuture<U> thenApplyAsync(Function<? super T,? extends U> fn);
public <U> CompletableFuture<U> thenApplyAsync(Function<? super T,? extends U> fn, Executor executor);
-异常处理方法
-由于异步执行的任务在其他线程上执行,而异常信息存储在线程栈中,因此当前线程除非阻塞等待返回结果,否则无法通过try。CompletableFuture提供了异常捕获回调exceptionally,相当于同步调用中的try。使用方法如下所示:
-@Autowired
private WmOrderAdditionInfoThriftService wmOrderAdditionInfoThriftService;//内部接口
public CompletableFuture<Integer> getCancelTypeAsync(long orderId) {
CompletableFuture<WmOrderOpRemarkResult> remarkResultFuture = wmOrderAdditionInfoThriftService.findOrderCancelledRemarkByOrderIdAsync(orderId);//业务方法,内部会发起异步rpc调用
return remarkResultFuture
.thenApply(result -> {//这里增加了一个回调方法thenApply,如果发生异常thenApply内部会通过new CompletionException(throwable) 对异常进行包装
//这里是一些业务操作
})
.exceptionally(err -> {//通过exceptionally 捕获异常,这里的err已经被thenApply包装过,因此需要通过Throwable.getCause()提取异常
log.error("WmOrderRemarkService.getCancelTypeAsync Exception orderId={}", orderId, ExceptionUtils.extractRealException(err));
return 0;
});
}
public class ExceptionUtils {
public static Throwable extractRealException(Throwable throwable) {
//这里判断异常类型是否为CompletionException、ExecutionException,如果是则进行提取,否则直接返回。
if (throwable instanceof CompletionException || throwable instanceof ExecutionException) {
if (throwable.getCause() != null) {
return throwable.getCause();
}
}
return throwable;
}
}
-当 CompletableFuture 的任务不论是正常完成还是出现异常它都会调用
-whenComplete
这回调函数。
-
-- 正常完成:
whenComplete
返回结果和上级任务一致,异常为
-null;
-- 出现异常:
whenComplete
返回结果为
-null,异常为上级任务的异常;
-
-多任务组合回调方法
-thenCompose
-可以用于组合多个CompletableFuture,将前一个任务的返回结果作为下一个任务的参数,它们之间存在着业务逻辑上的先后顺序,前后线程执行是同步的,前面阻塞后面不会执行。
-public <U> CompletableFuture<U> thenCompose(Function<? super T, ? extends CompletionStage<U>> fn);
public <U> CompletableFuture<U> thenComposeAsync(Function<? super T, ? extends CompletionStage<U>> fn) ;
public <U> CompletableFuture<U> thenComposeAsync(Function<? super T, ? extends CompletionStage<U>> fn, Executor executor) ;
-thenCombine 第一个入参 CompletionStage
-是异步的,合并结果的BiFunction是同步的。
-public <U,V> CompletionStage<V> thenCombine (CompletionStage<? extends U> other, BiFunction<? super T,? super U,? extends V> fn);
-applyToEither方法返回一个新的CompletionStage,当此阶段或另一个给定阶段正常完成时,将使用相应的结果作为所提供函数的参数来执行。
-public <U> CompletionStage<U> applyToEither (CompletionStage<? extends T> other, Function<? super T, U> fn);
-底层代码
-
-result
-用于存储当前CF的结果,stack(Completion)表示当前CF完成后需要触发的依赖动作(Dependency
-Actions),去触发依赖它的CF的计算,依赖动作可以有多个(表示有多个依赖它的CF),以栈(Treiber
-stack)的形式存储,stack表示栈顶元素。
-观察者模式:依赖动作(Dependency
-Action)都封装在一个单独Completion子类中。CompletableFuture
-中的每个方法都对应了图中的一个 Completion
-的子类,Completion本身是观察者的基类。
-
-一元依赖中的 thenApply 为例,举例“观察者模式”的设计思想
-
-被观察者
-
-- 每个CompletableFuture都可以被看作一个被观察者,其内部有一个Completion类型的链表成员变量stack,用来存储注册到其中的所有观察者。当被观察者执行完成后会弹栈stack属性,依次通知注册到其中的观察者。上面例子中步骤fn2就是作为观察者被封装在UniApply中。
-- 被观察者CF中的result属性,用来存储返回结果数据。这里可能是一次RPC调用的返回值,也可能是任意对象,在上面的例子中对应步骤fn1的执行结果。
-
-观察者
-CompletableFuture支持很多回调方法,例如thenAccept、thenApply、exceptionally等,这些方法接收一个函数类型的参数
-f,生成一个 Completion 类型的对象(即观察者),并将入参函数 f 赋值给
-Completion 的成员变量 fn,然后检查当前 CF 是否已处于完成状态(即result
-!= null),如果已完成直接触发 fn,否则将观察者 Completion 加入到 CF
-的观察者链 stack
-中,再次尝试触发,如果被观察者未执行完则其执行完毕之后通知触发。
-
-- 观察者中的 dep 属性:指向其对应的 CompletableFuture,在上面的例子中
-dep 指向 CF2。
-- 观察者中的 src 属性:指向其依赖的 CompletableFuture,在上面的例子中
-src 指向 CF1。
-- 观察者 Completion 中的 fn
-属性:用来存储具体的等待被回调的函数。这里需要注意的是不同的回调方法(thenAccept、thenApply、exceptionally等)接收的函数类型也不同,即fn的类型有很多种,在上面的例子中fn指向fn2。
-
-Q1:为什么要在入栈前和入栈后都检查result == null
-A1:因为查 result 和判断 result==null
-是两个操作,CompletableFuture
-没有对其加锁,若被观察者在这两个操作数之间完成,会导致观察者得不到通知
-Q2:当依赖多个CF时,观察者会被压入所有依赖的CF的栈中,每个CF完成的时候都会进行,那么会不会导致一个操作被多次执行呢
-?如下图所示,即当CF1、CF2同时完成时,如何避免CF3被多次触发。
-
-A2:CompletableFuture的实现是这样解决该问题的:观察者在执行之前会先通过CAS操作设置一个状态位,将status由0改为1。如果观察者已经执行过了,那么CAS操作将会失败,取消执行。
-CompletableFuture 处理并行问题的整体流程图:
-
-二元依赖
-thenCombine 操作表示依赖两个 CompletableFuture。其观察者实现类为
-BiApply,如上图所示,BiApply 通过 src 和 snd 两个属性关联被依赖的两个
-CF,fn 属性的类型为
-BiFunction。与单个依赖不同的是,在依赖的CF未完成的情况下,thenCombine
-会尝试将 BiApply 压入这两个被依赖的 CF 的栈中,每个被依赖的 CF
-成时都会尝试触发观察者 BiApply,BiApply
-会检查两个依赖是否都完成,如果完成则开始执行。这里为了解决重复触发的问题,同样用的是上一章节提到的
-CAS 操作,执行时会先通过 CAS 设置状态位,避免重复触发。
-
-// 状态位 Status 定义于 ForkJoinTask 类中
abstract static class Completion extends ForkJoinTask<Void> implements Runnable, AsynchronousCompletionTask{...}
public abstract class ForkJoinTask<V> implements Future<V>{
volatile int status;
}
-多元依赖
-依赖多个CompletableFuture的回调方法包括allOf
、anyOf
,区别在于allOf
观察者实现类为BiRelay,需要所有被依赖的CF完成后才会执行回调;而anyOf
观察者实现类为OrRelay,任意一个被依赖的CF完成后就会触发。二者的实现方式都是将多个被依赖的CF构建成一棵平衡二叉树,执行结果层层通知,直到根节点,触发回调监听。
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0%
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/JUC-ThreadPool/ongsgtlllq.jpeg b/JUC-ThreadPool/ongsgtlllq.jpeg
deleted file mode 100644
index 5e17f0e..0000000
Binary files a/JUC-ThreadPool/ongsgtlllq.jpeg and /dev/null differ
diff --git a/JUC/image-20240516133953621.png b/JUC/image-20240516133953621.png
deleted file mode 100644
index 8349dfa..0000000
Binary files a/JUC/image-20240516133953621.png and /dev/null differ
diff --git a/JUC/v2-6875e31029e2c834cce5feb04bc22474_1440w.webp b/JUC/v2-6875e31029e2c834cce5feb04bc22474_1440w.webp
deleted file mode 100644
index fbf5f65..0000000
Binary files a/JUC/v2-6875e31029e2c834cce5feb04bc22474_1440w.webp and /dev/null differ
diff --git a/JUC/v2-ce5b8a32cd1245c7c8af5fc15ffcc39f_1440w.webp b/JUC/v2-ce5b8a32cd1245c7c8af5fc15ffcc39f_1440w.webp
deleted file mode 100644
index ba82352..0000000
Binary files a/JUC/v2-ce5b8a32cd1245c7c8af5fc15ffcc39f_1440w.webp and /dev/null differ
diff --git a/JVM/1161857-20200427141816383-595743373.png b/JVM/1161857-20200427141816383-595743373.png
deleted file mode 100644
index a6f5de7..0000000
Binary files a/JVM/1161857-20200427141816383-595743373.png and /dev/null differ
diff --git a/JVM/1161857-20200427171615978-465618542.png b/JVM/1161857-20200427171615978-465618542.png
deleted file mode 100644
index 0362686..0000000
Binary files a/JVM/1161857-20200427171615978-465618542.png and /dev/null differ
diff --git a/JVM/1161857-20200427173120968-675206595.png b/JVM/1161857-20200427173120968-675206595.png
deleted file mode 100644
index 517d2be..0000000
Binary files a/JVM/1161857-20200427173120968-675206595.png and /dev/null differ
diff --git a/JVM/1712545820562-e5255e3e-762c-44b8-a179-1cca4068b847.png b/JVM/1712545820562-e5255e3e-762c-44b8-a179-1cca4068b847.png
deleted file mode 100644
index 6b283dc..0000000
Binary files a/JVM/1712545820562-e5255e3e-762c-44b8-a179-1cca4068b847.png and /dev/null differ
diff --git a/JVM/image-20240429094145753.png b/JVM/image-20240429094145753.png
deleted file mode 100644
index 6a8f528..0000000
Binary files a/JVM/image-20240429094145753.png and /dev/null differ
diff --git a/JVM/image-20240429095131808.png b/JVM/image-20240429095131808.png
deleted file mode 100644
index b17f20f..0000000
Binary files a/JVM/image-20240429095131808.png and /dev/null differ
diff --git a/JVM/image-20240429095142614.png b/JVM/image-20240429095142614.png
deleted file mode 100644
index beb7067..0000000
Binary files a/JVM/image-20240429095142614.png and /dev/null differ
diff --git a/JVM/image-20240429095150787.png b/JVM/image-20240429095150787.png
deleted file mode 100644
index 098b4c7..0000000
Binary files a/JVM/image-20240429095150787.png and /dev/null differ
diff --git a/JVM/image-20240429095159588.png b/JVM/image-20240429095159588.png
deleted file mode 100644
index 355f225..0000000
Binary files a/JVM/image-20240429095159588.png and /dev/null differ
diff --git a/JVM/image-20240429095206248.png b/JVM/image-20240429095206248.png
deleted file mode 100644
index 5ddd758..0000000
Binary files a/JVM/image-20240429095206248.png and /dev/null differ
diff --git a/JVM/image-20240429095212841.png b/JVM/image-20240429095212841.png
deleted file mode 100644
index 200381a..0000000
Binary files a/JVM/image-20240429095212841.png and /dev/null differ
diff --git a/JVM/image-20240429100643112.png b/JVM/image-20240429100643112.png
deleted file mode 100644
index 771c01d..0000000
Binary files a/JVM/image-20240429100643112.png and /dev/null differ
diff --git a/JVM/image-20240429100908916.png b/JVM/image-20240429100908916.png
deleted file mode 100644
index c9ac7de..0000000
Binary files a/JVM/image-20240429100908916.png and /dev/null differ
diff --git a/JVM/index.html b/JVM/index.html
deleted file mode 100644
index af0a85f..0000000
--- a/JVM/index.html
+++ /dev/null
@@ -1,686 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-JVM 虚拟机 | 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 闻
-
-
- Yesterday is history, tomorrow is a mystery but today is a gift.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- JVM 虚拟机
-
-
-
-
-
- 内存结构、GC、垃圾回收、类加载
-
-
-
-
-
-
-
-
-
-TODO虚拟机器执行子系统、GC、内存区域、调优
-内存结构
-方法区、永久代(PermGen
-space)、元空间(Metaspace)的关系
-
-方法区
-
-- 主要存储类的相关信息,所以对于动态生成类的情况比较容易出现永久代的内存溢出
-- 方法区是 JVM 的规范,元空间是 HotSpot 虚拟机在 Java8
-具体实现的方法区(JDK8 之前是永久代)
-
-Metaspace(元空间)替换 PermGen(永久代)的原因 >
-永久代存储在虚拟机堆中,元空间存储在本地内存中
-
-- 字符串存在永久代中,不方便管理维护,需要单独进行垃圾管理
-- 类及方法的信息等比较难确定其大小,因此难以指定永久代的大小,太小容易出现永久代溢出,太大则容易导致老年代溢出
-- 永久代会为 GC 带来不必要的复杂度,并且回收效率偏低
-- 和其他虚拟机架构看齐,方便合并
-
-静态变量和基本数据类型包装类的常量池存在哪里?
-
-- jdk1.6 及之前静态变量和 String Table 在永久代方法区
-- jdk1.8后
-运行时常量池和静态变量在元空间,字符串常量池在堆空间
-
-运行时常量池
-
-- 存储常量、引用、整数和浮点数等内存区域,是类加载后的第一个创建的内存区域,并且在整个
-JVM 进程中共享
-- 常量池中的内容是不可变的,可以通过符号引用进行共享,从而避免内存浪费
-
-方法区:全局,所有栈都可以访问
-
-- static、ClassLoader
-
-JVM 内存区域
-线程私有的
-
-- 程序计数器(当前线程执行位置;依次读取代码)
-- 本地方法栈(存储栈帧:局部变量表【值、引用指针、句柄】、操作数栈、动态链接【当一个方法要调用其他方法,将常量池中指向方法的符号引用转化为其在内存地址中的直接引用】、方法返回地址)
-- 虚拟机栈
-
-线程共享的
-
-- 方法区(元空间、永久代)当虚拟机要使用一个类时,它需要读取并解析
-Class
-文件获取相关信息,再将信息存入到方法区。方法区会存储已被虚拟机加载的
-类信息、字段信息、方法信息、常量、静态变量、即时编译器编译后的代码缓存等数据。(运行时常量池:即各种字面量和符号引用【解析阶段:JVM
-将符号引用转为直接引用】)
-- 堆(字符串常量池【String#intern】、静态变量)
-- 本地内存
-
-对象的创建过程
-
-对象的创建过程
-
-- 查找常量池中是否有类的符号引用
-- 分配内存:指针碰撞 OR 空闲列表(保证线程安全:CAS + 失败重试 OR
-TLAB)
-- 初始化零值
-- 设置对象头:元数据信息、对象的哈希码、对象的 GC
-分代年龄、是否启用偏向锁
-- 执行 init 方法
-
-
-对象访问定位
-通过栈上的 引用指针 Reference
-来操作堆上的具体对象:句柄、直接指针
-
-- Java 堆中将会划分出一块内存来作为句柄池,reference
-中存储的就是对象的句柄地址,而句柄中包含了对象实例数据与类型数据各自的具体地址信息。在对象被移动时(垃圾收集时移动对象是非常普遍的行为)只会改变句柄中的实例数据指针。
-
-
-
-
-- 直接指针访问方式最大的好处就是速度快,它节省了一次指针定位的时间开销,HotSpot
-采用的是直接指针
-
-
-
-对象的内存布局
-Mark Word
-是一个具有动态定义的数据结构,以便在极小的空间内存储尽量多的数据,根据对象的状态复用自己的存储空间。
-
-GC 堆
-新生代 Young Generation
-
-- Eden 区【新建对象分配地址】
-- 两个 Survivor 区 S0 和 S1 【survivor 的阈值年龄取小(占用超过一半 s
-区的年龄,MaxTenuringThreshold)】
-
-老生代 Old Generation
-HotSpot VM 的实现里的 GC 其实准确分类只有两大种:
-部分收集 (Partial GC):
-
-- 新生代收集(Minor GC / Young GC):只对新生代进行垃圾收集;
-- 老年代收集(Major GC / Old
-GC):只对老年代进行垃圾收集。需要注意的是 Major GC
-在有的语境中也用于指代整堆收集;
-
-- 触发条件:老年代空间不足、方法区空间不足
-
-- 混合收集(Mixed GC):
-
-垃圾回收
-GC Root
-虚拟机栈、本地方法栈、方法区中类静态属性、方法区中常量、JNI
-引用的对象
-被同步锁持有的对象
-记忆集与卡表:
-记忆集是一种用于记录从非收集区域指向收集区域的指针集合的抽象数据结构。在垃圾收集的场景中,收集器只需要通过记忆集判断出某一块非收集区域是否存在有指向了收集区域的指针,并不需要了解这些跨代指针的全部细节。老年代划分为若干个小块,标识出老年代哪一块内存会存在跨代引用。当发生
-Minor GC 时,只有包含了跨代引用的小块内存中的老年代对象才会加入到 GC
-Roots 扫描中,避免整个老年代加入到 GC Roots 中
-垃圾收集算法
-
-
-
-
-
-
-
-
-
-垃圾收集算法
-优点
-缺点
-适用范围
-
-
-
-
-标记清除法
-不需要移动对象,简单高效
-标记效率低(访问全部内存)内存碎片
-老年代
-
-
-标记复制算法
-无内存碎片
-频繁复制;内存使用率低
-新生代
-
-
-标记整理法
-结合了上面两个优点
-移动局部对象
-老年代
-
-
-分代收集算法
-根据对象存活概率,选择垃圾收集算法
-
-
-
-
-
-垃圾回收器
-GCRoot:栈帧中引用的对象、静态变量、常量、本地方法栈中对象 STW:Stop
-the World
-
-
-
-Young GC
-Old GC
-
-
-
-
-Serial 串行、标记-复制
-Serial Old 标记-整理(STW)
-
-
-PawNew 并行、标记-复制
-CMS 降低单次垃圾收集时间
-
-
-Parallel Scavenge 吞吐率
-Parallel Old
-
-
-
-
-CMS
-
-以获得最短回收停顿时间为目标的收集器
-
-流程
-
-- 初次标记 STW:标记直接与 root 相连的对象
-- 并发标记:标记可达对象,跟踪更新记录
-- 重新标记 STW:修正并发标记的变动
-- 并发清理:标记-清理(不用 STW,但清理会产生内存碎片,复制不会)
-
-优点
-
-- 并发收集、低停顿
-
-缺点
-
-- 对 CPU 资源敏感;
-- 无法处理浮动垃圾;
-- 它使用的回收算法“标记-清除”算法会导致收集结束时会有大量空间碎片产生,过量碎片会导致
-Full GC;
-- 并发失败:并发清理的时候用户线程没有足够的 JVM 内存,会导致 STW
-并产生内存碎片
-### G1
-> G1
-跟踪每个区域的垃圾大小,在后台维护一个优先级列表,每次根据允许的收集时间,优先回收价值最大的区域,已达到在有限时间内获取尽可能高的回收效率
-
-
-内存结构
-
-- Region 大小 1M~32M、个数大概 2000
-- >=0.5 Region <1Region:H 区(超大对象存储区)
-- >1Region:多个连续存储区
-
-概念
-
-- RememberSets,又叫 Rsets 是每个 region
-中都有的一份存储空间,用于存储本 region 的对象被其他 region
-对象的引用记录
-- CollectionSets,又叫 Csets 是一次 GC 中需要被清理的 regions
-集合,注意G1每次 GC 不是全部 region
-都参与的,可能只清理少数几个,这几个就被叫做 Csets
-
-Young
-GC 复制清理的过程 MixGC(没有 Old GC
-的概念,新老代一起 GC)类似于 CMS
-
-- 初次标记 STW:标记直接与 GCRoot 相连的对象,和该对象所处的
-Region(RootRegion)
-- 扫描 RootRrgion:遍历 old Region,如果 rset 中存在
-RootRegion,则标记(即为可达的 Region)
-- 并发标记:同 CMS,但仅遍历标记的 Region
-- 重新标记 STW:SATB 算法
-- 筛选回收 STW:局部的标记整理垃圾收集
-
-
-对比CMS,有哪些不同?
-
-- region化的内存结构,采用复制清理的方式,避免了内存碎片。但是这种清理也造成了STW
-- SATB速度更快
-- 初始标记,并发标记,重新标记,清理垃圾四个阶段很像,但是G1中有很多标记region的操作,并借助Rset进行了范围的缩小,提高了并发标记的速度。小结下就是初始标记和YGC的STW一起了,提高了效率;并发标记因为rset的设计,扫描范围缩小了,提高了效率;重新标记因为使用了SATB提高了效率;清理虽然造成了STW,但是复制使内存紧凑,避免了内存碎片。同时只清理垃圾较多的region,最大限度的降低了STW时间
-
-
-
-类加载过程
-类的生命周期:加载、连接、初始化、使用、卸载
-
-
-
-- 加载:通过全类名获取定义此类的二进制字节流;将字节流所代表的静态存储结构转换为方法区的运行时数据结构;在内存中生成一个代表该类的
-
Class
-对象,作为方法区这些数据的访问入口;【通过类加载器实现加载,通过双亲委派模型决定采用哪个类加载器】
-- 验证:确保 Class 文件的字节流中包含的信息无误
-- 准备:分配内存并设置类变量初始值
-- 解析:将常量池内的符号引用替换为直接引用,也就是得到类或者字段、方法在内存中的指针或者偏移量;
-- 初始化:执行字节码中的构造器来初始化类
-
-类加载器
-
-负责加载类的对象,主要作用就是加载 Java 类的字节码( .class 文件)到
-JVM 中(在内存中生成一个代表该类的 Class 对象);
-
-将“通过类的全限定名获取描述类的二进制字节流”这件事放在虚拟机外部,由应用程序自己决定如何实现;
-(启动类加载器:虚拟机的一部分)
-双亲委派模型
-
-决定类由哪个类加载器加载
-编程思想:在面向对象编程中,有一条非常经典的设计原则:组合优于继承,多用组合少用继承(即双亲委派的实现方法)
-
-
-- ClassLoader
-类使用委托模型来搜索类和资源。双亲委派模型要求除了顶层的启动类加载器外,其余的类加载器都应有自己的父类加载器。
-
-- 获取该类的类加载器getClassLoader()方法;获取父类的类加载器getParent()
-
-- ClassLoader
-实例会在试图亲自查找类或资源之前,将搜索类或资源的任务委托给其父类加载器。
-
-为什么用双亲委派?
-
-- 相同二进制名称的类只会被加载一次,已经加载的类会被放在 ClassLoader
-中,防止重复加载;
-- 保证了 Java 的核心 API 不被篡改;
-
-为什么打破双亲委派?
-
-- Tomcat 下 Web
-应用之间的类需要实现隔离,打破双亲委派可以更好地管理多个Web应用程序的类加载,并避免类加载冲突。
-- SPI 的接口是由 Java 核心库提供的(BootstrapClassLoader),SPI
-的实现是由第三方供应商提供的(AppClassLoader),实现类无法通过接口的加载器加载
-
-ClassLoader 抽象类:
-
-- loadClass(String name, boolean resolve)
-:父类的加载器不为空,则通过父类的loadClass来加载该类。如果要打破双亲委派机制,就重写这个方法;
-- findClass(String
-name):当父类加载器无法加载时,根据类的二进制名称来加载该类;
-
-
-
-- 类加载器保存在线程私有数据里,跟线程绑定。解决了,默认情况下一个类及其依赖类由同一个类加载器加载,而接口的类加载器和子类或实现类的加载器不是同一个加载器。
-
-JVM 调优
-配置Java堆和元空间大小
-选择垃圾回收器:CMS 升级到 G1,甚至 ZGC。
-JVM性能监控和调试,分析堆内存状态,合理优化代码
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0%
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Java-Algorithm/index.html b/Java-Algorithm/index.html
index 1ff47e6..72f5ab2 100644
--- a/Java-Algorithm/index.html
+++ b/Java-Algorithm/index.html
@@ -27,7 +27,7 @@
-
+
@@ -140,7 +140,7 @@
-
@@ -154,18 +154,18 @@
@@ -233,7 +233,7 @@
更新于
-
+
@@ -274,17 +274,19 @@ 二分查找
(nums[left]<=nums[mid]) left=mid; else
right=mid-1;【找右边】
+堆排序
+数组实现大根堆的两个主要方法(注意动态扩容)
+class Heap {
int[] data;
public void downHeapify(int i) {
// 下标从0开始,子节点下标为2i+1和2i+2
int l = i*2 + 1, r = i*2 + 2, largest = i;
if (l < heapSize && data[l] > data[largest]) {
largest = l;
}
if (r < heapSize && data[r] > data[largest]) {
largest = r;
}
if (largest != i) {
swap(i, largest);
maxHeapify(largest);
}
}
public void upHeapify(int i) {
// 父节点下标为(i-1)/2
int parent = (i-1)/2, min = i;
if (parent>=0 && data[parent] < data[i]) {
min = parent;
}
if (min != i) {
swap(min, i);
upHeapify(min);
}
}
}
动态规划
-
-思路
-
+思路:动规的中心思想就是把一个复杂问题拆分成多个简单、可以逐步堆叠得到答案的子问题。
+做题步骤
+
- 确定dp数组(dp table)以及下标的含义
- 确定递推公式
- dp数组如何初始化
- 确定遍历顺序
- 举例推导dp数组
-
-
+
0-1背包
每个物品只能用一次
@@ -401,8 +403,8 @@ StringBuilder/StringBuffer
diff --git a/Java-DataStructure/image-20240425212414984.png b/Java-DataStructure/image-20240425212414984.png
deleted file mode 100644
index 6c362b1..0000000
Binary files a/Java-DataStructure/image-20240425212414984.png and /dev/null differ
diff --git a/Java-DataStructure/image-20240425212527868.png b/Java-DataStructure/image-20240425212527868.png
deleted file mode 100644
index 3a108e0..0000000
Binary files a/Java-DataStructure/image-20240425212527868.png and /dev/null differ
diff --git a/Java-DataStructure/index.html b/Java-DataStructure/index.html
deleted file mode 100644
index b91ce31..0000000
--- a/Java-DataStructure/index.html
+++ /dev/null
@@ -1,585 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Java 常用数据结构的底层实现 | 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 闻
-
-
- Yesterday is history, tomorrow is a mystery but today is a gift.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Java 常用数据结构的底层实现
-
-
-
-
-
- ArrayList、LinkedList、HashMap、ConcurrentHashMap 的底层源码剖析
-
-
-
-
-
-
- ArrayList
-ArrayList
的底层是数组队列,相当于动态数组。
-
-- 与数组相比,它的容量能动态增长。
-- 与 Vector 相比,它的底层使用 Object[]
-存储,适用于频繁的查找工作,线程不安全
-
-public class ArrayList<E> extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable{
void add(int, E);
E set(int, E);
E get(int);
E remove(int);
}
-
-List
:
-表明它是一个列表,支持添加、删除、查找等操作,并且可以通过下标进行访问。
-RandomAccess
:这是一个标志接口,表明实现这个接口的
-List
集合是支持 快速随机访问
-,可以通过元素的序号快速获取元素对象list.get(i)
。
-Cloneable
-:表明它具有拷贝能力,可以进行深拷贝或浅拷贝操作。
-Serializable
:
-表明它可以进行序列化操作,也就是可以将对象转换为字节流进行持久化存储或网络传输,非常方便。
-
-扩容机制
-初始化时默认空数组
-DEFAULTCAPACITY_EMPTY_ELEMENTDATA
。
-添加元素时,先判断需要扩容的最小扩容量大小(DEFAULT_CAPACITY 默认是
-10)
-private static int calculateCapacity(Object[] elementData, int minCapacity) {
if (elementData == DEFAULTCAPACITY_EMPTY_ELEMENTDATA) {
return Math.max(DEFAULT_CAPACITY, minCapacity);
}
return minCapacity;
}
-如果需要扩容,就会进入扩容方法 grow(),扩容效果是小于等于 1.5
-倍的(因为 int 取整)
-private void grow(int minCapacity) {
int oldCapacity = elementData.length;
int newCapacity = oldCapacity + (oldCapacity >> 1);
if (newCapacity - minCapacity < 0)
newCapacity = minCapacity;
if (newCapacity - MAX_ARRAY_SIZE > 0)
newCapacity = hugeCapacity(minCapacity);
elementData = Arrays.copyOf(elementData, newCapacity);
}
-如果扩容长度超过定义的数组的最大长度
-MAX_ARRAY_SIZE = Integer.MAX_VALUE-8
,就会触发最大值限制,防止
-size 溢出
-private static int hugeCapacity(int minCapacity) {
if (minCapacity < 0)
throw new OutOfMemoryError();
return (minCapacity > MAX_ARRAY_SIZE) ?
Integer.MAX_VALUE :
MAX_ARRAY_SIZE;
}
-将旧数组移动到新数组
-public static int[] copyOf(int[] original, int newLength) {
int[] copy = new int[newLength];
System.arraycopy(original, 0, copy, 0, Math.min(original.length, newLength));
return copy;
}
-手动扩容,可以在需要插入大量数据前手动扩容
-public void ensureCapacity(int minCapacity) {
int minExpand = (elementData != DEFAULTCAPACITY_EMPTY_ELEMENTDATA) ? 0 : DEFAULT_CAPACITY;
if (minCapacity > minExpand) {
ensureExplicitCapacity(minCapacity);
}
}
-与 LinkedList 的异同
-
-都不保证线程安全;
-ArrayList
底层使用的是 Object[]
-数组;LinkedList
底层使用的是
-Node+双向链表 数据结构(JDK1.6 之前为循环链表,JDK1.7
-取消了循环)
-插入和删除是否受元素位置的影响:
-
-ArrayList
-将指定的元素追加到此列表的末尾,时间复杂度
-O(1)。但是如果要在指定位置 i
-插入和删除元素的话(add(int index, E element)
),时间复杂度
-O(n)。
-LinkedList
-头尾插入或者删除元素不受元素位置的影响(add(E e)
、addFirst(E e)
、addLast(E e)
、removeFirst()
、
-removeLast()
),时间复杂度
-O(1);指定位置 i
-插入和删除元素的话(add(int index, E element)
,remove(Object o)
,remove(int index)
),
-时间复杂度为 O(n) 。
-
-是否支持快速随机访问: LinkedList
-不支持高效的随机元素访问,而 ArrayList
(实现了
-RandomAccess
接口) 支持。
-内存空间占用: ArrayList
-的空间浪费主要体现在在 list 列表的结尾会预留一定的容量空间,而
-LinkedList 的空间花费则体现在它的每一个元素 Node 都需要消耗比 ArrayList
-更多的空间
-
-LinkedList
-
-需要用到 LinkedList
的场景几乎都可以使用
-ArrayList
-来代替,而且性能会更好。头尾插入或者删除元素的时候时间复杂度近似
-O(1),其他情况增删元素的平均时间复杂度都是 O(n) 。
-
-public class LinkedList<E> extends AbstractSequentialList<E>
implements List<E>, Deque<E>, Cloneable, java.io.Serializable {
private static class Node<E> {
E item;
Node<E> next;
Node<E> prev;
Node(Node<E> prev, E element, Node<E> next) {
this.item = element;
this.next = next;
this.prev = prev;
}
}
}
-
-List
:
-表明它是一个列表,支持添加、删除、查找等操作,并且可以通过下标进行访问。
-Deque
:继承自 Queue
-接口,具有双端队列的特性,支持从两端插入和删除元素,方便实现栈和队列等数据结构。
-
-常用方法
-
-- 实现 List 接口
-
-- get、set
-
-- 实现 Collection 接口
-
-- 判断是否存在:contains
-
-- 实现 Queue 接口(通过 Deque 接口)
-
-- 报错:add、remove、element
-- 不报错:offer、poll、peek
-
-- 实现 Deque 接口
-
-- addFirst [push]、addLast [add]:无返回,容量超出限制会报错
-- offerFirst、offerLast [offer]:返回 Boolean 表示是否加入成功
-- removeFirst [remove]、removeLast:队列为空报错
-- pollFirst [poll]、pollLast:队列为空返回 null
-- getFirst [element]、getLast:队列为空报错
-- peekFirst [peek]、peekLast:队列为空返回 null
-
-- 【注意】队列头部为 null 和队列为空时,都会返回 null
-
-- removeFirstOccurrence [remove]、removeLastOccurrence
-- push、pop、peek:作为栈
-
-
-HashMap
-
-JDK1.8 之前 HashMap 采用“拉链法”处理冲突,由 数组+链表 组成; JDK1.8
-以后,若Table长度大于 64,会将链表转化为红黑树。
-
-
-
-
-- key 和 value 可以为 null,但 null 作为 key 只能有一个,而 null 作为
-value 可以有多个
-- 非线程安全的
-
-public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable {
// 默认的初始容量是16
static final int DEFAULT_INITIAL_CAPACITY = 1 << 4;
// 最大容量
static final int MAXIMUM_CAPACITY = 1 << 30;
// 默认的负载因子
static final float DEFAULT_LOAD_FACTOR = 0.75f;
// 当桶上的结点数大于等于这个值时会转成红黑树
static final int TREEIFY_THRESHOLD = 8;
// 当桶上的结点数小于等于这个值时树转链表
static final int UNTREEIFY_THRESHOLD = 6;
// 桶中结构转化为红黑树对应的 table 的最小容量
static final int MIN_TREEIFY_CAPACITY = 64;
// 存储桶(bin)的数组,永远是 2 的幂次倍
transient Node<k,v>[] table;
// 一个包含了映射中所有键值对的集合视图
// 先遍历数组 bin,再通过 Entry.next 遍历每个 bin
transient Set<map.entry<k,v>> entrySet;
// 存放元素的个数,注意这个不等于数组的长度
transient int size;
// 阈值=容量*负载因子,当实际大小超过阈值时,会进行扩容
int threshold;
// 负载因子
final float loadFactor;
static class Node<K,V> implements Map.Entry<K,V>{
final int hash;
final K key;
V value;
// 链表的下一个元素
Node<K,V> next;
}
static final class TreeNode<K,V> extends LinkedHashMap.Entry<K,V>{
Entry<K,V> before, after;
TreeNode<K,V> parent; // 红黑树链
TreeNode<K,V> left;
TreeNode<K,V> right;
TreeNode<K,V> prev; // 需要在下次删除时解除链接
boolean red;
}
}
-
-entrySet
-通过Node的next属性
遍历元素,keySet()
、values()
基于entrySet
实现,用于遍历访问所有
-Node
-元素,还支持元素的删除操作【不确定,entrySet不存储数据,只是数据对外的操作接口】。
-TreeNode
继承了 LinkedHashMap.Entry
-,有指向前后节点的指针
-
-jdk 1.8 Key 计算 hash 值的方法
-static final int hash(Object key) {
int h;
return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);
}
-扩容机制
-何时触发 resize()
扩容
-
-- 要插入数据前,发现
table
中的 bin
为空
-- 要插入数据后,发现
HashMap
的 size
超过
-threshold
-table
长度小于 MIN_TREEIFY_CAPACITY
时,某
-Node
上的链长度超过 TREEIFY_THRESHOLD
-
-resize()
扩容,会将 table 中的节点数量 <<
-1,并重新 hash 映射所有节点(因为 table 变大了,每个节点对应的 bin
-下标发生了变化
-newTab[e.hash & (newCap - 1)] = e
,newCap
为
-table 的新大小)
-链表何时变成红黑树?
-
-- 该
bin
上的链长度binCount
大于等于
-TREEIFY_THRESHOLD
且 table
中 bin
-数量大于等于 MIN_TREEIFY_CAPACITY
-
-如果链表转红黑树的时候,又有数据要插入,会发生什么?
-
-- 线程不安全。在树结构替换链表最终阶段会校验树结构,在此过程中的插入会使该树结构不满足红黑树和双链表的特性,导致报异常
-
assert checkInvariants(root);
-
-ConcurrentHashMap
-
-Java7 中 ConcurrentHashMap 使用的是分段锁,每一个 Segment
-上同时只有一个线程可以操作,结构上时 Segment
数组
-+ HashEntry
数组 +
-链表。Segment
-的个数一旦初始化就不能改变,默认 Segment
-的个数是 16
-个,Segment
继承ReentrantLock
实现分段锁。
-Java8 中的 ConcurrentHashMap 通过 Synchronized 锁加
-CAS 保证多线程安全,结构上是 Node
-数组 + 链表 / 红黑树。
-
-如果链表转红黑树,又有数据要插入,会发生什么。
-
-treeifyBin
通过 synchronized
把
-bin
加锁,后续数据插入会因为无法竞争到资源而阻塞
-- 链表开始转红黑树前,会将 Node 头节点置为
-
ForwardingNode
,ForwardingNode
的 hash 是
-Moved
-表示正在转换为红黑树,此时会自旋等待转换完成后插入(大概是这样的)
-
-如果数组扩容,又有数据要插入,会发生什么。
-
-- 扩容前,会将 Node 头节点置为
-
ForwardingNode
,ForwardingNode
的 hash 是
-Moved
表示正在扩容。
-- 扩容时,插入数据的线程若发现 hash
-值为负,会去协助扩容,扩容完成后再插入数据。
-
-
-
-- 在调用 addCount
-方法增加集合元素计数后发现当前集合元素个数到达扩容阈值时就会触发扩容
-- 扩容状态下其他线程对集合进行插入、修改、删除、合并、compute
-等操作时遇到
ForwardingNode
节点会触发扩容(帮助扩容)
-- putAll 批量插入或者插入节点后发现存在链表长度达到 8
-个或以上,但数组长度为 64 以下时会触发扩容 。
-
-同 HashMap:桶上链表长度达到 8 个或者以上,并且数组长度为 64
-以下时只会触发扩容而不会将链表转为红黑树
-LinkedHashMap
-LinkedHashMap
-内部维护了一个双向链表,确保其迭代顺序是和插入顺序或访问顺序是一致的,通过重写
-get、newNode、afterNodeAccess、afterNodeInsertion、afterNodeRemoval
-等方法实现,最近插入或访问的节点位于链表尾部。
-
-可以按照插入顺序遍历 entry(accessOrder=false)
-也可以按照访问顺序遍历 entry(accessOrder=true),即 LRU
-
-可用于实现 LRU,即 迭代顺序==访问顺序
-
-- 每次修改都将元素删除后重新插入
-- 将
accessOrder
设置为 true 并重写
-removeEldestEntry
方法当链表大小超过容量时返回 true
-
-CopyOnWriteList
-
-并发安全的
-List
,针对读多写少的场景,类比读写锁的思想,实现
-读读不互斥、读写不互斥、写写互斥 的写时复制
-Copy-On-Write 策略。此外还有 Collections.synchronizedList
-,可以将任何List
包装成一个线程安全的List
-
-add 方法内部用到了 ReentrantLock
-加锁,避免了多线程写的时候会复制出多个副本,导致并发问题
-写时复制的缺点
-
-- 写操作资源占用多,复制数据时占用内存
-- 数据一致性问题,修改后需要等到赋值给原数组才能访问到修改
-
-写多读少的场景下,应该用什么数据结构实现并发数组?
-分段读写锁 ReadWriteLock(由于 Arrays.copyOf()
-是操作系统实现,数据量少的话依然可用写时复制)
-PriorityQueue
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0%
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Java/image-20240516125841876.png b/Java/image-20240516125841876.png
deleted file mode 100644
index 3bba3a5..0000000
Binary files a/Java/image-20240516125841876.png and /dev/null differ
diff --git a/Java/index.html b/Java/index.html
deleted file mode 100644
index 5eb0f0e..0000000
--- a/Java/index.html
+++ /dev/null
@@ -1,556 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Java 语言 | 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 闻
-
-
- Yesterday is history, tomorrow is a mystery but today is a gift.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Java 语言
-
-
-
-
-
- Java 语言的基础知识
-
-
-
-
-
-
- 基础
-基本数据类型
-除八个基本类型,Java 的所有数据类型都是引用,Java
-中没有指针的概念,所有数据传输都是传值(引用可以看作是地址值,所有引用值都占四个字节)
-基本数据类型的包装类 Byte Short Integer Long Character 有常量池
-编译运行
-
-- Java 编译器 Javac 是用 Java 实现的,用于将 .java 文件编译成字节码
-.class
-- .class 通过解释器对这些字节码进行解释执行
-- Java 的运行环境 JVM 如 HotSpot VM,实现了其跨平台的特性
-
-三大特性
-封装
-将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体;
-继承
-支持类之间的单继承,但支持接口之间的多继承;
-类可以实现多个接口,抽象类不能实例化但可以有构造方法,内部类只能通过外部类创建;
-Object 是超类,是所有类的父类(无父类的子类默认继承
-Object。jdk6之前是编译器处理,jdk7之后是虚拟机处理);
-Java8 之后接口可以有默认方法,允许在接口中声明静态方法;
-多态
-全面支持动态绑定,动态绑定是实现多态(一个接口,多种实现)的基础;
-
-- 多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法(A
-a=new B(),A是父类,B是子类)
-- 静态绑定:对象属性和 static private final
-修饰的对象方法(构造函数),哪里声明,哪里使用
-- 动态绑定:运行时 JVM
-实现绑定。若子类实现了这个方法,则调用子类的内存地址,若没有则调用当前对象(父类)的方法。只能调用父类的属性,虽然实际实现的是子类,如果父类没有这个属性,那就无法调用。如果要获取子类属性,就要重写子类方法获取该属性,前提是这个方法在父类中同样存在。
-
-关键字
-
-
-
-
-
-
-
-关键字
-说明
-
-
-
-
-final
-常量
-
-
-static
-静态变量,无论一个类实例化多少对象,它的静态变量只有一份拷贝;静态方法,不能使用类的非静态变量,类名直接调用,不需要进行实例化对象。
-
-
-native
-本地、原生方法(非 Java 实现)
-
-
-strictfp
-严格浮点、精准浮点
-
-
-synchronized
-线程、同步
-
-
-transient
-修饰的成员属性变量不被序列化,仅存于调用者的内存中而不会写到磁盘里持久化,防止敏感信息泄露(与Serilizable接口一同使用)当对象被反序列化时,被
-transient 修饰的变量值不会被持久化和恢复,直接设置为默认值。static
-不属于任何对象,因此永远不会被序列化。
-
-
-volatile
-变量在 CPU
-的寄存器中是不确定的,必须从主存中读取。保证多线程环境下变量的可见性;禁止指令重排序。
-
-
-instanceof
-实例
-
-
-
-运算符优先级
-
-自动装箱/拆箱
-
-jdk1.5 i = Integer.valueOf(3) -128-127
-
-自动装箱通常也不会通过显式的 valueOf
-方法调用实现。编译器生成的字节码可能直接使用内部指令或方法来处理装箱和拆箱,而不是通过Java方法调用机制。因此,在
-valueOf 方法上设置断点通常不会捕获到自动装箱的过程。
-new String("abc")
和 String.valueOf("abc")
-的区别:前者在堆中创建了新的对象,后者返回字符串常量池对象的引用。拆箱:xxxValue();装箱:valueOf()
-public void zhuangXiang() {
Integer a1 = 128;
Integer a2 = 128;
Integer a3 = 256;
Integer a4 = a1 + a2;
System.out.println(a1 == a2); // false
System.out.println(a4 == a3); // false
System.out.println(a1 + a2 == a3); // true 发生拆箱
}
-NPE 问题
-
-- 数据库查询返回结果为 Null,无法拆箱
-- 三目运算符可能出现问题:flag ? 0 : i(应使用 flag ? new Integer(0) :
-i)
-
-动态代理
-静态代理:编译时完成 动态代理:运行时动态生成类字节码,并加载到 JVM
-中
-
-- JDK
-动态代理:通过生成一个实现被代理类接口的对象来拦截被代理类的方法调用
-
-- 封装:Proxy.newProxyInstance() 指定 ClassLoader 对象和一组
-interface
-- 调用:InvocationHandler 接口 invoke 方法
-
-- CGLIB
-动态代理:通过生成一个被代理类的子类来拦截被代理类的方法调用(字节码实现,不能被
-final 修饰,编译速度慢,运行速度快)
-
-- 封装:Enhancer 类
-- 调用:MethodInterceptor 接口 intercept 方法
-
-
-二者的具体实现
-
-- JDK:运行时动态解析,无法应用一些 JVM 优化
-- CGLib:ASM 开源包,代理对象类的 class
-文件加载时,修改其字节码生成代理子类(ASM
-是在编译期处理字节码的,可以认为是一种编译期的 AOP 技术)
-
-为什么 JDK 动态代理,要求被代理对象必须实现一个接口?
-
-- 因为 JDK 动态代理类已经继承了 Proxy
-这个类,所以只能通过接口来与被代理类建立联系(两个类建立起联系,一是继承的关系【jdk已经不能通过这个方式了,因为java仅支持单继承】,另一种就是实现同一个接口【JDK动态代理选这种】),所以必须要求被代理类也得实现一个接口
-
-原生工具类
-Collections 集合操作类
-
-- sort(list)
-- reverse(list)
-- binarySearch(list, target)
-
-Arrays 数组操作类
-
-- max(list)
-- sort(array, (o1, o2)->o1-o2)
-- copyOf(array, Length)
-- binarySearch(array, value)
-- fill(array, value)
-
-比较器 集合排序工具
-
-- Comparator 类级别
-
-- 针对不同的比较,单独定义一个比较类
-- int compare(T o1, T o2);
-
-- 返回值为正数,交换 o1 o2 的顺序
-- 返回值为负数或零,不需要调整
-- 返回升序 o1-o2,降序 o2-o1
-
-
-- Comparable 方法级别
-
-- 若一个类实现了Comparable接口,就意味着“该类支持排序”,可以用Arrays.sort()排序
-- public int compareTo(T o);
-
-
-接口实现
-接口和抽象类的关系
-
-- 共同点
-
-- 都不能被实例化
-- 都可以包含抽象方法
-- 方法可以有默认实现的
-
-- 区别
-
-- 接口主要用于对类的行为进行约束,你实现了某个接口就具有了对应的行为。抽象类主要用于代码复用,强调的是从属关系。
-- 一个类只能继承一个类,但是可以实现多个接口。
-- 接口中的成员变量只能是 public static final
-类型的,不能被修改且必须有初始值,而抽象类的成员变量默认
-default,可在子类中被重新定义,也可被重新赋值。
-
-- 接口中的所有成员变量都默认是由public static final修饰的
-- 接口中的所有方法都默认是由public abstract修饰的
-- 接口没有构造方法
-- 实现接口的类中必须提供接口中所有方法的具体实现内容
-- 多个无关的类可以实现同一个接口
-- 一个类可以实现多个无关的接口
-- 与继承关系类似,接口与实现类之间存在多态性
-- 接口可以继承多个接口,使用extends关键字
-- Java8
-后,接口可以拥有普通方法,实现类不需要重写,可以被实现类继承
-
-构造器
-this(参数列表)来访问本类构造器需要注意以下几点
-
-- 只能在构造器中使用
-this(参数列表);即在一个构造器中访问本类的另外一个构造器。
-- 显示使用 this() 时,默认的 super() 就被覆盖
-- this(参数列表)和 super(参数列表)在构造器中有且只能存在一个。
-- 若在构造器中使用 this(参数列表),则此语句只能位于构造器第一行
-
-动态加载
-反射(运行时获取类的信息、创建对象、调用方法)
-类加载器 ClassLoader
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0%
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/LLM-Application/index.html b/LLM-Application/index.html
index 8007739..f98de24 100644
--- a/LLM-Application/index.html
+++ b/LLM-Application/index.html
@@ -158,18 +158,18 @@
@@ -308,8 +308,8 @@ 解决思路
chunk_overlap
指两个块之间共享的字符数量,用于保持上下文的连贯性,避免分割丢失上下文信息
-
-
+
+
Q1:如何加强搜索结果的多样性?
A1:最大边际相关性
Maximum marginal relevance
@@ -393,8 +393,8 @@
Python Notes
diff --git a/LLM-Finetune/index.html b/LLM-Finetune/index.html
deleted file mode 100644
index 7d47780..0000000
--- a/LLM-Finetune/index.html
+++ /dev/null
@@ -1,713 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-LLM-Finetune | 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 闻
-
-
- Yesterday is history, tomorrow is a mystery but today is a gift.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- LLM-Finetune
-
-
-
-
-
-
-
-
- 发表于
-
-
-
-
-
-
-
- 更新于
-
-
-
-
-
-
- 大模型微调具体实现方法,包括数据预处理、数据加载、微调模型构建、模型训练、加速训练方法、保存微调结果、加载 Adapter、推理测评、可交互 Cli等
-
-
-
-
-
-
- 微调结果测评
-数据集
-基准数据集:MMLU、CMMLU、C-Eval
-微调数据集:
-
-
-
-
-
-
-
-名称
-描述
-
-
-
-
-NaturalConv
-来自腾讯,语料库包含了来自6个领域的19.9K对话和400K话语,平均回合数为20.1【数据集、脚本】
-
-
-COIG-CQIA
-来自零一万物,以中文互联网获取到的问答及文章作为原始数据,经过深度清洗、重构及人工审核构建而成,注重数据的来源、质量与多样性【数据集】
-
-
-alpaca-gpt4-data-zh
-GPT-4生成的中文数据集,可用于LLM的指令精调和强化学习等【数据集】
-
-
-
-
-
-
-
-测评指标
-
-
-
-
-
-
-
-指标
-含义
-
-
-
-
-BLEU-N
-计算生成语句与相应的参考语句的 n-gram
-精确率,匹配的n-gram总数除以系统生成语句的总n-gram数
-
-
-DIST-N
-生成文本的多样性,Distinct-n越大表示生成的多样性越高
-
-
-ROUGE-N
-着重于信息完整性和涵盖程度,将匹配的n-gram总数除以参考语句中的总n-gram数
-
-
-ROUGE-L
-衡量模型生成文本与参考文本之间最长公共子序列的匹配程度,值越高表示生成的文本与参考文本越相似
-
-
-runtime
-预测运行时间,表示模型生成一批样本所花费的总时间。单位通常为秒。
-
-
-samples_per_second
-每秒生成的样本数量,表示模型每秒钟能够生成的样本数量。通常用于评估模型的推理速度
-
-
-steps_per_second
-表示模型每秒钟能够执行的步骤数量。对于生成模型,一般指的是每秒钟执行生成操作的次数
-
-
-
-BLUE-N 公式:
-\[BLEU=BP\times\exp\left(\sum_{n=1}^{N}W_{n}\times\log
-P_{n}\right)\\BP=\left\{\begin{matrix}1&&lc>\mathrm{lr}\\\exp(1-lr/lc)&&lc\leq
-lr\end{matrix}\right.\]
-其中,Pn 指 n-gram 的精确率,Wn 指 n-gram
-的权重,一般设为均匀权重,即对于任意 n 都有 Wn = 1/N。BP
-是惩罚因子,如果译文的长度小于最短的参考译文,则 BP 小于
-1。lc机器翻译的长度,lr最短的参考译文的长度。
-ROUGE-N 公式:
-\[\text{ROUGE -
-N}=\frac{\sum_{S\in\{ReferenceSummaries\}}\sum_{gram_N\in
-S}Count_{match}(gram_N)}{\sum_{S\in\{ReferenceSummaries\}}\sum_{gram_N\in
-S}Count(gram_N)}\]
-其中,公式的分母是统计在参考译文中 N-gram
-的个数,而分子是统计参考译文与机器译文共有的 N-gram 个数。
-DIST-N 公式:
-\[Distinct(n)=\frac{Count(unique-ngram)}{Count(word)}\]
-开源工具
-
-
-
-项目名称
-
-
-
-
-
-LLaMaFactory
-
-
-
-axolotl
-
-
-
-functionary
-
-
-
-
-
-
-
-
-测评数据
-在 Qwen-1_8B-Chat 上微调 NaturalConv (转换成 shareGPT 格式)
-
-训练 500 轮对话,测试 50 轮对话
-
-
-
-
-微调方法
-bleu-4
-rough-1
-rough-2
-rough-l
-
-
-
-
--
-4.67
-21.60
-3.24
-19.27
-
-
-LoRA
-4.95
-24.25
-2.32
-19.69
-
-
-AdaLoRA
-4.67
-21.85
-3.24
-19.51
-
-
-VeRA
-
-
-
-
-
-
-
-指令数据格式
-alpaca 格式数据
-[
{
"instruction": "用户指令(必填)",
"input": "用户输入(选填)",
"output": "模型回答(必填)",
"system": "系统提示词(选填)",
"history": [
["第一轮指令(选填)", "第一轮回答(选填)"],
["第二轮指令(选填)", "第二轮回答(选填)"]
]
}
]
-sharegpt 格式数据,支持多角色对话
-[
{
"conversations": [
{
"from": "human",
"value": "用户指令"
},
{
"from": "gpt",
"value": "模型回答"
}
],
"system": "系统提示词(选填)",
"tools": "工具描述(选填)"
}
]
-llamafactory 配置样例
-"NaturalConv": {
"file_name": "/home/wzw/Project/llm-fine-tuning/data/dialog_release_format.json",
"formatting": "sharegpt",
"columns": {
"messages": "content"
},
"tags": {
"role_tag": "from",
"content_tag": "value",
"user_tag": "A",
"assistant_tag": "B"
}
}
-输入样例
-{'dialog_id': '0_2',
'document_id': 0,
'content': [{'from': 'A', 'value': '嗨!'},
{'from': 'B', 'value': '你好。'},
{'from': 'A', 'value': '你最近有听说过《中国女排》这部电影嘛?'},
{'from': 'B', 'value': '不好意思唉,我已经很久没有去关注电影了,你可以给我讲述一下这是什么电影嘛。'},
{'from': 'A', 'value': '当然可以了,这部片子主要是讲述了女排这些年的历史,而且听说这部戏里面的郎平教练会是巩俐来出演。'},
{'from': 'B', 'value': '真的啊,我觉得我都好久没有看过巩俐的电影了,我突然好期待这部电影啊。'},
{'from': 'A', 'value': '是呀,我觉得这部《中国女排》应该能拿下很高的收视率。'},
{'from': 'B', 'value': '肯定会的,毕竟这也是中宣部与国家体育总局联合拍摄,肯定是会很好看的。'}
]}
-读入格式化处理
-[[{'role': 'user', 'content': '嗨!'}, {'role': 'assistant', 'content': '你好!'}, {'role': 'user', 'content': '你最近也在看这部电视剧吗?'}, {'role': 'assistant', 'content': '还好,我刚刚看了庆余年觉得还蛮好看,来搜搜张若昀的其他作品。'}, {'role': 'user', 'content': '哈哈哈,你说最近很火的庆余年吗?'}, {'role': 'assistant', 'content': '对啊,现在我上班大家都在议论呐,真的挺搞笑的。'}, {'role': 'user', 'content': '我看了一些,庆余年还在连载啊。'}, {'role': 'assistant', 'content': '就是说啊,但是真的好搞笑啊,特别是他在电视里第一次看到李沁的表情。'}, {'role': 'user', 'content': '真的演的挺好的,都看呆了。'}, {'role': 'assistant', 'content': '很真实的表情啊,他不是最近还和唐艺昕结婚了吗?'}, {'role': 'user', 'content': '是啊,唐艺昕和他两个人简直太甜了。'}, {'role': 'assistant', 'content': '现在结婚了也好幸福啊,两个颜值都超级高,而且还在一起这么久了。'}, {'role': 'user', 'content': '她们两个的相遇好像好是车祸。'}, {'role': 'assistant', 'content': '是啊,张若昀还在家里面摆了一个红绿灯呐。'}, {'role': 'user', 'content': '所以啊,是真的很幸福,两个人都挺浪漫的,现在还结婚了。'}, {'role': 'assistant', 'content': '是啊,这个庆余年身边的人都在追,李沁在里面真的好漂亮啊。'}
-qwen 指令微调格式化
-<|im_start|>user
是呢,只有父母负起责任,在孩子成长的每一个时刻都起到对他们的关心爱护和监督的责任,让孩子感受到家长的爱,这样的孩子才会健康自信的成长。<|im_end|>
<|im_start|>assistant
嗯嗯是呢,在爱里长大的孩子才更有正能量。<|im_end|>
<|im_start|>user
嗯,对,我还有点儿事儿,先走了,拜拜。<|im_end|>
<|im_start|>assistant
拜拜。<|im_end|><|im_start|>system
You are a helpful assistant.<|im_end|>
<|im_start|>user
晚上好!<|im_end|>
<|im_start|>assistant
晚上好!<|im_end|>
<|im_start|>user
看你火急火燎的,是和男朋友约了吃饭吗?<|im_end|>
<|im_start|>assistant
哪有,马上六点半,中超的天王山之战就要开始了,我可不能错过直播。<|im_end|>
<|im_start|>user
没看出来你还是个球迷啊,我听说今晚是广州恒大打上海上港,一个第一,一个第二,确实值得看。<|im_end|>
<|im_start|>assistant
我从初中开始就是上港队的球迷,毕竟我是上海人,肯定要支持本土的球队。<|im_end|>
<|im_start|>user
我倒是无所谓哪只球队,因为我看足球只会看踢得精不精彩,主要是为了打发时间。<|im_end|>
<|im_start|>assistant
那你应该理解不了我的心情,因为今晚这场比赛是真的对中超冠军归属起决定性作用的。<|im_end|>
<|im_start|>user
怎么了,不是还有几轮才会结束中超联赛嘛,现在就要决出冠亚军了?<|im_end|>
<|im_start|>assistant
对啊,排名前三的恒大、上港、国安,远远领先后面的其他球队,所以其实就他们三支球队在争夺冠军了。<|im_end|>
<|im_start|>user
怪不得,这贫富差距也太大了,外援多的队伍就是不一样。<|im_end|>
<|im_start|>assistant
确实,在本土球员水平参差不齐的前提下,外援又多又好的球队的确有优势。<|im_end|>
<|im_start|>user
国安有李可,上港有艾哈迈多夫,恒大有泽哈维,可谓棋逢对手。<|im_end|>
<|im_start|>assistant
-LF参数
-Data 参数
-
-
-
-
-
-
-
-
-参数名
-数据类型
-描述
-
-
-
-
-template
-Optional[str]
-构建提示词时使用的模板
-
-
-dataset
-Optional[str]
-数据集
-
-
-eval_dataset
-Optional[str]
-测试数据集
-
-
-dataset_dir
-str
-数据文件夹的路径
-
-
-cutoff_len
-int
-输入序列分词后的最大长度
-
-
-train_on_prompt
-bool
-不在提示词的部分添加掩码(仅适用于 SFT)
-
-
-mask_history
-bool
-仅学习最后一轮对话(仅适用于 SFT)
-
-
-streaming
-bool
-流式读取数据集
-
-
-buffer_size
-int
-在数据流中随机采样的缓冲区的大小
-
-
-mix_strategy
-Literal["concat", "interleave_under", "interleave_over"]
-数据集混合时使用的策略(合并/交错)(欠采样/过采样)
-
-
-interleave_probs
-Optional[str]
-从数据集中抽样数据的概率。使用逗号分隔多个数据集
-
-
-overwrite_cache
-bool
-覆盖缓存的训练集和评估集
-
-
-preprocessing_num_workers
-Optional[int]
-用于预处理的进程数
-
-
-max_samples
-Optional[int]
-最多选择的数据集样例数
-
-
-eval_num_beams
-Optional[int]
-在生成任务中控制束搜索的宽度,直接影响生成文本的质量和计算成本
-
-
-ignore_pad_token_for_loss
-bool
-在损失计算中是否忽略 pad 标签对应的 token
-
-
-val_size
-float
-验证集占总数居的大小,一个范围为[0,1)
的浮点数
-
-
-packing
-Optional[bool]
-在训练中启用序列打包。将在预训练中自动启用
-
-
-neat_packing
-bool
-避免注意力交叉污染
-
-
-tool_format
-Optional[str]
-format 的工具格式
-
-
-tokenized_path
-Optional[str]
-保存或加载 tokenization 的路径
-
-
-
-Q&A
-[Q] LLM padding left or right
-一句话总结:DecoderOnly 模型,在 Train 的时候统一使用 right
-padding,而在 Generate 的时候统一使用 left padding。
-
-- generation的时候如果使用right
-padding是会出错的,原因是generate的过程中需要从最后一个token的probability中sample下一个token,但right
-padding时最后一个token是pad,所以会出现问题
-- 有些tokenizer使用的是absolute position id,导致非padtoken的position
-id不是从0开始的,如果不使用left padding 会出错
-
-[Q] 什么是 unsloth?
-微调训练LLM时,可以显著提升速度,且减少显存占用,目前开源部分只支持单机版微调
-[Q] 什么是 deepspeed?
-简而言之,ds 就是切片,以时间换空间。
-ZeRO-1是将优化器分片,ZeRO-2是在ZeRO-1的基础上将梯度分片,ZeRO-3是在ZeRO-2的基础上将权重分配,ZeRO-affload,将刚刚经过ZeRO切片的梯度、权重、优化器直接丢到内存
-[Q] 什么是 S2ATTN
-[Q] 什么是旋转位置编码(RoPE)
-
-[Q] 什么是 GELU
-[Q] LLama3 的优化点
-位置编码:
-
-- 改进的相对位置编码,如相对偏移编码
-- 旋转位置编码(RoPE),以提高长序列处理能力。
-
-激活函数:
-
-- 继续使用或改进 GELU 激活函数。
-- 采用 Swish 激活函数,提供平滑且非单调的变换。
-- 引入自适应激活函数,动态调整激活函数形状以适应不同任务。
-
-[Q] Varlen Attention Link
-变长注意力机制确保了无论是否采用“数据集拼接”策略,模型训练的行为保持一致性
-优化点
-llamafactory 开源模型微调 pipeline 的优化点
-数据截断
-问题背景 #4009
-监督学习 pack
-多条数据时,超过输入长度上限的部分直接截断,导致部分样本丢失
-解决方法
-贪心背包算法,尽可能多的 pack 多条对话数据到一轮 batch 中,并将
-packed_input_ids
补齐到 cutoff_len
-注意力交叉污染
-问题背景 #4224
-sft 训练中,如果每个 batch 中都是多轮对话,则需要在预处理过程中,mask
-多轮对话数据中 assistant 的内容(preprocess_packed_supervised_dataset
-方法),以达到同时训练一整轮对话的效果;
-sft_packing 的实现只是单纯将不同的单轮 sft
-数据拼接到一起,然后分别计算 target 部分的 loss,无法保证每条对话的单轮
-sft 在计算 loss 的时候不会受到其他拼接的上文影响;
-解决方法
-新增 neat_packing
参数,用不同的 mask 区分同一 batch
-内不同轮对话的 attention_masks
,用于支持 eager 和 sdpa 两种
-attention
-加速计算方法,使其在注意力计算过程中可以通过块对角注意力(Block Diagonal
-Attention)加快计算;
-
-Eager:通过提前计算和存储中间结果,优化计算过程,提高效率。
-SDPA:通过缩放内积和 softmax
-函数计算注意力权重,提高了注意力机制的稳定性和效率。
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0%
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/LLM-PEFT/image-20240903102620304.png b/LLM-PEFT/image-20240903102620304.png
new file mode 100644
index 0000000..30ce637
Binary files /dev/null and b/LLM-PEFT/image-20240903102620304.png differ
diff --git a/LLM-PEFT/index.html b/LLM-PEFT/index.html
index 2c25112..0269a04 100644
--- a/LLM-PEFT/index.html
+++ b/LLM-PEFT/index.html
@@ -47,11 +47,12 @@
+
-
+
@@ -178,18 +179,18 @@
@@ -257,7 +258,7 @@
更新于
-
+
@@ -355,8 +356,8 @@ 背景
当下流行 PEFT 结构一览:
常用的参数高效微调方法:
-
-
+
+
- Selective:选择模型中的一部分参数进行微调;
- Additive:冻结模型原有参数,微调新增的参数和模块;
@@ -464,8 +465,8 @@
BitFit
LN-Tuning
单独调整 LayerNorm 模块的 weight 和 bias
参数,训练参数量少,便于和其他的微调方法一起使用。
-
-
+
+
实验表明,Prefix-Tuning + LN 的微调效果最佳。
优势
@@ -482,8 +483,8 @@ Prompt-Tuning
可训练模块:Embedding(virtual_token, hidden_size)
-
-
+
+
优势:
- 简化了不同任务之间的转换和迁移,使得模型可以更加灵活地应用于各种场景;
@@ -521,8 +522,8 @@ Prefix Tuning
输入到下一次的计算中,这一技术又被称之为 kv cache。
# 可训练模块:Embedding + MLP,与 P-Tuning 的区别是 prefix 映射到了模型的隐藏层上
self.embedding = torch.nn.Embedding(num_virtual_tokens, token_dim)
self.transform = torch.nn.Sequential(
torch.nn.Linear(token_dim, encoder_hidden_size),
torch.nn.Tanh(),
torch.nn.Linear(encoder_hidden_size, num_layers * 2 * token_dim),
)
# transformers.models.bloom.BloomAttention 源码实现
if layer_past is not None:
past_key, past_value = layer_past
key_layer = torch.cat((past_key, key_layer), dim=2)
value_layer = torch.cat((past_value, value_layer), dim=1)
-
-
+
+
优势:
- 拟合速度快;
@@ -539,8 +540,8 @@ P-Tuning V2
最大的区别在于:移除重参数化的编码器,即没有MLP。
通过共享连续提示同时优化多个任务,多任务学习是 P-Tuning v2
的可选功能,可以通过多任务共享前缀进一步提升性能。
-
-
+
+
优势:
- 移除重参数化的编码器,对于较小的模型,会影响模型的表现,且对于大模型提升不大;
@@ -578,8 +579,8 @@ LoRA
具体而言,冻结预训练的模型权重,并将可训练的秩分解矩阵注入到大模型的每个
Attention
层的线性变换中。输入分别与原始权重和两个低秩矩阵进行计算,共同得到最终结果。
-
-
+
+
训练完成后,可以将两个低秩矩阵与原始模型中的权重进行合并,合并后的模型与原始模型无异,避免了推理期间
Prompt 系列方法带来的额外计算量。
IA3
Linear 层 (hidden_size, hidden_size*3),IA3
的可训练参数同时作用于三者之上。
-
-
+
+
优势:
- 调节的参数少于 Lora,微调效果也不错;
@@ -651,16 +652,16 @@ AdaLora
P-I\right\|_\mathrm{F}^2+\left\|QQ^\top-I\right\|_\mathrm{F}^2\]
最终,微调的损失函数为
重要结论
-
-
+
+
AdaLoRA 总是倾向于将更多预算分配给 FFN 和顶层,即 FFN
模块和顶层的权重矩阵对于模型性能更为重要。
Adapter Tuning
在 Transformer Layer 的 Self-Attetion 和 FFN
之后插入一个先降维再升维的 MLP(以及一层残差和Layer
Normalization)来学习模型微调的知识。
-
-
+
+
图中,Adapter 即插入的 FF Down + 非线性激活层 + FF
up。在微调过程中,固定原始模型的参数,只微调适配层。
不足:
@@ -678,10 +679,10 @@ AdapterFusion
分离知识提取和知识组合这两个阶段,可以以非破坏性的方式有效地利用从多个任务中学到的表示。知识提取阶段学习Adapter
任务特定参数,其封装了特定于任务的信息;知识组合阶段将不同任务的 Adapter
组合到一起。
-
-
-
-
+
+
+
+
AdapterFusion
组件将在不同任务上训练的多个适配器的输出作为输入,并学习编码信息的参数化混合器,应用于单个任务多
Adapter 的场景和多任务混合的场景。单任务场景中,可以多个 Adapter
@@ -695,8 +696,8 @@
AdapterFusion
AdapterDrop
该方法在不影响任务性能的前提下,动态高效的移除冗余的
Adapter,可以尽可能地减少模型的参数量,提高模型在反向传播(训练)和正向传播(推理)时的效率。
-
-
+
+
优势:
- 通过从较低的 Transformer 层删除可变数量的Adaper来提升推理速度。
@@ -704,16 +705,16 @@
AdapterDrop
MAM Adapter
分解了最先进的参数高效迁移学习方法的设计,并提出了一个在它们之间建立联系的统一框架。
-
-
+
+
UniPEFT
不同的 PEFT
方法在同一任务上的表现不同,因此为特定任务选择最合适的方法并非易事,特别是考虑到新
PEFT 方法和任务数量的快速增长。鉴于模型的多样性和模型选择的难度,UniPEFT
提出了一个统一的框架 UniPEFT,它将不同的PEFT
方法作为子模块,并通过门控机制学习激活最适合当前数据或任务设置的方法。
-
-
+
+
PISSA
peft 包中有 PISSA 初始化方法
@@ -734,8 +735,8 @@
PISSA
A、B,冻结参数量较大的残差矩阵 \[\text{Wres}\]
,就达成了用很少的参数近似全参数微调的效果。
-
-
+
+
优势
- 相比于 LoRA,收敛速度更快,性能更好
@@ -743,8 +744,8 @@ PISSA
VeRA
区别于Lora,Vera 将 A 和 B
矩阵按照高斯分布随机初始化并冻结,只训练两组直接和A、B相乘的一维参数。虽然直观看起来A和B像两个无用的张量,但实际上它们仍然是必不可少的,实验证明即使是随机张量也可以用于微调。
-
-
+
+
优势:
- VeRA显著减少了可训练参数的数量(LoRA相比参数减少了10倍),而精度没有损失;
@@ -753,8 +754,8 @@ VeRA
DoRA
将每个高阶矩阵都分解为 1*k 大小矩阵和 d*k 方向矩阵的乘积,LoRA
倾向于同时改变幅度和方向,DoRA可以更容易地将二者分开调整,或者用另一个的负变化来补偿一个的变化。
-
-
+
+
SLORA
一个 GPU 上并行执行多个 lora adapters 的微调
S-LoRA 能够在单个 GPU 上或跨多个 GPU 以较小的开销为数千个 LoRA
@@ -780,8 +781,8 @@
LoRA+
LoRA 中的适配器矩阵 A 和 B 以相同的学习率更新,实验表明对 A 和 B
使用相同的学习率并不能实现有效的特征学习,LoRA+ 通过精心选择的固定比率为
LoRA 适配器矩阵 A 和 B 设置不同的学习率,纠正 LoRA 的这种次优性。
-
-
+
+
LongLoRA
LongLoRA
扩展了模型的上下文,同时保留了其原始架构,并且与大多数现有技术兼容。一方面,虽然推理过程中需要密集的全局注意力,但微调过程更需要稀疏的局部注意力实现有效且高效反向传播。由此,该方法提出转移稀疏注意力
@@ -794,11 +795,13 @@ RsLoRA
LoRA通过在选定层添加可训练的低秩Adapter来实现参数有效的微调。每个LoRA由两个低秩矩阵乘积组成,并乘以一个与秩相关的因子,传统的LoRA采用“直接除以秩的因子”的方法过于激进,导致高秩Adapter的学习速度减缓,性能受限。因此,在实际应用中,LoRA通常仅限于使用非常低的秩。
rsLoRA深入研究了 LoRA 的缩放因子对学习过程的影响,并证明了 LoRA
应该除以秩的平方根而不是秩,通过使用较大的秩在训练期间增加计算资源以获得更好的微调性能,同时不改变推理计算成本。
+
+
LLaMA Pro
该方法提出的Block
Expansion方法,即块扩展,在保持预训练模型参数不变的基础上,增加新的block来适应新的训练任务。这些新加入的block与原有block协同工作,既保留了模型原有的知识,又能够适应新的训练数据和任务需求。
-
-
+
+
方法性能对比
从方法类型、是否存储高效、是否内存高效、反向传播成本、推理开销五个维度比较
PEFT 方法:
diff --git a/LLM-RAG-Langchain/image-20240815155230728.png b/LLM-RAG-Langchain/image-20240815155230728.png
new file mode 100644
index 0000000..18372e7
Binary files /dev/null and b/LLM-RAG-Langchain/image-20240815155230728.png differ
diff --git a/LLM-RAG-Langchain/image-20240820085502013.png b/LLM-RAG-Langchain/image-20240820085502013.png
new file mode 100644
index 0000000..7d7024c
Binary files /dev/null and b/LLM-RAG-Langchain/image-20240820085502013.png differ
diff --git a/LLM-RAG-Langchain/image-20240820085527076.png b/LLM-RAG-Langchain/image-20240820085527076.png
new file mode 100644
index 0000000..5aa3d1e
Binary files /dev/null and b/LLM-RAG-Langchain/image-20240820085527076.png differ
diff --git a/LLM-RAG-Langchain/index.html b/LLM-RAG-Langchain/index.html
index 36ab1e5..3e2ab1c 100644
--- a/LLM-RAG-Langchain/index.html
+++ b/LLM-RAG-Langchain/index.html
@@ -27,8 +27,10 @@
+
+
-
+
@@ -142,7 +144,7 @@
-
+
@@ -155,18 +157,18 @@
@@ -234,7 +236,7 @@
更新于
-
+
@@ -282,6 +284,9 @@ 概念
从原始数据到响应生成最常见的流程图如下:
+RAG 测评指标:
+
+
Langchain
LangChain
采用组件化设计的思想,将语言模型开发分为多个子任务:对话历史
@@ -295,16 +300,15 @@ Langchain
还有额外的功能如:用量记录、数据流返回 acall、缓存
SQLite、支持多种模型接口 OpenAI、向量数据库 langchain.vectorstores
模型链 Chain
-
-链(Chains)通常将大语言模型(LLM)与其他组件组合在一起来构建更复杂的链。
-
+链(Chains)通常将大语言模型(LLM)与其他组件组合在一起来构建更复杂的链。比如,LLMChain
+允许我们对创建的 Prompt 使用大模型;
Chain 基类是所有 Chain
对象的起点,处理输入、输出、历史和回调等功能,支持同步和异步调用,内部组件也可以通过回调进行交互;
自定义 Chain 需要继承 Chain 基类,实现 _call/_acall
方法定义调用逻辑;
对话历史 Memory
根据需求可以将历史存储在
-SQLite、qdrant、本地内存等地方,下面代码将历史存储在缓存中:
+SQLite、qdrant等数据库中,下面代码将历史存储在缓存中:
from langchain.memory import ConversationBufferMemory
memory = ConversationBufferMemory(
memory_key="history", # 与 prompt 的输入变量保持一致。
return_messages=True # 将以消息列表的形式返回聊天记录,而不是单个字符串
)
提示工程 Prompt
Prompt 很少是写明不变的,通常从多个组件构建而成的。 PromptTemplate
@@ -322,11 +326,77 @@
索引 Indexes
LangChain有许多模块可帮助您加载、结构化、存储和检索文档。详见
代理 Agents
-代理使用LLM来确定采取哪些行动以及顺序。
+代理涉及 LLM
+做出行动决策(Observation)、执行该行动(Action)、查看一个观察结果(Observation),并重复该过程直到完成。LangChain
+提供了一个标准的代理接口,一系列可供选择的代理,以及端到端代理的示例。
- 使用工具并观察其输出
- 生成相应返回给用户
+文本匹配任务
+
+RAG
+将匹配分为多个阶段,可分为:粗召回、细召回、粗排序、精排序、再排序。该任务包括多个子任务,如文本相似度计算、问答匹配、对话匹配,类似于RAG的文本抽取式阅读理解和多项选择
+
+RAG 采取召回(IF-IDF、BM25)、粗排(双塔 Bert
+模型、Sentence-Bert、text2vec、uniem)、精排(单塔 Bert
+模型),得到相关的文档输入 LLM 中。
+基于词匹配
+
+传统方法将词匹配、词距等分数作为特征,用线性模型或树模型预测相关性,效果远不如深度学习。
+
+将查询文本分词,词在文档 d 中出现的次数越多,则查询文本和文档 d
+越相关
+IF-IDF
+概念
+词袋模型:(bag of words)只考虑词频,不考虑词的顺序和上下文
+词频 TF:每个词在文档中出现的次数的集合;\(\sum_{t\in\mathcal{Q}}\operatorname{tf}_{t,d}\)
+
+- 缺陷:文档越长,TF 越大;解决:除以文档长度,归一化;\(\sum_{t\in
+Q}\frac{\mathrm{tf}_{t,d}}{l_d}\)
+- 缺陷:每个词重要性不同;解决:语义重要性(term
+weight),在文档中出现的越多,权重越低;
+
+文档频率 DF:词 t 在多少文档中出现过,定义“词”区别文档的能力;
+逆文档排序 IDF:衡量一个词在 N 个文档中的重要性;\(\mathrm{idf}_t=\mathrm{log}\frac
+N{\mathrm{df}_t}\)
+\(\mathrm{TFIDF}(\mathcal{Q},d) =
+\sum_{t\in\mathcal{Q}} \frac{\mathrm{tf}_{t,d}}{l_{d}} \cdot
+\mathrm{idf}_{t}.\)
+其中,查询词q的分词后得到 Q 集合,它与文档 d 的相关性用 TF-IDF
+衡量;结果还取决于所采取的分词算法;
+BM25
+IF-IDF 的变种,k 和 b 是参数(通常设置为 k∈[1.2, 2],b=0.75)
+\(\sum_{t\in
+Q}\frac{\mathrm{tf}_{t,d}\cdot(k+1)}{\mathrm{tf}_{t,d}+k\cdot\left(1-b+b\cdot\frac{l_d}{\mathrm{mean}(l_d)}\right)}\cdot\ln\left(1+\frac{N-\mathrm{df}_t+0.5}{\mathrm{df}_t+0.5}\right)\)
+基于词距
+两个词在文档中出现位置之间,间隔的词越少越可能相关;
+简而言之,查询词切分后的 term
+在文档中出现的次数越多越好,任意两个词之间的距离越近越好;
+eg:OkaTP
+基于深度学习
+基于交互策略的单塔模型 准确度更高
+Bert 输出 similarity,二分类任务(相似/不相似)
+基于向量匹配的双塔模型 速度更快
+Bert 输出 Sentence_Embedding,拟合 cos_Similarity(回归任务)
+评价指标
+二分类评价指标 AUC
+
+
+可信度 RAG
+当检索返回的结果有错误或信息丢失时,会导致LLM回复出现幻觉。
+为解决这个问题的三个指标:可信度(Faithfulness)、答案相关性(Answer
+Relevance)、上下文相关性(Context Relevance)
+Query 预处理
+同义Query,
+意图识别
+召回
+索引技术:倒排索引、压缩倒排索
+检索模型:BM25、BERT
+引入上下文信息,更好地理解用户意图
@@ -343,8 +413,8 @@ 代理 Agents
diff --git "a/categories/Java\345\274\200\345\217\221/index.html" b/LLM-RLHF/index.html
similarity index 73%
rename from "categories/Java\345\274\200\345\217\221/index.html"
rename to LLM-RLHF/index.html
index a38b743..b344f3f 100644
--- "a/categories/Java\345\274\200\345\217\221/index.html"
+++ b/LLM-RLHF/index.html
@@ -19,25 +19,27 @@
-
-
-
-
+
+
+
+
-
+
+
+
-
+
-
+
-分类: Java开发 | 闻
+LLM-RLHF | 闻
@@ -149,18 +151,18 @@
@@ -181,90 +183,96 @@
-
+
+
+
+
-
-
-
- Java开发
- 分类
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LLM-RLHF
-
+
+
+
+
+
+
+ 发表于
-
- 2024
-
-
-
-
-
-
+
+
-
-
- Rpc 中间件
-
-
+
+
-
-
-
+ LLM人工对齐算法
+
+
-
-
-
-
-
+
+
+
+
-
-
-
+
+
+
-
-
-
-
-
+
+
+
+
+
+ LLM
+
+
+
+
+
+
+
+
+
-
-
-
-
-
diff --git "a/tags/Java\346\225\260\346\215\256\347\273\223\346\236\204/index.html" b/LLM/index.html
similarity index 70%
rename from "tags/Java\346\225\260\346\215\256\347\273\223\346\236\204/index.html"
rename to LLM/index.html
index dc05ddd..bf1c411 100644
--- "a/tags/Java\346\225\260\346\215\256\347\273\223\346\236\204/index.html"
+++ b/LLM/index.html
@@ -19,25 +19,27 @@
-
-
-
-
+
+
+
+
-
+
+
+
-
+
-
+
-标签: Java数据结构 | 闻
+LLM | 闻
@@ -149,18 +151,18 @@
@@ -181,50 +183,97 @@
-
+
+
+
+
-
-
-
- Java数据结构
- 标签
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LLM
-
+
+
+
+
+
+
+ 发表于
-
- 2024
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+大模型核心技术点在于训练资源、数据清洗和数据配比等,其难点或许不在于模型训练和模型结构搭建
+
+前缀语言模型 Encoder-Decoder
+ChatGLM
+掩码语言模型 自编码模型 Encoder-Only
+因果语言模型 自回归模型 Decoder-Only
+
-
-
-
-
-
+
+
+
-
+
+
+
+
+
+
+ LLM-RLHF
+
+
+
+
+ [paper]PAFT
+
+
+
+
+
+
+
+
+
-
-
-
-
-
diff --git a/JUC/index.html b/Linux-Tool/index.html
similarity index 51%
rename from JUC/index.html
rename to Linux-Tool/index.html
index 3566835..f61d1ae 100644
--- a/JUC/index.html
+++ b/Linux-Tool/index.html
@@ -19,32 +19,28 @@
-
+
-
-
+
+
-
+
-
-
-
-
-
+
+
-
+
-
-
+
-
+
-Java 并发基础 | 闻
+Linux-Tool | 闻
@@ -144,7 +140,7 @@
-
+
@@ -157,18 +153,18 @@
@@ -200,7 +196,7 @@
-
+
@@ -213,12 +209,12 @@
-
-
+
+
- Java 并发基础
+ Linux-Tool
- JMM、ThreadLocal
+ Linux高效工具的使用方法
-
-ThreadLocal
-每一个线程都有自己的专属本地变量,通过空间换时间的方式避免并发下线程安全问题
+ Vim
+基本模式切换
-- 完整的一次请求处理,于唯一一个线程中执行,可以通过 ThreadLocal
-共享数据
-- ThreadLocal.set 方法是将值存储到 Thread 线程本身的
-ThreadLocalMap 里面
+i
:进入插入模式,从光标前插入文本。
+a
:进入插入模式,从光标后插入文本。
+Esc
:退出插入模式,回到正常模式。
+v
:进入可视模式,用于选择文本块。
+V
或
+vv
:进入可视行模式,选择整行文本。
+Ctrl + v
:进入可视块模式,选择矩形区域。
-原理
-public class ThreadLocal<T> {
static class ThreadLocalMap {
static class Entry extends WeakReference<ThreadLocal<?>> {
Object value;
Entry(ThreadLocal<?> k, Object v) {
super(k);
value = v;
}
}
// 存放数据
private Entry[] table;
}
}
-整体结构图
-
-
-引用关系图
-
-
-Q&A
-Entry的key为什么设计成弱引用?
-ThreadLocal 变量生命周期结束后,ThreadLocal 对象就可以被回收;
-ThreadLocal为什么会导致内存泄露,如何解决?
-虽然 get、set 或 remove 方法会回收 key 为 null 的 value
-值,但是如果没有调用这些方法,Entry 和ThreadLocalMap
-将会长期存在下去,会导致内存泄露;
-使用完 ThreadLocal 对象之后,调用 remove 方法;
-ThreadLocal 是如何定位数据的?
-int i = key.threadLocalHashCode & (len-1);
-如果有冲突就通过线性探测再散列,直到找到空 bin;
-
-其他Hash冲突解决方法:开放寻址法(再散列)、拉链法
-
-ThreadLocal 是如何扩容的?
-父子线程如何共享数据?
-InheritableThreadLocal:初始化时会拷贝一份父线程中 ThreadLocal
-值,到子线程 InheritableThreadLocal 中;
-ThreadLocal 作为成员变量时,为什么定义成 static
-更好?
-将 ThreadLocal 定义为 static 可以确保所有线程都访问同一个 ThreadLocal
-实例,但它们各自存储的数据是独立的;
-确保它们的生命周期与线程的生命周期一致,而不是与类的实例的生命周期一致;
-使用 InheritableThreadLocal
-时,如果父线程中重新set值,在子线程中能够正确的获取修改后的新值吗?
-不会影响到已经存在的子线程中 InheritableThreadLocal
-的值,子线程将保持它在创建时从父线程中继承的原始值;
-JMM
+光标移动
-抽象了 happens-before
-原则来解决这个指令重排序问题,保证多线程环境下数据的一致性和可见性。
-抽象了线程和主内存之间的关系,提供一套内存模型以屏蔽系统差异
+w
:光标移动到下一个单词的开头。
+b
:光标移动到上一个单词的开头。
+0
:移动到行首。
+$
:移动到行尾。
+gg
:移动到文件的第一行。
+G
:移动到文件的最后一行。
+H
:移动到屏幕的顶部。
+M
:移动到屏幕的中部。
+L
:移动到屏幕的底部。
-概念
-CPU 高速缓存:为解决 CPU 处理速度和内存不匹配的问题;
-指令重排序【编译器优化重排 —> 指令并行重排 —>
-内存系统重排】:指令重排序可以保证串行语义一致,但是没有义务保证多线程间的语义也一致;
-
-内存屏障可以禁止处理器指令发生重排序,从而保障指令执行的有序性。此外,还能保证指令执行的可见性。
-
-happens-before 原则
-前一个操作的结果对于后一个操作是可见的,无论这两个操作是否在同一个线程里
+编辑文本
-- 只要不改变程序的执行结果,编译器和处理器怎么进行重排序优化都行;
-- 会改变程序执行结果的重排序,JMM
-要求编译器和处理器必须禁止这种重排序;
+x
:删除光标所在的字符。
+dw
:删除从光标到单词末尾的内容。
+dd
:删除当前行。
+d$
:删除从光标到行末的内容。
+yy
:复制当前行。
+p
:粘贴到光标之后。
+u
:撤销上一步操作。
+Ctrl + r
:重做撤销的操作。
+r
:替换光标下的字符。
+ciw
:删除光标所在的单词并进入插入模式。
+c$
:删除从光标到行尾的内容并进入插入模式。
-并发的三大特性
-原子性:一次操作或者多次操作,要么所有的操作全部都得到执行并且不会受到任何因素的干扰而中断,要么都不执行
+搜索和替换
-- synchronized、各种 Lock 以及各种原子类;
+/pattern
:向下搜索
+pattern
。
+?pattern
:向上搜索
+pattern
。
+n
:跳到下一个搜索结果。
+N
:跳到上一个搜索结果。
+:s/old/new/g
:将当前行的所有
+old
替换为 new
。
+:%s/old/new/g
:将整个文件中的所有
+old
替换为 new
。
-可见性:当一个线程对共享变量进行了修改,那么另外的线程都是立即可以看到修改后的最新值
+文件操作
-- synchronized、Volatile 以及各种 Lock 实现可见性;
+:w
:保存文件。
+:q
:退出 Vim。
+:wq
:保存并退出。
+:q!
:不保存强制退出。
+:e filename
:打开文件
+filename
。
+:r filename
:在当前文件中插入
+filename
的内容。
-有序性:代码的执行顺序未必就是编写代码时候的顺序
+Screen
+基本命令
-Volatile
-关键字:保证变量的可见性和代码执行的有序性,但无法在多线程读写变量时保证操作原子性;
-内存屏障:Unsafe
类的 fullFence()
-可以避免代码重排序;
+screen
:启动一个新的
+screen
会话。
+screen -S session_name
:启动一个命名为
+session_name
的 screen
会话。
+screen -ls
:列出当前所有的
+screen
会话。
+screen -r
:重新连接到一个
+screen
会话(如果只有一个会话)。
+screen -r session_name
:重新连接到一个名为
+session_name
的 screen
会话。
+screen -d session_name
:在其他地方的终端断开某个会话的连接。
+screen -d -r session_name
:强制从其他地方的终端断开并重新连接到
+session_name
会话。
+screen -X quit
:关闭所有
+screen
会话
+
+在 screen
会话中操作
+在 screen
会话中,所有命令都以 Ctrl + a
+开头(表示“前缀键”),然后跟随其他按键来执行操作。
+
+Ctrl + a, X
:关闭当前的分割窗口。
+Ctrl + a, c
:创建一个新的窗口。
+Ctrl + a, n
:切换到下一个窗口。
+Ctrl + a, p
:切换到上一个窗口。
+Ctrl + a, "
:列出当前所有窗口,允许选择切换。
+Ctrl + a, 0-9
:切换到指定编号的窗口(例如
+Ctrl + a, 1
切换到窗口 1)。
+Ctrl + a, d
:将当前
+screen
会话断开(detach),会话继续在后台运行。
+Ctrl + a, A
:重命名当前窗口。
+Ctrl + a, K
:关闭当前窗口。
+Ctrl + a, S
:水平分割当前窗口。
+Ctrl + a, |
:垂直分割当前窗口。
+Ctrl + a, tab
:在分割的窗口间切换焦点。
+Ctrl + a, Q
:关闭除了当前窗口外的所有分割窗口。
+Ctrl + a, X
:关闭当前的分割窗口。
+
+会话管理
+
+Ctrl + a, :quit
或
+Ctrl + a, d
:结束当前 screen
+会话。
+Ctrl + a, :kill
:强制关闭当前窗口。
+exit
:退出当前 screen
+会话。
@@ -347,21 +367,18 @@ 并发的三大特性
diff --git a/Machine-Learning/index.html b/Machine-Learning/index.html
index d1223b2..8396c7a 100644
--- a/Machine-Learning/index.html
+++ b/Machine-Learning/index.html
@@ -35,7 +35,7 @@
-
+
@@ -148,7 +148,7 @@
-
+
@@ -161,18 +161,18 @@
@@ -240,7 +240,7 @@
更新于
-
+
@@ -332,21 +332,25 @@ RLHF
OpenAI 提出的生成领域(Decoder_only)的新训练范式
Policy Gradient
-
-
+
+
RM+PPO
步骤一、预训练语言模型
-
-
+
+
步骤二、训练奖励模型 RM
-
-
+
+
步骤三、用强化学习 PPO 微调
-
-
+
+
DPO
KTO
ORPO
+损失函数
+MSELoss 回归任务
+CrossEntropyLoss 单标签分类
+BCEWithLogitsLoss 多标签分类
Torch
torch.nn.Parameter()
将一个不可训练的 tensor
转换成可以训练的类型 parameter,并将这个 parameter 绑定到这个 module
@@ -364,7 +368,7 @@
Torch
diff --git a/MySQL/243b1466779a9e107ae3ef0155604a17-17146246150216.webp b/MySQL/243b1466779a9e107ae3ef0155604a17-17146246150216.webp
deleted file mode 100644
index c4329db..0000000
Binary files a/MySQL/243b1466779a9e107ae3ef0155604a17-17146246150216.webp and /dev/null differ
diff --git a/MySQL/COMPACT.drawio.png b/MySQL/COMPACT.drawio.png
deleted file mode 100644
index 4dba165..0000000
Binary files a/MySQL/COMPACT.drawio.png and /dev/null differ
diff --git a/MySQL/binlogcache.drawio.png b/MySQL/binlogcache.drawio.png
deleted file mode 100644
index 213ab1a..0000000
Binary files a/MySQL/binlogcache.drawio.png and /dev/null differ
diff --git a/MySQL/bufferpoll_page.png b/MySQL/bufferpoll_page.png
deleted file mode 100644
index 8e5153e..0000000
Binary files a/MySQL/bufferpoll_page.png and /dev/null differ
diff --git a/MySQL/checkpoint.png b/MySQL/checkpoint.png
deleted file mode 100644
index 5641339..0000000
Binary files a/MySQL/checkpoint.png and /dev/null differ
diff --git a/MySQL/freelist.drawio.png b/MySQL/freelist.drawio.png
deleted file mode 100644
index f89dbdd..0000000
Binary files a/MySQL/freelist.drawio.png and /dev/null differ
diff --git a/MySQL/index.html b/MySQL/index.html
deleted file mode 100644
index ae95600..0000000
--- a/MySQL/index.html
+++ /dev/null
@@ -1,1091 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-MySQL | 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 闻
-
-
- Yesterday is history, tomorrow is a mystery but today is a gift.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- MySQL
-
-
-
-
-
- MySQL 基础,包括索引、事务、锁、日志、BufferPool等
-
-
-
-
-
-
- 基础
-SQL 查询语句执行过程
-
-- 连接器:客户端与 Server 层建立连接,管理连接、校验用户身份;
-- 查询缓存:查询语句如果命中查询缓存则直接返回,否则继续往下执行(MySQL
-8.0 已删除该模块)
-- 解析 SQL:通过解析器对 SQL
-查询语句进行词法分析、语法分析,然后构建语法树,方便后续模块读取表名、字段、语句类型;
-- 执行 SQL:
-
-- 预处理阶段:检查表或字段是否存在;将 select * 中的 *
-符号扩展为表上的所有列;
-- 优化阶段:基于查询成本的考虑,
-选择查询成本最小的执行计划;查询优化器;
-- 执行阶段:根据执行计划执行 SQL
-查询语句,从存储引擎读取记录,返回给客户端;
-
-
-MySQL 数据文件
-
-- db.opt,用来存储当前数据库的默认字符集和字符校验规则。
-- table.frm ,存放表结构,在 MySQL
-中建立一张表都会生成一个.frm
-文件,该文件是用来保存每个表的元数据信息的,主要包含表结构定义。
-- table.ibd,存放表数据,
表数据既可以存在共享表空间文件(文件名:ibdata1)里,也可以存放在独占表空间文件(文件名:表名字.ibd)。这个行为是由参数
-innodb_file_per_table 控制的,若设置了参数 innodb_file_per_table 为
-1,则会将存储的数据、索引等信息单独存储在一个独占表空间,从
-MySQL 5.6.6 版本开始,它的默认值就是 1 了,因此从这个版本之后, MySQL
-中每一张表的数据都存放在一个独立的 .ibd 文件。
-
-表空间文件的结构
-
-
-InnoDB 行格式
-共有 Redundant、Compact、Dynamic、Compressed 四种,下图时 Compact
-行格式的结构
-
-InnoDB 页格式
-InnoDB 的数据是按「数据页」为单位来读写的,数据页的默认大小是
-16KB
-
-
-
-
-
-名称
-说明
-
-
-
-
-文件头
-页的信息;两个指针指向上一个/下一个数据页
-
-
-页头
-页的状态信息
-
-
-最小和最大记录
-两个虚拟伪记录,分别表示页中的最小记录和最大记录
-
-
-用户记录
-储存所有的行记录
-
-
-空闲空间
-还没被用到的空间
-
-
-页目录
-用户记录相对位置,页中所有记录的索引
-
-
-文件尾
-校验页是否完整
-
-
-
-数据页中的
-页目录存储各个槽,用户记录按照「主键」顺序组成单向链表,可以通过二分查找法的方式进行检索。
-索引
-索引字段特性分类
-
-- 主键索引
-- 唯一索引
-- 前缀索引
-- 普通索引
-
-索引个数分类
-
-- 单例索引
-- 联合索引:最左匹配原则(MySQL 有查询优化器,所以字段在 where
-子句的顺序并不重要)
-
-
-最左匹配原则:按照最左优先的方式进行索引的匹配,范围查询的字段可以用到联合索引,在遇到范围查询(如
->、<)的时候,就会停止匹配,也就是范围查询的字段可以用到联合索引,但是在范围查询字段的后面的字段无法用到联合索引。注意,对于
->=、<=、BETWEEN、like 前缀匹配的范围查询,并不会停止匹配。
-
-Innodb 采用 B+Tree
-作为索引的优势
-
-MySQL 底层实现的 B+ 树在原有的 B+ 树的基础上做了改动
-
-- 叶子节点采用双向链表连接
-- 所有节点都是 16KB 数据页
-- 非叶子节点中有多少个子节点,就有多少个索引
-
-nosql 的 MongoDB 采用 B
-树实现,适用于大量的单个索引(而不是范围查询)查询的场景;
-
-
-- 查询底层节点的磁盘
-I/O次数少。非叶子节点只存放索引,相比 B
-树,每个非叶子节点能存储更多的索引,树形结构更加矮胖;
-- 插入和删除效率高。非叶子节点中的都是冗余索引,所有索引都在叶子节点中又存储了一次;
-- 树层低,磁盘 I/O 次数少。若每行数据
-1KB,三层最多可存放千万级数据量;
-- 范围查询,磁盘 I/O
-次数少。叶子节点采用双向有序链表连接;其他树结构需要中序遍历,磁盘
-I/O 次数多;
-
-B+Tree 索引结构
-
-- 主键索引/聚簇索引:叶子节点存放实际数据、事务 id、用于事务和 MVCC
-的回滚指针;
-- 二级索引:叶子节点存放主键值;
-
-Explain 执行计划
-数据扫描类型 type
-
-- All:全表扫描;
-- index:全索引扫描;
-- index merge:索引合并。先将使用到的索引先进行求
-交集、并集之后在进行回表;
-- range:索引范围扫描。使用 < 、>、in、between
-等关键词,只检索给定范围的行;
-- ref:非唯一索引等值匹配;
-- eq_ref:唯一索引 多表联查 等值匹配;
-- const:主键或唯一索引 常量 等值匹配;
-
-额外信息 extra
-
-- Using filesort :当查询语句中包含 group by
-操作,而且无法利用索引完成排序操作的时候,
-这时不得不选择相应的排序算法进行;
-- Using temporary:使了用临时表保存中间结果,如排序 order by
-和分组查询 group by;
-- Using where:存储引擎层返回行以后在 MySQL 服务层应用 where
-过滤条件;
-- Using
-index:所需数据可以直接在二级索引值和主键值中得到,采用覆盖索引,不回表;
-- Using index condition 索引下推
-:可以在联合索引遍历过程中,对联合索引中包含的字段先做判断,直接过滤掉不满足条件的记录,减少回表次数;
-
-是否需要索引
-需要索引的情况
-
-- 唯一性字段
-- 范围查询
WHERE
-- 排序查询
GROUP BY
、 ORDER BY
-- 覆盖索引,全索引扫描优于全表扫描
-
-不需要索引的情况
-
-- 不需要范围查询、排序查询
-- 大量重复数据
-- 频繁修改
-- 数据量少
-
-索引优化
-前缀索引:减小索引字段大小,可以增加一个索引页中存储的索引值,有效提高索引的查询速度。
-覆盖索引:联合索引和主键值中包括了查询数据,避免回表
-主键索引自增:追加记录时不需要移动数据;避免页分裂造成内存碎片;
-主键字段长度尽可能短:聚簇索引非叶子节点可以装下更多的索引;二级索引叶子节点可以装下更多的主键值,占用空间更小
-索引 NOT NULL:简化索引统计、值比较过程;减少 1
-字节的行格式长度;
-联合索引
-区分度大的在前:建立联合索引时,要把区分度大的字段排在前面,这样区分度大的字段越有可能被更多的
-SQL 使用到。
-
-如果索引的区分度很小,假设字段的值分布均匀,那么无论搜索哪个值都可能得到一半的数据(惯用的百分比界线是"30%")MySQL
-查询优化器,会忽略索引,进行全表扫描
-
-索引失效
-
-- 左或者左右模糊匹配
-- 查询条件中对索引列做了
-
-- 计算
-- 函数
-- 类型转换操作
-
-- 联合索引未遵循最左匹配原则
-- 条件语句中 OR 前后子句一个有索引一个没索引
-
-Count 计算
-遍历索引,优先遍历 key_len
-最小的二级索引,只有当没有二级索引的时候,才会采用主键索引来进行统计。
-事务
-事务是由存储引擎实现的,InnoDB 支持事务
-特性
-
-- 持久性是通过 redo log (重做日志)保证的;
-- 原子性是通过 undo log(回滚日志) 保证的;
-- 隔离性是通过 MVCC(多版本并发控制) 或锁机制保证的;
-- 一致性则是通过持久性+原子性+隔离性保证的;
-
-并行事务会引发的问题
-
-- 脏读:一个事务读到了另一个未提交事务修改过的数据
-- 不可重复读:一个事务内多次读取同一个数据,如果出现前后两次读到的数据不一样
-- 幻读:一个事务内多次查询某个查询条件的记录数量不同
-
-隔离级别
-
-
-
-隔离级别(是否会出现xx问题)
-脏读
-不可重复读
-幻读
-
-
-
-
-READ-UNCOMMITTED 读未提交
-√
-√
-√
-
-
-READ-COMMITTED 读已提交
-×
-√
-√
-
-
-REPEATABLE-READ 可重复读
-×
-×
-√
-
-
-SERIALIZABLE 可串行化
-×
-×
-×
-
-
-
-
-- 读未提交:允许读取尚未提交的数据变更。直接读取最新的数据
-- 读已提交:允许读取并发事务已经提交的数据。「每个 SQL
-语句执行前」都会重新生成一个 Read View
-- 可重复读:对同一字段的多次读取结果都是一致的。「启动事务时」生成一个
-Read View,然后整个事务期间都在用这个 Read View
-- 可串行化:所有的事务依次逐个执行,完全服从 ACID
-的隔离级别。采用加读写锁的方式来避免并行访问
-
-虽然 InnoDB 默认采用可重复读隔离级别,但基本不会出现幻读,因为其采用
-next-key lock(记录锁+间隙锁)和 MVCC 来避免幻读的发生
-
-- 快照读(select):采用 MVCC
-方式解决了幻读。事务执行过程中看到的数据,一直跟这个事务启动时看到的数据是一致的,保证事务隔离性;
-
-- 在执行第一个查询语句后,会创建一个 Read View,后续的查询语句利用这个
-Read View,通过这个 Read View 就可以在 undo log
-版本链找到事务开始时的数据,所以事务过程中每次查询的数据都是一样的
-
-- 当前读/共享锁(select for update):通过 next-key
-lock(记录锁+间隙锁)方式解决了幻读,读到的记录是最新的。如果有其他事务在
-Next-Key Lock
-范围内插入了一条记录,那么这个插入语句就会被阻塞,无法成功插入;
-
-- update、insert、delete
-都是当前读,这些语句执行前都会查询最新版本的数据,然后再做进一步的操作;
-- 如果 update
-是已经被锁住的记录,就生成插入意向锁并进入阻塞状态;
-- 当前读给某记录加锁了,那么对该记录已修改但未提交的事物就无法提交这个修改了,直到锁被释放;
-- Next-Key Lock 对索引记录加上行锁(Record
-Lock),对索引记录两边的间隙加上间隙锁(Gap
-Lock),是针对事务隔离级别为可重复读或以上级别而设计的;
-
-
-MVCC 多版本并发控制
-InnoDB 事务是通过 Read View 和
-聚簇索引中的两个隐藏列 实现 MVCC 的
-Read View 字段
-
-聚簇索引中的两个隐藏列
-
-- trx_id,当一个事务对某条聚簇索引记录进行改动时,就会把该事务的事务
-id 记录在 trx_id 隐藏列里;
-- roll_pointer,每次对某条聚簇索引记录进行改动时,都会把旧版本的记录写入到
-undo
-日志中,然后这个隐藏列是个指针,指向每一个旧版本记录,于是就可以通过它找到修改前的记录。
-
-MVCC 如何实现可重复读?
-事务 A 读某字段时,会先读取该字段的 trx_id,如果 Read View 中记录的该
-trx_id 是活跃事务,则沿着 roll_pointer(即 undo
-log 版本链)寻找旧版本字段;如果 Read View 中记录的该 trx_id
-是当前事务 或
-已提交事务,则返回该记录。【注意,Read View
-字段不随活跃事务的提交而改变,它是该事务开启时的数据库事务状态快照】
-可重复读下发生幻读
-
-- 事务 A 先对某块记录执行快照读
-- 事务 B 插入数据到该块记录中,并提交事务 B
-- 事务 A 再对该块记录执行当前读或更新记录
-- 会读取到事务 B 插入的数据,因为当前读会读取最新的记录
-
-如何避免?
-若事务中会对数据采取 当前读,则在事务刚开始时就执行,通过 next-key
-lock 避免其他事物再插入数据。
-锁
-
-MySQL 加锁时,先 生成锁结构,然后
-设置锁的状态,即初始化锁再竞争锁;如果锁状态是等待状态,并不是意味着事务成功获取到了锁,只有当锁状态为正常状态时,才代表事务成功获取到了锁;
-
-锁的种类
-
-- 全局锁
-- 表级锁
-
-- 表锁
-- 意向表:用于快速判断表里是否有记录被加锁。意向共享锁和意向独占锁是表级锁,不会和行级的共享锁和独占锁发生冲突,而且意向锁之间也不会发生冲突,只会和共享表锁(lock
-tables ... read)和独占表锁(lock tables ... write)发生冲突
-- 元数据表 MDL 锁:更表结构时需要申请 MDL 写锁
-- AUTO-INC 锁:配置文件
-
innodb_autoinc_lock_mode = 2, binlog_format = row
,既能提升并发性,又不会出现数据一致性问题
-
-- 行级锁
-
-- Record Lock 记录锁,区分读锁和写锁,锁定存在的记录;
-- Gap Lock
-间隙锁,不区分读锁和写锁;间隙锁用来锁一个范围,间隙锁之间是兼容的;
-- Next-Key Lock 临键锁,区分读锁和写锁;
-- 插入意向锁,特殊的间隙锁,用于不同事务的并发控制和冲突检测;插入意向锁和不同事物的间隙锁之间是冲突的,当某个事务的插入语句遇到间隙锁时,会产生插入意向锁;
-
-- 隐式锁
-
-- 延迟加锁机制,特点是只有在可能发生冲突时才加锁
-- 使用场景:事务 B 插入记录的索引 == 事务 A 已插入且未提交的索引,事务
-A 插入的记录上的「隐式锁」会变「显示锁」且锁类型为 X
-型的记录锁,所以事务 B 想获取
S 型next-key
-锁时会遇到锁冲突,事务 B 进入阻塞状态。
-
-
-行级锁实现
-
-行级锁时 Innodb 实现高效事务的关键
-
-加锁是加在索引上的【加行级锁时还要加表锁:X 类型的意向锁】
-
-- 全表当前读,遍历聚簇索引加临键锁(update
-未走索引的情况)
-- 全索引当前读,遍历当前索引加临键锁
-
-二级索引加锁后,还要在查询到的记录的主键索引项加记录锁
-Insert 语句,加行级锁
-
-- 记录被间隙锁,阻塞
-
-- 插入意向锁
-
-- 唯一键冲突,执行失败
-
-- 如果主键索引重复,插入新记录的事务会给已存在的主键值重复的聚簇索引记录添加
-S 型记录锁。
-- 如果唯一二级索引重复,插入新记录的事务都会给已存在的二级索引列值重复的二级索引记录添加
-S 型 next-key 锁。
-
-
-临键锁退化成记录锁或间隙锁的情况
-唯一索引查询
-
-- 等值查询
-
-- (条件值)存在,该索引加记录锁
-- (条件值)不存在,后一索引加间隙锁
-
-- 范围查询
-
-- 条件值在表中,非等值查询
-
-- 小于,该索引加间隙锁
-- 大于,后一索引加临键锁
-
-- 条件值在表中且条件是等值查询
-
-- 小于等于,该索引加临键锁
-- 大于等于,该索引加记录锁
-
-
-
-非唯一索引查询
-
-- 等值查询
-
-- 存在,扫描到的索引记录加的是 next-key
-锁,而对于第一个不符合条件的索引记录,该索引的 next-key
-锁会退化成间隙锁;
-- 不存在,扫描到第一条不符合条件的索引记录,该索引的 next-key
-锁会退化成间隙锁;
-
-- 范围查询
-
-- 为确保条件值前后都锁住,加锁时不存在临建锁退化为间隙锁和记录锁的情况
-
-
-死锁
-
-- 两个事务分别加了间隙锁(前提)
-- 两个事务分别向对方的间隙锁插入数据,于是都产生插入意向锁
-- 由于插入意向锁和间隙锁冲突,双方都为了获取插入意向锁,会等待对方事务的间隙锁释放,陷入循环等待,造成死锁
-
-插入意向锁是对不同事务才产生作用的,对于本身事务的间隙锁是兼容的。
-解决方法
-
-- 设置事务等待锁的超时时间
innodb_lock_wait_timeout
-- 开启主动死锁检测
innodb_deadlock_detect
-
-日志
-
-目前,很多数据库采用的是 steal(没提交的事务写的脏页也可以马上落盘)+
-no force(已提交的事务可以不马上落盘)模式。MySQL 也参考了这个模式,undo
-log 变更持久性和数据一样,由 redo log 保证,对 undo log
-还没落盘的修改也会写入 redo log。这样不管怎么样基于 undo log
-做事务回滚或者做 MVCC都可以保证原子和一致性。
-
-
-- undo log(回滚日志):是 Innodb
-存储引擎层生成的日志,实现了事务中的原子性,主要用于事务回滚和
-MVCC;
-- redo log(重做日志):是 Innodb
-存储引擎层生成的日志,实现了事务中的持久性,主要用于掉电等故障恢复;
-- bin log (归档日志):是 Server
-层生成的日志,主要用于数据备份和主从复制;
-
-回滚日志与重做日志的区别
-
-- redo log
-记录了此次事务「完成后」的数据状态,记录的是更新之后的值;防止已提交事务的修改丢失;
-- undo log
-记录了此次事务「开始前」的数据状态,记录的是更新之前的值;防止未提交事务的修改无法回滚;
-
-重做日志和归档日志的区别
-
-- bin log
-是追加写,写满一个文件,就创建一个新的文件继续写,不会覆盖以前的日志,保存的是全量的日志。
-- redo log
-是循环写,日志空间大小是固定,全部写满就从头开始,保存未被刷入磁盘的脏页日志。
-
-回滚日志 Undo log
-
-- 实现事务回滚,保障事务的原子性。事务处理过程中,如果出现了错误
-或者 用户执行了 ROLLBACK 语句,MySQL 可以利用 undo log
-中的历史数据将数据恢复到事务开始之前的状态。
-- 实现 MVCC(多版本并发控制)关键因素之一。MVCC 是通过 Read View +
-undo log 实现的。undo log
-为每条记录保存多份历史数据,MySQL 在执行快照读(普通 select
-语句)的时候,会根据事务的 Read View 里的信息,顺着 undo log
-的版本链找到满足其可见性的记录。
-
-持久化方法:开启事务后,InnoDB 层更新记录前,首先要记录相应的 undo
-log,如果是更新操作,需要把被更新的列的旧值记下来,也就是要生成一条 undo
-log,undo log 会写入 Buffer Pool 中的 Undo 页面,对 undo
-页的修改也都会记录到 redo log。redo log
-会每秒刷盘,提交事务时也会刷盘,数据页和 undo
-页都是靠这个机制保证持久化的。
-重做日志 Redo log
-
-防止 Buffer Pool 中的脏页丢失
-
-
-- 实现事务的持久性,让 MySQL 有
-crash-safe 的能力,能够保证 MySQL
-在任何时间段突然崩溃,重启后之前已提交的记录都不会丢失;
-- 将脏页的写操作从「随机写」变成了「顺序写」,提升
-MySQL 写入磁盘的性能;
-
-WAL(Write-Ahead Logging):MySQL
-的写操作并不是立刻写到磁盘上,而是先写 redo log
-日志,然后在合适的时间再将脏页写到磁盘上。
-redo log
-是物理日志,记录了某个数据页做了什么修改,即所有未还没持久化的脏页修改。在事务提交时,只要先将
-redo log 持久化到磁盘即可,可以不需要等到将缓存在 Buffer Pool
-里的脏页数据持久化到磁盘。当系统崩溃时,虽然脏页数据没有持久化,但是
-redo log 已经持久化,接着 MySQL 重启后,可以根据 redo log
-的内容,将所有数据恢复到最新的状态。
-redo log 持久化操作:每当产生一条 redo log
-时,会先写入到 redo log buffer,为了在 MySQL
-处理大事务时尽可能少写入磁盘,进而提升写 IO 性能。redo log
-buffer 写入磁盘的时机:
-
-- MySQL 正常关闭时;
-- 当 redo log buffer 中记录的写入量大于 redo log buffer
-内存空间的一半时;
-- InnoDB 的后台线程每隔 1 秒,将 redo log buffer
-持久化到磁盘。
-- 每次事务提交时都将缓存在 redo log buffer 里的 redo
-log 直接持久化到磁盘;
-
-- 参数为 0 时,事务提交不会主动触发写入磁盘的操作;MySQL
-进程崩溃会导致上一秒钟所有事务数据的丢失;
-- 参数为 1 时,每次事务提交都将缓存在 redo log buffer 里的 redo log
-直接持久化到磁盘;
-- 参数为 2 时,每次事务提交都只是缓存在 redo log buffer 里的 redo log
-写到 redo log 文件(写入到 redo log
-文件并不意味着写入到了磁盘,而是存在操作系统里的文件系统中的 Page
-Cache);操作系统崩溃或者系统断电会导致上一秒钟所有事务数据的丢失;
-
-
-重做日志文件组
-redo log 是为了防止 Buffer Pool
-中的脏页丢失而设计的,只记录未被刷入磁盘的数据的物理日志。随着系统运行,Buffer
-Pool 的脏页刷新到了磁盘中,redo log
-对应的记录也就没用了,这时候我们需要擦除这些旧记录,以腾出空间记录新的更新操作。重做日志文件组由有
-2 个 redo log
-文件组成,以循环写的方式工作,从头开始写,写到末尾就又回到开头,相当于一个环形。
-
-
-
-- write pos ~ checkpoint
-之间的部分(图中红色部分):记录新的更新操作;
-- check point ~ write pos
-之间的部分(图中蓝色部分):待落盘的脏数据页记录;
-
-将 Buffer Pool 中的脏页刷新到磁盘中,然后标记 redo log
-哪些记录可以被擦除,接着对旧的 redo log
-记录进行擦除,等擦除完旧记录腾出了空间,checkpoint
-就会往后移动(图中顺时针)。一次 checkpoint
-的过程就是脏页刷新到磁盘中变成干净页,然后标记 redo log
-哪些记录可以被覆盖的过程。
-归档日志 Bin log
-记录 MySQL 上的所有变化并以二进制形式保存在磁盘上。MySQL
-在完成数据库表结构变更或表数据修改(增删改)时,Server
-层会生成一条
-binlog,等之后事务提交的时候,会将该事物执行过程中产生的所有 binlog
-统一写入 binlog 文件。
-
-- binlog 日志只能用于数据备份和主从复制,没有 crash-safe 的能力;
-- binlog
-是全量日志,保存了所有数据变更的情况,可以恢复整个数据库所有数据;
-
-主从复制
-
-
-
-- 写入 Binlog:数据修改 -> 主库写 binlog 日志 -> commit 事务
--> 持久化本地数据 -> 提交事务成功;
-- 同步 Binlog:从库会创建一个专门的 I/O 线程,连接主库的 log dump
-线程,来接收主库的 binlog 日志,再把 binlog 信息写入 relay log
-的中继日志里,再返回给主库“复制成功”的响应。
-- 回放 Binlog:读 relay log 中继日志,回放
-binlog,并更新从库中的数据。
-
-主从复制模型
-
-- 同步复制:MySQL
-主库提交事务的线程要等待所有从库的复制成功响应,才返回客户端结果;
-- 异步复制(默认模型):MySQL 主库提交事务的线程并不会等待 binlog
-同步到各从库,就返回客户端结果;
-- 半同步复制:只要数据成功复制到任意一个从库上,主库的事务线程就可以返回给客户端;
-
-binlog 刷盘
-
-
-
-- 图中的 write,把日志写入到 binlog 文件(文件系统的 page
-cache 里),但是并没有把数据持久化到磁盘;
-- 图中的 fsync,把数据持久化到磁盘的操作,这里就会涉及磁盘
-I/O,所以频繁的 fsync 会导致磁盘的 I/O 升高;
-
-MySQL 提供一个 sync_binlog 参数来控制数据库的 binlog
-刷到磁盘上的频率:
-
-- sync_binlog = 0 的时候,表示每次提交事务都只 write,不
-fsync,后续交由操作系统决定何时将数据持久化到磁盘;
-- sync_binlog = 1 的时候,表示每次提交事务都会 write,然后马上执行
-fsync;
-- sync_binlog =N(N>1) 的时候,表示每次提交事务都 write,但累积 N
-个事务后才 fsync。
-
-两阶段提交
-binlog 主从复制和 redo log
-崩溃恢复需要保持一致,不然会出现主从数据不一致、备份数据与真实数据不一致等问题。MySQL
-采用两阶段提交来避免两份日志之间的逻辑不一致,两阶段提交是一种分布式事务一致性协议。
-两阶段提交:把单个事务的提交拆分成了 2
-个阶段,分别是准备阶段和提交阶段(不是 commit
-语句),每个阶段都由协调者和参与者共同完成。
-内部 XA 事务
-
-
-为了保证这两个日志的一致性,MySQL 使用了内部 XA 事务。内部 XA 事务由
-binlog 作为协调者,存储引擎是参与者,可以实现跨数据库事务。将 redo log
-的写入拆成了两个状态:prepare 和
-commit,中间再穿插写入binlog。
-
-- 如果 binlog 中没有当前内部 XA 事务的 XID,说明 redolog
-完成刷盘,但是 binlog 还没有刷盘,则回滚事务。对应时刻
-A 崩溃恢复的情况;
-- 如果 binlog 中有当前内部 XA 事务的 XID,说明 redolog 和 binlog
-都已经完成了刷盘,则提交事务。对应时刻 B
-崩溃恢复的情况;
-
-对于处于 prepare 阶段的 redo
-log,即可以提交事务,也可以回滚事务,这取决于是否能在 binlog 中查找到与
-redo log 相同的 XID,以 binlog 写成功为事务提交成功的标识。
-组提交
-采用组提交策略,减少 redolog 和 binlog
-两次刷盘导致的 I/O
-次数高和锁竞争激烈的问题。
-
-多事务场景下,两阶段提交会导致锁竞争激烈,因为为保证两个日志保存的数据库状态一致,需要加锁操作保证两阶段提交的原子性。
-
-binlog 组提交机制:当有多个事务提交的时候,会将多个
-binlog 刷盘操作合并成一个,从而减少磁盘 I/O 的次数。prepare
-阶段不变,只针对 commit 阶段,将 commit 阶段拆分为三个阶段:
-
-- flush 阶段:多个事务按进入的顺序将 binlog 从 cache
-写入文件(不刷盘);5.7 之后在该阶段增加了 redo log 的组提交,即多个事务
-redo log 统一刷盘;
-
-- 类似于 XA 事务的 Prepare 阶段,如果在这一步完成后数据库崩溃,由于
-binlog 中没有该组事务的记录,所以 MySQL 会在重启后回滚该组事务;
-
-- sync 阶段:对 binlog 文件做 fsync 操作(多个事务的
-binlog 合并一次刷盘);
-
-- 类似于 XA 事务的 Commit 阶段,如果在这一步完成后数据库崩溃,由于
-binlog 中已经有了事务记录,MySQL会在重启后通过 redo log
-刷盘的数据继续进行事务的提交。
-
-- commit 阶段:各个事务按顺序做 InnoDB commit
-操作;
-
-每个阶段都有一个队列,锁就只针对每个队列进行保护,不再锁住提交事务的整个过程。减小了锁粒度,这样就使得多个阶段可以并发执行,从而提升效率。
-总结模拟一次更新流程
-
-- MySQL 执行器检查记录是否在 buffer pool 中
-
-- 若不在,将数据页从磁盘读入到 buffer pool;
-- 若更新前与更新后数据不同,调用 存储引擎 执行更新操作;
-
-- 开启事务,记录 undo log,同时将 Undo 页的修改记录存在 redo log
-中;
-- 存储引擎更新数据,并标记数据页为脏页,同时将数据页的修改记录存在
-redo log 中;
-
-- 为了减少磁盘I/O,脏页选择合适时间持久化到硬盘,持久化后删除对应的
-redo log;
-
-- 记录更新完毕,记录 binlog 至 binlog cache;
-- 事务提交,将 redolog binlog 持久化到硬盘(两阶段提交;组提交)
-
-- prepare 阶段
-- commit 阶段
-
-
-脏页刷盘的时机
-
-- Redo log 满了;
-- BufferPool满了;
-- MySQL空闲;
-- 后台线程定时 checkpoint;
-- 事务提交时(一般不选);
-
-内存
-Buffer Pool 缓存的内容包括:索引页、数据页、Undo
-页、插入缓存页、自适应哈希索引、锁信息等。innodb_buffer_pool_size
-默认 128MB。
-为了管理这些在 Buffer Pool 中的缓存页,InnoDB
-为每一个缓存页都创建了一个控制块,控制块信息包括:缓存页的表空间、页号、缓存页地址、链表节点等等。用三种链表管理不同状态的缓存块:
-
-- Free List (空闲页链表),管理空闲页;
-- Flush List (脏页链表),管理脏页;
-- LRU
-List,管理脏页+干净页,将经常查询或可能将要查询的数据缓存在其中,而不常查询的数据就淘汰出去;
-
-Free 链表:使用链表结构,快速找到空闲的缓存页;
-每当需要从磁盘中加载一个页到 Buffer Pool 中时,就从
-Free链表中取一个空闲的缓存页,并且把该缓存页对应的控制块的信息填上,然后把该缓存页对应的控制块从
-Free 链表中移除
-
-
-Flush 链表:使用链表结构,快速找到脏页;(结构类似于
-Free 链表)
-脏页落盘时,后台线程遍历 Flush 链表
-提高缓存命中率
-Buffer Pool 有三种页和链表用来管理数据
-
-
-
-- Free Page(空闲页),表示此页未被使用,位于 Free 链表;
-- Clean Page(干净页),表示此页已被使用,但是页面未发生修改,位于LRU
-链表。
-- Dirty
-Page(脏页),表示此页「已被使用」且「已经被修改」,其数据和磁盘上的数据已经不一致。当脏页上的数据写入磁盘后,内存数据和磁盘数据一致,那么该页就变成了干净页。脏页同时存在于
-LRU 链表和 Flush 链表。
-
-普通的LRU 算法会出现以下两个问题
-
-- 预读失效:加载访问数据页时,提前加载进来的相邻数据页,即预读页,但后续并没有访问预读页;
-- Buffer Pool 污染:某一个 SQL 语句扫描了大量的数据时,将 Buffer Pool
-里的所有页都替换出去,导致大量热数据被淘汰了,后续热数据被访问时会产生大量磁盘
-I/O;
-
-- 索引失效批量扫描的时候会出现污染
-
-
-解决办法
-
-- 将 LRU 划分了 2 个区域:old 区域 和 young
-区域。划分这两个区域后,预读的页就只需要加入到 old
-区域的头部,当页被真正访问的时候,才将页插入 young 区域的头部。
-- 只有同时满足被访问与在 old 区域停留时间超过
-
innodb_old_blocks_time
秒两个条件,才会被插入到
-young 区域头部
-- young 区域优化:为了防止 young 区域节点频繁移动到头部。young
-区域前面 1/4 被访问不会移动到链表头部,只有后面的 3/4被访问了才会
-
-优化
-磁盘IO、索引、数据分页(查询大量数据)、锁竞争、内存使用下·
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0%
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git "a/MySQL/readview\347\273\223\346\236\204.drawio.png" "b/MySQL/readview\347\273\223\346\236\204.drawio.png"
deleted file mode 100644
index 8d10f68..0000000
Binary files "a/MySQL/readview\347\273\223\346\236\204.drawio.png" and /dev/null differ
diff --git "a/MySQL/\344\270\244\351\230\266\346\256\265\346\217\220\344\272\244.drawio.png" "b/MySQL/\344\270\244\351\230\266\346\256\265\346\217\220\344\272\244.drawio.png"
deleted file mode 100644
index cbfecac..0000000
Binary files "a/MySQL/\344\270\244\351\230\266\346\256\265\346\217\220\344\272\244.drawio.png" and /dev/null differ
diff --git "a/MySQL/\344\270\273\344\273\216\345\244\215\345\210\266\350\277\207\347\250\213.drawio.png" "b/MySQL/\344\270\273\344\273\216\345\244\215\345\210\266\350\277\207\347\250\213.drawio.png"
deleted file mode 100644
index d5e421e..0000000
Binary files "a/MySQL/\344\270\273\344\273\216\345\244\215\345\210\266\350\277\207\347\250\213.drawio.png" and /dev/null differ
diff --git "a/MySQL/\350\241\250\347\251\272\351\227\264\347\273\223\346\236\204.drawio.png" "b/MySQL/\350\241\250\347\251\272\351\227\264\347\273\223\346\236\204.drawio.png"
deleted file mode 100644
index f0c5ea6..0000000
Binary files "a/MySQL/\350\241\250\347\251\272\351\227\264\347\273\223\346\236\204.drawio.png" and /dev/null differ
diff --git a/Network/index.html b/Network/index.html
index 40bcd4a..5555d5f 100644
--- a/Network/index.html
+++ b/Network/index.html
@@ -158,18 +158,18 @@
@@ -272,11 +272,11 @@
传输层,关注链路级别的传输
应用数据转换到传输块的过程:
-
-
+
+
访问网站的过程
-
-
+
+
- 解析 URL
- DNS 查询服务器 IP
@@ -378,11 +378,11 @@
传输层 TCP
TCP :面向连接的、可靠的、基于字节流的
三次握手
-
-
+
+
四次挥手【closed_wait;last_ack】
-
-
+
+
- 首先确认客户端不会再发送请求给服务端
- 然后服务端在发送完数据后,再向客户端发送断开连接
@@ -430,8 +430,8 @@ 网络层 IP
diff --git a/OS/index.html b/OS/index.html
index 1246028..da50706 100644
--- a/OS/index.html
+++ b/OS/index.html
@@ -156,18 +156,18 @@
@@ -264,8 +264,8 @@ 虚拟内存
只会访问虚拟内存地址,在操作总线前,通过一个地址转换硬件将虚拟内存地址转换为物理内存地址
进程隔离:将虚拟内存映射到物理内存,进程之间的地址空间相互隔离,互不干扰
虚拟内存空间:
-
-
+
+
用户态虚拟内存空间是相互隔离相互独立的;内核虚拟内存空间是各个进程共享的;
进程管理
数据结构 PCB
@@ -345,8 +345,8 @@ I/O 多路复用
diff --git a/Redis/98987d9417b2bab43087f45fc959d32a.png b/Redis/98987d9417b2bab43087f45fc959d32a.png
deleted file mode 100644
index a61048c..0000000
Binary files a/Redis/98987d9417b2bab43087f45fc959d32a.png and /dev/null differ
diff --git a/Redis/a6286053c6884cf58bf397d01674fe80.png b/Redis/a6286053c6884cf58bf397d01674fe80.png
deleted file mode 100644
index 190bdfc..0000000
Binary files a/Redis/a6286053c6884cf58bf397d01674fe80.png and /dev/null differ
diff --git a/Redis/d1b889b9039f4f2f9853d44e3aa258fctplv-k3u1fbpfcp-zoom-in-crop-mark1512000.webp b/Redis/d1b889b9039f4f2f9853d44e3aa258fctplv-k3u1fbpfcp-zoom-in-crop-mark1512000.webp
deleted file mode 100644
index ab0e3ea..0000000
Binary files a/Redis/d1b889b9039f4f2f9853d44e3aa258fctplv-k3u1fbpfcp-zoom-in-crop-mark1512000.webp and /dev/null differ
diff --git a/Redis/ea4f7e86baf2435af3999e5cd38b6a26.png b/Redis/ea4f7e86baf2435af3999e5cd38b6a26.png
deleted file mode 100644
index 421eb52..0000000
Binary files a/Redis/ea4f7e86baf2435af3999e5cd38b6a26.png and /dev/null differ
diff --git a/Redis/fdd5f695bb3643258662886f9fba0aab.png b/Redis/fdd5f695bb3643258662886f9fba0aab.png
deleted file mode 100644
index d1ff1f2..0000000
Binary files a/Redis/fdd5f695bb3643258662886f9fba0aab.png and /dev/null differ
diff --git a/Redis/index.html b/Redis/index.html
deleted file mode 100644
index 050b1d3..0000000
--- a/Redis/index.html
+++ /dev/null
@@ -1,583 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Redis | 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 闻
-
-
- Yesterday is history, tomorrow is a mystery but today is a gift.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Redis
-
-
-
-
-
- Redis 基础
-
-
-
-
-
-
- Redis 的特性:单线程、原子性、基于内存、优化数据结构、I/O
-多路复用的非关系型数据库;
-6.0 版本前网络 I/O 和命令处理都是单线程,6.0 版本后网络 I/O
-改用多个线程处理
-
-- 大部分操作都在内存中完成(制约 Redis 性能的瓶颈并不是
-CPU,而是内存和网络带宽)
-- 避免了多线程之间的竞争
-- I/O 多路复用机制
-
-数据结构
-5
-种基础数据类型:String(字符串)、List(列表)、Set(集合)、Hash(散列)、Zset(有序集合)
-3 种特殊数据类型:HyperLogLog(基数统计)、Bitmap (位图)、Geospatial
-(地理位置)
-持久化
-保证即使在服务器重启的情况下也不会丢失数据(或少量损失)
-AOF 日志
-将每条执行成功的写操作命令追加到日志文件中,持久化代码命令在主进程上执行
-写回策略(防止AOF日志在持久化过程中丢失):
-
-
-重写机制(防止AOF日志文件过大):
-
-删去已经无意义的日志;
-重写操作由后台子进程完成,子进程共享父进程内存(为什么不用线程?父子进程以只读的方式共享数据,如果任意一方修改了该共享内存,父子进程会有独立的数据副本,即写时复制,注意这里只会复制主进程修改的物理内存数据,没修改物理内存还是与子进程共享的。而线程共享内存需要加锁);
-AOF
-重写缓冲区用于保存重写子进程启动后,新产生的AOF日志,并在重写结束后追加到新的AOF文件中;
-
-RDB 快照
-某一时刻内存数据的快照(二进制数据),恢复时直接读入内存即可
-执行 bgsave 时,想要修改数据,需采用写时复制(Copy-On-Write,
-COW),以减少性能损耗
-混合持久化
-在AOF日志重写过程中,将新的含有 RDB 格式和 AOF 格式的 AOF
-文件替换旧的的 AOF 文件,前半部分是 RDB 格式的全量数据,后半部分是 AOF
-格式的增量数据,即重写缓冲区数据。
-策略
-过期删除策略
-惰性删除+定期删除
-内存淘汰策略
-仅淘汰过期数据:random、ttl、lru、lfu
-淘汰所有数据:lru、lfu
-高可用
-主从复制
-模式一:全量复制【多用于初始化】
-
-
-- bgsave 命令创建子进程来做生成 RDB 文件的工作,是异步工作的
-
-为了避免过多的从服务器和主服务器进行数据同步(全量复制),可以把一部分从服务器升级成分发节点,利用从节点分担读取操作的压力
-模式二:基于长连接的命令传播【多用于保持同步】
-主从服务器在完成第一次同步后,双方之间就会维护一个 TCP
-连接,保证第一次同步后的主从服务器的数据一致性。
-模式三:连接恢复时可以采用增量复制:repl_backlog_buffer
-环形缓冲区保存了最近传播的写命令,若其中存着从服务器请求的
-offset,就采用增量复制;否则采用全量复制。若想降低主从服务器断开后全量同步的概率,需要增大
-repl_backlog_buffer
-QA
-如何应对异步复制导致的主从数据不一致?
-外部程序来监控主从节点间的复制进度
-主从切换如何减少数据丢失?
-
-- 设置复制延迟限制
min-slaves-max-lag
-- 客户端降级措施,当 master 不可写,就把数据存到本地或 kafka
-中等待主节点正常后再消费
-
-集群脑裂导致数据丢失
-主节点必须要有至少 min-slaves-to-write
-个从节点连接,主从数据复制和同步的延迟不能超过
-min-slaves-max-lag
-秒。否则原主节点就会被限制接收客户端写请求,客户端也就不能在原主节点中写入新数据,等到新的主节点上线一切恢复正常。
-哨兵机制
-
-自动完成故障发现和故障转移,并通知给应用方,从而实现高可用性
-
-哨兵之间建立连接
-
-
-哨兵与从节点建立连接
-
-
-第一轮投票:判断主节点下线
-主观下线:主节点或者从节点没有在规定的时间内响应哨兵的 PING 命令
-客观下线:一个哨兵判断主节点为「主观下线」后,就会向其他哨兵发起命令,通过多个哨兵节点一起判断主节点是否下线。哨兵的赞同票数达到哨兵配置文件中的
-quorum 配置项设定的值则判断主节点客观下线
-第二轮投票:选出哨兵 leader
-
-- 哪个哨兵节点判断主节点为「客观下线」,这个哨兵节点就是候选者,所谓的候选者就是想当
-Leader 的哨兵。
-- 候选者会向其他哨兵发送命令,表明希望成为 Leader
-来执行主从切换,并让所有其他哨兵对它进行投票。Raft 算法选择哨兵 Leader:
-
-- 第一,拿到半数以上的赞成票;
-- 第二,拿到的票数同时还需要大于等于哨兵配置文件中的 quorum 值。
-
-
-由哨兵 leader
-进行主从故障转移
-
-- 第一步:在已下线主节点(旧主节点)属下的所有「从节点」里面,挑选出一个从节点,并将其转换为主节点,选择的规则:
-
-- 过滤掉已经离线的从节点;
-- 过滤掉历史网络连接状态不好的从节点;
-- 将剩下的从节点,进行三轮考察:优先级、复制进度、ID
-号。在每一轮考察过程中,如果找到了一个胜出的从节点,就将其作为新主节点。
-
-- 第二步:让已下线主节点属下的所有「从节点」修改复制目标,修改为复制「新主节点」;
-- 第三步:将新主节点的 IP
-地址和信息,通过「发布者/订阅者机制」通知给客户端;
-- 第四步:继续监视旧主节点,当这个旧主节点重新上线时,将它设置为新主节点的从节点;
-
-集群
-
-
-- 同一个分区内的 Redis
-节点之间的数据完全一样,多个节点保证了数据有多份副本冗余保存,且可以提供高可用保障;
-- 不同分片之间的数据不相同;
-- 通过水平增加多个分片的方式,可以实现整体集群容量的扩展;
-
-集群数据分布策略
-Hash 槽
-
-- 切片 slot 槽,共有16384个槽位;
-- 数据 key 通过 “CRC16 算法 + 16384 取模”,得到对应存储的哈希槽;
-- 数据存储在该槽位对应的 Redis
-分区中,每个分区都有独立的主从哨兵保证高可用;
-
-一致性Hash
-虚拟节点
-缓存
-缓存雪崩、击穿、穿透
-缓存穿透:大量请求了缓存和数据库里都没有的数据,请求穿透缓存和数据库
-
-- 参数校验:参数不合法直接抛出异常
-- 缓存无效 key:适用于 key 变化不频繁
-- 布隆过滤器:校验 Key
-是否合法(有误差,可能会把未存的值当作已有,即不合法的 key
-当作合法的)
-- 接口限流:固定窗口算法、滑动窗口算法、漏桶算法、令牌桶算法
-
-缓存击穿:瞬间大量请求未缓存的数据库数据,请求击穿缓存直接打到数据库上
-
-- 热点数据永不过期或过期时间长
-- 预热热点数据:定时任务预热(定时触发缓存预热的逻辑,将数据库中的热点数据查询出来并存入缓存中)、kafka
-异步预热(将数据库中的热点数据的主键或者 ID
-发送到消息队列中,然后由缓存服务消费消息队列中的数据,根据主键或者 ID
-查询数据库并更新缓存)
-- 访问数据库互斥锁
-
-缓存雪崩:缓存在同一时间大面积的失效,导致大量的请求都直接落到了数据库上
-
-- Redis 集群
-- 限流
-- 多级缓存:本地缓存+Redis
-- 热点数据失效时间长
-- 预热热点数据
-
-如何保证数据库和缓存一致性
-
-采用 Cache Aside
-旁路缓存策略:以数据库中的数据为准,缓存中的数据是按需加载的;缺点:数据写入频繁时,缓存中的数据会被频繁的清理,降低缓存命中率;
-
-更新数据库+删除缓存:延迟双删
-更新数据库+更新缓存:分布式锁
-更新数据库+不更新缓存:较短的缓存有效期
-删除缓存的时候失败了怎么办?
-采用异步删除:
-
-- 消息队列确保缓存删除成功
-- 订阅 MySQL 的 binlog,数据修改时删除缓存
-
-缓存预热
-提高访问速度,平滑流量峰值,减少后端压力,保证数据的时效性
-Redis 缓存预热的方法:系统启动时加载;定时任务加载;
-实战
-分布式锁
-
-Redis + Lua
-脚本,可以以原子性的方式执行一组命令,可用于保证锁释放操作的原子性(Lua
-脚本在处理的过程中不会被任意其它请求打断),但无法用于事务执行失败的回滚。Redisson
-采用的就是这种方法保证分布式锁的原子性。
-
-SET 命令的 NX 参数可以实现:key
-不存在才插入,可以用于实现分布式锁
-优点:性能高效、实现方便、分布式高可用
-缺点:不好设置超时时间(解决方法:守护线程定期续约)、主从异步复制可能导致不可靠性(解决方法如下)
-提高可靠性(Redlock 算法):客户端和多个独立的 Redis
-节点依次请求申请加锁,如果客户端能够和半数以上的节点成功地完成加锁操作,那么就认为,客户端成功地获得分布式锁,否则加锁失败,所有的
-redis 实例都会进行解锁;
-
-- 单机的 redis 是 cp 的,但是集群情况下 redis 是 ap 的,所以运行
-Redisson
-的节点必须是主节点,不能有从节点,防止主节点加锁成功未同步从节点就宕机,而客户端却收到加锁成功,导致数据不一致。
-
-@Resource
private RedissonClient redisson;
-延迟队列
-有序集合 Zset;score 存储延迟执行的时间
-大 Key 问题
-会导致的问题
-
-- 由于 Redis 单线程处理,大 Key
-的增删改查都很耗时,会导致工作线程阻塞、客户响应超时、网络传输阻塞;
-- 内存分布不均,集群场景下 slot 槽数据量不均;
-- 持久化阻塞主线程,会主线程的两个阶段耗时增加:创建子进程复制页表结构、修改共享数据写时复制;
-
-解决办法
-
-- 拆分大 key;
-- 及时/定时清理大 key,unlink 异步删除代替 del 同步删除;
-
-发布者/订阅者
-
-订阅命令:subscribe channel [channel ... ]
-
-
-
-
-事务回滚
-Redis 不支持回滚,事务没有原子性(要么全部成功要么全部失败)
-管道
-批处理技术,可以一次处理多个 Redis
-命令,减少多个命令执行时的网络等待
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0%
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Redis/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAwrfmooXoirHljYHkuIk=,size_20,color_FFFFFF,t_70,g_se,x_16.png b/Redis/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAwrfmooXoirHljYHkuIk=,size_20,color_FFFFFF,t_70,g_se,x_16.png
deleted file mode 100644
index 410b113..0000000
Binary files a/Redis/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAwrfmooXoirHljYHkuIk=,size_20,color_FFFFFF,t_70,g_se,x_16.png and /dev/null differ
diff --git a/Rpc/A5B6F28E3286E3F920698A1D904CE4B0.png b/Rpc/A5B6F28E3286E3F920698A1D904CE4B0.png
deleted file mode 100644
index 6687fdd..0000000
Binary files a/Rpc/A5B6F28E3286E3F920698A1D904CE4B0.png and /dev/null differ
diff --git a/Rpc/index.html b/Rpc/index.html
deleted file mode 100644
index 0f2acf9..0000000
--- a/Rpc/index.html
+++ /dev/null
@@ -1,550 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Rpc 中间件 | 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 闻
-
-
- Yesterday is history, tomorrow is a mystery but today is a gift.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Rpc 中间件
-
-
-
-
-
- Rpc 框架搭建过程遇到的问题、Dubbo 使用过程遇到的问题
-
-
-
-
-
-
-
-分布式系统的 CAP 理论
-
-- 一致性(Consistency):所有节点访问同一份最新的数据副本
-- 可用性(Availability):非故障的节点在合理的时间内返回合理的响应(不是错误或者超时的响应)
-- 分区容错性(Partition
-Tolerance):分布式系统出现网络分区的时候,仍然能够对外提供服务。
-
-分布式保证服务高并发稳定性
-
-- 缓存:缓存是一种提高数据读取性能的技术,通过在内存中存储经常访问的数据,可以减少对数据库或者其他存储系统的访问,从而提高系统的响应速度。缓存可以应用在多个层次,例如浏览器缓存、CDN
-缓存、反向代理缓存、应用缓存等。
-- 降级:降级是在系统压力过大或者部分服务不可用的情况下,暂时关闭一些非核心的服务,以保证核心服务的正常运行。降级可以在多个层次进行,例如页面降级、功能降级、服务降级等。
-- 限流:限流是一种控制系统处理请求的速率的技术,以防止系统过载。限流可以通过多种算法实现,例如固定窗口、滑动窗口、漏桶算法、令牌桶算法等。
-
-Nacos 配置中心 注册中心
-RPC 框架
-
-泛指调用远程的函数的方法,对编解码和网络层有特殊的优化,从而有更高的效率。
-
-RPC 框架主要由 Server、Client、Server Stub、Client Stub 组件组成
-
-- Client Stub
-主要是将客户端的请求参数、请求服务地址、请求服务名称做一个封装,并发送给
-Server Stub
-- Server Stub 主要用于接收 Client Stub 发送的数据并解析,去调用 Server
-端的本地方法
-
-层次结构:代理曾、注册中心层(服务发现、注册、管理)、
-RPC 协议定制化程度高,可以采用体积更小的 Protobuf
-或其他序列化协议去保存结构体数据,同时也不需要像 HTTP
-那样考虑各种浏览器行为,如 302
-重定向跳转。因此性能也会更好一些。其底层不仅可以通过 tcp udp
-实现,也可以通过 http 实现。
-RPC
-协议会建个连接池,在请求量大的时候,建立多条连接放在池内,要发数据的时候就从池里取一条连接出来,用完放回去,下次再复用,可以说非常环保。
-目前,对外一般用 HTTP 协议,而内部集群的微服务之间则采用 RPC
-协议进行通讯。
-Dubbo 上线问题
-记录、学习、汇总实习和技术博客中看到的 Dubbo 实战遇到的问题
-服务端接口不指定通讯协议导致
-OOM
-问题背景:
-问题描述:
-
-开发人员使用方没有配置接口的 protocol
-字段,而是写在接口实现类上
-dubbo-3.0.4
框架:
-
-- 若没有指定 protocol 字段,会创建服务端提供的所有协议的 invoker
-- EasyREST 包
createClientInvoker
创建 REST 协议的 invoker
-时需要 HttpMethod 参数
-- 由于注解写在实现类而不是接口上面,导致消费端无法共享相应的 REST
-配置信息,即 HttpMethod 为 null,因此 RESTClient 创建失败
-- 在服务更新过程中,客户端每次都是全量更新注册中心的服务端信息,这个过程中如果
-invoker
-一直注册失败,会不断将失败的
Client
存到List<ResteasyClient>
中,如果有
-n 台机器需要依次更新,这时客户端的数组中会存 n*n
-个失败的连接实例,从而导致 OOM
-
-
-解决方法(针对框架,开发人员需要牢记 Dubbo 配置必须在接口上):
-
-- ResteasyClient 对象由 RestProtocol 协议对象持有,针对没有创建成功
-invoker 的场景应把其对应的 ResteasyClient 销毁掉
-
-销毁方法
-
-- 用
Map<String, ResteasyClient>
代替
-List<ResteasyClient>
,同一个服务端只存一次
-- 用
WeakHashMap<String, ResteasyClient>
自动回收不用的
-ResteasyClient(参考pr)
-
-
-父子线程并发 RPC 调用死锁
-问题描述:
-
-- 直接通过
Executors
构造 固定数量+无限长等待队列
-线程池,该线程池在共享的无界队列上操作的固定数量的线程。在任何时候,最多nThreads线程将处于活动处理任务状态。如果在所有线程都处于活动状态时提交额外的任务,它们将在队列中等待,直到有线程可用。
-
-public static ExecutorService newFixedThreadPool(int nThreads) {
return new ThreadPoolExecutor(nThreads, nThreads,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>());
}
-
-- 并发调用 Rpc 接口获取返回值
-
-Future<String> future = executor.submit(()->{
return 数据查询任务;
})
-
-- 数据查询任务中存在父子调用关系,数据查询任务同步调用 Redis
-查询缓存和 Rpc 调用微服务获得数据。如果本地 Redis
-缓存中能获得数据,就直接返回缓存值并取消 Rpc 调用
-
future.cancel(true)
。
-
-解决办法
-
-- 父子任务分开并发执行,耗时的异步线程应做好线程池隔离
-CompletableFuture.anyOf(task1,tsak2)
-优先取先完成的那个任务的返回值
-
-
-尝试开发基础版 Rpc 中间件
-服务发现流程:使用远程服务的时候首先需要配置一个
-dubbo.xml
-文件或者在使用的类加上@Reference
,二者都是用来对dubbo消费者引用服务进行一些配置,然后应用在启动的时候会将配置信息转化为一个ReferenceBean
对象,并调用createProxy
方法创建一个远程服务接口的代理对象。
-代理对象的 invoke
-创建:启动时主动订阅注册中心,会显示地调用一次notify
接口,这个接口会尝试将远程服务注册的url
转换成一个本地的invoker
。
-
-- 转换过程中会根据具体的
protocol
创建对应的
-invoker
,如 Rest 和 Dubbo 需要解析不同的参数。
-
-服务注册地址发生改变时:会通知给消费者,dubbo
-协议里面明确讲到服务发生改变会全量更新所有客户端的缓存
-Netty 数据传输
-
-在网络通信中,序列化和编码通常是结合使用的。序列化将对象转换为字节流,编码将字节流转换为网络传输所需的格式(如按照协议规定的格式进行编码)。在接收端,解码将网络传输的数据解析为原始的格式(如解码成对象),以便进行进一步的处理和使用。
-
-Netty 是一个高性能事件驱动型非阻塞 IO 框架:
-
-- 提供了 ByteBuf 容器,更方便地处理数据。
ByteBuf
-在重写编解码器的 encoder/decoder 方法中作为参数传入。
-- channel
-
-编码:先序列化,再压缩,最后写进 ByteBuf 对象中
-解码:从 ByteBuf 对象中读,然后转成我们需要的对象
-代理模式
-静态代理
-
-静态代理中,我们对目标对象的每个方法的增强都是手动完成的(后面会具体演示代码),非常不灵活(比如接口一旦新增加方法,目标对象和代理对象都要进行修改)且麻烦(需要对每个目标类都单独写一个代理类)。
-实际应用场景非常非常少,日常开发几乎看不到使用静态代理的场景。
-
-从 JVM 层面来说,
-静态代理在编译时就将接口、实现类、代理类这些都变成了一个个实际的 class
-文件。
-静态代理的步骤
-
-- 定义一个接口及其实现类;
-- 创建一个代理类同样实现这个接口
-- 将目标对象注入进代理类,然后在代理类的对应方法调用目标类中的对应方法。这样的话,我们就可以通过代理类屏蔽对目标对象的访问,并且可以在目标方法执行前后做一些自己想做的事情。
-
-JDK 动态代理
-
-- 定义一个接口及其实现类;
-- 自定义 InvocationHandler 并重写 invoke 方法,在 invoke
-方法中我们会调用原生方法(被代理类的方法)并自定义一些处理逻辑;
-- 通过
-
Proxy.newProxyInstance(ClassLoader loader,Class<?>[] interfaces,InvocationHandler h)
-方法创建代理对象;
-
-public interface InvocationHandler {
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable;
}
public class RpcClientProxy implements InvocationHandler {
// 在代理类内,根据传入的类 clazz,获得代理对象
public <T> T getProxy(Class<T> clazz) {
return (T) Proxy.newProxyInstance(clazz.getClassLoader(), new Class<?>[]{clazz}, this);
}
// 当通过代理类调用的所有方法,实际上调用的是这个invoke(传入的只是服务接口,具体的实现在服务端实现类中)
public Object invoke(Object proxy, Method method, Object[] args) {...}
}
-那么是如何调用服务端实现类的代码的呢?注入
-
-- 在实例化 bean 之后,postProcessAfterInitialization 方法被调用。
-- 对于每个 bean 类的字段,检查是否标记了 @RpcReference 注解。
-- 如果发现标记了 @RpcReference
-注解的字段,根据注解中的信息创建相应的 RpcServiceConfig 对象。
-- 通过 RpcClientProxy 创建了一个代理对象
-clientProxy,这个代理对象实现了 declaredField.getType()
-所表示的接口,这个接口可能就是 HelloService 接口或其它接口,取决于
-helloService 字段的类型。
-- 这个代理对象 clientProxy 会在方法调用时委托给 RpcClientProxy 的
-invoke 方法,该方法负责处理远程调用的逻辑。
-- 通过反射设置 clientProxy 到 HelloController 类的 helloService
-字段上,替换了原来的字段值。
-
-Object clientProxy = rpcClientProxy.getProxy(declaredField.getType());
declaredField.setAccessible(true);
try {
declaredField.set(bean, clientProxy);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
-传输协议
-* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
* +-----+-----+-----+-----+--------+----+----+----+------+-----------+-------+-------+-----+---+-----+----+
* | magic code |version | full length | messageType| codec|compress| RequestId |
* +-----------------------+--------+---------------------+-----------+-----------+-----------+------------+
* | body |
* +-------------------------------------------------------------------------------------------------------+
* 4B magic code(魔法数) 1B version(版本) 4B full length(消息长度) 1B messageType(消息类型)
* 1B compress(压缩类型) 1B codec(序列化类型) 4B requestId(请求的Id)
-注册中心
-服务注册:在 zk 里面创建一个对应的持久节点
-当我们的服务被注册进 zookeeper
-的时候,我们将完整的服务名称 rpcServiceName (class
-name+group+version)作为根节点
-,子节点是对应的服务地址(ip+端口号)。相关代码在
-ZkServiceProviderImpl.publishService()
中。
-如果我们要获得某个服务对应的地址的话,就直接根据完整的服务名称来获取到其下的所有子节点,然后通过具体的负载均衡策略取出一个就可以了。相关代码在
-ZkServiceDiscoveryImpl.lookupService()
中。
-Zookeeper 客户端
-
-Curator 是 Netflix
-公司开源的一套zookeeper客户端框架,解决了很多Zookeeper客户端非常底层的细节开发工作,包括连接重连、反复注册Watcher和NodeExistsException异常等等。项目内采用
-CuratorUtils 类调用 Curator。
-
-重试策略:ExponentialBackoffRetry是指数退避重试策略
-// zk的对外接口,后面我们要干什么只需要通过单例模式获得这个类,然后用这个类的方法
public interface ServiceProvider {
// 添加到本地 serviceMap 中(远程Rpc调用,获取本地的调用类)
void addService(RpcServiceConfig rpcServiceConfig);
Object getService(String rpcServiceName);
// 注册服务到 zookeeper 中(服务发现与注册)
void publishService(RpcServiceConfig rpcServiceConfig);
}
-负载均衡
-随机选取策略 轮询策略 加权轮询策略 最少活跃连接策略 一致性 Hash
-策略
-序列化
-
-- 序列化:将数据结构或对象转化为二进制字节流
-- 反序列化:将在序列化过程中生成的二进制字节流转化为数据结构或对象
-
-数据传输过程中,可能会出现粘包和半包问题,你是如何解决的?
-自定义消息结构(其他的还有固定长度传输、特殊字符分割):MagicNumber
-魔数、ContentLength 请求长度
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0%
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Spring/image-20240521182846989.png b/Spring/image-20240521182846989.png
deleted file mode 100644
index 475976d..0000000
Binary files a/Spring/image-20240521182846989.png and /dev/null differ
diff --git a/Spring/image-20240521182854337.png b/Spring/image-20240521182854337.png
deleted file mode 100644
index f7830fc..0000000
Binary files a/Spring/image-20240521182854337.png and /dev/null differ
diff --git a/Spring/index.html b/Spring/index.html
deleted file mode 100644
index d008ab7..0000000
--- a/Spring/index.html
+++ /dev/null
@@ -1,467 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Spring | 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 闻
-
-
- Yesterday is history, tomorrow is a mystery but today is a gift.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Spring
-
-
-
-
-
- 什么是 Spring 框架?
-
-
-
-
-
-
- SpringCore 主要提供 IoC 依赖注入功能的支持 SpringMVC 快速构建 MVC
-架构的 Web 程序 SpringBoot 简化 Spring 开发,减少配置文件,开箱即用
-IOC 控制反转
-
-当一个对象创建时,它所依赖的对象由外部传递给它,而非自己去创建所依赖的对象(比如通过new操作)。因此,也可以说在对象如何获取它的依赖对象这件事情上,控制权反转了。这便不难理解控制反转和依赖注入这两个名字的由来了。
-
-将对象之间的相互依赖关系交给 IoC 容器来管理,并由 IoC
-容器完成对象的注入 Bean 工厂模式
-
-- 单例 Singleton、多例/原型 Prototype Bean
-
-AOP 面向切面编程
-将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性。
-实现方式:基于动态代理,有接口用 jdk 原生的代理方法,没借口用 CGLib
-
-Bean 生命周期
-
-自动装配:@Component;@Service;@Controller;@Configure + @Bean
-
-
-xxx.class --> 默认无参构造方法 --> 普通对象 -->
-依赖注入(属性赋值) --> 初始化前 --> 初始化 --> 初始化后
---> 代理对象 --> 得到Bean(源码)
-实例化 Bean
-对象:默认调用无参构造器;若使用有参构造器,参数必须是容器中有的Bean【按参数查找
-Bean 时,先按照 classname 后按照参数名】 初始化前中后:BeanPostProcessor
-的 postProcessAfterInitialization() --> @PostConstruct 注解 -->
-InitializingBean 的 afterPropertiesSet() 方法 --> BeanPostProcessor
-的 postProcessAfterInitialization()(实现了 AOP 代理)
-
-- Aware 其实就是一个标识;只有满足 Aware
-规范或者其子类规范的才能进行相关的赋值操作,这样做的话可以少写很多判断,并且可以在一个地方进行统一的判断赋值;
-- BeanPostProcessor
-前置处理器的关键实现类:ApplicationContextAwareProcessor
-- BeanPostProcessor
-后置处理器的关键实现类:AbstractAutoProxyCreator。这个方法负责帮我们创建代理,底层采用对象cglib
-或动态代理【AOP其实就是 IOC
-整体流程(Bean生命周期)里的一个扩展点】
-- InitializingBean 接口中的 afterPropertiesSet
-方法:在这个方法里面去编写我们的业务逻辑,以及进行相关的属性赋值等等
-
-底层实现
-
-- AbstractAutowireCapableBeanFactory 内的 initializeBean 调用了所有
-BeanPostProcessor 的实现类
-- ApplicationContext 类型容器的内部维护了一个 BeanFactory
-类型的容器(AnnotationConfigApplicationContext 的父类
-GenericApplicationContext 维护了一个 Bean
-工厂实现类:DefaultListableBeanFactory)
-- DefaultListableBeanFactory:Spring 默认的 BeanFactory 实现
-- DefaultSingletonBeanRegistry:DefaultListableBeanFactory
-单例模式存储关系的地方 Map<String(BeanName),Object(instance)>
-- AbstractApplicationContext.refresh() 方法
-
-- 配置了对 BeanFactoryPostProcessor 的实现
-postProcessBeanFactory(beanFactory) 和处理
-invokeBeanFactoryPostProcessors(beanFactory)。BeanFactoryPostProcessor
-可以自定义 ApplicationContext 容器中的 BeanFactory
-进行处理,在还没有对任何Bean进行实例化之前(ConfigurationClassPostProcessor
-通过注解解析配置类;PropertySourcesPlaceholderConfigurer:xml配置文件中导入的
-properties 文件进行解析,并替换bean定义中的占位符)
-- 配置了对 BeanPostProcessor 的实现
-
-
-
-
-- (1-1)依赖注入:@Autowired;@Resource
-- 事务 @Transactional、@Configuration
-- (1-2)单例 Singleton、多例/原型 Prototype Bean
-- jvm类加载器classloader:bootstrap ext app 博客
-
-TODO Spring 启动流程 Springboot 和 Spring 最大的区别就是不需要 xml
-配置 Springboot 自动配置
-
-- “约定优于配置”理念
-- @EnableAutoConfiguration
-- 自动将一些配置类的bean注册进ioc容器
-
-logback是 slf4j 的官方实现,log4j 是另一个实现,logback 和 log4j
-才是二选一,slf4j 是门面日志的 api。
-TODO https://www.cnblogs.com/tuyang1129/p/12861617.html
-https://www.cnblogs.com/tuyang1129/p/12866484.html
-Spring 事务
-Spring 的声明式事务信息是存在 ThreadLocal
-中的,所以一个线程永远只能有一个事务,所以 Spring
-的事务是无法实现事务一致性(同时提交、同时回滚)的
-解决方法:可以通过编程式事务,或者通过分布式事务的思路:二阶段提交方式
-如何解决循环依赖
-
-
-- 一级缓存,缓存正常的 bean 实例
-- 二级缓存,缓存还未进行依赖注入和初始化方法调用的 bean 实例
-- 三级缓存,缓存 bean 实例的 ObjectFactory,用于解决 BeanPostProcessor
-代理类时正确地依赖注入
-
-
-循环依赖的情况下,不管使用三级缓存还是两级缓存,代理类逻辑都必须提前曝光
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0%
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/SpringMVC/2018120522281643.gif b/SpringMVC/2018120522281643.gif
deleted file mode 100644
index 8b47562..0000000
Binary files a/SpringMVC/2018120522281643.gif and /dev/null differ
diff --git a/SpringMVC/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5q2i5q2l5YmN6KGM,size_20,color_FFFFFF,t_70,g_se,x_16.png b/SpringMVC/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5q2i5q2l5YmN6KGM,size_20,color_FFFFFF,t_70,g_se,x_16.png
deleted file mode 100644
index 049b7f8..0000000
Binary files a/SpringMVC/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5q2i5q2l5YmN6KGM,size_20,color_FFFFFF,t_70,g_se,x_16.png and /dev/null differ
diff --git a/Transformers/index.html b/Transformers/index.html
index f16ea9a..d8a4a30 100644
--- a/Transformers/index.html
+++ b/Transformers/index.html
@@ -19,16 +19,16 @@
-
+
-
+
-
+
@@ -141,7 +141,7 @@
@@ -154,18 +154,18 @@
@@ -211,7 +211,7 @@
-
+
@@ -233,47 +233,50 @@
更新于
-
+
+ Transformers & NLP 相关库及实现
- NLP
-任务:情感分析、文本生成、命名体识别、阅读理解、掩码填充、文本摘要、机器翻译、特征提取、对话机器人
-万物之始 Transformer Attention is all you need
-
-
-
-- 直接将句子中任意两个单词的联系通过一个计算步骤直接联系起来,远距离依赖特征之间的距离被极大缩短,有利于有效地利用这些特征;
-- Self Attention 对于增加计算的并行性有直接帮助作用;
-
-Transformers及相关库
-Transformers:核心库,模型加载、模型训练、流水线并行等
-Tokenizer:分词器,对数据进行预处理,文本到token序列的互相转换。具体工作包括:分词、索引、填充截断、attention_mask、token_type
-Datasets:数据集库,提供了数据集的加载、处理等方法
-Evaluate:评估函数,提供各种评价指标的计算函数
-Trainer:将模型训练流程打包,包括:创建优化器、创建DataLoader、tensor转移到CUDA上
-PEFT:高效微调模型的库,提供了几种高效微调的方法,小参数量动大模型
-Accelerate:分布式训练,提供了分布式训练解决方案,包括大模型的加载与推理解决方案
-Optimum:优化加速库,支持多种后端,如Onnxruntime、OpenVino等
-Gradio:可视化部署库,几行代码快速实现基于Web交互的算法演示系统
-NLP
-NLP
-数据集大多是未标注的文档,因此采用自监督学习的方式训练模型,如预测下一个词
-LM、完形填空 MLM。
-早些年,流行的是词嵌入 Word
-Embedding,目标是采用向量的形式表示词元,采用一组向量表示一段话,可以用于计算词/句子相似度。
-现阶段,Transformer
-的出现促使三种类型的模型的出现:Encoder-only-only-Decoder。Encoder-only
-适用于机器翻译、句子分类、命名体识别和问答;Decoder-only
-适用于文本预测;Encoder-Decoder 适用于文本压缩。
+ NLP
+任务:情感分析、文本生成、命名体识别、阅读理解、掩码填充、文本摘要、机器翻译、特征提取、对话机器人
+万物之始 Transformer Attention is all you need
+
+
+
+- 直接将句子中任意两个单词的联系通过一个计算步骤直接联系起来,远距离依赖特征之间的距离被极大缩短,有利于有效地利用这些特征;
+- Self Attention 对于增加计算的并行性有直接帮助作用;
+
+Transformers及相关库
+Transformers:核心库,模型加载、模型训练、流水线并行等
+Tokenizer:分词器,对数据进行预处理,文本到token序列的互相转换。具体工作包括:分词、索引、填充截断、attention_mask、token_type
+Datasets:数据集库,提供了数据集的加载、处理等方法
+Evaluate:评估函数,提供各种评价指标的计算函数
+Trainer:将模型训练流程打包,包括:创建优化器、创建DataLoader、tensor转移到CUDA上
+PEFT:高效微调模型的库,提供了几种高效微调的方法,小参数量动大模型
+Accelerate:分布式训练,提供了分布式训练解决方案,包括大模型的加载与推理解决方案
+Optimum:优化加速库,支持多种后端,如Onnxruntime、OpenVino等
+Gradio:可视化部署库,几行代码快速实现基于Web交互的算法演示系统
+分布式训练
+Accelerate 包,融合了 Deepspeed、DDP、FSDP;
+NLP
+NLP
+数据集大多是未标注的文档,因此采用自监督学习的方式训练模型,如预测下一个词
+LM、完形填空 MLM。
+早些年,流行的是词嵌入 Word
+Embedding,目标是采用向量的形式表示词元,采用一组向量表示一段话,可以用于计算词/句子相似度。
+现阶段,Transformer
+的出现促使三种类型的模型的出现:Encoder-only-only-Decoder。Encoder-only
+适用于机器翻译、句子分类、命名体识别和问答;Decoder-only
+适用于文本预测;Encoder-Decoder 适用于文本压缩。
@@ -292,8 +295,8 @@ NLP
diff --git a/about/index.html b/about/index.html
index 4c03e1a..0b3c810 100644
--- a/about/index.html
+++ b/about/index.html
@@ -150,18 +150,18 @@
diff --git a/archives/2023/08/index.html b/archives/2023/08/index.html
index 6257174..9271fa5 100644
--- a/archives/2023/08/index.html
+++ b/archives/2023/08/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
- 还行! 目前共计 39 篇日志。 继续努力。
+ 还行! 目前共计 31 篇日志。 继续努力。
diff --git a/archives/2023/09/index.html b/archives/2023/09/index.html
index 976e2d1..2195b38 100644
--- a/archives/2023/09/index.html
+++ b/archives/2023/09/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
- 还行! 目前共计 39 篇日志。 继续努力。
+ 还行! 目前共计 31 篇日志。 继续努力。
diff --git a/archives/2023/10/index.html b/archives/2023/10/index.html
index 4bf74a7..2c6bf0f 100644
--- a/archives/2023/10/index.html
+++ b/archives/2023/10/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
- 还行! 目前共计 39 篇日志。 继续努力。
+ 还行! 目前共计 31 篇日志。 继续努力。
diff --git a/archives/2023/index.html b/archives/2023/index.html
index 7912013..09740f6 100644
--- a/archives/2023/index.html
+++ b/archives/2023/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
- 还行! 目前共计 39 篇日志。 继续努力。
+ 还行! 目前共计 31 篇日志。 继续努力。
diff --git a/archives/2024/01/index.html b/archives/2024/01/index.html
index 91a50c2..e4fbd4f 100644
--- a/archives/2024/01/index.html
+++ b/archives/2024/01/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
- 还行! 目前共计 39 篇日志。 继续努力。
+ 还行! 目前共计 31 篇日志。 继续努力。
diff --git a/archives/2024/03/index.html b/archives/2024/03/index.html
index 6aa7a15..8457e2a 100644
--- a/archives/2024/03/index.html
+++ b/archives/2024/03/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
- 还行! 目前共计 39 篇日志。 继续努力。
+ 还行! 目前共计 31 篇日志。 继续努力。
@@ -239,26 +239,6 @@ 闻
-
-
-
-
-
-
-
-
- SpringMVC
-
-
-
-
-
-
-
diff --git a/archives/2024/04/index.html b/archives/2024/04/index.html
index 0624b05..6e88b69 100644
--- a/archives/2024/04/index.html
+++ b/archives/2024/04/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
- 还行! 目前共计 39 篇日志。 继续努力。
+ 还行! 目前共计 31 篇日志。 继续努力。
@@ -199,26 +199,6 @@ 闻
2024
-
-
-
-
-
-
-
-
- MySQL
-
-
-
-
-
-
-
@@ -239,26 +219,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
@@ -299,66 +259,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Rpc 中间件
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Java 并发锁
-
-
-
-
-
-
-
@@ -399,26 +299,6 @@ 闻
-
-
-
-
-
-
-
-
- Java 并发基础
-
-
-
-
-
-
-
diff --git a/archives/2024/05/index.html b/archives/2024/05/index.html
index f97bca9..d73f691 100644
--- a/archives/2024/05/index.html
+++ b/archives/2024/05/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
- 还行! 目前共计 39 篇日志。 继续努力。
+ 还行! 目前共计 31 篇日志。 继续努力。
@@ -259,26 +259,6 @@ 闻
-
-
-
-
-
-
-
-
- Redis
-
-
-
-
-
-
-
diff --git a/archives/2024/06/index.html b/archives/2024/06/index.html
index 4c6c89c..0a76193 100644
--- a/archives/2024/06/index.html
+++ b/archives/2024/06/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
- 还行! 目前共计 39 篇日志。 继续努力。
+ 还行! 目前共计 31 篇日志。 继续努力。
@@ -230,7 +230,7 @@ 闻
diff --git a/archives/2024/07/index.html b/archives/2024/07/index.html
index 05e4b9e..17125d4 100644
--- a/archives/2024/07/index.html
+++ b/archives/2024/07/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
- 还行! 目前共计 39 篇日志。 继续努力。
+ 还行! 目前共计 31 篇日志。 继续努力。
@@ -199,26 +199,6 @@ 闻
2024
-
-
-
-
-
-
-
-
- LLM-Finetune
-
-
-
-
-
-
-
diff --git a/archives/2024/02/index.html b/archives/2024/08/index.html
similarity index 87%
rename from archives/2024/02/index.html
rename to archives/2024/08/index.html
index 868e602..9324506 100644
--- a/archives/2024/02/index.html
+++ b/archives/2024/08/index.html
@@ -22,7 +22,7 @@
-
+
@@ -30,11 +30,11 @@
-
+
-
+
归档 | 闻
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
- 还行! 目前共计 39 篇日志。 继续努力。
+ 还行! 目前共计 31 篇日志。 继续努力。
@@ -203,15 +203,15 @@ 闻
@@ -223,15 +223,15 @@ 闻
@@ -243,15 +243,35 @@ 闻
-
- Spring
+
+ LLM
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/archives/2024/index.html b/archives/2024/index.html
index 7eb55db..24f10da 100644
--- a/archives/2024/index.html
+++ b/archives/2024/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
- 还行! 目前共计 39 篇日志。 继续努力。
+ 还行! 目前共计 31 篇日志。 继续努力。
@@ -203,15 +203,75 @@ 闻
+
+
+
+
+
+
+
+
+
+
+
+
+
+ [paper]PAFT
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LLM
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -330,7 +390,7 @@ 闻
@@ -399,46 +459,6 @@ 闻
-
-
-
-
-
-
-
-
- Redis
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- MySQL
-
-
-
-
-
-
-
@@ -459,26 +479,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
@@ -523,15 +523,15 @@ 闻
@@ -543,15 +543,15 @@ 闻
@@ -563,15 +563,15 @@ 闻
@@ -583,15 +583,15 @@ 闻
diff --git a/archives/2024/page/2/index.html b/archives/2024/page/2/index.html
index daaf36e..313de5b 100644
--- a/archives/2024/page/2/index.html
+++ b/archives/2024/page/2/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
- 还行! 目前共计 39 篇日志。 继续努力。
+ 还行! 目前共计 31 篇日志。 继续努力。
@@ -199,166 +199,6 @@ 闻
2024
-
-
-
-
-
-
-
-
- 实习笔试题汇总
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Java 并发基础
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 计算机网络
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 数据结构和算法
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- SpringMVC
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- JVM 虚拟机
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Java 语言
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Spring
-
-
-
-
-
-
-
diff --git a/archives/index.html b/archives/index.html
index 88675c4..0cd365d 100644
--- a/archives/index.html
+++ b/archives/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
- 还行! 目前共计 39 篇日志。 继续努力。
+ 还行! 目前共计 31 篇日志。 继续努力。
@@ -203,15 +203,75 @@ 闻
+
+
+
+
+
+
+
+
+
+
+
+
+
+ [paper]PAFT
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LLM
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -330,7 +390,7 @@ 闻
@@ -399,46 +459,6 @@ 闻
-
-
-
-
-
-
-
-
- Redis
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- MySQL
-
-
-
-
-
-
-
@@ -459,26 +479,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
@@ -523,15 +523,15 @@ 闻
@@ -543,15 +543,15 @@ 闻
@@ -563,15 +563,15 @@ 闻
@@ -583,15 +583,15 @@ 闻
diff --git a/archives/page/2/index.html b/archives/page/2/index.html
index 10583b7..5222bff 100644
--- a/archives/page/2/index.html
+++ b/archives/page/2/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
- 还行! 目前共计 39 篇日志。 继续努力。
+ 还行! 目前共计 31 篇日志。 继续努力。
@@ -199,166 +199,6 @@ 闻
2024
-
-
-
-
-
-
-
-
- 实习笔试题汇总
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Java 并发基础
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 计算机网络
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 数据结构和算法
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- SpringMVC
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- JVM 虚拟机
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Java 语言
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Spring
-
-
-
-
-
-
-
diff --git "a/categories/Java\345\237\272\347\241\200/index.html" "b/categories/Java\345\237\272\347\241\200/index.html"
index a501ef4..493b5a1 100644
--- "a/categories/Java\345\237\272\347\241\200/index.html"
+++ "b/categories/Java\345\237\272\347\241\200/index.html"
@@ -149,18 +149,18 @@
@@ -220,126 +220,6 @@ Java基础
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Java 并发锁
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Java 并发基础
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- JVM 虚拟机
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Java 语言
-
-
-
-
-
-
-
diff --git "a/categories/LLM\345\272\224\347\224\250\345\274\200\345\217\221/index.html" "b/categories/LLM\345\272\224\347\224\250\345\274\200\345\217\221/index.html"
index 3b556a3..015e906 100644
--- "a/categories/LLM\345\272\224\347\224\250\345\274\200\345\217\221/index.html"
+++ "b/categories/LLM\345\272\224\347\224\250\345\274\200\345\217\221/index.html"
@@ -149,18 +149,18 @@
diff --git "a/categories/LLM\345\276\256\350\260\203/index.html" "b/categories/LLM\345\276\256\350\260\203/index.html"
index fa7a49f..fad893a 100644
--- "a/categories/LLM\345\276\256\350\260\203/index.html"
+++ "b/categories/LLM\345\276\256\350\260\203/index.html"
@@ -149,18 +149,18 @@
diff --git a/categories/index.html b/categories/index.html
index 9e42c33..906e2d3 100644
--- a/categories/index.html
+++ b/categories/index.html
@@ -150,18 +150,18 @@
@@ -202,10 +202,10 @@ categories
- 目前共计 12 个分类
+ 目前共计 11 个分类
diff --git a/tags/Spring/index.html b/categories/paper/index.html
similarity index 92%
rename from tags/Spring/index.html
rename to categories/paper/index.html
index 47e155e..733a113 100644
--- a/tags/Spring/index.html
+++ b/categories/paper/index.html
@@ -22,7 +22,7 @@
-
+
@@ -30,14 +30,14 @@
-
+
-
+
-标签: Spring | 闻
+分类: paper | 闻
@@ -149,18 +149,18 @@
@@ -181,7 +181,7 @@
-
+
@@ -190,8 +190,8 @@
- Spring
- 标签
+ paper
+ 分类
@@ -204,15 +204,15 @@ Spring
diff --git "a/categories/\345\205\253\350\202\241\346\226\207/index.html" "b/categories/\345\205\253\350\202\241\346\226\207/index.html"
index 975aca2..0e49e9a 100644
--- "a/categories/\345\205\253\350\202\241\346\226\207/index.html"
+++ "b/categories/\345\205\253\350\202\241\346\226\207/index.html"
@@ -149,18 +149,18 @@
diff --git "a/categories/\345\267\245\344\275\234/index.html" "b/categories/\345\267\245\344\275\234/index.html"
index 85b3535..1399c07 100644
--- "a/categories/\345\267\245\344\275\234/index.html"
+++ "b/categories/\345\267\245\344\275\234/index.html"
@@ -149,18 +149,18 @@
diff --git "a/categories/\345\267\245\344\275\234/\346\200\235\350\200\203/index.html" "b/categories/\345\267\245\344\275\234/\346\200\235\350\200\203/index.html"
index 5627b7a..d9dd295 100644
--- "a/categories/\345\267\245\344\275\234/\346\200\235\350\200\203/index.html"
+++ "b/categories/\345\267\245\344\275\234/\346\200\235\350\200\203/index.html"
@@ -149,18 +149,18 @@
diff --git "a/categories/\345\274\200\345\217\221\345\267\245\345\205\267/index.html" "b/categories/\345\274\200\345\217\221\345\267\245\345\205\267/index.html"
index d003ed9..2b8df20 100644
--- "a/categories/\345\274\200\345\217\221\345\267\245\345\205\267/index.html"
+++ "b/categories/\345\274\200\345\217\221\345\267\245\345\205\267/index.html"
@@ -149,18 +149,18 @@
@@ -200,6 +200,26 @@ 开发工具
2024
+
+
+
+
+
+
+
+
+ Linux-Tool
+
+
+
+
+
+
+
@@ -211,7 +231,7 @@ 开发工具
diff --git "a/categories/\346\200\235\350\200\203/index.html" "b/categories/\346\200\235\350\200\203/index.html"
index b8a4227..c802f3c 100644
--- "a/categories/\346\200\235\350\200\203/index.html"
+++ "b/categories/\346\200\235\350\200\203/index.html"
@@ -149,18 +149,18 @@
diff --git "a/categories/\346\225\260\346\215\256\345\272\223/index.html" "b/categories/\346\225\260\346\215\256\345\272\223/index.html"
deleted file mode 100644
index 210c02d..0000000
--- "a/categories/\346\225\260\346\215\256\345\272\223/index.html"
+++ /dev/null
@@ -1,307 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-分类: 数据库 | 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 闻
-
-
- Yesterday is history, tomorrow is a mystery but today is a gift.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0%
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git "a/categories/\347\247\221\347\240\224/index.html" "b/categories/\347\247\221\347\240\224/index.html"
index 270149e..ed285c0 100644
--- "a/categories/\347\247\221\347\240\224/index.html"
+++ "b/categories/\347\247\221\347\240\224/index.html"
@@ -149,18 +149,18 @@
diff --git "a/categories/\347\256\227\346\263\225/index.html" "b/categories/\347\256\227\346\263\225/index.html"
index 5337f0e..b429489 100644
--- "a/categories/\347\256\227\346\263\225/index.html"
+++ "b/categories/\347\256\227\346\263\225/index.html"
@@ -149,18 +149,18 @@
diff --git a/index.html b/index.html
index 5f8440c..4658d71 100644
--- a/index.html
+++ b/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- LLM-Finetune
+ Linux-Tool
@@ -219,15 +219,18 @@
发表于
+
-
+
-
+
- 更新于
-
+ 分类于
+
+ 开发工具
+
@@ -240,10 +243,10 @@
- 大模型微调具体实现方法,包括数据预处理、数据加载、微调模型构建、模型训练、加速训练方法、保存微调结果、加载 Adapter、推理测评、可交互 Cli等
+ Linux高效工具的使用方法
@@ -274,7 +277,7 @@
-
+
@@ -292,7 +295,7 @@
- Transformers 使用入门
+ [paper]PAFT
@@ -303,14 +306,23 @@
发表于
-
+
更新于
-
+
+
+
+
+
+
+ 分类于
+
+ paper
+
@@ -323,36 +335,15 @@
- NLP
-任务:情感分析、文本生成、命名体识别、阅读理解、掩码填充、文本摘要、机器翻译、特征提取、对话机器人
-万物之始 Transformer Attention is all you need
-
-
-
-- 直接将句子中任意两个单词的联系通过一个计算步骤直接联系起来,远距离依赖特征之间的距离被极大缩短,有利于有效地利用这些特征;
-- Self Attention 对于增加计算的并行性有直接帮助作用;
-
-Transformers及相关库
-Transformers:核心库,模型加载、模型训练、流水线并行等
-Tokenizer:分词器,对数据进行预处理,文本到token序列的互相转换。具体工作包括:分词、索引、填充截断、attention_mask、token_type
-Datasets:数据集库,提供了数据集的加载、处理等方法
-Evaluate:评估函数,提供各种评价指标的计算函数
-Trainer:将模型训练流程打包,包括:创建优化器、创建DataLoader、tensor转移到CUDA上
-PEFT:高效微调模型的库,提供了几种高效微调的方法,小参数量动大模型
-Accelerate:分布式训练,提供了分布式训练解决方案,包括大模型的加载与推理解决方案
-Optimum:优化加速库,支持多种后端,如Onnxruntime、OpenVino等
-Gradio:可视化部署库,几行代码快速实现基于Web交互的算法演示系统
-NLP
-NLP
-数据集大多是未标注的文档,因此采用自监督学习的方式训练模型,如预测下一个词
-LM、完形填空 MLM。
-早些年,流行的是词嵌入 Word
-Embedding,目标是采用向量的形式表示词元,采用一组向量表示一段话,可以用于计算词/句子相似度。
-现阶段,Transformer
-的出现促使三种类型的模型的出现:Encoder-only-only-Decoder。Encoder-only
-适用于机器翻译、句子分类、命名体识别和问答;Decoder-only
-适用于文本预测;Encoder-Decoder 适用于文本压缩。
-
+ RAFT:Adapting Language Model to Domain Specific RAG 提出了检索增强微调(Retrieval Augmented Fine Tuning)方法,微调模型使其学习“如何忽略任何检索到的、无助于回答给定问题的文档,且不产生幻觉”,使 LLM 具有特定于域的 RAG 功能
+
+
+
+ 阅读全文 »
+
+
+
+
@@ -378,7 +369,7 @@ NLP
-
+
@@ -396,7 +387,7 @@ NLP
- 大模型微调方法
+ LLM
@@ -406,24 +397,9 @@
发表于
+
-
-
-
-
-
-
- 更新于
-
-
-
-
-
-
- 分类于
-
- LLM微调
-
+
@@ -436,15 +412,14 @@
- 微调的理论基础,总结了至今为止较优的参数高效微调(Parameter-Efficient Fine-Tuning)的方法和低精度微调量化
-
-
-
- 阅读全文 »
-
-
-
-
+
+大模型核心技术点在于训练资源、数据清洗和数据配比等,其难点或许不在于模型训练和模型结构搭建
+
+前缀语言模型 Encoder-Decoder
+ChatGLM
+掩码语言模型 自编码模型 Encoder-Only
+因果语言模型 自回归模型 Decoder-Only
+
@@ -470,7 +445,7 @@
-
+
@@ -488,7 +463,7 @@
- 实习日志
+ LLM-RLHF
@@ -498,24 +473,9 @@
发表于
+
-
-
-
-
-
-
- 更新于
-
-
-
-
-
-
- 分类于
-
- 工作
-
+
@@ -528,10 +488,10 @@
- 写周报给自己看!哈哈哈
+ LLM人工对齐算法
@@ -562,7 +522,7 @@
-
+
@@ -580,7 +540,7 @@
- 如何工作
+ Transformers 使用入门
@@ -590,22 +550,15 @@
发表于
-
-
+
-
+
- 分类于
-
- 工作
-
- ,
-
- 思考
-
+ 更新于
+
@@ -618,10 +571,10 @@
- 工作与学习不同,不只是“唯分数论”,更要妥善处理人际关系、高效沟通等等。这并不是什么高大上的真理,而是和吃饭喝水一样普通的事情。
+ Transformers & NLP 相关库及实现
@@ -652,7 +605,7 @@
-
+
@@ -670,7 +623,7 @@
- 机器学习基础
+ 大模型微调方法
@@ -681,14 +634,23 @@
发表于
-
+
更新于
-
+
+
+
+
+
+
+ 分类于
+
+ LLM微调
+
@@ -701,10 +663,10 @@
- 机器学习是采用真实世界中采样的一小部分数据,并且希望模型能够对于未知数据有不错的泛化性能。
+ 微调的理论基础,总结了至今为止较优的参数高效微调(Parameter-Efficient Fine-Tuning)的方法和低精度微调量化
@@ -735,7 +697,7 @@
-
+
@@ -753,7 +715,7 @@
- Docker
+ 实习日志
@@ -764,14 +726,14 @@
发表于
-
+
更新于
-
+
@@ -779,7 +741,7 @@
分类于
- 开发工具
+ 工作
@@ -793,10 +755,10 @@
- 容器虚拟化技术,后续进一步学习 k8s
+ 写周报给自己看!哈哈哈
@@ -827,7 +789,7 @@
-
+
@@ -845,7 +807,7 @@
- 设计模式
+ 如何工作
@@ -855,15 +817,9 @@
发表于
+
-
-
-
-
-
-
- 更新于
-
+
@@ -871,7 +827,11 @@
分类于
- Java基础
+ 工作
+
+ ,
+
+ 思考
@@ -885,10 +845,10 @@
- 设计模式与其具体实现
+ 工作与学习不同,不只是“唯分数论”,更要妥善处理人际关系、高效沟通等等。这并不是什么高大上的真理,而是和吃饭喝水一样普通的事情。
@@ -919,7 +879,7 @@
-
+
@@ -937,7 +897,7 @@
- 模拟面试题
+ 机器学习基础
@@ -948,23 +908,14 @@
发表于
-
+
更新于
-
-
-
-
-
-
- 分类于
-
- 工作
-
+
@@ -977,10 +928,10 @@
- 汇总记录面试题,方便复习和面试模拟
+ 机器学习是采用真实世界中采样的一小部分数据,并且希望模型能够对于未知数据有不错的泛化性能。
@@ -1011,7 +962,7 @@
-
+
@@ -1029,7 +980,7 @@
- 操作系统
+ Docker
@@ -1040,14 +991,14 @@
发表于
-
+
更新于
-
+
@@ -1055,7 +1006,7 @@
分类于
- 八股文
+ 开发工具
@@ -1069,10 +1020,10 @@
- 待进一步学习
+ 容器虚拟化技术,待后续进一步学习 k8s
diff --git a/os/index.html b/os/index.html
index 1246028..da50706 100644
--- a/os/index.html
+++ b/os/index.html
@@ -156,18 +156,18 @@
@@ -264,8 +264,8 @@ 虚拟内存
只会访问虚拟内存地址,在操作总线前,通过一个地址转换硬件将虚拟内存地址转换为物理内存地址
进程隔离:将虚拟内存映射到物理内存,进程之间的地址空间相互隔离,互不干扰
虚拟内存空间:
-
-
+
+
用户态虚拟内存空间是相互隔离相互独立的;内核虚拟内存空间是各个进程共享的;
进程管理
数据结构 PCB
@@ -345,8 +345,8 @@ I/O 多路复用
diff --git a/page/2/index.html b/page/2/index.html
index 83089c0..0a32feb 100644
--- a/page/2/index.html
+++ b/page/2/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- Redis
+ 设计模式
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 数据库
+ Java基础
@@ -249,10 +249,10 @@
- Redis 基础
+ 项目架构的设计模式,和Java开发中的具体实现
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- MySQL
+ 模拟面试题
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- 数据库
+ 工作
@@ -341,10 +341,10 @@
- MySQL 基础,包括索引、事务、锁、日志、BufferPool等
+ 汇总记录面试题,方便复习和面试模拟
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 如何保持专注
+ 操作系统
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 思考
+ 八股文
@@ -433,10 +433,10 @@
- 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
+ 待进一步学习
@@ -467,7 +467,7 @@
-
+
@@ -485,7 +485,7 @@
- Java 常用数据结构的底层实现
+ 如何保持专注
@@ -496,14 +496,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +511,7 @@
分类于
- Java基础
+ 思考
@@ -525,10 +525,10 @@
- ArrayList、LinkedList、HashMap、ConcurrentHashMap 的底层源码剖析
+ 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
@@ -687,7 +687,7 @@
更新于
-
+
@@ -743,7 +743,7 @@
-
+
@@ -761,7 +761,7 @@
- ThreadPoolExecutor 和 CompletableFuture 实践
+ 实习面试题汇总
@@ -772,14 +772,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +787,7 @@
分类于
- Java基础
+ 工作
@@ -801,10 +801,10 @@
- 线程池的创建、使用方法,以及如何正确构造有父子关系、先后关系、与或关系的多线程并发场景。
+ 2024 实习投递面试题目汇总
@@ -835,7 +835,7 @@
-
+
@@ -853,7 +853,7 @@
- Rpc 中间件
+ 实习笔试题汇总
@@ -864,14 +864,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +879,7 @@
分类于
- Java开发
+ 工作
@@ -893,10 +893,10 @@
- Rpc 框架搭建过程遇到的问题、Dubbo 使用过程遇到的问题
+ 2024 实习投递笔试题目汇总
@@ -927,7 +927,7 @@
-
+
@@ -945,7 +945,7 @@
- Java 并发锁
+ 计算机网络
@@ -956,14 +956,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +971,7 @@
分类于
- Java基础
+ 八股文
@@ -985,15 +985,10 @@
- Java.util.concurrent 中有很多 Java 并发相关工具,例如 锁
-ReentrantLock
、线程 Callable
-FutureTask
、信号量 Semaphore
、共享锁
-CountDownLatch
-此外 Java 原生的 volatile
和 synchronized
-关键字也是并发编程的关键。
+ 如果我是一串电信号,我要去向何方呢?
@@ -1024,7 +1019,7 @@
-
+
@@ -1042,7 +1037,7 @@
- 实习面试题汇总
+ 数据结构和算法
@@ -1053,14 +1048,14 @@
发表于
-
+
更新于
-
+
@@ -1068,7 +1063,7 @@
分类于
- 工作
+ 算法
@@ -1082,10 +1077,10 @@
- 2024 实习投递面试题目汇总
+ 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
diff --git a/page/3/index.html b/page/3/index.html
index 85715e6..da7cbd9 100644
--- a/page/3/index.html
+++ b/page/3/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- 实习笔试题汇总
+ Git 文档阅读
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 工作
+ 开发工具
@@ -249,10 +249,10 @@
- 2024 实习投递笔试题目汇总
+ Git 文档阅读笔记和常用命令集合
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- Java 并发基础
+ ESConv
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- Java基础
+ 科研
@@ -341,10 +341,10 @@
- JMM、ThreadLocal
+ Title: Towards Emotional Support Dialog Systems
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 计算机网络
+ BlenderBot
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 八股文
+ 科研
@@ -433,10 +433,14 @@
- 如果我是一串电信号,我要去向何方呢?
+ Title: Recipes for building an open-domain
+chatbot
+
+FaceBook 在本文中提出了 BlenderBot 编解码器模型
+
@@ -467,7 +471,7 @@
-
+
@@ -485,7 +489,7 @@
- 数据结构和算法
+ MISC
@@ -496,14 +500,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +515,7 @@
分类于
- 算法
+ 科研
@@ -525,10 +529,12 @@
- 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
+ Title: A MIxed Strategy-Aware Model Integrating
+COMET for Emotional Support Conversation
+
@@ -559,7 +565,7 @@
-
+
@@ -577,7 +583,7 @@
- SpringMVC
+ KEMI
@@ -588,14 +594,14 @@
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+- 在 Encoder 和 Decoder 之间加了一层 GCNConv 和 RGCNConv
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
闻
- - -Yesterday is history, tomorrow is a mystery but today is a gift.
-- Java 并发锁 -
- -Java.util.concurrent 中有很多 Java 并发相关工具,例如 锁
-ReentrantLock
、线程 Callable
-FutureTask
、信号量 Semaphore
、共享锁
-CountDownLatch
此外 Java 原生的 volatile
和 synchronized
-关键字也是并发编程的关键。
简单的 CAS 实现:AtomicInteger.compareAndSet(1, 2)
synchronized 关键字
-属性:可重入锁、独占锁、非公平锁
-每个对象都有一个 monitor
-对象于之关联,synchronized
通过对象监视器
-monitor
和操作系统的 Mutex Lock
-实现加锁和解锁,被锁住的区域是临界区
:临界区内被锁保护,线程间只能串行访问的代码;
作用域:
--
-
- 修饰实例方法,锁当前对象实例。
-
-
-
- 修饰的方法在编译成字节码的时候,在 flag 上标记 ACC_SYNCHRONIZED -
- - 修饰静态方法,锁当前类,会作用于所有实例。 -
- 修饰同步语句块,程序指定 Object / .class。
-
-
-
- 通过 monitorenter 和 monitorexit 指令实现 -
-
锁粗化和锁消除:
--
-
- 锁粗化:将多次锁请求合并成一个请求,以降低短时间内大量锁请求、同步、释放带来的性能损耗 -
- 锁消除:Java 虚拟机在 JIT -编译时,通过对运行上下文的扫描,去除不可能存在共享资源竞争的锁,通过锁消除,可以节省毫无意义的请求锁时间 -
--.java -> .class 字节码:Javac
-字节码 -> 机器码:JIT(Just-in-time)动态(即时)编译;AOT(Ahead -Of Time)运行前编译
-
锁升级策略
--
-
偏向锁:只有一个线程持有锁,无竞争情况时,线程可以直接获得锁,没有额外的开销。CAS -修改 Markword 头信息,该操作一般不会撤销,以避免 CAS 开销。
-轻量级锁:多个线程都是在不同的时间段来请求同一把锁时,JVM -会使用轻量级锁:通过 CAS -尝试获取锁,不阻塞线程。如果竞争失败直接会升级成重量级锁,升级过程会自旋尝试获取锁。
-重量级锁:加锁的过程中,采用自适应自旋,避免直接阻塞线程。自旋失败才会阻塞线程并入队,阻塞操作
LockSupport.park
由操作系统来实现,性能消耗高。唤醒线程的策略见下图:(waitset -环形双向链表;cxq 栈;entrylist 双向链表)
-
下图是对象头中的 MarkWord:MarkWord -结构之所以搞得这么复杂,是因为需要节省内存,让同一个内存区域在不同阶段有不同的用处(图有误,hashcode -占 32 位)
--
-
- 指向线程栈中锁记录的指针 = 持有锁线程的 lockRecord 的指针 -
- 指向重量级锁的指针 = 指向 monitor 的指针 -
ReentrantLock
-属性:可重入锁、独占锁、公平锁 or 非公平锁
-特点:可限时等待、可响应中断、可实现选择性通知
-使用场景:阻塞队列 ArrayBlockingQueue
-LinkedBlockingDeque
通过 Condition
-实现队列满插入和队列空取出的阻塞;作为读写锁
-ReentrantReadWriteLock
的父类
源码结构:
-public class ReentrantLock implements Lock { |
ReentrantLock
独占锁运行过程(可重入锁的
-state
表示==重入的次数==,会大于1)
加锁失败时阻塞
-ReentrantLock
在 CAS 加锁失败之后会将 Thread
-封装成一个Node
类型的对象加入CLH
队列中
然后调用LockSupport.park(this)
进行阻塞(LockSupport
是一个
-native 方法实现的工具类,在 hotspot
-源码中通过mutex
来实现的)
与 synchronized 对比
-比较 | -ReentrantLock | -synchronized | -
---|---|---|
如何实现任务的等待-唤醒? | -Condition 类
-await/signal ,可以有选择性的进行线程通知 |
-Object 的 wait/notify ,被通知的线程是由 JVM 选择的 |
-
如何释放锁? | -需要手动释放锁 | -出代码块后自动释放 | -
底层如何实现? | -API 实现 | -JVM 内部锁升级策略 | -
是否可实现可中断锁、公平锁? | -可以 | -不可以 | -
占用资源大不大? | -通过自旋CAS 和Unsafe.park/unpark 挂起唤醒线程 |
-锁升级策略:轻量级锁CAS 不会阻塞挂起;重量级锁才会和ReentrantLock 一样park/unpark |
-
可中断锁:获取锁的过程中可以被中断,不需要一直等到获取锁之后才能进行其他逻辑处理。
-不可中断锁:一旦线程申请了锁,就只能等到拿到锁以后才能进行其他的逻辑处理。
-AbstractQueuedSynchronizer -抽象类
-ReentrantLock、倒计时器、信号量的 Sync 和线程池的 worker 都是基于 AQS
-实现的。AQS
-封装了线程的入队与出队、状态更新以及阻塞与唤醒等底层细节,通过重写tryAcquire(int)
、tryRelease(int)
等方法,实现类可以实现具体的资源控制逻辑。
AQS -核心思想:如果被请求的共享资源空闲,则将当前请求资源的线程设置为有效的工作线程,并且将共享资源设置为锁定状态。如果被请求的共享资源被占用,通过 -CLH 锁实现线程阻塞等待以及被唤醒时锁分配。
-CLH 锁:自旋锁的一种改进,利用 ==FIFO 双端队列== 和 ==Node 节点== -维护等待获取资源的线程队列,==state -成员变量==表示同步状态,每个节点中包括了线程的引用、 -当前节点在队列中的状态、前驱节点和后继节点。
-源码结构:
-public abstract class AbstractQueuedSynchronizer extends AbstractOwnableSynchronizer { |
-
-
- waitStatus 状态枚举值(初始值为 0,表示初始化状态)【使用情况】
-
-
-
CANCELLED
表示线程已经被取消【响应中断】
-SIGNAL
表示后继节点的线程需要被唤醒【同步队列】
-CONDITION
-表示线程在条件队列中等待某个条件满足【条件队列】
-PROPAGATE
表示共享模式下的资源传播【共享锁】
-
-
实现类可以是独占锁或者共享锁
--
-
- 独占锁:tryAcquire-tryRelease -
- 共享锁:tryAcquireShared-tryReleaseShared -
线程调度逻辑: -当线程尝试获取资源失败时,会创建一个==Node节点==并将当前线程包装进去,然后利用==CAS算法==将其安全地加入到==等待队列的尾部==,并阻塞。Link
- - -在释放资源时,AQS会根据资源管理策略从队列中选择合适的节点并唤醒对应线程。
-CLH 锁
---Craig, Landin, and Hagersten locks -实现线程阻塞等待以及被唤醒时锁分配的机制
-
CLH 锁是对自旋锁的一种改良,是一种隐式的链表队列
- -采用模板方法设计模式
-模板方法:抽象出步骤的执行顺序作为抽象方法,具体的实现方法交给子类实现。
-自定义 Synchronizer
时需要重写几个 AQS
-提供的钩子方法(通过钩子方法控制 state
-为何值时代表加锁成功/失败、解锁成功/失败):tryAcquire-tryRelease、tryAcquireShared-tryReleaseShared、isHeldExclusively
-
-
- 解释一下信号量、倒计时器、可重入锁的 state 的含义 -
LockSupport 类
-操作 Node 中的 thread,实现线程的阻塞 park
和解除阻塞
-unpark
。Link
具体来说,操作”许可“(多次 unpark
-也只能获取一次许可,不可叠加),底层通过mutex
(互斥量)和condition
(条件变量)实现。【mutex
存在用户态和内核态的切换】
---
-- - -- - - - - -Java 线程中断方法 -方法意义 -- -- Thread.currentThread().interrupt()
将线程的状态置为"中断" -- -- Thread.interrupted()
获取当前线程的中断状态,并且会清除线程的状态标记,静态方法 -- - -- Thread.isInterrupted()
获取调用该方法的对象所表示的线程,不会清除线程的状态标记,实例方法阻塞和中断的区别? -阻塞和中断的区别?
-
Lock 接口
-方法 | -描述 | -
---|---|
lock(): void | -加锁(ReentrantLock 默认不可响应中断) | -
lockInterruptibly(): void | -加锁,阻塞等待锁的过程中,可以相应中断 | -
tryLock(): boolean | -非阻塞获取锁 | -
tryLock(long, TimeUnit): boolean | -时间段内获取锁 | -
unlock(): void | -解锁 | -
newCondition(): Condition | -获取条件等待队列 | -
公平锁 & 非公平锁
-AbstractQueuedSynchronizer.hasQueuedPredecessors()
-线程在获取锁前,先判断一下自己在不在队列的首位,只有队首线程能被运行
ReentrantReadWriteLock
-继承自 ReentrantLock
-读锁是共享锁,写锁是独占锁;读读不互斥、读写互斥、写写互斥;写锁可以升级成读锁
--
-
- 共享锁:一把锁可以被多个线程同时获得。 -
- 独占锁:一把锁只能被一个线程获得。 -
StampedLock
-不是直接实现 Lock
或
-ReadWriteLock
接口,而是基于 CLH 锁
-实现的
Semaphore
-信号量,可选择公平 / 非公平锁。
-控制同时访问特定资源的线程数量,通常用于那些资源有明确访问数量限制的场景,比如限流(仅限于单机模式,实际项目中推荐使用 -Redis +Lua 来做限流)
-CountDownLatch
-倒计时器:await()
阻塞当前线程,当
-count
为零(即 state)时,唤醒所有被阻塞的线程。
CountDownLatch
-是一次性的,计数器的值只能在构造方法中初始化一次,之后没有任何机制再次对其设置值,当
-CountDownLatch
使用完毕后,它不能再次被使用
CyclicBarrier
-循环栅栏:让==一组线程==到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程都会继续干活。
- -闻
- - -Yesterday is history, tomorrow is a mystery but today is a gift.
-- ThreadPoolExecutor 和 CompletableFuture 实践 -
- -池化思想,维护一个池子,减少创建/销毁的开销,合理分配系统资源,但会增加调度开销。参考美团技术博客:底层设计思想、业务实现
-ThreadPoolExecutor -线程池实现类
-执行流程图
- -线程池生命周期
- -任务调度流程
-所有任务的调度都是由execute方法完成的,这部分完成的工作是:检查现在线程池的运行状态、运行线程数、运行策略,决定接下来执行的流程,是直接申请线程执行,或是缓冲到队列中执行,亦或是直接拒绝该任务。其执行过程如下:
--
-
- 首先检测线程池运行状态,如果不是
RUNNING
,则直接拒绝,线程池要保证在RUNNING的状态下执行任务。
- - 如果
workerCount < corePoolSize
,则创建并启动一个线程来执行新提交的任务。
- - 如果
workerCount >= corePoolSize,且线程池内的阻塞队列未满
,则将任务添加到该阻塞队列中。
- - 如果
workerCount >= corePoolSize && workerCount < maximumPoolSize,且线程池内的阻塞队列已满
,则创建并启动一个线程来执行新提交的任务。
- - 如果
workerCount >= maximumPoolSize,并且线程池内的阻塞队列已满
, -则根据拒绝策略来处理该任务, 默认的处理方式是直接抛异常。
-
底层结构
-ThreadPoolExecutor 构造函数
-public ThreadPoolExecutor( |
核心线程数:CPU 密集型任务(N+1) I/O 密集型任务(2N) CPU 核心数 N
-阻塞队列 BlockingQueue
- -阻塞队列中保存即将运行的任务,BlockingQueue 与 Queue -的主要区别是:
--
-
- 通过在入队和出队时进行加锁,保证了队列线程安全 -
- 支持阻塞的入队和出队方法:当队列满时,会阻塞入队的线程,直到队列不满;当队列为空时,会阻塞出队的线程,直到队列中有元素。 -
底层实现
--
-
- 采用 ReentrantLock 同步队列实现加锁解锁、阻塞释放 -
- 队列为空或已满的情况,采用条件队列 Condition -
阻塞队列 | -描述 | -
---|---|
ArrayBlockingQueue | -有界队列 | -
LinkedBlockingQueue | -不设置大小的话,默认无界队列 | -
SynchronousQueue | -如果有空闲线程,则使用空闲线程来处理;否则新建一个线程来处理任务 | -
DelayedWorkQueue | -内部元素并不是按照放入的时间排序,而是会按照延迟的时间长短对任务进行排序 | -
PriorityBlockingQueue | -优先级阻塞队列 | -
创建线程工厂类 ThreadFactory
---参数可以设定线程名
-
-
-
- java rt包:原生 ThreadFactory 类 -
- hutool: ThreadFactoryBuilder -
- google guava.jar: ThreadFactoryBuilder -
自定义线程工厂
-public static class testThreadPoolFactory implements ThreadFactory { |
任务拒绝策略
---在使用线程池并且使用有界队列的时候,如果队列满了,任务添加到线程池的时候就会拒绝,具体的拒绝策略可以设定
-
拒绝策略 | -描述 | -
---|---|
AbortPolicy | -线程池队列满了丢掉这个任务并且抛出 RejectedExecutionException -异常 | -
DiscardPolicy | -如果线程池队列满了,会直接丢掉这个任务并且不会有任何异常 | -
DiscardOldestPolicy | -如果队列满了,会将最早进入队列的任务删掉腾出空间,再尝试加入队列 | -
CallerRunsPolicy | -如果添加到线程池失败,那么主线程会自己去执行该任务 | -
自定义拒绝策略
-public class MyRejectPolicy implements RejectedExecutionHandler{ |
线程池实现接口
- -ExecutorService接口:(1)扩充执行任务的能力,补充可以为一个或一批异步任务生成 -Future -的方法;(2)提供了管控线程池的方法,比如停止线程池的运行。
-public interface ExecutorService extends Executor { |
顶层接口 Executor
-:==将任务提交和任务执行进行解耦==。用户无需关注如何创建线程,如何调度线程来执行任务,用户只需提供Runnable对象,将任务的运行逻辑提交到执行器(Executor)中,由Executor框架完成线程的调配和任务的执行部分。
-public interface Executor {
// 在未来的某个时间执行 command (方法用于提交不需要返回值的任务,所以无法判断任务是否被线程池执行成功与否)
void execute(Runnable command);
}
Executors 线程池工厂类
-FixedThreadPool 固定线程数
-运行中的 FixedThreadPool(未执行 shutdown()或 -shutdownNow())不会拒绝任务,在任务比较多的时候会导致 -OOM(内存溢出)
-public static ExecutorService newFixedThreadPool(int nThreads) { |
SingleThreadExecutor -只有一个线程的线程池(FixedThreadPool 的特例)
-CachedThreadPool 根据需要创建新线程的线程池
- -CompletableFuture -异步执行结果类
---RxJava、Reactor 比 CompletableFuture -增加了操作融合、延迟执行、回压等特性
-
CompletableFuture实现 Future、CompletionStage 接口。
--
-
- Future
-表示异步计算的结果,可以通过
Future
-类获取到耗时任务的执行结果
- - CompletionStage -用于表示异步执行过程中的一个步骤(Stage),这个步骤可能是由另外一个 -CompletionStage 触发的,随着当前步骤的完成,也可能会触发其他一系列 -CompletionStage -的执行。从而我们可以根据实际业务对这些步骤进行多样化的编排组合,CompletionStage -接口正是定义了这样的能力,我们可以通过其提供的 thenAppy、thenCompose -等函数式编程方法来组合编排这些步骤。 -
FutureTask
相当于对Callable
-进行了封装,管理着任务执行的情况,存储了 Callable
的
-call
方法的任务执行结果
注意事项
--
-
- Future 需要获取返回值,才能获取异常信息(即线程需要实现
-
Callable
接口,而Runnable
-接口创建线程不会返回结果或抛出检查异常)
- - CompletableFuture 的 get() 方法是阻塞等待的 -
- 异步调用强制传自定义线程池,做好线程池隔离 -
- 自定义线程池时,仔细考虑延迟队列满时,应采取什么拒绝策略 -
Q1:程序执行在哪个线程上?
-A1:
-同步方法(即不带Async后缀的方法)有两种情况。
--
-
如果注册时被依赖的操作已经执行完成,则直接由当前线程执行。
-如果注册时被依赖的操作还未执行完,则由回调线程(按照当前 CF -运行情况区分)执行。
-
异步方法(即带Async后缀的方法):可以选择是否传递线程池参数Executor运行在指定线程池中;当不传递Executor时,会使用ForkJoinPool中的共用线程池CommonPool
-Q2:同步回调和异步回调的区别
-A2:
-同步回调:把函数 b 传递给函数 a。执行 a 的时候,回调了 b,a -要一直等到 b 执行完才能继续执行;
-异步回调:把函数 b 传递给函数 a。执行 a 的时候,回调了 b,然后 a -就继续往后执行,b 独自执行。
-线程池循环引用会导致死锁
-public Object doGet() { |
threadPool1 大小为 10,当同一时刻有 10 个请求到达,则 threadPool1 -被打满,子任务请求线程时进入阻塞队列排队,但是父任务的完成又依赖于子任务,这时由于子任务得不到线程,父任务无法完成。主线程执行 -cf1.join() 进入阻塞状态,并且永远无法恢复。
-异步RPC调用注意不要阻塞IO线程池
-如果是使用基于 NIO(比如Netty)的异步 RPC,则返回结果是由 IO -线程负责设置的,即==回调方法由 IO 线程触发==,CompletableFuture -同步回调(如thenApply、thenAccept等无Async后缀的方法)如果依赖的异步 RPC -调用的返回结果,那么这些==同步回调将运行在IO线程==上,而整个服务只有一个IO线程池,这时需要==保证同步回调中不能有阻塞等耗时过长的逻辑==,否则在这些逻辑执行完成前,IO线程将一直被占用,影响整个服务的响应。
-实际使用场景
-- --
服务端和客户端信息交换频繁,提升系统吞吐量
-I/O密集型任务,对内调度各个下游服务获取数据进行聚合
-对业务流程进行编排,降低任务依赖导致的阻塞
-避免 guava 的 ListenableFuture 回调所导致的回调地狱
-零依赖-构造方法
-ExecutorService executor = Executors.newFixedThreadPool(5); |
一元依赖-异步回调
-CompletableFuture<String> cf3 = cf1.thenApply(result1 -> { |
二元依赖-多任务
-CompletableFuture<String> cf4 = cf1.thenCombine(cf2, (result1, result2) -> { |
多元依赖
-CompletableFuture<Void> cf6 = CompletableFuture.allOf(cf3, cf4, cf5); |
使用方法
- -构造方法
-// 使用默认内置线程池ForkJoinPool.commonPool(),根据supplier构建执行任务 |
获取结果方法
-public T get() |
异步回调方法
-// 执行第二个任务时,则第二个任务和第一个任务是共用同一个线程池 |
异常处理方法
-由于异步执行的任务在其他线程上执行,而异常信息存储在线程栈中,因此当前线程除非阻塞等待返回结果,否则无法通过try。CompletableFuture提供了异常捕获回调exceptionally,相当于同步调用中的try。使用方法如下所示:
-@Autowired |
当 CompletableFuture 的任务不论是正常完成还是出现异常它都会调用
-whenComplete
这回调函数。
-
-
- 正常完成:
whenComplete
返回结果和上级任务一致,异常为 -null;
- - 出现异常:
whenComplete
返回结果为 -null,异常为上级任务的异常;
-
多任务组合回调方法
-thenCompose -可以用于组合多个CompletableFuture,将前一个任务的返回结果作为下一个任务的参数,它们之间存在着业务逻辑上的先后顺序,前后线程执行是同步的,前面阻塞后面不会执行。
-public <U> CompletableFuture<U> thenCompose(Function<? super T, ? extends CompletionStage<U>> fn); |
thenCombine 第一个入参 CompletionStage -是异步的,合并结果的BiFunction是同步的。
-public <U,V> CompletionStage<V> thenCombine (CompletionStage<? extends U> other, BiFunction<? super T,? super U,? extends V> fn); |
applyToEither方法返回一个新的CompletionStage,当此阶段或另一个给定阶段正常完成时,将使用相应的结果作为所提供函数的参数来执行。
-public <U> CompletionStage<U> applyToEither (CompletionStage<? extends T> other, Function<? super T, U> fn); |
底层代码
- -result -用于存储当前CF的结果,stack(Completion)表示当前CF完成后需要触发的依赖动作(Dependency -Actions),去触发依赖它的CF的计算,依赖动作可以有多个(表示有多个依赖它的CF),以栈(Treiber -stack)的形式存储,stack表示栈顶元素。
-观察者模式:依赖动作(Dependency -Action)都封装在一个单独Completion子类中。CompletableFuture -中的每个方法都对应了图中的一个 Completion -的子类,Completion本身是观察者的基类。
- -一元依赖中的 thenApply 为例,举例“观察者模式”的设计思想
- -被观察者
--
-
- 每个CompletableFuture都可以被看作一个被观察者,其内部有一个Completion类型的链表成员变量stack,用来存储注册到其中的所有观察者。当被观察者执行完成后会弹栈stack属性,依次通知注册到其中的观察者。上面例子中步骤fn2就是作为观察者被封装在UniApply中。 -
- 被观察者CF中的result属性,用来存储返回结果数据。这里可能是一次RPC调用的返回值,也可能是任意对象,在上面的例子中对应步骤fn1的执行结果。 -
观察者
-CompletableFuture支持很多回调方法,例如thenAccept、thenApply、exceptionally等,这些方法接收一个函数类型的参数 -f,生成一个 Completion 类型的对象(即观察者),并将入参函数 f 赋值给 -Completion 的成员变量 fn,然后检查当前 CF 是否已处于完成状态(即result -!= null),如果已完成直接触发 fn,否则将观察者 Completion 加入到 CF -的观察者链 stack -中,再次尝试触发,如果被观察者未执行完则其执行完毕之后通知触发。
--
-
- 观察者中的 dep 属性:指向其对应的 CompletableFuture,在上面的例子中 -dep 指向 CF2。 -
- 观察者中的 src 属性:指向其依赖的 CompletableFuture,在上面的例子中 -src 指向 CF1。 -
- 观察者 Completion 中的 fn -属性:用来存储具体的等待被回调的函数。这里需要注意的是不同的回调方法(thenAccept、thenApply、exceptionally等)接收的函数类型也不同,即fn的类型有很多种,在上面的例子中fn指向fn2。 -
Q1:为什么要在入栈前和入栈后都检查result == null
A1:因为查 result 和判断 result==null -是两个操作,CompletableFuture -没有对其加锁,若被观察者在这两个操作数之间完成,会导致观察者得不到通知
-Q2:当依赖多个CF时,观察者会被压入所有依赖的CF的栈中,每个CF完成的时候都会进行,那么会不会导致一个操作被多次执行呢 -?如下图所示,即当CF1、CF2同时完成时,如何避免CF3被多次触发。
- -A2:CompletableFuture的实现是这样解决该问题的:观察者在执行之前会先通过CAS操作设置一个状态位,将status由0改为1。如果观察者已经执行过了,那么CAS操作将会失败,取消执行。
-CompletableFuture 处理并行问题的整体流程图:
- -二元依赖
-thenCombine 操作表示依赖两个 CompletableFuture。其观察者实现类为 -BiApply,如上图所示,BiApply 通过 src 和 snd 两个属性关联被依赖的两个 -CF,fn 属性的类型为 -BiFunction。与单个依赖不同的是,在依赖的CF未完成的情况下,thenCombine -会尝试将 BiApply 压入这两个被依赖的 CF 的栈中,每个被依赖的 CF -成时都会尝试触发观察者 BiApply,BiApply -会检查两个依赖是否都完成,如果完成则开始执行。这里为了解决重复触发的问题,同样用的是上一章节提到的 -CAS 操作,执行时会先通过 CAS 设置状态位,避免重复触发。
- -// 状态位 Status 定义于 ForkJoinTask 类中 |
多元依赖
-依赖多个CompletableFuture的回调方法包括allOf
、anyOf
,区别在于allOf
观察者实现类为BiRelay,需要所有被依赖的CF完成后才会执行回调;而anyOf
观察者实现类为OrRelay,任意一个被依赖的CF完成后就会触发。二者的实现方式都是将多个被依赖的CF构建成一棵平衡二叉树,执行结果层层通知,直到根节点,触发回调监听。
闻
- - -Yesterday is history, tomorrow is a mystery but today is a gift.
-- JVM 虚拟机 -
- -- --
TODO虚拟机器执行子系统、GC、内存区域、调优
-内存结构
-方法区、永久代(PermGen -space)、元空间(Metaspace)的关系
- -方法区
--
-
- 主要存储类的相关信息,所以对于动态生成类的情况比较容易出现永久代的内存溢出 -
- 方法区是 JVM 的规范,元空间是 HotSpot 虚拟机在 Java8 -具体实现的方法区(JDK8 之前是永久代) -
Metaspace(元空间)替换 PermGen(永久代)的原因 > -永久代存储在虚拟机堆中,元空间存储在本地内存中
--
-
- 字符串存在永久代中,不方便管理维护,需要单独进行垃圾管理 -
- 类及方法的信息等比较难确定其大小,因此难以指定永久代的大小,太小容易出现永久代溢出,太大则容易导致老年代溢出 -
- 永久代会为 GC 带来不必要的复杂度,并且回收效率偏低 -
- 和其他虚拟机架构看齐,方便合并 -
静态变量和基本数据类型包装类的常量池存在哪里?
--
-
- jdk1.6 及之前静态变量和 String Table 在永久代方法区 -
- jdk1.8后 -运行时常量池和静态变量在元空间,字符串常量池在堆空间 -
运行时常量池
--
-
- 存储常量、引用、整数和浮点数等内存区域,是类加载后的第一个创建的内存区域,并且在整个 -JVM 进程中共享 -
- 常量池中的内容是不可变的,可以通过符号引用进行共享,从而避免内存浪费 -
方法区:全局,所有栈都可以访问
--
-
- static、ClassLoader -
JVM 内存区域
-线程私有的
--
-
- 程序计数器(当前线程执行位置;依次读取代码) -
- 本地方法栈(存储栈帧:局部变量表【值、引用指针、句柄】、操作数栈、动态链接【当一个方法要调用其他方法,将常量池中指向方法的符号引用转化为其在内存地址中的直接引用】、方法返回地址) -
- 虚拟机栈 -
线程共享的
--
-
- 方法区(元空间、永久代)当虚拟机要使用一个类时,它需要读取并解析 -Class -文件获取相关信息,再将信息存入到方法区。方法区会存储已被虚拟机加载的 -类信息、字段信息、方法信息、常量、静态变量、即时编译器编译后的代码缓存等数据。(运行时常量池:即各种字面量和符号引用【解析阶段:JVM -将符号引用转为直接引用】) -
- 堆(字符串常量池【String#intern】、静态变量) -
- 本地内存 -
对象的创建过程
- -对象的创建过程
--
-
- 查找常量池中是否有类的符号引用 -
- 分配内存:指针碰撞 OR 空闲列表(保证线程安全:CAS + 失败重试 OR -TLAB) -
- 初始化零值 -
- 设置对象头:元数据信息、对象的哈希码、对象的 GC -分代年龄、是否启用偏向锁 -
- 执行 init 方法 -
对象访问定位
-通过栈上的 引用指针 Reference -来操作堆上的具体对象:句柄、直接指针
--
-
- Java 堆中将会划分出一块内存来作为句柄池,reference -中存储的就是对象的句柄地址,而句柄中包含了对象实例数据与类型数据各自的具体地址信息。在对象被移动时(垃圾收集时移动对象是非常普遍的行为)只会改变句柄中的实例数据指针。 -
-
-
- 直接指针访问方式最大的好处就是速度快,它节省了一次指针定位的时间开销,HotSpot -采用的是直接指针 -
对象的内存布局
-Mark Word -是一个具有动态定义的数据结构,以便在极小的空间内存储尽量多的数据,根据对象的状态复用自己的存储空间。
- -GC 堆
-新生代 Young Generation
--
-
- Eden 区【新建对象分配地址】 -
- 两个 Survivor 区 S0 和 S1 【survivor 的阈值年龄取小(占用超过一半 s -区的年龄,MaxTenuringThreshold)】 -
老生代 Old Generation
-HotSpot VM 的实现里的 GC 其实准确分类只有两大种:
-部分收集 (Partial GC):
--
-
- 新生代收集(Minor GC / Young GC):只对新生代进行垃圾收集; -
- 老年代收集(Major GC / Old
-GC):只对老年代进行垃圾收集。需要注意的是 Major GC
-在有的语境中也用于指代整堆收集;
-
-
-
- 触发条件:老年代空间不足、方法区空间不足 -
- - 混合收集(Mixed GC): -
垃圾回收
-GC Root
-虚拟机栈、本地方法栈、方法区中类静态属性、方法区中常量、JNI -引用的对象
-被同步锁持有的对象
-记忆集与卡表:
-记忆集是一种用于记录从非收集区域指向收集区域的指针集合的抽象数据结构。在垃圾收集的场景中,收集器只需要通过记忆集判断出某一块非收集区域是否存在有指向了收集区域的指针,并不需要了解这些跨代指针的全部细节。老年代划分为若干个小块,标识出老年代哪一块内存会存在跨代引用。当发生 -Minor GC 时,只有包含了跨代引用的小块内存中的老年代对象才会加入到 GC -Roots 扫描中,避免整个老年代加入到 GC Roots 中
-垃圾收集算法
-垃圾收集算法 | -优点 | -缺点 | -适用范围 | -
---|---|---|---|
标记清除法 | -不需要移动对象,简单高效 | -标记效率低(访问全部内存)内存碎片 | -老年代 | -
标记复制算法 | -无内存碎片 | -频繁复制;内存使用率低 | -新生代 | -
标记整理法 | -结合了上面两个优点 | -移动局部对象 | -老年代 | -
分代收集算法 | -根据对象存活概率,选择垃圾收集算法 | -- | - |
垃圾回收器
-GCRoot:栈帧中引用的对象、静态变量、常量、本地方法栈中对象 STW:Stop -the World
-Young GC | -Old GC | -
---|---|
Serial 串行、标记-复制 | -Serial Old 标记-整理(STW) | -
PawNew 并行、标记-复制 | -CMS 降低单次垃圾收集时间 | -
Parallel Scavenge 吞吐率 | -Parallel Old | -
CMS
---以获得最短回收停顿时间为目标的收集器
-
流程
--
-
- 初次标记 STW:标记直接与 root 相连的对象 -
- 并发标记:标记可达对象,跟踪更新记录 -
- 重新标记 STW:修正并发标记的变动 -
- 并发清理:标记-清理(不用 STW,但清理会产生内存碎片,复制不会) -
优点
--
-
- 并发收集、低停顿 -
缺点
--
-
- 对 CPU 资源敏感; -
- 无法处理浮动垃圾; -
- 它使用的回收算法“标记-清除”算法会导致收集结束时会有大量空间碎片产生,过量碎片会导致 -Full GC; -
- 并发失败:并发清理的时候用户线程没有足够的 JVM 内存,会导致 STW
-并产生内存碎片
-### G1 -> G1 -跟踪每个区域的垃圾大小,在后台维护一个优先级列表,每次根据允许的收集时间,优先回收价值最大的区域,已达到在有限时间内获取尽可能高的回收效率
-
内存结构
--
-
- Region 大小 1M~32M、个数大概 2000 -
- >=0.5 Region <1Region:H 区(超大对象存储区) -
- >1Region:多个连续存储区 -
概念
--
-
- RememberSets,又叫 Rsets 是每个 region -中都有的一份存储空间,用于存储本 region 的对象被其他 region -对象的引用记录 -
- CollectionSets,又叫 Csets 是一次 GC 中需要被清理的 regions -集合,注意G1每次 GC 不是全部 region -都参与的,可能只清理少数几个,这几个就被叫做 Csets -
Young -GC 复制清理的过程 MixGC(没有 Old GC -的概念,新老代一起 GC)类似于 CMS
--
-
- 初次标记 STW:标记直接与 GCRoot 相连的对象,和该对象所处的 -Region(RootRegion) -
- 扫描 RootRrgion:遍历 old Region,如果 rset 中存在 -RootRegion,则标记(即为可达的 Region) -
- 并发标记:同 CMS,但仅遍历标记的 Region -
- 重新标记 STW:SATB 算法 -
- 筛选回收 STW:局部的标记整理垃圾收集 -
对比CMS,有哪些不同?
--
-
- region化的内存结构,采用复制清理的方式,避免了内存碎片。但是这种清理也造成了STW -
- SATB速度更快 -
- 初始标记,并发标记,重新标记,清理垃圾四个阶段很像,但是G1中有很多标记region的操作,并借助Rset进行了范围的缩小,提高了并发标记的速度。小结下就是初始标记和YGC的STW一起了,提高了效率;并发标记因为rset的设计,扫描范围缩小了,提高了效率;重新标记因为使用了SATB提高了效率;清理虽然造成了STW,但是复制使内存紧凑,避免了内存碎片。同时只清理垃圾较多的region,最大限度的降低了STW时间 -
类加载过程
-类的生命周期:加载、连接、初始化、使用、卸载 - - --
-
- 加载:通过全类名获取定义此类的二进制字节流;将字节流所代表的静态存储结构转换为方法区的运行时数据结构;在内存中生成一个代表该类的
-
Class
-对象,作为方法区这些数据的访问入口;【通过类加载器实现加载,通过双亲委派模型决定采用哪个类加载器】
- - 验证:确保 Class 文件的字节流中包含的信息无误 -
- 准备:分配内存并设置类变量初始值 -
- 解析:将常量池内的符号引用替换为直接引用,也就是得到类或者字段、方法在内存中的指针或者偏移量; -
- 初始化:执行字节码中的构造器来初始化类 -
类加载器
---负责加载类的对象,主要作用就是加载 Java 类的字节码( .class 文件)到 -JVM 中(在内存中生成一个代表该类的 Class 对象);
-
将“通过类的全限定名获取描述类的二进制字节流”这件事放在虚拟机外部,由应用程序自己决定如何实现; -(启动类加载器:虚拟机的一部分)
-双亲委派模型
---决定类由哪个类加载器加载 -编程思想:在面向对象编程中,有一条非常经典的设计原则:组合优于继承,多用组合少用继承(即双亲委派的实现方法)
-
-
-
- ClassLoader
-类使用委托模型来搜索类和资源。双亲委派模型要求除了顶层的启动类加载器外,其余的类加载器都应有自己的父类加载器。
-
-
-
- 获取该类的类加载器getClassLoader()方法;获取父类的类加载器getParent() -
- - ClassLoader -实例会在试图亲自查找类或资源之前,将搜索类或资源的任务委托给其父类加载器。 -
为什么用双亲委派?
--
-
- 相同二进制名称的类只会被加载一次,已经加载的类会被放在 ClassLoader -中,防止重复加载; -
- 保证了 Java 的核心 API 不被篡改; -
为什么打破双亲委派?
--
-
- Tomcat 下 Web -应用之间的类需要实现隔离,打破双亲委派可以更好地管理多个Web应用程序的类加载,并避免类加载冲突。 -
- SPI 的接口是由 Java 核心库提供的(BootstrapClassLoader),SPI -的实现是由第三方供应商提供的(AppClassLoader),实现类无法通过接口的加载器加载 -
ClassLoader 抽象类:
--
-
- loadClass(String name, boolean resolve) -:父类的加载器不为空,则通过父类的loadClass来加载该类。如果要打破双亲委派机制,就重写这个方法; -
- findClass(String -name):当父类加载器无法加载时,根据类的二进制名称来加载该类; -
-
-
- 类加载器保存在线程私有数据里,跟线程绑定。解决了,默认情况下一个类及其依赖类由同一个类加载器加载,而接口的类加载器和子类或实现类的加载器不是同一个加载器。 -
JVM 调优
-配置Java堆和元空间大小
-选择垃圾回收器:CMS 升级到 G1,甚至 ZGC。
-JVM性能监控和调试,分析堆内存状态,合理优化代码
- -
更新于
-
+
@@ -274,17 +274,19 @@ 二分查找
(nums[left]<=nums[mid]) left=mid; else
right=mid-1;【找右边】
+堆排序
+数组实现大根堆的两个主要方法(注意动态扩容)
+class Heap {
int[] data;
public void downHeapify(int i) {
// 下标从0开始,子节点下标为2i+1和2i+2
int l = i*2 + 1, r = i*2 + 2, largest = i;
if (l < heapSize && data[l] > data[largest]) {
largest = l;
}
if (r < heapSize && data[r] > data[largest]) {
largest = r;
}
if (largest != i) {
swap(i, largest);
maxHeapify(largest);
}
}
public void upHeapify(int i) {
// 父节点下标为(i-1)/2
int parent = (i-1)/2, min = i;
if (parent>=0 && data[parent] < data[i]) {
min = parent;
}
if (min != i) {
swap(min, i);
upHeapify(min);
}
}
}
动态规划
-
-思路
-
+思路:动规的中心思想就是把一个复杂问题拆分成多个简单、可以逐步堆叠得到答案的子问题。
+做题步骤
+
- 确定dp数组(dp table)以及下标的含义
- 确定递推公式
- dp数组如何初始化
- 确定遍历顺序
- 举例推导dp数组
-
-
+
0-1背包
每个物品只能用一次
@@ -401,8 +403,8 @@ StringBuilder/StringBuffer
diff --git a/Java-DataStructure/image-20240425212414984.png b/Java-DataStructure/image-20240425212414984.png
deleted file mode 100644
index 6c362b1..0000000
Binary files a/Java-DataStructure/image-20240425212414984.png and /dev/null differ
diff --git a/Java-DataStructure/image-20240425212527868.png b/Java-DataStructure/image-20240425212527868.png
deleted file mode 100644
index 3a108e0..0000000
Binary files a/Java-DataStructure/image-20240425212527868.png and /dev/null differ
diff --git a/Java-DataStructure/index.html b/Java-DataStructure/index.html
deleted file mode 100644
index b91ce31..0000000
--- a/Java-DataStructure/index.html
+++ /dev/null
@@ -1,585 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Java 常用数据结构的底层实现 | 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 闻
-
-
- Yesterday is history, tomorrow is a mystery but today is a gift.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Java 常用数据结构的底层实现
-
-
-
-
-
- ArrayList、LinkedList、HashMap、ConcurrentHashMap 的底层源码剖析
-
-
-
-
-
-
- ArrayList
-ArrayList
的底层是数组队列,相当于动态数组。
-
-- 与数组相比,它的容量能动态增长。
-- 与 Vector 相比,它的底层使用 Object[]
-存储,适用于频繁的查找工作,线程不安全
-
-public class ArrayList<E> extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable{
void add(int, E);
E set(int, E);
E get(int);
E remove(int);
}
-
-List
:
-表明它是一个列表,支持添加、删除、查找等操作,并且可以通过下标进行访问。
-RandomAccess
:这是一个标志接口,表明实现这个接口的
-List
集合是支持 快速随机访问
-,可以通过元素的序号快速获取元素对象list.get(i)
。
-Cloneable
-:表明它具有拷贝能力,可以进行深拷贝或浅拷贝操作。
-Serializable
:
-表明它可以进行序列化操作,也就是可以将对象转换为字节流进行持久化存储或网络传输,非常方便。
-
-扩容机制
-初始化时默认空数组
-DEFAULTCAPACITY_EMPTY_ELEMENTDATA
。
-添加元素时,先判断需要扩容的最小扩容量大小(DEFAULT_CAPACITY 默认是
-10)
-private static int calculateCapacity(Object[] elementData, int minCapacity) {
if (elementData == DEFAULTCAPACITY_EMPTY_ELEMENTDATA) {
return Math.max(DEFAULT_CAPACITY, minCapacity);
}
return minCapacity;
}
-如果需要扩容,就会进入扩容方法 grow(),扩容效果是小于等于 1.5
-倍的(因为 int 取整)
-private void grow(int minCapacity) {
int oldCapacity = elementData.length;
int newCapacity = oldCapacity + (oldCapacity >> 1);
if (newCapacity - minCapacity < 0)
newCapacity = minCapacity;
if (newCapacity - MAX_ARRAY_SIZE > 0)
newCapacity = hugeCapacity(minCapacity);
elementData = Arrays.copyOf(elementData, newCapacity);
}
-如果扩容长度超过定义的数组的最大长度
-MAX_ARRAY_SIZE = Integer.MAX_VALUE-8
,就会触发最大值限制,防止
-size 溢出
-private static int hugeCapacity(int minCapacity) {
if (minCapacity < 0)
throw new OutOfMemoryError();
return (minCapacity > MAX_ARRAY_SIZE) ?
Integer.MAX_VALUE :
MAX_ARRAY_SIZE;
}
-将旧数组移动到新数组
-public static int[] copyOf(int[] original, int newLength) {
int[] copy = new int[newLength];
System.arraycopy(original, 0, copy, 0, Math.min(original.length, newLength));
return copy;
}
-手动扩容,可以在需要插入大量数据前手动扩容
-public void ensureCapacity(int minCapacity) {
int minExpand = (elementData != DEFAULTCAPACITY_EMPTY_ELEMENTDATA) ? 0 : DEFAULT_CAPACITY;
if (minCapacity > minExpand) {
ensureExplicitCapacity(minCapacity);
}
}
-与 LinkedList 的异同
-
-都不保证线程安全;
-ArrayList
底层使用的是 Object[]
-数组;LinkedList
底层使用的是
-Node+双向链表 数据结构(JDK1.6 之前为循环链表,JDK1.7
-取消了循环)
-插入和删除是否受元素位置的影响:
-
-ArrayList
-将指定的元素追加到此列表的末尾,时间复杂度
-O(1)。但是如果要在指定位置 i
-插入和删除元素的话(add(int index, E element)
),时间复杂度
-O(n)。
-LinkedList
-头尾插入或者删除元素不受元素位置的影响(add(E e)
、addFirst(E e)
、addLast(E e)
、removeFirst()
、
-removeLast()
),时间复杂度
-O(1);指定位置 i
-插入和删除元素的话(add(int index, E element)
,remove(Object o)
,remove(int index)
),
-时间复杂度为 O(n) 。
-
-是否支持快速随机访问: LinkedList
-不支持高效的随机元素访问,而 ArrayList
(实现了
-RandomAccess
接口) 支持。
-内存空间占用: ArrayList
-的空间浪费主要体现在在 list 列表的结尾会预留一定的容量空间,而
-LinkedList 的空间花费则体现在它的每一个元素 Node 都需要消耗比 ArrayList
-更多的空间
-
-LinkedList
-
-需要用到 LinkedList
的场景几乎都可以使用
-ArrayList
-来代替,而且性能会更好。头尾插入或者删除元素的时候时间复杂度近似
-O(1),其他情况增删元素的平均时间复杂度都是 O(n) 。
-
-public class LinkedList<E> extends AbstractSequentialList<E>
implements List<E>, Deque<E>, Cloneable, java.io.Serializable {
private static class Node<E> {
E item;
Node<E> next;
Node<E> prev;
Node(Node<E> prev, E element, Node<E> next) {
this.item = element;
this.next = next;
this.prev = prev;
}
}
}
-
-List
:
-表明它是一个列表,支持添加、删除、查找等操作,并且可以通过下标进行访问。
-Deque
:继承自 Queue
-接口,具有双端队列的特性,支持从两端插入和删除元素,方便实现栈和队列等数据结构。
-
-常用方法
-
-- 实现 List 接口
-
-- get、set
-
-- 实现 Collection 接口
-
-- 判断是否存在:contains
-
-- 实现 Queue 接口(通过 Deque 接口)
-
-- 报错:add、remove、element
-- 不报错:offer、poll、peek
-
-- 实现 Deque 接口
-
-- addFirst [push]、addLast [add]:无返回,容量超出限制会报错
-- offerFirst、offerLast [offer]:返回 Boolean 表示是否加入成功
-- removeFirst [remove]、removeLast:队列为空报错
-- pollFirst [poll]、pollLast:队列为空返回 null
-- getFirst [element]、getLast:队列为空报错
-- peekFirst [peek]、peekLast:队列为空返回 null
-
-- 【注意】队列头部为 null 和队列为空时,都会返回 null
-
-- removeFirstOccurrence [remove]、removeLastOccurrence
-- push、pop、peek:作为栈
-
-
-HashMap
-
-JDK1.8 之前 HashMap 采用“拉链法”处理冲突,由 数组+链表 组成; JDK1.8
-以后,若Table长度大于 64,会将链表转化为红黑树。
-
-
-
-
-- key 和 value 可以为 null,但 null 作为 key 只能有一个,而 null 作为
-value 可以有多个
-- 非线程安全的
-
-public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable {
// 默认的初始容量是16
static final int DEFAULT_INITIAL_CAPACITY = 1 << 4;
// 最大容量
static final int MAXIMUM_CAPACITY = 1 << 30;
// 默认的负载因子
static final float DEFAULT_LOAD_FACTOR = 0.75f;
// 当桶上的结点数大于等于这个值时会转成红黑树
static final int TREEIFY_THRESHOLD = 8;
// 当桶上的结点数小于等于这个值时树转链表
static final int UNTREEIFY_THRESHOLD = 6;
// 桶中结构转化为红黑树对应的 table 的最小容量
static final int MIN_TREEIFY_CAPACITY = 64;
// 存储桶(bin)的数组,永远是 2 的幂次倍
transient Node<k,v>[] table;
// 一个包含了映射中所有键值对的集合视图
// 先遍历数组 bin,再通过 Entry.next 遍历每个 bin
transient Set<map.entry<k,v>> entrySet;
// 存放元素的个数,注意这个不等于数组的长度
transient int size;
// 阈值=容量*负载因子,当实际大小超过阈值时,会进行扩容
int threshold;
// 负载因子
final float loadFactor;
static class Node<K,V> implements Map.Entry<K,V>{
final int hash;
final K key;
V value;
// 链表的下一个元素
Node<K,V> next;
}
static final class TreeNode<K,V> extends LinkedHashMap.Entry<K,V>{
Entry<K,V> before, after;
TreeNode<K,V> parent; // 红黑树链
TreeNode<K,V> left;
TreeNode<K,V> right;
TreeNode<K,V> prev; // 需要在下次删除时解除链接
boolean red;
}
}
-
-entrySet
-通过Node的next属性
遍历元素,keySet()
、values()
基于entrySet
实现,用于遍历访问所有
-Node
-元素,还支持元素的删除操作【不确定,entrySet不存储数据,只是数据对外的操作接口】。
-TreeNode
继承了 LinkedHashMap.Entry
-,有指向前后节点的指针
-
-jdk 1.8 Key 计算 hash 值的方法
-static final int hash(Object key) {
int h;
return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);
}
-扩容机制
-何时触发 resize()
扩容
-
-- 要插入数据前,发现
table
中的 bin
为空
-- 要插入数据后,发现
HashMap
的 size
超过
-threshold
-table
长度小于 MIN_TREEIFY_CAPACITY
时,某
-Node
上的链长度超过 TREEIFY_THRESHOLD
-
-resize()
扩容,会将 table 中的节点数量 <<
-1,并重新 hash 映射所有节点(因为 table 变大了,每个节点对应的 bin
-下标发生了变化
-newTab[e.hash & (newCap - 1)] = e
,newCap
为
-table 的新大小)
-链表何时变成红黑树?
-
-- 该
bin
上的链长度binCount
大于等于
-TREEIFY_THRESHOLD
且 table
中 bin
-数量大于等于 MIN_TREEIFY_CAPACITY
-
-如果链表转红黑树的时候,又有数据要插入,会发生什么?
-
-- 线程不安全。在树结构替换链表最终阶段会校验树结构,在此过程中的插入会使该树结构不满足红黑树和双链表的特性,导致报异常
-
assert checkInvariants(root);
-
-ConcurrentHashMap
-
-Java7 中 ConcurrentHashMap 使用的是分段锁,每一个 Segment
-上同时只有一个线程可以操作,结构上时 Segment
数组
-+ HashEntry
数组 +
-链表。Segment
-的个数一旦初始化就不能改变,默认 Segment
-的个数是 16
-个,Segment
继承ReentrantLock
实现分段锁。
-Java8 中的 ConcurrentHashMap 通过 Synchronized 锁加
-CAS 保证多线程安全,结构上是 Node
-数组 + 链表 / 红黑树。
-
-如果链表转红黑树,又有数据要插入,会发生什么。
-
-treeifyBin
通过 synchronized
把
-bin
加锁,后续数据插入会因为无法竞争到资源而阻塞
-- 链表开始转红黑树前,会将 Node 头节点置为
-
ForwardingNode
,ForwardingNode
的 hash 是
-Moved
-表示正在转换为红黑树,此时会自旋等待转换完成后插入(大概是这样的)
-
-如果数组扩容,又有数据要插入,会发生什么。
-
-- 扩容前,会将 Node 头节点置为
-
ForwardingNode
,ForwardingNode
的 hash 是
-Moved
表示正在扩容。
-- 扩容时,插入数据的线程若发现 hash
-值为负,会去协助扩容,扩容完成后再插入数据。
-
-
-
-- 在调用 addCount
-方法增加集合元素计数后发现当前集合元素个数到达扩容阈值时就会触发扩容
-- 扩容状态下其他线程对集合进行插入、修改、删除、合并、compute
-等操作时遇到
ForwardingNode
节点会触发扩容(帮助扩容)
-- putAll 批量插入或者插入节点后发现存在链表长度达到 8
-个或以上,但数组长度为 64 以下时会触发扩容 。
-
-同 HashMap:桶上链表长度达到 8 个或者以上,并且数组长度为 64
-以下时只会触发扩容而不会将链表转为红黑树
-LinkedHashMap
-LinkedHashMap
-内部维护了一个双向链表,确保其迭代顺序是和插入顺序或访问顺序是一致的,通过重写
-get、newNode、afterNodeAccess、afterNodeInsertion、afterNodeRemoval
-等方法实现,最近插入或访问的节点位于链表尾部。
-
-可以按照插入顺序遍历 entry(accessOrder=false)
-也可以按照访问顺序遍历 entry(accessOrder=true),即 LRU
-
-可用于实现 LRU,即 迭代顺序==访问顺序
-
-- 每次修改都将元素删除后重新插入
-- 将
accessOrder
设置为 true 并重写
-removeEldestEntry
方法当链表大小超过容量时返回 true
-
-CopyOnWriteList
-
-并发安全的
-List
,针对读多写少的场景,类比读写锁的思想,实现
-读读不互斥、读写不互斥、写写互斥 的写时复制
-Copy-On-Write 策略。此外还有 Collections.synchronizedList
-,可以将任何List
包装成一个线程安全的List
-
-add 方法内部用到了 ReentrantLock
-加锁,避免了多线程写的时候会复制出多个副本,导致并发问题
-写时复制的缺点
-
-- 写操作资源占用多,复制数据时占用内存
-- 数据一致性问题,修改后需要等到赋值给原数组才能访问到修改
-
-写多读少的场景下,应该用什么数据结构实现并发数组?
-分段读写锁 ReadWriteLock(由于 Arrays.copyOf()
-是操作系统实现,数据量少的话依然可用写时复制)
-PriorityQueue
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0%
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Java/image-20240516125841876.png b/Java/image-20240516125841876.png
deleted file mode 100644
index 3bba3a5..0000000
Binary files a/Java/image-20240516125841876.png and /dev/null differ
diff --git a/Java/index.html b/Java/index.html
deleted file mode 100644
index 5eb0f0e..0000000
--- a/Java/index.html
+++ /dev/null
@@ -1,556 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Java 语言 | 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 闻
-
-
- Yesterday is history, tomorrow is a mystery but today is a gift.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Java 语言
-
-
-
-
-
- Java 语言的基础知识
-
-
-
-
-
-
- 基础
-基本数据类型
-除八个基本类型,Java 的所有数据类型都是引用,Java
-中没有指针的概念,所有数据传输都是传值(引用可以看作是地址值,所有引用值都占四个字节)
-基本数据类型的包装类 Byte Short Integer Long Character 有常量池
-编译运行
-
-- Java 编译器 Javac 是用 Java 实现的,用于将 .java 文件编译成字节码
-.class
-- .class 通过解释器对这些字节码进行解释执行
-- Java 的运行环境 JVM 如 HotSpot VM,实现了其跨平台的特性
-
-三大特性
-封装
-将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体;
-继承
-支持类之间的单继承,但支持接口之间的多继承;
-类可以实现多个接口,抽象类不能实例化但可以有构造方法,内部类只能通过外部类创建;
-Object 是超类,是所有类的父类(无父类的子类默认继承
-Object。jdk6之前是编译器处理,jdk7之后是虚拟机处理);
-Java8 之后接口可以有默认方法,允许在接口中声明静态方法;
-多态
-全面支持动态绑定,动态绑定是实现多态(一个接口,多种实现)的基础;
-
-- 多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法(A
-a=new B(),A是父类,B是子类)
-- 静态绑定:对象属性和 static private final
-修饰的对象方法(构造函数),哪里声明,哪里使用
-- 动态绑定:运行时 JVM
-实现绑定。若子类实现了这个方法,则调用子类的内存地址,若没有则调用当前对象(父类)的方法。只能调用父类的属性,虽然实际实现的是子类,如果父类没有这个属性,那就无法调用。如果要获取子类属性,就要重写子类方法获取该属性,前提是这个方法在父类中同样存在。
-
-关键字
-
-
-
-
-
-
-
-关键字
-说明
-
-
-
-
-final
-常量
-
-
-static
-静态变量,无论一个类实例化多少对象,它的静态变量只有一份拷贝;静态方法,不能使用类的非静态变量,类名直接调用,不需要进行实例化对象。
-
-
-native
-本地、原生方法(非 Java 实现)
-
-
-strictfp
-严格浮点、精准浮点
-
-
-synchronized
-线程、同步
-
-
-transient
-修饰的成员属性变量不被序列化,仅存于调用者的内存中而不会写到磁盘里持久化,防止敏感信息泄露(与Serilizable接口一同使用)当对象被反序列化时,被
-transient 修饰的变量值不会被持久化和恢复,直接设置为默认值。static
-不属于任何对象,因此永远不会被序列化。
-
-
-volatile
-变量在 CPU
-的寄存器中是不确定的,必须从主存中读取。保证多线程环境下变量的可见性;禁止指令重排序。
-
-
-instanceof
-实例
-
-
-
-运算符优先级
-
-自动装箱/拆箱
-
-jdk1.5 i = Integer.valueOf(3) -128-127
-
-自动装箱通常也不会通过显式的 valueOf
-方法调用实现。编译器生成的字节码可能直接使用内部指令或方法来处理装箱和拆箱,而不是通过Java方法调用机制。因此,在
-valueOf 方法上设置断点通常不会捕获到自动装箱的过程。
-new String("abc")
和 String.valueOf("abc")
-的区别:前者在堆中创建了新的对象,后者返回字符串常量池对象的引用。拆箱:xxxValue();装箱:valueOf()
-public void zhuangXiang() {
Integer a1 = 128;
Integer a2 = 128;
Integer a3 = 256;
Integer a4 = a1 + a2;
System.out.println(a1 == a2); // false
System.out.println(a4 == a3); // false
System.out.println(a1 + a2 == a3); // true 发生拆箱
}
-NPE 问题
-
-- 数据库查询返回结果为 Null,无法拆箱
-- 三目运算符可能出现问题:flag ? 0 : i(应使用 flag ? new Integer(0) :
-i)
-
-动态代理
-静态代理:编译时完成 动态代理:运行时动态生成类字节码,并加载到 JVM
-中
-
-- JDK
-动态代理:通过生成一个实现被代理类接口的对象来拦截被代理类的方法调用
-
-- 封装:Proxy.newProxyInstance() 指定 ClassLoader 对象和一组
-interface
-- 调用:InvocationHandler 接口 invoke 方法
-
-- CGLIB
-动态代理:通过生成一个被代理类的子类来拦截被代理类的方法调用(字节码实现,不能被
-final 修饰,编译速度慢,运行速度快)
-
-- 封装:Enhancer 类
-- 调用:MethodInterceptor 接口 intercept 方法
-
-
-二者的具体实现
-
-- JDK:运行时动态解析,无法应用一些 JVM 优化
-- CGLib:ASM 开源包,代理对象类的 class
-文件加载时,修改其字节码生成代理子类(ASM
-是在编译期处理字节码的,可以认为是一种编译期的 AOP 技术)
-
-为什么 JDK 动态代理,要求被代理对象必须实现一个接口?
-
-- 因为 JDK 动态代理类已经继承了 Proxy
-这个类,所以只能通过接口来与被代理类建立联系(两个类建立起联系,一是继承的关系【jdk已经不能通过这个方式了,因为java仅支持单继承】,另一种就是实现同一个接口【JDK动态代理选这种】),所以必须要求被代理类也得实现一个接口
-
-原生工具类
-Collections 集合操作类
-
-- sort(list)
-- reverse(list)
-- binarySearch(list, target)
-
-Arrays 数组操作类
-
-- max(list)
-- sort(array, (o1, o2)->o1-o2)
-- copyOf(array, Length)
-- binarySearch(array, value)
-- fill(array, value)
-
-比较器 集合排序工具
-
-- Comparator 类级别
-
-- 针对不同的比较,单独定义一个比较类
-- int compare(T o1, T o2);
-
-- 返回值为正数,交换 o1 o2 的顺序
-- 返回值为负数或零,不需要调整
-- 返回升序 o1-o2,降序 o2-o1
-
-
-- Comparable 方法级别
-
-- 若一个类实现了Comparable接口,就意味着“该类支持排序”,可以用Arrays.sort()排序
-- public int compareTo(T o);
-
-
-接口实现
-接口和抽象类的关系
-
-- 共同点
-
-- 都不能被实例化
-- 都可以包含抽象方法
-- 方法可以有默认实现的
-
-- 区别
-
-- 接口主要用于对类的行为进行约束,你实现了某个接口就具有了对应的行为。抽象类主要用于代码复用,强调的是从属关系。
-- 一个类只能继承一个类,但是可以实现多个接口。
-- 接口中的成员变量只能是 public static final
-类型的,不能被修改且必须有初始值,而抽象类的成员变量默认
-default,可在子类中被重新定义,也可被重新赋值。
-
-- 接口中的所有成员变量都默认是由public static final修饰的
-- 接口中的所有方法都默认是由public abstract修饰的
-- 接口没有构造方法
-- 实现接口的类中必须提供接口中所有方法的具体实现内容
-- 多个无关的类可以实现同一个接口
-- 一个类可以实现多个无关的接口
-- 与继承关系类似,接口与实现类之间存在多态性
-- 接口可以继承多个接口,使用extends关键字
-- Java8
-后,接口可以拥有普通方法,实现类不需要重写,可以被实现类继承
-
-构造器
-this(参数列表)来访问本类构造器需要注意以下几点
-
-- 只能在构造器中使用
-this(参数列表);即在一个构造器中访问本类的另外一个构造器。
-- 显示使用 this() 时,默认的 super() 就被覆盖
-- this(参数列表)和 super(参数列表)在构造器中有且只能存在一个。
-- 若在构造器中使用 this(参数列表),则此语句只能位于构造器第一行
-
-动态加载
-反射(运行时获取类的信息、创建对象、调用方法)
-类加载器 ClassLoader
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0%
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/LLM-Application/index.html b/LLM-Application/index.html
index 8007739..f98de24 100644
--- a/LLM-Application/index.html
+++ b/LLM-Application/index.html
@@ -158,18 +158,18 @@
@@ -308,8 +308,8 @@ 解决思路
chunk_overlap
指两个块之间共享的字符数量,用于保持上下文的连贯性,避免分割丢失上下文信息
-
-
+
+
Q1:如何加强搜索结果的多样性?
A1:最大边际相关性
Maximum marginal relevance
@@ -393,8 +393,8 @@
Python Notes
diff --git a/LLM-Finetune/index.html b/LLM-Finetune/index.html
deleted file mode 100644
index 7d47780..0000000
--- a/LLM-Finetune/index.html
+++ /dev/null
@@ -1,713 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-LLM-Finetune | 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 闻
-
-
- Yesterday is history, tomorrow is a mystery but today is a gift.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- LLM-Finetune
-
-
-
-
-
-
-
-
- 发表于
-
-
-
-
-
-
-
- 更新于
-
-
-
-
-
-
- 大模型微调具体实现方法,包括数据预处理、数据加载、微调模型构建、模型训练、加速训练方法、保存微调结果、加载 Adapter、推理测评、可交互 Cli等
-
-
-
-
-
-
- 微调结果测评
-数据集
-基准数据集:MMLU、CMMLU、C-Eval
-微调数据集:
-
-
-
-
-
-
-
-名称
-描述
-
-
-
-
-NaturalConv
-来自腾讯,语料库包含了来自6个领域的19.9K对话和400K话语,平均回合数为20.1【数据集、脚本】
-
-
-COIG-CQIA
-来自零一万物,以中文互联网获取到的问答及文章作为原始数据,经过深度清洗、重构及人工审核构建而成,注重数据的来源、质量与多样性【数据集】
-
-
-alpaca-gpt4-data-zh
-GPT-4生成的中文数据集,可用于LLM的指令精调和强化学习等【数据集】
-
-
-
-
-
-
-
-测评指标
-
-
-
-
-
-
-
-指标
-含义
-
-
-
-
-BLEU-N
-计算生成语句与相应的参考语句的 n-gram
-精确率,匹配的n-gram总数除以系统生成语句的总n-gram数
-
-
-DIST-N
-生成文本的多样性,Distinct-n越大表示生成的多样性越高
-
-
-ROUGE-N
-着重于信息完整性和涵盖程度,将匹配的n-gram总数除以参考语句中的总n-gram数
-
-
-ROUGE-L
-衡量模型生成文本与参考文本之间最长公共子序列的匹配程度,值越高表示生成的文本与参考文本越相似
-
-
-runtime
-预测运行时间,表示模型生成一批样本所花费的总时间。单位通常为秒。
-
-
-samples_per_second
-每秒生成的样本数量,表示模型每秒钟能够生成的样本数量。通常用于评估模型的推理速度
-
-
-steps_per_second
-表示模型每秒钟能够执行的步骤数量。对于生成模型,一般指的是每秒钟执行生成操作的次数
-
-
-
-BLUE-N 公式:
-\[BLEU=BP\times\exp\left(\sum_{n=1}^{N}W_{n}\times\log
-P_{n}\right)\\BP=\left\{\begin{matrix}1&&lc>\mathrm{lr}\\\exp(1-lr/lc)&&lc\leq
-lr\end{matrix}\right.\]
-其中,Pn 指 n-gram 的精确率,Wn 指 n-gram
-的权重,一般设为均匀权重,即对于任意 n 都有 Wn = 1/N。BP
-是惩罚因子,如果译文的长度小于最短的参考译文,则 BP 小于
-1。lc机器翻译的长度,lr最短的参考译文的长度。
-ROUGE-N 公式:
-\[\text{ROUGE -
-N}=\frac{\sum_{S\in\{ReferenceSummaries\}}\sum_{gram_N\in
-S}Count_{match}(gram_N)}{\sum_{S\in\{ReferenceSummaries\}}\sum_{gram_N\in
-S}Count(gram_N)}\]
-其中,公式的分母是统计在参考译文中 N-gram
-的个数,而分子是统计参考译文与机器译文共有的 N-gram 个数。
-DIST-N 公式:
-\[Distinct(n)=\frac{Count(unique-ngram)}{Count(word)}\]
-开源工具
-
-
-
-项目名称
-
-
-
-
-
-LLaMaFactory
-
-
-
-axolotl
-
-
-
-functionary
-
-
-
-
-
-
-
-
-测评数据
-在 Qwen-1_8B-Chat 上微调 NaturalConv (转换成 shareGPT 格式)
-
-训练 500 轮对话,测试 50 轮对话
-
-
-
-
-微调方法
-bleu-4
-rough-1
-rough-2
-rough-l
-
-
-
-
--
-4.67
-21.60
-3.24
-19.27
-
-
-LoRA
-4.95
-24.25
-2.32
-19.69
-
-
-AdaLoRA
-4.67
-21.85
-3.24
-19.51
-
-
-VeRA
-
-
-
-
-
-
-
-指令数据格式
-alpaca 格式数据
-[
{
"instruction": "用户指令(必填)",
"input": "用户输入(选填)",
"output": "模型回答(必填)",
"system": "系统提示词(选填)",
"history": [
["第一轮指令(选填)", "第一轮回答(选填)"],
["第二轮指令(选填)", "第二轮回答(选填)"]
]
}
]
-sharegpt 格式数据,支持多角色对话
-[
{
"conversations": [
{
"from": "human",
"value": "用户指令"
},
{
"from": "gpt",
"value": "模型回答"
}
],
"system": "系统提示词(选填)",
"tools": "工具描述(选填)"
}
]
-llamafactory 配置样例
-"NaturalConv": {
"file_name": "/home/wzw/Project/llm-fine-tuning/data/dialog_release_format.json",
"formatting": "sharegpt",
"columns": {
"messages": "content"
},
"tags": {
"role_tag": "from",
"content_tag": "value",
"user_tag": "A",
"assistant_tag": "B"
}
}
-输入样例
-{'dialog_id': '0_2',
'document_id': 0,
'content': [{'from': 'A', 'value': '嗨!'},
{'from': 'B', 'value': '你好。'},
{'from': 'A', 'value': '你最近有听说过《中国女排》这部电影嘛?'},
{'from': 'B', 'value': '不好意思唉,我已经很久没有去关注电影了,你可以给我讲述一下这是什么电影嘛。'},
{'from': 'A', 'value': '当然可以了,这部片子主要是讲述了女排这些年的历史,而且听说这部戏里面的郎平教练会是巩俐来出演。'},
{'from': 'B', 'value': '真的啊,我觉得我都好久没有看过巩俐的电影了,我突然好期待这部电影啊。'},
{'from': 'A', 'value': '是呀,我觉得这部《中国女排》应该能拿下很高的收视率。'},
{'from': 'B', 'value': '肯定会的,毕竟这也是中宣部与国家体育总局联合拍摄,肯定是会很好看的。'}
]}
-读入格式化处理
-[[{'role': 'user', 'content': '嗨!'}, {'role': 'assistant', 'content': '你好!'}, {'role': 'user', 'content': '你最近也在看这部电视剧吗?'}, {'role': 'assistant', 'content': '还好,我刚刚看了庆余年觉得还蛮好看,来搜搜张若昀的其他作品。'}, {'role': 'user', 'content': '哈哈哈,你说最近很火的庆余年吗?'}, {'role': 'assistant', 'content': '对啊,现在我上班大家都在议论呐,真的挺搞笑的。'}, {'role': 'user', 'content': '我看了一些,庆余年还在连载啊。'}, {'role': 'assistant', 'content': '就是说啊,但是真的好搞笑啊,特别是他在电视里第一次看到李沁的表情。'}, {'role': 'user', 'content': '真的演的挺好的,都看呆了。'}, {'role': 'assistant', 'content': '很真实的表情啊,他不是最近还和唐艺昕结婚了吗?'}, {'role': 'user', 'content': '是啊,唐艺昕和他两个人简直太甜了。'}, {'role': 'assistant', 'content': '现在结婚了也好幸福啊,两个颜值都超级高,而且还在一起这么久了。'}, {'role': 'user', 'content': '她们两个的相遇好像好是车祸。'}, {'role': 'assistant', 'content': '是啊,张若昀还在家里面摆了一个红绿灯呐。'}, {'role': 'user', 'content': '所以啊,是真的很幸福,两个人都挺浪漫的,现在还结婚了。'}, {'role': 'assistant', 'content': '是啊,这个庆余年身边的人都在追,李沁在里面真的好漂亮啊。'}
-qwen 指令微调格式化
-<|im_start|>user
是呢,只有父母负起责任,在孩子成长的每一个时刻都起到对他们的关心爱护和监督的责任,让孩子感受到家长的爱,这样的孩子才会健康自信的成长。<|im_end|>
<|im_start|>assistant
嗯嗯是呢,在爱里长大的孩子才更有正能量。<|im_end|>
<|im_start|>user
嗯,对,我还有点儿事儿,先走了,拜拜。<|im_end|>
<|im_start|>assistant
拜拜。<|im_end|><|im_start|>system
You are a helpful assistant.<|im_end|>
<|im_start|>user
晚上好!<|im_end|>
<|im_start|>assistant
晚上好!<|im_end|>
<|im_start|>user
看你火急火燎的,是和男朋友约了吃饭吗?<|im_end|>
<|im_start|>assistant
哪有,马上六点半,中超的天王山之战就要开始了,我可不能错过直播。<|im_end|>
<|im_start|>user
没看出来你还是个球迷啊,我听说今晚是广州恒大打上海上港,一个第一,一个第二,确实值得看。<|im_end|>
<|im_start|>assistant
我从初中开始就是上港队的球迷,毕竟我是上海人,肯定要支持本土的球队。<|im_end|>
<|im_start|>user
我倒是无所谓哪只球队,因为我看足球只会看踢得精不精彩,主要是为了打发时间。<|im_end|>
<|im_start|>assistant
那你应该理解不了我的心情,因为今晚这场比赛是真的对中超冠军归属起决定性作用的。<|im_end|>
<|im_start|>user
怎么了,不是还有几轮才会结束中超联赛嘛,现在就要决出冠亚军了?<|im_end|>
<|im_start|>assistant
对啊,排名前三的恒大、上港、国安,远远领先后面的其他球队,所以其实就他们三支球队在争夺冠军了。<|im_end|>
<|im_start|>user
怪不得,这贫富差距也太大了,外援多的队伍就是不一样。<|im_end|>
<|im_start|>assistant
确实,在本土球员水平参差不齐的前提下,外援又多又好的球队的确有优势。<|im_end|>
<|im_start|>user
国安有李可,上港有艾哈迈多夫,恒大有泽哈维,可谓棋逢对手。<|im_end|>
<|im_start|>assistant
-LF参数
-Data 参数
-
-
-
-
-
-
-
-
-参数名
-数据类型
-描述
-
-
-
-
-template
-Optional[str]
-构建提示词时使用的模板
-
-
-dataset
-Optional[str]
-数据集
-
-
-eval_dataset
-Optional[str]
-测试数据集
-
-
-dataset_dir
-str
-数据文件夹的路径
-
-
-cutoff_len
-int
-输入序列分词后的最大长度
-
-
-train_on_prompt
-bool
-不在提示词的部分添加掩码(仅适用于 SFT)
-
-
-mask_history
-bool
-仅学习最后一轮对话(仅适用于 SFT)
-
-
-streaming
-bool
-流式读取数据集
-
-
-buffer_size
-int
-在数据流中随机采样的缓冲区的大小
-
-
-mix_strategy
-Literal["concat", "interleave_under", "interleave_over"]
-数据集混合时使用的策略(合并/交错)(欠采样/过采样)
-
-
-interleave_probs
-Optional[str]
-从数据集中抽样数据的概率。使用逗号分隔多个数据集
-
-
-overwrite_cache
-bool
-覆盖缓存的训练集和评估集
-
-
-preprocessing_num_workers
-Optional[int]
-用于预处理的进程数
-
-
-max_samples
-Optional[int]
-最多选择的数据集样例数
-
-
-eval_num_beams
-Optional[int]
-在生成任务中控制束搜索的宽度,直接影响生成文本的质量和计算成本
-
-
-ignore_pad_token_for_loss
-bool
-在损失计算中是否忽略 pad 标签对应的 token
-
-
-val_size
-float
-验证集占总数居的大小,一个范围为[0,1)
的浮点数
-
-
-packing
-Optional[bool]
-在训练中启用序列打包。将在预训练中自动启用
-
-
-neat_packing
-bool
-避免注意力交叉污染
-
-
-tool_format
-Optional[str]
-format 的工具格式
-
-
-tokenized_path
-Optional[str]
-保存或加载 tokenization 的路径
-
-
-
-Q&A
-[Q] LLM padding left or right
-一句话总结:DecoderOnly 模型,在 Train 的时候统一使用 right
-padding,而在 Generate 的时候统一使用 left padding。
-
-- generation的时候如果使用right
-padding是会出错的,原因是generate的过程中需要从最后一个token的probability中sample下一个token,但right
-padding时最后一个token是pad,所以会出现问题
-- 有些tokenizer使用的是absolute position id,导致非padtoken的position
-id不是从0开始的,如果不使用left padding 会出错
-
-[Q] 什么是 unsloth?
-微调训练LLM时,可以显著提升速度,且减少显存占用,目前开源部分只支持单机版微调
-[Q] 什么是 deepspeed?
-简而言之,ds 就是切片,以时间换空间。
-ZeRO-1是将优化器分片,ZeRO-2是在ZeRO-1的基础上将梯度分片,ZeRO-3是在ZeRO-2的基础上将权重分配,ZeRO-affload,将刚刚经过ZeRO切片的梯度、权重、优化器直接丢到内存
-[Q] 什么是 S2ATTN
-[Q] 什么是旋转位置编码(RoPE)
-
-[Q] 什么是 GELU
-[Q] LLama3 的优化点
-位置编码:
-
-- 改进的相对位置编码,如相对偏移编码
-- 旋转位置编码(RoPE),以提高长序列处理能力。
-
-激活函数:
-
-- 继续使用或改进 GELU 激活函数。
-- 采用 Swish 激活函数,提供平滑且非单调的变换。
-- 引入自适应激活函数,动态调整激活函数形状以适应不同任务。
-
-[Q] Varlen Attention Link
-变长注意力机制确保了无论是否采用“数据集拼接”策略,模型训练的行为保持一致性
-优化点
-llamafactory 开源模型微调 pipeline 的优化点
-数据截断
-问题背景 #4009
-监督学习 pack
-多条数据时,超过输入长度上限的部分直接截断,导致部分样本丢失
-解决方法
-贪心背包算法,尽可能多的 pack 多条对话数据到一轮 batch 中,并将
-packed_input_ids
补齐到 cutoff_len
-注意力交叉污染
-问题背景 #4224
-sft 训练中,如果每个 batch 中都是多轮对话,则需要在预处理过程中,mask
-多轮对话数据中 assistant 的内容(preprocess_packed_supervised_dataset
-方法),以达到同时训练一整轮对话的效果;
-sft_packing 的实现只是单纯将不同的单轮 sft
-数据拼接到一起,然后分别计算 target 部分的 loss,无法保证每条对话的单轮
-sft 在计算 loss 的时候不会受到其他拼接的上文影响;
-解决方法
-新增 neat_packing
参数,用不同的 mask 区分同一 batch
-内不同轮对话的 attention_masks
,用于支持 eager 和 sdpa 两种
-attention
-加速计算方法,使其在注意力计算过程中可以通过块对角注意力(Block Diagonal
-Attention)加快计算;
-
-Eager:通过提前计算和存储中间结果,优化计算过程,提高效率。
-SDPA:通过缩放内积和 softmax
-函数计算注意力权重,提高了注意力机制的稳定性和效率。
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0%
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/LLM-PEFT/image-20240903102620304.png b/LLM-PEFT/image-20240903102620304.png
new file mode 100644
index 0000000..30ce637
Binary files /dev/null and b/LLM-PEFT/image-20240903102620304.png differ
diff --git a/LLM-PEFT/index.html b/LLM-PEFT/index.html
index 2c25112..0269a04 100644
--- a/LLM-PEFT/index.html
+++ b/LLM-PEFT/index.html
@@ -47,11 +47,12 @@
+
-
+
@@ -178,18 +179,18 @@
@@ -257,7 +258,7 @@
更新于
-
+
@@ -355,8 +356,8 @@ 背景
当下流行 PEFT 结构一览:
常用的参数高效微调方法:
-
-
+
+
- Selective:选择模型中的一部分参数进行微调;
- Additive:冻结模型原有参数,微调新增的参数和模块;
@@ -464,8 +465,8 @@
BitFit
LN-Tuning
单独调整 LayerNorm 模块的 weight 和 bias
参数,训练参数量少,便于和其他的微调方法一起使用。
-
-
+
+
实验表明,Prefix-Tuning + LN 的微调效果最佳。
优势
@@ -482,8 +483,8 @@ Prompt-Tuning
可训练模块:Embedding(virtual_token, hidden_size)
-
-
+
+
优势:
- 简化了不同任务之间的转换和迁移,使得模型可以更加灵活地应用于各种场景;
@@ -521,8 +522,8 @@ Prefix Tuning
输入到下一次的计算中,这一技术又被称之为 kv cache。
# 可训练模块:Embedding + MLP,与 P-Tuning 的区别是 prefix 映射到了模型的隐藏层上
self.embedding = torch.nn.Embedding(num_virtual_tokens, token_dim)
self.transform = torch.nn.Sequential(
torch.nn.Linear(token_dim, encoder_hidden_size),
torch.nn.Tanh(),
torch.nn.Linear(encoder_hidden_size, num_layers * 2 * token_dim),
)
# transformers.models.bloom.BloomAttention 源码实现
if layer_past is not None:
past_key, past_value = layer_past
key_layer = torch.cat((past_key, key_layer), dim=2)
value_layer = torch.cat((past_value, value_layer), dim=1)
-
-
+
+
优势:
- 拟合速度快;
@@ -539,8 +540,8 @@ P-Tuning V2
最大的区别在于:移除重参数化的编码器,即没有MLP。
通过共享连续提示同时优化多个任务,多任务学习是 P-Tuning v2
的可选功能,可以通过多任务共享前缀进一步提升性能。
-
-
+
+
优势:
- 移除重参数化的编码器,对于较小的模型,会影响模型的表现,且对于大模型提升不大;
@@ -578,8 +579,8 @@ LoRA
具体而言,冻结预训练的模型权重,并将可训练的秩分解矩阵注入到大模型的每个
Attention
层的线性变换中。输入分别与原始权重和两个低秩矩阵进行计算,共同得到最终结果。
-
-
+
+
训练完成后,可以将两个低秩矩阵与原始模型中的权重进行合并,合并后的模型与原始模型无异,避免了推理期间
Prompt 系列方法带来的额外计算量。
IA3
Linear 层 (hidden_size, hidden_size*3),IA3
的可训练参数同时作用于三者之上。
-
-
+
+
优势:
- 调节的参数少于 Lora,微调效果也不错;
@@ -651,16 +652,16 @@ AdaLora
P-I\right\|_\mathrm{F}^2+\left\|QQ^\top-I\right\|_\mathrm{F}^2\]
最终,微调的损失函数为
重要结论
-
-
+
+
AdaLoRA 总是倾向于将更多预算分配给 FFN 和顶层,即 FFN
模块和顶层的权重矩阵对于模型性能更为重要。
Adapter Tuning
在 Transformer Layer 的 Self-Attetion 和 FFN
之后插入一个先降维再升维的 MLP(以及一层残差和Layer
Normalization)来学习模型微调的知识。
-
-
+
+
图中,Adapter 即插入的 FF Down + 非线性激活层 + FF
up。在微调过程中,固定原始模型的参数,只微调适配层。
不足:
@@ -678,10 +679,10 @@ AdapterFusion
分离知识提取和知识组合这两个阶段,可以以非破坏性的方式有效地利用从多个任务中学到的表示。知识提取阶段学习Adapter
任务特定参数,其封装了特定于任务的信息;知识组合阶段将不同任务的 Adapter
组合到一起。
-
-
-
-
+
+
+
+
AdapterFusion
组件将在不同任务上训练的多个适配器的输出作为输入,并学习编码信息的参数化混合器,应用于单个任务多
Adapter 的场景和多任务混合的场景。单任务场景中,可以多个 Adapter
@@ -695,8 +696,8 @@
AdapterFusion
AdapterDrop
该方法在不影响任务性能的前提下,动态高效的移除冗余的
Adapter,可以尽可能地减少模型的参数量,提高模型在反向传播(训练)和正向传播(推理)时的效率。
-
-
+
+
优势:
- 通过从较低的 Transformer 层删除可变数量的Adaper来提升推理速度。
@@ -704,16 +705,16 @@
AdapterDrop
MAM Adapter
分解了最先进的参数高效迁移学习方法的设计,并提出了一个在它们之间建立联系的统一框架。
-
-
+
+
UniPEFT
不同的 PEFT
方法在同一任务上的表现不同,因此为特定任务选择最合适的方法并非易事,特别是考虑到新
PEFT 方法和任务数量的快速增长。鉴于模型的多样性和模型选择的难度,UniPEFT
提出了一个统一的框架 UniPEFT,它将不同的PEFT
方法作为子模块,并通过门控机制学习激活最适合当前数据或任务设置的方法。
-
-
+
+
PISSA
peft 包中有 PISSA 初始化方法
@@ -734,8 +735,8 @@
PISSA
A、B,冻结参数量较大的残差矩阵 \[\text{Wres}\]
,就达成了用很少的参数近似全参数微调的效果。
-
-
+
+
优势
- 相比于 LoRA,收敛速度更快,性能更好
@@ -743,8 +744,8 @@ PISSA
VeRA
区别于Lora,Vera 将 A 和 B
矩阵按照高斯分布随机初始化并冻结,只训练两组直接和A、B相乘的一维参数。虽然直观看起来A和B像两个无用的张量,但实际上它们仍然是必不可少的,实验证明即使是随机张量也可以用于微调。
-
-
+
+
优势:
- VeRA显著减少了可训练参数的数量(LoRA相比参数减少了10倍),而精度没有损失;
@@ -753,8 +754,8 @@ VeRA
DoRA
将每个高阶矩阵都分解为 1*k 大小矩阵和 d*k 方向矩阵的乘积,LoRA
倾向于同时改变幅度和方向,DoRA可以更容易地将二者分开调整,或者用另一个的负变化来补偿一个的变化。
-
-
+
+
SLORA
一个 GPU 上并行执行多个 lora adapters 的微调
S-LoRA 能够在单个 GPU 上或跨多个 GPU 以较小的开销为数千个 LoRA
@@ -780,8 +781,8 @@
LoRA+
LoRA 中的适配器矩阵 A 和 B 以相同的学习率更新,实验表明对 A 和 B
使用相同的学习率并不能实现有效的特征学习,LoRA+ 通过精心选择的固定比率为
LoRA 适配器矩阵 A 和 B 设置不同的学习率,纠正 LoRA 的这种次优性。
-
-
+
+
LongLoRA
LongLoRA
扩展了模型的上下文,同时保留了其原始架构,并且与大多数现有技术兼容。一方面,虽然推理过程中需要密集的全局注意力,但微调过程更需要稀疏的局部注意力实现有效且高效反向传播。由此,该方法提出转移稀疏注意力
@@ -794,11 +795,13 @@ RsLoRA
LoRA通过在选定层添加可训练的低秩Adapter来实现参数有效的微调。每个LoRA由两个低秩矩阵乘积组成,并乘以一个与秩相关的因子,传统的LoRA采用“直接除以秩的因子”的方法过于激进,导致高秩Adapter的学习速度减缓,性能受限。因此,在实际应用中,LoRA通常仅限于使用非常低的秩。
rsLoRA深入研究了 LoRA 的缩放因子对学习过程的影响,并证明了 LoRA
应该除以秩的平方根而不是秩,通过使用较大的秩在训练期间增加计算资源以获得更好的微调性能,同时不改变推理计算成本。
+
+
LLaMA Pro
该方法提出的Block
Expansion方法,即块扩展,在保持预训练模型参数不变的基础上,增加新的block来适应新的训练任务。这些新加入的block与原有block协同工作,既保留了模型原有的知识,又能够适应新的训练数据和任务需求。
-
-
+
+
方法性能对比
从方法类型、是否存储高效、是否内存高效、反向传播成本、推理开销五个维度比较
PEFT 方法:
diff --git a/LLM-RAG-Langchain/image-20240815155230728.png b/LLM-RAG-Langchain/image-20240815155230728.png
new file mode 100644
index 0000000..18372e7
Binary files /dev/null and b/LLM-RAG-Langchain/image-20240815155230728.png differ
diff --git a/LLM-RAG-Langchain/image-20240820085502013.png b/LLM-RAG-Langchain/image-20240820085502013.png
new file mode 100644
index 0000000..7d7024c
Binary files /dev/null and b/LLM-RAG-Langchain/image-20240820085502013.png differ
diff --git a/LLM-RAG-Langchain/image-20240820085527076.png b/LLM-RAG-Langchain/image-20240820085527076.png
new file mode 100644
index 0000000..5aa3d1e
Binary files /dev/null and b/LLM-RAG-Langchain/image-20240820085527076.png differ
diff --git a/LLM-RAG-Langchain/index.html b/LLM-RAG-Langchain/index.html
index 36ab1e5..3e2ab1c 100644
--- a/LLM-RAG-Langchain/index.html
+++ b/LLM-RAG-Langchain/index.html
@@ -27,8 +27,10 @@
+
+
-
+
@@ -142,7 +144,7 @@
-
+
@@ -155,18 +157,18 @@
@@ -234,7 +236,7 @@
更新于
-
+
@@ -282,6 +284,9 @@ 概念
从原始数据到响应生成最常见的流程图如下:
+RAG 测评指标:
+
+
Langchain
LangChain
采用组件化设计的思想,将语言模型开发分为多个子任务:对话历史
@@ -295,16 +300,15 @@ Langchain
还有额外的功能如:用量记录、数据流返回 acall、缓存
SQLite、支持多种模型接口 OpenAI、向量数据库 langchain.vectorstores
模型链 Chain
-
-链(Chains)通常将大语言模型(LLM)与其他组件组合在一起来构建更复杂的链。
-
+链(Chains)通常将大语言模型(LLM)与其他组件组合在一起来构建更复杂的链。比如,LLMChain
+允许我们对创建的 Prompt 使用大模型;
Chain 基类是所有 Chain
对象的起点,处理输入、输出、历史和回调等功能,支持同步和异步调用,内部组件也可以通过回调进行交互;
自定义 Chain 需要继承 Chain 基类,实现 _call/_acall
方法定义调用逻辑;
对话历史 Memory
根据需求可以将历史存储在
-SQLite、qdrant、本地内存等地方,下面代码将历史存储在缓存中:
+SQLite、qdrant等数据库中,下面代码将历史存储在缓存中:
from langchain.memory import ConversationBufferMemory
memory = ConversationBufferMemory(
memory_key="history", # 与 prompt 的输入变量保持一致。
return_messages=True # 将以消息列表的形式返回聊天记录,而不是单个字符串
)
提示工程 Prompt
Prompt 很少是写明不变的,通常从多个组件构建而成的。 PromptTemplate
@@ -322,11 +326,77 @@
索引 Indexes
LangChain有许多模块可帮助您加载、结构化、存储和检索文档。详见
代理 Agents
-代理使用LLM来确定采取哪些行动以及顺序。
+代理涉及 LLM
+做出行动决策(Observation)、执行该行动(Action)、查看一个观察结果(Observation),并重复该过程直到完成。LangChain
+提供了一个标准的代理接口,一系列可供选择的代理,以及端到端代理的示例。
- 使用工具并观察其输出
- 生成相应返回给用户
+文本匹配任务
+
+RAG
+将匹配分为多个阶段,可分为:粗召回、细召回、粗排序、精排序、再排序。该任务包括多个子任务,如文本相似度计算、问答匹配、对话匹配,类似于RAG的文本抽取式阅读理解和多项选择
+
+RAG 采取召回(IF-IDF、BM25)、粗排(双塔 Bert
+模型、Sentence-Bert、text2vec、uniem)、精排(单塔 Bert
+模型),得到相关的文档输入 LLM 中。
+基于词匹配
+
+传统方法将词匹配、词距等分数作为特征,用线性模型或树模型预测相关性,效果远不如深度学习。
+
+将查询文本分词,词在文档 d 中出现的次数越多,则查询文本和文档 d
+越相关
+IF-IDF
+概念
+词袋模型:(bag of words)只考虑词频,不考虑词的顺序和上下文
+词频 TF:每个词在文档中出现的次数的集合;\(\sum_{t\in\mathcal{Q}}\operatorname{tf}_{t,d}\)
+
+- 缺陷:文档越长,TF 越大;解决:除以文档长度,归一化;\(\sum_{t\in
+Q}\frac{\mathrm{tf}_{t,d}}{l_d}\)
+- 缺陷:每个词重要性不同;解决:语义重要性(term
+weight),在文档中出现的越多,权重越低;
+
+文档频率 DF:词 t 在多少文档中出现过,定义“词”区别文档的能力;
+逆文档排序 IDF:衡量一个词在 N 个文档中的重要性;\(\mathrm{idf}_t=\mathrm{log}\frac
+N{\mathrm{df}_t}\)
+\(\mathrm{TFIDF}(\mathcal{Q},d) =
+\sum_{t\in\mathcal{Q}} \frac{\mathrm{tf}_{t,d}}{l_{d}} \cdot
+\mathrm{idf}_{t}.\)
+其中,查询词q的分词后得到 Q 集合,它与文档 d 的相关性用 TF-IDF
+衡量;结果还取决于所采取的分词算法;
+BM25
+IF-IDF 的变种,k 和 b 是参数(通常设置为 k∈[1.2, 2],b=0.75)
+\(\sum_{t\in
+Q}\frac{\mathrm{tf}_{t,d}\cdot(k+1)}{\mathrm{tf}_{t,d}+k\cdot\left(1-b+b\cdot\frac{l_d}{\mathrm{mean}(l_d)}\right)}\cdot\ln\left(1+\frac{N-\mathrm{df}_t+0.5}{\mathrm{df}_t+0.5}\right)\)
+基于词距
+两个词在文档中出现位置之间,间隔的词越少越可能相关;
+简而言之,查询词切分后的 term
+在文档中出现的次数越多越好,任意两个词之间的距离越近越好;
+eg:OkaTP
+基于深度学习
+基于交互策略的单塔模型 准确度更高
+Bert 输出 similarity,二分类任务(相似/不相似)
+基于向量匹配的双塔模型 速度更快
+Bert 输出 Sentence_Embedding,拟合 cos_Similarity(回归任务)
+评价指标
+二分类评价指标 AUC
+
+
+可信度 RAG
+当检索返回的结果有错误或信息丢失时,会导致LLM回复出现幻觉。
+为解决这个问题的三个指标:可信度(Faithfulness)、答案相关性(Answer
+Relevance)、上下文相关性(Context Relevance)
+Query 预处理
+同义Query,
+意图识别
+召回
+索引技术:倒排索引、压缩倒排索
+检索模型:BM25、BERT
+引入上下文信息,更好地理解用户意图
@@ -343,8 +413,8 @@ 代理 Agents
diff --git "a/categories/Java\345\274\200\345\217\221/index.html" b/LLM-RLHF/index.html
similarity index 73%
rename from "categories/Java\345\274\200\345\217\221/index.html"
rename to LLM-RLHF/index.html
index a38b743..b344f3f 100644
--- "a/categories/Java\345\274\200\345\217\221/index.html"
+++ b/LLM-RLHF/index.html
@@ -19,25 +19,27 @@
-
-
-
-
+
+
+
+
-
+
+
+
-
+
-
+
-分类: Java开发 | 闻
+LLM-RLHF | 闻
@@ -149,18 +151,18 @@
@@ -181,90 +183,96 @@
-
+
+
+
+
-
-
-
- Java开发
- 分类
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LLM-RLHF
-
+
+
+
+
+
+
+ 发表于
-
- 2024
-
-
-
-
-
-
+
+
-
-
- Rpc 中间件
-
-
+
+
-
-
-
+ LLM人工对齐算法
+
+
-
-
-
-
-
+
+
+
+
-
-
-
+
+
+
-
-
-
-
-
+
+
+
+
+
+ LLM
+
+
+
+
+
+
+
+
+
-
-
-
-
-
diff --git "a/tags/Java\346\225\260\346\215\256\347\273\223\346\236\204/index.html" b/LLM/index.html
similarity index 70%
rename from "tags/Java\346\225\260\346\215\256\347\273\223\346\236\204/index.html"
rename to LLM/index.html
index dc05ddd..bf1c411 100644
--- "a/tags/Java\346\225\260\346\215\256\347\273\223\346\236\204/index.html"
+++ b/LLM/index.html
@@ -19,25 +19,27 @@
-
-
-
-
+
+
+
+
-
+
+
+
-
+
-
+
-标签: Java数据结构 | 闻
+LLM | 闻
@@ -149,18 +151,18 @@
@@ -181,50 +183,97 @@
-
+
+
+
+
-
-
-
- Java数据结构
- 标签
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LLM
-
+
+
+
+
+
+
+ 发表于
-
- 2024
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+大模型核心技术点在于训练资源、数据清洗和数据配比等,其难点或许不在于模型训练和模型结构搭建
+
+前缀语言模型 Encoder-Decoder
+ChatGLM
+掩码语言模型 自编码模型 Encoder-Only
+因果语言模型 自回归模型 Decoder-Only
+
-
-
-
-
-
+
+
+
-
+
+
+
+
+
+
+ LLM-RLHF
+
+
+
+
+ [paper]PAFT
+
+
+
+
+
+
+
+
+
-
-
-
-
-
diff --git a/JUC/index.html b/Linux-Tool/index.html
similarity index 51%
rename from JUC/index.html
rename to Linux-Tool/index.html
index 3566835..f61d1ae 100644
--- a/JUC/index.html
+++ b/Linux-Tool/index.html
@@ -19,32 +19,28 @@
-
+
-
-
+
+
-
+
-
-
-
-
-
+
+
-
+
-
-
+
-
+
-Java 并发基础 | 闻
+Linux-Tool | 闻
@@ -144,7 +140,7 @@
-
+
@@ -157,18 +153,18 @@
@@ -200,7 +196,7 @@
-
+
@@ -213,12 +209,12 @@
-
-
+
+
- Java 并发基础
+ Linux-Tool
- JMM、ThreadLocal
+ Linux高效工具的使用方法
-
-ThreadLocal
-每一个线程都有自己的专属本地变量,通过空间换时间的方式避免并发下线程安全问题
+ Vim
+基本模式切换
-- 完整的一次请求处理,于唯一一个线程中执行,可以通过 ThreadLocal
-共享数据
-- ThreadLocal.set 方法是将值存储到 Thread 线程本身的
-ThreadLocalMap 里面
+i
:进入插入模式,从光标前插入文本。
+a
:进入插入模式,从光标后插入文本。
+Esc
:退出插入模式,回到正常模式。
+v
:进入可视模式,用于选择文本块。
+V
或
+vv
:进入可视行模式,选择整行文本。
+Ctrl + v
:进入可视块模式,选择矩形区域。
-原理
-public class ThreadLocal<T> {
static class ThreadLocalMap {
static class Entry extends WeakReference<ThreadLocal<?>> {
Object value;
Entry(ThreadLocal<?> k, Object v) {
super(k);
value = v;
}
}
// 存放数据
private Entry[] table;
}
}
-整体结构图
-
-
-引用关系图
-
-
-Q&A
-Entry的key为什么设计成弱引用?
-ThreadLocal 变量生命周期结束后,ThreadLocal 对象就可以被回收;
-ThreadLocal为什么会导致内存泄露,如何解决?
-虽然 get、set 或 remove 方法会回收 key 为 null 的 value
-值,但是如果没有调用这些方法,Entry 和ThreadLocalMap
-将会长期存在下去,会导致内存泄露;
-使用完 ThreadLocal 对象之后,调用 remove 方法;
-ThreadLocal 是如何定位数据的?
-int i = key.threadLocalHashCode & (len-1);
-如果有冲突就通过线性探测再散列,直到找到空 bin;
-
-其他Hash冲突解决方法:开放寻址法(再散列)、拉链法
-
-ThreadLocal 是如何扩容的?
-父子线程如何共享数据?
-InheritableThreadLocal:初始化时会拷贝一份父线程中 ThreadLocal
-值,到子线程 InheritableThreadLocal 中;
-ThreadLocal 作为成员变量时,为什么定义成 static
-更好?
-将 ThreadLocal 定义为 static 可以确保所有线程都访问同一个 ThreadLocal
-实例,但它们各自存储的数据是独立的;
-确保它们的生命周期与线程的生命周期一致,而不是与类的实例的生命周期一致;
-使用 InheritableThreadLocal
-时,如果父线程中重新set值,在子线程中能够正确的获取修改后的新值吗?
-不会影响到已经存在的子线程中 InheritableThreadLocal
-的值,子线程将保持它在创建时从父线程中继承的原始值;
-JMM
+光标移动
-抽象了 happens-before
-原则来解决这个指令重排序问题,保证多线程环境下数据的一致性和可见性。
-抽象了线程和主内存之间的关系,提供一套内存模型以屏蔽系统差异
+w
:光标移动到下一个单词的开头。
+b
:光标移动到上一个单词的开头。
+0
:移动到行首。
+$
:移动到行尾。
+gg
:移动到文件的第一行。
+G
:移动到文件的最后一行。
+H
:移动到屏幕的顶部。
+M
:移动到屏幕的中部。
+L
:移动到屏幕的底部。
-概念
-CPU 高速缓存:为解决 CPU 处理速度和内存不匹配的问题;
-指令重排序【编译器优化重排 —> 指令并行重排 —>
-内存系统重排】:指令重排序可以保证串行语义一致,但是没有义务保证多线程间的语义也一致;
-
-内存屏障可以禁止处理器指令发生重排序,从而保障指令执行的有序性。此外,还能保证指令执行的可见性。
-
-happens-before 原则
-前一个操作的结果对于后一个操作是可见的,无论这两个操作是否在同一个线程里
+编辑文本
-- 只要不改变程序的执行结果,编译器和处理器怎么进行重排序优化都行;
-- 会改变程序执行结果的重排序,JMM
-要求编译器和处理器必须禁止这种重排序;
+x
:删除光标所在的字符。
+dw
:删除从光标到单词末尾的内容。
+dd
:删除当前行。
+d$
:删除从光标到行末的内容。
+yy
:复制当前行。
+p
:粘贴到光标之后。
+u
:撤销上一步操作。
+Ctrl + r
:重做撤销的操作。
+r
:替换光标下的字符。
+ciw
:删除光标所在的单词并进入插入模式。
+c$
:删除从光标到行尾的内容并进入插入模式。
-并发的三大特性
-原子性:一次操作或者多次操作,要么所有的操作全部都得到执行并且不会受到任何因素的干扰而中断,要么都不执行
+搜索和替换
-- synchronized、各种 Lock 以及各种原子类;
+/pattern
:向下搜索
+pattern
。
+?pattern
:向上搜索
+pattern
。
+n
:跳到下一个搜索结果。
+N
:跳到上一个搜索结果。
+:s/old/new/g
:将当前行的所有
+old
替换为 new
。
+:%s/old/new/g
:将整个文件中的所有
+old
替换为 new
。
-可见性:当一个线程对共享变量进行了修改,那么另外的线程都是立即可以看到修改后的最新值
+文件操作
-- synchronized、Volatile 以及各种 Lock 实现可见性;
+:w
:保存文件。
+:q
:退出 Vim。
+:wq
:保存并退出。
+:q!
:不保存强制退出。
+:e filename
:打开文件
+filename
。
+:r filename
:在当前文件中插入
+filename
的内容。
-有序性:代码的执行顺序未必就是编写代码时候的顺序
+Screen
+基本命令
-Volatile
-关键字:保证变量的可见性和代码执行的有序性,但无法在多线程读写变量时保证操作原子性;
-内存屏障:Unsafe
类的 fullFence()
-可以避免代码重排序;
+screen
:启动一个新的
+screen
会话。
+screen -S session_name
:启动一个命名为
+session_name
的 screen
会话。
+screen -ls
:列出当前所有的
+screen
会话。
+screen -r
:重新连接到一个
+screen
会话(如果只有一个会话)。
+screen -r session_name
:重新连接到一个名为
+session_name
的 screen
会话。
+screen -d session_name
:在其他地方的终端断开某个会话的连接。
+screen -d -r session_name
:强制从其他地方的终端断开并重新连接到
+session_name
会话。
+screen -X quit
:关闭所有
+screen
会话
+
+在 screen
会话中操作
+在 screen
会话中,所有命令都以 Ctrl + a
+开头(表示“前缀键”),然后跟随其他按键来执行操作。
+
+Ctrl + a, X
:关闭当前的分割窗口。
+Ctrl + a, c
:创建一个新的窗口。
+Ctrl + a, n
:切换到下一个窗口。
+Ctrl + a, p
:切换到上一个窗口。
+Ctrl + a, "
:列出当前所有窗口,允许选择切换。
+Ctrl + a, 0-9
:切换到指定编号的窗口(例如
+Ctrl + a, 1
切换到窗口 1)。
+Ctrl + a, d
:将当前
+screen
会话断开(detach),会话继续在后台运行。
+Ctrl + a, A
:重命名当前窗口。
+Ctrl + a, K
:关闭当前窗口。
+Ctrl + a, S
:水平分割当前窗口。
+Ctrl + a, |
:垂直分割当前窗口。
+Ctrl + a, tab
:在分割的窗口间切换焦点。
+Ctrl + a, Q
:关闭除了当前窗口外的所有分割窗口。
+Ctrl + a, X
:关闭当前的分割窗口。
+
+会话管理
+
+Ctrl + a, :quit
或
+Ctrl + a, d
:结束当前 screen
+会话。
+Ctrl + a, :kill
:强制关闭当前窗口。
+exit
:退出当前 screen
+会话。
@@ -347,21 +367,18 @@ 并发的三大特性
diff --git a/Machine-Learning/index.html b/Machine-Learning/index.html
index d1223b2..8396c7a 100644
--- a/Machine-Learning/index.html
+++ b/Machine-Learning/index.html
@@ -35,7 +35,7 @@
-
+
@@ -148,7 +148,7 @@
-
+
@@ -161,18 +161,18 @@
@@ -240,7 +240,7 @@
更新于
-
+
@@ -332,21 +332,25 @@ RLHF
OpenAI 提出的生成领域(Decoder_only)的新训练范式
Policy Gradient
-
-
+
+
RM+PPO
步骤一、预训练语言模型
-
-
+
+
步骤二、训练奖励模型 RM
-
-
+
+
步骤三、用强化学习 PPO 微调
-
-
+
+
DPO
KTO
ORPO
+损失函数
+MSELoss 回归任务
+CrossEntropyLoss 单标签分类
+BCEWithLogitsLoss 多标签分类
Torch
torch.nn.Parameter()
将一个不可训练的 tensor
转换成可以训练的类型 parameter,并将这个 parameter 绑定到这个 module
@@ -364,7 +368,7 @@
Torch
diff --git a/MySQL/243b1466779a9e107ae3ef0155604a17-17146246150216.webp b/MySQL/243b1466779a9e107ae3ef0155604a17-17146246150216.webp
deleted file mode 100644
index c4329db..0000000
Binary files a/MySQL/243b1466779a9e107ae3ef0155604a17-17146246150216.webp and /dev/null differ
diff --git a/MySQL/COMPACT.drawio.png b/MySQL/COMPACT.drawio.png
deleted file mode 100644
index 4dba165..0000000
Binary files a/MySQL/COMPACT.drawio.png and /dev/null differ
diff --git a/MySQL/binlogcache.drawio.png b/MySQL/binlogcache.drawio.png
deleted file mode 100644
index 213ab1a..0000000
Binary files a/MySQL/binlogcache.drawio.png and /dev/null differ
diff --git a/MySQL/bufferpoll_page.png b/MySQL/bufferpoll_page.png
deleted file mode 100644
index 8e5153e..0000000
Binary files a/MySQL/bufferpoll_page.png and /dev/null differ
diff --git a/MySQL/checkpoint.png b/MySQL/checkpoint.png
deleted file mode 100644
index 5641339..0000000
Binary files a/MySQL/checkpoint.png and /dev/null differ
diff --git a/MySQL/freelist.drawio.png b/MySQL/freelist.drawio.png
deleted file mode 100644
index f89dbdd..0000000
Binary files a/MySQL/freelist.drawio.png and /dev/null differ
diff --git a/MySQL/index.html b/MySQL/index.html
deleted file mode 100644
index ae95600..0000000
--- a/MySQL/index.html
+++ /dev/null
@@ -1,1091 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-MySQL | 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 闻
-
-
- Yesterday is history, tomorrow is a mystery but today is a gift.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- MySQL
-
-
-
-
-
- MySQL 基础,包括索引、事务、锁、日志、BufferPool等
-
-
-
-
-
-
- 基础
-SQL 查询语句执行过程
-
-- 连接器:客户端与 Server 层建立连接,管理连接、校验用户身份;
-- 查询缓存:查询语句如果命中查询缓存则直接返回,否则继续往下执行(MySQL
-8.0 已删除该模块)
-- 解析 SQL:通过解析器对 SQL
-查询语句进行词法分析、语法分析,然后构建语法树,方便后续模块读取表名、字段、语句类型;
-- 执行 SQL:
-
-- 预处理阶段:检查表或字段是否存在;将 select * 中的 *
-符号扩展为表上的所有列;
-- 优化阶段:基于查询成本的考虑,
-选择查询成本最小的执行计划;查询优化器;
-- 执行阶段:根据执行计划执行 SQL
-查询语句,从存储引擎读取记录,返回给客户端;
-
-
-MySQL 数据文件
-
-- db.opt,用来存储当前数据库的默认字符集和字符校验规则。
-- table.frm ,存放表结构,在 MySQL
-中建立一张表都会生成一个.frm
-文件,该文件是用来保存每个表的元数据信息的,主要包含表结构定义。
-- table.ibd,存放表数据,
表数据既可以存在共享表空间文件(文件名:ibdata1)里,也可以存放在独占表空间文件(文件名:表名字.ibd)。这个行为是由参数
-innodb_file_per_table 控制的,若设置了参数 innodb_file_per_table 为
-1,则会将存储的数据、索引等信息单独存储在一个独占表空间,从
-MySQL 5.6.6 版本开始,它的默认值就是 1 了,因此从这个版本之后, MySQL
-中每一张表的数据都存放在一个独立的 .ibd 文件。
-
-表空间文件的结构
-
-
-InnoDB 行格式
-共有 Redundant、Compact、Dynamic、Compressed 四种,下图时 Compact
-行格式的结构
-
-InnoDB 页格式
-InnoDB 的数据是按「数据页」为单位来读写的,数据页的默认大小是
-16KB
-
-
-
-
-
-名称
-说明
-
-
-
-
-文件头
-页的信息;两个指针指向上一个/下一个数据页
-
-
-页头
-页的状态信息
-
-
-最小和最大记录
-两个虚拟伪记录,分别表示页中的最小记录和最大记录
-
-
-用户记录
-储存所有的行记录
-
-
-空闲空间
-还没被用到的空间
-
-
-页目录
-用户记录相对位置,页中所有记录的索引
-
-
-文件尾
-校验页是否完整
-
-
-
-数据页中的
-页目录存储各个槽,用户记录按照「主键」顺序组成单向链表,可以通过二分查找法的方式进行检索。
-索引
-索引字段特性分类
-
-- 主键索引
-- 唯一索引
-- 前缀索引
-- 普通索引
-
-索引个数分类
-
-- 单例索引
-- 联合索引:最左匹配原则(MySQL 有查询优化器,所以字段在 where
-子句的顺序并不重要)
-
-
-最左匹配原则:按照最左优先的方式进行索引的匹配,范围查询的字段可以用到联合索引,在遇到范围查询(如
->、<)的时候,就会停止匹配,也就是范围查询的字段可以用到联合索引,但是在范围查询字段的后面的字段无法用到联合索引。注意,对于
->=、<=、BETWEEN、like 前缀匹配的范围查询,并不会停止匹配。
-
-Innodb 采用 B+Tree
-作为索引的优势
-
-MySQL 底层实现的 B+ 树在原有的 B+ 树的基础上做了改动
-
-- 叶子节点采用双向链表连接
-- 所有节点都是 16KB 数据页
-- 非叶子节点中有多少个子节点,就有多少个索引
-
-nosql 的 MongoDB 采用 B
-树实现,适用于大量的单个索引(而不是范围查询)查询的场景;
-
-
-- 查询底层节点的磁盘
-I/O次数少。非叶子节点只存放索引,相比 B
-树,每个非叶子节点能存储更多的索引,树形结构更加矮胖;
-- 插入和删除效率高。非叶子节点中的都是冗余索引,所有索引都在叶子节点中又存储了一次;
-- 树层低,磁盘 I/O 次数少。若每行数据
-1KB,三层最多可存放千万级数据量;
-- 范围查询,磁盘 I/O
-次数少。叶子节点采用双向有序链表连接;其他树结构需要中序遍历,磁盘
-I/O 次数多;
-
-B+Tree 索引结构
-
-- 主键索引/聚簇索引:叶子节点存放实际数据、事务 id、用于事务和 MVCC
-的回滚指针;
-- 二级索引:叶子节点存放主键值;
-
-Explain 执行计划
-数据扫描类型 type
-
-- All:全表扫描;
-- index:全索引扫描;
-- index merge:索引合并。先将使用到的索引先进行求
-交集、并集之后在进行回表;
-- range:索引范围扫描。使用 < 、>、in、between
-等关键词,只检索给定范围的行;
-- ref:非唯一索引等值匹配;
-- eq_ref:唯一索引 多表联查 等值匹配;
-- const:主键或唯一索引 常量 等值匹配;
-
-额外信息 extra
-
-- Using filesort :当查询语句中包含 group by
-操作,而且无法利用索引完成排序操作的时候,
-这时不得不选择相应的排序算法进行;
-- Using temporary:使了用临时表保存中间结果,如排序 order by
-和分组查询 group by;
-- Using where:存储引擎层返回行以后在 MySQL 服务层应用 where
-过滤条件;
-- Using
-index:所需数据可以直接在二级索引值和主键值中得到,采用覆盖索引,不回表;
-- Using index condition 索引下推
-:可以在联合索引遍历过程中,对联合索引中包含的字段先做判断,直接过滤掉不满足条件的记录,减少回表次数;
-
-是否需要索引
-需要索引的情况
-
-- 唯一性字段
-- 范围查询
WHERE
-- 排序查询
GROUP BY
、 ORDER BY
-- 覆盖索引,全索引扫描优于全表扫描
-
-不需要索引的情况
-
-- 不需要范围查询、排序查询
-- 大量重复数据
-- 频繁修改
-- 数据量少
-
-索引优化
-前缀索引:减小索引字段大小,可以增加一个索引页中存储的索引值,有效提高索引的查询速度。
-覆盖索引:联合索引和主键值中包括了查询数据,避免回表
-主键索引自增:追加记录时不需要移动数据;避免页分裂造成内存碎片;
-主键字段长度尽可能短:聚簇索引非叶子节点可以装下更多的索引;二级索引叶子节点可以装下更多的主键值,占用空间更小
-索引 NOT NULL:简化索引统计、值比较过程;减少 1
-字节的行格式长度;
-联合索引
-区分度大的在前:建立联合索引时,要把区分度大的字段排在前面,这样区分度大的字段越有可能被更多的
-SQL 使用到。
-
-如果索引的区分度很小,假设字段的值分布均匀,那么无论搜索哪个值都可能得到一半的数据(惯用的百分比界线是"30%")MySQL
-查询优化器,会忽略索引,进行全表扫描
-
-索引失效
-
-- 左或者左右模糊匹配
-- 查询条件中对索引列做了
-
-- 计算
-- 函数
-- 类型转换操作
-
-- 联合索引未遵循最左匹配原则
-- 条件语句中 OR 前后子句一个有索引一个没索引
-
-Count 计算
-遍历索引,优先遍历 key_len
-最小的二级索引,只有当没有二级索引的时候,才会采用主键索引来进行统计。
-事务
-事务是由存储引擎实现的,InnoDB 支持事务
-特性
-
-- 持久性是通过 redo log (重做日志)保证的;
-- 原子性是通过 undo log(回滚日志) 保证的;
-- 隔离性是通过 MVCC(多版本并发控制) 或锁机制保证的;
-- 一致性则是通过持久性+原子性+隔离性保证的;
-
-并行事务会引发的问题
-
-- 脏读:一个事务读到了另一个未提交事务修改过的数据
-- 不可重复读:一个事务内多次读取同一个数据,如果出现前后两次读到的数据不一样
-- 幻读:一个事务内多次查询某个查询条件的记录数量不同
-
-隔离级别
-
-
-
-隔离级别(是否会出现xx问题)
-脏读
-不可重复读
-幻读
-
-
-
-
-READ-UNCOMMITTED 读未提交
-√
-√
-√
-
-
-READ-COMMITTED 读已提交
-×
-√
-√
-
-
-REPEATABLE-READ 可重复读
-×
-×
-√
-
-
-SERIALIZABLE 可串行化
-×
-×
-×
-
-
-
-
-- 读未提交:允许读取尚未提交的数据变更。直接读取最新的数据
-- 读已提交:允许读取并发事务已经提交的数据。「每个 SQL
-语句执行前」都会重新生成一个 Read View
-- 可重复读:对同一字段的多次读取结果都是一致的。「启动事务时」生成一个
-Read View,然后整个事务期间都在用这个 Read View
-- 可串行化:所有的事务依次逐个执行,完全服从 ACID
-的隔离级别。采用加读写锁的方式来避免并行访问
-
-虽然 InnoDB 默认采用可重复读隔离级别,但基本不会出现幻读,因为其采用
-next-key lock(记录锁+间隙锁)和 MVCC 来避免幻读的发生
-
-- 快照读(select):采用 MVCC
-方式解决了幻读。事务执行过程中看到的数据,一直跟这个事务启动时看到的数据是一致的,保证事务隔离性;
-
-- 在执行第一个查询语句后,会创建一个 Read View,后续的查询语句利用这个
-Read View,通过这个 Read View 就可以在 undo log
-版本链找到事务开始时的数据,所以事务过程中每次查询的数据都是一样的
-
-- 当前读/共享锁(select for update):通过 next-key
-lock(记录锁+间隙锁)方式解决了幻读,读到的记录是最新的。如果有其他事务在
-Next-Key Lock
-范围内插入了一条记录,那么这个插入语句就会被阻塞,无法成功插入;
-
-- update、insert、delete
-都是当前读,这些语句执行前都会查询最新版本的数据,然后再做进一步的操作;
-- 如果 update
-是已经被锁住的记录,就生成插入意向锁并进入阻塞状态;
-- 当前读给某记录加锁了,那么对该记录已修改但未提交的事物就无法提交这个修改了,直到锁被释放;
-- Next-Key Lock 对索引记录加上行锁(Record
-Lock),对索引记录两边的间隙加上间隙锁(Gap
-Lock),是针对事务隔离级别为可重复读或以上级别而设计的;
-
-
-MVCC 多版本并发控制
-InnoDB 事务是通过 Read View 和
-聚簇索引中的两个隐藏列 实现 MVCC 的
-Read View 字段
-
-聚簇索引中的两个隐藏列
-
-- trx_id,当一个事务对某条聚簇索引记录进行改动时,就会把该事务的事务
-id 记录在 trx_id 隐藏列里;
-- roll_pointer,每次对某条聚簇索引记录进行改动时,都会把旧版本的记录写入到
-undo
-日志中,然后这个隐藏列是个指针,指向每一个旧版本记录,于是就可以通过它找到修改前的记录。
-
-MVCC 如何实现可重复读?
-事务 A 读某字段时,会先读取该字段的 trx_id,如果 Read View 中记录的该
-trx_id 是活跃事务,则沿着 roll_pointer(即 undo
-log 版本链)寻找旧版本字段;如果 Read View 中记录的该 trx_id
-是当前事务 或
-已提交事务,则返回该记录。【注意,Read View
-字段不随活跃事务的提交而改变,它是该事务开启时的数据库事务状态快照】
-可重复读下发生幻读
-
-- 事务 A 先对某块记录执行快照读
-- 事务 B 插入数据到该块记录中,并提交事务 B
-- 事务 A 再对该块记录执行当前读或更新记录
-- 会读取到事务 B 插入的数据,因为当前读会读取最新的记录
-
-如何避免?
-若事务中会对数据采取 当前读,则在事务刚开始时就执行,通过 next-key
-lock 避免其他事物再插入数据。
-锁
-
-MySQL 加锁时,先 生成锁结构,然后
-设置锁的状态,即初始化锁再竞争锁;如果锁状态是等待状态,并不是意味着事务成功获取到了锁,只有当锁状态为正常状态时,才代表事务成功获取到了锁;
-
-锁的种类
-
-- 全局锁
-- 表级锁
-
-- 表锁
-- 意向表:用于快速判断表里是否有记录被加锁。意向共享锁和意向独占锁是表级锁,不会和行级的共享锁和独占锁发生冲突,而且意向锁之间也不会发生冲突,只会和共享表锁(lock
-tables ... read)和独占表锁(lock tables ... write)发生冲突
-- 元数据表 MDL 锁:更表结构时需要申请 MDL 写锁
-- AUTO-INC 锁:配置文件
-
innodb_autoinc_lock_mode = 2, binlog_format = row
,既能提升并发性,又不会出现数据一致性问题
-
-- 行级锁
-
-- Record Lock 记录锁,区分读锁和写锁,锁定存在的记录;
-- Gap Lock
-间隙锁,不区分读锁和写锁;间隙锁用来锁一个范围,间隙锁之间是兼容的;
-- Next-Key Lock 临键锁,区分读锁和写锁;
-- 插入意向锁,特殊的间隙锁,用于不同事务的并发控制和冲突检测;插入意向锁和不同事物的间隙锁之间是冲突的,当某个事务的插入语句遇到间隙锁时,会产生插入意向锁;
-
-- 隐式锁
-
-- 延迟加锁机制,特点是只有在可能发生冲突时才加锁
-- 使用场景:事务 B 插入记录的索引 == 事务 A 已插入且未提交的索引,事务
-A 插入的记录上的「隐式锁」会变「显示锁」且锁类型为 X
-型的记录锁,所以事务 B 想获取
S 型next-key
-锁时会遇到锁冲突,事务 B 进入阻塞状态。
-
-
-行级锁实现
-
-行级锁时 Innodb 实现高效事务的关键
-
-加锁是加在索引上的【加行级锁时还要加表锁:X 类型的意向锁】
-
-- 全表当前读,遍历聚簇索引加临键锁(update
-未走索引的情况)
-- 全索引当前读,遍历当前索引加临键锁
-
-二级索引加锁后,还要在查询到的记录的主键索引项加记录锁
-Insert 语句,加行级锁
-
-- 记录被间隙锁,阻塞
-
-- 插入意向锁
-
-- 唯一键冲突,执行失败
-
-- 如果主键索引重复,插入新记录的事务会给已存在的主键值重复的聚簇索引记录添加
-S 型记录锁。
-- 如果唯一二级索引重复,插入新记录的事务都会给已存在的二级索引列值重复的二级索引记录添加
-S 型 next-key 锁。
-
-
-临键锁退化成记录锁或间隙锁的情况
-唯一索引查询
-
-- 等值查询
-
-- (条件值)存在,该索引加记录锁
-- (条件值)不存在,后一索引加间隙锁
-
-- 范围查询
-
-- 条件值在表中,非等值查询
-
-- 小于,该索引加间隙锁
-- 大于,后一索引加临键锁
-
-- 条件值在表中且条件是等值查询
-
-- 小于等于,该索引加临键锁
-- 大于等于,该索引加记录锁
-
-
-
-非唯一索引查询
-
-- 等值查询
-
-- 存在,扫描到的索引记录加的是 next-key
-锁,而对于第一个不符合条件的索引记录,该索引的 next-key
-锁会退化成间隙锁;
-- 不存在,扫描到第一条不符合条件的索引记录,该索引的 next-key
-锁会退化成间隙锁;
-
-- 范围查询
-
-- 为确保条件值前后都锁住,加锁时不存在临建锁退化为间隙锁和记录锁的情况
-
-
-死锁
-
-- 两个事务分别加了间隙锁(前提)
-- 两个事务分别向对方的间隙锁插入数据,于是都产生插入意向锁
-- 由于插入意向锁和间隙锁冲突,双方都为了获取插入意向锁,会等待对方事务的间隙锁释放,陷入循环等待,造成死锁
-
-插入意向锁是对不同事务才产生作用的,对于本身事务的间隙锁是兼容的。
-解决方法
-
-- 设置事务等待锁的超时时间
innodb_lock_wait_timeout
-- 开启主动死锁检测
innodb_deadlock_detect
-
-日志
-
-目前,很多数据库采用的是 steal(没提交的事务写的脏页也可以马上落盘)+
-no force(已提交的事务可以不马上落盘)模式。MySQL 也参考了这个模式,undo
-log 变更持久性和数据一样,由 redo log 保证,对 undo log
-还没落盘的修改也会写入 redo log。这样不管怎么样基于 undo log
-做事务回滚或者做 MVCC都可以保证原子和一致性。
-
-
-- undo log(回滚日志):是 Innodb
-存储引擎层生成的日志,实现了事务中的原子性,主要用于事务回滚和
-MVCC;
-- redo log(重做日志):是 Innodb
-存储引擎层生成的日志,实现了事务中的持久性,主要用于掉电等故障恢复;
-- bin log (归档日志):是 Server
-层生成的日志,主要用于数据备份和主从复制;
-
-回滚日志与重做日志的区别
-
-- redo log
-记录了此次事务「完成后」的数据状态,记录的是更新之后的值;防止已提交事务的修改丢失;
-- undo log
-记录了此次事务「开始前」的数据状态,记录的是更新之前的值;防止未提交事务的修改无法回滚;
-
-重做日志和归档日志的区别
-
-- bin log
-是追加写,写满一个文件,就创建一个新的文件继续写,不会覆盖以前的日志,保存的是全量的日志。
-- redo log
-是循环写,日志空间大小是固定,全部写满就从头开始,保存未被刷入磁盘的脏页日志。
-
-回滚日志 Undo log
-
-- 实现事务回滚,保障事务的原子性。事务处理过程中,如果出现了错误
-或者 用户执行了 ROLLBACK 语句,MySQL 可以利用 undo log
-中的历史数据将数据恢复到事务开始之前的状态。
-- 实现 MVCC(多版本并发控制)关键因素之一。MVCC 是通过 Read View +
-undo log 实现的。undo log
-为每条记录保存多份历史数据,MySQL 在执行快照读(普通 select
-语句)的时候,会根据事务的 Read View 里的信息,顺着 undo log
-的版本链找到满足其可见性的记录。
-
-持久化方法:开启事务后,InnoDB 层更新记录前,首先要记录相应的 undo
-log,如果是更新操作,需要把被更新的列的旧值记下来,也就是要生成一条 undo
-log,undo log 会写入 Buffer Pool 中的 Undo 页面,对 undo
-页的修改也都会记录到 redo log。redo log
-会每秒刷盘,提交事务时也会刷盘,数据页和 undo
-页都是靠这个机制保证持久化的。
-重做日志 Redo log
-
-防止 Buffer Pool 中的脏页丢失
-
-
-- 实现事务的持久性,让 MySQL 有
-crash-safe 的能力,能够保证 MySQL
-在任何时间段突然崩溃,重启后之前已提交的记录都不会丢失;
-- 将脏页的写操作从「随机写」变成了「顺序写」,提升
-MySQL 写入磁盘的性能;
-
-WAL(Write-Ahead Logging):MySQL
-的写操作并不是立刻写到磁盘上,而是先写 redo log
-日志,然后在合适的时间再将脏页写到磁盘上。
-redo log
-是物理日志,记录了某个数据页做了什么修改,即所有未还没持久化的脏页修改。在事务提交时,只要先将
-redo log 持久化到磁盘即可,可以不需要等到将缓存在 Buffer Pool
-里的脏页数据持久化到磁盘。当系统崩溃时,虽然脏页数据没有持久化,但是
-redo log 已经持久化,接着 MySQL 重启后,可以根据 redo log
-的内容,将所有数据恢复到最新的状态。
-redo log 持久化操作:每当产生一条 redo log
-时,会先写入到 redo log buffer,为了在 MySQL
-处理大事务时尽可能少写入磁盘,进而提升写 IO 性能。redo log
-buffer 写入磁盘的时机:
-
-- MySQL 正常关闭时;
-- 当 redo log buffer 中记录的写入量大于 redo log buffer
-内存空间的一半时;
-- InnoDB 的后台线程每隔 1 秒,将 redo log buffer
-持久化到磁盘。
-- 每次事务提交时都将缓存在 redo log buffer 里的 redo
-log 直接持久化到磁盘;
-
-- 参数为 0 时,事务提交不会主动触发写入磁盘的操作;MySQL
-进程崩溃会导致上一秒钟所有事务数据的丢失;
-- 参数为 1 时,每次事务提交都将缓存在 redo log buffer 里的 redo log
-直接持久化到磁盘;
-- 参数为 2 时,每次事务提交都只是缓存在 redo log buffer 里的 redo log
-写到 redo log 文件(写入到 redo log
-文件并不意味着写入到了磁盘,而是存在操作系统里的文件系统中的 Page
-Cache);操作系统崩溃或者系统断电会导致上一秒钟所有事务数据的丢失;
-
-
-重做日志文件组
-redo log 是为了防止 Buffer Pool
-中的脏页丢失而设计的,只记录未被刷入磁盘的数据的物理日志。随着系统运行,Buffer
-Pool 的脏页刷新到了磁盘中,redo log
-对应的记录也就没用了,这时候我们需要擦除这些旧记录,以腾出空间记录新的更新操作。重做日志文件组由有
-2 个 redo log
-文件组成,以循环写的方式工作,从头开始写,写到末尾就又回到开头,相当于一个环形。
-
-
-
-- write pos ~ checkpoint
-之间的部分(图中红色部分):记录新的更新操作;
-- check point ~ write pos
-之间的部分(图中蓝色部分):待落盘的脏数据页记录;
-
-将 Buffer Pool 中的脏页刷新到磁盘中,然后标记 redo log
-哪些记录可以被擦除,接着对旧的 redo log
-记录进行擦除,等擦除完旧记录腾出了空间,checkpoint
-就会往后移动(图中顺时针)。一次 checkpoint
-的过程就是脏页刷新到磁盘中变成干净页,然后标记 redo log
-哪些记录可以被覆盖的过程。
-归档日志 Bin log
-记录 MySQL 上的所有变化并以二进制形式保存在磁盘上。MySQL
-在完成数据库表结构变更或表数据修改(增删改)时,Server
-层会生成一条
-binlog,等之后事务提交的时候,会将该事物执行过程中产生的所有 binlog
-统一写入 binlog 文件。
-
-- binlog 日志只能用于数据备份和主从复制,没有 crash-safe 的能力;
-- binlog
-是全量日志,保存了所有数据变更的情况,可以恢复整个数据库所有数据;
-
-主从复制
-
-
-
-- 写入 Binlog:数据修改 -> 主库写 binlog 日志 -> commit 事务
--> 持久化本地数据 -> 提交事务成功;
-- 同步 Binlog:从库会创建一个专门的 I/O 线程,连接主库的 log dump
-线程,来接收主库的 binlog 日志,再把 binlog 信息写入 relay log
-的中继日志里,再返回给主库“复制成功”的响应。
-- 回放 Binlog:读 relay log 中继日志,回放
-binlog,并更新从库中的数据。
-
-主从复制模型
-
-- 同步复制:MySQL
-主库提交事务的线程要等待所有从库的复制成功响应,才返回客户端结果;
-- 异步复制(默认模型):MySQL 主库提交事务的线程并不会等待 binlog
-同步到各从库,就返回客户端结果;
-- 半同步复制:只要数据成功复制到任意一个从库上,主库的事务线程就可以返回给客户端;
-
-binlog 刷盘
-
-
-
-- 图中的 write,把日志写入到 binlog 文件(文件系统的 page
-cache 里),但是并没有把数据持久化到磁盘;
-- 图中的 fsync,把数据持久化到磁盘的操作,这里就会涉及磁盘
-I/O,所以频繁的 fsync 会导致磁盘的 I/O 升高;
-
-MySQL 提供一个 sync_binlog 参数来控制数据库的 binlog
-刷到磁盘上的频率:
-
-- sync_binlog = 0 的时候,表示每次提交事务都只 write,不
-fsync,后续交由操作系统决定何时将数据持久化到磁盘;
-- sync_binlog = 1 的时候,表示每次提交事务都会 write,然后马上执行
-fsync;
-- sync_binlog =N(N>1) 的时候,表示每次提交事务都 write,但累积 N
-个事务后才 fsync。
-
-两阶段提交
-binlog 主从复制和 redo log
-崩溃恢复需要保持一致,不然会出现主从数据不一致、备份数据与真实数据不一致等问题。MySQL
-采用两阶段提交来避免两份日志之间的逻辑不一致,两阶段提交是一种分布式事务一致性协议。
-两阶段提交:把单个事务的提交拆分成了 2
-个阶段,分别是准备阶段和提交阶段(不是 commit
-语句),每个阶段都由协调者和参与者共同完成。
-内部 XA 事务
-
-
-为了保证这两个日志的一致性,MySQL 使用了内部 XA 事务。内部 XA 事务由
-binlog 作为协调者,存储引擎是参与者,可以实现跨数据库事务。将 redo log
-的写入拆成了两个状态:prepare 和
-commit,中间再穿插写入binlog。
-
-- 如果 binlog 中没有当前内部 XA 事务的 XID,说明 redolog
-完成刷盘,但是 binlog 还没有刷盘,则回滚事务。对应时刻
-A 崩溃恢复的情况;
-- 如果 binlog 中有当前内部 XA 事务的 XID,说明 redolog 和 binlog
-都已经完成了刷盘,则提交事务。对应时刻 B
-崩溃恢复的情况;
-
-对于处于 prepare 阶段的 redo
-log,即可以提交事务,也可以回滚事务,这取决于是否能在 binlog 中查找到与
-redo log 相同的 XID,以 binlog 写成功为事务提交成功的标识。
-组提交
-采用组提交策略,减少 redolog 和 binlog
-两次刷盘导致的 I/O
-次数高和锁竞争激烈的问题。
-
-多事务场景下,两阶段提交会导致锁竞争激烈,因为为保证两个日志保存的数据库状态一致,需要加锁操作保证两阶段提交的原子性。
-
-binlog 组提交机制:当有多个事务提交的时候,会将多个
-binlog 刷盘操作合并成一个,从而减少磁盘 I/O 的次数。prepare
-阶段不变,只针对 commit 阶段,将 commit 阶段拆分为三个阶段:
-
-- flush 阶段:多个事务按进入的顺序将 binlog 从 cache
-写入文件(不刷盘);5.7 之后在该阶段增加了 redo log 的组提交,即多个事务
-redo log 统一刷盘;
-
-- 类似于 XA 事务的 Prepare 阶段,如果在这一步完成后数据库崩溃,由于
-binlog 中没有该组事务的记录,所以 MySQL 会在重启后回滚该组事务;
-
-- sync 阶段:对 binlog 文件做 fsync 操作(多个事务的
-binlog 合并一次刷盘);
-
-- 类似于 XA 事务的 Commit 阶段,如果在这一步完成后数据库崩溃,由于
-binlog 中已经有了事务记录,MySQL会在重启后通过 redo log
-刷盘的数据继续进行事务的提交。
-
-- commit 阶段:各个事务按顺序做 InnoDB commit
-操作;
-
-每个阶段都有一个队列,锁就只针对每个队列进行保护,不再锁住提交事务的整个过程。减小了锁粒度,这样就使得多个阶段可以并发执行,从而提升效率。
-总结模拟一次更新流程
-
-- MySQL 执行器检查记录是否在 buffer pool 中
-
-- 若不在,将数据页从磁盘读入到 buffer pool;
-- 若更新前与更新后数据不同,调用 存储引擎 执行更新操作;
-
-- 开启事务,记录 undo log,同时将 Undo 页的修改记录存在 redo log
-中;
-- 存储引擎更新数据,并标记数据页为脏页,同时将数据页的修改记录存在
-redo log 中;
-
-- 为了减少磁盘I/O,脏页选择合适时间持久化到硬盘,持久化后删除对应的
-redo log;
-
-- 记录更新完毕,记录 binlog 至 binlog cache;
-- 事务提交,将 redolog binlog 持久化到硬盘(两阶段提交;组提交)
-
-- prepare 阶段
-- commit 阶段
-
-
-脏页刷盘的时机
-
-- Redo log 满了;
-- BufferPool满了;
-- MySQL空闲;
-- 后台线程定时 checkpoint;
-- 事务提交时(一般不选);
-
-内存
-Buffer Pool 缓存的内容包括:索引页、数据页、Undo
-页、插入缓存页、自适应哈希索引、锁信息等。innodb_buffer_pool_size
-默认 128MB。
-为了管理这些在 Buffer Pool 中的缓存页,InnoDB
-为每一个缓存页都创建了一个控制块,控制块信息包括:缓存页的表空间、页号、缓存页地址、链表节点等等。用三种链表管理不同状态的缓存块:
-
-- Free List (空闲页链表),管理空闲页;
-- Flush List (脏页链表),管理脏页;
-- LRU
-List,管理脏页+干净页,将经常查询或可能将要查询的数据缓存在其中,而不常查询的数据就淘汰出去;
-
-Free 链表:使用链表结构,快速找到空闲的缓存页;
-每当需要从磁盘中加载一个页到 Buffer Pool 中时,就从
-Free链表中取一个空闲的缓存页,并且把该缓存页对应的控制块的信息填上,然后把该缓存页对应的控制块从
-Free 链表中移除
-
-
-Flush 链表:使用链表结构,快速找到脏页;(结构类似于
-Free 链表)
-脏页落盘时,后台线程遍历 Flush 链表
-提高缓存命中率
-Buffer Pool 有三种页和链表用来管理数据
-
-
-
-- Free Page(空闲页),表示此页未被使用,位于 Free 链表;
-- Clean Page(干净页),表示此页已被使用,但是页面未发生修改,位于LRU
-链表。
-- Dirty
-Page(脏页),表示此页「已被使用」且「已经被修改」,其数据和磁盘上的数据已经不一致。当脏页上的数据写入磁盘后,内存数据和磁盘数据一致,那么该页就变成了干净页。脏页同时存在于
-LRU 链表和 Flush 链表。
-
-普通的LRU 算法会出现以下两个问题
-
-- 预读失效:加载访问数据页时,提前加载进来的相邻数据页,即预读页,但后续并没有访问预读页;
-- Buffer Pool 污染:某一个 SQL 语句扫描了大量的数据时,将 Buffer Pool
-里的所有页都替换出去,导致大量热数据被淘汰了,后续热数据被访问时会产生大量磁盘
-I/O;
-
-- 索引失效批量扫描的时候会出现污染
-
-
-解决办法
-
-- 将 LRU 划分了 2 个区域:old 区域 和 young
-区域。划分这两个区域后,预读的页就只需要加入到 old
-区域的头部,当页被真正访问的时候,才将页插入 young 区域的头部。
-- 只有同时满足被访问与在 old 区域停留时间超过
-
innodb_old_blocks_time
秒两个条件,才会被插入到
-young 区域头部
-- young 区域优化:为了防止 young 区域节点频繁移动到头部。young
-区域前面 1/4 被访问不会移动到链表头部,只有后面的 3/4被访问了才会
-
-优化
-磁盘IO、索引、数据分页(查询大量数据)、锁竞争、内存使用下·
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0%
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git "a/MySQL/readview\347\273\223\346\236\204.drawio.png" "b/MySQL/readview\347\273\223\346\236\204.drawio.png"
deleted file mode 100644
index 8d10f68..0000000
Binary files "a/MySQL/readview\347\273\223\346\236\204.drawio.png" and /dev/null differ
diff --git "a/MySQL/\344\270\244\351\230\266\346\256\265\346\217\220\344\272\244.drawio.png" "b/MySQL/\344\270\244\351\230\266\346\256\265\346\217\220\344\272\244.drawio.png"
deleted file mode 100644
index cbfecac..0000000
Binary files "a/MySQL/\344\270\244\351\230\266\346\256\265\346\217\220\344\272\244.drawio.png" and /dev/null differ
diff --git "a/MySQL/\344\270\273\344\273\216\345\244\215\345\210\266\350\277\207\347\250\213.drawio.png" "b/MySQL/\344\270\273\344\273\216\345\244\215\345\210\266\350\277\207\347\250\213.drawio.png"
deleted file mode 100644
index d5e421e..0000000
Binary files "a/MySQL/\344\270\273\344\273\216\345\244\215\345\210\266\350\277\207\347\250\213.drawio.png" and /dev/null differ
diff --git "a/MySQL/\350\241\250\347\251\272\351\227\264\347\273\223\346\236\204.drawio.png" "b/MySQL/\350\241\250\347\251\272\351\227\264\347\273\223\346\236\204.drawio.png"
deleted file mode 100644
index f0c5ea6..0000000
Binary files "a/MySQL/\350\241\250\347\251\272\351\227\264\347\273\223\346\236\204.drawio.png" and /dev/null differ
diff --git a/Network/index.html b/Network/index.html
index 40bcd4a..5555d5f 100644
--- a/Network/index.html
+++ b/Network/index.html
@@ -158,18 +158,18 @@
@@ -272,11 +272,11 @@
传输层,关注链路级别的传输
应用数据转换到传输块的过程:
-
-
+
+
访问网站的过程
-
-
+
+
- 解析 URL
- DNS 查询服务器 IP
@@ -378,11 +378,11 @@
传输层 TCP
TCP :面向连接的、可靠的、基于字节流的
三次握手
-
-
+
+
四次挥手【closed_wait;last_ack】
-
-
+
+
- 首先确认客户端不会再发送请求给服务端
- 然后服务端在发送完数据后,再向客户端发送断开连接
@@ -430,8 +430,8 @@ 网络层 IP
diff --git a/OS/index.html b/OS/index.html
index 1246028..da50706 100644
--- a/OS/index.html
+++ b/OS/index.html
@@ -156,18 +156,18 @@
@@ -264,8 +264,8 @@ 虚拟内存
只会访问虚拟内存地址,在操作总线前,通过一个地址转换硬件将虚拟内存地址转换为物理内存地址
进程隔离:将虚拟内存映射到物理内存,进程之间的地址空间相互隔离,互不干扰
虚拟内存空间:
-
-
+
+
用户态虚拟内存空间是相互隔离相互独立的;内核虚拟内存空间是各个进程共享的;
进程管理
数据结构 PCB
@@ -345,8 +345,8 @@ I/O 多路复用
diff --git a/Redis/98987d9417b2bab43087f45fc959d32a.png b/Redis/98987d9417b2bab43087f45fc959d32a.png
deleted file mode 100644
index a61048c..0000000
Binary files a/Redis/98987d9417b2bab43087f45fc959d32a.png and /dev/null differ
diff --git a/Redis/a6286053c6884cf58bf397d01674fe80.png b/Redis/a6286053c6884cf58bf397d01674fe80.png
deleted file mode 100644
index 190bdfc..0000000
Binary files a/Redis/a6286053c6884cf58bf397d01674fe80.png and /dev/null differ
diff --git a/Redis/d1b889b9039f4f2f9853d44e3aa258fctplv-k3u1fbpfcp-zoom-in-crop-mark1512000.webp b/Redis/d1b889b9039f4f2f9853d44e3aa258fctplv-k3u1fbpfcp-zoom-in-crop-mark1512000.webp
deleted file mode 100644
index ab0e3ea..0000000
Binary files a/Redis/d1b889b9039f4f2f9853d44e3aa258fctplv-k3u1fbpfcp-zoom-in-crop-mark1512000.webp and /dev/null differ
diff --git a/Redis/ea4f7e86baf2435af3999e5cd38b6a26.png b/Redis/ea4f7e86baf2435af3999e5cd38b6a26.png
deleted file mode 100644
index 421eb52..0000000
Binary files a/Redis/ea4f7e86baf2435af3999e5cd38b6a26.png and /dev/null differ
diff --git a/Redis/fdd5f695bb3643258662886f9fba0aab.png b/Redis/fdd5f695bb3643258662886f9fba0aab.png
deleted file mode 100644
index d1ff1f2..0000000
Binary files a/Redis/fdd5f695bb3643258662886f9fba0aab.png and /dev/null differ
diff --git a/Redis/index.html b/Redis/index.html
deleted file mode 100644
index 050b1d3..0000000
--- a/Redis/index.html
+++ /dev/null
@@ -1,583 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Redis | 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 闻
-
-
- Yesterday is history, tomorrow is a mystery but today is a gift.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Redis
-
-
-
-
-
- Redis 基础
-
-
-
-
-
-
- Redis 的特性:单线程、原子性、基于内存、优化数据结构、I/O
-多路复用的非关系型数据库;
-6.0 版本前网络 I/O 和命令处理都是单线程,6.0 版本后网络 I/O
-改用多个线程处理
-
-- 大部分操作都在内存中完成(制约 Redis 性能的瓶颈并不是
-CPU,而是内存和网络带宽)
-- 避免了多线程之间的竞争
-- I/O 多路复用机制
-
-数据结构
-5
-种基础数据类型:String(字符串)、List(列表)、Set(集合)、Hash(散列)、Zset(有序集合)
-3 种特殊数据类型:HyperLogLog(基数统计)、Bitmap (位图)、Geospatial
-(地理位置)
-持久化
-保证即使在服务器重启的情况下也不会丢失数据(或少量损失)
-AOF 日志
-将每条执行成功的写操作命令追加到日志文件中,持久化代码命令在主进程上执行
-写回策略(防止AOF日志在持久化过程中丢失):
-
-
-重写机制(防止AOF日志文件过大):
-
-删去已经无意义的日志;
-重写操作由后台子进程完成,子进程共享父进程内存(为什么不用线程?父子进程以只读的方式共享数据,如果任意一方修改了该共享内存,父子进程会有独立的数据副本,即写时复制,注意这里只会复制主进程修改的物理内存数据,没修改物理内存还是与子进程共享的。而线程共享内存需要加锁);
-AOF
-重写缓冲区用于保存重写子进程启动后,新产生的AOF日志,并在重写结束后追加到新的AOF文件中;
-
-RDB 快照
-某一时刻内存数据的快照(二进制数据),恢复时直接读入内存即可
-执行 bgsave 时,想要修改数据,需采用写时复制(Copy-On-Write,
-COW),以减少性能损耗
-混合持久化
-在AOF日志重写过程中,将新的含有 RDB 格式和 AOF 格式的 AOF
-文件替换旧的的 AOF 文件,前半部分是 RDB 格式的全量数据,后半部分是 AOF
-格式的增量数据,即重写缓冲区数据。
-策略
-过期删除策略
-惰性删除+定期删除
-内存淘汰策略
-仅淘汰过期数据:random、ttl、lru、lfu
-淘汰所有数据:lru、lfu
-高可用
-主从复制
-模式一:全量复制【多用于初始化】
-
-
-- bgsave 命令创建子进程来做生成 RDB 文件的工作,是异步工作的
-
-为了避免过多的从服务器和主服务器进行数据同步(全量复制),可以把一部分从服务器升级成分发节点,利用从节点分担读取操作的压力
-模式二:基于长连接的命令传播【多用于保持同步】
-主从服务器在完成第一次同步后,双方之间就会维护一个 TCP
-连接,保证第一次同步后的主从服务器的数据一致性。
-模式三:连接恢复时可以采用增量复制:repl_backlog_buffer
-环形缓冲区保存了最近传播的写命令,若其中存着从服务器请求的
-offset,就采用增量复制;否则采用全量复制。若想降低主从服务器断开后全量同步的概率,需要增大
-repl_backlog_buffer
-QA
-如何应对异步复制导致的主从数据不一致?
-外部程序来监控主从节点间的复制进度
-主从切换如何减少数据丢失?
-
-- 设置复制延迟限制
min-slaves-max-lag
-- 客户端降级措施,当 master 不可写,就把数据存到本地或 kafka
-中等待主节点正常后再消费
-
-集群脑裂导致数据丢失
-主节点必须要有至少 min-slaves-to-write
-个从节点连接,主从数据复制和同步的延迟不能超过
-min-slaves-max-lag
-秒。否则原主节点就会被限制接收客户端写请求,客户端也就不能在原主节点中写入新数据,等到新的主节点上线一切恢复正常。
-哨兵机制
-
-自动完成故障发现和故障转移,并通知给应用方,从而实现高可用性
-
-哨兵之间建立连接
-
-
-哨兵与从节点建立连接
-
-
-第一轮投票:判断主节点下线
-主观下线:主节点或者从节点没有在规定的时间内响应哨兵的 PING 命令
-客观下线:一个哨兵判断主节点为「主观下线」后,就会向其他哨兵发起命令,通过多个哨兵节点一起判断主节点是否下线。哨兵的赞同票数达到哨兵配置文件中的
-quorum 配置项设定的值则判断主节点客观下线
-第二轮投票:选出哨兵 leader
-
-- 哪个哨兵节点判断主节点为「客观下线」,这个哨兵节点就是候选者,所谓的候选者就是想当
-Leader 的哨兵。
-- 候选者会向其他哨兵发送命令,表明希望成为 Leader
-来执行主从切换,并让所有其他哨兵对它进行投票。Raft 算法选择哨兵 Leader:
-
-- 第一,拿到半数以上的赞成票;
-- 第二,拿到的票数同时还需要大于等于哨兵配置文件中的 quorum 值。
-
-
-由哨兵 leader
-进行主从故障转移
-
-- 第一步:在已下线主节点(旧主节点)属下的所有「从节点」里面,挑选出一个从节点,并将其转换为主节点,选择的规则:
-
-- 过滤掉已经离线的从节点;
-- 过滤掉历史网络连接状态不好的从节点;
-- 将剩下的从节点,进行三轮考察:优先级、复制进度、ID
-号。在每一轮考察过程中,如果找到了一个胜出的从节点,就将其作为新主节点。
-
-- 第二步:让已下线主节点属下的所有「从节点」修改复制目标,修改为复制「新主节点」;
-- 第三步:将新主节点的 IP
-地址和信息,通过「发布者/订阅者机制」通知给客户端;
-- 第四步:继续监视旧主节点,当这个旧主节点重新上线时,将它设置为新主节点的从节点;
-
-集群
-
-
-- 同一个分区内的 Redis
-节点之间的数据完全一样,多个节点保证了数据有多份副本冗余保存,且可以提供高可用保障;
-- 不同分片之间的数据不相同;
-- 通过水平增加多个分片的方式,可以实现整体集群容量的扩展;
-
-集群数据分布策略
-Hash 槽
-
-- 切片 slot 槽,共有16384个槽位;
-- 数据 key 通过 “CRC16 算法 + 16384 取模”,得到对应存储的哈希槽;
-- 数据存储在该槽位对应的 Redis
-分区中,每个分区都有独立的主从哨兵保证高可用;
-
-一致性Hash
-虚拟节点
-缓存
-缓存雪崩、击穿、穿透
-缓存穿透:大量请求了缓存和数据库里都没有的数据,请求穿透缓存和数据库
-
-- 参数校验:参数不合法直接抛出异常
-- 缓存无效 key:适用于 key 变化不频繁
-- 布隆过滤器:校验 Key
-是否合法(有误差,可能会把未存的值当作已有,即不合法的 key
-当作合法的)
-- 接口限流:固定窗口算法、滑动窗口算法、漏桶算法、令牌桶算法
-
-缓存击穿:瞬间大量请求未缓存的数据库数据,请求击穿缓存直接打到数据库上
-
-- 热点数据永不过期或过期时间长
-- 预热热点数据:定时任务预热(定时触发缓存预热的逻辑,将数据库中的热点数据查询出来并存入缓存中)、kafka
-异步预热(将数据库中的热点数据的主键或者 ID
-发送到消息队列中,然后由缓存服务消费消息队列中的数据,根据主键或者 ID
-查询数据库并更新缓存)
-- 访问数据库互斥锁
-
-缓存雪崩:缓存在同一时间大面积的失效,导致大量的请求都直接落到了数据库上
-
-- Redis 集群
-- 限流
-- 多级缓存:本地缓存+Redis
-- 热点数据失效时间长
-- 预热热点数据
-
-如何保证数据库和缓存一致性
-
-采用 Cache Aside
-旁路缓存策略:以数据库中的数据为准,缓存中的数据是按需加载的;缺点:数据写入频繁时,缓存中的数据会被频繁的清理,降低缓存命中率;
-
-更新数据库+删除缓存:延迟双删
-更新数据库+更新缓存:分布式锁
-更新数据库+不更新缓存:较短的缓存有效期
-删除缓存的时候失败了怎么办?
-采用异步删除:
-
-- 消息队列确保缓存删除成功
-- 订阅 MySQL 的 binlog,数据修改时删除缓存
-
-缓存预热
-提高访问速度,平滑流量峰值,减少后端压力,保证数据的时效性
-Redis 缓存预热的方法:系统启动时加载;定时任务加载;
-实战
-分布式锁
-
-Redis + Lua
-脚本,可以以原子性的方式执行一组命令,可用于保证锁释放操作的原子性(Lua
-脚本在处理的过程中不会被任意其它请求打断),但无法用于事务执行失败的回滚。Redisson
-采用的就是这种方法保证分布式锁的原子性。
-
-SET 命令的 NX 参数可以实现:key
-不存在才插入,可以用于实现分布式锁
-优点:性能高效、实现方便、分布式高可用
-缺点:不好设置超时时间(解决方法:守护线程定期续约)、主从异步复制可能导致不可靠性(解决方法如下)
-提高可靠性(Redlock 算法):客户端和多个独立的 Redis
-节点依次请求申请加锁,如果客户端能够和半数以上的节点成功地完成加锁操作,那么就认为,客户端成功地获得分布式锁,否则加锁失败,所有的
-redis 实例都会进行解锁;
-
-- 单机的 redis 是 cp 的,但是集群情况下 redis 是 ap 的,所以运行
-Redisson
-的节点必须是主节点,不能有从节点,防止主节点加锁成功未同步从节点就宕机,而客户端却收到加锁成功,导致数据不一致。
-
-@Resource
private RedissonClient redisson;
-延迟队列
-有序集合 Zset;score 存储延迟执行的时间
-大 Key 问题
-会导致的问题
-
-- 由于 Redis 单线程处理,大 Key
-的增删改查都很耗时,会导致工作线程阻塞、客户响应超时、网络传输阻塞;
-- 内存分布不均,集群场景下 slot 槽数据量不均;
-- 持久化阻塞主线程,会主线程的两个阶段耗时增加:创建子进程复制页表结构、修改共享数据写时复制;
-
-解决办法
-
-- 拆分大 key;
-- 及时/定时清理大 key,unlink 异步删除代替 del 同步删除;
-
-发布者/订阅者
-
-订阅命令:subscribe channel [channel ... ]
-
-
-
-
-事务回滚
-Redis 不支持回滚,事务没有原子性(要么全部成功要么全部失败)
-管道
-批处理技术,可以一次处理多个 Redis
-命令,减少多个命令执行时的网络等待
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0%
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Redis/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAwrfmooXoirHljYHkuIk=,size_20,color_FFFFFF,t_70,g_se,x_16.png b/Redis/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAwrfmooXoirHljYHkuIk=,size_20,color_FFFFFF,t_70,g_se,x_16.png
deleted file mode 100644
index 410b113..0000000
Binary files a/Redis/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAwrfmooXoirHljYHkuIk=,size_20,color_FFFFFF,t_70,g_se,x_16.png and /dev/null differ
diff --git a/Rpc/A5B6F28E3286E3F920698A1D904CE4B0.png b/Rpc/A5B6F28E3286E3F920698A1D904CE4B0.png
deleted file mode 100644
index 6687fdd..0000000
Binary files a/Rpc/A5B6F28E3286E3F920698A1D904CE4B0.png and /dev/null differ
diff --git a/Rpc/index.html b/Rpc/index.html
deleted file mode 100644
index 0f2acf9..0000000
--- a/Rpc/index.html
+++ /dev/null
@@ -1,550 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Rpc 中间件 | 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 闻
-
-
- Yesterday is history, tomorrow is a mystery but today is a gift.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Rpc 中间件
-
-
-
-
-
- Rpc 框架搭建过程遇到的问题、Dubbo 使用过程遇到的问题
-
-
-
-
-
-
-
-分布式系统的 CAP 理论
-
-- 一致性(Consistency):所有节点访问同一份最新的数据副本
-- 可用性(Availability):非故障的节点在合理的时间内返回合理的响应(不是错误或者超时的响应)
-- 分区容错性(Partition
-Tolerance):分布式系统出现网络分区的时候,仍然能够对外提供服务。
-
-分布式保证服务高并发稳定性
-
-- 缓存:缓存是一种提高数据读取性能的技术,通过在内存中存储经常访问的数据,可以减少对数据库或者其他存储系统的访问,从而提高系统的响应速度。缓存可以应用在多个层次,例如浏览器缓存、CDN
-缓存、反向代理缓存、应用缓存等。
-- 降级:降级是在系统压力过大或者部分服务不可用的情况下,暂时关闭一些非核心的服务,以保证核心服务的正常运行。降级可以在多个层次进行,例如页面降级、功能降级、服务降级等。
-- 限流:限流是一种控制系统处理请求的速率的技术,以防止系统过载。限流可以通过多种算法实现,例如固定窗口、滑动窗口、漏桶算法、令牌桶算法等。
-
-Nacos 配置中心 注册中心
-RPC 框架
-
-泛指调用远程的函数的方法,对编解码和网络层有特殊的优化,从而有更高的效率。
-
-RPC 框架主要由 Server、Client、Server Stub、Client Stub 组件组成
-
-- Client Stub
-主要是将客户端的请求参数、请求服务地址、请求服务名称做一个封装,并发送给
-Server Stub
-- Server Stub 主要用于接收 Client Stub 发送的数据并解析,去调用 Server
-端的本地方法
-
-层次结构:代理曾、注册中心层(服务发现、注册、管理)、
-RPC 协议定制化程度高,可以采用体积更小的 Protobuf
-或其他序列化协议去保存结构体数据,同时也不需要像 HTTP
-那样考虑各种浏览器行为,如 302
-重定向跳转。因此性能也会更好一些。其底层不仅可以通过 tcp udp
-实现,也可以通过 http 实现。
-RPC
-协议会建个连接池,在请求量大的时候,建立多条连接放在池内,要发数据的时候就从池里取一条连接出来,用完放回去,下次再复用,可以说非常环保。
-目前,对外一般用 HTTP 协议,而内部集群的微服务之间则采用 RPC
-协议进行通讯。
-Dubbo 上线问题
-记录、学习、汇总实习和技术博客中看到的 Dubbo 实战遇到的问题
-服务端接口不指定通讯协议导致
-OOM
-问题背景:
-问题描述:
-
-开发人员使用方没有配置接口的 protocol
-字段,而是写在接口实现类上
-dubbo-3.0.4
框架:
-
-- 若没有指定 protocol 字段,会创建服务端提供的所有协议的 invoker
-- EasyREST 包
createClientInvoker
创建 REST 协议的 invoker
-时需要 HttpMethod 参数
-- 由于注解写在实现类而不是接口上面,导致消费端无法共享相应的 REST
-配置信息,即 HttpMethod 为 null,因此 RESTClient 创建失败
-- 在服务更新过程中,客户端每次都是全量更新注册中心的服务端信息,这个过程中如果
-invoker
-一直注册失败,会不断将失败的
Client
存到List<ResteasyClient>
中,如果有
-n 台机器需要依次更新,这时客户端的数组中会存 n*n
-个失败的连接实例,从而导致 OOM
-
-
-解决方法(针对框架,开发人员需要牢记 Dubbo 配置必须在接口上):
-
-- ResteasyClient 对象由 RestProtocol 协议对象持有,针对没有创建成功
-invoker 的场景应把其对应的 ResteasyClient 销毁掉
-
-销毁方法
-
-- 用
Map<String, ResteasyClient>
代替
-List<ResteasyClient>
,同一个服务端只存一次
-- 用
WeakHashMap<String, ResteasyClient>
自动回收不用的
-ResteasyClient(参考pr)
-
-
-父子线程并发 RPC 调用死锁
-问题描述:
-
-- 直接通过
Executors
构造 固定数量+无限长等待队列
-线程池,该线程池在共享的无界队列上操作的固定数量的线程。在任何时候,最多nThreads线程将处于活动处理任务状态。如果在所有线程都处于活动状态时提交额外的任务,它们将在队列中等待,直到有线程可用。
-
-public static ExecutorService newFixedThreadPool(int nThreads) {
return new ThreadPoolExecutor(nThreads, nThreads,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>());
}
-
-- 并发调用 Rpc 接口获取返回值
-
-Future<String> future = executor.submit(()->{
return 数据查询任务;
})
-
-- 数据查询任务中存在父子调用关系,数据查询任务同步调用 Redis
-查询缓存和 Rpc 调用微服务获得数据。如果本地 Redis
-缓存中能获得数据,就直接返回缓存值并取消 Rpc 调用
-
future.cancel(true)
。
-
-解决办法
-
-- 父子任务分开并发执行,耗时的异步线程应做好线程池隔离
-CompletableFuture.anyOf(task1,tsak2)
-优先取先完成的那个任务的返回值
-
-
-尝试开发基础版 Rpc 中间件
-服务发现流程:使用远程服务的时候首先需要配置一个
-dubbo.xml
-文件或者在使用的类加上@Reference
,二者都是用来对dubbo消费者引用服务进行一些配置,然后应用在启动的时候会将配置信息转化为一个ReferenceBean
对象,并调用createProxy
方法创建一个远程服务接口的代理对象。
-代理对象的 invoke
-创建:启动时主动订阅注册中心,会显示地调用一次notify
接口,这个接口会尝试将远程服务注册的url
转换成一个本地的invoker
。
-
-- 转换过程中会根据具体的
protocol
创建对应的
-invoker
,如 Rest 和 Dubbo 需要解析不同的参数。
-
-服务注册地址发生改变时:会通知给消费者,dubbo
-协议里面明确讲到服务发生改变会全量更新所有客户端的缓存
-Netty 数据传输
-
-在网络通信中,序列化和编码通常是结合使用的。序列化将对象转换为字节流,编码将字节流转换为网络传输所需的格式(如按照协议规定的格式进行编码)。在接收端,解码将网络传输的数据解析为原始的格式(如解码成对象),以便进行进一步的处理和使用。
-
-Netty 是一个高性能事件驱动型非阻塞 IO 框架:
-
-- 提供了 ByteBuf 容器,更方便地处理数据。
ByteBuf
-在重写编解码器的 encoder/decoder 方法中作为参数传入。
-- channel
-
-编码:先序列化,再压缩,最后写进 ByteBuf 对象中
-解码:从 ByteBuf 对象中读,然后转成我们需要的对象
-代理模式
-静态代理
-
-静态代理中,我们对目标对象的每个方法的增强都是手动完成的(后面会具体演示代码),非常不灵活(比如接口一旦新增加方法,目标对象和代理对象都要进行修改)且麻烦(需要对每个目标类都单独写一个代理类)。
-实际应用场景非常非常少,日常开发几乎看不到使用静态代理的场景。
-
-从 JVM 层面来说,
-静态代理在编译时就将接口、实现类、代理类这些都变成了一个个实际的 class
-文件。
-静态代理的步骤
-
-- 定义一个接口及其实现类;
-- 创建一个代理类同样实现这个接口
-- 将目标对象注入进代理类,然后在代理类的对应方法调用目标类中的对应方法。这样的话,我们就可以通过代理类屏蔽对目标对象的访问,并且可以在目标方法执行前后做一些自己想做的事情。
-
-JDK 动态代理
-
-- 定义一个接口及其实现类;
-- 自定义 InvocationHandler 并重写 invoke 方法,在 invoke
-方法中我们会调用原生方法(被代理类的方法)并自定义一些处理逻辑;
-- 通过
-
Proxy.newProxyInstance(ClassLoader loader,Class<?>[] interfaces,InvocationHandler h)
-方法创建代理对象;
-
-public interface InvocationHandler {
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable;
}
public class RpcClientProxy implements InvocationHandler {
// 在代理类内,根据传入的类 clazz,获得代理对象
public <T> T getProxy(Class<T> clazz) {
return (T) Proxy.newProxyInstance(clazz.getClassLoader(), new Class<?>[]{clazz}, this);
}
// 当通过代理类调用的所有方法,实际上调用的是这个invoke(传入的只是服务接口,具体的实现在服务端实现类中)
public Object invoke(Object proxy, Method method, Object[] args) {...}
}
-那么是如何调用服务端实现类的代码的呢?注入
-
-- 在实例化 bean 之后,postProcessAfterInitialization 方法被调用。
-- 对于每个 bean 类的字段,检查是否标记了 @RpcReference 注解。
-- 如果发现标记了 @RpcReference
-注解的字段,根据注解中的信息创建相应的 RpcServiceConfig 对象。
-- 通过 RpcClientProxy 创建了一个代理对象
-clientProxy,这个代理对象实现了 declaredField.getType()
-所表示的接口,这个接口可能就是 HelloService 接口或其它接口,取决于
-helloService 字段的类型。
-- 这个代理对象 clientProxy 会在方法调用时委托给 RpcClientProxy 的
-invoke 方法,该方法负责处理远程调用的逻辑。
-- 通过反射设置 clientProxy 到 HelloController 类的 helloService
-字段上,替换了原来的字段值。
-
-Object clientProxy = rpcClientProxy.getProxy(declaredField.getType());
declaredField.setAccessible(true);
try {
declaredField.set(bean, clientProxy);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
-传输协议
-* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
* +-----+-----+-----+-----+--------+----+----+----+------+-----------+-------+-------+-----+---+-----+----+
* | magic code |version | full length | messageType| codec|compress| RequestId |
* +-----------------------+--------+---------------------+-----------+-----------+-----------+------------+
* | body |
* +-------------------------------------------------------------------------------------------------------+
* 4B magic code(魔法数) 1B version(版本) 4B full length(消息长度) 1B messageType(消息类型)
* 1B compress(压缩类型) 1B codec(序列化类型) 4B requestId(请求的Id)
-注册中心
-服务注册:在 zk 里面创建一个对应的持久节点
-当我们的服务被注册进 zookeeper
-的时候,我们将完整的服务名称 rpcServiceName (class
-name+group+version)作为根节点
-,子节点是对应的服务地址(ip+端口号)。相关代码在
-ZkServiceProviderImpl.publishService()
中。
-如果我们要获得某个服务对应的地址的话,就直接根据完整的服务名称来获取到其下的所有子节点,然后通过具体的负载均衡策略取出一个就可以了。相关代码在
-ZkServiceDiscoveryImpl.lookupService()
中。
-Zookeeper 客户端
-
-Curator 是 Netflix
-公司开源的一套zookeeper客户端框架,解决了很多Zookeeper客户端非常底层的细节开发工作,包括连接重连、反复注册Watcher和NodeExistsException异常等等。项目内采用
-CuratorUtils 类调用 Curator。
-
-重试策略:ExponentialBackoffRetry是指数退避重试策略
-// zk的对外接口,后面我们要干什么只需要通过单例模式获得这个类,然后用这个类的方法
public interface ServiceProvider {
// 添加到本地 serviceMap 中(远程Rpc调用,获取本地的调用类)
void addService(RpcServiceConfig rpcServiceConfig);
Object getService(String rpcServiceName);
// 注册服务到 zookeeper 中(服务发现与注册)
void publishService(RpcServiceConfig rpcServiceConfig);
}
-负载均衡
-随机选取策略 轮询策略 加权轮询策略 最少活跃连接策略 一致性 Hash
-策略
-序列化
-
-- 序列化:将数据结构或对象转化为二进制字节流
-- 反序列化:将在序列化过程中生成的二进制字节流转化为数据结构或对象
-
-数据传输过程中,可能会出现粘包和半包问题,你是如何解决的?
-自定义消息结构(其他的还有固定长度传输、特殊字符分割):MagicNumber
-魔数、ContentLength 请求长度
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0%
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Spring/image-20240521182846989.png b/Spring/image-20240521182846989.png
deleted file mode 100644
index 475976d..0000000
Binary files a/Spring/image-20240521182846989.png and /dev/null differ
diff --git a/Spring/image-20240521182854337.png b/Spring/image-20240521182854337.png
deleted file mode 100644
index f7830fc..0000000
Binary files a/Spring/image-20240521182854337.png and /dev/null differ
diff --git a/Spring/index.html b/Spring/index.html
deleted file mode 100644
index d008ab7..0000000
--- a/Spring/index.html
+++ /dev/null
@@ -1,467 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Spring | 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 闻
-
-
- Yesterday is history, tomorrow is a mystery but today is a gift.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Spring
-
-
-
-
-
- 什么是 Spring 框架?
-
-
-
-
-
-
- SpringCore 主要提供 IoC 依赖注入功能的支持 SpringMVC 快速构建 MVC
-架构的 Web 程序 SpringBoot 简化 Spring 开发,减少配置文件,开箱即用
-IOC 控制反转
-
-当一个对象创建时,它所依赖的对象由外部传递给它,而非自己去创建所依赖的对象(比如通过new操作)。因此,也可以说在对象如何获取它的依赖对象这件事情上,控制权反转了。这便不难理解控制反转和依赖注入这两个名字的由来了。
-
-将对象之间的相互依赖关系交给 IoC 容器来管理,并由 IoC
-容器完成对象的注入 Bean 工厂模式
-
-- 单例 Singleton、多例/原型 Prototype Bean
-
-AOP 面向切面编程
-将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性。
-实现方式:基于动态代理,有接口用 jdk 原生的代理方法,没借口用 CGLib
-
-Bean 生命周期
-
-自动装配:@Component;@Service;@Controller;@Configure + @Bean
-
-
-xxx.class --> 默认无参构造方法 --> 普通对象 -->
-依赖注入(属性赋值) --> 初始化前 --> 初始化 --> 初始化后
---> 代理对象 --> 得到Bean(源码)
-实例化 Bean
-对象:默认调用无参构造器;若使用有参构造器,参数必须是容器中有的Bean【按参数查找
-Bean 时,先按照 classname 后按照参数名】 初始化前中后:BeanPostProcessor
-的 postProcessAfterInitialization() --> @PostConstruct 注解 -->
-InitializingBean 的 afterPropertiesSet() 方法 --> BeanPostProcessor
-的 postProcessAfterInitialization()(实现了 AOP 代理)
-
-- Aware 其实就是一个标识;只有满足 Aware
-规范或者其子类规范的才能进行相关的赋值操作,这样做的话可以少写很多判断,并且可以在一个地方进行统一的判断赋值;
-- BeanPostProcessor
-前置处理器的关键实现类:ApplicationContextAwareProcessor
-- BeanPostProcessor
-后置处理器的关键实现类:AbstractAutoProxyCreator。这个方法负责帮我们创建代理,底层采用对象cglib
-或动态代理【AOP其实就是 IOC
-整体流程(Bean生命周期)里的一个扩展点】
-- InitializingBean 接口中的 afterPropertiesSet
-方法:在这个方法里面去编写我们的业务逻辑,以及进行相关的属性赋值等等
-
-底层实现
-
-- AbstractAutowireCapableBeanFactory 内的 initializeBean 调用了所有
-BeanPostProcessor 的实现类
-- ApplicationContext 类型容器的内部维护了一个 BeanFactory
-类型的容器(AnnotationConfigApplicationContext 的父类
-GenericApplicationContext 维护了一个 Bean
-工厂实现类:DefaultListableBeanFactory)
-- DefaultListableBeanFactory:Spring 默认的 BeanFactory 实现
-- DefaultSingletonBeanRegistry:DefaultListableBeanFactory
-单例模式存储关系的地方 Map<String(BeanName),Object(instance)>
-- AbstractApplicationContext.refresh() 方法
-
-- 配置了对 BeanFactoryPostProcessor 的实现
-postProcessBeanFactory(beanFactory) 和处理
-invokeBeanFactoryPostProcessors(beanFactory)。BeanFactoryPostProcessor
-可以自定义 ApplicationContext 容器中的 BeanFactory
-进行处理,在还没有对任何Bean进行实例化之前(ConfigurationClassPostProcessor
-通过注解解析配置类;PropertySourcesPlaceholderConfigurer:xml配置文件中导入的
-properties 文件进行解析,并替换bean定义中的占位符)
-- 配置了对 BeanPostProcessor 的实现
-
-
-
-
-- (1-1)依赖注入:@Autowired;@Resource
-- 事务 @Transactional、@Configuration
-- (1-2)单例 Singleton、多例/原型 Prototype Bean
-- jvm类加载器classloader:bootstrap ext app 博客
-
-TODO Spring 启动流程 Springboot 和 Spring 最大的区别就是不需要 xml
-配置 Springboot 自动配置
-
-- “约定优于配置”理念
-- @EnableAutoConfiguration
-- 自动将一些配置类的bean注册进ioc容器
-
-logback是 slf4j 的官方实现,log4j 是另一个实现,logback 和 log4j
-才是二选一,slf4j 是门面日志的 api。
-TODO https://www.cnblogs.com/tuyang1129/p/12861617.html
-https://www.cnblogs.com/tuyang1129/p/12866484.html
-Spring 事务
-Spring 的声明式事务信息是存在 ThreadLocal
-中的,所以一个线程永远只能有一个事务,所以 Spring
-的事务是无法实现事务一致性(同时提交、同时回滚)的
-解决方法:可以通过编程式事务,或者通过分布式事务的思路:二阶段提交方式
-如何解决循环依赖
-
-
-- 一级缓存,缓存正常的 bean 实例
-- 二级缓存,缓存还未进行依赖注入和初始化方法调用的 bean 实例
-- 三级缓存,缓存 bean 实例的 ObjectFactory,用于解决 BeanPostProcessor
-代理类时正确地依赖注入
-
-
-循环依赖的情况下,不管使用三级缓存还是两级缓存,代理类逻辑都必须提前曝光
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0%
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/SpringMVC/2018120522281643.gif b/SpringMVC/2018120522281643.gif
deleted file mode 100644
index 8b47562..0000000
Binary files a/SpringMVC/2018120522281643.gif and /dev/null differ
diff --git a/SpringMVC/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5q2i5q2l5YmN6KGM,size_20,color_FFFFFF,t_70,g_se,x_16.png b/SpringMVC/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5q2i5q2l5YmN6KGM,size_20,color_FFFFFF,t_70,g_se,x_16.png
deleted file mode 100644
index 049b7f8..0000000
Binary files a/SpringMVC/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5q2i5q2l5YmN6KGM,size_20,color_FFFFFF,t_70,g_se,x_16.png and /dev/null differ
diff --git a/Transformers/index.html b/Transformers/index.html
index f16ea9a..d8a4a30 100644
--- a/Transformers/index.html
+++ b/Transformers/index.html
@@ -19,16 +19,16 @@
-
+
-
+
-
+
@@ -141,7 +141,7 @@
@@ -154,18 +154,18 @@
@@ -211,7 +211,7 @@
-
+
@@ -233,47 +233,50 @@
更新于
-
+
+ Transformers & NLP 相关库及实现
- NLP
-任务:情感分析、文本生成、命名体识别、阅读理解、掩码填充、文本摘要、机器翻译、特征提取、对话机器人
-万物之始 Transformer Attention is all you need
-
-
-
-- 直接将句子中任意两个单词的联系通过一个计算步骤直接联系起来,远距离依赖特征之间的距离被极大缩短,有利于有效地利用这些特征;
-- Self Attention 对于增加计算的并行性有直接帮助作用;
-
-Transformers及相关库
-Transformers:核心库,模型加载、模型训练、流水线并行等
-Tokenizer:分词器,对数据进行预处理,文本到token序列的互相转换。具体工作包括:分词、索引、填充截断、attention_mask、token_type
-Datasets:数据集库,提供了数据集的加载、处理等方法
-Evaluate:评估函数,提供各种评价指标的计算函数
-Trainer:将模型训练流程打包,包括:创建优化器、创建DataLoader、tensor转移到CUDA上
-PEFT:高效微调模型的库,提供了几种高效微调的方法,小参数量动大模型
-Accelerate:分布式训练,提供了分布式训练解决方案,包括大模型的加载与推理解决方案
-Optimum:优化加速库,支持多种后端,如Onnxruntime、OpenVino等
-Gradio:可视化部署库,几行代码快速实现基于Web交互的算法演示系统
-NLP
-NLP
-数据集大多是未标注的文档,因此采用自监督学习的方式训练模型,如预测下一个词
-LM、完形填空 MLM。
-早些年,流行的是词嵌入 Word
-Embedding,目标是采用向量的形式表示词元,采用一组向量表示一段话,可以用于计算词/句子相似度。
-现阶段,Transformer
-的出现促使三种类型的模型的出现:Encoder-only-only-Decoder。Encoder-only
-适用于机器翻译、句子分类、命名体识别和问答;Decoder-only
-适用于文本预测;Encoder-Decoder 适用于文本压缩。
+ NLP
+任务:情感分析、文本生成、命名体识别、阅读理解、掩码填充、文本摘要、机器翻译、特征提取、对话机器人
+万物之始 Transformer Attention is all you need
+
+
+
+- 直接将句子中任意两个单词的联系通过一个计算步骤直接联系起来,远距离依赖特征之间的距离被极大缩短,有利于有效地利用这些特征;
+- Self Attention 对于增加计算的并行性有直接帮助作用;
+
+Transformers及相关库
+Transformers:核心库,模型加载、模型训练、流水线并行等
+Tokenizer:分词器,对数据进行预处理,文本到token序列的互相转换。具体工作包括:分词、索引、填充截断、attention_mask、token_type
+Datasets:数据集库,提供了数据集的加载、处理等方法
+Evaluate:评估函数,提供各种评价指标的计算函数
+Trainer:将模型训练流程打包,包括:创建优化器、创建DataLoader、tensor转移到CUDA上
+PEFT:高效微调模型的库,提供了几种高效微调的方法,小参数量动大模型
+Accelerate:分布式训练,提供了分布式训练解决方案,包括大模型的加载与推理解决方案
+Optimum:优化加速库,支持多种后端,如Onnxruntime、OpenVino等
+Gradio:可视化部署库,几行代码快速实现基于Web交互的算法演示系统
+分布式训练
+Accelerate 包,融合了 Deepspeed、DDP、FSDP;
+NLP
+NLP
+数据集大多是未标注的文档,因此采用自监督学习的方式训练模型,如预测下一个词
+LM、完形填空 MLM。
+早些年,流行的是词嵌入 Word
+Embedding,目标是采用向量的形式表示词元,采用一组向量表示一段话,可以用于计算词/句子相似度。
+现阶段,Transformer
+的出现促使三种类型的模型的出现:Encoder-only-only-Decoder。Encoder-only
+适用于机器翻译、句子分类、命名体识别和问答;Decoder-only
+适用于文本预测;Encoder-Decoder 适用于文本压缩。
@@ -292,8 +295,8 @@ NLP
diff --git a/about/index.html b/about/index.html
index 4c03e1a..0b3c810 100644
--- a/about/index.html
+++ b/about/index.html
@@ -150,18 +150,18 @@
diff --git a/archives/2023/08/index.html b/archives/2023/08/index.html
index 6257174..9271fa5 100644
--- a/archives/2023/08/index.html
+++ b/archives/2023/08/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
- 还行! 目前共计 39 篇日志。 继续努力。
+ 还行! 目前共计 31 篇日志。 继续努力。
diff --git a/archives/2023/09/index.html b/archives/2023/09/index.html
index 976e2d1..2195b38 100644
--- a/archives/2023/09/index.html
+++ b/archives/2023/09/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
- 还行! 目前共计 39 篇日志。 继续努力。
+ 还行! 目前共计 31 篇日志。 继续努力。
diff --git a/archives/2023/10/index.html b/archives/2023/10/index.html
index 4bf74a7..2c6bf0f 100644
--- a/archives/2023/10/index.html
+++ b/archives/2023/10/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
- 还行! 目前共计 39 篇日志。 继续努力。
+ 还行! 目前共计 31 篇日志。 继续努力。
diff --git a/archives/2023/index.html b/archives/2023/index.html
index 7912013..09740f6 100644
--- a/archives/2023/index.html
+++ b/archives/2023/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
- 还行! 目前共计 39 篇日志。 继续努力。
+ 还行! 目前共计 31 篇日志。 继续努力。
diff --git a/archives/2024/01/index.html b/archives/2024/01/index.html
index 91a50c2..e4fbd4f 100644
--- a/archives/2024/01/index.html
+++ b/archives/2024/01/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
- 还行! 目前共计 39 篇日志。 继续努力。
+ 还行! 目前共计 31 篇日志。 继续努力。
diff --git a/archives/2024/03/index.html b/archives/2024/03/index.html
index 6aa7a15..8457e2a 100644
--- a/archives/2024/03/index.html
+++ b/archives/2024/03/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
- 还行! 目前共计 39 篇日志。 继续努力。
+ 还行! 目前共计 31 篇日志。 继续努力。
@@ -239,26 +239,6 @@ 闻
-
-
-
-
-
-
-
-
- SpringMVC
-
-
-
-
-
-
-
diff --git a/archives/2024/04/index.html b/archives/2024/04/index.html
index 0624b05..6e88b69 100644
--- a/archives/2024/04/index.html
+++ b/archives/2024/04/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
- 还行! 目前共计 39 篇日志。 继续努力。
+ 还行! 目前共计 31 篇日志。 继续努力。
@@ -199,26 +199,6 @@ 闻
2024
-
-
-
-
-
-
-
-
- MySQL
-
-
-
-
-
-
-
@@ -239,26 +219,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
@@ -299,66 +259,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Rpc 中间件
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Java 并发锁
-
-
-
-
-
-
-
@@ -399,26 +299,6 @@ 闻
-
-
-
-
-
-
-
-
- Java 并发基础
-
-
-
-
-
-
-
diff --git a/archives/2024/05/index.html b/archives/2024/05/index.html
index f97bca9..d73f691 100644
--- a/archives/2024/05/index.html
+++ b/archives/2024/05/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
- 还行! 目前共计 39 篇日志。 继续努力。
+ 还行! 目前共计 31 篇日志。 继续努力。
@@ -259,26 +259,6 @@ 闻
-
-
-
-
-
-
-
-
- Redis
-
-
-
-
-
-
-
diff --git a/archives/2024/06/index.html b/archives/2024/06/index.html
index 4c6c89c..0a76193 100644
--- a/archives/2024/06/index.html
+++ b/archives/2024/06/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
- 还行! 目前共计 39 篇日志。 继续努力。
+ 还行! 目前共计 31 篇日志。 继续努力。
@@ -230,7 +230,7 @@ 闻
diff --git a/archives/2024/07/index.html b/archives/2024/07/index.html
index 05e4b9e..17125d4 100644
--- a/archives/2024/07/index.html
+++ b/archives/2024/07/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
- 还行! 目前共计 39 篇日志。 继续努力。
+ 还行! 目前共计 31 篇日志。 继续努力。
@@ -199,26 +199,6 @@ 闻
2024
-
-
-
-
-
-
-
-
- LLM-Finetune
-
-
-
-
-
-
-
diff --git a/archives/2024/02/index.html b/archives/2024/08/index.html
similarity index 87%
rename from archives/2024/02/index.html
rename to archives/2024/08/index.html
index 868e602..9324506 100644
--- a/archives/2024/02/index.html
+++ b/archives/2024/08/index.html
@@ -22,7 +22,7 @@
-
+
@@ -30,11 +30,11 @@
-
+
-
+
归档 | 闻
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
- 还行! 目前共计 39 篇日志。 继续努力。
+ 还行! 目前共计 31 篇日志。 继续努力。
@@ -203,15 +203,15 @@ 闻
@@ -223,15 +223,15 @@ 闻
@@ -243,15 +243,35 @@ 闻
-
- Spring
+
+ LLM
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/archives/2024/index.html b/archives/2024/index.html
index 7eb55db..24f10da 100644
--- a/archives/2024/index.html
+++ b/archives/2024/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
- 还行! 目前共计 39 篇日志。 继续努力。
+ 还行! 目前共计 31 篇日志。 继续努力。
@@ -203,15 +203,75 @@ 闻
+
+
+
+
+
+
+
+
+
+
+
+
+
+ [paper]PAFT
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LLM
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -330,7 +390,7 @@ 闻
@@ -399,46 +459,6 @@ 闻
-
-
-
-
-
-
-
-
- Redis
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- MySQL
-
-
-
-
-
-
-
@@ -459,26 +479,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
@@ -523,15 +523,15 @@ 闻
@@ -543,15 +543,15 @@ 闻
@@ -563,15 +563,15 @@ 闻
@@ -583,15 +583,15 @@ 闻
diff --git a/archives/2024/page/2/index.html b/archives/2024/page/2/index.html
index daaf36e..313de5b 100644
--- a/archives/2024/page/2/index.html
+++ b/archives/2024/page/2/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
- 还行! 目前共计 39 篇日志。 继续努力。
+ 还行! 目前共计 31 篇日志。 继续努力。
@@ -199,166 +199,6 @@ 闻
2024
-
-
-
-
-
-
-
-
- 实习笔试题汇总
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Java 并发基础
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 计算机网络
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 数据结构和算法
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- SpringMVC
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- JVM 虚拟机
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Java 语言
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Spring
-
-
-
-
-
-
-
diff --git a/archives/index.html b/archives/index.html
index 88675c4..0cd365d 100644
--- a/archives/index.html
+++ b/archives/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
- 还行! 目前共计 39 篇日志。 继续努力。
+ 还行! 目前共计 31 篇日志。 继续努力。
@@ -203,15 +203,75 @@ 闻
+
+
+
+
+
+
+
+
+
+
+
+
+
+ [paper]PAFT
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LLM
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -330,7 +390,7 @@ 闻
@@ -399,46 +459,6 @@ 闻
-
-
-
-
-
-
-
-
- Redis
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- MySQL
-
-
-
-
-
-
-
@@ -459,26 +479,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
@@ -523,15 +523,15 @@ 闻
@@ -543,15 +543,15 @@ 闻
@@ -563,15 +563,15 @@ 闻
@@ -583,15 +583,15 @@ 闻
diff --git a/archives/page/2/index.html b/archives/page/2/index.html
index 10583b7..5222bff 100644
--- a/archives/page/2/index.html
+++ b/archives/page/2/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
- 还行! 目前共计 39 篇日志。 继续努力。
+ 还行! 目前共计 31 篇日志。 继续努力。
@@ -199,166 +199,6 @@ 闻
2024
-
-
-
-
-
-
-
-
- 实习笔试题汇总
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Java 并发基础
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 计算机网络
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 数据结构和算法
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- SpringMVC
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- JVM 虚拟机
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Java 语言
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Spring
-
-
-
-
-
-
-
diff --git "a/categories/Java\345\237\272\347\241\200/index.html" "b/categories/Java\345\237\272\347\241\200/index.html"
index a501ef4..493b5a1 100644
--- "a/categories/Java\345\237\272\347\241\200/index.html"
+++ "b/categories/Java\345\237\272\347\241\200/index.html"
@@ -149,18 +149,18 @@
@@ -220,126 +220,6 @@ Java基础
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Java 并发锁
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Java 并发基础
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- JVM 虚拟机
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Java 语言
-
-
-
-
-
-
-
diff --git "a/categories/LLM\345\272\224\347\224\250\345\274\200\345\217\221/index.html" "b/categories/LLM\345\272\224\347\224\250\345\274\200\345\217\221/index.html"
index 3b556a3..015e906 100644
--- "a/categories/LLM\345\272\224\347\224\250\345\274\200\345\217\221/index.html"
+++ "b/categories/LLM\345\272\224\347\224\250\345\274\200\345\217\221/index.html"
@@ -149,18 +149,18 @@
diff --git "a/categories/LLM\345\276\256\350\260\203/index.html" "b/categories/LLM\345\276\256\350\260\203/index.html"
index fa7a49f..fad893a 100644
--- "a/categories/LLM\345\276\256\350\260\203/index.html"
+++ "b/categories/LLM\345\276\256\350\260\203/index.html"
@@ -149,18 +149,18 @@
diff --git a/categories/index.html b/categories/index.html
index 9e42c33..906e2d3 100644
--- a/categories/index.html
+++ b/categories/index.html
@@ -150,18 +150,18 @@
@@ -202,10 +202,10 @@ categories
- 目前共计 12 个分类
+ 目前共计 11 个分类
diff --git a/tags/Spring/index.html b/categories/paper/index.html
similarity index 92%
rename from tags/Spring/index.html
rename to categories/paper/index.html
index 47e155e..733a113 100644
--- a/tags/Spring/index.html
+++ b/categories/paper/index.html
@@ -22,7 +22,7 @@
-
+
@@ -30,14 +30,14 @@
-
+
-
+
-标签: Spring | 闻
+分类: paper | 闻
@@ -149,18 +149,18 @@
@@ -181,7 +181,7 @@
-
+
@@ -190,8 +190,8 @@
- Spring
- 标签
+ paper
+ 分类
@@ -204,15 +204,15 @@ Spring
diff --git "a/categories/\345\205\253\350\202\241\346\226\207/index.html" "b/categories/\345\205\253\350\202\241\346\226\207/index.html"
index 975aca2..0e49e9a 100644
--- "a/categories/\345\205\253\350\202\241\346\226\207/index.html"
+++ "b/categories/\345\205\253\350\202\241\346\226\207/index.html"
@@ -149,18 +149,18 @@
diff --git "a/categories/\345\267\245\344\275\234/index.html" "b/categories/\345\267\245\344\275\234/index.html"
index 85b3535..1399c07 100644
--- "a/categories/\345\267\245\344\275\234/index.html"
+++ "b/categories/\345\267\245\344\275\234/index.html"
@@ -149,18 +149,18 @@
diff --git "a/categories/\345\267\245\344\275\234/\346\200\235\350\200\203/index.html" "b/categories/\345\267\245\344\275\234/\346\200\235\350\200\203/index.html"
index 5627b7a..d9dd295 100644
--- "a/categories/\345\267\245\344\275\234/\346\200\235\350\200\203/index.html"
+++ "b/categories/\345\267\245\344\275\234/\346\200\235\350\200\203/index.html"
@@ -149,18 +149,18 @@
diff --git "a/categories/\345\274\200\345\217\221\345\267\245\345\205\267/index.html" "b/categories/\345\274\200\345\217\221\345\267\245\345\205\267/index.html"
index d003ed9..2b8df20 100644
--- "a/categories/\345\274\200\345\217\221\345\267\245\345\205\267/index.html"
+++ "b/categories/\345\274\200\345\217\221\345\267\245\345\205\267/index.html"
@@ -149,18 +149,18 @@
@@ -200,6 +200,26 @@ 开发工具
2024
+
+
+
+
+
+
+
+
+ Linux-Tool
+
+
+
+
+
+
+
@@ -211,7 +231,7 @@ 开发工具
diff --git "a/categories/\346\200\235\350\200\203/index.html" "b/categories/\346\200\235\350\200\203/index.html"
index b8a4227..c802f3c 100644
--- "a/categories/\346\200\235\350\200\203/index.html"
+++ "b/categories/\346\200\235\350\200\203/index.html"
@@ -149,18 +149,18 @@
diff --git "a/categories/\346\225\260\346\215\256\345\272\223/index.html" "b/categories/\346\225\260\346\215\256\345\272\223/index.html"
deleted file mode 100644
index 210c02d..0000000
--- "a/categories/\346\225\260\346\215\256\345\272\223/index.html"
+++ /dev/null
@@ -1,307 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-分类: 数据库 | 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 闻
-
-
- Yesterday is history, tomorrow is a mystery but today is a gift.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0%
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git "a/categories/\347\247\221\347\240\224/index.html" "b/categories/\347\247\221\347\240\224/index.html"
index 270149e..ed285c0 100644
--- "a/categories/\347\247\221\347\240\224/index.html"
+++ "b/categories/\347\247\221\347\240\224/index.html"
@@ -149,18 +149,18 @@
diff --git "a/categories/\347\256\227\346\263\225/index.html" "b/categories/\347\256\227\346\263\225/index.html"
index 5337f0e..b429489 100644
--- "a/categories/\347\256\227\346\263\225/index.html"
+++ "b/categories/\347\256\227\346\263\225/index.html"
@@ -149,18 +149,18 @@
diff --git a/index.html b/index.html
index 5f8440c..4658d71 100644
--- a/index.html
+++ b/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- LLM-Finetune
+ Linux-Tool
@@ -219,15 +219,18 @@
发表于
+
-
+
-
+
- 更新于
-
+ 分类于
+
+ 开发工具
+
@@ -240,10 +243,10 @@
- 大模型微调具体实现方法,包括数据预处理、数据加载、微调模型构建、模型训练、加速训练方法、保存微调结果、加载 Adapter、推理测评、可交互 Cli等
+ Linux高效工具的使用方法
@@ -274,7 +277,7 @@
-
+
@@ -292,7 +295,7 @@
- Transformers 使用入门
+ [paper]PAFT
@@ -303,14 +306,23 @@
发表于
-
+
更新于
-
+
+
+
+
+
+
+ 分类于
+
+ paper
+
@@ -323,36 +335,15 @@
- NLP
-任务:情感分析、文本生成、命名体识别、阅读理解、掩码填充、文本摘要、机器翻译、特征提取、对话机器人
-万物之始 Transformer Attention is all you need
-
-
-
-- 直接将句子中任意两个单词的联系通过一个计算步骤直接联系起来,远距离依赖特征之间的距离被极大缩短,有利于有效地利用这些特征;
-- Self Attention 对于增加计算的并行性有直接帮助作用;
-
-Transformers及相关库
-Transformers:核心库,模型加载、模型训练、流水线并行等
-Tokenizer:分词器,对数据进行预处理,文本到token序列的互相转换。具体工作包括:分词、索引、填充截断、attention_mask、token_type
-Datasets:数据集库,提供了数据集的加载、处理等方法
-Evaluate:评估函数,提供各种评价指标的计算函数
-Trainer:将模型训练流程打包,包括:创建优化器、创建DataLoader、tensor转移到CUDA上
-PEFT:高效微调模型的库,提供了几种高效微调的方法,小参数量动大模型
-Accelerate:分布式训练,提供了分布式训练解决方案,包括大模型的加载与推理解决方案
-Optimum:优化加速库,支持多种后端,如Onnxruntime、OpenVino等
-Gradio:可视化部署库,几行代码快速实现基于Web交互的算法演示系统
-NLP
-NLP
-数据集大多是未标注的文档,因此采用自监督学习的方式训练模型,如预测下一个词
-LM、完形填空 MLM。
-早些年,流行的是词嵌入 Word
-Embedding,目标是采用向量的形式表示词元,采用一组向量表示一段话,可以用于计算词/句子相似度。
-现阶段,Transformer
-的出现促使三种类型的模型的出现:Encoder-only-only-Decoder。Encoder-only
-适用于机器翻译、句子分类、命名体识别和问答;Decoder-only
-适用于文本预测;Encoder-Decoder 适用于文本压缩。
-
+ RAFT:Adapting Language Model to Domain Specific RAG 提出了检索增强微调(Retrieval Augmented Fine Tuning)方法,微调模型使其学习“如何忽略任何检索到的、无助于回答给定问题的文档,且不产生幻觉”,使 LLM 具有特定于域的 RAG 功能
+
+
+
+ 阅读全文 »
+
+
+
+
@@ -378,7 +369,7 @@ NLP
-
+
@@ -396,7 +387,7 @@ NLP
- 大模型微调方法
+ LLM
@@ -406,24 +397,9 @@
发表于
+
-
-
-
-
-
-
- 更新于
-
-
-
-
-
-
- 分类于
-
- LLM微调
-
+
@@ -436,15 +412,14 @@
- 微调的理论基础,总结了至今为止较优的参数高效微调(Parameter-Efficient Fine-Tuning)的方法和低精度微调量化
-
-
-
- 阅读全文 »
-
-
-
-
+
+大模型核心技术点在于训练资源、数据清洗和数据配比等,其难点或许不在于模型训练和模型结构搭建
+
+前缀语言模型 Encoder-Decoder
+ChatGLM
+掩码语言模型 自编码模型 Encoder-Only
+因果语言模型 自回归模型 Decoder-Only
+
@@ -470,7 +445,7 @@
-
+
@@ -488,7 +463,7 @@
- 实习日志
+ LLM-RLHF
@@ -498,24 +473,9 @@
发表于
+
-
-
-
-
-
-
- 更新于
-
-
-
-
-
-
- 分类于
-
- 工作
-
+
@@ -528,10 +488,10 @@
- 写周报给自己看!哈哈哈
+ LLM人工对齐算法
@@ -562,7 +522,7 @@
-
+
@@ -580,7 +540,7 @@
- 如何工作
+ Transformers 使用入门
@@ -590,22 +550,15 @@
发表于
-
-
+
-
+
- 分类于
-
- 工作
-
- ,
-
- 思考
-
+ 更新于
+
@@ -618,10 +571,10 @@
- 工作与学习不同,不只是“唯分数论”,更要妥善处理人际关系、高效沟通等等。这并不是什么高大上的真理,而是和吃饭喝水一样普通的事情。
+ Transformers & NLP 相关库及实现
@@ -652,7 +605,7 @@
-
+
@@ -670,7 +623,7 @@
- 机器学习基础
+ 大模型微调方法
@@ -681,14 +634,23 @@
发表于
-
+
更新于
-
+
+
+
+
+
+
+ 分类于
+
+ LLM微调
+
@@ -701,10 +663,10 @@
- 机器学习是采用真实世界中采样的一小部分数据,并且希望模型能够对于未知数据有不错的泛化性能。
+ 微调的理论基础,总结了至今为止较优的参数高效微调(Parameter-Efficient Fine-Tuning)的方法和低精度微调量化
@@ -735,7 +697,7 @@
-
+
@@ -753,7 +715,7 @@
- Docker
+ 实习日志
@@ -764,14 +726,14 @@
发表于
-
+
更新于
-
+
@@ -779,7 +741,7 @@
分类于
- 开发工具
+ 工作
@@ -793,10 +755,10 @@
- 容器虚拟化技术,后续进一步学习 k8s
+ 写周报给自己看!哈哈哈
@@ -827,7 +789,7 @@
-
+
@@ -845,7 +807,7 @@
- 设计模式
+ 如何工作
@@ -855,15 +817,9 @@
发表于
+
-
-
-
-
-
-
- 更新于
-
+
@@ -871,7 +827,11 @@
分类于
- Java基础
+ 工作
+
+ ,
+
+ 思考
@@ -885,10 +845,10 @@
- 设计模式与其具体实现
+ 工作与学习不同,不只是“唯分数论”,更要妥善处理人际关系、高效沟通等等。这并不是什么高大上的真理,而是和吃饭喝水一样普通的事情。
@@ -919,7 +879,7 @@
-
+
@@ -937,7 +897,7 @@
- 模拟面试题
+ 机器学习基础
@@ -948,23 +908,14 @@
发表于
-
+
更新于
-
-
-
-
-
-
- 分类于
-
- 工作
-
+
@@ -977,10 +928,10 @@
- 汇总记录面试题,方便复习和面试模拟
+ 机器学习是采用真实世界中采样的一小部分数据,并且希望模型能够对于未知数据有不错的泛化性能。
@@ -1011,7 +962,7 @@
-
+
@@ -1029,7 +980,7 @@
- 操作系统
+ Docker
@@ -1040,14 +991,14 @@
发表于
-
+
更新于
-
+
@@ -1055,7 +1006,7 @@
分类于
- 八股文
+ 开发工具
@@ -1069,10 +1020,10 @@
- 待进一步学习
+ 容器虚拟化技术,待后续进一步学习 k8s
diff --git a/os/index.html b/os/index.html
index 1246028..da50706 100644
--- a/os/index.html
+++ b/os/index.html
@@ -156,18 +156,18 @@
@@ -264,8 +264,8 @@ 虚拟内存
只会访问虚拟内存地址,在操作总线前,通过一个地址转换硬件将虚拟内存地址转换为物理内存地址
进程隔离:将虚拟内存映射到物理内存,进程之间的地址空间相互隔离,互不干扰
虚拟内存空间:
-
-
+
+
用户态虚拟内存空间是相互隔离相互独立的;内核虚拟内存空间是各个进程共享的;
进程管理
数据结构 PCB
@@ -345,8 +345,8 @@ I/O 多路复用
diff --git a/page/2/index.html b/page/2/index.html
index 83089c0..0a32feb 100644
--- a/page/2/index.html
+++ b/page/2/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- Redis
+ 设计模式
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 数据库
+ Java基础
@@ -249,10 +249,10 @@
- Redis 基础
+ 项目架构的设计模式,和Java开发中的具体实现
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- MySQL
+ 模拟面试题
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- 数据库
+ 工作
@@ -341,10 +341,10 @@
- MySQL 基础,包括索引、事务、锁、日志、BufferPool等
+ 汇总记录面试题,方便复习和面试模拟
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 如何保持专注
+ 操作系统
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 思考
+ 八股文
@@ -433,10 +433,10 @@
- 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
+ 待进一步学习
@@ -467,7 +467,7 @@
-
+
@@ -485,7 +485,7 @@
- Java 常用数据结构的底层实现
+ 如何保持专注
@@ -496,14 +496,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +511,7 @@
分类于
- Java基础
+ 思考
@@ -525,10 +525,10 @@
- ArrayList、LinkedList、HashMap、ConcurrentHashMap 的底层源码剖析
+ 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
@@ -687,7 +687,7 @@
更新于
-
+
@@ -743,7 +743,7 @@
-
+
@@ -761,7 +761,7 @@
- ThreadPoolExecutor 和 CompletableFuture 实践
+ 实习面试题汇总
@@ -772,14 +772,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +787,7 @@
分类于
- Java基础
+ 工作
@@ -801,10 +801,10 @@
- 线程池的创建、使用方法,以及如何正确构造有父子关系、先后关系、与或关系的多线程并发场景。
+ 2024 实习投递面试题目汇总
@@ -835,7 +835,7 @@
-
+
@@ -853,7 +853,7 @@
- Rpc 中间件
+ 实习笔试题汇总
@@ -864,14 +864,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +879,7 @@
分类于
- Java开发
+ 工作
@@ -893,10 +893,10 @@
- Rpc 框架搭建过程遇到的问题、Dubbo 使用过程遇到的问题
+ 2024 实习投递笔试题目汇总
@@ -927,7 +927,7 @@
-
+
@@ -945,7 +945,7 @@
- Java 并发锁
+ 计算机网络
@@ -956,14 +956,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +971,7 @@
分类于
- Java基础
+ 八股文
@@ -985,15 +985,10 @@
- Java.util.concurrent 中有很多 Java 并发相关工具,例如 锁
-ReentrantLock
、线程 Callable
-FutureTask
、信号量 Semaphore
、共享锁
-CountDownLatch
-此外 Java 原生的 volatile
和 synchronized
-关键字也是并发编程的关键。
+ 如果我是一串电信号,我要去向何方呢?
@@ -1024,7 +1019,7 @@
-
+
@@ -1042,7 +1037,7 @@
- 实习面试题汇总
+ 数据结构和算法
@@ -1053,14 +1048,14 @@
发表于
-
+
更新于
-
+
@@ -1068,7 +1063,7 @@
分类于
- 工作
+ 算法
@@ -1082,10 +1077,10 @@
- 2024 实习投递面试题目汇总
+ 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
diff --git a/page/3/index.html b/page/3/index.html
index 85715e6..da7cbd9 100644
--- a/page/3/index.html
+++ b/page/3/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- 实习笔试题汇总
+ Git 文档阅读
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 工作
+ 开发工具
@@ -249,10 +249,10 @@
- 2024 实习投递笔试题目汇总
+ Git 文档阅读笔记和常用命令集合
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- Java 并发基础
+ ESConv
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- Java基础
+ 科研
@@ -341,10 +341,10 @@
- JMM、ThreadLocal
+ Title: Towards Emotional Support Dialog Systems
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 计算机网络
+ BlenderBot
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 八股文
+ 科研
@@ -433,10 +433,14 @@
- 如果我是一串电信号,我要去向何方呢?
+ Title: Recipes for building an open-domain
+chatbot
+
+FaceBook 在本文中提出了 BlenderBot 编解码器模型
+
@@ -467,7 +471,7 @@
-
+
@@ -485,7 +489,7 @@
- 数据结构和算法
+ MISC
@@ -496,14 +500,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +515,7 @@
分类于
- 算法
+ 科研
@@ -525,10 +529,12 @@
- 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
+ Title: A MIxed Strategy-Aware Model Integrating
+COMET for Emotional Support Conversation
+
@@ -559,7 +565,7 @@
-
+
@@ -577,7 +583,7 @@
- SpringMVC
+ KEMI
@@ -588,14 +594,14 @@
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+- 在 Encoder 和 Decoder 之间加了一层 GCNConv 和 RGCNConv
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
class Heap { |
思路
--
+
- 确定dp数组(dp table)以及下标的含义
- 确定递推公式
- dp数组如何初始化
- 确定遍历顺序
- 举例推导dp数组 -
思路:动规的中心思想就是把一个复杂问题拆分成多个简单、可以逐步堆叠得到答案的子问题。
+做题步骤
+每个物品只能用一次
@@ -401,8 +403,8 @@StringBuilder/StringBuffer
diff --git a/Java-DataStructure/image-20240425212414984.png b/Java-DataStructure/image-20240425212414984.png
deleted file mode 100644
index 6c362b1..0000000
Binary files a/Java-DataStructure/image-20240425212414984.png and /dev/null differ
diff --git a/Java-DataStructure/image-20240425212527868.png b/Java-DataStructure/image-20240425212527868.png
deleted file mode 100644
index 3a108e0..0000000
Binary files a/Java-DataStructure/image-20240425212527868.png and /dev/null differ
diff --git a/Java-DataStructure/index.html b/Java-DataStructure/index.html
deleted file mode 100644
index b91ce31..0000000
--- a/Java-DataStructure/index.html
+++ /dev/null
@@ -1,585 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Java 常用数据结构的底层实现 | 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 闻
-
-
- Yesterday is history, tomorrow is a mystery but today is a gift.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Java 常用数据结构的底层实现
-
-
-
-
-
- ArrayList、LinkedList、HashMap、ConcurrentHashMap 的底层源码剖析
-
-
-
-
-
-
- ArrayList
-ArrayList
的底层是数组队列,相当于动态数组。
-
-- 与数组相比,它的容量能动态增长。
-- 与 Vector 相比,它的底层使用 Object[]
-存储,适用于频繁的查找工作,线程不安全
-
-public class ArrayList<E> extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable{
void add(int, E);
E set(int, E);
E get(int);
E remove(int);
}
-
-List
:
-表明它是一个列表,支持添加、删除、查找等操作,并且可以通过下标进行访问。
-RandomAccess
:这是一个标志接口,表明实现这个接口的
-List
集合是支持 快速随机访问
-,可以通过元素的序号快速获取元素对象list.get(i)
。
-Cloneable
-:表明它具有拷贝能力,可以进行深拷贝或浅拷贝操作。
-Serializable
:
-表明它可以进行序列化操作,也就是可以将对象转换为字节流进行持久化存储或网络传输,非常方便。
-
-扩容机制
-初始化时默认空数组
-DEFAULTCAPACITY_EMPTY_ELEMENTDATA
。
-添加元素时,先判断需要扩容的最小扩容量大小(DEFAULT_CAPACITY 默认是
-10)
-private static int calculateCapacity(Object[] elementData, int minCapacity) {
if (elementData == DEFAULTCAPACITY_EMPTY_ELEMENTDATA) {
return Math.max(DEFAULT_CAPACITY, minCapacity);
}
return minCapacity;
}
-如果需要扩容,就会进入扩容方法 grow(),扩容效果是小于等于 1.5
-倍的(因为 int 取整)
-private void grow(int minCapacity) {
int oldCapacity = elementData.length;
int newCapacity = oldCapacity + (oldCapacity >> 1);
if (newCapacity - minCapacity < 0)
newCapacity = minCapacity;
if (newCapacity - MAX_ARRAY_SIZE > 0)
newCapacity = hugeCapacity(minCapacity);
elementData = Arrays.copyOf(elementData, newCapacity);
}
-如果扩容长度超过定义的数组的最大长度
-MAX_ARRAY_SIZE = Integer.MAX_VALUE-8
,就会触发最大值限制,防止
-size 溢出
-private static int hugeCapacity(int minCapacity) {
if (minCapacity < 0)
throw new OutOfMemoryError();
return (minCapacity > MAX_ARRAY_SIZE) ?
Integer.MAX_VALUE :
MAX_ARRAY_SIZE;
}
-将旧数组移动到新数组
-public static int[] copyOf(int[] original, int newLength) {
int[] copy = new int[newLength];
System.arraycopy(original, 0, copy, 0, Math.min(original.length, newLength));
return copy;
}
-手动扩容,可以在需要插入大量数据前手动扩容
-public void ensureCapacity(int minCapacity) {
int minExpand = (elementData != DEFAULTCAPACITY_EMPTY_ELEMENTDATA) ? 0 : DEFAULT_CAPACITY;
if (minCapacity > minExpand) {
ensureExplicitCapacity(minCapacity);
}
}
-与 LinkedList 的异同
-
-都不保证线程安全;
-ArrayList
底层使用的是 Object[]
-数组;LinkedList
底层使用的是
-Node+双向链表 数据结构(JDK1.6 之前为循环链表,JDK1.7
-取消了循环)
-插入和删除是否受元素位置的影响:
-
-ArrayList
-将指定的元素追加到此列表的末尾,时间复杂度
-O(1)。但是如果要在指定位置 i
-插入和删除元素的话(add(int index, E element)
),时间复杂度
-O(n)。
-LinkedList
-头尾插入或者删除元素不受元素位置的影响(add(E e)
、addFirst(E e)
、addLast(E e)
、removeFirst()
、
-removeLast()
),时间复杂度
-O(1);指定位置 i
-插入和删除元素的话(add(int index, E element)
,remove(Object o)
,remove(int index)
),
-时间复杂度为 O(n) 。
-
-是否支持快速随机访问: LinkedList
-不支持高效的随机元素访问,而 ArrayList
(实现了
-RandomAccess
接口) 支持。
-内存空间占用: ArrayList
-的空间浪费主要体现在在 list 列表的结尾会预留一定的容量空间,而
-LinkedList 的空间花费则体现在它的每一个元素 Node 都需要消耗比 ArrayList
-更多的空间
-
-LinkedList
-
-需要用到 LinkedList
的场景几乎都可以使用
-ArrayList
-来代替,而且性能会更好。头尾插入或者删除元素的时候时间复杂度近似
-O(1),其他情况增删元素的平均时间复杂度都是 O(n) 。
-
-public class LinkedList<E> extends AbstractSequentialList<E>
implements List<E>, Deque<E>, Cloneable, java.io.Serializable {
private static class Node<E> {
E item;
Node<E> next;
Node<E> prev;
Node(Node<E> prev, E element, Node<E> next) {
this.item = element;
this.next = next;
this.prev = prev;
}
}
}
-
-List
:
-表明它是一个列表,支持添加、删除、查找等操作,并且可以通过下标进行访问。
-Deque
:继承自 Queue
-接口,具有双端队列的特性,支持从两端插入和删除元素,方便实现栈和队列等数据结构。
-
-常用方法
-
-- 实现 List 接口
-
-- get、set
-
-- 实现 Collection 接口
-
-- 判断是否存在:contains
-
-- 实现 Queue 接口(通过 Deque 接口)
-
-- 报错:add、remove、element
-- 不报错:offer、poll、peek
-
-- 实现 Deque 接口
-
-- addFirst [push]、addLast [add]:无返回,容量超出限制会报错
-- offerFirst、offerLast [offer]:返回 Boolean 表示是否加入成功
-- removeFirst [remove]、removeLast:队列为空报错
-- pollFirst [poll]、pollLast:队列为空返回 null
-- getFirst [element]、getLast:队列为空报错
-- peekFirst [peek]、peekLast:队列为空返回 null
-
-- 【注意】队列头部为 null 和队列为空时,都会返回 null
-
-- removeFirstOccurrence [remove]、removeLastOccurrence
-- push、pop、peek:作为栈
-
-
-HashMap
-
-JDK1.8 之前 HashMap 采用“拉链法”处理冲突,由 数组+链表 组成; JDK1.8
-以后,若Table长度大于 64,会将链表转化为红黑树。
-
-
-
-
-- key 和 value 可以为 null,但 null 作为 key 只能有一个,而 null 作为
-value 可以有多个
-- 非线程安全的
-
-public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable {
// 默认的初始容量是16
static final int DEFAULT_INITIAL_CAPACITY = 1 << 4;
// 最大容量
static final int MAXIMUM_CAPACITY = 1 << 30;
// 默认的负载因子
static final float DEFAULT_LOAD_FACTOR = 0.75f;
// 当桶上的结点数大于等于这个值时会转成红黑树
static final int TREEIFY_THRESHOLD = 8;
// 当桶上的结点数小于等于这个值时树转链表
static final int UNTREEIFY_THRESHOLD = 6;
// 桶中结构转化为红黑树对应的 table 的最小容量
static final int MIN_TREEIFY_CAPACITY = 64;
// 存储桶(bin)的数组,永远是 2 的幂次倍
transient Node<k,v>[] table;
// 一个包含了映射中所有键值对的集合视图
// 先遍历数组 bin,再通过 Entry.next 遍历每个 bin
transient Set<map.entry<k,v>> entrySet;
// 存放元素的个数,注意这个不等于数组的长度
transient int size;
// 阈值=容量*负载因子,当实际大小超过阈值时,会进行扩容
int threshold;
// 负载因子
final float loadFactor;
static class Node<K,V> implements Map.Entry<K,V>{
final int hash;
final K key;
V value;
// 链表的下一个元素
Node<K,V> next;
}
static final class TreeNode<K,V> extends LinkedHashMap.Entry<K,V>{
Entry<K,V> before, after;
TreeNode<K,V> parent; // 红黑树链
TreeNode<K,V> left;
TreeNode<K,V> right;
TreeNode<K,V> prev; // 需要在下次删除时解除链接
boolean red;
}
}
-
-entrySet
-通过Node的next属性
遍历元素,keySet()
、values()
基于entrySet
实现,用于遍历访问所有
-Node
-元素,还支持元素的删除操作【不确定,entrySet不存储数据,只是数据对外的操作接口】。
-TreeNode
继承了 LinkedHashMap.Entry
-,有指向前后节点的指针
-
-jdk 1.8 Key 计算 hash 值的方法
-static final int hash(Object key) {
int h;
return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);
}
-扩容机制
-何时触发 resize()
扩容
-
-- 要插入数据前,发现
table
中的 bin
为空
-- 要插入数据后,发现
HashMap
的 size
超过
-threshold
-table
长度小于 MIN_TREEIFY_CAPACITY
时,某
-Node
上的链长度超过 TREEIFY_THRESHOLD
-
-resize()
扩容,会将 table 中的节点数量 <<
-1,并重新 hash 映射所有节点(因为 table 变大了,每个节点对应的 bin
-下标发生了变化
-newTab[e.hash & (newCap - 1)] = e
,newCap
为
-table 的新大小)
-链表何时变成红黑树?
-
-- 该
bin
上的链长度binCount
大于等于
-TREEIFY_THRESHOLD
且 table
中 bin
-数量大于等于 MIN_TREEIFY_CAPACITY
-
-如果链表转红黑树的时候,又有数据要插入,会发生什么?
-
-- 线程不安全。在树结构替换链表最终阶段会校验树结构,在此过程中的插入会使该树结构不满足红黑树和双链表的特性,导致报异常
-
assert checkInvariants(root);
-
-ConcurrentHashMap
-
-Java7 中 ConcurrentHashMap 使用的是分段锁,每一个 Segment
-上同时只有一个线程可以操作,结构上时 Segment
数组
-+ HashEntry
数组 +
-链表。Segment
-的个数一旦初始化就不能改变,默认 Segment
-的个数是 16
-个,Segment
继承ReentrantLock
实现分段锁。
-Java8 中的 ConcurrentHashMap 通过 Synchronized 锁加
-CAS 保证多线程安全,结构上是 Node
-数组 + 链表 / 红黑树。
-
-如果链表转红黑树,又有数据要插入,会发生什么。
-
-treeifyBin
通过 synchronized
把
-bin
加锁,后续数据插入会因为无法竞争到资源而阻塞
-- 链表开始转红黑树前,会将 Node 头节点置为
-
ForwardingNode
,ForwardingNode
的 hash 是
-Moved
-表示正在转换为红黑树,此时会自旋等待转换完成后插入(大概是这样的)
-
-如果数组扩容,又有数据要插入,会发生什么。
-
-- 扩容前,会将 Node 头节点置为
-
ForwardingNode
,ForwardingNode
的 hash 是
-Moved
表示正在扩容。
-- 扩容时,插入数据的线程若发现 hash
-值为负,会去协助扩容,扩容完成后再插入数据。
-
-
-
-- 在调用 addCount
-方法增加集合元素计数后发现当前集合元素个数到达扩容阈值时就会触发扩容
-- 扩容状态下其他线程对集合进行插入、修改、删除、合并、compute
-等操作时遇到
ForwardingNode
节点会触发扩容(帮助扩容)
-- putAll 批量插入或者插入节点后发现存在链表长度达到 8
-个或以上,但数组长度为 64 以下时会触发扩容 。
-
-同 HashMap:桶上链表长度达到 8 个或者以上,并且数组长度为 64
-以下时只会触发扩容而不会将链表转为红黑树
-LinkedHashMap
-LinkedHashMap
-内部维护了一个双向链表,确保其迭代顺序是和插入顺序或访问顺序是一致的,通过重写
-get、newNode、afterNodeAccess、afterNodeInsertion、afterNodeRemoval
-等方法实现,最近插入或访问的节点位于链表尾部。
-
-可以按照插入顺序遍历 entry(accessOrder=false)
-也可以按照访问顺序遍历 entry(accessOrder=true),即 LRU
-
-可用于实现 LRU,即 迭代顺序==访问顺序
-
-- 每次修改都将元素删除后重新插入
-- 将
accessOrder
设置为 true 并重写
-removeEldestEntry
方法当链表大小超过容量时返回 true
-
-CopyOnWriteList
-
-并发安全的
-List
,针对读多写少的场景,类比读写锁的思想,实现
-读读不互斥、读写不互斥、写写互斥 的写时复制
-Copy-On-Write 策略。此外还有 Collections.synchronizedList
-,可以将任何List
包装成一个线程安全的List
-
-add 方法内部用到了 ReentrantLock
-加锁,避免了多线程写的时候会复制出多个副本,导致并发问题
-写时复制的缺点
-
-- 写操作资源占用多,复制数据时占用内存
-- 数据一致性问题,修改后需要等到赋值给原数组才能访问到修改
-
-写多读少的场景下,应该用什么数据结构实现并发数组?
-分段读写锁 ReadWriteLock(由于 Arrays.copyOf()
-是操作系统实现,数据量少的话依然可用写时复制)
-PriorityQueue
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0%
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Java/image-20240516125841876.png b/Java/image-20240516125841876.png
deleted file mode 100644
index 3bba3a5..0000000
Binary files a/Java/image-20240516125841876.png and /dev/null differ
diff --git a/Java/index.html b/Java/index.html
deleted file mode 100644
index 5eb0f0e..0000000
--- a/Java/index.html
+++ /dev/null
@@ -1,556 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Java 语言 | 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 闻
-
-
- Yesterday is history, tomorrow is a mystery but today is a gift.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Java 语言
-
-
-
-
-
- Java 语言的基础知识
-
-
-
-
-
-
- 基础
-基本数据类型
-除八个基本类型,Java 的所有数据类型都是引用,Java
-中没有指针的概念,所有数据传输都是传值(引用可以看作是地址值,所有引用值都占四个字节)
-基本数据类型的包装类 Byte Short Integer Long Character 有常量池
-编译运行
-
-- Java 编译器 Javac 是用 Java 实现的,用于将 .java 文件编译成字节码
-.class
-- .class 通过解释器对这些字节码进行解释执行
-- Java 的运行环境 JVM 如 HotSpot VM,实现了其跨平台的特性
-
-三大特性
-封装
-将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体;
-继承
-支持类之间的单继承,但支持接口之间的多继承;
-类可以实现多个接口,抽象类不能实例化但可以有构造方法,内部类只能通过外部类创建;
-Object 是超类,是所有类的父类(无父类的子类默认继承
-Object。jdk6之前是编译器处理,jdk7之后是虚拟机处理);
-Java8 之后接口可以有默认方法,允许在接口中声明静态方法;
-多态
-全面支持动态绑定,动态绑定是实现多态(一个接口,多种实现)的基础;
-
-- 多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法(A
-a=new B(),A是父类,B是子类)
-- 静态绑定:对象属性和 static private final
-修饰的对象方法(构造函数),哪里声明,哪里使用
-- 动态绑定:运行时 JVM
-实现绑定。若子类实现了这个方法,则调用子类的内存地址,若没有则调用当前对象(父类)的方法。只能调用父类的属性,虽然实际实现的是子类,如果父类没有这个属性,那就无法调用。如果要获取子类属性,就要重写子类方法获取该属性,前提是这个方法在父类中同样存在。
-
-关键字
-
-
-
-
-
-
-
-关键字
-说明
-
-
-
-
-final
-常量
-
-
-static
-静态变量,无论一个类实例化多少对象,它的静态变量只有一份拷贝;静态方法,不能使用类的非静态变量,类名直接调用,不需要进行实例化对象。
-
-
-native
-本地、原生方法(非 Java 实现)
-
-
-strictfp
-严格浮点、精准浮点
-
-
-synchronized
-线程、同步
-
-
-transient
-修饰的成员属性变量不被序列化,仅存于调用者的内存中而不会写到磁盘里持久化,防止敏感信息泄露(与Serilizable接口一同使用)当对象被反序列化时,被
-transient 修饰的变量值不会被持久化和恢复,直接设置为默认值。static
-不属于任何对象,因此永远不会被序列化。
-
-
-volatile
-变量在 CPU
-的寄存器中是不确定的,必须从主存中读取。保证多线程环境下变量的可见性;禁止指令重排序。
-
-
-instanceof
-实例
-
-
-
-运算符优先级
-
-自动装箱/拆箱
-
-jdk1.5 i = Integer.valueOf(3) -128-127
-
-自动装箱通常也不会通过显式的 valueOf
-方法调用实现。编译器生成的字节码可能直接使用内部指令或方法来处理装箱和拆箱,而不是通过Java方法调用机制。因此,在
-valueOf 方法上设置断点通常不会捕获到自动装箱的过程。
-new String("abc")
和 String.valueOf("abc")
-的区别:前者在堆中创建了新的对象,后者返回字符串常量池对象的引用。拆箱:xxxValue();装箱:valueOf()
-public void zhuangXiang() {
Integer a1 = 128;
Integer a2 = 128;
Integer a3 = 256;
Integer a4 = a1 + a2;
System.out.println(a1 == a2); // false
System.out.println(a4 == a3); // false
System.out.println(a1 + a2 == a3); // true 发生拆箱
}
-NPE 问题
-
-- 数据库查询返回结果为 Null,无法拆箱
-- 三目运算符可能出现问题:flag ? 0 : i(应使用 flag ? new Integer(0) :
-i)
-
-动态代理
-静态代理:编译时完成 动态代理:运行时动态生成类字节码,并加载到 JVM
-中
-
-- JDK
-动态代理:通过生成一个实现被代理类接口的对象来拦截被代理类的方法调用
-
-- 封装:Proxy.newProxyInstance() 指定 ClassLoader 对象和一组
-interface
-- 调用:InvocationHandler 接口 invoke 方法
-
-- CGLIB
-动态代理:通过生成一个被代理类的子类来拦截被代理类的方法调用(字节码实现,不能被
-final 修饰,编译速度慢,运行速度快)
-
-- 封装:Enhancer 类
-- 调用:MethodInterceptor 接口 intercept 方法
-
-
-二者的具体实现
-
-- JDK:运行时动态解析,无法应用一些 JVM 优化
-- CGLib:ASM 开源包,代理对象类的 class
-文件加载时,修改其字节码生成代理子类(ASM
-是在编译期处理字节码的,可以认为是一种编译期的 AOP 技术)
-
-为什么 JDK 动态代理,要求被代理对象必须实现一个接口?
-
-- 因为 JDK 动态代理类已经继承了 Proxy
-这个类,所以只能通过接口来与被代理类建立联系(两个类建立起联系,一是继承的关系【jdk已经不能通过这个方式了,因为java仅支持单继承】,另一种就是实现同一个接口【JDK动态代理选这种】),所以必须要求被代理类也得实现一个接口
-
-原生工具类
-Collections 集合操作类
-
-- sort(list)
-- reverse(list)
-- binarySearch(list, target)
-
-Arrays 数组操作类
-
-- max(list)
-- sort(array, (o1, o2)->o1-o2)
-- copyOf(array, Length)
-- binarySearch(array, value)
-- fill(array, value)
-
-比较器 集合排序工具
-
-- Comparator 类级别
-
-- 针对不同的比较,单独定义一个比较类
-- int compare(T o1, T o2);
-
-- 返回值为正数,交换 o1 o2 的顺序
-- 返回值为负数或零,不需要调整
-- 返回升序 o1-o2,降序 o2-o1
-
-
-- Comparable 方法级别
-
-- 若一个类实现了Comparable接口,就意味着“该类支持排序”,可以用Arrays.sort()排序
-- public int compareTo(T o);
-
-
-接口实现
-接口和抽象类的关系
-
-- 共同点
-
-- 都不能被实例化
-- 都可以包含抽象方法
-- 方法可以有默认实现的
-
-- 区别
-
-- 接口主要用于对类的行为进行约束,你实现了某个接口就具有了对应的行为。抽象类主要用于代码复用,强调的是从属关系。
-- 一个类只能继承一个类,但是可以实现多个接口。
-- 接口中的成员变量只能是 public static final
-类型的,不能被修改且必须有初始值,而抽象类的成员变量默认
-default,可在子类中被重新定义,也可被重新赋值。
-
-- 接口中的所有成员变量都默认是由public static final修饰的
-- 接口中的所有方法都默认是由public abstract修饰的
-- 接口没有构造方法
-- 实现接口的类中必须提供接口中所有方法的具体实现内容
-- 多个无关的类可以实现同一个接口
-- 一个类可以实现多个无关的接口
-- 与继承关系类似,接口与实现类之间存在多态性
-- 接口可以继承多个接口,使用extends关键字
-- Java8
-后,接口可以拥有普通方法,实现类不需要重写,可以被实现类继承
-
-构造器
-this(参数列表)来访问本类构造器需要注意以下几点
-
-- 只能在构造器中使用
-this(参数列表);即在一个构造器中访问本类的另外一个构造器。
-- 显示使用 this() 时,默认的 super() 就被覆盖
-- this(参数列表)和 super(参数列表)在构造器中有且只能存在一个。
-- 若在构造器中使用 this(参数列表),则此语句只能位于构造器第一行
-
-动态加载
-反射(运行时获取类的信息、创建对象、调用方法)
-类加载器 ClassLoader
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0%
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/LLM-Application/index.html b/LLM-Application/index.html
index 8007739..f98de24 100644
--- a/LLM-Application/index.html
+++ b/LLM-Application/index.html
@@ -158,18 +158,18 @@
@@ -308,8 +308,8 @@ 解决思路
chunk_overlap
指两个块之间共享的字符数量,用于保持上下文的连贯性,避免分割丢失上下文信息
-
-
+
+
Q1:如何加强搜索结果的多样性?
A1:最大边际相关性
Maximum marginal relevance
@@ -393,8 +393,8 @@
Python Notes
diff --git a/LLM-Finetune/index.html b/LLM-Finetune/index.html
deleted file mode 100644
index 7d47780..0000000
--- a/LLM-Finetune/index.html
+++ /dev/null
@@ -1,713 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-LLM-Finetune | 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 闻
-
-
- Yesterday is history, tomorrow is a mystery but today is a gift.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- LLM-Finetune
-
-
-
-
-
-
-
-
- 发表于
-
-
-
-
-
-
-
- 更新于
-
-
-
-
-
-
- 大模型微调具体实现方法,包括数据预处理、数据加载、微调模型构建、模型训练、加速训练方法、保存微调结果、加载 Adapter、推理测评、可交互 Cli等
-
-
-
-
-
-
- 微调结果测评
-数据集
-基准数据集:MMLU、CMMLU、C-Eval
-微调数据集:
-
-
-
-
-
-
-
-名称
-描述
-
-
-
-
-NaturalConv
-来自腾讯,语料库包含了来自6个领域的19.9K对话和400K话语,平均回合数为20.1【数据集、脚本】
-
-
-COIG-CQIA
-来自零一万物,以中文互联网获取到的问答及文章作为原始数据,经过深度清洗、重构及人工审核构建而成,注重数据的来源、质量与多样性【数据集】
-
-
-alpaca-gpt4-data-zh
-GPT-4生成的中文数据集,可用于LLM的指令精调和强化学习等【数据集】
-
-
-
-
-
-
-
-测评指标
-
-
-
-
-
-
-
-指标
-含义
-
-
-
-
-BLEU-N
-计算生成语句与相应的参考语句的 n-gram
-精确率,匹配的n-gram总数除以系统生成语句的总n-gram数
-
-
-DIST-N
-生成文本的多样性,Distinct-n越大表示生成的多样性越高
-
-
-ROUGE-N
-着重于信息完整性和涵盖程度,将匹配的n-gram总数除以参考语句中的总n-gram数
-
-
-ROUGE-L
-衡量模型生成文本与参考文本之间最长公共子序列的匹配程度,值越高表示生成的文本与参考文本越相似
-
-
-runtime
-预测运行时间,表示模型生成一批样本所花费的总时间。单位通常为秒。
-
-
-samples_per_second
-每秒生成的样本数量,表示模型每秒钟能够生成的样本数量。通常用于评估模型的推理速度
-
-
-steps_per_second
-表示模型每秒钟能够执行的步骤数量。对于生成模型,一般指的是每秒钟执行生成操作的次数
-
-
-
-BLUE-N 公式:
-\[BLEU=BP\times\exp\left(\sum_{n=1}^{N}W_{n}\times\log
-P_{n}\right)\\BP=\left\{\begin{matrix}1&&lc>\mathrm{lr}\\\exp(1-lr/lc)&&lc\leq
-lr\end{matrix}\right.\]
-其中,Pn 指 n-gram 的精确率,Wn 指 n-gram
-的权重,一般设为均匀权重,即对于任意 n 都有 Wn = 1/N。BP
-是惩罚因子,如果译文的长度小于最短的参考译文,则 BP 小于
-1。lc机器翻译的长度,lr最短的参考译文的长度。
-ROUGE-N 公式:
-\[\text{ROUGE -
-N}=\frac{\sum_{S\in\{ReferenceSummaries\}}\sum_{gram_N\in
-S}Count_{match}(gram_N)}{\sum_{S\in\{ReferenceSummaries\}}\sum_{gram_N\in
-S}Count(gram_N)}\]
-其中,公式的分母是统计在参考译文中 N-gram
-的个数,而分子是统计参考译文与机器译文共有的 N-gram 个数。
-DIST-N 公式:
-\[Distinct(n)=\frac{Count(unique-ngram)}{Count(word)}\]
-开源工具
-
-
-
-项目名称
-
-
-
-
-
-LLaMaFactory
-
-
-
-axolotl
-
-
-
-functionary
-
-
-
-
-
-
-
-
-测评数据
-在 Qwen-1_8B-Chat 上微调 NaturalConv (转换成 shareGPT 格式)
-
-训练 500 轮对话,测试 50 轮对话
-
-
-
-
-微调方法
-bleu-4
-rough-1
-rough-2
-rough-l
-
-
-
-
--
-4.67
-21.60
-3.24
-19.27
-
-
-LoRA
-4.95
-24.25
-2.32
-19.69
-
-
-AdaLoRA
-4.67
-21.85
-3.24
-19.51
-
-
-VeRA
-
-
-
-
-
-
-
-指令数据格式
-alpaca 格式数据
-[
{
"instruction": "用户指令(必填)",
"input": "用户输入(选填)",
"output": "模型回答(必填)",
"system": "系统提示词(选填)",
"history": [
["第一轮指令(选填)", "第一轮回答(选填)"],
["第二轮指令(选填)", "第二轮回答(选填)"]
]
}
]
-sharegpt 格式数据,支持多角色对话
-[
{
"conversations": [
{
"from": "human",
"value": "用户指令"
},
{
"from": "gpt",
"value": "模型回答"
}
],
"system": "系统提示词(选填)",
"tools": "工具描述(选填)"
}
]
-llamafactory 配置样例
-"NaturalConv": {
"file_name": "/home/wzw/Project/llm-fine-tuning/data/dialog_release_format.json",
"formatting": "sharegpt",
"columns": {
"messages": "content"
},
"tags": {
"role_tag": "from",
"content_tag": "value",
"user_tag": "A",
"assistant_tag": "B"
}
}
-输入样例
-{'dialog_id': '0_2',
'document_id': 0,
'content': [{'from': 'A', 'value': '嗨!'},
{'from': 'B', 'value': '你好。'},
{'from': 'A', 'value': '你最近有听说过《中国女排》这部电影嘛?'},
{'from': 'B', 'value': '不好意思唉,我已经很久没有去关注电影了,你可以给我讲述一下这是什么电影嘛。'},
{'from': 'A', 'value': '当然可以了,这部片子主要是讲述了女排这些年的历史,而且听说这部戏里面的郎平教练会是巩俐来出演。'},
{'from': 'B', 'value': '真的啊,我觉得我都好久没有看过巩俐的电影了,我突然好期待这部电影啊。'},
{'from': 'A', 'value': '是呀,我觉得这部《中国女排》应该能拿下很高的收视率。'},
{'from': 'B', 'value': '肯定会的,毕竟这也是中宣部与国家体育总局联合拍摄,肯定是会很好看的。'}
]}
-读入格式化处理
-[[{'role': 'user', 'content': '嗨!'}, {'role': 'assistant', 'content': '你好!'}, {'role': 'user', 'content': '你最近也在看这部电视剧吗?'}, {'role': 'assistant', 'content': '还好,我刚刚看了庆余年觉得还蛮好看,来搜搜张若昀的其他作品。'}, {'role': 'user', 'content': '哈哈哈,你说最近很火的庆余年吗?'}, {'role': 'assistant', 'content': '对啊,现在我上班大家都在议论呐,真的挺搞笑的。'}, {'role': 'user', 'content': '我看了一些,庆余年还在连载啊。'}, {'role': 'assistant', 'content': '就是说啊,但是真的好搞笑啊,特别是他在电视里第一次看到李沁的表情。'}, {'role': 'user', 'content': '真的演的挺好的,都看呆了。'}, {'role': 'assistant', 'content': '很真实的表情啊,他不是最近还和唐艺昕结婚了吗?'}, {'role': 'user', 'content': '是啊,唐艺昕和他两个人简直太甜了。'}, {'role': 'assistant', 'content': '现在结婚了也好幸福啊,两个颜值都超级高,而且还在一起这么久了。'}, {'role': 'user', 'content': '她们两个的相遇好像好是车祸。'}, {'role': 'assistant', 'content': '是啊,张若昀还在家里面摆了一个红绿灯呐。'}, {'role': 'user', 'content': '所以啊,是真的很幸福,两个人都挺浪漫的,现在还结婚了。'}, {'role': 'assistant', 'content': '是啊,这个庆余年身边的人都在追,李沁在里面真的好漂亮啊。'}
-qwen 指令微调格式化
-<|im_start|>user
是呢,只有父母负起责任,在孩子成长的每一个时刻都起到对他们的关心爱护和监督的责任,让孩子感受到家长的爱,这样的孩子才会健康自信的成长。<|im_end|>
<|im_start|>assistant
嗯嗯是呢,在爱里长大的孩子才更有正能量。<|im_end|>
<|im_start|>user
嗯,对,我还有点儿事儿,先走了,拜拜。<|im_end|>
<|im_start|>assistant
拜拜。<|im_end|><|im_start|>system
You are a helpful assistant.<|im_end|>
<|im_start|>user
晚上好!<|im_end|>
<|im_start|>assistant
晚上好!<|im_end|>
<|im_start|>user
看你火急火燎的,是和男朋友约了吃饭吗?<|im_end|>
<|im_start|>assistant
哪有,马上六点半,中超的天王山之战就要开始了,我可不能错过直播。<|im_end|>
<|im_start|>user
没看出来你还是个球迷啊,我听说今晚是广州恒大打上海上港,一个第一,一个第二,确实值得看。<|im_end|>
<|im_start|>assistant
我从初中开始就是上港队的球迷,毕竟我是上海人,肯定要支持本土的球队。<|im_end|>
<|im_start|>user
我倒是无所谓哪只球队,因为我看足球只会看踢得精不精彩,主要是为了打发时间。<|im_end|>
<|im_start|>assistant
那你应该理解不了我的心情,因为今晚这场比赛是真的对中超冠军归属起决定性作用的。<|im_end|>
<|im_start|>user
怎么了,不是还有几轮才会结束中超联赛嘛,现在就要决出冠亚军了?<|im_end|>
<|im_start|>assistant
对啊,排名前三的恒大、上港、国安,远远领先后面的其他球队,所以其实就他们三支球队在争夺冠军了。<|im_end|>
<|im_start|>user
怪不得,这贫富差距也太大了,外援多的队伍就是不一样。<|im_end|>
<|im_start|>assistant
确实,在本土球员水平参差不齐的前提下,外援又多又好的球队的确有优势。<|im_end|>
<|im_start|>user
国安有李可,上港有艾哈迈多夫,恒大有泽哈维,可谓棋逢对手。<|im_end|>
<|im_start|>assistant
-LF参数
-Data 参数
-
-
-
-
-
-
-
-
-参数名
-数据类型
-描述
-
-
-
-
-template
-Optional[str]
-构建提示词时使用的模板
-
-
-dataset
-Optional[str]
-数据集
-
-
-eval_dataset
-Optional[str]
-测试数据集
-
-
-dataset_dir
-str
-数据文件夹的路径
-
-
-cutoff_len
-int
-输入序列分词后的最大长度
-
-
-train_on_prompt
-bool
-不在提示词的部分添加掩码(仅适用于 SFT)
-
-
-mask_history
-bool
-仅学习最后一轮对话(仅适用于 SFT)
-
-
-streaming
-bool
-流式读取数据集
-
-
-buffer_size
-int
-在数据流中随机采样的缓冲区的大小
-
-
-mix_strategy
-Literal["concat", "interleave_under", "interleave_over"]
-数据集混合时使用的策略(合并/交错)(欠采样/过采样)
-
-
-interleave_probs
-Optional[str]
-从数据集中抽样数据的概率。使用逗号分隔多个数据集
-
-
-overwrite_cache
-bool
-覆盖缓存的训练集和评估集
-
-
-preprocessing_num_workers
-Optional[int]
-用于预处理的进程数
-
-
-max_samples
-Optional[int]
-最多选择的数据集样例数
-
-
-eval_num_beams
-Optional[int]
-在生成任务中控制束搜索的宽度,直接影响生成文本的质量和计算成本
-
-
-ignore_pad_token_for_loss
-bool
-在损失计算中是否忽略 pad 标签对应的 token
-
-
-val_size
-float
-验证集占总数居的大小,一个范围为[0,1)
的浮点数
-
-
-packing
-Optional[bool]
-在训练中启用序列打包。将在预训练中自动启用
-
-
-neat_packing
-bool
-避免注意力交叉污染
-
-
-tool_format
-Optional[str]
-format 的工具格式
-
-
-tokenized_path
-Optional[str]
-保存或加载 tokenization 的路径
-
-
-
-Q&A
-[Q] LLM padding left or right
-一句话总结:DecoderOnly 模型,在 Train 的时候统一使用 right
-padding,而在 Generate 的时候统一使用 left padding。
-
-- generation的时候如果使用right
-padding是会出错的,原因是generate的过程中需要从最后一个token的probability中sample下一个token,但right
-padding时最后一个token是pad,所以会出现问题
-- 有些tokenizer使用的是absolute position id,导致非padtoken的position
-id不是从0开始的,如果不使用left padding 会出错
-
-[Q] 什么是 unsloth?
-微调训练LLM时,可以显著提升速度,且减少显存占用,目前开源部分只支持单机版微调
-[Q] 什么是 deepspeed?
-简而言之,ds 就是切片,以时间换空间。
-ZeRO-1是将优化器分片,ZeRO-2是在ZeRO-1的基础上将梯度分片,ZeRO-3是在ZeRO-2的基础上将权重分配,ZeRO-affload,将刚刚经过ZeRO切片的梯度、权重、优化器直接丢到内存
-[Q] 什么是 S2ATTN
-[Q] 什么是旋转位置编码(RoPE)
-
-[Q] 什么是 GELU
-[Q] LLama3 的优化点
-位置编码:
-
-- 改进的相对位置编码,如相对偏移编码
-- 旋转位置编码(RoPE),以提高长序列处理能力。
-
-激活函数:
-
-- 继续使用或改进 GELU 激活函数。
-- 采用 Swish 激活函数,提供平滑且非单调的变换。
-- 引入自适应激活函数,动态调整激活函数形状以适应不同任务。
-
-[Q] Varlen Attention Link
-变长注意力机制确保了无论是否采用“数据集拼接”策略,模型训练的行为保持一致性
-优化点
-llamafactory 开源模型微调 pipeline 的优化点
-数据截断
-问题背景 #4009
-监督学习 pack
-多条数据时,超过输入长度上限的部分直接截断,导致部分样本丢失
-解决方法
-贪心背包算法,尽可能多的 pack 多条对话数据到一轮 batch 中,并将
-packed_input_ids
补齐到 cutoff_len
-注意力交叉污染
-问题背景 #4224
-sft 训练中,如果每个 batch 中都是多轮对话,则需要在预处理过程中,mask
-多轮对话数据中 assistant 的内容(preprocess_packed_supervised_dataset
-方法),以达到同时训练一整轮对话的效果;
-sft_packing 的实现只是单纯将不同的单轮 sft
-数据拼接到一起,然后分别计算 target 部分的 loss,无法保证每条对话的单轮
-sft 在计算 loss 的时候不会受到其他拼接的上文影响;
-解决方法
-新增 neat_packing
参数,用不同的 mask 区分同一 batch
-内不同轮对话的 attention_masks
,用于支持 eager 和 sdpa 两种
-attention
-加速计算方法,使其在注意力计算过程中可以通过块对角注意力(Block Diagonal
-Attention)加快计算;
-
-Eager:通过提前计算和存储中间结果,优化计算过程,提高效率。
-SDPA:通过缩放内积和 softmax
-函数计算注意力权重,提高了注意力机制的稳定性和效率。
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0%
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/LLM-PEFT/image-20240903102620304.png b/LLM-PEFT/image-20240903102620304.png
new file mode 100644
index 0000000..30ce637
Binary files /dev/null and b/LLM-PEFT/image-20240903102620304.png differ
diff --git a/LLM-PEFT/index.html b/LLM-PEFT/index.html
index 2c25112..0269a04 100644
--- a/LLM-PEFT/index.html
+++ b/LLM-PEFT/index.html
@@ -47,11 +47,12 @@
+
-
+
@@ -178,18 +179,18 @@
@@ -257,7 +258,7 @@
闻
- - -Yesterday is history, tomorrow is a mystery but today is a gift.
-- Java 常用数据结构的底层实现 -
- -ArrayList
-ArrayList
的底层是数组队列,相当于动态数组。
-
-
- 与数组相比,它的容量能动态增长。 -
- 与 Vector 相比,它的底层使用 Object[] -存储,适用于频繁的查找工作,线程不安全 -
public class ArrayList<E> extends AbstractList<E> |
-
-
List
: -表明它是一个列表,支持添加、删除、查找等操作,并且可以通过下标进行访问。
-RandomAccess
:这是一个标志接口,表明实现这个接口的 -List
集合是支持 快速随机访问 -,可以通过元素的序号快速获取元素对象list.get(i)
。
-Cloneable
-:表明它具有拷贝能力,可以进行深拷贝或浅拷贝操作。
-Serializable
: -表明它可以进行序列化操作,也就是可以将对象转换为字节流进行持久化存储或网络传输,非常方便。
-
扩容机制
-初始化时默认空数组
-DEFAULTCAPACITY_EMPTY_ELEMENTDATA
。
添加元素时,先判断需要扩容的最小扩容量大小(DEFAULT_CAPACITY 默认是 -10)
-private static int calculateCapacity(Object[] elementData, int minCapacity) { |
如果需要扩容,就会进入扩容方法 grow(),扩容效果是小于等于 1.5 -倍的(因为 int 取整)
-private void grow(int minCapacity) { |
如果扩容长度超过定义的数组的最大长度
-MAX_ARRAY_SIZE = Integer.MAX_VALUE-8
,就会触发最大值限制,防止
-size 溢出
private static int hugeCapacity(int minCapacity) { |
将旧数组移动到新数组
-public static int[] copyOf(int[] original, int newLength) { |
手动扩容,可以在需要插入大量数据前手动扩容
-public void ensureCapacity(int minCapacity) { |
与 LinkedList 的异同
--
-
都不保证线程安全;
-ArrayList
底层使用的是Object[]
-数组;LinkedList
底层使用的是 -Node+双向链表 数据结构(JDK1.6 之前为循环链表,JDK1.7 -取消了循环)
-插入和删除是否受元素位置的影响:
--
-
ArrayList
-将指定的元素追加到此列表的末尾,时间复杂度 -O(1)。但是如果要在指定位置 i -插入和删除元素的话(add(int index, E element)
),时间复杂度 -O(n)。
-LinkedList
-头尾插入或者删除元素不受元素位置的影响(add(E e)
、addFirst(E e)
、addLast(E e)
、removeFirst()
、 -removeLast()
),时间复杂度 -O(1);指定位置i
-插入和删除元素的话(add(int index, E element)
,remove(Object o)
,remove(int index)
), -时间复杂度为 O(n) 。
-
-是否支持快速随机访问:
LinkedList
-不支持高效的随机元素访问,而ArrayList
(实现了 -RandomAccess
接口) 支持。
-内存空间占用:
ArrayList
-的空间浪费主要体现在在 list 列表的结尾会预留一定的容量空间,而 -LinkedList 的空间花费则体现在它的每一个元素 Node 都需要消耗比 ArrayList -更多的空间
-
LinkedList
---需要用到
-LinkedList
的场景几乎都可以使用 -ArrayList
-来代替,而且性能会更好。头尾插入或者删除元素的时候时间复杂度近似 -O(1),其他情况增删元素的平均时间复杂度都是 O(n) 。
public class LinkedList<E> extends AbstractSequentialList<E> |
-
-
List
: -表明它是一个列表,支持添加、删除、查找等操作,并且可以通过下标进行访问。
-Deque
:继承自Queue
-接口,具有双端队列的特性,支持从两端插入和删除元素,方便实现栈和队列等数据结构。
-
常用方法
--
-
- 实现 List 接口
-
-
-
- get、set -
- - 实现 Collection 接口
-
-
-
- 判断是否存在:contains -
- - 实现 Queue 接口(通过 Deque 接口)
-
-
-
- 报错:add、remove、element -
- 不报错:offer、poll、peek -
- - 实现 Deque 接口
-
-
-
- addFirst [push]、addLast [add]:无返回,容量超出限制会报错 -
- offerFirst、offerLast [offer]:返回 Boolean 表示是否加入成功 -
- removeFirst [remove]、removeLast:队列为空报错 -
- pollFirst [poll]、pollLast:队列为空返回 null -
- getFirst [element]、getLast:队列为空报错 -
- peekFirst [peek]、peekLast:队列为空返回 null
-
-
-
- 【注意】队列头部为 null 和队列为空时,都会返回 null -
- - removeFirstOccurrence [remove]、removeLastOccurrence -
- push、pop、peek:作为栈 -
-
HashMap
--- - -JDK1.8 之前 HashMap 采用“拉链法”处理冲突,由 数组+链表 组成; JDK1.8 -以后,若Table长度大于 64,会将链表转化为红黑树。
-
-
-
- key 和 value 可以为 null,但 null 作为 key 只能有一个,而 null 作为 -value 可以有多个 -
- 非线程安全的 -
public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable { |
-
-
entrySet
-通过Node的next属性
遍历元素,keySet()
、values()
基于entrySet
实现,用于遍历访问所有 -Node -元素,还支持元素的删除操作【不确定,entrySet不存储数据,只是数据对外的操作接口】。
-TreeNode
继承了LinkedHashMap.Entry
-,有指向前后节点的指针
-
jdk 1.8 Key 计算 hash 值的方法
-static final int hash(Object key) { |
扩容机制
-何时触发 resize()
扩容
-
-
- 要插入数据前,发现
table
中的bin
为空
- - 要插入数据后,发现
HashMap
的size
超过 -threshold
- table
长度小于MIN_TREEIFY_CAPACITY
时,某 -Node
上的链长度超过TREEIFY_THRESHOLD
-
resize()
扩容,会将 table 中的节点数量 <<
-1,并重新 hash 映射所有节点(因为 table 变大了,每个节点对应的 bin
-下标发生了变化
-newTab[e.hash & (newCap - 1)] = e
,newCap
为
-table 的新大小)
链表何时变成红黑树?
--
-
- 该
bin
上的链长度binCount
大于等于 -TREEIFY_THRESHOLD
且table
中bin
-数量大于等于MIN_TREEIFY_CAPACITY
-
如果链表转红黑树的时候,又有数据要插入,会发生什么?
--
-
- 线程不安全。在树结构替换链表最终阶段会校验树结构,在此过程中的插入会使该树结构不满足红黑树和双链表的特性,导致报异常
-
assert checkInvariants(root);
-
ConcurrentHashMap
---Java7 中 ConcurrentHashMap 使用的是分段锁,每一个 Segment -上同时只有一个线程可以操作,结构上时
-Segment
数组 -+HashEntry
数组 + -链表。Segment
-的个数一旦初始化就不能改变,默认Segment
-的个数是 16 -个,Segment
继承ReentrantLock
实现分段锁。Java8 中的 ConcurrentHashMap 通过 Synchronized 锁加 -CAS 保证多线程安全,结构上是
-Node
-数组 + 链表 / 红黑树。
如果链表转红黑树,又有数据要插入,会发生什么。
--
-
treeifyBin
通过synchronized
把 -bin
加锁,后续数据插入会因为无法竞争到资源而阻塞
-- 链表开始转红黑树前,会将 Node 头节点置为
-
ForwardingNode
,ForwardingNode
的 hash 是 -Moved
-表示正在转换为红黑树,此时会自旋等待转换完成后插入(大概是这样的)
-
如果数组扩容,又有数据要插入,会发生什么。
--
-
- 扩容前,会将 Node 头节点置为
-
ForwardingNode
,ForwardingNode
的 hash 是 -Moved
表示正在扩容。
- - 扩容时,插入数据的线程若发现 hash -值为负,会去协助扩容,扩容完成后再插入数据。 -
-
-
- 在调用 addCount -方法增加集合元素计数后发现当前集合元素个数到达扩容阈值时就会触发扩容 -
- 扩容状态下其他线程对集合进行插入、修改、删除、合并、compute
-等操作时遇到
ForwardingNode
节点会触发扩容(帮助扩容)
- - putAll 批量插入或者插入节点后发现存在链表长度达到 8 -个或以上,但数组长度为 64 以下时会触发扩容 。 -
同 HashMap:桶上链表长度达到 8 个或者以上,并且数组长度为 64 -以下时只会触发扩容而不会将链表转为红黑树
-LinkedHashMap
-LinkedHashMap
-内部维护了一个双向链表,确保其迭代顺序是和插入顺序或访问顺序是一致的,通过重写
-get、newNode、afterNodeAccess、afterNodeInsertion、afterNodeRemoval
-等方法实现,最近插入或访问的节点位于链表尾部。
--可以按照插入顺序遍历 entry(accessOrder=false)
-也可以按照访问顺序遍历 entry(accessOrder=true),即 LRU
-
可用于实现 LRU,即 迭代顺序==访问顺序
--
-
- 每次修改都将元素删除后重新插入 -
- 将
accessOrder
设置为 true 并重写 -removeEldestEntry
方法当链表大小超过容量时返回 true
-
CopyOnWriteList
---并发安全的 -
-List
,针对读多写少的场景,类比读写锁的思想,实现 -读读不互斥、读写不互斥、写写互斥 的写时复制 -Copy-On-Write 策略。此外还有Collections.synchronizedList
-,可以将任何List
包装成一个线程安全的List
add 方法内部用到了 ReentrantLock -加锁,避免了多线程写的时候会复制出多个副本,导致并发问题
-写时复制的缺点
--
-
- 写操作资源占用多,复制数据时占用内存 -
- 数据一致性问题,修改后需要等到赋值给原数组才能访问到修改 -
写多读少的场景下,应该用什么数据结构实现并发数组?
-分段读写锁 ReadWriteLock(由于 Arrays.copyOf() -是操作系统实现,数据量少的话依然可用写时复制)
-PriorityQueue
- -闻
- - -Yesterday is history, tomorrow is a mystery but today is a gift.
-- Java 语言 -
- -基础
-基本数据类型
-除八个基本类型,Java 的所有数据类型都是引用,Java -中没有指针的概念,所有数据传输都是传值(引用可以看作是地址值,所有引用值都占四个字节)
-基本数据类型的包装类 Byte Short Integer Long Character 有常量池
-编译运行
--
-
- Java 编译器 Javac 是用 Java 实现的,用于将 .java 文件编译成字节码 -.class -
- .class 通过解释器对这些字节码进行解释执行 -
- Java 的运行环境 JVM 如 HotSpot VM,实现了其跨平台的特性 -
三大特性
-封装
-将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体;
-继承
-支持类之间的单继承,但支持接口之间的多继承;
-类可以实现多个接口,抽象类不能实例化但可以有构造方法,内部类只能通过外部类创建;
-Object 是超类,是所有类的父类(无父类的子类默认继承 -Object。jdk6之前是编译器处理,jdk7之后是虚拟机处理);
-Java8 之后接口可以有默认方法,允许在接口中声明静态方法;
-多态
-全面支持动态绑定,动态绑定是实现多态(一个接口,多种实现)的基础;
--
-
- 多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法(A -a=new B(),A是父类,B是子类) -
- 静态绑定:对象属性和 static private final -修饰的对象方法(构造函数),哪里声明,哪里使用 -
- 动态绑定:运行时 JVM -实现绑定。若子类实现了这个方法,则调用子类的内存地址,若没有则调用当前对象(父类)的方法。只能调用父类的属性,虽然实际实现的是子类,如果父类没有这个属性,那就无法调用。如果要获取子类属性,就要重写子类方法获取该属性,前提是这个方法在父类中同样存在。 -
关键字
-关键字 | -说明 | -
---|---|
final | -常量 | -
static | -静态变量,无论一个类实例化多少对象,它的静态变量只有一份拷贝;静态方法,不能使用类的非静态变量,类名直接调用,不需要进行实例化对象。 | -
native | -本地、原生方法(非 Java 实现) | -
strictfp | -严格浮点、精准浮点 | -
synchronized | -线程、同步 | -
transient | -修饰的成员属性变量不被序列化,仅存于调用者的内存中而不会写到磁盘里持久化,防止敏感信息泄露(与Serilizable接口一同使用)当对象被反序列化时,被 -transient 修饰的变量值不会被持久化和恢复,直接设置为默认值。static -不属于任何对象,因此永远不会被序列化。 | -
volatile | -变量在 CPU -的寄存器中是不确定的,必须从主存中读取。保证多线程环境下变量的可见性;禁止指令重排序。 | -
instanceof | -实例 | -
运算符优先级
- -自动装箱/拆箱
---jdk1.5 i = Integer.valueOf(3) -128-127
-
自动装箱通常也不会通过显式的 valueOf
-方法调用实现。编译器生成的字节码可能直接使用内部指令或方法来处理装箱和拆箱,而不是通过Java方法调用机制。因此,在
-valueOf 方法上设置断点通常不会捕获到自动装箱的过程。
-new String("abc")
和 String.valueOf("abc")
-的区别:前者在堆中创建了新的对象,后者返回字符串常量池对象的引用。拆箱:xxxValue();装箱:valueOf()
public void zhuangXiang() { |
NPE 问题
--
-
- 数据库查询返回结果为 Null,无法拆箱 -
- 三目运算符可能出现问题:flag ? 0 : i(应使用 flag ? new Integer(0) : -i) -
动态代理
-静态代理:编译时完成 动态代理:运行时动态生成类字节码,并加载到 JVM -中
--
-
- JDK
-动态代理:通过生成一个实现被代理类接口的对象来拦截被代理类的方法调用
-
-
-
- 封装:Proxy.newProxyInstance() 指定 ClassLoader 对象和一组 -interface -
- 调用:InvocationHandler 接口 invoke 方法 -
- - CGLIB
-动态代理:通过生成一个被代理类的子类来拦截被代理类的方法调用(字节码实现,不能被
-final 修饰,编译速度慢,运行速度快)
-
-
-
- 封装:Enhancer 类 -
- 调用:MethodInterceptor 接口 intercept 方法 -
-
二者的具体实现
--
-
- JDK:运行时动态解析,无法应用一些 JVM 优化 -
- CGLib:ASM 开源包,代理对象类的 class -文件加载时,修改其字节码生成代理子类(ASM -是在编译期处理字节码的,可以认为是一种编译期的 AOP 技术) -
为什么 JDK 动态代理,要求被代理对象必须实现一个接口?
--
-
- 因为 JDK 动态代理类已经继承了 Proxy -这个类,所以只能通过接口来与被代理类建立联系(两个类建立起联系,一是继承的关系【jdk已经不能通过这个方式了,因为java仅支持单继承】,另一种就是实现同一个接口【JDK动态代理选这种】),所以必须要求被代理类也得实现一个接口 -
原生工具类
-Collections 集合操作类
--
-
- sort(list) -
- reverse(list) -
- binarySearch(list, target) -
Arrays 数组操作类
--
-
- max(list) -
- sort(array, (o1, o2)->o1-o2) -
- copyOf(array, Length) -
- binarySearch(array, value) -
- fill(array, value) -
比较器 集合排序工具
--
-
- Comparator 类级别
-
-
-
- 针对不同的比较,单独定义一个比较类 -
- int compare(T o1, T o2);
-
-
-
- 返回值为正数,交换 o1 o2 的顺序 -
- 返回值为负数或零,不需要调整 -
- 返回升序 o1-o2,降序 o2-o1 -
-
- - Comparable 方法级别
-
-
-
- 若一个类实现了Comparable接口,就意味着“该类支持排序”,可以用Arrays.sort()排序 -
- public int compareTo(T o); -
-
接口实现
-接口和抽象类的关系
--
-
- 共同点
-
-
-
- 都不能被实例化 -
- 都可以包含抽象方法 -
- 方法可以有默认实现的 -
- - 区别
-
-
-
- 接口主要用于对类的行为进行约束,你实现了某个接口就具有了对应的行为。抽象类主要用于代码复用,强调的是从属关系。 -
- 一个类只能继承一个类,但是可以实现多个接口。 -
- 接口中的成员变量只能是 public static final -类型的,不能被修改且必须有初始值,而抽象类的成员变量默认 -default,可在子类中被重新定义,也可被重新赋值。 -
- - 接口中的所有成员变量都默认是由public static final修饰的 -
- 接口中的所有方法都默认是由public abstract修饰的 -
- 接口没有构造方法 -
- 实现接口的类中必须提供接口中所有方法的具体实现内容 -
- 多个无关的类可以实现同一个接口 -
- 一个类可以实现多个无关的接口 -
- 与继承关系类似,接口与实现类之间存在多态性 -
- 接口可以继承多个接口,使用extends关键字 -
- Java8 -后,接口可以拥有普通方法,实现类不需要重写,可以被实现类继承 -
构造器
-this(参数列表)来访问本类构造器需要注意以下几点
--
-
- 只能在构造器中使用 -this(参数列表);即在一个构造器中访问本类的另外一个构造器。 -
- 显示使用 this() 时,默认的 super() 就被覆盖 -
- this(参数列表)和 super(参数列表)在构造器中有且只能存在一个。 -
- 若在构造器中使用 this(参数列表),则此语句只能位于构造器第一行 -
动态加载
-反射(运行时获取类的信息、创建对象、调用方法)
-类加载器 ClassLoader
- -解决思路
Q1:如何加强搜索结果的多样性?
A1:最大边际相关性
Maximum marginal relevance
@@ -393,8 +393,8 @@
Python Notes
闻
- - -Yesterday is history, tomorrow is a mystery but today is a gift.
-- LLM-Finetune -
- -微调结果测评
-数据集
-基准数据集:MMLU、CMMLU、C-Eval
-微调数据集:
-名称 | -描述 | -
---|---|
NaturalConv | -来自腾讯,语料库包含了来自6个领域的19.9K对话和400K话语,平均回合数为20.1【数据集、脚本】 | -
COIG-CQIA | -来自零一万物,以中文互联网获取到的问答及文章作为原始数据,经过深度清洗、重构及人工审核构建而成,注重数据的来源、质量与多样性【数据集】 | -
alpaca-gpt4-data-zh | -GPT-4生成的中文数据集,可用于LLM的指令精调和强化学习等【数据集】 | -
- | - |
测评指标
-指标 | -含义 | -
---|---|
BLEU-N | -计算生成语句与相应的参考语句的 n-gram -精确率,匹配的n-gram总数除以系统生成语句的总n-gram数 | -
DIST-N | -生成文本的多样性,Distinct-n越大表示生成的多样性越高 | -
ROUGE-N | -着重于信息完整性和涵盖程度,将匹配的n-gram总数除以参考语句中的总n-gram数 | -
ROUGE-L | -衡量模型生成文本与参考文本之间最长公共子序列的匹配程度,值越高表示生成的文本与参考文本越相似 | -
runtime | -预测运行时间,表示模型生成一批样本所花费的总时间。单位通常为秒。 | -
samples_per_second | -每秒生成的样本数量,表示模型每秒钟能够生成的样本数量。通常用于评估模型的推理速度 | -
steps_per_second | -表示模型每秒钟能够执行的步骤数量。对于生成模型,一般指的是每秒钟执行生成操作的次数 | -
BLUE-N 公式:
-\[BLEU=BP\times\exp\left(\sum_{n=1}^{N}W_{n}\times\log -P_{n}\right)\\BP=\left\{\begin{matrix}1&&lc>\mathrm{lr}\\\exp(1-lr/lc)&&lc\leq -lr\end{matrix}\right.\]
-其中,Pn 指 n-gram 的精确率,Wn 指 n-gram -的权重,一般设为均匀权重,即对于任意 n 都有 Wn = 1/N。BP -是惩罚因子,如果译文的长度小于最短的参考译文,则 BP 小于 -1。lc机器翻译的长度,lr最短的参考译文的长度。
-ROUGE-N 公式:
-\[\text{ROUGE - -N}=\frac{\sum_{S\in\{ReferenceSummaries\}}\sum_{gram_N\in -S}Count_{match}(gram_N)}{\sum_{S\in\{ReferenceSummaries\}}\sum_{gram_N\in -S}Count(gram_N)}\]
-其中,公式的分母是统计在参考译文中 N-gram -的个数,而分子是统计参考译文与机器译文共有的 N-gram 个数。
-DIST-N 公式:
-\[Distinct(n)=\frac{Count(unique-ngram)}{Count(word)}\]
-开源工具
-项目名称 | -- |
---|---|
LLaMaFactory | -- |
axolotl | -- |
functionary | -- |
- | - |
测评数据
-在 Qwen-1_8B-Chat 上微调 NaturalConv (转换成 shareGPT 格式)
---训练 500 轮对话,测试 50 轮对话
-
微调方法 | -bleu-4 | -rough-1 | -rough-2 | -rough-l | -
---|---|---|---|---|
- | -4.67 | -21.60 | -3.24 | -19.27 | -
LoRA | -4.95 | -24.25 | -2.32 | -19.69 | -
AdaLoRA | -4.67 | -21.85 | -3.24 | -19.51 | -
VeRA | -- | - | - | - |
指令数据格式
-alpaca 格式数据
-[ |
sharegpt 格式数据,支持多角色对话
-[ |
llamafactory 配置样例
-"NaturalConv": { |
输入样例
-{'dialog_id': '0_2', |
读入格式化处理
-[[{'role': 'user', 'content': '嗨!'}, {'role': 'assistant', 'content': '你好!'}, {'role': 'user', 'content': '你最近也在看这部电视剧吗?'}, {'role': 'assistant', 'content': '还好,我刚刚看了庆余年觉得还蛮好看,来搜搜张若昀的其他作品。'}, {'role': 'user', 'content': '哈哈哈,你说最近很火的庆余年吗?'}, {'role': 'assistant', 'content': '对啊,现在我上班大家都在议论呐,真的挺搞笑的。'}, {'role': 'user', 'content': '我看了一些,庆余年还在连载啊。'}, {'role': 'assistant', 'content': '就是说啊,但是真的好搞笑啊,特别是他在电视里第一次看到李沁的表情。'}, {'role': 'user', 'content': '真的演的挺好的,都看呆了。'}, {'role': 'assistant', 'content': '很真实的表情啊,他不是最近还和唐艺昕结婚了吗?'}, {'role': 'user', 'content': '是啊,唐艺昕和他两个人简直太甜了。'}, {'role': 'assistant', 'content': '现在结婚了也好幸福啊,两个颜值都超级高,而且还在一起这么久了。'}, {'role': 'user', 'content': '她们两个的相遇好像好是车祸。'}, {'role': 'assistant', 'content': '是啊,张若昀还在家里面摆了一个红绿灯呐。'}, {'role': 'user', 'content': '所以啊,是真的很幸福,两个人都挺浪漫的,现在还结婚了。'}, {'role': 'assistant', 'content': '是啊,这个庆余年身边的人都在追,李沁在里面真的好漂亮啊。'} |
qwen 指令微调格式化
-<|im_start|>user |
LF参数
-Data 参数
-参数名 | -数据类型 | -描述 | -
---|---|---|
template | -Optional[str] | -构建提示词时使用的模板 | -
dataset | -Optional[str] | -数据集 | -
eval_dataset | -Optional[str] | -测试数据集 | -
dataset_dir | -str | -数据文件夹的路径 | -
cutoff_len | -int | -输入序列分词后的最大长度 | -
train_on_prompt | -bool | -不在提示词的部分添加掩码(仅适用于 SFT) | -
mask_history | -bool | -仅学习最后一轮对话(仅适用于 SFT) | -
streaming | -bool | -流式读取数据集 | -
buffer_size | -int | -在数据流中随机采样的缓冲区的大小 | -
mix_strategy | -Literal["concat", "interleave_under", "interleave_over"] | -数据集混合时使用的策略(合并/交错)(欠采样/过采样) | -
interleave_probs | -Optional[str] | -从数据集中抽样数据的概率。使用逗号分隔多个数据集 | -
overwrite_cache | -bool | -覆盖缓存的训练集和评估集 | -
preprocessing_num_workers | -Optional[int] | -用于预处理的进程数 | -
max_samples | -Optional[int] | -最多选择的数据集样例数 | -
eval_num_beams | -Optional[int] | -在生成任务中控制束搜索的宽度,直接影响生成文本的质量和计算成本 | -
ignore_pad_token_for_loss | -bool | -在损失计算中是否忽略 pad 标签对应的 token | -
val_size | -float | -验证集占总数居的大小,一个范围为[0,1) 的浮点数 |
-
packing | -Optional[bool] | -在训练中启用序列打包。将在预训练中自动启用 | -
neat_packing | -bool | -避免注意力交叉污染 | -
tool_format | -Optional[str] | -format 的工具格式 | -
tokenized_path | -Optional[str] | -保存或加载 tokenization 的路径 | -
Q&A
-[Q] LLM padding left or right
-一句话总结:DecoderOnly 模型,在 Train 的时候统一使用 right -padding,而在 Generate 的时候统一使用 left padding。
--
-
- generation的时候如果使用right -padding是会出错的,原因是generate的过程中需要从最后一个token的probability中sample下一个token,但right -padding时最后一个token是pad,所以会出现问题 -
- 有些tokenizer使用的是absolute position id,导致非padtoken的position -id不是从0开始的,如果不使用left padding 会出错 -
[Q] 什么是 unsloth?
-微调训练LLM时,可以显著提升速度,且减少显存占用,目前开源部分只支持单机版微调
-[Q] 什么是 deepspeed?
-简而言之,ds 就是切片,以时间换空间。
-ZeRO-1是将优化器分片,ZeRO-2是在ZeRO-1的基础上将梯度分片,ZeRO-3是在ZeRO-2的基础上将权重分配,ZeRO-affload,将刚刚经过ZeRO切片的梯度、权重、优化器直接丢到内存
-[Q] 什么是 S2ATTN
-[Q] 什么是旋转位置编码(RoPE)
- -[Q] 什么是 GELU
-[Q] LLama3 的优化点
-位置编码:
--
-
- 改进的相对位置编码,如相对偏移编码 -
- 旋转位置编码(RoPE),以提高长序列处理能力。 -
激活函数:
--
-
- 继续使用或改进 GELU 激活函数。 -
- 采用 Swish 激活函数,提供平滑且非单调的变换。 -
- 引入自适应激活函数,动态调整激活函数形状以适应不同任务。 -
[Q] Varlen Attention Link
-变长注意力机制确保了无论是否采用“数据集拼接”策略,模型训练的行为保持一致性
-优化点
-llamafactory 开源模型微调 pipeline 的优化点
-数据截断
-问题背景 #4009
-监督学习 pack -多条数据时,超过输入长度上限的部分直接截断,导致部分样本丢失
-解决方法
-贪心背包算法,尽可能多的 pack 多条对话数据到一轮 batch 中,并将
-packed_input_ids
补齐到 cutoff_len
注意力交叉污染
-问题背景 #4224
-sft 训练中,如果每个 batch 中都是多轮对话,则需要在预处理过程中,mask -多轮对话数据中 assistant 的内容(preprocess_packed_supervised_dataset -方法),以达到同时训练一整轮对话的效果;
-sft_packing 的实现只是单纯将不同的单轮 sft -数据拼接到一起,然后分别计算 target 部分的 loss,无法保证每条对话的单轮 -sft 在计算 loss 的时候不会受到其他拼接的上文影响;
-解决方法
-新增 neat_packing
参数,用不同的 mask 区分同一 batch
-内不同轮对话的 attention_masks
,用于支持 eager 和 sdpa 两种
-attention
-加速计算方法,使其在注意力计算过程中可以通过块对角注意力(Block Diagonal
-Attention)加快计算;
-- -Eager:通过提前计算和存储中间结果,优化计算过程,提高效率。 -SDPA:通过缩放内积和 softmax -函数计算注意力权重,提高了注意力机制的稳定性和效率。
-
BitFit
LN-Tuning
单独调整 LayerNorm 模块的 weight 和 bias 参数,训练参数量少,便于和其他的微调方法一起使用。
- - + +实验表明,Prefix-Tuning + LN 的微调效果最佳。
优势
-
@@ -482,8 +483,8 @@
- 简化了不同任务之间的转换和迁移,使得模型可以更加灵活地应用于各种场景; @@ -521,8 +522,8 @@
- 拟合速度快; @@ -539,8 +540,8 @@
- 移除重参数化的编码器,对于较小的模型,会影响模型的表现,且对于大模型提升不大; @@ -578,8 +579,8 @@
- 调节的参数少于 Lora,微调效果也不错; @@ -651,16 +652,16 @@
Prompt-Tuning
- - + +可训练模块:Embedding(virtual_token, hidden_size)
优势:
Prefix Tuning
输入到下一次的计算中,这一技术又被称之为 kv cache。# 可训练模块:Embedding + MLP,与 P-Tuning 的区别是 prefix 映射到了模型的隐藏层上 |
优势:
P-Tuning V2
最大的区别在于:移除重参数化的编码器,即没有MLP。通过共享连续提示同时优化多个任务,多任务学习是 P-Tuning v2 的可选功能,可以通过多任务共享前缀进一步提升性能。
- - + +优势:
LoRA
具体而言,冻结预训练的模型权重,并将可训练的秩分解矩阵注入到大模型的每个 Attention 层的线性变换中。输入分别与原始权重和两个低秩矩阵进行计算,共同得到最终结果。
- - + +训练完成后,可以将两个低秩矩阵与原始模型中的权重进行合并,合并后的模型与原始模型无异,避免了推理期间 Prompt 系列方法带来的额外计算量。
IA3 Linear 层 (hidden_size, hidden_size*3),IA3 的可训练参数同时作用于三者之上。
- - + +优势:
AdaLora
P-I\right\|_\mathrm{F}^2+\left\|QQ^\top-I\right\|_\mathrm{F}^2\]AdapterDrop
peft 包中有 PISSA 初始化方法 @@ -734,8 +735,8 @@
PISSA
A、B,冻结参数量较大的残差矩阵 \[\text{Wres}\] ,就达成了用很少的参数近似全参数微调的效果。 - - + +优势
- 相比于 LoRA,收敛速度更快,性能更好 @@ -743,8 +744,8 @@
- VeRA显著减少了可训练参数的数量(LoRA相比参数减少了10倍),而精度没有损失; @@ -753,8 +754,8 @@
- 使用工具并观察其输出
- 生成相应返回给用户
- 缺陷:文档越长,TF 越大;解决:除以文档长度,归一化;\(\sum_{t\in +Q}\frac{\mathrm{tf}_{t,d}}{l_d}\) +
- 缺陷:每个词重要性不同;解决:语义重要性(term +weight),在文档中出现的越多,权重越低; +
- 完整的一次请求处理,于唯一一个线程中执行,可以通过 ThreadLocal -共享数据 -
- ThreadLocal.set 方法是将值存储到 Thread 线程本身的 -ThreadLocalMap 里面 +
i
:进入插入模式,从光标前插入文本。
+a
:进入插入模式,从光标后插入文本。
+Esc
:退出插入模式,回到正常模式。
+v
:进入可视模式,用于选择文本块。
+V
或 +vv
:进入可视行模式,选择整行文本。
+Ctrl + v
:进入可视块模式,选择矩形区域。抽象了 happens-before -原则来解决这个指令重排序问题,保证多线程环境下数据的一致性和可见性。
-抽象了线程和主内存之间的关系,提供一套内存模型以屏蔽系统差异
+w
:光标移动到下一个单词的开头。
+b
:光标移动到上一个单词的开头。
+0
:移动到行首。
+$
:移动到行尾。
+gg
:移动到文件的第一行。
+G
:移动到文件的最后一行。
+H
:移动到屏幕的顶部。
+M
:移动到屏幕的中部。
+L
:移动到屏幕的底部。- 只要不改变程序的执行结果,编译器和处理器怎么进行重排序优化都行; -
- 会改变程序执行结果的重排序,JMM -要求编译器和处理器必须禁止这种重排序; +
x
:删除光标所在的字符。
+dw
:删除从光标到单词末尾的内容。
+dd
:删除当前行。
+d$
:删除从光标到行末的内容。
+yy
:复制当前行。
+p
:粘贴到光标之后。
+u
:撤销上一步操作。
+Ctrl + r
:重做撤销的操作。
+r
:替换光标下的字符。
+ciw
:删除光标所在的单词并进入插入模式。
+c$
:删除从光标到行尾的内容并进入插入模式。- synchronized、各种 Lock 以及各种原子类; +
/pattern
:向下搜索 +pattern
。
+?pattern
:向上搜索 +pattern
。
+n
:跳到下一个搜索结果。
+N
:跳到上一个搜索结果。
+:s/old/new/g
:将当前行的所有 +old
替换为new
。
+:%s/old/new/g
:将整个文件中的所有 +old
替换为new
。- synchronized、Volatile 以及各种 Lock 实现可见性; +
:w
:保存文件。
+:q
:退出 Vim。
+:wq
:保存并退出。
+:q!
:不保存强制退出。
+:e filename
:打开文件 +filename
。
+:r filename
:在当前文件中插入 +filename
的内容。Volatile -关键字:保证变量的可见性和代码执行的有序性,但无法在多线程读写变量时保证操作原子性;
-内存屏障:
Unsafe
类的fullFence()
-可以避免代码重排序;
+screen
:启动一个新的 +screen
会话。
+screen -S session_name
:启动一个命名为 +session_name
的screen
会话。
+screen -ls
:列出当前所有的 +screen
会话。
+screen -r
:重新连接到一个 +screen
会话(如果只有一个会话)。
+screen -r session_name
:重新连接到一个名为 +session_name
的screen
会话。
+screen -d session_name
:在其他地方的终端断开某个会话的连接。
+screen -d -r session_name
:强制从其他地方的终端断开并重新连接到 +session_name
会话。
+screen -X quit
:关闭所有 +screen
会话
+Ctrl + a, X
:关闭当前的分割窗口。
+Ctrl + a, c
:创建一个新的窗口。
+Ctrl + a, n
:切换到下一个窗口。
+Ctrl + a, p
:切换到上一个窗口。
+Ctrl + a, "
:列出当前所有窗口,允许选择切换。
+Ctrl + a, 0-9
:切换到指定编号的窗口(例如 +Ctrl + a, 1
切换到窗口 1)。
+Ctrl + a, d
:将当前 +screen
会话断开(detach),会话继续在后台运行。
+Ctrl + a, A
:重命名当前窗口。
+Ctrl + a, K
:关闭当前窗口。
+Ctrl + a, S
:水平分割当前窗口。
+Ctrl + a, |
:垂直分割当前窗口。
+Ctrl + a, tab
:在分割的窗口间切换焦点。
+Ctrl + a, Q
:关闭除了当前窗口外的所有分割窗口。
+Ctrl + a, X
:关闭当前的分割窗口。
+Ctrl + a, :quit
或 +Ctrl + a, d
:结束当前screen
+会话。
+Ctrl + a, :kill
:强制关闭当前窗口。
+exit
:退出当前screen
+会话。- 连接器:客户端与 Server 层建立连接,管理连接、校验用户身份; -
- 查询缓存:查询语句如果命中查询缓存则直接返回,否则继续往下执行(MySQL -8.0 已删除该模块) -
- 解析 SQL:通过解析器对 SQL -查询语句进行词法分析、语法分析,然后构建语法树,方便后续模块读取表名、字段、语句类型; -
- 执行 SQL:
-
-
-
- 预处理阶段:检查表或字段是否存在;将 select * 中的 * -符号扩展为表上的所有列; -
- 优化阶段:基于查询成本的考虑, -选择查询成本最小的执行计划;查询优化器; -
- 执行阶段:根据执行计划执行 SQL -查询语句,从存储引擎读取记录,返回给客户端; -
- - db.opt,用来存储当前数据库的默认字符集和字符校验规则。 -
- table.frm ,存放表结构,在 MySQL -中建立一张表都会生成一个.frm -文件,该文件是用来保存每个表的元数据信息的,主要包含表结构定义。 -
- table.ibd,存放表数据,
表数据既可以存在共享表空间文件(文件名:ibdata1)里,也可以存放在独占表空间文件(文件名:表名字.ibd)。这个行为是由参数 -innodb_file_per_table 控制的,若设置了参数 innodb_file_per_table 为 -1,则会将存储的数据、索引等信息单独存储在一个独占表空间,从 -MySQL 5.6.6 版本开始,它的默认值就是 1 了,因此从这个版本之后, MySQL -中每一张表的数据都存放在一个独立的 .ibd 文件。
- - 主键索引 -
- 唯一索引 -
- 前缀索引 -
- 普通索引 -
- 单例索引 -
- 联合索引:最左匹配原则(MySQL 有查询优化器,所以字段在 where -子句的顺序并不重要) -
- 叶子节点采用双向链表连接 -
- 所有节点都是 16KB 数据页 -
- 非叶子节点中有多少个子节点,就有多少个索引 -
- 查询底层节点的磁盘 -I/O次数少。非叶子节点只存放索引,相比 B -树,每个非叶子节点能存储更多的索引,树形结构更加矮胖; -
- 插入和删除效率高。非叶子节点中的都是冗余索引,所有索引都在叶子节点中又存储了一次; -
- 树层低,磁盘 I/O 次数少。若每行数据 -1KB,三层最多可存放千万级数据量; -
- 范围查询,磁盘 I/O -次数少。叶子节点采用双向有序链表连接;其他树结构需要中序遍历,磁盘 -I/O 次数多; -
- 主键索引/聚簇索引:叶子节点存放实际数据、事务 id、用于事务和 MVCC -的回滚指针; -
- 二级索引:叶子节点存放主键值; -
- All:全表扫描; -
- index:全索引扫描; -
- index merge:索引合并。先将使用到的索引先进行求 -交集、并集之后在进行回表; -
- range:索引范围扫描。使用 < 、>、in、between -等关键词,只检索给定范围的行; -
- ref:非唯一索引等值匹配; -
- eq_ref:唯一索引 多表联查 等值匹配; -
- const:主键或唯一索引 常量 等值匹配; -
- Using filesort :当查询语句中包含 group by -操作,而且无法利用索引完成排序操作的时候, -这时不得不选择相应的排序算法进行; -
- Using temporary:使了用临时表保存中间结果,如排序 order by -和分组查询 group by; -
- Using where:存储引擎层返回行以后在 MySQL 服务层应用 where -过滤条件; -
- Using -index:所需数据可以直接在二级索引值和主键值中得到,采用覆盖索引,不回表; -
- Using index condition 索引下推 -:可以在联合索引遍历过程中,对联合索引中包含的字段先做判断,直接过滤掉不满足条件的记录,减少回表次数; -
- 唯一性字段 -
- 范围查询
WHERE
- - 排序查询
GROUP BY
、ORDER BY
- - 覆盖索引,全索引扫描优于全表扫描 -
- 不需要范围查询、排序查询 -
- 大量重复数据 -
- 频繁修改 -
- 数据量少 -
- 左或者左右模糊匹配 -
- 查询条件中对索引列做了
-
-
-
- 计算 -
- 函数 -
- 类型转换操作 -
- - 联合索引未遵循最左匹配原则 -
- 条件语句中 OR 前后子句一个有索引一个没索引 -
- 持久性是通过 redo log (重做日志)保证的; -
- 原子性是通过 undo log(回滚日志) 保证的; -
- 隔离性是通过 MVCC(多版本并发控制) 或锁机制保证的; -
- 一致性则是通过持久性+原子性+隔离性保证的; -
- 脏读:一个事务读到了另一个未提交事务修改过的数据 -
- 不可重复读:一个事务内多次读取同一个数据,如果出现前后两次读到的数据不一样 -
- 幻读:一个事务内多次查询某个查询条件的记录数量不同 -
- 读未提交:允许读取尚未提交的数据变更。直接读取最新的数据 -
- 读已提交:允许读取并发事务已经提交的数据。「每个 SQL -语句执行前」都会重新生成一个 Read View -
- 可重复读:对同一字段的多次读取结果都是一致的。「启动事务时」生成一个 -Read View,然后整个事务期间都在用这个 Read View -
- 可串行化:所有的事务依次逐个执行,完全服从 ACID -的隔离级别。采用加读写锁的方式来避免并行访问 -
- 快照读(select):采用 MVCC
-方式解决了幻读。事务执行过程中看到的数据,一直跟这个事务启动时看到的数据是一致的,保证事务隔离性;
-
-
-
- 在执行第一个查询语句后,会创建一个 Read View,后续的查询语句利用这个 -Read View,通过这个 Read View 就可以在 undo log -版本链找到事务开始时的数据,所以事务过程中每次查询的数据都是一样的 -
- - 当前读/共享锁(select for update):通过 next-key
-lock(记录锁+间隙锁)方式解决了幻读,读到的记录是最新的。如果有其他事务在
-Next-Key Lock
-范围内插入了一条记录,那么这个插入语句就会被阻塞,无法成功插入;
-
-
-
- update、insert、delete -都是当前读,这些语句执行前都会查询最新版本的数据,然后再做进一步的操作; -
- 如果 update -是已经被锁住的记录,就生成插入意向锁并进入阻塞状态; -
- 当前读给某记录加锁了,那么对该记录已修改但未提交的事物就无法提交这个修改了,直到锁被释放; -
- Next-Key Lock 对索引记录加上行锁(Record -Lock),对索引记录两边的间隙加上间隙锁(Gap -Lock),是针对事务隔离级别为可重复读或以上级别而设计的; -
- - trx_id,当一个事务对某条聚簇索引记录进行改动时,就会把该事务的事务 -id 记录在 trx_id 隐藏列里; -
- roll_pointer,每次对某条聚簇索引记录进行改动时,都会把旧版本的记录写入到 -undo -日志中,然后这个隐藏列是个指针,指向每一个旧版本记录,于是就可以通过它找到修改前的记录。 -
- 事务 A 先对某块记录执行快照读 -
- 事务 B 插入数据到该块记录中,并提交事务 B -
- 事务 A 再对该块记录执行当前读或更新记录 -
- 会读取到事务 B 插入的数据,因为当前读会读取最新的记录 -
- 全局锁 -
- 表级锁
-
-
-
- 表锁 -
- 意向表:用于快速判断表里是否有记录被加锁。意向共享锁和意向独占锁是表级锁,不会和行级的共享锁和独占锁发生冲突,而且意向锁之间也不会发生冲突,只会和共享表锁(lock -tables ... read)和独占表锁(lock tables ... write)发生冲突 -
- 元数据表 MDL 锁:更表结构时需要申请 MDL 写锁 -
- AUTO-INC 锁:配置文件
-
innodb_autoinc_lock_mode = 2, binlog_format = row
,既能提升并发性,又不会出现数据一致性问题
-
- - 行级锁
-
-
-
- Record Lock 记录锁,区分读锁和写锁,锁定存在的记录; -
- Gap Lock -间隙锁,不区分读锁和写锁;间隙锁用来锁一个范围,间隙锁之间是兼容的; -
- Next-Key Lock 临键锁,区分读锁和写锁; -
- 插入意向锁,特殊的间隙锁,用于不同事务的并发控制和冲突检测;插入意向锁和不同事物的间隙锁之间是冲突的,当某个事务的插入语句遇到间隙锁时,会产生插入意向锁; -
- - 隐式锁
-
-
-
- 延迟加锁机制,特点是只有在可能发生冲突时才加锁 -
- 使用场景:事务 B 插入记录的索引 == 事务 A 已插入且未提交的索引,事务
-A 插入的记录上的「隐式锁」会变「显示锁」且锁类型为 X
-型的记录锁,所以事务 B 想获取
S 型next-key -锁时会遇到锁冲突,事务 B 进入阻塞状态。
-
- - 全表当前读,遍历聚簇索引加临键锁(update -未走索引的情况) -
- 全索引当前读,遍历当前索引加临键锁 -
- 记录被间隙锁,阻塞
-
-
-
- 插入意向锁 -
- - 唯一键冲突,执行失败
-
-
-
- 如果主键索引重复,插入新记录的事务会给已存在的主键值重复的聚簇索引记录添加 -S 型记录锁。 -
- 如果唯一二级索引重复,插入新记录的事务都会给已存在的二级索引列值重复的二级索引记录添加 -S 型 next-key 锁。 -
- - 等值查询
-
-
-
- (条件值)存在,该索引加记录锁 -
- (条件值)不存在,后一索引加间隙锁 -
- - 范围查询
-
-
-
- 条件值在表中,非等值查询
-
-
-
- 小于,该索引加间隙锁 -
- 大于,后一索引加临键锁 -
- - 条件值在表中且条件是等值查询
-
-
-
- 小于等于,该索引加临键锁 -
- 大于等于,该索引加记录锁 -
-
- - 条件值在表中,非等值查询
-
- 等值查询
-
-
-
- 存在,扫描到的索引记录加的是 next-key -锁,而对于第一个不符合条件的索引记录,该索引的 next-key -锁会退化成间隙锁; -
- 不存在,扫描到第一条不符合条件的索引记录,该索引的 next-key -锁会退化成间隙锁; -
- - 范围查询
-
-
-
- 为确保条件值前后都锁住,加锁时不存在临建锁退化为间隙锁和记录锁的情况 -
- - 两个事务分别加了间隙锁(前提) -
- 两个事务分别向对方的间隙锁插入数据,于是都产生插入意向锁 -
- 由于插入意向锁和间隙锁冲突,双方都为了获取插入意向锁,会等待对方事务的间隙锁释放,陷入循环等待,造成死锁 -
- 设置事务等待锁的超时时间
innodb_lock_wait_timeout
- - 开启主动死锁检测
innodb_deadlock_detect
- - undo log(回滚日志):是 Innodb -存储引擎层生成的日志,实现了事务中的原子性,主要用于事务回滚和 -MVCC; -
- redo log(重做日志):是 Innodb -存储引擎层生成的日志,实现了事务中的持久性,主要用于掉电等故障恢复; -
- bin log (归档日志):是 Server -层生成的日志,主要用于数据备份和主从复制; -
- redo log -记录了此次事务「完成后」的数据状态,记录的是更新之后的值;防止已提交事务的修改丢失; -
- undo log -记录了此次事务「开始前」的数据状态,记录的是更新之前的值;防止未提交事务的修改无法回滚; -
- bin log -是追加写,写满一个文件,就创建一个新的文件继续写,不会覆盖以前的日志,保存的是全量的日志。 -
- redo log -是循环写,日志空间大小是固定,全部写满就从头开始,保存未被刷入磁盘的脏页日志。 -
- 实现事务回滚,保障事务的原子性。事务处理过程中,如果出现了错误 -或者 用户执行了 ROLLBACK 语句,MySQL 可以利用 undo log -中的历史数据将数据恢复到事务开始之前的状态。 -
- 实现 MVCC(多版本并发控制)关键因素之一。MVCC 是通过 Read View + -undo log 实现的。undo log -为每条记录保存多份历史数据,MySQL 在执行快照读(普通 select -语句)的时候,会根据事务的 Read View 里的信息,顺着 undo log -的版本链找到满足其可见性的记录。 -
- 实现事务的持久性,让 MySQL 有 -crash-safe 的能力,能够保证 MySQL -在任何时间段突然崩溃,重启后之前已提交的记录都不会丢失; -
- 将脏页的写操作从「随机写」变成了「顺序写」,提升 -MySQL 写入磁盘的性能; -
- MySQL 正常关闭时; -
- 当 redo log buffer 中记录的写入量大于 redo log buffer -内存空间的一半时; -
- InnoDB 的后台线程每隔 1 秒,将 redo log buffer -持久化到磁盘。 -
- 每次事务提交时都将缓存在 redo log buffer 里的 redo
-log 直接持久化到磁盘;
-
-
-
- 参数为 0 时,事务提交不会主动触发写入磁盘的操作;MySQL -进程崩溃会导致上一秒钟所有事务数据的丢失; -
- 参数为 1 时,每次事务提交都将缓存在 redo log buffer 里的 redo log -直接持久化到磁盘; -
- 参数为 2 时,每次事务提交都只是缓存在 redo log buffer 里的 redo log -写到 redo log 文件(写入到 redo log -文件并不意味着写入到了磁盘,而是存在操作系统里的文件系统中的 Page -Cache);操作系统崩溃或者系统断电会导致上一秒钟所有事务数据的丢失; -
- - write pos ~ checkpoint -之间的部分(图中红色部分):记录新的更新操作; -
- check point ~ write pos -之间的部分(图中蓝色部分):待落盘的脏数据页记录; -
- binlog 日志只能用于数据备份和主从复制,没有 crash-safe 的能力; -
- binlog -是全量日志,保存了所有数据变更的情况,可以恢复整个数据库所有数据; -
- 写入 Binlog:数据修改 -> 主库写 binlog 日志 -> commit 事务 --> 持久化本地数据 -> 提交事务成功; -
- 同步 Binlog:从库会创建一个专门的 I/O 线程,连接主库的 log dump -线程,来接收主库的 binlog 日志,再把 binlog 信息写入 relay log -的中继日志里,再返回给主库“复制成功”的响应。 -
- 回放 Binlog:读 relay log 中继日志,回放 -binlog,并更新从库中的数据。 -
- 同步复制:MySQL -主库提交事务的线程要等待所有从库的复制成功响应,才返回客户端结果; -
- 异步复制(默认模型):MySQL 主库提交事务的线程并不会等待 binlog -同步到各从库,就返回客户端结果; -
- 半同步复制:只要数据成功复制到任意一个从库上,主库的事务线程就可以返回给客户端; -
- 图中的 write,把日志写入到 binlog 文件(文件系统的 page -cache 里),但是并没有把数据持久化到磁盘; -
- 图中的 fsync,把数据持久化到磁盘的操作,这里就会涉及磁盘 -I/O,所以频繁的 fsync 会导致磁盘的 I/O 升高; -
- sync_binlog = 0 的时候,表示每次提交事务都只 write,不 -fsync,后续交由操作系统决定何时将数据持久化到磁盘; -
- sync_binlog = 1 的时候,表示每次提交事务都会 write,然后马上执行 -fsync; -
- sync_binlog =N(N>1) 的时候,表示每次提交事务都 write,但累积 N -个事务后才 fsync。 -
- 如果 binlog 中没有当前内部 XA 事务的 XID,说明 redolog -完成刷盘,但是 binlog 还没有刷盘,则回滚事务。对应时刻 -A 崩溃恢复的情况; -
- 如果 binlog 中有当前内部 XA 事务的 XID,说明 redolog 和 binlog -都已经完成了刷盘,则提交事务。对应时刻 B -崩溃恢复的情况; -
- flush 阶段:多个事务按进入的顺序将 binlog 从 cache
-写入文件(不刷盘);5.7 之后在该阶段增加了 redo log 的组提交,即多个事务
-redo log 统一刷盘;
-
-
-
- 类似于 XA 事务的 Prepare 阶段,如果在这一步完成后数据库崩溃,由于 -binlog 中没有该组事务的记录,所以 MySQL 会在重启后回滚该组事务; -
- - sync 阶段:对 binlog 文件做 fsync 操作(多个事务的
-binlog 合并一次刷盘);
-
-
-
- 类似于 XA 事务的 Commit 阶段,如果在这一步完成后数据库崩溃,由于 -binlog 中已经有了事务记录,MySQL会在重启后通过 redo log -刷盘的数据继续进行事务的提交。 -
- - commit 阶段:各个事务按顺序做 InnoDB commit -操作; -
- MySQL 执行器检查记录是否在 buffer pool 中
-
-
-
- 若不在,将数据页从磁盘读入到 buffer pool; -
- 若更新前与更新后数据不同,调用 存储引擎 执行更新操作; -
- - 开启事务,记录 undo log,同时将 Undo 页的修改记录存在 redo log -中; -
- 存储引擎更新数据,并标记数据页为脏页,同时将数据页的修改记录存在
-redo log 中;
-
-
-
- 为了减少磁盘I/O,脏页选择合适时间持久化到硬盘,持久化后删除对应的 -redo log; -
- - 记录更新完毕,记录 binlog 至 binlog cache; -
- 事务提交,将 redolog binlog 持久化到硬盘(两阶段提交;组提交)
-
-
-
- prepare 阶段 -
- commit 阶段 -
- - Redo log 满了; -
- BufferPool满了; -
- MySQL空闲; -
- 后台线程定时 checkpoint; -
- 事务提交时(一般不选); -
- Free List (空闲页链表),管理空闲页; -
- Flush List (脏页链表),管理脏页; -
- LRU -List,管理脏页+干净页,将经常查询或可能将要查询的数据缓存在其中,而不常查询的数据就淘汰出去; -
- Free Page(空闲页),表示此页未被使用,位于 Free 链表; -
- Clean Page(干净页),表示此页已被使用,但是页面未发生修改,位于LRU -链表。 -
- Dirty -Page(脏页),表示此页「已被使用」且「已经被修改」,其数据和磁盘上的数据已经不一致。当脏页上的数据写入磁盘后,内存数据和磁盘数据一致,那么该页就变成了干净页。脏页同时存在于 -LRU 链表和 Flush 链表。 -
- 预读失效:加载访问数据页时,提前加载进来的相邻数据页,即预读页,但后续并没有访问预读页; -
- Buffer Pool 污染:某一个 SQL 语句扫描了大量的数据时,将 Buffer Pool
-里的所有页都替换出去,导致大量热数据被淘汰了,后续热数据被访问时会产生大量磁盘
-I/O;
-
-
-
- 索引失效批量扫描的时候会出现污染 -
- - 将 LRU 划分了 2 个区域:old 区域 和 young -区域。划分这两个区域后,预读的页就只需要加入到 old -区域的头部,当页被真正访问的时候,才将页插入 young 区域的头部。 -
- 只有同时满足被访问与在 old 区域停留时间超过
-
innodb_old_blocks_time
秒两个条件,才会被插入到 -young 区域头部
- - young 区域优化:为了防止 young 区域节点频繁移动到头部。young -区域前面 1/4 被访问不会移动到链表头部,只有后面的 3/4被访问了才会 -
传输层,关注链路级别的传输
- 解析 URL
- DNS 查询服务器 IP
@@ -378,11 +378,11 @@
传输层 TCP
TCP :面向连接的、可靠的、基于字节流的
三次握手
- - + +四次挥手【closed_wait;last_ack】
- - + +- 首先确认客户端不会再发送请求给服务端
- 然后服务端在发送完数据后,再向客户端发送断开连接 @@ -430,8 +430,8 @@
网络层 IP
- 大部分操作都在内存中完成(制约 Redis 性能的瓶颈并不是 -CPU,而是内存和网络带宽) -
- 避免了多线程之间的竞争 -
- I/O 多路复用机制 -
删去已经无意义的日志;
-重写操作由后台子进程完成,子进程共享父进程内存(为什么不用线程?父子进程以只读的方式共享数据,如果任意一方修改了该共享内存,父子进程会有独立的数据副本,即写时复制,注意这里只会复制主进程修改的物理内存数据,没修改物理内存还是与子进程共享的。而线程共享内存需要加锁);
-AOF -重写缓冲区用于保存重写子进程启动后,新产生的AOF日志,并在重写结束后追加到新的AOF文件中;
-- bgsave 命令创建子进程来做生成 RDB 文件的工作,是异步工作的 -
- 设置复制延迟限制
min-slaves-max-lag
- - 客户端降级措施,当 master 不可写,就把数据存到本地或 kafka -中等待主节点正常后再消费 -
- 哪个哨兵节点判断主节点为「客观下线」,这个哨兵节点就是候选者,所谓的候选者就是想当 -Leader 的哨兵。 -
- 候选者会向其他哨兵发送命令,表明希望成为 Leader
-来执行主从切换,并让所有其他哨兵对它进行投票。Raft 算法选择哨兵 Leader:
-
-
-
- 第一,拿到半数以上的赞成票; -
- 第二,拿到的票数同时还需要大于等于哨兵配置文件中的 quorum 值。 -
- - 第一步:在已下线主节点(旧主节点)属下的所有「从节点」里面,挑选出一个从节点,并将其转换为主节点,选择的规则:
-
-
-
- 过滤掉已经离线的从节点; -
- 过滤掉历史网络连接状态不好的从节点; -
- 将剩下的从节点,进行三轮考察:优先级、复制进度、ID -号。在每一轮考察过程中,如果找到了一个胜出的从节点,就将其作为新主节点。 -
- - 第二步:让已下线主节点属下的所有「从节点」修改复制目标,修改为复制「新主节点」; -
- 第三步:将新主节点的 IP -地址和信息,通过「发布者/订阅者机制」通知给客户端; -
- 第四步:继续监视旧主节点,当这个旧主节点重新上线时,将它设置为新主节点的从节点; -
- 同一个分区内的 Redis -节点之间的数据完全一样,多个节点保证了数据有多份副本冗余保存,且可以提供高可用保障; -
- 不同分片之间的数据不相同; -
- 通过水平增加多个分片的方式,可以实现整体集群容量的扩展; -
- 切片 slot 槽,共有16384个槽位; -
- 数据 key 通过 “CRC16 算法 + 16384 取模”,得到对应存储的哈希槽; -
- 数据存储在该槽位对应的 Redis -分区中,每个分区都有独立的主从哨兵保证高可用; -
- 参数校验:参数不合法直接抛出异常 -
- 缓存无效 key:适用于 key 变化不频繁 -
- 布隆过滤器:校验 Key -是否合法(有误差,可能会把未存的值当作已有,即不合法的 key -当作合法的) -
- 接口限流:固定窗口算法、滑动窗口算法、漏桶算法、令牌桶算法 -
- 热点数据永不过期或过期时间长 -
- 预热热点数据:定时任务预热(定时触发缓存预热的逻辑,将数据库中的热点数据查询出来并存入缓存中)、kafka -异步预热(将数据库中的热点数据的主键或者 ID -发送到消息队列中,然后由缓存服务消费消息队列中的数据,根据主键或者 ID -查询数据库并更新缓存) -
- 访问数据库互斥锁 -
- Redis 集群 -
- 限流 -
- 多级缓存:本地缓存+Redis -
- 热点数据失效时间长 -
- 预热热点数据 -
- 消息队列确保缓存删除成功 -
- 订阅 MySQL 的 binlog,数据修改时删除缓存 -
- 单机的 redis 是 cp 的,但是集群情况下 redis 是 ap 的,所以运行 -Redisson -的节点必须是主节点,不能有从节点,防止主节点加锁成功未同步从节点就宕机,而客户端却收到加锁成功,导致数据不一致。 -
- 由于 Redis 单线程处理,大 Key -的增删改查都很耗时,会导致工作线程阻塞、客户响应超时、网络传输阻塞; -
- 内存分布不均,集群场景下 slot 槽数据量不均; -
- 持久化阻塞主线程,会主线程的两个阶段耗时增加:创建子进程复制页表结构、修改共享数据写时复制; -
- 拆分大 key; -
- 及时/定时清理大 key,unlink 异步删除代替 del 同步删除; -
- 一致性(Consistency):所有节点访问同一份最新的数据副本 -
- 可用性(Availability):非故障的节点在合理的时间内返回合理的响应(不是错误或者超时的响应) -
- 分区容错性(Partition -Tolerance):分布式系统出现网络分区的时候,仍然能够对外提供服务。 -
- 缓存:缓存是一种提高数据读取性能的技术,通过在内存中存储经常访问的数据,可以减少对数据库或者其他存储系统的访问,从而提高系统的响应速度。缓存可以应用在多个层次,例如浏览器缓存、CDN -缓存、反向代理缓存、应用缓存等。 -
- 降级:降级是在系统压力过大或者部分服务不可用的情况下,暂时关闭一些非核心的服务,以保证核心服务的正常运行。降级可以在多个层次进行,例如页面降级、功能降级、服务降级等。 -
- 限流:限流是一种控制系统处理请求的速率的技术,以防止系统过载。限流可以通过多种算法实现,例如固定窗口、滑动窗口、漏桶算法、令牌桶算法等。 -
- Client Stub -主要是将客户端的请求参数、请求服务地址、请求服务名称做一个封装,并发送给 -Server Stub -
- Server Stub 主要用于接收 Client Stub 发送的数据并解析,去调用 Server -端的本地方法 -
开发人员使用方没有配置接口的 protocol -字段,而是写在接口实现类上
-
-dubbo-3.0.4
框架:-
-
- 若没有指定 protocol 字段,会创建服务端提供的所有协议的 invoker -
- EasyREST 包
createClientInvoker
创建 REST 协议的 invoker -时需要 HttpMethod 参数
- - 由于注解写在实现类而不是接口上面,导致消费端无法共享相应的 REST -配置信息,即 HttpMethod 为 null,因此 RESTClient 创建失败 -
- 在服务更新过程中,客户端每次都是全量更新注册中心的服务端信息,这个过程中如果
-invoker
-一直注册失败,会不断将失败的
Client
存到List<ResteasyClient>
中,如果有 -n 台机器需要依次更新,这时客户端的数组中会存 n*n -个失败的连接实例,从而导致 OOM
-
-- ResteasyClient 对象由 RestProtocol 协议对象持有,针对没有创建成功 -invoker 的场景应把其对应的 ResteasyClient 销毁掉 -
- 用
Map<String, ResteasyClient>
代替 -List<ResteasyClient>
,同一个服务端只存一次
- - 用
WeakHashMap<String, ResteasyClient>
自动回收不用的 -ResteasyClient(参考pr)
- - 直接通过
Executors
构造 固定数量+无限长等待队列 -线程池,该线程池在共享的无界队列上操作的固定数量的线程。在任何时候,最多nThreads线程将处于活动处理任务状态。如果在所有线程都处于活动状态时提交额外的任务,它们将在队列中等待,直到有线程可用。
- - 并发调用 Rpc 接口获取返回值 -
- 数据查询任务中存在父子调用关系,数据查询任务同步调用 Redis
-查询缓存和 Rpc 调用微服务获得数据。如果本地 Redis
-缓存中能获得数据,就直接返回缓存值并取消 Rpc 调用
-
future.cancel(true)
。
- - 父子任务分开并发执行,耗时的异步线程应做好线程池隔离 -
CompletableFuture.anyOf(task1,tsak2)
-优先取先完成的那个任务的返回值
-- 转换过程中会根据具体的
protocol
创建对应的 -invoker
,如 Rest 和 Dubbo 需要解析不同的参数。
- - 提供了 ByteBuf 容器,更方便地处理数据。
ByteBuf
-在重写编解码器的 encoder/decoder 方法中作为参数传入。
- - channel -
- 定义一个接口及其实现类; -
- 创建一个代理类同样实现这个接口 -
- 将目标对象注入进代理类,然后在代理类的对应方法调用目标类中的对应方法。这样的话,我们就可以通过代理类屏蔽对目标对象的访问,并且可以在目标方法执行前后做一些自己想做的事情。 -
- 定义一个接口及其实现类; -
- 自定义 InvocationHandler 并重写 invoke 方法,在 invoke -方法中我们会调用原生方法(被代理类的方法)并自定义一些处理逻辑; -
- 通过
-
Proxy.newProxyInstance(ClassLoader loader,Class<?>[] interfaces,InvocationHandler h)
-方法创建代理对象;
- - 在实例化 bean 之后,postProcessAfterInitialization 方法被调用。 -
- 对于每个 bean 类的字段,检查是否标记了 @RpcReference 注解。 -
- 如果发现标记了 @RpcReference -注解的字段,根据注解中的信息创建相应的 RpcServiceConfig 对象。 -
- 通过 RpcClientProxy 创建了一个代理对象 -clientProxy,这个代理对象实现了 declaredField.getType() -所表示的接口,这个接口可能就是 HelloService 接口或其它接口,取决于 -helloService 字段的类型。 -
- 这个代理对象 clientProxy 会在方法调用时委托给 RpcClientProxy 的 -invoke 方法,该方法负责处理远程调用的逻辑。 -
- 通过反射设置 clientProxy 到 HelloController 类的 helloService -字段上,替换了原来的字段值。 -
- 序列化:将数据结构或对象转化为二进制字节流 -
- 反序列化:将在序列化过程中生成的二进制字节流转化为数据结构或对象 -
- 单例 Singleton、多例/原型 Prototype Bean -
- Aware 其实就是一个标识;只有满足 Aware -规范或者其子类规范的才能进行相关的赋值操作,这样做的话可以少写很多判断,并且可以在一个地方进行统一的判断赋值; -
- BeanPostProcessor -前置处理器的关键实现类:ApplicationContextAwareProcessor -
- BeanPostProcessor -后置处理器的关键实现类:AbstractAutoProxyCreator。这个方法负责帮我们创建代理,底层采用对象cglib -或动态代理【AOP其实就是 IOC -整体流程(Bean生命周期)里的一个扩展点】 -
- InitializingBean 接口中的 afterPropertiesSet -方法:在这个方法里面去编写我们的业务逻辑,以及进行相关的属性赋值等等 -
- AbstractAutowireCapableBeanFactory 内的 initializeBean 调用了所有 -BeanPostProcessor 的实现类 -
- ApplicationContext 类型容器的内部维护了一个 BeanFactory -类型的容器(AnnotationConfigApplicationContext 的父类 -GenericApplicationContext 维护了一个 Bean -工厂实现类:DefaultListableBeanFactory) -
- DefaultListableBeanFactory:Spring 默认的 BeanFactory 实现 -
- DefaultSingletonBeanRegistry:DefaultListableBeanFactory -单例模式存储关系的地方 Map<String(BeanName),Object(instance)> -
- AbstractApplicationContext.refresh() 方法
-
-
-
- 配置了对 BeanFactoryPostProcessor 的实现 -postProcessBeanFactory(beanFactory) 和处理 -invokeBeanFactoryPostProcessors(beanFactory)。BeanFactoryPostProcessor -可以自定义 ApplicationContext 容器中的 BeanFactory -进行处理,在还没有对任何Bean进行实例化之前(ConfigurationClassPostProcessor -通过注解解析配置类;PropertySourcesPlaceholderConfigurer:xml配置文件中导入的 -properties 文件进行解析,并替换bean定义中的占位符) -
- 配置了对 BeanPostProcessor 的实现 -
- - (1-1)依赖注入:@Autowired;@Resource -
- 事务 @Transactional、@Configuration -
- (1-2)单例 Singleton、多例/原型 Prototype Bean -
- jvm类加载器classloader:bootstrap ext app 博客 -
- “约定优于配置”理念 -
- @EnableAutoConfiguration -
- 自动将一些配置类的bean注册进ioc容器 -
- 一级缓存,缓存正常的 bean 实例 -
- 二级缓存,缓存还未进行依赖注入和初始化方法调用的 bean 实例 -
- 三级缓存,缓存 bean 实例的 ObjectFactory,用于解决 BeanPostProcessor -代理类时正确地依赖注入 -
- 直接将句子中任意两个单词的联系通过一个计算步骤直接联系起来,远距离依赖特征之间的距离被极大缩短,有利于有效地利用这些特征; -
- Self Attention 对于增加计算的并行性有直接帮助作用; -
- 直接将句子中任意两个单词的联系通过一个计算步骤直接联系起来,远距离依赖特征之间的距离被极大缩短,有利于有效地利用这些特征; +
- Self Attention 对于增加计算的并行性有直接帮助作用; +
- 直接将句子中任意两个单词的联系通过一个计算步骤直接联系起来,远距离依赖特征之间的距离被极大缩短,有利于有效地利用这些特征; -
- Self Attention 对于增加计算的并行性有直接帮助作用; -
- 在 Encoder 和 Decoder 之间加了一层 GCNConv 和 RGCNConv +
PISSA
VeRA
区别于Lora,Vera 将 A 和 B 矩阵按照高斯分布随机初始化并冻结,只训练两组直接和A、B相乘的一维参数。虽然直观看起来A和B像两个无用的张量,但实际上它们仍然是必不可少的,实验证明即使是随机张量也可以用于微调。
- - + +优势:
VeRA
DoRA
将每个高阶矩阵都分解为 1*k 大小矩阵和 d*k 方向矩阵的乘积,LoRA 倾向于同时改变幅度和方向,DoRA可以更容易地将二者分开调整,或者用另一个的负变化来补偿一个的变化。
- - + +SLORA
一个 GPU 上并行执行多个 lora adapters 的微调
S-LoRA 能够在单个 GPU 上或跨多个 GPU 以较小的开销为数千个 LoRA @@ -780,8 +781,8 @@
LoRA+
LoRA 中的适配器矩阵 A 和 B 以相同的学习率更新,实验表明对 A 和 B 使用相同的学习率并不能实现有效的特征学习,LoRA+ 通过精心选择的固定比率为 LoRA 适配器矩阵 A 和 B 设置不同的学习率,纠正 LoRA 的这种次优性。
- - + +LongLoRA
LongLoRA 扩展了模型的上下文,同时保留了其原始架构,并且与大多数现有技术兼容。一方面,虽然推理过程中需要密集的全局注意力,但微调过程更需要稀疏的局部注意力实现有效且高效反向传播。由此,该方法提出转移稀疏注意力
@@ -794,11 +795,13 @@RsLoRA
LoRA通过在选定层添加可训练的低秩Adapter来实现参数有效的微调。每个LoRA由两个低秩矩阵乘积组成,并乘以一个与秩相关的因子,传统的LoRA采用“直接除以秩的因子”的方法过于激进,导致高秩Adapter的学习速度减缓,性能受限。因此,在实际应用中,LoRA通常仅限于使用非常低的秩。
rsLoRA深入研究了 LoRA 的缩放因子对学习过程的影响,并证明了 LoRA 应该除以秩的平方根而不是秩,通过使用较大的秩在训练期间增加计算资源以获得更好的微调性能,同时不改变推理计算成本。
+ +LLaMA Pro
该方法提出的Block Expansion方法,即块扩展,在保持预训练模型参数不变的基础上,增加新的block来适应新的训练任务。这些新加入的block与原有block协同工作,既保留了模型原有的知识,又能够适应新的训练数据和任务需求。
- - + +方法性能对比
从方法类型、是否存储高效、是否内存高效、反向传播成本、推理开销五个维度比较 PEFT 方法:
diff --git a/LLM-RAG-Langchain/image-20240815155230728.png b/LLM-RAG-Langchain/image-20240815155230728.png new file mode 100644 index 0000000..18372e7 Binary files /dev/null and b/LLM-RAG-Langchain/image-20240815155230728.png differ diff --git a/LLM-RAG-Langchain/image-20240820085502013.png b/LLM-RAG-Langchain/image-20240820085502013.png new file mode 100644 index 0000000..7d7024c Binary files /dev/null and b/LLM-RAG-Langchain/image-20240820085502013.png differ diff --git a/LLM-RAG-Langchain/image-20240820085527076.png b/LLM-RAG-Langchain/image-20240820085527076.png new file mode 100644 index 0000000..5aa3d1e Binary files /dev/null and b/LLM-RAG-Langchain/image-20240820085527076.png differ diff --git a/LLM-RAG-Langchain/index.html b/LLM-RAG-Langchain/index.html index 36ab1e5..3e2ab1c 100644 --- a/LLM-RAG-Langchain/index.html +++ b/LLM-RAG-Langchain/index.html @@ -27,8 +27,10 @@ + + - + @@ -142,7 +144,7 @@
更新于
-
+
@@ -282,6 +284,9 @@ 概念
从原始数据到响应生成最常见的流程图如下:
+RAG 测评指标:
+
+
Langchain
LangChain
采用组件化设计的思想,将语言模型开发分为多个子任务:对话历史
@@ -295,16 +300,15 @@ Langchain
还有额外的功能如:用量记录、数据流返回 acall、缓存
SQLite、支持多种模型接口 OpenAI、向量数据库 langchain.vectorstores
模型链 Chain
-
-链(Chains)通常将大语言模型(LLM)与其他组件组合在一起来构建更复杂的链。
-
+链(Chains)通常将大语言模型(LLM)与其他组件组合在一起来构建更复杂的链。比如,LLMChain
+允许我们对创建的 Prompt 使用大模型;
Chain 基类是所有 Chain
对象的起点,处理输入、输出、历史和回调等功能,支持同步和异步调用,内部组件也可以通过回调进行交互;
自定义 Chain 需要继承 Chain 基类,实现 _call/_acall
方法定义调用逻辑;
对话历史 Memory
根据需求可以将历史存储在
-SQLite、qdrant、本地内存等地方,下面代码将历史存储在缓存中:
+SQLite、qdrant等数据库中,下面代码将历史存储在缓存中:
from langchain.memory import ConversationBufferMemory
memory = ConversationBufferMemory(
memory_key="history", # 与 prompt 的输入变量保持一致。
return_messages=True # 将以消息列表的形式返回聊天记录,而不是单个字符串
)
提示工程 Prompt
Prompt 很少是写明不变的,通常从多个组件构建而成的。 PromptTemplate
@@ -322,11 +326,77 @@
索引 Indexes
LangChain有许多模块可帮助您加载、结构化、存储和检索文档。详见
代理 Agents
-代理使用LLM来确定采取哪些行动以及顺序。
+代理涉及 LLM
+做出行动决策(Observation)、执行该行动(Action)、查看一个观察结果(Observation),并重复该过程直到完成。LangChain
+提供了一个标准的代理接口,一系列可供选择的代理,以及端到端代理的示例。
+文本匹配任务
+
+RAG
+将匹配分为多个阶段,可分为:粗召回、细召回、粗排序、精排序、再排序。该任务包括多个子任务,如文本相似度计算、问答匹配、对话匹配,类似于RAG的文本抽取式阅读理解和多项选择
+
+RAG 采取召回(IF-IDF、BM25)、粗排(双塔 Bert
+模型、Sentence-Bert、text2vec、uniem)、精排(单塔 Bert
+模型),得到相关的文档输入 LLM 中。
+基于词匹配
+
+传统方法将词匹配、词距等分数作为特征,用线性模型或树模型预测相关性,效果远不如深度学习。
+
+将查询文本分词,词在文档 d 中出现的次数越多,则查询文本和文档 d
+越相关
+IF-IDF
+概念
+词袋模型:(bag of words)只考虑词频,不考虑词的顺序和上下文
+词频 TF:每个词在文档中出现的次数的集合;\(\sum_{t\in\mathcal{Q}}\operatorname{tf}_{t,d}\)
+
+
+文档频率 DF:词 t 在多少文档中出现过,定义“词”区别文档的能力;
+逆文档排序 IDF:衡量一个词在 N 个文档中的重要性;\(\mathrm{idf}_t=\mathrm{log}\frac
+N{\mathrm{df}_t}\)
+\(\mathrm{TFIDF}(\mathcal{Q},d) =
+\sum_{t\in\mathcal{Q}} \frac{\mathrm{tf}_{t,d}}{l_{d}} \cdot
+\mathrm{idf}_{t}.\)
+其中,查询词q的分词后得到 Q 集合,它与文档 d 的相关性用 TF-IDF
+衡量;结果还取决于所采取的分词算法;
+BM25
+IF-IDF 的变种,k 和 b 是参数(通常设置为 k∈[1.2, 2],b=0.75)
+\(\sum_{t\in
+Q}\frac{\mathrm{tf}_{t,d}\cdot(k+1)}{\mathrm{tf}_{t,d}+k\cdot\left(1-b+b\cdot\frac{l_d}{\mathrm{mean}(l_d)}\right)}\cdot\ln\left(1+\frac{N-\mathrm{df}_t+0.5}{\mathrm{df}_t+0.5}\right)\)
+基于词距
+两个词在文档中出现位置之间,间隔的词越少越可能相关;
+简而言之,查询词切分后的 term
+在文档中出现的次数越多越好,任意两个词之间的距离越近越好;
+eg:OkaTP
+基于深度学习
+基于交互策略的单塔模型 准确度更高
+Bert 输出 similarity,二分类任务(相似/不相似)
+基于向量匹配的双塔模型 速度更快
+Bert 输出 Sentence_Embedding,拟合 cos_Similarity(回归任务)
+评价指标
+二分类评价指标 AUC
+
+
+可信度 RAG
+当检索返回的结果有错误或信息丢失时,会导致LLM回复出现幻觉。
+为解决这个问题的三个指标:可信度(Faithfulness)、答案相关性(Answer
+Relevance)、上下文相关性(Context Relevance)
+Query 预处理
+同义Query,
+意图识别
+召回
+索引技术:倒排索引、压缩倒排索
+检索模型:BM25、BERT
+引入上下文信息,更好地理解用户意图
Langchain
还有额外的功能如:用量记录、数据流返回 acall、缓存 SQLite、支持多种模型接口 OpenAI、向量数据库 langchain.vectorstores
模型链 Chain
--+链(Chains)通常将大语言模型(LLM)与其他组件组合在一起来构建更复杂的链。
-
链(Chains)通常将大语言模型(LLM)与其他组件组合在一起来构建更复杂的链。比如,LLMChain +允许我们对创建的 Prompt 使用大模型;
Chain 基类是所有 Chain 对象的起点,处理输入、输出、历史和回调等功能,支持同步和异步调用,内部组件也可以通过回调进行交互;
自定义 Chain 需要继承 Chain 基类,实现 _call/_acall 方法定义调用逻辑;
对话历史 Memory
根据需求可以将历史存储在 -SQLite、qdrant、本地内存等地方,下面代码将历史存储在缓存中:
+SQLite、qdrant等数据库中,下面代码将历史存储在缓存中:from langchain.memory import ConversationBufferMemory |
RAG +将匹配分为多个阶段,可分为:粗召回、细召回、粗排序、精排序、再排序。该任务包括多个子任务,如文本相似度计算、问答匹配、对话匹配,类似于RAG的文本抽取式阅读理解和多项选择
+传统方法将词匹配、词距等分数作为特征,用线性模型或树模型预测相关性,效果远不如深度学习。
+代理 Agents
Java开发
- 分类
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LLM-RLHF
-
+ LLM-RLHF
-Java数据结构
- 标签
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LLM
-
+ LLM
-++大模型核心技术点在于训练资源、数据清洗和数据配比等,其难点或许不在于模型训练和模型结构搭建
+
前缀语言模型 Encoder-Decoder
+ChatGLM
+掩码语言模型 自编码模型 Encoder-Only
+因果语言模型 自回归模型 Decoder-Only
+- Java 并发基础 + Linux-Tool
-ThreadLocal
-每一个线程都有自己的专属本地变量,通过空间换时间的方式避免并发下线程安全问题
+Vim
+基本模式切换
-
-
原理
-public class ThreadLocal<T> { |
整体结构图
- - -引用关系图
- - -Q&A
-Entry的key为什么设计成弱引用?
-ThreadLocal 变量生命周期结束后,ThreadLocal 对象就可以被回收;
-ThreadLocal为什么会导致内存泄露,如何解决?
-虽然 get、set 或 remove 方法会回收 key 为 null 的 value -值,但是如果没有调用这些方法,Entry 和ThreadLocalMap -将会长期存在下去,会导致内存泄露;
-使用完 ThreadLocal 对象之后,调用 remove 方法;
-ThreadLocal 是如何定位数据的?
-int i = key.threadLocalHashCode & (len-1);
如果有冲突就通过线性探测再散列,直到找到空 bin;
---其他Hash冲突解决方法:开放寻址法(再散列)、拉链法
-
ThreadLocal 是如何扩容的?
-父子线程如何共享数据?
-InheritableThreadLocal:初始化时会拷贝一份父线程中 ThreadLocal -值,到子线程 InheritableThreadLocal 中;
-ThreadLocal 作为成员变量时,为什么定义成 static -更好?
-将 ThreadLocal 定义为 static 可以确保所有线程都访问同一个 ThreadLocal -实例,但它们各自存储的数据是独立的;
-确保它们的生命周期与线程的生命周期一致,而不是与类的实例的生命周期一致;
-使用 InheritableThreadLocal -时,如果父线程中重新set值,在子线程中能够正确的获取修改后的新值吗?
-不会影响到已经存在的子线程中 InheritableThreadLocal -的值,子线程将保持它在创建时从父线程中继承的原始值;
-JMM
+光标移动
-
-
概念
-CPU 高速缓存:为解决 CPU 处理速度和内存不匹配的问题;
-指令重排序【编译器优化重排 —> 指令并行重排 —> -内存系统重排】:指令重排序可以保证串行语义一致,但是没有义务保证多线程间的语义也一致;
---内存屏障可以禁止处理器指令发生重排序,从而保障指令执行的有序性。此外,还能保证指令执行的可见性。
-
happens-before 原则
-前一个操作的结果对于后一个操作是可见的,无论这两个操作是否在同一个线程里
+编辑文本
-
-
并发的三大特性
-原子性:一次操作或者多次操作,要么所有的操作全部都得到执行并且不会受到任何因素的干扰而中断,要么都不执行
+搜索和替换
-
-
可见性:当一个线程对共享变量进行了修改,那么另外的线程都是立即可以看到修改后的最新值
+文件操作
-
-
有序性:代码的执行顺序未必就是编写代码时候的顺序
+Screen
+基本命令
-
-
在 screen
会话中操作
+在 screen
会话中,所有命令都以 Ctrl + a
+开头(表示“前缀键”),然后跟随其他按键来执行操作。
-
+
会话管理
+-
+
并发的三大特性
diff --git a/Machine-Learning/index.html b/Machine-Learning/index.html index d1223b2..8396c7a 100644 --- a/Machine-Learning/index.html +++ b/Machine-Learning/index.html @@ -35,7 +35,7 @@ - + @@ -148,7 +148,7 @@
更新于
-
+
@@ -332,21 +332,25 @@ RLHF
OpenAI 提出的生成领域(Decoder_only)的新训练范式
Policy Gradient
- - + +RM+PPO
步骤一、预训练语言模型
- - + +步骤二、训练奖励模型 RM
- - + +步骤三、用强化学习 PPO 微调
- - + +DPO
KTO
ORPO
+损失函数
+MSELoss 回归任务
+CrossEntropyLoss 单标签分类
+BCEWithLogitsLoss 多标签分类
Torch
torch.nn.Parameter()
将一个不可训练的 tensor
转换成可以训练的类型 parameter,并将这个 parameter 绑定到这个 module
@@ -364,7 +368,7 @@
Torch
闻
- - -Yesterday is history, tomorrow is a mystery but today is a gift.
-- MySQL -
- -基础
-SQL 查询语句执行过程
--
-
MySQL 数据文件
--
-
表空间文件的结构
- - -InnoDB 行格式
-共有 Redundant、Compact、Dynamic、Compressed 四种,下图时 Compact -行格式的结构
- -InnoDB 页格式
-InnoDB 的数据是按「数据页」为单位来读写的,数据页的默认大小是 -16KB
- - -名称 | -说明 | -
---|---|
文件头 | -页的信息;两个指针指向上一个/下一个数据页 | -
页头 | -页的状态信息 | -
最小和最大记录 | -两个虚拟伪记录,分别表示页中的最小记录和最大记录 | -
用户记录 | -储存所有的行记录 | -
空闲空间 | -还没被用到的空间 | -
页目录 | -用户记录相对位置,页中所有记录的索引 | -
文件尾 | -校验页是否完整 | -
数据页中的 -页目录存储各个槽,用户记录按照「主键」顺序组成单向链表,可以通过二分查找法的方式进行检索。
-索引
-索引字段特性分类
--
-
索引个数分类
--
-
--最左匹配原则:按照最左优先的方式进行索引的匹配,范围查询的字段可以用到联合索引,在遇到范围查询(如 ->、<)的时候,就会停止匹配,也就是范围查询的字段可以用到联合索引,但是在范围查询字段的后面的字段无法用到联合索引。注意,对于 ->=、<=、BETWEEN、like 前缀匹配的范围查询,并不会停止匹配。
-
Innodb 采用 B+Tree -作为索引的优势
---MySQL 底层实现的 B+ 树在原有的 B+ 树的基础上做了改动
--
-nosql 的 MongoDB 采用 B -树实现,适用于大量的单个索引(而不是范围查询)查询的场景;
-
-
-
B+Tree 索引结构
--
-
Explain 执行计划
-数据扫描类型 type
--
-
额外信息 extra
--
-
是否需要索引
-需要索引的情况
--
-
不需要索引的情况
--
-
索引优化
-前缀索引:减小索引字段大小,可以增加一个索引页中存储的索引值,有效提高索引的查询速度。
-覆盖索引:联合索引和主键值中包括了查询数据,避免回表
-主键索引自增:追加记录时不需要移动数据;避免页分裂造成内存碎片;
-主键字段长度尽可能短:聚簇索引非叶子节点可以装下更多的索引;二级索引叶子节点可以装下更多的主键值,占用空间更小
-索引 NOT NULL:简化索引统计、值比较过程;减少 1 -字节的行格式长度;
-联合索引 -区分度大的在前:建立联合索引时,要把区分度大的字段排在前面,这样区分度大的字段越有可能被更多的 -SQL 使用到。
---如果索引的区分度很小,假设字段的值分布均匀,那么无论搜索哪个值都可能得到一半的数据(惯用的百分比界线是"30%")MySQL -查询优化器,会忽略索引,进行全表扫描
-
索引失效
--
-
Count 计算
-遍历索引,优先遍历 key_len -最小的二级索引,只有当没有二级索引的时候,才会采用主键索引来进行统计。
-事务
-事务是由存储引擎实现的,InnoDB 支持事务
-特性
--
-
并行事务会引发的问题
--
-
隔离级别
-隔离级别(是否会出现xx问题) | -脏读 | -不可重复读 | -幻读 | -
---|---|---|---|
READ-UNCOMMITTED 读未提交 | -√ | -√ | -√ | -
READ-COMMITTED 读已提交 | -× | -√ | -√ | -
REPEATABLE-READ 可重复读 | -× | -× | -√ | -
SERIALIZABLE 可串行化 | -× | -× | -× | -
-
-
虽然 InnoDB 默认采用可重复读隔离级别,但基本不会出现幻读,因为其采用 -next-key lock(记录锁+间隙锁)和 MVCC 来避免幻读的发生
--
-
MVCC 多版本并发控制
-InnoDB 事务是通过 Read View 和 -聚簇索引中的两个隐藏列 实现 MVCC 的
-Read View 字段
- -聚簇索引中的两个隐藏列
--
-
MVCC 如何实现可重复读?
-事务 A 读某字段时,会先读取该字段的 trx_id,如果 Read View 中记录的该 -trx_id 是活跃事务,则沿着 roll_pointer(即 undo -log 版本链)寻找旧版本字段;如果 Read View 中记录的该 trx_id -是当前事务 或 -已提交事务,则返回该记录。【注意,Read View -字段不随活跃事务的提交而改变,它是该事务开启时的数据库事务状态快照】
-可重复读下发生幻读
--
-
如何避免?
-若事务中会对数据采取 当前读,则在事务刚开始时就执行,通过 next-key -lock 避免其他事物再插入数据。
-锁
---MySQL 加锁时,先 生成锁结构,然后 -设置锁的状态,即初始化锁再竞争锁;如果锁状态是等待状态,并不是意味着事务成功获取到了锁,只有当锁状态为正常状态时,才代表事务成功获取到了锁;
-
锁的种类
--
-
行级锁实现
---行级锁时 Innodb 实现高效事务的关键
-
加锁是加在索引上的【加行级锁时还要加表锁:X 类型的意向锁】
--
-
二级索引加锁后,还要在查询到的记录的主键索引项加记录锁
-Insert 语句,加行级锁
--
-
临键锁退化成记录锁或间隙锁的情况
-唯一索引查询
--
-
非唯一索引查询
--
-
死锁
--
-
插入意向锁是对不同事务才产生作用的,对于本身事务的间隙锁是兼容的。
-解决方法
--
-
日志
---目前,很多数据库采用的是 steal(没提交的事务写的脏页也可以马上落盘)+ -no force(已提交的事务可以不马上落盘)模式。MySQL 也参考了这个模式,undo -log 变更持久性和数据一样,由 redo log 保证,对 undo log -还没落盘的修改也会写入 redo log。这样不管怎么样基于 undo log -做事务回滚或者做 MVCC都可以保证原子和一致性。
-
-
-
回滚日志与重做日志的区别
--
-
重做日志和归档日志的区别
--
-
回滚日志 Undo log
--
-
持久化方法:开启事务后,InnoDB 层更新记录前,首先要记录相应的 undo -log,如果是更新操作,需要把被更新的列的旧值记下来,也就是要生成一条 undo -log,undo log 会写入 Buffer Pool 中的 Undo 页面,对 undo -页的修改也都会记录到 redo log。redo log -会每秒刷盘,提交事务时也会刷盘,数据页和 undo -页都是靠这个机制保证持久化的。
-重做日志 Redo log
---防止 Buffer Pool 中的脏页丢失
-
-
-
WAL(Write-Ahead Logging):MySQL -的写操作并不是立刻写到磁盘上,而是先写 redo log -日志,然后在合适的时间再将脏页写到磁盘上。
-redo log -是物理日志,记录了某个数据页做了什么修改,即所有未还没持久化的脏页修改。在事务提交时,只要先将 -redo log 持久化到磁盘即可,可以不需要等到将缓存在 Buffer Pool -里的脏页数据持久化到磁盘。当系统崩溃时,虽然脏页数据没有持久化,但是 -redo log 已经持久化,接着 MySQL 重启后,可以根据 redo log -的内容,将所有数据恢复到最新的状态。
-redo log 持久化操作:每当产生一条 redo log -时,会先写入到 redo log buffer,为了在 MySQL -处理大事务时尽可能少写入磁盘,进而提升写 IO 性能。redo log -buffer 写入磁盘的时机:
--
-
重做日志文件组
-redo log 是为了防止 Buffer Pool -中的脏页丢失而设计的,只记录未被刷入磁盘的数据的物理日志。随着系统运行,Buffer -Pool 的脏页刷新到了磁盘中,redo log -对应的记录也就没用了,这时候我们需要擦除这些旧记录,以腾出空间记录新的更新操作。重做日志文件组由有 -2 个 redo log -文件组成,以循环写的方式工作,从头开始写,写到末尾就又回到开头,相当于一个环形。
- - --
-
将 Buffer Pool 中的脏页刷新到磁盘中,然后标记 redo log -哪些记录可以被擦除,接着对旧的 redo log -记录进行擦除,等擦除完旧记录腾出了空间,checkpoint -就会往后移动(图中顺时针)。一次 checkpoint -的过程就是脏页刷新到磁盘中变成干净页,然后标记 redo log -哪些记录可以被覆盖的过程。
-归档日志 Bin log
-记录 MySQL 上的所有变化并以二进制形式保存在磁盘上。MySQL -在完成数据库表结构变更或表数据修改(增删改)时,Server -层会生成一条 -binlog,等之后事务提交的时候,会将该事物执行过程中产生的所有 binlog -统一写入 binlog 文件。
--
-
主从复制
- - --
-
主从复制模型
--
-
binlog 刷盘
- - --
-
MySQL 提供一个 sync_binlog 参数来控制数据库的 binlog -刷到磁盘上的频率:
--
-
两阶段提交
-binlog 主从复制和 redo log -崩溃恢复需要保持一致,不然会出现主从数据不一致、备份数据与真实数据不一致等问题。MySQL -采用两阶段提交来避免两份日志之间的逻辑不一致,两阶段提交是一种分布式事务一致性协议。
-两阶段提交:把单个事务的提交拆分成了 2 -个阶段,分别是准备阶段和提交阶段(不是 commit -语句),每个阶段都由协调者和参与者共同完成。
-内部 XA 事务
- - -为了保证这两个日志的一致性,MySQL 使用了内部 XA 事务。内部 XA 事务由 -binlog 作为协调者,存储引擎是参与者,可以实现跨数据库事务。将 redo log -的写入拆成了两个状态:prepare 和 -commit,中间再穿插写入binlog。
--
-
对于处于 prepare 阶段的 redo -log,即可以提交事务,也可以回滚事务,这取决于是否能在 binlog 中查找到与 -redo log 相同的 XID,以 binlog 写成功为事务提交成功的标识。
-组提交
-采用组提交策略,减少 redolog 和 binlog -两次刷盘导致的 I/O -次数高和锁竞争激烈的问题。
---多事务场景下,两阶段提交会导致锁竞争激烈,因为为保证两个日志保存的数据库状态一致,需要加锁操作保证两阶段提交的原子性。
-
binlog 组提交机制:当有多个事务提交的时候,会将多个 -binlog 刷盘操作合并成一个,从而减少磁盘 I/O 的次数。prepare -阶段不变,只针对 commit 阶段,将 commit 阶段拆分为三个阶段:
--
-
每个阶段都有一个队列,锁就只针对每个队列进行保护,不再锁住提交事务的整个过程。减小了锁粒度,这样就使得多个阶段可以并发执行,从而提升效率。
-总结模拟一次更新流程
--
-
脏页刷盘的时机
--
-
内存
-Buffer Pool 缓存的内容包括:索引页、数据页、Undo
-页、插入缓存页、自适应哈希索引、锁信息等。innodb_buffer_pool_size
-默认 128MB。
为了管理这些在 Buffer Pool 中的缓存页,InnoDB -为每一个缓存页都创建了一个控制块,控制块信息包括:缓存页的表空间、页号、缓存页地址、链表节点等等。用三种链表管理不同状态的缓存块:
--
-
Free 链表:使用链表结构,快速找到空闲的缓存页;
-每当需要从磁盘中加载一个页到 Buffer Pool 中时,就从 -Free链表中取一个空闲的缓存页,并且把该缓存页对应的控制块的信息填上,然后把该缓存页对应的控制块从 -Free 链表中移除
- - -Flush 链表:使用链表结构,快速找到脏页;(结构类似于 -Free 链表)
-脏页落盘时,后台线程遍历 Flush 链表
-提高缓存命中率
-Buffer Pool 有三种页和链表用来管理数据
- - --
-
普通的LRU 算法会出现以下两个问题
--
-
解决办法
--
-
优化
-磁盘IO、索引、数据分页(查询大量数据)、锁竞争、内存使用下·
- -应用数据转换到传输块的过程:
- - + +访问网站的过程
- - + +虚拟内存
只会访问虚拟内存地址,在操作总线前,通过一个地址转换硬件将虚拟内存地址转换为物理内存地址进程隔离:将虚拟内存映射到物理内存,进程之间的地址空间相互隔离,互不干扰
虚拟内存空间:
- - + +用户态虚拟内存空间是相互隔离相互独立的;内核虚拟内存空间是各个进程共享的;
进程管理
数据结构 PCB
@@ -345,8 +345,8 @@I/O 多路复用
闻
- - -Yesterday is history, tomorrow is a mystery but today is a gift.
-- Redis -
- -Redis 的特性:单线程、原子性、基于内存、优化数据结构、I/O -多路复用的非关系型数据库;
-6.0 版本前网络 I/O 和命令处理都是单线程,6.0 版本后网络 I/O -改用多个线程处理
--
-
数据结构
-5 -种基础数据类型:String(字符串)、List(列表)、Set(集合)、Hash(散列)、Zset(有序集合) -3 种特殊数据类型:HyperLogLog(基数统计)、Bitmap (位图)、Geospatial -(地理位置)
-持久化
-保证即使在服务器重启的情况下也不会丢失数据(或少量损失)
-AOF 日志
-将每条执行成功的写操作命令追加到日志文件中,持久化代码命令在主进程上执行
-写回策略(防止AOF日志在持久化过程中丢失):
- - -重写机制(防止AOF日志文件过大):
--
-
RDB 快照
-某一时刻内存数据的快照(二进制数据),恢复时直接读入内存即可
-执行 bgsave 时,想要修改数据,需采用写时复制(Copy-On-Write, -COW),以减少性能损耗
-混合持久化
-在AOF日志重写过程中,将新的含有 RDB 格式和 AOF 格式的 AOF -文件替换旧的的 AOF 文件,前半部分是 RDB 格式的全量数据,后半部分是 AOF -格式的增量数据,即重写缓冲区数据。
-策略
-过期删除策略
-惰性删除+定期删除
-内存淘汰策略
-仅淘汰过期数据:random、ttl、lru、lfu
-淘汰所有数据:lru、lfu
-高可用
-主从复制
-模式一:全量复制【多用于初始化】
- --
-
为了避免过多的从服务器和主服务器进行数据同步(全量复制),可以把一部分从服务器升级成分发节点,利用从节点分担读取操作的压力
-模式二:基于长连接的命令传播【多用于保持同步】
-主从服务器在完成第一次同步后,双方之间就会维护一个 TCP -连接,保证第一次同步后的主从服务器的数据一致性。
-模式三:连接恢复时可以采用增量复制:repl_backlog_buffer -环形缓冲区保存了最近传播的写命令,若其中存着从服务器请求的 -offset,就采用增量复制;否则采用全量复制。若想降低主从服务器断开后全量同步的概率,需要增大 -repl_backlog_buffer
-QA
-如何应对异步复制导致的主从数据不一致?
-外部程序来监控主从节点间的复制进度
-主从切换如何减少数据丢失?
--
-
集群脑裂导致数据丢失
-主节点必须要有至少 min-slaves-to-write
-个从节点连接,主从数据复制和同步的延迟不能超过
-min-slaves-max-lag
-秒。否则原主节点就会被限制接收客户端写请求,客户端也就不能在原主节点中写入新数据,等到新的主节点上线一切恢复正常。
哨兵机制
---自动完成故障发现和故障转移,并通知给应用方,从而实现高可用性
-
哨兵之间建立连接
- - -哨兵与从节点建立连接
- - -第一轮投票:判断主节点下线
-主观下线:主节点或者从节点没有在规定的时间内响应哨兵的 PING 命令
-客观下线:一个哨兵判断主节点为「主观下线」后,就会向其他哨兵发起命令,通过多个哨兵节点一起判断主节点是否下线。哨兵的赞同票数达到哨兵配置文件中的 -quorum 配置项设定的值则判断主节点客观下线
-第二轮投票:选出哨兵 leader
--
-
由哨兵 leader -进行主从故障转移
--
-
集群
- --
-
集群数据分布策略
-Hash 槽
--
-
一致性Hash
-虚拟节点
-缓存
-缓存雪崩、击穿、穿透
-缓存穿透:大量请求了缓存和数据库里都没有的数据,请求穿透缓存和数据库
--
-
缓存击穿:瞬间大量请求未缓存的数据库数据,请求击穿缓存直接打到数据库上
--
-
缓存雪崩:缓存在同一时间大面积的失效,导致大量的请求都直接落到了数据库上
--
-
如何保证数据库和缓存一致性
---采用 Cache Aside -旁路缓存策略:以数据库中的数据为准,缓存中的数据是按需加载的;缺点:数据写入频繁时,缓存中的数据会被频繁的清理,降低缓存命中率;
-
更新数据库+删除缓存:延迟双删
-更新数据库+更新缓存:分布式锁
-更新数据库+不更新缓存:较短的缓存有效期
-删除缓存的时候失败了怎么办?
-采用异步删除:
--
-
缓存预热
-提高访问速度,平滑流量峰值,减少后端压力,保证数据的时效性
-Redis 缓存预热的方法:系统启动时加载;定时任务加载;
-实战
-分布式锁
---Redis + Lua -脚本,可以以原子性的方式执行一组命令,可用于保证锁释放操作的原子性(Lua -脚本在处理的过程中不会被任意其它请求打断),但无法用于事务执行失败的回滚。Redisson -采用的就是这种方法保证分布式锁的原子性。
-
SET 命令的 NX 参数可以实现:key -不存在才插入,可以用于实现分布式锁
-优点:性能高效、实现方便、分布式高可用
-缺点:不好设置超时时间(解决方法:守护线程定期续约)、主从异步复制可能导致不可靠性(解决方法如下)
-提高可靠性(Redlock 算法):客户端和多个独立的 Redis -节点依次请求申请加锁,如果客户端能够和半数以上的节点成功地完成加锁操作,那么就认为,客户端成功地获得分布式锁,否则加锁失败,所有的 -redis 实例都会进行解锁;
--
-
@Resource |
延迟队列
-有序集合 Zset;score 存储延迟执行的时间
-大 Key 问题
-会导致的问题
--
-
解决办法
--
-
发布者/订阅者
--- - - -订阅命令:subscribe channel [channel ... ]
-
事务回滚
-Redis 不支持回滚,事务没有原子性(要么全部成功要么全部失败)
-管道
-批处理技术,可以一次处理多个 Redis -命令,减少多个命令执行时的网络等待
- -闻
- - -Yesterday is history, tomorrow is a mystery but today is a gift.
-- Rpc 中间件 -
- -分布式系统的 CAP 理论
--
-
分布式保证服务高并发稳定性
--
-
Nacos 配置中心 注册中心
-RPC 框架
---泛指调用远程的函数的方法,对编解码和网络层有特殊的优化,从而有更高的效率。
-
RPC 框架主要由 Server、Client、Server Stub、Client Stub 组件组成
--
-
层次结构:代理曾、注册中心层(服务发现、注册、管理)、
-RPC 协议定制化程度高,可以采用体积更小的 Protobuf -或其他序列化协议去保存结构体数据,同时也不需要像 HTTP -那样考虑各种浏览器行为,如 302 -重定向跳转。因此性能也会更好一些。其底层不仅可以通过 tcp udp -实现,也可以通过 http 实现。
-RPC -协议会建个连接池,在请求量大的时候,建立多条连接放在池内,要发数据的时候就从池里取一条连接出来,用完放回去,下次再复用,可以说非常环保。
-目前,对外一般用 HTTP 协议,而内部集群的微服务之间则采用 RPC -协议进行通讯。
-Dubbo 上线问题
-记录、学习、汇总实习和技术博客中看到的 Dubbo 实战遇到的问题
-服务端接口不指定通讯协议导致 -OOM
-问题背景:
-问题描述:
--
-
解决方法(针对框架,开发人员需要牢记 Dubbo 配置必须在接口上):
--
-
销毁方法
--
-
父子线程并发 RPC 调用死锁
-问题描述:
--
-
public static ExecutorService newFixedThreadPool(int nThreads) { |
-
-
Future<String> future = executor.submit(()->{ |
-
-
解决办法
--
-
尝试开发基础版 Rpc 中间件
-服务发现流程:使用远程服务的时候首先需要配置一个
-dubbo.xml
-文件或者在使用的类加上@Reference
,二者都是用来对dubbo消费者引用服务进行一些配置,然后应用在启动的时候会将配置信息转化为一个ReferenceBean
对象,并调用createProxy
方法创建一个远程服务接口的代理对象。
代理对象的 invoke
-创建:启动时主动订阅注册中心,会显示地调用一次notify
接口,这个接口会尝试将远程服务注册的url
转换成一个本地的invoker
。
-
-
服务注册地址发生改变时:会通知给消费者,dubbo -协议里面明确讲到服务发生改变会全量更新所有客户端的缓存
-Netty 数据传输
---在网络通信中,序列化和编码通常是结合使用的。序列化将对象转换为字节流,编码将字节流转换为网络传输所需的格式(如按照协议规定的格式进行编码)。在接收端,解码将网络传输的数据解析为原始的格式(如解码成对象),以便进行进一步的处理和使用。
-
Netty 是一个高性能事件驱动型非阻塞 IO 框架:
--
-
编码:先序列化,再压缩,最后写进 ByteBuf 对象中
-解码:从 ByteBuf 对象中读,然后转成我们需要的对象
-代理模式
-静态代理
---静态代理中,我们对目标对象的每个方法的增强都是手动完成的(后面会具体演示代码),非常不灵活(比如接口一旦新增加方法,目标对象和代理对象都要进行修改)且麻烦(需要对每个目标类都单独写一个代理类)。 -实际应用场景非常非常少,日常开发几乎看不到使用静态代理的场景。
-
从 JVM 层面来说, -静态代理在编译时就将接口、实现类、代理类这些都变成了一个个实际的 class -文件。
-静态代理的步骤
--
-
JDK 动态代理
--
-
public interface InvocationHandler { |
那么是如何调用服务端实现类的代码的呢?注入
--
-
Object clientProxy = rpcClientProxy.getProxy(declaredField.getType()); |
传输协议
-* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
注册中心
-服务注册:在 zk 里面创建一个对应的持久节点
-当我们的服务被注册进 zookeeper
-的时候,我们将完整的服务名称 rpcServiceName (class
-name+group+version)作为根节点
-,子节点是对应的服务地址(ip+端口号)。相关代码在
-ZkServiceProviderImpl.publishService()
中。
如果我们要获得某个服务对应的地址的话,就直接根据完整的服务名称来获取到其下的所有子节点,然后通过具体的负载均衡策略取出一个就可以了。相关代码在
-ZkServiceDiscoveryImpl.lookupService()
中。
Zookeeper 客户端
---Curator 是 Netflix -公司开源的一套zookeeper客户端框架,解决了很多Zookeeper客户端非常底层的细节开发工作,包括连接重连、反复注册Watcher和NodeExistsException异常等等。项目内采用 -CuratorUtils 类调用 Curator。
-
重试策略:ExponentialBackoffRetry是指数退避重试策略
-// zk的对外接口,后面我们要干什么只需要通过单例模式获得这个类,然后用这个类的方法 |
负载均衡
-随机选取策略 轮询策略 加权轮询策略 最少活跃连接策略 一致性 Hash -策略
-序列化
--
-
数据传输过程中,可能会出现粘包和半包问题,你是如何解决的?
-自定义消息结构(其他的还有固定长度传输、特殊字符分割):MagicNumber -魔数、ContentLength 请求长度
- -闻
- - -Yesterday is history, tomorrow is a mystery but today is a gift.
-- Spring -
- -SpringCore 主要提供 IoC 依赖注入功能的支持 SpringMVC 快速构建 MVC -架构的 Web 程序 SpringBoot 简化 Spring 开发,减少配置文件,开箱即用
-IOC 控制反转
---当一个对象创建时,它所依赖的对象由外部传递给它,而非自己去创建所依赖的对象(比如通过new操作)。因此,也可以说在对象如何获取它的依赖对象这件事情上,控制权反转了。这便不难理解控制反转和依赖注入这两个名字的由来了。
-
将对象之间的相互依赖关系交给 IoC 容器来管理,并由 IoC -容器完成对象的注入 Bean 工厂模式
--
-
AOP 面向切面编程
-将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性。 -实现方式:基于动态代理,有接口用 jdk 原生的代理方法,没借口用 CGLib -
-Bean 生命周期
--- -自动装配:@Component;@Service;@Controller;@Configure + @Bean
-
xxx.class --> 默认无参构造方法 --> 普通对象 --> -依赖注入(属性赋值) --> 初始化前 --> 初始化 --> 初始化后 ---> 代理对象 --> 得到Bean(源码) -实例化 Bean -对象:默认调用无参构造器;若使用有参构造器,参数必须是容器中有的Bean【按参数查找 -Bean 时,先按照 classname 后按照参数名】 初始化前中后:BeanPostProcessor -的 postProcessAfterInitialization() --> @PostConstruct 注解 --> -InitializingBean 的 afterPropertiesSet() 方法 --> BeanPostProcessor -的 postProcessAfterInitialization()(实现了 AOP 代理)
--
-
底层实现
--
-
-
-
-
TODO Spring 启动流程 Springboot 和 Spring 最大的区别就是不需要 xml -配置 Springboot 自动配置
--
-
logback是 slf4j 的官方实现,log4j 是另一个实现,logback 和 log4j -才是二选一,slf4j 是门面日志的 api。
-TODO https://www.cnblogs.com/tuyang1129/p/12861617.html -https://www.cnblogs.com/tuyang1129/p/12866484.html
-Spring 事务
-Spring 的声明式事务信息是存在 ThreadLocal -中的,所以一个线程永远只能有一个事务,所以 Spring -的事务是无法实现事务一致性(同时提交、同时回滚)的
-解决方法:可以通过编程式事务,或者通过分布式事务的思路:二阶段提交方式
-如何解决循环依赖
- --
-
-- -循环依赖的情况下,不管使用三级缓存还是两级缓存,代理类逻辑都必须提前曝光
-
@@ -233,47 +233,50 @@
更新于
-
+
NLP -任务:情感分析、文本生成、命名体识别、阅读理解、掩码填充、文本摘要、机器翻译、特征提取、对话机器人
-万物之始 Transformer Attention is all you need
- - --
-
Transformers及相关库
-Transformers:核心库,模型加载、模型训练、流水线并行等
-Tokenizer:分词器,对数据进行预处理,文本到token序列的互相转换。具体工作包括:分词、索引、填充截断、attention_mask、token_type
-Datasets:数据集库,提供了数据集的加载、处理等方法
-Evaluate:评估函数,提供各种评价指标的计算函数
-Trainer:将模型训练流程打包,包括:创建优化器、创建DataLoader、tensor转移到CUDA上
-PEFT:高效微调模型的库,提供了几种高效微调的方法,小参数量动大模型
-Accelerate:分布式训练,提供了分布式训练解决方案,包括大模型的加载与推理解决方案
-Optimum:优化加速库,支持多种后端,如Onnxruntime、OpenVino等
-Gradio:可视化部署库,几行代码快速实现基于Web交互的算法演示系统
-NLP
-NLP -数据集大多是未标注的文档,因此采用自监督学习的方式训练模型,如预测下一个词 -LM、完形填空 MLM。
-早些年,流行的是词嵌入 Word -Embedding,目标是采用向量的形式表示词元,采用一组向量表示一段话,可以用于计算词/句子相似度。
-现阶段,Transformer -的出现促使三种类型的模型的出现:Encoder-only-only-Decoder。Encoder-only -适用于机器翻译、句子分类、命名体识别和问答;Decoder-only -适用于文本预测;Encoder-Decoder 适用于文本压缩。
+NLP +任务:情感分析、文本生成、命名体识别、阅读理解、掩码填充、文本摘要、机器翻译、特征提取、对话机器人
+万物之始 Transformer Attention is all you need
+ + +-
+
Transformers及相关库
+Transformers:核心库,模型加载、模型训练、流水线并行等
+Tokenizer:分词器,对数据进行预处理,文本到token序列的互相转换。具体工作包括:分词、索引、填充截断、attention_mask、token_type
+Datasets:数据集库,提供了数据集的加载、处理等方法
+Evaluate:评估函数,提供各种评价指标的计算函数
+Trainer:将模型训练流程打包,包括:创建优化器、创建DataLoader、tensor转移到CUDA上
+PEFT:高效微调模型的库,提供了几种高效微调的方法,小参数量动大模型
+Accelerate:分布式训练,提供了分布式训练解决方案,包括大模型的加载与推理解决方案
+Optimum:优化加速库,支持多种后端,如Onnxruntime、OpenVino等
+Gradio:可视化部署库,几行代码快速实现基于Web交互的算法演示系统
+分布式训练
+Accelerate 包,融合了 Deepspeed、DDP、FSDP;
+NLP
+NLP +数据集大多是未标注的文档,因此采用自监督学习的方式训练模型,如预测下一个词 +LM、完形填空 MLM。
+早些年,流行的是词嵌入 Word +Embedding,目标是采用向量的形式表示词元,采用一组向量表示一段话,可以用于计算词/句子相似度。
+现阶段,Transformer +的出现促使三种类型的模型的出现:Encoder-only-only-Decoder。Encoder-only +适用于机器翻译、句子分类、命名体识别和问答;Decoder-only +适用于文本预测;Encoder-Decoder 适用于文本压缩。
NLP
闻
@@ -191,7 +191,7 @@闻
闻
@@ -191,7 +191,7 @@闻
闻
@@ -191,7 +191,7 @@闻
闻
@@ -191,7 +191,7 @@闻
闻
@@ -191,7 +191,7 @@闻
闻
@@ -191,7 +191,7 @@闻
闻
-闻
@@ -191,7 +191,7 @@闻
闻
2024闻
-闻
-闻
-闻
@@ -191,7 +191,7 @@闻
闻
-闻
@@ -191,7 +191,7 @@闻
闻
闻
@@ -191,7 +191,7 @@闻
闻
2024闻
@@ -191,7 +191,7 @@闻
闻
闻
闻
闻
@@ -191,7 +191,7 @@闻
闻
闻
闻
闻
-闻
闻
闻
闻
闻
@@ -191,7 +191,7 @@闻
闻
2024闻
@@ -191,7 +191,7 @@闻
闻
闻
闻
-闻
-闻
闻
闻
闻
闻
@@ -191,7 +191,7 @@闻
闻
2024Java基础
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Java 并发锁
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Java 并发基础
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- JVM 虚拟机
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Java 语言
-
-
-
-
-
-
-
categories
- 目前共计 12 个分类
+ 目前共计 11 个分类
diff --git a/tags/Spring/index.html b/categories/paper/index.html
similarity index 92%
rename from tags/Spring/index.html
rename to categories/paper/index.html
index 47e155e..733a113 100644
--- a/tags/Spring/index.html
+++ b/categories/paper/index.html
@@ -22,7 +22,7 @@
-
+
@@ -30,14 +30,14 @@
-
+
-
+
-标签: Spring | 闻
+分类: paper | 闻
@@ -149,18 +149,18 @@
@@ -181,7 +181,7 @@
-
+
@@ -190,8 +190,8 @@
- Spring
- 标签
+ paper
+ 分类
@@ -204,15 +204,15 @@ Spring
diff --git "a/categories/\345\205\253\350\202\241\346\226\207/index.html" "b/categories/\345\205\253\350\202\241\346\226\207/index.html"
index 975aca2..0e49e9a 100644
--- "a/categories/\345\205\253\350\202\241\346\226\207/index.html"
+++ "b/categories/\345\205\253\350\202\241\346\226\207/index.html"
@@ -149,18 +149,18 @@
diff --git "a/categories/\345\267\245\344\275\234/index.html" "b/categories/\345\267\245\344\275\234/index.html"
index 85b3535..1399c07 100644
--- "a/categories/\345\267\245\344\275\234/index.html"
+++ "b/categories/\345\267\245\344\275\234/index.html"
@@ -149,18 +149,18 @@
diff --git "a/categories/\345\267\245\344\275\234/\346\200\235\350\200\203/index.html" "b/categories/\345\267\245\344\275\234/\346\200\235\350\200\203/index.html"
index 5627b7a..d9dd295 100644
--- "a/categories/\345\267\245\344\275\234/\346\200\235\350\200\203/index.html"
+++ "b/categories/\345\267\245\344\275\234/\346\200\235\350\200\203/index.html"
@@ -149,18 +149,18 @@
diff --git "a/categories/\345\274\200\345\217\221\345\267\245\345\205\267/index.html" "b/categories/\345\274\200\345\217\221\345\267\245\345\205\267/index.html"
index d003ed9..2b8df20 100644
--- "a/categories/\345\274\200\345\217\221\345\267\245\345\205\267/index.html"
+++ "b/categories/\345\274\200\345\217\221\345\267\245\345\205\267/index.html"
@@ -149,18 +149,18 @@
@@ -200,6 +200,26 @@ 开发工具
2024
+
+
+
+
+
+
+
+
+ Linux-Tool
+
+
+
+
+
+
+
@@ -211,7 +231,7 @@ 开发工具
diff --git "a/categories/\346\200\235\350\200\203/index.html" "b/categories/\346\200\235\350\200\203/index.html"
index b8a4227..c802f3c 100644
--- "a/categories/\346\200\235\350\200\203/index.html"
+++ "b/categories/\346\200\235\350\200\203/index.html"
@@ -149,18 +149,18 @@
diff --git "a/categories/\346\225\260\346\215\256\345\272\223/index.html" "b/categories/\346\225\260\346\215\256\345\272\223/index.html"
deleted file mode 100644
index 210c02d..0000000
--- "a/categories/\346\225\260\346\215\256\345\272\223/index.html"
+++ /dev/null
@@ -1,307 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-分类: 数据库 | 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 闻
-
-
- Yesterday is history, tomorrow is a mystery but today is a gift.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0%
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git "a/categories/\347\247\221\347\240\224/index.html" "b/categories/\347\247\221\347\240\224/index.html"
index 270149e..ed285c0 100644
--- "a/categories/\347\247\221\347\240\224/index.html"
+++ "b/categories/\347\247\221\347\240\224/index.html"
@@ -149,18 +149,18 @@
diff --git "a/categories/\347\256\227\346\263\225/index.html" "b/categories/\347\256\227\346\263\225/index.html"
index 5337f0e..b429489 100644
--- "a/categories/\347\256\227\346\263\225/index.html"
+++ "b/categories/\347\256\227\346\263\225/index.html"
@@ -149,18 +149,18 @@
diff --git a/index.html b/index.html
index 5f8440c..4658d71 100644
--- a/index.html
+++ b/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- LLM-Finetune
+ Linux-Tool
@@ -219,15 +219,18 @@
发表于
+
-
+
-
+
- 更新于
-
+ 分类于
+
+ 开发工具
+
@@ -240,10 +243,10 @@
- 大模型微调具体实现方法,包括数据预处理、数据加载、微调模型构建、模型训练、加速训练方法、保存微调结果、加载 Adapter、推理测评、可交互 Cli等
+ Linux高效工具的使用方法
@@ -274,7 +277,7 @@
-
+
@@ -292,7 +295,7 @@
- Transformers 使用入门
+ [paper]PAFT
@@ -303,14 +306,23 @@
发表于
-
+
更新于
-
+
+
+
+
+
+
+ 分类于
+
+ paper
+
@@ -323,36 +335,15 @@
- NLP
-任务:情感分析、文本生成、命名体识别、阅读理解、掩码填充、文本摘要、机器翻译、特征提取、对话机器人
-万物之始 Transformer Attention is all you need
-
-
-
-
-Transformers及相关库
-Transformers:核心库,模型加载、模型训练、流水线并行等
-Tokenizer:分词器,对数据进行预处理,文本到token序列的互相转换。具体工作包括:分词、索引、填充截断、attention_mask、token_type
-Datasets:数据集库,提供了数据集的加载、处理等方法
-Evaluate:评估函数,提供各种评价指标的计算函数
-Trainer:将模型训练流程打包,包括:创建优化器、创建DataLoader、tensor转移到CUDA上
-PEFT:高效微调模型的库,提供了几种高效微调的方法,小参数量动大模型
-Accelerate:分布式训练,提供了分布式训练解决方案,包括大模型的加载与推理解决方案
-Optimum:优化加速库,支持多种后端,如Onnxruntime、OpenVino等
-Gradio:可视化部署库,几行代码快速实现基于Web交互的算法演示系统
-NLP
-NLP
-数据集大多是未标注的文档,因此采用自监督学习的方式训练模型,如预测下一个词
-LM、完形填空 MLM。
-早些年,流行的是词嵌入 Word
-Embedding,目标是采用向量的形式表示词元,采用一组向量表示一段话,可以用于计算词/句子相似度。
-现阶段,Transformer
-的出现促使三种类型的模型的出现:Encoder-only-only-Decoder。Encoder-only
-适用于机器翻译、句子分类、命名体识别和问答;Decoder-only
-适用于文本预测;Encoder-Decoder 适用于文本压缩。
-
+ RAFT:Adapting Language Model to Domain Specific RAG 提出了检索增强微调(Retrieval Augmented Fine Tuning)方法,微调模型使其学习“如何忽略任何检索到的、无助于回答给定问题的文档,且不产生幻觉”,使 LLM 具有特定于域的 RAG 功能
+
+
+
+ 阅读全文 »
+
+
+
+
@@ -378,7 +369,7 @@ NLP
-
+
@@ -396,7 +387,7 @@ NLP
- 大模型微调方法
+ LLM
@@ -406,24 +397,9 @@
发表于
+
-
-
-
-
-
-
- 更新于
-
-
-
-
-
-
- 分类于
-
- LLM微调
-
+
@@ -436,15 +412,14 @@
- 微调的理论基础,总结了至今为止较优的参数高效微调(Parameter-Efficient Fine-Tuning)的方法和低精度微调量化
-
-
-
- 阅读全文 »
-
-
-
-
+
+大模型核心技术点在于训练资源、数据清洗和数据配比等,其难点或许不在于模型训练和模型结构搭建
+
+前缀语言模型 Encoder-Decoder
+ChatGLM
+掩码语言模型 自编码模型 Encoder-Only
+因果语言模型 自回归模型 Decoder-Only
+
@@ -470,7 +445,7 @@
-
+
@@ -488,7 +463,7 @@
- 实习日志
+ LLM-RLHF
@@ -498,24 +473,9 @@
发表于
+
-
-
-
-
-
-
- 更新于
-
-
-
-
-
-
- 分类于
-
- 工作
-
+
@@ -528,10 +488,10 @@
- 写周报给自己看!哈哈哈
+ LLM人工对齐算法
@@ -562,7 +522,7 @@
-
+
@@ -580,7 +540,7 @@
- 如何工作
+ Transformers 使用入门
@@ -590,22 +550,15 @@
发表于
-
-
+
-
+
- 分类于
-
- 工作
-
- ,
-
- 思考
-
+ 更新于
+
@@ -618,10 +571,10 @@
- 工作与学习不同,不只是“唯分数论”,更要妥善处理人际关系、高效沟通等等。这并不是什么高大上的真理,而是和吃饭喝水一样普通的事情。
+ Transformers & NLP 相关库及实现
@@ -652,7 +605,7 @@
-
+
@@ -670,7 +623,7 @@
- 机器学习基础
+ 大模型微调方法
@@ -681,14 +634,23 @@
发表于
-
+
更新于
-
+
+
+
+
+
+
+ 分类于
+
+ LLM微调
+
@@ -701,10 +663,10 @@
- 机器学习是采用真实世界中采样的一小部分数据,并且希望模型能够对于未知数据有不错的泛化性能。
+ 微调的理论基础,总结了至今为止较优的参数高效微调(Parameter-Efficient Fine-Tuning)的方法和低精度微调量化
@@ -735,7 +697,7 @@
-
+
@@ -753,7 +715,7 @@
- Docker
+ 实习日志
@@ -764,14 +726,14 @@
发表于
-
+
更新于
-
+
@@ -779,7 +741,7 @@
分类于
- 开发工具
+ 工作
@@ -793,10 +755,10 @@
- 容器虚拟化技术,后续进一步学习 k8s
+ 写周报给自己看!哈哈哈
@@ -827,7 +789,7 @@
-
+
@@ -845,7 +807,7 @@
- 设计模式
+ 如何工作
@@ -855,15 +817,9 @@
发表于
+
-
-
-
-
-
-
- 更新于
-
+
@@ -871,7 +827,11 @@
分类于
- Java基础
+ 工作
+
+ ,
+
+ 思考
@@ -885,10 +845,10 @@
- 设计模式与其具体实现
+ 工作与学习不同,不只是“唯分数论”,更要妥善处理人际关系、高效沟通等等。这并不是什么高大上的真理,而是和吃饭喝水一样普通的事情。
@@ -919,7 +879,7 @@
-
+
@@ -937,7 +897,7 @@
- 模拟面试题
+ 机器学习基础
@@ -948,23 +908,14 @@
发表于
-
+
更新于
-
-
-
-
-
-
- 分类于
-
- 工作
-
+
@@ -977,10 +928,10 @@
- 汇总记录面试题,方便复习和面试模拟
+ 机器学习是采用真实世界中采样的一小部分数据,并且希望模型能够对于未知数据有不错的泛化性能。
@@ -1011,7 +962,7 @@
-
+
@@ -1029,7 +980,7 @@
- 操作系统
+ Docker
@@ -1040,14 +991,14 @@
发表于
-
+
更新于
-
+
@@ -1055,7 +1006,7 @@
分类于
- 八股文
+ 开发工具
@@ -1069,10 +1020,10 @@
- 待进一步学习
+ 容器虚拟化技术,待后续进一步学习 k8s
diff --git a/os/index.html b/os/index.html
index 1246028..da50706 100644
--- a/os/index.html
+++ b/os/index.html
@@ -156,18 +156,18 @@
@@ -264,8 +264,8 @@ 虚拟内存
只会访问虚拟内存地址,在操作总线前,通过一个地址转换硬件将虚拟内存地址转换为物理内存地址
进程隔离:将虚拟内存映射到物理内存,进程之间的地址空间相互隔离,互不干扰
虚拟内存空间:
-
-
+
+
用户态虚拟内存空间是相互隔离相互独立的;内核虚拟内存空间是各个进程共享的;
进程管理
数据结构 PCB
@@ -345,8 +345,8 @@ I/O 多路复用
diff --git a/page/2/index.html b/page/2/index.html
index 83089c0..0a32feb 100644
--- a/page/2/index.html
+++ b/page/2/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- Redis
+ 设计模式
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 数据库
+ Java基础
@@ -249,10 +249,10 @@
- Redis 基础
+ 项目架构的设计模式,和Java开发中的具体实现
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- MySQL
+ 模拟面试题
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- 数据库
+ 工作
@@ -341,10 +341,10 @@
- MySQL 基础,包括索引、事务、锁、日志、BufferPool等
+ 汇总记录面试题,方便复习和面试模拟
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 如何保持专注
+ 操作系统
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 思考
+ 八股文
@@ -433,10 +433,10 @@
- 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
+ 待进一步学习
@@ -467,7 +467,7 @@
-
+
@@ -485,7 +485,7 @@
- Java 常用数据结构的底层实现
+ 如何保持专注
@@ -496,14 +496,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +511,7 @@
分类于
- Java基础
+ 思考
@@ -525,10 +525,10 @@
- ArrayList、LinkedList、HashMap、ConcurrentHashMap 的底层源码剖析
+ 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
@@ -687,7 +687,7 @@
更新于
-
+
@@ -743,7 +743,7 @@
-
+
@@ -761,7 +761,7 @@
- ThreadPoolExecutor 和 CompletableFuture 实践
+ 实习面试题汇总
@@ -772,14 +772,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +787,7 @@
分类于
- Java基础
+ 工作
@@ -801,10 +801,10 @@
- 线程池的创建、使用方法,以及如何正确构造有父子关系、先后关系、与或关系的多线程并发场景。
+ 2024 实习投递面试题目汇总
@@ -835,7 +835,7 @@
-
+
@@ -853,7 +853,7 @@
- Rpc 中间件
+ 实习笔试题汇总
@@ -864,14 +864,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +879,7 @@
分类于
- Java开发
+ 工作
@@ -893,10 +893,10 @@
- Rpc 框架搭建过程遇到的问题、Dubbo 使用过程遇到的问题
+ 2024 实习投递笔试题目汇总
@@ -927,7 +927,7 @@
-
+
@@ -945,7 +945,7 @@
- Java 并发锁
+ 计算机网络
@@ -956,14 +956,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +971,7 @@
分类于
- Java基础
+ 八股文
@@ -985,15 +985,10 @@
- Java.util.concurrent 中有很多 Java 并发相关工具,例如 锁
-ReentrantLock
、线程 Callable
-FutureTask
、信号量 Semaphore
、共享锁
-CountDownLatch
-此外 Java 原生的 volatile
和 synchronized
-关键字也是并发编程的关键。
+ 如果我是一串电信号,我要去向何方呢?
@@ -1024,7 +1019,7 @@
-
+
@@ -1042,7 +1037,7 @@
- 实习面试题汇总
+ 数据结构和算法
@@ -1053,14 +1048,14 @@
发表于
-
+
更新于
-
+
@@ -1068,7 +1063,7 @@
分类于
- 工作
+ 算法
@@ -1082,10 +1077,10 @@
- 2024 实习投递面试题目汇总
+ 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
diff --git a/page/3/index.html b/page/3/index.html
index 85715e6..da7cbd9 100644
--- a/page/3/index.html
+++ b/page/3/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- 实习笔试题汇总
+ Git 文档阅读
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 工作
+ 开发工具
@@ -249,10 +249,10 @@
- 2024 实习投递笔试题目汇总
+ Git 文档阅读笔记和常用命令集合
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- Java 并发基础
+ ESConv
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- Java基础
+ 科研
@@ -341,10 +341,10 @@
- JMM、ThreadLocal
+ Title: Towards Emotional Support Dialog Systems
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 计算机网络
+ BlenderBot
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 八股文
+ 科研
@@ -433,10 +433,14 @@
- 如果我是一串电信号,我要去向何方呢?
+ Title: Recipes for building an open-domain
+chatbot
+
+FaceBook 在本文中提出了 BlenderBot 编解码器模型
+
@@ -467,7 +471,7 @@
-
+
@@ -485,7 +489,7 @@
- 数据结构和算法
+ MISC
@@ -496,14 +500,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +515,7 @@
分类于
- 算法
+ 科研
@@ -525,10 +529,12 @@
- 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
+ Title: A MIxed Strategy-Aware Model Integrating
+COMET for Emotional Support Conversation
+
@@ -559,7 +565,7 @@
-
+
@@ -577,7 +583,7 @@
- SpringMVC
+ KEMI
@@ -588,14 +594,14 @@
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
Spring
- 标签
+ paper
+ 分类
Spring
diff --git "a/categories/\345\205\253\350\202\241\346\226\207/index.html" "b/categories/\345\205\253\350\202\241\346\226\207/index.html"
index 975aca2..0e49e9a 100644
--- "a/categories/\345\205\253\350\202\241\346\226\207/index.html"
+++ "b/categories/\345\205\253\350\202\241\346\226\207/index.html"
@@ -149,18 +149,18 @@
diff --git "a/categories/\345\267\245\344\275\234/index.html" "b/categories/\345\267\245\344\275\234/index.html"
index 85b3535..1399c07 100644
--- "a/categories/\345\267\245\344\275\234/index.html"
+++ "b/categories/\345\267\245\344\275\234/index.html"
@@ -149,18 +149,18 @@
diff --git "a/categories/\345\267\245\344\275\234/\346\200\235\350\200\203/index.html" "b/categories/\345\267\245\344\275\234/\346\200\235\350\200\203/index.html"
index 5627b7a..d9dd295 100644
--- "a/categories/\345\267\245\344\275\234/\346\200\235\350\200\203/index.html"
+++ "b/categories/\345\267\245\344\275\234/\346\200\235\350\200\203/index.html"
@@ -149,18 +149,18 @@
diff --git "a/categories/\345\274\200\345\217\221\345\267\245\345\205\267/index.html" "b/categories/\345\274\200\345\217\221\345\267\245\345\205\267/index.html"
index d003ed9..2b8df20 100644
--- "a/categories/\345\274\200\345\217\221\345\267\245\345\205\267/index.html"
+++ "b/categories/\345\274\200\345\217\221\345\267\245\345\205\267/index.html"
@@ -149,18 +149,18 @@
@@ -200,6 +200,26 @@ 开发工具
2024
开发工具 2024
开发工具
闻
- - -Yesterday is history, tomorrow is a mystery but today is a gift.
-闻
@@ -191,7 +191,7 @@闻
闻
- LLM-Finetune + Linux-Tool
发表于
+
-
+
-
+
- 更新于
-
+ 分类于
+
+ 开发工具
+
@@ -240,10 +243,10 @@
- 大模型微调具体实现方法,包括数据预处理、数据加载、微调模型构建、模型训练、加速训练方法、保存微调结果、加载 Adapter、推理测评、可交互 Cli等
+ Linux高效工具的使用方法
@@ -274,7 +277,7 @@
-
+
@@ -292,7 +295,7 @@
- Transformers 使用入门
+ [paper]PAFT
@@ -303,14 +306,23 @@
发表于
-
+
更新于
-
+
+
+
+
+
+
+ 分类于
+
+ paper
+
@@ -323,36 +335,15 @@
- NLP
-任务:情感分析、文本生成、命名体识别、阅读理解、掩码填充、文本摘要、机器翻译、特征提取、对话机器人
-万物之始 Transformer Attention is all you need
-
-
-
-
-Transformers及相关库
-Transformers:核心库,模型加载、模型训练、流水线并行等
-Tokenizer:分词器,对数据进行预处理,文本到token序列的互相转换。具体工作包括:分词、索引、填充截断、attention_mask、token_type
-Datasets:数据集库,提供了数据集的加载、处理等方法
-Evaluate:评估函数,提供各种评价指标的计算函数
-Trainer:将模型训练流程打包,包括:创建优化器、创建DataLoader、tensor转移到CUDA上
-PEFT:高效微调模型的库,提供了几种高效微调的方法,小参数量动大模型
-Accelerate:分布式训练,提供了分布式训练解决方案,包括大模型的加载与推理解决方案
-Optimum:优化加速库,支持多种后端,如Onnxruntime、OpenVino等
-Gradio:可视化部署库,几行代码快速实现基于Web交互的算法演示系统
-NLP
-NLP
-数据集大多是未标注的文档,因此采用自监督学习的方式训练模型,如预测下一个词
-LM、完形填空 MLM。
-早些年,流行的是词嵌入 Word
-Embedding,目标是采用向量的形式表示词元,采用一组向量表示一段话,可以用于计算词/句子相似度。
-现阶段,Transformer
-的出现促使三种类型的模型的出现:Encoder-only-only-Decoder。Encoder-only
-适用于机器翻译、句子分类、命名体识别和问答;Decoder-only
-适用于文本预测;Encoder-Decoder 适用于文本压缩。
-
+ RAFT:Adapting Language Model to Domain Specific RAG 提出了检索增强微调(Retrieval Augmented Fine Tuning)方法,微调模型使其学习“如何忽略任何检索到的、无助于回答给定问题的文档,且不产生幻觉”,使 LLM 具有特定于域的 RAG 功能
+
+
+
+ 阅读全文 »
+
+
+
+
@@ -378,7 +369,7 @@ NLP
-
+
@@ -396,7 +387,7 @@ NLP
- 大模型微调方法
+ LLM
@@ -406,24 +397,9 @@
发表于
+
-
-
-
-
-
-
- 更新于
-
-
-
-
-
-
- 分类于
-
- LLM微调
-
+
@@ -436,15 +412,14 @@
- 微调的理论基础,总结了至今为止较优的参数高效微调(Parameter-Efficient Fine-Tuning)的方法和低精度微调量化
-
-
-
- 阅读全文 »
-
-
-
-
+
+大模型核心技术点在于训练资源、数据清洗和数据配比等,其难点或许不在于模型训练和模型结构搭建
+
+前缀语言模型 Encoder-Decoder
+ChatGLM
+掩码语言模型 自编码模型 Encoder-Only
+因果语言模型 自回归模型 Decoder-Only
+
@@ -470,7 +445,7 @@
-
+
@@ -488,7 +463,7 @@
- 实习日志
+ LLM-RLHF
@@ -498,24 +473,9 @@
发表于
+
-
-
-
-
-
-
- 更新于
-
-
-
-
-
-
- 分类于
-
- 工作
-
+
@@ -528,10 +488,10 @@
- 写周报给自己看!哈哈哈
+ LLM人工对齐算法
@@ -562,7 +522,7 @@
-
+
@@ -580,7 +540,7 @@
- 如何工作
+ Transformers 使用入门
@@ -590,22 +550,15 @@
发表于
-
-
+
-
+
- 分类于
-
- 工作
-
- ,
-
- 思考
-
+ 更新于
+
@@ -618,10 +571,10 @@
- 工作与学习不同,不只是“唯分数论”,更要妥善处理人际关系、高效沟通等等。这并不是什么高大上的真理,而是和吃饭喝水一样普通的事情。
+ Transformers & NLP 相关库及实现
@@ -652,7 +605,7 @@
-
+
@@ -670,7 +623,7 @@
- 机器学习基础
+ 大模型微调方法
@@ -681,14 +634,23 @@
发表于
-
+
更新于
-
+
+
+
+
+
+
+ 分类于
+
+ LLM微调
+
@@ -701,10 +663,10 @@
- 机器学习是采用真实世界中采样的一小部分数据,并且希望模型能够对于未知数据有不错的泛化性能。
+ 微调的理论基础,总结了至今为止较优的参数高效微调(Parameter-Efficient Fine-Tuning)的方法和低精度微调量化
@@ -735,7 +697,7 @@
-
+
@@ -753,7 +715,7 @@
- Docker
+ 实习日志
@@ -764,14 +726,14 @@
发表于
-
+
更新于
-
+
@@ -779,7 +741,7 @@
分类于
- 开发工具
+ 工作
@@ -793,10 +755,10 @@
- 容器虚拟化技术,后续进一步学习 k8s
+ 写周报给自己看!哈哈哈
@@ -827,7 +789,7 @@
-
+
@@ -845,7 +807,7 @@
- 设计模式
+ 如何工作
@@ -855,15 +817,9 @@
发表于
+
-
-
-
-
-
-
- 更新于
-
+
@@ -871,7 +827,11 @@
分类于
- Java基础
+ 工作
+
+ ,
+
+ 思考
@@ -885,10 +845,10 @@
- 设计模式与其具体实现
+ 工作与学习不同,不只是“唯分数论”,更要妥善处理人际关系、高效沟通等等。这并不是什么高大上的真理,而是和吃饭喝水一样普通的事情。
@@ -919,7 +879,7 @@
-
+
@@ -937,7 +897,7 @@
- 模拟面试题
+ 机器学习基础
@@ -948,23 +908,14 @@
发表于
-
+
更新于
-
-
-
-
-
-
- 分类于
-
- 工作
-
+
@@ -977,10 +928,10 @@
- 汇总记录面试题,方便复习和面试模拟
+ 机器学习是采用真实世界中采样的一小部分数据,并且希望模型能够对于未知数据有不错的泛化性能。
@@ -1011,7 +962,7 @@
-
+
@@ -1029,7 +980,7 @@
- 操作系统
+ Docker
@@ -1040,14 +991,14 @@
发表于
-
+
更新于
-
+
@@ -1055,7 +1006,7 @@
分类于
- 八股文
+ 开发工具
@@ -1069,10 +1020,10 @@
- 待进一步学习
+ 容器虚拟化技术,待后续进一步学习 k8s
diff --git a/os/index.html b/os/index.html
index 1246028..da50706 100644
--- a/os/index.html
+++ b/os/index.html
@@ -156,18 +156,18 @@
@@ -264,8 +264,8 @@ 虚拟内存
只会访问虚拟内存地址,在操作总线前,通过一个地址转换硬件将虚拟内存地址转换为物理内存地址
进程隔离:将虚拟内存映射到物理内存,进程之间的地址空间相互隔离,互不干扰
虚拟内存空间:
-
-
+
+
用户态虚拟内存空间是相互隔离相互独立的;内核虚拟内存空间是各个进程共享的;
进程管理
数据结构 PCB
@@ -345,8 +345,8 @@ I/O 多路复用
diff --git a/page/2/index.html b/page/2/index.html
index 83089c0..0a32feb 100644
--- a/page/2/index.html
+++ b/page/2/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- Redis
+ 设计模式
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 数据库
+ Java基础
@@ -249,10 +249,10 @@
- Redis 基础
+ 项目架构的设计模式,和Java开发中的具体实现
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- MySQL
+ 模拟面试题
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- 数据库
+ 工作
@@ -341,10 +341,10 @@
- MySQL 基础,包括索引、事务、锁、日志、BufferPool等
+ 汇总记录面试题,方便复习和面试模拟
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 如何保持专注
+ 操作系统
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 思考
+ 八股文
@@ -433,10 +433,10 @@
- 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
+ 待进一步学习
@@ -467,7 +467,7 @@
-
+
@@ -485,7 +485,7 @@
- Java 常用数据结构的底层实现
+ 如何保持专注
@@ -496,14 +496,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +511,7 @@
分类于
- Java基础
+ 思考
@@ -525,10 +525,10 @@
- ArrayList、LinkedList、HashMap、ConcurrentHashMap 的底层源码剖析
+ 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
@@ -687,7 +687,7 @@
更新于
-
+
@@ -743,7 +743,7 @@
-
+
@@ -761,7 +761,7 @@
- ThreadPoolExecutor 和 CompletableFuture 实践
+ 实习面试题汇总
@@ -772,14 +772,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +787,7 @@
分类于
- Java基础
+ 工作
@@ -801,10 +801,10 @@
- 线程池的创建、使用方法,以及如何正确构造有父子关系、先后关系、与或关系的多线程并发场景。
+ 2024 实习投递面试题目汇总
@@ -835,7 +835,7 @@
-
+
@@ -853,7 +853,7 @@
- Rpc 中间件
+ 实习笔试题汇总
@@ -864,14 +864,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +879,7 @@
分类于
- Java开发
+ 工作
@@ -893,10 +893,10 @@
- Rpc 框架搭建过程遇到的问题、Dubbo 使用过程遇到的问题
+ 2024 实习投递笔试题目汇总
@@ -927,7 +927,7 @@
-
+
@@ -945,7 +945,7 @@
- Java 并发锁
+ 计算机网络
@@ -956,14 +956,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +971,7 @@
分类于
- Java基础
+ 八股文
@@ -985,15 +985,10 @@
- Java.util.concurrent 中有很多 Java 并发相关工具,例如 锁
-ReentrantLock
、线程 Callable
-FutureTask
、信号量 Semaphore
、共享锁
-CountDownLatch
-此外 Java 原生的 volatile
和 synchronized
-关键字也是并发编程的关键。
+ 如果我是一串电信号,我要去向何方呢?
@@ -1024,7 +1019,7 @@
-
+
@@ -1042,7 +1037,7 @@
- 实习面试题汇总
+ 数据结构和算法
@@ -1053,14 +1048,14 @@
发表于
-
+
更新于
-
+
@@ -1068,7 +1063,7 @@
分类于
- 工作
+ 算法
@@ -1082,10 +1077,10 @@
- 2024 实习投递面试题目汇总
+ 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
diff --git a/page/3/index.html b/page/3/index.html
index 85715e6..da7cbd9 100644
--- a/page/3/index.html
+++ b/page/3/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- 实习笔试题汇总
+ Git 文档阅读
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 工作
+ 开发工具
@@ -249,10 +249,10 @@
- 2024 实习投递笔试题目汇总
+ Git 文档阅读笔记和常用命令集合
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- Java 并发基础
+ ESConv
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- Java基础
+ 科研
@@ -341,10 +341,10 @@
- JMM、ThreadLocal
+ Title: Towards Emotional Support Dialog Systems
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 计算机网络
+ BlenderBot
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 八股文
+ 科研
@@ -433,10 +433,14 @@
- 如果我是一串电信号,我要去向何方呢?
+ Title: Recipes for building an open-domain
+chatbot
+
+FaceBook 在本文中提出了 BlenderBot 编解码器模型
+
@@ -467,7 +471,7 @@
-
+
@@ -485,7 +489,7 @@
- 数据结构和算法
+ MISC
@@ -496,14 +500,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +515,7 @@
分类于
- 算法
+ 科研
@@ -525,10 +529,12 @@
- 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
+ Title: A MIxed Strategy-Aware Model Integrating
+COMET for Emotional Support Conversation
+
@@ -559,7 +565,7 @@
-
+
@@ -577,7 +583,7 @@
- SpringMVC
+ KEMI
@@ -588,14 +594,14 @@
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
大模型微调具体实现方法,包括数据预处理、数据加载、微调模型构建、模型训练、加速训练方法、保存微调结果、加载 Adapter、推理测评、可交互 Cli等
+Linux高效工具的使用方法
@@ -274,7 +277,7 @@
-
+
@@ -292,7 +295,7 @@
- Transformers 使用入门
+ [paper]PAFT
@@ -303,14 +306,23 @@
发表于
-
+
更新于
-
+
+
+
+
+
+
+ 分类于
+
+ paper
+
@@ -323,36 +335,15 @@
- NLP
-任务:情感分析、文本生成、命名体识别、阅读理解、掩码填充、文本摘要、机器翻译、特征提取、对话机器人
-万物之始 Transformer Attention is all you need
-
-
-
-
-Transformers及相关库
-Transformers:核心库,模型加载、模型训练、流水线并行等
-Tokenizer:分词器,对数据进行预处理,文本到token序列的互相转换。具体工作包括:分词、索引、填充截断、attention_mask、token_type
-Datasets:数据集库,提供了数据集的加载、处理等方法
-Evaluate:评估函数,提供各种评价指标的计算函数
-Trainer:将模型训练流程打包,包括:创建优化器、创建DataLoader、tensor转移到CUDA上
-PEFT:高效微调模型的库,提供了几种高效微调的方法,小参数量动大模型
-Accelerate:分布式训练,提供了分布式训练解决方案,包括大模型的加载与推理解决方案
-Optimum:优化加速库,支持多种后端,如Onnxruntime、OpenVino等
-Gradio:可视化部署库,几行代码快速实现基于Web交互的算法演示系统
-NLP
-NLP
-数据集大多是未标注的文档,因此采用自监督学习的方式训练模型,如预测下一个词
-LM、完形填空 MLM。
-早些年,流行的是词嵌入 Word
-Embedding,目标是采用向量的形式表示词元,采用一组向量表示一段话,可以用于计算词/句子相似度。
-现阶段,Transformer
-的出现促使三种类型的模型的出现:Encoder-only-only-Decoder。Encoder-only
-适用于机器翻译、句子分类、命名体识别和问答;Decoder-only
-适用于文本预测;Encoder-Decoder 适用于文本压缩。
-
+ RAFT:Adapting Language Model to Domain Specific RAG 提出了检索增强微调(Retrieval Augmented Fine Tuning)方法,微调模型使其学习“如何忽略任何检索到的、无助于回答给定问题的文档,且不产生幻觉”,使 LLM 具有特定于域的 RAG 功能
+
+
+
+ 阅读全文 »
+
+
+
+
@@ -378,7 +369,7 @@ NLP
-
+
@@ -396,7 +387,7 @@ NLP
- 大模型微调方法
+ LLM
@@ -406,24 +397,9 @@
发表于
+
-
-
-
-
-
-
- 更新于
-
-
-
-
-
-
- 分类于
-
- LLM微调
-
+
@@ -436,15 +412,14 @@
- 微调的理论基础,总结了至今为止较优的参数高效微调(Parameter-Efficient Fine-Tuning)的方法和低精度微调量化
-
-
-
- 阅读全文 »
-
-
-
-
+
+大模型核心技术点在于训练资源、数据清洗和数据配比等,其难点或许不在于模型训练和模型结构搭建
+
+前缀语言模型 Encoder-Decoder
+ChatGLM
+掩码语言模型 自编码模型 Encoder-Only
+因果语言模型 自回归模型 Decoder-Only
+
@@ -470,7 +445,7 @@
-
+
@@ -488,7 +463,7 @@
- 实习日志
+ LLM-RLHF
@@ -498,24 +473,9 @@
发表于
+
-
-
-
-
-
-
- 更新于
-
-
-
-
-
-
- 分类于
-
- 工作
-
+
@@ -528,10 +488,10 @@
- 写周报给自己看!哈哈哈
+ LLM人工对齐算法
@@ -562,7 +522,7 @@
-
+
@@ -580,7 +540,7 @@
- 如何工作
+ Transformers 使用入门
@@ -590,22 +550,15 @@
发表于
-
-
+
-
+
- 分类于
-
- 工作
-
- ,
-
- 思考
-
+ 更新于
+
@@ -618,10 +571,10 @@
- 工作与学习不同,不只是“唯分数论”,更要妥善处理人际关系、高效沟通等等。这并不是什么高大上的真理,而是和吃饭喝水一样普通的事情。
+ Transformers & NLP 相关库及实现
@@ -652,7 +605,7 @@
-
+
@@ -670,7 +623,7 @@
- 机器学习基础
+ 大模型微调方法
@@ -681,14 +634,23 @@
发表于
-
+
更新于
-
+
+
+
+
+
+
+ 分类于
+
+ LLM微调
+
@@ -701,10 +663,10 @@
- 机器学习是采用真实世界中采样的一小部分数据,并且希望模型能够对于未知数据有不错的泛化性能。
+ 微调的理论基础,总结了至今为止较优的参数高效微调(Parameter-Efficient Fine-Tuning)的方法和低精度微调量化
@@ -735,7 +697,7 @@
-
+
@@ -753,7 +715,7 @@
- Docker
+ 实习日志
@@ -764,14 +726,14 @@
发表于
-
+
更新于
-
+
@@ -779,7 +741,7 @@
分类于
- 开发工具
+ 工作
@@ -793,10 +755,10 @@
- 容器虚拟化技术,后续进一步学习 k8s
+ 写周报给自己看!哈哈哈
@@ -827,7 +789,7 @@
-
+
@@ -845,7 +807,7 @@
- 设计模式
+ 如何工作
@@ -855,15 +817,9 @@
发表于
+
-
-
-
-
-
-
- 更新于
-
+
@@ -871,7 +827,11 @@
分类于
- Java基础
+ 工作
+
+ ,
+
+ 思考
@@ -885,10 +845,10 @@
- 设计模式与其具体实现
+ 工作与学习不同,不只是“唯分数论”,更要妥善处理人际关系、高效沟通等等。这并不是什么高大上的真理,而是和吃饭喝水一样普通的事情。
@@ -919,7 +879,7 @@
-
+
@@ -937,7 +897,7 @@
- 模拟面试题
+ 机器学习基础
@@ -948,23 +908,14 @@
发表于
-
+
更新于
-
-
-
-
-
-
- 分类于
-
- 工作
-
+
@@ -977,10 +928,10 @@
- 汇总记录面试题,方便复习和面试模拟
+ 机器学习是采用真实世界中采样的一小部分数据,并且希望模型能够对于未知数据有不错的泛化性能。
@@ -1011,7 +962,7 @@
-
+
@@ -1029,7 +980,7 @@
- 操作系统
+ Docker
@@ -1040,14 +991,14 @@
发表于
-
+
更新于
-
+
@@ -1055,7 +1006,7 @@
分类于
- 八股文
+ 开发工具
@@ -1069,10 +1020,10 @@
- 待进一步学习
+ 容器虚拟化技术,待后续进一步学习 k8s
diff --git a/os/index.html b/os/index.html
index 1246028..da50706 100644
--- a/os/index.html
+++ b/os/index.html
@@ -156,18 +156,18 @@
@@ -264,8 +264,8 @@ 虚拟内存
只会访问虚拟内存地址,在操作总线前,通过一个地址转换硬件将虚拟内存地址转换为物理内存地址
进程隔离:将虚拟内存映射到物理内存,进程之间的地址空间相互隔离,互不干扰
虚拟内存空间:
-
-
+
+
用户态虚拟内存空间是相互隔离相互独立的;内核虚拟内存空间是各个进程共享的;
进程管理
数据结构 PCB
@@ -345,8 +345,8 @@ I/O 多路复用
diff --git a/page/2/index.html b/page/2/index.html
index 83089c0..0a32feb 100644
--- a/page/2/index.html
+++ b/page/2/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- Redis
+ 设计模式
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 数据库
+ Java基础
@@ -249,10 +249,10 @@
- Redis 基础
+ 项目架构的设计模式,和Java开发中的具体实现
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- MySQL
+ 模拟面试题
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- 数据库
+ 工作
@@ -341,10 +341,10 @@
- MySQL 基础,包括索引、事务、锁、日志、BufferPool等
+ 汇总记录面试题,方便复习和面试模拟
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 如何保持专注
+ 操作系统
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 思考
+ 八股文
@@ -433,10 +433,10 @@
- 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
+ 待进一步学习
@@ -467,7 +467,7 @@
-
+
@@ -485,7 +485,7 @@
- Java 常用数据结构的底层实现
+ 如何保持专注
@@ -496,14 +496,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +511,7 @@
分类于
- Java基础
+ 思考
@@ -525,10 +525,10 @@
- ArrayList、LinkedList、HashMap、ConcurrentHashMap 的底层源码剖析
+ 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
@@ -687,7 +687,7 @@
更新于
-
+
@@ -743,7 +743,7 @@
-
+
@@ -761,7 +761,7 @@
- ThreadPoolExecutor 和 CompletableFuture 实践
+ 实习面试题汇总
@@ -772,14 +772,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +787,7 @@
分类于
- Java基础
+ 工作
@@ -801,10 +801,10 @@
- 线程池的创建、使用方法,以及如何正确构造有父子关系、先后关系、与或关系的多线程并发场景。
+ 2024 实习投递面试题目汇总
@@ -835,7 +835,7 @@
-
+
@@ -853,7 +853,7 @@
- Rpc 中间件
+ 实习笔试题汇总
@@ -864,14 +864,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +879,7 @@
分类于
- Java开发
+ 工作
@@ -893,10 +893,10 @@
- Rpc 框架搭建过程遇到的问题、Dubbo 使用过程遇到的问题
+ 2024 实习投递笔试题目汇总
@@ -927,7 +927,7 @@
-
+
@@ -945,7 +945,7 @@
- Java 并发锁
+ 计算机网络
@@ -956,14 +956,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +971,7 @@
分类于
- Java基础
+ 八股文
@@ -985,15 +985,10 @@
- Java.util.concurrent 中有很多 Java 并发相关工具,例如 锁
-ReentrantLock
、线程 Callable
-FutureTask
、信号量 Semaphore
、共享锁
-CountDownLatch
-此外 Java 原生的 volatile
和 synchronized
-关键字也是并发编程的关键。
+ 如果我是一串电信号,我要去向何方呢?
@@ -1024,7 +1019,7 @@
-
+
@@ -1042,7 +1037,7 @@
- 实习面试题汇总
+ 数据结构和算法
@@ -1053,14 +1048,14 @@
发表于
-
+
更新于
-
+
@@ -1068,7 +1063,7 @@
分类于
- 工作
+ 算法
@@ -1082,10 +1077,10 @@
- 2024 实习投递面试题目汇总
+ 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
diff --git a/page/3/index.html b/page/3/index.html
index 85715e6..da7cbd9 100644
--- a/page/3/index.html
+++ b/page/3/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- 实习笔试题汇总
+ Git 文档阅读
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 工作
+ 开发工具
@@ -249,10 +249,10 @@
- 2024 实习投递笔试题目汇总
+ Git 文档阅读笔记和常用命令集合
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- Java 并发基础
+ ESConv
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- Java基础
+ 科研
@@ -341,10 +341,10 @@
- JMM、ThreadLocal
+ Title: Towards Emotional Support Dialog Systems
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 计算机网络
+ BlenderBot
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 八股文
+ 科研
@@ -433,10 +433,14 @@
- 如果我是一串电信号,我要去向何方呢?
+ Title: Recipes for building an open-domain
+chatbot
+
+FaceBook 在本文中提出了 BlenderBot 编解码器模型
+
@@ -467,7 +471,7 @@
-
+
@@ -485,7 +489,7 @@
- 数据结构和算法
+ MISC
@@ -496,14 +500,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +515,7 @@
分类于
- 算法
+ 科研
@@ -525,10 +529,12 @@
- 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
+ Title: A MIxed Strategy-Aware Model Integrating
+COMET for Emotional Support Conversation
+
@@ -559,7 +565,7 @@
-
+
@@ -577,7 +583,7 @@
- SpringMVC
+ KEMI
@@ -588,14 +594,14 @@
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
- Transformers 使用入门 + [paper]PAFT
发表于
-
+
更新于
-
+
+
+
+
+
+
+ 分类于
+
+ paper
+
@@ -323,36 +335,15 @@
- NLP
-任务:情感分析、文本生成、命名体识别、阅读理解、掩码填充、文本摘要、机器翻译、特征提取、对话机器人
-万物之始 Transformer Attention is all you need
-
-
-
-
-Transformers及相关库
-Transformers:核心库,模型加载、模型训练、流水线并行等
-Tokenizer:分词器,对数据进行预处理,文本到token序列的互相转换。具体工作包括:分词、索引、填充截断、attention_mask、token_type
-Datasets:数据集库,提供了数据集的加载、处理等方法
-Evaluate:评估函数,提供各种评价指标的计算函数
-Trainer:将模型训练流程打包,包括:创建优化器、创建DataLoader、tensor转移到CUDA上
-PEFT:高效微调模型的库,提供了几种高效微调的方法,小参数量动大模型
-Accelerate:分布式训练,提供了分布式训练解决方案,包括大模型的加载与推理解决方案
-Optimum:优化加速库,支持多种后端,如Onnxruntime、OpenVino等
-Gradio:可视化部署库,几行代码快速实现基于Web交互的算法演示系统
-NLP
-NLP
-数据集大多是未标注的文档,因此采用自监督学习的方式训练模型,如预测下一个词
-LM、完形填空 MLM。
-早些年,流行的是词嵌入 Word
-Embedding,目标是采用向量的形式表示词元,采用一组向量表示一段话,可以用于计算词/句子相似度。
-现阶段,Transformer
-的出现促使三种类型的模型的出现:Encoder-only-only-Decoder。Encoder-only
-适用于机器翻译、句子分类、命名体识别和问答;Decoder-only
-适用于文本预测;Encoder-Decoder 适用于文本压缩。
-
+ RAFT:Adapting Language Model to Domain Specific RAG 提出了检索增强微调(Retrieval Augmented Fine Tuning)方法,微调模型使其学习“如何忽略任何检索到的、无助于回答给定问题的文档,且不产生幻觉”,使 LLM 具有特定于域的 RAG 功能
+
+
+
+ 阅读全文 »
+
+
+
+
@@ -378,7 +369,7 @@ NLP
-
+
@@ -396,7 +387,7 @@ NLP
- 大模型微调方法
+ LLM
@@ -406,24 +397,9 @@
发表于
+
-
-
-
-
-
-
- 更新于
-
-
-
-
-
-
- 分类于
-
- LLM微调
-
+
@@ -436,15 +412,14 @@
- 微调的理论基础,总结了至今为止较优的参数高效微调(Parameter-Efficient Fine-Tuning)的方法和低精度微调量化
-
-
-
- 阅读全文 »
-
-
-
-
+
+大模型核心技术点在于训练资源、数据清洗和数据配比等,其难点或许不在于模型训练和模型结构搭建
+
+前缀语言模型 Encoder-Decoder
+ChatGLM
+掩码语言模型 自编码模型 Encoder-Only
+因果语言模型 自回归模型 Decoder-Only
+
@@ -470,7 +445,7 @@
-
+
@@ -488,7 +463,7 @@
- 实习日志
+ LLM-RLHF
@@ -498,24 +473,9 @@
发表于
+
-
-
-
-
-
-
- 更新于
-
-
-
-
-
-
- 分类于
-
- 工作
-
+
@@ -528,10 +488,10 @@
- 写周报给自己看!哈哈哈
+ LLM人工对齐算法
@@ -562,7 +522,7 @@
-
+
@@ -580,7 +540,7 @@
- 如何工作
+ Transformers 使用入门
@@ -590,22 +550,15 @@
发表于
-
-
+
-
+
- 分类于
-
- 工作
-
- ,
-
- 思考
-
+ 更新于
+
@@ -618,10 +571,10 @@
- 工作与学习不同,不只是“唯分数论”,更要妥善处理人际关系、高效沟通等等。这并不是什么高大上的真理,而是和吃饭喝水一样普通的事情。
+ Transformers & NLP 相关库及实现
@@ -652,7 +605,7 @@
-
+
@@ -670,7 +623,7 @@
- 机器学习基础
+ 大模型微调方法
@@ -681,14 +634,23 @@
发表于
-
+
更新于
-
+
+
+
+
+
+
+ 分类于
+
+ LLM微调
+
@@ -701,10 +663,10 @@
- 机器学习是采用真实世界中采样的一小部分数据,并且希望模型能够对于未知数据有不错的泛化性能。
+ 微调的理论基础,总结了至今为止较优的参数高效微调(Parameter-Efficient Fine-Tuning)的方法和低精度微调量化
@@ -735,7 +697,7 @@
-
+
@@ -753,7 +715,7 @@
- Docker
+ 实习日志
@@ -764,14 +726,14 @@
发表于
-
+
更新于
-
+
@@ -779,7 +741,7 @@
分类于
- 开发工具
+ 工作
@@ -793,10 +755,10 @@
- 容器虚拟化技术,后续进一步学习 k8s
+ 写周报给自己看!哈哈哈
@@ -827,7 +789,7 @@
-
+
@@ -845,7 +807,7 @@
- 设计模式
+ 如何工作
@@ -855,15 +817,9 @@
发表于
+
-
-
-
-
-
-
- 更新于
-
+
@@ -871,7 +827,11 @@
分类于
- Java基础
+ 工作
+
+ ,
+
+ 思考
@@ -885,10 +845,10 @@
- 设计模式与其具体实现
+ 工作与学习不同,不只是“唯分数论”,更要妥善处理人际关系、高效沟通等等。这并不是什么高大上的真理,而是和吃饭喝水一样普通的事情。
@@ -919,7 +879,7 @@
-
+
@@ -937,7 +897,7 @@
- 模拟面试题
+ 机器学习基础
@@ -948,23 +908,14 @@
发表于
-
+
更新于
-
-
-
-
-
-
- 分类于
-
- 工作
-
+
@@ -977,10 +928,10 @@
- 汇总记录面试题,方便复习和面试模拟
+ 机器学习是采用真实世界中采样的一小部分数据,并且希望模型能够对于未知数据有不错的泛化性能。
@@ -1011,7 +962,7 @@
-
+
@@ -1029,7 +980,7 @@
- 操作系统
+ Docker
@@ -1040,14 +991,14 @@
发表于
-
+
更新于
-
+
@@ -1055,7 +1006,7 @@
分类于
- 八股文
+ 开发工具
@@ -1069,10 +1020,10 @@
- 待进一步学习
+ 容器虚拟化技术,待后续进一步学习 k8s
diff --git a/os/index.html b/os/index.html
index 1246028..da50706 100644
--- a/os/index.html
+++ b/os/index.html
@@ -156,18 +156,18 @@
@@ -264,8 +264,8 @@ 虚拟内存
只会访问虚拟内存地址,在操作总线前,通过一个地址转换硬件将虚拟内存地址转换为物理内存地址
进程隔离:将虚拟内存映射到物理内存,进程之间的地址空间相互隔离,互不干扰
虚拟内存空间:
-
-
+
+
用户态虚拟内存空间是相互隔离相互独立的;内核虚拟内存空间是各个进程共享的;
进程管理
数据结构 PCB
@@ -345,8 +345,8 @@ I/O 多路复用
diff --git a/page/2/index.html b/page/2/index.html
index 83089c0..0a32feb 100644
--- a/page/2/index.html
+++ b/page/2/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- Redis
+ 设计模式
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 数据库
+ Java基础
@@ -249,10 +249,10 @@
- Redis 基础
+ 项目架构的设计模式,和Java开发中的具体实现
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- MySQL
+ 模拟面试题
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- 数据库
+ 工作
@@ -341,10 +341,10 @@
- MySQL 基础,包括索引、事务、锁、日志、BufferPool等
+ 汇总记录面试题,方便复习和面试模拟
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 如何保持专注
+ 操作系统
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 思考
+ 八股文
@@ -433,10 +433,10 @@
- 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
+ 待进一步学习
@@ -467,7 +467,7 @@
-
+
@@ -485,7 +485,7 @@
- Java 常用数据结构的底层实现
+ 如何保持专注
@@ -496,14 +496,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +511,7 @@
分类于
- Java基础
+ 思考
@@ -525,10 +525,10 @@
- ArrayList、LinkedList、HashMap、ConcurrentHashMap 的底层源码剖析
+ 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
@@ -687,7 +687,7 @@
更新于
-
+
@@ -743,7 +743,7 @@
-
+
@@ -761,7 +761,7 @@
- ThreadPoolExecutor 和 CompletableFuture 实践
+ 实习面试题汇总
@@ -772,14 +772,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +787,7 @@
分类于
- Java基础
+ 工作
@@ -801,10 +801,10 @@
- 线程池的创建、使用方法,以及如何正确构造有父子关系、先后关系、与或关系的多线程并发场景。
+ 2024 实习投递面试题目汇总
@@ -835,7 +835,7 @@
-
+
@@ -853,7 +853,7 @@
- Rpc 中间件
+ 实习笔试题汇总
@@ -864,14 +864,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +879,7 @@
分类于
- Java开发
+ 工作
@@ -893,10 +893,10 @@
- Rpc 框架搭建过程遇到的问题、Dubbo 使用过程遇到的问题
+ 2024 实习投递笔试题目汇总
@@ -927,7 +927,7 @@
-
+
@@ -945,7 +945,7 @@
- Java 并发锁
+ 计算机网络
@@ -956,14 +956,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +971,7 @@
分类于
- Java基础
+ 八股文
@@ -985,15 +985,10 @@
- Java.util.concurrent 中有很多 Java 并发相关工具,例如 锁
-ReentrantLock
、线程 Callable
-FutureTask
、信号量 Semaphore
、共享锁
-CountDownLatch
-此外 Java 原生的 volatile
和 synchronized
-关键字也是并发编程的关键。
+ 如果我是一串电信号,我要去向何方呢?
@@ -1024,7 +1019,7 @@
-
+
@@ -1042,7 +1037,7 @@
- 实习面试题汇总
+ 数据结构和算法
@@ -1053,14 +1048,14 @@
发表于
-
+
更新于
-
+
@@ -1068,7 +1063,7 @@
分类于
- 工作
+ 算法
@@ -1082,10 +1077,10 @@
- 2024 实习投递面试题目汇总
+ 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
diff --git a/page/3/index.html b/page/3/index.html
index 85715e6..da7cbd9 100644
--- a/page/3/index.html
+++ b/page/3/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- 实习笔试题汇总
+ Git 文档阅读
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 工作
+ 开发工具
@@ -249,10 +249,10 @@
- 2024 实习投递笔试题目汇总
+ Git 文档阅读笔记和常用命令集合
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- Java 并发基础
+ ESConv
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- Java基础
+ 科研
@@ -341,10 +341,10 @@
- JMM、ThreadLocal
+ Title: Towards Emotional Support Dialog Systems
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 计算机网络
+ BlenderBot
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 八股文
+ 科研
@@ -433,10 +433,14 @@
- 如果我是一串电信号,我要去向何方呢?
+ Title: Recipes for building an open-domain
+chatbot
+
+FaceBook 在本文中提出了 BlenderBot 编解码器模型
+
@@ -467,7 +471,7 @@
-
+
@@ -485,7 +489,7 @@
- 数据结构和算法
+ MISC
@@ -496,14 +500,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +515,7 @@
分类于
- 算法
+ 科研
@@ -525,10 +529,12 @@
- 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
+ Title: A MIxed Strategy-Aware Model Integrating
+COMET for Emotional Support Conversation
+
@@ -559,7 +565,7 @@
-
+
@@ -577,7 +583,7 @@
- SpringMVC
+ KEMI
@@ -588,14 +594,14 @@
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
NLP -任务:情感分析、文本生成、命名体识别、阅读理解、掩码填充、文本摘要、机器翻译、特征提取、对话机器人
-万物之始 Transformer Attention is all you need
- - --
-
Transformers及相关库
-Transformers:核心库,模型加载、模型训练、流水线并行等
-Tokenizer:分词器,对数据进行预处理,文本到token序列的互相转换。具体工作包括:分词、索引、填充截断、attention_mask、token_type
-Datasets:数据集库,提供了数据集的加载、处理等方法
-Evaluate:评估函数,提供各种评价指标的计算函数
-Trainer:将模型训练流程打包,包括:创建优化器、创建DataLoader、tensor转移到CUDA上
-PEFT:高效微调模型的库,提供了几种高效微调的方法,小参数量动大模型
-Accelerate:分布式训练,提供了分布式训练解决方案,包括大模型的加载与推理解决方案
-Optimum:优化加速库,支持多种后端,如Onnxruntime、OpenVino等
-Gradio:可视化部署库,几行代码快速实现基于Web交互的算法演示系统
-NLP
-NLP -数据集大多是未标注的文档,因此采用自监督学习的方式训练模型,如预测下一个词 -LM、完形填空 MLM。
-早些年,流行的是词嵌入 Word -Embedding,目标是采用向量的形式表示词元,采用一组向量表示一段话,可以用于计算词/句子相似度。
-现阶段,Transformer -的出现促使三种类型的模型的出现:Encoder-only-only-Decoder。Encoder-only -适用于机器翻译、句子分类、命名体识别和问答;Decoder-only -适用于文本预测;Encoder-Decoder 适用于文本压缩。
- +RAFT:Adapting Language Model to Domain Specific RAG 提出了检索增强微调(Retrieval Augmented Fine Tuning)方法,微调模型使其学习“如何忽略任何检索到的、无助于回答给定问题的文档,且不产生幻觉”,使 LLM 具有特定于域的 RAG 功能
+ +NLP
NLP
- 大模型微调方法 + LLM
发表于
+
-
-
-
-
-
-
- 更新于
-
-
-
-
-
-
- 分类于
-
- LLM微调
-
+
@@ -436,15 +412,14 @@
- 微调的理论基础,总结了至今为止较优的参数高效微调(Parameter-Efficient Fine-Tuning)的方法和低精度微调量化
-
-
-
- 阅读全文 »
-
-
-
-
+
+大模型核心技术点在于训练资源、数据清洗和数据配比等,其难点或许不在于模型训练和模型结构搭建
+
+前缀语言模型 Encoder-Decoder
+ChatGLM
+掩码语言模型 自编码模型 Encoder-Only
+因果语言模型 自回归模型 Decoder-Only
+
@@ -470,7 +445,7 @@
-
+
@@ -488,7 +463,7 @@
- 实习日志
+ LLM-RLHF
@@ -498,24 +473,9 @@
发表于
+
-
-
-
-
-
-
- 更新于
-
-
-
-
-
-
- 分类于
-
- 工作
-
+
@@ -528,10 +488,10 @@
- 写周报给自己看!哈哈哈
+ LLM人工对齐算法
@@ -562,7 +522,7 @@
-
+
@@ -580,7 +540,7 @@
- 如何工作
+ Transformers 使用入门
@@ -590,22 +550,15 @@
发表于
-
-
+
-
+
- 分类于
-
- 工作
-
- ,
-
- 思考
-
+ 更新于
+
@@ -618,10 +571,10 @@
- 工作与学习不同,不只是“唯分数论”,更要妥善处理人际关系、高效沟通等等。这并不是什么高大上的真理,而是和吃饭喝水一样普通的事情。
+ Transformers & NLP 相关库及实现
@@ -652,7 +605,7 @@
-
+
@@ -670,7 +623,7 @@
- 机器学习基础
+ 大模型微调方法
@@ -681,14 +634,23 @@
发表于
-
+
更新于
-
+
+
+
+
+
+
+ 分类于
+
+ LLM微调
+
@@ -701,10 +663,10 @@
- 机器学习是采用真实世界中采样的一小部分数据,并且希望模型能够对于未知数据有不错的泛化性能。
+ 微调的理论基础,总结了至今为止较优的参数高效微调(Parameter-Efficient Fine-Tuning)的方法和低精度微调量化
@@ -735,7 +697,7 @@
-
+
@@ -753,7 +715,7 @@
- Docker
+ 实习日志
@@ -764,14 +726,14 @@
发表于
-
+
更新于
-
+
@@ -779,7 +741,7 @@
分类于
- 开发工具
+ 工作
@@ -793,10 +755,10 @@
- 容器虚拟化技术,后续进一步学习 k8s
+ 写周报给自己看!哈哈哈
@@ -827,7 +789,7 @@
-
+
@@ -845,7 +807,7 @@
- 设计模式
+ 如何工作
@@ -855,15 +817,9 @@
发表于
+
-
-
-
-
-
-
- 更新于
-
+
@@ -871,7 +827,11 @@
分类于
- Java基础
+ 工作
+
+ ,
+
+ 思考
@@ -885,10 +845,10 @@
- 设计模式与其具体实现
+ 工作与学习不同,不只是“唯分数论”,更要妥善处理人际关系、高效沟通等等。这并不是什么高大上的真理,而是和吃饭喝水一样普通的事情。
@@ -919,7 +879,7 @@
-
+
@@ -937,7 +897,7 @@
- 模拟面试题
+ 机器学习基础
@@ -948,23 +908,14 @@
发表于
-
+
更新于
-
-
-
-
-
-
- 分类于
-
- 工作
-
+
@@ -977,10 +928,10 @@
- 汇总记录面试题,方便复习和面试模拟
+ 机器学习是采用真实世界中采样的一小部分数据,并且希望模型能够对于未知数据有不错的泛化性能。
@@ -1011,7 +962,7 @@
-
+
@@ -1029,7 +980,7 @@
- 操作系统
+ Docker
@@ -1040,14 +991,14 @@
发表于
-
+
更新于
-
+
@@ -1055,7 +1006,7 @@
分类于
- 八股文
+ 开发工具
@@ -1069,10 +1020,10 @@
- 待进一步学习
+ 容器虚拟化技术,待后续进一步学习 k8s
diff --git a/os/index.html b/os/index.html
index 1246028..da50706 100644
--- a/os/index.html
+++ b/os/index.html
@@ -156,18 +156,18 @@
@@ -264,8 +264,8 @@ 虚拟内存
只会访问虚拟内存地址,在操作总线前,通过一个地址转换硬件将虚拟内存地址转换为物理内存地址
进程隔离:将虚拟内存映射到物理内存,进程之间的地址空间相互隔离,互不干扰
虚拟内存空间:
-
-
+
+
用户态虚拟内存空间是相互隔离相互独立的;内核虚拟内存空间是各个进程共享的;
进程管理
数据结构 PCB
@@ -345,8 +345,8 @@ I/O 多路复用
diff --git a/page/2/index.html b/page/2/index.html
index 83089c0..0a32feb 100644
--- a/page/2/index.html
+++ b/page/2/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- Redis
+ 设计模式
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 数据库
+ Java基础
@@ -249,10 +249,10 @@
- Redis 基础
+ 项目架构的设计模式,和Java开发中的具体实现
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- MySQL
+ 模拟面试题
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- 数据库
+ 工作
@@ -341,10 +341,10 @@
- MySQL 基础,包括索引、事务、锁、日志、BufferPool等
+ 汇总记录面试题,方便复习和面试模拟
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 如何保持专注
+ 操作系统
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 思考
+ 八股文
@@ -433,10 +433,10 @@
- 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
+ 待进一步学习
@@ -467,7 +467,7 @@
-
+
@@ -485,7 +485,7 @@
- Java 常用数据结构的底层实现
+ 如何保持专注
@@ -496,14 +496,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +511,7 @@
分类于
- Java基础
+ 思考
@@ -525,10 +525,10 @@
- ArrayList、LinkedList、HashMap、ConcurrentHashMap 的底层源码剖析
+ 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
@@ -687,7 +687,7 @@
更新于
-
+
@@ -743,7 +743,7 @@
-
+
@@ -761,7 +761,7 @@
- ThreadPoolExecutor 和 CompletableFuture 实践
+ 实习面试题汇总
@@ -772,14 +772,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +787,7 @@
分类于
- Java基础
+ 工作
@@ -801,10 +801,10 @@
- 线程池的创建、使用方法,以及如何正确构造有父子关系、先后关系、与或关系的多线程并发场景。
+ 2024 实习投递面试题目汇总
@@ -835,7 +835,7 @@
-
+
@@ -853,7 +853,7 @@
- Rpc 中间件
+ 实习笔试题汇总
@@ -864,14 +864,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +879,7 @@
分类于
- Java开发
+ 工作
@@ -893,10 +893,10 @@
- Rpc 框架搭建过程遇到的问题、Dubbo 使用过程遇到的问题
+ 2024 实习投递笔试题目汇总
@@ -927,7 +927,7 @@
-
+
@@ -945,7 +945,7 @@
- Java 并发锁
+ 计算机网络
@@ -956,14 +956,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +971,7 @@
分类于
- Java基础
+ 八股文
@@ -985,15 +985,10 @@
- Java.util.concurrent 中有很多 Java 并发相关工具,例如 锁
-ReentrantLock
、线程 Callable
-FutureTask
、信号量 Semaphore
、共享锁
-CountDownLatch
-此外 Java 原生的 volatile
和 synchronized
-关键字也是并发编程的关键。
+ 如果我是一串电信号,我要去向何方呢?
@@ -1024,7 +1019,7 @@
-
+
@@ -1042,7 +1037,7 @@
- 实习面试题汇总
+ 数据结构和算法
@@ -1053,14 +1048,14 @@
发表于
-
+
更新于
-
+
@@ -1068,7 +1063,7 @@
分类于
- 工作
+ 算法
@@ -1082,10 +1077,10 @@
- 2024 实习投递面试题目汇总
+ 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
diff --git a/page/3/index.html b/page/3/index.html
index 85715e6..da7cbd9 100644
--- a/page/3/index.html
+++ b/page/3/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- 实习笔试题汇总
+ Git 文档阅读
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 工作
+ 开发工具
@@ -249,10 +249,10 @@
- 2024 实习投递笔试题目汇总
+ Git 文档阅读笔记和常用命令集合
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- Java 并发基础
+ ESConv
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- Java基础
+ 科研
@@ -341,10 +341,10 @@
- JMM、ThreadLocal
+ Title: Towards Emotional Support Dialog Systems
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 计算机网络
+ BlenderBot
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 八股文
+ 科研
@@ -433,10 +433,14 @@
- 如果我是一串电信号,我要去向何方呢?
+ Title: Recipes for building an open-domain
+chatbot
+
+FaceBook 在本文中提出了 BlenderBot 编解码器模型
+
@@ -467,7 +471,7 @@
-
+
@@ -485,7 +489,7 @@
- 数据结构和算法
+ MISC
@@ -496,14 +500,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +515,7 @@
分类于
- 算法
+ 科研
@@ -525,10 +529,12 @@
- 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
+ Title: A MIxed Strategy-Aware Model Integrating
+COMET for Emotional Support Conversation
+
@@ -559,7 +565,7 @@
-
+
@@ -577,7 +583,7 @@
- SpringMVC
+ KEMI
@@ -588,14 +594,14 @@
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
微调的理论基础,总结了至今为止较优的参数高效微调(Parameter-Efficient Fine-Tuning)的方法和低精度微调量化
- -++大模型核心技术点在于训练资源、数据清洗和数据配比等,其难点或许不在于模型训练和模型结构搭建
+
前缀语言模型 Encoder-Decoder
+ChatGLM
+掩码语言模型 自编码模型 Encoder-Only
+因果语言模型 自回归模型 Decoder-Only
+
-
+
@@ -488,7 +463,7 @@
- 实习日志
+ LLM-RLHF
@@ -498,24 +473,9 @@
发表于
+
-
-
-
-
-
-
- 更新于
-
-
-
-
-
-
- 分类于
-
- 工作
-
+
@@ -528,10 +488,10 @@
- 写周报给自己看!哈哈哈
+ LLM人工对齐算法
@@ -562,7 +522,7 @@
-
+
@@ -580,7 +540,7 @@
- 如何工作
+ Transformers 使用入门
@@ -590,22 +550,15 @@
发表于
-
-
+
-
+
- 分类于
-
- 工作
-
- ,
-
- 思考
-
+ 更新于
+
@@ -618,10 +571,10 @@
- 工作与学习不同,不只是“唯分数论”,更要妥善处理人际关系、高效沟通等等。这并不是什么高大上的真理,而是和吃饭喝水一样普通的事情。
+ Transformers & NLP 相关库及实现
@@ -652,7 +605,7 @@
-
+
@@ -670,7 +623,7 @@
- 机器学习基础
+ 大模型微调方法
@@ -681,14 +634,23 @@
发表于
-
+
更新于
-
+
+
+
+
+
+
+ 分类于
+
+ LLM微调
+
@@ -701,10 +663,10 @@
- 机器学习是采用真实世界中采样的一小部分数据,并且希望模型能够对于未知数据有不错的泛化性能。
+ 微调的理论基础,总结了至今为止较优的参数高效微调(Parameter-Efficient Fine-Tuning)的方法和低精度微调量化
@@ -735,7 +697,7 @@
-
+
@@ -753,7 +715,7 @@
- Docker
+ 实习日志
@@ -764,14 +726,14 @@
发表于
-
+
更新于
-
+
@@ -779,7 +741,7 @@
分类于
- 开发工具
+ 工作
@@ -793,10 +755,10 @@
- 容器虚拟化技术,后续进一步学习 k8s
+ 写周报给自己看!哈哈哈
@@ -827,7 +789,7 @@
-
+
@@ -845,7 +807,7 @@
- 设计模式
+ 如何工作
@@ -855,15 +817,9 @@
发表于
+
-
-
-
-
-
-
- 更新于
-
+
@@ -871,7 +827,11 @@
分类于
- Java基础
+ 工作
+
+ ,
+
+ 思考
@@ -885,10 +845,10 @@
- 设计模式与其具体实现
+ 工作与学习不同,不只是“唯分数论”,更要妥善处理人际关系、高效沟通等等。这并不是什么高大上的真理,而是和吃饭喝水一样普通的事情。
@@ -919,7 +879,7 @@
-
+
@@ -937,7 +897,7 @@
- 模拟面试题
+ 机器学习基础
@@ -948,23 +908,14 @@
发表于
-
+
更新于
-
-
-
-
-
-
- 分类于
-
- 工作
-
+
@@ -977,10 +928,10 @@
- 汇总记录面试题,方便复习和面试模拟
+ 机器学习是采用真实世界中采样的一小部分数据,并且希望模型能够对于未知数据有不错的泛化性能。
@@ -1011,7 +962,7 @@
-
+
@@ -1029,7 +980,7 @@
- 操作系统
+ Docker
@@ -1040,14 +991,14 @@
发表于
-
+
更新于
-
+
@@ -1055,7 +1006,7 @@
分类于
- 八股文
+ 开发工具
@@ -1069,10 +1020,10 @@
- 待进一步学习
+ 容器虚拟化技术,待后续进一步学习 k8s
diff --git a/os/index.html b/os/index.html
index 1246028..da50706 100644
--- a/os/index.html
+++ b/os/index.html
@@ -156,18 +156,18 @@
@@ -264,8 +264,8 @@ 虚拟内存
只会访问虚拟内存地址,在操作总线前,通过一个地址转换硬件将虚拟内存地址转换为物理内存地址
进程隔离:将虚拟内存映射到物理内存,进程之间的地址空间相互隔离,互不干扰
虚拟内存空间:
-
-
+
+
用户态虚拟内存空间是相互隔离相互独立的;内核虚拟内存空间是各个进程共享的;
进程管理
数据结构 PCB
@@ -345,8 +345,8 @@ I/O 多路复用
diff --git a/page/2/index.html b/page/2/index.html
index 83089c0..0a32feb 100644
--- a/page/2/index.html
+++ b/page/2/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- Redis
+ 设计模式
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 数据库
+ Java基础
@@ -249,10 +249,10 @@
- Redis 基础
+ 项目架构的设计模式,和Java开发中的具体实现
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- MySQL
+ 模拟面试题
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- 数据库
+ 工作
@@ -341,10 +341,10 @@
- MySQL 基础,包括索引、事务、锁、日志、BufferPool等
+ 汇总记录面试题,方便复习和面试模拟
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 如何保持专注
+ 操作系统
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 思考
+ 八股文
@@ -433,10 +433,10 @@
- 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
+ 待进一步学习
@@ -467,7 +467,7 @@
-
+
@@ -485,7 +485,7 @@
- Java 常用数据结构的底层实现
+ 如何保持专注
@@ -496,14 +496,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +511,7 @@
分类于
- Java基础
+ 思考
@@ -525,10 +525,10 @@
- ArrayList、LinkedList、HashMap、ConcurrentHashMap 的底层源码剖析
+ 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
@@ -687,7 +687,7 @@
更新于
-
+
@@ -743,7 +743,7 @@
-
+
@@ -761,7 +761,7 @@
- ThreadPoolExecutor 和 CompletableFuture 实践
+ 实习面试题汇总
@@ -772,14 +772,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +787,7 @@
分类于
- Java基础
+ 工作
@@ -801,10 +801,10 @@
- 线程池的创建、使用方法,以及如何正确构造有父子关系、先后关系、与或关系的多线程并发场景。
+ 2024 实习投递面试题目汇总
@@ -835,7 +835,7 @@
-
+
@@ -853,7 +853,7 @@
- Rpc 中间件
+ 实习笔试题汇总
@@ -864,14 +864,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +879,7 @@
分类于
- Java开发
+ 工作
@@ -893,10 +893,10 @@
- Rpc 框架搭建过程遇到的问题、Dubbo 使用过程遇到的问题
+ 2024 实习投递笔试题目汇总
@@ -927,7 +927,7 @@
-
+
@@ -945,7 +945,7 @@
- Java 并发锁
+ 计算机网络
@@ -956,14 +956,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +971,7 @@
分类于
- Java基础
+ 八股文
@@ -985,15 +985,10 @@
- Java.util.concurrent 中有很多 Java 并发相关工具,例如 锁
-ReentrantLock
、线程 Callable
-FutureTask
、信号量 Semaphore
、共享锁
-CountDownLatch
-此外 Java 原生的 volatile
和 synchronized
-关键字也是并发编程的关键。
+ 如果我是一串电信号,我要去向何方呢?
@@ -1024,7 +1019,7 @@
-
+
@@ -1042,7 +1037,7 @@
- 实习面试题汇总
+ 数据结构和算法
@@ -1053,14 +1048,14 @@
发表于
-
+
更新于
-
+
@@ -1068,7 +1063,7 @@
分类于
- 工作
+ 算法
@@ -1082,10 +1077,10 @@
- 2024 实习投递面试题目汇总
+ 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
diff --git a/page/3/index.html b/page/3/index.html
index 85715e6..da7cbd9 100644
--- a/page/3/index.html
+++ b/page/3/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- 实习笔试题汇总
+ Git 文档阅读
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 工作
+ 开发工具
@@ -249,10 +249,10 @@
- 2024 实习投递笔试题目汇总
+ Git 文档阅读笔记和常用命令集合
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- Java 并发基础
+ ESConv
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- Java基础
+ 科研
@@ -341,10 +341,10 @@
- JMM、ThreadLocal
+ Title: Towards Emotional Support Dialog Systems
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 计算机网络
+ BlenderBot
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 八股文
+ 科研
@@ -433,10 +433,14 @@
- 如果我是一串电信号,我要去向何方呢?
+ Title: Recipes for building an open-domain
+chatbot
+
+FaceBook 在本文中提出了 BlenderBot 编解码器模型
+
@@ -467,7 +471,7 @@
-
+
@@ -485,7 +489,7 @@
- 数据结构和算法
+ MISC
@@ -496,14 +500,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +515,7 @@
分类于
- 算法
+ 科研
@@ -525,10 +529,12 @@
- 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
+ Title: A MIxed Strategy-Aware Model Integrating
+COMET for Emotional Support Conversation
+
@@ -559,7 +565,7 @@
-
+
@@ -577,7 +583,7 @@
- SpringMVC
+ KEMI
@@ -588,14 +594,14 @@
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
- 实习日志 + LLM-RLHF
发表于
+
-
-
-
-
-
-
- 更新于
-
-
-
-
-
-
- 分类于
-
- 工作
-
+
@@ -528,10 +488,10 @@
- 写周报给自己看!哈哈哈
+ LLM人工对齐算法
@@ -562,7 +522,7 @@
-
+
@@ -580,7 +540,7 @@
- 如何工作
+ Transformers 使用入门
@@ -590,22 +550,15 @@
发表于
-
-
+
-
+
- 分类于
-
- 工作
-
- ,
-
- 思考
-
+ 更新于
+
@@ -618,10 +571,10 @@
- 工作与学习不同,不只是“唯分数论”,更要妥善处理人际关系、高效沟通等等。这并不是什么高大上的真理,而是和吃饭喝水一样普通的事情。
+ Transformers & NLP 相关库及实现
@@ -652,7 +605,7 @@
-
+
@@ -670,7 +623,7 @@
- 机器学习基础
+ 大模型微调方法
@@ -681,14 +634,23 @@
发表于
-
+
更新于
-
+
+
+
+
+
+
+ 分类于
+
+ LLM微调
+
@@ -701,10 +663,10 @@
- 机器学习是采用真实世界中采样的一小部分数据,并且希望模型能够对于未知数据有不错的泛化性能。
+ 微调的理论基础,总结了至今为止较优的参数高效微调(Parameter-Efficient Fine-Tuning)的方法和低精度微调量化
@@ -735,7 +697,7 @@
-
+
@@ -753,7 +715,7 @@
- Docker
+ 实习日志
@@ -764,14 +726,14 @@
发表于
-
+
更新于
-
+
@@ -779,7 +741,7 @@
分类于
- 开发工具
+ 工作
@@ -793,10 +755,10 @@
- 容器虚拟化技术,后续进一步学习 k8s
+ 写周报给自己看!哈哈哈
@@ -827,7 +789,7 @@
-
+
@@ -845,7 +807,7 @@
- 设计模式
+ 如何工作
@@ -855,15 +817,9 @@
发表于
+
-
-
-
-
-
-
- 更新于
-
+
@@ -871,7 +827,11 @@
分类于
- Java基础
+ 工作
+
+ ,
+
+ 思考
@@ -885,10 +845,10 @@
- 设计模式与其具体实现
+ 工作与学习不同,不只是“唯分数论”,更要妥善处理人际关系、高效沟通等等。这并不是什么高大上的真理,而是和吃饭喝水一样普通的事情。
@@ -919,7 +879,7 @@
-
+
@@ -937,7 +897,7 @@
- 模拟面试题
+ 机器学习基础
@@ -948,23 +908,14 @@
发表于
-
+
更新于
-
-
-
-
-
-
- 分类于
-
- 工作
-
+
@@ -977,10 +928,10 @@
- 汇总记录面试题,方便复习和面试模拟
+ 机器学习是采用真实世界中采样的一小部分数据,并且希望模型能够对于未知数据有不错的泛化性能。
@@ -1011,7 +962,7 @@
-
+
@@ -1029,7 +980,7 @@
- 操作系统
+ Docker
@@ -1040,14 +991,14 @@
发表于
-
+
更新于
-
+
@@ -1055,7 +1006,7 @@
分类于
- 八股文
+ 开发工具
@@ -1069,10 +1020,10 @@
- 待进一步学习
+ 容器虚拟化技术,待后续进一步学习 k8s
diff --git a/os/index.html b/os/index.html
index 1246028..da50706 100644
--- a/os/index.html
+++ b/os/index.html
@@ -156,18 +156,18 @@
@@ -264,8 +264,8 @@ 虚拟内存
只会访问虚拟内存地址,在操作总线前,通过一个地址转换硬件将虚拟内存地址转换为物理内存地址
进程隔离:将虚拟内存映射到物理内存,进程之间的地址空间相互隔离,互不干扰
虚拟内存空间:
-
-
+
+
用户态虚拟内存空间是相互隔离相互独立的;内核虚拟内存空间是各个进程共享的;
进程管理
数据结构 PCB
@@ -345,8 +345,8 @@ I/O 多路复用
diff --git a/page/2/index.html b/page/2/index.html
index 83089c0..0a32feb 100644
--- a/page/2/index.html
+++ b/page/2/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- Redis
+ 设计模式
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 数据库
+ Java基础
@@ -249,10 +249,10 @@
- Redis 基础
+ 项目架构的设计模式,和Java开发中的具体实现
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- MySQL
+ 模拟面试题
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- 数据库
+ 工作
@@ -341,10 +341,10 @@
- MySQL 基础,包括索引、事务、锁、日志、BufferPool等
+ 汇总记录面试题,方便复习和面试模拟
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 如何保持专注
+ 操作系统
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 思考
+ 八股文
@@ -433,10 +433,10 @@
- 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
+ 待进一步学习
@@ -467,7 +467,7 @@
-
+
@@ -485,7 +485,7 @@
- Java 常用数据结构的底层实现
+ 如何保持专注
@@ -496,14 +496,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +511,7 @@
分类于
- Java基础
+ 思考
@@ -525,10 +525,10 @@
- ArrayList、LinkedList、HashMap、ConcurrentHashMap 的底层源码剖析
+ 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
@@ -687,7 +687,7 @@
更新于
-
+
@@ -743,7 +743,7 @@
-
+
@@ -761,7 +761,7 @@
- ThreadPoolExecutor 和 CompletableFuture 实践
+ 实习面试题汇总
@@ -772,14 +772,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +787,7 @@
分类于
- Java基础
+ 工作
@@ -801,10 +801,10 @@
- 线程池的创建、使用方法,以及如何正确构造有父子关系、先后关系、与或关系的多线程并发场景。
+ 2024 实习投递面试题目汇总
@@ -835,7 +835,7 @@
-
+
@@ -853,7 +853,7 @@
- Rpc 中间件
+ 实习笔试题汇总
@@ -864,14 +864,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +879,7 @@
分类于
- Java开发
+ 工作
@@ -893,10 +893,10 @@
- Rpc 框架搭建过程遇到的问题、Dubbo 使用过程遇到的问题
+ 2024 实习投递笔试题目汇总
@@ -927,7 +927,7 @@
-
+
@@ -945,7 +945,7 @@
- Java 并发锁
+ 计算机网络
@@ -956,14 +956,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +971,7 @@
分类于
- Java基础
+ 八股文
@@ -985,15 +985,10 @@
- Java.util.concurrent 中有很多 Java 并发相关工具,例如 锁
-ReentrantLock
、线程 Callable
-FutureTask
、信号量 Semaphore
、共享锁
-CountDownLatch
-此外 Java 原生的 volatile
和 synchronized
-关键字也是并发编程的关键。
+ 如果我是一串电信号,我要去向何方呢?
@@ -1024,7 +1019,7 @@
-
+
@@ -1042,7 +1037,7 @@
- 实习面试题汇总
+ 数据结构和算法
@@ -1053,14 +1048,14 @@
发表于
-
+
更新于
-
+
@@ -1068,7 +1063,7 @@
分类于
- 工作
+ 算法
@@ -1082,10 +1077,10 @@
- 2024 实习投递面试题目汇总
+ 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
diff --git a/page/3/index.html b/page/3/index.html
index 85715e6..da7cbd9 100644
--- a/page/3/index.html
+++ b/page/3/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- 实习笔试题汇总
+ Git 文档阅读
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 工作
+ 开发工具
@@ -249,10 +249,10 @@
- 2024 实习投递笔试题目汇总
+ Git 文档阅读笔记和常用命令集合
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- Java 并发基础
+ ESConv
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- Java基础
+ 科研
@@ -341,10 +341,10 @@
- JMM、ThreadLocal
+ Title: Towards Emotional Support Dialog Systems
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 计算机网络
+ BlenderBot
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 八股文
+ 科研
@@ -433,10 +433,14 @@
- 如果我是一串电信号,我要去向何方呢?
+ Title: Recipes for building an open-domain
+chatbot
+
+FaceBook 在本文中提出了 BlenderBot 编解码器模型
+
@@ -467,7 +471,7 @@
-
+
@@ -485,7 +489,7 @@
- 数据结构和算法
+ MISC
@@ -496,14 +500,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +515,7 @@
分类于
- 算法
+ 科研
@@ -525,10 +529,12 @@
- 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
+ Title: A MIxed Strategy-Aware Model Integrating
+COMET for Emotional Support Conversation
+
@@ -559,7 +565,7 @@
-
+
@@ -577,7 +583,7 @@
- SpringMVC
+ KEMI
@@ -588,14 +594,14 @@
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
写周报给自己看!哈哈哈
+LLM人工对齐算法
@@ -562,7 +522,7 @@
-
+
@@ -580,7 +540,7 @@
- 如何工作
+ Transformers 使用入门
@@ -590,22 +550,15 @@
发表于
-
-
+
-
+
- 分类于
-
- 工作
-
- ,
-
- 思考
-
+ 更新于
+
@@ -618,10 +571,10 @@
- 工作与学习不同,不只是“唯分数论”,更要妥善处理人际关系、高效沟通等等。这并不是什么高大上的真理,而是和吃饭喝水一样普通的事情。
+ Transformers & NLP 相关库及实现
@@ -652,7 +605,7 @@
-
+
@@ -670,7 +623,7 @@
- 机器学习基础
+ 大模型微调方法
@@ -681,14 +634,23 @@
发表于
-
+
更新于
-
+
+
+
+
+
+
+ 分类于
+
+ LLM微调
+
@@ -701,10 +663,10 @@
- 机器学习是采用真实世界中采样的一小部分数据,并且希望模型能够对于未知数据有不错的泛化性能。
+ 微调的理论基础,总结了至今为止较优的参数高效微调(Parameter-Efficient Fine-Tuning)的方法和低精度微调量化
@@ -735,7 +697,7 @@
-
+
@@ -753,7 +715,7 @@
- Docker
+ 实习日志
@@ -764,14 +726,14 @@
发表于
-
+
更新于
-
+
@@ -779,7 +741,7 @@
分类于
- 开发工具
+ 工作
@@ -793,10 +755,10 @@
- 容器虚拟化技术,后续进一步学习 k8s
+ 写周报给自己看!哈哈哈
@@ -827,7 +789,7 @@
-
+
@@ -845,7 +807,7 @@
- 设计模式
+ 如何工作
@@ -855,15 +817,9 @@
发表于
+
-
-
-
-
-
-
- 更新于
-
+
@@ -871,7 +827,11 @@
分类于
- Java基础
+ 工作
+
+ ,
+
+ 思考
@@ -885,10 +845,10 @@
- 设计模式与其具体实现
+ 工作与学习不同,不只是“唯分数论”,更要妥善处理人际关系、高效沟通等等。这并不是什么高大上的真理,而是和吃饭喝水一样普通的事情。
@@ -919,7 +879,7 @@
-
+
@@ -937,7 +897,7 @@
- 模拟面试题
+ 机器学习基础
@@ -948,23 +908,14 @@
发表于
-
+
更新于
-
-
-
-
-
-
- 分类于
-
- 工作
-
+
@@ -977,10 +928,10 @@
- 汇总记录面试题,方便复习和面试模拟
+ 机器学习是采用真实世界中采样的一小部分数据,并且希望模型能够对于未知数据有不错的泛化性能。
@@ -1011,7 +962,7 @@
-
+
@@ -1029,7 +980,7 @@
- 操作系统
+ Docker
@@ -1040,14 +991,14 @@
发表于
-
+
更新于
-
+
@@ -1055,7 +1006,7 @@
分类于
- 八股文
+ 开发工具
@@ -1069,10 +1020,10 @@
- 待进一步学习
+ 容器虚拟化技术,待后续进一步学习 k8s
diff --git a/os/index.html b/os/index.html
index 1246028..da50706 100644
--- a/os/index.html
+++ b/os/index.html
@@ -156,18 +156,18 @@
@@ -264,8 +264,8 @@ 虚拟内存
只会访问虚拟内存地址,在操作总线前,通过一个地址转换硬件将虚拟内存地址转换为物理内存地址
进程隔离:将虚拟内存映射到物理内存,进程之间的地址空间相互隔离,互不干扰
虚拟内存空间:
-
-
+
+
用户态虚拟内存空间是相互隔离相互独立的;内核虚拟内存空间是各个进程共享的;
进程管理
数据结构 PCB
@@ -345,8 +345,8 @@ I/O 多路复用
diff --git a/page/2/index.html b/page/2/index.html
index 83089c0..0a32feb 100644
--- a/page/2/index.html
+++ b/page/2/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- Redis
+ 设计模式
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 数据库
+ Java基础
@@ -249,10 +249,10 @@
- Redis 基础
+ 项目架构的设计模式,和Java开发中的具体实现
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- MySQL
+ 模拟面试题
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- 数据库
+ 工作
@@ -341,10 +341,10 @@
- MySQL 基础,包括索引、事务、锁、日志、BufferPool等
+ 汇总记录面试题,方便复习和面试模拟
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 如何保持专注
+ 操作系统
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 思考
+ 八股文
@@ -433,10 +433,10 @@
- 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
+ 待进一步学习
@@ -467,7 +467,7 @@
-
+
@@ -485,7 +485,7 @@
- Java 常用数据结构的底层实现
+ 如何保持专注
@@ -496,14 +496,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +511,7 @@
分类于
- Java基础
+ 思考
@@ -525,10 +525,10 @@
- ArrayList、LinkedList、HashMap、ConcurrentHashMap 的底层源码剖析
+ 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
@@ -687,7 +687,7 @@
更新于
-
+
@@ -743,7 +743,7 @@
-
+
@@ -761,7 +761,7 @@
- ThreadPoolExecutor 和 CompletableFuture 实践
+ 实习面试题汇总
@@ -772,14 +772,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +787,7 @@
分类于
- Java基础
+ 工作
@@ -801,10 +801,10 @@
- 线程池的创建、使用方法,以及如何正确构造有父子关系、先后关系、与或关系的多线程并发场景。
+ 2024 实习投递面试题目汇总
@@ -835,7 +835,7 @@
-
+
@@ -853,7 +853,7 @@
- Rpc 中间件
+ 实习笔试题汇总
@@ -864,14 +864,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +879,7 @@
分类于
- Java开发
+ 工作
@@ -893,10 +893,10 @@
- Rpc 框架搭建过程遇到的问题、Dubbo 使用过程遇到的问题
+ 2024 实习投递笔试题目汇总
@@ -927,7 +927,7 @@
-
+
@@ -945,7 +945,7 @@
- Java 并发锁
+ 计算机网络
@@ -956,14 +956,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +971,7 @@
分类于
- Java基础
+ 八股文
@@ -985,15 +985,10 @@
- Java.util.concurrent 中有很多 Java 并发相关工具,例如 锁
-ReentrantLock
、线程 Callable
-FutureTask
、信号量 Semaphore
、共享锁
-CountDownLatch
-此外 Java 原生的 volatile
和 synchronized
-关键字也是并发编程的关键。
+ 如果我是一串电信号,我要去向何方呢?
@@ -1024,7 +1019,7 @@
-
+
@@ -1042,7 +1037,7 @@
- 实习面试题汇总
+ 数据结构和算法
@@ -1053,14 +1048,14 @@
发表于
-
+
更新于
-
+
@@ -1068,7 +1063,7 @@
分类于
- 工作
+ 算法
@@ -1082,10 +1077,10 @@
- 2024 实习投递面试题目汇总
+ 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
diff --git a/page/3/index.html b/page/3/index.html
index 85715e6..da7cbd9 100644
--- a/page/3/index.html
+++ b/page/3/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- 实习笔试题汇总
+ Git 文档阅读
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 工作
+ 开发工具
@@ -249,10 +249,10 @@
- 2024 实习投递笔试题目汇总
+ Git 文档阅读笔记和常用命令集合
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- Java 并发基础
+ ESConv
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- Java基础
+ 科研
@@ -341,10 +341,10 @@
- JMM、ThreadLocal
+ Title: Towards Emotional Support Dialog Systems
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 计算机网络
+ BlenderBot
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 八股文
+ 科研
@@ -433,10 +433,14 @@
- 如果我是一串电信号,我要去向何方呢?
+ Title: Recipes for building an open-domain
+chatbot
+
+FaceBook 在本文中提出了 BlenderBot 编解码器模型
+
@@ -467,7 +471,7 @@
-
+
@@ -485,7 +489,7 @@
- 数据结构和算法
+ MISC
@@ -496,14 +500,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +515,7 @@
分类于
- 算法
+ 科研
@@ -525,10 +529,12 @@
- 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
+ Title: A MIxed Strategy-Aware Model Integrating
+COMET for Emotional Support Conversation
+
@@ -559,7 +565,7 @@
-
+
@@ -577,7 +583,7 @@
- SpringMVC
+ KEMI
@@ -588,14 +594,14 @@
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
- 如何工作 + Transformers 使用入门
发表于
-
-
+
-
+
- 分类于
-
- 工作
-
- ,
-
- 思考
-
+ 更新于
+
@@ -618,10 +571,10 @@
- 工作与学习不同,不只是“唯分数论”,更要妥善处理人际关系、高效沟通等等。这并不是什么高大上的真理,而是和吃饭喝水一样普通的事情。
+ Transformers & NLP 相关库及实现
@@ -652,7 +605,7 @@
-
+
@@ -670,7 +623,7 @@
- 机器学习基础
+ 大模型微调方法
@@ -681,14 +634,23 @@
发表于
-
+
更新于
-
+
+
+
+
+
+
+ 分类于
+
+ LLM微调
+
@@ -701,10 +663,10 @@
- 机器学习是采用真实世界中采样的一小部分数据,并且希望模型能够对于未知数据有不错的泛化性能。
+ 微调的理论基础,总结了至今为止较优的参数高效微调(Parameter-Efficient Fine-Tuning)的方法和低精度微调量化
@@ -735,7 +697,7 @@
-
+
@@ -753,7 +715,7 @@
- Docker
+ 实习日志
@@ -764,14 +726,14 @@
发表于
-
+
更新于
-
+
@@ -779,7 +741,7 @@
分类于
- 开发工具
+ 工作
@@ -793,10 +755,10 @@
- 容器虚拟化技术,后续进一步学习 k8s
+ 写周报给自己看!哈哈哈
@@ -827,7 +789,7 @@
-
+
@@ -845,7 +807,7 @@
- 设计模式
+ 如何工作
@@ -855,15 +817,9 @@
发表于
+
-
-
-
-
-
-
- 更新于
-
+
@@ -871,7 +827,11 @@
分类于
- Java基础
+ 工作
+
+ ,
+
+ 思考
@@ -885,10 +845,10 @@
- 设计模式与其具体实现
+ 工作与学习不同,不只是“唯分数论”,更要妥善处理人际关系、高效沟通等等。这并不是什么高大上的真理,而是和吃饭喝水一样普通的事情。
@@ -919,7 +879,7 @@
-
+
@@ -937,7 +897,7 @@
- 模拟面试题
+ 机器学习基础
@@ -948,23 +908,14 @@
发表于
-
+
更新于
-
-
-
-
-
-
- 分类于
-
- 工作
-
+
@@ -977,10 +928,10 @@
- 汇总记录面试题,方便复习和面试模拟
+ 机器学习是采用真实世界中采样的一小部分数据,并且希望模型能够对于未知数据有不错的泛化性能。
@@ -1011,7 +962,7 @@
-
+
@@ -1029,7 +980,7 @@
- 操作系统
+ Docker
@@ -1040,14 +991,14 @@
发表于
-
+
更新于
-
+
@@ -1055,7 +1006,7 @@
分类于
- 八股文
+ 开发工具
@@ -1069,10 +1020,10 @@
- 待进一步学习
+ 容器虚拟化技术,待后续进一步学习 k8s
diff --git a/os/index.html b/os/index.html
index 1246028..da50706 100644
--- a/os/index.html
+++ b/os/index.html
@@ -156,18 +156,18 @@
@@ -264,8 +264,8 @@ 虚拟内存
只会访问虚拟内存地址,在操作总线前,通过一个地址转换硬件将虚拟内存地址转换为物理内存地址
进程隔离:将虚拟内存映射到物理内存,进程之间的地址空间相互隔离,互不干扰
虚拟内存空间:
-
-
+
+
用户态虚拟内存空间是相互隔离相互独立的;内核虚拟内存空间是各个进程共享的;
进程管理
数据结构 PCB
@@ -345,8 +345,8 @@ I/O 多路复用
diff --git a/page/2/index.html b/page/2/index.html
index 83089c0..0a32feb 100644
--- a/page/2/index.html
+++ b/page/2/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- Redis
+ 设计模式
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 数据库
+ Java基础
@@ -249,10 +249,10 @@
- Redis 基础
+ 项目架构的设计模式,和Java开发中的具体实现
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- MySQL
+ 模拟面试题
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- 数据库
+ 工作
@@ -341,10 +341,10 @@
- MySQL 基础,包括索引、事务、锁、日志、BufferPool等
+ 汇总记录面试题,方便复习和面试模拟
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 如何保持专注
+ 操作系统
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 思考
+ 八股文
@@ -433,10 +433,10 @@
- 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
+ 待进一步学习
@@ -467,7 +467,7 @@
-
+
@@ -485,7 +485,7 @@
- Java 常用数据结构的底层实现
+ 如何保持专注
@@ -496,14 +496,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +511,7 @@
分类于
- Java基础
+ 思考
@@ -525,10 +525,10 @@
- ArrayList、LinkedList、HashMap、ConcurrentHashMap 的底层源码剖析
+ 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
@@ -687,7 +687,7 @@
更新于
-
+
@@ -743,7 +743,7 @@
-
+
@@ -761,7 +761,7 @@
- ThreadPoolExecutor 和 CompletableFuture 实践
+ 实习面试题汇总
@@ -772,14 +772,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +787,7 @@
分类于
- Java基础
+ 工作
@@ -801,10 +801,10 @@
- 线程池的创建、使用方法,以及如何正确构造有父子关系、先后关系、与或关系的多线程并发场景。
+ 2024 实习投递面试题目汇总
@@ -835,7 +835,7 @@
-
+
@@ -853,7 +853,7 @@
- Rpc 中间件
+ 实习笔试题汇总
@@ -864,14 +864,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +879,7 @@
分类于
- Java开发
+ 工作
@@ -893,10 +893,10 @@
- Rpc 框架搭建过程遇到的问题、Dubbo 使用过程遇到的问题
+ 2024 实习投递笔试题目汇总
@@ -927,7 +927,7 @@
-
+
@@ -945,7 +945,7 @@
- Java 并发锁
+ 计算机网络
@@ -956,14 +956,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +971,7 @@
分类于
- Java基础
+ 八股文
@@ -985,15 +985,10 @@
- Java.util.concurrent 中有很多 Java 并发相关工具,例如 锁
-ReentrantLock
、线程 Callable
-FutureTask
、信号量 Semaphore
、共享锁
-CountDownLatch
-此外 Java 原生的 volatile
和 synchronized
-关键字也是并发编程的关键。
+ 如果我是一串电信号,我要去向何方呢?
@@ -1024,7 +1019,7 @@
-
+
@@ -1042,7 +1037,7 @@
- 实习面试题汇总
+ 数据结构和算法
@@ -1053,14 +1048,14 @@
发表于
-
+
更新于
-
+
@@ -1068,7 +1063,7 @@
分类于
- 工作
+ 算法
@@ -1082,10 +1077,10 @@
- 2024 实习投递面试题目汇总
+ 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
diff --git a/page/3/index.html b/page/3/index.html
index 85715e6..da7cbd9 100644
--- a/page/3/index.html
+++ b/page/3/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- 实习笔试题汇总
+ Git 文档阅读
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 工作
+ 开发工具
@@ -249,10 +249,10 @@
- 2024 实习投递笔试题目汇总
+ Git 文档阅读笔记和常用命令集合
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- Java 并发基础
+ ESConv
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- Java基础
+ 科研
@@ -341,10 +341,10 @@
- JMM、ThreadLocal
+ Title: Towards Emotional Support Dialog Systems
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 计算机网络
+ BlenderBot
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 八股文
+ 科研
@@ -433,10 +433,14 @@
- 如果我是一串电信号,我要去向何方呢?
+ Title: Recipes for building an open-domain
+chatbot
+
+FaceBook 在本文中提出了 BlenderBot 编解码器模型
+
@@ -467,7 +471,7 @@
-
+
@@ -485,7 +489,7 @@
- 数据结构和算法
+ MISC
@@ -496,14 +500,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +515,7 @@
分类于
- 算法
+ 科研
@@ -525,10 +529,12 @@
- 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
+ Title: A MIxed Strategy-Aware Model Integrating
+COMET for Emotional Support Conversation
+
@@ -559,7 +565,7 @@
-
+
@@ -577,7 +583,7 @@
- SpringMVC
+ KEMI
@@ -588,14 +594,14 @@
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
工作与学习不同,不只是“唯分数论”,更要妥善处理人际关系、高效沟通等等。这并不是什么高大上的真理,而是和吃饭喝水一样普通的事情。
+Transformers & NLP 相关库及实现
@@ -652,7 +605,7 @@
-
+
@@ -670,7 +623,7 @@
- 机器学习基础
+ 大模型微调方法
@@ -681,14 +634,23 @@
发表于
-
+
更新于
-
+
+
+
+
+
+
+ 分类于
+
+ LLM微调
+
@@ -701,10 +663,10 @@
- 机器学习是采用真实世界中采样的一小部分数据,并且希望模型能够对于未知数据有不错的泛化性能。
+ 微调的理论基础,总结了至今为止较优的参数高效微调(Parameter-Efficient Fine-Tuning)的方法和低精度微调量化
@@ -735,7 +697,7 @@
-
+
@@ -753,7 +715,7 @@
- Docker
+ 实习日志
@@ -764,14 +726,14 @@
发表于
-
+
更新于
-
+
@@ -779,7 +741,7 @@
分类于
- 开发工具
+ 工作
@@ -793,10 +755,10 @@
- 容器虚拟化技术,后续进一步学习 k8s
+ 写周报给自己看!哈哈哈
@@ -827,7 +789,7 @@
-
+
@@ -845,7 +807,7 @@
- 设计模式
+ 如何工作
@@ -855,15 +817,9 @@
发表于
+
-
-
-
-
-
-
- 更新于
-
+
@@ -871,7 +827,11 @@
分类于
- Java基础
+ 工作
+
+ ,
+
+ 思考
@@ -885,10 +845,10 @@
- 设计模式与其具体实现
+ 工作与学习不同,不只是“唯分数论”,更要妥善处理人际关系、高效沟通等等。这并不是什么高大上的真理,而是和吃饭喝水一样普通的事情。
@@ -919,7 +879,7 @@
-
+
@@ -937,7 +897,7 @@
- 模拟面试题
+ 机器学习基础
@@ -948,23 +908,14 @@
发表于
-
+
更新于
-
-
-
-
-
-
- 分类于
-
- 工作
-
+
@@ -977,10 +928,10 @@
- 汇总记录面试题,方便复习和面试模拟
+ 机器学习是采用真实世界中采样的一小部分数据,并且希望模型能够对于未知数据有不错的泛化性能。
@@ -1011,7 +962,7 @@
-
+
@@ -1029,7 +980,7 @@
- 操作系统
+ Docker
@@ -1040,14 +991,14 @@
发表于
-
+
更新于
-
+
@@ -1055,7 +1006,7 @@
分类于
- 八股文
+ 开发工具
@@ -1069,10 +1020,10 @@
- 待进一步学习
+ 容器虚拟化技术,待后续进一步学习 k8s
diff --git a/os/index.html b/os/index.html
index 1246028..da50706 100644
--- a/os/index.html
+++ b/os/index.html
@@ -156,18 +156,18 @@
@@ -264,8 +264,8 @@ 虚拟内存
只会访问虚拟内存地址,在操作总线前,通过一个地址转换硬件将虚拟内存地址转换为物理内存地址
进程隔离:将虚拟内存映射到物理内存,进程之间的地址空间相互隔离,互不干扰
虚拟内存空间:
-
-
+
+
用户态虚拟内存空间是相互隔离相互独立的;内核虚拟内存空间是各个进程共享的;
进程管理
数据结构 PCB
@@ -345,8 +345,8 @@ I/O 多路复用
diff --git a/page/2/index.html b/page/2/index.html
index 83089c0..0a32feb 100644
--- a/page/2/index.html
+++ b/page/2/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- Redis
+ 设计模式
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 数据库
+ Java基础
@@ -249,10 +249,10 @@
- Redis 基础
+ 项目架构的设计模式,和Java开发中的具体实现
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- MySQL
+ 模拟面试题
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- 数据库
+ 工作
@@ -341,10 +341,10 @@
- MySQL 基础,包括索引、事务、锁、日志、BufferPool等
+ 汇总记录面试题,方便复习和面试模拟
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 如何保持专注
+ 操作系统
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 思考
+ 八股文
@@ -433,10 +433,10 @@
- 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
+ 待进一步学习
@@ -467,7 +467,7 @@
-
+
@@ -485,7 +485,7 @@
- Java 常用数据结构的底层实现
+ 如何保持专注
@@ -496,14 +496,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +511,7 @@
分类于
- Java基础
+ 思考
@@ -525,10 +525,10 @@
- ArrayList、LinkedList、HashMap、ConcurrentHashMap 的底层源码剖析
+ 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
@@ -687,7 +687,7 @@
更新于
-
+
@@ -743,7 +743,7 @@
-
+
@@ -761,7 +761,7 @@
- ThreadPoolExecutor 和 CompletableFuture 实践
+ 实习面试题汇总
@@ -772,14 +772,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +787,7 @@
分类于
- Java基础
+ 工作
@@ -801,10 +801,10 @@
- 线程池的创建、使用方法,以及如何正确构造有父子关系、先后关系、与或关系的多线程并发场景。
+ 2024 实习投递面试题目汇总
@@ -835,7 +835,7 @@
-
+
@@ -853,7 +853,7 @@
- Rpc 中间件
+ 实习笔试题汇总
@@ -864,14 +864,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +879,7 @@
分类于
- Java开发
+ 工作
@@ -893,10 +893,10 @@
- Rpc 框架搭建过程遇到的问题、Dubbo 使用过程遇到的问题
+ 2024 实习投递笔试题目汇总
@@ -927,7 +927,7 @@
-
+
@@ -945,7 +945,7 @@
- Java 并发锁
+ 计算机网络
@@ -956,14 +956,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +971,7 @@
分类于
- Java基础
+ 八股文
@@ -985,15 +985,10 @@
- Java.util.concurrent 中有很多 Java 并发相关工具,例如 锁
-ReentrantLock
、线程 Callable
-FutureTask
、信号量 Semaphore
、共享锁
-CountDownLatch
-此外 Java 原生的 volatile
和 synchronized
-关键字也是并发编程的关键。
+ 如果我是一串电信号,我要去向何方呢?
@@ -1024,7 +1019,7 @@
-
+
@@ -1042,7 +1037,7 @@
- 实习面试题汇总
+ 数据结构和算法
@@ -1053,14 +1048,14 @@
发表于
-
+
更新于
-
+
@@ -1068,7 +1063,7 @@
分类于
- 工作
+ 算法
@@ -1082,10 +1077,10 @@
- 2024 实习投递面试题目汇总
+ 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
diff --git a/page/3/index.html b/page/3/index.html
index 85715e6..da7cbd9 100644
--- a/page/3/index.html
+++ b/page/3/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- 实习笔试题汇总
+ Git 文档阅读
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 工作
+ 开发工具
@@ -249,10 +249,10 @@
- 2024 实习投递笔试题目汇总
+ Git 文档阅读笔记和常用命令集合
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- Java 并发基础
+ ESConv
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- Java基础
+ 科研
@@ -341,10 +341,10 @@
- JMM、ThreadLocal
+ Title: Towards Emotional Support Dialog Systems
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 计算机网络
+ BlenderBot
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 八股文
+ 科研
@@ -433,10 +433,14 @@
- 如果我是一串电信号,我要去向何方呢?
+ Title: Recipes for building an open-domain
+chatbot
+
+FaceBook 在本文中提出了 BlenderBot 编解码器模型
+
@@ -467,7 +471,7 @@
-
+
@@ -485,7 +489,7 @@
- 数据结构和算法
+ MISC
@@ -496,14 +500,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +515,7 @@
分类于
- 算法
+ 科研
@@ -525,10 +529,12 @@
- 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
+ Title: A MIxed Strategy-Aware Model Integrating
+COMET for Emotional Support Conversation
+
@@ -559,7 +565,7 @@
-
+
@@ -577,7 +583,7 @@
- SpringMVC
+ KEMI
@@ -588,14 +594,14 @@
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
- 机器学习基础 + 大模型微调方法
发表于
-
+
更新于
-
+
+
+
+
+
+
+ 分类于
+
+ LLM微调
+
@@ -701,10 +663,10 @@
- 机器学习是采用真实世界中采样的一小部分数据,并且希望模型能够对于未知数据有不错的泛化性能。
+ 微调的理论基础,总结了至今为止较优的参数高效微调(Parameter-Efficient Fine-Tuning)的方法和低精度微调量化
@@ -735,7 +697,7 @@
-
+
@@ -753,7 +715,7 @@
- Docker
+ 实习日志
@@ -764,14 +726,14 @@
发表于
-
+
更新于
-
+
@@ -779,7 +741,7 @@
分类于
- 开发工具
+ 工作
@@ -793,10 +755,10 @@
- 容器虚拟化技术,后续进一步学习 k8s
+ 写周报给自己看!哈哈哈
@@ -827,7 +789,7 @@
-
+
@@ -845,7 +807,7 @@
- 设计模式
+ 如何工作
@@ -855,15 +817,9 @@
发表于
+
-
-
-
-
-
-
- 更新于
-
+
@@ -871,7 +827,11 @@
分类于
- Java基础
+ 工作
+
+ ,
+
+ 思考
@@ -885,10 +845,10 @@
- 设计模式与其具体实现
+ 工作与学习不同,不只是“唯分数论”,更要妥善处理人际关系、高效沟通等等。这并不是什么高大上的真理,而是和吃饭喝水一样普通的事情。
@@ -919,7 +879,7 @@
-
+
@@ -937,7 +897,7 @@
- 模拟面试题
+ 机器学习基础
@@ -948,23 +908,14 @@
发表于
-
+
更新于
-
-
-
-
-
-
- 分类于
-
- 工作
-
+
@@ -977,10 +928,10 @@
- 汇总记录面试题,方便复习和面试模拟
+ 机器学习是采用真实世界中采样的一小部分数据,并且希望模型能够对于未知数据有不错的泛化性能。
@@ -1011,7 +962,7 @@
-
+
@@ -1029,7 +980,7 @@
- 操作系统
+ Docker
@@ -1040,14 +991,14 @@
发表于
-
+
更新于
-
+
@@ -1055,7 +1006,7 @@
分类于
- 八股文
+ 开发工具
@@ -1069,10 +1020,10 @@
- 待进一步学习
+ 容器虚拟化技术,待后续进一步学习 k8s
diff --git a/os/index.html b/os/index.html
index 1246028..da50706 100644
--- a/os/index.html
+++ b/os/index.html
@@ -156,18 +156,18 @@
@@ -264,8 +264,8 @@ 虚拟内存
只会访问虚拟内存地址,在操作总线前,通过一个地址转换硬件将虚拟内存地址转换为物理内存地址
进程隔离:将虚拟内存映射到物理内存,进程之间的地址空间相互隔离,互不干扰
虚拟内存空间:
-
-
+
+
用户态虚拟内存空间是相互隔离相互独立的;内核虚拟内存空间是各个进程共享的;
进程管理
数据结构 PCB
@@ -345,8 +345,8 @@ I/O 多路复用
diff --git a/page/2/index.html b/page/2/index.html
index 83089c0..0a32feb 100644
--- a/page/2/index.html
+++ b/page/2/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- Redis
+ 设计模式
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 数据库
+ Java基础
@@ -249,10 +249,10 @@
- Redis 基础
+ 项目架构的设计模式,和Java开发中的具体实现
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- MySQL
+ 模拟面试题
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- 数据库
+ 工作
@@ -341,10 +341,10 @@
- MySQL 基础,包括索引、事务、锁、日志、BufferPool等
+ 汇总记录面试题,方便复习和面试模拟
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 如何保持专注
+ 操作系统
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 思考
+ 八股文
@@ -433,10 +433,10 @@
- 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
+ 待进一步学习
@@ -467,7 +467,7 @@
-
+
@@ -485,7 +485,7 @@
- Java 常用数据结构的底层实现
+ 如何保持专注
@@ -496,14 +496,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +511,7 @@
分类于
- Java基础
+ 思考
@@ -525,10 +525,10 @@
- ArrayList、LinkedList、HashMap、ConcurrentHashMap 的底层源码剖析
+ 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
@@ -687,7 +687,7 @@
更新于
-
+
@@ -743,7 +743,7 @@
-
+
@@ -761,7 +761,7 @@
- ThreadPoolExecutor 和 CompletableFuture 实践
+ 实习面试题汇总
@@ -772,14 +772,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +787,7 @@
分类于
- Java基础
+ 工作
@@ -801,10 +801,10 @@
- 线程池的创建、使用方法,以及如何正确构造有父子关系、先后关系、与或关系的多线程并发场景。
+ 2024 实习投递面试题目汇总
@@ -835,7 +835,7 @@
-
+
@@ -853,7 +853,7 @@
- Rpc 中间件
+ 实习笔试题汇总
@@ -864,14 +864,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +879,7 @@
分类于
- Java开发
+ 工作
@@ -893,10 +893,10 @@
- Rpc 框架搭建过程遇到的问题、Dubbo 使用过程遇到的问题
+ 2024 实习投递笔试题目汇总
@@ -927,7 +927,7 @@
-
+
@@ -945,7 +945,7 @@
- Java 并发锁
+ 计算机网络
@@ -956,14 +956,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +971,7 @@
分类于
- Java基础
+ 八股文
@@ -985,15 +985,10 @@
- Java.util.concurrent 中有很多 Java 并发相关工具,例如 锁
-ReentrantLock
、线程 Callable
-FutureTask
、信号量 Semaphore
、共享锁
-CountDownLatch
-此外 Java 原生的 volatile
和 synchronized
-关键字也是并发编程的关键。
+ 如果我是一串电信号,我要去向何方呢?
@@ -1024,7 +1019,7 @@
-
+
@@ -1042,7 +1037,7 @@
- 实习面试题汇总
+ 数据结构和算法
@@ -1053,14 +1048,14 @@
发表于
-
+
更新于
-
+
@@ -1068,7 +1063,7 @@
分类于
- 工作
+ 算法
@@ -1082,10 +1077,10 @@
- 2024 实习投递面试题目汇总
+ 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
diff --git a/page/3/index.html b/page/3/index.html
index 85715e6..da7cbd9 100644
--- a/page/3/index.html
+++ b/page/3/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- 实习笔试题汇总
+ Git 文档阅读
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 工作
+ 开发工具
@@ -249,10 +249,10 @@
- 2024 实习投递笔试题目汇总
+ Git 文档阅读笔记和常用命令集合
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- Java 并发基础
+ ESConv
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- Java基础
+ 科研
@@ -341,10 +341,10 @@
- JMM、ThreadLocal
+ Title: Towards Emotional Support Dialog Systems
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 计算机网络
+ BlenderBot
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 八股文
+ 科研
@@ -433,10 +433,14 @@
- 如果我是一串电信号,我要去向何方呢?
+ Title: Recipes for building an open-domain
+chatbot
+
+FaceBook 在本文中提出了 BlenderBot 编解码器模型
+
@@ -467,7 +471,7 @@
-
+
@@ -485,7 +489,7 @@
- 数据结构和算法
+ MISC
@@ -496,14 +500,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +515,7 @@
分类于
- 算法
+ 科研
@@ -525,10 +529,12 @@
- 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
+ Title: A MIxed Strategy-Aware Model Integrating
+COMET for Emotional Support Conversation
+
@@ -559,7 +565,7 @@
-
+
@@ -577,7 +583,7 @@
- SpringMVC
+ KEMI
@@ -588,14 +594,14 @@
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
机器学习是采用真实世界中采样的一小部分数据,并且希望模型能够对于未知数据有不错的泛化性能。
+微调的理论基础,总结了至今为止较优的参数高效微调(Parameter-Efficient Fine-Tuning)的方法和低精度微调量化
@@ -735,7 +697,7 @@
-
+
@@ -753,7 +715,7 @@
- Docker
+ 实习日志
@@ -764,14 +726,14 @@
发表于
-
+
更新于
-
+
@@ -779,7 +741,7 @@
分类于
- 开发工具
+ 工作
@@ -793,10 +755,10 @@
- 容器虚拟化技术,后续进一步学习 k8s
+ 写周报给自己看!哈哈哈
@@ -827,7 +789,7 @@
-
+
@@ -845,7 +807,7 @@
- 设计模式
+ 如何工作
@@ -855,15 +817,9 @@
发表于
+
-
-
-
-
-
-
- 更新于
-
+
@@ -871,7 +827,11 @@
分类于
- Java基础
+ 工作
+
+ ,
+
+ 思考
@@ -885,10 +845,10 @@
- 设计模式与其具体实现
+ 工作与学习不同,不只是“唯分数论”,更要妥善处理人际关系、高效沟通等等。这并不是什么高大上的真理,而是和吃饭喝水一样普通的事情。
@@ -919,7 +879,7 @@
-
+
@@ -937,7 +897,7 @@
- 模拟面试题
+ 机器学习基础
@@ -948,23 +908,14 @@
发表于
-
+
更新于
-
-
-
-
-
-
- 分类于
-
- 工作
-
+
@@ -977,10 +928,10 @@
- 汇总记录面试题,方便复习和面试模拟
+ 机器学习是采用真实世界中采样的一小部分数据,并且希望模型能够对于未知数据有不错的泛化性能。
@@ -1011,7 +962,7 @@
-
+
@@ -1029,7 +980,7 @@
- 操作系统
+ Docker
@@ -1040,14 +991,14 @@
发表于
-
+
更新于
-
+
@@ -1055,7 +1006,7 @@
分类于
- 八股文
+ 开发工具
@@ -1069,10 +1020,10 @@
- 待进一步学习
+ 容器虚拟化技术,待后续进一步学习 k8s
diff --git a/os/index.html b/os/index.html
index 1246028..da50706 100644
--- a/os/index.html
+++ b/os/index.html
@@ -156,18 +156,18 @@
@@ -264,8 +264,8 @@ 虚拟内存
只会访问虚拟内存地址,在操作总线前,通过一个地址转换硬件将虚拟内存地址转换为物理内存地址
进程隔离:将虚拟内存映射到物理内存,进程之间的地址空间相互隔离,互不干扰
虚拟内存空间:
-
-
+
+
用户态虚拟内存空间是相互隔离相互独立的;内核虚拟内存空间是各个进程共享的;
进程管理
数据结构 PCB
@@ -345,8 +345,8 @@ I/O 多路复用
diff --git a/page/2/index.html b/page/2/index.html
index 83089c0..0a32feb 100644
--- a/page/2/index.html
+++ b/page/2/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- Redis
+ 设计模式
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 数据库
+ Java基础
@@ -249,10 +249,10 @@
- Redis 基础
+ 项目架构的设计模式,和Java开发中的具体实现
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- MySQL
+ 模拟面试题
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- 数据库
+ 工作
@@ -341,10 +341,10 @@
- MySQL 基础,包括索引、事务、锁、日志、BufferPool等
+ 汇总记录面试题,方便复习和面试模拟
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 如何保持专注
+ 操作系统
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 思考
+ 八股文
@@ -433,10 +433,10 @@
- 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
+ 待进一步学习
@@ -467,7 +467,7 @@
-
+
@@ -485,7 +485,7 @@
- Java 常用数据结构的底层实现
+ 如何保持专注
@@ -496,14 +496,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +511,7 @@
分类于
- Java基础
+ 思考
@@ -525,10 +525,10 @@
- ArrayList、LinkedList、HashMap、ConcurrentHashMap 的底层源码剖析
+ 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
@@ -687,7 +687,7 @@
更新于
-
+
@@ -743,7 +743,7 @@
-
+
@@ -761,7 +761,7 @@
- ThreadPoolExecutor 和 CompletableFuture 实践
+ 实习面试题汇总
@@ -772,14 +772,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +787,7 @@
分类于
- Java基础
+ 工作
@@ -801,10 +801,10 @@
- 线程池的创建、使用方法,以及如何正确构造有父子关系、先后关系、与或关系的多线程并发场景。
+ 2024 实习投递面试题目汇总
@@ -835,7 +835,7 @@
-
+
@@ -853,7 +853,7 @@
- Rpc 中间件
+ 实习笔试题汇总
@@ -864,14 +864,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +879,7 @@
分类于
- Java开发
+ 工作
@@ -893,10 +893,10 @@
- Rpc 框架搭建过程遇到的问题、Dubbo 使用过程遇到的问题
+ 2024 实习投递笔试题目汇总
@@ -927,7 +927,7 @@
-
+
@@ -945,7 +945,7 @@
- Java 并发锁
+ 计算机网络
@@ -956,14 +956,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +971,7 @@
分类于
- Java基础
+ 八股文
@@ -985,15 +985,10 @@
- Java.util.concurrent 中有很多 Java 并发相关工具,例如 锁
-ReentrantLock
、线程 Callable
-FutureTask
、信号量 Semaphore
、共享锁
-CountDownLatch
-此外 Java 原生的 volatile
和 synchronized
-关键字也是并发编程的关键。
+ 如果我是一串电信号,我要去向何方呢?
@@ -1024,7 +1019,7 @@
-
+
@@ -1042,7 +1037,7 @@
- 实习面试题汇总
+ 数据结构和算法
@@ -1053,14 +1048,14 @@
发表于
-
+
更新于
-
+
@@ -1068,7 +1063,7 @@
分类于
- 工作
+ 算法
@@ -1082,10 +1077,10 @@
- 2024 实习投递面试题目汇总
+ 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
diff --git a/page/3/index.html b/page/3/index.html
index 85715e6..da7cbd9 100644
--- a/page/3/index.html
+++ b/page/3/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- 实习笔试题汇总
+ Git 文档阅读
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 工作
+ 开发工具
@@ -249,10 +249,10 @@
- 2024 实习投递笔试题目汇总
+ Git 文档阅读笔记和常用命令集合
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- Java 并发基础
+ ESConv
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- Java基础
+ 科研
@@ -341,10 +341,10 @@
- JMM、ThreadLocal
+ Title: Towards Emotional Support Dialog Systems
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 计算机网络
+ BlenderBot
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 八股文
+ 科研
@@ -433,10 +433,14 @@
- 如果我是一串电信号,我要去向何方呢?
+ Title: Recipes for building an open-domain
+chatbot
+
+FaceBook 在本文中提出了 BlenderBot 编解码器模型
+
@@ -467,7 +471,7 @@
-
+
@@ -485,7 +489,7 @@
- 数据结构和算法
+ MISC
@@ -496,14 +500,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +515,7 @@
分类于
- 算法
+ 科研
@@ -525,10 +529,12 @@
- 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
+ Title: A MIxed Strategy-Aware Model Integrating
+COMET for Emotional Support Conversation
+
@@ -559,7 +565,7 @@
-
+
@@ -577,7 +583,7 @@
- SpringMVC
+ KEMI
@@ -588,14 +594,14 @@
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
- Docker + 实习日志
发表于
-
+
更新于
-
+
@@ -779,7 +741,7 @@
分类于
- 开发工具
+ 工作
@@ -793,10 +755,10 @@
- 容器虚拟化技术,后续进一步学习 k8s
+ 写周报给自己看!哈哈哈
@@ -827,7 +789,7 @@
-
+
@@ -845,7 +807,7 @@
- 设计模式
+ 如何工作
@@ -855,15 +817,9 @@
发表于
+
-
-
-
-
-
-
- 更新于
-
+
@@ -871,7 +827,11 @@
分类于
- Java基础
+ 工作
+
+ ,
+
+ 思考
@@ -885,10 +845,10 @@
- 设计模式与其具体实现
+ 工作与学习不同,不只是“唯分数论”,更要妥善处理人际关系、高效沟通等等。这并不是什么高大上的真理,而是和吃饭喝水一样普通的事情。
@@ -919,7 +879,7 @@
-
+
@@ -937,7 +897,7 @@
- 模拟面试题
+ 机器学习基础
@@ -948,23 +908,14 @@
发表于
-
+
更新于
-
-
-
-
-
-
- 分类于
-
- 工作
-
+
@@ -977,10 +928,10 @@
- 汇总记录面试题,方便复习和面试模拟
+ 机器学习是采用真实世界中采样的一小部分数据,并且希望模型能够对于未知数据有不错的泛化性能。
@@ -1011,7 +962,7 @@
-
+
@@ -1029,7 +980,7 @@
- 操作系统
+ Docker
@@ -1040,14 +991,14 @@
发表于
-
+
更新于
-
+
@@ -1055,7 +1006,7 @@
分类于
- 八股文
+ 开发工具
@@ -1069,10 +1020,10 @@
- 待进一步学习
+ 容器虚拟化技术,待后续进一步学习 k8s
diff --git a/os/index.html b/os/index.html
index 1246028..da50706 100644
--- a/os/index.html
+++ b/os/index.html
@@ -156,18 +156,18 @@
@@ -264,8 +264,8 @@ 虚拟内存
只会访问虚拟内存地址,在操作总线前,通过一个地址转换硬件将虚拟内存地址转换为物理内存地址
进程隔离:将虚拟内存映射到物理内存,进程之间的地址空间相互隔离,互不干扰
虚拟内存空间:
-
-
+
+
用户态虚拟内存空间是相互隔离相互独立的;内核虚拟内存空间是各个进程共享的;
进程管理
数据结构 PCB
@@ -345,8 +345,8 @@ I/O 多路复用
diff --git a/page/2/index.html b/page/2/index.html
index 83089c0..0a32feb 100644
--- a/page/2/index.html
+++ b/page/2/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- Redis
+ 设计模式
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 数据库
+ Java基础
@@ -249,10 +249,10 @@
- Redis 基础
+ 项目架构的设计模式,和Java开发中的具体实现
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- MySQL
+ 模拟面试题
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- 数据库
+ 工作
@@ -341,10 +341,10 @@
- MySQL 基础,包括索引、事务、锁、日志、BufferPool等
+ 汇总记录面试题,方便复习和面试模拟
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 如何保持专注
+ 操作系统
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 思考
+ 八股文
@@ -433,10 +433,10 @@
- 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
+ 待进一步学习
@@ -467,7 +467,7 @@
-
+
@@ -485,7 +485,7 @@
- Java 常用数据结构的底层实现
+ 如何保持专注
@@ -496,14 +496,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +511,7 @@
分类于
- Java基础
+ 思考
@@ -525,10 +525,10 @@
- ArrayList、LinkedList、HashMap、ConcurrentHashMap 的底层源码剖析
+ 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
@@ -687,7 +687,7 @@
更新于
-
+
@@ -743,7 +743,7 @@
-
+
@@ -761,7 +761,7 @@
- ThreadPoolExecutor 和 CompletableFuture 实践
+ 实习面试题汇总
@@ -772,14 +772,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +787,7 @@
分类于
- Java基础
+ 工作
@@ -801,10 +801,10 @@
- 线程池的创建、使用方法,以及如何正确构造有父子关系、先后关系、与或关系的多线程并发场景。
+ 2024 实习投递面试题目汇总
@@ -835,7 +835,7 @@
-
+
@@ -853,7 +853,7 @@
- Rpc 中间件
+ 实习笔试题汇总
@@ -864,14 +864,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +879,7 @@
分类于
- Java开发
+ 工作
@@ -893,10 +893,10 @@
- Rpc 框架搭建过程遇到的问题、Dubbo 使用过程遇到的问题
+ 2024 实习投递笔试题目汇总
@@ -927,7 +927,7 @@
-
+
@@ -945,7 +945,7 @@
- Java 并发锁
+ 计算机网络
@@ -956,14 +956,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +971,7 @@
分类于
- Java基础
+ 八股文
@@ -985,15 +985,10 @@
- Java.util.concurrent 中有很多 Java 并发相关工具,例如 锁
-ReentrantLock
、线程 Callable
-FutureTask
、信号量 Semaphore
、共享锁
-CountDownLatch
-此外 Java 原生的 volatile
和 synchronized
-关键字也是并发编程的关键。
+ 如果我是一串电信号,我要去向何方呢?
@@ -1024,7 +1019,7 @@
-
+
@@ -1042,7 +1037,7 @@
- 实习面试题汇总
+ 数据结构和算法
@@ -1053,14 +1048,14 @@
发表于
-
+
更新于
-
+
@@ -1068,7 +1063,7 @@
分类于
- 工作
+ 算法
@@ -1082,10 +1077,10 @@
- 2024 实习投递面试题目汇总
+ 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
diff --git a/page/3/index.html b/page/3/index.html
index 85715e6..da7cbd9 100644
--- a/page/3/index.html
+++ b/page/3/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- 实习笔试题汇总
+ Git 文档阅读
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 工作
+ 开发工具
@@ -249,10 +249,10 @@
- 2024 实习投递笔试题目汇总
+ Git 文档阅读笔记和常用命令集合
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- Java 并发基础
+ ESConv
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- Java基础
+ 科研
@@ -341,10 +341,10 @@
- JMM、ThreadLocal
+ Title: Towards Emotional Support Dialog Systems
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 计算机网络
+ BlenderBot
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 八股文
+ 科研
@@ -433,10 +433,14 @@
- 如果我是一串电信号,我要去向何方呢?
+ Title: Recipes for building an open-domain
+chatbot
+
+FaceBook 在本文中提出了 BlenderBot 编解码器模型
+
@@ -467,7 +471,7 @@
-
+
@@ -485,7 +489,7 @@
- 数据结构和算法
+ MISC
@@ -496,14 +500,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +515,7 @@
分类于
- 算法
+ 科研
@@ -525,10 +529,12 @@
- 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
+ Title: A MIxed Strategy-Aware Model Integrating
+COMET for Emotional Support Conversation
+
@@ -559,7 +565,7 @@
-
+
@@ -577,7 +583,7 @@
- SpringMVC
+ KEMI
@@ -588,14 +594,14 @@
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
容器虚拟化技术,后续进一步学习 k8s
+写周报给自己看!哈哈哈
@@ -827,7 +789,7 @@
-
+
@@ -845,7 +807,7 @@
- 设计模式
+ 如何工作
@@ -855,15 +817,9 @@
发表于
+
-
-
-
-
-
-
- 更新于
-
+
@@ -871,7 +827,11 @@
分类于
- Java基础
+ 工作
+
+ ,
+
+ 思考
@@ -885,10 +845,10 @@
- 设计模式与其具体实现
+ 工作与学习不同,不只是“唯分数论”,更要妥善处理人际关系、高效沟通等等。这并不是什么高大上的真理,而是和吃饭喝水一样普通的事情。
@@ -919,7 +879,7 @@
-
+
@@ -937,7 +897,7 @@
- 模拟面试题
+ 机器学习基础
@@ -948,23 +908,14 @@
发表于
-
+
更新于
-
-
-
-
-
-
- 分类于
-
- 工作
-
+
@@ -977,10 +928,10 @@
- 汇总记录面试题,方便复习和面试模拟
+ 机器学习是采用真实世界中采样的一小部分数据,并且希望模型能够对于未知数据有不错的泛化性能。
@@ -1011,7 +962,7 @@
-
+
@@ -1029,7 +980,7 @@
- 操作系统
+ Docker
@@ -1040,14 +991,14 @@
发表于
-
+
更新于
-
+
@@ -1055,7 +1006,7 @@
分类于
- 八股文
+ 开发工具
@@ -1069,10 +1020,10 @@
- 待进一步学习
+ 容器虚拟化技术,待后续进一步学习 k8s
diff --git a/os/index.html b/os/index.html
index 1246028..da50706 100644
--- a/os/index.html
+++ b/os/index.html
@@ -156,18 +156,18 @@
@@ -264,8 +264,8 @@ 虚拟内存
只会访问虚拟内存地址,在操作总线前,通过一个地址转换硬件将虚拟内存地址转换为物理内存地址
进程隔离:将虚拟内存映射到物理内存,进程之间的地址空间相互隔离,互不干扰
虚拟内存空间:
-
-
+
+
用户态虚拟内存空间是相互隔离相互独立的;内核虚拟内存空间是各个进程共享的;
进程管理
数据结构 PCB
@@ -345,8 +345,8 @@ I/O 多路复用
diff --git a/page/2/index.html b/page/2/index.html
index 83089c0..0a32feb 100644
--- a/page/2/index.html
+++ b/page/2/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- Redis
+ 设计模式
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 数据库
+ Java基础
@@ -249,10 +249,10 @@
- Redis 基础
+ 项目架构的设计模式,和Java开发中的具体实现
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- MySQL
+ 模拟面试题
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- 数据库
+ 工作
@@ -341,10 +341,10 @@
- MySQL 基础,包括索引、事务、锁、日志、BufferPool等
+ 汇总记录面试题,方便复习和面试模拟
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 如何保持专注
+ 操作系统
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 思考
+ 八股文
@@ -433,10 +433,10 @@
- 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
+ 待进一步学习
@@ -467,7 +467,7 @@
-
+
@@ -485,7 +485,7 @@
- Java 常用数据结构的底层实现
+ 如何保持专注
@@ -496,14 +496,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +511,7 @@
分类于
- Java基础
+ 思考
@@ -525,10 +525,10 @@
- ArrayList、LinkedList、HashMap、ConcurrentHashMap 的底层源码剖析
+ 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
@@ -687,7 +687,7 @@
更新于
-
+
@@ -743,7 +743,7 @@
-
+
@@ -761,7 +761,7 @@
- ThreadPoolExecutor 和 CompletableFuture 实践
+ 实习面试题汇总
@@ -772,14 +772,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +787,7 @@
分类于
- Java基础
+ 工作
@@ -801,10 +801,10 @@
- 线程池的创建、使用方法,以及如何正确构造有父子关系、先后关系、与或关系的多线程并发场景。
+ 2024 实习投递面试题目汇总
@@ -835,7 +835,7 @@
-
+
@@ -853,7 +853,7 @@
- Rpc 中间件
+ 实习笔试题汇总
@@ -864,14 +864,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +879,7 @@
分类于
- Java开发
+ 工作
@@ -893,10 +893,10 @@
- Rpc 框架搭建过程遇到的问题、Dubbo 使用过程遇到的问题
+ 2024 实习投递笔试题目汇总
@@ -927,7 +927,7 @@
-
+
@@ -945,7 +945,7 @@
- Java 并发锁
+ 计算机网络
@@ -956,14 +956,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +971,7 @@
分类于
- Java基础
+ 八股文
@@ -985,15 +985,10 @@
- Java.util.concurrent 中有很多 Java 并发相关工具,例如 锁
-ReentrantLock
、线程 Callable
-FutureTask
、信号量 Semaphore
、共享锁
-CountDownLatch
-此外 Java 原生的 volatile
和 synchronized
-关键字也是并发编程的关键。
+ 如果我是一串电信号,我要去向何方呢?
@@ -1024,7 +1019,7 @@
-
+
@@ -1042,7 +1037,7 @@
- 实习面试题汇总
+ 数据结构和算法
@@ -1053,14 +1048,14 @@
发表于
-
+
更新于
-
+
@@ -1068,7 +1063,7 @@
分类于
- 工作
+ 算法
@@ -1082,10 +1077,10 @@
- 2024 实习投递面试题目汇总
+ 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
diff --git a/page/3/index.html b/page/3/index.html
index 85715e6..da7cbd9 100644
--- a/page/3/index.html
+++ b/page/3/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- 实习笔试题汇总
+ Git 文档阅读
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 工作
+ 开发工具
@@ -249,10 +249,10 @@
- 2024 实习投递笔试题目汇总
+ Git 文档阅读笔记和常用命令集合
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- Java 并发基础
+ ESConv
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- Java基础
+ 科研
@@ -341,10 +341,10 @@
- JMM、ThreadLocal
+ Title: Towards Emotional Support Dialog Systems
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 计算机网络
+ BlenderBot
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 八股文
+ 科研
@@ -433,10 +433,14 @@
- 如果我是一串电信号,我要去向何方呢?
+ Title: Recipes for building an open-domain
+chatbot
+
+FaceBook 在本文中提出了 BlenderBot 编解码器模型
+
@@ -467,7 +471,7 @@
-
+
@@ -485,7 +489,7 @@
- 数据结构和算法
+ MISC
@@ -496,14 +500,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +515,7 @@
分类于
- 算法
+ 科研
@@ -525,10 +529,12 @@
- 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
+ Title: A MIxed Strategy-Aware Model Integrating
+COMET for Emotional Support Conversation
+
@@ -559,7 +565,7 @@
-
+
@@ -577,7 +583,7 @@
- SpringMVC
+ KEMI
@@ -588,14 +594,14 @@
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
- 设计模式 + 如何工作
发表于
+
-
-
-
-
-
-
- 更新于
-
+
@@ -871,7 +827,11 @@
分类于
- Java基础
+ 工作
+
+ ,
+
+ 思考
@@ -885,10 +845,10 @@
- 设计模式与其具体实现
+ 工作与学习不同,不只是“唯分数论”,更要妥善处理人际关系、高效沟通等等。这并不是什么高大上的真理,而是和吃饭喝水一样普通的事情。
@@ -919,7 +879,7 @@
-
+
@@ -937,7 +897,7 @@
- 模拟面试题
+ 机器学习基础
@@ -948,23 +908,14 @@
发表于
-
+
更新于
-
-
-
-
-
-
- 分类于
-
- 工作
-
+
@@ -977,10 +928,10 @@
- 汇总记录面试题,方便复习和面试模拟
+ 机器学习是采用真实世界中采样的一小部分数据,并且希望模型能够对于未知数据有不错的泛化性能。
@@ -1011,7 +962,7 @@
-
+
@@ -1029,7 +980,7 @@
- 操作系统
+ Docker
@@ -1040,14 +991,14 @@
发表于
-
+
更新于
-
+
@@ -1055,7 +1006,7 @@
分类于
- 八股文
+ 开发工具
@@ -1069,10 +1020,10 @@
- 待进一步学习
+ 容器虚拟化技术,待后续进一步学习 k8s
diff --git a/os/index.html b/os/index.html
index 1246028..da50706 100644
--- a/os/index.html
+++ b/os/index.html
@@ -156,18 +156,18 @@
@@ -264,8 +264,8 @@ 虚拟内存
只会访问虚拟内存地址,在操作总线前,通过一个地址转换硬件将虚拟内存地址转换为物理内存地址
进程隔离:将虚拟内存映射到物理内存,进程之间的地址空间相互隔离,互不干扰
虚拟内存空间:
-
-
+
+
用户态虚拟内存空间是相互隔离相互独立的;内核虚拟内存空间是各个进程共享的;
进程管理
数据结构 PCB
@@ -345,8 +345,8 @@ I/O 多路复用
diff --git a/page/2/index.html b/page/2/index.html
index 83089c0..0a32feb 100644
--- a/page/2/index.html
+++ b/page/2/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- Redis
+ 设计模式
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 数据库
+ Java基础
@@ -249,10 +249,10 @@
- Redis 基础
+ 项目架构的设计模式,和Java开发中的具体实现
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- MySQL
+ 模拟面试题
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- 数据库
+ 工作
@@ -341,10 +341,10 @@
- MySQL 基础,包括索引、事务、锁、日志、BufferPool等
+ 汇总记录面试题,方便复习和面试模拟
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 如何保持专注
+ 操作系统
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 思考
+ 八股文
@@ -433,10 +433,10 @@
- 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
+ 待进一步学习
@@ -467,7 +467,7 @@
-
+
@@ -485,7 +485,7 @@
- Java 常用数据结构的底层实现
+ 如何保持专注
@@ -496,14 +496,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +511,7 @@
分类于
- Java基础
+ 思考
@@ -525,10 +525,10 @@
- ArrayList、LinkedList、HashMap、ConcurrentHashMap 的底层源码剖析
+ 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
@@ -687,7 +687,7 @@
更新于
-
+
@@ -743,7 +743,7 @@
-
+
@@ -761,7 +761,7 @@
- ThreadPoolExecutor 和 CompletableFuture 实践
+ 实习面试题汇总
@@ -772,14 +772,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +787,7 @@
分类于
- Java基础
+ 工作
@@ -801,10 +801,10 @@
- 线程池的创建、使用方法,以及如何正确构造有父子关系、先后关系、与或关系的多线程并发场景。
+ 2024 实习投递面试题目汇总
@@ -835,7 +835,7 @@
-
+
@@ -853,7 +853,7 @@
- Rpc 中间件
+ 实习笔试题汇总
@@ -864,14 +864,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +879,7 @@
分类于
- Java开发
+ 工作
@@ -893,10 +893,10 @@
- Rpc 框架搭建过程遇到的问题、Dubbo 使用过程遇到的问题
+ 2024 实习投递笔试题目汇总
@@ -927,7 +927,7 @@
-
+
@@ -945,7 +945,7 @@
- Java 并发锁
+ 计算机网络
@@ -956,14 +956,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +971,7 @@
分类于
- Java基础
+ 八股文
@@ -985,15 +985,10 @@
- Java.util.concurrent 中有很多 Java 并发相关工具,例如 锁
-ReentrantLock
、线程 Callable
-FutureTask
、信号量 Semaphore
、共享锁
-CountDownLatch
-此外 Java 原生的 volatile
和 synchronized
-关键字也是并发编程的关键。
+ 如果我是一串电信号,我要去向何方呢?
@@ -1024,7 +1019,7 @@
-
+
@@ -1042,7 +1037,7 @@
- 实习面试题汇总
+ 数据结构和算法
@@ -1053,14 +1048,14 @@
发表于
-
+
更新于
-
+
@@ -1068,7 +1063,7 @@
分类于
- 工作
+ 算法
@@ -1082,10 +1077,10 @@
- 2024 实习投递面试题目汇总
+ 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
diff --git a/page/3/index.html b/page/3/index.html
index 85715e6..da7cbd9 100644
--- a/page/3/index.html
+++ b/page/3/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- 实习笔试题汇总
+ Git 文档阅读
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 工作
+ 开发工具
@@ -249,10 +249,10 @@
- 2024 实习投递笔试题目汇总
+ Git 文档阅读笔记和常用命令集合
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- Java 并发基础
+ ESConv
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- Java基础
+ 科研
@@ -341,10 +341,10 @@
- JMM、ThreadLocal
+ Title: Towards Emotional Support Dialog Systems
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 计算机网络
+ BlenderBot
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 八股文
+ 科研
@@ -433,10 +433,14 @@
- 如果我是一串电信号,我要去向何方呢?
+ Title: Recipes for building an open-domain
+chatbot
+
+FaceBook 在本文中提出了 BlenderBot 编解码器模型
+
@@ -467,7 +471,7 @@
-
+
@@ -485,7 +489,7 @@
- 数据结构和算法
+ MISC
@@ -496,14 +500,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +515,7 @@
分类于
- 算法
+ 科研
@@ -525,10 +529,12 @@
- 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
+ Title: A MIxed Strategy-Aware Model Integrating
+COMET for Emotional Support Conversation
+
@@ -559,7 +565,7 @@
-
+
@@ -577,7 +583,7 @@
- SpringMVC
+ KEMI
@@ -588,14 +594,14 @@
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
设计模式与其具体实现
+工作与学习不同,不只是“唯分数论”,更要妥善处理人际关系、高效沟通等等。这并不是什么高大上的真理,而是和吃饭喝水一样普通的事情。
@@ -919,7 +879,7 @@
-
+
@@ -937,7 +897,7 @@
- 模拟面试题
+ 机器学习基础
@@ -948,23 +908,14 @@
发表于
-
+
更新于
-
-
-
-
-
-
- 分类于
-
- 工作
-
+
@@ -977,10 +928,10 @@
- 汇总记录面试题,方便复习和面试模拟
+ 机器学习是采用真实世界中采样的一小部分数据,并且希望模型能够对于未知数据有不错的泛化性能。
@@ -1011,7 +962,7 @@
-
+
@@ -1029,7 +980,7 @@
- 操作系统
+ Docker
@@ -1040,14 +991,14 @@
发表于
-
+
更新于
-
+
@@ -1055,7 +1006,7 @@
分类于
- 八股文
+ 开发工具
@@ -1069,10 +1020,10 @@
- 待进一步学习
+ 容器虚拟化技术,待后续进一步学习 k8s
diff --git a/os/index.html b/os/index.html
index 1246028..da50706 100644
--- a/os/index.html
+++ b/os/index.html
@@ -156,18 +156,18 @@
@@ -264,8 +264,8 @@ 虚拟内存
只会访问虚拟内存地址,在操作总线前,通过一个地址转换硬件将虚拟内存地址转换为物理内存地址
进程隔离:将虚拟内存映射到物理内存,进程之间的地址空间相互隔离,互不干扰
虚拟内存空间:
-
-
+
+
用户态虚拟内存空间是相互隔离相互独立的;内核虚拟内存空间是各个进程共享的;
进程管理
数据结构 PCB
@@ -345,8 +345,8 @@ I/O 多路复用
diff --git a/page/2/index.html b/page/2/index.html
index 83089c0..0a32feb 100644
--- a/page/2/index.html
+++ b/page/2/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- Redis
+ 设计模式
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 数据库
+ Java基础
@@ -249,10 +249,10 @@
- Redis 基础
+ 项目架构的设计模式,和Java开发中的具体实现
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- MySQL
+ 模拟面试题
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- 数据库
+ 工作
@@ -341,10 +341,10 @@
- MySQL 基础,包括索引、事务、锁、日志、BufferPool等
+ 汇总记录面试题,方便复习和面试模拟
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 如何保持专注
+ 操作系统
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 思考
+ 八股文
@@ -433,10 +433,10 @@
- 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
+ 待进一步学习
@@ -467,7 +467,7 @@
-
+
@@ -485,7 +485,7 @@
- Java 常用数据结构的底层实现
+ 如何保持专注
@@ -496,14 +496,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +511,7 @@
分类于
- Java基础
+ 思考
@@ -525,10 +525,10 @@
- ArrayList、LinkedList、HashMap、ConcurrentHashMap 的底层源码剖析
+ 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
@@ -687,7 +687,7 @@
更新于
-
+
@@ -743,7 +743,7 @@
-
+
@@ -761,7 +761,7 @@
- ThreadPoolExecutor 和 CompletableFuture 实践
+ 实习面试题汇总
@@ -772,14 +772,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +787,7 @@
分类于
- Java基础
+ 工作
@@ -801,10 +801,10 @@
- 线程池的创建、使用方法,以及如何正确构造有父子关系、先后关系、与或关系的多线程并发场景。
+ 2024 实习投递面试题目汇总
@@ -835,7 +835,7 @@
-
+
@@ -853,7 +853,7 @@
- Rpc 中间件
+ 实习笔试题汇总
@@ -864,14 +864,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +879,7 @@
分类于
- Java开发
+ 工作
@@ -893,10 +893,10 @@
- Rpc 框架搭建过程遇到的问题、Dubbo 使用过程遇到的问题
+ 2024 实习投递笔试题目汇总
@@ -927,7 +927,7 @@
-
+
@@ -945,7 +945,7 @@
- Java 并发锁
+ 计算机网络
@@ -956,14 +956,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +971,7 @@
分类于
- Java基础
+ 八股文
@@ -985,15 +985,10 @@
- Java.util.concurrent 中有很多 Java 并发相关工具,例如 锁
-ReentrantLock
、线程 Callable
-FutureTask
、信号量 Semaphore
、共享锁
-CountDownLatch
-此外 Java 原生的 volatile
和 synchronized
-关键字也是并发编程的关键。
+ 如果我是一串电信号,我要去向何方呢?
@@ -1024,7 +1019,7 @@
-
+
@@ -1042,7 +1037,7 @@
- 实习面试题汇总
+ 数据结构和算法
@@ -1053,14 +1048,14 @@
发表于
-
+
更新于
-
+
@@ -1068,7 +1063,7 @@
分类于
- 工作
+ 算法
@@ -1082,10 +1077,10 @@
- 2024 实习投递面试题目汇总
+ 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
diff --git a/page/3/index.html b/page/3/index.html
index 85715e6..da7cbd9 100644
--- a/page/3/index.html
+++ b/page/3/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- 实习笔试题汇总
+ Git 文档阅读
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 工作
+ 开发工具
@@ -249,10 +249,10 @@
- 2024 实习投递笔试题目汇总
+ Git 文档阅读笔记和常用命令集合
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- Java 并发基础
+ ESConv
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- Java基础
+ 科研
@@ -341,10 +341,10 @@
- JMM、ThreadLocal
+ Title: Towards Emotional Support Dialog Systems
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 计算机网络
+ BlenderBot
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 八股文
+ 科研
@@ -433,10 +433,14 @@
- 如果我是一串电信号,我要去向何方呢?
+ Title: Recipes for building an open-domain
+chatbot
+
+FaceBook 在本文中提出了 BlenderBot 编解码器模型
+
@@ -467,7 +471,7 @@
-
+
@@ -485,7 +489,7 @@
- 数据结构和算法
+ MISC
@@ -496,14 +500,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +515,7 @@
分类于
- 算法
+ 科研
@@ -525,10 +529,12 @@
- 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
+ Title: A MIxed Strategy-Aware Model Integrating
+COMET for Emotional Support Conversation
+
@@ -559,7 +565,7 @@
-
+
@@ -577,7 +583,7 @@
- SpringMVC
+ KEMI
@@ -588,14 +594,14 @@
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
- 模拟面试题 + 机器学习基础
发表于
-
+
更新于
-
-
-
-
-
-
- 分类于
-
- 工作
-
+
@@ -977,10 +928,10 @@
- 汇总记录面试题,方便复习和面试模拟
+ 机器学习是采用真实世界中采样的一小部分数据,并且希望模型能够对于未知数据有不错的泛化性能。
@@ -1011,7 +962,7 @@
-
+
@@ -1029,7 +980,7 @@
- 操作系统
+ Docker
@@ -1040,14 +991,14 @@
发表于
-
+
更新于
-
+
@@ -1055,7 +1006,7 @@
分类于
- 八股文
+ 开发工具
@@ -1069,10 +1020,10 @@
- 待进一步学习
+ 容器虚拟化技术,待后续进一步学习 k8s
diff --git a/os/index.html b/os/index.html
index 1246028..da50706 100644
--- a/os/index.html
+++ b/os/index.html
@@ -156,18 +156,18 @@
@@ -264,8 +264,8 @@ 虚拟内存
只会访问虚拟内存地址,在操作总线前,通过一个地址转换硬件将虚拟内存地址转换为物理内存地址
进程隔离:将虚拟内存映射到物理内存,进程之间的地址空间相互隔离,互不干扰
虚拟内存空间:
-
-
+
+
用户态虚拟内存空间是相互隔离相互独立的;内核虚拟内存空间是各个进程共享的;
进程管理
数据结构 PCB
@@ -345,8 +345,8 @@ I/O 多路复用
diff --git a/page/2/index.html b/page/2/index.html
index 83089c0..0a32feb 100644
--- a/page/2/index.html
+++ b/page/2/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- Redis
+ 设计模式
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 数据库
+ Java基础
@@ -249,10 +249,10 @@
- Redis 基础
+ 项目架构的设计模式,和Java开发中的具体实现
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- MySQL
+ 模拟面试题
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- 数据库
+ 工作
@@ -341,10 +341,10 @@
- MySQL 基础,包括索引、事务、锁、日志、BufferPool等
+ 汇总记录面试题,方便复习和面试模拟
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 如何保持专注
+ 操作系统
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 思考
+ 八股文
@@ -433,10 +433,10 @@
- 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
+ 待进一步学习
@@ -467,7 +467,7 @@
-
+
@@ -485,7 +485,7 @@
- Java 常用数据结构的底层实现
+ 如何保持专注
@@ -496,14 +496,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +511,7 @@
分类于
- Java基础
+ 思考
@@ -525,10 +525,10 @@
- ArrayList、LinkedList、HashMap、ConcurrentHashMap 的底层源码剖析
+ 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
@@ -687,7 +687,7 @@
更新于
-
+
@@ -743,7 +743,7 @@
-
+
@@ -761,7 +761,7 @@
- ThreadPoolExecutor 和 CompletableFuture 实践
+ 实习面试题汇总
@@ -772,14 +772,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +787,7 @@
分类于
- Java基础
+ 工作
@@ -801,10 +801,10 @@
- 线程池的创建、使用方法,以及如何正确构造有父子关系、先后关系、与或关系的多线程并发场景。
+ 2024 实习投递面试题目汇总
@@ -835,7 +835,7 @@
-
+
@@ -853,7 +853,7 @@
- Rpc 中间件
+ 实习笔试题汇总
@@ -864,14 +864,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +879,7 @@
分类于
- Java开发
+ 工作
@@ -893,10 +893,10 @@
- Rpc 框架搭建过程遇到的问题、Dubbo 使用过程遇到的问题
+ 2024 实习投递笔试题目汇总
@@ -927,7 +927,7 @@
-
+
@@ -945,7 +945,7 @@
- Java 并发锁
+ 计算机网络
@@ -956,14 +956,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +971,7 @@
分类于
- Java基础
+ 八股文
@@ -985,15 +985,10 @@
- Java.util.concurrent 中有很多 Java 并发相关工具,例如 锁
-ReentrantLock
、线程 Callable
-FutureTask
、信号量 Semaphore
、共享锁
-CountDownLatch
-此外 Java 原生的 volatile
和 synchronized
-关键字也是并发编程的关键。
+ 如果我是一串电信号,我要去向何方呢?
@@ -1024,7 +1019,7 @@
-
+
@@ -1042,7 +1037,7 @@
- 实习面试题汇总
+ 数据结构和算法
@@ -1053,14 +1048,14 @@
发表于
-
+
更新于
-
+
@@ -1068,7 +1063,7 @@
分类于
- 工作
+ 算法
@@ -1082,10 +1077,10 @@
- 2024 实习投递面试题目汇总
+ 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
diff --git a/page/3/index.html b/page/3/index.html
index 85715e6..da7cbd9 100644
--- a/page/3/index.html
+++ b/page/3/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- 实习笔试题汇总
+ Git 文档阅读
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 工作
+ 开发工具
@@ -249,10 +249,10 @@
- 2024 实习投递笔试题目汇总
+ Git 文档阅读笔记和常用命令集合
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- Java 并发基础
+ ESConv
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- Java基础
+ 科研
@@ -341,10 +341,10 @@
- JMM、ThreadLocal
+ Title: Towards Emotional Support Dialog Systems
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 计算机网络
+ BlenderBot
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 八股文
+ 科研
@@ -433,10 +433,14 @@
- 如果我是一串电信号,我要去向何方呢?
+ Title: Recipes for building an open-domain
+chatbot
+
+FaceBook 在本文中提出了 BlenderBot 编解码器模型
+
@@ -467,7 +471,7 @@
-
+
@@ -485,7 +489,7 @@
- 数据结构和算法
+ MISC
@@ -496,14 +500,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +515,7 @@
分类于
- 算法
+ 科研
@@ -525,10 +529,12 @@
- 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
+ Title: A MIxed Strategy-Aware Model Integrating
+COMET for Emotional Support Conversation
+
@@ -559,7 +565,7 @@
-
+
@@ -577,7 +583,7 @@
- SpringMVC
+ KEMI
@@ -588,14 +594,14 @@
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
汇总记录面试题,方便复习和面试模拟
+机器学习是采用真实世界中采样的一小部分数据,并且希望模型能够对于未知数据有不错的泛化性能。
@@ -1011,7 +962,7 @@
-
+
@@ -1029,7 +980,7 @@
- 操作系统
+ Docker
@@ -1040,14 +991,14 @@
发表于
-
+
更新于
-
+
@@ -1055,7 +1006,7 @@
分类于
- 八股文
+ 开发工具
@@ -1069,10 +1020,10 @@
- 待进一步学习
+ 容器虚拟化技术,待后续进一步学习 k8s
diff --git a/os/index.html b/os/index.html
index 1246028..da50706 100644
--- a/os/index.html
+++ b/os/index.html
@@ -156,18 +156,18 @@
@@ -264,8 +264,8 @@ 虚拟内存
只会访问虚拟内存地址,在操作总线前,通过一个地址转换硬件将虚拟内存地址转换为物理内存地址
进程隔离:将虚拟内存映射到物理内存,进程之间的地址空间相互隔离,互不干扰
虚拟内存空间:
-
-
+
+
用户态虚拟内存空间是相互隔离相互独立的;内核虚拟内存空间是各个进程共享的;
进程管理
数据结构 PCB
@@ -345,8 +345,8 @@ I/O 多路复用
diff --git a/page/2/index.html b/page/2/index.html
index 83089c0..0a32feb 100644
--- a/page/2/index.html
+++ b/page/2/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- Redis
+ 设计模式
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 数据库
+ Java基础
@@ -249,10 +249,10 @@
- Redis 基础
+ 项目架构的设计模式,和Java开发中的具体实现
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- MySQL
+ 模拟面试题
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- 数据库
+ 工作
@@ -341,10 +341,10 @@
- MySQL 基础,包括索引、事务、锁、日志、BufferPool等
+ 汇总记录面试题,方便复习和面试模拟
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 如何保持专注
+ 操作系统
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 思考
+ 八股文
@@ -433,10 +433,10 @@
- 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
+ 待进一步学习
@@ -467,7 +467,7 @@
-
+
@@ -485,7 +485,7 @@
- Java 常用数据结构的底层实现
+ 如何保持专注
@@ -496,14 +496,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +511,7 @@
分类于
- Java基础
+ 思考
@@ -525,10 +525,10 @@
- ArrayList、LinkedList、HashMap、ConcurrentHashMap 的底层源码剖析
+ 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
@@ -687,7 +687,7 @@
更新于
-
+
@@ -743,7 +743,7 @@
-
+
@@ -761,7 +761,7 @@
- ThreadPoolExecutor 和 CompletableFuture 实践
+ 实习面试题汇总
@@ -772,14 +772,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +787,7 @@
分类于
- Java基础
+ 工作
@@ -801,10 +801,10 @@
- 线程池的创建、使用方法,以及如何正确构造有父子关系、先后关系、与或关系的多线程并发场景。
+ 2024 实习投递面试题目汇总
@@ -835,7 +835,7 @@
-
+
@@ -853,7 +853,7 @@
- Rpc 中间件
+ 实习笔试题汇总
@@ -864,14 +864,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +879,7 @@
分类于
- Java开发
+ 工作
@@ -893,10 +893,10 @@
- Rpc 框架搭建过程遇到的问题、Dubbo 使用过程遇到的问题
+ 2024 实习投递笔试题目汇总
@@ -927,7 +927,7 @@
-
+
@@ -945,7 +945,7 @@
- Java 并发锁
+ 计算机网络
@@ -956,14 +956,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +971,7 @@
分类于
- Java基础
+ 八股文
@@ -985,15 +985,10 @@
- Java.util.concurrent 中有很多 Java 并发相关工具,例如 锁
-ReentrantLock
、线程 Callable
-FutureTask
、信号量 Semaphore
、共享锁
-CountDownLatch
-此外 Java 原生的 volatile
和 synchronized
-关键字也是并发编程的关键。
+ 如果我是一串电信号,我要去向何方呢?
@@ -1024,7 +1019,7 @@
-
+
@@ -1042,7 +1037,7 @@
- 实习面试题汇总
+ 数据结构和算法
@@ -1053,14 +1048,14 @@
发表于
-
+
更新于
-
+
@@ -1068,7 +1063,7 @@
分类于
- 工作
+ 算法
@@ -1082,10 +1077,10 @@
- 2024 实习投递面试题目汇总
+ 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
diff --git a/page/3/index.html b/page/3/index.html
index 85715e6..da7cbd9 100644
--- a/page/3/index.html
+++ b/page/3/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- 实习笔试题汇总
+ Git 文档阅读
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 工作
+ 开发工具
@@ -249,10 +249,10 @@
- 2024 实习投递笔试题目汇总
+ Git 文档阅读笔记和常用命令集合
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- Java 并发基础
+ ESConv
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- Java基础
+ 科研
@@ -341,10 +341,10 @@
- JMM、ThreadLocal
+ Title: Towards Emotional Support Dialog Systems
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 计算机网络
+ BlenderBot
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 八股文
+ 科研
@@ -433,10 +433,14 @@
- 如果我是一串电信号,我要去向何方呢?
+ Title: Recipes for building an open-domain
+chatbot
+
+FaceBook 在本文中提出了 BlenderBot 编解码器模型
+
@@ -467,7 +471,7 @@
-
+
@@ -485,7 +489,7 @@
- 数据结构和算法
+ MISC
@@ -496,14 +500,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +515,7 @@
分类于
- 算法
+ 科研
@@ -525,10 +529,12 @@
- 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
+ Title: A MIxed Strategy-Aware Model Integrating
+COMET for Emotional Support Conversation
+
@@ -559,7 +565,7 @@
-
+
@@ -577,7 +583,7 @@
- SpringMVC
+ KEMI
@@ -588,14 +594,14 @@
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
- 操作系统 + Docker
发表于
-
+
更新于
-
+
@@ -1055,7 +1006,7 @@
分类于
- 八股文
+ 开发工具
@@ -1069,10 +1020,10 @@
- 待进一步学习
+ 容器虚拟化技术,待后续进一步学习 k8s
diff --git a/os/index.html b/os/index.html
index 1246028..da50706 100644
--- a/os/index.html
+++ b/os/index.html
@@ -156,18 +156,18 @@
@@ -264,8 +264,8 @@ 虚拟内存
只会访问虚拟内存地址,在操作总线前,通过一个地址转换硬件将虚拟内存地址转换为物理内存地址
进程隔离:将虚拟内存映射到物理内存,进程之间的地址空间相互隔离,互不干扰
虚拟内存空间:
-
-
+
+
用户态虚拟内存空间是相互隔离相互独立的;内核虚拟内存空间是各个进程共享的;
进程管理
数据结构 PCB
@@ -345,8 +345,8 @@ I/O 多路复用
diff --git a/page/2/index.html b/page/2/index.html
index 83089c0..0a32feb 100644
--- a/page/2/index.html
+++ b/page/2/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- Redis
+ 设计模式
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 数据库
+ Java基础
@@ -249,10 +249,10 @@
- Redis 基础
+ 项目架构的设计模式,和Java开发中的具体实现
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- MySQL
+ 模拟面试题
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- 数据库
+ 工作
@@ -341,10 +341,10 @@
- MySQL 基础,包括索引、事务、锁、日志、BufferPool等
+ 汇总记录面试题,方便复习和面试模拟
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 如何保持专注
+ 操作系统
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 思考
+ 八股文
@@ -433,10 +433,10 @@
- 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
+ 待进一步学习
@@ -467,7 +467,7 @@
-
+
@@ -485,7 +485,7 @@
- Java 常用数据结构的底层实现
+ 如何保持专注
@@ -496,14 +496,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +511,7 @@
分类于
- Java基础
+ 思考
@@ -525,10 +525,10 @@
- ArrayList、LinkedList、HashMap、ConcurrentHashMap 的底层源码剖析
+ 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
@@ -687,7 +687,7 @@
更新于
-
+
@@ -743,7 +743,7 @@
-
+
@@ -761,7 +761,7 @@
- ThreadPoolExecutor 和 CompletableFuture 实践
+ 实习面试题汇总
@@ -772,14 +772,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +787,7 @@
分类于
- Java基础
+ 工作
@@ -801,10 +801,10 @@
- 线程池的创建、使用方法,以及如何正确构造有父子关系、先后关系、与或关系的多线程并发场景。
+ 2024 实习投递面试题目汇总
@@ -835,7 +835,7 @@
-
+
@@ -853,7 +853,7 @@
- Rpc 中间件
+ 实习笔试题汇总
@@ -864,14 +864,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +879,7 @@
分类于
- Java开发
+ 工作
@@ -893,10 +893,10 @@
- Rpc 框架搭建过程遇到的问题、Dubbo 使用过程遇到的问题
+ 2024 实习投递笔试题目汇总
@@ -927,7 +927,7 @@
-
+
@@ -945,7 +945,7 @@
- Java 并发锁
+ 计算机网络
@@ -956,14 +956,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +971,7 @@
分类于
- Java基础
+ 八股文
@@ -985,15 +985,10 @@
- Java.util.concurrent 中有很多 Java 并发相关工具,例如 锁
-ReentrantLock
、线程 Callable
-FutureTask
、信号量 Semaphore
、共享锁
-CountDownLatch
-此外 Java 原生的 volatile
和 synchronized
-关键字也是并发编程的关键。
+ 如果我是一串电信号,我要去向何方呢?
@@ -1024,7 +1019,7 @@
-
+
@@ -1042,7 +1037,7 @@
- 实习面试题汇总
+ 数据结构和算法
@@ -1053,14 +1048,14 @@
发表于
-
+
更新于
-
+
@@ -1068,7 +1063,7 @@
分类于
- 工作
+ 算法
@@ -1082,10 +1077,10 @@
- 2024 实习投递面试题目汇总
+ 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
diff --git a/page/3/index.html b/page/3/index.html
index 85715e6..da7cbd9 100644
--- a/page/3/index.html
+++ b/page/3/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- 实习笔试题汇总
+ Git 文档阅读
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 工作
+ 开发工具
@@ -249,10 +249,10 @@
- 2024 实习投递笔试题目汇总
+ Git 文档阅读笔记和常用命令集合
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- Java 并发基础
+ ESConv
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- Java基础
+ 科研
@@ -341,10 +341,10 @@
- JMM、ThreadLocal
+ Title: Towards Emotional Support Dialog Systems
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 计算机网络
+ BlenderBot
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 八股文
+ 科研
@@ -433,10 +433,14 @@
- 如果我是一串电信号,我要去向何方呢?
+ Title: Recipes for building an open-domain
+chatbot
+
+FaceBook 在本文中提出了 BlenderBot 编解码器模型
+
@@ -467,7 +471,7 @@
-
+
@@ -485,7 +489,7 @@
- 数据结构和算法
+ MISC
@@ -496,14 +500,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +515,7 @@
分类于
- 算法
+ 科研
@@ -525,10 +529,12 @@
- 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
+ Title: A MIxed Strategy-Aware Model Integrating
+COMET for Emotional Support Conversation
+
@@ -559,7 +565,7 @@
-
+
@@ -577,7 +583,7 @@
- SpringMVC
+ KEMI
@@ -588,14 +594,14 @@
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
待进一步学习
+容器虚拟化技术,待后续进一步学习 k8s
diff --git a/os/index.html b/os/index.html index 1246028..da50706 100644 --- a/os/index.html +++ b/os/index.html @@ -156,18 +156,18 @@ @@ -264,8 +264,8 @@虚拟内存
只会访问虚拟内存地址,在操作总线前,通过一个地址转换硬件将虚拟内存地址转换为物理内存地址进程隔离:将虚拟内存映射到物理内存,进程之间的地址空间相互隔离,互不干扰
虚拟内存空间:
- - + +用户态虚拟内存空间是相互隔离相互独立的;内核虚拟内存空间是各个进程共享的;
进程管理
数据结构 PCB
@@ -345,8 +345,8 @@I/O 多路复用
闻
@@ -191,7 +191,7 @@闻
闻
- Redis + 设计模式
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 数据库
+ Java基础
@@ -249,10 +249,10 @@
- Redis 基础
+ 项目架构的设计模式,和Java开发中的具体实现
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- MySQL
+ 模拟面试题
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- 数据库
+ 工作
@@ -341,10 +341,10 @@
- MySQL 基础,包括索引、事务、锁、日志、BufferPool等
+ 汇总记录面试题,方便复习和面试模拟
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 如何保持专注
+ 操作系统
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 思考
+ 八股文
@@ -433,10 +433,10 @@
- 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
+ 待进一步学习
@@ -467,7 +467,7 @@
-
+
@@ -485,7 +485,7 @@
- Java 常用数据结构的底层实现
+ 如何保持专注
@@ -496,14 +496,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +511,7 @@
分类于
- Java基础
+ 思考
@@ -525,10 +525,10 @@
- ArrayList、LinkedList、HashMap、ConcurrentHashMap 的底层源码剖析
+ 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
@@ -687,7 +687,7 @@
更新于
-
+
@@ -743,7 +743,7 @@
-
+
@@ -761,7 +761,7 @@
- ThreadPoolExecutor 和 CompletableFuture 实践
+ 实习面试题汇总
@@ -772,14 +772,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +787,7 @@
分类于
- Java基础
+ 工作
@@ -801,10 +801,10 @@
- 线程池的创建、使用方法,以及如何正确构造有父子关系、先后关系、与或关系的多线程并发场景。
+ 2024 实习投递面试题目汇总
@@ -835,7 +835,7 @@
-
+
@@ -853,7 +853,7 @@
- Rpc 中间件
+ 实习笔试题汇总
@@ -864,14 +864,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +879,7 @@
分类于
- Java开发
+ 工作
@@ -893,10 +893,10 @@
- Rpc 框架搭建过程遇到的问题、Dubbo 使用过程遇到的问题
+ 2024 实习投递笔试题目汇总
@@ -927,7 +927,7 @@
-
+
@@ -945,7 +945,7 @@
- Java 并发锁
+ 计算机网络
@@ -956,14 +956,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +971,7 @@
分类于
- Java基础
+ 八股文
@@ -985,15 +985,10 @@
- Java.util.concurrent 中有很多 Java 并发相关工具,例如 锁
-ReentrantLock
、线程 Callable
-FutureTask
、信号量 Semaphore
、共享锁
-CountDownLatch
-此外 Java 原生的 volatile
和 synchronized
-关键字也是并发编程的关键。
+ 如果我是一串电信号,我要去向何方呢?
@@ -1024,7 +1019,7 @@
-
+
@@ -1042,7 +1037,7 @@
- 实习面试题汇总
+ 数据结构和算法
@@ -1053,14 +1048,14 @@
发表于
-
+
更新于
-
+
@@ -1068,7 +1063,7 @@
分类于
- 工作
+ 算法
@@ -1082,10 +1077,10 @@
- 2024 实习投递面试题目汇总
+ 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
diff --git a/page/3/index.html b/page/3/index.html
index 85715e6..da7cbd9 100644
--- a/page/3/index.html
+++ b/page/3/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- 实习笔试题汇总
+ Git 文档阅读
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 工作
+ 开发工具
@@ -249,10 +249,10 @@
- 2024 实习投递笔试题目汇总
+ Git 文档阅读笔记和常用命令集合
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- Java 并发基础
+ ESConv
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- Java基础
+ 科研
@@ -341,10 +341,10 @@
- JMM、ThreadLocal
+ Title: Towards Emotional Support Dialog Systems
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 计算机网络
+ BlenderBot
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 八股文
+ 科研
@@ -433,10 +433,14 @@
- 如果我是一串电信号,我要去向何方呢?
+ Title: Recipes for building an open-domain
+chatbot
+
+FaceBook 在本文中提出了 BlenderBot 编解码器模型
+
@@ -467,7 +471,7 @@
-
+
@@ -485,7 +489,7 @@
- 数据结构和算法
+ MISC
@@ -496,14 +500,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +515,7 @@
分类于
- 算法
+ 科研
@@ -525,10 +529,12 @@
- 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
+ Title: A MIxed Strategy-Aware Model Integrating
+COMET for Emotional Support Conversation
+
@@ -559,7 +565,7 @@
-
+
@@ -577,7 +583,7 @@
- SpringMVC
+ KEMI
@@ -588,14 +594,14 @@
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
Redis 基础
+项目架构的设计模式,和Java开发中的具体实现
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- MySQL
+ 模拟面试题
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- 数据库
+ 工作
@@ -341,10 +341,10 @@
- MySQL 基础,包括索引、事务、锁、日志、BufferPool等
+ 汇总记录面试题,方便复习和面试模拟
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 如何保持专注
+ 操作系统
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 思考
+ 八股文
@@ -433,10 +433,10 @@
- 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
+ 待进一步学习
@@ -467,7 +467,7 @@
-
+
@@ -485,7 +485,7 @@
- Java 常用数据结构的底层实现
+ 如何保持专注
@@ -496,14 +496,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +511,7 @@
分类于
- Java基础
+ 思考
@@ -525,10 +525,10 @@
- ArrayList、LinkedList、HashMap、ConcurrentHashMap 的底层源码剖析
+ 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
@@ -687,7 +687,7 @@
更新于
-
+
@@ -743,7 +743,7 @@
-
+
@@ -761,7 +761,7 @@
- ThreadPoolExecutor 和 CompletableFuture 实践
+ 实习面试题汇总
@@ -772,14 +772,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +787,7 @@
分类于
- Java基础
+ 工作
@@ -801,10 +801,10 @@
- 线程池的创建、使用方法,以及如何正确构造有父子关系、先后关系、与或关系的多线程并发场景。
+ 2024 实习投递面试题目汇总
@@ -835,7 +835,7 @@
-
+
@@ -853,7 +853,7 @@
- Rpc 中间件
+ 实习笔试题汇总
@@ -864,14 +864,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +879,7 @@
分类于
- Java开发
+ 工作
@@ -893,10 +893,10 @@
- Rpc 框架搭建过程遇到的问题、Dubbo 使用过程遇到的问题
+ 2024 实习投递笔试题目汇总
@@ -927,7 +927,7 @@
-
+
@@ -945,7 +945,7 @@
- Java 并发锁
+ 计算机网络
@@ -956,14 +956,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +971,7 @@
分类于
- Java基础
+ 八股文
@@ -985,15 +985,10 @@
- Java.util.concurrent 中有很多 Java 并发相关工具,例如 锁
-ReentrantLock
、线程 Callable
-FutureTask
、信号量 Semaphore
、共享锁
-CountDownLatch
-此外 Java 原生的 volatile
和 synchronized
-关键字也是并发编程的关键。
+ 如果我是一串电信号,我要去向何方呢?
@@ -1024,7 +1019,7 @@
-
+
@@ -1042,7 +1037,7 @@
- 实习面试题汇总
+ 数据结构和算法
@@ -1053,14 +1048,14 @@
发表于
-
+
更新于
-
+
@@ -1068,7 +1063,7 @@
分类于
- 工作
+ 算法
@@ -1082,10 +1077,10 @@
- 2024 实习投递面试题目汇总
+ 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
diff --git a/page/3/index.html b/page/3/index.html
index 85715e6..da7cbd9 100644
--- a/page/3/index.html
+++ b/page/3/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- 实习笔试题汇总
+ Git 文档阅读
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 工作
+ 开发工具
@@ -249,10 +249,10 @@
- 2024 实习投递笔试题目汇总
+ Git 文档阅读笔记和常用命令集合
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- Java 并发基础
+ ESConv
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- Java基础
+ 科研
@@ -341,10 +341,10 @@
- JMM、ThreadLocal
+ Title: Towards Emotional Support Dialog Systems
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 计算机网络
+ BlenderBot
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 八股文
+ 科研
@@ -433,10 +433,14 @@
- 如果我是一串电信号,我要去向何方呢?
+ Title: Recipes for building an open-domain
+chatbot
+
+FaceBook 在本文中提出了 BlenderBot 编解码器模型
+
@@ -467,7 +471,7 @@
-
+
@@ -485,7 +489,7 @@
- 数据结构和算法
+ MISC
@@ -496,14 +500,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +515,7 @@
分类于
- 算法
+ 科研
@@ -525,10 +529,12 @@
- 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
+ Title: A MIxed Strategy-Aware Model Integrating
+COMET for Emotional Support Conversation
+
@@ -559,7 +565,7 @@
-
+
@@ -577,7 +583,7 @@
- SpringMVC
+ KEMI
@@ -588,14 +594,14 @@
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
- MySQL + 模拟面试题
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- 数据库
+ 工作
@@ -341,10 +341,10 @@
- MySQL 基础,包括索引、事务、锁、日志、BufferPool等
+ 汇总记录面试题,方便复习和面试模拟
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 如何保持专注
+ 操作系统
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 思考
+ 八股文
@@ -433,10 +433,10 @@
- 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
+ 待进一步学习
@@ -467,7 +467,7 @@
-
+
@@ -485,7 +485,7 @@
- Java 常用数据结构的底层实现
+ 如何保持专注
@@ -496,14 +496,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +511,7 @@
分类于
- Java基础
+ 思考
@@ -525,10 +525,10 @@
- ArrayList、LinkedList、HashMap、ConcurrentHashMap 的底层源码剖析
+ 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
@@ -687,7 +687,7 @@
更新于
-
+
@@ -743,7 +743,7 @@
-
+
@@ -761,7 +761,7 @@
- ThreadPoolExecutor 和 CompletableFuture 实践
+ 实习面试题汇总
@@ -772,14 +772,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +787,7 @@
分类于
- Java基础
+ 工作
@@ -801,10 +801,10 @@
- 线程池的创建、使用方法,以及如何正确构造有父子关系、先后关系、与或关系的多线程并发场景。
+ 2024 实习投递面试题目汇总
@@ -835,7 +835,7 @@
-
+
@@ -853,7 +853,7 @@
- Rpc 中间件
+ 实习笔试题汇总
@@ -864,14 +864,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +879,7 @@
分类于
- Java开发
+ 工作
@@ -893,10 +893,10 @@
- Rpc 框架搭建过程遇到的问题、Dubbo 使用过程遇到的问题
+ 2024 实习投递笔试题目汇总
@@ -927,7 +927,7 @@
-
+
@@ -945,7 +945,7 @@
- Java 并发锁
+ 计算机网络
@@ -956,14 +956,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +971,7 @@
分类于
- Java基础
+ 八股文
@@ -985,15 +985,10 @@
- Java.util.concurrent 中有很多 Java 并发相关工具,例如 锁
-ReentrantLock
、线程 Callable
-FutureTask
、信号量 Semaphore
、共享锁
-CountDownLatch
-此外 Java 原生的 volatile
和 synchronized
-关键字也是并发编程的关键。
+ 如果我是一串电信号,我要去向何方呢?
@@ -1024,7 +1019,7 @@
-
+
@@ -1042,7 +1037,7 @@
- 实习面试题汇总
+ 数据结构和算法
@@ -1053,14 +1048,14 @@
发表于
-
+
更新于
-
+
@@ -1068,7 +1063,7 @@
分类于
- 工作
+ 算法
@@ -1082,10 +1077,10 @@
- 2024 实习投递面试题目汇总
+ 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
diff --git a/page/3/index.html b/page/3/index.html
index 85715e6..da7cbd9 100644
--- a/page/3/index.html
+++ b/page/3/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- 实习笔试题汇总
+ Git 文档阅读
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 工作
+ 开发工具
@@ -249,10 +249,10 @@
- 2024 实习投递笔试题目汇总
+ Git 文档阅读笔记和常用命令集合
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- Java 并发基础
+ ESConv
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- Java基础
+ 科研
@@ -341,10 +341,10 @@
- JMM、ThreadLocal
+ Title: Towards Emotional Support Dialog Systems
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 计算机网络
+ BlenderBot
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 八股文
+ 科研
@@ -433,10 +433,14 @@
- 如果我是一串电信号,我要去向何方呢?
+ Title: Recipes for building an open-domain
+chatbot
+
+FaceBook 在本文中提出了 BlenderBot 编解码器模型
+
@@ -467,7 +471,7 @@
-
+
@@ -485,7 +489,7 @@
- 数据结构和算法
+ MISC
@@ -496,14 +500,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +515,7 @@
分类于
- 算法
+ 科研
@@ -525,10 +529,12 @@
- 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
+ Title: A MIxed Strategy-Aware Model Integrating
+COMET for Emotional Support Conversation
+
@@ -559,7 +565,7 @@
-
+
@@ -577,7 +583,7 @@
- SpringMVC
+ KEMI
@@ -588,14 +594,14 @@
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
MySQL 基础,包括索引、事务、锁、日志、BufferPool等
+汇总记录面试题,方便复习和面试模拟
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 如何保持专注
+ 操作系统
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 思考
+ 八股文
@@ -433,10 +433,10 @@
- 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
+ 待进一步学习
@@ -467,7 +467,7 @@
-
+
@@ -485,7 +485,7 @@
- Java 常用数据结构的底层实现
+ 如何保持专注
@@ -496,14 +496,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +511,7 @@
分类于
- Java基础
+ 思考
@@ -525,10 +525,10 @@
- ArrayList、LinkedList、HashMap、ConcurrentHashMap 的底层源码剖析
+ 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
@@ -687,7 +687,7 @@
更新于
-
+
@@ -743,7 +743,7 @@
-
+
@@ -761,7 +761,7 @@
- ThreadPoolExecutor 和 CompletableFuture 实践
+ 实习面试题汇总
@@ -772,14 +772,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +787,7 @@
分类于
- Java基础
+ 工作
@@ -801,10 +801,10 @@
- 线程池的创建、使用方法,以及如何正确构造有父子关系、先后关系、与或关系的多线程并发场景。
+ 2024 实习投递面试题目汇总
@@ -835,7 +835,7 @@
-
+
@@ -853,7 +853,7 @@
- Rpc 中间件
+ 实习笔试题汇总
@@ -864,14 +864,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +879,7 @@
分类于
- Java开发
+ 工作
@@ -893,10 +893,10 @@
- Rpc 框架搭建过程遇到的问题、Dubbo 使用过程遇到的问题
+ 2024 实习投递笔试题目汇总
@@ -927,7 +927,7 @@
-
+
@@ -945,7 +945,7 @@
- Java 并发锁
+ 计算机网络
@@ -956,14 +956,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +971,7 @@
分类于
- Java基础
+ 八股文
@@ -985,15 +985,10 @@
- Java.util.concurrent 中有很多 Java 并发相关工具,例如 锁
-ReentrantLock
、线程 Callable
-FutureTask
、信号量 Semaphore
、共享锁
-CountDownLatch
-此外 Java 原生的 volatile
和 synchronized
-关键字也是并发编程的关键。
+ 如果我是一串电信号,我要去向何方呢?
@@ -1024,7 +1019,7 @@
-
+
@@ -1042,7 +1037,7 @@
- 实习面试题汇总
+ 数据结构和算法
@@ -1053,14 +1048,14 @@
发表于
-
+
更新于
-
+
@@ -1068,7 +1063,7 @@
分类于
- 工作
+ 算法
@@ -1082,10 +1077,10 @@
- 2024 实习投递面试题目汇总
+ 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
diff --git a/page/3/index.html b/page/3/index.html
index 85715e6..da7cbd9 100644
--- a/page/3/index.html
+++ b/page/3/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- 实习笔试题汇总
+ Git 文档阅读
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 工作
+ 开发工具
@@ -249,10 +249,10 @@
- 2024 实习投递笔试题目汇总
+ Git 文档阅读笔记和常用命令集合
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- Java 并发基础
+ ESConv
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- Java基础
+ 科研
@@ -341,10 +341,10 @@
- JMM、ThreadLocal
+ Title: Towards Emotional Support Dialog Systems
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 计算机网络
+ BlenderBot
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 八股文
+ 科研
@@ -433,10 +433,14 @@
- 如果我是一串电信号,我要去向何方呢?
+ Title: Recipes for building an open-domain
+chatbot
+
+FaceBook 在本文中提出了 BlenderBot 编解码器模型
+
@@ -467,7 +471,7 @@
-
+
@@ -485,7 +489,7 @@
- 数据结构和算法
+ MISC
@@ -496,14 +500,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +515,7 @@
分类于
- 算法
+ 科研
@@ -525,10 +529,12 @@
- 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
+ Title: A MIxed Strategy-Aware Model Integrating
+COMET for Emotional Support Conversation
+
@@ -559,7 +565,7 @@
-
+
@@ -577,7 +583,7 @@
- SpringMVC
+ KEMI
@@ -588,14 +594,14 @@
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
- 如何保持专注 + 操作系统
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 思考
+ 八股文
@@ -433,10 +433,10 @@
- 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
+ 待进一步学习
@@ -467,7 +467,7 @@
-
+
@@ -485,7 +485,7 @@
- Java 常用数据结构的底层实现
+ 如何保持专注
@@ -496,14 +496,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +511,7 @@
分类于
- Java基础
+ 思考
@@ -525,10 +525,10 @@
- ArrayList、LinkedList、HashMap、ConcurrentHashMap 的底层源码剖析
+ 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
@@ -687,7 +687,7 @@
更新于
-
+
@@ -743,7 +743,7 @@
-
+
@@ -761,7 +761,7 @@
- ThreadPoolExecutor 和 CompletableFuture 实践
+ 实习面试题汇总
@@ -772,14 +772,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +787,7 @@
分类于
- Java基础
+ 工作
@@ -801,10 +801,10 @@
- 线程池的创建、使用方法,以及如何正确构造有父子关系、先后关系、与或关系的多线程并发场景。
+ 2024 实习投递面试题目汇总
@@ -835,7 +835,7 @@
-
+
@@ -853,7 +853,7 @@
- Rpc 中间件
+ 实习笔试题汇总
@@ -864,14 +864,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +879,7 @@
分类于
- Java开发
+ 工作
@@ -893,10 +893,10 @@
- Rpc 框架搭建过程遇到的问题、Dubbo 使用过程遇到的问题
+ 2024 实习投递笔试题目汇总
@@ -927,7 +927,7 @@
-
+
@@ -945,7 +945,7 @@
- Java 并发锁
+ 计算机网络
@@ -956,14 +956,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +971,7 @@
分类于
- Java基础
+ 八股文
@@ -985,15 +985,10 @@
- Java.util.concurrent 中有很多 Java 并发相关工具,例如 锁
-ReentrantLock
、线程 Callable
-FutureTask
、信号量 Semaphore
、共享锁
-CountDownLatch
-此外 Java 原生的 volatile
和 synchronized
-关键字也是并发编程的关键。
+ 如果我是一串电信号,我要去向何方呢?
@@ -1024,7 +1019,7 @@
-
+
@@ -1042,7 +1037,7 @@
- 实习面试题汇总
+ 数据结构和算法
@@ -1053,14 +1048,14 @@
发表于
-
+
更新于
-
+
@@ -1068,7 +1063,7 @@
分类于
- 工作
+ 算法
@@ -1082,10 +1077,10 @@
- 2024 实习投递面试题目汇总
+ 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
diff --git a/page/3/index.html b/page/3/index.html
index 85715e6..da7cbd9 100644
--- a/page/3/index.html
+++ b/page/3/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- 实习笔试题汇总
+ Git 文档阅读
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 工作
+ 开发工具
@@ -249,10 +249,10 @@
- 2024 实习投递笔试题目汇总
+ Git 文档阅读笔记和常用命令集合
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- Java 并发基础
+ ESConv
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- Java基础
+ 科研
@@ -341,10 +341,10 @@
- JMM、ThreadLocal
+ Title: Towards Emotional Support Dialog Systems
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 计算机网络
+ BlenderBot
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 八股文
+ 科研
@@ -433,10 +433,14 @@
- 如果我是一串电信号,我要去向何方呢?
+ Title: Recipes for building an open-domain
+chatbot
+
+FaceBook 在本文中提出了 BlenderBot 编解码器模型
+
@@ -467,7 +471,7 @@
-
+
@@ -485,7 +489,7 @@
- 数据结构和算法
+ MISC
@@ -496,14 +500,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +515,7 @@
分类于
- 算法
+ 科研
@@ -525,10 +529,12 @@
- 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
+ Title: A MIxed Strategy-Aware Model Integrating
+COMET for Emotional Support Conversation
+
@@ -559,7 +565,7 @@
-
+
@@ -577,7 +583,7 @@
- SpringMVC
+ KEMI
@@ -588,14 +594,14 @@
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
+待进一步学习
@@ -467,7 +467,7 @@
-
+
@@ -485,7 +485,7 @@
- Java 常用数据结构的底层实现
+ 如何保持专注
@@ -496,14 +496,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +511,7 @@
分类于
- Java基础
+ 思考
@@ -525,10 +525,10 @@
- ArrayList、LinkedList、HashMap、ConcurrentHashMap 的底层源码剖析
+ 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
@@ -687,7 +687,7 @@
更新于
-
+
@@ -743,7 +743,7 @@
-
+
@@ -761,7 +761,7 @@
- ThreadPoolExecutor 和 CompletableFuture 实践
+ 实习面试题汇总
@@ -772,14 +772,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +787,7 @@
分类于
- Java基础
+ 工作
@@ -801,10 +801,10 @@
- 线程池的创建、使用方法,以及如何正确构造有父子关系、先后关系、与或关系的多线程并发场景。
+ 2024 实习投递面试题目汇总
@@ -835,7 +835,7 @@
-
+
@@ -853,7 +853,7 @@
- Rpc 中间件
+ 实习笔试题汇总
@@ -864,14 +864,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +879,7 @@
分类于
- Java开发
+ 工作
@@ -893,10 +893,10 @@
- Rpc 框架搭建过程遇到的问题、Dubbo 使用过程遇到的问题
+ 2024 实习投递笔试题目汇总
@@ -927,7 +927,7 @@
-
+
@@ -945,7 +945,7 @@
- Java 并发锁
+ 计算机网络
@@ -956,14 +956,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +971,7 @@
分类于
- Java基础
+ 八股文
@@ -985,15 +985,10 @@
- Java.util.concurrent 中有很多 Java 并发相关工具,例如 锁
-ReentrantLock
、线程 Callable
-FutureTask
、信号量 Semaphore
、共享锁
-CountDownLatch
-此外 Java 原生的 volatile
和 synchronized
-关键字也是并发编程的关键。
+ 如果我是一串电信号,我要去向何方呢?
@@ -1024,7 +1019,7 @@
-
+
@@ -1042,7 +1037,7 @@
- 实习面试题汇总
+ 数据结构和算法
@@ -1053,14 +1048,14 @@
发表于
-
+
更新于
-
+
@@ -1068,7 +1063,7 @@
分类于
- 工作
+ 算法
@@ -1082,10 +1077,10 @@
- 2024 实习投递面试题目汇总
+ 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
diff --git a/page/3/index.html b/page/3/index.html
index 85715e6..da7cbd9 100644
--- a/page/3/index.html
+++ b/page/3/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- 实习笔试题汇总
+ Git 文档阅读
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 工作
+ 开发工具
@@ -249,10 +249,10 @@
- 2024 实习投递笔试题目汇总
+ Git 文档阅读笔记和常用命令集合
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- Java 并发基础
+ ESConv
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- Java基础
+ 科研
@@ -341,10 +341,10 @@
- JMM、ThreadLocal
+ Title: Towards Emotional Support Dialog Systems
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 计算机网络
+ BlenderBot
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 八股文
+ 科研
@@ -433,10 +433,14 @@
- 如果我是一串电信号,我要去向何方呢?
+ Title: Recipes for building an open-domain
+chatbot
+
+FaceBook 在本文中提出了 BlenderBot 编解码器模型
+
@@ -467,7 +471,7 @@
-
+
@@ -485,7 +489,7 @@
- 数据结构和算法
+ MISC
@@ -496,14 +500,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +515,7 @@
分类于
- 算法
+ 科研
@@ -525,10 +529,12 @@
- 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
+ Title: A MIxed Strategy-Aware Model Integrating
+COMET for Emotional Support Conversation
+
@@ -559,7 +565,7 @@
-
+
@@ -577,7 +583,7 @@
- SpringMVC
+ KEMI
@@ -588,14 +594,14 @@
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
- Java 常用数据结构的底层实现 + 如何保持专注
发表于
-
+
更新于
-
+
@@ -511,7 +511,7 @@
分类于
- Java基础
+ 思考
@@ -525,10 +525,10 @@
- ArrayList、LinkedList、HashMap、ConcurrentHashMap 的底层源码剖析
+ 最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
@@ -687,7 +687,7 @@
更新于
-
+
@@ -743,7 +743,7 @@
-
+
@@ -761,7 +761,7 @@
- ThreadPoolExecutor 和 CompletableFuture 实践
+ 实习面试题汇总
@@ -772,14 +772,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +787,7 @@
分类于
- Java基础
+ 工作
@@ -801,10 +801,10 @@
- 线程池的创建、使用方法,以及如何正确构造有父子关系、先后关系、与或关系的多线程并发场景。
+ 2024 实习投递面试题目汇总
@@ -835,7 +835,7 @@
-
+
@@ -853,7 +853,7 @@
- Rpc 中间件
+ 实习笔试题汇总
@@ -864,14 +864,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +879,7 @@
分类于
- Java开发
+ 工作
@@ -893,10 +893,10 @@
- Rpc 框架搭建过程遇到的问题、Dubbo 使用过程遇到的问题
+ 2024 实习投递笔试题目汇总
@@ -927,7 +927,7 @@
-
+
@@ -945,7 +945,7 @@
- Java 并发锁
+ 计算机网络
@@ -956,14 +956,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +971,7 @@
分类于
- Java基础
+ 八股文
@@ -985,15 +985,10 @@
- Java.util.concurrent 中有很多 Java 并发相关工具,例如 锁
-ReentrantLock
、线程 Callable
-FutureTask
、信号量 Semaphore
、共享锁
-CountDownLatch
-此外 Java 原生的 volatile
和 synchronized
-关键字也是并发编程的关键。
+ 如果我是一串电信号,我要去向何方呢?
@@ -1024,7 +1019,7 @@
-
+
@@ -1042,7 +1037,7 @@
- 实习面试题汇总
+ 数据结构和算法
@@ -1053,14 +1048,14 @@
发表于
-
+
更新于
-
+
@@ -1068,7 +1063,7 @@
分类于
- 工作
+ 算法
@@ -1082,10 +1077,10 @@
- 2024 实习投递面试题目汇总
+ 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
diff --git a/page/3/index.html b/page/3/index.html
index 85715e6..da7cbd9 100644
--- a/page/3/index.html
+++ b/page/3/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- 实习笔试题汇总
+ Git 文档阅读
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 工作
+ 开发工具
@@ -249,10 +249,10 @@
- 2024 实习投递笔试题目汇总
+ Git 文档阅读笔记和常用命令集合
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- Java 并发基础
+ ESConv
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- Java基础
+ 科研
@@ -341,10 +341,10 @@
- JMM、ThreadLocal
+ Title: Towards Emotional Support Dialog Systems
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 计算机网络
+ BlenderBot
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 八股文
+ 科研
@@ -433,10 +433,14 @@
- 如果我是一串电信号,我要去向何方呢?
+ Title: Recipes for building an open-domain
+chatbot
+
+FaceBook 在本文中提出了 BlenderBot 编解码器模型
+
@@ -467,7 +471,7 @@
-
+
@@ -485,7 +489,7 @@
- 数据结构和算法
+ MISC
@@ -496,14 +500,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +515,7 @@
分类于
- 算法
+ 科研
@@ -525,10 +529,12 @@
- 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
+ Title: A MIxed Strategy-Aware Model Integrating
+COMET for Emotional Support Conversation
+
@@ -559,7 +565,7 @@
-
+
@@ -577,7 +583,7 @@
- SpringMVC
+ KEMI
@@ -588,14 +594,14 @@
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
ArrayList、LinkedList、HashMap、ConcurrentHashMap 的底层源码剖析
+最近学习和找工作的过程中,猛然意识到自己还是没有解决那个困扰我多年的问题,到底应该如何保持做事的专注,以提高效率?而不是一拖再拖,拖到最后变成一个“虎头蛇尾”的故事。
@@ -687,7 +687,7 @@
更新于
-
+
@@ -743,7 +743,7 @@
-
+
@@ -761,7 +761,7 @@
- ThreadPoolExecutor 和 CompletableFuture 实践
+ 实习面试题汇总
@@ -772,14 +772,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +787,7 @@
分类于
- Java基础
+ 工作
@@ -801,10 +801,10 @@
- 线程池的创建、使用方法,以及如何正确构造有父子关系、先后关系、与或关系的多线程并发场景。
+ 2024 实习投递面试题目汇总
@@ -835,7 +835,7 @@
-
+
@@ -853,7 +853,7 @@
- Rpc 中间件
+ 实习笔试题汇总
@@ -864,14 +864,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +879,7 @@
分类于
- Java开发
+ 工作
@@ -893,10 +893,10 @@
- Rpc 框架搭建过程遇到的问题、Dubbo 使用过程遇到的问题
+ 2024 实习投递笔试题目汇总
@@ -927,7 +927,7 @@
-
+
@@ -945,7 +945,7 @@
- Java 并发锁
+ 计算机网络
@@ -956,14 +956,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +971,7 @@
分类于
- Java基础
+ 八股文
@@ -985,15 +985,10 @@
- Java.util.concurrent 中有很多 Java 并发相关工具,例如 锁
-ReentrantLock
、线程 Callable
-FutureTask
、信号量 Semaphore
、共享锁
-CountDownLatch
-此外 Java 原生的 volatile
和 synchronized
-关键字也是并发编程的关键。
+ 如果我是一串电信号,我要去向何方呢?
@@ -1024,7 +1019,7 @@
-
+
@@ -1042,7 +1037,7 @@
- 实习面试题汇总
+ 数据结构和算法
@@ -1053,14 +1048,14 @@
发表于
-
+
更新于
-
+
@@ -1068,7 +1063,7 @@
分类于
- 工作
+ 算法
@@ -1082,10 +1077,10 @@
- 2024 实习投递面试题目汇总
+ 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
diff --git a/page/3/index.html b/page/3/index.html
index 85715e6..da7cbd9 100644
--- a/page/3/index.html
+++ b/page/3/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- 实习笔试题汇总
+ Git 文档阅读
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 工作
+ 开发工具
@@ -249,10 +249,10 @@
- 2024 实习投递笔试题目汇总
+ Git 文档阅读笔记和常用命令集合
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- Java 并发基础
+ ESConv
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- Java基础
+ 科研
@@ -341,10 +341,10 @@
- JMM、ThreadLocal
+ Title: Towards Emotional Support Dialog Systems
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 计算机网络
+ BlenderBot
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 八股文
+ 科研
@@ -433,10 +433,14 @@
- 如果我是一串电信号,我要去向何方呢?
+ Title: Recipes for building an open-domain
+chatbot
+
+FaceBook 在本文中提出了 BlenderBot 编解码器模型
+
@@ -467,7 +471,7 @@
-
+
@@ -485,7 +489,7 @@
- 数据结构和算法
+ MISC
@@ -496,14 +500,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +515,7 @@
分类于
- 算法
+ 科研
@@ -525,10 +529,12 @@
- 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
+ Title: A MIxed Strategy-Aware Model Integrating
+COMET for Emotional Support Conversation
+
@@ -559,7 +565,7 @@
-
+
@@ -577,7 +583,7 @@
- SpringMVC
+ KEMI
@@ -588,14 +594,14 @@
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
- ThreadPoolExecutor 和 CompletableFuture 实践 + 实习面试题汇总
发表于
-
+
更新于
-
+
@@ -787,7 +787,7 @@
分类于
- Java基础
+ 工作
@@ -801,10 +801,10 @@
- 线程池的创建、使用方法,以及如何正确构造有父子关系、先后关系、与或关系的多线程并发场景。
+ 2024 实习投递面试题目汇总
@@ -835,7 +835,7 @@
-
+
@@ -853,7 +853,7 @@
- Rpc 中间件
+ 实习笔试题汇总
@@ -864,14 +864,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +879,7 @@
分类于
- Java开发
+ 工作
@@ -893,10 +893,10 @@
- Rpc 框架搭建过程遇到的问题、Dubbo 使用过程遇到的问题
+ 2024 实习投递笔试题目汇总
@@ -927,7 +927,7 @@
-
+
@@ -945,7 +945,7 @@
- Java 并发锁
+ 计算机网络
@@ -956,14 +956,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +971,7 @@
分类于
- Java基础
+ 八股文
@@ -985,15 +985,10 @@
- Java.util.concurrent 中有很多 Java 并发相关工具,例如 锁
-ReentrantLock
、线程 Callable
-FutureTask
、信号量 Semaphore
、共享锁
-CountDownLatch
-此外 Java 原生的 volatile
和 synchronized
-关键字也是并发编程的关键。
+ 如果我是一串电信号,我要去向何方呢?
@@ -1024,7 +1019,7 @@
-
+
@@ -1042,7 +1037,7 @@
- 实习面试题汇总
+ 数据结构和算法
@@ -1053,14 +1048,14 @@
发表于
-
+
更新于
-
+
@@ -1068,7 +1063,7 @@
分类于
- 工作
+ 算法
@@ -1082,10 +1077,10 @@
- 2024 实习投递面试题目汇总
+ 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
diff --git a/page/3/index.html b/page/3/index.html
index 85715e6..da7cbd9 100644
--- a/page/3/index.html
+++ b/page/3/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- 实习笔试题汇总
+ Git 文档阅读
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 工作
+ 开发工具
@@ -249,10 +249,10 @@
- 2024 实习投递笔试题目汇总
+ Git 文档阅读笔记和常用命令集合
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- Java 并发基础
+ ESConv
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- Java基础
+ 科研
@@ -341,10 +341,10 @@
- JMM、ThreadLocal
+ Title: Towards Emotional Support Dialog Systems
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 计算机网络
+ BlenderBot
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 八股文
+ 科研
@@ -433,10 +433,14 @@
- 如果我是一串电信号,我要去向何方呢?
+ Title: Recipes for building an open-domain
+chatbot
+
+FaceBook 在本文中提出了 BlenderBot 编解码器模型
+
@@ -467,7 +471,7 @@
-
+
@@ -485,7 +489,7 @@
- 数据结构和算法
+ MISC
@@ -496,14 +500,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +515,7 @@
分类于
- 算法
+ 科研
@@ -525,10 +529,12 @@
- 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
+ Title: A MIxed Strategy-Aware Model Integrating
+COMET for Emotional Support Conversation
+
@@ -559,7 +565,7 @@
-
+
@@ -577,7 +583,7 @@
- SpringMVC
+ KEMI
@@ -588,14 +594,14 @@
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
线程池的创建、使用方法,以及如何正确构造有父子关系、先后关系、与或关系的多线程并发场景。
+2024 实习投递面试题目汇总
@@ -835,7 +835,7 @@
-
+
@@ -853,7 +853,7 @@
- Rpc 中间件
+ 实习笔试题汇总
@@ -864,14 +864,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +879,7 @@
分类于
- Java开发
+ 工作
@@ -893,10 +893,10 @@
- Rpc 框架搭建过程遇到的问题、Dubbo 使用过程遇到的问题
+ 2024 实习投递笔试题目汇总
@@ -927,7 +927,7 @@
-
+
@@ -945,7 +945,7 @@
- Java 并发锁
+ 计算机网络
@@ -956,14 +956,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +971,7 @@
分类于
- Java基础
+ 八股文
@@ -985,15 +985,10 @@
- Java.util.concurrent 中有很多 Java 并发相关工具,例如 锁
-ReentrantLock
、线程 Callable
-FutureTask
、信号量 Semaphore
、共享锁
-CountDownLatch
-此外 Java 原生的 volatile
和 synchronized
-关键字也是并发编程的关键。
+ 如果我是一串电信号,我要去向何方呢?
@@ -1024,7 +1019,7 @@
-
+
@@ -1042,7 +1037,7 @@
- 实习面试题汇总
+ 数据结构和算法
@@ -1053,14 +1048,14 @@
发表于
-
+
更新于
-
+
@@ -1068,7 +1063,7 @@
分类于
- 工作
+ 算法
@@ -1082,10 +1077,10 @@
- 2024 实习投递面试题目汇总
+ 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
diff --git a/page/3/index.html b/page/3/index.html
index 85715e6..da7cbd9 100644
--- a/page/3/index.html
+++ b/page/3/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- 实习笔试题汇总
+ Git 文档阅读
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 工作
+ 开发工具
@@ -249,10 +249,10 @@
- 2024 实习投递笔试题目汇总
+ Git 文档阅读笔记和常用命令集合
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- Java 并发基础
+ ESConv
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- Java基础
+ 科研
@@ -341,10 +341,10 @@
- JMM、ThreadLocal
+ Title: Towards Emotional Support Dialog Systems
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 计算机网络
+ BlenderBot
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 八股文
+ 科研
@@ -433,10 +433,14 @@
- 如果我是一串电信号,我要去向何方呢?
+ Title: Recipes for building an open-domain
+chatbot
+
+FaceBook 在本文中提出了 BlenderBot 编解码器模型
+
@@ -467,7 +471,7 @@
-
+
@@ -485,7 +489,7 @@
- 数据结构和算法
+ MISC
@@ -496,14 +500,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +515,7 @@
分类于
- 算法
+ 科研
@@ -525,10 +529,12 @@
- 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
+ Title: A MIxed Strategy-Aware Model Integrating
+COMET for Emotional Support Conversation
+
@@ -559,7 +565,7 @@
-
+
@@ -577,7 +583,7 @@
- SpringMVC
+ KEMI
@@ -588,14 +594,14 @@
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
- Rpc 中间件 + 实习笔试题汇总
发表于
-
+
更新于
-
+
@@ -879,7 +879,7 @@
分类于
- Java开发
+ 工作
@@ -893,10 +893,10 @@
- Rpc 框架搭建过程遇到的问题、Dubbo 使用过程遇到的问题
+ 2024 实习投递笔试题目汇总
@@ -927,7 +927,7 @@
-
+
@@ -945,7 +945,7 @@
- Java 并发锁
+ 计算机网络
@@ -956,14 +956,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +971,7 @@
分类于
- Java基础
+ 八股文
@@ -985,15 +985,10 @@
- Java.util.concurrent 中有很多 Java 并发相关工具,例如 锁
-ReentrantLock
、线程 Callable
-FutureTask
、信号量 Semaphore
、共享锁
-CountDownLatch
-此外 Java 原生的 volatile
和 synchronized
-关键字也是并发编程的关键。
+ 如果我是一串电信号,我要去向何方呢?
@@ -1024,7 +1019,7 @@
-
+
@@ -1042,7 +1037,7 @@
- 实习面试题汇总
+ 数据结构和算法
@@ -1053,14 +1048,14 @@
发表于
-
+
更新于
-
+
@@ -1068,7 +1063,7 @@
分类于
- 工作
+ 算法
@@ -1082,10 +1077,10 @@
- 2024 实习投递面试题目汇总
+ 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
diff --git a/page/3/index.html b/page/3/index.html
index 85715e6..da7cbd9 100644
--- a/page/3/index.html
+++ b/page/3/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- 实习笔试题汇总
+ Git 文档阅读
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 工作
+ 开发工具
@@ -249,10 +249,10 @@
- 2024 实习投递笔试题目汇总
+ Git 文档阅读笔记和常用命令集合
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- Java 并发基础
+ ESConv
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- Java基础
+ 科研
@@ -341,10 +341,10 @@
- JMM、ThreadLocal
+ Title: Towards Emotional Support Dialog Systems
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 计算机网络
+ BlenderBot
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 八股文
+ 科研
@@ -433,10 +433,14 @@
- 如果我是一串电信号,我要去向何方呢?
+ Title: Recipes for building an open-domain
+chatbot
+
+FaceBook 在本文中提出了 BlenderBot 编解码器模型
+
@@ -467,7 +471,7 @@
-
+
@@ -485,7 +489,7 @@
- 数据结构和算法
+ MISC
@@ -496,14 +500,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +515,7 @@
分类于
- 算法
+ 科研
@@ -525,10 +529,12 @@
- 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
+ Title: A MIxed Strategy-Aware Model Integrating
+COMET for Emotional Support Conversation
+
@@ -559,7 +565,7 @@
-
+
@@ -577,7 +583,7 @@
- SpringMVC
+ KEMI
@@ -588,14 +594,14 @@
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
Rpc 框架搭建过程遇到的问题、Dubbo 使用过程遇到的问题
+2024 实习投递笔试题目汇总
@@ -927,7 +927,7 @@
-
+
@@ -945,7 +945,7 @@
- Java 并发锁
+ 计算机网络
@@ -956,14 +956,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +971,7 @@
分类于
- Java基础
+ 八股文
@@ -985,15 +985,10 @@
- Java.util.concurrent 中有很多 Java 并发相关工具,例如 锁
-ReentrantLock
、线程 Callable
-FutureTask
、信号量 Semaphore
、共享锁
-CountDownLatch
-此外 Java 原生的 volatile
和 synchronized
-关键字也是并发编程的关键。
+ 如果我是一串电信号,我要去向何方呢?
@@ -1024,7 +1019,7 @@
-
+
@@ -1042,7 +1037,7 @@
- 实习面试题汇总
+ 数据结构和算法
@@ -1053,14 +1048,14 @@
发表于
-
+
更新于
-
+
@@ -1068,7 +1063,7 @@
分类于
- 工作
+ 算法
@@ -1082,10 +1077,10 @@
- 2024 实习投递面试题目汇总
+ 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
diff --git a/page/3/index.html b/page/3/index.html
index 85715e6..da7cbd9 100644
--- a/page/3/index.html
+++ b/page/3/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- 实习笔试题汇总
+ Git 文档阅读
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 工作
+ 开发工具
@@ -249,10 +249,10 @@
- 2024 实习投递笔试题目汇总
+ Git 文档阅读笔记和常用命令集合
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- Java 并发基础
+ ESConv
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- Java基础
+ 科研
@@ -341,10 +341,10 @@
- JMM、ThreadLocal
+ Title: Towards Emotional Support Dialog Systems
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 计算机网络
+ BlenderBot
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 八股文
+ 科研
@@ -433,10 +433,14 @@
- 如果我是一串电信号,我要去向何方呢?
+ Title: Recipes for building an open-domain
+chatbot
+
+FaceBook 在本文中提出了 BlenderBot 编解码器模型
+
@@ -467,7 +471,7 @@
-
+
@@ -485,7 +489,7 @@
- 数据结构和算法
+ MISC
@@ -496,14 +500,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +515,7 @@
分类于
- 算法
+ 科研
@@ -525,10 +529,12 @@
- 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
+ Title: A MIxed Strategy-Aware Model Integrating
+COMET for Emotional Support Conversation
+
@@ -559,7 +565,7 @@
-
+
@@ -577,7 +583,7 @@
- SpringMVC
+ KEMI
@@ -588,14 +594,14 @@
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
- Java 并发锁 + 计算机网络
发表于
-
+
更新于
-
+
@@ -971,7 +971,7 @@
分类于
- Java基础
+ 八股文
@@ -985,15 +985,10 @@
- Java.util.concurrent 中有很多 Java 并发相关工具,例如 锁
-ReentrantLock
、线程 Callable
-FutureTask
、信号量 Semaphore
、共享锁
-CountDownLatch
-此外 Java 原生的 volatile
和 synchronized
-关键字也是并发编程的关键。
+ 如果我是一串电信号,我要去向何方呢?
@@ -1024,7 +1019,7 @@
-
+
@@ -1042,7 +1037,7 @@
- 实习面试题汇总
+ 数据结构和算法
@@ -1053,14 +1048,14 @@
发表于
-
+
更新于
-
+
@@ -1068,7 +1063,7 @@
分类于
- 工作
+ 算法
@@ -1082,10 +1077,10 @@
- 2024 实习投递面试题目汇总
+ 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
diff --git a/page/3/index.html b/page/3/index.html
index 85715e6..da7cbd9 100644
--- a/page/3/index.html
+++ b/page/3/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- 实习笔试题汇总
+ Git 文档阅读
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 工作
+ 开发工具
@@ -249,10 +249,10 @@
- 2024 实习投递笔试题目汇总
+ Git 文档阅读笔记和常用命令集合
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- Java 并发基础
+ ESConv
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- Java基础
+ 科研
@@ -341,10 +341,10 @@
- JMM、ThreadLocal
+ Title: Towards Emotional Support Dialog Systems
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 计算机网络
+ BlenderBot
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 八股文
+ 科研
@@ -433,10 +433,14 @@
- 如果我是一串电信号,我要去向何方呢?
+ Title: Recipes for building an open-domain
+chatbot
+
+FaceBook 在本文中提出了 BlenderBot 编解码器模型
+
@@ -467,7 +471,7 @@
-
+
@@ -485,7 +489,7 @@
- 数据结构和算法
+ MISC
@@ -496,14 +500,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +515,7 @@
分类于
- 算法
+ 科研
@@ -525,10 +529,12 @@
- 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
+ Title: A MIxed Strategy-Aware Model Integrating
+COMET for Emotional Support Conversation
+
@@ -559,7 +565,7 @@
-
+
@@ -577,7 +583,7 @@
- SpringMVC
+ KEMI
@@ -588,14 +594,14 @@
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
Java.util.concurrent 中有很多 Java 并发相关工具,例如 锁
-ReentrantLock
、线程 Callable
-FutureTask
、信号量 Semaphore
、共享锁
-CountDownLatch
此外 Java 原生的 volatile
和 synchronized
-关键字也是并发编程的关键。
如果我是一串电信号,我要去向何方呢?
@@ -1024,7 +1019,7 @@
-
+
@@ -1042,7 +1037,7 @@
- 实习面试题汇总
+ 数据结构和算法
@@ -1053,14 +1048,14 @@
发表于
-
+
更新于
-
+
@@ -1068,7 +1063,7 @@
分类于
- 工作
+ 算法
@@ -1082,10 +1077,10 @@
- 2024 实习投递面试题目汇总
+ 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
diff --git a/page/3/index.html b/page/3/index.html
index 85715e6..da7cbd9 100644
--- a/page/3/index.html
+++ b/page/3/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- 实习笔试题汇总
+ Git 文档阅读
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 工作
+ 开发工具
@@ -249,10 +249,10 @@
- 2024 实习投递笔试题目汇总
+ Git 文档阅读笔记和常用命令集合
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- Java 并发基础
+ ESConv
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- Java基础
+ 科研
@@ -341,10 +341,10 @@
- JMM、ThreadLocal
+ Title: Towards Emotional Support Dialog Systems
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 计算机网络
+ BlenderBot
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 八股文
+ 科研
@@ -433,10 +433,14 @@
- 如果我是一串电信号,我要去向何方呢?
+ Title: Recipes for building an open-domain
+chatbot
+
+FaceBook 在本文中提出了 BlenderBot 编解码器模型
+
@@ -467,7 +471,7 @@
-
+
@@ -485,7 +489,7 @@
- 数据结构和算法
+ MISC
@@ -496,14 +500,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +515,7 @@
分类于
- 算法
+ 科研
@@ -525,10 +529,12 @@
- 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
+ Title: A MIxed Strategy-Aware Model Integrating
+COMET for Emotional Support Conversation
+
@@ -559,7 +565,7 @@
-
+
@@ -577,7 +583,7 @@
- SpringMVC
+ KEMI
@@ -588,14 +594,14 @@
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
- 实习面试题汇总 + 数据结构和算法
发表于
-
+
更新于
-
+
@@ -1068,7 +1063,7 @@
分类于
- 工作
+ 算法
@@ -1082,10 +1077,10 @@
- 2024 实习投递面试题目汇总
+ 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
diff --git a/page/3/index.html b/page/3/index.html
index 85715e6..da7cbd9 100644
--- a/page/3/index.html
+++ b/page/3/index.html
@@ -149,18 +149,18 @@ 闻
@@ -191,7 +191,7 @@ 闻
-
+
@@ -209,7 +209,7 @@ 闻
- 实习笔试题汇总
+ Git 文档阅读
@@ -220,14 +220,14 @@
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 工作
+ 开发工具
@@ -249,10 +249,10 @@
- 2024 实习投递笔试题目汇总
+ Git 文档阅读笔记和常用命令集合
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- Java 并发基础
+ ESConv
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- Java基础
+ 科研
@@ -341,10 +341,10 @@
- JMM、ThreadLocal
+ Title: Towards Emotional Support Dialog Systems
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 计算机网络
+ BlenderBot
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 八股文
+ 科研
@@ -433,10 +433,14 @@
- 如果我是一串电信号,我要去向何方呢?
+ Title: Recipes for building an open-domain
+chatbot
+
+FaceBook 在本文中提出了 BlenderBot 编解码器模型
+
@@ -467,7 +471,7 @@
-
+
@@ -485,7 +489,7 @@
- 数据结构和算法
+ MISC
@@ -496,14 +500,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +515,7 @@
分类于
- 算法
+ 科研
@@ -525,10 +529,12 @@
- 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
+ Title: A MIxed Strategy-Aware Model Integrating
+COMET for Emotional Support Conversation
+
@@ -559,7 +565,7 @@
-
+
@@ -577,7 +583,7 @@
- SpringMVC
+ KEMI
@@ -588,14 +594,14 @@
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
2024 实习投递面试题目汇总
+1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
diff --git a/page/3/index.html b/page/3/index.html index 85715e6..da7cbd9 100644 --- a/page/3/index.html +++ b/page/3/index.html @@ -149,18 +149,18 @@闻
@@ -191,7 +191,7 @@闻
闻
- 实习笔试题汇总 + Git 文档阅读
发表于
-
+
更新于
-
+
@@ -235,7 +235,7 @@
分类于
- 工作
+ 开发工具
@@ -249,10 +249,10 @@
- 2024 实习投递笔试题目汇总
+ Git 文档阅读笔记和常用命令集合
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- Java 并发基础
+ ESConv
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- Java基础
+ 科研
@@ -341,10 +341,10 @@
- JMM、ThreadLocal
+ Title: Towards Emotional Support Dialog Systems
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 计算机网络
+ BlenderBot
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 八股文
+ 科研
@@ -433,10 +433,14 @@
- 如果我是一串电信号,我要去向何方呢?
+ Title: Recipes for building an open-domain
+chatbot
+
+FaceBook 在本文中提出了 BlenderBot 编解码器模型
+
@@ -467,7 +471,7 @@
-
+
@@ -485,7 +489,7 @@
- 数据结构和算法
+ MISC
@@ -496,14 +500,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +515,7 @@
分类于
- 算法
+ 科研
@@ -525,10 +529,12 @@
- 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
+ Title: A MIxed Strategy-Aware Model Integrating
+COMET for Emotional Support Conversation
+
@@ -559,7 +565,7 @@
-
+
@@ -577,7 +583,7 @@
- SpringMVC
+ KEMI
@@ -588,14 +594,14 @@
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
2024 实习投递笔试题目汇总
+Git 文档阅读笔记和常用命令集合
@@ -283,7 +283,7 @@
-
+
@@ -301,7 +301,7 @@
- Java 并发基础
+ ESConv
@@ -312,14 +312,14 @@
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- Java基础
+ 科研
@@ -341,10 +341,10 @@
- JMM、ThreadLocal
+ Title: Towards Emotional Support Dialog Systems
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 计算机网络
+ BlenderBot
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 八股文
+ 科研
@@ -433,10 +433,14 @@
- 如果我是一串电信号,我要去向何方呢?
+ Title: Recipes for building an open-domain
+chatbot
+
+FaceBook 在本文中提出了 BlenderBot 编解码器模型
+
@@ -467,7 +471,7 @@
-
+
@@ -485,7 +489,7 @@
- 数据结构和算法
+ MISC
@@ -496,14 +500,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +515,7 @@
分类于
- 算法
+ 科研
@@ -525,10 +529,12 @@
- 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
+ Title: A MIxed Strategy-Aware Model Integrating
+COMET for Emotional Support Conversation
+
@@ -559,7 +565,7 @@
-
+
@@ -577,7 +583,7 @@
- SpringMVC
+ KEMI
@@ -588,14 +594,14 @@
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
- Java 并发基础 + ESConv
发表于
-
+
更新于
-
+
@@ -327,7 +327,7 @@
分类于
- Java基础
+ 科研
@@ -341,10 +341,10 @@
- JMM、ThreadLocal
+ Title: Towards Emotional Support Dialog Systems
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 计算机网络
+ BlenderBot
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 八股文
+ 科研
@@ -433,10 +433,14 @@
- 如果我是一串电信号,我要去向何方呢?
+ Title: Recipes for building an open-domain
+chatbot
+
+FaceBook 在本文中提出了 BlenderBot 编解码器模型
+
@@ -467,7 +471,7 @@
-
+
@@ -485,7 +489,7 @@
- 数据结构和算法
+ MISC
@@ -496,14 +500,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +515,7 @@
分类于
- 算法
+ 科研
@@ -525,10 +529,12 @@
- 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
+ Title: A MIxed Strategy-Aware Model Integrating
+COMET for Emotional Support Conversation
+
@@ -559,7 +565,7 @@
-
+
@@ -577,7 +583,7 @@
- SpringMVC
+ KEMI
@@ -588,14 +594,14 @@
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
JMM、ThreadLocal
+Title: Towards Emotional Support Dialog Systems
@@ -375,7 +375,7 @@
-
+
@@ -393,7 +393,7 @@
- 计算机网络
+ BlenderBot
@@ -404,14 +404,14 @@
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 八股文
+ 科研
@@ -433,10 +433,14 @@
- 如果我是一串电信号,我要去向何方呢?
+ Title: Recipes for building an open-domain
+chatbot
+
+FaceBook 在本文中提出了 BlenderBot 编解码器模型
+
@@ -467,7 +471,7 @@
-
+
@@ -485,7 +489,7 @@
- 数据结构和算法
+ MISC
@@ -496,14 +500,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +515,7 @@
分类于
- 算法
+ 科研
@@ -525,10 +529,12 @@
- 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
+ Title: A MIxed Strategy-Aware Model Integrating
+COMET for Emotional Support Conversation
+
@@ -559,7 +565,7 @@
-
+
@@ -577,7 +583,7 @@
- SpringMVC
+ KEMI
@@ -588,14 +594,14 @@
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
- 计算机网络 + BlenderBot
发表于
-
+
更新于
-
+
@@ -419,7 +419,7 @@
分类于
- 八股文
+ 科研
@@ -433,10 +433,14 @@
- 如果我是一串电信号,我要去向何方呢?
+ Title: Recipes for building an open-domain
+chatbot
+
+FaceBook 在本文中提出了 BlenderBot 编解码器模型
+
@@ -467,7 +471,7 @@
-
+
@@ -485,7 +489,7 @@
- 数据结构和算法
+ MISC
@@ -496,14 +500,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +515,7 @@
分类于
- 算法
+ 科研
@@ -525,10 +529,12 @@
- 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
+ Title: A MIxed Strategy-Aware Model Integrating
+COMET for Emotional Support Conversation
+
@@ -559,7 +565,7 @@
-
+
@@ -577,7 +583,7 @@
- SpringMVC
+ KEMI
@@ -588,14 +594,14 @@
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
如果我是一串电信号,我要去向何方呢?
+Title: Recipes for building an open-domain +chatbot
++@@ -467,7 +471,7 @@FaceBook 在本文中提出了 BlenderBot 编解码器模型
+
-
+
@@ -485,7 +489,7 @@
- 数据结构和算法
+ MISC
@@ -496,14 +500,14 @@
发表于
-
+
更新于
-
+
@@ -511,7 +515,7 @@
分类于
- 算法
+ 科研
@@ -525,10 +529,12 @@
- 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
+ Title: A MIxed Strategy-Aware Model Integrating
+COMET for Emotional Support Conversation
+
@@ -559,7 +565,7 @@
-
+
@@ -577,7 +583,7 @@
- SpringMVC
+ KEMI
@@ -588,14 +594,14 @@
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
- 数据结构和算法 + MISC
发表于
-
+
更新于
-
+
@@ -511,7 +515,7 @@
分类于
- 算法
+ 科研
@@ -525,10 +529,12 @@
- 1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
+ Title: A MIxed Strategy-Aware Model Integrating
+COMET for Emotional Support Conversation
+
@@ -559,7 +565,7 @@
-
+
@@ -577,7 +583,7 @@
- SpringMVC
+ KEMI
@@ -588,14 +594,14 @@
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
1.汇总用 Java 写算法的一些小技巧;2.总结语雀上的所有算法笔记。方便每次笔试之前复习总结
+Title: A MIxed Strategy-Aware Model Integrating +COMET for Emotional Support Conversation
+ @@ -559,7 +565,7 @@
-
+
@@ -577,7 +583,7 @@
- SpringMVC
+ KEMI
@@ -588,14 +594,14 @@
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
- SpringMVC + KEMI
发表于
-
+
更新于
-
+
@@ -603,7 +609,7 @@
分类于
- Java开发
+ 科研
@@ -617,10 +623,12 @@
- 复习JavaWeb开发,SpringMVC流程
+ Title: Knowledge-enhanced Mixed-initiative Dialogue
+System for Emotional Support Conversations
+
@@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
复习JavaWeb开发,SpringMVC流程
+Title: Knowledge-enhanced Mixed-initiative Dialogue +System for Emotional Support Conversations
+ @@ -651,7 +659,7 @@
-
+
@@ -669,7 +677,7 @@
- JVM 虚拟机
+ HEAL
@@ -680,14 +688,14 @@
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
- JVM 虚拟机 + HEAL
发表于
-
+
更新于
-
+
@@ -695,7 +703,7 @@
分类于
- Java基础
+ 科研
@@ -709,10 +717,11 @@
- 内存结构、GC、垃圾回收、类加载
+ Title: A Knowledge Graph for Distress Management
+Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
内存结构、GC、垃圾回收、类加载
+Title: A Knowledge Graph for Distress Management +Conversations
@@ -743,7 +752,7 @@
-
+
@@ -761,7 +770,7 @@
- Java 语言
+ Feedback-Aware Double
@@ -772,14 +781,14 @@
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
- Java 语言 + Feedback-Aware Double
发表于
-
+
更新于
-
+
@@ -787,7 +796,7 @@
分类于
- Java基础
+ 科研
@@ -801,10 +810,12 @@
- Java 语言的基础知识
+ Title: Feedback-Aware Double COntrolling Network for
+Emotional Support Conversation
+
@@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
Java 语言的基础知识
+Title: Feedback-Aware Double COntrolling Network for +Emotional Support Conversation
+ @@ -835,7 +846,7 @@
-
+
@@ -853,7 +864,7 @@
- Spring
+ DQ-HGAN
@@ -864,14 +875,14 @@
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
- Spring + DQ-HGAN
发表于
-
+
更新于
-
+
@@ -879,7 +890,7 @@
分类于
- Java开发
+ 科研
@@ -893,10 +904,11 @@
- 什么是 Spring 框架?
+ Title: A heterogeneous graph attention network based
+deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
什么是 Spring 框架?
+Title: A heterogeneous graph attention network based +deep Q-learning for emotional support conversation generation
@@ -927,7 +939,7 @@
-
+
@@ -945,7 +957,7 @@
- Git 文档阅读
+ Control Globally, Understand Locally
@@ -956,14 +968,14 @@
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
- Git 文档阅读 + Control Globally, Understand Locally
发表于
-
+
更新于
-
+
@@ -971,7 +983,7 @@
分类于
- 开发工具
+ 科研
@@ -985,10 +997,17 @@
- Git 文档阅读笔记和常用命令集合
+ Title: Control Globally, Understand Locally. A
+Global-to-Local Hierarchical Graph Network for Emotional Support
+Conversation.
+创新点:
+
+
+
@@ -1019,7 +1038,7 @@
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
Git 文档阅读笔记和常用命令集合
+Title: Control Globally, Understand Locally. A +Global-to-Local Hierarchical Graph Network for Emotional Support +Conversation.
+创新点:
+-
+
-
+
@@ -1037,7 +1056,7 @@
- ESConv
+ AugESC
@@ -1048,14 +1067,14 @@
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
- ESConv + AugESC
发表于
-
+
更新于
-
+
@@ -1077,10 +1096,15 @@
- Title: Towards Emotional Support Dialog Systems
+ Title: Large-scale Data Augmentation for Emotional
+Support Conversation with Pre-trained Language Models
+
+研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv
+数据集大小
+
diff --git a/page/4/index.html b/page/4/index.html
index 2215c6a..9d06e54 100644
--- a/page/4/index.html
+++ b/page/4/index.html
@@ -149,18 +149,18 @@ 闻
@@ -186,766 +186,6 @@ 闻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlenderBot
-
-
-
-
-
-
-
Title: Towards Emotional Support Dialog Systems
+Title: Large-scale Data Augmentation for Emotional +Support Conversation with Pre-trained Language Models
++diff --git a/page/4/index.html b/page/4/index.html index 2215c6a..9d06e54 100644 --- a/page/4/index.html +++ b/page/4/index.html @@ -149,18 +149,18 @@研究开放式对话数据增强,采用大语言模型 GPT-3 拓展了 ESConv +数据集大小
+