![](https://img-blog.csdnimg.cn/20191002003437687.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
项目练习
增加熟练度
块链
刺头叫你刺头。
展开
-
utils.go
package utilsimport (“net”“fmt”“errors”“encoding/binary”“encoding/json”)//这里将这些方法关联到结构体中type Transfer struct {//分析它应该有哪些字段Conn net.ConnBuf[8096]byte//这时传输时,使用缓冲}func (this *Transfer)read...原创 2019-11-19 21:17:02 · 347 阅读 · 0 评论 -
userProcess.go
package processimport (“encoding/json”“fmt”“net”//没有引入message包,和utils包与model包)type UserProcess struct {//字段Conn net.Conn//增加一个字段,表示该Conn是哪个用户的UserId int}//这里我们编写通知所有在线的用户的方法//userId要通知其他...原创 2019-11-19 21:15:50 · 235 阅读 · 0 评论 -
userMgr.go
package process2import “fmt”//因为UserMgr 实例在服务器端有且只有一个//因为在许多的地方,都会使用到,因此,我们将其定义为全局变量var(userMgr *UserMgr)type UserMgr struct {onlineUsers map[int]*UserProcess}//完成对userMgr初始化工作func init(){...原创 2019-11-19 21:11:47 · 412 阅读 · 0 评论 -
smsProcess.go
package process2import (“encoding/json”“fmt”“net”)type SmsProcess struct {//…[暂时不需字段]}//写方法转发消息func(this *SmsProcess)SendGroupMes(mes message.Message){//遍历服务器的onlineUsers map[int]*UserProce...原创 2019-11-19 21:10:27 · 155 阅读 · 0 评论 -
model------userDao
package modelimport (“encoding/json”“fmt”)//我们在服务器启动后,就初始化一个userDao实例,//把它做成全局的变量。在需要和redis操作时,就直接使用即可。var(myUserDao *UserDao)//定义一个UserDao结构体//完成对User 结构体的各种操作//编写对User对象(实例)操作的各种方法,主要就是增...原创 2019-11-19 21:08:47 · 220 阅读 · 0 评论 -
model------user.go
package modeltype User struct {//确定字段信息//为了序列化和反序列化成功,我们必须保证//用户信息的json字符串的key和结构体的字段对应的tag名字一致!!!UserId intjson:"userId"UserPwd stringjson:"userPwd"UserName stringjson:"userName"}...原创 2019-11-19 21:07:45 · 131 阅读 · 0 评论 -
model-----error
package modelimport “errors”//根据业务逻辑需要,自定义一些错误。var(ERROR_USER_NOTEXTSTS=errors.New(“用户不存在”)ERROR_USER_EXISTS=errors.New(“用户已经不存在”)ERROR_USER_PWD=errors.New(“密码不正确”))...原创 2019-11-19 21:06:32 · 458 阅读 · 0 评论 -
redis.go
package mainimport “time”//定义一个全局的poolvar pool *redis.Poolfunc initPool(address string,maxIdle,maxActive int,idleTimeout time.Duration){pool=&redis.Pool{MaxIdle:maxIdle,//最大空闲连接数MaxActive:m...原创 2019-11-19 21:02:09 · 98 阅读 · 0 评论 -
processor.go
package mainimport (“net”“fmt”“io”)//先创建一个Processor的结构体type Processor struct {Conn net.Conn}//编写一个ServerProcessMes函数//功能:根据客户端发送消息种类不同,决定调用哪个函数来处理func (this *Processor) serverProcessMes(me...原创 2019-11-19 21:00:35 · 158 阅读 · 0 评论 -
main.go
package mainimport (“fmt”“net”“encoding/binary”“encoding/json”“errors”“io”“debug/dwarf”//没有引入message包“time”)//func readPkg(conn net.Conn) (mes message.Message, err error) {// buf := make([...原创 2019-11-19 20:57:46 · 350 阅读 · 0 评论 -
login.go
package mainimport (“net”“fmt”“encoding/json”“encoding/binary”)//写一个函数,完成登陆func login(userId int,userPwd string)(err error){//1.连接到服务器conn,err:=net.Dial(“tcp”,“localhost:8889”)if err !=nil{...原创 2019-11-19 20:51:33 · 797 阅读 · 0 评论 -
海量用户——服务器接收长度
package mainconst(LoginMesType =“LoginMes”LoginResMesType=“LoginResMes”RegisterMes =“RegisterMes”)type Message struct {Type string json:"type"//消息类型Data stringjson:"Data"//消息的类型}//定义两个消息…后...原创 2019-10-25 22:33:24 · 126 阅读 · 0 评论 -
海量用户登陆通讯系统——完成登陆
package mainimport “fmt”//写一个函数,完成登录func login(userId int,userPwd string)(err error){//下一个就要开始定协议…fmt.Println(“userId=%d userPwd=%s\n”,userId,userPwd)return nil}...原创 2019-10-19 23:05:43 · 160 阅读 · 0 评论 -
海量用户通讯系统——完成界面
package mainimport “fmt”//定义两个变量,一个表示用户id,一个表示用户密码var userId intvar userPwd stringfunc main(){/*经典项目-海量用户即时通讯系统项目开发前技术准备项目要保存用户信息和消息数据,因此我们需要学习数据库(redis或者Mysql),这里我们选择Redis,所以先给同学们讲解如何在Golang...原创 2019-10-19 22:48:14 · 189 阅读 · 0 评论 -
海量用户即时通讯系统需求
package main/*项目开发流程需求分析->设计阶段->编码实现->测试阶段->实施阶段需求分析1)用户注册2)用户登陆3)显示在线用户列表4)群聊(广播)5)点对点聊天6)离线留言界面设计经典项目-海量用户即时通讯系统实现功能-显示客户端登陆菜单————————————————————欢迎登陆多人聊天系统————————————————...原创 2019-10-19 22:45:32 · 352 阅读 · 0 评论 -
海量——Go操作Redis(hash)
package mainimport “fmt”func main() {/*操作Hash说明:通过Golang对Redis操作Hash数据类型_,err=c.Do("HSet","user01","name","汤姆")//这里需要根据name对应的旅行来使用redis.Xxx的方法//如果存放的时int则应当使用redis.Int(),看相关手续r,err:=redis.S...原创 2019-10-19 22:43:34 · 408 阅读 · 0 评论 -
海量用户——Redisdemo
package mainimport “fmt”//差一个redis库没有安装,没有redis包//Set/get接口//说明:通过Golang添加和获取key-value[比如name-tom~]func main() {//通过go向redis写入数据和读取数据//1.连接到redisconn, err := redis.Dial(“tcp”, “127.0.0.1:6379”...原创 2019-10-19 22:41:04 · 117 阅读 · 0 评论 -
海量用户——Redis连接池介绍和原理
package mainimport “fmt”/*距离,存放一个商品信息包括商品名、价格、生产日期完成对应的crud操作说明:通过Golang对Redis操作,还可以通过Redis连接池,流程如下:1.实现初始化一定数量的连接,放入到连接池2.当Go需要操作Redis时,直接从Redis连接池去除连接即可。3.这样可以节省临时获取Redis连接的时间,从而提高效率。4.示意图...原创 2019-10-19 22:39:02 · 906 阅读 · 0 评论 -
客户管理-customersView
package mainimport (“fmt”//引入model包//引入service包)/*项目功能实现-显示主菜单和完成退出软件功能功能的说明当用户运行程序时,可以看到主菜单,当输入5时,可以退出该软件思路分析编写customerView.go,另外可以把customer.go和customerService.go写上代码实现customer.Manage/mo...原创 2019-10-02 00:39:44 · 272 阅读 · 0 评论 -
客户管理-model
package modelimport (“fmt”)//声明一个Customer结构体,表示一个客户信息type Customer struct {Id intName stringGender stringAge intPhone stringEmail string}//编写一个工厂模式,返回一个Customer的实例func NewCust...原创 2019-10-02 00:40:56 · 94 阅读 · 0 评论 -
客户管理-service
package service//调用model包//调用view包//该CustomerService,完成对Customer的操作,包括增删改查type CustomerService struct {Customers []model.Customer//引入model//声明一个字段,表示当前切片汉语多少个客户//该字段后面,还可以作为新客户的id+1customerNum...原创 2019-10-02 00:42:51 · 122 阅读 · 0 评论 -
家庭收支記賬項目登記----面向對象
package mainimport “fmt”/*項目1,家庭收支記賬軟件項目/*類型斷言的最佳實踐3[學院自己完成]在前面代碼的基礎上,增加判斷student類型和*student類型項目開發流程説明項目需求説明項目的界面項目代碼實現實現基本功能(先使用面嚮過程,後面改成面嚮對象)編寫文件testmyaccount.go完成基本功能功能1先完成可以顯示主菜單,并且可以...原创 2019-09-30 22:28:58 · 97 阅读 · 0 评论 -
家庭收支記賬項目介紹----面向過程
package mainimport “fmt”/*項目1,家庭收支記賬軟件項目/*類型斷言的最佳實踐3[學院自己完成]在前面代碼的基礎上,增加判斷student類型和*student類型項目開發流程説明項目需求説明項目的界面項目代碼實現實現基本功能(先使用面嚮過程,後面改成面嚮對象)編寫文件testmyaccount.go完成基本功能功能1先完成可以顯示主菜單,并且可以...原创 2019-09-29 22:55:48 · 106 阅读 · 0 评论 -
家庭收支記賬項目介紹
package mainimport “fmt”/*項目1,家庭收支記賬軟件項目/*類型斷言的最佳實踐3[學院自己完成]在前面代碼的基礎上,增加判斷student類型和*student類型項目開發流程説明項目需求説明項目的界面項目代碼實現實現基本功能(先使用面嚮過程,後面改成面嚮對象)編寫文件testmyaccount.go完成基本功能功能1先完成可以顯示主菜單,并且可以...原创 2019-09-28 21:41:37 · 239 阅读 · 0 评论 -
需求分析和界面
package 客户管理系统项目/*模擬實現一個基於文本界面的《客戶信息管理軟件》進一步掌握編程技巧和調試技巧,熟悉面向對象變成主要涉及一下知識點:-切片的插入、刪除和替換-多對象協同工作需求説明:模擬實現基於文本界面的《客戶信息管理軟件》該軟件能夠實現對客戶對象的插入、修改和刪除(用切片實現),并能夠打印客戶明細表。項目采用分級菜單方式。主菜單如下:---------客戶信...原创 2019-10-02 00:37:57 · 616 阅读 · 0 评论