自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(127)
  • 资源 (14)
  • 收藏
  • 关注

原创 关闭通道和通道上范围循环

一、 关闭通道发送者可以通过关闭信道,来通知接收方不会有更多的数据被发送到channel上。close(ch)接收者可以在接收来自通道的数据时使用额外的变量来检查通道是否已经关闭。语法结构:v, ok := <- ch 类似map操作,存储key,value键值对v,ok := map[key] //根据key从map中获取value,如果key存在, v就是对应的数据,如果key不存在,v是默认值在上面的语句中,如果ok的值是true,表示成功的从通道中.

2021-10-03 11:24:45 89

原创 channel通道

通道可以被认为是Goroutines通信的管道。类似于管道中的水从一端到另一端的流动,数据可以从一端发送到另一端,通过通道接收。在前面讲Go语言的并发时候,我们就说过,当多个Goroutine想实现共享数据的时候,虽然也提供了传统的同步机制,但是Go语言强烈建议的是使用Channel通道来实现Goroutines之间的通信。“不要通过共享内存来通信,而应该通过通信来共享内存” 这是一句风靡golang社区的经典语Go语言中,要传递某个数据给另一个goroutine(协程),可以把这个数据封装成

2021-10-03 11:22:30 486

原创 sync包——读写锁

官网文档对sync包的介绍:Package sync provides basic synchronization primitives such as mutual exclusion locks. Other than the Once and WaitGroup types, most are intended for use by low-level library routines. Higher-level synchronization is better done via channe

2021-10-03 11:17:11 148

原创 sync包——互斥锁

官网文档对sync包的介绍:Package sync provides basic synchronization primitives such as mutual exclusion locks. Other than the Once and WaitGroup types, most are intended for use by low-level library routines. Higher-level synchronization is better done via channe

2021-10-03 11:15:24 94

原创 sync包——WaitGroup

官网文档对sync包的介绍:Package sync provides basic synchronization primitives such as mutual exclusion locks. Other than the Once and WaitGroup types, most are intended for use by low-level library routines. Higher-level synchronization is better done via channe

2021-10-03 11:12:49 101

原创 临界资源安全问题

一、临界资源临界资源: 指并发环境中多个进程/线程/协程共享的资源。但是在并发编程中对临界资源的处理不当, 往往会导致数据不一致的问题。示例代码:package main​import ( "fmt" "time")​func main() { a := 1 go func() { a = 2 fmt.Println("子goroutine。。",a) }() a = 3 time.Slee

2021-10-03 11:10:20 143

原创 runtime包

官网文档对runtime包的介绍:Package runtime contains operations that interact with Go's runtime system, such as functions to control goroutines. It also includes the low-level type information used by the reflect package; see reflect's documentation for the progra

2021-10-03 11:07:51 187

原创 Go语言的并发模型

Go 语言相比Java等一个很大的优势就是可以方便地编写并发程序。Go 语言内置了 goroutine 机制,使用goroutine可以快速地开发并发程序, 更好的利用多核处理器资源。接下来我们来了解一下Go语言的并发原理。一、线程模型在现代操作系统中,线程是处理器调度和分配的基本单位,进程则作为资源拥有的基本单位。每个进程是由私有的虚拟地址空间、代码、数据和其它各种系统资源组成。线程是进程内部的一个执行单元。 每一个进程至少有一个主执行线程,它无需由用户去主动创建,是由系统自动创建的。 用户根据需

2021-10-03 10:55:47 390

原创 Go语言的协程——Goroutine

进程(Process),线程(Thread),协程(Coroutine,也叫轻量级线程)进程进程是一个程序在一个数据集中的一次动态执行过程,可以简单理解为“正在执行的程序”,它是CPU资源分配和调度的独立单位。 进程一般由程序、数据集、进程控制块三部分组成。我们编写的程序用来描述进程要完成哪些功能以及如何完成;数据集则是程序在执行过程中所需要使用的资源;进程控制块用来记录进程的外部特征,描述进程的执行变化过程,系统可以利用它来控制和管理进程,它是系统感知进程存在的唯一标志。 进程的局限是创建、撤销和切换

2021-10-03 09:32:37 2248 1

原创 并发性Concurrency

1.1 多任务什么叫“多任务”呢?简单地说,就是操作系统可以同时运行多个任务。打个比方,你一边在用浏览器上网,一边在听MP3,一边在用Word赶作业,这就是多任务,至少同时有3个任务正在运行。还有很多任务悄悄地在后台同时运行着,只是桌面上没有显示而已。CPU的速度太快啦。。。1.2 什么是并发Go是并发语言,而不是并行语言。在讨论如何在Go中进行并发处理之前,我们首先必须了解什么是并发,以及它与并行性有什么不同。(Go is a concurrent language and not

2021-10-03 09:27:26 35

转载 米哈游技术总监详解《原神》画面效果的技术实现

11月17日,中国Unity线上技术大会游戏专场迎来米哈游技术总监弋振中的分享,此次他围绕“从手机走向主机-《原神》主机版渲染技术”为主题,细致地讲解了《原神》在主机上渲染技术实现的重点内容。以下是演讲内容(有节选):大家好!我叫弋振中,目前负责《原神》的主机平台开发。首先我简单介绍一下《原神》的游戏,《原神》是开放世界的RPG游戏,有独特的二次元画风,是跨平台的,而且长期运营,长期更新。今天的内容安排大致是:首先我会介绍一下《原神》主机平台的基本情况,然后按照我们开发的时候改造渲染管线的思

2021-10-02 14:53:40 2675 1

原创 linux下cp目录时排除一个或者多个目录的实现方法

使用cp命令复制的时候,只能排除一个目录不被复制,如果想排除两个或者多个目录的话,就需要使用rsync命令来实现了,看下面的例子如果要排除/home/data目录下面的a、b、c、三个目录,同时拷贝其它所有目录,执行以下命令yum install rsync #安装rsyncrsync -av --exclude data/a --exclude data/b --exclude data/c data /bak注意:--exclude后面的路径不能为绝对路径,必须为相对路径才可以,否则出错

2021-09-17 16:32:45 416

转载 Go的json解析:Marshal与Unmarshal

简介Json(Javascript Object Nanotation)是一种数据交换格式,常用于前后端数据传输。任意一端将数据转换成json 字符串,另一端再将该字符串解析成相应的数据结构,如string类型,strcut对象等。go语言本身为我们提供了json的工具包”encoding/json”。更多的使用方式,可以参考:https://studygolang.com/articles/6742实现Json Marshal:将数据编码成json字符串看一个简单的例子ty

2021-09-16 14:50:28 603

原创 Centos防火墙配置

1、查看firewall服务状态systemctl status firewalld2、查看firewall的状态firewall-cmd --state3、开启、重启、关闭、firewalld.service服务# 开启service firewalld start# 重启service firewalld restart# 关闭service firewalld stop4、查看防火墙规则firewall-cmd --list-all .

2021-09-15 13:44:56 139

原创 go语言的值传递和指针传递

指针传递与值传递严格地说,go方法或函数只有一种传递方式,那就是值传递。每次将一个变量作为参数传递时,都会创建一个新的变量副本并将其传递给所调用的函数或方法。副本分配在不同的内存地址。在指针传递变量的情况下,将创建指向相同内存地址的新副本。为了感受它们之间的差异,我们来看看它是如何工作的。值传递package mainimport "fmt"type Person struct { firstName string lastName string}f

2021-09-15 10:33:44 875

原创 基础语法(整型:uint、uint8、uint16、uint32、uint64、uintptr)

整型范围Int8 - [-128 : 127]Int16 - [-32768 : 32767]Int32 - [-2147483648 : 2147483647]Int64 - [-9223372036854775808 : 9223372036854775807]无符号整型范围UInt8 - [0 : 255]UInt16 - [0 : 65535]UInt32 - [0 : 4294967295]UInt64 - [0 : 18446744073709551615]

2021-09-14 16:37:14 1755

转载 Go语言指针详解

与Java和 .NET 等编程语言不同,Go语言为程序员提供了控制数据结构指针的能力,但是,并不能进行指针运算。Go语言允许你控制特定集合的数据结构、分配的数量以及内存访问模式,这对于构建运行良好的系统是非常重要的。指针对于性能的影响不言而喻,如果你想要做系统编程、操作系统或者网络应用,指针更是不可或缺的一部分。指针(pointer)在Go语言中可以被拆分为两个核心概念:类型指针,允许对这个指针类型的数据进行修改,传递数据可以直接使用指针,而无须拷贝数据,类型指针不能进行偏移和运算。 切片,由指..

2021-09-14 14:31:05 45

原创 go 类型转换

// atob.go ------------------------------------------------------------ // ParseBool 将字符串转换为布尔值 // 它接受真值:1, t, T, TRUE, true, True // 它接受假值:0, f, F, FALSE, false, False. // 其它任何值都返回一个错误 func ParseBool(str s..

2021-09-14 10:42:23 33

原创 go (type *[]int does not support indexing)

这是之前一直遇到的问题(一直没管。。。)*arr[i]如果使用这种方式想要拿到arr的第i个变量,编译器会报错,错误为题目里提示的那样正确的调用方式应该为:(*arr)[i]

2021-09-14 10:05:39 547

原创 Intellij idea go 快捷键是什么

快速打出for循环ctrl+j可以查看快捷生成代码的提示,可以经常看一遍,记住它们。比如itar这个,可以生成遍历数组的代码。Ctrl + Q: 显示变量类型

2021-09-14 09:34:25 134

原创 Go string函数与strconv.Itoa函数的区别

Itoa函数strconv.Itoa函数的参数是一个整型数字,它可以将数字转换成对应的字符串类型的数字。package mainimport ( "fmt" "strconv")func main() { string_number := 97 result := strconv.Itoa(string_number) fmt.Println(result) fmt.Printf("%T\n", result)}运行结果:...

2021-09-14 09:05:48 93

转载 GeoServer中GeoWebCache(GWC)的使用

本文介绍GeoWebCache的使用方法,包括如何切缓存,访问缓存wms/wmts服务,如何复用栅格缓存等。文章大部分内容转载自利用GeoWebCache实现WebGIS地形图展示的缓存优化 - 李晓晖 - 博客园1.前言在geoserver1.7版本之后,geoserver本身集成了GeoWebCache这个模块。本文介绍的是geoserver2.2版本,其本身自带有GeoWebCache。不过如果你的geoserver版本比较老,或者想使用最新的GeoWebCache,可以自行在网上下载

2021-09-13 15:56:08 1180

转载 如何使用Docker部署Go Web应用

本文介绍了如何使用Docker以及Docker Compose部署我们的 Go Web 程序。为什么需要Docker?使用docker的主要目标是容器化。也就是为你的应用程序提供一致的环境,而不依赖于它运行的主机。想象一下你是否也会遇到下面这个场景,你在本地开发了你的应用程序,它很可能有很多的依赖环境或包,甚至对依赖的具体版本都有严格的要求,当开发过程完成后,你希望将应用程序部署到web服务器。这个时候你必须确保所有依赖项都安装正确并且版本也完全相同,否则应用程序可能会崩溃并无法运行。如果你

2021-09-13 15:08:58 109

转载 Go语言项目部署的那些方式

部署Go语言项目本文以部署 Go Web 程序为例,介绍了在 CentOS7 服务器上部署 Go 语言程序的若干方法。独立部署Go 语言支持跨平台交叉编译,也就是说我们可以在 Windows 或 Mac 平台下编写代码,并且将代码编译成能够在 Linux amd64 服务器上运行的程序。对于简单的项目,通常我们只需要将编译后的二进制文件拷贝到服务器上,然后设置为后台守护进程运行即可。编译编译可以通过以下命令或编写 makefile 来操作。CGO_ENABLED=0 GOOS=

2021-09-13 15:06:36 458

原创 golang map 多协程

golang中map的三个结论:多协程同时只写入,会发生 concurrent map write 异常,必须加锁多协程同时写入读取,写入加锁,读取不加,不会异常,只是不确保读取的数据是否脏多协程同时只读取,加锁数据干净,不加锁数据可能脏package mainimport ( "fmt" "runtime" "sync")func main() { runtime.GOMAXPROCS(runtime.NumCPU()) var m = ma...

2021-09-13 14:58:56 385

原创 go channel

package mainimport ( "fmt" "time")func test2(a chan int, b chan int) { b <- 6 time.Sleep(time.Second) b <- 7 time.Sleep(time.Second) a <- 5}func main() { /*1.简单的channel队列现进先出特性 *在主线程上建立单个协程,完成某项工作后,关闭该管道,关闭与否为可选项。 *停止一段阻塞有两种方式.

2021-09-13 10:42:11 14

原创 go 学习 go-simplejson 遍历

方式一 dataJson := jsonInfo.Get("tick").Get("data") dataArr, _ := dataJson.Array() // 遍历 for i := range dataArr { info := dataJson.GetIndex(i) priceF := info.Get("price").MustFloat64() amountF := info.Get("amount").MustFloat64() direc..

2021-09-12 21:09:14 578

原创 go程序部署到linux上运行

1)、下载第三方包代码git clone https://github.com/golang/sys.git一、win10上的操作1、在src目录下依次执行set CGO_ENABLED=0、set GOOS=linux、set GOARCH=amd64命令2、进入主项目目录,执行go build 程序入口文件。我这里是main.gogo build main.go二、linux 端 cento1、将程序所需要的文件如配置文件和生成的可执行文件拷贝到..

2021-09-12 20:46:59 901

原创 002--- 添加 gcm

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repoyum install python-pippip install --upgrade pippip install shadowsocksmkdir /etc/shadowsocksvi /etc/shadowsocks/shadowsocks.json添加以下内容[root@VM_0_13_centos .hulk-ma.

2021-09-10 14:11:47 136

原创 idea 配置代理

2021-09-09 23:31:19 144

转载 Go语言unbuffered和buffered channel

转载https://www.daehub.com/archives/9375.html初学Go 语言时,最大的挑战就是了解 Channel 的使用时机及差异。而 Channel 又分为两种,一种是 buffered channel,另一种是 unbuffered channel,本文将用几个简单的例子带大家了解这两种 channel 的差异,让初学者可以很快的了解 channel 使用方法。Unbuffered Channel在 Go 语言内使用 goroutine 是很常见的,但是我们该...

2021-09-09 14:16:58 69

原创 go 学习 channel

channel.gopackage mainimport ( "fmt" "time")func worker(id int, c chan int) { for n := range c { fmt.Printf("Worker %d received %c\n", id, n) }}func createWorker(id int) chan<- int { c := make(chan int) go worker(id, c) return c}

2021-09-09 14:00:19 28

原创 Go测试与性能调优: 使用pprof进行性能调优 graphviz

go test -bench . -cpuprofile cpu.outgo tool pprof cpu.out提示用不了,需要安装Graphviz工具.1.进入官网:http://www.graphviz.org/

2021-09-09 11:24:57 63

原创 go 学习 错误处理

defer.gopackage mainimport ( "fmt" "os" "bufio" "imooc.com/ccmouse/learngo/functional/fib")func tryDefer() { for i := 0; i < 100; i++ { defer fmt.Println(i) if i == 30 { // Uncomment panic to see // how it works with defer //

2021-09-09 10:44:02 30

原创 go 学习 5

main.gopackage mainimport ( "bufio" "fmt" "io" "strings" "com.loit/learn/learngo/functional/fib")type intGen func() intfunc (g intGen) Read( p []byte) (n int, err error) { next := g() if next > 10000 { return 0, io.EOF } s := fmt.

2021-09-09 10:12:00 27

原创 go 学习 4 retriever

main.gopackage mainimport ( "fmt" "time" "com.loit/learn/learngo/retriever/mock" "com.loit/learn/learngo/retriever/real")type Retriever interface { Get(url string) string}type Poster interface { Post(url string, form map[string]string)

2021-09-09 10:09:11 54

原创 go 学习3 tree

node.gopackage treeimport "fmt"type Node struct { Value int Left, Right *Node}func (node Node) Print() { fmt.Print(node.Value, " ")}func (node *Node) SetValue(value int) { if node == nil { fmt.Println("Setting Value to nil " + "

2021-09-09 10:05:35 41

转载 微服务框架 Go-Micro 集成 Nacos 实战之服务注册与发现

转载:https://zhuanlan.zhihu.com/p/281090292导读:本文主要介绍如何使用 Golang 生态中的微服务框架 Go-Micro(v2) 集成 Nacos 进行服务注册与发现。(Go-Micro 目前已经是 v3 版本,但由于某些原因项目已经更名为 nitro 具体原因大家可以去 github 中查看。)相关背景知识1. Go-MicroGo Micro 是一个基于 Go 语言编写的、用于构建微服务的基础框架,提供了分布式开发所需的核心组件,包括 RPC.

2021-09-09 09:28:33 264

原创 解决golang被墙(go get golang.org/x/失败)

1.手动git一般在 GitHub 上都有官方的镜像仓库的对应,我们可以手动下载或 clone 对应的 GitHub 仓库到指定的目录下($GOPATH//src/golang.org/x/)。例子:cd $GOPATH/src/golang.org/x/git clone https://github.com/golang/crypto.git安装编译这个包下的所有依赖go install golang.org/x/crypto/...如:...

2021-09-08 15:00:46 389

原创 国内的go get问题的解决 --gopm

一、golang之旅--gopm1.什么是gopm在nodejs中我们有npm,可以通过npm来下载安装一些依赖包。在go中也开发了类似的东西,那就是gopm。这玩意儿是七牛开发的。在这里说下,七牛公司大部分程序都是用go语言编写的,所以开发出这么一个方便的东西肯定也是合情合理的。2.gopm地址git地址:https://github.com/gpmgo/gopm官方地址:https://gopm.io/gopm文档路径:https://github.com/gpmgo/docs/t

2021-09-08 13:39:30 346

navicat091_ora_cs

navicat091_ora_cs for oracle 开发工具racle 数据库管理工具,它可以将 DBF, CSV, XML 和其他普遍的数据格式加入到 Oracle 数据库中,消除了耗时的数据输入和与之相伴的错误。除此之外,它还包括导入、导出向导、日程备份、批处理管理、数据同步、数据传输和视觉化数据库查询器。

2011-11-09

google 浏览器安装程序15.0.874.81

google 浏览器安装程序15.0.874.81google 浏览器安装程序15.0.874.81google 浏览器安装程序15.0.874.81google 浏览器安装程序15.0.874.81google 浏览器安装程序15.0.874.81google 浏览器安装程序15.0.874.81

2011-10-23

jquery api

jquery api jquery api jquery api jquery api jquery api

2011-10-23

jquery api 1.4.6

jquery api 1.4.6 jquery api 1.4.6 jquery api 1.4.6 jquery api 1.4.6jquery api 1.4.6jquery api 1.4.6jquery api 1.4.6

2011-10-23

jquery api 1.2

jquery api 1.2 jquery api 1.2 jquery api 1.2jquery api 1.2jquery api 1.2jquery api 1.2jquery api 1.2jquery api 1.2jquery api 1.2jquery api 1.2

2011-10-23

jquery七天入门指南

jquery 指南 pdf jquery 指南 pdf jquery 指南 pdfjquery 指南 pdfjquery 指南 pdfjquery 指南 pdfjquery 指南 pdfjquery 指南 pdfjquery 指南 pdfjquery 指南 pdf

2011-10-23

hibernatevalidator 学习

hibernatevalidator 学习hibernatevalidator 学习hibernatevalidator 学习

2011-08-30

元测单试jnuit spring

元测单试jnuit spring 元测单试jnuit spring 元测单试jnuit spring 元测单试jnuit spring

2011-08-17

easymock 学习

easymock 学习easymock 学习easymock 学习easymock 学习easymock 学习easymock 学习easymock 学习easymock 学习easymock 学习

2011-08-16

ext-3.4.0源码

ext-3.4.0.zip源码源码源码源码源码源码源码源码源码源码源码源码源码源码源码源码源码

2011-08-14

SQL Server表管理.rar

create table student( id int not null, name varchar(20) not null, sex char(1) not null) class student{ int id; String name; } String sql="select * from user"; create table teachers( id bigint identity(1,1) not null primary key, teachid int not null unique e_mail varchar(30) not null unique )

2009-09-06

SQL Server管理.rar

1.SQL Server数据库管理 2.SQL Server表管理 3.SQL Server数据管理

2009-09-06

firebug-1.4.2-fx.zip

Firebug能够调试所有网站语言,如Html,Css等,但FireBugfirebug最具吸引力的就是javascript调试功能,使用起来非常方便,而且在各种浏览器下都能使用。   除此之外,还具备比如html,css,dom的察看与调试,网站整体分析等等。总之就是一整套完整而强大的 WEB开发工具。再加上其开源性,前途不可限量。

2009-09-06

JDBCforMSSQL

SqlServer2000JDBC msbase.jar mssqlserver.jar msutil.jar

2009-05-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除