🧊foril
首页
分类
关于
首页
分类
关于
🧊foril
初探实时协同编辑中的 OT 和 CRDT
协同编辑是指多个用户同时编辑同一文档,并确保所有用户的内容保持一致。本文介绍了两种常见的协同编辑实现方式:基于操作转换(OT)和无冲突复制数据类型(CRDT),并深入探讨了 CRDT 在去中心化协同编辑中的潜在应用及其未来发展。
2 个月前
#学习笔记
长列表优化:虚拟列表
在有些需求场景中,我们可能需要渲染大量列表项,同时分页加载可能不是理想的加载方式,这时候就需要用到长列表优化技术以优化渲染开销,虚拟列表就是其中一种。
4 个月前
#学习笔记
Vue 的响应性实现和渲染范围缩小
本文从在项目中遇到的减少渲染开销的问题出发,简单记录了 Vue 响应性的实现思路,以及如何利用 Vue 的响应性来实现缩小渲染范围。
5 个月前
#开发小记
从 CORS 来看 Web 安全策略
本文主要介绍了浏览器的同源策略(SOP)、跨域资源共享(CORS)以及跨站请求伪造(CSRF)攻击以及内容安全策略(CSP)。他们关系密切,是前端开发中必须了解的内容。
8 个月前
#开发小记
红黑树
事情的起因是被面试老师问到如何自己实现一个哈希表,在描述完大概内容后,我说应对哈希冲突有多种解决方案,有一种是开一个 「孤儿区」,对于冲突的内容,在线性时间内找到实际的内容。老师提示我红黑树可以在 O(logn) 时间内找到内容,我突然意识到自己对于红黑树的内容已经非常模糊,就停留在 Java 的 HashMap 底层实现用到了红黑树,但是对于红黑树的具体内容已经忘得差不多了。所以这篇文章就是重新学习红黑树的笔记。
8 个月前
#学习笔记
KMP 字符串匹配算法
KMP 算法是一种字符串匹配算法,其时间复杂度为 O(m+n),其中 m 为被匹配串的长度,n 为匹配串的长度。简单记录一下 KMP 算法的一些基本要点,免得自己总是一遍一遍忘记再找半天。
10 个月前
#力扣专题
Attention 以及 Transformer
2017 年,Google 提出了一种新的神经网络架构 Transformer,它在机器翻译任务上取得了很好的效果。Transformer 的核心是 Attention 机制,它在 NLP 领域有着广泛的应用。本文尝试对 Transformer 以及 Attention 机制进行一些总结。
10 个月前
#学习笔记
RNN
最近模型又用到了 RNN 模型,发现之前对于 RNN 的理解已经相当模糊了,这里从李沐老师的《动手学深度学习》出发,对 RNN 模型做一个简单的总结。
1 年前
#学习笔记
关于在 ts 项目中配置 @ 别名报错的问题
由于 tsc 并不会在 emitted code 中解决 import 的路径别名(这个问题已经在社区有很多讨论了,官方的意思是这就是期望的输出),所以我们需要额外加入一些配置来完成别名的配置,这里记录在 ts 项目中配置 "@/*" 别名报错的问题的三种解决方案。
1 年前
#开发小记
231129记录
研究生生活也过了一年零好几个月了,记录一下最近的一些想法。
1 年前
#随笔
Python wheels
有关使用 pip install 安装 Pypi 上的 wheel 包的一些问题,包括什么是 wheel、source distribution 与 built distribution 的区别、wheel 的优势等内容。
1 年前
#开发小记
Python 与 C++ 运算符优先级常见错误
记录 Python 和 C++ 运算符优先级以及他们的一些区别,方便以后查阅。
1 年前
#学习笔记
字典树
Trie树,即字典树,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较。
1 年前
#力扣专题
尾递归优化
递归是编程中的一个强大工具,但它也有一个潜在的问题:栈溢出。尾递归优化(Tail Call Optimization,简称 TCO)是一种技术,可以帮助我们避免这个问题。在本文中,我们将深入探讨尾递归优化的原理和应用。
1 年前
#学习笔记
通过 rebase squash 多次提交
记录一次使用两种方式 squash commit 的过程。
1 年前
#开发小记
单调栈
顾名思义,单调栈就是满足单调性的栈结构,只在一端进行元素进出,后进先出,所以用栈维护(区别于单调队列)。
1 年前
#力扣专题
基环树
基环树是一个连通图,有 n 个点和 n 条边,相比于树的 n 个点与 n-1 条边,会多出一个环,所以称为基环树。
1 年前
#力扣专题
差分数组
差分数组的实质(difference array)其实就是记录每个位置相对于前一个位置数量的变化量(difference),这样针对于一个子数组的操作(数量的统一变化)就可以通过对两个数的操作实现。
1 年前
#力扣专题
有关 histogram diff
在实验时,我发现你有些合并冲突块实际上可以使用一些更细粒度的编辑脚本生成算法解决,也就是说其实在 single head 合并中双边的冲突其实针对的是不同的代码行,可以使用最朴素的采纳双边编辑的思想来解决,但是却被 Git 算作是冲突。所以想了解一下 histogram diff 算法的具体内容,以下是我的一些总结。
1 年前
#学习笔记
拓扑排序
简单的说拓扑排序(Topological sorting)就是给一个有向无环图的所有节点排序。 序列中每个顶点出现且只出现一次,若存在一条从顶点 A 到顶点 B 的路径,那么在序列中顶点 A 出现在顶点 B 的前面。
1 年前
#力扣专题
Java 中 Queue 接口的两种实现差异
在 Java 中,Queue 接口常用的两种实现分别是 LinkedList 以及 ArrayDeque,之前在写代码中,我一般都是用 ArrayDeque,而今天突然发现原来 ArrayDeque 不能在队列中保存 null 值,而 LinkedList 可以。
1 年前
#学习笔记
树上倍增
最近的一次力扣周赛感觉后两道题都偏难,最后一道题是可以利用树上倍增解决,之前没有接触过个人感觉其思想很类似动态规划,这里做一个简单记录。
1 年前
#力扣专题
题型: 买卖股票的最佳时机
刷日题发现了有关买卖股票的最佳时机的相关专题问题,连着做了好几道题,在这里记录一下这类问题及其变体的一般做法
1 年前
#力扣专题
利用 docker 配置深度学习环境
之前在配置深度学习环境时,就在考虑如果以后每次拿到一个新的计算资源(比如拿到系里新的计算资源) 都需要从头配置 Python、PyTorch 以及 Git 等工具的话,会不会很头疼,能不能用 Docker 来保存一个镜像,之后每次直接新建一个容器就可以直接使用。但是发现新建的容器似乎不能直接使用宿主机的 GPU,在查找资料后发现 Nvidia 官方针对这个问题有开发一系列工具包,这里简单记录一下使用的方式。
2 年前
#开发小记
PyTorch 中 repeat 的理解
PyTorch 中有很多操作需要记忆,这里对 repeat 和 repeat_interleave 做一个简单的记录。
2 年前
#学习笔记
有关 git-rerere
Git Rerere 可以记录冲突解决的过程,当遇到相同的冲突时,自动应用之前记录的解决方法,而不需要手动再次解决。这样可以大大简化开发过程,提高开发效率。本文记录其基本用法。
2 年前
#学习笔记
初识遗传算法
最近看了两篇有关冲突消解的论文,在了解过程中,我发现遗传算法很有趣,有一种深度学习出现之前的传统计算机科学的魅力,在这简单对自己的理解做一个记录,理解的不算全面,也可能存在一些错误,欢迎指正。
2 年前
#学习笔记
力扣刷题笔记(六)
第六篇刷题笔记。
2 年前
#力扣专题
Raft 协议详解
Consensus Algorithm 是分布式系统一个比较流行的话题,其主要目的就是想在多个节点间达成一个对数据状态的共识,这几天为了完成分布式系统的作业,去听了一下 MIT 6.824: Distributed Systems 对于这方面内容的讲解,觉得很有意思,下文对自己的理解和学习过程做一个简单的记录以便之后回顾。
2 年前
#学习笔记
二分查找
二分查找(Binary Search)是一种在有序数组中查找指定元素的高效算法。与线性查找(遍历整个数组)相比,二分查找的时间复杂度更低,使其在处理大型有序数据集时具有明显的优势。本文将详细介绍二分查找的原理、实现和应用场景。
2 年前
#力扣专题
力扣刷题笔记(五)
第五篇刷题笔记。
2 年前
#力扣专题
专题五:数位DP
数位DP(Digit Dynamic Programming,数位动态规划)是一种动态规划算法的应用,用于解决与数字相关的问题,特别是涉及数字位数的计数、组合、计算等问题。
2 年前
#力扣专题
快速判断素数
当给定一个数字时,我们如何能够快速判断这个数字是否是一个素数呢?
2 年前
#力扣专题
Git-reset 命令你需要知道的
在工作中总是容易弄混 reset 和 checkout 各种用法的区别,《Pro Git》第 7.7 节对 reset 命令做了很详细的讲解,在这里做一个简单的学习记录。
2 年前
#学习笔记
《一个叫欧维的男人决定去死》读后感
那个叫欧维的固执男人终于如愿以偿了。
2 年前
#随笔
Java 内部类
之前关于 Java 的内部类的具体使用,以及外部类和内部类的数据互访的问题上总有一些模糊,这里对 CSDN 上写的比较好的一篇文章做一个简单的记录。。
2 年前
#学习笔记
P 问题与 NP 问题
最近多次在各个领域上听到 P 问题和 NP 问题等论述,于是打算自己浅浅了解一下有关方面的内容。以下内容多来自于网络博客的摘抄总结,原文章见参考章节。
2 年前
#学习笔记
JCommander 的使用
当我们自己开发的 Java 程序希望通过命令行(CLI)调用时,可以自己在 main 函数的参数 args 中解析,但这样的做法极其复杂且常常缺乏鲁棒性。为了不在这里浪费时间,JCommander 应运而生。
2 年前
#学习笔记
Java 项目中由于依赖导致的日志冲突 warning
本文记录SLF4J 在 classpath 上存在多个绑定发出警告的问题。
3 年前
#开发小记
Electron 以及 Next.js 踩坑
最近毕设准备采用 Electron 将 Web 项目迁移到本地应用,Next.js 相比 CRA 封装了很多开箱即用功能,但在学习过程中还是踩了一些坑,在这里做一个记录。
3 年前
#开发小记
在项目中使用 ESLint 与 Prettier 以及 EditorConfig
最近在前端项目编写过程中为了统一代码风格以及实现编辑器中对代码风格的提示,尝试了linter和Prettier等工具,在应用过程中发现了很多没明白的配置,花了很长时间才有了一个大概理解。
3 年前
#开发小记
Java 遍历时删除元素
之前写代码时遇到过在遍历时需要删除对象元素的问题,也记得看到过好多解决方案,这里做一个整理。
3 年前
#学习笔记
为什么每个类需要给 logger 单独传入类
在对日志 logger 的学习使用中想到,为什么每次构造 logger 实例都需要传入类的类型。本文记录网上搜索的一些答案以及一些自己简单的思考。
3 年前
#开发小记
Spring 学习笔记
Spring 是一个开源框架,主要用于解决企业应用开发的复杂性。
3 年前
#学习笔记
log4j
简单记录 Java 中的日志框架 slf4j 和 log4j2 的使用。
3 年前
#学习笔记
Java 中的日志配置
有关 Java 中的日志框架和相关配置,需要初步了解的内容。
3 年前
#开发小记
Java中JSON的使用
Java 中并没有内置 JSON 的解析,因此使用 JSON 需要借助第三方类库,本文以 Jackson 为例简单记录 Java 中 JSON 的使用。
3 年前
#开发小记
Java 多线程编程
多线程能满足程序员编写高效率的程序来达到充分利用 CPU 的目的。一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者一个应用。而线程是在进程中执行的一个任务。Java运行环境是一个包含了不同的类和程序的单一进程。线程可以被称为轻量级进程。线程需要较少的资源来创建和驻留在进程中,并且可以共享进程中的资源。
3 年前
#学习笔记
java8 Stream API的使用
Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。Stream API(java.util.stream) 把真正的函数式编程风格引入到Java中,使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。
3 年前
#学习笔记
MyBatis 学习笔记
MyBatis 是一款优秀的持久层框架,可以理解为 MyBatis 就是对 JDBC 访问数据库的过程进行了封装,简化了 JDBC 代码,解决 JDBC 将结果集封装为 Java 对象的麻烦,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建 connection、创建 statement、手动设置参数、结果集检索等 JDBC 繁杂的过程代码。
3 年前
#学习笔记
Gradle 学习笔记
在学习 Gradle 的过程中遇到了很多不理解的地方,以下是在初步学习中的学习笔记,会在之后逐渐完善勘误。
3 年前
#学习笔记
Maven 学习笔记
最近由于考虑毕设可能会用到 Java,决定大概复习一下,首先考虑复习一下 Maven 再去了解一下 Gradle,本文是 Maven 的复习笔记。
3 年前
#学习笔记
解决 Electron 安装超时的问题
在运行网上一些开源 electron 项目以及学习 electron 的过程中,发现无法正常下载 electron,在网上搜索一番后找到了解决方案,以下加以记录。
3 年前
#开发小记
mobx与redux
Redux 和 MobX 是当下较为流行的两个状态管理库,在复杂前端项目的状态管理中发挥了很大的作用,那么我们应该怎么使用它们,又该如何选择呢?本文记录一下学习过程中的笔记。
3 年前
#开发小记
关于保研——我所知道的
写下这篇文章时,我的夏令营早已结束,只是因为怠惰,没有当时及时写下自己的面试经历。
3 年前
#随笔
js中使用装饰器
装饰器(Decorator)是一种与类相关的语法,用来注释或修改类和类方法。很多面向对象语言都有装饰器这种语法,本文记录在 JavaScript 中装饰器的使用。
3 年前
#开发小记
初探符号执行
符号执行技术在如今软件测试领域受到了越来越多的关注,现在已经在测试和查找各种软件中的错误方面证明是有效的,这些软件低至低级网络和操作系统代码,高至高级应用程序代码。
3 年前
#学习笔记
基于 ALS 协同推荐算法的简易购物推荐练习
基于ALS协同推荐算法和SparkStreaming实时运算的的简易Kafka架构购物推荐练习。
3 年前
#学习笔记
背包问题
一般来说,只要掌握了基本的 01背包问题 和 完全背包问题 就足够应付大多数面试。二者作为背包问题,区别就是对于物体的数量限制。
3 年前
#力扣专题
力扣刷题笔记(四)
第四篇刷题笔记。
3 年前
#力扣专题
专题四:并查集
专门考察并查集的题目并不算多,与之前的专题相比,他不像是一类解决问题的思路,倒更像是一个工具,帮助我们给元素分组,分成不同的“帮派”,并可以方便的查找某两个元素是否是同一个组别中。
3 年前
#力扣专题
力扣刷题笔记(三)
第三篇刷题笔记 。
3 年前
#力扣专题
位运算相关技巧
这里想记录一些在做题过程中遇到的位运算相关技巧。
3 年前
#力扣专题
专题三:回溯法
回溯法是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。
3 年前
#力扣专题
专题二:贪心
贪心算法的学习可以与动态规划算法进行比较,看看它到底比动态规划算法少考虑了哪些子问题,为什么可以少考虑那些子问题,而每次只专注于求解一个子问题,通过逐步递推得到原问题的答案。
4 年前
#力扣专题
Nginx上的https配置
算上之前配的内网服务器,这应该是第三次配置HTTPS了,但每次或多或少都要搜索一些资料和配置说明,这次直接写在博客里,以供之后翻阅查找信息。
4 年前
#开发小记
写于 210516
大概是大二的时候萌生了自己写一个博客的想法,记录平时解决一些问题的方法和学习新东西的笔记,但总觉得忙于学习和其他项目,没有机会真正落地。
4 年前
#随笔
专题一:动态规划
之前刷力扣都在刷日题,一段时间后感觉刷题有一点感觉了,但是收获不是很系统,近期决定做一段时间的专题,第一个专题就决定是动态规划。
4 年前
#力扣专题
力扣刷题笔记(二)
第二篇刷题笔记。
4 年前
#力扣专题
Linux 环境变量学习:su 和 su - 的区别
前一直没有注意过 Linux 切换身份的命令的不同,也没有注意过不同用户的环境变量问题。以为 su xxx 和 su - xxx 是同一个方法,直到有一次在运行 hadoop 时,发现找不到命令。
4 年前
#学习笔记
Nginx学习笔记(基本操作篇)
之前在理论篇中简单学习了一些必要的 Nginx 相关知识,在实际运用中,我们还需要熟悉相关的操作,本篇从安装开始,记录常用的 Nginx 操作。
4 年前
#学习笔记
力扣刷题笔记(一)
决定用leetcode刷刷算法题,有些题写完后有些个人的理解和想法在当时顺便写下,便有了这篇笔记。
4 年前
#力扣专题