自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 解决暗影精灵6win键失效的问题

不用多看了!是不是不小心把键盘锁了?FN+F12解锁就完事了

2020-10-09 11:46:28 3936 5

原创 操作系统面试知识总结

(一)概论操作系统是硬件上第一层软件、是支持其他所有软件运行的基础操作系统三种基本类型:批处理系统:对一批作业进行自动处理,在其中引入多道程序设计技术就成了多道批处理系统。分时操作系统:处理机的时间被分为很短时间片,系统按照时间片轮流把处理机分给各联机作业使用,若一个时间片内无法完成,则该作业暂停运行,把处理机让给另一个作业使用,等到下一轮在继续运行。特征是:同时性、交互性、独立性和及时性。实时系统:及时响应外部事件请求,在规定的时间内完成对事件的处理,并控制所有实时设备和实时任务协调一致的工作

2020-10-06 17:59:28 5293

原创 NULL和nullptr的区别

NULL:是一个宏定义,C++中定义为0;C中定义为((void *)0)nullptr:C++11中引入的新关键字,不可再进行重定义(C4005错误)专门用来处理空指针的,主要为了防止在函数重载时使用NULL会出现不期待的结果...

2020-09-10 15:08:06 404

原创 数据结构与算法(经典排序总结)C++版

一、冒泡排序两重循环,内层循环每次比较相邻两个数的大小关系并做交换处理,每次内循环结束一定可以将每轮最大(小)的元素归位;外层循环控制总共需要归位元素的次数。改良算法,加入flag标志位,如果元素提前排序好即可直接结束排序算法//冒泡排序算法void Bubble_Sort(ElementType A[],int N) { int flag;//用于表示一趟排序是否已经完成 for (int i = 0; i < N-1; i++) { flag = 0; for (int j =

2020-08-19 16:27:58 243

原创 LeetCode 两两交换链表中的节点(无需辅助结点)

非递归、无需额外辅助结点(真就硬交换)/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* swapPairs(ListNode* head) { if

2020-08-13 22:15:31 117

原创 网络爬虫入门(五):数据存储(CSV和DB)

在我们解析网页之后,我们就可以把需要的内容存入本地了。这里主要介绍两种常用的方式:存储到CSV文件和数据库存储到CSVCSV(Comma-Separated Values)是逗号分隔值的文件格式,其文件以纯文本的形式存储表格数据。CSV文件的每一行都用换行符分隔,列与列之间用逗号分隔。相较于TXT文件,CSV文件不仅可以用记事本打开,还可以用Excel打开,直接通过表格的形式展现出来,因而提升了数据的可观看性。同时CSV文件和TXT文件大小相差不大,所以在爬虫中常用于存储数据。CSV文件的操作主要包括

2020-08-12 15:37:38 776

原创 LeetCode求1+2+...+n的结果(限定算法条件)

看似一道很简单的题,在LeetCode中却给到了中等难度的定义,主要的原因是题目限制了使用条件:要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。我们先想想常规的解决思路有哪些:如果不限制乘除法的话,我们可以直接使用等差数列求和公式就解决了:(n+1)∗n/2(n+1)*n/2(n+1)∗n/2。但这个方法最大的问题在于无法通过别的运算法转换乘以n的问题(尽管我们知道乘除可以通过位运算来间接实现,但运算只能限于2的倍数的乘法,如果是乘以3、

2020-08-12 14:36:17 2055

原创 LeetCode单链表删除中间结点(仅传递被删除结点)

这个题难度并不是很大,主要考察了对链表数据结构的灵活使用能力,有点脑筋急转弯的意思。题目要点:删除一条单链表的中间结点(不是第一个或者最后一个),参数只传递了被删除的结点的指针。打眼一看其实是有点懵的,因为平常的删除都需要知道被删结点的前一个结点,这样才能将前一个结点之间连接到被删的下一个结点,这里无法获取被删结点的前面所有结点,因而我们的常规思路是无法进行。但想来想去,删除链表只有这一种思路,在这种思路下我们只能删除后面的结点,等等!可以删除后面的结点…emmmmm…我懂了,我们直接采用“替罪羊删

2020-08-10 17:23:06 141

原创 网络爬虫入门(四):解析网页

在我们已经可以将网页资源下载到本地后,就可以进行我们的第二部操作了,即将网页中我们需要的资源进行解析(上一节的selenium中也有提及)。本篇内容总结了其他三种常用的解析网页方式。一、正则表达式正则表达式是最常用的解析字符串的方法,它通过定义了一系列的正则字符来代表一些特殊的含义。标识符描述标识符描述.匹配任意字符,除了换行符\s匹配空白字符*匹配前一个字符0次或多次\S匹配任何非空白字符+匹配前一个字符1次或多次\d匹配数字,等价于[0-9]

2020-08-03 21:49:23 1716

原创 网络爬虫入门(三):页面资源获取(动态)

上一节我们简单说到可以通过requests库来发送get请求或者post请求来直接获取页面资源,但这仅仅是考虑到我们所需要的所有的资源都已经包含在页面中了。事实上,由于AJAX技术的实现,很多网页为了调高效率,采用了动态局部刷新的方法,这意味着网站上的内容并不一定包含我们所需要的全部资源。于是,为了解决这个问题,我们采用了动态爬取的方法。动态爬取主要采用两种方法:一种是解析真实地址,另一种是通过Selenium动态模拟浏览器抓取。一、直接通过浏览器解析真实资源地址通过实际观察,我们发现,有些网页中的资

2020-07-30 11:25:49 979

原创 网络爬虫入门(二):第一步Requests获取页面(静态获取)

一、获取页面我们要爬取数据,就需要先去找到数据来源,即找到数据所在的页面,本节内容总结了基本的获取页面的方法二、基本流程首先我们需要用到爬虫所必备的第三方库Requests。顾名思义,Requests库的作用就是发送http请求指令,从而获取我们想要爬取的目标页面。我们通过在终端中输入一下命令来安装Requestspip install requestsrequests库中所提供了发送http请求最重要的两个请求方式,get请求和post请求,我们可以根据需要自身需要来使用,一般来说,大多数网页

2020-06-28 17:59:56 1982

原创 网络爬虫入门(一):爬虫知识普及

本篇内容主要是为一些非计算机领域人员以及新入门爬虫领域的人员作简单的介绍,采用的话语比较直白,一些理解不当的地方欢迎大家指正网络爬虫是什么?想必很多人都听过网络爬虫,但其实并不太清楚爬虫到底是个什么东西。简单来说,爬虫其实就是一个自动从网上获取数据的程序,这个程序就像一个小虫子一样,在一个个的网站之间爬动,遇见他喜欢吃的(程序要求的)东西就吃掉(获取下来),遇见不喜欢的东西就忽略不理,最后把它这一趟吃的东西带回来交给我们,完成了它这一次的任务(数据采集)。说到这里可能你就明白了,爬虫就是一个数据获取.

2020-06-27 15:41:34 440

原创 堆栈?堆?栈?

学计算机的过程中,我们经常听闻“堆”、“栈”、“堆栈”这样的概念,那么什么是“堆”、什么是“栈”、什么又是“堆栈”呢?其实,堆栈就是栈,他们都是一种先进后出的数据结构,堆栈只是栈的另一种抽象名称而已。所以,从结构上来说,只有栈和堆两种类型。栈所谓栈,是一种先进后出(或者后进先出)的数据结构,它类似一个你刚刚买的一盒好丽友派。假设你只能从一侧打开,然后一个个取,只有当上面的取完了后才能从下面取;然而生产商在包装的时候,肯定是先放的在最下面,后放的在最上面。这样你吃到的第一个派其实是包装员最后一个放进去的

2020-06-23 19:42:29 1196

原创 LeetCode 单链表判断回文开始结点 O(1)空间复杂度

上次讲了如何实现判断单链表中是否存在回文这次我们将算法提升一下,判断在哪里将会产生回文。如果没有链表中无回路则直接返回NULL既然是算法提升,说明之前的算法仍有它的可取之处,分析一下,我们可以将此任务分为两步来解决:①判断链表是否有回文,如果没有则直接返回NULL;②如果有回文,如何利用数学分析来找到回文开始结点并返回该结点。该题选自LeetCode 142,有兴趣的朋友可以直接去看看。思路分析首先我们仍然采用追击算法的思想,即当两个指针在回文里循环时,如果发生追击现象,则说明链表内有回文,否

2020-06-22 23:17:11 254

原创 LeetCode 单链表判断是否存在回文 O(1)空间复杂度

利用的思想是小学奥数常见的追及问题思路:如果存在回路,当两个速度不同的指针在其中不断循环时,一定会出现追及问题如何体现速度不同:一个指针一次只跳一个结点,另一个指针一次跳两个(或多个)结点。如何体现追及:判断两个指针所指向的内容是否是同一块地址区间。代码 * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : v

2020-06-22 21:14:42 257

原创 哈希表的思想和构建

在实际的开发过程中,我们总能看见大佬们说用一个哈希表(hash-table)来加快处理,但事实上并不清楚hash表到底做了什么事情。于是我又重温了一下当年的数据结构课程,大致了解了哈希表的思想以及他所做的事情。简单来说,hash表的设计就是为了便于更好、更快的查找的。我们知道一个基本的查找模式采用的是k-v键值法,即一个key对应一个value,我们根据自己的key去找到相应的value值,数组就是最典型的例子。但数组中的key都是从0开始,这样设计的key值是没什么意义的,只是为了单纯提供一个索引的作

2020-06-22 18:43:59 529

原创 通俗理解“卷积”

最近本人正在研究深度学习相关内容,面对处处出现的卷积运算有很多地方都不太理解,比如为什么要使用卷积运算?为什么卷积是这样算?趋于巨大的求知欲,我在网上寻找各路大神的讲解,终于得到了自己的理解,下面就简单谈谈我自己的想法。首先,卷积的运算定义是很有现实意义的,我们对于生活中事情重要性的描述,往往可以从两个方面来衡量:一来是事件本身的描述,比如考试考了100分、90分、75分以及59分等;二来是一旦...

2020-01-09 15:11:30 1886

原创 关于C/C++中算术左移的小发现

今天在学习系统级程序设计的时候,无意间发现一个神奇的现象:可能大家第一时间看不太懂,我稍微解释一下:这里x=5(不重要),n=0,以此计算tempN=32(这一点没有问题),但随后测试中发现,立即数1在进行逻辑(算术)左移的时候,应该是会在右边补0,那么这样分析结果最后应该是0,但发现最后结果竟然不是!!!!结果竟然还是1!!!!???什么鬼???于是不甘心的我又试了试(1<<3...

2019-11-27 18:34:03 640

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除