
Linux与LinuxC
文章平均质量分 56
Linux的一些开发技术介绍
小何在线
关注我就完事了
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Linux下的权限掩码umask
在这里不做详细介绍。在上面的umask为022,我们创建的目录对于同组用户是没有写权限的,在实际中可能需要给同组用户能够在目录下创建和修改文件,那么此时需要创建的目录同组用户是具有写权限的,也就是说我们的umask不要拿走同组用户的写权限,那么就是把umask设置为002就可以达到效果。然而,在目录和文件的默认权限属性是不同的,因为对于一个目录来说它的x权限也就是执行权限是很重要的,进入目录等操作都是需要目录具有执行权限的,而对于文件来说,一般情况都是用于数据的记录操作,所以一般不需要执行权限。原创 2022-09-13 10:00:36 · 1386 阅读 · 2 评论 -
如何建立编程思想和提高编程思想
编程思想是一种指导思想,这个指导思想,将会诱发你如何写代码的行为。如果理解这话的意思呢?打个比方,中华文明千百年在民众心中形成了一个“统一天下”的思想,这种思想会诱发各个混乱时期的诸侯或者军阀,以统一中国为目标,而不会像欧洲一样以分裂中国各自独立、各自称帝为目标。那么编程思想有哪种种类呢?1)面向过程编程。这是我国绝大部分程序员的思想。这种思想诱发了他们写代码的时候这样的现象:一个方法中写了糅杂了很多的业务逻辑,或者从ui层(点)业务逻辑层(点)数据库访问层这种路径的写法。2)函数编程。...原创 2022-08-10 10:29:14 · 1325 阅读 · 1 评论 -
深入理解 Linux的 I/O 系统
在 Linux 系统中,传统的访问方式是通过 write() 和 read() 两个系统调用实现的,通过 read() 函数读取文件到到缓存区中,然后通过 write() 方法把缓存中的数据输出到网络端口。下图分别对应传统 I/O 操作的数据读写流程,整个过程涉及 2 次 CPU 拷贝、2 次 DMA 拷贝,总共 4 次拷贝,以及 4 次上下文切换。由 CPU 直接处理数据的传送,数据拷贝时会一直占用 CPU 的资源。由 CPU 向DMA磁盘控制器下达指令,让 DMA 控制器来处理数据的传送,数据传送完毕原创 2022-07-01 22:43:13 · 487 阅读 · 0 评论 -
CMake
一、简介CMake是一个跨平台的编译(Build)工具,可以用简单的语句来描述所有平台的编译过程。CMake能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。假如我们有一个深度学习框架的部分工程列表,里面有超过40个互相调用的工程共同组成,一些用于生成库文件,一些用于实现逻辑功能。他们之间的调用关系复杂而严格,如果我想在这样复杂的框架下进行二次开发,显然只拥有它的源码是远远不够的,还需要清楚的明白这几十个项目之间的复杂关系,在没转载 2021-03-15 09:13:29 · 175 阅读 · 0 评论 -
编程命名规范
一、简介无以规矩,不成方圆。符合规范的统一命名是程序编写的基本规矩之一。很多时候我们不愿意接手别人的代码,原因之一就是代码命名很乱;我们自己写代码时经常写到后面忘了前面,也有可能是我们没有养成规范的命名习惯。当写代码成为一种艺术的美时,这种美的最直接的体现就是其中变量函数等命名的规范性。首先总结一下命名的基本原则,也就是“道”的层次。二、分类目前业界共有四种常见的命名法则:驼峰命名法、匈牙利命名法、帕斯卡命名法和下划线命名法,其中前三种是较为流行的命名法。1、匈牙利命名法匈牙利命名法是早期的原创 2020-12-05 09:40:34 · 722 阅读 · 0 评论 -
Linux和Windows系统目录结构对比
Windows是大家最常用的操作系统,但可能很多人都没有去研究过 Windows 系统盘(默认C盘)的目录结构。如果使用 Linux 系统,我们就很有必要认真了解它的系统目录结构,本文将拿 Linux 和 Windows 的系统目录进行简单的对比,从而得出两个系统的目录结构的异同,与我们熟悉的 Windows 作对比,将有助于我们更快地学习 Linux。在对比系统目录前,我们先来对比一下 Windows 和 Linux 是如何访问硬盘数据的。在 Windows 中,假如我把硬盘的空间分成3个区,每个区都有一转载 2022-06-12 23:25:39 · 4218 阅读 · 1 评论 -
软件工程中的内聚与耦合
一、耦合简单地说,对象之间的耦合度就是对象之间的依赖性。指导使用和维护对象的主要问题是对象之间的多重依赖性。对象之间的耦合越高,维护成本越高。因此对象的设计应使类和构件之间的耦合最小。 有软硬件之间的耦合,还有软件各模块之间的耦合。 耦合性是程序结构中各个模块之间相互关联的度量.它取决于各个模块之间的接口的复杂程度、调用模块的方式以及哪些信息通过接口. 耦合可以分为以下几种,它们之间的耦合度由高到低排列如下:内容耦合:如果发生下列情形,两个模块之间就发生了内容耦合一个模块直接访问另原创 2021-10-28 14:59:56 · 2406 阅读 · 0 评论 -
Linux中进程正常退出return和exit()的区别
exit是一个函数,有参数。void exit(int status) 。exit执行完后把控制权交给系统。return是函数执行完后的返回。return执行完后把控制权交给调用函数。 return()是当前函数返回。如果是在主函数main, 自然也就结束当前进程了,如果不是,那就是退回上一层调用。在多个进程时.如果有时要检测上进程是否正常退出的.就要用到上个进程的返回值,依次类推。return是语言级别的,它表示了调用堆栈的返回;而exit是系统调用级别的,它表示一个进程的结束。在main函数里,r原创 2021-10-14 21:16:42 · 863 阅读 · 0 评论 -
init进程 && 0号进程和1号进程的前世今生
init进程就是我们常说的1号进程。说到1号进程,就不得不说一下1号进程的前世今生!!!Linux操作系统允许一个进程去创建新进程,新进程就是子进程,从而形成了进程树的结构模型这棵大树的树根是系统自动构造的,就是内核态下执行的0号进程,0号进程是所有进程的祖先!!有些同学会说 那我用过pstree命令看到的树根明明是1号init进程啊。其实这个问题很简单,咱们使用pstree去查看进程树,咱们是处在用户态去看进程,而0号进程是一个内核态进程。就像一颗大树,你能看见的只是树长在地上的东西,地底下的树原创 2021-10-14 20:19:18 · 752 阅读 · 0 评论 -
关于多核CPU和多个进程的问题
一、多核CPU可以同时执行多个进程。扩展了说,单核CPU就可以“同时”执行多个进程。先普及两个概念,并发和并行。二、并发当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间 段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状。.这种方式我们称之为并发(Concurrent)。三、并行当系统有一个以上CPU时,则线程的操作有可能非并发。当一个CPU执行一个线程时,另一个CPU可以执行另一个线程,原创 2021-10-11 22:33:42 · 7195 阅读 · 0 评论 -
关于 bmp图片存储中的字节对齐问题
1. bmp数据对齐问题。假设所读取的bmp图片位数是24,图像高度和宽度分别为998像素和726像素,每个像素占3个字节,即每行像素占3*726个字节,不是4的整数倍,首先需要对每行字节进行补零操作。假设文件头和信息头分别为bfh和bih,则每行所补的字节数为:offset_bytes = 4 - (bih.biWidth * bih.biBitCount/8)%4补齐后每行所占的字节数为:row_length = 4*((bih.biWidth * bih.biBitCount + 31)/32原创 2021-10-07 16:42:32 · 2004 阅读 · 1 评论 -
vim编辑器入门与提高
vim 是vi的改进版本vi/vim是unix/linux中最基本、最常用、功能最强大的文本编辑器。vi/vim有两种模式 编辑模式:键盘上所有输入的字符都当成文本内容命令模式:键盘上所有输入的字符都当成命令当进入vim时,默认是命令模式vim 1.c命令模式->编辑模式 i: insert 进入编辑模式后,光标在当前位置 I: insert 进入编辑模式后,光标移动到本行行首 o: open 向下开路。在光标的下一行,新开一行 O: open 向上开路。在光标原创 2021-09-02 23:44:38 · 186 阅读 · 0 评论 -
linux常用命令
1、pwd: 显示当前路径。2、cd: change directorycd /home/gec每个目录下面都会有两个特殊的隐藏目录. 表示当前目录… 表示上一层目录cd … 返回上一层目录cd - 返回上一次目录./程序名 运行该程序3、ls: list status 把某个文件(包括目录)的状态信息给列出来ls [options] [文件名/目录名]options:-a : all,把所有的文件都列出来在linux下面,以.开头的文件,视为隐藏文件-l : 把文原创 2021-09-02 23:21:15 · 211 阅读 · 0 评论 -
linux用户组、用户的创建与删除
1、创建组groupadd groupname2、创建用户并设置默认组useradd -g/G groupname username //使用useradd创建的账号 不能在登陆系统界面上登陆,可以用adduser创建账号能在登陆系统上使用useradd username //默认会创建一个与用户名一样的组3、向组 添加 用户gpasswd -a username groupname4、给用户设置密码passwd username5、删除组groupdel groupn原创 2021-09-02 23:09:32 · 521 阅读 · 0 评论 -
APT(Advanced Packging Tool)
ubuntu中功能最强大的命令行软件包管理工具,用于获取、安装、编译、卸载和查询软件包,以及检查软件包的依赖关系。工作原理: /etc/apt/sourcse.list 该文件内容为ubuntu软件源服务器地址 cat sources.list 查看文件内容看是不是163的镜像地址 如果不是怎么办呢? cd /etc/apt sudo mv sources.list sources.list.bak 修改源文件名字 cd /mnt/hgfs/share sudo cp s原创 2021-09-02 23:03:23 · 496 阅读 · 0 评论 -
Linux根目录文件
bin: linux常用的命令dev: linux外部设备的端口 initrd.img initrd.img -> boot/initrd.img-3.5.0-23-generic //文件系统镜像 //linux在启动,先加载内核,挂载文件系统media: 挂载USB接口移动硬盘 proc: 以可见的方式查看linux系统内存的数据sbin: 超级用户所用命令所在地 sys: 以可见方式查看linux内核的数据var: 存放系统运行时需要改变的数据原创 2021-09-02 22:38:45 · 170 阅读 · 0 评论 -
关于SYN攻击
一、攻击原理关于SYN攻击防范技术,人们研究得比较早。归纳起来,主要有两大类,一类是通过防火墙、路由器等过滤网关防护,另一类是通过加固TCP/IP协议栈防范SYN Flood利用TCP协议缺陷,发送了大量伪造的TCP连接请求,使得被攻击方资源耗尽,无法及时回应或处理正常的服务请求。一个正常的TCP连接需要三次握手,首先客户端发送一个包含SYN标志的数据包,其后服务器返回一个SYN/ACK的应答包,表示客户端的请求被接受,最后客户端再返回一个确认包ACK,这样才完成TCP连接。在服务器端发送应答包后,如果原创 2021-05-26 20:14:15 · 682 阅读 · 0 评论 -
TCP协议三次握手
一、简介所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。这个过程是发生在客户端调用connect()函数,服务器在调用accept()函数接收的时候。二、一些概念ACK: ACK (Acknowledge character)即是确认字符,在数据通信中,接收站发给发送站的一种传输类控制字符。表示发来的数据已确认接收无误。在TCP/IP协议中,如果接收方成功的接收到数据,那么会回复一个ACK数据。通常ACK信号有自己固定的格式,长度大原创 2021-05-26 20:06:14 · 2920 阅读 · 1 评论 -
Linux中/etc/sudoers文件
一、作用sudo的权限控制可以在/etc/sudoers文件中查看到如果想要控制某个用户(或某个组用户)只能执行root权限中的一部分命令, 或者允许某些用户使用sudo时不需要输入密码二、格式格式一般都是 root ALL=(ALL) ALL授权用户/组 主机 =[(切换到哪些用户或组)] [是否需要输入密码验证] 命令1,命令2,...字段1 字段2 =[(字段3)] [字段4] 字段5 注意:凡是[ ]中的内容, 都能省略; 命令和命令之间用,号分隔; 字段1:原创 2021-05-02 22:46:29 · 5177 阅读 · 0 评论 -
Linux中/etc/passwd配置文件
一、作用系统用户配置文件,存储了系统中所有用户的基本信息,并且所有用户都可以对此文件执行读®操作。root@ubuntu:/etc# ls passwd -l-rw-r--r-- 1 root root 1747 May 2 06:23 passwd二、内容gec@ubuntu:~$ cat /etc/passwd //---查看文件内容root:x:0:0:root:/root:/bin/bashdaemon:x:1:1:daemon:/usr/sbin:/bin/shbin原创 2021-05-02 22:31:44 · 505 阅读 · 0 评论