Naiquan.hu's Blog

I think, therefore, I am.

C语言pragma pack()用法详解

C语言pragma pack()用法详解

C语言pragma pack()用法详解 1. 什么是对齐?为什么要对齐? 计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数...

802.11n帧聚合技术

802.11n帧聚合技术

802.11n帧聚合技术 Author: naiquan.hu Date: 2019-02-23 [TOC] — 1. 802.11n MAC帧格式 为了提升整个网络的吞吐量,IEEE80211系列标准使用了复杂的MAC协议,也使用了相当复杂的MAC帧。80211n标准是对80211标准的改进,其MAC帧通用格式如下: 2. 帧聚合机制 为了减少开销,802.11n提出帧汇聚技...

使用Python实现自动化测试

使用Python实现自动化测试

使用Python实现自动化测试 Author: naiquan.hu Date: 2019-01-16 1 环境搭建 1.1 安装Python及开发工具 官网下载Python和pycharm。 1.2 pycharm使用 创建一个简单的Python工程 添加源代码 File –> Settings –> Project xxx –> Project stru...

GitLab安装以及与GitBook集成

GitLab安装以及与GitBook集成

1 GitLab安装与配置 官网:https://about.gitlab.com/installation/ 官网有针对各系统的安装教程。 1.1 安装依赖包 sudo apt-get install curl openssh-server ca-certificates postfix 执行完成后,出现邮件配置,选择Internet那一项(不带Smarthost的) 1.2 下载...

Git 回退提交方法

Git 回退提交方法

1. 场景重现 1.1. 本地新建feature01完成功能开发 $ git checkout master #从master分支创建新分支,如果当前在其他分支,先切换到master $ git pull #拉取最新版本 $ git checkout -b feature01 #从master创建分支,并切换到新分支 Switched to a new b...

递归遍历目录下的所有文件,并替换文件的内容

递归遍历目录下的所有文件,并替换文件的内容

递归遍历目录下的所有文件,并替换文件的内容 #!/bin/env python # -*- coding:utf-8 -*- import sys import os def replace(file_path, old_str, new_str): try: ...

KEIL 创建静态链接库+ 调用自己创建的静态链接库

KEIL 创建静态链接库+ 调用自己创建的静态链接库

1. 为什么要创建静态链接库? 当公司或者个人需要提供自己的编写的代码供他人调用时,而你或提供方并不想提供源代码(.c源代码),只想提供头文件.h(在头文件中申明函数)供他人调用,他人在调用时只需要知道调用的函数功能是什么,传递的参数是什么等,无需了解函数是怎样具体实现的。 此时就需要静态链接库(当然还有动态链接库,这里先讲解静态链接库的生成和使用)。 2. 如何在KEIL 中生成静态链...

阅读 Android 系统源码

阅读 Android 系统源码

由于工作需要大量修改framework代码, 在AOSP(Android Open Source Project)源码上花费了不少功夫, Application端和Services端都看和改了不少. 如果只是想看看一些常用类的实现, 在Android包管理器里把源码下载下来, 随便一个IDE配好Source Code的path看就行. 但如果想深入的了解Android系统, 那么可以看下我...

设计模式——C语言

设计模式——C语言

1.单例模式 typedef struct _DATA { void* pData; }DATA; void* get_data() { static DATA* pData = NULL; if(NULL != pData) return pData; pData = (DATA*)malloc(sizeof(DATA)); ...

连接器 -- Scatter File & Linker Script File

连接器 -- Scatter File & Linker Script File

ARM 映像文件是一个层次结构文件, 包含域(region), 输出段(output section)和输入段(input section) 映像文件组成 域1 //加载时对应的一块存储区域--rom中 { 输出段1 //运行时对应的一块存储区域 -- RAM或ROM中 { 输入段1 (编译出来各个.o) 输入段2 ...

ARM(Cortex-M4)启动过程

ARM(Cortex-M4)启动过程

ARM的启动过程通常包括以下部分: 外部硬件reset 根据BOOT MODE进入不同的启动入口 向量表定义 地址重映射及中断向量表的转移 堆栈初始化 设置系统时钟频率 中断寄存器的初始化 进入C应用程序 1. 外部硬件reset 按压reset button后,系统复位。 2. 根据BOOT MODE进入不同的启动入口 BOOT MODE是由PCB设...

解决Ubuntu下adb不能连接某些厂家的设备问题

解决Ubuntu下adb不能连接某些厂家的设备问题

1.查看vendor ID $ lsusb Bus 002 Device 030: ID 1f3a:1007 2.编辑如下文件(如果没有就创建一个) sudo vi /etc/udev/rules.d/51-android.rules SUBSYSTEM=="usb", ATTRS{idVendor}=="1f3a", ATTRS{idProduct}=="1007",MODE="06...

personal info

personal info

斯: ID:402646XX pwd:N…..1 第一个老板姓什么?——gouride 你第一个电话号码是什么?——1233211234567 第一个室友叫什么名字——abcd 你儿时绰号叫什么?——meiyou my iphone4s id: hxx@126.com pwd: N….1 q1: 你的第一个宠物名字? a1: Dog q2:...

跟我一起写Makefile:使用函数

跟我一起写Makefile:使用函数

跟我一起写Makefile:使用函数 在Makefile中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能。make所支持的函数也不算很多,不过已经足够我们的操作了。函数调用后,函数的返回值可以当做变量来使用。 1. 函数的调用语法 函数调用,很像变量的使用,也是以“$”来标识的,其語法如下: $(<function> <arguments>)...

Linux下利用Eclipse C/C++搭建嵌入式ARM开发环境

Linux下利用Eclipse C/C++搭建嵌入式ARM开发环境

1. 系统准备 1.1 OS 操心系统:ubuntu-16.04.2-desktop-amd64 或ubuntu-14.04.x-desktop-amd64 1.2 安装pip $ sudo apt install python-pip 把pip更新到最新: $ sudo pip install --upgrade pip 1.3 安装Python及多个版本的使用 此步骤为可选 安装2...

面向对象编程——C语言

面向对象编程——C语言

1. 抽象数据类型 集合中可以存放任意数据类型,提供一些方法来操作它。因此它里面存放的应该是抽象数据类型。 set.h #ifndef SET_H #define SET_H extern const void * Set; void * add (void * set, const void * element); void * find (const void * set, cons...

Git使用说明

Git使用说明

说明:使用人员请直接阅读第三节。 1. Git服务器端配置 说明:服务器端已配置好,使用人员无需关注本节。 1.1. 安装 openssh服务器 sudo apt-get install openssh-server openssh-client 1.2. 安装 git server sudo apt-get install git-core 1.3. 配置 git server...

Github和GitBook使用

使用Github和Gitbook管理知识库

1. GitHub 1.1. 创建账户 https://github.com/ 在上面注册账户: gitexample 1.2. 生成本地公钥/私钥对 在本地Ubuntu上,ssh-keygen命令创建公钥/私钥对: $ ssh-keygen 然后根据提示在用户主目录下的.ssh目录中创建默认的公钥/私钥对文件,其中~/.ssh/id_rsa是私钥文件,~/.ssh/id_rsa.pub...