- 博客(52)
- 收藏
- 关注
原创 进程和线程的创建过程
类型的整数,表示进程的标识符。如果返回值大于0,表示当前是父进程,返回值是子进程的标识符;,它会在当前进程的地址空间中创建一个新的执行流,与其他线程共享堆、全局变量、静态变量等资源,但有自己的栈、寄存器、程序计数器等。创建进程后,父进程和子进程的执行顺序是不确定的,取决于操作系统的调度算法。创建线程后,线程的执行顺序也是不确定的,取决于操作系统的调度算法。,它会复制当前进程的地址空间、堆、栈、寄存器等资源,创建一个新的子进程。在Linux中,创建进程的主要函数是。在Linux中,创建线程的主要函数是。
2023-11-23 18:52:46 1102
原创 美的的笔试
大壮需要从城市的起点(编号为0的地标)经过一系列地标后,最终到达终点(编号为n-1的地标)。例如,如果小王当前处于编号为i的地标,且地标对于的数字为nums[i],那么他可以选择跳过中间所有地标,而是直接去往任意编号为i用j的地标,其中0<=j= nums[i]且i+j<n。主办方确保有路线可以成功到达终点地标,为了顺利到达终点,请帮助大壮计算,他需要经过的最少的地标数量。如果第一只猫咪吃掉,则得分为reward1[i]。这个例子中,第一只猫咪吃掉第2和3条鱼(下标从0于始),第二只猫咪吃掉第0和1条鱼。
2023-09-08 18:19:12 339
原创 零碎的C++
整理了面试中的八股包括:构造函数和析构函数哪个可以是虚函数指针和引用的区别常见的容器不能是虚函数的函数多态vector和list虚指针
2023-09-04 23:08:31 1375
原创 数据库主键和外键
外键是用来引用另一个表的主键或唯一键的一列或一组列,可以重复,也可以为空。外键可以实现表之间的级联操作,如删除、更新、设置空值或默认值。一个表可以有多个外键,分别引用不同的表。主键是用来唯一标识表中每一行的一列或一组列,不能重复,也不能为空。主键可以作为其他表的外键引用,从而建立表之间的联系。一个表只能有一个主键,但可以包含多个列。主键和外键是两种类型的约束,用于保证关系数据库中数据的完整性和一致性。
2023-09-04 21:01:12 261
原创 关于B+树
在数据库管理系统中,使用b+树作为索引的数据结构,相比于B树和二叉树,有以下几个好处:B树相比于二叉树,也有一些优点,例如:一般来说,B+树有以下特点:而B树有以下特点:综合考虑这些特点,我们可以得出以下结论:数据库管理系统中使用B+树索引的好处有以下几点:
2023-09-04 17:51:13 565
原创 狗厂笔试826
对于一个题而言,小红可以写一个暴力算法获得部分分,这样相对的比较节省时间,另外她还可以直接尝试正解,这样可以获得满分,但需要花费更多的时间。接下来n行,每行输入四个正整数t_i1, s_i1,t_i2, s_i2,分别代表小红写出正解的用时,正确算法的得分,小红写暴力算法的用时,暴力算法的得分。第一轮,第一个单位(人)和第二个(兽)遭遇, 兽公布了自己的身份,由于人的战斗力低于兽,他不会选择战斗。第二轮,第一个单位(人)和第四个(兽)遭遇,人公布了自己的身份,兽直接选择战斗,但人获胜。
2023-08-26 21:24:20 316
原创 826蓝厂笔试
思路是先使用回溯的方法找到所有长度大于等于4的连续子串,再使用回溯计算每个连续子串中oppo的个数,最后求和为结果。一个字符串的权值定义为字符串中"oppo"子串的数量,例如,“oppoppo的权值为2,“opop"的权值为0.有一个仅由公’和’p’组成的字符串,想知道这个字符串的所有子串的权值之和。普通充电每单位时间充x的电量,闪充每单位时间充4x的电量。一个正整数n,代表’O"的大小,1 <n < 10。第一行输入一个仅由"o"'和"p"组成的字符串。画一个大小为n的O’,oppopp权值为1。
2023-08-26 18:03:33 161
原创 826某飞笔试
逆向遍历字符串,并维护一个数组 total_ways,其中 total_ways[i] 表示余数为 i 时的方案数。”,分别计算累积的余数,并更新方案数。最后返回 total_ways[0],即余数为0的方案数。小红拿到了一个字符串,其中有一些字符变成了“?小红希望你将所有的"?'替换成任意一个数字字符,使得最终字符串代表的十进制整数是p的倍数。—个整数,代表方案数对10^9 +7取模的值,第二行输入n个正整数,代表小红拿到的数组。无论怎么修改都是奇数,不可能是2的倍数。给出t行每行一个整数,代表相似度。
2023-08-26 15:24:50 224
原创 826某团笔试
小美每天可以给果树浇水,果树成长值为下x,同时可一个给果树施肥,两次施肥至少间隔2天,果树的成长值加y,果树的成长值达到z就成熟了。现在小红有n张账单,每张账单记录了有k个人一起吃饭,以及吃饭的消费 c,现在小红需要计算每个人需要转给小红多少钱。小美想知道,能不能通过重排a数组使得对于任意1≤i≤n,1≤a_i+b_i≤m将会有q次询问。第一行输入两个整数k(2≤k≤m+1),c(1≤c≤10^9)表示一起吃的人数,花费。一行三个整数x, y, z,分别表示浇水的成长值,果树成熟的成长值。
2023-08-26 14:05:47 354
原创 词法语法分析
词法分析和语法分析是由Lex和Yacc配合完成,在postgres源代码中为scan.l文件和gram.y文件。这两个文件分别预生成scan.c和gram.c文件,他们俩再配合上词法语法分析模块所需要的C文件就构成了词法分析和语法分析的整个模块。其中词法分析语法分析需要的文件生成调用关系如下图。词法分析器 scan.l 负责识别标识符,SQL 关键字等,对于发现的每个关键字或者标识符都会生成一个记号并且传递给分析器;语法分析器 gram.y 包含一套语法规则和触发规则时执行的动作;
2023-08-23 17:35:47 86
原创 PostgreSQL插件pg_stat_statements源码阅读
pg_stat_statements 是 PostgreSQL 数据库的一个扩展模块,用于跟踪和记录 SQL 查询语句的性能统计信息功能:pg_stat_statements 扩展模块跟踪数据库中执行的 SQL 查询语句,以及这些查询的性能统计信息。它捕获的信息包括查询的文本、执行次数、总运行时间、平均运行时间、最小和最大运行时间等。这些统计信息可以帮助开发人员和管理员确定哪些查询是最耗时的,从而更有针对性地进行性能优化。
2023-08-17 17:32:04 403
原创 分布式数据库OLAP
场景1:每个节点复制一张表。每个节点并行连接其本地数据,然后将其结果发送到协调节点。这种场景对应的算法是 Broadcast Join,即将连接操作中的一个较小的表(通常是右表)完整地复制到所有节点上,然后在每个节点上使用本地的连接算法(如Hash Join或Sort Merge Join)来完成连接操作。这种算法适合于右表很小,而左表很大的情况,因为它可以避免左表的数据传输。但是如果右表也很大,那么这种算法就会占用大量的网络带宽和内存空间。
2023-08-17 17:22:46 153
原创 分布式OLTP数据库系统
重要假设:假设分布式DBMS中的所有节点都行为良好,并且在同一管理域下。如果我们告诉节点提交txn,那么它将提交txn(如果没有失败)。如果不信任分布式DBMS中的其他节点,则需要对txns(区块链)使用拜占庭容错协议(Byzantine Fault Tolerant)。
2023-08-17 14:59:25 83
原创 分布式数据库理论
分布式两阶段锁(Distributed Two-Phase Locking,D2PL)是一种分布式事务的并发控制协议,它基于两阶段锁(Two-Phase Locking,2PL)的原理,将锁的管理和释放分为两个阶段进行。在第一个阶段,称为增长阶段(Growing Phase),事务可以根据需要获取不同节点上的数据对象的锁,但不能释放任何锁。分布式两阶段锁的实现需要一个全局的锁管理器(Lock Manager),它负责维护所有节点上的数据对象的锁状态和请求队列,并根据一定的策略分配和释放锁。
2023-08-17 11:26:51 225
原创 大疆笔试813
编写一个程序,模拟无人机的飞行路径。给定一个包含指令的字符串(例如:“RUDDLLUR”),每个指令代表无人机在二维平面上移动的方向(U:前 ,D:后、 L:左、 R:右),请计算无人机的最终坐标并输出。从{1,2.3,4,5,6.7,8,9}中随机挑选不重复的5个数字作为输入数组’selectedDigits’,能组成多少个互不相同且无重复数字的3位数?请编写程序,从小到大顺序,以数组形式,输这些3位数。无人机的最终坐标是:(2, 0)
2023-08-15 22:43:59 47
原创 科大讯飞笔试813
我们把它抽象为数组的连续了数组问题。当处理一个数组时,机器会存储数组的一些连续了数组。现在有一个棘手的问题,给定了两个长度为n的数组,这两个数组均满足以下性质: 1 到n恰好出现了一次,请你判断机器存储完所有的连续了数组时,一共存储了多少次。[1],[2],[3],[1,2],[2,3],[3,1],[1,2,3],[2,3,1] 共存储了8次。所以这一题可以用两次回溯分别找出两个数组的子集,然后将两个自己放到set中,返回set的长度。第二行输入n个正整数a_i,代表第一个数组。
2023-08-15 22:30:21 261
原创 数据库日志
恢复算法是确保数据库一致性、事务原子性和在故障情况下持久性的技术。根据底层存储设备将DBMS划分成不用的组件:溢失和非溢失还必须对DBMS需要处理的不同类型的故障进行分类。没有DBMS可以从中恢复!必须从存档版本恢复数据库。数据库的主存储位置在非易失性存储上,但这比易失性存储慢。使用易失性内存以加快访问速度。
2023-08-15 12:04:20 128
原创 数据库多版本并发控制
MVCC是一种通过保存数据在某个时间点的快照来实现并发控制的方法。它可以提高数据库的并发性能,避免读写冲突,降低死锁的概率,保证事务的隔离性和一致性²。MVCC的基本思想是,每个事务都有一个唯一的时间戳,表示事务的开始时间或提交时间。每个数据对象也有两个时间戳,一个表示最后一次修改该对象的事务的开始时间或提交时间,另一个表示最后一次删除该对象的事务的开始时间或提交时间。这样,每个数据对象就有多个版本,每个版本对应一个事务对该对象的修改或删除操作。
2023-08-15 09:51:10 101
原创 数据库系统时间戳
时间戳排序算法是一种乐观的并发控制策略,它为每个事务分配一个唯一的时间戳,表示该事务的逻辑开始时间。时间戳越小,表示事务越早开始。时间戳排序算法要求事务按照时间戳的顺序执行,以保证可串行化调度。如果TS(T) < TS(T),则DBMS必须确保执行计划等同于串行计划,其中T出现在T之前每个txn的 T被分配一个单调增加的唯一固定时间戳。多种实施策略。
2023-08-14 17:09:56 648
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人