<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Damage]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Damage233</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Damage233]]></copyright><item><title><![CDATA[2019界秋招（C++）]]></title><link>https://blog.youkuaiyun.com/Damage233/article/details/82706788</link><guid>https://blog.youkuaiyun.com/Damage233/article/details/82706788</guid><author>Damage233</author><pubDate>Fri, 14 Sep 2018 17:53:33 +0800</pubDate><description><![CDATA[ 

在牛客网讨论区 淘到的某大佬的GitHub，感觉非常棒，受益良多

https://github.com/linw7/Skill-Tree

------------------------------------------------------------------------------------------------------------------------------...]]></description><category></category></item><item><title><![CDATA[heap（max-heap最大堆、min-heap最小堆）]]></title><link>https://blog.youkuaiyun.com/Damage233/article/details/81735354</link><guid>https://blog.youkuaiyun.com/Damage233/article/details/81735354</guid><author>Damage233</author><pubDate>Thu, 16 Aug 2018 10:24:14 +0800</pubDate><description><![CDATA[参考： 《STL源码剖析》

 

heap概述

heap并不归属于STL容器组件，它是个幕后英雄，扮演priority_queue的助手（底层实现）。所谓binary heap就是一种完全二叉树，也就是说，整颗binary tree除了最底层的叶子节点之外，是填满的，而最底层的叶节点由左至右又不得有空隙。



完全二叉树整棵树内没有任何节点漏洞，这带来一个好处：我们可以利用array来存储所...]]></description><category></category></item><item><title><![CDATA[8.15 网易游戏互动娱乐提前批面试（初级游戏研发工程师）]]></title><link>https://blog.youkuaiyun.com/Damage233/article/details/81702375</link><guid>https://blog.youkuaiyun.com/Damage233/article/details/81702375</guid><author>Damage233</author><pubDate>Wed, 15 Aug 2018 13:52:44 +0800</pubDate><description><![CDATA[1、笔试（手撕代码）

两道题，半小时。

1）单字符串压缩 ：

输入：ABBBCCD ， 输出AB3C2D

2）多字符串压缩

输入：AABCABCD，输出A(ABC)2D（暴力写了一半，时间到了）

2、一面

0）自我介绍

1）笔试代码交给面试官。（我介绍了自己代码的思路）

2）多态，多态的实现，派生类虚表的布局是怎样的（虚表布局不太清楚）

3）模板类了解吗？实现一个unique_...]]></description><category></category></item><item><title><![CDATA[C++智能指针]]></title><link>https://blog.youkuaiyun.com/Damage233/article/details/81569497</link><guid>https://blog.youkuaiyun.com/Damage233/article/details/81569497</guid><author>Damage233</author><pubDate>Fri, 10 Aug 2018 21:00:19 +0800</pubDate><description><![CDATA[参考：https://www.cnblogs.com/lsgxeva/p/7788061.html   和 《Linux多线程服务端编程》

                                             

                      C++11——智能指针

C++11中有unique_ptr、shared_ptr与weak_ptr等智能指针(smar...]]></description><category></category></item><item><title><![CDATA[待弄清的知识点]]></title><link>https://blog.youkuaiyun.com/Damage233/article/details/81453035</link><guid>https://blog.youkuaiyun.com/Damage233/article/details/81453035</guid><author>Damage233</author><pubDate>Fri, 10 Aug 2018 10:58:29 +0800</pubDate><description><![CDATA[1）如何检测内存泄露


valgrind工具集的memcheck工具


2）线程池

3）智能指针

4）浏览器打开一个链接的全过程

5）fork和vfork，fork做了哪些工作

6）守护进程的创建



	背景知识：

	守护进程是脱离终端并在后台运行的进程，执行过程中信息不会显示在终端上并且也不会被终端发出的信号打断。
	
	
	操作步骤：

	
		创建子进程，父进程退出：fork...]]></description><category></category></item><item><title><![CDATA[Linux IPC之共享内存]]></title><link>https://blog.youkuaiyun.com/Damage233/article/details/81480484</link><guid>https://blog.youkuaiyun.com/Damage233/article/details/81480484</guid><author>Damage233</author><pubDate>Tue, 07 Aug 2018 14:39:43 +0800</pubDate><description><![CDATA[参考：

1）https://blog.youkuaiyun.com/ruizeng88/article/details/6702346

2）https://github.com/linw7/Skill-Tree/blob/master/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F.md

 

共享内存


共享内存（shared memory）是最简单的Linux进程间通信方...]]></description><category></category></item><item><title><![CDATA[Linux常用命令]]></title><link>https://blog.youkuaiyun.com/Damage233/article/details/81411977</link><guid>https://blog.youkuaiyun.com/Damage233/article/details/81411977</guid><author>Damage233</author><pubDate>Sat, 04 Aug 2018 16:01:36 +0800</pubDate><description><![CDATA[gcc


-o：指定生成的输出文件；
-E：仅执行编译预处理；
-S：将C代码转换为汇编代码；
-wall：显示警告信息；
-c：仅执行编译操作，不进行连接操作。

g++

 

gdb

netstat

 ...]]></description><category></category></item><item><title><![CDATA[阿里新零售一面（C++后台开发）]]></title><link>https://blog.youkuaiyun.com/Damage233/article/details/81393062</link><guid>https://blog.youkuaiyun.com/Damage233/article/details/81393062</guid><author>Damage233</author><pubDate>Fri, 03 Aug 2018 19:36:38 +0800</pubDate><description><![CDATA[1、自我介绍

2、科研经历（没说太清楚，面试官说下一个话题）

3、说说项目（说了一下华为的软挑和京东的物流优化的比赛）

4、C++基本知识（iphone不太会录音，只记得下面几个问题了）

1）说说static

2）说说多态

3）如何实现多态的

4）虚表和虚表指针

5）什么时候用虚析构函数

6）GDB调试 ，问了几个命令 （命令有点记不住，崩了）

7）动态链接和静态链接说一下 （...]]></description><category></category></item><item><title><![CDATA[二叉搜索树、AVL树、RB-tree（红黑树）]]></title><link>https://blog.youkuaiyun.com/Damage233/article/details/81179656</link><guid>https://blog.youkuaiyun.com/Damage233/article/details/81179656</guid><author>Damage233</author><pubDate>Tue, 24 Jul 2018 14:35:57 +0800</pubDate><description><![CDATA[参见：《STL源码剖析》

 

（一）二叉搜索树

二叉树：一个二叉树如果不为空，便是由一个根节点和左右二叉子树组成。

二叉搜索树：1）是一颗二叉树；2）任何节点的键值一定大于其左子树中的每一个节点的键值，并小于其右子树中的每一个节点的键值。

查找：



插入：



删除：

1）若是叶子节点直接删除，修改父节点的指针。

2）若只有一个子节点，直接将其子节点连至其父节点



3）若有...]]></description><category></category></item><item><title><![CDATA[基于TCP协议的网络程序]]></title><link>https://blog.youkuaiyun.com/Damage233/article/details/81126069</link><guid>https://blog.youkuaiyun.com/Damage233/article/details/81126069</guid><author>Damage233</author><pubDate>Fri, 20 Jul 2018 10:00:13 +0800</pubDate><description><![CDATA[参见：Linux C编程一站式学习

 

下图是基于TCP协议的客户端/服务器程序的一般流程（该图出自[UNPv13e]）：



图 37.2. TCP协议通讯流程



 

建立连接的过程（该图出自[UNPv13e]）：



图 37.3. 建立连接的过程



 


服务器调用socket()、bind()、listen()完成初始化后，调用accept()阻塞等待，处于监听端口的状...]]></description><category></category></item><item><title><![CDATA[socket编程基础]]></title><link>https://blog.youkuaiyun.com/Damage233/article/details/81121639</link><guid>https://blog.youkuaiyun.com/Damage233/article/details/81121639</guid><author>Damage233</author><pubDate>Thu, 19 Jul 2018 20:54:58 +0800</pubDate><description><![CDATA[参见：Linux C编程一站式学习

 

socket这个词可以表示很多概念：



	在TCP/IP协议中，“IP地址+TCP或UDP端口号”唯一标识网络通讯中的一个进程，“IP地址+端口号”就称为socket。
	
	
	在TCP协议中，建立连接的两个进程各自有一个socket来标识，那么这两个socket组成的socket pair就唯一标识一个连接。socket本身有“插座”的意思，因此...]]></description><category></category></item><item><title><![CDATA[2018 C++开发工程师面试题大合集（持续更新）]]></title><link>https://blog.youkuaiyun.com/Damage233/article/details/81116115</link><guid>https://blog.youkuaiyun.com/Damage233/article/details/81116115</guid><author>Damage233</author><pubDate>Thu, 19 Jul 2018 15:26:16 +0800</pubDate><description><![CDATA[ 

（一）2018.4 拼多多实习服务端

1、 一个C++源文件从文本到可执行文件经历的过程


对于C/C++编写的程序，从源代码到可执行文件，一般经过下面四个步骤：

1).预处理，产生.ii文件

2).编译，产生汇编文件(.s文件)

3).汇编，产生目标文件(.o或.obj文件)

4).链接,产生可执行文件(.out或.exe文件)


2、#include 的顺序以及尖叫括号和双...]]></description><category></category></item><item><title><![CDATA[TCP/IP协议基础]]></title><link>https://blog.youkuaiyun.com/Damage233/article/details/81109292</link><guid>https://blog.youkuaiyun.com/Damage233/article/details/81109292</guid><author>Damage233</author><pubDate>Thu, 19 Jul 2018 11:44:36 +0800</pubDate><description><![CDATA[参见：Linux C编程一站式学习

 

1. 以太网(RFC 894)帧格式

 

以太网的帧格式如下所示（该图出自[TCPIP]）：



图 36.6. 以太网帧格式



 


其中的源地址和目的地址是指网卡的硬件地址（也叫MAC地址），长度是48位，是在网卡出厂时固化的。用ifconfig命令看一下，“HWaddr 00:15:F2:14:9E:3F”部分就是硬件地址。协议字段有三...]]></description><category></category></item><item><title><![CDATA[TCP/IP协议栈与数据包封装]]></title><link>https://blog.youkuaiyun.com/Damage233/article/details/81108810</link><guid>https://blog.youkuaiyun.com/Damage233/article/details/81108810</guid><author>Damage233</author><pubDate>Thu, 19 Jul 2018 09:12:34 +0800</pubDate><description><![CDATA[参见：Linux C编程一站式学习

 

TCP/IP协议栈与数据包封装

TCP/IP网络协议栈分为应用层（Application）、传输层（Transport）、网络层（Network）和链路层（Link）四层。如下图所示（该图出自[TCPIP]）。



图 36.1. TCP/IP协议栈



 

两台计算机通过TCP/IP协议通讯的过程如下所示（该图出自[TCPIP]）。



图 ...]]></description><category></category></item><item><title><![CDATA[线程]]></title><link>https://blog.youkuaiyun.com/Damage233/article/details/81097814</link><guid>https://blog.youkuaiyun.com/Damage233/article/details/81097814</guid><author>Damage233</author><pubDate>Wed, 18 Jul 2018 15:36:03 +0800</pubDate><description><![CDATA[参见：Linux C编程一站式学习

 

 

1.线程的概念

我们知道，进程在各自独立的地址空间中运行，进程之间共享数据需要用mmap或者进程间通信机制，本节我们学习如何在一个进程的地址空间中执行多个线程。有些情况需要在一个进程中同时执行多个控制流程，这时候线程就派上了用场，比如实现一个图形界面的下载软件，一方面需要和用户交互，等待和处理用户的鼠标键盘事件，另一方面又需要同时下载多个文件，等...]]></description><category></category></item><item><title><![CDATA[进程]]></title><link>https://blog.youkuaiyun.com/Damage233/article/details/81093867</link><guid>https://blog.youkuaiyun.com/Damage233/article/details/81093867</guid><author>Damage233</author><pubDate>Wed, 18 Jul 2018 10:37:30 +0800</pubDate><description><![CDATA[参见：Linux C编程一站式学习

 

1.进程控制

 

1）fork函数：



 


fork函数的特点概括起来就是“调用一次，返回两次”，在父进程中调用一次，在父进程和子进程中各返回一次。从上图可以看出，一开始是一个控制流程，调用fork之后发生了分叉，变成两个控制流程，这也就是“fork”（分叉）这个名字的由来了。子进程中fork的返回值是0，而父进程中fork的返回值则是子进程...]]></description><category></category></item><item><title><![CDATA[信号]]></title><link>https://blog.youkuaiyun.com/Damage233/article/details/81063232</link><guid>https://blog.youkuaiyun.com/Damage233/article/details/81063232</guid><author>Damage233</author><pubDate>Mon, 16 Jul 2018 13:44:25 +0800</pubDate><description><![CDATA[ 

参见：Linux C编程一站式学习

 

（一）信号的基本概念

 

 

为了理解信号，先从我们最熟悉的场景说起：



	用户输入命令，在Shell下启动一个前台进程。
	
	
	用户按下Ctrl-C，这个键盘输入产生一个硬件中断。
	
	
	如果CPU当前正在执行这个进程的代码，则该进程的用户空间代码暂停执行，CPU从用户态切换到内核态处理硬件中断。
	
	
	终端驱动程序将Ctr...]]></description><category></category></item><item><title><![CDATA[gdb入门------gdb基本命令]]></title><link>https://blog.youkuaiyun.com/Damage233/article/details/81053193</link><guid>https://blog.youkuaiyun.com/Damage233/article/details/81053193</guid><author>Damage233</author><pubDate>Sun, 15 Jul 2018 15:19:32 +0800</pubDate><description><![CDATA[参见：Linux C编程一站式学习1.单步执行和跟踪函数调用backtrace（或bt）查看各级函数调用及参数finish执行到当前函数返回，然后停下来等待命令frame（或f） 帧编号选择栈帧info（或i） locals查看当前栈帧局部变量的值list（或l）列出源代码，接着上次的位置往下列，每次列10行list 行号列出从第几行开始的源代码list 函数名列出某个函数的源代码next（或n）...]]></description><category></category></item><item><title><![CDATA[linux最常用的20个命令]]></title><link>https://blog.youkuaiyun.com/Damage233/article/details/81050443</link><guid>https://blog.youkuaiyun.com/Damage233/article/details/81050443</guid><author>Damage233</author><pubDate>Sun, 15 Jul 2018 09:59:24 +0800</pubDate><description><![CDATA[转自：https://www.oschina.net/translate/useful-linux-commands-for-newbies?lang=chs&amp;amp;page=2#

 

1. ls命令

ls命令是列出目录内容(List Directory Contents)的意思。运行它就是列出文件夹里的内容，可能是文件也可能是文件夹。

 


root@tecmint:~# ls

A...]]></description><category></category></item><item><title><![CDATA[TCP客户端/服务器网络编程------多进程并发模型（附带实现）]]></title><link>https://blog.youkuaiyun.com/Damage233/article/details/81036127</link><guid>https://blog.youkuaiyun.com/Damage233/article/details/81036127</guid><author>Damage233</author><pubDate>Fri, 13 Jul 2018 18:43:43 +0800</pubDate><description><![CDATA[同步阻塞迭代模型是最简单的一种IO模型。1）服务器端代码main函数#include	&quot;unp.h&quot;

int
main(int argc, char **argv)
{
	int					listenfd, connfd;
	pid_t				childpid;
	socklen_t			clilen;
	struct sockaddr_in	cliaddr, servaddr;

	liste...]]></description><category></category></item></channel></rss>