- 博客(113)
- 收藏
- 关注
原创 向量数据库
索引层的工作流程是:将原始向量通过特定算法组织成紧凑的索引结构,查询时无需遍历所有向量,只需通过索引快速定位 “最可能匹配” 的候选集,再对候选集进行精确计算(如欧氏距离、余弦相似度),最终返回结果。部分索引支持参数调优(如 HNSW 的 “层数”“邻居数”),可根据业务需求在 “速度” 和 “召回率” 间权衡。支持动态索引更新(新增 / 删除向量时,无需重建整个索引);
2025-09-17 23:42:19
338
原创 中间件八股
首先它是内存数据库,所有数据直接操作内存而非磁盘,避免了 I/O 瓶颈;其次采用单线程模型,消除了多线程切换的开销,同时通过非阻塞 I/O 多路复用机制高效处理并发请求;此外,它的数据结构设计紧凑(如跳表、压缩列表等),操作复杂度低,且支持多种高效序列化方式;最后,Redis 的核心代码精简,专注于性能优化,避免了冗余计算。这些特点共同让 Redis 能达到每秒数十万级的处理能力,满足高并发场景需求。
2025-09-09 21:33:57
320
原创 微服务相关
TP50:指在一个时间段内(如5分钟),统计该方法每次调用所消耗的时间,并将这些时间按从小到大的顺序进行排序,取第50%的那个值作为TP50 值;意思是说,我们对95%的用户的响应耗时在200ms之内,只有5%的用户的响应耗时大于200ms,据此,我们掌握了更精确的服务响应耗时信息。用我们软件开发行业的例子通俗来讲就是,假设有100个请求,按照响应时间从小到大排列,位置为X的值,即为PX值。“P99”:是第99百分位数的缩写,表示在所有的数据样本中,有**99%**的数据点都小于或等于这个值。
2025-09-02 01:44:44
730
原创 Python asyncio
Coroutine Function 是由 asyncio定义,调用Coroutine Function得到的返回值是Coroutine Obj,Task 没有控制权,没有办法控制event_loop 执行某个Task,只能说明目前在等待哪个Task执行完毕或已准备好执行,由event_loop 控制由哪个Task执行;建立event_loop 概念,上面event_loop 可以理解为大脑,下面是若干个可执行的Task;Event_loop 一旦开始运行Task,那如何使得这个程序运行?
2025-04-11 22:47:46
370
原创 C++ 并发编程
https://blog.csdn.net/fengbingchun/article/details/73521630https://blog.csdn.net/fengbingchun/article/details/78649260https://blog.csdn.net/u012507022/article/details/85909567
2025-03-02 16:20:27
90
原创 场景题总结
大数据去重可以是用bitmap,可以分批次读入内存(将Bitmap按照一定的规则进行划分(如按照数据区间划分,0-10000是一个Bitmap),将其分成若干个较小的区块,每个区块对应一个Bitmap。(存储用户数据(基本信息、行为数据如点击历史、偏好设置),广告数据(存储广告的基本信息,投放规则,排期信息等),广告投放记录(记录广告的展示、点击等行为)):使用位图,每个位只代表整数是否存在,遍历每个读取到的整数,将位图中对应索引的值设为true,遍历位图,按顺序将值位true的数写入文件。
2025-02-20 22:18:30
147
原创 链表算法总结
那么a - c = (k - 1)(b + c) 剩余的距离一定是环长的倍数,那么slow 和 head 每次都移动一步,一定能够在入口相遇相当于slow再里面兜圈子,如果k-1=1,那么兜。
2025-02-18 16:03:04
111
原创 二分算法总结
2529.正整数和负整数的最大计数 https://leetcode.cn/problems/maximum-count-of-positive-integer-and-negative-integer/2517.礼盒的最大甜蜜度 https://leetcode.cn/problems/maximum-tastiness-of-candy-basket/2563.统计公平数对的数目 https://leetcode.cn/problems/count-the-number-of-fair-pairs/
2025-02-18 15:25:05
121
原创 二叉树与递归 & 回溯
枚举每个位置应该选哪个数,并且为了避免重复,从比前一个数大的开始。每个元素选或者不选(0/1 背包也是类似的思路)以输出为视角,枚举子串的结束点。每个结点都是答案,都需要保存。
2025-02-18 15:24:39
98
原创 计算机网络面经
零窗口如果接收方没有能力接收数据,就会将接收窗口设置为0,这时发送方必须暂停发送数据,但是会启动一个持续计时器(persistence timer),到期后发送一个大小为1字节的探测数据包,以查看接收窗口状态。如果接收方能够接收数据,就会在返回的报文中更新接收窗口大小,恢复数据传送。
2025-02-09 21:31:21
1512
原创 C++友元和函数重载
1、友元关系的引入对于一个Point类,用来保存一个坐标,即它有两个实数型变量是它的坐标,那么我们现在想要计算点与点之间的距离,这个函数要放在哪里比较合适?①放在类中作为类的成员函数吗?但是这个函数不属于单独的一个点,也不属于Point类。②放在类的外面定义为普通函数吗?但是这样就体现不了这个函数与Point类的关系,并且不能直接访问点的坐标(私有成员)所以这里就引入了友元关系也就是说通过友元关系,一个类的成员函数或者一个普通函数可以去访问封装在另一个类中的。
2025-02-09 16:46:06
452
原创 Linux系统面经
文件或目录,也可用于重命名文件或目录。,支持 HTTP、HTTPS、FTP 等多种协议,可以通过指定 URL 地址来下载文件,并支持断点续传等功能。,能显示进程的 PID、用户、占用 CPU 和内存等信息,可通过参数组合查看更详细或特定条件的进程信息。,可以监听网络接口上传输的数据包,并根据用户指定的条件进行过滤和显示,常用于网络故障排查和网络安全分析。使用时要谨慎,因为删除的文件或目录通常难以恢复,可通过参数实现递归删除目录等功能。文件内容,支持向上和向下翻页,还可以进行搜索等操作,按Q键退出查看。
2025-02-08 00:48:48
908
原创 MySQL面经
是一个操作序列,不可分割的工作单位,以begin transaction开始,以rollback/commit结束在一个事务内多次查询某个符合查询条件的「记录数量」,如果出现前后两次查询到的记录数量不一样的情况,就意味着发生了「幻读」现象。假设有 A 和 B 这两个事务同时在处理,事务 A 先开始从数据库查询账户余额大于 100 万的记录,发现共有 5 条,然后事务 B 也按相同的搜索条件也是查询出了 5 条记录。
2025-02-07 17:23:09
1092
原创 数据结构与算法面经
换句话说,如果在排序前两个元素 A 和 B 的值相等,并且 A 在 B 的前面,那么在排序后 A 仍然在 B 的前面,这样的排序就是稳定排序。快速排序是不稳定排序算法,不适合排序稳定的场景,快速排序是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速排序的平均时间最短;的优势,将大文件分割成多个子文件,分配到不同的处理器或计算节点上进行排序和合并,大大提高处理速度,缩短大文件合并的时间。例如,在外部排序中常用的多路归并算法,就是归并排序在大文件处理场景下的一种应用。
2025-02-07 16:45:27
893
原创 操作系统面经
*本质区别:**进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位**在开销方面:**每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小**稳定性方面:**进程中某个线程如果崩溃了,可能会导致整个进程都崩溃。而进程中的子进程崩溃,并不会影响其他进程。;
2025-02-07 16:34:45
476
原创 字节序与Socket编程
字节序分为大端字节序(Big-Endian) 和小端字节序(Little-Endian)。大端字节序是指一个整数的最高位字节(23 ~ 31 bit)存储在内存的低地址处,低位字节(0 ~ 7 bit)存储在内存的高地址处;小端字节序则是指整数的高位字节存储在内存的高地址处,而则存储在内存的。(小端低对低,高对高;大端符合人的阅读顺序)Linux是x86架构,为小端字节序。
2025-02-04 23:19:45
988
原创 C++ 构造函数和析构函数
这个语句,实际上是调用了复制构造函数,将test的值初始化给了临时对象,然后fun2()消亡,test对象也消亡了,但是临时对象存在于表达式myclockOne=fun2()中,计算完这个表达式后,临时对象就消失了。②调用函数时候,形参为该类的对象,主函数中的对象作为实参传入形参,形参把值拷贝下来后,就与实参断了联系 ,这里注意是值传递才会调用 ,引用传递不会。析构函数,其实就是构造函数的相反操作,构造函数是创建对象时候,用来给对象的成员数据赋值的,而析构函数是用了清理对象的。①对象的生命周期结束。
2025-02-04 15:30:24
944
原创 操作系统笔记
记录不是很清楚的地方or重难点部分(加**),以及面试常见题,主要参考小林coding & 各大面经。小林coding链接:计算机网络updating …
2025-01-15 22:24:18
298
原创 单调栈与单调队列
遍历,当遍历完6 3 2 5后,对于元素2进行分析:下标在元素2之前的数,有两种情况:1. 比2大,那2不可能是它的答案,因为要找的是下一个更大的数。1475. 商品折扣后的最终价格 https://leetcode.cn/problems/final-prices-with-a-special-discount-in-a-shop/1019. 链表中的下一个更大节点 https://leetcode.cn/problems/next-greater-node-in-linked-list/
2025-01-14 16:04:17
911
原创 双指针与滑动窗口
题意是找到不同两个数使得它们相加和为target,数组有序利用数组有序的性质,判断指针前后的区间的性质例如:2 3 4 6 8, target 92 + 8 = 10 > 9, 因为非递减序列,2都会大等于2,所以 2之后的每个数和8相加都会 > 9,eg 3+8,4+8,6+8…。在这种情况下,已经不可能有解。造成无解的原因是因为 8 这个数 太大, 因此将r指针左移去除8。2 + 6 = 8 < 9, 因为非递减序列,所以 6相加都会 < 9,eg 2+4,2+3,…
2025-01-03 17:31:09
884
原创 牛客周赛 Round 74
因此我们复制一下数组后排序,得到排序后的数组,并且映射一下长为m的子数组的首尾元素,此时包含符合题目条件的所有情况。一开始对每张牌种类不是已知的,已知的是每种牌的牌数。题意是问是否存在从数组中选出长为m的子数组,将剩下的n-m进行排序后,将该子数组找一个位置插入后保持整个序列递增后递减。我们拿出的连续 m 个数必然是有序的,否则不符合题意。思路就是相当于把其中一种明牌,保证任取两张都不会导致种类重复 的 最坏情况就是预知种类最多的张数。首先考虑数组不能有重复元素,因为重复无法保证严格单调,所以必然无解。
2024-12-30 21:02:06
725
原创 动态规划dp
统计构造好字符串的方案数 https://leetcode.cn/problems/count-ways-to-build-good-strings/LCR 166. 珠宝的最高价值 https://leetcode.cn/problems/li-wu-de-zui-da-jie-zhi-lcof/递归时不会产生其他负面结果,即无论何时进入递归,只要递归参数相同,结果就相同。从最初状态到最终状态等价,那么从最终状态开始和最初状态开始结果一样。空间优化,当前状态只和前一两个状态有关,优化到O(1)
2024-12-29 16:39:37
536
原创 Educational Codeforces Round 96 (Rated for Div. 2) E. String Reversal 树状数组
题意: 将一个字符串只能通过相邻字符交换从而反转,问需要多少次数 思路: 我们从末尾开始,往前把字符交换,如果字符串里没有重复字母的话,这样就是最优秀的 , 相邻交换,求逆序对即可 ,但对于有重复字母,我们需要肯定将较前的字母先往前把字符交换,这样次数一定会更少,所有从后往前遍历,记录下标,这样保证前面的字符会首先取得,用栈也可以,然后选择好位置用树状数组求逆序对即可 #include <bits/stdc++.h> using namespace std; const int N = 2.
2020-12-03 16:15:28
242
原创 Codeforces Round #672 (Div. 2) C1. Pokémon Army (easy version)
This is the easy version of the problem. The difference between the versions is that the easy version has no swap operations. You can make hacks only if all versions of the problem are solved. Pikachu is a cute and friendly pokémon living in the wild pikac
2020-11-26 22:27:34
244
原创 Codeforces Round #672 (Div. 2) B. Rock and Lever
Danik urgently needs rock and lever! Obviously, the easiest way to get these things is to ask Hermit Lizard for them. Hermit Lizard agreed to give Danik the lever. But to get a stone, Danik needs to solve the following task. You are given a positive intege
2020-11-26 22:20:51
227
原创 Codeforces Round #672 (Div. 2) A
Wheatley decided to try to make a test chamber. He made a nice test chamber, but there was only one detail absent — cubes. For completing the chamber Wheatley needs n cubes. i-th cube has a volume ai. Wheatley has to place cubes in such a way that they wou
2020-11-26 22:02:38
263
原创 Codeforces Round #671 (Div. 2) D2. Sage‘s Birthday (hard version)
outputstandard output This is the hard version of the problem. The difference between the versions is that in the easy version all prices ai are different. You can make hacks if and only if you solved both versions of the problem. Today is Sage’s birthday,
2020-11-25 23:28:13
202
原创 Codeforces Round #671 (Div. 2) C. Killjoy
outputstandard output A new agent called Killjoy invented a virus COVID-2069 that infects accounts on Codeforces. Each account has a rating, described by an integer (it can possibly be negative or very large). Killjoy’s account is already infected and has
2020-11-25 23:22:27
169
原创 2020-09-28
洛谷图的遍历 P3916 题目描述 给出NN个点,MM条边的有向图,对于每个点vv,求A(v)A(v)表示从点vv出发,能到达的编号最大的点。 输入格式 第1 行,2 个整数N,MN,M。 接下来MM行,每行2个整数U_i,V_iUi,Vi,表示边(U_i,V_i)(Ui,Vi)。点用1, 2,\cdots,N1,2,⋯,N编号。 输出格式 N 个整数A(1),A(2),\cdots,A(N)A(1),A(2),⋯,A(N)。 输入输出样例 输入 #1复制 4 3 1 2.
2020-09-28 17:34:00
563
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1