<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[e31006的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/e31006</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; e31006]]></copyright><item><title><![CDATA[【Netty学习】 阻塞式IO]]></title><link>https://blog.youkuaiyun.com/e31006/article/details/103913643</link><guid>https://blog.youkuaiyun.com/e31006/article/details/103913643</guid><author>e31006</author><pubDate>Thu, 09 Jan 2020 18:16:09 +0800</pubDate><description><![CDATA[【Netty学习】 阻塞式IO
Netty学习第一弹，先从简单的阻塞式IO说起。
本文主要介绍传统阻塞式socket通信，代码可分为Server端 和 Client端
Server端代码
package socket;

public class ServerBoot {
    private static final int PORT = 8080;

    public static vo...]]></description><category></category></item><item><title><![CDATA[NIO服务端创建过程]]></title><link>https://blog.youkuaiyun.com/e31006/article/details/103913239</link><guid>https://blog.youkuaiyun.com/e31006/article/details/103913239</guid><author>e31006</author><pubDate>Thu, 09 Jan 2020 17:50:49 +0800</pubDate><description><![CDATA[NIO服务端创建过程
//步骤1： 打开ServerSocketChannel， 用于监听客户端的连接，它是所有客户端连接的父管道，代码示例如下。 
ServerSocketChannel acceptSvr = ServerSocketChannel.open();

//步骤2：绑定监听端口，设置连接为非阻塞模式，示例代码如下：
acceptSvr.socket().bind(new Inet...]]></description><category></category></item><item><title><![CDATA[【校招真题】字节跳动]]></title><link>https://blog.youkuaiyun.com/e31006/article/details/94758724</link><guid>https://blog.youkuaiyun.com/e31006/article/details/94758724</guid><author>e31006</author><pubDate>Fri, 05 Jul 2019 20:04:29 +0800</pubDate><description><![CDATA[Bytedance Efficiency Engineering团队在8月20日搬入了学清嘉创大厦。为庆祝团队的乔迁之喜，字节君决定邀请整个EE团队，举办一个大型团建游戏-字节跳动大闯关。可是遇到了一个问题：EE团队共有n个人，大家都比较害羞，不善于与陌生人交流。这n个人每个人都向字节君提供了自己认识的人的名字，不包括自己。如果A的名单里有B，或B的名单里有A，则代表A与B互相认识。同时如果A认识...]]></description><category></category></item><item><title><![CDATA[【捡起C++】类继承]]></title><link>https://blog.youkuaiyun.com/e31006/article/details/90316876</link><guid>https://blog.youkuaiyun.com/e31006/article/details/90316876</guid><author>e31006</author><pubDate>Sat, 18 May 2019 16:22:54 +0800</pubDate><description><![CDATA[多态公有继承
​		同一个方法在派生类和基类中的行为是不同的。这种复杂的行为称为多态。有两种机制可以实现多态公有继承；


在派生类中重新定义基类的方法


使用虚方法
方法在基类被声明为虚的后，它在派生类中将自动成为虚方法。


//brass.h -- bank account classes
#ifndef BRASS_H_
#define BRASS_H_
#include &lt;str...]]></description><category></category></item><item><title><![CDATA[【捡起C++】类和动态内存分配]]></title><link>https://blog.youkuaiyun.com/e31006/article/details/90302010</link><guid>https://blog.youkuaiyun.com/e31006/article/details/90302010</guid><author>e31006</author><pubDate>Fri, 17 May 2019 23:20:05 +0800</pubDate><description><![CDATA[​	C++在内存分配时，让程序在运行时决定内存分配，而不是编译时决定。
​	C++使用new 和 delete来动态控制内存。
//strngbad.h -- flawed string class definition
#include &lt;iostream&gt;
#ifndef STRNGBAD_H_
#define STRNGBAD_H_
class StringBad {
priva...]]></description><category></category></item><item><title><![CDATA[【捡起C++】使用类]]></title><link>https://blog.youkuaiyun.com/e31006/article/details/90217564</link><guid>https://blog.youkuaiyun.com/e31006/article/details/90217564</guid><author>e31006</author><pubDate>Tue, 14 May 2019 23:35:09 +0800</pubDate><description><![CDATA[运算符重载
//mytime0.h -- Time class before operator overloading
#ifndef MYTIME0_H_
#define MYTIME0_H_
class Time {
private:
	int hours;
	int minutes;
public:
	Time();
	Time(int h, int m = 0);
	void AddMin...]]></description><category></category></item><item><title><![CDATA[【捡起C++】对象和类]]></title><link>https://blog.youkuaiyun.com/e31006/article/details/90146475</link><guid>https://blog.youkuaiyun.com/e31006/article/details/90146475</guid><author>e31006</author><pubDate>Sun, 12 May 2019 22:17:14 +0800</pubDate><description><![CDATA[过程性编程和面向对象编程
//stock00.h -- Stock class interface
//version 00
#ifndef STOCK00_H_
#define STOCK00_H_

#include &lt;string&gt;

class Stock {
private :
	std::string company;
	long shares;
	double share...]]></description><category></category></item><item><title><![CDATA[【捡起C++】内存模型和名称空间]]></title><link>https://blog.youkuaiyun.com/e31006/article/details/89928782</link><guid>https://blog.youkuaiyun.com/e31006/article/details/89928782</guid><author>e31006</author><pubDate>Tue, 07 May 2019 20:29:11 +0800</pubDate><description><![CDATA[单独编译
​	C++允许甚至鼓励将组件函数放在独立的文件中。可以单独编译这些文件，然后链接成可执行的程序。 如果只修改了一个文件，则可以只重新编译该文件，然后将它与其他文件的编译版本链接。
​	头文件中常包含的内容：

函数原型
使用#define 或 const 定义的符号常量
结构声明
类声明
模板声明
内联函数

//coordin.h -- structure templates and ...]]></description><category></category></item><item><title><![CDATA[【捡起C++】函数探幽]]></title><link>https://blog.youkuaiyun.com/e31006/article/details/89699627</link><guid>https://blog.youkuaiyun.com/e31006/article/details/89699627</guid><author>e31006</author><pubDate>Tue, 30 Apr 2019 01:15:31 +0800</pubDate><description><![CDATA[【捡起C++】函数探幽
C++内联函数
​	执行到函数调用指令时，程序将在函数调用后立即存储该指令的内存地址，并将函数参数复制到堆栈（为此保留的内存块），跳到标记函数起点的内存单元，执行函数代码（也许还需将返回值放入到寄存器中），然后跳回到地址被保存的指令处 （这与阅读文章时停下来看脚注，并在阅读完脚注后返回到以前阅读的地方类似）。来回跳跃并记录跳跃位置意味着以前使用函数时，需要一定的开销。
​	...]]></description><category></category></item><item><title><![CDATA[【捡起C++】函数——C++的编程模块]]></title><link>https://blog.youkuaiyun.com/e31006/article/details/89604732</link><guid>https://blog.youkuaiyun.com/e31006/article/details/89604732</guid><author>e31006</author><pubDate>Sat, 27 Apr 2019 17:47:58 +0800</pubDate><description><![CDATA[​	函数通过将返回值复制到指定的CPU寄存器或内存单元中来将其返回。随后，调用程序将查看该内存单元。 返回函数和调用函数必须就该内存单元中存储的数据的类型达成一致。函数原型将返回值类型告知调用程序，而函数定义命令被调用函数应返回什么类型的数据。
//arrfun1.cpp -- functions with an array argument
#include &lt;iostream&gt;
c...]]></description><category></category></item><item><title><![CDATA[【捡起C++】分支语句和逻辑运算符]]></title><link>https://blog.youkuaiyun.com/e31006/article/details/89503329</link><guid>https://blog.youkuaiyun.com/e31006/article/details/89503329</guid><author>e31006</author><pubDate>Wed, 24 Apr 2019 21:26:25 +0800</pubDate><description><![CDATA[//if.cpp -----use the if statement
#include &lt;iostream&gt;
int main() {
	using std::cin;
	using std::cout;
	char ch;
	int spaces = 0;
	int totals = 0;
	cin.get(ch);
	while (ch != '.'){
		if (ch == '...]]></description><category></category></item><item><title><![CDATA[【捡起C++】循环和关系表达式]]></title><link>https://blog.youkuaiyun.com/e31006/article/details/89463750</link><guid>https://blog.youkuaiyun.com/e31006/article/details/89463750</guid><author>e31006</author><pubDate>Mon, 22 Apr 2019 23:45:45 +0800</pubDate><description><![CDATA[//求阶乘
#include &lt;iostream&gt;
const int ArSize = 16;
int main(){
	long long  factorials[ArSize];
	factorials[0] = factorials[1] = 1LL;
	for (int i = 2; i &lt; ArSize; i++){
		factorials[i] = i * fac...]]></description><category></category></item><item><title><![CDATA[C++实现高性能内存池]]></title><link>https://blog.youkuaiyun.com/e31006/article/details/89421794</link><guid>https://blog.youkuaiyun.com/e31006/article/details/89421794</guid><author>e31006</author><pubDate>Sat, 20 Apr 2019 19:01:10 +0800</pubDate><description><![CDATA[默认分配器及其性能测试
一、概述
项目介绍
​       在 C/C++ 中，内存管理是一个非常棘手的问题，我们在编写一个程序的时候几乎不可避免的要遇到内存的分配逻辑，这时候随之而来的有这样一些问题：是否有足够的内存可供分配? 分配失败了怎么办? 如何管理自身的内存使用情况? 等等一系列问题。在一个高可用的软件中，如果我们仅仅单纯的向操作系统去申请内存，当出现内存不足时就退出软件，是明显不合理的...]]></description><category></category></item><item><title><![CDATA[【捡起C++】复合类型]]></title><link>https://blog.youkuaiyun.com/e31006/article/details/89295805</link><guid>https://blog.youkuaiyun.com/e31006/article/details/89295805</guid><author>e31006</author><pubDate>Sun, 14 Apr 2019 13:57:43 +0800</pubDate><description><![CDATA[​	结构可以存储多个不同类型的值，而指针则是一种将数据所处位置告诉计算机的变量。
字符串
​	C-风格字符串具有一种特殊的性质： 以空字符（null character）结尾，空字符被写作\0，其ASCII码为0，用标记字符串结尾。
char dog[8] = {'b', 'e', 'a', 'u', 'x', '', 'I', "I"};   // not a string
char cat[8...]]></description><category></category></item><item><title><![CDATA[【捡起C++】处理数据]]></title><link>https://blog.youkuaiyun.com/e31006/article/details/89227996</link><guid>https://blog.youkuaiyun.com/e31006/article/details/89227996</guid><author>e31006</author><pubDate>Fri, 12 Apr 2019 10:56:41 +0800</pubDate><description><![CDATA[【捡起C++】处理数据
​      面向对象的本质是设计并扩展自己的数据类型。
​      为了把信息存储到计算机中，程序必须记录3个基本属性：

信息将存储在哪里
要存储什么值
存储何种类型的信息

int braincount;
braincount = 5;
/*
	程序找到一块能存储整数的内存，将该内存标记为braincount，并将5复制到该内存单元中；然后，可在程序中使用brain...]]></description><category></category></item><item><title><![CDATA[C++实现即时通信软件]]></title><link>https://blog.youkuaiyun.com/e31006/article/details/89204275</link><guid>https://blog.youkuaiyun.com/e31006/article/details/89204275</guid><author>e31006</author><pubDate>Thu, 11 Apr 2019 10:25:41 +0800</pubDate><description><![CDATA[1.1 实验内容
本实验使用 C++ 实现一个具备服务器端和客户端的即时通信聊天室。
这个项目会学习C++网络开发的基本概念，同时可以熟悉Linux下的C++程序编译方法及简单的Makefile编写。
1.2 实验知识点

C++语言基本语法
基本的Makefile
C++面向对象程序设计
epoll 网络编程

1.3 实验环境

g++
Xfce 终端

2.1 需求分析
在这个聊天室软件中我...]]></description><category></category></item><item><title><![CDATA[【捡起C++】开始学习C++]]></title><link>https://blog.youkuaiyun.com/e31006/article/details/89034591</link><guid>https://blog.youkuaiyun.com/e31006/article/details/89034591</guid><author>e31006</author><pubDate>Thu, 04 Apr 2019 20:06:09 +0800</pubDate><description><![CDATA[C++预处理器和iostream文件
​	如果程序要使用C++输入或输出工具，需提供这样两行代码
#include&lt;iostream&gt;
using namespace std;

​	可使用其它代码替换第二行，这么使用可以简化代码。
​        C++和C一样，也使用一个预处理器，该程序在进行主编译前对源文件进行处理， 它处理名称以#开头的编译指令。在编译程序时，自动执行。
#i...]]></description><category></category></item><item><title><![CDATA[【捡起C++】程序创建的技巧①]]></title><link>https://blog.youkuaiyun.com/e31006/article/details/88984853</link><guid>https://blog.youkuaiyun.com/e31006/article/details/88984853</guid><author>e31006</author><pubDate>Wed, 03 Apr 2019 00:18:27 +0800</pubDate><description><![CDATA[​    源代码  —&gt;   编译器 —&gt;  目标代码  —&gt;  链接程序   —&gt; 可执行代码
​    编译源代码，将源代码翻译成机器语言，包含了翻译后的程序的文件就是目标代码。
​    链接是将目标代码同使用的函数的目标代码以及一些标准的启动代码（startup code）组合起来，生成程序的运行阶段版本。
​    包含最终产品的文件被称为 可执行代码
1、UNI...]]></description><category></category></item><item><title><![CDATA[【LeetCode5】最长回文子串]]></title><link>https://blog.youkuaiyun.com/e31006/article/details/87616481</link><guid>https://blog.youkuaiyun.com/e31006/article/details/87616481</guid><author>e31006</author><pubDate>Mon, 18 Feb 2019 13:51:30 +0800</pubDate><description><![CDATA[LC5.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: &amp;amp;quot;babad&amp;amp;quot;
Output: &amp;amp;quot;bab&amp;amp;quot;
Note: &amp;am]]></description><category></category></item><item><title><![CDATA[【2018校招真题】拼多多2. 大整数相乘]]></title><link>https://blog.youkuaiyun.com/e31006/article/details/86750221</link><guid>https://blog.youkuaiyun.com/e31006/article/details/86750221</guid><author>e31006</author><pubDate>Sat, 02 Feb 2019 15:59:45 +0800</pubDate><description><![CDATA[
题目描述
有两个用字符串表示的非常大的大整数,算出他们的乘积，也是用字符串表示。不能用系统自带的大整数类型。
输入描述:
空格分隔的两个字符串，代表输入的两个大整数

输出描述:
输入的乘积，用字符串表示

示例1
输入
72106547548473106236 982161082972751393

输出
70820244829634538040848656466105986748


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