自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

独钓寒江雪

See you

  • 博客(55)
  • 收藏
  • 关注

原创 timerfd与定时器

在逛知乎看到这么一个问题,“muduo库在实际项目中使用的人多吗?”,在评论区下面看到了这么一条评论:一个网络编程库,timer是重中之重,比到底是用epoll还是select都重要。当然,话说回来,再吊的库无非也就是个heap为本的数据结构在支持,无非是有些库喜欢说自己的heap实现比别人都高效,比如haproxy。但muduo却独辟蹊径,用timerfd,泥玛又是一个高级特性啊,很唬人的。由kernel帮你管理timer,是不是很吊。之前在工作中实现的一个多线程服务端程序参考了muduo库的设计

2020-06-05 00:25:58 822

原创 半个日志

一段时间没写博客了,有的东西之前想写,到后来忘了,学到的一些新东西,想写,但发现自己理解的不透彻,罢了,回头看自己之前写的博客,太乱,懒得去整理,想着一把火删掉算,但又不太舍得…恍恍惚惚的过了这个春节,工作第一年的春节,发呆发腻了,最近也开始远程办公开始回回神了,开始想想今年该做些什么。想了下,暂且先定这个目标吧,争取在今年之内,用空闲时间做完吧:过一遍计科的一些书籍,如组成原理、操作系统...

2020-03-09 12:37:13 191

原创 读者优先与写者优先---信号量实现

  以前在看操作系统相关书籍的时候,写过相关的文章,那时候是照着书大概敲上去的,今天在温习相关知识的时候又看到了这个点,于是便打算写一串伪代码来实现。  (使用PV操作,sem即信号量)读者优先:  读者优先,即仅当读者为0时,写者才可写入。sem ri=1,ws=1 //ri用于对rcnt这个变量产生互斥,ws为对写者产生互斥int rcnt=0//读者数量reader: V(...

2019-11-27 18:01:23 959

原创 LeetCode:通配符匹配

  昨天闲着的时候做了正则表达式匹配(.*)的匹配,感觉手感挺好的,所以今天就顺便做了通配符匹配这道题,这道题相对于正则表达式匹配简单许多。题目简介:给定一个字符串 (s) 和一个字符模式 § ,实现一个支持 ‘?’ 和 ‘*’ 的通配符匹配。‘?’ 可以匹配任何单个字符。‘*’ 可以匹配任意字符串(包括空字符串)。两个字符串完全匹配才算匹配成功。说明:s 可能为空,且只包含从 a-...

2019-07-02 17:37:42 210

原创 LeetCode: 正则表达式匹配

  工作快半年了,好久没上leetcode做题,前几天在知乎上看到一个leetcode的一个题有效数字,大概内容是判断字符串是否是可以用十进制来表示的数字,了解到了一种对我来说没学过的知识,即,正则表达式是可以用状态机(自动机)去表示的(<<编译原理>>相关的书籍似乎都有介绍),而自动机又分NFA与DFA…啪啦啪啦,总之就是了解到了很多东西,然后就想起了这道我以前没解决的题...

2019-07-02 09:47:08 466

原创 enable_shared_from_this

  enable_shared_from_this是一个类,继承后的作用是使用shared_ptr<T>管理的对象的this指针以shared_ptr传递到其他函数,当然并不是直接传this,而是通过继承后的一个public方法shared_from_this来生成shared_ptr。class B {public: void Register(A* a) { _a = a...

2019-03-25 10:42:26 726

原创 多线程的一些小记

  之前写过一些多线程程序,基本上都是线程竞争条件比较少或者说没有,所以基本上没有碰见过死锁以及其他情况,以至于我自以为多线程的使用也并没那么难。  如之前我写过的一篇一个简单的生产者与消费者,那时候写得也不太好,大概是使用一个互斥量去保护物品队列的获取与生产,一个条件变量去判断队列是否为满或者空(以前是用两个,有些多余)。  因为之前写的过于简单,没有思考到多线程多方面的资源竞争情况,所以今...

2019-03-12 11:44:47 155

原创 C# yield

  周末的时候弄了一下unity,感觉做一款3d游戏要了解的知识面设计太广,所以还是来学学语言的一些用法。  说起yield,C++的yield没用过,但是用过python的yield,在C#和python中,这个关键字原理大概是配合着迭代器去使用以及实现的。  下面有两段杨辉三角的程序,分别用python和C#去实现,在C#的实现中需要继承一个IEnumerable(可枚举的)类,而pyth...

2019-01-22 11:12:04 2492 1

原创 C#学习记录

  最近想在周末闲着的时候使打算使用Unity做一款小游戏,于是昨天看了一下Unity官方的教程,简单的了解了Unity的使用界面,感觉蛮方便上手的,于是就有必要了解一番C#,方便快速上手Unity。  看了一天的C#,虽然有点不适应,但是还是基本了解了使用方式,如果有理解不到位的地方希望指出来。    1、对象(Object)类型 ,是所有数据类型的基类。  2、动态(Dynamic)类...

2019-01-19 16:54:27 820

原创 LeetCode:单词搜索

  这道题虽然简单,但是我尝试用了非广度遍历,想来点其他思路的方法,都失败在一些测试用例了,所以这道题感觉用广度遍历,是最容易解决的方法,以及这道题,让我想起了以前学习写游戏编写的寻路算法or最短寻路算法,而且这次的代码简洁,感觉挺好看的…  题目简介:  给定一个二维网格和一个单词,找出该单词是否存在于网格中。  单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那...

2019-01-08 15:33:21 1000 3

原创 LeetCode:恢复二叉搜索树

  前几天写的题了,虽然空间复杂度满足了题目进阶要求,但是感觉效率低还是有改进的空间,先放在这里以后有空了来改。题目简介:  二叉搜索树中的两个节点被错误地交换。  请在不改变其结构的情况下,恢复这棵树。  示例 1:  输入: [1,3,null,null,2] 1 / 3 \ 2  输出: [3,1,null,null,2] 3 / 1 \...

2019-01-07 11:22:14 309

原创 LeetCode:二叉树的最近公共祖先

  这道题想了挺久的,开始没思路,而且看leetcode的评论区几乎都是同一份短小精悍的代码,所以就打算自己先实现一个版本,再去看看分析评论区的代码。题目简介:  给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。  百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是...

2019-01-04 09:44:27 3739

原创 LeetCode:二叉树中的最大路径和

  这个题在元旦之前看过一会,那时候没思路,今天写着写着突然就有思路了,代码的效率蛮高的。题目简介:  给定一个非空二叉树,返回其最大路径和。  本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。示例 1:  输入: [1,2,3] 1 / \ 2 3  输出: 6示例 2:  输入: [-10,9,20,...

2019-01-02 11:53:43 453

原创 LeetCode:单词拆分Ⅱ

  这道题因为编写的BFS代码超时,我花了挺长时间在于思考,如何解决重复计算,如何编写一个DFS,把惯用的暴力搜索思维改成记忆搜索的一个过程,直至写完这篇博客,我感觉脑子还是有点小乱的,不过代码的流程还是非常清晰的。题目简介:  给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,在字符串中增加空格来构建一个句子,使得句子中所有的单词都在词典中。返回所有这些可能的句子。说...

2018-12-29 16:33:15 1453

原创 LeetCode:N皇后

  在17年的9月份,我写过一个N皇后的博客,当时写的代码是又臭又长又乱,最近闲着,就来做以下LeetCode上中等~困难的题目,于是看到了N皇后,遍再次写了一遍,与17年时做法相同,用BFS,而代码量以及可读性比以前写的好多了,那么废话不多说了。          题目简介:  n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。   ...

2018-12-28 15:23:19 760 1

原创 最近使用到的linux一些命令或操作日常记录

  最近在使用linux的时候用上了很多命令,从开始的抗拒各种陌生的命令,到后面渐渐熟悉感觉linux使用还是挺方便的…  ipcs、ipcrm:查看进程间通讯状态。  diff:比较文本文件。它能比较单个文件或者目录内容。  mount、umount:将分区挂接到Linux的一个文件夹下。  bash/sh、source、./的区别:   在使用bash/sh、source去执行脚本或...

2018-12-21 16:10:21 428

原创 linux使用动态库的一些问题记录

  最近在linux上写程序,今天在使用别人的动态库上出现了很多问题,后面都慢慢的解决了,下面记录一些问题吧。  在使用动态库的时候,需要使用头文件.h与动态库文件.so,那么g++的命令则是这样编写:  g++ -o test test.cpp -I./include -L./lib -lpi -lyaml-cpp -lopencv_freetype,其中-I(大写的i)+路径,为编译的时候...

2018-11-09 17:53:54 208

原创 01背包

  前天在线面试的时候,面试官让我描述我学过的一些算法是怎么运算的,如最长公共子串,我知道其计算过程以及写法,但是突然让我口述过程,描述的时候越来越乱,面试结束后好好的整理了思绪,才觉得应该怎样怎样叙述过程才好,所以打算用通俗易懂的话去写这篇0-1背包,顺便温习一下,以前大二还是大三的时候上算法课不认真听,只是了解了一下这个算法~_~  0-1背包问题,就是解决,有n 个物品,它们有各自的重量w...

2018-10-13 13:12:38 277

原创 KM算法解决不同行不同列求和最大值问题

  昨天在大学专业的交流群里看到某个学弟发了张自己打算学的算法列表图,然后瞟了一眼,看到了KM算法,而之前写的一篇深信服在线笔试-2018.9.22,的编程题的第四题:求一个二维数组或者说矩阵的不同行不同列的合的最大值,我采用的是穷举方法,而看到别人说最好的方式是采用KM算法,穷举计算量实在过大了,所以来学习一下KM算法。  (PS:这段话是闲扯)然后就去百度了一下KM算法,看到了很多篇大多都是...

2018-10-10 13:07:55 6303 2

原创 抓兔子问题

  在我写的那篇深信服在线笔试下面看到一个推荐,是提前批的笔试题目,看了一下,选了要给挺有意思的题目来做。(练习练习算法)  做了蛮久才做出来的,从思考这个问题目的,以及其出现的情况,再到编码+调试错误,花了很长时间…思路虽然理清很快,但是在编写的过程中犯了很多小错误。  可以看出目的是让输入的序列能够满足一定条件即输出Yes or No,而我们的目标就是找到一定能够抓到兔子的条件,而一定能...

2018-09-23 16:10:01 971

原创 深信服在线笔试-2018.9.22

  还记得上次深信服笔试挺惨的,选择题错一堆是因为计算机系统基础部扎实,编程题是因为没有能够调试的IDE,写的程序都没跑过,但是编写和思路都很快想出来。  这次总体难度相对于上次降低了很多,由于我个人编程题发挥太垃圾了弄得一塌糊涂GG了,题型相对于上次题型算是改动挺大,不定向选择+填空题+编程题,从毕业到现在都没怎么写过算法题,忙着补充理论基础然后没注重算法题就栽跟头了,之前做畅游笔试信心满满觉...

2018-09-22 02:38:16 12908 3

原创 畅游笔试题错题小记

  今天收到畅游的在线笔试,就打算来试试了,就当去校招前练练手,因为畅游校招只招19届……ORZ   畅游的题很奇怪,分为两大类,第一类与游戏相关的基础题和阅读理解(中间涉及一些小计算),第二类就是编程相关的单选题以及编程大题。   不讨论基础题,只是论编程题的话,难度简单,然鹅我还是沙比了,犯了很多错误,编程答题有两道大题,第一题是计算最短路径距离,第二题则是一个数值计算题。 编程大题1:...

2018-09-16 01:31:35 589

原创 ATT汇编指令中mov与lea的作用比较

  以下是个人的感觉,不太确定对错,但是测试过好像是这样。   之前挺好奇mov和lea有什么区别,说是一个是传值一个传地址,的确好像是这样。   mov的源操作数和目标操作数,其中目标操作数不能是立即数,且源操作数与目标操作数不能同时是存储器(内存地址)。   lea的源操作数只能是有效地址,目标操作数只能是寄存器。   两者在操作一些内存地址上意思好像是一样的。   比如0x8151...

2018-07-26 14:11:15 4346 1

原创 动态规划-最长子序列

  emmmmm,今天去面试没面试到,简历交了被劝退…..   最近毕业季,查重的时候想到了一个算法,就是最长子序列,也就是查询集合A与集合B的交集C且C中的元素顺序严格按照在A与B中的顺序,但不要求元素是连续的。   以前在上课的时候,不认真听,照着书上的伪代码巧了一个迭代方式实现的,所以今天来写一个递归的。递归式:  c[i][j]= 0  when i=0||j=0   c[i...

2018-06-15 21:58:51 744

原创 堆排序

  由于14号要去金山wps校招面试(18届直接去面试),于是百度了一下相关面经,看到一道题是讨论快速排序与堆排序的效率什么的…..在此之前,我对堆排序的理解是错误了=_=…之前我以为是每次调一次小根堆或者大根堆,然后就取出根元素,便可以得到一个排序的数组了….但是想想时间复杂度,感觉不对劲,于是就开始动手实现了。   参考了这篇文章对堆排序的讲解:https://www.cnblogs.com...

2018-06-12 22:05:28 108

原创 linux下编程学习日志(一)

  快毕业了,辞了php后台工作,无所事事,linux接触的很少,只在某个课的实验课接触过centos,所以为了再找工作,学习在linux下编程借了一本UNIX环境高级编程,听说需要深厚的操作系统知识与C语言知识…….这么一听快把我劝退了,不过还是打算慢慢啃,顺便熟悉linux的操作。   该日志仅记录一些我个人感觉有些重要的东西,如配置一些软件碰到的问题。 ps:使用书籍及系统《UNIX环...

2018-06-12 10:27:15 948

原创 简单的小爬虫-漫画爬取

  好久没写代码了,快毕业了天天闲着玩游戏刷视频,最近刷七原罪这部动漫的时候,感觉动漫更新太慢,就去追漫画,于是为了方便观看避免广告的干扰,就写了个小爬虫,顺便练习练习python…   由于对多线程还是理解不深,本来想用多线程进行下载的,但是在几番尝试下还是没有出现想想中的下载顺序,依旧是从起点开始下载,于是就改回来了..这个后面再尝试一下。   由于目前七原罪漫画资源好像风之动漫可以看到,...

2018-05-31 16:24:49 2937 6

原创 AVL树的实现

  3月份的时候为了面试看了些数据结构(目前找到了),其中看到STL相关书上看到avl树、红黑树,于是就打算实现一下avl树,觉得看着挺简单就一直拖着..今天闲着无聊就用python去实现了,不用C++是为了不去管理内存什么的…   之前数据结构关于树的方面的确没有过多的代码实现,在寒假的时候通过SICP上的一些习题,算是了解了下递归,毕竟树的操作几乎都是可以通过递归实现的。   我也不知道这...

2018-04-13 20:14:44 202

原创 根据遍历序列,还原二叉树

  在实现之前,自己手算了一遍,以前数据结构没了解清楚的东西,今天手算了一下,发现了规律……就拿这道题来说,前序遍历,我们可以找到根的位置,而中序遍历,我们可以找到根的左右孩子,然后根据前序遍历的结果,我们可以依次找到中序遍历中的哪些节点是根。   于是乎就形成了一种递归关系,如: vector&lt;int&gt;ary1 = { 1,2,4,7,3,5,6,8 }; v...

2018-03-13 21:24:07 604

原创 找到字符串第一个只出现过一次的字符

  这道题,并不难,在笔试上碰到,我的思路是,两个下标,一前一后,前下标小于等于字符串长度,后下标去遍历字符串,看看是否相等。   到面试的时候,面试官叫我解释我写的算法,并给出了一个例子,然后我自己走了一遍,发现出错了,而错误的原因就是,是没有对重复出现的字符做标记,然后first下标依旧会遍历到重复字符,所以找不到出现过一次的字符。   因为面试有点紧张,当时给出的改法是增添一个列表什么的...

2018-03-13 10:23:38 752

原创 递归查找一个序列的最大最小值

  这个问题在群里看到的,提问的人伐已经有伪代码了,但是他没理解,以及不知道怎么用c的代码去编写(他的复试只能使用c)   看了一下伪代码,这个问题的解法是这样:(有点类似于快排)     把序列分成两块(二分),比较两块区间中的最大最小值,这里就开始递归调用得到每个区间的最大最小值。     其中:     当区间划分直至只有一个元素,当前区间最大最小值就是那个元素。     当区间划...

2018-03-07 14:31:26 1859

原创 SICP 第二章的练习

  拖了几天,开做第二章。   因为过春节,好久没看了,有些题已经是好几天或者十多天之前做的了,所以现在的想法和之前的想法可能不同   第二章的难度开始慢慢加大,因为涉及到树的遍历、映射,不断的用到递归,与不借助一些数据结构,队列,栈,而是递归构造,延迟计算,相当于构造了一个数据结构。   例如,做到2.29考虑如何遍历树什么的,分析树的结构,与2.32需要填写一个程序,理解划分子集的过程,...

2018-02-16 00:43:03 279

原创 SICP 第一章的练习

  没想到家里网欠费了,家人没回来,只能看书度日了….   于是乎翻了图书馆借来快一个月的SICP,开看…   (该记录,包含书中的大部分练习,以及一些书中内容的感受,做了85%~90%的代码题)   还有scheme的正则序、应用序求值,还有if、cond、define这些特殊形式等等知识。   代码慢慢整理,先贴上加上一些自己的理解,代码的顺序和练习的都差不多,所以有点懒得求标题号了(...

2018-02-09 01:46:44 285

原创 Python yield与send,iter与next

说起迭代器就想起了C++的,运用模板写的很精妙,让各种容器用起来十分方便,所以来学学Python一些,以方便使用python。(先写一部分,后面再补充)Iter与Next  对于可以用for遍历的容器,都是可迭代对象,如dict,list,trulp,遍历的实现应该都是通过迭代器__iter__访问,通过__next__()遍历。class Fb: def __init

2018-01-18 22:35:29 401

原创 python模拟登陆网站

上次写了一个C++的小爬虫,能够爬一些网站上的图片,但是有些网站需要登陆后才能访问内容,用C++的话需要openSSL,配置起来好像挺麻烦的,所以选择了python,以及使用reques网络库。  模拟登陆,也就是我们要知道登陆的过程,以及我们在网页中发出的请求是什么,比如,账号、密码、验证码,等等,当我们得到以上的数据,然后POST出去后,我们要记录下cookie(用于辨识用户身份以及存储一

2018-01-15 16:56:10 3280

原创 Python函数式编程 学习记录

最近写了js和C++,发现写脚本语言的爽快,数据初始化简便,一些地方不用太在意数据类型,python想用什么库直接pip就可以,简直不能再爽,所以写这篇来记录一些关于python的函数式编程。  python内置map()与reduce()函数,与迭代器Iterator相关联,map(p1,p2),p1是函数,p2是数据,实现过程应该大概是迭代器指向p1,然后把p2的元素传到p1,假设p1=f

2018-01-11 16:12:05 146

原创 简单的网络爬虫设计——下载网页图片

闲着没事,想方便的看一些小网站,就打算动手写一个爬虫,根据使用了上一次写酷q的自动回复机器人封装的clientSocket类,至于为什么不用python,几行代码就可以做完的事,用C++写了200多行,因为觉得用C++造轮子挺有意思的,虽然我的C++用得很烂…….   做完这个后,我发现我对http的请求格式,有很大的误解,所以在上次写酷q请求数据的时候,http没有发送响应消息,就发了报文。

2018-01-07 13:29:00 1162

原创 给定数m,求由n位数的组成m的数列(m>=n>0)

在一个C语言群看到有人问问题,图:   于是乎想起了以前做过一个类似的算法题,http://blog.csdn.net/qq_21049875/article/details/77849257,还没写完,不过也不想补坑了(懒),因为在看到这个问题的例如,突然想到了一种方法去解决类似的问题,也就是这道题我的解决思想,也有些dfs的感觉。   想法:数分为类似于第一个结果{5,1,1,1}然后我

2017-12-15 17:53:25 456

原创 最大质因数

在进一个c++交流群的时候,进群需要回答问题,这个问题就是群号的最大质因数,最大质因数也就是是某个数的因数且是质数。   解决方法一:脑袋一转,觉得直接用这个数去除以所有质数,然后不断更新结果,最后得到我们想要的值,于是乎便有了以下的代码,也是最坏的一种方法,因为数据量越大,两个循环跑的次数o(n^2),我们要求的值越大,求的质数也就越多,然后似乎就要跑很久的for循环,所以以下代码似乎跑不完fo

2017-12-05 16:23:38 5798

原创 虚函数表

&emsp;&emsp;C++语言利用动态联编(被调用函数的入口地址是在运行时而不是在编译时决定的)来完成虚函数的调用。 &emsp;&emsp;虚指针是作为对象的一部分存储在对象的空间中,一个类只有一个虚函数表,为了找虚函数表的地址是在哪,写了代码测试了一下。int golab = 1;class A {public: int i; A() { i = gol

2017-11-26 12:37:19 350

空空如也

空空如也

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

TA关注的人

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