自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 C++中使用函数地址强制调用私有成员函数

最近写c++遇到一个小问题,就是调用brpc库里面的discovey中的拉取server节点函数时,发现这个函数是私有的,直接调用肯定不行。官方给的使用方法是通过初始化channnel,之后的拉取server节点的工作都交给brpc来做。但是想拿到拉取后的节点,就不好做了。 拉取函数Getserv...

2020-01-07 19:14:44 62 0

原创 C++---父类中的私有成员可以通过地址访问吗?

我们知道,私有变量在类外是不可访问的,并且父类的私有成员在子类也是不可访问的,但是我们不知道是什么原因,是编译器真真正正的做了手脚,还是只是简单的限制。我们来研究一下。 问题一:类里面的私有成员能否通过具体的地址来访问? 问题二:父类被继承到子类之后,父类的成员变量是根本就没有继承下来,还是确实继...

2019-05-02 12:56:06 260 0

原创 C++---空指针能调用类成员函数吗?

我们知道,一个对象的指针可以调用它的成员函数和虚函数,那么如果一个指向空nullptr的指针,能不能调用它的成员函数和虚函数。 #include<iostream> using namespace std;; class A { public: void func1() { ...

2019-05-02 12:00:52 510 0

原创 DNS查询过程

整个流程 域名解析 —> 与服务器建立连接 —> 发起HTTP请求 —> 服务器响应HTTP请求,浏览器得到html代码 —> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片) —> 浏览器对页面进行渲染呈现给用户 1. 域名解析 以Chro...

2019-04-09 09:15:19 1010 0

原创 HTTP1.0/1.1和HTTP2.0的区别

HTTP1.0和HTTP1.1的一些区别 1.缓存处理, 在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准,HTTP1.1则引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match,...

2019-04-09 09:06:05 109 0

原创 C++11---2.decltype

decltype decltype实际上有点像 auto 的反函数, auto 可以让你声明一个变量,而 decltype 则可以从一个变量或表达式中得到其类型。 #include<iostream> #include<stdlib.h> using namespace s...

2019-04-06 15:15:01 45 0

原创 1.auto

auto auto 的自动类型推导,用于从初始化表达式中推断出变量的数据类型。从这个意义上讲,auto并非一种“类型”声明,而是一个类型声明时的“占位符”,编译器在编译时期会将 auto 替换为变量实际的类型。 #include <iostream> #include <vect...

2019-04-06 14:34:04 56 0

原创 找到数组中超过一半和四分之一的两个数

题目描述 一个长度为size的整形无序数组,已知其中一个元素出现的次数超过size&gt;&gt;1,另外一个元素出现的次数超过size&gt;&gt;2,请找出这两个元素。要求时间复杂度O(n),空间复杂度O(1)。 思路: 这是一道CVTE的笔试题,有点和剑指O...

2019-02-27 17:25:52 151 0

原创 数据库---表的更新和删除

1.更新 我们接着之前的例子,进行操作 //语法 update tbl_name set col_name1=expr1 [, col_name2=expr2 ...] [where conditon] [limit n] update使用细节: 1.update 语法可以用新值更新原有表中的各...

2019-02-26 18:56:54 222 0

原创 数据库---表的插入

1.增加 insert into table_name[(column[,column...])] values (value [,value...]); 案例: 1.创建一张学生表 create table stu( id int unsigned primary key, n...

2019-02-26 17:28:26 239 0

原创 数据库---库的操作

1.创建数据库 语法: CREATE DATABASE [IF NOT EXISTS] db_name [create_specification][create_specification][...]; create_specification: [DEFAULT] CHARACTER SET...

2019-02-26 14:56:52 54 0

原创 数据库---基础

数据库基础 1.进入数据库 mysql -uroot -p 2.使用 1.创建数据库 create database hello; //创建名字为‘hello‘’的数据库 2.使用这个数据库 use hello; 3.创建数据库表 create table student( id i...

2019-02-26 13:17:27 55 0

原创 Linux系统编程---生产者消费者模型

生产者消费者模型(PC模型) 生产者消费者模型,其实已经很熟悉了,但真正让程序把它跑起来,这里面还有不少细节需要我们注意。 生产者消费者模型,可以归结为一个123,即1个场所,2个对象,3种关系。 它的过程就是 一个生产者生产数据放进缓冲池,消费者从缓冲池中取数据消费,在这期间,生产者生产数据和消...

2019-02-25 18:34:50 180 0

原创 排序算法---基数排序

基数排序 思想: 1.先开辟好空间,来保存中间排好序的数据 2.统计每个个位相同的数据出现的次数,保存在count数组 3.计算每个数据要存入tmp数组的开始位置 4.将数据存放在tmp数组中 5.将排好序的数据写进原数组中 源码: #include&amp;amp;amp...

2019-02-23 18:34:02 71 0

原创 排序算法---计数排序

计算排序 计数排序是一种非比较排序,适合待排序的数据的范围比较小,数据比较集中的情况。 如果数据范围跨度大,会导致占用的空间比较大。 时间复杂度:O(2n+数据的范围) 空间复杂度:O(数据的范围+1) 思想: 1.先找到原数组的最大最小值 2.将数组里面的值遍历一遍找到每个数出现的次数,保存在c...

2019-02-23 16:01:20 61 0

原创 C++---四种强制类型转换

C++在c的基础上,将强制类型转换进行了细分,并且还加了一些C语言没有的强制类型转换。 C语言提供了隐式类型转换和强制类型转换,C++由于继承C的这一些东西,所以C++也支持隐式类型转换。例如这样,int会默认转换为double型。 隐式类型转换 int i = 3; double d =...

2019-01-30 22:49:53 129 0

原创 C++---模板分离编译问题

什么是分离编译 一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链接起来形成单一的可执行文件的过程称为分离编译模式。 通俗的说,也就是你的程序中有多个源文件,和多个头文件,最后将多个源文件单独编译后形成一个可执行程序的过程,叫做分离编译。 举个例子...

2019-01-27 17:57:25 125 0

原创 C++---STL-模拟实现vector

STL有六大组件,如图: 今天我们来模拟实现容器部分的vector,看看底层怎么做。 直接看代码,细节都在代码里面。 #include&amp;lt;iostream&amp;gt; #include&amp;lt;assert.h&amp;gt; #...

2019-01-26 22:35:07 112 0

原创 剑指offer---把二叉树打印成多行

把二叉树打印成多行 题目描述 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 思路: 思路: 1.用一个队列来保存下次要打印的节点,通过队列是否为空做外循环 2.用low和high来记录当前层的节点数,用于内循环 3.每次插入完之后要把v清空 /* struct...

2019-01-25 18:11:46 663 0

原创 C++设计模式---单例模式

设计模式 设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。 目的: 为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。 分类: 主要分三个类型:创建型、...

2019-01-24 21:33:50 743 0

原创 剑指offer----求1+2+3+...+n

题目描述: 求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 class Temp { public: Temp() { _sum += _count; _count++; } static ...

2019-01-23 21:08:54 86 0

原创 LeetCode---92. 反转链表 II

题目描述: 反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。 说明: 1 ≤ m ≤ n ≤ 链表长度。 示例: 输入: 1-&gt;2-&gt;3-&gt;4-&gt;5-&gt;NULL, m = 2, n = 4 输出: 1-&gt;4...

2019-01-20 21:16:05 79 0

原创 链表---打印链表公共部分

题目描述: 给定两个有序链表的头节head1和head2,打印两个有序链表的公共部分(默认升序是) 思路: 1.分别遍历两个链表,当list1的节点值和list2 的节点值相等时,打印 2.当list1的值小于list2,list1往后移动 3.当list1的值大于list2,list2往后移动 ...

2019-01-19 19:19:46 132 0

原创 荷兰国旗问题---按小于、等于、大于分组链表

题目描述:给定一个链表的头节点head,再给定一个数num,请把链表调整成节点值小于num的节点都放在链表的左边,值等于num的节点都放在链表的中间,值大于num的节点,都放在链表的右边。 解法一: 1.将链表的所有节点放入到数组中,然后将数组进行快排划分的调整过程。 2.然后将数组中的节点...

2019-01-19 17:57:24 124 0

原创 链表---删除链表的非尾结点,要求:不能遍历链表

题目描述:删除链表的非尾结点,要求:不能遍历链表,(要求事件复杂度O(1),空间复杂度O(1)) 思路: 1.先找到要删除的节点,然后将要删除的节点的下个节点的值val赋值给当前要删除节点的值 2.然后删除要删除节点的下个节点 缺陷:只能删除链表的非尾节点,不适用于节点的val很多的情况,以及链表...

2019-01-19 16:34:30 86 0

原创 LeetCode---206. 反转链表

题目描述:反转一个单链表。 示例: 输入: 1-&gt;2-&gt;3-&gt;4-&gt;5-&gt;NULL 输出: 5-&gt;4-&gt;3-&gt;2-&gt;1-&gt;NULL 进阶: 你可以迭代或递归地...

2019-01-19 16:17:08 77 2

原创 有序环形链表插入节点

题目:给定一个整数num,如何在节点有序的环形链表中插入一个节点值为num的节点,并保证这个环形链表依然有序。(假如链表是升序) 解决思路: 1.如果链表为空,则开辟一个节点,让后让他自己指向自己,然后返回该节点。 2.如果链表不为空,分为三种情况: a.如果插入的节点的值是在环形链表最大...

2019-01-18 16:13:37 303 4

原创 https到底安全在哪里?

对称加密算法 都说http是不安全的,http是明文传输,也就是说http在两个主机之间传输的信息都是没有经过加密的,那给他加个密不就好了。于是就有了对称加密算法。 对称加密算法指的是加密和解密用的是同一个密钥。 每次进行数据传输前,都是先对要传输的数据进行加密,然后对方再进行解密。虽然加密和解...

2019-01-16 16:19:14 13929 10

原创 如何定义一个只能在堆/栈上生成对象的类?

C++中,建立对象可以分为两种,一种是在栈上,一种是在堆上。在栈上成为静态建立,而后者成为动态建立。 静态建立一个累的对象,是由编译器自动为对象在栈空间中分配内存,然后调用该对象的构函数形成一个对象,这种方法是直接调用类的构造函函数。 动态建立对象,则是通过new运算符在堆上建立对象。具体步骤...

2019-01-15 22:14:13 613 3

原创 LeetCode报错:runtime error: member access within null pointer of type 'struct ListNode'

错误题目:876. 链表的中间结点 错误原因:试图使用空指针 解决方法:增加判断条件,并且判断的顺序不能改变。排除对空指针的引用。 /** * Definition for singly-linked list. * struct ListNode { * int val; * ...

2019-01-14 00:04:52 7638 0

原创 智能指针

1.RAII(Resource Acquisition Is Initialization) RAII(Resource Acquisition Is Initialization)即资源分配及初始化,它源于C++,在其他语言Java,C#等中也有应用,它是在一些面向对象语言中的一种惯用法。是一...

2018-12-24 20:32:19 897 0

转载 HTTP中的cookie和session

1、什么是cookie和session http协议是一种无状态的协议,浏览器对服务器的每一次请求都是独立的。为了使得web能够产生一些动态信息,就需要保存”状态”,而cookie和session机制就是为了解决http协议无状态而产生。cookie是一种在客户端保存状态的方案,session是一...

2018-12-22 15:03:03 1188 0

原创 Linux系统编程---线程控制

线程是Linux系统编程的核心,今天来好好总结下线程的操作函数 创建线程 #include &amp;amp;amp;lt;pthread.h&amp;amp;amp;gt;//头文件 int pthread_create( pthread_t *thread,const...

2018-12-09 16:44:43 649 0

原创 Linux系统编程---进程间通信-消息队列

消息队列 消息队列也是一种进程间通信方式,它提供了两个不相关进程间传递数据的方式。消息队列实际上是操作系统在内核为我们创建的一个链式队列,通过这个队列的标识符key,多个进程可以通过向队列中添加节点或获取节点来进行数据传输。这个队列中的节点有一个消息类型来标识不同进程所发送或接受的数据类型。消息...

2018-12-07 19:08:29 201 0

原创 Linux系统编程---进程间通信-命名管道

命名管道 命名管道,意思就是给他指明了名字,他打破了匿名管道只能具有亲缘关系之间进行通信的缺陷,它是一种特殊的“文件”。命名管道提供了一个路径名与之关联,以 FIFO 的文件形式存在于文件系统中,所以当两个不具有亲缘关系进程要通信时,只需要访问路径名即可。 命名管道的特点 1、FIFO 在文件系统...

2018-11-27 22:15:41 125 0

原创 Linux系统编程---进程间通信-管道

从今天开始,我们来系统总结下Linux下进程之间通信的方式。在此之前,我们来谈谈进程间为什么要进行通信? 进程间通信目的 数据传输:一个进程需要将它的数据发送给另一个进程。 资源共享:多个进程之间共享同样的资源。 通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某...

2018-11-27 16:39:14 246 0

原创 LeetCode---292. Nim游戏

Nim游戏 题目描述: 你和你的朋友,两个人一起玩 Nim游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。 你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。 示例: 输入: 4 输出: fa...

2018-11-22 00:01:14 139 0

原创 Linux网络编程---解决TIME_WAIT状态引起的bind失败的方法

好几天都没写博客了,感觉落后了别人一大截,今天赶紧来补补。废话不多说,知己而进入正题。 首先我们得明白,有些情况下,在server的TCP连接没有完全断开之前是不允许重新监听可能是不合理的 例如: 服务器需要处理非常大量的客户端的连接(每个连接的生存时间可能很短, 但是每秒都有很大数量的...

2018-11-21 11:29:18 1452 0

原创 Linux网络编程---深刻理解5种基本IO模型

Linux五种IO模型: 1.阻塞IO:当kernel没有数据可读时,io调用一直阻塞,直到kernel有数据时,将数据从kernel拷贝到用户空间,io调用才返回。 2.非阻塞IO:当kernel无数据可读时,io操作立即返回,当有数据可读时,将数据从kernel拷贝到用户空间才返回(拷贝过...

2018-11-09 12:20:07 806 4

原创 Linux网络编程---I/O多路复用之select

1.I/O多路复用(IO multiplexing) 我们之前讲了I/O多路复用和其他I/O的区别,在这里,我们再具体讨论下I/O多路复用是怎么工作? I/O 多路复用技术就是为了解决进程或线程阻塞到某个 I/O 系统调用而出现的技术,使进程不阻塞于某个特定的 I/O 系统调用。 selec...

2018-11-07 22:49:41 1085 0

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