- 博客(512)
- 资源 (32)
- 收藏
- 关注
原创 git使用
在该目录中运行 git init,这样会创建一个新的 .git 子目录,这个子目录含有你初始化的 Git 仓库的所有必要的骨架文件,但项目本身还没有任何文件跟踪。一个裸仓库没有工作目录, 这意味着它不包含项目的文件, 只包含版本控制系统的数据。这是作为远程仓库的理想选择, 因为它避免了对文件内容的直接操作可能引起的混乱和问题。至此,就成功地在本地创建了一个新的Git仓库,并进行了首次提交。这里的`origin`是远程仓库的默认名字, /path/to/myrepo.git是在第一步中创建的裸仓库的路径。
2021-03-10 09:26:39 440 3
原创 【linux】vim和vi使用
要选中内容进行剪切,先在命令模式下按 v 进入 Visual Mode,然后用 方向键 或 hjkl 选择文本,再按 d 进行剪切。要选中内容进行复制,先在命令模式下按 v 进入 Visual Mode,然后用方向键 或 hjkl 选择文本,再按 y 进行复制。与indent有关的配置,会自动缩进,从window复制代码时候,会造成多行乱缩进,去掉含有indent字符串的配置。"Ny (双引号 + 粘贴板号 + y):复制到粘贴板N ,N 为粘贴板号。:set+空格+tab,可以看到有哪些set命令可用。
2021-02-22 11:15:49 658 3
原创 vscode的使用
1. VSCode列选择2. 跳转3. 中文显示4.编码设置5.tab设置6.更改一个文件的编码7.在项目中打开文件6.
2020-12-15 14:12:09 1302 1
原创 linux常用命令
目录1. 查找当前目录底下的文件夹的子目录中的某个文件2. 查看当前用户3. 查看所有用户组4. 添加用户到已存在的组5. 实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器6. 查看所有服务端口7. 查看文件二进制:8. 新建并写字符串123到文件1.txt,文件最后有换行符。9. 显示文件内容10. 显示目录总占用空间11. 查看磁盘使用情况12. CentOS关闭防火墙13. 在shell中使用find结合grep进行文件字符串的替换14. locate命令15. cd命令16.
2018-01-18 10:18:20 2861 2
原创 【C语言】Infiniband驱动pci_pcie_cap
PCIe功能偏移量是在PCI设备初始化时计算并保存的。注释中的函数`pci_pcie_cap`对应于一个内联函数,它接受一个指向PCI设备结构的指针,返回PCIe能力结构在PCI配置空间中的偏移。第二部分是 #define pci_pcie_cap LINUX_BACKPORT(pci_pcie_cap) 定义,这一行代码实际上将 pci_pcie_cap 符号重命名为 backport_pci_pcie_cap,意在使用已经传递过来的 pci_pcie_cap 函数,但通过新名称避免潜在的名称冲突。
2024-03-28 07:41:17 705 3
原创 如何蒸馒头?
不过,在某些特定食谱或地区的面点制作中,的确会快要结束发酵时或之后添加少量的碱性物质(如食用碱、小苏打)来调节面团的pH值,使得最终的产品色泽更加洁白,口感更加绵软。二次搅拌的目的是为了排出一次发酵过程中产生的气泡,使得馒头的内部结构更加细腻,同时也有助于形状的整齐和馒头最终的口感。如果要蒸制口感更细腻、颜色更白皙的馒头,部分地区的人们会在面团中加入一些食用碱(小苏打),食用碱是碱性物质,可以中和面团中的酸味,同时使馒头的颜色更加白,并且口感更加松软。在整个过程中,保持面团的湿润和韧性是很重要的。
2024-03-28 07:34:53 903
原创 【C语言】Infiniband驱动mlx4_reset
请注意,这些注释更确切地描述了代码中的每个重要步骤,并对原开发者的注释进行翻译以更好地帮助中文读者理解代码。这段代码涉及到硬件层面的操作,这其中包括了对PCI设备的配置空间的保存、设备重置以及恢复的过程。这部分代码主要执行了芯片的重置过程,并且在重置前后操作了PCI头部信息的保存与恢复,以确保设备能够在重置之后正常工作。它保存了设备的 PCI 头信息,然后重置了设备,之后还原保存的 PCI 头信息。在函数中,定义了一些宏和它们的值:这些宏用于方便地引用重置流程中所需要的一些硬件寄存器的偏移量和相关的值。
2024-03-27 11:11:21 960 5
原创 【C语言】Infiniband驱动init_dev_assign函数
这是一个循环,它遍历`dev_assign_str`表,表的大小由`MLX4_DEVS_TBL_SIZE`指定。如果分配失败,跳转到错误处理。这段代码主要负责使用设备号字符串(`dev_assign_str`)来初始化一个位图(`dev_num_str_bitmap`),这个位图用来保存设备号和它们的状态。这是错误处理的标签部分:如果在位图分配过程中出现错误,释放先前分配的位图内存,将位图指针设置为`NULL`,并打印警告信息说明`dev_assign_str`参数的值不正确,并且该参数值将被丢弃。
2024-03-27 11:05:24 711
原创 【C语言】Infiniband驱动__mlx4_init_one函数
8. 错误处理:一系列的错误处理标签(`err_catas`,`err_crdump`,`err_release_regions`,`err_disable_pdev`),分别对应不同阶段的初始化失败处理,包括释放资源和禁用设备等。4. 检查通过`num_vfs`和`probe_vf`模块参数指定的VF数量的有效性,它们必须是非负的,并且`probe_vf`不能超过`num_vfs`指定的值。2. 函数尝试使PCI设备可用(`mlx4_pci_enable_device`),并检查是否成功。
2024-03-26 13:27:52 1041 2
原创 【C语言】Infiniband驱动mlx4_init_one
这段代码主体是一个`mlx4_init_one`函数,它是Mellanox公司网络设备驱动的初始化函数,用于对PCI网络设备进行初始化。如果启用了`devlink`配置选项(用于一些设备的配置和监控功能),它会额外处理`devlink`相关的注册和初始化。这在系统休眠或PCI设备电源管理事件中是必要的,因为在这样的事件中,设备的PCI配置可能会丢失或被重置,系统在恢复时需要这信息重新对设备进行配置。这段代码展示了复杂PCI设备驱动初始化流程的一部分,包括资源的分配和初始化,以及设备在系统内的注册。
2024-03-26 13:20:48 623
原创 【C语言】tcp_sendmsg_locked
整体上,`tcp_sendmsg_locked` 函数处理了一系列复杂的 TCP 发送逻辑,包括 TCP 发送缓冲区的管理、段的创建及填充、发送拥塞控制、零拷贝优化等。该函数首先锁定目标socket,然后调用实际发送消息实现的内部函数`tcp_sendmsg_locked`,发送过程完成后释放锁,并返回发送操作的结果(成功发送的字节数或错误码)。这个函数`tcp_sendmsg`用于处理TCP socket的发送消息操作。- 数据发送后,函数执行必要的清理操作,返回拷贝的字节数,或者发送失败时的错误码。
2024-03-25 15:28:15 876 2
原创 程序员的“中年危机“:如何在35岁之后依然保持职业竞争力?
程序员作为科技领域的主力军,面临着一个广泛讨论的问题——35岁的职业分水岭。有人说这是技术人员的“中年危机”,其中关键的焦点在于:技术快速迭代和个人职业发展之间的矛盾。然而,在这背后,更深层的问题是如何理解并适应行业的不断变化,从而在技术领域既保持热情也保持竞争力。
2024-03-25 15:22:35 443 1
原创 【C语言】linux内核pci_set_drvdata函数
由于PCI设备结构体`struct pci_dev`中包含了一个设备模型结构体`struct device`(通过`pdev->dev`访问),这行代码实际上是将数据与PCI设备的设备模型部分关联起来,方便以后的检索和使用。这个函数的参数包括一个指向`pci_dev`结构体的指针`pdev`,该结构体描述了一个PCI设备,以及一个`void *类型的指针data`,这个指针用来指向驱动程序希望与该PCI设备相关联的任何数据。- pdev:指向 pci_dev 结构的指针,该结构代表了特定的PCI设备。
2024-03-24 13:49:53 1060 3
原创 【C语言】linux内核pci_iomap
上述代码是Linux内核中的一个函数注释,它是用于将PCI设备的某个BAR(基址地址寄存器)区域映射到内核虚拟地址空间,以便于内核或驱动程序可以直接通过这个虚拟地址对硬件设备进行访问。这两个函数都是用来建立PCI设备的BAR(Base Address Register,基址寄存器)到进程的虚拟地址空间的映射。函数,但是将 offset 设置为0,目的是简化对整个BAR的映射,而不是基于某个特定的起始偏移量。pci_iomap是一个简化的版本,它默认从BAR的起始处映射整个区域,或者是指定长度的内存。
2024-03-24 13:30:14 536
原创 【C语言】linux内核pci_alloc_irq_vectors
总的来说,如果调用 pci_alloc_irq_vectors,将使用的 pci_alloc_irq_vectors_affinity 是在 .c 文件中实际定义的,除非在该 .c 文件包含的头文件中提供了一个内联定义以覆盖。最后是一个辅助函数`pci_alloc_irq_vectors`,这个函数封装了对`pci_alloc_irq_vectors_affinity`的调用,但是不需要传递亲和性描述,是一个更为简单的版本。通常,这个版本应该是实际使用的版本,因为它包含分配向量所需的实际逻辑。
2024-03-23 06:06:26 842 3
原创 【C语言】linux内核pci_set_master
函数则是一个更高级的接口,通常由驱动程序调用以启用设备的总线主控功能,并随后调用`pcibios_set_master`函数完成体系结构相关的设置。通过EXPORT_SYMBOL宏,这个函数被导出,使得其他内核模块可以调用它。这个函数专注于设置或清除PCI命令寄存器中控制总线主控的位。如果启用,它会设置这个位;如果禁用,它会清除这个位。更新操作只会在这个位的状态实际改变时发生。函数是用来做一些体系结构特定的总线主控设置的。它检查并可能会调整PCI设备的延迟定时器值以避免PCI总线拥塞。
2024-03-23 05:50:39 347
原创 【C语言】linux内核pci_enable_device函数和_PCI_NOP宏
在这段代码中,`pci_enable_device_flags` 是一个静态函数,它接受两个参数:一个指向 PCI 设备的指针和一个标志集合。函数的目的是启用指定的 PCI 设备,但首先会检查设备的电源管理(PM)能力和当前的电源状态,并递增设备的启用计数。定义了指向PCI设备的桥接器的指针`bridge`,一个整型错误码`err`以及两个整型变量`i`和`bars`,其中`bars`用于跟踪需要启用的设备资源条目(BARs)。这是一个外部可见的函数,用默认的标志(内存和I/O资源)来启用一个PCI设备。
2024-03-22 06:17:04 671
原创 赋能智能未来:AI大模型的学习之旅
随着人工智能的迅速发展,AI大模型已经成为技术领域的一个热点。这些模型以其强大的数据处理能力和预测精度,正在不断推动着科技的边界,并且在医疗、金融、交通等多个行业中显示出了巨大的潜力。然而,构建和训练一个高效的AI大模型并非易事,它不仅要求研究者们在数学和编程上的深厚积累,还要求他们对模型应用的业务场景有深入的理解。
2024-03-22 06:11:59 1116 2
原创 【C语言】Infiniband驱动mlx4_pci_table
这个数组里包含了各种 Mellanox 设备的具体型号,例如 "MT25408" (也称为 "Hermon")以及不同速率的版本(SDR, DDR, QDR),还有 "ConnectX" 系列的不同版本例如 "ConnectX-3" 和 "ConnectX-3 Pro"。这些宏(MLX_SP、MLX_VF、MLX_GN)是为 Mellanox 专门定义的,用来初始化 pci_device_id 结构体中的元素。PCI_DEVICE_ID_... 是定义在其他文件中的宏,代表特定的 PCI 设备 ID。
2024-03-21 09:16:47 687 1
原创 AI程序员的崛起:程序员的终结,还是新的开始?
随着全球首位AI程序员Devin的诞生,整个软件开发行业闻风丧胆。Devin的强大能力,以及背后那支由IOI金牌得主组成的团队,确实令人瞠目。但话题却转向了一道老生常谈的命题:AI是否会夺取程序员的工作?答案并不是那么简单,而对于这个问题的深入探讨,可能预示着一个全新的信息技术时代的到来。
2024-03-21 09:14:58 776
原创 【C语言】access和stat函数
在C语言中,`access` 函数是一个用于检查文件的存在性以及对文件的访问权限的函数。在代码中直接使用对应的宏(如 F_OK),而非硬编码的整数(如 0),可以提高代码的可读性和可移植性。stat 函数成功执行时,将返回0,并将文件的信息填入通过参数 buf 传递的结构体中。在C语言中,`stat` 函数是一个用来获取文件状态信息的函数,定义在 <sys/stat.h> 头文件中。- 如果任一测试失败,或者发生错误,函数返回-1,并且`errno`会被设置为一个特定的错误代码,表明检查失败的原因。
2024-03-20 08:08:23 1128 2
原创 【C语言】遍历目录树
ftw()和`nftw()`在内部可能会使用`readdir()`或类似的系统调用(如`open()`, read(), close() 以及可能的`stat()` 或 lstat())来获取目录内容及文件信息。文件的修改时间 (st_mtime), 访问时间 (st_atime), 和状态改变时间 (st_ctime) 不是直接保存在文件内容中的,而是在文件系统的元数据(metadata)中记录的。ftw()和`nftw()`对`readdir()`进行了高级封装,简化了递归遍历文件系统的复杂性。
2024-03-20 08:07:34 1265 1
原创 【linux】Debian访问Debian上的共享目录
要在Debian系统上访问共享目录,通常意味着要访问通过网络共享的文件夹,比如通过SMB/CIFS(Server Message Block/Common Internet File System)协议共享的Windows共享文件夹。
2024-03-19 04:54:28 912 1
原创 【C语言】守护进程(daemon)的输出到一个文本文件
接下来,调用`dup(0)`复制文件描述符0(也就是之前打开的`/dev/null`),因为在文件描述符1和2被关闭之后,`dup`调用会使用最低的、未被使用的文件描述符号,也就是先是1然后是2,因此这一步相当于重新定向了进程的标准输出到`/dev/null`,然后又将标准错误也重定向到了`/dev/null`。如果想重定向守护进程的输出到 /var/log/daemon.log ,需要使用`open`系统调用首先打开这个文件,然后才能用`dup`或`dup2`复制相应的文件描述符。
2024-03-19 04:53:22 1189 1
原创 【C语言】linux内核软中断
内核中的软中断(Softirqs)和任务下半部(Tasklets)是Linux内核中用于在中断上下文之外处理中断服务的一种底层机制。这些机制解决了不能在中断服务例程(ISR)中执行耗时操作或者需要睡眠的操作的问题。软中断提供了一种在中断上下文中延迟处理的方法,允许中断处理分为两个阶段:顶半部和底半部。
2024-03-18 04:12:43 987 2
原创 【linux】CentOS查看系统信息
如果需要查看更详细的内存使用情况,可以使用`ps`命令结合`grep`来查找特定进程的内存占用情况。如果在图形用户界面(GUI)模式下,可以点击左上角菜单按钮,选择“系统工具”,在下拉菜单中找到并点击“系统监视器”选项,然后在新打开的窗口中,可以看到CentOS版本号及内核信息。注意:因为CentOS版本的更新,某些命令可能在最新的CentOS版本中更改或被替换,所以如果发现某个命令不起作用,可能需要查找该版本系统中的替代命令。:输入`top`命令后,会看到系统的整体情况,包括内存使用情况。
2024-03-18 03:50:39 1411 1
原创 【网络】负载均衡
4. 应用层:七层负载均衡工作在应用层,需要解析应用层流量,因此七层负载均衡器在接到客户端的流量后,会建立一条完整的连接,并将应用层的请求流量解析出来,然后按照调度算法选择一个应用服务器来处理请求。在实际应用中,负载均衡通常结合了多种技术,从简单的轮询到更加复杂的基于内容或请求率的负载均衡策略,以此来确保系统的高可用性、可伸缩性和性能。网络层的负载均衡通常通过路由协议来实现。这一层的负载均衡器可能采用虚拟IP地址的方式工作,即外部请求到达虚拟的IP地址,负载均衡器再将请求转发到后端的实际IP地址上。
2024-03-17 03:17:25 1016 2
原创 【AI】Ubuntu系统深度学习框架的神经网络图绘制
编译命令为`dot -Tpng test.dot -o test.png`,其中`-T`选项指定输出格式,`-o`选项指定输出文件名。在这段代码中,首先我们定义了一个简单的神经网络`SimpleNet`,它包含一个输入层(`fc1`)、一个ReLU激活函数(`relu`)和一个输出层(`fc2`)。使用这个网络模型和一个随机生成的输入`dummy_input`,我们用`make_dot`方法创建了一个可视化图。请注意,`torchviz`是一个轻量级的工具,它适用于小型到中型的网络可视化。
2024-03-17 03:11:26 1204
原创 【C语言】linux内核pci_save_state
该函数用于在挂起设备之前保存PCI设备的配置空间。`pci_save_pcie_state`、`pci_save_pcix_state`和`pci_save_vc_state`这些函数分别用于保存PCI Express、PCI-X和虚拟通道(如果它们适用)的额外状态。当调用 pci_read_config_dword 函数时,它从PCI设备的配置空间读取出必要的信息,并将这些信息存储到 struct pci_dev 结构体的 saved_config_space 数组中,该结构体通常保存在主机的内存中。
2024-03-16 09:18:20 1153 1
原创 军事通信中数字的特殊读法
这个拼音表中为26个英文字母分别规定了用于代表对应字母的代码词(code words),这些词被选中的原因是它们在多种语言中的发音都极为接近,因此可以减少在国际无线电通信中由于发音不清或听音不确导致的误会。此外,这种特殊读法也考虑到了数字的连读和组合。例如,“7”读为“拐”是因为“7”和“1”在发音上容易混淆,而“拐”的发音与“7”在汉语中的发音相差较大,减少了误听的可能性。2. 避免同音字:尽量使用不容易与其他词汇混淆的读音,特别是对于容易混淆的数字(如“1”和“7”,“2”和“8”),采用独特的读法。
2024-03-16 09:17:04 916 1
原创 windows 11访问Debian10上的共享目录
3. 服务和防火墙设置:确认 Samba 服务正在运行(通过`sudo systemctl status smbd`),并检查防火墙设置是否允许访问Samba端口(例如,UDP 137/138 和 TCP 139/445)。:在Windows 11上,打开文件资源管理器,然后在地址栏输入`Debian的IP地址`或者`\Debian的计算机名`,按回车键。要实现Windows 11系统访问Debian 10上的共享目录,需要在Debian上设置Samba服务,然后在Windows上连接到该共享。
2024-03-15 08:03:04 1169 1
原创 持续创新引领计算机行业在数字经济时代的航向
受2024年政府工作报告的启发,计算机行业正站在新的发展十字路口。政府报告不仅为计算机行业的未来描绘了清晰的轮廓,更为行业的实践提供了扎实的政策支撑和发展空间。本文将深入分析计算机行业在数字化经济大潮中的新机遇与挑战,并对企业和从业者的应对策略进行探讨。
2024-03-15 08:01:56 924 1
原创 人工智能程序使用的编程语言
我之前的回答中使用了一个不正确的链接格式,导致显示出了一个不正确的混合文本。尽管从运行速度和性能角度考虑,直接使用C++有潜在的优势,但这并不意味着使用其他语言绑定会有显著的性能损失,因为TensorFlow的瓶颈通常在于模型的计算复杂性和数据输入输出(I/O),而不是绑定语言本身的执行效率。在如今的人工智能领域,这些通常是通过像Python这样的高级语言来实现的,因为这些语言提供了广泛的库和框架(如TensorFlow, PyTorch, scikit-learn等)来支持这些操作,简化了开发过程。
2024-03-14 09:02:31 1296
原创 【linux】搜索所有目录和子目录下的包含.git的文件并删除
会使`rm -f`命令执行为`rm -f /path/to/search/somedir/.git`,从而删除该文件。在Linux中,要搜索所有目录和子目录下的包含`.git`的文件并删除它们,可以使用`find`命令结合`-exec`选项来执行删除操作。` 表示`-exec`选项的结束。在Shell脚本中,分号(`;因此,这个命令组合的作用就是对于`find`命令找到的每个匹配`-name "*.git*"`的文件(即文件名包含`.git`的文件),都执行`rm -f`命令来删除它们。
2024-03-13 08:45:06 1069 1
原创 【C语言】编译过程中查看某个宏的值
要查看宏的值,应该使用字符串化运算符 # 来将宏转换为字符串,但是由于 #pragma message 本身就是预处理器指令,所以正确的使用方式是直接在后面跟上宏的名称。比如,如果编译器不支持直接在 #pragma message 中使用宏展开,可能需要转而使用其他实现定义,或者简单地使用 printf 在程序运行时输出宏的值。: 如果在使用GCC,可以使用`#pragma message`来输出宏的值。在C语言中,使用 #pragma message 打印宏的值时,应当直接使用宏的名称。
2024-03-13 08:40:06 1113 1
原创 用miniconda建立PyTorch、Keras、TensorFlow三个环境
如果还没有安装Miniconda,请从[Miniconda官网](https://docs.conda.io/en/latest/miniconda.html)下载合适的版本并进行安装。如果遇到问题,可以通过编辑`~/.condarc`文件来临时禁用某个源,或者通过`conda config --remove channels`命令来移除配置的镜像源。要切换到不同的环境,先使用`conda deactivate`命令退出当前环境,再用`conda activate 环境名称`命令激活另一个环境。
2024-03-12 08:42:00 1595 3
原创 人工智能:智能革命中的迷惑时刻
在信息技术飞速发展的今天,人工智能(AI)已经从科幻电影走进了我们的现实生活。它们和我们玩着捉迷藏,有时候像个天才,有时候却像个捣蛋鬼。今天,就让我们一起来回味那些让人哭笑不得的AI瞬间,分享技术带来的欢笑与思考。
2024-03-12 08:37:23 877 1
一个遵守 robots.txt 规则的爬虫
2024-03-01
Linux 内核中listen系统调用
2024-02-16
SQL电商网站数据库设计案例database-schema.sql
2024-02-13
一个简单HTTP服务的例子,微服务架构的一个组成部分
2024-02-12
OpenBLAS库矩阵乘法的简单Fortran示例
2024-02-11
基于Octave的信号处理与滤波分析案例
2024-02-10
简单的文本文件处理python程序
2024-02-10
用于文本文件处理的Java语言控制台程序示例
2024-02-09
一个简单的linux汇编语言程序
2024-02-08
情人节主题爱心python代码
2024-02-05
春节烟花python示例
2024-02-05
GtkStack的Python例程
2024-01-28
GtkStack实现的可关闭标签页
2024-01-28
GtkNotebook实现的可关闭标签页
2024-01-28
一个GtkGrid的python例程,按钮在窗体右下角
2024-01-28
c语言GtkGrid例程创建了一个包含几个按钮的窗口
2024-01-28
GTKBOX 示例Python版本
2024-01-27
一个简单的例子,展示了如何在一个基本的GTK应用程序中使用`GtkBox`来垂直排列两个按钮
2024-01-27
一个简单的 GtkApplication 和 GtkApplicationWindow 的示例
2024-01-26
使用Python的Gtk模块和Gtk.ListStore的示例
2024-01-25
自动微分解释及python语言的示例代码
2024-01-16
iperfs3开源代码压缩包
2024-01-08
usb桥接示例(单、双向)
2023-10-24
Infiniband MAD建链 verbs传送
2023-05-26
V1r1-2-1.Release-12062007.pdf
2023-05-18
ConnectX-PRM-rev-1-2.pdf
2023-05-18
RDMA-Aware-Programming-user-manual-1.pdf
2023-05-18
Performance-Tuning-Guide-for-Mellanox-Network-Adapters.pdf
2023-05-18
Mellanox-OFED-Linux-User-Manual-v3.20.pdf
2023-05-18
ConnectX-3 VPI Single and Dual QSFP+ Port Adapter Card User Ma
2023-04-15
BREW中的C语言面向对象
2022-06-05
libfilezilla-0.36.0
2022-03-03
FileZilla_Server_1.3.0_src
2022-03-03
FileZilla_3.58.0_src.tar.bz2
2022-03-03
vsftpd-2.1.1.tar.gz
2021-11-07
MediaInfo_DLL_21.09_GNU_FromSource.tar.xz
2021-10-27
MediaInfo_GUI_21.09_GNU_FromSource.tar.xz
2021-10-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人