- 博客(35)
- 收藏
- 关注
原创 Ubuntu 更换apt-get下载源
https://blog.csdn.net/qq_46941656/article/details/119568426
2024-07-16 15:12:04
82
原创 gcc的工作流程
https://blog.csdn.net/qq_64042727/article/details/127183569?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522172075587516800222824962%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=172075587516800222824962&biz_id=0
2024-07-12 13:55:37
229
原创 Linux vim设置table大小为4个空格
重新打开 Vim 并开始编辑文件,你将看到制表符的宽度已经设置为4个空格。如果你想在特定文件中覆盖这些设置,可以在文件中使用 Vim 指令来设置。上述配置会将制表符的宽度设置为4个空格,并使得在编辑过程中使用制表符键(Tab 键)时,它会自动转换为4个空格。5.现在,你的 Vim 配置应该已经更新,制表符等于4个空格。4.保存并退出 Vim 编辑器。可以按下Esc键,然后输入。1.打开终端并启动 Vim 编辑器。并按 Enter 键保存并退出。
2023-09-20 22:43:53
1430
原创 Latex常用操作
label{sec:related}标记一个位置,接下来通过\ref{sec:related}可以进行引用文章内标记。(related是一个示例)
2023-08-04 23:52:04
365
原创 mmap使用注意事项
9.映射区访问权限为“私有”MAP_PRIVATE,对内存所做的所有修改,只在内存有效,不会反应到物理磁盘上。10.映射区访问权限为“私有”MAP_PRIVATE,只需要open文件时,有读权限,用于创建映射区即可。创建映射区出错概率非常高,一定要检查返回值,确保映射区建立成功再进行后续操作。1.用于创建映射区的文件大小为0,实际指定非o大小创建映射区,出“总线错误”。2.用于创建映射区的文件大小为0,实际制定o大小创建映射区,出“无效参数”。创建映射区的过程中,隐含着一次对映射文件的读操作。
2023-07-07 10:37:15
171
原创 C语言如何根据文件描述符fd获取文件的大小
函数获取当前文件指针的位置(即文件大小)。接着,我们将文件指针恢复到文件开头,并返回文件大小。函数,都可以获得文件的大小。选择使用哪种方法取决于你的偏好以及特定的应用需求。函数将文件指针定位到文件末尾,然后使用。成员中获取文件大小。在上述示例中,我们定义了一个。函数中,我们打开文件并调用。在这个示例中,我们定义了一个。函数来获取文件的信息,并从。函数来获取文件的大小。函数来获取文件的大小。
2023-07-06 17:19:57
369
原创 存储映射I/O——mmap
这样,就可在不适用read和write函数的情况下,使用地址(指针)完成I/O操作。是一个系统调用,用于在进程的虚拟地址空间中创建映射区域,从而将文件或其他设备映射到内存中。此外,映射区域的访问权限和映射属性可以根据需要进行调整,具体取决于你的应用程序的需求和操作系统的支持。在示例中,我们没有展示具体的读取操作,但你可以使用指针来访问映射区域的数据。使用这种方法,首先应通知内核,将一个指定文件映射到存储区域中。函数返回的映射区域指针通常是页对齐的,所以你可能需要进行适当的内存对齐处理。函数获取文件的大小。
2023-07-06 17:18:07
129
原创 sprintf()标准库函数
函数时,你需要提供一个目标字符串的缓冲区,并指定格式化的数据和格式控制字符串。之前,如果你希望清空目标字符串的内容,你需要手动将其设置为空字符串或使用其他字符串处理函数来清空缓冲区。时,它会将格式化的数据写入到目标字符串的起始位置,并逐渐填充字符串缓冲区,直到达到字符串的终止符。都需要确保提供的字符串缓冲区具有足够的空间来容纳格式化的数据,以避免缓冲区溢出导致未定义的行为。允许你指定要写入的最大字符数,从而避免缓冲区溢出,并将数据追加到字符串的末尾。时,它都会从字符串的起始位置开始写入,并覆盖之前的内容。
2023-07-06 14:51:37
1135
原创 dup2()实现重定向
函数返回一个整数值,表示复制后的文件描述符。如果复制成功,则返回新的文件描述符;如果出现错误,则返回 -1,并设置相应的错误码。函数创建或打开一个名为 "output.txt" 的文件,并获得一个文件描述符。函数通常与文件操作和进程间通信等场景配合使用,以实现文件描述符的重定向或复制。函数是一个系统调用,用于复制文件描述符,并将其关联到指定的文件描述符。这样,所有后续的标准输出将写入到 "output.txt" 文件中。已经打开,则先关闭它,然后再进行复制操作。函数将标准输出的文件描述符。
2023-07-05 10:52:48
602
原创 进程间通信IPC——管道(2)
(2) 写端没有全部被关闭,read 阻塞等待(不久的将来可能有数据递达,此时会让出。(2) 管道未满,write 将数据写入,并返回实际写入的字节数。(1) 管道写端被全部关闭,read 返回 0 ((1) 管道已满,write 阻塞。管道读端全部被关闭, 进程异常终止。返回实际读到的字节数。
2023-07-05 10:51:12
61
原创 C语言 open()、read()和write()
在Unix-like操作系统中,文件描述符(file descriptor)是一个用于标识打开文件或I/O设备的整数值。它是对底层文件系统的抽象,用于在应用程序和操作系统之间传递文件信息。文件描述符是一个非负整数,通常是一个小整数。在C语言中,文件描述符被表示为int类型。每个进程在其打开的文件或设备上都有一组文件描述符,它们是连续的、非重复的整数值。当一个文件或设备被打开时,操作系统会为该文件分配一个文件描述符,并将其返回给应用程序。
2023-07-05 09:35:43
4310
原创 进程间通信IPC——管道(1)
在计算机编程中,IPC(Inter-Process Communication,进程间通信)是指不同进程之间进行数据交换和通信的机制。而管道(Pipe)是一种常用的IPC机制之一。管道是一种特殊的文件,它提供了一个单向的数据流通道,允许一个进程将数据写入管道,另一个进程则可以从管道中读取数据。这样,两个进程之间就可以通过管道进行数据的传输和共享。在Unix和类Unix系统中,管道可以通过调用pipe()函数来创建。管道有两个端口,分别称为读端(read end)和写端(write end)。
2023-07-04 18:37:55
113
原创 Linux 进程操作练习
Quiz:在Linux中用c语言实现:父进程fork3个子进程,3个子进程一个调用ps命令,一个调用自定义程序1(正常),一个调用自定义程序2(会出现段错误)。父进程使用waitpid对子进程进行回收。命令,一个子进程调用自定义程序1(正常执行),另一个子进程调用自定义程序2(会导致段错误)。以下是一个在Linux中使用C语言实现父进程fork三个子进程的示例代码。其中,一个子进程调用。函数等待子进程并进行回收。
2023-07-04 16:29:48
120
原创 Linux exec 函数族
函数族是一组用于执行新程序的函数。它们可以用于替换当前进程的映像,从而在同一个进程中执行不同的程序。这些函数族中的每个函数在成功执行时不会返回,而是直接将控制权转移到新程序。类似,但它接受一个参数数组来传递命令行参数。参数数组中的第一个元素通常是可执行文件的路径,接下来是命令行参数,以。这个函数用于执行一个指定的可执行文件。它接受一个文件路径作为参数,后面跟着可选的命令行参数,最后以。类似,但它还接受一个环境变量数组作为参数。该函数会用指定的可执行文件替换当前进程的映像,并开始执行新程序。
2023-07-04 10:19:08
399
原创 waitpid()系统调用
是一个系统调用函数,用于等待指定的子进程结束或收到特定的信号。它在许多操作系统(如UNIX和Linux)中可用。函数的返回值是子进程的进程ID,或者在出错时返回-1。:一个指向整数的指针,用于存储子进程的退出状态信息。:指定要等待的子进程的进程ID。:用于指定附加选项的整数值。下面是一个简单的示例代码,演示了如何使用。的值,可以判断子进程的退出状态。,表示不关心退出状态。
2023-07-04 09:31:33
364
原创 wait()系统调用
是一个系统调用,用于使父进程等待子进程的终止,并获取子进程的退出状态。系统调用时,可以使用一些宏函数来检查子进程的终止状态并从中提取相关信息。,父进程可以控制和监控子进程的执行,了解子进程的终止状态,并根据需要采取进一步的操作。标志来设置非阻塞模式,这样父进程在没有终止的子进程时不会被阻塞,而是立即返回。时没有终止的子进程,父进程将被阻塞,暂停执行,直到有子进程终止。可以处理多个子进程,但返回的子进程状态是不确定的。返回的状态值,可以获取子进程的退出状态。使父进程暂停执行,直到一个子进程终止。
2023-07-03 17:54:31
558
原创 vim设置代码模板
注意:在这个设置中,预定义的模板文件"c_template.c"应位于你的主目录下的".vim"文件夹中。你可以根据需要更改模板文件的路径和内容。现在,当你使用vim创建一个新的.c文件时,会自动插入预定义的初始代码和头文件。这是你要在每个新创建的.c文件中自动包含的初始代码。保存并关闭"c_template.c"文件。
2023-07-03 14:27:19
556
原创 Python环境配置
anaconda命令创建python版本为x.x,名字为your_env_name的虚拟环境,比如conda create -n myenv python==3.7。6.关闭虚拟环境(即从当前环境退出返回使用PATH环境中的默认python版本)打开命令行,输入python --version检查当前 python 版本。2)查看当前存在哪些虚拟环境。3.Python创建虚拟环境。5.对虚拟环境中安装额外的包。4.激活或者切换虚拟环境。8.删除环境钟的某个包。1)查看安装了哪些包。
2023-06-27 15:38:17
62
原创 Selenium学习(6)xpath选择元素
目前主流浏览器 (chrome、firefox,edge,safari) 都支持XPath语法,xpath有 1 和 2 两个版本,目前浏览器支持的是 xpath 1的语法。‘//’ 符号也可以继续加在后面,比如,要选择 所有的 div 元素里面的 所有的 p 元素 ,不管div 在什么位置,也不管p元素在div下面的什么位置,则可以这样写。当某个元素没有特征可以直接选择,但是它有子节点有特征, 就可以采用这种方法,先选择子节点,再指定父节点。xpath也可以根据次序选择元素。
2023-06-24 15:04:31
383
原创 Selenium学习(5)其他操纵元素的方法/双击/移动鼠标/拖拽
*注意** : 有些弹窗并非浏览器的alert 窗口,而是**html元素**,这种对话框,只需要通过之前介绍的选择器选中并进行相应的操作就可以了。如果我们要点击的元素不在窗口可见区内,新版本的selenium协议, 浏览器发现要操作(比如点击操作)的元素,不在可见区内,往往会操作失败,浏览网页的时候,我们的窗口标题是不断变化的,可以使用WebDriver的title属性来获取当前窗口的标题栏字符串。然后,我们就可以点击 开发者工具栏的 查看箭头, 再去 点击 糯米图标 ,查看其属性了。
2023-06-22 15:51:03
1538
原创 Selenium学习(3)fram切换/浏览器窗口切换
在我们使用selenium打开一个网页时,我们操作的缺省是当前的html,并不包含被嵌入的html文档里面的内容。问题就在于,即使新窗口打开了, 这时候,我们的 WebDriver对象对应的 还是老窗口,自动化操作也还是在老窗口进行。因为我们一开始就在 原来的窗口里面,我们知道 进入新窗口操作完后,还要回来,可以事先 保存该老窗口的 句柄,使用如下方法。然后检查里面该窗口对象的属性(可以是标题栏,地址栏),判断是不是我们要操作的那个窗口,如果是,就跳出循环。我们发现html在iframe中。
2023-06-22 14:36:54
192
原创 Selenium 学习(2) 之css表达式选择元素
元素内部包含其他的元素,就像上图所示,里面包含里又包含的两个子元素。也可以更复杂的组合使用,比如#ok .plant > div[href=xxx]这代表id=ok的子元素class=plant的子子元素tag=div下所有href=xxx的所有元素。注意中间使用,分割。
2023-06-21 21:34:27
137
原创 Selenium学习(1)
同伙WebElement对象的text属性,可以获取元素在界面上的文本内容,但是偶的时候元素的文本内容没有展示在界面上,或者没有完全展示在界面上。如果我们要选择所有相同类名的元素,我们使用方法find_elements_by_class_name,因为元素不止一个,所以使用列表来存储。当发现元素没找到时,并不立刻返回找不到元素的错误,而是每隔半秒重新寻找该元素,直到元素被找到。我们可以发现搜索框唯一的特征比如id值id:'wd',可以把id想象成元素的编号,用来在html中标记该元素,大部分id是唯一的。
2023-06-21 10:35:46
187
原创 爬虫作业(1)
对于问号之后的参数,如果是写死的参数,那么就要将其删去;如果是动态的参数,比如本题使用‘keyword’代替参数,则不需要删去。,发送请求的类型依然为阿贾克斯请求。爬取肯德基餐厅信息查询网站。
2023-06-20 15:29:17
608
原创 爬虫学习(1)
3、UA伪装:门户网站的服务器会检测对应请求的载体身份标识,如果检测到请求的载体身份标识是某一款浏览器,说明该请求是正常的请求,如果载体身份标识不是基于某一款浏览器,则表示该请求为不正常请求。对于搜索框进行删除或者写入,会引起局部刷新,可以用ajax请求实现。所以说需要捕获阿贾克斯请求。豆瓣电影推荐向下拖动点加载更多会更新界面,所以会使用阿贾克斯请求,请求URL在图中。有的时候一张网页可能存在许多个框,但是我们只想获得其中的一个框的信息。对应的请求是post请求(携带了参数),响应数据是一组json数据。
2023-06-20 10:18:41
538
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人