- 博客(58)
- 收藏
- 关注
转载 C++学习之路:纯虚函数
背景: 当有些方法无法继承,或者说无意义的时候,例如shape类,那么基类的接口便无法实现。 那么这时候就需要引入纯虚函数。 几何基类: Shape 拥有Draw方法,三角,圆形,菱形等Draw方法各不相同。只能使用纯虚函数, 拥有纯虚函数的基类称为抽象类,抽象类无法被实例化,纯虚函数也不需要实现。 @纯虚函数的定义 #纯虚函数一般不需要实现。 @抽...
2015-09-09 22:31:00
250
转载 C++学习之路:虚函数与多态
summery:主要有以下几个内容 1.多态 2.静态绑定与动态绑定 3.虚函数 4.虚表指针 5.object slicing与虚函数 6.overload override overwrite的区别 @什么是多态性? #多态是面向对象程序设计的重要特征之一 #多态性是指发出同样的消息被不同类型的对象接收时有可能导致完全不同的行为 #多态的实现: $函数重...
2015-08-15 17:47:00
172
转载 C++学习之路: 虚继承的内存的模型
写给出结论: 1.类大小计算遵循结构体对其原则 2.类的大小与数据成员有关,与成员函数无关 3.类的大小与静态数据成员无关 4. 虚继承对类的大小影响 5.虚函数对类的大小影响 研究背景) 我们以这个钻石型继承来研究下,虚继承后派生类DD的内存分布,先说原理和推测,来理解编译器的处理是如何在内存上体现的。 保持我们一贯的做风。 #include <...
2015-08-15 13:02:00
214
转载 grep命令与正则表达式
grep 是通过正则表达式分析程序(General Regular Expression Parser )的缩写 grep命令可以在它输入中搜索指定的字符串模式【pattern】 grep命令的输出是包含输入中指定的字符串的行 greo命令的一般格式: grep 【option】 pattern file grep 的option选项有 ※...
2015-08-13 22:45:00
153
转载 C++学习:lambda表达式入门
引言:lambda表达式在STL应用中可以让我们起到十分便捷的功能,我们看下微软的解释。When you write code, you probably use function pointers and function objects to solve problems and perform calculations, especially when you useSTL ...
2015-07-15 13:00:00
215
转载 wxWidgets在LINUX下的安装和demos的编译
wxWidgets在Linux下有wxGTK和wxX11供使用,各需要GTK和X11开发环境;wxWidgets在linux下有wxGTK和wxX11供使用,但是分别需要配置GTK和X11开发环境,开发环境配置如下:X11的安装(如果选择使用wxX11):apt-get install libx11-devGTK的安装(如果选择使用wxGTK):apt-get in...
2015-07-10 21:15:00
304
转载 C++学习之路: STL探索之 reverse_iterator 的一个小陷阱
1 2.reverse迭代器2 a) 在逻辑上,rbegin指向最后一个元素,rend指向第一个元素的前一个位置。3 b) 但是在实际实现上,rbegin指向最后一个元素的下一个位置,rend指向第一个元素。4 c) reverse迭代器的物理位置与逻辑位置差15 d) 逻辑值比物理位置减少了1.引言:vector<...
2015-07-05 07:31:00
386
转载 JAVA入门:http基础
绝大多数Web开发都是在此基础上的,Http是超文本传输协议。 是处于应用层的协议。Http是一个基于请求/响应模式的,无状态的协议.Http1.1中优化了TCP连接,在一次连接内可以处理多个请求。Http请求分为三部分: 1.请求行 2.消息报头 3.请求正文 由游览器想服务器发送一.介绍:请求行以一个方法符合开头,后面跟着请求URI和协议的的版...
2015-07-05 07:30:00
127
转载 sql入门
1 ======================================================================================================================= 2 3 ----------------------------------------------------------...
2015-07-05 07:30:00
80
转载 C++学习之路: 构造函数详解与初始化列表
引言:这是C++对象内存分配的基础,为防止忘记。看一个类包含其他类时是如何构造的。#include <iostream>using namespace std;class Object{public: Object() { cout << "Object.." << endl;...
2015-06-18 15:00:00
127
转载 JAVA WEB:javaBean的概念
JavaBean是一种可重复使用、且跨平台的软件组件。JavaBean可分为两种:一种是有用户界面的另外一种是是没有用户界面的,主要负责处理事务(如数据运算,操纵数据库)的JavaBean。Jsp通常访问的是后一种JavaBean。JSP和JavaBean搭配使用的优点:1.使得HTML与JAVA程序分离,这样便于维护代码,如果把所有的程序代码都写到JSP网页中,会使得...
2015-06-18 14:18:00
192
转载 C++学习之路: 前向申明
引言: 有种特殊情况,当两个类需要相互引用形成一个”环形“引用时,无法先定义使用。 这时候需要用到前向申明但是前向申明的类不能实例化。 1 #pragma once 2 3 #include "B.h" 4 class A 5 { 6 public: 7 A(); 8 ~A(); 9 10 B b_;...
2015-06-17 22:02:00
99
转载 JAVA WEB:请求转发和重定向的区别
sevlet response有一个重定向的方法我们先介绍一下。1.HttpServletResponse对象的sendRedirect(String local)方法称作重定向。如果location地址前面加上"/",则表示相对于Servlet容器的根来请求,即http://localhost:8080,如果location地址钱没有加上“/”,则表示相对于当前请...
2015-06-11 17:07:00
93
转载 JAVA WEB:application与session对象使用范例与差异深度分析
1.本文分析一下request对象中getParameter方法及getAttribute的差异及使用场景。这个关系到servlet的生命周期很简单的一个例子,上代码页面1 :request1.jsp 1 <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>...
2015-06-03 17:32:00
128
转载 LINUX学习:生产者&消费者模型复习
回顾一下生产者消费者模型。 #include <stdio.h>#include <stdlib.h>#include <string.h>#include <semaphore.h>#include <unistd.h>#include <sys/types.h>#include &...
2015-03-16 14:46:00
96
转载 POSIX线程库复习
创建一个新的线程 int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg); thread:返回线程ID attr:设置线程的属性,attr为NULL表示使用默认属...
2015-03-14 14:47:00
115
转载 共享内存
关于内存共享的几个函数 1.用来创建一个共享内存 int shmget(key_t key, size_t size, int shmflg); key:这个共享内存的段的名字 size:共享内存的大小 shmflg:由九个权限标志构成,它们的用法和穿件文件时使用的mode权限一样 成功返回非负整数,即该内存共享端的标识码;失败返回-1; int main(int a...
2015-03-12 14:00:00
106
转载 利用消息队列实现ECHO_SRV
server端代码: server 从队列的mtype=1接收数据 在发到mtype=pid(client的进程id) #include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#inclu...
2015-03-01 18:25:00
128
转载 LINUX学习:System V消息队列
介绍: 1.消息队列提供了一个从一个进程向另外一个进程发送数据块的方法 2.每个数据块都被认为是有一个类型,接收者进程接收的数据块可以有不同的类型值 3.消息队列也有管道一样的不足,就是每个消息最大的长度是有上限的(MSGMAX),每个消息队列 的总的字节数是有上限的(MSGMNB),系统上消息队列的总数也是有一个上限的。 每个IPC对象都在内核维护着一个数据结构, 消...
2015-03-01 15:47:00
116
转载 linux:利用socketpair来在进程间传递描述符
1.socketpair 2.sendmsg/recvmsg 3.UNIX域套接字传递描述字 功能:创建一个圈双工的流管道 原型: int socketpair(int domain, int type, int protocol, int sv[2]); 参数 domain :协议家族 type: 套接字种类 protocol:协议种类 sv:返...
2015-02-27 14:49:00
185
转载 LINUX学习:UNIX域协议
前言介绍: 1。UNIX域套接字与TCP套接字相比较,在同一台主机的传输四度前者是后者的两倍 2.UNIX域套接字可以在同一台主机上各进程间传递描述符 3.UNIX域套接字与传统套接字的区别是用路径名来表示协议族的描述。 UNIX域地址结构 #define UNIX_PATH_MAX 108struct sockaddr_un{ sa_...
2015-02-27 12:09:00
482
转载 shell脚本学习
流编辑器 sed的简单用法 sed[选项] sed cmds files 选项 –e 连接多个编辑命令 -f 指定 sed脚本文件名 -n阻止输入行自动输入 sed ‘4,$d’test.in 输出 test.in文件的前4行 sed ‘3q’ test.in输出前3行后退出 sed ‘s/public/PUBLIC’test.in 把该...
2015-01-06 15:36:00
117
转载 XML语言入门
XML 是W3C组织在2000年发布的一种标签语言在XML语言中,它允许用户自定义标签,每一个标签用于描述一段数据。一个标签可以分为开始标签和结束标签,在开始标签和结束标签之间有可以嵌套其他标签,利用标签间的嵌套关系来保存数据之间的上下级关系。由于XML实质上是一段字符串, 计算机可以十分方便的对他进行操作, 开发人员也可以方便的阅读,开发人员可以说这是一种...
2014-12-16 10:36:00
90
转载 单例模式设计
1 package SingleDemo; 2 3 4 5 6 //单例模式的设计要点共有3个 7 /* 8 1. 私有化构造函数 9 2.在类内部定义一个堆上对象10 3.对外提供一个接口,将已经定义好的堆上对象以引用的方式返回出去11 12 */13 14 15 16 class Single17 {1...
2014-12-15 14:27:00
97
转载 JAVA入门学习: 方法参数的传递(函数传参问题)
引言:我们知道C++中拥有两种参数传递方式, 值调用和引用调用。 有些程序员认为JAVA程序设计语言对对象采用的是引用调用,实际上,这种理解是不对的。由于这种误解存在普遍性,所以下面将阐述一下这个问题。所以用一段简单的代码来阐述一下这个问题: 1 //如果方法参数是的输入时引用,那么我们将交换两个指针(即引用) 2 public stati...
2014-12-11 09:31:00
152
转载 C++学习之路: 动态规划之求最长公共子序列
引言: 动态规划是我们求两个字符串最长公共子序列的重要算法, 求编辑距离时同样也要用到。 a b c d c b a 0 0 0 0 0 0 0 0a 0 1 1 1 1 1 1 1 b 0 1 2 2 2 2 2 2d 0 ...
2014-10-28 09:50:00
341
转载 C++学习之路: 优先级队列使用模板(防止忘记)
当优先级队列中存放我们自定义规则时, 编译器不知道该如何排序如: priority_queue<Person> 这种代码是无法通过编译的, 需要我们手动写一个比较规则priority_queue<Person, comp> 即可代码如下 1 #include <iostream> 2 #include <string...
2014-10-24 00:14:00
114
转载 C++学习之路: share_from_this<T>类的使用
引言: 当我们在类的内部需要定义一个指向 this 自身对象的 智能指针时, 会出现 两个同指向智能指针 分属两个系统的问题, 导致析构的时候 出现二次析构, 程序就会挂掉。因为两个指针指向同一个对象,但是却不共享引用计数那么在类内部如何获取 指向自身对象的 智能指针呢, 显式手动的获取很明显是错误的;这时就需要在类 A 定义时继承一个enable_share_fro...
2014-10-22 16:20:00
165
转载 Linux学习: TCP粘包问题
TCP协议下:当发送数据过长过短, 或缓冲区大小问题, 导致出现了所谓的 TCP“粘包”问题, 这是我们的俗称, TCP是流模式,并不是包;现象解释:TCP粘包是指发送方发送的若干包数据到接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾。出现粘包现象的原因是多方面的,它既可能由发送方造成,也可能由接收方造成。发送方引起的粘包是由TCP协议...
2014-10-14 20:51:00
154
转载 C++学习之路: 线程封装(基于对象编程)
引言:此次我们重新封装线程, 采用基于对象编程的方式,不用于面向对象编程中重定义虚函数的方式,这里我们用回调函数的方式。Thread.h 1 #ifndef THREAD_H_ 2 #define THREAD_H_ 3 4 #include <boost/noncopyable.hpp> 5 #include <functional&...
2014-10-13 23:18:00
157
转载 Linux客户/服务器程序设计范式——阿帕奇服务器(多进程)
引言本文会写一个并发服务器(concurrent server)程序,它为每个客户请求fork出一个子进程。注意1. 信号处理问题对于相同信号,按信号的先后顺序依次处理。可能会产生的问题是,正在处理sig1信号时,又来了2个或更多的sig1信号,此sig1时只会在处理完原来的sig1信号后,再处理1个sig1信号。因此对于相同信号,会产生信号掉包的问题。一个儿子退了之后...
2014-10-12 19:08:00
132
转载 Linux客户/服务器程序设计范式2——并发服务器(进程池)
引言让服务器在启动阶段调用fork创建一个子进程池,通过子进程来处理客户端请求。子进程与父进程之间使用socketpair进行通信(为了方便使用sendmsg与recvmsg,如果使用匿名管道,则无法使用以上两个函数)。以下针对TCP进行分析。server端使用select轮询用于监听客户端请求的被动套接字fd_listen以及用于父子之间通信的socketpair。每当客户端有...
2014-10-12 19:04:00
73
转载 封装readn
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #include <unistd.h> 5 #include <sys/types.h> 6 #include <sys/stat.h> 7...
2014-10-11 17:27:00
105
转载 C++学习之路: 函数适配器
引言:函数适配器也是种模板技术, 通过绑定把函数绑定到适配器上实现函数调用, 并且可以修改参数,和移动参数的位置。功能强大在这里简单介绍一下这种强大的工具1. 对于普通函数, 直接把它的类型 <返回值 (参数1, 参数2,.......)> 如此填入 适配器当做函数类型即可 function<返回值 (参数1, 参数2,.......)> ...
2014-10-10 22:55:00
131
转载 C++学习之路: 智能指针入门
引言: 编写智能指针的要点:a) 构造函数接收堆内存b) 析构函数释放内存c) 必要时要禁止值语义。d) 重载*与->两个操作符1. 简易的智能指针 。 1 #ifndef START_PTR_H 2 #define START_PTR_H 3 4 #include <iostream> 5 using namespace std; ...
2014-10-10 00:42:00
97
转载 C++学习之路: 单例模板
引言:1.单例模式的目的:确保一个类只有一个实 例,并提供对该实例的全局访问。2.单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。单例模式 如何实现只有一个实例?? 禁用拷贝构造函数,防止拷贝。那么还可以通过显式定义来 定义多个实例。如 NonCopyable a...
2014-10-09 20:50:00
99
转载 C++学习之路: 左值&右值 的讨论 和 ”move“ 值传递方式
本章我们讨论一下左值和右值, 剔除我们在学习C语言时养成一些错误常识。先上代码 1 #include <iostream> 2 #include <string> 3 using namespace std; 4 5 6 //在c++98中,变量分为左值和右值,左值指的是可以取地址的变量,右值指的是非左值。二者的根本区别在...
2014-10-09 16:33:00
375
转载 C++学习之路: 特殊操作符->的重载
转自:http://blog.youkuaiyun.com/custa/article/details/5674434primer 书上对重载该操作符的解释过于简单,但是总结性十分强:箭头操作符可能看起来是二元操作符:接受一个对象和一个成员名,对对象解引用以获取成员。其实箭头操作符是一元操作符,没有显示形参(而且是类成员,唯一隐式形参是this)。->的右操作数不是...
2014-10-03 21:48:00
173
转载 C++学习之路: 模板函数
1 #include <iostream> 2 #include <string> 3 #include <vector> 4 using namespace std; 5 6 template <typename T> 7 T max(T a, T b) 8 { 9 return a >...
2014-09-28 20:55:00
74
转载 C++学习之路: 时间戳 封装成类
1 #ifndef TIMESTAMP_H 2 #define TIMESTAMP_H 3 4 #include <string> 5 #ifndef __STDC_FORMAT_MACROS 6 #define __STDC_FORMAT_MACROS 7 #endif /* __STDC_FORMAT_MACROS */ 8 #inc...
2014-09-23 11:13:00
173
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人