自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 资源 (2)
  • 收藏
  • 关注

原创 SQL的四种连接-左外连接、右外连接、内连接、全连接

SQL的四种连接-左外连接、右外连接、内连接、全连接 今天在看一个遗留系统的数据表的时候发现平时查找的视图是FULL OUT JOIN的,导致平时的数据记录要进行一些限制性处理,其实也可以设置视图各表为右外连接并在视图上设置各列的排序和筛选条件就可以达到效果。 联接条件可在FROM或WHERE子句中指定,建议在FROM子句中指定联接条件。WHERE和HAVING子句也可以包含搜索条件,以进一步筛选...

2018-03-18 18:19:56 90

原创 请说说什么是外连接,左外连接,右外连接

两个表:A(id,name)数据:(1,张三)(2,李四)(3,王五)B(id,name)数据:(1,学生)(2,老师)(4,校长)左连接结果:select A.*,B.* from A left join B on A.id=B.id;1 张三 1 学生2 李四 2 老师3 王五 NULL NULL右链接结果:select A.*,B.* from A right join B on A.id=...

2018-03-18 18:15:13 4453

原创 什么是虚函数,什么是纯虚函数?为什么引入虚函数和纯虚函数?

虚函数与纯虚函数 在他们的子类中都可以被重写。它们的区别是:(1)纯虚函数只有定义,没有实现;而虚函数既有定义,也有实现的代码。 纯虚函数一般没有代码实现部分,如virtual void print() = 0; 而一般虚函数必须要有代码的实现部分,否则会出现函数未定义的错误。virtual void print(){ printf("This is virtual function\n...

2018-03-18 16:54:41 6549 1

原创 IOCP模型与网络编程

IOCP模型与网络编程一。前言:        在老师分配任务(“尝试利用IOCP模型写出服务端和客户端的代码”)给我时,脑子一片空白,并不知道什么是IOCP模型,会不会是像软件设计模式里面的工厂模式,装饰模式之类的那些呢?嘿嘿,不过好像是一个挺好玩的东西,挺好奇是什么东西来的,又是一个新知识啦~于是,开始去寻找一大堆的资料,为这个了解做准备,只是呢,有时还是想去找一本书去系统地学习一下,毕竟网络...

2018-03-18 15:31:52 197

原创 客户端与服务器端交互原理

客户端与服务器端交互原理经常看到HTTP客户端与服务器端交互原理的各种版本的文章,但是专业术语太多,且流程过于复杂,不容易消化。于是就按照在 Servlet 里面的内容大致做了一些穿插。本来连 Tomcat 容器 和 Servlet 的生命周期也准备在这里一起写的,但怕过于庞大,于是就简单的引用了一些 Servlet 对象。这样的一个整个流程看下来,相信至少在理解 HTTP协议和 request ...

2018-03-17 19:06:59 4829

原创 图解排序算之堆排序

图解排序算法(三)之堆排序预备知识堆排序  堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。堆  堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。如下图:同时,我们对堆中的结点按层进行编号...

2018-03-17 16:32:52 107

原创 C++类静态成员与类静态成员函数详解

C++类静态成员与类静态成员函数详解当将类的某个数据成员声明为static时,该静态数据成员只能被定义一次,而且要被同类的所有对象共享。各个对象都拥有类中每一个普通数据成员的副本,但静态数据成员只有一个实例存在,与定义了多少类对象无关。静态方法就是与该类相关的,是类的一种行为,而不是与该类的实例对象相关。静态数据成员的用途之一是统计有多少个对象实际存在。静态数据成员不能在类中初始化,实际上类定义只...

2018-03-17 14:26:17 241

原创 二叉树的前中后序遍历非递归算法

【写在前面】  二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就 是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对于树的遍历若采用非递归的方法,就要采用栈去模拟实现。在三种遍历 中,前序和中序遍历的非递归算法都很容易实现,非递归后序遍历实现起来相对来说要难一点。一.前序遍...

2018-03-17 14:22:50 460

原创 C++中的const关键定代表什么含义?跟C语言中的const有什么区别

const int n = 10;在c中n是一个只读变量,n的值运行时才知道,占有内存在c++中n是常量,编译时就有值,直接替换使用的地方,不占内存比如    const int n = 10;    int a[n];用c编译是编译不过的,因为n是变量,编译的时候大小不知道但用c++编译可以编译通过,因为n是常量,相当与 #defind n 3const对象默认为文件的局部变量,与其他变量不同,...

2018-03-17 13:07:37 2933

原创 虚拟内存

虚拟内存别称虚拟存储器(Virtual Memory)。电脑中所运行的程序均需经由内存执行,若执行的程序占用内存很大或很多,则会导致内存消耗殆尽。为解决该问题,Windows中运用了虚拟内存[2]  技术,即匀出一部分硬盘空间来充当内存使用。当内存耗尽时,电脑就会自动调用硬盘来充当内存,以缓解内存的紧张。若计算机运行程序或操作所需的随机存储器(RAM)不足时,则 Windows 会用虚拟存储器进行...

2018-03-17 12:26:09 151

原创 MVC模式与三层架构的区别

之前总是混淆MVC表现模式和三层架构模式,为此记录下。三层架构和MVC是有明显区别的,MVC应该是展现模式(三个加起来以后才是三层架构中的UI层) 三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合”的思想。 1、表现层(UI):通俗讲就是展现给用户的界面,...

2018-03-17 12:05:02 155

原创 为什么现在的网络最后采用了TCP/IP参考模型而没用OSI参考模型?

OSI参考模型与TCP/IP参考模型的主要差别 1) TCP/IP一开始就考虑到多种异构网的互联问题,并将网际协议IP作为TCP/IP的重要组成部门。但ISO最初只考虑到使用一种标准的公用数据网将各种不同的系统互联在一起。 2) TCP/IP一开始就对面向连接各无连接并重,而OSI在开始时只强调面向连接服务。 3) TCP/IP有较好的网络管理功能,而OSI到后来才开始这个问题,在这方面两者有所不...

2018-03-17 11:51:28 8826 1

原创 请说一下http请求的基本过程

首先http是一个应用层的协议,在这个层的协议,只是一种通讯规范,也就是因为双方要进行通讯,大家要事先约定一个规范。1.连接 当我们输入这样一个请求时,首先要建立一个socket连接,因为socket是通过ip和端口建立的,所以之前还有一个DNS解析过程,把www.mycompany.com变成ip,如果url里不包含端口号,则会使用该协议的默认端口号。DNS的过程是这样的:首先我们知道我们本地的...

2018-03-17 10:24:33 227

原创 C/C++程序员必须熟练应用的开源项目

 作为一个经验丰富的C/C++程序员(csdn langeldep), 肯定亲手写过各种功能的代码, 比如封装过数据库访问的类, 封装过网络通信的类,封装过日志操作的类, 封装过文件访问的类, 封装过UI界面库等, 也在实际的项目中应用过, 但是回过头仔细想想,其实以前自己写过的这些代码,只能是在特定的项目或者特定的环境中使用, 对于自己来说, 在不同的项目中应用, 只需要复制代码, 改改也就可以...

2018-03-17 10:14:08 404

原创 简单的方法让一个应用程序只运行一个实例

关于这个问题,我以前写了篇小总结,题为“简单的方法让一个应用程序只运行一个实例”:一个程序可以运行多个实例(进程),那我们如何让它仅运行一个实例呢?很简单,使用#pragma编译器指令在进程的地址空间内创建一个“共享节”就可以达到目的,这个“共享节”里的数据为多个运行的进程所共享,这样我们通过设置一个变量比如:unsigned g_nInstanceCount;作为运行实例的计数,在程序入口处检测...

2018-03-15 21:17:12 1748

原创 面试题4

内存分配一个由C/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。在Windows下,栈是向低地址扩展的数据结构,是一块连续的内存的区域。这句话的意思是栈顶的地址和栈的最大容量是系统预先规定好的,在 WINDOWS下,栈的大小是2M(也有的说是1M,总之是一个编译时就确定的常数),如果申请...

2018-03-15 16:55:48 391

原创 数据库事务

        事务(Transaction)是并发控制的基本单位。所谓的事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。例如,银行转账工作:从一个账号扣款并使另一个账号增款,这两个操作要么都执行,要么都不执行。所以,应该把它们看成一个事务。事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据一致性。       针对上面的描述可以看出,事务的提出...

2018-03-14 20:53:44 100

原创 什么是存储过程

什么是存储过程:存储过程可以说是一个记录集吧,它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),然后再给这个代码块取一个名字,在用到这个功能的时候调用他就行了。存储过程的好处:1.由于数据库执行动作时,是先编译后执行的。然而存储过程是一个编译过的代码块,所以执行效率要比T-SQL语句高。2.一个存储过程在程序在网络中交互时可以替代大堆...

2018-03-14 20:40:09 29628 4

原创 34个数据库常见面试题讲解

1、触发器的作用?触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的。它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。2、什么是存储过程?用什么来调用?存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后在该程序中就可...

2018-03-14 20:25:35 446

原创 初始化列表效率

Effective C++里有提到,看过的都知道,初始化列表效率>=在函数体里赋值。但有一点要特别注意,成员变量初始化的顺序取决于声明的顺序,而不是在初始化列表中的顺序。vc不说啥,gcc会报warning。如果遇到初始化有依赖关系的,要特别注意。如果你的成员是POD类型(Plain Old Data),那么list initialization和constructor initializa...

2018-03-14 13:37:54 529

原创 VC环境下的静态库(lib)使用和动态库(Dll)的使用(清晰版)

 VC环境下的静态库使用一.  静态库包括.lib和.h文件,在工程中使用静态库分为3步:<1> 在工程中加入静态库,有三种方法:      **方法一:项目设置中引用.lib,project->   setting->   link->   object/library modules中添加.lib;(可以在这里指定路径,也可以在project>setting...

2018-03-14 11:45:40 773

原创 动态载入DLL所需要的三个函数详解(LoadLibrary,GetProcAddress,FreeLibrary)

动态载入 DLL动态载入方式是指在编译之前并不知道将会调用哪些 DLL 函数, 完全是在运行过程中根据需要决定应调用哪些函数。方法是:用 LoadLibrary 函数加载动态链接库到内存,用 GetProcAddress函数动态获得 DLL 函数的入口地址。当一个 DLL 文件用 LoadLibrary 显式加载后,在任何时刻均可以通过调用 FreeLibrary 函数显式地从内存中把它给卸载。动...

2018-03-14 11:40:50 780

原创 如何在VC6中申请分配大容量内存

1、最简单、直接的方法是使用C++运算符new,例如:对于分辨率为x*y*8bit的图像,申请分配内存方法:BYTE *pBuf=new BYTE[x*y];用此方法一定要注意,只要pBuf不使用了,就要用delete将其释放掉。2、较复杂的方法是使用API函数GlobalAlloc和LocalAlloc,此方法分配的内存是以“堆”形式提供的,可使用GlobalLock/LocalLock对所申请...

2018-03-14 10:47:24 830

原创 拷贝构造函数的参数为什么必须使用引用类型(避免无限递归拷贝,但其实编译器已经强制要求了)

在C++中, 构造函数,拷贝构造函数,析构函数和赋值函数(赋值运算符重载)是最基本不过的需要掌握的知识。 但是如果我问你“拷贝构造函数的参数为什么必须使用引用类型?”这个问题, 你会怎么回答? 或许你会回答为了减少一次内存拷贝? 很惭愧的是,我的第一感觉也是这么回答。不好还好,我有理性这个好品质。思索一下以后,发现这个答案是不对的。让我来撕开(有点暴力,但是我喜欢,嘿嘿--龇牙)那件隐藏在真理外的...

2018-03-13 23:23:29 638

原创 windows下进程间通信的(13种方法)

摘 要 随着人们对应用程序的要求越来越高,单进程应用在许多场合已不能满足人们的要求。编写多进程/多线程程序成为现代程序设计的一个重要特点,在多进程程序设计中,进程间的通信是不可避免的。Microsoft Win32 API提供了多种进程间通信的方法,全面地阐述了这些方法的特点,并加以比较和分析,希望能给读者选择通信方法提供参考。关键词 进程 进程通信 IPC Win32 API1 进程与进程通信 ...

2018-03-13 18:09:25 510

原创 C++11

 C++11已经出来很久了,网上也早有很多优秀的C++11新特性的总结文章,在编写本博客之前,博主在工作和学习中学到的关于C++11方面的知识,也得益于很多其他网友的总结。本博客文章是在学习的基础上,加上博主在日常工作中的使用C++11的一些总结、经验和感悟,整理出来,分享给大家,希望对各位读者有帮助,文章中的总结可能存在很多不完整或有错误的地方,也希望读者指出。大家可以根据如下目录跳到自己需要的...

2018-03-13 16:07:34 90

原创 VC进程间通信, 线程间通信,线程同步的方式

进程通信是讲的比较多的,很多教科书上也有,包括下面几种:1.管道2.信号(系统内的一些信号,复杂,与信号量不同)3.消息队列4.共享内存5.信号量(进程线程同步互斥的方法)6.套接字VC 线程间通信的三种方式:1.使用全局变量(窗体不适用)     实现线程间通信的方法有很多,常用的主要是通过全局变量、自定义消息和事件对象等来实现的。其中又以对全局变量的使用最为简洁。该方法将全局变量作为线程监视的...

2018-03-13 13:32:33 581

原创 厉害的解析-----Windows 消息机制

Windows 消息机制浅析1.       Windows 的历史中国人喜欢以史为鉴,而事实也确实是,如果你能知道一件事情的来龙去脉,往往可以更容易地理解事物为什么会表现为当前这样的现状。所以,我的介绍性开场白通常会以一段历史开始。不过,我不会以精确到年月日的那种方式详细讲述,而是选取几个对我们的编程生涯有重要影响的关键点。Windows 是真正的图形化界面操作系统的普及者,无论任何人,争夺什么...

2018-03-13 13:30:52 225

原创 windows消息处理机制

消息,就是指Windows发出的一个通知,告诉应用程序某个事情发生了。例如,单击鼠标、改变窗口尺寸、按下键盘上的一个键都会使Windows发送一个消息给应用程序。消息,就是指Windows发出的一个通知,告诉应用程序某个事情发生了。例如,单击鼠标、改变窗口尺寸、按下键盘上的一个键都会使Windows发送一个消息给应用程序。消息系统编辑Windows的消息系统是由3个部分组成的:·消息队列。Wind...

2018-03-13 12:14:23 155

原创 理顺一下C++三种内存分配方式

理顺一下C++三种内存分配方式C/C++内存分配有三种方式:[1]从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。静态分配的区域的生命期是整个软件运行期,就是说从软件运行开始到软件终止退出。只有软件终止运行后,这块内存才会被系统回收[2]在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存...

2018-03-13 10:46:37 489

原创 libcurl

libcurl 编辑libcurl主要功能就是用不同的协议连接和沟通不同的服务器~也就是相当封装了的sockPHP 支持libcurl(允许你用不同的协议连接和沟通不同的服务器)。, libcurl当前支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, ...

2018-03-09 16:58:08 198

原创 面试题——轻松搞定面试中的红黑树问题

 连续两次面试都问到了红黑树,关键两次都没有答好,这次就完整地来学习整理一下。没有学习过红黑树的同学请参考:<<Introduction to Algorithms>> Chapter 13 Red-Black Trees Chapter 14 Augmenting Data Structures教你透彻了解红黑树  1.stl中的set底层用的什么数据结构?2.红黑树的数...

2018-03-08 16:54:35 2509

原创 红黑树3

5. 数据结构 - 红黑树 Lindz 关注2016.10.21 21:38* 字数 2600 阅读 936评论 2喜欢 15这篇文章收录在我的 Github 上 algorithms-tutorial,另外记录了些算法题解,感兴趣的可以看看,转载请注明出处。(一) 基本概念Red-Black Tree 称为“红黑树”,是一种自平衡二叉查找树,红黑树和 AVL 树类似,在进行插入和删除时需要通过旋...

2018-03-08 16:49:26 132

转载 史上最清晰的红黑树讲解(上)

史上最清晰的红黑树讲解(上)本文github地址本文以Java TreeMap为例,从源代码层面,结合详细的图解,剥茧抽丝地讲解红黑树(Red-Black tree)的插入,删除以及由此产生的调整过程。总体介绍Java TreeMap实现了SortedMap接口,也就是说会按照key的大小顺序对Map中的元素进行排序,key大小的评判可以通过其本身的自然顺序(natural ordering),也...

2018-03-08 16:42:47 102

原创 红黑树2

为什么不用 AVL 树作为底层实现, 那是因为 AVL 树是高度平衡的树, 而每一次对树的修改, 都要 rebalance, 这里的开销会比红黑树大. 红黑树插入只要两次旋转, 删除至多三次旋转. 但不可否认的是, AVL 树搜索的效率是非常稳定的. 选取红黑树, 我认为是一种折中的方案.map,set的底层实现:红黑树我们时候用到了红黑树?     C++STL中map,set的底层实现全是用的...

2018-03-08 15:25:56 117

原创 红黑树1---漫画解说

漫画算法:什么是红黑树?————————————二叉查找树(BST)具备什么特性呢?1.左子树上所有结点的值均小于或等于它的根结点的值。2.右子树上所有结点的值均大于或等于它的根结点的值。3.左、右子树也分别为二叉排序树。下图中这棵树,就是一颗典型的二叉查找树:1.查看根节点9:2.由于10 > 9,因此查看右孩子13:3.由于10 < 13,因此查看左孩子11:4.由于10 <...

2018-03-08 15:12:56 127

升级权限system

如何在windows环境下,升级administrator权限为system权限: 1:将PsExec.exe拷到C:\Windows\System32目录下; 2:运行命令psexec.exe -d -i -s regedit.exe; 3:注册表即获取到了system权限;

2018-09-05

涉密计算机违规外联及移动存储介质使用检查的研究与实现

index.dat qq

2018-07-04

空空如也

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

TA关注的人

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