- 博客(49)
- 资源 (11)
- 收藏
- 关注
原创 C++11 学习笔记-类型推导
auto类型推导 auto关键字主要有两种用途: - 在变量声明时根据初始化列表表达式自动推断该变量的类型 - 声明函数时作为函数返回值的占位符 注意事项: - 使用auto声明的变量必须马上初始化 - 函数参数和模板参数不能被声明为auto - 对于数组类型,auto关键字会推导为指针类型,除非被声明为引用 - 在结构体中,auto不能用于非静态变量struct{...
2018-03-14 17:19:38
347
原创 C++11 继承构造函数和委托构造函数
一、继承构造函数 如果基类的构造函数很多,那么子类的构造函数想要实现同样多的构造接口必须一一调用基类的构造函数,于是C++11 引入继承构造函数。class _A {public: _A( int _InInt ) {;} _A( double _InDouble, int _InInt ) {;} _A( float _InFloat, int _I...
2018-03-13 11:18:31
830
原创 C++面试
1、TCP/UDP的区别,如何实现拥塞控制,如何实现可靠传输?udp的应用?区别: 1. TCP是面向连接;UDP是无连接的。 2. TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保 证可靠交付 3. TCP对系统资源要求多,UDP较少。 4. 每个TCP连接都是点对点的。UDP支持一对一、一对多...
2018-03-13 10:40:56
303
原创 C++杂记
1、C++类的默认拷贝构造函数有什么缺点?C++默认的拷贝构造函数是进行浅拷贝,也就是说拷贝复制的对象和原来的对象共享一块内存地址,当其中一个对象被销毁,那么另外一个对象所指向的内存就变成了空的了。class A{ A(int x):size(x),data(new char[x]) { } ~A(){ delete []data; ...
2018-02-08 17:10:43
368
原创 std::function与std::bind
std::function是一个函数包装类模板,该函数包装器模板能包装任何类型的可调用元素(函数、函数指针、类成员函数指针或者任意类型的函数对象(比如定义了 operator()的类对象实例 ))。std::function对象可以被拷贝和转移。 代码示例:#include#includeint g_minus(int i, int j){ return i - j; }tem
2018-02-02 16:36:40
320
原创 直接插入排序
直接插入排序直接插入排序是一种简单的插入排序法,所以适用于少量数据的排序。 基本思路:把待排序的纪录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的纪录插入完为止,得到一个新的有序序列。 基本步骤: 1.从第一个元素开始,该元素可以认为已经被排序 2.取出下一个元素,在已经排序的元素序列中从后向前扫描 3.如果该元素(已排序)大于新元素,将该元素移到下一位置 4.
2018-01-31 16:54:43
282
原创 简单选择排序
简单选择排序每趟从待排序的记录中选出关键字最小的记录,顺序放在已排序类的序列末尾,直到全部排列结束。 (1)从待排序序列中,找到关键字最小的元素; (2)如果最小元素不是待排序序列的第一个元素,将其和第一个元素互换; (3)从余下的 N - 1 个元素中,找出关键字最小的元素,重复(1)、(2)步,直到排序结束。 C++实现代码如下:void simple_sort(int
2018-01-31 16:05:47
228
原创 快速排序算法
快速排序快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 实现方法: 1、挖坑法 void quick_sort(int a[], int low, int hi
2018-01-31 15:37:58
233
原创 冒泡排序
1、冒泡排序对相邻的元素进行两两比较,顺序相反则进行交换,这样,每一趟会将最小或最大的元素“浮”到顶端,最终达到完全有序 冒泡排序算法的运作如下: . 比较相邻的元素。如果第一个比第二个大就交换它们。 - 对每一对相邻的元素做同样的工作,从开始第一对到结尾的最后一对。这时候最后的元素应该会是最大的数 - 针对所有的元素重复以上步骤,除了最后一个。 - 持续每次对越来越少的元素重复上
2018-01-31 15:11:20
259
原创 Qt5.8.0 mingw 编译QOCI
从oracle官网下载oracle 12g 驱动 http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html 分别下载 instantclient-sdk-nt-12.2.0.1.0.zip和instantclient-basic-nt-12.2.0.1.0.zip 然后解压文件。将解
2017-11-30 11:27:22
728
原创 Python3 读取文件内容万金油方法
bytes = min(32, os.path.getsize(filename))raw = open(filename, 'rb').read(bytes)result = chardet.detect(raw)encoding = result['encoding']infile = open(filename, "r", encoding=encoding)all_the_text
2017-10-11 11:18:58
637
原创 JetBrains产品激活
此方法验证成功的时间:2017-05-11 1、打开激活窗口 2、选择 Activate new license with License server (用license server 激活) 3、在 License sever address 处填入 http://xidea.online 4、点击 Activate 进行认证
2017-05-11 16:18:01
1203
原创 Centos添加快捷方式
安装软件 Jetbrains-gogland 一款golang语言的IDE 安装路径/usr/local/jetbrains_goglang-171 如果不做快捷方式的话 需要每次都需要执行bin/.gogland.sh启动 现在添加快捷方式: 在/usr/share/applications目录新建一个文件比如 gogland.desktop使用vim编辑并添加如下内容并保存:[Deskt
2017-05-04 17:05:16
2351
原创 Centos7 安装rabbitmq
安装Erlang从链接https://packages.erlang-solutions.com/erlang/esl-erlang/FLAVOUR_1_general/esl-erlang_19.3-1~centos~7_amd64.rpm下载centos7的rpm包(19.3) 首先需要安装erlang包的依赖项:yum install epel-releaseyum install uni
2017-05-03 11:13:44
5833
原创 Windows安装rabbitmq
Windows安装RabbitMQ一、 下载并安装erlang下载http://www.erlang.org/download.html 按照默认安装 二、 配置环境变量ERLANG_HOME 比如安装的是19.0版本 则为C:\Program Files\erl8.0 三、 配置环境变量PATH = %ERLANG_HOME%\bin 四、 下载安装RabbitMQ下载地址http
2017-04-20 17:54:29
468
原创 RabbitMQ
RaiibtMQ相关介绍:1.为什么使用信道(channel)而不使用TCP连接发送AMQP命令? 对操作系统来说频繁的建立和销毁TCP连接开销非常昂贵,而操作系统每秒建立的连接是有上限的,性能瓶颈不可避免,而只建立一条TCP连接无疑是一个很好的方案,在这条连接当中建立多条信道与RabbitMQ进行私密通信,相当于光纤电缆一样,一条电缆有多条光束,信道是没有限制的2.队列 1)AMQP的
2017-04-20 11:31:12
397
原创 python线程
python的threading用于提供线程相关的操作,线程是应用程序中最小的单元。使用threading有两种方式来创建线程:一种是通过继承Thread类,重写它的run方法;另外一种是创建一个threading.Thread对象,在它的初始化函数中将可调用对象最为参数传入。下面分别举例来说明,先来看看通过继承threading.Thread类来创建线程的例子:# coding=utf-8imp
2017-03-27 20:37:30
359
原创 Python关键字yield详解
可迭代对象(Iterables) 创建一个列表list时,你可以逐个地读取里面的每一项元素,这个过程称之为迭代(iteration)>>> mylist = [1, 2, 3]>>> for i in mylist:... print(i)123 mylist是一个可迭代的对象,当使用列表推导式创建一个列表时,它就是可迭代对象。>>> mylist = [x*x for x in
2017-03-27 17:56:33
461
转载 Python元类
类也是对象,在理解元类之前,你需要先掌握Python中的类。Python中类的概念借鉴于Smalltalk,这显得有些奇特。在大多数编程语言中,类就是一组用来描述如何生成一个对象的代码段。在Python中这一点仍然成立,但是,Python中的类还远不止如此。类同样也是一种对象。是的,没错,就是对象。只要你使用关键字class,Python解释器在执行的时候就会创建一个对象。下面的代码段: clas
2017-03-27 16:19:51
586
原创 Python观察者模式
观察者模式有时也被称为发布/订阅模式,观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己。模式中的角色: 抽象主题(subject):它把所有观察者对象的引用保存到一个聚集中,每个主题都可以有任意数量的观察者。抽象主题提供一个接口,可以增加和删除观察者对象。 具体主题(concreteS
2017-03-27 15:13:39
467
原创 Python简单工厂模式
简单工厂属于类的创新性模式,又叫静态工厂方法模式。是专门通过定义一个类来负责创建其他类的实例,被创建的实例通常都具有相同的父类。 模式特点:工厂工具条件产生不同功能的类。 简单工厂的组成要素:负责具体产品对象的创建工作,是该模式的核心。当场景比较负责的时候,可能需要 一个工厂类来负责产品的创建。以及产品的抽象接口或者抽象类,抽象所有产品的公共接口。 使用场景:工厂类负责创建的对象较
2017-03-27 14:53:39
708
原创 Python单例模式实现
Python单例模式实现有时候再项目中难免需要一些全局唯一的对象,这些对象大多是一些工具性的东西,在python中实现单例模式大概有如下几种方法: 1、使用类装饰器 使用装饰器实现单例类的时候,类本身并不知道自己是单例的,所以写代码的人可以不关心这个,只要正常写自己的类的实现就可以了,类的单例有装饰器保证。def singleton(cls): instances = {} de
2017-03-27 13:37:30
595
原创 Python类与对象
内置方法 说明 __init__(self,...) 初始化对象,在创建新对象时调用 __del__(self) 释放对象,在对象被删除之前调用 __new__(cls,*args,**kwd) 实例的生成操作 __str__(self) 在使用print语句时被调用 __getitem__(self,key) 获
2017-03-23 10:37:35
783
原创 Python学习杂记
一、判断Python对象是否可迭代:from collections import Iterableprint(isinstance("123456",Iterable))print(isinstance(123,Iterable))二、实现python list 实现下标循环,可以通过内置的enumerate函数可以把一个list变成索引-元素对,这样就可以在for循环中同时迭代
2017-03-21 16:43:39
252
原创 C++程序崩溃时,生成dmp调试文件
包含如下头文件 和 引用Lib库#include #pragma comment(lib, "dbghelp.lib")定义LONG WINAPI MyUnhandledFilter(struct _EXCEPTION_POINTERS *lpExceptionInfo){ LONG ret = EXCEPTION_EXECUTE_HANDLER; TCHAR szFil
2017-03-08 11:00:37
2569
翻译 V8嵌入指南
中英文地址:https://github.com/Chunlin-Li/Chunlin-Li.github.io/blob/master/blogs/javascript/V8_Embedder's_Guide_CHS.md如果你已经阅读了入门指南, 一定知道 V8 是一个独立运行的虚拟机, 其中有些关键性概念比如: handles, scopes 和 contexts. 本文将深入讨论这些概
2017-02-24 10:47:47
1981
原创 Javascript V8 引擎
1、暴露C++函数接口供js脚本调用: 假设有如下C++接口void Print(const v8::FunctionCallbackInfo& args) { bool first = true; for (int i = 0; i < args.Length(); i++) { v8::HandleScope handle_scope(args.GetIsolate(
2017-02-23 18:42:13
1022
原创 Protobuf编译及学习
protobuf源码C++版本 可以从protobuf-3.10下载, 解压进入cmake目录然后使用cmake生成项目解决方案编译。examples目录包含一些例子,可以学习。要使用Protobuf 需要先去了解protobuf的语法。中文版: http://colobu.com/2015/01/07/Protobuf-language-guide/ 官方指南地址 : https
2017-01-05 16:33:47
912
转载 Boost::Python学习笔记
原文地址: http://edyfox.codecarver.org/html/boost_python.htmlBoost.Python 是 Boost 中的一个组件,使用它能够大大简化用 C++ 为 Python 写扩展库的步骤,提高开发效率,虽然目前它对 Python 嵌入 C++ 的支持还不是很多,但也能提供很大方便。另外,华宇煜也编写了一份关于Boost.Python
2017-01-05 15:17:51
867
原创 Boost::Python库编译
1、下载 https://sourceforge.net/projects/boost/files/boost/1.62.0/ 解压 到路径 比如:C:\Users\jd\Desktop\boost_1_62_02、cd到解压路径 执行bootstrap.bat,会在boost根目录生成 b2.exe 、bjam.exe 、project-config.jam 、bootstrap.log四
2017-01-05 10:54:08
1865
原创 VS2015编译google V8引擎
编译v8需要开启vpn,需要下载代码和依赖项。google 编译文档 https://github.com/v8/v8/wiki/Building%20from%20Source1、安装git2、安装depot_tools,安装方法参照 https://www.chromium.org/developers/how-tos/install-depot-tools,注意下载解压的
2017-01-03 16:34:43
3912
1
原创 gRPC 实现多线程异步服务端
首先需要编译gRPC ,编译参考 原文 http://blog.youkuaiyun.com/cupidove/article/details/53334920获取gRPC源码gRPC是开源框架,项目代码在github上,所以首先要安装github。github安装后,在指定文件夹中,执行git命令就可以获取gRPC的所有源码。git clone https://git
2016-12-29 21:58:16
24773
6
转载 Windows环境下 RabbitMQ集群配置
原文链接:http://www.cnblogs.com/hegx/p/6097147.html一、在集群机器上安装erlang环境、安装rabbitmq; 二、 假设,192.168.10.111的节点名称为 rabbit@H1-PC,192.168.10.112的节点名称为 rabbit@H2-PC1.分别在两台机器的rabbitmq数据、日志文件所在路径下(本文
2016-12-20 15:50:15
1955
转载 HP-Socket
源码下载地址: https://github.com/ldcsaa/HP-SocketHP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通
2016-12-19 10:21:41
803
原创 C++ 多线程调用Python脚本
由于Python解释器有全局解释所GIL的原因,导致在同一时刻只能有一个线程拥有解释器,所以在C++多线程调用python脚本时,需要控制GIL,线程获取GIL。在主线程中初始化Python解释器环境,代码如下: { Py_Initialize(); //初始化Python环境 if ( !Py_IsInitialized() ) //检测是否初始化成功 { r
2016-12-06 17:44:37
11561
2
转载 Python获取汉字首字母
# -*- coding: utf-8 -*-def multi_get_letter(str_input): if isinstance(str_input, str): unicode_str = str_input else: try: unicode_str = str_input.dec
2016-11-25 13:37:55
2789
转载 Django Channels 学习笔记
原文链接 http://www.cnblogs.com/14061216chen/p/5998376.html一.为什么要使用Channels 在Django中,默认使用的是HTTP通信,不过这种通信方式有个很大的缺陷,就是不能很好的支持实时通信。如果硬是要使用HTTP做实时通信的话只能在客户端进行轮询了,不过这样做的开销太大了。 因此,在1.9版本之后,Django实现了
2016-11-24 16:57:44
1209
原创 Django 1.10 学习记录
一、Django1.10版本使用MySQL:下载安装pymysql pip install pymysql 因为mysqldb已经不支持3.x的版本了,所以使用Pymysql替代安装之后需要在django的 工程目录下的__init__.py 文件加入如下代码:import pymysqlpymysql.install_as_MySQLdb()二、编写测试
2016-11-24 10:17:55
543
原创 Django1.10+Apache2.4+mod_wsgi+python3.5部署
1、下载Apache2.4:下载地址2、下载mod_wsgi: 下载地址解压Apache2.4 打开 Apache24\conf\httpd.conf 文件 配置服务路径,通过搜索查找代码修改配置 参数为你自己的路径Define SRVROOT "D:/Apache24" ServerRoot "${SRVROOT}"配置监听地址和端口L
2016-11-23 15:08:22
3460
转载 Python获取CPU使用率、内存使用率、网络使用状态
原文地址:http://blog.youkuaiyun.com/bubu8633/article/details/8258342注:需要安装psutil库import sys import os import atexit import time import psutil #print "Welcome,current system is",os.name,"
2016-11-18 17:26:01
2616
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人