自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Lizune

Follow your heart, the rest will follow.

  • 博客(72)
  • 资源 (3)
  • 收藏
  • 关注

原创 配置alias实现快速生成.gitignore文件

通过alias命令cs别名指令,简单实现cscope -Rbq和添加.gitignore文件,提升效率!

2023-02-19 16:45:49 495 1

原创 80211 TIM流量指示图 附C语言实现

wifi beacon帧中TIM字段的简单理解和C语言实现

2022-11-26 15:40:12 1113

原创 无线局域网WLAN的入门概念

总结了WLAN无线局域网的基本概念。

2022-05-09 08:20:30 1816

原创 WiFi Direct即P2P协议学习笔记

文章目录前言一、P2P的模型1.1 P2P的组成1.2 P2P的拓扑1.3 P2P并发模式1.4 功能和服务1.4.1 基本功能和服务1.4.2 P2P的特殊功能和服务1.4.3 P2P的两种地址二、P2P discovery阶段2.1 介绍2.2 P2P设备Discovery过程2.3前言在WiFi直连(WiFi Direct,也称为peer-to-peer,P2P)中,设备可以不通过AP(Access Point)进行连接。在P2P group中,称为GO(Group Owner)的设备具有像A

2022-04-24 23:26:32 14731 12

原创 csapp_ch3_程序的机器级表示

为什么计算机系统要进行数据对齐?数据对齐简化了处理器和内存系统之间的接口设计,并提高了内存系统的性能和效率。例如,假设一个cpu总是从内存中取8个字节,则地址必须为8的倍数。如果能够保证double类型数据的地址对齐为8的倍数,那么就可以只用一个内存操作来对数据进行读写。否则,可能需要执行两次内存访问,因为地址没有对齐为8的倍数,该对象可能被分放在两个8字节内存块中。数据对齐的原则:任何K字节的基本对象的地址必须时K的倍数。类型K Bytechar1short2in

2021-10-24 22:16:29 126

翻译 如何确保数据落到磁盘?

在完美的世界中,不会有操作系统死机、断电或磁盘故障,编码也不用考虑这些极端情况。不幸的是,这些情况时有发生。本文主要讲述数据从应用程序到磁盘的路径,重点关注数据缓冲的位置,然后提供了确保数据落到磁盘的方法,从而避免在极端情况下丢失数据。I/O缓冲了解整个系统架构,在编程时对保证数据的完整性至关重要。数据在落到磁盘之前会通过以下几层:顶部是正在运行的应用程序,其中包含需要保存到磁盘的数据。该数据最初是在应用程序本身中的一个或多个内存块或缓冲区中。这些缓冲区也可以交给一个库,它可以执行自己的缓存。无.

2021-09-21 20:55:49 1116

原创 常用Git指令总结

本文总结了git中最常用的命令。基本用法上面五条命令在工作目录、暂存目录和本地仓库之间修改文件。git add files把当前工作目录的修改放到暂存目录。git commit -m "xxx"将暂存目录生成快照并提交到本地仓库,提交的信息为xxx。git reset --soft HEAD^用来撤销最后一次commit的所有文件,回到暂存目录。git checkout -- files把文件从暂存目录撤回到工作目录,用来丢弃本地修改命令解释git diff有时需要查看两次提交之间的

2021-09-12 12:05:09 257

原创 git,Gerrit,Jenkens开发流程

在Android开发中,常用以上开发流程,用到的工具主要有git,Gerrit,Jenkins。git:一个版本管理工具。Gerrit :建立在Git版本控制系统之上,是一个通过web进行代码审查的工具。作为开发者和远程仓库之间的一层屏障,不允许直接将本地修改内容同步到远程仓库中。Jenkins:可以在每次提交代码后,人工审核代码前,通过Jenkins任务自动运行单元测试、构建自动化测试,如果Jenkins任务失败,会自动打回本次提交。一般Git、Gerrit和Jenkins集成后的使用流程:.

2021-09-08 08:25:46 348

原创 selinux权限之vendor_executes_system_violators属性

Time:20210829Question:在Android的kernel中,libxxx库中用system函数调用cmd命令,但是无法执行cmd。Root cause:查看log,用关键字“avc:”发现对应的selinux权限不足。验证方法:adb rootadb shell # 进入手机getenforce # 查看对应的权限设置enforcing表示拦截,permission表示允许setenforce 0 # 设置为permissionsetenforce 1 # 设置为enfo.

2021-08-29 11:13:08 1424

原创 ARTS006

ARTS是什么?Algorithm:每周至少做一个 leetcode 的算法题Review:阅读并点评至少一篇英文技术文章Tip:学习至少一个技术技巧Share:分享一篇有观点和思考的技术文章AlgorithmLC622 设计循环队列设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里,一旦一个队列满了,我们就不.

2021-08-01 22:11:36 49

原创 Git配置

1.配置github进入页面点击New SSH key,输入Title,然后按照以下步骤生成key,并将key复制到网页中ssh-keygen -t rsa -b 4096 -C "你的邮箱"回车三次cat ~/.ssh/id_rsa.pu,完整复制这些key,到网页中对应Title对应的key位置回到git bash,运行 ssh -T [email protected],看到以下提示表示成功2.配置gitgit config --global user.name 你的英文名

2021-08-01 11:37:24 222

原创 ARTS005

ARTS是什么?Algorithm:每周至少做一个 leetcode 的算法题Review:阅读并点评至少一篇英文技术文章Tip:学习至少一个技术技巧Share:分享一篇有观点和思考的技术文章Algorithm反转字符串中的单词III:解法1:采用字符串流class Solution {public: string reverseWords(string s) { string ret = ""; string tmp = ""; .

2021-05-17 10:17:04 46

原创 关于signals的一些问题

这里有一些关于signals的questions和answers。重要的不是获得这些问题的正确答案,而是你从中可以学习到某些东西。在Unix中可以使用哪个命令发送signals?kill,你可以使用kill不仅可以发送杀死进程的信号,可以发送任何信号。比如:$ kill -STOP 1234这表示发送SIGSTOP信号给PID为1234的程序。用来发送信号的系统调用也叫kill。一个进程可以向其他任何进程发送信号么?不可以!要发送信号,两个进程需要在同一用户身份运行下(或者root用户).

2021-05-17 10:14:28 225

原创 ARTS004

ARTS是什么?Algorithm:每周至少做一个 leetcode 的算法题Review:阅读并点评至少一篇英文技术文章Tip:学习至少一个技术技巧Share:分享一篇有观点和思考的技术文章AlgorithmLC 杨辉三角 II解法1:先构造整个杨辉三角,然后返回第k行。class Solution {public: vector<int> getRow(int rowIndex) { vector<vector<int>&gt.

2021-05-10 12:52:51 53

原创 KK给年轻人的建议

Kevin Kelly,网名KK,是著名的科技评论家,曾经担任《连线》(Wired)杂志的第一任主编。去年68岁生日的时候,他写了给年轻人的68条建议。今年69岁生日,他又续写了一篇给年轻人的99条建议。Learn how to learn from those you disagree with, or even offend you. See if you can find the truth in what they believe.学会向那些与你意见相左甚至冒犯你的人学习。看看你能否从他.

2021-05-10 12:15:47 1639 1

原创 ARTS003

ARTS是什么?Algorithm:每周至少做一个 leetcode 的算法题Review:阅读并点评至少一篇英文技术文章Tip:学习至少一个技术技巧Share:分享一篇有观点和思考的技术文章AlgorithmLC 长度最小的子数组暴力解O(N2):class Solution {public: int minSubArrayLen(int target, vector<int>& nums) { int len = nums.size().

2021-05-06 14:53:05 140

原创 关于Linux权限的问题

以下是对Linux权限的一系列问题,通过问题来看看自己是否掌握了Linux权限的相关概念。let’s go!文件权限用多少个位来表示?一共是12个bit。一共4组,每组用3个bit来表示。比如“4755”对应的二进制为100 111 101 101。每一部分表示的含义如下:100:表示suid权限、sgid权限和粘滞位sticky权限111:表示user权限,r/w/x101:表示group权限,r/w/x101:表示other权限,r/w/x以上是十二位权限表示方法。但我们常常用chmo

2021-04-30 11:03:54 344

原创 csapp_ch2_信息的表示和处理

本章重要的知识点:三种重要的数字编码表示无符号编码补码编码浮点数编码整数的表示虽然只能编码较小的范围,但却是精确的,而浮点数虽然可以编码较大的数值范围,但这种表示是近似的字节顺序,大端vs小端强制类型转换,底层的位值是不变的,只是改变了解释这些位的方式两个正数相加会得出一个负数,而比较表达式x<y和x-y<0会产生不同的结果,这是因为算术运算可能会溢出补码非的两种方法IEEE浮点数表示,int类型的12345与float类型12345.0的二进制表示之间的关联1

2021-04-28 17:14:50 130

原创 ARTS002

ARTS是什么?Algorithm:每周至少做一个 leetcode 的算法题Review:阅读并点评至少一篇英文技术文章Tip:学习至少一个技术技巧Share:分享一篇有观点和思考的技术文章AlgorithmLC 167. 两数之和 II - 输入有序数组该题主要采用双指针,不断缩小搜索空间,直到两数之和匹配target值。ReviewMake Bad Code Look Bad本文介绍了你接手遗留代码的时候,如果遇到设计得不理想的代码时,应该暴露出代码的问题(look bad),.

2021-04-23 18:15:11 63

原创 关于bash重定向的Question!

通过一些问题来学习bash中的重定向默认情况下,Unix程序有三个inputs/outputs,他们分别是?标准输入,stdin标准输出,stdout错误输出,stderr当你在终端运行程序时,stdout输出到哪里?stdin,stdout,stderr默认都输出到终端!怎样将一个程序的output重定向到一个文件?$ some_cmd > file.txt如何将一个程序的错误输出重定向到一个文件?$ some_cmd 2> file.txt如何将程序的输入(.

2021-04-22 10:48:47 79

原创 Linux命令行中如何使用tcpdump

一个功能强大、灵活的命令行工具可以帮助你解决网络故障。tcpdump是一个命令行程序,可让你捕获和分析通过系统的网络流量。 tcpdump是一个功能强大且用途广泛的工具,其中包括许多选项和过滤器,可以在多种情况下使用。 由于它是命令行工具,适合在没有GUI的远程服务器中运行,以收集可以分析的数据。在本文中,我们将介绍tcpdump的一些最常见功能。1. tcpdump的工作原理tcpdump运行在用户态,底层调用的是libpcap库的各种api来实现数据包的捕获。libpcap是一个捕获网络流.

2021-04-21 22:40:34 321

原创 csapp_ch1_计算机系统漫游

1 hello程序如何翻译为可执行文件?hello.c源程序:#include <stdio.h>int main(){ printf("hello, world\n"); return 0;}hello程序是从C语言程序开始,因为这种形式方便被人读懂。但要在系统上运行,必须要转换为机器能够识别的格式。在Linux系统中,从源文件到目标文件的转化是由GCC编译器完成的。Linux> gcc -o hello hello.cGCC编译器将hello.c源文件翻译为可执行

2021-04-14 14:36:34 128

原创 ARTS001

ARTS是什么?Algorithm:每周至少做一个 leetcode 的算法题Review:阅读并点评至少一篇英文技术文章Tip:学习至少一个技术技巧Share:分享一篇有观点和思考的技术文章AlgorithmLC 翻转字符串里的单词class Solution {public: string reverseWords(string s) { std::istringstream iss; iss.str (s); vector&.

2021-04-02 22:10:13 63

原创 ts命令为Linux中的任何输出添加或转换时间戳

在Linux管理员的职业生涯中常需要对输出添加时间戳。无论是记录shell脚本还是简单的指令(比如ping,traceroute等),时间戳都会派上用场。ts命令能够简单地完成时间戳的功能。本文将向你展示如何使用ts命令轻松地将时间戳添加到任何输出中。要使用ts命令需要安装moreutils包。apt install moreutils执行环境:Ubuntu 16.04.7 LTSts命令为输出添加时间戳ts是timestamp的缩写,会在每一行输出的开始添加时间戳。如果你单独在shell中输

2021-04-02 20:55:14 4271

原创 Linux安装CPAN,并安装“Time::Duration”和“Date::Parse” perl模块

你可以通过yum或者下载源码安装CPAN。用yumyum install perl-CPAN -y下载源码wget http://search.cpan.org/CPAN/authors/id/A/AN/ANDK/CPAN-2.16.tar.gz tar xfz CPAN-2.16.tar.gzcd CPAN-2.16/perl Makefile.PLmake && make testmake install通过运行下面的指令,验证cpan安装是否成功。c

2021-04-02 10:30:14 941

原创 我们应该识别表现和本质

关于兴趣和投入兴趣是最好的老师,也是你对这件事情是否愿意投入更多的时间和资源的前提条件。故,找到自己的兴趣点是十分关键的。关于兴趣的认识有几点值得注意:兴趣是需要保持的。兴趣也是可以培养出来的。而兴趣背后有一个本质的东西,其实是成就感,它是你坚持的最直接的反馈。兴趣是开始,而成就感让你不断投入时间和精力到兴趣中,从而形成正反馈。无论是在生活还是在工作中都应该找到让自己具有成就感的事情,把它培养成自己的兴趣。关于学习和工作学好一门技术和是否找到与之匹配的工作有关联,但不是强相关的。我们常常认

2021-04-01 11:16:46 120

原创 Qt学习指南

1. Qt背景1.1 Qt 是什么?Qt是跨平台的开发库,主要是开发图形用户界面(Graphical User Interface,GUI)应用程序,当然也可以开发非图形的命令行(Command User Interface,CUI)应用程序。Qt支持众多的操作系统平台,如通用操作系统 Windows、Linux、Unix,智能手机系统 Android、iOS、WinPhone, 嵌入式系统 QNX、VxWorks 等等,应用广泛。1.2 QML和C++编程的区别?C++:Qt4流行控件编程,一般

2021-03-25 16:53:27 680

原创 左耳听风之ARTS挑战

2021年开始,希望自己比2020年有所进步,并坚持做一些东西!最近订阅了极客时间的《左耳听风》专栏,这个专栏有一个小的挑战ARTS。ARTS是什么?Algorithm:每周至少做一个 leetcode 的算法题Review:阅读并点评至少一篇英文技术文章Tip:学习至少一个技术技巧Share:分享一篇有观点和思考的技术文章而在知乎上耗子叔说明了ARTS的初衷:Algorithm:主要是为了编程训练和学习。每周至少做一个 leetcode的算法题(先从Easy开始,然后再Medium.

2021-01-15 10:33:27 266

原创 工具资源_持续更新

分享一个批量下载微信公众号文章的小工具,挺实用的,可以收藏已备不时之需。博客:https://i.ijrou.com/p/story/WeChatDownload.html下载链接:https://priapus.lanzoux.com/i6Szeipeure——2020.12.25

2020-12-28 21:07:53 332

原创 手撕常见的排序算法C++

常见的排序算法:冒泡选择排序插入排序插入排序优化堆排序归并排序快速排序#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <string>#include <vector>#include <set>#include <map>#include <unordered_set>#include <unordered_map>#

2020-09-15 15:57:10 172

原创 05堆排序

目录1. 基本概念什么是堆?如何进行堆排序2. 代码实现3. 参考1. 基本概念什么是堆?是一棵完全二叉树所有父节点的值大于子节点的值堆调整的heapify操作当前已是一棵完全二叉树,第i个节点需要调整,以i为父节点,找到对应的子节点c1(左子节点),c2(右子节点),将c1和c2中最大值与父节点的值交换,依次递归下去。直到i的值大于等于n(n为整个堆的节点数)堆因为是完全二叉树,所有节点的值可以用数组来保存,假设节点个数为n,用数组int arr[n]保存,从上到下,从左到右,依次

2020-09-14 20:28:23 94

原创 对map进行排序_求解字符串出现次数多的前k个

文章目录1.对map按照val排序2.笔试题1.对map按照val排序map默认是按照key值进行升序排列的。如果想让map按照val进行排序,直接用sort是办不到的,可以采用将map中的元素(假设key是string类型,val是int类型)装到vector<pair<string, int>>中,然后自己写cmp函数,进行sort排序。bool cmp1(pair<string,int> a, pair<string, int> b){ if .

2020-09-07 09:05:48 367

原创 GDB跟踪core

如果程序崩了,怎么进行错误的定位?主要有两种方式:查看日志定位,程序出错在哪里;程序自身产生的coredump文件一般可以用来分析程序运行到哪里出错了。1.核心转储核心文件(core file),也称磁芯倾印(core dump),是操作系统在进程收到某些信号而终止运行时,将此时进程地址空间的内容以及有关进程状态的其他信息写出的一个磁盘文件。这种信息往往用于调试。(来自wiki)2.设置coredump文件的生成我采用的Linux 16.04,打开终端:查看core文件的大小,输入.

2020-07-26 22:26:21 301

原创 踩坑1_文件和文件夹命名规范

在各种编译写代码或者git版本控制的文件夹或者文件命名时,一定记得不要含中文和空格!!!养成好的习惯,不然会有神奇的bug出现。

2020-07-17 00:05:05 468

原创 Visual Studio 2017 常见配置总结

俗话说磨刀不误砍柴工。编程先把 IDE 配置好了,用起来得心应手,能较大提高效率!C++常用的Visual Studio配置如下:Visual Studio 常用快捷键、字体、主题设置Visual Studio添加C++代码片段Visual Studio安装AStyle插件格式化代码...

2020-07-05 00:26:11 626

原创 Visual Studio安装AStyle插件格式化代码

Artistic Style(简称AStyle)是一个开源代码格式化工具,可以在Visual Studio中下载配置。通过Visual Studio下载AStyle先找到菜单栏中:工具/扩展和更新联机->输入astyle下载好了之后,重新启动Visual Studio。配置AStyle插件的快捷键然后点击工具/选项然后按照下图填写:--style=ansi -f -U -p -N -D设置格式化的快捷键,也是在工具/选项/环境里效果演示...

2020-07-05 00:24:16 4257 3

原创 设计模式--单例模式

单例模式(Singleton ):保证一个类仅有一个实例,并提供一个访问它的全局访问点。实现方法:通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。解决办法就是,让类自身负责保存它的唯一实例。这个类保证没有其他实例可以创建,并提供一个访问该实例的方法。(来自《大话设计模式》)单例的两种实现:懒汉模式:第一次引用时才会被实例化。饿汉模式:自己被加载时就将自己实例化。多线程时的单例-懒汉模式为了保证多线程的安全,要采用双重锁定。在VS 2013 IDE中std:

2020-06-23 16:43:40 137 1

原创 编程技巧

在计算机内表示小数(比如float和double型小数)都有误差,不能直接用 == 判断两个小数是否相等。判断两个小数是否相等,只能判断他们之间的差值是不是在一个很小的范围,比如[-0.0000001, 0.0000001]之间,这样就可以认为他们相等。bool is_equal(double x1, double x2){ if((x1-x2>-0.0000001) && (x1-x2<0.0000001)){ return true; }else{ return

2020-06-15 19:14:08 562

原创 手撕代码--将一个数组中连续的数表示成区间的形式

面试题:给定一个数组,数组中没有重复的元素,依次递增。将其表示为区间形式。输入:[1,2,3,5,7,8,9,40,50,60]输出:[1,2,3][5,5][7,8,9][40,40][50,50][60,60]思路:设置一个标志数组is_visited,保存元素是否被访问过。双重for循环遍历所有的连续的数,将其保存到二维数组res中,最后打印出来。代码:IDE:vs2013#define _CRT_SECURE_NO_WARNINGS#include <iostre

2020-06-06 20:16:26 780

原创 Visual Studio添加C++代码片段

在Visual Studio中写C/C++代码,常常会写一些常见的头文件和main函数,可以将这些代码设置为代码块,然后用快捷方式直接生成这段代码,能提高写代码的效率。在一些视频中,常看到添加完c或cpp文件后,输入#1或#2,按下Tab,直接上手写业务逻辑,不用再#include一个一个的头文件,效果如下:首先新建两个后缀为.snippet的文件,内容如下:c.snippet<?xml version="1.0" encoding="utf-8"?><CodeSnippets

2020-05-29 10:45:11 1839 3

Wi-Fi_Direct_Specification_v1.9.pdf

WiFi联盟2021年关于WiFi Direct最新标准,Wi-Fi_Direct_Specification_v1.9。 适用人群:WiFi driver开发人员等

2021-12-09

My Code Snippets.zip

在Visual Studio中写C/C++代码,常常会写一些常见的头文件和main函数,可以将这些代码设置为代码块,然后用快捷方式直接生成这段代码,能提高写代码的效率。在一些视频中,常看到添加完c或cpp文件后,输#1或#2,按下Tab,直接上手写业务逻辑,不用再#include一个一个的头文件。 这是常用的C/C++代码片段。

2020-05-29

Python核心编程(第3版)PDF高清晰完整中文版

Python核心编程(第3版)PDF高清晰完整中文版,电子档。

2019-04-22

空空如也

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

TA关注的人

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