自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(117)
  • 收藏
  • 关注

原创 Linux下线程的启动-取消-终止

#pragma once#include<pthread.h>#include<stdlib.h>#include<iostream>using namespace std;class CThread{public: int Start(); void Stop(); void Run(); static void* ThreadProc(void* param); static void* ThreadProc_1(void* pParam);

2020-08-03 17:34:01 443

原创 根据二叉树已知中序遍历和后续遍历得到层次遍历和前序遍历

#include <assert.h>#include <iostream>#include <queue>#include<string>using namespace std;typedef char ElemType;typedef struct BinTreeNode{ ElemType data; BinTreeNode *leftNode; BinTreeNode *rightNode;}BinTreeNode, *PB.

2020-06-29 21:01:25 4124

原创 不开辟用于交换数据的临时空间,如何完成字符串的逆序

不开辟用于交换数据的临时空间,如何完成字符串的逆序(在技术一轮面试中,有些面试官会这样问)void change(char *str) { for(int i=0,j=strlen(str)-1; i<j; i++, j-){ str[i] ^= str[j] ^= str[i] ^= str[j]; }}int main(int argc, char* argv[]) { char str[] = “abcdefg”; printf(”strSource=%s\n”, str);.

2020-06-28 16:56:14 393

原创 动态库链接出现undefined symbol: _ZN16XXXXXXXD1Ev

1、用nm -g lib**.so | grep 出现问题的函数名确认是否真的有未定义的函数,导致在函数符号表中找不到;2、undefined symbol: _ZN16XXXXXXXD1Ev 后面的扩展名D1EV是指的C++ 析构函数,检查是否是函数只声明了却没实现。...

2020-05-16 22:52:18 11216 4

原创 gdb调试core文件

1、命令格式:gdb 可执行程序 core文件名2、bt n ——打印栈顶n层栈信息3、切换当前栈——frame ff n:栈层编号4、up n:向栈的上一层移动5、up down 向栈的下一层移动6、info f;info args ;info local ;info catch7、数组:查看一段连续的内存空间的值,比如数组的一段,或是动态数组的大小int arrag = (in...

2020-05-03 21:44:29 546

原创 C++ STL_queue

queue是一种先进先出的数据结构,他有俩个出口.queue允许新增,移除,从最低端加入元素,取的最顶端的元素。但是除了低端可以加入,顶端可以取出,没有任何其他方法可以存取queue其他任何元素。queue不允许有遍历行为。queue内部实现方式也是通过deque实现,所以他也是一种适配器//queue内部实现的方式也是通过deque;/*queue:先进先出*/#includ...

2020-04-06 21:55:43 228

原创 C++ STL_stack

栈:只有一个出口,stack允许新增元素,移除元素,取最顶端元素,但除了最顶端元素外,没有任何其他方法可以存取stack的其他元素。换言之stack不允许有遍历行为.将元素放入栈中成为push,将元素推出stack的操作称为pop;因为栈底层是通过deque实现的,所以他称之为适配器.栈的使用方法如下所示;//stack/*内部的实现方式是通过deque;栈:先进后出只...

2020-04-06 21:49:49 138

原创 C++ STL_forward_list

//单项链表/*没有push_back函数,只有push_front函数没有size()函数,有max_size函数没有back()函数,有front函数*/#include<forward_list>using std::forward_list;namespace stl_forward_list{ void test_forward_list(long&am...

2020-04-06 21:42:30 150

原创 C++ STL_deque

deque是连续空间(至少在逻辑上看是这样的;它实际是由一段一段的定量连续空间构成。一旦有必要在deque的前端后尾端增加新空间,变配置定量一段连续的空间,串接在整个deque的头端或者尾端。deque最大的任务,便是在这项分段的定量的连续空间上,维护其整体连续的假象,并提供随机存取的接口deque采用的是块所谓的map(注意,不是STL的map容器)作为主控。这里的map是一块连续空间,其...

2020-04-06 21:40:34 302 1

原创 C++ STL_list

stl中的list是双向链表,他的插入、移除、接合等操作并不会造成原有迭代器的实效(当然啦,指向被移除元素的那个得带器在移除操作发生之后肯定是会实效的)使用参考代码如下//双向链表#include<list>using std::list;using std::find;namespace stl_list{ void test_list(long& va...

2020-04-06 21:28:10 115

原创 C++ STL_vector

stl中vector特点:空间连续,当内存不够时候会自动扩容,控容是自动进行的,由分配器来做这件事。参考代码:通过耗时来看,发现对于vector直接进行寻找某个值和排序之后在寻找某个值,前者耗时不一定比后者慢#pragma once#include<iostream>using std::cout;using std::cin;using std::stri...

2020-04-06 16:16:46 95

原创 C++ STL_array学习

array特点:连续空间,空间大小在定义的时候就确定了,你要多大就是多大,数组的开端和末尾是没有办法去控容的。参考代码如下:#include<iostream>#include<array>#include<ctime>#include<cstdlib>#include<stdexcept>using std::cin...

2020-04-06 15:28:32 122

原创 C++ 引用和指针的区别

引用和指针相同点:1、指针和引用内容都是地址;int add(int* a, int*b){ cout << "a " << a << " b " <<b << endl; *a = 1; *b = 2; return (*a) + (*b);}int add(int&a, int&b){ co...

2020-04-03 17:38:52 107

原创 C++设计者模式——适配器模式

适配器模式定义:将一个类的接口转换成客户希望的另一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。适配器模式适用场景:1、希望复用一些现存的类,但是接口又与复用环境要求不一致的情况。在遗留代码复用,类库迁移等方面非常有用;2、GoF一书中定义俩种适配器,一种是类适配器一种是对象适配器。类适配器采用了“多继承”实现方式,一般不推介使用;对象适配器采...

2020-03-29 21:09:46 129

原创 C++ 设计者模式——享元模式

享元模式和单例模式都是解决的对象的新能问题。享元模式:顾名思义是共享很小的对象。如何避免大量的细粒度的对象。在我们业务上,有些细腻的东西,我们也可能把他设计成对象。所以如何避免这些大量的小的对象的造成的性能问题。享元主要思想是共享对象,通过某种类型来确定你需要哪种对象,获取的时候如果已经有了这种类型的对象,直接返回。如果没有,先创造对象,保存到对象池中,然后在返回这个对象。如下代码所示:...

2020-03-28 22:11:41 151

原创 C++ 设计者模式——单例模式

单例用到锁的定义实现:mutex.h#pragma once#include<windows.h>#include<iostream>using namespace std;class IMyLock{public: virtual ~IMyLock() {} virtual void Lock() const = 0; virtual void...

2020-03-22 20:55:50 136

原创 哈希表到底是个啥?

哈希表的本质其实是个数组:那就是哈希表就是通过将关键值也就是key通过一个散列函数加工处理之后得到一个值,这个值就是数据存放的位置,请看这张图来理解哈希函数的作用:虽然说哈希表就是个数组,但是他不像数组那样存储一个值,哈希表存储的是键值对,就想学号:101000,姓名:张三,简单点说就是一个值对应另外一个值。比如a对应b,那a就是key,b就是value;哈希表存放的就是这样的键值对。...

2020-03-15 21:31:34 607

原创 C++设计者模式——Builder模式

在软件设计过程中面临着复杂对象的创建工作:其通常有一些稳定的算法构成,由于需求的变化各个子部分通常会发生剧烈的变化代码报错:"public: __thiscall House::House(void)" (??0House@@QAE@XZ),该符号在函数 "public: __thiscall StoneHouse::StoneHouse(void)" (??0StoneHouse@@QAE...

2020-03-15 13:41:04 214

原创 C++设计者模式——装饰模式

背景:在软件开发,如果责任划分的不清楚,是继承得到随着需求的变化子类会急剧膨胀,同时充斥着重复的代码这时候关键是需要划清责任动机:在某些情况下我们可能过度的使用继承来扩展对象的功能,由于继承为类型引用的静态特性,是的这种扩展缺乏灵活性;并且随着子类的加多,各个子类的组合会导致更多子类的膨胀;问题:如何是的对象的功能扩展能根据需求动态的实现呢?同时避免“扩展的功能增多”子类个数膨胀呢?从而使...

2020-03-14 18:33:35 417

原创 C++ 设计者模式——观察者模式

观察者模式:在软件构建过程中,需要为某些对象建立一种“通知依赖关系”——目标对象状态发生变化时候,所有依赖对象(观察者)都自动被通知。但是如果“通知依赖关系”过于紧密,那么软件不能很好抵御变化。观察者模式主要解决的问题有俩点:1、当目标对象发生变化时,所有的观察者自动被通知。其实这里主要借助STL容器,将所有观察者都注册到容器,目标对象发生变化时候,一次遍历容器中的观察者使他们发生自己的动...

2020-03-10 22:55:45 144

原创 C++设计者模式——策略模式

策略模式:某些对象使用的算法可能多种多样,经常改变,如果将这些算法编码到代码中,会使代码变得异常负责,而且有时候支持不使用的算法可能是一种性能负担。对于上面描述可以举如下的列子解释。比如如下代码所示:#pragma once#include<iostream>using namespace std;//假如我们要实现一个功能:输入某个国家可以相应计算出该国家的税金;e...

2020-03-09 22:31:55 412

原创 C++ 设计者模式——模板方法

重构关键技法(1)静态——动态(2)早绑定——晚绑定(3)继承——组合(4)编译时依赖——运行时依赖(5)紧耦合——松耦合组件协作模式:框架与应用程序的划分,组件协作的划分是通过晚绑定,框架与应用程序之间的松耦合,是二者之间协作时候常用的的模式。包括以下三种模式1、Templete Method2、Stratage;3、Observer/Event模板方法...

2020-03-08 22:51:28 153

原创 C++ 设计者模式——抽象工厂

抽象工厂模式用于:一系列相互依赖的对象的创建工作,而且需求的变化会有更多系列对象需要创建;前半句话可以这样理解:Oracle数据库,和Oracle命令相依赖;MySql数据库和MySql命令相互依赖;如果Oracle数据库使用MySql命令,可能就会报错;后半句话:除了有O染成了数据库,还可能有MySql数据库,还可以有其他的数据库;抽象工厂模式是特殊的工厂模式;代码如下:...

2020-03-05 10:56:17 161

原创 c++ 设计者模式——工厂模式

1、面向接口编程:最简单的表现形式是,你的变量要声明成抽象基类;2、为什么要实现面向接口编程:设计原则:依赖倒置原则——应该依赖抽象而不是细节。3、抽象基类是不能创建的,不能new的。4、创建对象的方法:除了在栈上、或者是在堆上创建对象,也可以通过方法返回对象。...

2020-03-03 19:24:20 334

原创 C++反射机制(通过类名获取类对象指针)

1、通过单例模式创建对象;2、注册类将对象和类名称存储都map,并且提供获取类对象的函数;3、通过宏将对象和类名注册到map中;classFactory.h#pragma once//工厂类的定义#include<map>#include<string>using namespace std;typedef void* (*PTRCre...

2020-02-25 16:32:46 2716 1

原创 C++局部静态变量

局部静态变量:当需要让局部变量的生命周期贯穿在函数结束之后时,可将局部变量生命为static类型.#include<iostream>using namespace std;size_t count_calls(){ static size_t ctr = 0; //调用结束后,这个值仍然有效? return ++ctr; //每次调用将ctr加1返回新值。并在函数退...

2020-02-24 21:27:32 327

原创 C++ 设计者模式——观察者模式(Observer)

//1.意图/*定义对象建的一种一对多的依赖关系,当一个对象的状态发生变化时,所依赖于他的对象得到通知并被自动更新;2、别名依赖、发布-订阅*/以动物参加比赛为列:当比赛开始后,各个参赛选手都将通知,并且进行比赛;参赛的动物分别是Dog,Cat,Penguin;所有动物的父类:pet.h#pragma once#include<string>#in...

2020-02-19 21:21:45 252

原创 pthread_attr_t——线程属性

posix线程中的线程属性pthread_attr_t 属性主要包括scope属性、detach属性、堆栈地址、堆栈大小、优先级。在pthread_create函数中第二个参数设置为NULL的时候,将采用默认属性设置;线程属性如下:typedef struct { int detachstate...

2020-02-18 14:40:02 399

原创 va_list

va_list是C语言中解决变参问题的一组宏,所在的头文件<strarg.h>va_list使用说明:(1)首先在函数中定义变量va_list; 这个变量是指向可变参数的指针;(2)调用函数va_start()宏初始化刚定义的变量,使其指向可变参数;(3)然后调用va_arg()宏返回可变参数;va_arg的第二个参数是你要返回参数的类型;(4)当不关心返回的参数具...

2020-02-17 16:17:45 169

原创 python环境搭建准备

python特点:优点:1、纯面向对象2、免费 3、移植性能好 4、可混合编程5、开发效率高缺点:1、运行速度比较慢环境搭建:1、python解释器(python官网:ww.pyhon.org)2、包安装器:pip condaJupyter Notebook1、一个原本用于科学计算的python交互环境;2、现在可以用来作为全功能环境使用3、支持Markdown[笔记本官...

2020-01-12 15:44:06 145

原创 C strtok_s函数

strtok_s是windows下的一个分割字符串安全函数,其函数原型如下:char *strtok_s( char *strToken, const char *strDelimit, char **buf);这个函数将剩余的字符串存储在buf变量中,而不是静态变量中,从而保证了安全性。在首次调用strtok_s这个功能时候会将开头的分隔符跳过然后返回一个指针指向strToken中的第一...

2019-12-29 15:00:21 1937

原创 C++ 容器swap函数

1、swap函数交换俩个相同类型容器的内容,交换俩个容器的速度非常快,因为只交换容器的数据结构,而不交换元素值;但是如果是array调用swap函数,速度将会很慢,因为他是交换的元素值,交换速度与array大小成正比;2、array调用swap函数,需要俩个array数据类型相同,大小相等;交换容器的数据结构是指:交换容器元素的内存地址,并不是元素所存储的值,除string 类型外,swa...

2019-12-07 17:38:27 1340

原创 C enum(枚举)

enum 枚举类型是C语言的一种基本数据类型,他可以让数据更简洁、更易懂enum枚举类型定义:enum 枚举变量名{枚举类型1,枚举类型2,枚举类型3,。。。}注意:1、枚举类型1的默认值是0,往后一次在前一个枚举类型值加1;enum枚举变量的定义:(1)enum Day {MON,TUE,WED,THU,FRI,SAT,SUN} ; enum DAT day; day = EWD...

2019-11-17 19:02:16 136

原创 C++ 类静态数据成员

静态数据成员:static char array[32] = "static";静态数据成员是为了解决数据共享问题,实现数据数据共享还可以是全局变量或者对象;设置类的静态数据成员有一下优点:(1)类的静态数据成员的作用域在类中,不会与全局变量重名;(2)可以实现封装,类的静态数据成员可以是私有的可以实现封装,但是全局变量却不可以(3)static与特定类关联而不是和对象关联;静...

2019-11-17 15:23:32 225

转载 dbms_metadata.get_ddl的使用总结

转自:https://blog.csdn.net/newhappy2008/article/details/34823339在日常工作中,经常有人通过工具去查看对象的定义,其实有时候这样去查看也很烦的。在工作中,也有同事问我怎么获取对象定义,今天我做个总结给大家,希望对大家有所帮助!获取对象定义的包为:dbms_metadata,其中的get_ddl函数是获取对象的函数GET_DDL函数返...

2019-07-04 18:39:32 682

转载 dbms_metadata.get_ddl的使用总结

转载自https://blog.csdn.net/newhappy2008/article/details/34823339在日常工作中,经常有人通过工具去查看对象的定义,其实有时候这样去查看也很烦的。在工作中,也有同事问我怎么获取对象定义,今天我做个总结给大家,希望对大家有所帮助!获取对象定义的包为:dbms_metadata,其中的get_ddl函数是获取对象的函数GET_DDL函数返...

2019-07-02 19:18:56 571

原创 ModuleNotFoundError: No module named 'cx_Oracle'

在导入cx_Oracle时候报错如上所示,则需要下载cx_Oracle模块下载地址:https://pypi.org/project/cx-Oracle/5.3/#files下载一定要注意:Oracle客户端,python版本,cx_Oracle三者版本必须匹配,否则导入会报......!32类似错误说明这三者版本不匹配。举例:Oracle客户端 32位11g,python也必须是32...

2019-06-30 21:32:22 11825

原创 Java实现观察者模式

//目标对象:天气对象WeatherSubject.javaimport java.util.List;import java.util.ArrayList;/* *目标对象知道观察它的观察者,并提供注册(添加)和删除观察者的接口 * */public class WeatherSubject { //用来保存注册的观察者对象 private List<Observer...

2019-06-09 12:24:59 151

原创 paramiko.ssh_exception.SSHexception:Server connection dropped:

在同事的帮助下得以解决:亲测有效:以下语句需要添加后面俩个参数:self.__sftp_windows_size = 1073741824;self.__sftp_max_package_size = 1073741824;self.sftp = paramiko.SFTPClient.from_transport(t, self.__sftp_windows_size, s...

2019-05-16 21:18:37 3779 2

转载 #pragma warning(disable: 4786)

#pragma warning(disable 4786)屏蔽标识符过长导致的warning;代码实现:在.H .CPP文件开头写上:#pragma warning(disable:4996)1. #pragma warning只对当前文件有效(对于.h,对包含它的cpp也是有效的),而不是对整个工程的所有文件有效。当该文件编译结束,设置也就失去作用。2. #pragma warni...

2019-05-09 11:06:13 2532

空空如也

空空如也

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

TA关注的人

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