摘要: 在linux下开发难免会遇到bug,但是由于没有图形IDE,导致debug也变得困难,其实只要掌握一些常用的debug工具,一些错误就能很快解决,本文就介绍一些常用的工具用以调试: log 输出log永远是最简单快捷的调试方式,可以快速定位bug,通过设置日志级别控制日志的输出详略程度,结合一些文本 阅读全文
posted @ 2017-07-19 10:20 gaorong404 阅读(11115) 评论(0) 推荐(2) 编辑
摘要: 这几天读完了UNP v2,对进程间通信与同步的方式有所了解,现对主要的知识点总结如下: 根据出现的历史,先有的管道,FIFO,信号,然后是systemV IPC,再是后来的Poxis IPC,systemV IPC是内核持续性的,而Poxis根据实现不同有的是内核有的是文件系统持续性。(内核持续性是 阅读全文
posted @ 2017-07-03 22:57 gaorong404 阅读(626) 评论(0) 推荐(0) 编辑
摘要: Linux系统IO中write原型为 ssize_t write(int filedes, const void * buff, size_t nbytes) ; 当调用write写数据的时候,调用完成后write直接返回,但是磁盘是个慢速设备,操作系统会将数据保存在内核中的缓冲区中,并负责异步地将 阅读全文
posted @ 2017-06-11 21:59 gaorong404 阅读(1461) 评论(1) 推荐(0) 编辑
摘要: linux系统下一切皆文件,通过虚拟文件系统(VFS)的机制将所有底层屏蔽掉,用户可以通过统一的接口来实现对不同驱动的操作,对于每一个文件需要一个引用来指示,此时文件描述符应用而生,文件描述符类似于widows下的handle,对于文件的大部分操作都是通过这个描述符来操作的,例如read,write 阅读全文
posted @ 2017-06-10 09:01 gaorong404 阅读(1221) 评论(0) 推荐(4) 编辑
摘要: 今天我们看一下动态规划的硬币找零问题,主要通过一系列编程题分析动态规划的规律,只要掌握这一规律,许多动态规划的相关问题都可以类比得到。 题目1:给定数组arr,arr中所有的值都是正数且不重复。每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个整数aim代表要找的钱数,求组成aim的 阅读全文
posted @ 2017-03-16 22:31 gaorong404 阅读(11537) 评论(3) 推荐(4) 编辑
摘要: muduo是一个高质量的Reactor网络库,采用one loop per thread + thread pool架构实现,代码简洁,逻辑清晰,是学习网络编程的很好的典范。 muduo的代码分为两部分,base和net,base部分实现一些基础功能,例如log, thread, threadpoo 阅读全文
posted @ 2017-02-28 12:41 gaorong404 阅读(15504) 评论(3) 推荐(7) 编辑
摘要: 简介: 用pyhon爬取动态页面时普通的urllib2无法实现,例如下面的京东首页,随着滚动条的下拉会加载新的内容,而urllib2就无法抓取这些内容,此时就需要今天的主角selenium。 Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在 阅读全文
posted @ 2017-02-23 01:28 gaorong404 阅读(7215) 评论(0) 推荐(0) 编辑
摘要: sed做为linux下的三剑客,自然功能强大,但是如果使用不当,反而适得其反,今天就因为这个命令采了很深坑,分析一下原因,以谏后来者。 情景回顾: 项目中使用的一个python爬虫采用的是多线程并发爬取,输入为一个存放url的文件,因为程序随时可能停止,所以每次重启程序的时候需要将以爬取过的url去 阅读全文
posted @ 2017-01-02 23:49 gaorong404 阅读(3575) 评论(1) 推荐(1) 编辑
摘要: 索引(Index)是什么? 它是用于提高数据库表数据访问速度的数据库对象。 MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是数据结构。 我们知道,数据库查询是数据库的最主要功能之一。我们都希望查询数据的速度能尽可能的快 阅读全文
posted @ 2016-10-15 15:48 gaorong404 阅读(437) 评论(0) 推荐(0) 编辑
摘要: 在网络编程的时候往往需要对Linux下原生的pthread库中的函数进行封装,使其使用起来更加方便,封装方法一般有两种:面向对象和基于对象,下面将分别介绍这两种方式,最后统一分析这两种方式的优缺点: 面向对象: 面向对象的封装方式是通过虚函数提供回调功能,我们创建一个Thread类,然后设置一个ru 阅读全文
posted @ 2016-08-28 19:43 gaorong404 阅读(697) 评论(0) 推荐(0) 编辑