- 博客(50)
- 收藏
- 关注
原创 golang 使用redis
sort set key:["score":value] 集合会根据score的值进行排序。list类型 key:[value,value] 可以存储重复元素,存储方式按顺序。set类型 key:[value,value] 不能存储重复元素,存储方式随机。hash类型 collect:[key:value,key:value]1.string 字符串。2.redis五种数据类型。3.redis的常用命令。3.redis的常用命令。2.建立连接和使用方法。
2024-03-26 12:39:08
608
原创 golang 使用protobuf
2.生成protoc的js文件到目录 npx pbjs -t json-module -w commonjs -o src/chat/proto/proto.js src/chat/proto/*.proto src/chat/proto/proto.js 是生成的文件的目录路径及其文件名称 src/chat/proto/*.proto 是自己写的字段等。生成命令protoc --gogo_out=. ./*.proto 当前目录下的协议输出到当前。2.安装库文件 二选一。
2024-03-25 15:57:06
388
1
原创 git出现fatal: could not read Username for ‘https://git.xxx.com‘: Device not configured
改后:http://username@[git地址] 例子:https://username@gitee.com/username/projectNamet.git。例子:改前:http://[git地址] 例子:https://gitee.com/username/projectNamet.git。将项目的.git/config的remote url 改成https://username@[git地址]然后push代码输入用户名密码,也可以在链接中带入密码。
2023-04-17 16:04:38
12376
原创 GO语言小锤硬磕.二十一 协程与锁
一个进程中至少有一个线程,我们称为主线程。一个线程中可以有任意多额协程,但在某一刻只能有一个协程在运行,多个协程分享所在线程分配到的计算机资源。这样就实现资源同步,但是避免资源竞争的同时也降低了程序的并发性能,程序由原来的并发执行变成了串行。在协程中,调用一个任务就像调用一个函数一样,消耗极少的资源,但能达到进程、线程相同的并发效果。进程:是程序在操作系统中的一次执行过程,是系统进行资源分配调度的基本单位。线程:是进程中的一个执行实例,是程序执行的最小单元。并发:是伪并行,是有选择的串行。
2023-04-10 15:45:26
562
原创 GO语言小锤硬磕、二十 字符串处理方法
如果字符串中包含中文,又想紧缺的计算字符串中字符的个数而不是占用的字节,那么必须先将字符串转换为rune类型的数组。Go语言的编码是UTF-8,在UTF-8中一个汉字占3个字节。2.查找子串在字符串中出现的位置。3.判断字符串是否包含子串。
2023-03-30 16:39:54
274
原创 GO语言小锤硬磕.十九 异常处理、中断程序、恢复程序
触发panic中断执行后,需要恢复程序,让程序继续之心,并且记录到底犯了什么错误。通过defer和recover来实现panic异常的捕获,让程序继续执行。go语言提供了一个叫panic函数,用于发生异常时终止程序继续运行。3.异常写在defer中,那么只有defer中的异常会被捕获。1.异常会沿调用堆栈向外传递,也可以在外层捕获。1.程序发生异常时,将异常信息反馈给使用者。2.程序发生异常时,立即退出终止程序运行。GO语言提供了两种处理异常的方式。2.多个异常只有第一个会被捕获。
2023-03-29 16:29:38
351
原创 GO语言小锤硬磕.十八 类和面向对象
go语言坚持“组合优于继承”的原则,所谓的继承其实是利用结构体的组合实现的(匿名结构体属性)将成员变量隐藏起来,通过set和get方法实现对成员变量的访问,提高安全性和灵活性。多态简化了编程接口,允许类和类之间重用一些习惯性的命名,不用为每个新的方法命名新名字。(go语言的多态采用接口来实现,类实现了接口的所有方法,就可以通过接口类传递结构体类)无论是属性还是方法继承,都只能子类访问父类,不能父类访问子类。封装(类是数据与功能的封装,数据是成员白能量,功能是方法)猫-》动物 狗-》动物。
2023-03-25 11:01:17
373
原创 GO语言小锤硬磕.十七 接口
go语言中的接口和现实生活中的USB插槽很像,它定义某种标准,但不关心具体实现。type 接口名称 interface{和结构体一样,接口也可以嵌入接口。
2023-03-24 17:42:06
129
原创 GO语言小锤硬磕.十六 指针
go语言中的方法一般用于将函数和结构体绑定在一起,让结构体除了能够保存数据外,还能够具备某些行为。go语言的方法其实就是一个特殊的函数,只不过这个函数是和某种属性类似绑定在一起而已。只需要在函数名称前面加上(接受者 数据类型)即可将函数和某种数据类型绑定一起。不能将函数内的指向局部变量的指针作为返回值,函数结束指向空间会被释放。方法的数据类型也是函数类型,所以可以定义变量保存(作为参数返回值等)可以将函数内部的局部变量作为返回值,本质是拷贝一份。go语言的指针(32位4个字节,64位8个字节)
2023-03-24 15:23:20
239
原创 GO语言小锤硬磕.十五 结构体
任何有命名的数据类型都可以作为匿名属性(int、float、bool、string、struct)只有属性名、属性类型、属性个数、排列顺序都相同的结构体类型才能转换。先定义结构体类型,再利用结构体类型定义结构体变量。属性名、属性类型、属性个数、排列顺序都是类型组成部分。没有指定属性名称,只有属性的类型,我们称为匿名属性。type 类型名称 struct{属性名称 属性类型。属性名称 属性类型。用来保存一组不同类型的数据。
2023-03-23 15:16:11
88
原创 GO语言小锤硬磕.十四 map(字典、映射)
切片通过索引来获取对应元素,索引从0开始递增,但map通过key来获取对应的元素,key需要我们自己指定。=判断的数据类型都可以作为key(数值类型、字符串、数组、指针、结构体、接口)map的key的数据类型不能是:slice、map、function。map格式:var 变量名称 map[key的数据类型]value数据类型。map和切片一样的容量不固定,容量不足会自动扩容。map翻译过来就是字典或者映射,可以把map看做是切片的升级版。切片和map都用来存储一组相同类型的数据。
2023-03-23 10:40:27
111
转载 go切片与数组的关系—修改切片导致数组被修改的问题
可以看到添加333时还没有超出切片A的容量,所以333还在数组D上做修改,而添加332时已经超出了A的容量,A换了一个新的数组(现有数据0、1、2、333复制过去),并且在新数组添加332,而不影响原来的数组D。下面的代码,先修改,修改发生在形参slice的底层数组上,也是实参slice的底层数组。可以看到A因为预设了[0:3:3]的原因,容量只有3,当前已满,再增加一个333,就切换了新的数组,所以A的修改只体现在自身,对B、数组D都没有影响。只要append就会切换到新的底层数组,不影响原来的数组。
2023-03-23 09:32:19
363
原创 GO语言小锤硬磕十三、数组与切片
可以简单理解为长度可以变化的数组,但是go语言的切片本质上是结构体,用来解决数组在应用中长度不可变的问题。相同,在比较时会按照“对应索引的元素”进行比较,所有元素都相同返回true,否则返回false。len int //切片长度(已经保存了多少个元素)go语言的数组是值类型,赋值和传参会复制整个数组。下一篇转载 修改切片导致数组被修改的问题深入 讲解。的数据,go语言数组也分一维数组和多维数组。的一部分,长度不同类型不同,不能比较。直接上代码看一下一维数组特性。
2023-03-23 09:31:57
236
原创 GO语言小锤硬磕十二、init函数和defer延迟调用关键词
先按层级import 包,从最后引入包中加载常量、变量、init(),返回上级包 继续执行 加载常量、变量、init()无论在函数内什么地方注册defer 语句,他都会在所属函数执行完毕后才会执行,并且如果注册了多个的defer语句,他们会按照。main包 --> 常量 -->全局变量 --> init函数 --> main函数 -->exit。package main 必须包含一个main 函数,但是每个package中的init函数都是可选的。函数(能够应用于所有的package)后进先出(先进后出)
2023-03-22 09:46:08
228
原创 GO语言小锤硬磕十一.匿名函数和闭包
匿名函数可以定义在函数外(全匿名函数),也可以定义在函数内(局部匿名函数),GO语言的普通函数不能嵌套定义,但是可以通过匿名函数来实现函数的嵌套定义。一般情况很少使用全局匿名函数,大多数情况都是使用局部匿名函数,匿名函数可以直接调用、保存到变量、作为参数或者返回值。普通函数的函数名是固定的,匿名函数的函数名称是系统随机的。当某个函数只需要调用一次时,可以使用匿名函数。是一个特殊的匿名函数,他是匿名函数和相关引用环境组成的整体。是函数的一种,格式和普通函数一样,只是定义时没有函数名。
2023-03-21 12:52:03
137
原创 GO语言小锤硬磕十、值传递和引用传递
go语言的值类型有:int系列、float系列、bool、string、数组、结构体。在函数体内修改值类型参数,不会影响到函数外的值。Go语言 引用类型:指针、slice、map、channel。函数体内修改引用类型参数,会影响到函数外的值。引用类型作为函数参数传递,是引用传递。值类型作为函数参数传递,是拷贝传递。引用类型通常在堆中分配存储空间。值类型通常在栈中分配存储空间。
2023-03-20 17:47:08
129
原创 GO语言小锤硬磕八.流程控制
高级的for循环结构 for... range 循环,可以快速对字符串、数组、slice、map、channel遍历。标签后只能跟switch和循环语句,不能插入其他语句。可以再case语句块后面添加fallthrough,实现case穿透。go语言的流程控制:顺序结构、选择结构(if、switch)、循环结构(for)一个case后面可以有多个表达式,满足其中一个就算匹配。2)continue 语句 立即进入下一次循环,可以指定标签。case表达式的值不一定要是常量,甚至可以不用传递。
2023-03-20 11:30:47
112
原创 GO语言小锤硬磕七_运算符
3)GO语言支持字符串+拼接 var str1 string ="xiaoming"+"xiaoli"2)自增,自减不支持前置,且他们是表达式,必须单独一行。a= i++错误 return i-- 错误。3.逻辑运算符 && ||!(逻辑非只能用于true或false)1)相同类型的数据才能运算。包括赋值,算术,关系。2.关系运算符(返回true 或 false)注意 指针类型只支持相等运算,不能做加减运算。
2023-03-19 00:22:16
72
原创 GO语言小锤硬磕六.获取命令行参数
1.虽然os可以获取参数,但是如果代码中定义了获取参数,但是执行命令时没传会报错,flag有默认值不传会使用默认值。package main包中包含main函数的文件,被称为命令文件。命令文件会执行编译检查,生成可执行文件,放到$GOPATH/bin。非命令文件执行编译检查,生成.a结尾的包,放到$GOPATH/pkg。命令文件编译检查,在当前目录下生成一个可执行文件。非命令文件执行编译检查,不会产生文件。go run 命令文件 编译并运行go程序。go env 查看当前go的环境变量。
2023-03-18 23:39:52
519
原创 GO语言小锤硬磕五.输出、输入、获取命令行参数
func Scanf(format string,a ...interface{})(n int,err error) 用法和C语言几乎一模一样,但智能输入一行。func Scanln(a ...interface{})(n int,err error)//不用指定格式化数字,只能输入一行。func Scan(a ...interface{})(n int,err error)//不用指定格式化字符串。可以使用占位符-------------------- %v可以打印所有的类型。
2023-03-18 22:51:10
451
原创 GO语言小锤硬磕四_数据类型转换
1)强调GO语言不能够通过“ 数据类型(变量)" 的格式将"数值" 和 “字符串”互转。可以从大类型转换为小类型,可能会丢失精度。也可以从小类型转换为大类型。2)数值类型转字符 strconv.Format****3)字符串转数值类型 strconv.Parse***数据类型(需要转换的数据)2.数值类型和字符串之间传统转换。3.整型与字符串快速转换。1.数值类型之间的转换。
2023-03-17 15:48:05
98
原创 Go语言入门三.局部变量、全局变量、常量
2)常量组中如果上一行常量有初始值,但是下一行没有,那么下一行会赋值上一行的值。生命周期:从程序运行到定义哪一行开始分配存储空间到程序离开该变量所在的作用域。在同一常量组中,只要上一行出现了iota,后续会自动递增。GO语言常量分为:整型常量、实型常量、字符常量、字符串常量、自定义常量。在同一个常量组中,如果iota被中断,那么必须显示恢复。iota也支持常量组+多重赋值,在同一行iota值相同。const 常量名1,常量名2 int =值1,值2。在同一个常量组中,iota从0开始递增,每行递增1。
2023-03-15 16:53:59
784
原创 Go语言入门二.变量定义和注意要点
8)定义的局部变量或者导入的包没有被使用,那么编译器会报错,无法编译运行,但是定义的全局变量没有被使用编译器不会报错,可以编译运行。7)通过:=同时定义多个变量,只要任意一个变量没有定义过都会做退化赋值操作。4)使用:=定义变量时,不能指定var关键字和数据类型。6)使用:=同时定义多个变量,必须给所有变量初始化。3):=只能用于定义局部变量,不能定义全局变量。var 变量名 数据类型 = 值。可以定义时赋值,也可以先定义后赋值。5)变量组不能使用:=1.go语言定义变量的三种格式,
2023-03-15 14:58:14
173
原创 Go入门一:数据类型总览
派生类型:指针类型、数组、切片、Map、结构体、管道、函数、接口。基础类型:数值(整型、浮点型)、字符、布尔、字符串。go语言的数据类型主要分为基础类型和派生类型。go语言数据类型占用内存空间。
2023-03-15 11:29:29
90
转载 linux安装配置SVN并设置钩子
安装说明系统环境:CentOS-6.3安装方式:yum install (源码安装容易产生版本兼容的问题)安装软件:系统自动下载SVN软件检查已安装版本#检查是否安装了低版本的SVN1rpm -qa subversion#卸载旧版本SVN1
2016-11-23 12:05:37
1630
原创 黑马程序员——Objective-C学习之NSDate\NSData
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------一、NSDate1> NSDate是用于处理日期和时间的基础类;2> 常用方法:获取当前的日期和时间:+ (instancetype)date; // 它是一个自动释放的对象获取与当前时间间隔一定时差的日期:+ (instancetype)dateWithTimeIn
2015-03-19 20:17:31
388
原创 黑马程序员——Objective-C学习之NSNumber\NSValue\NSNull
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------一、NSNumber1> 可以使用对象来封装基本数值;2> NSNumber类可以包装基本数据类型,还包括无符号版本和各种long型数据及long long整型数据;3> 常用方法:NSNumber类包装基本数据类型:+ (NSNumber *)numberWithChar
2015-03-19 20:17:10
335
原创 黑马程序员——Objective-C学习之遍历字典
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------一、遍历整个字典1> 利用for循环遍历整个字典:创建一个字典:NSDictionary *dict = @{@"name" : @"jack", @"age" : @10, @"no" : @5};利用for循环遍历整个字典中的键值对:NSArray *key = [d
2015-03-19 20:12:09
440
原创 黑马程序员——Objective-C学习之不可变与可变字典(NSDictionary\NSMutableDictionary)
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------一、NSDictionary1> NSDictionary(字典)通常在给定一个关键字(通常是一个NSString字符串)下存储一个数值(可以是任何类型的对象)。然后你可以使用这个关键字查找相应的数值;2> NSDictionary里面存储的是键值对,key----->value;
2015-03-18 18:40:59
337
原创 黑马程序员——Objective-C学习之无序集合(NSSet\NSMutableSet)
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------一、NSSet1> NSSet是一组单值对象的不可变集合,集合中元素没有顺序;2> 操作包括:搜索、添加、删除集合中的元素(仅用于可变集合)、比较两个集合,计算两个集合的交集和并集等。3> 常用方法:使用一系列对象创建新集合:+ (instancetype)setWithO
2015-03-18 18:31:17
422
原创 黑马程序员——Objective-C学习之不可变与可变集合(NSArray\NSMutableArray)
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------一、NSArray1> NSArray是一个集合类,相当于是OC数组。用来存储对象的有序列表;以面向对象操纵数组;只能存放OC对象类型,不能存放基本数据类型,同时也不能存储nil(对象的零值或NULL值);NSArray是不可变数组。 2> 常用方法:创建一个新
2015-03-18 18:28:37
481
原创 黑马程序员——Objective-C学习之不可变与可变字符串(NSString\NSMutableString)
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------一、NSString1> 表示字符串的类NSString创建的类对象包含了指向超类的指针、类名和指向类方法的列表的指针。类对象还包含一个long的数据,为新创建的类对象指定大小。 2> 常用方法返回字符串中的字符的个数:unsigned int length = [@"
2015-03-18 18:23:15
312
原创 黑马程序员——Objective-C学习之从手动内存管理到ARC机制
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------一、基本原理1.内存管理内存管理管理范围:任何继承了NSObject的对象,对其他基本数据类型(int、char、float、double、struct、enum等)无效;栈:放局部变量,会自动回收;堆:放一些动态产生的。 2.对象的基本结构每个OC对象都有自己的引
2015-03-18 18:08:16
538
原创 黑马程序员——Objective-C学习之@property @synthesize和id及点语法
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------一、@property @synthesize关键字这两个关键字是编译器特性,让xcode可以自动生成getter和setter的声明和实现。 1. @property 关键字@property 关键字可以自动生成某个成员变量的setter和getter方法的声明@prop
2015-03-14 14:27:06
479
原创 黑马程序员——Objective-C学习之类的继承
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------一、继承1. 继承的基本用法1> 设计两个类Bird、Dog// Bird的声明@interface Bird : NSObject{ @public int weight;}- (void)eat;@end// Bird的定义@im
2015-03-14 14:19:15
543
原创 黑马程序员——Objective-C学习之set方法和get方法
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------一、set方法和get方法1. set方法和get方法的使用场合@public的成员可以被随意赋值,应该使用set方法和get方法来管理成员的访问(类似机场的安检、水龙头过滤,过滤掉不合理的东西),比如僵尸的生命值不能为负数 2. set方法1> 作用:用来设置成员变量,可
2015-03-14 14:15:05
853
unity ngui-next-gen-ui 2022.06.08 -2022.05.13-2021.11.30合集
2023-03-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人