自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

每天进步一点点,月薪三千不是梦

每天进步一点点,月薪三千不是梦

  • 博客(42)
  • 资源 (11)
  • 收藏
  • 关注

转载 哈希表,数组,链表应用场景分析

数组的特点是:寻址容易,插入和删除困难;而链表的特点是:寻址困难,插入和删除容易。那么我们能不能综合两者的特性,做出一种寻址容易,插入删除也容易的数据结构?答案是肯定的,这就是我们要提起的哈希表,哈希表有多种不同的实现方法,我接下来解释的是最常用的一种方法——拉链法,我们可以理解为“链表的数组”,如图:左边很明显是个数组,数组的每个成员包括一个指针,指向一个链表的头,当然这个链表...

2020-05-06 10:25:27 1572

原创 各种开源授权许可协议对比分析

GPL LGPL Apache BSD 类库引用再发行 用作商业用途必须开源 基于类库以上的软件程序用作商业用途可不必开源,需表明出处,原作者相关信息。 基于类库以上的软件程序用作商业用途可不必开源,但在源文件中需...

2020-03-27 14:03:14 1322

转载 iptables详解1-iptables概念

本文转载自http://www.zsythink.net/archives/1199/,直接保存的图片,如有侵权请及时联系我

2019-08-08 10:52:59 230

原创 优质好文用户列表

smstonghttps://blog.csdn.net/smstongtolimithttps://www.cnblogs.com/tolimit/

2019-03-21 17:23:39 153

转载 哈希表C语言实现-可复用

1 哈希表原理这里不讲高深理论,只说直观感受。哈希表的目的就是为了根据数据的部分内容(关键字),直接计算出存放完整数据的内存地址。试想一下,如果从链表中根据关键字查找一个元素,那么就需要遍历才能得到这个元素的内存地址,如果链表长度很大,查找就需要更多的时间.void* list_find_by_key(list,key) { for(p=list;p!=NULL; p=p->n...

2019-03-21 16:29:30 222

原创 IO keyPoints

1th courseIO模型主要有:阻塞、非阻塞、多路复用(select、epoll)、signal IO、AIO、libevent具体对比请参考:https://blog.csdn.net/woyimibayi/article/details/791966292th course1、如上图所示,VFS相当于C++中的抽象类,它提供了通用文件操作接口,让linux的一...

2019-03-21 16:12:51 192

原创 memory interview keyPoints

1th courses1、物理地址是MMU看到的内存地址;虚拟地址是存在MMU情况下CPU看到的地址;总线地址是设备看到的地址;一块内存,物理地址是0,在设备端看起来是0x80000000,而物理地址0又通常被映射为虚拟地址0xc00000002、MMU的作用主要有:虚实转换(进程不需关心内存,每个任务4G空间);内存权限保护(readonly);用户权限保护(非法访问内核空间);cach...

2019-02-26 16:39:22 197

原创 process interview keyPoints

first courses1、进程是资源封装的最小单位,线程是任务调度的最小单位进程封装的资源主要有:进程ID、mm_struct(内存管理相关结构)、文件系统结构(当前用户,当前目录等)、文件相关结构(全部    打开的文件描述符)、信号相关结构(进程使用的信号以及对应的信号处理函数)。2、进程ID的数量是有限的,通常默认为32768,所以通过这个弊端,可以使用进程炸弹直接干掉整个系...

2019-02-18 16:30:54 240

原创 抢占关闭总结

本文是阅读宋宝华老师是谁关闭了Linux抢占,而抢占又关闭了谁?的这篇文章后的总结1、抢占发生的必要条件    a、preempt_count抢占计数必须为0,不为0说明其它地方调用了禁止抢占的函数,比如spin_lock    b、中断必须是使能的状态,因为抢占动作要依赖中断具体源码实现参考如下:2、spin_lock系列函数总结    a、spin_lock会调用preempt_disable...

2018-06-13 17:38:06 1717

原创 内存管理五

本文是任督二脉之内存管理课程第五节课的总结说明,由于水平有限,可能无法对宋老师所讲完全理解通透,如有错误,请及时指证。          第五节课的内容多且杂,其实完全可以合并到前四节课中。但考虑前四篇总结已经完成,章节插入不方便,所以还是多写一篇。         本文分成两部分来论述1、 DMA与Cache一致性问题。2、  常用的命令接口和文件接口简要说明。 DMA与Cache一致性问题  ...

2018-06-04 16:24:32 417

原创 内存管理四

本文是任督二脉之内存管理课程第四节课的总结说明,由于水平有限,可能无法对宋老师所讲完全理解通透,如有错误,请及时指证。          发了前几天的总结后,有群里的朋友@jeff表示,我这样大篇幅的文字描述,估计没几个人有耐心看下去,想想也是,内存管理本身就比较复杂,枯燥,我听了宋老师的课,了解个一知半解,转述的过程可能也不到位。所以这一次尽量使用图片进行说明,然后逐步展开。话不多说,先上图吧。...

2018-06-04 16:23:24 687

原创 内存管理三

本文是任督二脉之内存管理课程第三节课的总结说明,由于水平有限,可能无法对宋老师所讲完全理解通透,如有错误,请及时指证。          本文从7个方面进行说明:1、  VMA到底是个什么鬼?2、  Linux提供的VMA查看文件接口和命令接口说明。3、  Page fault的产生原因分析以及与VMA的关系。4、  物理内存、页表、进程之间的爱恨情仇。5、  VSS、RSS、PSS、USS概念说...

2018-06-04 16:22:24 478

原创 内存管理二

任督二脉之内存管理第二节课总结本文是任督二脉之内存管理课程第二节课的总结说明,由于水平有限,可能无法对宋老师所讲完全理解通透,如有错误,请及时指证。          本文从4个方面进行说明:1、  Slab的基本原理以及它的文件接口说明2、  kmalloc、vmalloc、malloc比较3、  OOM是什么,为什么,怎么做4、  FAQ:群里经常问到的,也是比较容易误解的问题 slab的基本...

2018-06-04 16:21:59 475

原创 内存管理一

任督二脉之内存管理第一节课总结         本文是任督二脉之内存管理课程第一节课的总结说明,由于水平有限,可能无法对宋老师所讲完全理解通透,如有错误,请及时指证。          本文从5个方面进行说明:1、  物理/虚拟/总线地址概念说明。2、  MMU是什么,为什么,怎么做。3、  内存分区和内存映射区。4、  Buddy算法是个什么鬼。5、  CMA的工作原理。 物理/虚拟/总线地址概...

2018-06-04 16:21:00 684

原创 互相独立进程间共享内存互斥访问的解决办法

前提:两个进程互相独立,访问同一片共享内存存在问题:1、如何避免两个进程同时访问共享内存(一旦两个进程同时访问一个临界区,后果是程序崩溃)2、如果使用互斥锁,如何让两个进程拿到同一个互斥锁解决办法:针对问题1,可以使用信号,信号量,互斥锁来进行同步,但是信号和信号量需要两个进程都实现一套自己的逻辑(访问临界区前,先检查冲突标志,如果没有冲突则访问,并向其它的所有进程依次发送信号,告诉它们我要开始访...

2018-04-26 17:14:27 15081 8

转载 oops和panic的区别

本文转载自Linux公众号宋宝华: Kernel Oops和Panic是一回事吗?Oops英文单词的中文含义是“哎呀”,表示“惊叹”;Panic英文单词的中文含义是“惊慌”。所以panic的程度显然是高于oops的,因为惊叹不一定会惊慌,而惊慌最容易失措,内核panic后,就死机了,俗称内核崩溃。但是内核报oops,这个时候不见得会panic,它可能只是报个oops,杀死进程而已。当oops发生的...

2018-02-23 14:42:52 4871

原创 基于表格形式的select,poll,epoll对比-IO多路复用函数的应用场景

IO多路复用监听函数select,poll,epoll,它们的实现原理网络上大量资料,此处不做赘述本文通过表格的形式,对比select,poll,epoll在各方面的表现,从而引出它们实际的应用场景话不多说,看表格 selectpollepoll实现机制轮询+内存拷贝+FD_SET轮询+等待队列+链表callback+mmap

2018-01-29 16:12:33 1032 1

原创 linux系统为用户提供的文件接口

linux系统为用户提供了大量的文件接口来改变操作系统的参数,由于接口文件繁多,实际用到的时候往往记不住文件所在的路径和文件名,此文仅用于个人备忘和查找。通常我们也可以使用sysctl命令查看,修改响应的内核参数。sysctl -a 可查看系统全部的内核参数,和他们的值。附上内核参数列表:http://blog.sina.com.cn/s/blog_a44094ea0102xbff.h

2018-01-29 13:22:23 1719

原创 linux内存地址的三个概念区分-物理地址、虚拟地址、总线地址

在linux内核书籍中,介绍内存管理的部分,频繁出现三个概念,物理地址、虚拟地址、总线地址他们区别如下:物理地址:MMU看到的内存的地址虚拟地址:cpu,程序员操作的地址总线地址:设备看到的地址比如一块内存,物理地址是0,在 设备端看起来是0x80000000,而物理地址0又通常被映射为虚拟地址0xc0000000,从而同一地址就具备了三个身份,但他们在物理上...

2018-01-25 16:20:12 2109

原创 Ftrace的一个完整案例

本文来自linuxer公众号Ftrace即function trace,顾名思义,他的trace过程是以函数为单位的,标识出每一级函数占用的cpu时间。比如我们进入一个系统调用,出来的时间过长,我们想知道时间花哪里去了,利用Ftrace就可以追踪到一级级的时间分布。Ftrace用于内核态代码的跟踪,实现方式是内核代码插桩。1、写一个proc模块,包含一个proc的读和写的入口。te

2018-01-24 17:01:04 523 1

原创 宋宝华的网络负载均衡脚本说明

脚本如下:echo 2 > /proc/irq/40/smp_affinity                                                echo 3 > /sys/class/net/eth0/queues/rx-0/rps_cpusecho 4096 >/proc/sys/net/core/rps_sock_flow_en

2018-01-24 14:38:12 341

原创 iperf命令数据分析

iperf命令通常用来测网络带宽,命令的相关参数网络上的资料很详细,此处不做赘述,本文旨在说明iperf产生的数据。我们假设服务器端IP: 192.168.0.136   客户端IP: 192.168.0.112服务器端运行命令:iperf -s客户端运行命令:iperf -c 192.168.0.136 -P 5 -t 10 -i 1 -l 1K与服务器192.168.0.136

2018-01-24 14:25:57 15480

原创 Docker新手入门-最初2小时

在阅读了宋宝华的Docker最初两小时,总结归纳如下:概念说明:对于没接触过Docker的同学,先建立一个概念:Docker是一种通过为某一个进程建立一个独立的互相隔绝的运行环境的机制。目的是使一个进程与其它的进程做到资源上的完全隔离,由此产生了一个很大的优势,高可移植性,一次配置,到处运行,不需要关心运行环境,前提是运行环境支持Docker。注意:Docker实现了虚拟机的效果,

2018-01-23 15:44:06 412

转载 QtQml应用程序的性能考虑与建议

本文翻译自Qt官网文档:http://doc.qt.io/qt-5/qtquick-performance.htmlQtQml应用程序的性能考虑与建议1、时间考虑作为一名程序开发者,应该努力使渲染引擎的刷新率维持在60fps,也就是说在每帧之间大约有16ms,这段时间包括了基本图元在图形硬件上的描画。具体内容如下:>尽可能的使用异步事件驱动来编程。>使用工作

2017-12-13 15:31:56 1328

转载 Perf -- Linux下的系统性能调优工具,第 1 部分

Perf -- Linux下的系统性能调优工具,第 1 部分应用程序调优的使用和示例刘 明2011 年 5 月 26 日发布Perf 简介Perf 是用来进行软件性能分析的工具。通过它,应用程序可以利用 PMU,tracepoint 和内核中的特殊计数器来进行性能统计。它不但可以分析指定应用程序的性

2017-11-15 15:52:43 402

转载 IPU到底是个什么鬼?

在 i.MX6 应用处理器中,有一个很重要的单元:IPU(Image Processing Unit)图像处理单元。图像处理单元的目标是提供从图像输入(摄像头传感器 / 电视信号输入等)到显示设备(LCD显示屏 / TV输出 / 外部图像处理单元等)端到端的数据流信号处理的全面支持。IPU库(IPU Library)是基于IPU硬件的,它能实现以下功能:调整大小。旋转。色彩空间 / 格

2017-11-02 10:43:46 10422

原创 linux下竞态分析和避免

这部分内容是linux设备驱动学习总结-keyPoints中的子集,独立出来方便查找。1、linux产生竞态主要三种情况:中断、抢占、多处理器。一个cpu运行在进程上下文或者中断上下文(且这段上下文是临界区域)的时候可能被中断打断,且这个中断要访问临界资源;被其它进程抢占,且这个进程要访问临界资源;或者其它的cpu也要访问临界区域。这个时候就会发生竞态。

2017-10-27 17:00:19 578

原创 两篇Qt多线程使用心得,写的不错

Qt使用多线程的一些心得——1.继承QThread的多线程使用方法Qt使用多线程的一些心得——2.继承QObject的多线程使用方法

2017-10-26 14:57:59 3974

原创 5分钟理解udev

5分钟理解udevUdev到底是个什么鬼?简单讲:udev负责在用户空间,根据用户设置的规则,在监测到设备被插入后,在/dev/下自动创建并命名设备文件节点。 经常会遇到这种情况,在/sys/目录下的event0、event1、event2等文件跟/dev/input/event的设备文件对不上,不理解他们到底是如何对应的。没错,是udev在负责这个工作。 2.4版本内核使

2017-10-23 17:15:49 11623

转载 git全方位教程-由具体到抽象-摘自架构师小秘圈和runoob.com

胸怀大志的你,立志要写小黄文于是你在本机奋笔疾书了三个月,然后电脑硬盘被某白色液体弄坏了...卒于是你想:哎,要是我能把小黄文存到远程服务器上就好了,这样就算我本地挂了,我再从远程拷一份,不就666了?说干就干,从此你每次写小黄书时,都要在远程服务器里创建一个专门的文件夹,来存放这本小黄书的章节,以及相关资料这就叫做 create remote reposi

2017-10-19 15:14:04 728

转载 shell极简教程(二) -转载自架构师小秘圈

shell极简教程(二) 2017-10-16架构师小秘圈 架构师小秘圈架构师小秘圈 微信号 seexmq 功能介绍 架构师小秘圈,聚集10万架构师的小圈子!不定期分享技术干货,行业秘闻,汇集各类奇妙好玩的话题和流行动向!禁止截图,阅后即焚! 一,题记不懂shell的程序员不是好程序员,学习shell是为了自动化,使用自动化可以非常有

2017-10-17 13:13:49 842

转载 shell脚本极简教程-转载自架构师小密圈

shell脚本极简教程 2017-10-10架构师小秘圈 架构师小秘圈架构师小秘圈 微信号 seexmq 功能介绍 架构师小秘圈,聚集10万架构师的小圈子!不定期分享技术干货,行业秘闻,汇集各类奇妙好玩的话题和流行动向!禁止截图,阅后即焚! 一,shell题记不懂shell的程序员不是好程序员,学习shell是为了自动化,使用自动化可

2017-10-17 10:13:13 2368

转载 宋牧春: Linux设备树文件结构与解析深度分析(2)

宋牧春: Linux设备树文件结构与解析深度分析(2) 原创2017-08-26 宋牧春 Linuxer Linuxer 微信号 LinuxDev 功能介绍 发布Linux内核、应用和驱动开发,Linux运维相关的资讯和学习资料。Linux爱好者的交流学习平台。 作者简

2017-08-29 10:26:49 1140

转载 宋牧春: Linux设备树文件结构与解析深度分析(1)

作者简介宋牧春,linux内核爱好者,喜欢阅读各种开源代码(uboot、linux、ucos、rt-thread等),对于优秀的代码框架及其痴迷。现就职于一家手机研发公司,任职Android BSP开发工程师。正文开始1. Device Tree简介设备树就是描述单板资源以及设备的一种文本文件。至于出现的原因,大家可以上网查询更多关于设备树的文章。本篇文章主要是更深层次

2017-08-25 15:28:23 4767 1

原创 linux设备驱动学习总结-keyPoints

1、linux设备模型把linux驱动分为三部分:总线、设备、驱动,设备与驱动相对独立,由总线负责设备和驱动的匹配,设备注册匹配驱动,驱动注册匹配设备。2、linux内核充分体现了面向对象的思想,为了实现高内聚,低耦合的软件模型,linux驱动尽量的把独立的功能模块分离出来,分离的手段是通过分层,比如设备和驱动分出一个总线层,做到了设备和驱动的分离;分出一个input层,做到了输入设备和文件操

2017-08-22 16:54:36 609

转载 u-boot-2016.09 make编译过程分析(二)

u-boot-2016.09 make编译过程分析(二)综述u-boot自v2014.10版本开始引入KBuild系统,同更改前的编译系统相比,由于Kbuild系统的原因,其Makefile变得更加复杂。u-boot的编译跟kernel编译一样,分两步执行:第一步:配置,执行make xxx_defconfig进行各项配置,生成.config文件第二部:编译,执行make进行编

2017-08-09 15:13:06 996

转载 u-boot-2016.09 make编译过程分析(一)

u-boot-2016.09 make编译过程分析(一)综述u-boot自v2014.10版本开始引入KBuild系统,Makefile的管理和组织跟以前版本的代码有了很大的不同,其Makefile更加复杂。整个Makefile中,嵌套了很多其它不同用途的Makefile,各种目标和依赖也很多,make分析很容易陷进去,让人摸不着头脑。u-boot的编译跟kernel编译一样,分两步执

2017-08-09 14:49:40 659

转载 u-boot-2016.09 make配置过程分析

概述本文基于u-boot树莓派3代配置过程进行分析,环境如下: 编译环境:Ubuntu 14.04 LTS 编译工具:arm-Linux-gnueabi-gcc代码版本:u-boot v2016.09 配置文件:rpi_3_32b_defconfigu-boot自v2014.10版本开始引入KBuild系统,Makefile的管理和组织跟以前版本的代码有了很大的不同,其

2017-08-09 14:39:20 550

转载 深入理解uboot 2016 - 基础篇(S3C2410 与S5PV210处理器启动流程分析)

转载自kernel_yx     链接地址:http://blog.csdn.net/kernel_yx/article/details/53146103S3C2440和S5PV210是很多嵌入式爱好者入门的arm处理器,网上的资料也很多。今天我们就来聊聊S3C2440和S5PV210的启动流程,上一篇博客我介绍了uboot在norflah上的启动流程(重要!这是基础)。今天,我们

2017-08-09 11:17:16 718

转载 深入理解uboot 2016 - 基础篇(处理器启动流程分析)

本文转载自  kernel_yx     连接地址:http://blog.csdn.net/kernel_yx/article/details/53045424最近一段时间一直在做uboot移植相关的工作,需要将uboot-2016-7移植到单位设计的ARMv7的处理器上。正好元旦放假三天闲来无事,有段完整的时间来整理下最近的工作成果。之前在学习uboot时,在网上看了很多文章,很多

2017-08-09 11:03:40 1556

PPT模板-科技风.zip

通过各种渠道获得的科技风的PPT模板,共计12个,有需要的同学自行下载 通过各种渠道获得的科技风的PPT模板,共计12个,有需要的同学自行下载 通过各种渠道获得的科技风的PPT模板,共计12个,有需要的同学自行下载

2020-05-11

软件开发流程规范.doc

罗列软件开发过程中的各个步骤,以及存在的意义,各个步骤需要输出的文档,此为简化版本,通常用于敏捷开发,只输出核心文档

2020-03-27

各操作系统开源授权许可协议.docx

工作中要用andriod系统,领导问到他的开源风险,所以总结一下常见的开源授权许可协议,GPL,LGPL,APACHE,BSD

2020-03-27

Linux IIC驱动架构详细说明

本文档以linux3.14.52为例,结合源码详细说明IIC驱动架构,有需要的可参考,错误地方请指正。

2017-11-09

宋宝华全部直播课程资料AND课件

宋宝华全部直播课程资料AND课件,注意!不是视频!是课件和资料,看好在下载。 课件内容包括总线设备驱动模型、设备树、进程调度,如有侵权,请联系我,我会及时删除

2017-10-31

IEC101相关操作函数

有关101规约的详细配置代码,该源码用于RTU间的101规约通讯

2017-10-23

qml实现的中文拼音虚拟键盘

使用qml实现的中文拼音虚拟键盘,有需要的同学可以参考

2017-10-16

IEC62056-47绿皮书关键点中文翻译

自己翻译的IEC62056-47绿皮书关键点,又需要的同学可以参考,不准确地方望指正。自己翻译的IEC62056-47绿皮书关键点,又需要的同学可以参考,不准确地方望指正

2017-10-10

Qt3升级到Qt5参考文档

比较Qt3与Qt5的各个类的变化情况,有需要升级Qt程序的同学可以作为参考

2017-10-10

韦东山看懂硬件原理图笔记

看韦东山的视频,自己总结的笔记,适用初级嵌入式软件开发人员。看韦东山的视频,自己总结的笔记,适用初级嵌入式软件开发人员看韦东山的视频,自己总结的笔记,适用初级嵌入式软件开发人员

2017-10-10

imx6系列处理器移植Qt5.6过程详细说明

以imx6q和imx6sx为例,移植Qt5.6.0,详细的移植过程和配置过程说明。以imx6q和imx6sx为例,移植Qt5.6.0,详细的移植过程和配置过程说明以imx6q和imx6sx为例,移植Qt5.6.0,详细的移植过程和配置过程说明

2017-10-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除