<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[DrewLee的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/DrewLee</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; DrewLee]]></copyright><item><title><![CDATA[使用ASP.NET MVC框架搭建登录站点总结]]></title><link>https://blog.youkuaiyun.com/DrewLee/article/details/120292701</link><guid>https://blog.youkuaiyun.com/DrewLee/article/details/120292701</guid><author>DrewLee</author><pubDate>Tue, 14 Sep 2021 17:46:44 +0800</pubDate><description><![CDATA[经过几天对ASP.NET MVC框架的简单学习，并搭建起一个简单的登录站点之后，我算是对微软的MVC框架有了一个较为整体的认识，包括它在VS上的结构，MVC各层之间的联系等等，在此我做一个简单的个人学习记录，并将搭建登录站点这一个小的项目做一总结。
在我看来，.NET 的MVC框架就是经典的MVC框架，因为我之前在Linux系统中使用MVC框架开发过小项目，所以MVC框架的性质不会变，无非就是将他从Linux环境迁移到Windows环境，从shell迁移到VS2019来使用而已。
那么首先简单的介绍MVC框]]></description><category></category></item><item><title><![CDATA[.gitignore文件说明]]></title><link>https://blog.youkuaiyun.com/DrewLee/article/details/120076343</link><guid>https://blog.youkuaiyun.com/DrewLee/article/details/120076343</guid><author>DrewLee</author><pubDate>Fri, 03 Sep 2021 10:32:39 +0800</pubDate><description><![CDATA[在使用git的过程中，一般我们总会有些文件无需纳入git的管理，也不希望它们总出现在未跟踪文件列表，这些文件通常是日志文件、临时文件、编译产生的中间文件、工具自动生成的文件等等。此时我们可以创建一个名为 .gitignore 的文件，列出要忽略的文件模式，Git会根据这些模式规则来判断是否将文件添加到版本控制中。注意：在windows下可以创建文件名为.gitignore.，保存之后系统会自动重命名为 .gitignore
规则格式：


所有空行或者以注释符号 ＃ 开头的行都会被 Git 忽略


可以使]]></description><category></category></item><item><title><![CDATA[C# 控制台创建txt文本并实现写读操作]]></title><link>https://blog.youkuaiyun.com/DrewLee/article/details/120044953</link><guid>https://blog.youkuaiyun.com/DrewLee/article/details/120044953</guid><author>DrewLee</author><pubDate>Wed, 01 Sep 2021 17:31:33 +0800</pubDate><description><![CDATA[使用System.IO.File类，所以首先必须对C#的System.IO.File类有所了解：
命名空间：namespace:System.IO
提供用于创建，复制，删除，移动和打开文件的静态方法，并协助创建FileStream对象
将 File 类用于典型的操作，如复制、移动、重命名、创建、打开、删除和追加到文件。 也可将 File 类用于获取和设置文件特性或有关文件创建、访问及写入操作的 DateTime 信息。
许多 File 方法在您创建或打开文件时返回其他 I/O 类型。 可以使用这些其他类型进]]></description><category></category></item><item><title><![CDATA[深夜学算法——初识动规（1）]]></title><link>https://blog.youkuaiyun.com/DrewLee/article/details/117793474</link><guid>https://blog.youkuaiyun.com/DrewLee/article/details/117793474</guid><author>DrewLee</author><pubDate>Thu, 10 Jun 2021 23:59:20 +0800</pubDate><description><![CDATA[动态规划：当下编程面试中的热门话题。如果面试题要求一个问题的最优解，一般为最大值或者最小值，而且该问题能够分解成若干个子问题，并且子问题之间还有重叠的更小的子问题，就可以考虑用动态规划来解决。
一般我们从以下四个角度考虑：
1：状态定义（定义的状态一定要形成地推关系）；
2：状态间的转移方程定义；（需要能一步的出的，多步推出的不能算）
3：状态初始化；（要看状态转移方程中到底需要用到几个量）
4：返回结果
---------------------------------------------------]]></description><category></category></item><item><title><![CDATA[C++多态]]></title><link>https://blog.youkuaiyun.com/DrewLee/article/details/116139333</link><guid>https://blog.youkuaiyun.com/DrewLee/article/details/116139333</guid><author>DrewLee</author><pubDate>Sun, 25 Apr 2021 23:13:56 +0800</pubDate><description><![CDATA[昨天讲了继承，那么今天就来讲讲同样属于C++三大特性的多态！
首先，什么是多态？我自己看了好多文章，但是说真的我都不是很懂类似于叫：多态就是同一个接口对于不同请求做出的不同处理这句话，但是在我对真理不屑的追求之下，我还是发现了最通俗的解释：
多态就是基类指针或引用表现出来的多种形态，他一会表现出父类形态（也就是指向自己），一会又可以表现出指向自己某个子类甚至（用指针数组）指向多个子类的形态，这就是C++多态的体现！
下面我们针对于这句理解作一详细的代码演示：
…
芜湖，说到多态，我居然忘记了把virtual]]></description><category></category></item><item><title><![CDATA[C++继承]]></title><link>https://blog.youkuaiyun.com/DrewLee/article/details/116107013</link><guid>https://blog.youkuaiyun.com/DrewLee/article/details/116107013</guid><author>DrewLee</author><pubDate>Sat, 24 Apr 2021 22:38:18 +0800</pubDate><description><![CDATA[C++继承 竟然有手就行！
学C++肯定都知道，封装、继承和多态号称C++三大特性，封装好理解，就是将数据和操作数据的方法进行有机结合，隐藏对象的属性和实现细节，仅对外公开接口来和对象进行 交互；那么什么是继承呢？今天我就用6点，对继承作一讲解。
1：一个类可以继承自另一个类，继承的类称为派生类，也就是子类；被继承的类叫做基类，也就是父类；
class Father {
public:
	Father() {}
	~Father() {}
private:
	char* name;
	int age;
};]]></description><category></category></item><item><title><![CDATA[校招时的你还不会回答TCP怎样保证可靠传输？？快看这里！]]></title><link>https://blog.youkuaiyun.com/DrewLee/article/details/115604969</link><guid>https://blog.youkuaiyun.com/DrewLee/article/details/115604969</guid><author>DrewLee</author><pubDate>Sun, 11 Apr 2021 20:52:23 +0800</pubDate><description><![CDATA[面试时，当面试官问你，TCP是如何保证可靠传输的，那我们该怎么言简意赅的回答好这个问题呢？
TCP主要有一下三个方面保证他的可靠传输性：
1、序列号、确认应答、超时重传
2、窗口控制与快速重传（重复确认应答）
3、拥塞机制
下面我们具体谈谈着三个点：
一、 序列号、确认应答、超时重传
当数据到达接收方，接收方需要发出一个确认应答，表示已经收到了该数据段，并且确认序号回说明他下一次需要接收的数据序列号。如果发送方迟迟未收到确认应答，那么可能时发送的数据丢失了，也可能时确认应答丢失了，这是发送方在等待一定事件后]]></description><category></category></item><item><title><![CDATA[链表其实真的不难！！(C++版创建链表并完成节点的插入与删除)]]></title><link>https://blog.youkuaiyun.com/DrewLee/article/details/115333846</link><guid>https://blog.youkuaiyun.com/DrewLee/article/details/115333846</guid><author>DrewLee</author><pubDate>Tue, 30 Mar 2021 20:01:02 +0800</pubDate><description><![CDATA[链表——数据结构里的最基本单元，所以及见面了找工作/找实习的你，对链表最基本的知识与应用又了解多少呢?
不妨花个几分钟看完这篇，或许会有意想不到的收获！
首先什么是链表?
链表就是在系统内存中开辟的逻辑上连续但是物理上（或者是实际上）非连续的一个个空间，然后这些空间都又一个个指针连接起来，啥意思呢？来看个图吧，纯属直观手绘（虽然有点丑但是够形象)！

所以，我们可以很直观的看出，要创建一个链表，我们需要的元素就是这个框框（内存)，还有这个箭头(指针）,至于框框里面放的是什么?那肯定是内容啦！所以我们要将这些]]></description><category></category></item><item><title><![CDATA[搞定校招之：超细的OSI七层模型（网络）]]></title><link>https://blog.youkuaiyun.com/DrewLee/article/details/114799010</link><guid>https://blog.youkuaiyun.com/DrewLee/article/details/114799010</guid><author>DrewLee</author><pubDate>Sun, 14 Mar 2021 20:26:28 +0800</pubDate><description><![CDATA[目录OSI七层模型详解图示解析面试问答
OSI七层模型详解
图示解析
面试问答

OSI七层模型
所谓OSI七层模型，即一个把网络从逻辑上分为七层的模型体，每一层都都有其相关、相对应的物理设备，比如路由器、交换机；该模型是国际标准化组织（ISO）制定的一个用于计算机或通信系统间互联的标准体系，一般称为OSI参考模型或七层模型。
我们直接看图：

下面我们参考这张表并且站在面试者的角度回答这样一个问题：请你说一说OSI七层模型
我们可以这样回答：


物理层
在OSI参考模型中，物理层是模型的最低层，也是该模]]></description><category></category></item><item><title><![CDATA[准备校招的你，真的懂了“握手”与“挥手”吗？！！（网络）]]></title><link>https://blog.youkuaiyun.com/DrewLee/article/details/114647876</link><guid>https://blog.youkuaiyun.com/DrewLee/article/details/114647876</guid><author>DrewLee</author><pubDate>Thu, 11 Mar 2021 13:33:48 +0800</pubDate><description><![CDATA[但凡学了网络的，准备走IT行业，即将面临校招的小猿们，应该都知道建立与断开一个TCP连接时，需产生三次“握手”与四次“挥手”这个概念，恰好他又是各个公司（无论大小）的面试提问热点，那么很多小猿们在回答该问题的时候，要不就是回答的太简单，三两句就讲完了，导致歇菜，要不就是本意想往深里扯，结果越扯反而把自己陷得越深，根本讲不下去了，又导致歇菜。。。其实根本原因还是因为对这个概念本身的理解程度还不够，话不多说，这篇文章讲尽可能通俗的讲明白三次“握手”与四次“挥手”这个概念，助力小猿们下次面试遇到后都可以自信潇洒且]]></description><category></category></item><item><title><![CDATA[大厂面试级别题目:leetcode-48:旋转图像（旋转数组）]]></title><link>https://blog.youkuaiyun.com/DrewLee/article/details/114596424</link><guid>https://blog.youkuaiyun.com/DrewLee/article/details/114596424</guid><author>DrewLee</author><pubDate>Tue, 09 Mar 2021 20:37:50 +0800</pubDate><description><![CDATA[题目描述：给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。
你必须在 原地 旋转图像，这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。
示例 1：

输入：matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出：[[7,4,1],[8,5,2],[9,6,3]]
示例 2：

输入：matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]
输出：[[15,13,]]></description><category></category></item><item><title><![CDATA[主要元素（leetcode面试题17.10）之最通俗易懂解法＋解析]]></title><link>https://blog.youkuaiyun.com/DrewLee/article/details/114491456</link><guid>https://blog.youkuaiyun.com/DrewLee/article/details/114491456</guid><author>DrewLee</author><pubDate>Sun, 07 Mar 2021 18:10:49 +0800</pubDate><description><![CDATA[题目描述:   数组中占比超过一半的元素称之为主要元素。给定一个整数数组，找到它的主要元素。若没有，返回-1。
示例 1：
输入：[1,2,5,9,5,9,5,5,5]
输出：5
示例 2：
输入：[3,2]
输出：-1
示例 3：
输入：[2,2,1,1,1,2,2]
输出：2
说明：
你有办法在时间复杂度为 O(N)，空间复杂度为 O(1) 内完成吗？
做题经验:我觉得这道题怎么解还是根据题目描述的意思码出每一行代码，首先我们调用sort接口对该数组进行排序，排序之后，不管这个数组里面是否存在主要元素，]]></description><category></category></item><item><title><![CDATA[Linux---小白从零搞懂进程（2）]]></title><link>https://blog.youkuaiyun.com/DrewLee/article/details/113731979</link><guid>https://blog.youkuaiyun.com/DrewLee/article/details/113731979</guid><author>DrewLee</author><pubDate>Sat, 06 Feb 2021 22:53:38 +0800</pubDate><description><![CDATA[Linux进程概念（下）
进程状态
特殊进程
环境变量
进程状态：
每个pcb都会描述一个运行的状态信息，通过状态信息，告诉操作系统当前这个进程在干什么，而状态又分为一下三种：

在Linux中，对以上状态加以细分：
就绪以及运行:         即正在运行的进程 ；
可中断休眠状态:     可被打断的休眠，后进入运行；
不可中断休眠状态：只能通过满足某些条件而自然苏醒后进入运行，不可被中断打断；
停止：与休眠不同（休眠操作系统会去看进程唤醒的条件是否满足，而停止只能手动唤醒）；
僵尸状态：描述的是一个]]></description><category></category></item><item><title><![CDATA[剑指offer15—二进制中1的个数]]></title><link>https://blog.youkuaiyun.com/DrewLee/article/details/113447336</link><guid>https://blog.youkuaiyun.com/DrewLee/article/details/113447336</guid><author>DrewLee</author><pubDate>Sat, 30 Jan 2021 22:05:01 +0800</pubDate><description><![CDATA[题目描述：请实现一个函数，输入一个整数（以二进制串形式），输出该数二进制表示中 1 的个数。例如，把 9 表示成二进制是 1001，有 2 位是 1。因此，如果输入 9，则该函数输出 2。
示例 1：
输入：00000000000000000000000000001011
输出：3
解释：输入的二进制串 00000000000000000000000000001011 中，共有三位为 ‘1’。
示例 2：
输入：00000000000000000000000010000000
输出：1
解释：输入的二进制串]]></description><category></category></item><item><title><![CDATA[剑指offer10—青蛙跳台阶]]></title><link>https://blog.youkuaiyun.com/DrewLee/article/details/113446683</link><guid>https://blog.youkuaiyun.com/DrewLee/article/details/113446683</guid><author>DrewLee</author><pubDate>Sat, 30 Jan 2021 21:32:12 +0800</pubDate><description><![CDATA[题目描述：一只青蛙一次可以跳上1级台阶，也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。
答案需要取模 1e9+7（1000000007），如计算初始结果为：1000000008，请返回 1。
示例 1：
输入：n = 2
输出：2
示例 2：
输入：n = 7
输出：21
示例 3：
输入：n = 0
输出：1
提示：
0 &lt;= n &lt;= 100
解题思路
你写出来几级台阶并且列出对应的跳法数量之后：

你就会发现这就是简单的一个斐波那契数列，所以就直接看代码：
class]]></description><category></category></item><item><title><![CDATA[剑指offer05：替换空格]]></title><link>https://blog.youkuaiyun.com/DrewLee/article/details/113359576</link><guid>https://blog.youkuaiyun.com/DrewLee/article/details/113359576</guid><author>DrewLee</author><pubDate>Thu, 28 Jan 2021 21:59:43 +0800</pubDate><description><![CDATA[题目描述：请实现一个函数，把字符串 s 中的每个空格替换成"%20"
示例 1：
输入：s = “We are happy.”
输出：“We%20are%20happy.”
限制：
0 &lt;= s 的长度 &lt;= 10000
解题思路:双指针遍历替换法
class Solution {
public:
    string replaceSpace(string s) {
        int count = 0;
        int len = s.size();
        for(c]]></description><category></category></item><item><title><![CDATA[剑指offer03：数组中的重复数字]]></title><link>https://blog.youkuaiyun.com/DrewLee/article/details/113359491</link><guid>https://blog.youkuaiyun.com/DrewLee/article/details/113359491</guid><author>DrewLee</author><pubDate>Thu, 28 Jan 2021 21:56:44 +0800</pubDate><description><![CDATA[题目描述：找出数组中重复的数字
在一个长度为 n 的数组 nums 里的所有数字都在 0～n-1 的范围内。数组中某些数字是重复的，但不知道有几个数字重复了，也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
示例 1：
输入：
[2, 3, 1, 0, 2, 5, 3]
输出：2 或 3
限制：
2 &lt;= n &lt;= 100000
接近双百代码，简单易懂：
class Solution {
public:
    int findRepeatNumber(vector&lt;int&g]]></description><category></category></item><item><title><![CDATA[Linux---小白从零搞懂进程(1)]]></title><link>https://blog.youkuaiyun.com/DrewLee/article/details/113005865</link><guid>https://blog.youkuaiyun.com/DrewLee/article/details/113005865</guid><author>DrewLee</author><pubDate>Fri, 22 Jan 2021 22:55:01 +0800</pubDate><description><![CDATA[Linux进程概念（上）
冯诺依曼体系
冯诺依曼体系结构—现代计算机的硬件结构：
（1)采用存储程序方式，指令和数据不加区别混合存储在同一个存储器中，数据和程序在内存中是没有区别的,它们都是内存中的数据,当EIP指针指向哪 CPU就加载那段内存中的数据,如果是不正确的指令格式,CPU就会发生错误中断. 在现在CPU的保护模式中,每个内存段都有其描述符,这个描述符记录着这个内存段的访问权限(可读,可写,可执行).这就变相的指定了哪些内存中存储的是指令哪些是数据）
指令和数据都可以送到运算器进行运算，即由指令组]]></description><category></category></item><item><title><![CDATA[PTA试题]]></title><link>https://blog.youkuaiyun.com/DrewLee/article/details/108786857</link><guid>https://blog.youkuaiyun.com/DrewLee/article/details/108786857</guid><author>DrewLee</author><pubDate>Fri, 25 Sep 2020 00:40:40 +0800</pubDate><description><![CDATA[本题要求实现一个函数，对给定的正整数N，打印从1到N的全部正整数。
void PrintN ( int N );
其中N是用户传入的参数。该函数必须将从1到N的全部正整数顺序打印出来，每个数字占1行。
裁判测试程序样例：
#include &lt;stdio.h&gt;
void PrintN ( int N );
int main ()
{
int N;
scanf("%d", &amp;N);
PrintN( N );

return 0;

}
void PrintN(int N)
{
 int i;]]></description><category></category></item><item><title><![CDATA[打印菱形]]></title><link>https://blog.youkuaiyun.com/DrewLee/article/details/107418633</link><guid>https://blog.youkuaiyun.com/DrewLee/article/details/107418633</guid><author>DrewLee</author><pubDate>Fri, 17 Jul 2020 22:00:47 +0800</pubDate><description><![CDATA[题面：用C语言在屏幕上打印出菱形形状
解决方法：我们可以将一个菱形分为两个三角形分别进行编写，上半部分是一个正的三角形，下半部分是一个倒着的三角形，将其拼接在一起，就可以显示出菱形，代码如下，简单易懂：
在这里插入代码片

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