我的mac工具集合
实用工具
IPADownloader (IPA下载工具)
文档
typora
hexo
开发调试
pyserial
arch基础配置安装流程
ArchArch wiki:https://wiki.archlinux.org/title/installation_guide
0x001制作启动盘
windows环境下直接用软碟通制作
linux或者mac使用dd
0x002设置主板启动模式arch 安装完成后不会自动配置bootloader,需要手动配置
我基本是使用UEFI+GPT的启动模式,所以请先确认主板的启动模式
在BIOS的Boot选项卡中找到启动模式,有些主板叫做CSM模式,根据不同的主板找到相应的设置方法。
如果是BIOS+MBR或别的启动模式,参考官方bootloader
arch wiki:https://wiki.archlinux.org/title/Arch_boot_process#Boot_loader
0x003进入live CD一定要在网络环境下进行
检查网络连接是否正常1ip link
安装主要流程包含以下几个步骤:
硬盘分区并格式化
挂载目录
安装内核
配置系统
设置引导
0x004安装系统查看启动模式1ls /sys/firmware/efi/efivars
如果显示目录且没 ...
数据结构大总结#writing
概述树和图知识体系过于庞大,本文只总结严蔚敏《数据结构》包含内容
数据结构的存储方式数据结构的基本存储方式只有两种:数组(顺序存储)和链表(链式存储)。
也可以理解为元存储结构,最小的存储结构只有数组和链表两种表示方法。
数据结构存储方式:顺序存储、链式存储、索引存储、散列存储
数据结构的基本操作其本质是遍历+访问,具体表现就是增删查改。
数据结构种类很多,但它们存在的目的都是在不同的应用场景,尽可能高效地增删查改。
算法与数据结构算法算法的基本要素
对数据对象的运算和操作:算术运算、逻辑运算、关系运算、数据传输
算法的控制结构
算法中各操作之间的执行顺序
描述算法的工具:传统流程图、N-S结构化流程图、自然描述语言、伪代码描述、程序
一个算法可以用顺序、选择(分支) 、循环(重复)三种基本结构组合而成
算法的复杂度
时间复杂度:执行算法所需要的计算工作量(基本运算次数),与所用计算工具无关,与采用的算法描述语言无关,也不取决于算法环境
空间复杂度:执行算法所需要的内存空间(计算机所需存储空间)
设计算法时需要考虑算法的的时间和空间复杂度,但两者相互独立,毫无关联
...
总结十大排序*
基础对比排序冒泡排序演示
算法步骤
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
特点时间复杂度O(n^2)
原地算法
代码实现12345678910void bubble_sort(int arr[], int len) { int i, j, temp; for (i = 0; i < len - 1; i++) for (j = 0; j < len - 1 - i; j++) if (arr[j] > arr[j + 1]) { temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; }& ...
人工智能和机器学习概述
人工智能应用人机对战
AlphaGo
宇宙探索
Google + NASA
人机对话
Alexa
Siri
Cortana
生活中比较常见
机器视觉
face++
自然语言处理
xiaomingbot
九歌
智能诊断、推荐系统
IBM watson
智能交通
Waymo
机器人和智能控制人工智能发展概述起源人工智能(Artificial Intelligence,简称AI)一词缘于1956年8月美国达特茅斯学院的夏季研讨会。而在1955年8月的时候,“人工智能”在一份关于召开国际人工智能会议的提案中被提出,这份提案由东道主约翰·麦卡锡(John McCarthy)、哈佛大学的马文·明斯基(Marvin Minsky)、IBM的纳撒尼尔·罗切斯特(Nathaniel Rochester)、信息论的创始人克劳德·香农(Claude Shannon)联合递交。一年之后,在达特茅斯召开的第一次人工智能大会,而这次会议被认为是开辟了人工智能研究领域的历史性事件,所以一般来说,它的起源要从1956年算起。
弱人工智能弱人工智能是指不能真正实现推理和解决问题的智能机器,这些机器表面看像 ...
2022传智杯算法竞赛题解
A-莲子的软件工程学题目背景在宇宙射线的轰击下,莲子电脑里的一些她自己预定义的函数被损坏了。
对于一名理科生来说,各种软件在学习和研究中是非常重要的。为了尽快恢复她电脑上的软件的正常使用,她需要尽快地重新编写这么一些函数。
题目描述具体而言,给定两个整数 $a,b$,保证 $b\neq 0$。莲子要实现这样一个函数 $\operatorname{fun}(a,b)$ 来将 $b$ 的符号转移到 $a$ 上。
具体而言,$\operatorname{fun}(a,b)=\operatorname{sgn}(b)\times |a|$。其中,$\operatorname{sgn}(b)=\begin{cases}1&b>0\-1&b<0\end{cases}$
换而言之:
如果 $b$ 是正数,那么 $\operatorname{fun}(a,b)=+|a|=|a|$;
如果 $b$ 是负数,那么 $\operatorname{fun}(a,b)=-|a|$。
如果使用一个三维坐标系描述 $\operator ...
什么是动态规划?
Intro动态规划算法(Dynamic Programming,简称 DP)
动态规划是一种常见的「算法设计技巧」
动态规划遵循一套固定的流程:
递归的暴力解法 -> 记录数据的递归解法 -> 非递归的动态规划解法。
是常用的一种空间换时间的算法。
我觉得本质是自下向上的递归。
引例斐波那契数列我们定义斐波那契数列为:
123456711235813
每一项为前两项之和,第一项和第二项为1.
我们可以根据以上定义,写一个输出第n项的递归程序
1234int fiber(int n){ if (n == 1 || n == 2) return 1; return fiber(n - 1) + biber(n - 2);}
想要计算原问题 f(20)。
我就得先计算出子问题 f(19) 和 f(18),然后要计算 f(19),我就要先算出子问题 f(18) 和 f(17),以此类推。最后遇到 f(1) 或者 f(2) 的时候,结果已知,就能直接返回结果,递归树不再向下生长了。
时间复杂度计算子问题个数 乘以 解决一个子问题需要的时间。
子问题个数: ...
二叉树的深度*
未解决的问题为什么DFS运行效率高??
二叉树深度我们定义从根节点开始
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
12345 3 / \9 20 / \ 15 7
返回它的最大深度 3 。
解决这是我的提交记录
通过递归遍历获取深度分别递归每一个子树,返回当前的深度。然后进行对比
代码1123456int maxDepth(TreeNode* root) { if (!root) { return 0; } return maxDepth(root->left) > maxDepth(root->right) ? maxDepth(root->left)+1: maxDepth(root->right)+1; }
此代码提交超出时间限制
我认为主要原因是因为返回值同时调用多个函数进行对比,函数重复调用浪费时间。我们应该把函数结果记录下来直接进行对比,而不是在反复调用函数进行对比
...
配置和使用airline
IntroGithub:https://github.com/vim-airline/vim-airline
在VIM中显示状态栏和标签栏的小插件
一些特性
可以自定义显示信息
支持写入其他插件
可以配置使用powerline符号
优化启动速度
支持主题配置
最低支持7.2 vim版本
安装和配置12Plugin 'vim-airline/vim-airline'Plugin 'vim-airline/vim-airline-themes'
分别安装插件和主题
配置vimrc
123456789" 显示标签栏let g:airline#extensions#tabline#enabled = 1" 设置分隔符let g:airline#extensions#tabline#left_sep = ' 'let g:airline#extensions#tabline#left_alt_sep = '|'" 设置标签的显示方式,参数参考githublet g:airline#e ...
前缀和数组和差分数组
前缀和数组前缀和主要适用的场景是原始数组不会被修改的情况下,频繁查询某个区间的累加和。
若要计算一个数组内区间的和,我们可以定一个for循环,分别计算从i到j之间的取值。这样时间复杂度为O(n)。我们可以通过建立一个新的数组分别存储当前元素前缀元素和来将时间复杂度降为O(1)。
我们定义一个前缀和数组presum,如果要求区间[i,j]的和。我们只需要计算presum[j+1]-presum[i]即可。
preSum[i] 记录 nums[0..i-1] 的累加和。如果我想求索引区间 [1, 4] 内的所有元素之和,就可以通过 preSum[5] - preSum[1] 得出。
12345678910111213141516public: NumArray(vector<int>& nums) { this->nums = nums; sums.push_back(0); if (nums.size() > 1){ for(int i = 1; i < num ...
