自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(123)
  • 收藏
  • 关注

原创 docker配置文件

文件是 Docker 配置文件,用于配置 Docker 守护进程的行为和参数。文件允许用户自定义 Docker 守护进程的行为和配置,以适应特定的需求和环境。可以配置 Docker 守护进程的安全相关设置,如是否启用实验性功能、默认的容器运行时等。可以配置 Docker 守护进程的网络行为,如默认的网络桥接方式、DNS 解析器等。可以配置 Docker 守护进程的日志行为,包括日志的输出位置、格式、级别等。可以配置 Docker 守护进程的资源限制,如 CPU 和内存的限制。

2023-08-10 11:02:50 3312

原创 docker相关命令总结(停止、重启、重加载配置文件)

使用该命令可以确保 Docker 以 Systemd 的方式正确启动,同时还可以查看与 Docker 相关的日志。:这是一种较早的 SysVinit 启动方式的命令,适用于早期版本的 Linux 发行版。这个命令的作用是启动一个容器,将当前目录挂载到容器中,并在容器中启动一个 Bash 终端,以便你可以在容器内执行命令和操作文件。这个命令是在 Docker 中运行一个容器,并与容器交互,允许你在容器中执行命令。是一个 Docker 镜像的名称和版本号,你需要将其替换为你实际的镜像名称和版本号。

2023-08-10 10:55:42 4430 1

原创 驱动程序接口和HAL层区别和联系

驱动程序接口(Device Driver Interface)和硬件抽象层(Hardware Abstraction Layer,HAL)是在软件系统中用于处理硬件的两个不同层次的概念。位于驱动程序接口和底层硬件之间的一个抽象层,提供统一的硬件访问接口和资源管理,使软件系统可以与不同硬件平台进行兼容。两者密切相关,驱动程序接口可以利用硬件抽象层提供的接口来访问底层硬件。总结起来,驱动程序接口是面向具体硬件设备和底层驱动程序的接口,用于直接访问和控制硬件;

2023-06-06 15:47:23 2372 1

原创 insmod rmmod modprobe用法和区别

一般情况下,建议使用modprobe命令来加载和卸载内核模块,因为它可以自动解决模块之间的依赖关系,提供更方便的功能。命令来加载内核模块,因为它可以自动解决模块之间的依赖关系,提供更方便的功能。modprobe是一个更高级的命令,它能自动处理模块的依赖关系,可以根据模块名称自动加载相关的模块。说明:rmmod命令用于卸载不再需要的内核模块,它会从内核中移除相应的模块并释放相关资源。insmod和rmmod是较底层的命令,需要手动指定要加载或卸载的模块文件名。用法:rmmod <module_name>

2023-06-06 15:08:55 1696

原创 字符设备和块设备详解及区别

文件系统中的块设备:在操作系统中,块设备通常作为硬盘或其他存储设备的一部分存在。文件系统中的字符设备:在Linux系统中,字符设备可以在文件系统中以特殊文件的形式存在。缓冲区:块设备通常具有内部缓冲区,数据会先缓存在内存中,然后批量传输到设备或从设备中读取。数据传输单位:字符设备以字符为单位进行数据传输,而块设备以块为单位进行数据传输。字符设备处理的是字节流,而块设备处理的是固定大小的块数据。字符设备驱动程序负责提供访问设备的接口和功能,并处理设备的读写操作。字符设备适用于对数据进行逐个字符处理的场景。

2023-06-02 15:57:29 2735

转载 UNIX传奇

来自皓哥的COOLSHELL。

2023-05-19 15:29:09 112

原创 进程和线程通信方式和实现原理

很熟悉的味道有没有,这不就是操作系统对线程的调度嘛,线程也可以被暂停,操作系统保存线程运行状态然后去调度其它线程,此后该线程再次被分配CPU时还可以继续运行,就像没有被暂停过一样。协程,英文Coroutines,是一种基于线程之上,但又比线程更加轻量级的存在,这种由程序员自己写程序来管理的轻量级线程叫做『用户空间线程』,具有对内核来说不可见的特性。基于以上的缺点,操作系统引入了比进程粒度更小的线程,作为并发执行的基本单位,从而减少程序在并发执行时所付出的时间和空间开销,提高并发性能。

2023-05-18 18:00:02 753

原创 操作系统中互斥锁、读写锁、自旋锁等详解

加锁操作通过原子的测试和设置操作来获取互斥变量的值,如果互斥变量的值为未锁定状态,则将其设置为锁定状态,表示获取锁成功。锁的状态用于标识锁的持有者,计数器用于记录线程获取锁的次数。如果锁已经被当前线程持有,线程也可以成功获取锁,并将锁的状态计数器加1,表示该线程多次获取锁的次数。如果锁的状态计数器等于1,表示该线程是最后一个持有锁的线程,需要将锁的状态清空,并唤醒等待队列中的某个线程。无论是哪种具体的实现方式,读写锁的目标是提高读操作的并发性,允许多个线程同时进行读操作,并保证在写操作时的独占访问。

2023-05-18 10:53:49 2590

原创 Linux inf格式文件

原文链接:UEFI与inf文件

2023-03-20 17:35:50 203

原创 使用dtc将dtb反编译成dts

dts和dtb

2023-01-09 12:27:04 1581

原创 scp相关命令

scp相关命令

2022-12-18 16:10:57 194

原创 Python和pip

Python和pip

2022-12-18 16:08:34 783

原创 git常用命令

git常用命令

2022-12-18 16:06:24 1202

原创 Android中AP和BP概念

Android中AP和BP概念

2022-12-18 15:55:15 2505

原创 Makefile、.mk、.bp、Blueprint、Soong、kati工具链的关系

Makefile、.mk、.bp、Blueprint、Soong、kati工具链的关系

2022-12-18 15:52:26 663

原创 Android 各镜像文件img详解

Android 各镜像文件img详解

2022-12-18 15:48:56 6497 3

原创 istream_iterator 和 ostream_iterator

C++ primer

2022-11-10 09:51:21 281

转载 make编译过程-Android10.0编译系统(三)

摘要:本节主要来进行Android10.0 编译系统的make过程

2022-06-30 16:11:12 1483

转载 编译环境初始化-Android10.0编译系统(二)

本节主要来进行Android10.0 编译系统的环境初始化

2022-05-12 20:17:20 631

转载 编译系统入门篇-Android10.0编译系统(一)

摘要:本节主要来进行Android10.0 编译系统入门讲解 1 概述   在 Android 7.0 之前,Android 编译系统使用 GNU Make 描述和shell来构建编译规则,模块定义都使用Android.mk进行定义,Android.mk的本质就是Makefile,但是随着Android的工程越来越大,模块越来越多,Makefile组织的项目编译时间越来越长。这样下去Google工程师...

2022-05-12 15:59:26 1239

转载 merge冲突源码分析

merge冲突源码分析recursive three-way merge和ancestorgit的源码先用merge作关键字搜索,看看涉及的相关代码。找了一段时间,找到了git merge的时候,比较待合并文件的函数入口:ll_merge。另外还有一份文档,它也指出ll_merge正是合并实现的入口。从函数签名可以看到,mmfile_t应该就代表了待合并的文件。有趣的是,这里待合并的文件并不是两份,而是三份。enum ll_merge_result ll_merge(mmbuffer_t *re

2022-04-13 10:22:11 337

原创 Git源码分析

Git源码分析

2022-04-13 10:21:17 3173

原创 Android编译过程分析(一)

Android编译过程分析

2022-04-11 11:26:28 4639

原创 Markdown格式详解

Markdown格式详解

2022-01-03 21:40:28 1371

转载 Android源码文件夹结构

Android 2.2源码Android 2.2源码bionic 文件夹bootable 文件夹build文件夹dalvik文件夹 dalvik虚拟机development 文件夹 (开发人员须要的一些例程及工具)external 文件夹frameworks 文件夹 (核心框架——java及C++语言)prebuilt 文件夹 (x86和arm架构下预编译的一些资源)system 文件夹 (底层文件系统库、应用及组件——C语言)packages 文件夹vendor 文件夹 (

2021-12-31 16:29:47 1031

原创 Android 各镜像文件img详解

Android编译后生成文件,在out/target/product/xxx下:cache.img、cust.img、metadata.img、misc.img(本地无)、recovery.img、super.img、userdata.img、vbmeta.img、vbmeta_system.imgabl.elf、boot.img、dtbo.img、dtb.img、ramdisk.img、vendor.img(产出的都是AP的img)Android 10(Q版本)出现了动态分区(https://sou

2021-10-27 16:31:00 18284

转载 C++作用域 (一)

C++作用域 (一)1概述2作用域的分类2.1概述2.2名字空间作用域2.2.1名字空间的意义2.2.2名字空间的定义2.2.3名字空间成员的定义2.2.4名字空间成员的使用2.2.6 标准名字空间std2.2.5名字空间的嵌套2.2.6未命名名字空间1概述在所有的计算机程序中,一个基本的目标是操作一些数据,然后获得一些结果。为了操作这些数据,需要为这些数据分配一段内存,我们可以将这段内存称为变量。为了方便操作,以及程序可读性方面的考虑,需要使用一个有意义的名称来引用这段内存,这个名称就是变量名。将名

2021-09-26 22:19:22 3855

原创 Android开机启动流程

Android开机启动流程一、APPS PBL(Application primary boot loader:主引导加载程序)二、XBL(Extensible boot loader:可扩展引导加载程序)SEC (安全验证)DXE (驱动执行环境)BDS (启动设备选择)RT(Run Time)三、ABL(Applications Boot Loader:应用程序引导加载程序)四、Kernel五、init六、Zygote and VM七、System Servers八、启动App(桌面)Android开

2021-09-02 15:47:10 4767 1

原创 git常用命令

一、查看和创建分支git log //查看提交历史git status //查看分支状态git checkout xxxx //切换分支git checkout -b xxx //创建并切换分支git checkout -b 本地分支名 origin/远程分支名 //创建并切换分支,并将该分支设置为跟踪远程分支git branch xxxx / /创建分支git branch //查看本地分支git branch -r .

2021-09-02 15:22:14 138

原创 linux下的Vim配置

vim一键配置https://github.com/ma6174/vim使用vim 使用tip编写python程序自动插入头信息:#!/usr/bin/env python#coding=utf-8输入.或按TAB键会触发代码补全功能:w保存代码之后会自动检查代码错误与规范按F6可以按pep8格式对代码格式优化按F5可以一键执行代码多窗口操作使用:sp + 文件名可以水平分割窗口使用:vs + 文件名可以垂直分割窗口使用Ctrl + w可以快速在窗口间切换编写markdow

2021-07-16 15:00:42 135

原创 ARM平台移植libffi zlib libiconv gettext glib gstreamer等库

起初想在Ubuntu16.04中的QT5.9实现音视频播放,代码编译很简单,但实现音视频解码播放却很麻烦,为了实现QtMultimedia类相关的音视频播放,需要移植gstreamer库,实现编解码功能。Ubuntu16.04当中直接下载相应的gstreamer安装包即可。以下主要介绍ARM平台实现gstreamer1.0的移植。自己新建空文件夹mkdir gstream1.0mkdir zlib-glib-ffi-xml安装gstreamer1.0需要依赖的库有:下载路径:https:/

2021-04-15 16:26:32 618

原创 QT使用QtMultimedia进行音视频播放出错

在Ubuntu16.04中,想使用QT5.9中自带的QtMultimedia类,进行音视频播放,视频能打开但是不能播放,错误信息如下:Qt:No decoder available for type 'video/x-h264 …;Your GStreamer installation is missing a plug-in.因为QtMultimedia使用的系统默认使用gstream音视频编/解码器,且QT5(不知哪个版本之后剥离出来)的安装包已将音视频解码器全部剥离出来了,所以需要自己手动安装。

2021-04-14 21:23:54 2939 6

原创 2021秋招总结(内含笔试面试攻略)

每年都被称为就业最难的一年!!!因为突如其来的疫情直到2020年6月才返校!!!——2021年6月毕业秋招总结(内含笔试面试攻略)简述项目求职方向笔试C/C++数据结构与算法题计算机网络操作系统Linux面试简历海投感悟简述本人双非本科,211硕士,研究生期间项目主要是ARM、Linux嵌入式软件开发方向,C语言为主,C++为辅;专利和软著少量,无论文,无实习(实验室要求严格暂不允许实习)秋招/春招收获:小米、中兴、传音、华勤、杭州联芸项目项目说重要,其实也不重要,重要是因为除了硬件条件(学

2021-04-04 11:58:59 3473 4

转载 关于多进程编程中fork()函数返回两次的探究

可以每个接触到多进程编程的人在遇到fork()函数的时候都会由一些疑惑,它怎么能返回两次?而且返回值不同。对于以前的认知大家都知道一个函数只能返回依次啊。呵呵,这就是fork的神奇所在,它为什么这么神奇?它是怎么实现的?下面我根据自己得理解简单的说一下,不过另外也欢迎大家的讨论。首先要明白的就是fork函数的作用,它是用来创建一个子进程,和父进程一样的子进程,就是父进程的一个副本。子进程将会有自己的地址空间,并且会获得父进程的数据段的副本以及堆栈的副本,所获得的副本都是精确拷贝。所谓副本就是一模一样的

2021-03-19 14:20:53 316

原创 C/C++的字符相关的库函数

C/C++的字符相关的库函数islower(char c) 是否为小写字母isupper(char c) 是否为大写字母isdigit(char c) 是否为数字isalpha(char c) 是否为字母isalnum(char c) 是否为字母或者数字toupper(char c) 字母小转大tolower(char c) 字母大转小...

2021-03-17 14:35:09 134

原创 算法面试常考知识点

1、动态规划介绍2、红黑树3、哈希函数设计?哈希冲突的处理方法?4、常见排序算法?时间复杂度?基本原理?手撕快排?5、最短路算法介绍?如何优化6、10亿行32位无符号整数,找出第7亿大的数是多少?只给300M内存7、扫雷写一个随机埋n个雷的算法(洗牌算法原理)8、链表反转?第m到第n个?每隔k个9、一个n位数,现在可以删除其中任意k位,使得剩下的数最小(前导零忽略)?10、有符号大数链表加法,靠近头结点为高位?11、二叉树中序便利后继结点?12、无向图的联通块?13、手撕并查集?1

2021-03-16 21:37:54 669 1

转载 C++11的智能指针(常见面试问题)

Q:讲讲智能指针吧。A:三种智能指针,shared_ptr,unique_ptr,weak_ptr。Q:shared_ptr的原理A:shared_ptr维护了一个指向control block的指针对象,来记录引用个数。Q:weak_ptr的原理A:weak_ptr用于避免shared_ptr相互指向产生的环形结构,造成的内存泄漏。weak_ptr count是弱引用个数;弱引用个数不影响shared count和对象本身,shared count为0时则直接销毁。Q:如何判断weak_ptr

2021-03-15 10:05:56 531

原创 手写函数strlen(), strcpy(), strstr(), strcat(), strcmp(), memcpy(), strchr(), strlwr(), strupr()

手写函数strlen strcpy strstr等函数strlen()函数strcpy()函数strstr()函数strcat()函数strcmp()函数memcpy()函数strchr()函数strlwr()和strupr()strlen()函数功能:计算给定字符串的(unsigned int型)长度,不包括’\0’在内实现:int strlen(const char *str) { assert(str != NULL); int len = 0; while( (*str++) !=

2021-03-12 09:26:28 607 1

转载 Linux-lrzsz命令及原理

Linux lrzsz命令的使用和背后原理探究当我们利用Xshell对Linux服务器进行操作时,常常苦恼本地和服务器之间互相传文件的问题,即使有如Winscp这样的工具,但是当在服务器上使用虚拟机的时候,配置FTP就显得比较麻烦了,因此有Lrzsz这样的工具能够帮助我们上传下载一些体量不是很大的文件。安装LRZSZsudo apt-get install lrzsz如果不是Ubuntu系统,可以sudo yum install lrzsz还可以通过手动安装的方式,先下载.tar.gz的压缩

2021-01-20 16:04:50 2227

转载 Qt css样式大全(整理版)

Qt css样式大全(整理版)一 CSS文字属性:二、CSS边框空白三、CSS符号属性:四、CSS背景样式:五、CSS连接属性:六、CSS框线一览表:七、CSS表单运用:八、CSS边界样式:背景样式框架样式(Box Style)分类列表字体属性:(font)大小 {font-size: x-large;}(特大) xx-small;(极小) 一般中文用不到,只要用数值就可以,单位:PX、PD样式 {font-style: oblique;}(偏斜体) italic;(斜体) normal;(正常)行

2021-01-08 22:29:04 829

空空如也

空空如也

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

TA关注的人

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