- 博客(76)
- 资源 (5)
- 收藏
- 关注
原创 Golang 从零开始实现多人聊天室(五)开发前奏-目录结构优化
运用 go 里面的net包中的相关方法来实现一个基于tcp的简单多人聊天室实现加入聊天室广播通知重新登录上线与离线通知公屏聊天群聊单聊退出与注销建立文件目录进行服务端与客户端区分服务端代码就写在server 文件夹下的 server 文件中客户端代码就写在cliemt 文件夹下的 client文件中从零开始实现一个基于Go的多人在线聊天室,功能包括:单聊、群聊、昵称、上下线通知、聊天日志等等,
2023-06-02 23:06:58
778
原创 Xorm 使用手册,增删改查之查
学习orm框架也就是学习数据库的过程,orm的步骤也就是原生sql的步骤,我们想要融会贯通必须将它与原生sql联系上,我们不是在学一个独特的orm,而是在学数据库的种种操作,这换成另外的任何的orm框架其实底层没有区别,操作也是大同小异。我们能做到的其实也就是努力学好sql,orm其实只是用来减少我们写sql的时间罢了。
2022-09-24 22:15:00
1339
原创 Xorm 使用手册,面向工作学习
学习orm框架也就是学习数据库的过程,每一个操作每一个需求都是数据库的需求,我们学习Xorm的过程中也在不断学习着数据库的相关操作。熟练掌握orm框架的时候,自然也就熟练掌握了数据库的操作,增删改查也是不变的真理,但是我们需要不断提高自己,避免沦为 "crud boy"。
2022-08-24 23:35:47
1008
4
原创 Golang 笔试面试学习第二天之range
for range 时,由于此时都是进行地址的传递,直到map结束时,所有的变量取得都是同一个 val 的地址,尽管该地址上的值在range过程中不断被替换成新的元素,但地址却不会更换。直到最终打印时,取得同一个地址的值,自然都是最后一个元素的值。每次遍历完,生成一个新变量,那么变量自然地址是新的,而赋值之后也是每次遍历的值,不会因为地址的相同而被覆盖。自然 m[key] 每次值都是新变量的地址,也就不会出现错误。
2022-08-24 22:39:28
438
原创 Golang 笔试面试学习第一天之defer
通过两个例子可以轻松了解在Golang中defer的使用方式,defer在我们工作中的重要性不言而喻。由于错误捕获与在程序运行后执行的逻辑,非常适合我们的编写中间与进行自定义的错误处理,或者将程序依次上抛进行捕获。
2022-08-23 23:19:33
393
3
原创 Golang新版本 Go1.19新的fmt方法
Go(又称 Golang)是谷歌开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言,号称“21 世纪的 C 语言”,但是由于语言诞生时间较为短暂,部分功能参数、生态等等都有着不足,每一个版本自然也都很重要。
2022-08-23 10:00:00
1397
1
原创 Golang 从零开始实现多人聊天室(四)离线与用户信息修改
从零开始实现一个基于Go的多人在线聊天室,功能包括:单聊、群聊、昵称、上下线通知、聊天日志等等,通过约定好的格式进行数据的传输,今天我们实现的json格式的传输,同时也进行了TCP连接的关闭,实现的一个人的离线与修改自身的用户信息,这将会实用的出现在工作的方方面面。我们下篇博文将会重点放在我们的用户信息是否在重新登陆后还存在与注销的简单使用,通过简单的连接管理能否实现离线与注销的简单区分。多人在线聊天室是我们学习TCP等消息协议最简单的项目,能让我们熟悉服务端与客户端的连接,也能更好的服务于工作的需要。
2022-05-16 15:00:00
754
1
原创 Golang GMP调度模型特性,通过P解耦GM
GMP调度模型设计的核心思想是用较少的线程完成很多Goroutine 的执行,从语言级别支持并发,轻量级协程 Goroutine 。由于P的存在,使得GM,协程也就是用户态线程与内核态线程实现了解耦,当遇到G的阻塞时,不会影响到其他G的使用,P会选择其他M来实现继续执行,提升并发性能。
2022-05-15 22:23:40
517
2
原创 Golang 从零开始实现多人聊天室(三)上线通知与公屏聊天
从零开始实现一个基于Go的多人在线聊天室,功能包括:单聊、群聊、昵称、上下线通知、聊天日志等等,通过服务端的转发,我们可以收到了其他客户端的消息,这牌篇博文也就达成了我们所需要的上线通知与公屏聊天,那么下篇博文将会重点在退出与重新登陆,将会通过代码简单的实现消息记录的存储,将每个人尽量保留聊天记录。多人在线聊天室只是一个简单的使用场景,那么不断地为自己提需求就是学习的动力。
2022-05-12 22:46:32
1207
1
原创 Golang 从零开始实现多人聊天室(二)客户端访问
从零开始实现一个基于Go的多人在线聊天室,功能包括:单聊、群聊、昵称、上下线通知、聊天日志等等,该博文简单实现,下篇博文将会讲客户端的访问,也正式与服务端勾搭上了,服务端的功能也将正式开始显现,下篇博文也就是多人聊天室为什么支持多人的所在,服务端的广播完成了不同用户的通信。客户端的代码比较清晰明了,将两端真正融会贯通将是之后不断地努力方向。·
2022-05-11 11:00:00
1268
17
原创 Golang 从零开始实现多人聊天室(一)服务端监听
从零开始实现一个基于Go的多人在线聊天室,功能包括:单聊、群聊、昵称、上下线通知、聊天日志等等,该博文简单实现服务端的端口监听,下篇博文将会讲解客户端的代码,将两端真正连接后进行通信。·
2022-05-10 11:00:00
1207
8
原创 Golang极速入门课五,流程控制
实际工作中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句,也有很多的校验需要通过条件判断进行,这将是绕不开的语法,但是也是清晰明了的语法、当我们熟悉后,才可以去运用,在不断学习中提高自己。
2022-05-09 15:00:00
322
2
原创 【Golang 刷题之路】转世重修第二百一十五题:数组中的第K个最大元素
数组中的第K个最大元素是面试常见问题、类似于无序数组找中位数。两种为同一做法,我们使用快排进行排序、也是题目考察要点,快排是常见考题、通过简单的左右指针进行横移来进行原数组内进行排序,相比于归并排序、节省了空间。完成了快排,我们的学习之路也才开始启程,路途遥远,只求风雨兼程。
2022-05-08 20:15:01
423
原创 【Golang 刷题之路】转世重修第二百零六题:反转链表
反转链表是极其热门的考题,通过题目可以了解考生对链表的熟悉程度。通过查看热度也能发现该题热度很高,即使在第二百多题,通过次数1,013,818提交次数1,390,692,依然很多。希望看到博文的你能够燃起斗志,成为一个很认真的人就在今天就在现在,学习之路启程,不畏险阻。
2022-04-30 11:00:00
301
1
原创 Golang极速入门课四,变量与常量
Golang的变量相较于其他语言的 int a 改为了 var a int,且通过语言来警告未使用的变量,将自己所存在的变量都将是存在引用的。既便于垃圾回收的查询与判断,也减少了未使用的变量挤占内存的情况。通过简短形式,使用 := 赋值操作符,也简便工作中不断声明变量的繁琐工作,当一个返回使用到多个变量时不必将这些变量单独进行声明。
2022-04-29 23:26:49
1984
2
原创 【Golang 刷题之路】转世重修第七十题:爬楼梯
爬楼梯是通过每次将计算出的结果保留,让下一个数免于多次递归而只需根据上一次的结果进行计算。通过学习优秀代码,我们发现可以将结果作为下一次的条件等等方式来节省所存储的数,只存储两个数。我们的学习之路开始启程,路途遥远,只求风雨兼程。
2022-04-24 15:00:00
513
3
原创 【Golang 刷题之路】转世重修第十一题:盛最多水的容器
盛最多水的容器作为面试常考题目,是Leetcode的第十一题,通过日常生活类比生成算法题目,来考验做题者的理解能力与应变能力。同样的双指针题,与无重复的子串确实两种不同的解题思路,我们需要以不变应万变,才能真正在面试中脱颖而出。
2022-04-23 15:11:27
247
原创 【Golang 刷题之路】转世重修第三题:无重复字符的最长子串
无重复字符的最长子串是Leetcode字符串比较奇特的一道题,由于我们的答案是子串 的长度,而非找出不重复的字符,那是一个子序列,不是子串。导致最开始我的思路飘向无垠的远方,一直在考虑通过哈希集合来直接找出所有字符,最后才发现结果其实是子串长度。我们的学习之路开始启程,路途遥远,只求风雨兼程。
2022-04-23 14:30:48
436
原创 简便工作时间的法宝:以密钥验证的方式来登录服务器
SSH是一种安全通道协议,是用来实现字符界面的远程登陆,远程复制等功能的,我们日常生活可以使用该功能来进行远程操控,省去了很多麻烦。解决问题、提高工作效率的问题其实都在简单的小事、简简单单的密码验证,也能为我们节省大量开发的时间、这也有利于不断的自我提升。
2022-04-21 22:38:17
876
4
原创 自我提升指南(一) 阿里云pkexec 中的本地提权漏洞 (CVE-2021-4034)
Polkit本地权限提升漏洞(CVE-2021-4034)的漏洞出现的比较突然,没办法预料,那么就需要我们时常关注业内新闻,经常管理查看自己的服务器,以防止他人恶意的攻击或其他方式影响服务器与网站的正常工作。
2022-04-19 11:00:00
2943
5
原创 【Golang 刷题之路】转世重修第二题:两数相加
两数相加是Leetcode链表的第一题,在不熟悉指针的时候,链表是最让人头疼的地方,绕来绕去傻傻分不清楚,希望看到博文的你能够摆脱我的苦恼,成为一个熟知链表熟悉指针的人,我们的学习之路开始启程,路途遥远,只求风雨兼程。
2022-04-18 21:43:00
294
3
原创 Golang极速入门课三,基本类型知多少
Golang的基本类型除了整型 int 浮点型 float 等等上文提到的类型,还有slice 切片map 映射channel 管道interface 接口function 函数 等等其他比较特殊的类型,所需要了解的知识远不是一篇文章就能讲完的,之后会将他们单独弄一个专题讲解,来更好更轻松的了解不同数据类型之间操作方式的不同,了解他们也是提高我们的第一步。
2022-04-18 11:00:00
1979
3
原创 【Golang 刷题之路】转世重修第一题:两数之和
两数之和是Leetcode的第一题,也是提交量与做题者都最为多的一题,我们的学习之路也从此开始,希望是一条星光大道,与君同行。
2022-04-17 20:55:54
256
5
原创 Golang极速入门课二,关键字、保留字与 Go语言思想
Golang有着简单的思想没有继承,多态,类等,支持函数式编程,Go语言中的函数式编程主要体现在闭包上面,闭包就是能够读取其他函数内部变量的函数。只有函数内部的子函数才能读取局部变量,所以闭包可以理解成“定义在一个函数内部的函数“。在本质上,闭包是将函数内部和函数外部连接起来的桥梁。Go语言使用闭包可以不需要修饰如何访问自由变量,尽管没有Lambda表达式,但是有匿名函数来实现相同的功能。
2022-03-31 22:06:17
803
4
原创 Mysql 存储引擎知多少、InnoDB好不好
MySQL中的数据用通过存储引擎存入数据库,那么每个引擎的方式都是不同的,查询修改更新等等,都差距较大,在InnoDB存储引擎是默认的当下,我相信我们学习InnoDB将是最好的选择,也是最有效果提升自己的选择。
2022-03-30 22:37:02
1182
4
原创 Golang极速入门课一,我与Golang初相见
Golang的不断普及,需求不断增加,也就迎来了Go语言生态环境的不太完善,尽管使用者仍然不是所有语言中最多的,但我相信Go语言的发展将在几年后或更短的时间迎来新的机遇,希望学习的你也能坚持下来。
2022-03-25 11:00:00
1269
53
原创 GolangError指南(三) package golang_cat is not in GOROOT
Golang 包的错误在模块的诞生后已然少了很多,但也会存在一部分因为模块的出现导致的错误,这个错误也就是其中之一,我们需要不断总结不断成长,与君共勉。
2022-03-24 23:26:19
5098
2
原创 Golang Goroutine和线程的区别
Golang 通过复杂的协程操作来实现我们的并发需求,golang是用户线程与系统线程的对应关系是多对多,既能利用多核cpu资源,也能尽可能减少上下文切换成本,代价是go需要实现复杂的goroutine调度机制。相比于N:1时所有用户线程对应1个系统线程,无法利用多核cpu;1:1时1个用户线程对应一个系统线程,上下文切换成本高。通过复杂的调度实现N:N时,即能利用多核cpu资源,也能尽可能减少上下文切换成本,成为Go语言最为人知的特点,天生支持高并发与高效。
2022-03-22 22:25:14
1019
40
原创 Golang defer 中变量的赋值,return了也给你改了
通过以上来了解Golang中defer 的使用, 在Go语言中,可以使用关键字defer向函数注册退出调用,即主函数退出时,defer后的函数才被调用。defer语句的作用是不管程序是否出现异常,均在函数退出时自动执行相关代码。在函数中,经常需要创建资源(比如:数据库连接、文件句柄、锁等) ,通过defer在函数执行完毕后执行,及时的释放资源。
2022-03-20 11:00:00
1488
17
原创 Golang 错误捕获 Panic 与 Recover
通过以上来简单熟悉Golang 与其他语言截然不同的错误处理形式,由于其他语言开发者经常将异常与控制结构混在一起,这会很容易使得代码变得混乱。开发者也很容易滥用异常,甚至一个小小的错误都抛出一个异常。这在Golang中不被允许,Go语言也就不支持传统的 try…catch…finally 这种异常,通过新的 defer panic recover 来进行错误处理。
2022-03-19 14:09:08
2404
25
原创 Golang 必知必会Go Mod命令
通过以上可以轻松了解在Golang中go mod的使用方式。Go mod提供了一系列操作modules的命令,所有的go命令中现在已经内置了对module的支持,而不仅仅是go mod命令。例如使用go get时,会经常自动在后台添加、移除、升级、降级依赖包版本。
2022-03-15 13:00:00
24297
15
原创 GolangError指南(二) first argument to append must be slice; have *[]int
Golang 通过make和new来分配内存的,但是它们之间还是有些区别的。简单来说,new只是分配内存,不初始化内存; 而make即分配又初始化内存。所谓的初始化就是给类型赋初值。
2022-03-11 11:00:00
1466
34
原创 经典面试题 为什么要用 Docker
GO语言还没有完全成熟,而Docker由Go语言开发,对大多数开发者来说比较陌生,而且还在不断改进,距离成熟还有一段时间。需要我们不断的学习,通过学习GO语言来接触Docker,接触云原生。
2022-03-10 15:30:00
975
26
原创 GolangError指南(一) cannot assign to struct field list[“fruit“].Name in map
Golang 通过指针操作来简便我们的使用习惯与内存占用情况,当我们发现无法修改值或者需要多次修改同一个字段时,不妨想想指针能不能达到我们的要求。
2022-03-09 23:04:43
901
30
原创 经典面试题【蚂蚁过杆】Golang 代码详解
经典面试题【蚂蚁过杆】Golang 代码详解面试题库【蚂蚁过杆】文章目录经典面试题【蚂蚁过杆】Golang 代码详解一、常见题目二、详细思路1.已知条件2.详细代码三、结果总结一、常见题目有一根27厘米的细木杆,在第3厘米、7厘米、11厘米、17厘米、23厘米这五个位置上各有一只蚂蚁。木杆很细,不能同时通过一只蚂蚁。开始时,蚂蚁的头朝左还是朝右是任意的,它们只会朝前走或调头,但不会后退。当任意两只蚂蚁碰头时,两只蚂蚁会同时调头朝反方向走。假设蚂蚁们每秒钟可以走一厘米的距离。求全部下杆
2022-03-08 11:00:00
605
59
原创 经典面试题【蚂蚁过杆】
有一根27厘米的细木杆,在第3厘米、7厘米、11厘米、17厘米、23厘米这五个位置上各有一只蚂蚁。木杆很细,不能同时通过一只蚂蚁。开始时,蚂蚁的头朝左还是朝右是任意的,它们只会朝前走或调头,但不会后退。当任意两只蚂蚁碰头时,两只蚂蚁会同时调头朝反方向走。假设蚂蚁们每秒钟可以走一厘米的距离。
2022-03-07 11:36:45
795
8
原创 Golang 字符串处理简单小技巧
一、如何修改字符串中的一个字符?二、如何获取字符串的子串?三、使用for或者for-rang遍历字符串?四、如何获取一个字符串的长度?(字符数,字节数)五、如何更好的连接字符串?
2022-03-02 21:48:00
1344
12
Prototype Textures 游戏开发资源包,完全免费可商用的包,这个包包括 13 个开发/原型纹理
2022-05-17
1-Bit Platformer Pack 游戏开发资源包,完全免费可商用的包,包括 400 个 1 位颜色格式的图块
2022-05-17
Pattern Pack 游戏开发资源包,完全免费可商用的包
2022-05-17
Cartography Pack 游戏开发资源包,完全免费可商用的包
2022-04-17
Scribble Platformer 游戏开发资源包,完全免费可商用的包
2022-04-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人