自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

肥宝的实验室

超级实验室,技术黑工厂

  • 博客(48)
  • 资源 (11)
  • 收藏
  • 关注

原创 Python(1):HelloWorld

python安装很简单,没有什么要注意的地方。唯一要考虑的是,2.x版本和3.x版本。据说是改动太大,最好只能独立维护。不过初学者嘛,最好还是用新版本的了。1.单引号,双引号,三个双引号是等价的。2.串联字符串,可以用+,也可以不用,直接写出来就行了3.字符串格式说明符%s"John Q. %s" % ("Public")"John %s%s" % (

2017-01-26 09:38:40 2788

原创 Erlang(12):进程和错误

进程:普通进程和系统进程,连接:进程之间可以相互连接。如果AB两个进程连接,A挂了的时候,会想B发送一个错误信号。连接组:进程P的连接组是芝P相连的一组进程。监视:监视和连接很相似,但是单向的。消息和错误信号:进程协作的方式是交换消息或错误信号。错误信号的接收:{'EXIT', Pid, Why} 当普通进程收到错误消息时,如果退出原因不是norma

2017-01-19 00:12:20 2273

原创 Erlang(11):进程

erlang的进程是指虚拟机管理的进程,而不是操作系统的重量级进程。这些进程,创建和销毁都非常迅速;进程之间发送消息非常快速;进程在所有的操作系统上都具有相同的行为方式;可以拥有大量的进程;进程不共享任何内存,是完全独立的;进程唯一的交互方式就是消息传递。Pid = spawn(Mod, Func, Args) 创建一个新的进程来运行指定模块的指定参数。Pi

2017-01-18 19:31:12 3058

原创 Erlang(10):类型分析和检测

在Erlang中我们可以通过type及spec定义数据类型及函数原型。通过这些信息,我们对函数及调用进行静态检测,从而发现一些代码中问题。同时,这些信息也便于他人了解函数接口,也可以用来生成文档。Type :: any() %% 最顶层类型,表示任意的Erlang term | none() %% 最底层类型,不包含任何term

2017-01-18 10:52:24 3318

原创 Erlang(9):常识补充

1. applyapply(Mod, Func, [Arg1, Arg2, ..., ArgN])等价于Mod:Func(Arg1, Arg2, ..., ArgN)区别在于,使用apply,Mod和Func是可以算出来的。不推荐使用apply,许多分析工具都无法得知发生了什么,编译器优化也可能不管用。2.元数函数参数的数量叫做元数。函数名相同,元数不同,算

2017-01-17 17:38:54 2293

原创 Erlang(8):二进制型与位语法

大多数情况下,二进制型里的位数都会是8的整数倍,因此对应一个字节串。如果位数不是8的整数倍,就称这段数据为位串。二进制型的编写和打印形式是双小于号和双大于号之间的一列整数或字符串2> >.>3> >.>操作二进制型binary模块list_to_binary(L)->B 把io列表(iolist)L里的素有元素压扁后形成的二进制split_binary(Bin,Po

2017-01-17 15:14:09 3745

原创 Erlang(7):顺序程序的错误处理

显式生成错误的方法:exit(Why) 广播一个信号给当前进程链接的所有进程。throw(Why) 抛出一个调用者可能想要捕捉的异常错误。error(Why) 指示奔溃性错误,非常严重的错误。捕捉错误,try...catchtry FuncOrExpressionSeq of Pattern1[when Guard1] -> Expressions1; Pattern2

2017-01-17 11:25:42 2327

原创 Erlang(6):记录和映射组

记录和映射组记录record是元组的另一种形式-record(Name, { key1 = Default1, key2 = Default2, ... key3, ... }).记录比较像C++的结构和类。.hrl有点想C++的.h文件test.hrl-record(todo, {status = reminder, who =

2017-01-16 18:38:46 3234

原创 Erlang(5):控制结构when,if,case,for

控制结构,其实可以分成两种,一种是循环,另一种是选择分支。1.for循环的实现 for(Max, Max, F)->[F(Max)];        for(I, Max, F)->[F(I)|for(I+1, Max, F)].在Erlang Shell里面声明这个for()函数会报错,暂时不深究,反正很少会用到shell编写函数。再调用:22> c(test).

2017-01-16 15:44:08 3902

原创 Erlang(4):模块和函数

1.创建模块和调用函数:模块是erlang的基本单元。模块保存在扩展名为.erl的文件里。必须先编译才能运行,编译后的模块以.beam作为扩展名。子句没有返回语句,则最后一条表达式的值就是返回值。-module(geometry). %模块声明,模块名必须与文件名相同。-export([area/1]). %导出声明,声明可以外部使用的函数area({rectangle, Wi

2017-01-16 10:14:50 2615

原创 Erlang(3):数据类型与变量

1.初步尝试控制台的操作。输入1> a = 20结果没反应。。。后来发现erlang的语句是以.号来结尾的。改改:1> a = 20.** exception error: no match of right hand side value 20报错了,与右边的值不匹配。在研究一下。erlang变量必须以大写字母或者下划线开头。例如:2> A = 20.20=是模式匹配

2017-01-14 12:11:22 3438

原创 Erlang(2):初步接触并发的编程思想

看了《Erlang程序设计》的开头两章,觉得跟第一版的果然很不同。而且是正版的电子版,文字版的,不是图片。Erlang是面向并发的语言,它可以创建数以万计的进程来执行程序。当然这些进程是由Erlang虚拟机管理的轻量级进程,而不是操作系统的进程。对照C++,Java这些面向对象的语言来看。Erlang的进程更加像类的对象。通过声明模块,在别的模块里面就可以创建这些模块:

2017-01-13 18:34:42 2577

原创 Erlang(1):安装erlang虚拟机

最近做的也有项目失败了,新的项目可能要用erlang。就尽管研究一下吧。把别人的教程和自己遇到的困难写一下,可能理解得更好。因为我之前写的C++比较多,所以这将要不断地跟C++来比较,才能更好地把握语言的本质,否则只是一个写业务的,好像erlang新手工资还比C++低。1.网上找到了一本《erlang程序设计》中文版的书。是十年前的东西了。应该可以浏览一下,但是当做入门教程的话

2017-01-13 15:57:48 3752

原创 SQL语句汇总

//自己常用的LOAD DATA LOCAL INFILE 'D:/2015-03-19/t_active.txt' INTO TABLE t_active;//load txt文件//其他一、基础1、说明:创建数据库CREATE DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份s

2017-01-13 10:27:42 4535

原创 C++标准库和模板库

C++标准库的内容总共在50个标准头文件中定义。在C++开发中,要尽可能地利用标准库完成。这样做的直接好处包括:(1)成本:已经作为标准提供,何苦再花费时间、人力重新开发呢;(2)质量:标准库的都是经过严格测试的,正确性有保证;(3)效率:关于人的效率已经体现在成本中了,关于代码的执行效率要相信实现标准库的大牛们的水平;(4)良好的编程风格:采用行业中普遍的做法进行开发。

2017-01-12 17:15:41 2663

原创 算法分析:冒泡排序

应该是最简单的排序了,看代码就行了//冒泡排序 template void bubbleSort(Vector& a) { int i, j, temp; for (j = 0; j < a.size() - 1; j++) { //每一次循环,都会产生一个最大数在末尾,所以下面的不用比较了 for (i = 0; i < a.size() - 1 - j; i+

2017-01-12 11:20:14 2339

原创 算法分析:间接排序

排序的过程中,经常要交互数据,尤其是对于C++这种语言,交互两个比较大的对象,是很耗时间的。如果只是交互两个对象的指针,就会快很多了。间接排序的关键是排序后,怎样才能按指针的顺序,摆好数组的位置。其中核心的排序算法,是使用了快速排序 //------------间接排序--------- template class Pointer//构建一个可以比较的指针 { publi

2017-01-12 11:09:31 3920

原创 算法分析:快速选择

使用类似快速排序的方法,找出第k小的元素。k从0开始的。使用了快速排序的部分函数 快速排序 //快速选择 template Comparable& quickSelect(vector& a, int left, int right, int k) { if (left + 10 <= right)//这个子数组大于10,继续使用快速排序

2017-01-11 22:26:40 2549

原创 算法分析:快速排序

快速排序(quicksort)是在实践中最快的已知排序算法。平均运行时间是O(NlogN),最坏的情形是O(N^2)算法之所以特别快,主要是由于非常精炼和高度优化的内部循环。1.如果S中元素个数是0或1,则返回2.取S中任一元素v,成为枢纽元(pivot)3.将S-{v}(S中其余元素)划分成两个不想交的集合:左边<v,右边≥v。4.返回左边的排序,后跟v,继而右边的排序

2017-01-11 21:56:51 2761

原创 算法分析:归并排序

归并排序:最坏情形是O(NlogN)使用的比较次数几乎是最优的。这个算法中基本操作是合并两个已排序的表。归并排序通过递归,将数组自身分拆成2个数组,然后进入子数组的排序。分拆的数组左右两个,必须是紧跟着的。 //-------------归并排序---------------------- template void mergeSort(Vector& a) {

2017-01-11 16:29:59 2302

原创 算法分析:堆排序

基本原理就是构建一个堆,然后删除根。为了不用一个新的堆,把抽取出来的数据,放在堆末尾。所以,要实现一个升序排序,就要构建一个最大堆,不停抽取最大数,放到末尾处。 //----------------堆排序-------------------- template void heapsort(Vector& a) { //构建堆,从二分一后的点都是在最底层的,所以往回执行下滤,

2017-01-11 14:38:01 2304

原创 算法分析:谢尔排序(缩减增量排序)

谢尔排序也叫缩减增量排序。谢尔排序使用一个序列h1,h2,···,ht,叫做增量序列。有些增量序列对排序效率起到更好的效果。template void shellSort(Vector& a) { for (int gap = a.size() / 2; gap > 0; gap /= 2) { for (int i = gap; i < a.size(); ++i)

2017-01-11 11:15:26 2527

原创 算法分析:插入排序

插入排序是最简单的排序算法之一。插入排序由N-1趟(pass)排序组成。对于p = 1到N - 1趟,插入排序保证位置0到位置P上的元素为已排序状态。//插入排序 template void insertionSort(Vector& a) { int j; for (int p = 1; p < a.size(); ++p) { Comparable temp =

2017-01-11 10:30:11 2439

原创 数据结构:优先队列--堆

堆是一棵被完全填满的二叉树。底层可以例外。也成为完全二叉树。因为完全二叉树很有规律,所以可以用一个数组表示而不需要使用链。对于任一个位置i上的元素,左儿子在2i上,右儿子在2i+1上。其父亲在i/2上。堆的某个结点,必须必它的子孙结点都小,所以堆是完全二叉树,但是完全二叉树不一定是堆。//// Heap.h// HelloWorld// csdn blog:http:/

2017-01-10 22:35:03 2496

原创 数据结构:散列2(探测法)

上一章的内容:散列1:分离链接法对于List和Vector,都是使用自己实现的简单模板。Vector模板的实现 List模板的实现散列表的填装因子(load factor)λ为散列表中的元素个数和散列表大小的比值。探测散列表:在找到位置后,发现已经有数据,继续找下一个,直到找到位置。这种表叫做探测散列表。再散列:当散列表中数据很多的时候,插入可能会失败,这个时候

2017-01-10 17:53:35 2467

原创 数据结构:散列1(分离链接法)

散列:将每个键映射到从0到TableSize-1这个范围的某个数,并将其放到适当的单元中。这个映射成为散列函数理想情况下,不同的键映射到不同的单元,但是现实中是不可能的,所以好的散列函数,应该尽量均匀地分配键。列表的大小最好是素数,这个非常非常重要。解决冲突:冲突:如果一个元素插入时与一个已经插入的元素散列到相同的值,那么就产生了一个冲突。解决冲突的方法:分离链接法

2017-01-10 17:33:56 2535

原创 数据结构:伸展树,M叉树,B树

伸展树(splay tree):也叫分裂树,当一个结点被访问后,它就要经过一系列AVL树的旋转被推到根上。M叉树:可以有M路分支,高度大约是logmNB树:经过M叉树的多次变种和改进。有如下特性:1.数据项存储在树叶上2.非叶结点存储知道M-1个键,以指示搜索的方向;键i代表子树i+1中的最小键。3树的根或者是一片树叶,或者其儿子数在2和M之间。4除根外,所

2017-01-10 10:36:44 2693

原创 数据结构:平衡二叉树(AVL树)

AVL树是每个结点的左子树和右子树的高度最多差1的二叉查找树。要维持这个树,必须在插入和删除的时候都检测是否出现破坏树结构的情况。然后立刻进行调整。看了好久,网上各种各种的AVL树,千奇百怪。关键是要理解插入的时候旋转的概念。//// AvlTree.h// HelloWorld// csdn blog:http://blog.csdn.net/u012175089/

2017-01-10 00:27:25 2645

原创 数据结构:树tree和二叉树BinaryTree的实现与代码分析

一些概念:一棵树是一些结点的集合。这个集合可以是空集,若不是空集,则树由称作根(root)的结点r以及零个或多个非空的(子)树T1,T2...Ta组成,子树中每一个棵的根都被来自根r的一条有向的边(edge)所连接。每一棵子树的根叫做根r的儿子(child),而r是每一棵子树的根的父亲(parent)。没有儿子的结点成为叶(leaf)结点。具有相同父亲的结点为兄弟(siblings

2017-01-09 19:16:13 2839

原创 数据结构:队列Queue的实现与代码分析

队列Queue是先进进出FIFO和后进后出LILO的。只能从队尾放入数据,从对头删除数据。跟Stack一样,我也写了两个版本,但是跟Stack还是有所不同的。用List实现的队列,是没有大小限制的,用Vector实现的队列,是有大小限制的,其实更加复制,很多地方要注意的。对于List和Vector,都是使用自己实现的简单模板。Vector模板的实现 List模板的实现同

2017-01-09 11:50:27 2495

原创 数据结构:栈Stack的实现与代码分析

栈的主要特点是LIFO,后进先出。只能访问栈顶。可以使用数组或者链表来实现。所以写了两个版本的实现。其实,从代码的角度看,直接使用List是最简单的,但是从效率的角度看,使用vector更加高效一点。对于List和Vector,都是使用自己实现的简单模板。Vector模板的实现 List模板的实现先看看代码://// Stack.h// HelloWorld/

2017-01-08 23:39:47 2479

原创 数据结构:链表List的实现与代码分析

跟Vector一样,我自己也写了一个简单的List来进行研究。这里实现的是双向链表,因为双向链表包含了单向链表的所以功能,所以就没有单独写一个了。这个双向链表的实现,在创建的时候,就已经有了两个节点,分别是head和tail。这是抽离出来,不存放数据的节点,是为了让程序简化,被称为哨兵节点。假如不使用哨兵节点,在表头表尾操作的插入删除的时候,有很多要特殊处理的地方。加了着两个节点,

2017-01-08 19:16:43 3303 2

原创 关于模板类中,子类无法访问父类成员问题的解决方法

问题:今天研究数据结构,按着书敲代码,发现子类中直接调用父类成员居然无法通过编译。看了好久都没发现问题,尝试将父类private属性改为public,发现也是不行。解决办法:然后我想着用域作用符,居然可以。在网上搜了一下,发现用this指针,也是可以解决这个问题的。//// List.h// HelloWorld// csdn blog:http://blog.

2017-01-08 08:53:02 5081

原创 数据结构:向量Vector的实现与代码分析

Vector是比较常用的结构,在C++的STL中就有了vector的实现,在头文件中可以看到。但是STL的实现就像一个超级大的蛋糕,我们不可能一口一口地吃下去。最好的办法是从基础的思想开始,自己跟着写一个简单版本的Vector。vector究竟是什么?其实本质上就是数组,只是经过封装后,可以忽略数组的长度限制。除了这一点,其他的特性跟数组都差不多。对于队首和队中插入和删除都要耗费O

2017-01-07 21:02:49 5467

原创 7年码农的一些人生感悟

本来是写在《C++ primer plus》总结里面的,但是想想又觉得那个是知识性总结,于是把这些内容抽出来了。感悟:一开始的时候,只是想补充一下基础,因为确实没有系统地学过C++的东西,很多细节都不清楚。但是随着学习,发现很多地方,跟其他语言都是想通的,就连之前一直觉得其他语言有的,C++却没有的地方,也都逐渐发现和对照起来了。看完这个,或者还有很多细节不知道,但是就像在

2017-01-06 11:29:11 3128 1

原创 《C++ Primer Plus(第六版)》(47)(总结)

总结:我是总结完下面的列表,才再回来写总结的,现在看来,这本书的排版还是不错的,由浅入深,很有规律。其实,一开始我是想看《C++ primer》的,看的是电子版,同学发给我的。结果看了几章后发现是山寨的。不过最后还是看完了。我没有看过多少其他的C++的书。不知道这本书好不好。但是作为一个多年C++经验的程序员,重新打一下基础,真的很不错。或者,把所有题目都做完,就差不多了吧。注:末尾带有※※※的,都是很多列表清单或者比较重要但是不那么记得的东西,也就是说,挺重要的。基础的数据第二章 开始学

2017-01-06 11:25:22 2987

原创 《C++ Primer Plus(第六版)》(46)(STL函数汇总)

非修改性序列操作             all_of() 如果所有元素的谓词测试都为true,则返回true,C++11any_of() 只要有一个谓词测试为true,返回true,C++11none_of() 如果所有测试都为false,则返回false,C++11for_each() 对序列中的每个元素执行某操作。find() 在序列中找出某个值的第一次出现的位置。f

2017-01-05 23:51:03 2520

原创 《C++ Primer Plus(第六版)》(45)(第十八章 探讨C++新标准 编程练习和答案)

18.12 编程练习1.下面是一个简短程序的一部分:int main(int argc, char* argv[]){ auto q = average_list({ 15.4, 10.7, 9.0 }); cout << q << endl; cout << average_list({ 20, 30, 19, 17, 45, 38 }) << endl; auto ad =

2017-01-05 17:19:04 2866 1

原创 《C++ Primer Plus(第六版)》(44)(第十八章 探讨C++新标准 复习题和答案)

18.11 复习题1.使用大括号括起的初始化列表语法重写下述代码。重写后的代码不应使用数组ar:class Z200{private: int j; char ch; double z;public: Z200(int jv, char chv, double zv) : j(jv), ch(chv), z(zv){}}; int main(int argc, char

2017-01-05 15:52:47 2884

原创 《C++ Primer Plus(第六版)》(43)(第十八章 探讨C++新标准 笔记)

本章主要讲:移动语义和右值引用Lambda表达式包装器模板function可变参数模板1.C++11新类型long longunsigned long longchar16_tchar32_t2.扩大初始化列表的适用范围3.声明auto 自动类型识别decltype 将类型声明为表达式指定的类型: decltype(x)

2017-01-05 14:40:07 2451

Python实例:网络爬虫抓取豆瓣3万本书-详细注释版

对应的详细说明请看 http://blog.csdn.net/u012175089/article/details/60962685 内容简单,用来学习非常适合

2017-03-16

python-3.4.0.amd64

一直到我上传的时间未知,最新版本是3.6,但是很多库都不支持。所以3.4是最好的选择。64位操作系统

2017-03-02

mysql-connector-python-2.1.5-py3.4-winx64

MySql自己提供的python访问包。支持3.4之前的版本。64位系统。官网网速很慢,还是这里下载吧

2017-03-02

Android新手入门2016

这是我编写的Android新手入门教程,word文档方便阅读。网上的资源现在都比较旧了,这是目前最新的入门级教程。想要最新最全的信息可以进入我的csdn博客查看

2016-04-01

Android新手入门2016(16)--画图

http://blog.csdn.net/u012175089/ Android新手入门2016

2016-03-27

Android新手入门2016(15)--Gallery画廊

http://blog.csdn.net/u012175089/article/details/50989400 android新手入门2016

2016-03-26

Android新手入门2016(13)--FragmentTabHost实现选项卡和菜单

http://blog.csdn.net/u012175089/article/details/50983573 Android新手入门教程

2016-03-26

Android新手UI集合全

http://blog.csdn.net/u012175089 Android入门教程2016,png图标,下载后可直接使用,不需要再裁减

2016-03-25

Android新手UI集合(全)

http://blog.csdn.net/u012175089 Android新手入门2016教程,Android UI图标包png文件直接可用

2016-03-25

Android新手入门2016(13)代码

http://blog.csdn.net/u012175089 Android新手入门代码

2016-03-22

空空如也

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

TA关注的人

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