Go基础
文章平均质量分 65
Bryce_Huang
竹杖芒鞋轻胜马,一蓑烟雨任平生
展开
-
GoORM连接数据库错误:register db Ping `default1`, Error 1049: Unknown database
在学习Go语言写项目的过程中遇到了使用beego的ORM注册数据库的问题:register db Ping `default1`, Error 1049: Unknown database 'test_beego' must have one register DataBase alias named `default`,自己找了很多解决的办法,(ps:自己犯的是最傻的哪一个…)很多人的错误的原因如下:(1)写的是127.0.0.1的方式连接本地数据库"root:xxxxx@tcp(127原创 2021-02-18 19:14:38 · 2782 阅读 · 0 评论 -
单引号反引号的错误——Go里面的单引号,反引号和双引号
今天在学习Go的时候遇到了这样的一个问题:这里一直有报错。自己仔细看了看电子教程,发现里面的代码的引号和自己的引号有一点不同。自己的引号''这叫做单引号。而想要正确的使用,这里的应该是反引号:``。而反引号在ESC键下**~`**键。而单引号就是双引号的英文输入是的键。而在Go语言中,单引号,双引号,反引号还有着不同的规定。双引号用来创建可解析的字符串字面量(支持转义,但不能用来引用多行);单引号则是用于单个字符如:‘5’反引号用来创建原生的字符串字面量,这些字符串可能由多行组成(不支持原创 2021-02-18 14:40:31 · 446 阅读 · 1 评论 -
导入fdfs_client遇到的go.mod区分大小写问题
开发中遇到的go.mod区分大小写问题自己在使用go get -u github.com/keonjeo/fdfs_client这个包时遇到了这个问题:go get -u github.com/keonjeo/fdfs_clientgo: github.com/keonjeo/fdfs_client upgrade => v1.0.1go: finding module for package github.com/keonjeo/goconfiggo: finding module for原创 2021-02-18 13:53:46 · 484 阅读 · 0 评论 -
beego——快速入门2
beego——快速入门21,参数配置2,路由设置3,controller运行机制1,参数配置eego 目前支持 INI、XML、JSON、YAML 格式的配置文件解析,但是默认采用了 INI 格式解析,用户可以通过简单的配置就可以获得很大的灵活性。beego的默认配置文件位于conf文件夹下的app.conf通过这个文件可以初始化beego的默认参数:(使用bee创建项目时已经有的默认配置)appname = myprojecthttpport = 8080runmode = dev原创 2021-01-31 17:36:21 · 430 阅读 · 0 评论 -
beego——快速入门
beego——快速入门1,beego的安装2,bee工具的安装与使用3、beego的快速入门1,beego的安装打开命令行使用git安装go get github.com/astaxie/beegobeego升级方式: go get -u github.com/astaxie/beego2,bee工具的安装与使用bee工具的介绍:bee 工具是一个为了协助快速开发 beego 项目而创建的项目,通过 bee 可以很容易的进行 beego 项目的创建、热编译、开发、测试、和部署bee的原创 2021-01-29 21:01:43 · 8086 阅读 · 2 评论 -
Go语言基础——MySQL连接与使用
Go语言基础——MySQL连接与使用一,MySQL的连接二,Insert操作:三,Select操作四,update操作一,MySQL的连接mysql的连接需要使用到的第三方mysql库:github.com/go-sql-driver/mysql (mysql驱动)github.com/jmoiron/sqlx (基于mysql驱动的封装)获取方式:在IDE的命令行中输入: go get github.com/go-sql-driver/mysql go get github.c原创 2021-01-28 22:29:36 · 440 阅读 · 0 评论 -
Go语言并发编程_GMP
由线程到协程进程:是应用程序的启动实例,拥有自己独立的资源。线程:从属于进程,没有自己独立的资源。只有程序计数器,一组寄存器以及栈。一个进程可以拥有多个线程。线程是CPU最小的执行单元,进程是最小的资源管理单元。而线程和进程有一个明显的弊端就是切换成本很高。对于线程还要考虑同步问题。协程也就应运而生。协程:(Coroutines)是一种比线程更加轻量级的存在。一个进程拥有多个线程,一个线程也可以拥有多个协程。协程跟线程是有区别的,线程由 CPU 调度是抢占式的,协程由用户态调度是协作式的,转载 2021-01-25 16:41:24 · 175 阅读 · 0 评论 -
Go语言并发编程_同步Sync
Go语言中对于同步任务的使用主要是通过Sync包下的对象进行实现。Sync包位于src/sync。其包下有常使用的锁,waitGroup,原子类型数据等。sync.WaitGroupGo语言中除了锁还可以使用sync.WaitGroup来实现并发任务的同步。sync.WaitGroup的解释:A WaitGroup waits for a collection of goroutines to finish.The main goroutine calls Add to set the numb原创 2021-01-24 21:50:09 · 263 阅读 · 1 评论 -
Go语言并发编程_锁
在Go的代码中多个goroutine同时操作一个临界区资源的时候可能会发生竞态问题。因此Go也提供了不同的锁解决不同情景下的问题。互斥锁互斥锁是一种常用的资源访问控制,他能保证同时只有一个goroutine可以访问共享资源。Go语言中使用sync包和Mutex类型来实现互斥锁。代码实例import ( "fmt" "sync")var x int64var wg sync.WaitGroupvar lock sync.Mutexfunc add() { for i:=0;原创 2021-01-24 20:55:59 · 155 阅读 · 0 评论 -
Go语言并发编程_select
select的应用场景多个通道在接收数据的时候,如果没有数据接收,就会发生阻塞,导致其余通道无法接收。为了实现同时监控多个通道并且从多个通道接收值的需求,同时避免使用循环提高效率,Go内置了select关键字来同时响应多个通道的操作。select的使用Go语言中的select使用了类似switch的语句,他有一系列的case分支和一个默认分支。每个case对应一个通道的通信过程。select会一直等待,直到某个case通信操作完成时,就会执行case分支对应的语句。语法如下: select {原创 2021-01-24 16:07:16 · 158 阅读 · 0 评论 -
Go语言并发编程_Channel
channel的简介Go语言的并发模型实CSP(Communicating Sequential Processes)提倡通过通信共享内存而不是通过共享内存实现通信。虽然可以使用共享内存进行数据交换,但是共享内存在不同的goroutine中容易发生竞态问题。为了保证数据交换的正确性,必须使用互斥量对内存进行加锁,这种做法势必造成性能问题。channel:就是Go语言中,将一个goroutine发送特定值到另一个goroutine的通信机制。Go 语言中的通道(channel)是一种特殊的类型。原创 2021-01-22 16:31:36 · 1469 阅读 · 0 评论 -
Go语言并发编程_Goroutine
进程和线程进程:进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。线程:线程是进程的一个执行实体,是CPU调度和分派的基本单位,他是比进程更小的能独立执行的基本单位。两者的关系:一个进程可以创建和撤销多个线程,同一个进程中的多个线程之间可以并发执行。Go语言中的协程协程:独立的栈空间,共享堆空间,调度由用户自己控制,类似于用户级线程。与线程的关系:一个线程可以创建多个协程,协程是轻量级的线程。Go语言中Goroutine在java/c++中我们要实现并发编原创 2021-01-21 17:49:05 · 175 阅读 · 0 评论 -
Go语言基础——一个简单的TCP编程
Go语言的TCP编程与很多其他编程语言的结构顺序一样,只是存在着语法的不同TCP/IP协议TCP/IP协议,即传输控制协议/网间协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议,其传输的单位是报文段,因为是面向连接的协议,会存在黏包问题。TCP编程的服务端和Java编程中的一样,Go语言的服务端也可以连接多个客户端,执行的顺序也大致一样。(都遵循TCP/IP协议,肯定一样啊,此处为废话)Go语言中的服务端的工作流程:(1)监听端口,等待被连接(2)接收客户端的连接请求(3).原创 2021-01-18 16:13:43 · 236 阅读 · 0 评论