随笔分类 -  Golang

上一页 1 ··· 3 4 5 6 7 8 下一页
摘要:二者区别: break:退出所有的循环 break用于完全结束一个循环,跳出循环体执行循环后面的语句。 continue:跳出当前的一次循环 continue只是终止本次循环剩下的语句,接着执行下一次循环。 共同点: break和continue都是用来控制循环结构的,主要是停止循环。 阅读全文
posted @ 2023-04-28 20:12 李若盛开 阅读(164) 评论(0) 推荐(0) 编辑
摘要:获取时间对象 package main import ( "fmt" "time" ) // 24小时制 const LAYOUT = "2006-01-02 15:04:05" //只能用这个日期,据说这是golang的诞生时间 func main() { // 获取当前日期 now := tim 阅读全文
posted @ 2023-04-26 09:22 李若盛开 阅读(320) 评论(0) 推荐(0) 编辑
摘要:package main import ( "fmt" "gorm.io/driver/mysql" "gorm.io/gorm" ) type Product struct { gorm.Model Code string Price uint } func main() { dsn := "ro 阅读全文
posted @ 2023-04-17 16:13 李若盛开 阅读(20) 评论(0) 推荐(0) 编辑
摘要:函数式选项模式(Functional Options Pattern) 函数式选项模式是一种在 Go 中构造结构体的模式,它通过设计一组非常有表现力和灵活的 API 来帮助配置和初始化结构体。 优缺点 优点: (1)支持传递多个参数并且在参数发生变化时保持兼容性; (2)支持任意顺序传递参数; (3 阅读全文
posted @ 2023-04-16 17:08 李若盛开 阅读(238) 评论(0) 推荐(0) 编辑
摘要:函数式选项模式(Functional Options Pattern) Option模式的专业术语为:Functional Options Pattern(函数式选项模式)Option模式为golang的开发者提供了将一个函数的参数设置为可选的功能,也就是说可以选择参数中的某几个,并且可以按任意顺序 阅读全文
posted @ 2023-04-16 16:53 李若盛开 阅读(98) 评论(0) 推荐(0) 编辑
摘要:1)安装chocolatey: Windows PowerShell 使用管理员身份 运行 官网下载:https://chocolatey.org/install Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.Servic 阅读全文
posted @ 2022-09-16 16:30 李若盛开 阅读(446) 评论(0) 推荐(0) 编辑
摘要:区分类型别名与类型定义 定义类型别名的写法为: type TypeAlias = Type 类型别名规定:TypeAlias 只是 Type 的别名,本质上 TypeAlias 与 Type 是同一个类型,就像一个孩子小时候有小名、乳名,上学后用学名,英语老师又会给他起英文名,但这些名字都指的是他本 阅读全文
posted @ 2022-09-16 12:56 李若盛开 阅读(187) 评论(0) 推荐(0) 编辑
摘要:底层结构 使用哈希表作为底层实现 一个哈希表里可以有多个哈希表节点,也叫bucket(哈希桶) 每个bucket就保存了map中的一个或一组键值对 哈希冲突 当有两个或以上数量的键被哈希到了同一个bucket时,就称这些键发生了冲突 Go使用链地址法来解决键冲突【具体操作就是插入key到map中时, 阅读全文
posted @ 2022-05-13 11:30 李若盛开 阅读(82) 评论(0) 推荐(0) 编辑
摘要:函数和方法是我们迈向代码复用、多人协作开发的第一步。通过函数,可以把开发任务分解成一个个小的单元,这些小单元可以被其他单元复用,进而提高开发效率、降低代码重合度。再加上现成的函数已经被充分测试和使用过,所以其他函数在使用这个函数时也更安全,比你自己重新写一个相似功能的函数 Bug 率更低。 这节课, 阅读全文
posted @ 2022-05-07 18:08 李若盛开 阅读(191) 评论(0) 推荐(0) 编辑
摘要:代码: // 先声明map var m1 map[string]string // 再使用make函数创建一个非nil的map,nil map不能赋值 m1 = make(map[string]string) // 最后给已声明的map赋值 m1["a"] = "aa" m1["b"] = "bb" 阅读全文
posted @ 2022-05-06 23:53 李若盛开 阅读(564) 评论(0) 推荐(0) 编辑
摘要:之前咱们学习过原生的Go连接MYSQL的方法,使用Go自带的"database/sql"数据库连接api,"github.com/go-sql-driver/mysql"MYSQL驱动,通过比较原生的写法去写sql和处理事务。目前开源界也有很多封装好的orm操作框架,帮我们简省一些重复的操作,提高代 阅读全文
posted @ 2022-04-30 19:49 李若盛开 阅读(1411) 评论(0) 推荐(0) 编辑
摘要:分布式锁,是一种跨进程的跨机器节点的互斥锁,它可以用来保证多机器节点对于共享资源访问的排他性。 分布式锁和线程锁本质上是一样的,线程锁的生命周期是单进程多线程,分布式锁的声明周期是多进程多机器节点。 在本质上,他们都需要满足锁的几个重要特性: 排他性,也就是说,同一时刻只能有一个节点去访问共享资源。 阅读全文
posted @ 2022-04-29 10:16 李若盛开 阅读(569) 评论(0) 推荐(0) 编辑
摘要:帧同步:战斗核心逻辑写在客户端状态同步:战斗核心逻辑写在服务器端 一、同步 所谓同步,就是要多个客户端表现效果是一致的,例如我们玩王者荣耀的时候,需要十个玩家的屏幕显示的英雄位置完全相同、技能释放角度、释放时间完全相同,这个就是同步。就好像很多个人一起跳街舞齐舞,每个人的动作都要保持一致。而对于大多 阅读全文
posted @ 2022-04-27 14:24 李若盛开 阅读(462) 评论(0) 推荐(0) 编辑
摘要:实际项目中,读取相关的系统配置文件是很常见的事情。 1. json使用 JSON 应该比较熟悉,它是一种轻量级的数据交换格式。层次结构简洁清晰 ,易于阅读和编写,同时也易于机器解析和生成。 1)创建 conf.json { "enabled": true, "path": "/usr/local" 阅读全文
posted @ 2022-04-27 13:19 李若盛开 阅读(312) 评论(0) 推荐(1) 编辑
摘要:一、概念 ZooKeeper 是一个开放源码的分布式协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。 Zookeeper 的 Java 客户端都有哪些? Zookeeper 自带的 zkclien 阅读全文
posted @ 2022-04-25 20:29 李若盛开 阅读(461) 评论(0) 推荐(0) 编辑
摘要:1、将一套系统拆分成不同子系统部署在不同服务器上(这叫分布式)。 2、部署多个相同的子系统在不同的服务器上(这叫集群),此时部署在不同服务器上的同一个子系统应做负载均衡。 3、集群和分布式都是由多个节点(多个服务器)组成,但是集群之间的通信协调基本不需要;而分布式各个节点的通信协调必不可少。 4、分 阅读全文
posted @ 2022-04-25 18:11 李若盛开 阅读(137) 评论(0) 推荐(0) 编辑
摘要:前言 一般习惯用Json、XML 数据存储格式,相信大多都没听过Protocol Buffer。Protocol Buffer 其实是Google出品的一种轻量 & 高效的结构化数据存储格式,性能比 Json、XML 强太多。 Protocol Buffer的性能好在哪里:a. 序列化速度 & 反序 阅读全文
posted @ 2022-04-25 12:55 李若盛开 阅读(153) 评论(0) 推荐(0) 编辑
摘要:Channel 原理:当channel能存放的元素数量为0时表示为阻塞型channel。当管道无数据时,需要从管道取数据的协程会被阻塞,不会向下执行。所以可以通过多个协程应用同一个channel,从而实现协程间的同步。 使用场景: 1. 需要协程通信时 2. 需要管道传输数据时。 Mutex 原理: 阅读全文
posted @ 2022-04-24 10:32 李若盛开 阅读(528) 评论(0) 推荐(0) 编辑
摘要:golang 中的 sync 包实现了两种锁: Mutex:互斥锁 RWMutex:读写锁,RWMutex 基于 Mutex 实现 锁的概念 某个协程(线程)在访问某个资源时先锁住,防止其它协程的访问,等访问完毕解锁后其他协程再来加锁进行访问。 Mutex(互斥锁) Mutex 为互斥锁,Lock( 阅读全文
posted @ 2022-04-23 17:43 李若盛开 阅读(432) 评论(0) 推荐(1) 编辑
摘要:select与switch的区别: 1:每个switch后面必须跟随一个条件判断,而select后面没有 2:switch中的case语句为枚举值进行比较,select中的case必须是一个对channel的读或者写的操作 select与switch的相同点: 如果switch或select中的ca 阅读全文
posted @ 2022-04-22 09:36 李若盛开 阅读(451) 评论(0) 推荐(0) 编辑

上一页 1 ··· 3 4 5 6 7 8 下一页
点击右上角即可分享
微信分享提示