- 博客(155)
- 收藏
- 关注
原创 thefuck是如何帮助你提高命令行效率
解析器Parser,负责读取上一条用户输入的指令并通过调用parse()方法将指令处理为系统可识别的对象know_args之后,流程控制模块将根据know_args中不同的数据信息进行不同的分支处理譬如打印帮助文档打印版本打印别名还有最重要的指令纠正,fix_command。
2025-03-16 22:22:29
1295
原创 如何在movy.js库中添加自定义字体+ttf转化为json
最近准备做一个视频开头,了解到movy.js这个开源框架在movy.js的帮助下,我做出了一个非常炫酷的开头99% 的人都不知道的: 命令行竟然存在 fuck 命令!功能强大开头将在1分22秒显示但该框架存在一个问题——不支持自定义字体本文就是提供一个解决方案的。
2025-03-15 08:38:10
468
原创 【3分钟速通】部署本地deepseek-R1模型【图文】【手把手】
最近在写C++的debug调试器,接入我的leetcode-runner项目,但好多知识我都忘了,比如管道套接字重定向。最近deepseek大火,笔者也尝试了一段时间,肥肠的不错哇但树大招风,因为某些未知原因,deepseek服务器总是被某些➗生攻击,因此打算本地部署。
2025-01-31 15:16:02
4350
4
原创 【转载】Ray Tracing in One Weekend V3.0中文翻译
这玩意儿全是英文,写得虽然好,但容易走神。再加上还要折腾一万年没倒腾的数学知识,很是操蛋,学习的时候容易走神,因此去网上找找有没有翻译。这一找还真让我定位到了,这是另一个大佬写得翻译,很是不错。最近在写毕设,搞了个C++图形引擎。
2025-01-21 15:06:38
132
原创 《leetcode-runner》【图解】【源码】如何手搓一个debug调试器——表达式计算
我们直接通过案例说明画红框对应的功能逻辑就是表达式计算功能在leetcode-runner项目中,也支持相关的计算逻辑。
2025-01-16 16:31:44
1310
原创 《leetcode-runner》如何手搓一个debug调试器——指令系统
指令系统,是leetcode-runner项目debug模块内部通用的一套指令,它标识用户要求做出的debug工作。
2025-01-15 14:04:58
426
2
原创 《leetcode-runner》【图解】【源码】如何手搓一个debug调试器——架构
本文主要聚焦leetcode-runner对于debug功能的整体设计,并讲述设计原因以及存在的难点。
2025-01-14 23:10:27
1304
2
原创 《leetcode-runner》如何手搓一个debug调试器——引言
该插件可以让扣友在本地刷leetcode,并且leetcode提供的和代码相关的编辑功能该插件都提供,具体演示如下。作为一个技术博主,有好东西自然想着把自己的思路分享出去,因此产生了这篇文章。但debug内容非常多,需要分若干篇文章介绍,本文作为引言,将大致介绍笔者文章撰写思路。,需要自己补充一堆代码,而且每次更换题目,对应的补充代码又得重新写一遍,可谓是相当麻烦。在笔者不屑努力下,终于完成辣!众所周知,leetcode算法是核心代码模式,想要。如果对我这个项目感兴趣的读者,可以关注一下我的这个项目。
2025-01-14 21:35:57
314
原创 基于Lucence开发一个中文分析器
最近在写一个插件项目,需要实现搜索功能因为需要搜索的数据量比较大,将近文本数据,如果是传统正则,模糊匹配方式效率过低,所以我去学习了解了Lucence底层的原理,感觉比较有意思,基于Lucence实现了一个自己的中文分析器下图是搜索效果。
2024-12-13 13:40:54
773
原创 gradle下载的jar包,源码出现Decompiled .class file, bytecode version
gradle依赖下载只下载了jar包,这导致idea在读取jar包时,需要通过Fernflower技术对jar包进行反编译,而反编译过程中只会保留源码信息,因此注释等额外信息全部丢失。总结:遇到decompiled .class file,基本上都是没下载源码导致。配置gradle,使gradle在下载依赖时,下载源码以及文档。
2024-11-05 20:41:36
417
原创 编程珠玑3-8
以编码0为例子,0对应7 x 4的二维数组的坐标是:(6, 1), (6, 2)。以此类推,获取剩下编码对应的坐标,即可将数字转换为二维数组的坐标。输出为一个5个字节的数组,当且仅当数字j中的第i段点亮时,字节j中的位i置1。现在,我们拥有一个7 x 4的二维数组,如果我们要绘制8,如上图所示,8对应的七段编码为。简单翻译一下题目的意思,编写一个程序,实现给定一个数字,包含5位,在终端输出图像。Display是显示屏类,用于集中维护5个7段显示,并打印数字。举个例子,向程序输入82367,在终端显示。
2024-09-10 18:19:28
981
2
原创 编程珠玑3-6
6.编写一个“格式信函发生器”,使之可以通过数据库中的每条记录来生成定制的文档(这常常称为“邮件归并”特性)。设计简短的模板和输入文件来测试程序的正确性。信函格式发生器,就是将参数和模板分离,用不同的参数和模板组合后得到不同内容的一种程序。该程序读取模板,然后将参数填入模板内,即可得到新的需要输出的文件。书本后面并未直接给出答案,而是告诉读者另一本书上有实现代码,并且该代码只有9行。想要生成新的文件,改变参数即可,无需更改模板。,接下来需要将冒号分隔的参数填入模板对应的位置即可。信函格式发生器,好处就是。
2024-09-10 15:42:49
724
原创 编程珠玑之第三章习题3-4
如果使用我编写的时间模块计算得到的答案和python自带的时间模块得到的答案相同,那么说明我编写的代码没有问题。4.编写处理如下日期的函数:给定两个日期,计算两者之间的天数;Calendar用于处理日期与日期之间关系,并对日期做出更为复杂的处理。我们从年份的角度入手,上图可以划分为三块:d1所在年份,中间年份,d2所在年份。弄清楚这一点后,创建数组时,添加额外的元素,直到月初第一天排序到正确的下标,表示正确的星期几即可。计算天数的时候,需要将闰年因素考虑进去,也就是对最终计算结果增加。
2024-09-09 19:05:10
964
原创 编程珠玑之第三章习题3-3
最近在看《编程珠玑》,分享一些课后习题的代码。本章分享的是3-3。这题在书本的课后目录中并未写明相关参考代码,现有网络上的代码又比较复杂,于是分享一下我个人的思路。
2024-09-09 15:54:46
289
原创 MySQL的group by与count(), *字段使用问题
理论上,group by [col1, col2…]只能和select [col1, col2…]配合,也就是如果存在group by,那么select的字段必须出现在group by中但是MySQL做出了拓展,允许非聚合字段和聚合字段同时出现并且允许这种形式的SQL出现。
2024-06-10 09:42:54
1329
原创 软件设计师笔记2
cpu控制器,专门产生指令操作,送到计算机各个部位执行处理,在主存与外设之间建立数据同路,直接进行数据交换,无需CPU参与CRC,采用模2运算构建校验位流水线流水线周期和执行时间的计算流水线周期,指的是流水线执行过程中最长的一段。(例如取址5s, 分析3s,执行2s. 那么周期就是5s)执行时间(理论公式),流水线构建时间 + (n - 1) * 流水线周期。其中,流水线构建时间指的是第一条指令完全执行完所需要的时间,n是指令条数执行时间(实践公式)(K + n - 1) x 流水线周期,其中k。
2024-05-26 15:46:33
1103
原创 软件设计师笔记1
确定的有限自动机(DFA),确定的有限自动机是五元组S∑fs0ZS∑fs0ZS是一个有限集,其每个元素称为一个状态。∑是一个有穷字母表,其每个元素称为一个输入字符。f是 SxΣ→S 上的单值部分映像。f(A,a)=Ω 表示当前状态为 A输入为a时,将转换到下一状态 Ω,称 Ω为A的一个后继状态。s0∈Ss_0\in Ss0∈S,是唯一的一个开始状态。Z是非空终止状态集合,Z⊆SZ⊆S。
2024-05-26 15:40:04
521
原创 编写Scala工具函数,将leetcode多维数组的String表现形式转换为Array
笔者最近在学习Scala,通过Scala刷leetcode算法来掌握语法。但leetcode对Scala极不友好,且测试样例所需时间非常多。因此需要使用idea进行辅助。但idea并没有封装输入,因此数组的输入封装就成了哥大问题比如[1, 2, 3],若要能让Scala识别,需要改写为Array(1, 2, 3)。如果数组数量增多,维数提高,刷题效率就会收到影响,因此编写本文,提供一个工具函数解决转换问题。
2024-05-13 14:25:24
229
原创 分页、分段、虚拟存储
将一个进程的地址空间划分成若干个大小相等的区域,称为页。相应地,将主存空间划分成与页相同大小的若干个物理块,称为块或页框。在为进程分配主存时,将进程中若干页分别装入多个不相邻接的块中。
2024-05-03 14:10:10
1544
4
原创 TCP相关问题总结
假设TCP是两次握手,则可能会发生以下情况客户端发起TCP握手,向服务器发送SYN,但该数据因网络波动滞留此时触发超时重传,重新简历TCP连接当新建立的连接断开后,之前在网络中滞留的SYN连接请求传递到服务端,服务端误以为客户端需要建立TCP连接,因此会发送SYN+ACK请求,并进入连接建立状态,但客户端并不需要建立连接,不会发送数据,因此会造成服务端资源的浪费三次握手可以防止客户端无效连接信息再次到达服务器,导致重新连接之所以需要四次挥手,因为半关闭tcp通道允许双方互相发送数据,数据是双向流动的。
2024-04-23 22:47:07
1424
原创 记录shell编程中$1,$@等符号的含义
笔者最近老是遇到shell中的$相关的题目,于是打算写篇文章记录一下。考虑到并没有特别多需要解释的内容,所以并不会进行介绍,上图上表上代码,让机器说话,machine always right。
2024-04-17 19:33:03
406
2
原创 【前后端的那些事】SpringBoot 基于内存的ip访问频率限制切面(RateLimiter)
限流就是在用户访问次数庞大时,对系统资源的一种保护手段。高峰期,用户可能对某个接口的访问频率急剧升高,后端接口通常需要进行DB操作,接口访问频率升高,DB的IO次数就显著增高,从而极大的影响整个系统的性能。如果不对用户访问频率进行限制,高频的访问容易打跨整个服务。
2024-04-16 21:15:04
1709
4
原创 画图理解JVM相关内容
而且,instanceKlass拥有class对象的指针,实例可以通过instanceKlass找到class对象,只是需要两次指针跳跃,所以上图绘制方式其实也并无太大问题。此外,在移动过程中,需要。在控制台上通过指令,查看不到最全面的信息,通过Tools->inspector创建可视化窗口,可以查看最全面的信息,具体如下。当需要进行内存清除时,操作异常容易,因为两个区间在同一时刻只有一个区间存在使用的对象,因此只需要。标记-复制算法,将内存划分为等大的两个空间,一个空间用于存放对象,另一个空间用于预留。
2024-04-05 15:38:01
1324
原创 学生价,leetcode会员购买分析
这么看,数据就一目了然了。该选择何种价格,完全取决于个人需要leetcode会员时间,由上述图可知,如果你需要。最近想要购买leetcode会员,但不知道买啥好,打算用python可视化数据进行一个简单的分析。,那么curve 3才适合你,(因为curve 3比curve 1贵30,但长了半年)不得不说,python真好用啊我靠,以后有时间得狠狠学一波python。,curve 2适合你。
2024-03-30 10:43:21
1282
2
原创 【算法】小强爱数学(迭代公式+数论取模)
的值.因为这个结果可能很大所以所有的运算都在模1e9+7下进行.本题实际上就是个数学问题,积累了递推公式雀氏很好做,否则就很操蛋。的值.但小强想请你在已知A和B的情况下,计算出。接下来T行, 每行输入三个整数A,B和n。第一行输入一个正整数T.表示有T组数据。行,每一行表示每组数据的结果.迭代计算,类似斐波那契。
2024-03-23 12:00:47
1189
原创 【算法】子集(LIS最长上升子序列)
因此在排序时,如果x相同,需要按照y降序排序。因为这样在对y进行筛选时,在x相同情况下,只能选择一个y最为最终序列。最终会只能选择3, 8 | 3,7。如果x相同,但是不按照y降序,则可能会选择3,7,8.导致重复选择相同的x,而无法保证x严格递增。dp和bs算法已经有非常多成熟的文章,感兴趣的读者可以自行了解上述两篇文章,本文只给出ac代码。如果我们选择1,2,3红框,无法实现递增序列,因为2,3无法形成双递增序列。(红框元素被绑定死,不能随意组合x,y中任意下标的元素)个物品,每个物品有两种属性。
2024-03-23 11:44:23
974
原创 排序算法记录(冒泡+快排+归并)
冒泡 + 快排 + 归并,这三种排序算法太过经典,但又很容易忘了。虽然一开始接触雀氏这些算法雀氏有些头大,但时间长了也还好。主要是回忆这些算法干了啥很耗时间。如果在笔试时要写一个o(nlogn)的排序算法,如果不能立刻写出 快排或者归并,未免有些太浪费时间了。故写这篇文章用于记录tip: 一下内容均实现升序排序。
2024-03-22 18:07:41
1333
原创 详解最左前缀法则+索引失效
最左前缀是在使用innodb存储引擎索引时,需要遵守的法则。在一个联合索引如,执行查询SQL时,如果查询条件包含索引的最左前缀,那么可以使用联合索引加速查询。对于上述例子,最左前缀包括idx(a)idx(a, b)
2024-03-16 17:55:29
2144
4
原创 详解MySQL的MVCC(ReadView部分解析C++源码)
一种数据库中用于处理并发读写事务的技术。它通过维护数据的不同版本来实现对同一数据项的并发访问,并且在保证事务隔离性的同时,允许读操作无需加锁就能获取一致性的数据视图。
2024-03-13 22:38:02
3513
13
原创 MySQL索引+常见问题详解
网络上的讲述MySQL索引的文章太多了,我打算换个角度来说。我们尝试着从设计者的角度思考,索引为什么这么设计。假如你是索引的设计者,你会如何设计索引。我们不妨以新华字典为例。如果我们要查询汉字爱是什么意思,我们有如下操作ai拼音索引页Aai页码。
2024-03-10 20:07:53
1034
原创 万字详解,Java实现低配版线程池
线程池,通过创建了一定数量的线程并将其维护在一个池(即容器)中。当有新的任务提交时,线程池会从池子中分配一个空闲线程来执行任务,而不是每次都新建线程。执行完任务后,线程不会被销毁,而是返回到线程池中等待下一个任务。
2024-03-07 21:56:16
1044
原创 生产者消费者模型
在多线程环境下,一类线程专门生产数据,另一类线程专门消费数据,为了协调两类线程,引入独立的缓冲区作为数据的容器,这一整套数据模型成为生产消费模型。
2024-03-06 19:59:24
489
原创 前端同时传递文件数据+非文件数据,前后端解决方案
之前录制视频《文件上传组件》的时候有位观众提了个问题,如果我没有理解错的话,应该就是前后同时传递文件数据非文件数据,前后端数据该如何接收,这里我给出我自己的解决方案tip:下文在编写前端代码的时候,用到了这篇文章写的组件。
2024-02-29 18:49:11
667
原创 【Leetcode】150. 逆波兰表达式求值
今天做了一道leetcode,题目不算难,基本就是stack的入栈出栈,但我看了一圈别人的代码,感觉不够优雅,所以我想分享一下自己的写法,主要就是用Map和BiFunction优化4个if else。Function,第一个泛型表示函数入参,第二个泛型表示函数返回类型。Java中,函数是能以对象的形式表达。,这就是个自增的函数,我们可以将它赋值给。如果函数需要两个入参,可以使用。
2024-02-23 08:09:17
450
原创 【生产遇到的小问题】基本包装类是引用传递,但不能修引用指向的内容,只能改引用的指向
在平时学习过程中,我们很可能会忽略这些内容,但忽视这些内容往往会产生非常操蛋的bug,因此我打算把这些内容整理记录,说不定就是未来的某道面试题。在Java中,基本类型如int,传参的时候是以值的形式进行传递;基本类型的包装类如Integer,传递的是引用。在main中调用change函数,因为引用传递,change的b1同时指向堆中的Boolean.FALSE。main的a1和change的a1都指向同一个数据块,这和Java一致。这个时候有的同学可能会迷糊,我C,C++写的时候可没这么麻烦呀?
2024-02-20 11:48:33
447
原创 Collectors.toMap使用记录
我有一个enum枚举类,其中含有3个枚举常量。我现在需要将这三个枚举常量统一转化为Map结构的数据。key是enum的code,value就是enum本身。最近看到一行比较有趣的代码,他的功能就是将List转换为Map。我觉得挺有意思的,先前没遇到过,于是打算写篇文章记录一下。我们逐步介绍一下这行代码的功能。下方代码可以一行实现这个功能。
2024-02-19 14:08:04
476
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人