使用clang-format格式化代码
Introclang 官方地址:https://clang.llvm.org/docs/ClangFormat.html
Clang-Format可用于格式化(排版)多种不同语言的代码,其自带的排版格式主要有:LLVM, Google, Chromium, Mozilla, WebKit。
可以使用以下命令导出上述5种自带的排版格式,并且可以对其中某一个导出的文件进行修改,实现自定义格式化:
1clang-format -style=格式名 -dump-config > 文件名
其中,格式名的取值可以为llvm, google, chromium, mozilla, webkit中的任一种;
若-style=google ,则表示应用Google的格式化风格
文件名可以取任何名字,一般取.clang-format或_clang-format,因为自定义的排版格式文件只有取这两种名字之一
InstallLLVM 包含 clang-format
参考安装LLVM的方法
CLI Usage1234567// 以LLVM代码风格格式化main.cpp, 结果输出到stdout ...
二分查找
二分查找判断条件问题基本的二分查找框架
123456789101112131415int binarySearch(int nums[], int target) { int left = 0, right = ...; while(...) { int mid = (right + left) / 2; if (nums[mid] == target) { ... } else if (nums[mid] < target) { left = ... } else if (nums[mid] > target) { right = ... } } return ...;}
有几点需要注意:
right取值
while循环结束条件
缩小搜索区间
寻找一个数闭区间内搜索123456789101112131415in ...
翻墙笔记
目前我了解到的代理技术
shadowsocks
shadowsocksr
Vmess
Vless
Trojan
Trojan go
Naive
WireGuard
SS and SSR俗称小飞机
Vmess支持的传输协议包含
TCP
KCP
Websocks
目前主流的伪装手段是Ws+Tls+CDN
将数据包伪装成正常的https数据包,检测到的
PAC文件规则
Intro代理自动配置(PAC)文件是一个 JavaScript 脚本,其核心是一个 JavaScript 函数,用来决定网页浏览请求(HTTP、HTTPS,和 FTP)应当直连目标地址,还是被转发给一个网页代理服务器并通过代理连接。
函数PAC文件中必须包含一个函数
123function FindProxyForURL(url, host){ }
参数url是用户输入的url,参数host是url中的主机名。
一个最简单的PAC文件内容如下:
123function FindProxyForURL(url, host) { return "DIRECT"; }
这个PAC文件实际上什么也没做,对任何URL,都将”DIRECT”(直接连网)。
参数url要访问的 URL。URL 中类似 https:// 这样的的路径和查询组件已被去除。在 Chrome 浏览器(版本 52 至 73)中,你可以通过设置 PacHttpsUrlStrippingEnabled 为 false 来禁止这种行为,或者以 --unsafe-pa ...
launchctl-MAC启动进程控制
intro
launchctl是一个统一的服务管理框架,可以启动、停止和管理守护进程、应用程序、进程和脚本等。 launchctl是通过配置文件来指定执行周期和任务的。
launchctl 将根据plist文件的信息来启动任务。
Plist 脚本目录地址:
~/Library/LaunchAgents 由用户自己定义的任务项
/Library/LaunchAgents 由管理员为用户定义的任务项
/Library/LaunchDaemons 由管理员定义的守护进程任务项
/System/Library/LaunchAgents 由Mac OS X为用户定义的任务项
/System/Library/LaunchDaemons 由Mac OS X定义的守护进程任务项
区别/System/Library和/Library和~/Library目录的区别
/System/ ...
UART串口通讯原理
UART串口通讯原理
通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART。它将要传输的资料在串行通信与并行通信之间加以转换。作为把并行输入信号转成串行输出信号的芯片,UART通常被集成于其他通讯接口的连结上。
特点
只需要定义两个针脚
异步通讯
如何工作
UART传输数据依靠的是UART总线,数据总线用于通过CPU,存储器或微控制器等其他设备将数据发送到UART。数据以并行形式从数据总线传输到发送UART。在发送UART从数据总线获得并行数据之后,它将添加起始位,奇偶校验位和停止位,从而创建数据包。接下来,数据包在Tx引脚上逐位串行输出。UART接收端则在其Rx引脚上逐位读取数据包。然后,接收UART将数据转换回并行形式,并删除起始位,奇偶校验位和停止位。最后,接收UART将数据包并行传输到接收端的数据总线。
并行转换为串行
添加起始位 奇偶效验位 停止位,打包
Tx引脚逐位输出
Rx接收端读取数据包
解包
MicroPython-UART文档参考:https://docs.micropyt ...
11月10日刷题总结
21. Merge Two Sorted Lists合并两个有序链表
解题思路1用双指针并建立新链表,分别比较依次放入。关联二路归并
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2){ //定义两个指针指向两个链表 struct ListNode *p=(struct ListNode *)malloc(sizeof(struct ListNode)); struct ListNode *head=p,*p1=list1,*p2=list2; //输入检 ...
linux目录结构
使用tree显示目录结构1tree -L N #显示N层结构
根目录主要结构/binbin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。
/boot这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。
/devdev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。
/etcetc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。
/home用户的主目录
/liblib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。
/lost+fond这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
/medialinux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Li ...
安装编译vim
获取源码1git clone https://github.com/vim/vim.git
Github地址:https://github.com/vim/vim.git
编译安装mac前提条件
Xcode
CommandLineTools
检查CommandLineTools1$ make --version
编译默认安装vim1234cd vim/srcmakemake testsudo make install
error
If you get an error “glibtool: command not found” search on stackoverflow formac-osx-where-can-i-download-glibtool.
With Homebrew, run:
brew install libtool
To build libtool from source:
1. Download the source code from https://www.gnu.org/software/libtool/.
2. Run these com ...
sshd公钥认证配置
权限问题.ssh和authroized_keys权限
12chmod 700 .sshchmod 600 .ssh/authorized_keys
ssh配置文件12345678# 使用公钥认证PubkeyAuthentication yes # 认证秘钥文件AuthorizedKeysFile .ssh/authorized_keys# 密码认证关闭PasswordAuthentication no# 关闭Root登录PermitRootLogin no
保存配置重启sshd服务
1systemctl restart sshd.service
