![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
待修改
文章平均质量分 79
一口Linux
《从零开始学ARM》作者,长期分享嵌入式、linux、网络、arm知识。
展开
-
抓包工具fiddler都有哪些高级功能,一文带你全面了解它
介绍与安装下载地址:官网自己下载抓包设置有时候,我们的fiddler启动是正常的,但是就是抓不到包,原因有很多。但多数情况都是因为配置不正确,接下来我们就看下有哪些导致fiddler抓不到的设置 。1.是否配置代理服务器一般情况下此设置会自动配置,但是如果抓不到包首先要检查一下这个选项。检查步骤:打开Fiddler-Tools-WinINET Options,会打开Internet属性 点击局域网设置,打卡的界面代理服务器下面的复选框需要勾选上(默认是勾选上的)。 点击"高级原创 2021-06-16 21:57:01 · 2739 阅读 · 1 评论 -
Linux操作系统原理—内核网络协议栈
前言本文主要记录 Linux 内核网络协议栈的运行原理数据报文的封装与分用封装:当应用程序用 TCP 协议传送数据时,数据首先进入内核网络协议栈中,然后逐一通过 TCP/IP 协议族的每层直到被当作一串比特流送入网络。对于每一层而言,对收到的数据都会封装相应的协议首部信息(有时还会增加尾部信息)。TCP 协议传给 IP 协议的数据单元称作 TCP 报文段,或简称 TCP 段(TCP segment)。IP 传给数据链路层的数据单元称作 IP 数据报(IP datagram),最后通过以.原创 2021-06-13 20:48:02 · 1007 阅读 · 0 评论 -
怎样成为优秀的程序员?记住三个秘诀就行了
都是程序员,那么普通的程序员和优秀的程序员有什么区别呢?一个普通的程序员往往只是在执行分配的工作,很少能够提交高质量的可交付成果。相比之下,一名优秀的程序员在完成分配的工作的同时,他还可以确保以下几点:尽量保证代码没有bug; 有足够的测试来覆盖验证不同的场景; 有大量的分支覆盖和线路覆盖; 代码严格遵守编程规约; 易阅读、易维护; 已经从集成的角度验证过了。除了以上几点,他们还时刻准备着:帮助团队成员解决问题; 承担更多的责任; 迎接新的挑战。接下来就来介绍三个秘诀。秘诀原创 2021-06-08 23:08:20 · 520 阅读 · 0 评论 -
Linux命令操作:用sort和awk命令,进行复杂条件过滤
原文:https://www.toutiao.com/i6968352645211963941/多,浩如烟海,参数之杂,多如繁星。需求引导,用到再学。以使用为目的,适当延伸,是一个最实际最有效的办法。某天,我突然想生成一个文件,记录/dev下的设备文件,要求如下:“ls -l /dev”是数据输出源,因为这个命令会列出/dev下面的设备文件,并带有主次ID信息。 要按照设备主ID由小到大、次ID号由小到大的顺序显示。 只想输出主ID、次ID和设备文件名 fifo管道、socket、软.原创 2021-06-11 21:22:51 · 1166 阅读 · 0 评论 -
Linux——IO模式及 select、poll、epoll详解
一、概念说明在进行解释之前,首先要说明几个概念:用户空间和内核空间 进程切换 进程的阻塞 文件描述符 缓存 I/O1.1、用户空间与内核空间Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者不能简单地使用指针传递数据,因为Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对应的数据可能不在内存中。Linux内核地址映射模型x86 CPU采用了段页式地址映射模型。进程代码中的地址为逻辑地址,经过段页式地址映射后,才真正访原创 2021-05-30 11:49:34 · 379 阅读 · 0 评论 -
Linux系统编程-文件IO、标准库IO、刷新、缓冲模式
原文:https://www.toutiao.com/i6963239107937960480/Linux系统编程的主要内容,就是分门别类的讲解Linux操作系统各个部分的原理,然后介绍或展示相关的系统调用API函数。这一部分的内容非常多,几乎牵涉到了从第1章开始以来的大部章节中所提及的概念。所以要分三部分讲解。这里是最为基础的A部分。1 系统调用我们再次回顾一下系统调用的概念。一个系统调用的流程系统调用,英文名叫“system call”,它是操作系统内核里的一些内建的函数库,原创 2021-05-28 19:20:10 · 870 阅读 · 0 评论 -
操作系统之文件管理,万字长文让你彻底弄懂
磁盘的结构磁盘原理我再上一篇讲操作系统内存管理的时候提到,内存和硬盘速度差距大的原因,如下:内存速度比硬盘速度快的原理: 内存的速度之所以比硬盘的速度快(不是快一点,而是快很多),是因为它们的存储原理和读取方式不一样。硬盘是机械结构,通过磁头的转动读取数据。一般情况下台式机的硬盘为每分钟 7200 转,而笔记本的硬盘为每分钟 5400 转。 而内存是没有机械结构的,内存是通过电存取数据的。内存通过电存取数据,本质上就是因为 RAM 存储器是通过电存储数据的。但也正因为它们是通过电存储数据原创 2021-05-27 20:33:23 · 721 阅读 · 0 评论 -
这些 Shell 分析服务器日志命令集锦,收藏好
自己的小网站跑在阿里云的ECS上面,偶尔也去分析分析自己网站服务器日志,看看网站的访问量。看看有没有黑阔搞破坏!于是收集,整理一些服务器日志分析命令,大家可以试试!1、查看有多少个IP访问:awk '{print $1}' log_file|sort|uniq|wc -l2、查看某一个页面被访问的次数:grep "/index.php" log_file | wc -l3、查看每一个IP访问了多少个页面:awk '{++S[$1]} END {for...原创 2021-05-27 20:26:44 · 286 阅读 · 0 评论 -
Linux的防火墙是怎么工作的?
NetfilterNetfilter是Linux 2.4内核引入的一个子系统,是位于Linux内核中的包过滤引擎,基于Netfilter可以实现防火墙的相关策略。Netfilter的架构就是在网络流程中数据包必须经过的位置放置了5个检测点(hook),在每个检测点上登记了一些处理函数进行处理,即钩子函数(hook function)。钩子函数实现了每个hook的检查规则链。这5个hook就是数据包传输路径中的5个控制关卡,任何一个数据包,必然经过其中的一个或某几个。每个hook都对应了一条规则链原创 2021-05-19 14:16:13 · 383 阅读 · 0 评论 -
Linux内核启动流程 详解
Linux内核启动流程 arch/arm/kernel/head-armv.S 该文件是内核最先执行的一个文件,包括内核入口ENTRY(stext)到start_kernel间的初始化代码, 主要作用是检查CPU ID, Architecture Type,初始化BSS等操作,并跳到start_kernel函数。在执行前,处理器应满足以下状态:r0 - should be 0r1 - unique architecture numberMMU - offI-cach...原创 2021-05-16 17:11:10 · 1455 阅读 · 0 评论 -
40张图入门Linux——(前端够用,运维入门)
本文主要是Linux的入门内容,利用40张思维导图从基础、操作、实用指令、组管理和权限管理、crond任务调度、Linux磁盘分区和挂载、Linux网络环境配置、进程管理、服务管理、RPM和YUM、软件安装关键点、Shell编程共十二部分着手,从而系统的了解一下Linux(基于Centos),本文的定位是前端工程师够用、运维工程师入门。一、基础主要阐述了什么是Linux、主要发行版有什么、如何在自己利用VM安装自己的Linux系统、Linux树形目录结构及相关目录的用途。...原创 2021-04-25 20:31:01 · 531 阅读 · 0 评论 -
GNU是什么?
GNU计划,有译为“革奴计划”,是由理查德·斯托曼在1983年9月27日公开发起的。它的目标是创建一套完全自由的操作系统。理查德·斯托曼最早是在net.unix-wizards新闻组上公布该消息,并附带一份《GNU宣言》等解释为何发起该计划的文章,其中一个理由就是要“重现当年软件界合作互助的团结精神”。 GNU是“GNU's Not Unix”的递归缩写,为避免与gnu(非洲牛羚,发音与“new”相同)这个单词混淆,斯托曼宣布GNU应当发音为“Guh-NOO”(/ˈgnuː/),与“canoe”发音相原创 2021-04-05 11:46:19 · 1288 阅读 · 0 评论 -
用户态文件系统fuse学习
FUSE概述FUSE(用户态文件系统)是一个实现在用户空间的文件系统框架,通过FUSE内核模块的支持,使用者只需要根据fuse提供的接口实现具体的文件操作就可以实现一个文件系统。在fuse出现以前,Linux中的文件系统都是完全实现在内核态,编写一个特定功能的文件系统,不管是代码编写还是调试都不太方便,就算是仅仅在现有传统文件系统上添加一个小小的功能,因为是在内核中实现仍需要做很大的工作量。在用户态文件系统FUSE出现后(2.6内核以后都支持fuse),就会大大的减少工作量,也会很方便的进行调试。编写原创 2021-04-03 17:23:14 · 4013 阅读 · 0 评论 -
192.168.2.1如何访问192.168.1.1的服务器?
第一个可能的解决办法:添加三层转发设备你说第一种情况,192.168.2.1和192.168.1.1,它们的掩码都是24位,不在同一个网段,展开就是192.168.2.1/24,192.168.1.1/24。这也是说你不专业的原因,写IP地址时,一定要把掩码加上,不然相同的IP地址可能在不同的网段。如果是这种情况,你的问题就可以简化为两个不同网段的主机如何互访?这个问题就很好解决了,中间加一个三层交换机或路由器作为网关,把它们连接起来就可以了,例如下图所示:当配置IP地址,并且打开端口以后,原创 2021-04-03 01:09:00 · 4741 阅读 · 0 评论 -
从计算机视觉到人脸识别:一文看懂颜色模型、信号与噪声
导读:计算机视觉是计算机科学的一个重要门类。计算机视觉的主要目标是教会计算机如何去“看”,所以也称为机器视觉。本文将介绍计算机视觉的一些基础知识。作者:王天庆如需转载请联系华章科技01 计算机视觉介绍计算机视觉的主要目标是教会计算机如何去获取图片信息中的知识,例如人脸识别就是让计算机去自动获取与识别人脸图像中的知识,这个“知识”的范畴可以是“两张图片中的人脸是否来自于同一个人”,也可以是“图片中的人脸是男人还是女人”。维基百科上对计算机视觉的定义如下:Computer visi.原创 2021-04-03 01:03:56 · 740 阅读 · 0 评论 -
linux的TCP连接数量最大不能超过65535个吗,那服务器是如何应对百万千万的并发的?
首先,问题中描述的65535个连接指的是客户端连接数的限制。在tcp应用中,server事先在某个固定端口监听,client主动发起连接,经过三路握手后建立tcp连接。那么对单机,其最大并发tcp连接数是多少呢?如何标识一个TCP连接在确定最大连接数之前,先来看看系统如何标识一个tcp连接。系统用一个4四元组来唯一标识一个TCP连接:{localip, localport,remoteip,remoteport}。client最大tcp连接数client每次发起tcp连接请求时,除非绑定原创 2021-04-03 01:02:58 · 4953 阅读 · 0 评论 -
面试情商问题汇总
via:@人民日报原创 2021-04-02 19:54:08 · 927 阅读 · 0 评论 -
Shell编程案例:统计指定目录下指定文件大小的个数及总和
Shell编程简单案例案例:统计一个目录下超过指定大小的文件个数,再对筛选出的文件求总和。要求:输入:输入指定目录,输入指定大小(单位M)。输出:输出文件个数,输出文件总和。实现方式不唯一以下是利用数组来实现,但是并不完善。#!bin/bash#统计一个目录下超过指定大小的文件个数,再对筛选出的文件求总和。#要求:#输入指定目录,输入指定大小(单位M)。#输出文件个数,输出文件总和。#实现方式不唯一#auth:odysee#输入的目录d原创 2021-04-02 19:52:28 · 2348 阅读 · 0 评论 -
Linux SOCKET介绍
1.概述socket 是一种IPC方法,它允许位于同一主机(计算机)或使用网络连接起来的不同主机上的应用程序之间交换数据。2.创建一个socket#include<sys/socket.h>int socket(int domain,int type,int protocol);//return file descriptor on success or -1 on error复制代码2.1 通信domain识别出一个socket的方法(即socket“地址”的格式)原创 2021-03-22 18:44:15 · 7704 阅读 · 0 评论 -
Unix, Linux 和MacOS
常见问题我常常会听到类似的问题: Unix, Linux和MacOS之间有什么联系? 又有什么区别?先说结论:Linux是类Unix的操作系统, 其内核上的大部分软件是按照POSIX协议运行,所以跟Unix系统上运行效果类似. MacOS的内核是在Unix的家族分支上的,其内核是基于NeXTSTEP和FreeBSD混合开发组成,所以有部分功能运行的跟Unix系统一样,有部分又不同(定制开发)如下图:下面开始详细描述.UnixUnix是一个由多用户、多进程的计...原创 2021-03-20 22:46:23 · 1734 阅读 · 0 评论 -
网工必备!超实用的九大常用的网络命令
一、ping命令ping是个使用频率极高的实用程序,主要用于确定网络的连通性。这对确定网络是否正确连接,以及网络连接的状况十分有用。简单地说,ping就是一个测试程序,如果ping运行正确,大体上就可以排除网络访问层、网卡、Modem的输入输出线路、电缆和路由器等存在的故障,从而缩小问题的范围。 ping能够以毫秒为单位显示发送请求到返回应答之间的时间量。如果应答时间短,表示数据报不必通过太多的路由器或网络,连接速度比较快。ping还能显示TTL(Time To Live,生存时间)值,通过TTL值原创 2021-03-19 22:53:04 · 558 阅读 · 0 评论 -
shell 脚本关键字&符号
shell概念"shell"既是一种解释型编程语言,也是一个这种编程语言的解释器的名字 shell是解释型语言,就是解释器会一条一条的翻译每一条语句并执行,对比之下,C语言是编译型语言,编译器把整个工程编译成可执行文件才能执行 在没有续行符(\回车)的情况下,shell脚本的一条语句以"回车"为结束 任何一个shell脚本程序都必须在开头用#!标识使用的shell程序,如果用的是bash,那就是#!/bin/sh shell脚本一行中的#之后的部分为注释 刚刚写完的一个shell script原创 2021-02-26 09:44:44 · 4711 阅读 · 0 评论 -
shell脚本的执行
shell脚本有两种执行方式,一种是直接执行,一种是使用$source或.命令执行直接执行直接执行shell脚本,bash会在当前bash下新建一个子bash进程用来执行shell脚本,此时脚本里定义的变量,并不会传会到父bash进程中#!/bin/bashVAR=12echo $VAR$exec.sh 12$echo $VAR #父bash中并不存在VAR$source或.执行使用$source来执行一个shell脚本表示使用当前.原创 2021-02-26 09:43:57 · 305 阅读 · 0 评论 -
shell脚本变量
既然是变量,自然分变量名和变量值,在使用的时候一定要注意哪些地方需要用变量名,哪些地方需要用变量的值。自定义变量shell变量不需要声明,随用随定义,给变量赋值的时候要注意shell是空格敏感的 使用{}确定变量的范围是个好习惯$NEWENV =123 #等号前面有空格,不行NEWENV: command not found $NEWENV= 123 #等号后面有空格,不行123: command not found原创 2021-02-26 09:43:25 · 356 阅读 · 0 评论 -
shell实例流程控制&函数
条件if-then-elif-then-fiif的条件部分经常使用test EXPRESSION或[ EXPRESSION ]实现,test的用法可以参见testif 条件1 #if 条件1;then then 执行语句1elif 条件2 #elif 条件2;thenthen 执行语句2 else 执行语句3fi #条件结束标识,即将if反过来举个栗子#!/bin/shvar="a test string"if [原创 2021-02-26 09:42:43 · 272 阅读 · 0 评论 -
shell实例-跨目录执行,彩色输出,临时文件,行遍历文件
参数检查#!/bin/bashset -eif [ ! -n "$1" ];then echo "Usage: #cmd <> []" exitfi跨目录执行脚本但维持脚本与"."的相对位置不变SH_PATH=$(cd $(dirname $0);pwd)cd ${SH_PATH}彩色日志输出COLOR_RED='\033[1;31m'COLOR_GREEN='\033[1;32m'COLOR_NC='\033[0m'Log_INFO(){ m原创 2021-02-26 09:42:01 · 343 阅读 · 0 评论 -
exynos 4412 时钟配置
时钟初始化的一般方法和顺序,u-boot、普通裸机程序如果需要都可以使用。—————————————————————————————-本文解决的问题:1、宏观上几个大模块的时钟配置顺序。2、小模块的时钟选择、分频和一般的配置顺序。3、对小模块来说,官方手册推荐的时钟源选择问题。4、本文只以手册的“推荐配置”进行说明,“自由玩法”不保证稳定性。—————————————————————————————-多路选择器选择原则:1、尽量保持默认配置不动。2、尽量选择前端.原创 2021-02-25 08:25:56 · 900 阅读 · 0 评论 -
【粉丝问答13】大厂笔试11道嵌入式笔试题
笔试题1. ARM指令和中B和BLX的区别?B:跳转执行B 指令的格式为:B{条件} 目标地址B 指令是最简单的跳转指令。一旦遇到一个B 指令,ARM 处理器将立即跳转到给定的目标地址,从那里继续执行。注意存储在跳转指令中的实际值是相对当前PC 值的一个偏移量,而不是一个绝对地址,它的值由汇编器来计算(参考寻址方式中的相对寻址)。它是 24 位有符号数,左移两位后有符号扩展为 32 位,表示的有效偏移为 26 位(前后32MB 的地址空间)。举例:B Label ; 程序无条件跳原创 2021-02-24 21:07:06 · 1026 阅读 · 0 评论 -
【粉丝问答12】如何计算函数的执行时间?
0、问题描述粉丝想计算一个函数的执行时间。一、问题分析函数的执行时间的统计在嵌入式系统中会被频繁的用到,知识点很重要。本文从两个方面来讨论类似的问题:程序内计算一个函数的执行时间计算一个程序的执行时间二、程序内如何计算一个函数的执行时间?1. 思路我们在执行函数前后分别记录下时间戳,然后计算两个时间戳的差值即可。我们需要借助函数clock_gettime来实现这个功能。看下该函数的定义:#include <time.h>int clock_gettime(cl原创 2021-02-23 20:47:19 · 561 阅读 · 0 评论 -
23个非常实用的Shell拿来就用脚本实例
100个非常实用的Shell拿来就用脚本实例(超详细超全)一https://www.toutiao.com/i6921163976185348616/shell脚本是帮助程序员和系统管理员完成费时费力的枯燥工作的利器,是与计算机交互并管理文件和系统操作的有效方式。区区几行代码,就可以让计算机接近按照你的意图行事。博智互联为大家整理了100个实例,通过100个实战经典脚本实例,展示了shell脚本编程的实用技术和常见工具用法。大家只需根据自己的需求,将文中这些常见任务和可移植自动化脚本推广应用到其他类原创 2021-02-21 22:10:44 · 1704 阅读 · 0 评论 -
为Linux的cp和mv命令添加进度条
为Linux的cp和mv命令添加进度条cp和mv可能是大家日常中使用最多的Linux命令之一。但是有一个突出的问题是这两个命令都不会有任何提示信息,这在操作大文件时候只能干等。可能大家对此已经习以为常,但是其实上也有解决解决方法,本文我们就介绍一个Gnu Coreutils(cp和mv的源代码包)的补丁Advanced Copy,用于给其增加进度条的功能。Advanced Copy是cp和mv 程序mod。它通过给cp和mv添加了一个进度条,在进行文件(夹)复制或移动操作时候提供进度条,数.原创 2021-02-11 10:40:13 · 1426 阅读 · 0 评论