- 博客(39)
- 资源 (5)
- 收藏
- 关注
原创 Ubuntu64位执行32位文件
执行文件出现‘没有那个文件或目录’,Ubuntu是64位,需执行文件是32位。需要一个库才能在64位的系统上执行32位的程序,所以根据你的系统,把这个库安装上即可。所使用的命令是:sudo dpkg --add-architecture i386sudo apt install libc6:i386...
2020-06-08 12:31:41
1015
原创 编译原理之简单语法分析器(c语言)
语法分析是编译过程的核心部分,其基本任务是根据语言的语法规则进行语法分析,如果不存在语法错误即给出正确的语法结果,并为语义分析和代码生成做准备。语法分析器的两种方式语法分析器的任务主要是确定是否可以以及如何从语法的起始符号推导出输入符号串(输入文本),主要可以通过两种方式完成:1. 自顶向下分析根据形式语法规则,在语法分析树的自顶向下展开中搜索输入符号串可能的最左推导。单词按从左到右的顺序依次使用。2. 自底向上分析语法分析器从现有的输入符号串开始,尝试将其根据给定的形式语法规则进行改写,最.
2020-06-01 10:32:32
7269
原创 设计算法求解FIRSTVT和LASTVT(c语言)
Firstvt和Lastvt是为了画算符优先关系表的(就是表里面填优先大于小于等于的抄那个)。Firstvt:找Firstvt的三条规则:如果要找A的Firstvt,A的候选式中出现:A->a…,即以终结符开头,该终结符入Firstvt;A->B…,即以非终结符开头,该非终结符的Firstvt入A的Firstvt;A->Ba…,即先以非终结符开头,紧跟终结符,则终结符入Firstvt。Lastvt:找Lastvt的三条规则:如果要找A的Lastvt,A的候选式中出现:.
2020-06-01 10:31:59
4661
原创 linux内核模块之简单进程遍历
了解linux内核中常用的数据结构进程控制块—task_struct;了解include/linux/sched.h中的函数和宏;初步掌握内核宏定义for_each_process ()、list_entry()的功能。实现的内容编写一个内核模块,打印出系统中所有的进程的进程名、PID号和进程状态,即实现进程的遍历,类似ps命令。操作如下(注:内核进程此处称为内核线程,其实都是task_struct)一、编写代码(list.c)#include <linux/init.h>.
2020-05-22 12:59:46
4631
1
原创 使用git管理控制github
git管理项目。(个人笔记,不适用于他人)前提:已经注册好github;可以下载git管理图形界面(推荐sourceTree)。一、GitHub 基本概念Repository仓库的意思,即你的项目,你想在 GitHub 上开源一个项目,那就必须要新建一个 Repository ,如果你开源的项目多了,你就拥有了多个 Repositories 。Issue问题的意思,举个例子,就是你开源了一个项目,别人发现你的项目中有bug,或者哪些地方 做的不够好,他就可以给你提个 Issue.
2020-05-18 09:04:39
153
原创 leetcode题之合并两个有序链表(简单)
直接的数值比较,这里可以新链接一个链表,或者直接在其中一个链表插入移动。题目描述将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4代码:class Solution { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { /.
2020-05-17 19:30:30
163
原创 leetcode题之有效的括号(简单)
遇到这道题一开始的思路就是使用栈的先进后出;不过看到一个简洁的代码是直接匹配括号,然后删除一对括号,如果符合,最后字符串为空;不过后者时间复杂度和空间复杂度不好,因为需要不断调用api。题目描述给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例1:输入: “()”输出: true示例2:输入: “(]...
2020-05-17 17:54:22
130
原创 leetcode题之删除倒数第n个节点(中等)
和查找链表倒数第n个节点差不多,不过这里我们先查到倒数第n个的前一个,这样通过a.next指向需删除的下一个节点,这个节点就被删除了。题目描述:给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?示例给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.代码:老方法,使用双指针;/** *.
2020-05-17 10:53:11
146
原创 leetcode题之四数之和(中等)
两数之和,三数之和,它来了。。。四数之和。可推广到n数之和。题目描述:给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合为:[[-1, 0, 0, 1],[.
2020-05-16 14:17:20
152
原创 Linux系统之内核模块编程
Linux操作系统内核是单内核,速度和性能都很高,如何提高可扩展性和可维护性?那就是模块机制。用户可以根据需要,在不需要对内核重新编译的情况下,可以将模块动态地载入或移出内核。一、什么是模块?模块是具有独立功能的程序,它可以被单独编译,但不能独立运行。它在运行时被链接到内核作为内核的一部分在内核空间运行。模块通常由一组函数和数据结构组成,用来实现一种文件系统、一个驱动程序或其他内核上层的功能。内核模块是Linux内核向外部提供的一个插口,其全称为动态可加载内核模块(Loadable Kernel.
2020-05-16 00:18:23
979
原创 leetcode题之三数之和为0(中等)
《LeetCoding》读完题我就上手 操作起来稳如狗二话不说就提交 最终超时骂我草三顾题解再上手 提交错误心疾首寻思看看评论区 没想和我一样虚愁的我是头发白 做题还得自己来反反复复终无误 击败百分三点五题目描述:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -.
2020-05-15 14:07:07
323
原创 算法题之约瑟夫环(简单)
约瑟夫环代码简短,简单但可读性变难。题目描述:一共有n个人,依次报数,报到k的人被淘汰,第k+1个人又从1开始,最后留下的人的编号。示例1:输入(8,3)输出 7最后12345678中的第7编号留下;示例2:输入(1,3)输出 1当为1个人时,无论怎么报数,已经是最后留下的人简单说明原理:我们可以用数组和链表模拟游戏过程,得出结果,但这里只需结果,无需过程,所以用数学方法;(案例为5个人报数,报到3的排除)原编号12345排除124.
2020-05-15 12:13:19
382
原创 leetcode题之返回倒数第k个节点(简单)
快慢指针题目描述:实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。示例:输入: 1->2->3->4->5 和 k = 2输出: 4代码如下:class Solution { public int kthToLast(ListNode head, int k) { ListNode slow = head; ListNode fast = head; while(k>0){ .
2020-05-14 18:05:27
411
原创 leetcode题之最长公共前缀(简单)
求最大字符串和最小字符串(字符串是字典排序)的最长公共前缀;直接以第一个字符串为标准一次删去最后一个字符,startwith判断,直到最后一个字符串;字典树题目描述:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。代码如下:上述的第二种方法:..
2020-05-14 16:21:30
185
原创 leetcode题之罗马数字转整数(简单)
IV这种可以理解减I加V,所以-1+5=4;题目描述:罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写.
2020-05-14 15:10:27
233
1
原创 leetcode题之整数转罗马数字(中等)
固定符号一般采取编码题目描述:罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为.
2020-05-14 14:57:24
141
原创 leetcode题之盛最多容器水(中等)
平移,贪心算法题目描述:给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。示例:输入:[1,8,6,2,5,4,8,3,7]输出:49java代码:class Solution { public int maxArea(int[] .
2020-05-14 09:57:27
251
原创 Kmp算法的next数组实现(精简)
kmp算法戳这里->kmp算法精简说明这里我们学习next数组是如何通过代码实现一一取值的。一、如何实现变量i:用于遍历next数组下标给一一赋值;变量j:用于指向上一段的最长公共前缀的下一位。例如:当我们在算“abad”的next值时, 前一段就是”aba“,此时j指向的就是b。①下标i项与下标j项比较;相等,那直接j移到下一位,相同前后缀就是(j++)的值;不相等,j需要回溯:回溯我们令查看下标j-1的next数组值,发现为1;令j=next[j-1];原本的 j.
2020-05-14 08:53:48
343
原创 KMP算法(最精简的理解)
算法理解以简略为主,太多理论解释容易绕晕。主要有以下三个数组:匹配串:字符型模式串:字符型next[i]数组:int一、next[i]数组说明(先了解这个比较好学)next[i]是专门针对模式串的(功能我们后面结合实例介绍):模式串abcdabdnext[i]数值0000120①首先我们了解前缀和后缀前缀:(这里直接距离理解,比概念有用)abc的前缀包括{a,ab};abcd的前缀包括{a,ab,abc};可以看出.
2020-05-13 15:35:53
315
原创 leetcode题之Z字形变换(中等)
一道找规律题直接z型存入n(规定的行)个stringbuilder;根据规律(2*n-2为周期)。题目描述将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。请你实现这个将字符串进行指定行数变换的函.
2020-05-10 19:24:51
194
原创 leetcode题之最长回文子串(中等)
算法可用:中心扩展法,动态规划法,马拉车算法。题目描述:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。测试样例:示例1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例2:输入: “cbbd”输出: “bb”马拉车算法代码实现如下:class Solution {public: string longestPalindrome(string s) { // Inser.
2020-05-09 19:41:47
104
原创 Makefile初步认识
这里只是一个介绍,详细makefile学习请直接在主页资源下载pdf文档。Makefile 文件描述了整个工程的编译、连接等规则。其中包括:工程中的哪些源文件需要编译以及如何编译、需要创建那些库文件以及如何创建这些库文件、如何最后产生我们想要得可执行文件。实现这种“自动化编程”。解决问题将一个大的项目转化成多个小部分,可提高软件调试、维护的效率,但同时会使编译的命令增多(比如生成多个目标文件,再链接一起生成可执行文件)。每次对程序源代码进行改进后,都要执行多条命令来重新编译,对开发人员来说是很大的.
2020-05-09 17:45:51
219
原创 bootloader详细介绍
链接直达:https://www.cnblogs.com/anandexuechengzhangzhilu/p/10719869.html
2020-05-08 13:21:42
239
原创 android中的六种布局
每一个布局都有自己适合的方式,另外,这五个布局元素可以相互嵌套应用,做出美观的界面。六种布局方式FrameLayout(框架布局)LinearLayout(线性布局)AbsoluteLayout(绝对布局)RelativeLayout(相对布局)TableLayout(表格布局)GridLayout (网格布局)一、FrameLayout这个布局可以看成是墙脚堆东西,有一...
2020-05-07 10:40:33
1470
原创 leetcode题之寻找两个有序数组的中位数(困难)
来源:力扣(LeetCode)题库链接:https://leetcode-cn.com/problems/median-of-two-sorted-arrays题目描述:给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例...
2020-04-30 13:23:13
170
原创 leetcode题之无重复字符的最长子串(中等)
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters题目描述:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。...
2020-04-30 08:47:52
111
原创 leetcode题之两数之和(简单)
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/two-sum题目描述:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], t...
2020-04-30 08:38:12
121
原创 linux修改环境变量的四种方式
环境变量的设置是一些操作的必要设置,也可以方便我们许多。比如脚本所在的目录设置为环境变量,让系统自动找相应目录执行shell。下面我们介绍设置环境的四种方式:查看PATH:echo $PATH以添加mongodb为例修改方法一:export PATH=/usr/local/mongodb/bin:$PATH配置完后可以通过echo $PATH查看配置结果。生效方法:立即生效;...
2020-04-28 13:32:49
1562
原创 如何在csdn快速转载好文章
为啥csdn不增加一个装载功能呢?咱不知道也敢问。可能鼓励原创,以及避免转载成风。下面我们进行转载操作:其实是我们文章的地方本身就是编辑器,所以我们只需去网页copy一段html代码放进来就好了。一、我们先随便选一篇文章我们进到该网页右键检查或F12选择elements;二、查找相应的div我们可以点击如图,然后随意点击文章的一个地方,下面元素就会索引到一个地方。我们往上查照...
2020-04-28 08:48:10
124
转载 TCP三次握手四次挥手
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.youkuaiyun.com/qq_38646470/article/details/105522263三次握手建立链接,四次挥手断开链接。这个问题算非常经典的问题,也是面试官非常喜欢问的问题。不夸张的说,龙叔在校招面试的时候每一家公司都问到过关于三次握手和四次...
2020-04-28 08:26:39
172
原创 Linux系统之DNS服务器配置
我们实现简单的dns服务器配置,实现域名解析。一、安装bind软件安装命令:yum install bind查看安装:rpm –qa | grep bind相关介绍:bind的启动脚本位于/etc/rc.d/init.d/named主要的文件路径:二、设置DNS服务器配置网关文件:cd /etc/sysconfig/network-scripts编辑其中的ifcfg-ens...
2020-04-27 16:53:05
2000
原创 编译原理之设计简单词法分析器(C语言)
本次的内容主要是通过c语言实现简单的词法分析器,所以理论方面的知识较少,在大家有了编译原理的基础知识后,提供代码学习。使用语言:C语言编译环境:vscode什么是词法分析器设计词法分析器c语言代码实现编译原理总框:一、什么是词法分析器词法分析(lexical analysis)是计算机科学中将字符序列转换为单词(Token)序列的过程。进行词法分析的程序或者...
2020-04-27 13:33:04
5975
原创 Linux下Apache服务器的配置和构建虚拟主机
假设某学院只有一台Apache服务器,但是有三个部门需要建立网站,一个为办公室网站,域名为office.myschool.com,另一个为计算机系网站,域名为computer.myschool.com. 还有一个为学生网站,域名为student.myschool.com.配置基于域名的虚拟主机(同一个IP地址对应多个域名)配置基于IP的虚拟主机(一个IP地址对应一个域名)准备:Li...
2020-04-25 22:37:26
979
原创 Android开发之百度地图定位
本章为百度地图定位,内容为使用百度地图的sdk,实现对自己当前位置的定位。申请AK下载SDK开发包在android项目中引用百度SDK实现定位先摆上运行后的图:没错,这肯定不是我运行后的图。只是说会是这种形式定位自己。据说许多小伙伴运行后会定位到非洲,遇到这种情况的赶紧到下方评论区留名,让我嘴角忍不住上扬。建议大家用真机测试,就是自己手机。大家先使用Android Stud...
2020-04-24 23:11:16
616
原创 VScode终端命令无法识别
无法将“###”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试 一次。在cmd命令中不能运行,则需要配置环境变量;许多小伙伴在cmd发现能运行,而在vscode终端不能运行;出现这种情况,我们只需要 右键vscode->点击属性->兼容性->勾选以管理员权限运行。重新运行就ok了~~~...
2020-04-23 11:20:47
7471
2
原创 Android开发基础之文件读与写
三种类型的文件存储:SharedPreferences类、Android内部文件操作、SDCard文件存储。一、SharedPreferences类只用于保存少量数据,以 (key,value) 格式保存在XML文件中,开发者不用关心XML文件的存储格式和路径。Key用于存取数据,value是数据的实际内容。使用方法:(1)创建SharedPreferences对象SharedPr...
2020-04-22 18:00:44
296
原创 Linux系统搭建Samba服务
SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。(思考我i们pc上的网上邻居)不同用户访问主机,根据自己的权限可看到或操作相应的资源。前提条件:虚拟机设置为桥接模式 ;Samba服务器端:linux系统IP;确保虚拟机和主机能互ping; 虚拟机和主机的防火墙是否都关闭; 虚拟机和主机是否处于同一网段;...
2020-04-22 17:12:48
511
原创 Android开发基础(用户登录布局)
本篇文章适用还未接触过android开发的小伙伴,提供很简单的案例,让大家快速上手,保持信心。创建项目UI布局java代码逻辑实现效果如下:一、创建项目我们使用android studio开发,创建项目前的准备:安装好android studio;安装好jdk;安装好sdk;安装好avd(虚拟机),也可用自己手机debug。ps:以上的操作百度很多很详细,就略过了...
2020-04-21 16:39:38
2671
2
原创 嵌入式ucosii任务管理
说明:本文只是简单地介绍任务管理部分,有错误的地方,不吝赐教。源码已上传,可用sourceInSight等工具查看。学习内容一、执行代码二、任务私有栈三、任务控制块四、任务就绪表入表出表查表ucosii的任务调度首先我们得知道ucosii中一个任务的三要素:代码,任务私有栈,任务控制块; 代码:就是任务要执行操作的代码,我们会有一个指针指向代码地...
2020-04-12 13:47:33
591
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人