11 2021 档案

摘要:为了方便处理一些有用的信息,预处理器定义了一些预处理标识符,也就是预定义宏。预定义宏的名称都是以“__”(两条下划线)开头和结尾的,如果宏名是由两个单词组成,那么中间以“_”(一条下划线)进行连接。并且,宏名称一般都由大写字符组成。在日常项目编程中,预定义宏尤其对多目标平台代码的编写通常具有重大意义 阅读全文
posted @ 2021-11-29 17:30 Zupernova 阅读(202) 评论(0) 推荐(0) 编辑
摘要:git pull origin master/git pull 只能更新当前所在分支 想要一次性更新仓库所有分支,可以 git pull --all 千万和 git pull -a 区分开 阅读全文
posted @ 2021-11-29 15:47 Zupernova 阅读(1330) 评论(0) 推荐(0) 编辑
摘要:#define do{...}while(0)这种奇怪形式的宏定义经常在实际工程中应用,它的意义如下: 1. 增加代码的适应性 下面的宏定义没有使用do{...}while(0) #define FOO(x) foo(x); bar(x); 这样宏定义,单独调用不会出现问题,例如: FOO(100) 阅读全文
posted @ 2021-11-29 11:19 Zupernova 阅读(173) 评论(0) 推荐(0) 编辑
摘要:在网址https://pilotmoon.com/scrollreverser/下载最新版本scroll reverser 该文件免安装,下载后先将文件手动拖动到系统application文件夹中再打开运行 授予两项系统权限 设置登录自启动 软件其他详细设置见下图: 修改成功后即可在您的mac上获得 阅读全文
posted @ 2021-11-29 10:28 Zupernova 阅读(586) 评论(0) 推荐(0) 编辑
摘要:基本选项 一般来讲,C/C++从源代码到可执行程序之间要经历四个步骤: 预处理:展开头文件/宏替换/去掉注释/条件编译 编译:检查语法,生成汇编 汇编:汇编代码转换机器码 链接:链接到一起生成可执行程序 -E:只进行预处理,不编译 执行指令 gcc -E test.c 命令行显示出预处理信息,但不生 阅读全文
posted @ 2021-11-19 17:32 Zupernova 阅读(266) 评论(0) 推荐(0) 编辑
摘要:一、概述 1、I2C总线只有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL。 SCL:上升沿将数据输入到每个EEPROM器件中;下降沿驱动EEPROM器件输出数据。(边沿触发) SDA:双向数据线,为OD门,与其它任意数量的OD与OC门成\线与\关系。 I2C总线通过上拉电阻接正电源。当总 阅读全文
posted @ 2021-11-19 15:47 Zupernova 阅读(1024) 评论(0) 推荐(0) 编辑
摘要:UART接口介绍 通用异步收发传输器,通常称作UART,是一种异步收发传输器,是电脑硬件的一部分。它将要传输的资料在串行通信与并行通信之间加以转换。作为把并行输入信号转成串行输出信号的芯片,UART通常被集成于其他通讯接口的连结上。 UART是一种通用串行数据总线,用于异步通信。该总线双向通信,可以 阅读全文
posted @ 2021-11-19 15:43 Zupernova 阅读(771) 评论(0) 推荐(0) 编辑
摘要:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 分析:回溯算法 这是一个可以用回朔法解决的典型题。首先,在矩阵中任选 阅读全文
posted @ 2021-11-18 20:30 Zupernova 阅读(101) 评论(0) 推荐(0) 编辑
摘要://模拟乘法进位操作 string add(string x, string y) { reverse(x.begin(), x.end()); reverse(y.begin(), y.end()); string ans; if (x.empty() && y.empty())return an 阅读全文
posted @ 2021-11-18 20:28 Zupernova 阅读(44) 评论(0) 推荐(0) 编辑
摘要:#include <iostream> #include <vector> #include <stack> #include <set> #include <string> #include <algorithm> using namespace std; int main(void) { int 阅读全文
posted @ 2021-11-18 20:27 Zupernova 阅读(13) 评论(0) 推荐(0) 编辑
摘要:#include <iostream> using namespace std; int find(int a[],int len); void main() { int a[]={1,2,3,5,7,8,16}; int len=sizeof(a)/sizeof(int); cout<<find( 阅读全文
posted @ 2021-11-18 20:26 Zupernova 阅读(28) 评论(0) 推荐(0) 编辑
摘要:class Solution { public: ListNode* reverseList(ListNode* head) { if(!head)return NULL; ListNode* pre=new ListNode(-1); ListNode* tmp; while(head){ tmp 阅读全文
posted @ 2021-11-18 20:25 Zupernova 阅读(40) 评论(0) 推荐(0) 编辑
摘要:经典解法一维 #include <iostream> using namespace std; bool sign = false; int num[9][9]; void Output() { for (int i = 0; i < 9; i++){ for (int j = 0; j < 8; 阅读全文
posted @ 2021-11-18 20:24 Zupernova 阅读(78) 评论(0) 推荐(0) 编辑
摘要:#include <iostream> #include <vector> #include <string> #include <algorithm> using namespace std; bool cmp(const string& p1,const string& p2) { return 阅读全文
posted @ 2021-11-18 20:23 Zupernova 阅读(14) 评论(0) 推荐(0) 编辑
摘要:#include<iostream> using namespace std; class Solution { public: string intToRoman(int num) { char* c[4][10]={ {"","I","II","III","IV","V","VI","VII", 阅读全文
posted @ 2021-11-18 20:23 Zupernova 阅读(40) 评论(0) 推荐(0) 编辑
摘要:bool fun(vector<int>& track, vector<int>& nums) { stack<int> t; int i = 0,j=0; for (int i = 0; i < nums.size();i++) { if (t.empty()||t.top() != track[ 阅读全文
posted @ 2021-11-18 20:22 Zupernova 阅读(68) 评论(0) 推荐(0) 编辑
摘要:#include <iostream> #include <vector> using namespace std; int main(void) { vector<int> m = { 5,6,7,8,9,10,11,12,14,15 }; vector<int> ans; int des = 2 阅读全文
posted @ 2021-11-18 20:21 Zupernova 阅读(16) 评论(0) 推荐(0) 编辑
摘要:#include <iostream> #include <string> #include <cmath> #include <vector> #include <map> #include <algorithm> using namespace std; int m, n; vector<vec 阅读全文
posted @ 2021-11-18 20:20 Zupernova 阅读(49) 评论(0) 推荐(0) 编辑
摘要:问题:在N行N列的棋盘上,一位骑士按象棋中“马走日”的走法从初始坐标位置(SX, SY)出发,要求遍历(巡游)棋盘中每一个位置一次。请输出其实巡游的位置顺序,或输出无解。 #include <iostream> using namespace std; // 棋盘边长、起始位置、总步数 const 阅读全文
posted @ 2021-11-18 20:19 Zupernova 阅读(55) 评论(0) 推荐(0) 编辑
摘要:#include <iostream> #include <stdio.h> #include <string.h> #include <conio.h> using namespace std; typedef struct student { int data; struct student * 阅读全文
posted @ 2021-11-18 20:16 Zupernova 阅读(125) 评论(0) 推荐(0) 编辑
摘要:#include <iostream> #include <vector> #include <stack> #include <set> #include <string> #include <algorithm> using namespace std; int main(void) { str 阅读全文
posted @ 2021-11-18 20:12 Zupernova 阅读(22) 评论(0) 推荐(0) 编辑
摘要://我的方法 #include <iostream> #include <vector> #include <stack> #include <set> #include <string> #include <algorithm> using namespace std; void fun(vect 阅读全文
posted @ 2021-11-18 20:11 Zupernova 阅读(43) 评论(0) 推荐(0) 编辑
摘要://全排列数->部分排列数->///(部分)组合数:好像不对/// //myprint->取全排列前n个->部分排列数基础上加上单调验证 #include <iostream> #include <vector> #include <stack> #include <set> #include <s 阅读全文
posted @ 2021-11-18 20:09 Zupernova 阅读(43) 评论(0) 推荐(0) 编辑
摘要:#include <iostream>//一个更加形象的代码,不仅求出最大长度,同时用二维数组存储每个阶段的最长子序列 #include <vector> #include <stack> #include <algorithm> using namespace std; void newpush( 阅读全文
posted @ 2021-11-18 20:08 Zupernova 阅读(23) 评论(0) 推荐(0) 编辑
摘要:第一题:求获胜者,如果票数相当,按照字典序排序 输入: Tom,Lily,Tom,Lucy,Lucy,Jack 输出: Lucy #include <iostream> #include <vector> #include <stack> #include <set> #include <strin 阅读全文
posted @ 2021-11-18 20:07 Zupernova 阅读(72) 评论(0) 推荐(0) 编辑
摘要:#include <iostream> #include <vector> #include <stack> #include <set> #include <string> #include <algorithm> using namespace std;//L为左括号数,R为右括号数,限制条件为 阅读全文
posted @ 2021-11-18 20:06 Zupernova 阅读(38) 评论(0) 推荐(0) 编辑
摘要:#include <iostream> #include <vector> using namespace std; vector<int> t; void traceback(int total, int n,int len) { if (n == 0||total == 0) { for (in 阅读全文
posted @ 2021-11-18 20:05 Zupernova 阅读(46) 评论(0) 推荐(0) 编辑
摘要:#include<iostream> #include<vector> using namespace std; bool is_not_under_attack(int row, int col, int n, vector<int> & rows, vector<int> & hills, ve 阅读全文
posted @ 2021-11-18 20:04 Zupernova 阅读(25) 评论(0) 推荐(0) 编辑
摘要:一定要弄懂GetMemory 堆栈 栈中分配局部变量空间,是系统自动分配空间。定义一个 char a;系统会自动在栈上为其开辟空间。由于栈上的空间是自动分配自动回收的,所以栈上的数据的生存周期只是在函数的运行过程中,运行后就释放掉,不可以再访问。 堆区分配程序员申请的内存空间,堆上的数据只要程序员不 阅读全文
posted @ 2021-11-18 20:00 Zupernova 阅读(29) 评论(0) 推荐(0) 编辑
摘要:一、内存基本构成 可编程内存在基本上分为这样的几大部分:静态存储区、堆区和栈区。他们的功能不同,对他们使用方式也就不同。 静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。它主要存放静态数据、全局数据和常量。 栈区:在执行函数时,函数内局部变量的存储单元都可以在栈上创 阅读全文
posted @ 2021-11-18 19:49 Zupernova 阅读(156) 评论(0) 推荐(0) 编辑
摘要:1.申请的内存所在位置 new操作符从自由存储区(free store)上为对象动态分配内存空间,而malloc函数从堆上动态分配内存。自由存储区是C++基于new操作符的一个抽象概念,凡是通过new操作符进行内存申请,该内存即为自由存储区。而堆是操作系统中的术语,是操作系统所维护的一块特殊内存,用 阅读全文
posted @ 2021-11-18 19:37 Zupernova 阅读(30) 评论(0) 推荐(0) 编辑
摘要:static修饰的函数叫做静态函数,静态函数有两种,根据其出现的地方来分类: 如果这个静态函数出现在类里,那么它是一个静态成员函数; 静态成员函数的作用在于:调用这个函数不会访问或者修改任何对象(非static)数据成员。 其实很好理解,类的静态成员(变量和方法)属于类本身,在类加载的时候就会分配内 阅读全文
posted @ 2021-11-18 19:22 Zupernova 阅读(213) 评论(0) 推荐(0) 编辑
摘要:#include两种声明区别 引用的头文件不同 #include < > 引用的是编译器的类库路径里面的头文件。 #include“ ”引用的是你程序目录的相对路径中的头文件。 用法不同 #include < > 用来包含标准头文件(例如stdio.h或stdlib.h). #include“ ”用 阅读全文
posted @ 2021-11-18 19:20 Zupernova 阅读(59) 评论(0) 推荐(0) 编辑
摘要:OSI:物理层,数据链路层,网络层,传输层,会话层,表示层和应用层 TCP/IP:数据链路层,网络层,传输层,应用层 TCP与UDP区别: 1、基于连接与无连接; 2、对系统资源的要求(TCP较多,UDP少); 3、UDP程序结构较简单; 4、流模式与数据报模式 ; 5、TCP保证数据正确性,UDP 阅读全文
posted @ 2021-11-18 19:10 Zupernova 阅读(34) 评论(0) 推荐(0) 编辑
摘要:树遍历方法大全 void fun(TreeNode* root) { if (!root)return; cout << root->val<<','; fun(root->left); fun(root->right); }//递归先序遍历,中序、后序遍历同理 void fun(TreeNode* 阅读全文
posted @ 2021-11-18 19:01 Zupernova 阅读(52) 评论(0) 推荐(0) 编辑
摘要:vim 中有三种工作模式,分别是命令模式,输入模式,末行模式 刚进入编辑器是处于命令模式,切换到输入模式可以输入:i,I,o,O,a,C a:在光标之后插入A:在光标所在行末插入i:在光标处插入I:在光标所在行首插入o:跳转到光标下一行插入行O:跳转到光标上一行插入行C:清除光标所在位置后的所有内容 阅读全文
posted @ 2021-11-18 18:56 Zupernova 阅读(40) 评论(0) 推荐(0) 编辑
摘要:链表初始化代码: Node* list_init(void){ Node *head = (Node *)malloc(sizeof(Node)); Node *p1 = (Node *)malloc(sizeof(Node)); Node *p2 = (Node *)malloc(sizeof(N 阅读全文
posted @ 2021-11-18 18:55 Zupernova 阅读(151) 评论(0) 推荐(0) 编辑
摘要:1、无名管道通信 无名管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。 2、有名管道通信 有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。 3、消息队列 阅读全文
posted @ 2021-11-18 18:50 Zupernova 阅读(291) 评论(0) 推荐(0) 编辑
摘要:1)接口区别 NOR FLASH地址线和数据线分开,来了地址和控制信号,数据就出来。NAND Flash地址线和数据线在一起,需要用程序来控制,才能出数据。通俗的说,就是光给地址不行,要先命令,再给地址,才能读到NAND的数据。而且都是在一个总线完成的。结论是:ARM无法从NAND直接启动。除非装载 阅读全文
posted @ 2021-11-18 17:45 Zupernova 阅读(358) 评论(0) 推荐(0) 编辑
摘要:介绍一下make? 为什么使用make 1、包含多个源文件的项目在编译时有长而复杂的命令行,可以通过makefile保存这些命令行来简化该工作2、make可以减少重新编译所需要的时间,因为make可以识别出哪些文件是新修改的3、make维护了当前项目中各文件的相关关系,从而可以在编译前检查是否可以找 阅读全文
posted @ 2021-11-18 17:40 Zupernova 阅读(374) 评论(0) 推荐(0) 编辑
摘要:什么是重定位?为什么需要重定位? 一、必须知道的几个概念。 1、链接地址和运行地址。 a.运行地址,顾名思义就是程序运行的时候的地址,也就是你用工具将代码下载到RAM的那个地址,也叫加载地址。 b.链接地址,由链接脚本指定的地址。为什么需要链接脚本指定地址呢?你想一下,在c语言编程中,当我们需要调用 阅读全文
posted @ 2021-11-18 17:37 Zupernova 阅读(127) 评论(0) 推荐(0) 编辑
摘要:一.C语言入门,初学,编程基础系列 1.《C语言程序设计:现代方法》(第2版)推荐理由:时至今日, C语言仍然是计算机领域的通用语言之一,但今天的 C语言已经和最初的时候大不相同了。本书最主要的一个目的就是通过一种“现代方法”来介绍 C语言,书中强调标准 C,强调软件工程,不再强调“手工优化”。这一 阅读全文
posted @ 2021-11-18 17:31 Zupernova 阅读(72) 评论(0) 推荐(0) 编辑
摘要:预处理器(Preprocessor) 1.用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60UL * 60 * 24 * 365) 我在这想看到几件事情: 1). #define 语法的基本知识(例如:不能以分号 阅读全文
posted @ 2021-11-18 17:12 Zupernova 阅读(276) 评论(0) 推荐(0) 编辑
摘要:三大基本排序 void insert(vector<int>& a) { for (int i = 1; i < a.size();i++) { int t = i; while (t > 0 && a[t] < a[t - 1]) { swap(a[t], a[t - 1]); t--; } } 阅读全文
posted @ 2021-11-18 16:17 Zupernova 阅读(47) 评论(0) 推荐(0) 编辑
摘要:.DS_Store是Mac OS保存文件夹的自定义属性的隐藏文件,如文件的图标位置或背景色,相当于Windows的desktop.ini。 当git仓库中进行了多项文件修改时,传统的方法为了剔除大量的.DS_Store文件只能手动一项一项添加待加入的文件,很麻烦。 为了解决这一问题,有如下两种方案: 阅读全文
posted @ 2021-11-09 15:25 Zupernova 阅读(373) 评论(0) 推荐(0) 编辑
摘要:一般我们总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。 通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。 在这种情况下,我们可以创建一个名为.gitignore的文件,列出要忽略的文件的模式。 文件 .gitignore 的格式规范如下: • 所有 阅读全文
posted @ 2021-11-09 15:20 Zupernova 阅读(155) 评论(0) 推荐(0) 编辑