工作日志
为了纪念自己的学习经历,也为了记录自己的试错过程
创建于2024.6.11
作者:刘佳琪
24.06.11
安装Keil5,破解软件需要防止被电脑病毒查杀功能删掉。
24.06.18
proteus 8.13版本,51单片机串口无效,需替换 MCS8051_7.DLL文件到 MCS8051.DLL 文件并改名为 MCS8051.DLL
24.06.27
在ubuntu环境下安装vscode.deb文件,出现进程被占用加锁的情况。
解决办法:
ps -e | grep apt
找出正在运行的进程
sudo kill 8925
杀死进程,重启系统,即可安装
24.07.02
决定和win11一起,装个ubuntu20.04双系统
首先第一部查看电脑启动启动规则,这里我是新模式的启动规则
原因: 电脑启动时,需要有一个规则告诉它怎样启动操作系统。现在有两种主要的启动规则:一种叫做Legacy(老模式),另一种叫做UEFI(新模式)。如果你的电脑用的是UEFI,你可能需要按照特定的步骤来安装Ubuntu,这样它才能和Windows 11一起正常工作。如果用的是(Legacy),那安装步骤就不一样。所以,在安装Ubuntu之前,先知道电脑的启动规则很重要,这样你才能正确地安装它。(该教程只讲述UEFI模式的情况)
操作: win+R → 输入msinfo32 → 系统摘要 → 检查 BIOS模式为 UEFI
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_42313591/article/details/136007211
24.07.08
上午准备写中兴的算法大赛的题目
首先明确输入数据的格式:每行第一个元素为字段编号,第二个元素为字段位宽(/bit),后续字段为邻接字段。
协议头分配问题输出数据的格式为:字段编号,字节占用编号(0-511);
具体思路:判断字节大小,8则放进1B的容器,16则放进2B的容器,24则放入4B的容器,32也放进4B的容器,当24放入4B容器时,给可以存放8的“容器”数量+1,最后判断容器是否够用,如果1B不够用则用其他容器来补充(目前暂时默认内存够用)。
字典域分配问题:输出格式为:2B 2B ,字段编号。
具体思路:按照编号层级,当出现同级的子节点时,可以考虑判断是否能共用一个条目,注意约束不合法的条目。如若组合后不合法,则不能组合。
24.07.09
昨天是崩溃的一天,因为我的虚拟机想要配置C++的环境,所以就从vim转到了nvim,但是在配置nvim插件的时候,发现git clone会出现Connect refused的问题,在网上搜了无数的博客,临近崩溃的时候发现了一篇删除代理的博客,但是删除代理其实比管不管用,同时还要把.girconfig里的其他内容删掉,只留下姓名和邮箱,终于成功了,活了。
第二个问题,安装完插件lualine的时候,里面的图标有些是乱码,解决办法是按章nerd字体
wget https://github.com/ryanoasis/nerd-fonts/releases/download/v3.0.2/Hasklig.zip unzip Hasklig.zip -d ~/.fonts fc-cache -fv
然后在终端的首选项里更改自定义字体为nerd类型
第三个问题,配置nvim的Lsp的时候,treesitter安装失败,原因最终在作者的github上找到了,用lazy,nvim需要:
24.07.10
今天上午配置nvim的dap实在是不会了,最后放弃了,只能把nvim当做编辑器了,(暂时),以后有时间再搞,这几天冲击一下中兴那道算法题。
续写上次的思路,把文件读取的框架搭好了,现在只要根据每个文件读取后生成的有向图,来遍历路径,进行内存分配就好,暂时用深度遍历算法来试一下。
目前搭建了一个有向图,有向图的函数中,可以输出所有起点对应所有终点的所有路径,保证了不遗漏任何节点。目前所有路径的存储是一个三维数组,存在相同起点和终点的不同路径。现在开始考虑怎么分配仅有的这点512个空间。
24.07.11
继续写中兴的题目,今天把文件搭建好了之后想在分配路径的过程中就把空间分配出去,就试一下。
出了点小插曲,没把起点算进去,案例3里的起点有8个,导致输出之后少了8个字段,hhh,继续干!
24.07.16
好几天没写了,复盘一下中兴的比赛,最开始思路错了,用DFS广度优先遍历算法,得不到一个不冲突的层,最后利用拓扑排序,得到了一个序列,然后对这个序列的每个点判断分层,可以实现功能,可惜的是排名并不高,我也想不到什么好办法优化,暂时先这样。
进入要改win11 的终端,因为要刷算法题,但是没有nvim实在太难受了,内存不够不能装第二系统,就直接用win11
记录第一个知识点,用管理员身份打开terminal,win+r,输入wt,然后ctrl+shift 左键点击确定,就会进入管理员模式,普适性的神奇操作。
紧接着同步nvim的配置,这中间出现了Win11没有clangd的情况,使用msys2安装。
安装教程:https://www.cnblogs.com/FrankOu/p/14215850.html
24.07.29
加法,按位异或为无进位加法,进位的数可以按位与左移一位,直至两数相加到无进位为止。
24.07.31
复盘一下这几天的算法知识点,同余,单调栈,双指针,DFS,BFS,快速幂。
24.08.02
开始刷牛客的华为算法题,这样刷到难题就不好写题解,只能刷一道用日志记录一道题解了,
- a的ASCLL码是97, A的是65
- getline(cin, str);//输入
- 质数因子 :能整除给定正整数的质数。顺便复习一下怎么求质数,就是用给定正整数的平方根来遍历取余的思想。
24.08.05
牛客注册了个博客,也能写题解了,所以以后还是在题解上复习吧~
今天用这个set类,发现set的erase方法,如果{1,2,3,4}删除的是1和3的迭代器范围,他会删除1,2,不会删除3.(记录一下,防止忘了)
24.08.07
今天做了一家笔试,笔试是开卷的,好多题目都不确定,导致自己做的很狼狈,对C语言的字符串指针理解不到位,这里记录一下:
一些琐碎的知识点,%x是十六进制的输出格式;
C语言的指针字节大小,就可以判断电脑系统是32位还是64位。
动态库和静态库的命名后缀:
- Win 动:.dll 静:.lib
- Linux:动:.so 静:.a
网络技术的知识也得学,至少要懂:计算机网络基础知识总结 | 菜鸟教程 (runoob.com)
做了一道算法题,C++标准库里string的方法又学会了一个
str.substr(i, j);// 代表了从i开始数j个长度,这长度的字符串返回。
遇到了一个可以暴力的题目,纠结正则表达式要不要学一下,明天一起学一下吧。(和动态规划一起)。
24.08.08
-
根据二叉树的前序和中序遍历数组,可以构建二叉树,主要思想是分治策略,分解后的问题就是从前序数组中找到根节点,对应到中序数组中,可以知道根节点的左子树和右子树,进而判断下一次根节点的位置,递归的将根节点的左子结点和右子节点找到,继续。
/* 构建二叉树:分治 */ TreeNode *dfs(vector<int> &preorder, unordered_map<int, int> &inorderMap, int i, int l, int r) { // 子树区间为空时终止 if (r - l < 0) return NULL; // 初始化根节点 TreeNode *root = new TreeNode(preorder[i]); // 查询 m ,从而划分左右子树 int m = inorderMap[preorder[i]]; // 子问题:构建左子树 root->left = dfs(preorder, inorderMap, i + 1, l, m - 1); // 子问题:构建右子树 root->right = dfs(preorder, inorderMap, i + 1 + m - l, m + 1, r); // 返回根节点 return root; } /* 构建二叉树 */ TreeNode *buildTree(vector<int> &preorder, vector<int> &inorder) { // 初始化哈希表,存储 inorder 元素到索引的映射 unordered_map<int, int> inorderMap; for (int i = 0; i < inorder.size(); i++) { inorderMap[inorder[i]] = i; } TreeNode *root = dfs(preorder, inorderMap, 0, 0, inorder.size() - 1); return root; }