- 博客(25)
- 收藏
- 关注
原创 Go语言学习资料
Go 语言官方文档库:https://golang.org 其他学习资料也非常丰富: 许式伟 <Go语言编程> 谢孟军<Go Web编程> 雨痕<Go 语言学习笔记>(有Go运行机理源码解读) 《Effective Go》 《The Go Programming Language Specification》 github开源库 ...
2018-12-14 09:58:34 223
原创 Goroutine channel机制
channel结构是Goroutine间消息传递的基础,属于基本类型。 Goroutine基于Communicating Sequential Processes并发模型理论。 由count、sendx和recvx一同构成了一个环形buffer的状态域 1、任务 Go#1 向channel发送数据#1,此时channel的缓冲区是空的,并且没有正在阻塞的任务,则数据#1被拷贝到缓冲区,缓冲区指针后...
2018-12-13 20:21:25 241
原创 Go的机理- Green Thread模型、work stealing调度算法、非阻塞式IO
Goroutine使用Green Thread模型(N:M 多个green threads运行在多个kernel threads ),既可以快速的进行context switch,又可以很好的利用多核,使用work stealing算法进行调度 模型:MPG三个角色,分别代表kernel threads,processor和goroutine。 调度:P负责完成对G和M的调度 1、P维护一个de...
2018-12-13 20:13:35 658
原创 Go语言语法简记
Hello, World! package main import "fmt" func main() { fmt.Println("Hello, World!") } 数据类型 布尔型:bool 数字类型: int, int8~64, uint, uint8~64, float, float32, float64, complex64, complex128, byte, rune,...
2018-12-13 19:47:40 309
原创 我的编码过程
编码原则 我比较推崇优秀编码中的SLAP原则和面向对象的SRP原则。 SLAP原则(单一抽象层次原则)的含义是:让一个方法中所有的操作处于相同的抽象层。符合SLAP原则的代码,阅读起来更流畅且易于理解。 SRP原则(单一职责原则)的含义是:一个类应该仅有一个引起它变化的原因。遵循SRP原则的好处是,减低了类的复杂性,提高了代码的可读性、可维护性。 我的编码过程主要借鉴了这2个原则的思想,形成了...
2018-12-13 14:20:14 1221
原创 快速学习编程技术的链接
菜鸟教程 http://www.runoob.com/ w3cschool https://www.w3cschool.cn/ Java编程思想读书笔记 https://blog.csdn.net/leonliu06/article/details/78638841 Effective Java通俗理解 https://www.cnblogs.com/yulinfeng/archive/2017/...
2018-12-13 14:08:17 383
原创 外观模式、代理模式和中介者模式的区别
外观模式(Facade Pattern) 定义一个外观类,外观类隐藏系统的复杂性,为客户端提供简化的方法和对现有系统类方法的委托调用。 例如:二手房交易的中介,属于外观模式。买房者通过中介可以简单地买到二手房,中介自己把联系房东看房砍价、过户、交税这些复杂的事情都搞定了。 代理模式(Proxy Pattern) 用一个代理类代表另一个类的功能,但是不改变被代理类的功能。目的是控制对被代理类的访问。...
2018-12-13 11:59:57 7594
原创 简单理解设计模式
前言 对接口编程而不是对实现编程。 优先使用对象组合而不是继承。 1、创建型模式 工厂模式(Factory Pattern) 通过工厂类创建产品类的实例。 简单工厂模式 只有一个工厂类,由这一个工厂类根据用户输入的条件来决定创建出哪一个产品类的实例。用户使用这一个工厂类并输入判断条件来创建相应的产品类实例。 工厂方法模式 有一个抽象工厂类(或接口),多个具体工厂类继承(或实现)抽象工厂类。每个具体...
2018-12-13 11:54:50 191
原创 代码整洁之道
任何一个傻瓜都能写出机器能懂的代码,好的程序员应该写出人能懂的代码” ——Martin Fowler “程序写出来是给人看的,附带能在机器上运行” ——Harold Abelson等人[SICP] 1985《计算机程序的结构与解释》 “编写程序首先为人,其次为计算机” ——Steve McConnell[M04, Section 34.3] “随着年龄的增长,我逐渐意识到编程不仅仅是让程序运行而...
2018-12-13 11:53:21 274 1
转载 【转】UML类图几种关系的总结
【转】UML类图几种关系的总结 https://blog.csdn.net/tianhai110/article/details/6339565
2018-12-13 11:51:53 126
原创 面向对象设计与开发原则
介绍 这里介绍了5个面向对象设计与开发原则–SOLID原则,分别是:单一职责原则、开放封闭原则、里氏替换原则、接口隔离原则、依赖倒置原则。另外还介绍了其他3个原则:迪米特法则、"Tell, Don’t ask"原则、单一抽象层次原则。在面向对象的程序设计和开发过程中时,这些原则非常重要,我们应该尽量去遵守它。 SRP(The Single Responsibility Principle) 单...
2018-12-13 11:50:12 777
原创 让眼睛去代码里旅行(代码检视的一些心得)
一、前言 我一直相信,代码检视可以帮助开发人员,验证软件的所有功能,发现代码中的所有Bug。 我也一直认为,不断进行代码检视,是开发人员提升软件质量,提高工作效率最好的方法。 代码检视就是LLT测试,代码检视也是黑盒测试,当你的眼睛扫过代码行的同时,你的脑子在想着软件功能,这就是高效、活生生的功能测试。 另外,代码检视还能完成功能测试不能完成的事情:提高代码简洁性、可读性、低耦合、可维护性等。 下...
2018-12-12 11:01:56 2249
原创 Python2语法简记(9):异常处理
9 异常处理 try…except…else语句 try: fh = open("testfile", "w") fh.write("这是一个测试文件,用于测试异常!!") except IOError: # 可以带多种异常类型except(excep1, excep2),或者不带任何异常类型 print "Error: 没有找到文件或读取文件失败" else: #...
2018-12-12 10:55:53 210
原创 Python2语法简记(8):类
8 类 类变量(变量名前加 类名. 或cls. 或self.来访问)、实例变量(在实例方法中定义,变量名前加 self.来访问)、类方法、实例方法、静态方法 class Animal: # 类对象 age = 0 # 类变量 def __init__(self, name): # 魔法方法 self.name = name # 实例变量 def smile(se...
2018-12-12 10:53:21 193
原创 Python2语法简记(7):函数
7 函数:def printme(str1, str2): def printme(str1, str2): "打印传入的字符串" # 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。 print str1, str2 return str1, str2 # return只能返回一个值,可以是任何类型。写成这样...
2018-12-12 10:51:01 184
原创 Python2语法简记(6):模块
6 模块(Module):就是一个python文件 Python 模块(Module),是一个 Python 文件,以 .py 结尾。模块能定义函数,类和变量,模块里也能包含可执行的代码。 包:携带__init__.py文件的文件夹。不需要在.py文件中通过语句来声明自己属于哪个包 包就是文件夹,但该文件夹下必须存在 init.py 文件。通过包、子包来组织功能相近的模块。 不需要在模块中通过语句...
2018-12-12 10:40:49 144
原创 Python2语法简记(4、5):条件语句、循环语句
4 条件语句:if…elif…else,不支持switch num = 5 if num == 3: print 'boss' elif num == 2: print 'user' # 如果一个条件语句只有一条语句,可以用简单写法 else: print 'roadman' 不支持switch语句。 5 循环语句 while…else循环:...
2018-12-12 10:36:37 283
原创 Python2语法简记(3):运算符
3 运算符 支持运算符:算术、比较、赋值、逻辑、位、成员、身份 算术运算符 比较(关系)运算符 赋值运算符 逻辑运算符 位运算符 成员运算符 身份运算符 **算术运算符:+,-,,/,%,幂,//取整数 加+、减-、乘、除/、取模% 幂** -返回x的y次幂。例如:10**2为10的2次方 取整数// -返回商的整数部分(向下取整)。例如:9//2 为4,-9//2为-5 / 和 // 的区别:如...
2018-12-12 10:33:32 604
原创 Python2语法简记(2):变量类型
2 变量类型 变量创建:用等号(=)赋值来创建变量。变量与类型无关,对象与类型有关。可以通过del删除变量。 在Python中只有对象才有类型,变量没有类型,通过等号(=)赋值来创建变量。 等号(=)前面的变量名与类型无关,等号(=)后面的值才是被创建的对象,变量名只是引用了该值对象的地址。同一变量名可以引用不同类型的对象。 多个变量之间用逗号 ,隔开 counter = 100 # 赋值整型变量...
2018-12-12 10:31:33 210
原创 Python2语法简记(1):基础语法
1 基础语法 一切皆对象:查看地址id(), 查看类型type(), 通过.访问属性 Python中一切皆对象。数字、字符串、元组、列表、字典、函数、方法、类、模块等等都是对象。 Python 中的一切都可以赋值给变量或者作为参数传递给函数。 Python 缓存了某些不变的对象对其进行复用,而不是每次创建新的对象。 Python 的所有对象都有三个特性: 身份:通过id()查看对象的内存地址 类型...
2018-12-12 10:11:04 162
原创 Python2语法简记
1 基础语法 一切皆对象:查看地址id(), 查看类型type(), 通过.访问属性 单行注释:采用 # 开头 多行注释:使用三个单引号(’’’)或三个双引号(""") 标示符:区分大小写,以下划线开头进行访问控制 代码块:不用;和{},用缩进 字符串:单、双、三引号都可以 Print 输出:各种变量都可以输出,格式化输出与C语言类似 2 变量类型 变量创建:用等号(=)赋值来创建变量。变量与类型...
2018-12-12 10:06:42 211
原创 三种工厂模式的区别
简单工厂模式 只有一个工厂类,由这一个工厂类根据用户输入的条件来决定创建出哪一个产品类的实例。用户使用这一个工厂类并输入判断条件来创建相应的产品类实例。 工厂方法模式 有一个抽象工厂类(或接口),多个具体工厂类继承(或实现)抽象工厂类。每个具体工厂类只能创建一个具体产品类的实例。由用户决定使用哪个具体工厂类来创建对应的产品类实例。 抽象工厂模式 对工厂方法模式进行了扩展,区别是:工厂方法模式中每个...
2018-12-11 19:44:53 1181
原创 Maven
Maven 是一个项目管理工具,可以对 Java,C#,Ruby,Scala 和其他语言编写的项目进行构建、依赖管理。 Maven 仓库 Maven 仓库是项目中依赖的第三方库所存放的位置。Maven 仓库有三种类型: 本地(local):默认在user.home/.m2/repository目录,可以在{user.home}/.m2/repository目录,可以在user.home/.m2/...
2018-12-10 20:29:47 144
原创 Eclipse快捷键
1 查看 Ctrl+Shift+R:打开资源(类,文件) Ctrl+Shift+T:搜索类(包括工程和关联的第三jar包) Ctrl+E:下拉列出所有已经打开的编辑文件 F4:打开类型层次结构 Ctrl+G:列出所选标示符在工作区中的声明 Ctrl+Shift+G:列出所选标示符在工作区中的引用 Ctrl+Shift+U:列出所有包含字符串的行 Ctrl+H:打开搜索,搜索关键字 Ctrl+(Sh...
2018-12-10 20:25:55 102
原创 Java内部类
成员内部类:定义在外部类成员区。 静态内部类: 可以单独实例化,不依赖外部类先实例化。 静态内部类访问外部类成员和方法时,只能访问外部类的静态成员和静态方法。 非静态内部类: 可以直接访问外部类的成员。 不能有静态成员变量和静态方法。因为: 要想使用某个类的static属性和方法,那么这个类必须要加载到虚拟机中。 非静态内部类并不随外部类一起加载,只有在实例化外部类之后才会加载。 局部内部类:定义...
2018-12-10 19:50:41 69
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人