- 博客(72)
- 资源 (5)
- 收藏
- 关注

原创 C++模板的本质和模板使用说明
C++和JAVA都有模板,为什么引入模板,模板又能做些什么,从需求源头进行说明。举例:定义了三个结构体,且结构体内部都有一个print函数;每个结构体内的成员变量又是不同的。假设,有一个需求;需要对外提供一个API,假设API主要做的内容是:1、说明结构类型本身和背部成员变量值,即调用print函数。 2、其余一些工作,这些工作针对三个结构体是相同的;在没有模板类之前,开发实现方法有2;1、编写三个独立的函数,每个函数,只有一缺点:代码重复:相同逻辑被重复编写三次维护困难:修改公共处理代码需要同
2025-04-05 18:41:46
950

原创 C++重载运算符的本质
/ 转换为 a.operator=(b)int operator()(int x, int y);// 转换为 obj.operator()(3, 4)// 转换为 obj.operator[](5),编译器会将运算符表达式转换为对特定函数的直接调用。:通过运算符重载,C++ 在保持高效性的同时,提供了更符合直觉的语法表达。:运算符重载的调用方式与普通函数完全相同,没有额外性能损失。:运算符重载没有隐藏的机制,完全遵循C++的函数调用规则。
2025-04-05 16:47:02
354

原创 进程间通信之:socket
最近初步学习了本地进程间通信的方式(PIPE、FIFO、message queue、semaphore、shared memary),计划按照“unix 环境高级编程”来学习socket,但是书本上来就讲socket的一些api,感觉一直没搞懂,通过今天的网络搜索,终于发现几篇不错的文章,再次整理一下,即梳理思路,又可转换成自己容易理解的语言。1.TCP/IP 在学习socket之前,先简单了解一
2016-12-14 15:25:27
10646
4

原创 计算机存储结构分析(寄存器,内存,缓存,硬盘)
前言 一个计算机包含多种存储器比如:寄存器、高速缓存、内存、硬盘、光盘等,为啥有这么多种存储方式,对于不太了解的人,总是觉得云里雾里的,搞不明白原因,直接弄一个存储器不就得了?计算机主要的功能就是运算(cpu),但是要完成一个任务,就要获取运算指令,并将结果输出给用户。因此,指令的存储,运算过程中中间状态的存储,结果的保存等都需要存储器。理想状态下,存储器的执行速度应该极
2016-12-02 15:15:06
10119
原创 C++ virtual的使用
C++中虚函数用法参考文章:https://www.cnblogs.com/weiyouqing/p/7544988.html通过对该文章的理解得出以下笔记1、对象指针是什么类型的,就调用对应的函数,即使该指针指向了子类等,因为是在编译器编译阶段确定的,此时只能根据对象类型,链接指定的函数指针。2、如果同一个函数,在不同的子类有不同的重载(开发中一般定义的是基类指针,这样可以随意指向任何子类对象), 如果需要根据当时该指针指向了那个对象,就调用那个对象对应的方法,需要将该方法声明称virtual的;
2021-04-26 10:25:45
275
转载 信号量 实现进程互斥与同步
信号量基本术语现代计算机系统中,多个进程可以并发执行,进程间必然存在共享资源和相互合作的问题。同步主要是用户多个进程相互协作,共同完成任务,是进程间的直接制约问题;互斥则主要是为了多个进程分时使用有限的资源。信号量(semaphore)是1965年由荷兰人Dijkstra提出的一种卓有成效的进程间同步及互斥工具。信号量在操作系统中实现时一般作为一个整数变量,这种信号量称为整型信号量。...
2018-03-24 10:25:43
7975
转载 端口大全
2端口:管理实用程序 3端口:压缩进程 5端口:远程作业登录 7端口:回显 9端口:丢弃 11端口:在线用户 13端口:时间 17端口:每日引用 18端口:消息发送协议 19端口:字符发生器 20端口:FTP文件传输协议(默认数据口) 21端口:FTP文件传输协议(控制) 22端口:SSH远程登录协议 23端口:telnet(终端仿真协议),木马Tiny Telnet Se
2017-06-10 09:59:50
8154
1
原创 BGP的消息类型以及格式
1. BGP的消息类型:bgp是建立在tcp之上的协议,tcp端口号179 1:open(打开消息) 2:keepalive(存活消息) 3:update(更新消息) 4:notification(报错消息)2.BGP包头格式: bgp的所有消息都会以该头开始 Maker(16字节)——-全为1,标识bgp报文边界 Length(2字节)——-BGP包全长,长度的值必须最少19字节最
2017-06-05 15:42:13
18749
原创 单链表自动生成函数
#include <stdio.h>#include <stdlib.h>#include <memory.h>typedef struct SLHead_struct { //single list head char * sl_mbr_ptr;// unsigned int total_elements;} SLHeadType;//入参自动生成宏#define __
2017-05-11 14:47:09
637
原创 单链表 查找函数自动生成宏
#define DEFINE_SINGLE_LIST_LOOKUP_FUN(the_func_name, node_type,x,...) \node_type * the_func_name(node_type * the_list, node_type * the_ele) \{
2017-05-10 09:04:01
416
原创 ospf协议中cost和metric关系
cost数据经过该接口的消耗。 路由每经过一跳,都要加上该跳的cost值。如下图 P1—-(vlan10)——–P2——(vlan11)——-P3——-(vlan12)—–P4对于P1设备而言,DIP是P4的路由,其默认metric=3。原因是要经过三跳(P1,P2,P3),而每一跳的默认cost都为1,所以1+1+1=3。 如果此时修改P1的vlan10的cost为2,则metric=2+1
2017-05-09 14:35:19
16817
原创 hash链表自动生成宏
#include <stdio.h>#include <stdlib.h>#include <memory.h>struct StdListLinker { struct StdListLinker * next; struct StdListLinker * prev;};typedef struct ListHead_struct { struct StdLis
2017-04-19 14:15:06
357
原创 Nosql 概念释义
进几年常常听到一个高大上的名字Nosql,再加上鼓吹者说Nosql将会消灭关系数据库,今天怀着好奇心里,简单了解了以下Nosql的概念,发现其实没有那么神秘,被鼓吹者夸大其词了,导致我等门外汉一下子给打懵了,下面就今天的简单理解,做一个记录。 本文并不涉及任何Nosql的技术细节,只是一个概念普及,期望能起到一个破除神秘感的效果。引言 Nosql是NOT ONLY SQL的意思,Nosql之
2016-12-23 16:38:07
2179
原创 新发现的学习网站:实验楼
网站地址:https://www.shiyanlou.com/ 没有用过的可以试试,这个网站优势就是学习过程是远程登陆到一台linux虚拟机,边学习边实验。 除了可以在网站上学习写代码,还可以学习操作系统、vim,编译原理等。尤其对于想学习linux系统的人来说,就不用再去装一个linux虚拟机了。
2016-12-22 17:09:46
3321
转载 socket状态查看
[转载自]http://www.xitongzhijia.net/xtjc/20141230/33791Linux系统中,ss命令可用于查看系统的socket的状态,而socket作为系统的进程通信机制,了解其状态是很有必要的,下面小编就给大家介绍下Linux如何使用ss命令查看socket的状态。 Linux如何使用ss命令查看socket状态 ss是Socket Statistics的
2016-12-15 16:42:42
5831
原创 vim 单文件替换方法
:s 命令进行替换操作 % 所有行 g 单行内所有匹配项 i 忽略大小写 c 确认是否替换 基本语法关键词 old 替换为 new :s/old/new 将光标所在行第一个 old 替换为 new :s/old/new/g 将光标所在行所有 old 替换为 new:s/old/new/gc 将光标所在行所有
2016-12-15 09:05:50
572
原创 进程间通信之:IPC
IPC(Interprocess Communication)有三种称做XSI IPC的IPC:消息队列(message queues)、信号量(semaphores)、以及共享内存(shared memory)。XSI是什么意思?标识符(identifier)和键(key) 每个内核中的IPC结构(消息队列, 信号量和共享存储段)都用一个非负整数的标识符来加以引用。要向一个队列中发送消息或读
2016-12-13 15:04:11
582
转载 从linux 系统调用 学习可变参数宏的用法
转载自http://blog.chinaunix.net/uid-23069658-id-4106015.html?page=2 截取了作者原文中,自己比较关系你的一部分这段时间又碰到系统调用这个家伙,结果在我当前用的3.0.x内核里全变样了。为了将这个问题弄明白,还得自己动手才行,这里非常感谢优快云的"海风林影"兄弟提供的博文和相关参考文献,还是那句话“成果和荣耀归于前辈”。
2016-12-06 18:20:36
631
原创 gcc 参数可变 宏 进阶
可变参数宏的基础已用可以参考文档 http://blog.youkuaiyun.com/younkerjqb/article/details/53484330先看一个例子#define TEST(param3,param2,param1) param3 @ param2 @ param1 #define DEBUG_PRINTF(...) TEST(__VA_ARGS__)DEBUG_PRI
2016-12-06 18:09:18
1837
原创 C 参数可变宏使用
引言C语言有可变参数函数void printf(const char* format, …);开发中用到printf的地方常常需要做一层封装,这样可以定义自己的开关,从而可以灵活控制打印。以前常用的都是封装一层函数,void debug_printf(char * fmt,...){ ..........//定义自己的可变参数函数 if( g_d
2016-12-06 16:13:28
1287
原创 吐槽 优快云 MarkDown编辑器
写文章时候,尝试了一下MarkDown编辑器使用后的心情就是一个糟。MarkDown有很多优点,这自然不必多说,但是作为一个IT交流社区,至少 代码显示,字体颜色,字体背景等都得支持吧。优快云又不是一个只写小说的网站。这样的产品就上线使用,怎能说一个烂字了得
2016-12-05 15:40:51
365
转载 shell变量详解
转载自:http://www.cnblogs.com/barrychiao/archive/2012/10/22/2733210.html1 shell变量基础shell变量是一种很“弱”的变量,默认情况下,一个变量保存一个串,shell不关心这个串是什么含义。所以若要进行数学运算,必须使用一些命令例如let、declare、expr、双括号等。shell变量可分为两类:局部变量和环境变量
2016-11-15 16:00:39
396
原创 进程加载
曾经遇到一个程序挂起问题时,挂起地址打印出来,自己一筹莫展。一个前辈操作一会后,就立刻告诉我挂起的函数,当时觉得很奇怪,今天看书过程中终于理解了这个问题。作为一个非科班出身的程序员来说,一直只是一个代码的搬运工,编译和运行的很多原理其实都一塌糊涂。1,程序在编译时候已经为函数和初始化的全局变量分配了地址空间 跟我一样,只是代码搬运工的可能要问了,我都没加载程序,如何确定地址
2016-05-01 10:23:48
635
原创 java整合opencv
做数字图像处理的同学都知道,OpenCV这个库很好用。在Java中使用OpenCV有两种方式:第一种方式是通过java的JNI,调用C++编写的OpenCV的动态链接库;第二种方法就是直接用JavaCV了。下面详细介绍下JavaCV的使用。1. 参考文献:http://code.google.com/p/javacv/ 前人配置:http://blog.youkuaiyun.com/haoba1
2014-01-16 18:01:07
2692
转载 jquery 对select中option的操作
语法解释:1. $("#select_id").change(function(){//code...}); //为Select添加事件,当选择其中一项时触发2. var checkText=$("#select_id").find("option:selected").text(); //获取Select选择的Text3. var checkValue=$("#select_i
2013-12-05 11:27:48
587
原创 itext
1.iText介绍 需要用到jar包 :itext-5.4.4.zip 核心包,下载地址http://www.itextpdf.com/product xmlworker-5.4.4.zip 用来将xml和html转为pdf,itext新的项目,下载地址http://www.itextpdf.com/pro
2013-12-05 11:26:52
755
转载 Struts2 请求过程
概述:Struts2框架由三部分构成:核心控制器、业务控制器和用户实现的业务逻辑组件。在这三部分中,struts2框架提供了核心控制器StrutsPrepareAndExecuteFilter,而用户需要实现业务控制层和业务逻辑层。一、核心控制器 StrutsPrepareAndExecuteFilter StrutsPrepareAndExecuteFilter与stru
2013-12-05 11:20:27
1652
转载 网络抓取
package net; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; import java.
2013-12-05 11:11:20
677
转载 java常用设计模式另类解释
Java常用的设计模式创建型模式 1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory 工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也
2013-12-05 10:38:28
1797
转载 设计模式 之 Facade
设计模式 -- FacadeFacade模式 Facade模式要求一个子系统的外部与其内部的通信必须通过一个统一的Facade对象进行。Facade模式提供一个高层次的接口,使得子系统更易于使用。 就如同医院的接待员一样,Facade模式的Facade类将客户端与子系统的内部复杂性分隔开,使得客户端只需要与Facade对象打交道,而不需要与子系统内部的很多对象打交道。
2013-12-05 10:23:47
496
原创 mysql 字符串转数字再排序
如果数字是按照字符串格式存储的排序时候又想按照数字排血 只需要在order by后加上转换函数即可例如: order by CONVERT(sort,DECIMAL)可用的类型 二进制,同带binary前缀的效果 : BINARY 字符型,可带参数 : CHAR() 日期 : DATE 时间: TIME 日期时间
2013-11-18 15:42:01
2171
转载 JS中的prototype
S中的phototype是JS中比较难理解的一个部分 本文基于下面几个知识点: 1 原型法设计模式在.Net中可以使用clone()来实现原型法原型法的主要思想是,现在有1个类A,我想要创建一个类B,这个类是以A为原型的,并且能进行扩展。我们称B的原型为A。 2 javascript的方法可以分为三类:a 类方法b 对
2013-11-14 17:00:39
943
转载 Struts2 拦截器 入门
一、理解Struts2拦截器1. Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现.2. 拦截器栈(Interceptor Stack)。Struts2拦截器栈就是将拦截器按一定的顺序联结成一条链。在访问被拦截的方法或字段时,Struts2拦截器链中的拦截器就会按其之前定义的顺
2013-11-08 16:40:52
403
原创 前序 中序 后序 遍历的求解
前中===>后例如:在一棵二叉树总,前序遍历结果为:ABDGCEFH,中序遍历结果为:DGBAECHF,求后序遍历结果。我们知道:前序遍历方式为:根节点->左子树->右子树中序遍历方式为:左子树->根节点->右子树后序遍历方式为:左子树->右子树->根节点从这里可以看出,前序遍历的第一个值就是根节点,然后再中序遍历中找到这个值,那么这个值的左边部分即为当前二叉树的左子树部分
2013-11-06 22:49:26
734
转载 itext5关于页眉和页脚的设置
iText5中并没有之前版本HeaderFooter对象设置页眉和页脚,可以利用PdfPageEventHelper来完成页眉页脚的设置工作。PdfPageEventHelper中包含以下事件处理器。 onOpenDocument() — 当打开一个文档时触发,可以用于初始化文档的全局变量。 onStartPage() — 当一个页面初始化时触发,可用于初始
2013-11-04 15:48:53
8009
3
转载 tcp 和udp的区别
TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,我们这里只做简单、形象的介绍,你只要做到能够理解这个过程即可。我们来看看这三次对话的简单过程:主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;主
2013-10-14 17:28:12
478
原创 php array的用法
一直在纠结php如何方便的创建2维数组,从如下代码得到启发,原来不用什么合并,和追加等函数。默认的声明一个array 例如$item = array(); 那么$item['id'] = 1;就相当于往数组追加一个内容,如果中括号内容为空,则是普通数组示例:$array = array();$item = array();$item['id'] = 1;$item['xu
2013-10-10 09:22:48
627
转载 windows mysql 自动备份的几种方法
1、复制date文件夹备份============================假想环境:MySQL 安装位置:C:\MySQL论坛数据库名称为:bbs数据库备份目的地:C:\db_bak\============================新建db_bak.bat,写入以下代码*******************************Code
2013-09-30 13:58:58
3875
原创 io 测试
//其中能够实现编码的只有OutputStreamWriter和对应inputStreamReader package net;import java.io.BufferedWriter;import java.io.File;import java.io.IOException;import java.io.OutputStreamWriter;import java.io.Fil
2013-09-06 17:52:13
851
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人