![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
学习笔记
文章平均质量分 53
84970000
算法工程师
展开
-
非递归的二叉搜索树的中序遍历
本来就是想实现一下二叉树的中序遍历,就用了二叉搜索树来搞,结果发现了一个非常浅显但我之前不知道的现象,就是中序遍历二叉搜索树得到的序列是有序序列。算是涨姿势了……#include #include using namespace std;class binNode{public: int val; binNode *left,*right; binNode(int v,原创 2014-10-11 00:05:04 · 816 阅读 · 0 评论 -
Django中的F表达式来解决丢失修改问题
在使用django开发自己的博客的时候,有一个就是统计每一片博文的访问次数。一开始是这样实现的:def readArticle(req,article_id): article = Article.objects.get(id=article_id) article.read_time+=1 #read_time就是一片博文的访问次数 article.save() return ren原创 2016-03-01 19:28:24 · 1175 阅读 · 0 评论 -
STL容器的size()函数的一个容易忽略的点
STL容器的size()函数会返回容器里面的元素个数,它的类型是size_t,即无符号整型。而我之前没有留意这个,以为是整型,然后在一份代码中写了如下代码,找bug找了很久。。。for(int i=0;i<path.size()-1;i++){//some code}path是一个vector对象,我本来设想,如果path为空,就直接跳出for循环,但是事实上如果path为空,是会在里面原创 2016-02-18 11:29:54 · 1370 阅读 · 1 评论 -
linux复习杂记(三)select函数相关
1.select函数允许进程指示内核等待多个事件中的任何一个发生,并且在只有一个或多个事件发生或经历一段时间后才唤醒进程(函数返回)。函数原型为:int select(int maxfdp1,fd_set *readset,fd_set *writeset,fd_set * exceptset,const struct timeval *timeout)。第一个参数maxfdp1是指所有监听的描述原创 2016-03-16 20:27:41 · 447 阅读 · 1 评论 -
linux 复习杂记(一) linux中的进程
1.父进程与子进程拥有私有的内存映像,调用fork函数生成子进程之后,父进程对属于它的变量作出修改对于子进程来说是不可见的。但是,父进程和子进程是可以共享已经打开的文件的。如果一个文件在子进程创建之前被打开了,那么父进程对文件内容作出了修改,对于子进程来说是可见的。2.fork函数会返回两次,一个是返回给父进程的,返回值是子进程的id。一个是返回给子进程的,返回值是0。子进程可以通过getpi原创 2016-03-12 16:49:56 · 384 阅读 · 0 评论 -
linux复习杂记(二) linux网络编程中的细节
1.在学习《Unix网络编程》过程中,有一个例子,就是服务器每收到一个连接请求,在调用accept函数并获取socketid之后,就会调用一个fork函数生成一个子进程来处理这个连接(这种是多进程服务器的模式吧~)。然而在子进程的事务结束之后,会发出一个SIG_CHLD信号,告诉父进程子进程结束了。这时候如果父进程不做任何处理,子进程就会进入僵死状态,会占用着资源。这时候需要父进程捕捉这个信号,并原创 2016-03-14 22:42:20 · 334 阅读 · 0 评论 -
udp学习杂记
以下内容均是阅读《Unix网络编程》关于UDP章节的笔记。1.因为udp的数据报的传输是不可靠的,所以,如果传出一个数据报之后然后通过读取操作获得返回结果,有可能发送的数据报没有发送成功,或者回复没有接受成功,都可能使得程序在读取操作中阻塞。所以,在读取操作的时候,可以定一个定时器,防止程序永远睡眠。2.如果其他程序知道udp通信中的ip和端口号,就可以冒充通信中的另外一方,来进行攻击等恶原创 2016-03-26 19:18:55 · 357 阅读 · 0 评论 -
CAS的小实验
CAS是什么?cas是一种在多线程的编程中的一种避免竞争态的方法,作用类似与互斥锁。当多个线程对一个共享的数据进行访问的时候,如果多个线程同时对这个数据进行写,而没有采取任何方法避免多线程同时写,数据就会出现各种问题。解决这个问题的最经典的方法就是使用互斥锁了。一个线程需要对那个数据进行访问之前,就先对那个数据上锁,而互斥锁只能被一个实体(线程)获取,在获取互斥锁的线程释放那个锁之原创 2016-07-10 21:36:02 · 519 阅读 · 0 评论 -
Protobuf c++使用小坑(set_allocated函数)
protobuf是后台开发中,比较常用的数据通信协议。相对于json,具有数据压缩率高等优点。但是,在某些情况下,稍不留神容易用错。最近使用protobuf的时候,使用了相对陌生的复合类型的赋值。结果用错了,然后就莫名其妙core dump了。使用的数据类型简化如下:message Answer { optional uint32 choice = 1; op原创 2016-11-22 21:43:03 · 23683 阅读 · 1 评论