C++11 变参模板(variadic templates)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/i_chaoren/article/details/80460470 Variadic Template是C++11的一个很重要的特性; 变体现在两个方面: (1)参数个数:利用参数个数逐一递减的特性,实现递归调用; (2)参数类型:参数个数逐一递减导致参数类型也逐一递减; 两个注意点 (1)递归调用 (2)递归终止:使用重载的办法终止递归调用; 举两个例子 1.print函数 /// Vari
分类: 其他 发布时间: 12-30 23:05 阅读次数: 0

Template Method 模板方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/i_chaoren/article/details/80546015 Template Method是一种组件协作模式:通过晚绑定,来实现框架与应用程序之间的松耦合,是二者之间协作时常用的模式。 动机:在软件构建过程中,对于某一项任务,它常常有稳定的整体操作结构,但各个子步骤却有很多改变的需求,或者由于固有的原因而无法和任务的整体结构同时实现。 如何在确定稳定操作结构的前提下,来灵活应对各个子步骤
分类: 其他 发布时间: 12-30 23:05 阅读次数: 0

STL--allocator分配器

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/i_chaoren/article/details/80557146 首先介绍一下执行new后的函数调用关系: new -> operator new -> malloc(CRT) -> 调用操作系统的内存分配API(Windows、Linux、Unix) 介绍:std::allocator是STL容器使用的内存配置器,也是标准库唯一预定义的内存配置器。每个容器内部都有一个allocator,用来
分类: 其他 发布时间: 12-30 23:05 阅读次数: 0

Observer/Event观察者模式(C++)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/i_chaoren/article/details/80561204 动机: 在软件构建过程中,我们需要为某些对象建立一种“通知依赖关系”--一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知。如果这样的依赖关系过于紧密,将使软件不能很好地抵御变化。 使用面向对象技术,可以将这种依赖关系弱化,并形成一种稳定的依赖关系。从而实现软件体系结构的松耦合。 松耦合可以体现在下面几
分类: 其他 发布时间: 12-30 23:05 阅读次数: 0

Simple Factory Pattern--简单工厂模式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/i_chaoren/article/details/80634438 介绍:简单工厂模式不能说是一个设计模式,说它是一种编程习惯可能更恰当些。因为它至少不是Gof23种设计模式之一。但它在实际的编程中经常被用到,而且思想也非常简单,可以说是工厂方法模式的一个引导。 动机:当你需要什么,只需要传入一个正确的参数,就可以获取你所需要的对象,而无须知道其创建细节。 定义:简单工厂模式(Simple Fa
分类: 其他 发布时间: 12-30 23:04 阅读次数: 0

套接字编程入门

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/i_chaoren/article/details/81280480 代码中使用到的API参见官网:https://docs.microsoft.com/zh-cn/windows/desktop/api/winsock2/ UDP套接字关键步骤: 服务端 客户端 初始化WSA、创建socket 初始化WSA、创建socket 创建地址结构:sockaddr_in 创建地址结构:sockaddr_
分类: 其他 发布时间: 12-30 23:04 阅读次数: 0

线程同步总结--临界区 事件 互斥量 信号量

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/i_chaoren/article/details/81301916 在WIN32中,同步机制主要有以下几种: 临界区(Critical section) 事件(Event); 互斥量(mutex); 信号量(semaphore); 临界区(Critical section) 临界区(Critical Section)指的是一个访问共用资源(例如:共用设备或是共用存储器)的程序片段,而这些共用资源
分类: 其他 发布时间: 12-30 23:04 阅读次数: 0

VC++使用pdb和dump恢复“案发现场”

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/i_chaoren/article/details/81453142 目录 pdb文件 PDB文件简介 EXE、DLL等与pdb文件的匹配 编译器产生符号的过程 Release程序生成pdb文件 dump文件 使用背景介绍 dump文件的生成 调试dump文件 VS调试 本地dump调试 无源代码dump调试 WinDbg调试 pdb文件 PDB文件简介 pdb符号文件是连接二进制指令和源代码之间
分类: 其他 发布时间: 12-30 23:04 阅读次数: 0

C语言实现C++继承和多态

C++中的多态 我们知道的是在C++中会维护一张虚函数表,根据赋值兼容规则,我们知道父类的指针或者引用是可以指向子类对象的。如果一个父类的指针或者引用调用父类的虚函数则该父类的指针会在自己的虚函数表中查找自己的函数地址,如果该父类对象的指针或者引用指向的是子类的对象,而且该子类已经重写了父类的虚函数,则该指针会调用子类的已经重写的虚函数。 //c++中的多态 class Base { public: virtual void fun()//虚函数实现 { cout << "Base:
分类: 其他 发布时间: 12-30 23:03 阅读次数: 0

C++11--智能指针详解及实现

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/i_chaoren/article/details/82586456 1、基础概念 智能指针的一种通用实现技术是使用引用计数。智能指针类将一个计数器与智能指针指向的对象相关联,用来记录有多少个智能指针指向相同的对象,并在恰当的时候释放对象。 每次创建类的新对象时,初始化指针并将引用计数置为1;当对象作为另一对象的副本而创建时,引用计数加1;对一个对象进行赋值时,赋值操作符减少左操作数所指对象的引用
分类: 其他 发布时间: 12-30 23:03 阅读次数: 0

虚拟内存总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/i_chaoren/article/details/85320497 本文主要参考《深入理解计算机系统》和《现代操作系统》两本经典书籍。 虚拟内存的基本思想:每个进程拥有自己的地址空间,这个空间被分割为多个块,每个块称作一页。每一页有连续的地址范围。这些页被映射到物理内存,但并不是所有的页都必须在内存中才能运行程序。当程序引用到一部分在物理内存中的地址空间时,由硬件立刻执行必要的映射。当程序引用到
分类: 其他 发布时间: 12-30 23:03 阅读次数: 0

《网络是怎样连接的》读书笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/i_chaoren/article/details/81277408 简介:本书是是一本不错的计算机网络入门书籍,能够对网络有一个全面的认识,力荐!! 不过,本书内容没有较深的理论,所以对于一些深入的问题,还需进一步阅读其他专业书籍。 下面是根据自己的理解整理的思维导图(点击放大),以及相关补充知识。 补充知识点 第1章 浏览器生成消息 1 条请求消息中只能写1个URI。如果需要获取多个文件,必须
分类: 其他 发布时间: 12-30 23:02 阅读次数: 0

Java内存区域——Java虚拟机栈

Java虚拟机栈这块区域的功能,描述的是Java方法执行的动态内存模型。就是说,一个方法的执行以及执行完毕,那么,整个的内存模型就是在Java虚拟机栈中。 每个方法执行都会创建一个栈帧,伴随着方法从创建到执行完成。栈帧是用于存储方法可执行的局部变量表、操作数栈、动态链接,方法出口等。每次方法执行,栈帧都会伴随着一个进栈以及出栈的这么一个过程。我们可以简单的描述一下这个过程,这是我们的Java虚拟机栈 栈内存是一端开口,先进后出的原则,每一个方法要执行,首先要创建一个栈帧 每一个方法执行都要创建
分类: 其他 发布时间: 12-30 23:02 阅读次数: 0

Java内存区域——本地方法栈

本地方法栈和虚拟机栈是非常相似的,当然,它们之间也是有不同点的,其中就说,虚拟机栈是为虚拟机执行Java方法服务的,所谓的本地方法栈是为虚拟机执行Native方法服务,说白了,它们的区别也就这一点。其他的,像栈大小的问题,内存溢出的问题,包括栈帧、局部变量表等它们都是完全相同的。
分类: 其他 发布时间: 12-30 23:02 阅读次数: 0

Java内存区域——直接内存和运行时常量池

运行时常量池是属于方法区的一块,class文件中除了有类的版本、字段、方法、接口等描述信息以外,还有一项信息就是常量池,那么,这个常量池是干什么的呢?它就是用来存放编译期生成的各种字面量以及符号引用,这部分内容将在类加载后,进入方法区的运行时常量池中存放。举个例子 基本数据类型和抽象数据类型的引用会放到哪里呢?我们之前所讲的内存区域,随着这个方法的运行,会对每一个方法创建一个栈帧,栈帧里面有一个局部变量表,那么,我们所有的基本数据类型,包括抽象数据类型的引用,都会放到局部变量表中。String
分类: 其他 发布时间: 12-30 23:02 阅读次数: 0

对象在内存中的布局——对象的创建

我们在任何一个项目中,无时无刻不关注对象的创建,时时刻刻都在创建对象,都在使用对象,那么,我们就从虚拟机的角度来看对象的创建。 首先,我们知道,创建对象有多种方式,最直观的一种方式就是通过new关键字来创建对象,而且我们之前也提到过了,我们知道,通过new创建一个对象,那么,那个对象就会存储到堆内存中,那么,下面我们就来具体的看一下对象的创建过程 这个图表示的就是一个对象的创建过程,我们知道,在我们的Java代码中,通过new,后面跟一个类的名字,那么,就可以实例化一个对象,第一步就是我们在运
分类: 其他 发布时间: 12-30 23:01 阅读次数: 0

垃圾回收——概述

我们之前对Java虚拟机已经有了一定的了解,而且,对Java虚拟机的内存结构以及对象,都有了一定的了解之后,我们来看垃圾回收,我们在写Java应用的时候,内存都是由Java虚拟机来进行管理的,不管是申请内存也好,还是释放内存也好,都不需要我们程序员来进行处理,Java虚拟机就给我们处理完毕了,那么,我们在一般情况下来进行开发的过程中,我们是不需要关注这一块内容的,但是,话又说回来,如果我们遇到了一些问题,比如说在高并发环境下,出现了瓶颈的时候,我们就需要去找,来进行优化,那么,Java虚拟机的
分类: 其他 发布时间: 12-30 23:01 阅读次数: 0

进阶组件之render props中进行公共属性的对象封装

前言 我们经常需要把一些常见的组件属性封装到一个对象里,然后在渲染属性中使用。 回顾下之前的写法 function Usage({ onToggle = (aregs) =&gt; console.log('Ontoggle',...aregs) })
分类: 编程语言 发布时间: 12-30 23:01 阅读次数: 0

mysql 8.0.11 安装(windows)

mysql本地安装(windows) 一、安装包下载 从官网下载安装包,地址:https://dev.mysql.com/downloads/mysql/ 二、配置 解压到本地,然后在目录下新建my.ini文件,如下: my.ini中内容如下: [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] # 设置3306端口 port = 3306 # 设置mysql的安装目录 basedir=D:\web\mysql-8.0
分类: 其他 发布时间: 12-30 23:01 阅读次数: 0

第六次作业-----文件和结构体

1.本章学习总结(2分) 1.1思维导图 1.2.本章学习体会 没怎么进行实际上的操作,不是很明白结构体和文件,总觉得哪里都不对,哪里都不会。 2.大作业(8分) 本次作业要求对小学四则运算程序功能扩展。 扩展功能:小学生用户登录进系统做题。结束答题后,能把该学生答题情况写入文件,并实现排名。 主要功能: 1位数的一步加减乘除计算 2位数的2步加减运算 3位数的2步加减运算 查看排名 退出 扩展功能: 1.进入菜单界面前,需要先输入用户名、密码,匹配正确才能进入系统刷题。本功能主要读账号文件u
分类: 其他 发布时间: 12-30 23:01 阅读次数: 0