<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[yuleidnf的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/yuleidnf</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; yuleidnf]]></copyright><item><title><![CDATA[计算机网络 - (二)NAT的工作基本原理]]></title><link>https://blog.youkuaiyun.com/yuleidnf/article/details/106446185</link><guid>https://blog.youkuaiyun.com/yuleidnf/article/details/106446185</guid><author>yuleidnf</author><pubDate>Thu, 04 Jun 2020 23:48:36 +0800</pubDate><description><![CDATA[计算机网络
内容目录开篇回顾NAT的工作基本原理NAT是什么？
开篇
上一章我们以宽泛的形式介绍了计算机网络的数据传递，知道了一份数据是如何从一台计算机传输到另一台计算机。很粗略，并且忽视了很多重要细节和专有名词。以至于留下了很多谜团，这次我们就穿越层层迷雾继续更加深入探究计算机网络这个庞大的世界。
回顾
有必要回顾下IP地址分类 和 网段区分 的知识。上一章我们讲了通常由32位构成的的IPv4地址配合子网掩码，从而确定ip的网络部分 和 主机部分的组成。进而确定传输的数据的两台计算机是否同处一个子网中。.]]></description><category></category></item><item><title><![CDATA[C++ 接雨水，不看后悔系列,解一道高频面试题]]></title><link>https://blog.youkuaiyun.com/yuleidnf/article/details/106412217</link><guid>https://blog.youkuaiyun.com/yuleidnf/article/details/106412217</guid><author>yuleidnf</author><pubDate>Thu, 28 May 2020 20:17:40 +0800</pubDate><description><![CDATA[这是一道同事讨论过的一道趣味题，综合了比较多的解题思想，其中有二分，递归，分治等思想。闲来抽空实现了下，如有错误请多多指出,或者有优化处请多多指出。逻辑不是很复杂，直接上代码吧。
//
//  main.cpp
//  面试题经典
//
//  Created by 于磊 on 2020/5/27.
//  Copyright © 2020 于磊. All rights reserved.
//

#include &lt;iostream&gt;
#include &lt;algorithm&gt;
#.]]></description><category></category></item><item><title><![CDATA[计算机网络 - (一)计算机之间的网络互通]]></title><link>https://blog.youkuaiyun.com/yuleidnf/article/details/105806795</link><guid>https://blog.youkuaiyun.com/yuleidnf/article/details/105806795</guid><author>yuleidnf</author><pubDate>Tue, 28 Apr 2020 09:58:13 +0800</pubDate><description><![CDATA[计算机网络
内容目录前言计算机网络 - 计算机之间的网络互通1.物理层2.数据链路层3. 网络层4. 传输层5. 应用层总结
前言

大物理学家费曼提出一个高效的费曼学习法，即从问题入手，试着把问题都讲出来，以教代学，一旦你能把问题都讲清楚，便学会了。所以我想尝试一下把网络/通信/协议讲清楚，借此让自己学得明白，同时也锻炼自己得表达能力。

计算机网络 - 计算机之间的网络互通
在这一章我们着重...]]></description><category></category></item><item><title><![CDATA[vim常用命令总结]]></title><link>https://blog.youkuaiyun.com/yuleidnf/article/details/80678752</link><guid>https://blog.youkuaiyun.com/yuleidnf/article/details/80678752</guid><author>yuleidnf</author><pubDate>Fri, 27 Mar 2020 19:30:08 +0800</pubDate><description><![CDATA[在命令状态下对当前行用== （连按=两次）, 或对多行用n==（n是自然数）表示自动缩进从当前行起的下面n行。你可以试试把代码缩进任意打乱再用n==排版，相当于一般IDE里的code format。使用gg=G可对整篇代码进行排版。vim 选择文本，删除，复制，粘贴 文本的选择，对于编辑器来说，是很基本的东西，也经常被用到，总结如下：v  从光标当前位置开始，光标所经过的地方会被...]]></description><category></category></item><item><title><![CDATA[C++ 异常捕获和处理]]></title><link>https://blog.youkuaiyun.com/yuleidnf/article/details/79788886</link><guid>https://blog.youkuaiyun.com/yuleidnf/article/details/79788886</guid><author>yuleidnf</author><pubDate>Fri, 27 Mar 2020 19:02:39 +0800</pubDate><description><![CDATA[C++之异常捕获和处理一、简介  在C++语言中，异常处理包括：throw表达式，try语句块，一套异常类。其中，异常类用于在throw表达式和相关的catch子句之间传递异常的具体信息。exception头文件定义了最普通的异常类exception，它只报告异常的发生，不提供任何额外信息。以下是定义在stdexcept头文件中的常用的异常类：异常类解释exception最常见的问题runtime...]]></description><category></category></item><item><title><![CDATA[C语言-递归法寻找数组中最小值]]></title><link>https://blog.youkuaiyun.com/yuleidnf/article/details/104488830</link><guid>https://blog.youkuaiyun.com/yuleidnf/article/details/104488830</guid><author>yuleidnf</author><pubDate>Tue, 25 Feb 2020 00:18:54 +0800</pubDate><description><![CDATA[int getMin(int array[], int n) {
    int val1, val2, val3;
    if (n == 1)
        return array[0];
    if (n % 2 == 0) {
        val1 = getMin(array, n / 2);
        val2 = getMin(array + n / 2, n /...]]></description><category></category></item><item><title><![CDATA[C语言-谁在说谎]]></title><link>https://blog.youkuaiyun.com/yuleidnf/article/details/104476144</link><guid>https://blog.youkuaiyun.com/yuleidnf/article/details/104476144</guid><author>yuleidnf</author><pubDate>Mon, 24 Feb 2020 13:23:22 +0800</pubDate><description><![CDATA[甲：乙说谎 ，乙：丙说谎，丙：甲乙都说谎


int main(int argc, const char *argv[]) {
    int a, b, c;
    for (a = 0; a &lt;= 1; ++a) {
        for (b = 0; b &lt;= 1; ++b) {
            for (c = 0; c &lt;= 1; ++c) {
     ...]]></description><category></category></item><item><title><![CDATA[C语言-数字翻译器]]></title><link>https://blog.youkuaiyun.com/yuleidnf/article/details/104476037</link><guid>https://blog.youkuaiyun.com/yuleidnf/article/details/104476037</guid><author>yuleidnf</author><pubDate>Mon, 24 Feb 2020 13:14:07 +0800</pubDate><description><![CDATA[输入一个正整数N，输出它的英文表达


void translation_C(long b) {
    long c;
    if (b &lt;= 19)
        printf("%s ", data_1[b - 1]);
    else {
        c = b / 10;
        printf("%s ", data_2[c - 2]);
        c = ...]]></description><category></category></item><item><title><![CDATA[C语言-数字的全排列]]></title><link>https://blog.youkuaiyun.com/yuleidnf/article/details/104475975</link><guid>https://blog.youkuaiyun.com/yuleidnf/article/details/104475975</guid><author>yuleidnf</author><pubDate>Mon, 24 Feb 2020 13:09:29 +0800</pubDate><description><![CDATA[输入一个数字序列{a1,a2,...,an},将该序列进行排列，并输出每一种排列方式。例如：1，3，5.该数列就有6种排列方式。利用递归不难实现


#define max 100

void Perm(int a[], int n, int s, int r[], int m) {
    int i, j, k, flag = 0;
    int b[max];
    for (i = 0...]]></description><category></category></item><item><title><![CDATA[C语言-移数字游戏]]></title><link>https://blog.youkuaiyun.com/yuleidnf/article/details/104418659</link><guid>https://blog.youkuaiyun.com/yuleidnf/article/details/104418659</guid><author>yuleidnf</author><pubDate>Thu, 20 Feb 2020 21:37:00 +0800</pubDate><description><![CDATA[将1~8个数随机的填写到该数阵的外层圆圈中，只剩下中间的一个空圆圈。规定每个数字只能按照数阵中的直线从一个圆圈移动到另一个空的圆圈中。通过若干步的移动，要求将该数阵中的数字移动成为图中所示的状态




void Print(int m[]) {
    printf("    [%d]--[%d]--[%d]\n", m[0], m[1], m[2]);
    printf("     |  ...]]></description><category></category></item><item><title><![CDATA[C语言-常胜将军]]></title><link>https://blog.youkuaiyun.com/yuleidnf/article/details/104418503</link><guid>https://blog.youkuaiyun.com/yuleidnf/article/details/104418503</guid><author>yuleidnf</author><pubDate>Thu, 20 Feb 2020 21:28:12 +0800</pubDate><description><![CDATA[现在有21根火柴，2人轮流取，每人每次可以取走1~4根，不可多取，也不能不取，谁取最后一根火柴谁输。编写一个程序进行人机对弈，要求人先取，计算机后取；计算机一方为 常胜将军。


int main(int argc, const char *argv[]) {
    int computer, people, spare = 21;
    printf("-------------------...]]></description><category></category></item><item><title><![CDATA[C语言-斐波那契数兔子产仔问题]]></title><link>https://blog.youkuaiyun.com/yuleidnf/article/details/104418328</link><guid>https://blog.youkuaiyun.com/yuleidnf/article/details/104418328</guid><author>yuleidnf</author><pubDate>Thu, 20 Feb 2020 21:18:13 +0800</pubDate><description><![CDATA[已知一对两个月大的兔子以后每一个月都可以生一对小兔子，而每一对新生的兔子出生两个月后才可以生小兔子（例如：1月份出生，3月份才可以产仔）。一年能繁殖成多少对




int Fibonacci(int n, int flag) {
    if (n == 1 || n == 2)
        return 1;
    else
        return Fibonacci(n - 1...]]></description><category></category></item><item><title><![CDATA[C语言-寻找水仙花数]]></title><link>https://blog.youkuaiyun.com/yuleidnf/article/details/104361581</link><guid>https://blog.youkuaiyun.com/yuleidnf/article/details/104361581</guid><author>yuleidnf</author><pubDate>Mon, 17 Feb 2020 17:26:58 +0800</pubDate><description><![CDATA[“水仙花数”是指一个三位数，其各位数字的立方和确好等于该数本身，如；153＝1^3＋5^3＋3^3，则153是一个“水仙花数”。
求出100～999之间的所有“水仙花数”并输出。


int isNarcissus(int digit) {
    int sum = 0, tmp;
    tmp     = digit;
    while (tmp &gt; 0) {
        su...]]></description><category></category></item><item><title><![CDATA[C语言-爱因斯坦的阶梯问题]]></title><link>https://blog.youkuaiyun.com/yuleidnf/article/details/104360694</link><guid>https://blog.youkuaiyun.com/yuleidnf/article/details/104360694</guid><author>yuleidnf</author><pubDate>Mon, 17 Feb 2020 16:50:57 +0800</pubDate><description><![CDATA[爱因斯坦曾经提出过这样一道有趣的数学题：有一个长阶梯，若每步上2阶，最后剩下1阶；若每步上3阶，最后剩2阶；若每步上5阶，最后剩下4阶；若每步上6阶，最后剩5阶；只有每步上7阶，最后刚好一阶也不剩。请问该阶梯至少有多少阶


    int i     = 7;
    int times = 1000;
    while ((i % 2 != 1 || i % 3 != 2 || i % 5 ...]]></description><category></category></item><item><title><![CDATA[C语言-判断回文数字]]></title><link>https://blog.youkuaiyun.com/yuleidnf/article/details/104351315</link><guid>https://blog.youkuaiyun.com/yuleidnf/article/details/104351315</guid><author>yuleidnf</author><pubDate>Sun, 16 Feb 2020 23:47:12 +0800</pubDate><description><![CDATA[有这样一类数字，它们顺着看和倒着看都是相同的数，例如121、656、12321。编写判断从键盘接收的数字是否为回文数字


int reverse(int i) {
    int m, j = 0;
    m = i;
    while (m) {
        j = j * 10 + m % 10;
        m = m / 10;
    }
    return j;
}
i...]]></description><category></category></item><item><title><![CDATA[C语言-百钱买百鸡问题]]></title><link>https://blog.youkuaiyun.com/yuleidnf/article/details/104350233</link><guid>https://blog.youkuaiyun.com/yuleidnf/article/details/104350233</guid><author>yuleidnf</author><pubDate>Sun, 16 Feb 2020 22:30:50 +0800</pubDate><description><![CDATA[我国古代数学家张丘建在《算经》一书中曾提出过著名的“百钱买百鸡”问题。描述如下：鸡翁一，值五钱；鸡母一值钱三；鸡雏三值钱一；百钱买百鸡。则翁、母、雏各几何？

利用数学的方法不能抽象成如下方程组：



实现：


#include &lt;iostream&gt;

int accord(int i, int j, int k) {
    if (5 * i + 3 * j + k / 3 =...]]></description><category></category></item><item><title><![CDATA[C语言-三色球问题]]></title><link>https://blog.youkuaiyun.com/yuleidnf/article/details/104350054</link><guid>https://blog.youkuaiyun.com/yuleidnf/article/details/104350054</guid><author>yuleidnf</author><pubDate>Sun, 16 Feb 2020 22:14:38 +0800</pubDate><description><![CDATA[有红黄绿三种颜色的球，其中红球3个，黄球3个，绿球6个。现将这12个球混放在一个盒子中，从中任意摸出8个球，编程计算摸出球的各种颜色的搭配



代码：


#include &lt;iostream&gt;
#define RED_BALL_NUM 3
#define YELLOW_BALL 3
#define GREEN_BALL 6

int main(int argc, const cha...]]></description><category></category></item><item><title><![CDATA[C语言-十进制/二进制数的互相转化]]></title><link>https://blog.youkuaiyun.com/yuleidnf/article/details/104342728</link><guid>https://blog.youkuaiyun.com/yuleidnf/article/details/104342728</guid><author>yuleidnf</author><pubDate>Sun, 16 Feb 2020 14:58:57 +0800</pubDate><description><![CDATA[编写一个程序，将输入的十进制数转化为二进制表示。例如：输入十进制数64，输出二进制数表示1000000




void deTobi(int a) {
    int i = 0, stack[10], r, s;
    do {
        r        = a / 2;
        s        = a % 2;
        stack[i] = s;
        ...]]></description><category></category></item><item><title><![CDATA[二进制运算-位运算、原码、反码、补码]]></title><link>https://blog.youkuaiyun.com/yuleidnf/article/details/104336127</link><guid>https://blog.youkuaiyun.com/yuleidnf/article/details/104336127</guid><author>yuleidnf</author><pubDate>Sat, 15 Feb 2020 22:36:32 +0800</pubDate><description><![CDATA[1. 按位与运算符（&amp;）

参加运算的两个数，按二进制位进行“与”运算。

运算规则：只有两个数的二进制同时为1，结果才为1，否则为0。（负数按补码形式参加按位与运算）

即 0 &amp; 0= 0 ，0 &amp; 1= 0，1 &amp; 0= 0， 1 &amp; 1= 1。

例：3 &amp;5即 00000011 &amp; 00000101 = 00000001 ，所以...]]></description><category></category></item><item><title><![CDATA[JS/ES-实现合并两个有序数列]]></title><link>https://blog.youkuaiyun.com/yuleidnf/article/details/104229600</link><guid>https://blog.youkuaiyun.com/yuleidnf/article/details/104229600</guid><author>yuleidnf</author><pubDate>Sat, 08 Feb 2020 22:42:40 +0800</pubDate><description><![CDATA[js 合并两个有序数组


let arr1 = [1,3,59,111];
let arr2 = [2,4,5,6,7,8,9,11,55,66,77,88];

function mergeList(arr1, arr2) {
    let len1 = arr1.length - 1
    let len2 = arr2.length - 1
    let mLen = arr1.le...]]></description><category></category></item></channel></rss>