自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 c 语言的声明规则

    在阅读很多c 语言源代码的时候,我们经常会看到如下的声明char *j[10];        // j 是一个指向数组的指针const int *grape;    // 指针所指向的对象是只读int const *grape;    // 同上int *grape_jelly;    // 指针是只读的(常量指针)    刚开始我们看书的时候,根据书上的介绍,很容易记住上面的定义...

2018-03-30 22:38:01 497

原创 LeetCode (2). Reverse Integer

题目    给一个整数,要求翻转过来。例如:    输入: 4567   输出: 7654//// Created by 陈国威 on 2018/3/19.//#ifndef LEETCODE_SOLUTION_H#define LEETCODE_SOLUTION_H#include <iostream>using namespace std;class Solu...

2018-03-29 00:02:27 152

原创 大小端的宏实现

    今天无意中看到一道面试题,说怎么实现大小端的转换?    其实,这道题仔细想想,面试官应该向考位运算。    就是怎么把一个整数的高低位的数值调用。//// Created by 陈国威 on 2018/3/26.//#ifndef INTERVIEW_BIG_LITTLE_H#define INTERVIEW_BIG_LITTLE_Htypedef unsigned sho...

2018-03-26 22:44:19 1409

转载 C++对象模型之简述C++对象的内存布局

转载自:https://blog.csdn.net/ljianhui/article/details/45903939#reply在C++中,有两种类的成员变量:static和非static,有三种成员函数:static、非static和virtual。那么,它们如何影响C++的对象在内存中的分布呢? 当存在继承的情况下,其内存分布又是如何呢?下面就一个非常简单的类,通过逐渐向其中加入各种成员,来...

2018-03-25 17:19:29 138

转载 C++对象模型之详述C++对象的内存布局

转载自:https://blog.csdn.net/ljianhui/article/details/46408645在C++对象模型之简述C++对象的内存布局一文中,详细分析了各种成员变量和成员函数对一个类(没有任何继承的)对象的内存分布的影响,及详细讲解了如何遍历对象的内存,包括虚函数表。如果你在阅读本文之前,还没有看过C++对象模型之简述C++对象的内存布局一文,建议先阅读一下。而本文主要讨...

2018-03-25 17:15:30 212

原创 c++里的转换函数

    我们用的最多的一般是从某类型到类类型之间的转换, 比如 Stone wolf; wolf = 3。这样的转换一般是通过构造函数来隐式转换,也就是Stone(int store)构造函数没有使用explicit关键字。那么如果我们想要 Stone wolf; double wo = wolf 这样的从类类型转换到其他类型,那么就需要使用C++的转换函数了。class Stone{publ...

2018-03-25 12:42:27 514

原创 c++的构造函数为什么不能是虚函数,而基类的析构函数必须是虚函数?

构造函数为什么不能是虚函数呢?    首先需要了解 vptr指针和虚函数表的概念,以及这两者的关联。    vptr指针指向虚函数表,执行虚函数的时候,会调用vptr指针指向的虚函数的地址。    当定义一个对象的时候,首先会分配对象内存空间,然后调用构造函数来初始化对象。vptr变量是在构造函数中进行初始化的。又因为执行虚函数需要通过vptr指针来调用。如果可以定义构造函数为虚函数,...

2018-03-24 23:19:11 10780

原创 客户端时不时接收到10054错误

    在一个linux 群里,有人问:select写socket时候 建立链接立马发送数据有时候收不到数据 还提示10054 百分之八十的情况还是能收到的 一般收不到数据的时候 第二次再链接发送数据就能收到 请问是怎么回事呢?    对于好奇心极强的我,对于这个没遇到的问题,我就百度了10054错误。网上说:    一般来说是连接被对方重设。一个建立的连接被远程主机强行关闭,若远程主机上的进程异...

2018-03-24 10:37:35 13002

转载 面试中的C++常见问题

转载自:https://blog.csdn.net/weiyuefei/article/details/504135091.在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?答:首先,extern是C/C++语言中表明函数和全局变量作用范围的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。通常,在模块的头文件中对本模块提供给其它模块引用的函数...

2018-03-23 16:18:23 161

转载 C/C++面试题大汇总之 基本问题

1.new、delete、malloc、free关系 delete会调用对象的析构函数,和new对应,free只会释放内存,new调用构造函数。malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消...

2018-03-23 16:15:24 478

转载 常见的网络编程面试题

1:tcp和udp的区别TCP:是面向连接的流传输控制协议,具有高可靠性,确保传输数据的正确性,有验证重发机制,因此不会出现丢失或乱序。UDP:是无连接的数据报服务,不对数据报进行检查与修改,无须等待对方的应答,会出现分组丢失、重复、乱序,但具有较好的实时性,UDP段结构比TCP的段结构简单,因此网络开销也小。2:流量控制和拥塞控制拥塞控制网络拥塞现象是指到达通信子网中某一部分的分组数量过多,使得...

2018-03-23 16:12:39 4098

转载 几个常见的 Socket 连接错误及原因[转]

下面列出了几个在客户与服务进程连接中常见的几个 Socket 错误,并分析了原因。后续再逐渐补充吧。ECONNABORTED          该错误被描述为“software caused connection abort”,即“软件引起的连接中止”。原因在于当服务和客户进程在完成用于 TCP 连接的“三次握手”后,客户 TCP 却发送了一个 RST (复位)分节,在服务进程看来,就在该连接已由...

2018-03-23 15:59:04 2220

转载 malloc 、calloc 和 realloc的区别

转载自:http://blog.csdn.net/zhengqijun_/article/details/52027070一、malloc1.函数原型void *malloc(size_t size); 2.函数功能malloc()在内存的动态存储区中分配一块长度为size字节的连续区域。参数size为需要的内存空间的长度,返回该区域的地址。3.区别malloc不能初始化所分配的内存空间,需要用m...

2018-03-22 21:48:42 125

原创 TCP三次握手的第三次的 ack包丢失会怎样?

面试题:    在 TCP 建立连接的三次握手连接阶段,如果客户端发送的第三个ACK包丢了,那么客户端和服务端分别进行什么处理呢?    相信了解 tcp 协议的人,三次握手的过程肯定很了解了。第三次的 ack 包丢失就是说在 client 端接收到 syn + ack 之后,向 server 发送的 ack 包 由于各种原因 server 没有收到。这时 client, server 分别会进行...

2018-03-22 10:37:20 14237 8

转载 细说new与malloc的10点区别

转载自:http://www.cnblogs.com/QG-whz/p/5140930.htmlnew与malloc的10点区别1. 申请的内存所在位置new操作符从自由存储区(free store)上为对象动态分配内存空间,而malloc函数从堆上动态分配内存。自由存储区是C++基于new操作符的一个抽象概念,凡是通过new操作符进行内存申请,该内存即为自由存储区。而堆是操作系统中的术语,是操作...

2018-03-20 16:53:14 462 3

原创 LeetCode (1) Two Sum

题目:Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you may not use the same...

2018-03-19 22:01:34 135

原创 Linux 信号(一)

    信号是一种软中断信号,是进程间通信机制中唯一的异步通信机制。    一个信号就是一条小信息,它通知进程系统中发生了一个某种类型的事件。每种信号类型都对应于某种系统事件。当系统要给某个进程发送某个信号时,一般会在PBC进程控制块的上下文中设置某个状态,以表示某个信号发生。当内核把该进程从内核模式切换到用户模式的时候(进程的上下文切换),它会检查该进程的未被堵塞的待处理的信息的集合(通常在用户...

2018-03-19 21:44:36 150

转载 Linux 信号

信号在内核中的表示执行信号的处理动作成为信号递达(Delivery),信号从产生到递达之间的状态称为信号未决(Pending)。进程可以选择阻塞(Block)某个信号。被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作注意:阻塞和忽略是不同的,只要信号被阻塞就不会递达,而忽略是在递达之后可选的一种处理动作 ①PCB进程控制块中有信号屏蔽状态字(block),信...

2018-03-19 21:04:57 128

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

    在C++中,类的对象建立分为两种,一种是静态建立,如A a; 另一种是动态建立,如A* ptr = new A; 这两种方式是有区别的。    静态建立一个类对象,是由编译器为对象在栈空间中分配内存,是通过直接移动栈顶指针,挪出适当的空间,然后在这片内存空间上调用构造函数形成一个栈对象。使用这种方法,直接调用类的构造函数。    动态建立类对象,是使用new运算符将对象建立在堆空间中。这个...

2018-03-18 21:14:43 176

转载 守护进程详解(二)

转载自:http://blog.csdn.net/lianghe_work/article/details/47659889什么是守护进程?守护进程(Daemon Process),也就是通常说的 Daemon 进程(精灵进程),是 Linux 中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是个特殊的孤儿进程,这种进程脱离终...

2018-03-18 18:48:38 219

原创 守护进程(一)

什么是守护进程?    守护进程就是linux 中的后台服务进程。它是一个生存周期较长的进程,通常独立于控制终端并且周期地执行某种任务或等待某些待处理的事件。如何查看守护进程    在终端上执行 ps -axja 表示不仅显示当前用户的进程,还显示其他用户所拥有的进程。x 显示没有控制终端的进程状态。j 显示与作业相关的信息:会话ID、进程组ID、控制终端以及终端进程组ID    而另一个相关的 ...

2018-03-18 18:44:38 272

原创 socket可读可写

一、下列四个条件中的任何一个满足时,socket准备好读:socket的接受缓冲区中的数据大于等于该socket的接收缓冲区低水位标记的当前的大小。对于这样的socket的读操作将不堵塞并返回一个大于0的值。我们可以用SO_RCVLOWAT 这个socket选项来设置该socket的低水位值。缺省值位1.该连接的读这一半关闭(也就是接收了FIN的TCP连接)。对于这样的socket将不堵塞返回0....

2018-03-17 17:45:46 750

转载 TCP/IP详解--TCP连接中TIME_WAIT状态过多

转载自:http://blog.csdn.net/yusiguyuan/article/details/21445883TIMEWAIT状态本身和应用层的客户端或者服务器是没有关系的。仅仅是主动关闭的一方,在使用FIN|ACK|FIN|ACK四分组正常关闭TCP连接的时候会出现这个TIMEWAIT。服务器在处理客户端请求的时候,如果你的程序设计为服务器主动关闭,那么你才有可能需要关注这个TIMEW...

2018-03-15 10:22:34 537

原创 图相关的术语

    在学习图相关算法之前,我们要先了解图相关的术语。图是由一组顶点和一组能够将两个顶点相连的边组成的。1、特殊的图自环,即一条连接一个顶点和其自身的边;连接同一队顶点的两条边称为平行边 。2、多重图    含有平行边的图称为多重图,而没有平行边或自环的图称为简单图。相关术语表相邻顶点当两个顶点通过一条边相连顶点的度数即为依附于它的边的总数子图由一幅图的所有边的一个子集路径由边顺序连接的一系列顶...

2018-03-14 10:18:50 514

原创 (二)、进程的使用

    在上一篇 进程概念的介绍 中已经介绍了进程相关的一些函数,这篇文章则介绍进程相关的一些函数。1、获取进程#include <sys/types.h>#include <unistd.h>pid_t getpid(void);pid_t getppid(void)                          ...

2018-03-13 22:07:58 145

原创 (一 ) . 进程概念的介绍

进程    进程的经典定义就是一个执行中程序的实例。上下文是由程序正确运行所需要的状态组成的。这个状态包括存放在内存中程序的代码和数据,它的栈、通用的目的寄存器的内容、程序计数器、环境变量以及打开文件描述符的集合。逻辑控制流    如果想用调试器单步执行程序,我们会看到一系列的程序计数器的值,这些值唯一地对应包含在程序的可执行目标文件中的指令,或是包含在运行时动态链接到程序的共享对象中的指令。这个...

2018-03-12 21:54:50 252

转载 StarUML2 全平台破解方法

转载来自:http://blog.csdn.net/hoo_chsodene/article/details/50741112首先,找到安装目录下的“LicenseManagerDomain.js”文件;其次,按照如下图所示的代码内容更改上面的js文件:也可以参照如下代码段:[javascript] view plain copyfunction validate(PK, name, produc...

2018-03-11 19:12:02 712

原创 函数sync fsync 和 fdatasync 的区别

        一般的unix系统实现在内核中都会设有缓冲区高速缓冲或页高速缓存。当我们从磁盘读取文件时,一般都会设置一个缓冲区,先把文件内容读取到缓冲区中,然后再从该缓冲区中读取内容。把数据写入磁盘文件时也是一样,一般都会先把数据缓存到缓存区,然后由内核启动的一个进程来定时(一般是30秒)地把内容写入到磁盘中。        而在 unix 中有这三个函数影响到文件的写入操作。下面介绍这三个函数...

2018-03-10 19:47:38 1016

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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