自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(145)
  • 资源 (2)
  • 论坛 (3)

原创 验证二叉搜索树 leetcode 98

根据二叉搜索树性质验证:中序遍历序列有序class Solution {public: long tmp = LONG_MIN; bool isValidBST(TreeNode* root) { if(root == nullptr) return true; if (isValidBST(root->left)) { ...

2019-07-02 10:01:19 50

原创 进程信号学习

信号的生命周期信号产生->信号在进程中注册->信号在进程中的注销->执行信号处理函数信号的产生方式首先我们可以用 kill -l命令查看系统定义的信号列表当用户按某些终端键时产生信号,比如ctrl C注意:ctrl C只能发送命令给前台进程,一个命令在后面加上&可以放到后台运行硬件异常产生信号【内存非法访问】软件异常产生信号【某一个条件达到时】调用kil...

2019-06-07 17:39:27 46

转载 Allocator

C++ allocator说一说C++里的allocator。我们知道,C++ STL里定义了很多的容器(containers),每一个容器的第二个模板参数都是allocator类型。比方说在VC10里,vector类的模板声明为:template<class_Ty,class_Ax = allocator<_Ty> >classvector但...

2019-05-28 19:34:05 90

转载 内存机制与Allocator

原文:https://blog.csdn.net/justaipanda/article/details/7790355C++为我们提供了安全的内存空间申请方式与释放方式,但是new与delete表达式却是把空间的分配回收与对象的构建销毁紧紧的关联在一起。实际上,作为与C语言兼容的语言,C++也为我们提供了更加底层的内存操作方式的。谈C++就离不开STL,考虑一下vector<&g...

2019-05-28 19:32:31 74

原创 【C++ 11】一篇文章带你了解C++11新特性

探讨 C++11 新标准新类型long long、unsigned long long、char16_t、char32_t,初始化列表初始化        C++ 11 使用大括号括起来对内置类型和自定义类型进行初始化,使用列表初始化时,可添加“=”,也可不添加“=”使用案例:int ...

2019-05-26 15:44:39 113

原创 【红黑树】RBTree

RB-tree 红黑树红黑树的性质红黑树本质是一个二叉搜索树,每个节点要么是红色,要么是黑色,加上一些特性,变成平衡二叉搜索树。红黑树的插入、删除、查找操作的时间复杂度是 O(logN)。红黑树的高度在 [logN, logN+1]。规则 1:每个节点不是红色,就是黑色;规则 2:根节点必须是黑色;规则 3:如果一个节点是红色,那么它的孩子必须是黑色;规则 4:任何一...

2019-05-26 14:11:39 48

原创 【哈希表】Hash Table

Hash Table散列表(哈希表)的定义        用于海量数据的快速查找,效率高,时间复杂度接近 O(1)。        散列表是根据给定一个关键字 Key(整数),通过散列函数(映射函数),将关键字 Key 映射到散列表(...

2019-05-26 14:04:38 58

原创 【2019 CVTE】 春招 C/C++ 软件开发笔试题

选择题选择题大概考了:哈希索引,排序算法复杂度,vector 迭代器失效,虚函数、虚表、虚指针,动态绑定,给定二叉树的前序遍历,中序遍历让求可能的后续遍历,Linux 文件权限与控制,文件控制块分为主部和次部的原因,get post 方法区别,大概就这么多啦,全是不定向选择题,但是跟往常不一样,编程题在第6到题就跑出来了,第二道编程题在倒数第二道,其他全是不定项选择题一、题目描述一个由数字...

2019-05-15 20:59:46 1326 1

原创 多人聊天室

多人聊天室多人聊天室简介多人聊天室顾名思义能给我们用户提供的功能是群聊,该聊天室基于 UDP socket 通信,显然要用 UDP 协议达到群聊的目的,那么 CS 间通信的内容就不仅仅是用户在聊天界面上输入的内容了,查阅大量资料发现:我们可以将用户所要发送的内容封装一下,向其内部加入状态信息、来源信息,这里的来源信息可以是用户 IP 地址,用户所在物理机的 MAC 地址,将这些信息与用户所要发...

2019-05-15 14:11:59 496 1

原创 lua 流程控制

--lua 流程控制--[[---- #-- |-- |-- |-- /\-- / \-- / \-- | 条件 |-------------------- ...

2019-05-07 13:42:21 91

原创 lua 循环

--lua 循环--循环结构在一定条件下反复执行某段程序的流程结构,被反复执行的程序称为循环体,--循环语句有循环体和循环终止条件两部分组成的,这一点于其他编程语言一致--[[-- #-- |-- |-- |<----------------...

2019-05-07 13:41:30 222

原创 lua 变量

–lua 变量a = 5 --全局变量local b = 5 --局部变量function joke()c = 5local d = 6endjoke()print(c, d) --5 nilprint(c ,b)dolocal a = 6b = 6print(a, b) --6 6endprint(...

2019-05-07 13:40:26 73

原创 lua 数据类型

--lua 数据类型--lua 是动态类型语言,变量不要类型定义,只需要为变量赋值即可--值储存在变量中,作为参数传递或结果返回,这一点与 c/c++/java 一致--lua 中有 8 个基本数据类型:nil、boolean、number、string、userdata、function、thread、table----其中:--nil:这个最简单,只有值 nil 属于该类,表示一个...

2019-05-06 21:13:57 59

原创 lua 基本语法

--lua 基本语法print(a) --nilb = 10 --全局变量的创建--[[--在默认情况下,变量总是认为是全局的--全局变量不需要声明,给一个变量赋值后即创建了这个全局变量,访问一个没有初始化的--全局变量也不会出错,只不过得到的结果是:nil--]]print(b) --10b = nil --全局变量的销毁print("He...

2019-05-06 21:10:32 54

原创 C++ 基础

conststaticthis 指针inline 内联函数虚函数(virtual)可以是内敛函数(inline)吗volatileassert()sizeof()#pragma pack(n)位域extern “C”struct 和 typedef structC++ 中 struct 和 classunion 联合explicit (显示)关键字friend 友元...

2019-04-20 16:01:53 73

原创 给你一款产品如何检测内存泄漏

Windows 下内存泄漏检测工具 VLDVLD 的使用通常在 main 函数所在的 cpp 文件中 include <vld.h> 即可,运行程序,退出后产生检测报告注意事项如果有 include "stdafx.h",则 include <vld.h> 放在其后,否则放在最前面VLD 仅在 debug 版本有效如果想将产生的日志文件保存在文件中,...

2019-04-20 15:44:15 81

原创 如何让 UDP 保证其可靠性

UDP 与 TCP 的区别TCP 如何保证可靠性UDP 如何实现可靠性传输?UDP 不属于连接性协议,因而具有资源消耗小,处理速度快的优点,所以通常音频、视频和普通数据在传输时使用 UDP 较多,因为它们即使偶尔丢失一两个包,也不会对接收结果产生太大影响传输层无法保证数据的可靠传输,只能通过应用层来实现,实现的方式可以参考 TCP 可靠性传输,只是实现不在传输层,实现转移到了应用层实现确...

2019-04-20 15:43:56 2772

原创 乐观锁

乐观锁1. 并发控制在多线程环境下,为了保证线程安全,需要使用并发控制。数据库管理系统中有事务的概念,它是一组操作,并且满足 ACID 特性。一个事务可以看成一组任务,而任务是由线程驱动的,因此事务也可以并发地执行。并发执行多个事务时,为了保证每个事务都具有 ACID 特性,也同样需要使用并发控制。主要有两种并发控制方法:悲观并发控制和乐观并发控制,应该注意到它们都是思想,而不是具体的...

2019-04-20 15:43:30 52

原创 数据库视图

视图1.是什么视图是虚拟的表,本身不包含数据,数据都存储在原始表中。2.创建视图CREATE VIEW myview ASSELECT C1, Concat(C2, C3)FROM mytableWHERE C1 <= 2;3. 有什么用简化复杂的查询,比如复杂的连接查询;只使用实际表的一部分数据;通过只给用户访问视图的权限,保证数据的安全性;更改数据格式和表示...

2019-04-20 15:43:12 44

原创 DELETE、TRUNCATE 和 DROP

DELETE、TRUNCATE 和 DROP1. 作用DELETE 删除表中 WHERE 语句指定的数据。TRUNCATE 清空表,相当于删除表中的所有数据。DROP 删除表结构。2. 事务DELETE 会被放到日志中以便进行回滚;TRUNCATE 和 DROP 立即生效,不会放到日志中,也就不支持回滚。3. 删除空间DELETE 不会减少表和索引占用的空间;TRU...

2019-04-20 15:42:59 45

原创 MapReduce

MapReduce1. 直观理解想要统计一堆牌中有多少张黑桃,最简单的方法是一张一张去数。而 MapReduce 则是让多个玩家来并行地统计,从而大大缩短统计时间:把这堆牌分配给多个玩家;让每个玩家统计自己手中有多少张黑桃;把所有玩家统计的黑桃数量加起来就是最终的结果。2. 分而治之某些计算任务能够并行地进行,这些任务可拆分并且不能有数据依赖。例如斐波那契数列 f(n) = f(...

2019-04-19 17:26:05 45

原创 topK

topK1. 问题描述TopK Elements 问题用于找出一组数中最大的 K 个的数。此外还有一种叫 Kth Element 问题,用于找出一组数中第 K 大的数。如果要找的 TopK Elements 是最小的 K 个数,那么可以将问题转换成求解 TopK Elements,因为找到 Kth Element 之后,再遍历一遍,小于等于 Kth Element 的数都是 TopK ...

2019-04-19 17:24:42 1271

原创 海量数据判重

海量数据判重1. 问题描述对于海量数据,要求判断一个数据是否已经存在。这个数据很有可能是字符串,例如 URL。2. HashSet最直观的方法是使用 HashSet 存储,那么就能以 O(1) 的时间复杂度判断一个数据是否已经存在。考虑到数据是海量的,那么就需要使用拆分的方式将数据拆分到多台机器上,分别在每台机器上使用 HashSet 存储。我们需要使得相同的数据拆分到相同的机器上,可以...

2019-04-19 17:23:06 314

原创 海量数据排序

海量数据排序一、外部排序海量数据不能一次性读入内存,在对海量数据进行排序时,首先需要将海量数据拆分到多台机器或者多个文件,这些机器或文件称为拆分节点;然后在每个拆分节点上将数据全部读入内存并使用快速排序等方法进行排序;最后在合并节点使用多路归并方法将所有拆分节点的部分排序结果整合成最终的排序结果。外部排序也可以被称为外部归并排序。如果不进行额外处理,合并节点仍然无法将所有数据读入内存中。可...

2019-04-19 17:21:25 236

原创 海量数据处理思路

海量数据处理思路1. 计算容量在解决问题之前,要先计算一下海量数据需要占多大的容量。常见的单位换算如下:1 byte = 8 bit1 KB = 210 byte = 1024 byte ≈ 103 byte1 MB = 220 byte ≈ 10 6 byte1 GB = 230 byte ≈ 10 9 byte1 亿 = 1081 个整数占 4 byte,1 亿个整数占 4...

2019-04-19 17:20:21 73

原创 限流算法

限流算法1. 限流的必要性如果一段时间内请求的数量过大,就会给服务器造成很大压力,可能导致服务器无法提供其它服务。2. 计数器算法通过一个计数器 counter 来统计一段时间内请求的数量,并且在指定的时间之后重置计数器。该方法实现简单,但是有临界问题。例如,允许一分钟内通过的请求数为 N,如果在重置计数器的前后一小段时间内分别请求 N 次,那么在这一小段时间内总共请求了 2N 次,超...

2019-04-19 17:18:32 57

原创 扫二维码登录过程

扫二维码登录过程扫二维码登录近些年来,越来越多的网站支持使用手机 APP 扫二维码进行登录。传统的登录方式需要用户在浏览器中输入账号密码,完成输入之后点击登录按钮将这些数据发送到服务器上,服务器对这些数据进行验证并返回特定的状态码和 Cookie 等信息给浏览器。扫二维码登录这种方式不需要用户输入账号密码,这些信息保存在手机 APP 中,并由 APP 发送到服务器上。但是这种方式有几个问题需...

2019-04-19 17:16:59 151

原创 扫二维码登录过程

扫二维码登录过程扫二维码登录近些年来,越来越多的网站支持使用手机 APP 扫二维码进行登录。传统的登录方式需要用户在浏览器中输入账号密码,完成输入之后点击登录按钮将这些数据发送到服务器上,服务器对这些数据进行验证并返回特定的状态码和 Cookie 等信息给浏览器。扫二维码登录这种方式不需要用户输入账号密码,这些信息保存在手机 APP 中,并由 APP 发送到服务器上。但是这种方式有几个问题需...

2019-04-19 17:16:59 543

原创 短网址生成系统

短网址生成系统概述过长的网址不利于传播,特别是对于微博和 Twitter 等有发文长度限制的网站,短网址生成系统(TinyURL)可以将一个网址变短。在浏览器中输入短网址之后,TinyURL 会将该短网址转换成原始网址并进行重定向。生成短网址TinyURL 生成的短网址格式如下:其中 https://tinyurl.com/ 是域名,所有的短网址都相同,而不同的短网址 ID 部分不同...

2019-04-19 17:15:25 747 1

原创 Web 页面请求过程

Web 页面请求过程概述Web 网站通常使用 B/S 架构,浏览器(Browser)使用 HTTP 协议向服务器(Server)请求指定的 URL 资源。在浏览器中输入一个 URL 并发送 HTTP 请求时,需要先使用 DNS 协议获取 URL 域名对应的 IP 地址,获取到 IP 地址之后就可以开始建立 HTTP 连接。HTTP 连接是基于 TCP 连接之上的,HTTP 属于应用层,T...

2019-04-19 17:13:14 502

原创 死锁

死锁为什么存在死锁死锁的概念死锁的起因关于死锁的结论死锁预防策略死锁的必要条件预防死锁避免死锁死锁的检测和恢复死锁相关算法预先静态分配法有序资源分配法鸵鸟策略银行家算法银行家算法实例死锁为什么存在,死锁产生条件,死锁处理为什么存在死锁为了保证多进程(或多线程)的安全性,一个进程在使用临界资源(必须互斥访问的资源)时需要对临界资源加锁...

2019-04-13 11:56:23 277

原创 【经典同步问题】

生产者和消费者问题生产者和消费者问题解决策略案例读者和写着问题读写锁接口案列哲学家进餐问题生产者和消费者问题一群生产者(Producer)和一群消费者(Consumer)提供产品(数据),共享缓冲区规则不能向满缓冲区存产品不能从空缓冲区取产品每个时刻仅允许 1 个生产者或消费者存或取 1 个产品生产者和消费者问题解决策略int full...

2019-04-10 21:15:46 68

原创 【进程调度】&【Linux 进程调度】详解

进程调度典型调度算法先来先服务算法(FCFS)短作业优先调度算法响应比高者优先调度算法优先数调度算法循环轮转调度算法Linux 进程调度Linux 进程类型普通进程实时进程Linux 进程的优先级静态优先级:动态优先级:调度策略 (task_struct->policy)实时进程非实时进程进程调度的依据动态优先级与 cou...

2019-04-10 20:11:34 125

原创 【个人笔记】 CSDN 以后不再维护博客,已迁移至【github】

✏️ 笔记每日一题之编程题结结巴巴☞每日一题每日一题之选择题Leetcode 题解趣谈HTTP 超文本传输协议UDP & TCP 传输层用户数据报与传输控制协议计算机网络BST & AVL & 红黑树(符号表)海量数据socket哈希表C & C++ 基础类和数据抽象容器 & 算法内存管理线程概念线程控制线程安全MyS...

2019-04-02 12:15:03 49

原创 智能指针

智能指针为什么要有智能指针智能指针的原理auto_ptrauto_ptr 的使用auto_ptr 的实现原理auto_ptr 的其他成员函数auto_ptr 的实现总结unique_ptrunique_ptr 的使用unique_ptr 的陷阱unique_ptr 的原理shared_ptrshared_ptr 的使用shared_ptr 的原理...

2019-04-01 23:00:42 35

原创 海量数据

海量数据判重问题描述HashSetBitSetBitSet 的实现布隆过滤器海量数据判重问题描述对于海量数据,要求判断一个数据是否已经存在,这个数据很可能是字符串HashSet最直观的方法就是使用 HashSet 存储,那么就能以 O(1) 的时间复杂度判断一个数据是否已经存在考虑到数据是海量的,那么就要使用拆分的方式将数据拆分到多台机器上,分别在每台机器上使...

2019-04-01 22:57:10 45

原创 每日一题之编程精髓

组队竞赛删除公共字符串排序子序列倒置字符串连续最长的数字串n 个数中出现次数大于等于 n/2 的数计算糖果进制转换统计回文连续最大和不要二地下迷宫Fibnoacci(给定一个数,让判断该数变化多少步可以变成 Fibnoacci 数)小括号匹配组队竞赛题意:​ 牛牛举办了一次编程比赛,参加比赛的有 3*n 个选手,每个选手都有一个水平值 a_i。现在要将这些选手进...

2019-04-01 22:54:59 74

原创 每日一题之选择题

inline 关键字static:关键字用法详解1、static:局部变量2、static:全局变量3、static:函数4、static:数据成员5、static:成员函数const 关键字1、for 循环的循环次数计算for(int x = 0, y = 0;(y = 123) && (x < 4);x++);2、阅读程序并且得出程序的运算...

2019-04-01 21:18:00 79

原创 计算机网络

什么是 HTTP什么是 HTTPSHTTP 特点针对 HTTP 无状态的一些解决策略二者区别客户端使用 HTTPS 方式与 Web 端进行通信时的步骤HTTPS 的缺点HTTP 返回码(状态码)IP 地址和 MAC 地址的作用OSI 七层模型和 TCP/IP 四层模型三次握手三次握手的原因四次挥手的原因TIME_WAITTCP 可靠传输是如何保证的socket AP...

2019-04-01 21:16:41 40

原创 Redis 学习历程之 string

stringstring 方法存储原理案例基本插入与查询操作string 的实现string可以存储的实值:字符串、整数、浮点数操作:对整个字符串或者字串进行操作,对整数、浮点数进行自增 or 自减操作string 方法set:设置指定 key 的值(set key value)get:获取指定 key 的值(get key)getrange:返回 key...

2019-03-30 23:42:29 45

字符串及其操作以及函数实现

字符操作及其有关函数实现字符串复制函数: char * my_strcpy(char * dest, const char * src); 字符串拼接函数: char *my_strcat(char *dest, char *src); 实现 memcpy 拷贝:内存拷贝: void * memcpy(void * dest, const void * src, size_t len);

2018-10-29

爱心飘落代码

此文件为web前端开发写的特效。。。

2018-05-15

Linux 子系统故障

发表于 2018-12-19 最后回复 2018-12-24

编程浩克

发表于 2018-12-19 最后回复 2018-12-24

如下程序在32位集成开发环境与Linux中运行结果不一致,求指导

发表于 2018-04-06 最后回复 2018-04-26

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