![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
【 Linux 】
文章平均质量分 84
Linux兵工厂
分享Linux、网络、驱动、C/C++、后台服务、Qt、Python硬核知识,关注+私信=获取Linux资料和代码,免费支持CSDN下载。
展开
-
Linux多线程编程和资源同步详解
在多线程编程中,除了使用锁和其他同步机制确保数据的一致性外,还应考虑性能优化的问题。例如,避免不必要的锁竞争、减小锁的粒度、使用无锁数据结构等都是提高多线程程序性能的重要手段。死锁是多线程编程中常见的问题,它指的是一组线程因争夺资源而陷入无限等待的状态。条件变量用于线程之间的通信和同步,它允许一个线程等待某个条件的发生,而其他线程可以在满足条件时通知等待的线程。线程池是一种管理和复用线程的机制,它可以有效地减少线程的创建和销毁开销。原子操作是不可中断的操作,能够确保在多线程环境中对共享数据的操作是原子的。原创 2024-02-02 14:07:20 · 908 阅读 · 0 评论 -
Linux下文件共享的几种方式
平常工作中你的电脑通常不是网络上唯一的计算机,如果你在工作环境中,情况尤其如此。当我们想要将数据从一台机器传输到另一台机器时,有时连接一个U盘并手动复制它们可能更容易。但在大多数情况下,如果您使用同一网络上的机器,则传输数据的方式是通过网络文件共享来的更方便些或更显示些。下面,我们将介绍几种不同的方法来在网络上的不同机器之间复制数据。我们将讨论一些简单的文件副本,然后我们将讨论如何将整个目录挂载到你的机器上,作为一个单独的驱动器。一个简单的文件共享工具是scp命令。原创 2023-03-21 12:56:55 · 3960 阅读 · 0 评论 -
Linux下进程相关知识
fork系统调用创建了一个基本相同的子进程,这个子进程有一个新的进程ID(PID),原始进程成为它的父进程,并有一个称为父进程ID PPID的东西。一个进程是一个正在运行的程序的实例,打开3个终端窗口,在两个窗口中运行cat命令,不传递任何选项(cat进程将作为一个进程保持打开状态,因为它期望stdin)。当父进程在子进程之前死亡时,内核知道它不会得到一个等待调用,所以它会让这些进程成为“孤儿”,并将它们置于init(记住所有进程的父进程)的照顾下。当一个进程结束时,它所使用的资源将被释放给其他进程使用。原创 2023-03-21 13:06:27 · 63 阅读 · 0 评论 -
史上最详细的计算机网络知识
按照网络的作用范围:广域网(WAN)、城域网(MAN)、局域网(LAN);按照网络使用者:公用网络、专用网络。数据链路层在物理层提供的服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。数据链路层在不可靠的物理介质上提供可靠的传输。物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。有关数据链路层的重要知识点:1.数据链路层为网络层提供可靠的数据传输;2.基本数据单位为帧;3.主要的协议:以太网协议;4.转载 2023-03-11 11:58:11 · 196 阅读 · 0 评论 -
Unix vs Linux你不知道的那些知识!
Hello,小伙伴们大家好!我是木荣君。在平时的交流中发现好多小伙伴对于Unix和Linux这两个概念傻傻分不清楚,今天木荣君花费了一些时间查找了相关的资料,把Unix和Linux做了一个对比,希望对大家在理解和认知上有所帮助,不足之处请多多理解。好了,废话不多说,我们进入正题。原创 2023-03-08 12:43:23 · 627 阅读 · 0 评论 -
202310个最佳的Linux发行版本
Linux操作系统是一款强大且流行的开源系统。自创建至今它已经存在了30多年。虽然它最初是一个类unix系统,但是现在已经发展成许多不同的风格或发行版。每个发行版都提供独特的功能和好处,使其成为特定用户的最佳选择。因此,无论您是在寻找用户友好性、安全性、轻量级的特性,还是其他特性,都有适合您的Linux发行版。以下是精选的顶级Linux发行版,包含了每个Linux发行版的优点和主要特性的描述。其中包括开源版本,也有付费版本供大家参考。原创 2023-03-08 12:41:06 · 6865 阅读 · 0 评论 -
详解Linux多线程中锁、条件变量、信号量
今天我们继续来聊一聊Linux中多线程编程中的重要知识点,详细谈谈多线程中同步和互斥机制。原创 2023-02-22 16:40:22 · 530 阅读 · 0 评论 -
一文读懂Linux中的进程、线程
进程和线程的概念非常重要,本篇来详细介绍下这两者的概念。我们在实际开发中,经常会听到这两个词,如果我们不了解这些词背后的概念,那么不能称之为一个合格的软件工程师。原创 2023-02-22 16:28:14 · 400 阅读 · 0 评论 -
嵌入式编程学习路线图-精心总结
之所以总结这篇嵌入式软件开发学习路线图,是因为好多工作中的新人和粉丝小伙伴经常咨询开始如何学习嵌入式软件。而且好多刚开始学习的小伙伴不知道从何学习,不知道学习哪些知识。想让我给他们分享一下我的学习经历。所以就花费些了精力做了总结。这份学习路线图可能不是最全最好的,但是可以说涵盖了绝大部分的知识,学习好了面对工作还是不成问题的。还是那句话,难免有疏漏,欢迎交流指正。木荣君,曾在国内安防领域的某大厂工作,现在就职于某研究所,一直从事嵌入式软件的开发工作。原创 2023-02-07 21:21:51 · 2833 阅读 · 0 评论 -
Linux系统下刨析hello world背后的秘密
一个简单的helloworld从编码到产生可执行程序,再到运行,背后设计的‘故事’就将完了。看似简单的一个helloword,没想到背后竟然隐藏着这么秘密,与其说秘密不如说是涉及了这么多东西。因此,在学习Linux系统编程时,我们不仅要知其然,更要知其所以然,只有这样才能深刻的理解Linux系统编程,才能在以后遇到问题时更快的分析问题。好了,这篇就先到这里吧,我们后续章节继续。加油,热爱技术的你!一个简单的helloworld从编码到产生可执行程序,再到运行,背后设计的‘故事’就将完了。原创 2023-01-04 13:06:50 · 368 阅读 · 0 评论 -
Rock派(基于瑞芯微RK3308B)开发记录-上篇
根据项目需求并且经过各方面评估最终选择了这款Rock Pi(Rock派)系列中的Rock Pi S产品。正式它的各方面的特性,简直就是为我的项目开发量身打造的。小巧方便,这板子可以说简单干练,布局紧凑,非常适合IOT以及智能语音项目。特别是WIKI官网上的开发说明很合木荣君的胃口。如果有相关开发经验的小伙伴可以一起交流,相互学习,共同进步RK3308B是瑞芯微旗下的一款高性能四核SOC处理器,专为智能语音交互、音频输入/输出处理和其他数字多媒体应用而设计。原创 2022-12-15 22:30:01 · 2942 阅读 · 2 评论 -
Linux用户权限管理详解
Linux下用户分两种,一个是超级用户,即平常所说的root用户,另一个是普通用户。对于操作权限来说,超级用户可以在linux系统下执行任何操作,不受限制;而普通用户在linux下做的操作有限,这是为了保证系统的安全,最高级别的系统操作都交给超级用户来管理。超级用户的终端命令提示符是“#”,普通用户的命令提示符是“$”root用户和普通用户之间的切换命令:su [用户名]功能:切换用户。例如,要从root用户切换到普通用户ubuntu,则使用su ubuntu。原创 2022-12-14 22:48:07 · 354 阅读 · 0 评论 -
Linux用户管理详解
Linux用户即Linux的使用者,是指使用Linux系统或服务的人员,通常用户对应拥有一个用户账号,并对用户名识别。正常登录Linux系统,本质是登录系统,但是Linux支持同一时间多个用户同时登陆,但是修改组策略的情况下也是可以多用户登录的。每个用户账号都拥有一个唯一的用户名和各自的密码,用户在登录时键入正确的用户名和密码后,就能够进入系统和自己的主目录。原创 2022-12-09 09:09:48 · 665 阅读 · 0 评论 -
Linux最常用命令用法总结(精选)
[语法][参数]6. touch修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件[语法][参数]7. mkdir创建目录-p创建多级目录8. cp拷贝命令[参数]9. mv为文件或目录改名、或将文件或目录移入其它位置[参数]10. rm用于删除一个文件或者目录[参数]11. tartar打包命令[参数]12. ln命令是一个非常重要命令,原创 2022-12-04 19:17:10 · 870 阅读 · 0 评论 -
手把手教你写Linux线程池
至此,一个简单的线程池实例就完成了。实际工作中我们可以根据实际的业务量来初始化线程池中线程的个数,并根据任务量的多少动态的增加或减少线程池中的线程。好了,现在让我们行动起来吧,自己编写一个线程池。如果需要线程池源码,关注Linux兵工厂,并由大量Linux资料赠送。原创 2022-12-01 17:55:03 · 391 阅读 · 0 评论 -
Linux下top命令详解
top命令大家应该并不陌生。top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况。top可以动态显示过程,不断刷新当前状态。top命令提供了实时的对系统处理器的状态监视。它将显示系统中的任务列表,内存使用和执行时间对任务进行排序。原创 2022-11-29 08:00:00 · 901 阅读 · 0 评论 -
Automake创建工程流程
Makefile作为一名Linux软件开发工程师对Makefile都不陌生,Makefile可以定义整个工程的编译规则,编写好Makefile后每次代码有修改时我们只需make进行编译,它可以省去繁琐的编译步骤,极大的提高了软件开发的效率。AutoMakeGNU Automake是一种编程工具,可以产生供make程序使用的Makefile,用来编译程序。它是自由软件基金会发起的GNU计划的其中一项,作为GNU构建系统的一部分。automake所产生的Makefile符合GNU编程标准。原创 2022-11-22 10:15:39 · 260 阅读 · 0 评论 -
【转】linux下crontab和run-parts定时任务详解
cron是Linux下的计划任务工具,它是linux的服务器端程序。cron启动后,它会读取它的所有配置文件(全局性配置文件/etc/crontab,以及每个用户的计划任务配置文件)每分钟读一次???,然后cron会根据命令和执行时间来按时来调用度工作任务。Notice that tasks will be started based on thecron's system daemon's ...转载 2020-04-17 09:00:40 · 494 阅读 · 0 评论 -
ubuntu eclipse 不能跳转到标准库头文件
windows->perfrence->c/c++->Indexer->Files to index up-front: 添加相应的头文件原创 2013-10-14 15:37:17 · 1259 阅读 · 0 评论 -
ldconfig
一、ldconfigldconfig是一个动态链接库管理命令,为了让动态链接库为系统所共享,还需运行动态链接库的管理命令--ldconfig。 ldconfig 命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如前介绍,lib*.so*),进而创建出动态装入程序(ld.so)所需的连转载 2016-08-03 14:11:19 · 489 阅读 · 0 评论 -
linux信号量
信号量一.什么是信号量信号量的使用主要是用来保护共享资源,使得资源在一个时刻只有一个进程(线程)所拥有。信号量的值为正的时候,说明它空闲。所测试的线程可以锁定而使用它。若为0,说明它被占用,测试的线程要进入睡眠队列中,等待被唤醒。二.信号量的分类在学习信号量之前,我们必须先知道——Linux提供两种信号量:(1) 内核信号量,由内核控制路径使用(2) 用户态进程转载 2016-12-08 11:37:00 · 292 阅读 · 0 评论 -
交叉编译和交叉调试环境搭建及使用
1. 交叉编译器1.1 交叉编译器介绍在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译。这个编译过程就叫交叉编译。简单地说,就是在一个平台上生成另一个平台上的可执行代码,而这种工具就是交叉编译器(cross compiler)。1.2 搭建交叉编译环境 1.2.1 实验环境交叉编译工具:arm-linux- 4.2.2转载 2016-12-24 15:49:20 · 761 阅读 · 0 评论 -
eclipse工作空间配置拷贝
将新建的workspace下的.metadata\.plugins内容全部删除,将原来的workspace下的.metadata\.plugins文件夹里除了org.eclipse.core.resources文件夹,其他所有文件夹全部拷贝到新workspace的.metadata\.plugins目录下转载 2016-12-28 09:58:21 · 1319 阅读 · 0 评论 -
Ubuntu异常关机 网络连接消失禁用问题
sudo gedit /etc/NetworkManager/nm-system-settings.conf把false改成truesudo service network-manager stopsudo rm /var/lib/NetworkManager/NetworkManager.statesudo service network-manager start原创 2017-08-15 09:17:31 · 817 阅读 · 0 评论 -
jpg转bmp(使用libjpeg库)
写得很好:http://bbs.witech.com.cn/forum.php?mod=viewthread&tid=8131&extra=page%3D1&page=1另外在libjpegb库中有现成的模型,在example.c中,有jpeg图片的压缩和解压代码。解压出来后是bmp格式的图片,填充好图片文件头,再把图像数据写入就oK,在下面的例子程序中体现。相关理论:http://w转载 2017-11-16 10:09:19 · 2077 阅读 · 0 评论 -
将java1.7升级到java1.8版本
使用java -version 和javac -version查看当前版本,目前版本为1.7下面介绍升级的方法:1)下载jdk1.8版本wget --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u71-b15/jd转载 2018-01-22 11:08:37 · 18528 阅读 · 2 评论 -
automake,autoconf使用详解
本文地址: http://www.laruence.com/2009/11/18/1154.html 转载作为Linux下的程序开发人员,大家一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便.一般情况下,大家都是手工写一个简单Makefile,如果要想写出一个符合自由软件惯例的Makefile就不那么容易了.在本文中,将给大家介绍如何使用auto...转载 2018-09-06 09:16:48 · 155 阅读 · 0 评论 -
../libtool:line XXXX:arm-linux-ranlib command not found
sudo make install。由于安装到系统目录/usr/local,所以加了sudo执行。就这步,出现了问题:../libtool:line XXXX:arm-linux-ranlib command not found在终端检查,发现arm-linux-ranlib可以在系统的PATH中找到,因为我已经把/optl/arm/4.3.2/bin添加到了PATH中。那为什么...转载 2019-03-11 14:12:39 · 3185 阅读 · 1 评论 -
ubuntu交叉编译libjpeg8
1.http://www.ijg.org/files/下载文件2. ./configure报错:bash: ./configure: /bin/sh^M: 坏的解释器: 没有那个文件或目录网上查找:有时候编写脚本时会出现类似标题列出的错误,这个问题大多数是因为你的脚本文件在windows下编辑过。windows下,每一行的结尾是\n\r,而在linux下文件的结尾是\n,那么你在w...原创 2019-03-11 15:59:29 · 882 阅读 · 0 评论 -
curl交叉编译
在官网http://curl.haxx.se/ 下载 7.26.0源码包后直接解压,由于目标运行平台为mips-linux遂修改源码配置为以下信息./configure --prefix=/home/zhangfan/source_code/curl-7.26.0/build_lib/ --enable-shared --enable-static=no \--build=i686-转载 2016-02-24 10:22:13 · 2492 阅读 · 0 评论 -
Ubuntu中将网卡名称eno16777736改回eth0
首先看看刚装好的时候不正常的样子第一步,输入如下命令,编辑对应文件(使用管理员权限执行,下同) # vim /etc/default/grub 在”GRUB_CMDLINE_LINUX”中添加参数net.ifnames=0 biosdevname=0,如下图所示第二步,输入如下命令,更新grub配置文件 # update-grub 执行结果如下图所示转载 2016-03-03 13:59:29 · 2183 阅读 · 0 评论 -
Ubuntu/Fedora高版本安装海思SDK的方法
之前用radhat安装海思sdk没问题,今天用ubuntu安装sdk出现不少错误;执行脚本是报错./cross.install: 25: Syntax error: "do" unexpected (expecting "fi")在网上找了答案:说将 #!/bin/sh 改为 #!/bin/bash 就OK了后面仍然会提示run_command_转载 2015-06-09 17:28:21 · 665 阅读 · 0 评论 -
mipsel-linux- 交叉编译qt-everywhere-opensource-4.6.0总结
1.修改文件: /mkspecs/qws/linux-arm-g++/qmake.conf # 设置交叉编译工具链: # 本项目使用的交叉编译工具是 arm-none-linux-gnueabi-g++ # QMAKE_CC = arm-none-linux-gnueabi-gcc QMAKE_CXX原创 2014-05-28 09:33:48 · 790 阅读 · 0 评论 -
linux目录结构
/:根目录,一般根目录下只存放目录,不要存放文件,/etc、/bin、/dev、/lib、/sbin应该和根目录放置在一个分区中/bin:/usr/bin:可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等。/boot:放置linux系统启动时用到的一些文件。/boot/vmlinuz为linux的内核文件,以及/boot/gurb。建议单独分区,分区大小100M即可转载 2014-06-04 13:28:19 · 410 阅读 · 0 评论 -
insmod
Linux指令:insmod——载入模块insmod 就是insert module的缩写功能说明:载入模块。语法:insmod [-fkmpsvxX][-o ][模块文件][符号名称 = 符号值]说明:Linux有许多功能是通过模块的方式,在需要时才载入kernel。如此可使kernel较为精简,进而提高效率,以及保有较大的弹性。这类可载入的模块,通常是设备驱动程转载 2014-06-04 13:06:40 · 532 阅读 · 0 评论 -
linux常用的一些命令
系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上执行测试性读取操作 cat /proc/cpui转载 2014-05-16 14:34:43 · 368 阅读 · 0 评论 -
Uboot压缩
uboot分为可执行程序和环境变量,进行压缩就是移动环境变量的位置可执行 环境变量原创 2013-12-23 09:07:28 · 840 阅读 · 0 评论 -
有趣的串口之超级终端的玩法
printf("\033[1;33m Hello World. \033[0m \n");颜色特效控制:printf("\033[1;33m Hello World. \033[0m \n");颜色如下:none = "\033[0m"black = "\033[0;30m"dark_gray = "\033[1;原创 2013-12-21 11:12:32 · 1661 阅读 · 0 评论 -
Ubuntu 12.04更新源
1、首先备份Ubuntu12.04源列表sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup (备份下当前的源列表) 2、修改更新源sudo gedit /etc/apt/sources.list (打开Ubuntu 12.04源列表文件) 3、把里面的列表替换成下面的列表转载 2013-10-14 15:00:20 · 727 阅读 · 0 评论 -
linux中eth0问题,复制虚拟机后eth0变成eth1问题
当克隆或者重装虚拟机后,再启动系统时会发现系统下不再有eth0,而变成了eth1,当使用/etc/init.d/network重启网络时,会提示找不到设备eth0及eth1的启动脚本。做以下改动:/etc/sysconfig/network-scripts/ifcfg-eth0重命名为/etc/sysconfig/network-scripts/ifcfg-eth1原创 2013-08-28 09:22:05 · 897 阅读 · 0 评论