自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 资源 (1)
  • 收藏
  • 关注

原创 动态链接库 Dynamic Linkable Library(dll)的原理与设计

动态链接库编程之基础慨念 DLL(Dynamic Linkable Library):可以看做是一种仓库,提供了一些可以直接拿来用的变量、函数或类。静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib中的指令都被直接包含在最终生成的EXE文件中了。但是若使用DLL,该DLL不必被包含在最终EXE文件中,EXE文件执行时可以“动态”地引用和卸载这个与EXE独立的DLL文件。 DLL 的编制与具体的编程语言及编译器无关。只要遵循约定的DLL接口规范和调...

2020-08-31 22:18:45 372

原创 C++ 资源大全(各种库)---------伯乐在线

摘要:C++是在C语言的基础上开发的一种集面向对象编程、泛型编程和过程化编程于一体的编程语言。应用较为广泛,是一种静态数据类型检查的,支持多重编程的通用程序设计语言。关于 C++ 框架、库和资源的一些汇总列表,由fffaraz发起和维护。内容包括:标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等。标准库C++ Standard Library:是一系列类和函数的集合,使用核心语言编写,也是C++ISO自身标准的一部分。 Stan...

2020-07-28 21:52:39 621 1

原创 Python___Ten

Skip to content集合Python 中set与dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。注意,key为不可变类型,即可哈希的值。【例子】num = {}print(type(num)) # <class 'dict'>num = {1, 2, 3, 4}print(type(num)) # <class 'set'>1. 集合的创建先创建对象再加...

2020-07-26 21:11:20 225

原创 Python_Twelve

函数与Lambda表达式1. 函数还记得 Python 里面“万物皆对象”么?Python 把函数也当成对象,可以从另一个函数中返回出来而去构建高阶函数,比如:参数是函数 返回值是函数函数的定义函数以def关键词开头,后接函数名和圆括号()。 函数执行的代码以冒号起始,并且缩进。 return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回None。def functionname(parameters): "函数_文档字符串"...

2020-07-24 21:52:52 253

原创 Pythen_Eleven

序列在 Python 中,序列类型包括字符串、列表、元组、集合和字典,这些序列支持一些通用的操作,但比较特殊的是,集合和字典不支持索引、切片、相加和相乘操作。1. 针对序列的内置函数list(sub)把一个可迭代对象转换为列表。【例子】a = list()print(a) # []b = 'I Love LsgoGroup'b = list(b)print(b) # ['I', ' ', 'L', 'o', 'v', 'e', ' ', 'L', 's', 'g'...

2020-07-24 11:09:32 178

原创 Python_Ten

集合Python 中set与dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。注意,key为不可变类型,即可哈希的值。【例子】num = {}print(type(num)) # <class 'dict'>num = {1, 2, 3, 4}print(type(num)) # <class 'set'>1. 集合的创建先创建对象再加入元素。 在创建空集合的时候只能使用s = ...

2020-07-24 09:59:24 191

原创 Python_Nine

字典1. 可变类型与不可变类型序列是以连续的整数为索引,与此不同的是,字典以"关键字"为索引,关键字可以是任意不可变类型,通常用字符串或数值。 字典是 Python 唯一的一个 映射类型,字符串、元组、列表属于序列类型。那么如何快速判断一个数据类型X是不是可变类型的呢?两种方法:麻烦方法:用id(X)函数,对 X 进行某种操作,比较操作前后的id,如果不一样,则X不可变,如果一样,则X可变。 便捷方法:用hash(X),只要不报错,证明X可被哈希,即不可变,反...

2020-07-23 14:05:55 255

原创 Python_Eight

字符串字符串1. 字符串的定义Python 中字符串被定义为引号之间的字符集合。 Python 支持使用成对的 单引号 或 双引号。【例子】t1 = 'i love Python!'print(t1, type(t1))# i love Python! <class 'str'>t2 = "I love Python!"print(t2, type(t2))# I love Python! <class 'str'>print(5 + 8)...

2020-07-23 10:20:22 269

原创 Python_Seven

元组「元组」定义语法为:(元素1, 元素2, ..., 元素n)小括号把所有元素绑在一起 逗号将每个元素一一分开1. 创建和访问一个元组Python 的元组与列表类似,不同之处在于tuple被创建后就不能对其进行修改,类似字符串。 元组使用小括号,列表使用方括号。 元组与列表类似,也用整数来对它进行索引 (indexing) 和切片 (slicing)。【例子】t1 = (1, 10.31, 'python')t2 = 1, 10.31, 'python'print(t...

2020-07-23 09:00:14 287

原创 Python_Six

列表列表简单数据类型整型<class 'int'> 浮点型<class 'float'> 布尔型<class 'bool'>容器数据类型列表<class 'list'> 元组<class 'tuple'> 字典<class 'dict'> 集合<class 'set'> 字符串<class 'str'>1. 列表的定义列表是有序集合,没有固定大小,能够保存任意数量任意类型...

2020-07-22 22:16:10 343

原创 Python_Five

异常处理异常就是运行期检测到的错误。计算机语言针对可能出现的错误定义了异常类型,某种错误引发对应的异常时,异常处理程序将被启动,从而恢复程序的正常运行。1. Python 标准异常总结BaseException:所有异常的基类 Exception:常规异常的基类 StandardError:所有的内建标准异常的基类 ArithmeticError:所有数值计算异常的基类 FloatingPointError:浮点计算异常 OverflowError:数值运算超出最大限制 Z...

2020-07-22 20:13:34 144

原创 Python_Four

循环语句1. while 循环while语句最基本的形式包括一个位于顶部的布尔表达式,一个或多个属于while代码块的缩进语句。while 布尔表达式: 代码块while循环的代码块会一直循环执行,直到布尔表达式的值为布尔假。如果布尔表达式不带有<、>、==、!=、in、not in等运算符,仅仅给出数值之类的条件,也是可以的。当while后写入一个非零整数时,视为真值,执行循环体;写入0时,视为假值,不执行循环体。也可以写入str、list或任何序列,长度非...

2020-07-22 20:07:05 382

原创 Python_Three

条件语句1. if 语句if expression: expr_true_suiteif 语句的expr_true_suite代码块只有当条件表达式expression结果为真时才执行,否则将继续执行紧跟在该代码块后面的语句。 单个 if 语句中的expression条件表达式可以通过布尔操作符and,or和not实现多重条件判断。【例子】if 2 > 1 and not 2 > 3: print('Correct Judgement...

2020-07-22 11:58:43 157

原创 Python_Two

位运算1. 原码、反码和补码二进制有三种不同的表示形式:原码、反码和补码,计算机内部使用补码来表示。原码:就是其二进制表示(注意,最高位是符号位)。00 00 00 11 -> 310 00 00 11 -> -3反码:正数的反码就是原码,负数的反码是符号位不变,其余位取反(对应正数按位取反)。00 00 00 11 -> 311 11 11 00 -> -3补码:正数的补码就是原码,负数的补码是反码+1。00 00 00 11 -&g...

2020-07-22 11:09:33 131

原创 Python_One

1.注释在Python中,#表示注释,作用于整行。单行注释''' '''或者""" """表示区间注释,在三引号之间的所有内容被注释2. 运算符一元运算符优于二元运算符。例如3 ** -2等价于3 ** (-2)。 先算术运算,后移位运算,最后位运算。例如1 << 3 + 2 & 7等价于(1 << (3 + 2)) & 7。 逻辑运算最后结合。例如3 < 4 and 4 < 5等价于(3 < 4) an...

2020-07-21 20:41:41 240

原创 C++ _内存控制_侯捷

内存控制

2020-07-15 22:38:06 167

原创 序列化:简单通用的数据交换格式JSON、MessagePack 和 ProtoBuffer

序列化,就是把内存里“活的对象”转换成静止的字节序列,便于存储和网络传输;而反序列化则是反向操作,从静止的字节序列重新构建出内存里可用的对象。数据交换格式:JSON、MessagePack 和 ProtoBuffer。对数据做序列化和反序列化:JSON:JSON 是一种轻量级的数据交换格式,采用纯文本表示,所以是“human readable”,阅读和修改都很方便。JSON。第三工具:精选出序列化 / 反序列化、网络通信、脚本语言混合编程和性能分析这四类工具。由于 JSON 起源于“最流行的脚本语

2020-06-09 16:53:46 1803 1

原创 多线程与并发:multithreading and Concurrency

线程(thread):在 C++ 语言里,线程就是一个能够独立运行的函数。比如你写一个 lambda 表达式,就可以让它在线程里跑起来:auto f = []() // 定义一个lambda表达式{ cout << "tid=" << this_thread::get_id() << endl;};thread t(f); // 启动一个线程,运行函数f任何程序一开

2020-06-08 02:12:52 294

原创 for_each 解读

目录迭代器for_each排序算法查找算法在 C++ 里,算法的地位非常高,甚至有一个专门的“算法库”。早期,它是泛型编程的示范和应用,而在 C++ 引入 lambda 表达式后,它又成了函数式编程的具体实践,所以,学习掌握算法能够很好地训练你的编程思维,帮你开辟出面向对象之外的新天地。在代码里普遍应用 vector、set、map,但几乎从来不用任何算法,聊起算法这个话题,也是“一问三不知”,这的确是一个比较奇怪的现象。C++ 里的算法,指的是工作在容器上的一些泛型函数,会对.

2020-06-04 01:43:58 3304 1

原创 C++ 泛型编程范式的基础:容器

容器,就是能够“容纳”“存放”元素的一些数据结构。“算法 + 数据结构 = 程序。”在 C++ 里,容器就是这个公式里面的“数据结构”。1. 容器所谓的数据结构,就是数据在计算机里的存储和组织形式,比如堆、数组、链表、二叉树、B+ 树、哈希表,等等。有一种数据结构是万能的、可以应用于任何场景。毕竟,不同的数据结构存储数据的形式不一样,效率也就不一样。有的是连续存放,有的是分散存放,有的存储效率高,有的查找效率高,我们必须要依据具体的应用场合来进行取舍。对于最基本、最经典的那些数据结构,C++ 标准库里

2020-06-02 13:36:01 453

原创 那些书

设计模式:可复用面向对象软件的基础C++ 标准程序库C++ 语言的设计与演化C++ Primer

2020-06-02 12:16:27 128

原创 c++标椎库:文本处理

字符串对于 C++ 里的字符串类 string,string 其实并不是一个“真正的类型”,而是模板类 basic_string 的特化形式,是一个 typedef:using string = std::basic_string<char>; // string其实是一个类型别名所谓的字符串,就是字符的序列。字符是人类语言、文字的计算机表示,而人类语言、文字又有很多种,相应的编码方式也有很多种。所以,C++ 就为字符串设计出了模板类 basic_string,再用模板来搭配

2020-06-02 12:15:07 669

原创 异常处理:exception机制

尽量不用裸指针、new 和 delete,因为它们很危险,容易导致严重错误。这就引出了一个问题,如何正确且优雅地处理运行时的错误。实际上,想要达成这个目标,还真不是件简单的事情。程序在运行的时候不可能“一帆风顺”,总会遇到这样那样的内外部故障,而我们写程序的人就要尽量考虑周全,准备各种“预案”,让程序即使遇到问题也能够妥善处理,保证“健壮性”。C++ 处理错误的标准方案是“异常”(exception)。虽然它已经在 Java、C#、Python 等语言中得到了广泛的认可和应用,但在 C++ 里却存在诸多

2020-06-02 01:04:16 717

原创 函数式表达式:lambda

C++ 函数的特殊性“函数式编程”,就要先从函数(function)说起。C++ 里的函数概念来源于 C,是面向过程编程范式的基本部件。但严格来说,它其实应该叫“子过程”(sub-procedure)、“子例程”(sub-routine),是命令的集合、操作步骤的抽象。函数的目的是封装执行的细节,简化程序的复杂度,但因为它有入口参数,有返回值,形式上和数学里的函数很像,所以就被称为“函数”。在语法层面上,C/C++ 里的函数是比较特别的。虽然有函数类型,但不存在对应类型的变量,不能直接操作.

2020-06-02 00:33:49 497

原创 智能指针的使用:smart_ptr

在现代 C++ 中,绝对不要再使用“裸指针(naked pointer)”了,不要用const 可以修饰指针,而是应该使用“智能指针(smart pointer)”。智能指针所谓的“智能指针”,当然是相对于“不智能指针”,也就是“裸指针”而言的。裸指针,它有时候也被称为原始指针,或者直接简称为指针。指针是源自 C 语言的概念,本质上是一个内存地址索引,代表了一小片内存区域(也可能会很大),能够直接读写内存。因为它完全映射了计算机硬件,所以操作效率高,是 C/C++ 高效的根源。当然,这也是.

2020-06-01 22:58:48 417

原创 常量变量: const/volatile/mutable

常量变量: const/volatile/mutableconst 与 volatileconst ,表示“常量”。最简单的用法就是,定义程序用到的数字、字符串常量,代替宏定义。const int MAX_LEN = 1024;const std::string NAME = "metroid";从 C++ 程序的生命周期角度来看的话,const和宏定义还是有本质区别的:const 定义的常量在预处理阶段并不存在,而是直到运行阶段才会出现。所以,准确地说,它实际上是..

2020-06-01 21:44:41 336

原创 自动类型推导:auto/decltype

自动类型推导把这个词分解成三个部分:“自动”“类型”和“推导”。“自动”就是让计算机去做,而不是人去做,相对的是“手动”。 “类型”指的是操作目标,出来的是编译阶段的类型,而不是数值。 “推导”就是演算、运算,把隐含的值给算出来。像计算“a = 1 + 1”,你可以在写代码的时候直接填上 2,这就是“手动数值推导”。只写上表达式,让电脑在运行时自己算,这就是“自动数值推导”。因为 C++ 是一种静态强类型的语言,任何变量都要有一个确定的类型,否则就不能用。这在变量类型简单的时候还好说,比如

2020-06-01 17:09:31 492 1

原创 运行阶段及面向对象技巧

运行阶段跟前面的编码、预处理和编译阶段不同,它是动态的、实时的,内外部环境非常复杂,CPU、内存、磁盘、信号、网络套接字……各种资源交织在一起,可谓千变万化。解决这个阶段面临的问题已经不是编程技术了,更多的是要依靠各种调试、分析、日志工具,比如 GDB、Valgrind、Systemtap 等。设计思想首先要说的是,虽然很多语言都内建语法支持面向对象编程,但它本质上是一种设计思想、方法,与语言细节无关,要点是抽象(Abstraction)和封装(Encapsulation)。即使是像 C 这样“纯”面

2020-06-01 16:23:10 198

原创 编译阶段:属性和静态断言

编译阶段的目标是生成计算机可识别的机器码(machine instruction code)。而编码阶段和预处理阶段的主要工作还是“文本编辑”,生成的是人类可识别的源码(source code)。编译阶段的特殊性在于,它看到的都是 C++ 语法实体,比如 typedef、using、template、struct/class 这些关键字定义的类型,而不是运行阶段的变量。所以,这时的编程思维方式与平常大不相同。比如说,让编译器递归计算斐波那契数列,这已经算是一个比较容易理解的编译阶段数值计算用法了:tem

2020-06-01 14:46:11 463

原创 预处理阶段:宏定义与条件编译

预处理阶段:宏定义与条件编译预处理编程预处理阶段编程的操作目标是“源码”,用各种指令控制预处理器,把源码改造成另一种形式,就像是捏橡皮泥一样。C++ 语言有近百个关键字,预处理指令只有十来个,实在是少得可怜。而且,常用的也就是 #include、#define、#if,所以很容易掌握。首先,预处理指令都以符号“#”开头,虽然都在一个源文件里,但它不属于 C++ 语言,它走的是预处理器,不受 C++ 语法规则的约束。一般来说,预处理指令不应该受 C++ 代码缩进层次的影响,不管是在函数、类里.

2020-06-01 01:13:48 2495

原创 C++生命周期和编程范式

目录1 C++ 程序的生命周期四个阶段编码阶段预处理编译阶段运行阶段2 C++ 语言的编程范式面向过程面向对象泛型编程函数式1 C++ 程序的生命周期四个阶段C++ 程序本身就已经处在“开发”阶段了,所以不会有“需求分析”“设计”这样的写文档过程。所以,一个 C++ 程序从“诞生”到“消亡”,要经历这么几个阶段:编码(Coding)、预处理(Pre-processing)、编译(Compiling)和运行(Running)。编码阶段...

2020-06-01 00:45:53 1023

原创 数据科学分析与统计

统计学1、统计学的介绍1.1 含义统计学是以数据为食物的动物Data—— Statistics ——Information描述统计学(Descriptive Statistics),研究如何取得反映客观现象的数据,并通过图表形式对所搜集的数据进行加工处理和显示,进而通过综合、概括与分析得出反映客观现象的规律性数量特征。内容包括统计数据的搜集方法、数据的加工处理方法、数据的显示方法、数据分布特征的概括与分析方法等。推断统计学(Inferential Statistics),研究如何根据

2020-05-18 22:37:34 7686

原创 利用Sublime Text 3 搭建环境 提示no bulid system,快捷键失灵

Sublime Text下载Sublime,根据自己相应的系统下载相应的版本,然后打开Sublime,对于不熟悉Sublime的同学可以先看一下这篇文章Sublime Text 全程指南或者sublime text3入门教程打开之后安装 Package Control:Ctrl+` 打开命令行,执行如下代码:适用于 Sublime Text 3:import urllib.request,os;pf='Package Control.sublime-package';ipp=su.

2020-05-09 01:23:19 1630

原创 如何在C/C++捕捉计算机程序中某段Function所消耗运行时间?

clock():捕捉从程序开始运行到clock()被调用时所耗费的时间。这个时间单位是clock tick,即“时钟打点”。常数CLK_TCK(或CLOCKS_PER_SEC):机器时钟每秒所走的时钟打点数。#include <stdio.h>#include <time.h>clock_t start, stop; /* clock_t是clock()函数返回...

2020-05-08 01:20:10 371

原创 矩阵的常规压缩存储

SparseMatrix.h#ifndef _SPARSEMATRIX_H#define _SPARSEMATRIX_H#include<stdio.h>#include<memory.h>#include<stdlib.h>#include<assert.h>#define ElemType int#define MAXSI...

2020-05-06 00:56:57 172

原创 线性表之前后连接双链表

SCList.h#ifndef __SCLIST_H__#define __SCLIST_H__#include<stdio.h>#include<malloc.h>#include<assert.h>#define ElemType inttypedef struct Node{ ElemType data; struct Nod...

2020-04-28 23:52:39 146

原创 线性表之单循环链

头文件:StaticList.h#ifndef __STATICLIST_H__#define __STATICLIST_H__#include<stdio.h>#define MAX_SIZE 20#define ElemType chartypedef struct ListNode{ ElemType data; int cur;}Li...

2020-04-28 23:49:33 135

原创 线性表之静态链

SLish.h#ifndef __SLIST_H__#define __SLIST_H__#include<stdio.h>#include<malloc.h>#include<assert.h>#define ElemType inttypedef struct Node{ ElemType data; struct Node *...

2020-04-28 23:44:22 133

原创 线性表之单链

#include<stdio.h>#include<assert.h>#include<malloc.h>#define ElemType inttypedef struct ListNode{ ElemType data; struct ListNode *next;}ListNode;typedef ListNode* List;...

2020-04-28 23:39:43 148

原创 线性表之数组顺序表

头文件:SeqLish.h#ifndef __SEQLIST_H__#define __SEQLIST_H__#include<stdio.h>#include<malloc.h>#include<assert.h>#define SEQLIST_INIT_SIZE 8#define INC_SIZE 3type...

2020-04-28 23:35:58 143

cxuan-os-修改第二版.pdf

全面介绍计算机操作,并且详细介绍了操作系统的基本硬件,其中内容涵盖进程、线程、内存、文件系统、IO、死锁以及提供一些面试题。

2020-08-19

空空如也

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

TA关注的人

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