<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[cjxunooo的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/cjxunooo</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; cjxunooo]]></copyright><item><title><![CDATA[Go语言学习资料]]></title><link>https://blog.youkuaiyun.com/cjxunooo/article/details/84998371</link><guid>https://blog.youkuaiyun.com/cjxunooo/article/details/84998371</guid><author>cjxunooo</author><pubDate>Fri, 14 Dec 2018 09:58:34 +0800</pubDate><description><![CDATA[Go 语言官方文档库：https://golang.org
其他学习资料也非常丰富：
许式伟 &amp;lt;Go语言编程&amp;gt;
谢孟军&amp;lt;Go Web编程&amp;gt;
雨痕&amp;lt;Go 语言学习笔记&amp;gt;（有Go运行机理源码解读）
《Effective Go》
《The Go Programming Language Specification》
github开源库

...]]></description><category></category></item><item><title><![CDATA[Goroutine channel机制]]></title><link>https://blog.youkuaiyun.com/cjxunooo/article/details/84994502</link><guid>https://blog.youkuaiyun.com/cjxunooo/article/details/84994502</guid><author>cjxunooo</author><pubDate>Thu, 13 Dec 2018 20:21:25 +0800</pubDate><description><![CDATA[channel结构是Goroutine间消息传递的基础，属于基本类型。 Goroutine基于Communicating Sequential Processes并发模型理论。
由count、sendx和recvx一同构成了一个环形buffer的状态域
1、任务 Go#1 向channel发送数据#1，此时channel的缓冲区是空的，并且没有正在阻塞的任务，则数据#1被拷贝到缓冲区，缓冲区指针后...]]></description><category></category></item><item><title><![CDATA[Go的机理- Green Thread模型、work stealing调度算法、非阻塞式IO]]></title><link>https://blog.youkuaiyun.com/cjxunooo/article/details/84994403</link><guid>https://blog.youkuaiyun.com/cjxunooo/article/details/84994403</guid><author>cjxunooo</author><pubDate>Thu, 13 Dec 2018 20:13:35 +0800</pubDate><description><![CDATA[Goroutine使用Green Thread模型（N:M 多个green threads运行在多个kernel threads ），既可以快速的进行context switch，又可以很好的利用多核，使用work stealing算法进行调度

模型：MPG三个角色，分别代表kernel threads，processor和goroutine。
调度：P负责完成对G和M的调度
1、P维护一个de...]]></description><category></category></item><item><title><![CDATA[Go语言语法简记]]></title><link>https://blog.youkuaiyun.com/cjxunooo/article/details/84994034</link><guid>https://blog.youkuaiyun.com/cjxunooo/article/details/84994034</guid><author>cjxunooo</author><pubDate>Thu, 13 Dec 2018 19:47:40 +0800</pubDate><description><![CDATA[Hello, World!
package main
import &quot;fmt&quot;
func main() {
    fmt.Println(&quot;Hello, World!&quot;)
}

数据类型

布尔型：bool
数字类型： int, int8~64, uint, uint8~64, float, float32, float64, complex64, complex128, byte, rune,...]]></description><category></category></item><item><title><![CDATA[我的编码过程]]></title><link>https://blog.youkuaiyun.com/cjxunooo/article/details/84987837</link><guid>https://blog.youkuaiyun.com/cjxunooo/article/details/84987837</guid><author>cjxunooo</author><pubDate>Thu, 13 Dec 2018 14:20:14 +0800</pubDate><description><![CDATA[编码原则
我比较推崇优秀编码中的SLAP原则和面向对象的SRP原则。

SLAP原则（单一抽象层次原则）的含义是：让一个方法中所有的操作处于相同的抽象层。符合SLAP原则的代码，阅读起来更流畅且易于理解。
SRP原则（单一职责原则）的含义是：一个类应该仅有一个引起它变化的原因。遵循SRP原则的好处是，减低了类的复杂性，提高了代码的可读性、可维护性。

我的编码过程主要借鉴了这2个原则的思想，形成了...]]></description><category></category></item><item><title><![CDATA[快速学习编程技术的链接]]></title><link>https://blog.youkuaiyun.com/cjxunooo/article/details/84987623</link><guid>https://blog.youkuaiyun.com/cjxunooo/article/details/84987623</guid><author>cjxunooo</author><pubDate>Thu, 13 Dec 2018 14:08:17 +0800</pubDate><description><![CDATA[菜鸟教程
http://www.runoob.com/
w3cschool
https://www.w3cschool.cn/
Java编程思想读书笔记
https://blog.youkuaiyun.com/leonliu06/article/details/78638841
Effective Java通俗理解
https://www.cnblogs.com/yulinfeng/archive/2017/...]]></description><category></category></item><item><title><![CDATA[外观模式、代理模式和中介者模式的区别]]></title><link>https://blog.youkuaiyun.com/cjxunooo/article/details/84985679</link><guid>https://blog.youkuaiyun.com/cjxunooo/article/details/84985679</guid><author>cjxunooo</author><pubDate>Thu, 13 Dec 2018 11:59:57 +0800</pubDate><description><![CDATA[外观模式（Facade Pattern）
定义一个外观类，外观类隐藏系统的复杂性，为客户端提供简化的方法和对现有系统类方法的委托调用。
例如：二手房交易的中介，属于外观模式。买房者通过中介可以简单地买到二手房，中介自己把联系房东看房砍价、过户、交税这些复杂的事情都搞定了。
代理模式（Proxy Pattern）
用一个代理类代表另一个类的功能，但是不改变被代理类的功能。目的是控制对被代理类的访问。...]]></description><category></category></item><item><title><![CDATA[简单理解设计模式]]></title><link>https://blog.youkuaiyun.com/cjxunooo/article/details/84985574</link><guid>https://blog.youkuaiyun.com/cjxunooo/article/details/84985574</guid><author>cjxunooo</author><pubDate>Thu, 13 Dec 2018 11:54:50 +0800</pubDate><description><![CDATA[前言
对接口编程而不是对实现编程。
优先使用对象组合而不是继承。
1、创建型模式
工厂模式（Factory Pattern）
通过工厂类创建产品类的实例。
简单工厂模式
只有一个工厂类，由这一个工厂类根据用户输入的条件来决定创建出哪一个产品类的实例。用户使用这一个工厂类并输入判断条件来创建相应的产品类实例。
工厂方法模式
有一个抽象工厂类(或接口)，多个具体工厂类继承(或实现)抽象工厂类。每个具体...]]></description><category></category></item><item><title><![CDATA[代码整洁之道]]></title><link>https://blog.youkuaiyun.com/cjxunooo/article/details/84985543</link><guid>https://blog.youkuaiyun.com/cjxunooo/article/details/84985543</guid><author>cjxunooo</author><pubDate>Thu, 13 Dec 2018 11:53:21 +0800</pubDate><description><![CDATA[任何一个傻瓜都能写出机器能懂的代码，好的程序员应该写出人能懂的代码”	
——Martin Fowler
“程序写出来是给人看的，附带能在机器上运行”
——Harold Abelson等人[SICP] 1985《计算机程序的结构与解释》
“编写程序首先为人，其次为计算机”
——Steve McConnell[M04, Section 34.3]
“随着年龄的增长，我逐渐意识到编程不仅仅是让程序运行而...]]></description><category></category></item><item><title><![CDATA[【转】UML类图几种关系的总结]]></title><link>https://blog.youkuaiyun.com/cjxunooo/article/details/84985505</link><guid>https://blog.youkuaiyun.com/cjxunooo/article/details/84985505</guid><author>cjxunooo</author><pubDate>Thu, 13 Dec 2018 11:51:53 +0800</pubDate><description><![CDATA[【转】UML类图几种关系的总结
https://blog.youkuaiyun.com/tianhai110/article/details/6339565

]]></description><category></category></item><item><title><![CDATA[面向对象设计与开发原则]]></title><link>https://blog.youkuaiyun.com/cjxunooo/article/details/84985449</link><guid>https://blog.youkuaiyun.com/cjxunooo/article/details/84985449</guid><author>cjxunooo</author><pubDate>Thu, 13 Dec 2018 11:50:12 +0800</pubDate><description><![CDATA[介绍
这里介绍了5个面向对象设计与开发原则–SOLID原则，分别是：单一职责原则、开放封闭原则、里氏替换原则、接口隔离原则、依赖倒置原则。另外还介绍了其他3个原则：迪米特法则、&quot;Tell, Don’t ask&quot;原则、单一抽象层次原则。在面向对象的程序设计和开发过程中时，这些原则非常重要，我们应该尽量去遵守它。


SRP（The Single Responsibility Principle）	单...]]></description><category></category></item><item><title><![CDATA[让眼睛去代码里旅行（代码检视的一些心得）]]></title><link>https://blog.youkuaiyun.com/cjxunooo/article/details/84968028</link><guid>https://blog.youkuaiyun.com/cjxunooo/article/details/84968028</guid><author>cjxunooo</author><pubDate>Wed, 12 Dec 2018 11:01:56 +0800</pubDate><description><![CDATA[一、前言
我一直相信，代码检视可以帮助开发人员，验证软件的所有功能，发现代码中的所有Bug。
我也一直认为，不断进行代码检视，是开发人员提升软件质量，提高工作效率最好的方法。
代码检视就是LLT测试，代码检视也是黑盒测试，当你的眼睛扫过代码行的同时，你的脑子在想着软件功能，这就是高效、活生生的功能测试。
另外，代码检视还能完成功能测试不能完成的事情：提高代码简洁性、可读性、低耦合、可维护性等。
下...]]></description><category></category></item><item><title><![CDATA[Python2语法简记（9）：异常处理]]></title><link>https://blog.youkuaiyun.com/cjxunooo/article/details/84967718</link><guid>https://blog.youkuaiyun.com/cjxunooo/article/details/84967718</guid><author>cjxunooo</author><pubDate>Wed, 12 Dec 2018 10:55:53 +0800</pubDate><description><![CDATA[9 异常处理
try…except…else语句
try:
    fh = open(&quot;testfile&quot;, &quot;w&quot;)
    fh.write(&quot;这是一个测试文件，用于测试异常!!&quot;)
except IOError:  # 可以带多种异常类型except(excep1, excep2)，或者不带任何异常类型
    print &quot;Error: 没有找到文件或读取文件失败&quot;
else:    #...]]></description><category></category></item><item><title><![CDATA[Python2语法简记（8）：类]]></title><link>https://blog.youkuaiyun.com/cjxunooo/article/details/84967587</link><guid>https://blog.youkuaiyun.com/cjxunooo/article/details/84967587</guid><author>cjxunooo</author><pubDate>Wed, 12 Dec 2018 10:53:21 +0800</pubDate><description><![CDATA[8 类
类变量（变量名前加 类名. 或cls. 或self.来访问）、实例变量（在实例方法中定义，变量名前加 self.来访问）、类方法、实例方法、静态方法
class Animal: # 类对象
age = 0 # 类变量
    def __init__(self, name): # 魔法方法
        self.name = name  # 实例变量

    def smile(se...]]></description><category></category></item><item><title><![CDATA[Python2语法简记（7）：函数]]></title><link>https://blog.youkuaiyun.com/cjxunooo/article/details/84967472</link><guid>https://blog.youkuaiyun.com/cjxunooo/article/details/84967472</guid><author>cjxunooo</author><pubDate>Wed, 12 Dec 2018 10:51:01 +0800</pubDate><description><![CDATA[7 函数：def printme(str1, str2):
def printme(str1, str2):
    &quot;打印传入的字符串&quot;         # 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。    
    print str1, str2    
    return str1, str2          # return只能返回一个值，可以是任何类型。写成这样...]]></description><category></category></item><item><title><![CDATA[Python2语法简记（6）：模块]]></title><link>https://blog.youkuaiyun.com/cjxunooo/article/details/84966896</link><guid>https://blog.youkuaiyun.com/cjxunooo/article/details/84966896</guid><author>cjxunooo</author><pubDate>Wed, 12 Dec 2018 10:40:49 +0800</pubDate><description><![CDATA[6 模块（Module）：就是一个python文件
Python 模块(Module)，是一个 Python 文件，以 .py 结尾。模块能定义函数，类和变量，模块里也能包含可执行的代码。
包：携带__init__.py文件的文件夹。不需要在.py文件中通过语句来声明自己属于哪个包
包就是文件夹，但该文件夹下必须存在 init.py 文件。通过包、子包来组织功能相近的模块。
不需要在模块中通过语句...]]></description><category></category></item><item><title><![CDATA[Python2语法简记（4、5）：条件语句、循环语句]]></title><link>https://blog.youkuaiyun.com/cjxunooo/article/details/84966762</link><guid>https://blog.youkuaiyun.com/cjxunooo/article/details/84966762</guid><author>cjxunooo</author><pubDate>Wed, 12 Dec 2018 10:36:37 +0800</pubDate><description><![CDATA[4 条件语句：if…elif…else，不支持switch
num = 5
if num == 3:            
    print 'boss'
elif num == 2: print 'user'  # 如果一个条件语句只有一条语句，可以用简单写法 
else:
    print 'roadman'     

不支持switch语句。
5 循环语句
while…else循环：...]]></description><category></category></item><item><title><![CDATA[Python2语法简记（3）：运算符]]></title><link>https://blog.youkuaiyun.com/cjxunooo/article/details/84966652</link><guid>https://blog.youkuaiyun.com/cjxunooo/article/details/84966652</guid><author>cjxunooo</author><pubDate>Wed, 12 Dec 2018 10:33:32 +0800</pubDate><description><![CDATA[3 运算符
支持运算符：算术、比较、赋值、逻辑、位、成员、身份
算术运算符
比较（关系）运算符
赋值运算符
逻辑运算符
位运算符
成员运算符
身份运算符
**算术运算符：+，-，，/，%，幂，//取整数
加+、减-、乘、除/、取模%
幂** -返回x的y次幂。例如：10**2为10的2次方
取整数// -返回商的整数部分（向下取整）。例如：9//2 为4，-9//2为-5
/ 和 // 的区别：如...]]></description><category></category></item><item><title><![CDATA[Python2语法简记（2）：变量类型]]></title><link>https://blog.youkuaiyun.com/cjxunooo/article/details/84966536</link><guid>https://blog.youkuaiyun.com/cjxunooo/article/details/84966536</guid><author>cjxunooo</author><pubDate>Wed, 12 Dec 2018 10:31:33 +0800</pubDate><description><![CDATA[2 变量类型
变量创建：用等号(=)赋值来创建变量。变量与类型无关，对象与类型有关。可以通过del删除变量。
在Python中只有对象才有类型，变量没有类型，通过等号（=）赋值来创建变量。
等号（=）前面的变量名与类型无关，等号（=）后面的值才是被创建的对象，变量名只是引用了该值对象的地址。同一变量名可以引用不同类型的对象。
多个变量之间用逗号 ,隔开
counter = 100 # 赋值整型变量...]]></description><category></category></item><item><title><![CDATA[Python2语法简记（1）：基础语法]]></title><link>https://blog.youkuaiyun.com/cjxunooo/article/details/84965434</link><guid>https://blog.youkuaiyun.com/cjxunooo/article/details/84965434</guid><author>cjxunooo</author><pubDate>Wed, 12 Dec 2018 10:11:04 +0800</pubDate><description><![CDATA[1 基础语法
一切皆对象：查看地址id(), 查看类型type(), 通过.访问属性
Python中一切皆对象。数字、字符串、元组、列表、字典、函数、方法、类、模块等等都是对象。
Python 中的一切都可以赋值给变量或者作为参数传递给函数。
Python 缓存了某些不变的对象对其进行复用，而不是每次创建新的对象。
Python 的所有对象都有三个特性：
身份：通过id()查看对象的内存地址
类型...]]></description><category></category></item></channel></rss>