自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

田航语

从简单开始,需要耐心,注重细节

  • 博客(138)
  • 资源 (2)
  • 收藏
  • 关注

原创 threadpoll epoll implementing server

IntroductionThe project uses Linux epoll and thread poll build the server and have a client demo.the thread pool has two-part, one is buffer, like a message queue, use a producer-consumer model impl...

2020-01-20 21:54:08 219

原创 Redis源码阅读 ae.c

Redis 使用事件驱动的方式实现 IO 多路复用,其核心是基于第三方库的事件循环库。Redis 支持多种事件循环库,包括:libeventlibevae (Redis 自带的事件循环库)其中,Redis 自带的事件循环库 ae 较为轻量级,且支持跨平台,因此 Redis 默认使用 ae 作为事件循环库。在 Redis 启动时,会创建一个事件循环对象,并注册一些必要的事件。事件循环对象中包含了一个事件池和一个定时器队列。是 Redis 中的一个事件循环库,是实现 Redis 事件驱动模型的核心。

2023-03-28 10:55:27 328

原创 Bidirectional BFS双向BFS

from collections import dequeclass Solution: def doubleBFS(start,end): if start == end: return 1 # 分别从起点和终点开始的两个队列 startQueue,endQueue = deque()...

2020-01-06 22:48:40 305

原创 69. Binary Tree Level Order Traversal

/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * TreeNode(int val) { * this->val = val; * this->left = this-&...

2020-01-06 17:05:32 141

原创 LintCode 137. 克隆图

克隆图中文English克隆一张无向图. 无向图的每个节点包含一个 label 和一个列表 neighbors. 保证每个节点的 label 互不相同.你的程序需要返回一个经过深度拷贝的新图. 新图和原图具有同样的结构, 并且对新图的任何改动不会对原图造成任何影响.Example样例1输入:{1,2,4#2,1,4#4,1,2}输出:{1,2,4#2,1,4#4,1,2}解...

2020-01-06 10:02:19 120

原创 Leetcode 5. Longest Palindromic Substring

Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.Example 1:Input: “babad”Output: “bab”Note: “aba” is also a valid answer.Example ...

2020-01-05 00:21:55 71

原创 c++ shared_ptr 智能指针循环引用问题

智能指针的循环引用shared_ptr and weak_ptr differences“循环引用”简单来说就是:两个对象互相使用一个shared_ptr成员变量指向对方的会造成循环引用。导致引用计数失效。下面给段代码来说明循环引用:#include<iostream>#include <memory>using namespace std;class...

2018-05-11 08:56:02 1472

原创 构造函数或者析构函数中调用虚函数会怎么样?

简要结论: 1. 从语法上讲,调用完全没有问题。 2. 但是从效果上看,往往不能达到需要的目的。 Effective 的解释是: 派生类对象构造期间进入基类的构造函数时,对象类型变成了基类类型,而不是派生类类型。 同样,进入基类析构函数时,对象也是基类类型。所以,虚函数始终仅仅调用基类的虚函数(如果是基类调用虚函数),不能达到多态的效果,所以放在构造函数中...

2018-04-24 15:05:12 6884

原创 c++ new 和 malloc 的区别

new分配内存按照数据类型进行分配,malloc分配内存按照大小分配; new不仅分配一段内存,而且会调用构造函数,但是malloc则不会。new的实现原理?但是还需要注意的是,之前看到过一个题说int* p = new int与int* p = new int()的区别,因为int属于C++内置对象,不会默认初始化,必须显示调用默认构造函数,但是对于自定义对象都会默认调用构造函数初始化。...

2018-04-24 06:59:31 274

原创 c++ 四种强制类型转换介绍

博文阅读,再次复习一下。0.0 c++ 四种强制类型转换介绍

2018-04-23 20:08:20 267

转载 linux中fork()函数详解(原创!!实例讲解)

博文阅读: linux中fork()函数详解(原创!!实例讲解) 主要特性就是创建子进程会复制父进程的代码和空间。

2018-04-23 08:02:43 224

原创 题解 考察 虚函数 拷贝构造 赋值构造

输出什么:#include <iostream>using namespace std;struct A { A() { local_var++; } virtual void func() { cout << "A" << endl; } static int local_var...

2018-04-22 16:38:15 158

转载 TCP长连接与短连接的区别

TCP长连接与短连接的区别

2018-04-22 15:13:56 169

转载 C++中虚函数表解析 很清晰

一、 什么是虚函数? C++ 虚函数表解析C++中的虚函数的作用?虚函数表安全性C++中的虚函数的作用? C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现...

2018-04-22 15:09:45 180

转载 游戏服务端开发要点

游戏服务端开发要点

2018-04-22 14:06:08 228

转载 TCP建立连接为什么是三次握手,为什么不是两次或四次?

TCP建立连接为什么是三次握手,为什么不是两次或四次? 第一次握手:客户端发送TCP包,置SYN标志位为1,将初始序号X,保存在包头的序列号(Seq)里。 第二次握手:服务端回应确认包,置SYN标志位为1,置ACK为X+1,将初始序列号Y,保存在包头的序列号里。 第三次握手:客户端对服务端的确认包进行确认,置SYN标志位为0,置ACK为Y+1,置序列号为Z。为什么...

2018-04-22 14:00:45 2130

原创 C++中Static作用和使用方法

C++中Static作用和使用方法C++中Static作用和使用方法 static作为编程语言里面一种重要的数据类型,它的地位在面试的过程里也是相当的高。为什么要引入static?  函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间,大家知道,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一个问题: 如果想将函数中此变量的值保存至下一次调用时,如...

2018-04-22 10:52:54 372

原创 boost recursive_mutex(递归式互斥量)

谈谈recursive_mutex(递归式互斥量) 如果一个线程中可能在执行中需要再次获得锁的情况,按常规的做法会出现死锁。 boost::recursive_mutex g_rec_mutex; boost::recursive_mutex::scoped_lock lock(g_rec_mutex); // 当然这种写法也可以 // bo...

2018-04-21 12:02:30 2394

原创 boost coroutine2 协程

boost coroutine2#include<cstdlib>#include<iostream>#include<boost/coroutine2/all.hpp>int main(){ boost::coroutines2::coroutine<int>::pull_type source( [](b...

2018-04-21 09:43:39 589

原创 boost coroutine2 fibonacci.cpp

boost coroutine2#include<cstdlib>#include<iostream>#include<boost/coroutine2/all.hpp>int main(){ boost::coroutines2::coroutine<int>::pull_type source( [](boost...

2018-04-21 09:33:14 185

原创 leetcode 27. Remove Element

Given an array and a value, remove all instances of that value in place and return the new length.Do not allocate extra space for another array, you must do this in place with constant memory.

2017-10-26 16:37:31 200

原创 X的平方根

题目:思路:二分查找#includeint sqrt(int x){ long long low=0,mid = 0; long long high = (long long)x; while(low<=high){ mid = (low + high)/2; if(mid*mid == x) return mid;

2017-08-23 19:56:22 282

原创 O_NONBLOCK vs O_NDELAY

O_NONBLOCK vs O_NDELAY in particular things like a read with O_NDELAY can in some situations return a 0 instead of an error and EAGAIN… Since 0 normally means EOF… you have to be aware of this b

2017-08-22 17:01:29 408

原创 奇怪的国家

题目思路:以字符比较#include#include#define MAX 50int main(){ char N[MAX]={'\0'},M[MAX],A[MAX]; scanf("%s\n",N); scanf("%s\n",M); for(int i = 0;i< strlen(M); i++) {

2017-08-21 20:47:34 339

原创 function pointer reinterpret_cast

htonl, htons, ntohl, ntohs - convert values between host and network byte order#include <arpa/inet.h>uint32_t htonl(uint32_t hostlong);uint16_t htons(uint16_t hostshort);uint32_t ntohl(uint32_t netl

2017-08-21 17:10:05 304

原创 Linux 相关笔记记录1

C++11/C++14 7. Threads with Shared Memory and Mutex - 2017[IPC:Shared Memory]int shmget(key_t key, size_t size, int shmflg);int shmctl(int shmid, int cmd, struct shmid_ds *buf);void *shmat(int shmid, c

2017-08-21 15:49:41 210

原创 泥塑课

泥塑课[题目](https://nanti.jisuanke.com/t/6)#include#include int main(){ int col = 0; int length[50]={0},width[50]={0},higth[50]={0}; char name[90][80]; memset(name,'\0',sizeof(nam

2017-08-17 19:50:10 238

原创 斐波那契数列

斐波那契数列#includeint main(){ int i=0,n=0, ans[100]={0}; scanf("%d",&n); ans[0] = 0; ans[1] = 1; for(i=2;i<=n;i++) { ans[i] = ans[i-1] + ans[i-2]; //printf("%d,%

2017-08-17 19:48:35 185

原创 计蒜课-判断质数

没啥意义,好久没写而已#includeint main(){ int i=0,num=1; bool flag= false; scanf("%d",&num); if(num == 2) { printf("YES\n"); }else{ for(i = 2; i <= num/2; ++i){

2017-08-16 12:20:00 220

原创 unix 环境高级编程阅读笔记1-5章节

Unix 环境高级编程读者:注意仅仅是记录自己阅读进度,坚持阅读,没有深度 源代码:http://www.libpix.org/apue/ 第二版http://www.apuebook.com/code3e.html 第三版第1章UNIX基础知识文件和目录 2017年7月20日系统调用和库函数第2章 UNIX标准话及实现最大文件描述符 sysconf第3章 文件I/O引言

2017-07-26 11:13:56 275

原创 高性能mysql 第8章 优化服务器设置 阅读笔记

高性能mysql 2017年7月11日第8章 优化服务器设置如果不知道配置路径$ which myslqd/usr/sbin/mysqld –verbose –help | grep -A 1 ‘Default options’8.3 创建mysql 配置文件不要把Socket文件和PID文件放到Mysql编译默认的位置,在不同的Mysql版本里这可能导致一些错误设置缓冲池8.4配置内存使用

2017-07-11 17:02:09 678

原创 CDN 技术详解--读书笔记-完

第三章 内容缓存工作原理及实现Cookie Session服务器将Session ID返回给浏览器两种方法。 一种是Cookie方法 一种是URL重写方法 应用场景 Cookie 是Remember me 服务 Session ID 是想登陆信息与关键信息放入一个有session ID关联的数据库或者文件。 - 安全性 Session > Cookie - 性

2017-05-16 21:05:19 770

原创 剑指offer 数据流中的中位数

题目描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。思路:使用使用大小堆class Solution { priority_queue, less > p;    priority_queue, greater > q;

2017-04-25 21:27:09 312

原创 剑指offer 二叉搜索树的第k个结点

题目描述给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。思路:递归实现/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int

2017-04-25 17:03:07 212

原创 剑指offer 序列化二叉树

题目描述请实现两个函数,分别用来序列化和反序列化二叉树思路:使用递归实现,序列化,如果为空,序列化为‘#’ 是节点值‘, 反序列化,如果是‘#’返回为空,如果是‘,’,转换为对应节点值。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right;

2017-04-24 15:39:08 263

原创 剑指offer 把二叉树打印成多行

题目描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。思路:按层次遍历,使用一个队列。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(

2017-04-24 09:59:55 254

原创 剑指offer 对称的二叉树

题目描述请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。思路:递归做法,设p,q分别为左右子树,p,q的值相等,对称条件即为:p的左子树和q的右子树对称,p的右子树和q的左子树对称。/*struct TreeNode { int val; struct TreeNode *left;

2017-04-23 15:44:46 717

原创 剑指offer 二叉树的下一个结点

题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。思路:两类情况,一是正常的左根右顺序访问,另外一种是,没有左孩子,下一节点将会指向上一节点的根节点,或者最后为空的情况。/*struct TreeLinkNode { int val; struct Tree

2017-04-23 09:46:54 210

原创 剑指offer 删除链表中重复的结点

题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5思路1:当前节点值与下一节点值进行比较,如果重复,则直到找到不重复的节点,然后将节点添加到没有重复的开始节点之后。/*struct ListNode { int val; str

2017-04-23 08:36:01 261

原创 剑指offer 链表中环的入口结点

题目描述一个链表中包含环,请找出该链表的环的入口结点。思路:常见的方法,双指针追击问题,pFast指针每次走两步,pSlow指针每次走一步,如果pFast能够与pSlow指针相遇,则一定有环。关于证明:参考/*struct ListNode { int val; struct ListNode *next; ListNode(int x

2017-04-22 21:11:32 314

百度地图最新API查找附近美食

百度地图最新API查找附近美食

2016-08-12

Notepad++使用手册

使用notepad++,快速编写web,结合插件使用,真正提高效率。

2015-01-19

空空如也

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

TA关注的人

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