07 2018 档案

摘要:1、Protobuf Google Protocol Buffer(简称 Protobuf)是一种轻便高效的结构化数据存储格式,平台无关、语言无关、可扩展,可用于通讯协议和数据存储等领域。 阅读全文
posted @ 2018-07-30 18:17 liubiaos 阅读(142) 评论(0) 推荐(0)
摘要:机构规范: 阅读全文
posted @ 2018-07-30 10:06 liubiaos 阅读(282) 评论(0) 推荐(0)
摘要:一、什么是协程? 二、管道channel 通道(channel),就像一个可以用于发送类型化数据的管道,由其负责协程之间的通信,从而避开所有由共享内存导致的陷阱;这种通过通道进行通信的方式保证了同步性 声明的格式: 未初始化的通道的值是nil。 2.1通信操作符 这个操作符直观的标示了数据的传输:信 阅读全文
posted @ 2018-07-28 16:55 liubiaos 阅读(149) 评论(0) 推荐(0)
摘要:Go 没有像 Java 和 .NET 那样的 try/catch 异常机制:不能执行抛异常操作。但是有一套 defer-panic-and-recover 机制(参见 13.2-13.3 节)。 Go 的设计者觉得 try/catch 机制的使用太泛滥了,而且从底层向更高的层级抛异常太耗费资源。他们 阅读全文
posted @ 2018-07-27 21:38 liubiaos 阅读(306) 评论(0) 推荐(0)
摘要:我们总结一下前面看到的:Go 没有类,而是松耦合的类型、方法对接口的实现。 OO 语言最重要的三个方面分别是:封装,继承和多态,在 Go 中它们是怎样表现的呢? 封装(数据隐藏):和别的 OO 语言有 4 个或更多的访问层次相比,Go 把它简化为了 2 层(参见 4.2 节的可见性规则): 1)包范 阅读全文
posted @ 2018-07-27 16:07 liubiaos 阅读(160) 评论(0) 推荐(0)
摘要:Go 没有类:数据(结构体或更一般的类型)和方法是一种松耦合的正交关系。 1、动态方法调用 通常需要编译器静态检查的支持:当变量被赋值给一个接口类型的变量时,编译器会检查其是否实现了该接口的所有函数。 2、隐藏接口,显示接口 声明要用的接口,隐藏一部分接口不让其它调用 3、嵌套接口 多重嵌套 4、空 阅读全文
posted @ 2018-07-27 13:04 liubiaos 阅读(1245) 评论(0) 推荐(0)
摘要:一、什么是反射? 反射是用程序检查其所拥有的结构,尤其是类型的一种能力; 二、Printf Printf 的函数声明为: 阅读全文
posted @ 2018-07-27 12:22 liubiaos 阅读(244) 评论(0) 推荐(0)
摘要:一、接口是什么 接口提供了一种方式来 说明 对象的行为:如果谁能搞定这件事,它就可以用在这儿。 接口定义了一组方法(方法集),但是这些方法不包含(实现)代码:它们没有被实现(它们是抽象的)。接口里也不能包含变量。 格式: 接口的特性: 类型不需要显式声明它实现了某个接口:接口被隐式地实现。多个类型可 阅读全文
posted @ 2018-07-27 11:07 liubiaos 阅读(169) 评论(0) 推荐(0)
摘要:一、什么是结构体 就是类 阅读全文
posted @ 2018-07-26 21:05 liubiaos 阅读(97) 评论(0) 推荐(0)
摘要:一、什么是锁? sync.Mutex 是一个互斥锁,它的作用是守护在临界区入口来确保同一时间只能有一个线程进入临界区 在 sync 包中还有一个 RWMutex 锁:他能通过 RLock() 来允许同一时间多个线程对变量进行读操作,但是只能一个线程进行写操作。如果使用 Lock() 将和普通的 Mu 阅读全文
posted @ 2018-07-26 15:58 liubiaos 阅读(222) 评论(0) 推荐(0)
摘要:像 fmt、os 等这样具有常用功能的内置包在 Go 语言中有 150 个以上,它们被称为标准库,大部分(一些底层的除外)内置于 Go 本身 unsafe: 包含了一些打破 Go 语言“类型安全”的命令,一般的程序中不会被使用,可用在 C/C++ 程序的调用中。syscall-os-os/exec: 阅读全文
posted @ 2018-07-26 13:48 liubiaos 阅读(217) 评论(0) 推荐(0)
摘要:一、基本包 阅读全文
posted @ 2018-07-26 13:14 liubiaos 阅读(95) 评论(0) 推荐(0)
摘要:一、什么是map? map 是一种特殊的数据结构:一种元素对(pair)的无序集合,pair 的一个元素是 key,对应的另一个元素是 value,所以这个结构也称为关联数组或字典。这是一种快速寻找值的理想结构:给定 key,对应的 value 可以迅速定位。 map 这种数据结构在其他编程语言中也 阅读全文
posted @ 2018-07-26 12:37 liubiaos 阅读(212) 评论(0) 推荐(0)
摘要:我们已经知道切片创建的时候通常比相关数组小,例如: slice1 := make([]type, start_length, capacity) 其中 start_length 作为切片初始长度而 capacity 作为相关数组的长度。 阅读全文
posted @ 2018-07-26 12:15 liubiaos 阅读(180) 评论(0) 推荐(0)
摘要:For结构: 一、For-range结构是可以怎么用? 这种构建方法可以应用于数组和切片: 第一个返回值 ix 是数组或者切片的索引,第二个是在该索引位置的值;他们都是仅在 for 循环内部可见的局部变量。value 只是 slice1 某个索引位置的值的一个拷贝,不能用来修改 slice1 该索引 阅读全文
posted @ 2018-07-26 12:13 liubiaos 阅读(779) 评论(0) 推荐(0)
摘要:一、切片是什么: 切片是对数组一个连续片段的引用,所以切片是一个引用类型。 特点:切片是一个长度可变的数组 一个由数字 1、2、3 组成的切片可以这么生成:s := [3]int{1,2,3}[:] 甚至更简单的 s := []int{1,2,3}。 二、小例子: 输出: 0 is 01 is 12 阅读全文
posted @ 2018-07-26 12:02 liubiaos 阅读(153) 评论(0) 推荐(0)
摘要:一、什么是数组? 数组是具有唯一类型的一组已编号且长度固定的数据相序列(这是一种同构的数据结构); 二、声明格式: 例如: 2.1指针传递 输出结果: [0 0 0]&[0 0 0 0] 三、数组常量 阅读全文
posted @ 2018-07-25 19:59 liubiaos 阅读(134) 评论(0) 推荐(0)
摘要:一、斐波那切数列优化 阅读全文
posted @ 2018-07-25 19:06 liubiaos 阅读(281) 评论(0) 推荐(0)
摘要:一、什么是格式化输出? 二、有哪些符号 阅读全文
posted @ 2018-07-25 18:04 liubiaos 阅读(6715) 评论(0) 推荐(0)
摘要:一、什么是闭包函数? 二、匿名函数可以被赋值给变量并作为值使用: 阅读全文
posted @ 2018-07-25 17:45 liubiaos 阅读(180) 评论(0) 推荐(0)
摘要:一、什么是递归函数? 当一个函数在其函数体内调用自身,则称之为递归。 二、引用经典例子:斐波那切数列 fibonacci(0) is: 1fibonacci(1) is: 1fibonacci(2) is: 2fibonacci(3) is: 3fibonacci(4) is: 5fibonacci 阅读全文
posted @ 2018-07-25 17:14 liubiaos 阅读(759) 评论(0) 推荐(0)
摘要:一、什么是内置函数? 二、内置函数有哪些? 出自:https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/06.5.md 阅读全文
posted @ 2018-07-25 16:28 liubiaos 阅读(1573) 评论(0) 推荐(0)
摘要:一、语法 声明语法:func 函数名 (参数列表) [(返回值列表)] {} 二、特点 2.1不支持重载(可以编写多个同名函数,只要它们拥有不同的形参与/或者不同的返回值) 2.2函数可以赋值给变量 2.3多返回值 2.4匿名函数 三、传递方式: 3.1值传递 基本的数据类型是值传递 3.2地址传递 阅读全文
posted @ 2018-07-25 00:32 liubiaos 阅读(151) 评论(0) 推荐(0)
摘要:一、什么是流程控制? 二、If/else分支判断 2.1转译 三、switch case语句(开关) E:\project>main.exeis 0is 10 三、for 语句 写法1:for 初始化语句;条件判断;变量修改 3.1for-range结构 for 指针,值 := range 传入值{ 阅读全文
posted @ 2018-07-24 23:54 liubiaos 阅读(113) 评论(0) 推荐(0)
摘要:一、什么是指针 二、指针操作 1、如何声明指针类型, *int,在类型前面加个*号 *号是指针类型,取值(把内存地址值变成值)。&号(取址符)是读取值内存地址。 s是赋值。 &s是提取内存地址。*p是值。*string是内存地址。 内存示意图如下: 阅读全文
posted @ 2018-07-24 20:07 liubiaos 阅读(152) 评论(0) 推荐(0)
摘要:运行顺序:运行导入包-->读取全局变量 -->读取init函数-->完毕 阅读全文
posted @ 2018-07-19 09:32 liubiaos 阅读(95) 评论(0) 推荐(0)
摘要:一、垃圾回收 1、内存自动回收。 2、只需要创建,不需要释放 二、天然并发: 1、语言层支持并发,对比python,少了GIL锁。 2、goroute,轻量级线程。 3、基于CSP模型实现 三、channel管道 1、管道,类似unix/linux中的pipe 2、多个goroute之间通过chan 阅读全文
posted @ 2018-07-17 17:33 liubiaos 阅读(261) 评论(0) 推荐(0)
摘要:一、安装: 1、下载GO的地址:https://golang.org/dl/ 点击安装包进行安装(linux直接解压) 设置环境变量(linux) 1. export GOROOT=$PATH:/path/to/go/ 2. export PATH=$PATH:$GOROOT/bin/ 3. exp 阅读全文
posted @ 2018-07-17 17:13 liubiaos 阅读(201) 评论(0) 推荐(0)
摘要:目录 0、官方教程 https://tour.go-zh.org/basics/1 1、安装调试 2、简单介绍 阅读全文
posted @ 2018-07-17 10:02 liubiaos 阅读(163) 评论(0) 推荐(0)
摘要:一、什么是爬虫? 爬虫:就是爬取网页数据的程序。 二、爬虫怎么抓取网页数据: 网页三大特征: -1. 网页都有自己唯一的URL(统一资源定位符)来进行定位-2. 网页都使用HTML (超文本标记语言)来描述页面信息。-3. 网页都使用HTTP/HTTPS(超文本传输协议)协议来传输HTML数据。 爬 阅读全文
posted @ 2018-07-11 20:29 liubiaos 阅读(102) 评论(0) 推荐(0)
摘要:一、什么是粘包?(只有在TCP中有粘包现象,在UDP中永远不会粘包) 黏包不一定会发生。 如果发生 了:1、可能是在客户端已经粘了 2、客户端没有粘,可能是在服务端粘了。 所谓的粘包问题:主要是是因为接收方不知道消息之间的界限,不知道一次性提取多少字节的数据所造成的。 阅读全文
posted @ 2018-07-11 15:56 liubiaos 阅读(129) 评论(0) 推荐(0)
摘要:一、socket是什么 socket是应用层与TCP/IP协议通信的中间软件抽象层,它是一组接口。在设计模式中,socket其实就是一个门面模式,它把复杂的TCP/IP协议隐藏在socket接口后面,对用户来说,一组简单的接口就是全部,让socket去组织数据,以符合指定的协议。 简单来说,就是无需 阅读全文
posted @ 2018-07-11 14:15 liubiaos 阅读(150) 评论(0) 推荐(0)
摘要:一、错误与异常 程序员都会犯错,因此每个程序员都必须经常检测试其代码,错误代码分为两种: 1、语法错误:python解释器的语法检测会自动检测出来。 2、逻辑错误:用户输入不合适的一系列错误 什么是异常? 异常就是程序运行时发生的错误的信号,在python中,错误触发的异常如下。异常发生之后,异常之 阅读全文
posted @ 2018-07-11 11:31 liubiaos 阅读(151) 评论(0) 推荐(0)
摘要:一、反射 什么是反射:可以用字符串的方式去访问对象的属性,调用对象的方法(但是不能去访问方法),python中一切皆对象,都可以使用放射。 反射的四种方法: hasattr:hasattr(object.name)判断一个对象是否有name属性或者是name方法。有就返回True,没有就返回Fals 阅读全文
posted @ 2018-07-11 11:08 liubiaos 阅读(160) 评论(0) 推荐(0)
摘要:一、什么是多态? 多态:一种事物有多重形态(如:救护车出发,医生护士是救人操作,伤者是等待被救操作,虽然两个人听到身影都是一样的,但是执行的效果不一样。) 二、鸭子类型 python崇尚鸭子类型,即‘如果看起来像,叫声像而且走起路来像鸭子,那么它就是鸭子’ python程序员通常根据这种行为来编写程 阅读全文
posted @ 2018-07-11 10:47 liubiaos 阅读(256) 评论(0) 推荐(0)
摘要:一、什么是封装? 封装一部分东西,不让别人看到。(封装不是当单纯意义上的隐藏,其实它还是可以查看到的) 封装数据:隐藏数据。 封装功能:目的隔离复杂度。 二、实例: 三、property 为什么要用property:将一个类的函数定义成特性以后,对象再去使用的时候obj.name,根本无法察觉自己的 阅读全文
posted @ 2018-07-11 10:22 liubiaos 阅读(145) 评论(0) 推荐(0)
摘要:一、什么是继承 继承是一种创建新类的方式,在python中,新建的类可以继承一个或者多个父类,父类又可以称为基类活超类,新建的类称为派生类或子类。 简单来说就是:子类可以继承父类的方法和属性。 python中类的继承分为:单继承和多继承 二、 阅读全文
posted @ 2018-07-10 18:08 liubiaos 阅读(177) 评论(0) 推荐(0)
摘要:一、封装 二、继承 三、多态 阅读全文
posted @ 2018-07-10 16:27 liubiaos 阅读(108) 评论(0) 推荐(0)
摘要:一、闭包函数: 在一个外函数中定义一个内函数,内函数里运用了外函数的临时变量,并且外函数的返回值是内函数的引用。 二、实例: 三、闭包函数修改外函数局部变量: nonlocal是python3中的语法 四、使用 1、可以当成装饰器使用 2、实现单利模式 引用:https://www.cnblogs. 阅读全文
posted @ 2018-07-10 16:17 liubiaos 阅读(405) 评论(0) 推荐(0)
摘要:一、生成器函数: 常规定义函数,使用yield语句而不是return语句返回结果。yield语句一次返回一个结果。 好处在于,不会一下占用很多内存生成数据。 本质:就是一个迭代器。 python中提供的生成器:1、生成器函数 2、生成器表达式 二、实例: 三、列表推导式: 阅读全文
posted @ 2018-07-10 10:58 liubiaos 阅读(217) 评论(0) 推荐(0)
摘要:一、迭代协议: 可以被迭代要满足要求的就叫做可迭代协议。内部实现__iter__方法。 iterable:可迭代的--对应的标志。 什么叫做迭代?:可以一个一个取值,就像for循环一样取值。 字符串,列表,元祖,集合,字典都是也可以迭代的。 二、迭代器协议:内部实现__iter__,__next__ 阅读全文
posted @ 2018-07-10 10:52 liubiaos 阅读(218) 评论(0) 推荐(0)
摘要:一、匿名函数的定义: 解决一些简单的需要用函数去问题,匿名函数的函数体只有一行。 二、格式: calc = lambda n:n**n 函数名 = 匿名函数 参数:返回值 三、练习: 阅读全文
posted @ 2018-07-10 10:04 liubiaos 阅读(141) 评论(0) 推荐(0)
摘要:一、递归函数的定义:在一个函数里面调用函数本身 python限制最大层数:998层 阅读全文
posted @ 2018-07-09 18:03 liubiaos 阅读(156) 评论(0) 推荐(0)
摘要:一、内置函数 内置函数是python自带的一系列常用函数。 二、python3中内置函数 三、内置方法 转至 :https://www.cnblogs.com/hongfei/p/3858256.html 阅读全文
posted @ 2018-07-09 17:45 liubiaos 阅读(183) 评论(0) 推荐(0)
摘要:一、装饰器 1、为什么要用装饰器? 装饰器的功能:在不修改原函数以及调用方式的情况下对原函数功能进行扩展。 二、开放和封闭原则 1、对扩展是开放的 2、对修改是封闭的 三、装饰器的固有结构 四、带参数的装饰器 五、多个装饰器装饰一个函数 阅读全文
posted @ 2018-07-09 17:39 liubiaos 阅读(137) 评论(0) 推荐(0)
摘要:1、 装饰器 2、 迭代器和生成器 3、 内置函数 4、 包闭函数 5、 递归函数 6、 匿名函数 7、 钩子函数 阅读全文
posted @ 2018-07-09 16:38 liubiaos 阅读(291) 评论(0) 推荐(0)