摘要:多个线程在执行过程中会因为竞争同一个资源而产生线程冲突,造成死锁,从而引出线程锁这个概念 先拿到锁再执行业务操作: 当然我对这一块了解的还不透彻,只是了解在不加锁的多线程情况下,会破坏单例模式,所以就有了下面这一段 1 import time 2 import threading 3 4 5 def
阅读全文
摘要:SQL语句的执行顺序: 1、from:确定表的连接关系 2、where:对数据进行初步的筛选 3、group by:数据分组 4、having:对分组后数据进行筛选 5、select:结果输出 6、结果去重:distinct 7、排序:order by
阅读全文
摘要:抽象类:可以作为顶层基类,从高层次规范编程接口 1、在abc模块中,最常见的抽象类有Iterable,我们可以用他判断一个对象是不是可迭代对象 1 from collections.abc import Iterable 2 3 4 class Valley: 5 6 def __iter__(se
阅读全文
摘要:是一种针对有序集合的查找算法 在python中,有一个模块与之密切相关,就是bisect 1 import bisect 2 3 4 def func(): 5 a = [1, 5, 9] 6 bisect.insort(a, 6) 7 return a 8 9 10 if __name__ ==
阅读全文
摘要:继承: 强调类与类之间的关系 组合: 强调对象和对象之间的关系 清楚python支持多继承,从而涉及到一些MRO的点,这里不做赘述,在实际工作过程中,我们经常会使用继承来实现代码复用,如果仅仅是为了复用,还是比较推荐使用组合方式,因为继承方式,使得类与类之间的耦合性变得异常紧密,这多少违背了迪米特法
阅读全文
摘要:作用:随时修改代码 (在函数或类定义完成之后,再去修改函数的实现过程) """类似猴子补丁在函数定义好之后,再去更改他的行为"""import typesclass Valley: def func(self): return "等待宣告"def common(self): return "只有永不
阅读全文
摘要:数据校验的的专业工作请看pydantic 1 from pydantic import BaseModel, conint, ValidationError 2 3 4 class NumVerify(BaseModel): 5 # 限定范围 6 expected_number: conint(ge
阅读全文
摘要:生成器是一种特殊的迭代器,也可以说其父类型是迭代器 1、迭代器其实也有很多点要清楚,这里先不做赘述 2、要清楚,迭代器调用iter()返回的是自身 1 def func(s, e): 2 """ 3 生成器函数 4 :param s:起始值 5 :param e: 末值 6 :return: 7 "
阅读全文
摘要:控制子类的的创建 1、元类 这种方式可能是最常见的也是我们最先知晓的,当然这种方式可能需要我们对元类有比较深入的了解,所以引入了下面的这种方式 2、钩子函数 __init__subclass__,字面意思,父类实现了该双下方法,其后凡是继承他的派生类,都会触发此方法,进行派生类的初始化,实现派生类属
阅读全文
摘要:命题逻辑里的一个法则 定义:非p或非q=非(p且q) 最近在看一本书啊《python工匠......》一个腾讯大佬写的,从这里面了解到这个东西,确实不错 1 1 # 德摩根定律 2 2 def func(): 3 3 a = 10 4 4 b = 20 5 5 if not a < 5 or not
阅读全文
摘要:1、说明定义 error类型是一个接口类型 1 // 错误处理是一个接口类型 2 type error interface { 3 Error() string 4 } 2、example 1 package main 2 3 import ( 4 "errors" 5 "fmt" 6 ) 7 8
阅读全文
摘要:1、定义 type_name(expression) 2、example 1 package main 2 3 import ( 4 "fmt" 5 ) 6 7 func main() { 8 var a = 10 9 var b = 100 10 var res float32 11 //类型转换
阅读全文
摘要:1、定义 使用make()函数 map_variable := make(map[key_type][value_type]) 2、example 1 package main 2 3 import "fmt" 4 5 func main() { 6 //创建集合 7 set := make(map
阅读全文
摘要:1、说明 在python中,range函数会返回一个可迭代序列 在go语言中,range关键字同样用于for循环中对数组、切片、通道、集合等的迭代 2、example 1 package main 2 3 import "fmt" 4 5 func main() { 6 a := []int{2.0
阅读全文
摘要:切片是对数组的抽象,数组长度不可变,相反,切片长度是不固定的,是一种动态数组 1、定义 1.1、var slice_name []type 1.2、make函数 var slice_name []type = make([]type, len) 简写:slice_name := make([]typ
阅读全文
摘要:1、创建 使用关键字type、struct 数组内存储相同的数据类型,而结构体可以存储不同的数据类型 2、example 1 package main 2 3 import "fmt" 4 5 type person struct { 6 name string 7 gender string 8
阅读全文
摘要:看过之后,一句话:用于存储变量等的内存地址 1、定义 和定义变量和常量一样,在使用指针之前都需要声明 var point_name *type 2、example 1 package main 2 3 import "fmt" 4 5 func main() { 6 test7() 7 } 8 fu
阅读全文
摘要:1、定义 1、数组的长度是数组类型的一部分,所以一个数组不能动态改变长度 2、var variable_name[length] type 声明变量名-变量长度-变量类型 2、修改数组中元素 这一点其实是和python中列表的操作是一样的,都可以通过索引来访问 3、example 1 package
阅读全文
摘要:1、局部 在当前函数体内定义,作用域也仅限于在此函数内 2、全局 在函数外定义 1 package main 2 3 import "fmt" 4 5 //全局变量 6 var name = "g" 7 8 func main() { 9 //局部变量 10 var name = "c" 11 fm
阅读全文
摘要:简单函数的定义,形参可有可无,返回值可有可无 1 package main 2 3 import "fmt" 4 5 func main() { 6 res, res2 := test5() 7 fmt.Println(res + res2) 8 } 9 10 func test5() (strin
阅读全文
摘要:1 package main 2 3 import "fmt" 4 5 func main() { 6 var num int = 10 7 var num2 int = 20 8 for num < num2 { 9 fmt.Println(num) 10 break 11 } 12 13 }
阅读全文
摘要:一:if...else... 1 package main 2 3 import "fmt" 4 5 func main() { 6 var num = 10 7 var num2 = 20 8 res := test(num, num2) 9 fmt.Println(res) 10 } 11 12
阅读全文
摘要:运算符有: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 其他运算符
阅读全文
摘要:1、变量 和js声明类似,使用var关键字 比较简单,看了就会 1 func main() { 2 var a, b int 3 a, _ = 10, 12 4 fmt.Println(a, b) 5 var c int 6 fmt.Println(c) 7 var d bool 8 fmt.Pri
阅读全文
摘要:1、布尔 布尔型的值只可以是常量 true 或者 false。一个简单的例子:var b bool = true。不指定的话默认为false 2、数字 整型 int 和浮点型 float32、float64,Go 语言支持整型和浮点型数字,并且支持复数,其中位的运算采用补码。 3、字符串 字符串就是
阅读全文
摘要:1、注释 单行:// 多行:/* */ 2、字符串连接 + 3、变量声明 必须使用空格隔开 var name string 4、格式化字符串 格式化字符串并重新开辟内存,赋值给一个变量 1 package main 2 3 import "fmt" 4 5 const flag = "冷静" 6 7
阅读全文
摘要:昨天我把go的入门知识,走马观花了一遍,看到结构体的时候,我一看,很像python面向对象中的类,然后今天我还特意百度了下,我就想先知道go到底是面向对象的还是面向过程的,结果说法不一,有说是面向过程的,还有的说既不是面向对象,也不是面向过程的,我懵了,后面深入学习后再看看,先入入门 1、go基础组
阅读全文
摘要:最近看了下go,然后就着手去搞了 1、激活goland 下载goland,goland也是可以激活的,在网上找了一大堆教程(有个码农网可以一看) 2、配置goland 2.1、配置goroot 下载SDK,网址可以自行去找 2.2、配置gopath 新建一个工作空间,后面所有的项目都放在里面,需要新
阅读全文