amagicim(一个基于vue的im组件)
amagic现在只有web版,还在不断完善中 github地址:https://github.com/aixinaxc/amgaici...阅读全文
amagic现在只有web版,还在不断完善中 github地址:https://github.com/aixinaxc/amgaici...阅读全文
golang map的实现源码在文件 runtime/map.go中,map的底层数据结构是hash表。hash函数:通过指定的函数,将输入值重新生成得到一个散列值hash表:散列值会确定其键应该映射到哪一个桶。而一个好的哈希函数,应当尽量少的出现哈希冲突,以此保证操作哈希表的时间复杂度 接下来从下面三个方面讲解: map数据结构 map查找实现 map插入实现 1. map的数据结构定义 type hmap struct { count int //map存储数据的个数,len(map)使用 flags uint8 //flags会标识当前map,比如hashWriting=4第4位表示有goroutine正在往map写入 B uint8 // map有 2^B 个buckets hash...阅读全文
在构建混合云时,保证云上云下的通信安全,实现云上网络和企业IDC现有防火墙设备的有效互通,是混合云安全的一个不可忽略的重要环节。山石网科的下一代防火墙系列是企业广泛使用的一款网络安全产品。该产品以其优秀的性能入选Gartner的下一代防火墙魔力象限。权威安全测评机构NSS Labs将山石防火墙列为推荐级产品。 经过我们的测试,阿里云VPC完全兼容与山石网关防火墙设备之间的互联。今天,我们学习一下配置阿里云VPN网关和山石防火墙的正确姿势,实现云上云下互通,构建安全可靠的混合云网络。 timg?image&quality=80&size=b9999_10000&s 规划和准备 在部署 VPN 网关前,请您先做好以下准备: 为云下 IDC 和云上 VPC 规划两个私网IP...阅读全文
Go 语言变量变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。变量可以通过变量名访问。Go 语言变量名由字母、数字、下划线组成,其中首个字母不能为数字。声明变量的一般形式是使用 var 关键字:var identifier type变量声明第一种,指定变量类型,声明后若不赋值,使用默认值。var v_name v_type v_name = value第二种,根据值自行判定变量类型。var v_name = value第三种,省略var, 注意 :=左侧的变量不应该是已经声明过的,否则会导致编译错误。v_name := value // 例如 var a int = 10 var b = 10 c : = 10实例如下:package main var a = "w3csch...阅读全文
当调用一个函数时,会对其每一个参数值进行拷贝,如果一个函数需要更新一个变量,或者函数的其中一个参数实在太大我们希望能够避免进行这种默认的拷贝,这种情况下我们就需要用到指针了。对应到我们这里用来更新接收器的对象的方法,当这个接受者变量本身比较大时,我们就可以用其指针而不是对象来声明方法。 如下: func (p *Point) ScaleBy(factor float64) { p.X *= factor p.Y *= factor } 总结为两点 不管你的method的receiver是指针类型还是非指针类型,都是可以通过指针/非指针类型进行调用的,编译器会帮你做类型转换。 在声明一个method的receiver该是指针还是非指针类型时,你需要考虑两方面的因素,第一方面是这个对象本身是不是...阅读全文
#include
```go package main import ( "fmt" ) func main(){ nextInt := intSeq() fmt.Println(nextInt) //这里打印的是地址吗? } func intSeq() func() int { i := 0 return func() int{ i += 1 return i } } ``...阅读全文
想作为一个client发起一个tcp连接,指定源地址和源端口, 同时连接带有timeout功能 我看了net库 有一个函数 func DialTimeout(network, address string, timeout time.Duration) (Conn, error) 可以实现带有timeout的tcp连接,但是它无法指定源端口,源地址 另一个函数 func DialTCP(net string, laddr, raddr *TCPAddr) (*TCPConn, error) 可以带有源地址,源端口,但是,却没有timeout功能 有什么办法能实现两者兼而有之? golang目前是初学者,隐约觉得可以通过为net.Dailer这个结构来指定...阅读全文
最近尝试把开发环境,升级到Golang1.7.1后,程序会偶发性的宕掉,查看日志后,发现总是在一个计算切片的哈希值的地方,错误信息是: unexpected fault address 0xc043df4000, fatal error: fault 在1.7之前程序持续运行2年了,从来没有出现这个问题,怀疑是Golang编译器升级到SSA后导致的。将程序的代码精简为以下函数: //本代码的主要作用是,把一个字符串的Assii的值累加起来。 func SimpleCrc(ptr uintptr, size int) int { ret := 0 maxPtr := ptr + uintptr(size) for ptr < maxPtr { b := *(*byte)(unsafe.Poin...阅读全文
简单的说常见的网络推广渠道上主要有四类1.引擎类 google、baidu、yahoo等,主要形式以收费的关键字竞价,和免费的自然排名。 2.行业网站类 每个行业都有行业网站,各种黄页网站和大综合性门户网站也有行业目录,主要是登录,分为手工登录(效果好速度慢,需要专业人员) 自动登录 两种,而且自动登录又有 1登录推广网站(自动帮你登录多个网站目录)。2.推广软件(有些推广软件号称能做所有的事情,其实每个软件能力都是有限的有针对的)将网站推广到所能登录的各类目录(引擎)上。3.电子商务平台如阿里巴巴等等,这些大的电子商务平台可以很好推广效果,而且很多大站的反向链接,对你网站PR分(gooele的评分系统,这里泛指各种评分机制)作用是很大的。只有你的PR高了,你的网站自然排名才会高,自然排名高...阅读全文
博客原文: 【译】CPU 高速缓存原理和应用 曾三次获得 F1 世界冠军的杰基•斯图尔特 (Jackie Stewart) 表示,了解汽车的工作原理让他成为了一名更好的驾驶员。 "你并不需要先成为一个工程师才能去做一个赛车手,但是你得有一种机械同感 (Mechanical Sympathy)" Martin Thompson (高性能消息库 LMAX Disruptor 的设计者) 就一直都把机械同感的理念应用到编程中。简而言之,了解计算机底层硬件能让我们作为一个更优秀的开发者去设计算法、数据结构等等。 在这篇文章中,我们会深入钻研计算机处理器然后看看了解它的一些概念是如何帮助我们去优化程序的。 基本原理 现代计算机处理器是基于一种叫对称多处理 (symmetric multiprocess...阅读全文
GO-LANG学习笔记--基础语法篇(一) 变量 go语言的变量需要使用var关键字显式声明,如果给变量赋予了初始值的话,可以不声明变量类型,go可以自动推导变量的数据类型,如下面的变量s。 var x int var f float32 = 1.6 var s = "abc" 也可以有更简单的办法来声明变量--在同一行声明多个变量,如下: var x, f, s = 1, 1.6, "abc"; 或者在代码块中声明多个变量,如下: var ( x int f float = 1.6 s = "123" ) 在一个函数内部进行变量声明和赋值时,可以有更简便的方法: func test() { x := 123; } 多变量赋值时,程序会先计算所有的相关值后,一次从左到右为变量赋值,如下: d...阅读全文
首先说结论:在Go语言里,所有的参数传递都是值传递(传值),都是一个副本,一个拷贝,因为拷贝的内容有时候是非引用类型(int、string、struct等这些),这样就在函数中就无法修改原内容数据;有的是引用类型(指针、map、slice、chan等这些),这样就可以修改原内容数据。 非引用类型(值类型):int,float,bool,string,以及数组和struct 特点:变量直接存储值,内存通常在栈中分配,栈在函数调用完会被释放 引用类型:指针,slice,map,chan,接口,函数等 特点:变量存储的是一个地址,这个地址存储最终的值。内存通常在堆上分配,当没有任何变量引用这个地址时,该地址对应的数据空间就成为一个垃圾,通过GC回收 array (1)使用值传递在函数间传递大数组 ...阅读全文
相关原理概述 先来讲讲什么是CNI? CNI(容器网络接口)是一种操作容器网络规范,包含方法规范,参数规范等。CNI只关心容器的网络连接,在容器创建时分配网络资源,并在删除容器时删除分配的资源。因为这个焦点,CNI有广泛的支持,规格易于实现。CNI接口只需要实现两个方法,一个创建容器时调用,一个删除容器时调用。 image Kubernetes如何支持和运行遵循CNI规范的插件 kubernetes首先以插件的形式完成(pod)容器的网络资源设置。内置的插件包括:cni,kubenet,hostport等。这里简单说说kubenet。这是一个简单的网络插件,每台机器上创建一个br0网桥,根据PodCIDR为每个pod设置ip连接到br0网桥上。次方式可结合一些网络路由工具完成一个小规模的集群...阅读全文
虽然世界一直在追逐加密领域的技术迭代与币价的上涨,但Skycoin的野心更大,自2011年开始就默默地构建自己的大生态。Skycoin由一些打造比特币和以太坊的工程师共同研发。他们致力于完善比特币的诸多缺点,并在此过程中开发出解决问题的方案。要知道,比特币的很多问题至今仍困扰着主要的加密货币和区块链应用程序平台。一、比特币的缺陷当Satoshi创建比特币时,他的想法是建立一个由不同国家拥有的、数十万个节点组成的全球去中心化网络。这样一来,任何政府都无法控制或管理比特币。然而,如今比特币已经变得集中化且易受攻击。挖矿导致的巨大的能源消耗、高昂的交易手续费以及交易确认时间过长等问题也经常遭到人们的诟病。二、Skycoin的优势Skycoin首先是作为一种加密货币,也被称为SKY。SKY与其竞争对...阅读全文
但凡IT江湖侠士,算法与数据结构为必修之课。早有前辈已经明确指出:程序=算法+数据结构 。要想在之后的江湖历练中通关,数据结构必不可少。数据结构与算法相辅相成,亦是阴阳互补之法。 开篇 说道数组,几乎每个IT江湖人士都不陌生,甚至过半人还会很自信觉的它很简单。的确,在菜菜所知道的编程语言中几乎都会有数组的影子。不过它不仅仅是一种基础的数据类型,更是一种基础的数据结构。如果你觉的对数组足够了解,那能不能回答一下: 数组的本质定义? 数组的内存结构? 数组有什么优势? 数组有什么劣势? 数组的应用场景? 数组为什么大部分都从0开始编号? 数组能否用其他容器来代替,例如c#中的List
使用 Golang 的开发者都知道,Go 语言里有指针的概念,它比 C++ 的指针要简单的多,同时你需要记住一个概念:Go 语言是 值传递。我们今天探讨的是在编码的时候到底该使用指针呢还是值类型?在作为参数和返回值的时候该如何去使用?两种传递方式有什么区别? 基础概念 值类型和引用类型 这幅图中展示了常用的值类型和引用类型(引用类型和传引用是两个概念)。在左边是我们常用的一些值类型,函数调用时需要使用指针修改底层数据;而右边是 “引用类型”,我们可以理解为它们的底层都是指针类型,所以右边的类型在使用的时候会有些不同,下文中会举例说明。 举个栗子 type Foo struct { Name string } var bar = "hello biezhi" // -------------方...阅读全文
#### 【题目】 编写一个结构体,用两个栈实现队列,支持队列的基本操作(push、poll、peek) #### 【难度】 ★★☆☆ #### 【解答】 ```go package main import ( "container/list" "errors" "fmt" ) func main() { q := NewQueue() q.Push(1) fmt.Println(q.Peek()) q.Push(2) fmt.Println(q.Peek()) fmt.Println(q.Poll()) fmt.Println(q.Peek()) fmt.Println(q.Poll()) fmt.Println(q.Poll()) fmt.Println(q.Peek()) } type...阅读全文
说到穿越长城的软件有很多,不过最近最有名而且免费的就非goagent莫属了,goagent是利用谷歌的GAE服务来翻越长城的,具有速度快,稳定的特点,正好今天我的ssh代理过期,于是准备以后使用goagent来翻墙。 1:申请appengine.google.com的个人apppid 首先登录appengine.google.com,申请个人apppid,它将在Goagent中用到。appid只要唯一就可以,必须是英文字符和数字。 二、安装和本地部署 安装goagent服务端 既然已经成功的申请到了apppid,那么接下来的工作就是安装goagent的服务端了。 1:下载 首先我们下载goagent:https://code.google.com/p/goagent/ 解压到用户根目录,然后...阅读全文
本文忽略了匿名结构体跟结构体匿名方法,一般作为开发者不建议去玩这种技巧性但没实际意义的东西,直接从结构体的值传递跟引用传递开始 2、值传递和引用传递 无论学习哪门语言,都基本会大谈特谈“值传递”和“引用传递”的问题,GO语言也免不了俗气一把,在GO语言中除了切片(slice)、集合(map)、通道(channel)和接口(interface)之外,其它的都是值传递,看下面的例子: /*声明一个结构体*/ type employee struct { name, address string // 姓名、住址 height, weight float64 // 身高、体重 } /*定义方法,该方法入参为结构体,通过该方法修改结构体成员name的值*/ func modifyAttribute(...阅读全文
指针的定义 A pointer is a value that points to the memory address of another variable. 指针是一个指向另一个变量内存地址的值。 示例 1 package main import ( "fmt" ) func main() { a := 200 b := &a fmt.Println("a -->", a) fmt.Println("*b -->", *b) fmt.Println("&a -->", &a) fmt.Println("b -->", b) *b++ fmt.Println("a -->", a) fmt.Println("*b -->", *b) } 变量 a 的值是 200,变量 b 的值就是变量 ...阅读全文
今天在Ucloud国际版的机器上配置某个不可描述的服务时,遇到了 socket.error: [Errno 99] Cannot assign requested address 的错误,详细如下: [root@liabio ~]# docker logs c0c34ba49967 2019-07-15 00:02:26 INFO loading libcrypto from libcrypto.so.1.0.0 2019-07-15 00:02:26 INFO starting server at 128.1.132.124:8002 Traceback (most recent call last): File "/usr/local/bin/ssserver", line 11, in...阅读全文
网络的主要性能参数包括带宽,时延,抖动、丢包率。 一、在RT-Thread 开启netutils网络组件 在rt-thread bsp工程ConEmu工具的中输入menuconfig,打开netutils的 iperf和 NetIO工具。 在 RT-Thread 上使用 Finsh/MSH 命令来获取 IP 地址 msh />ifconfig network interface device: e0 (Default) MTU: 1500 MAC: 00 80 e1 10 38 35 FLAGS: UP LINK_UP INTERNET_UP DHCP_ENABLE ETHARP BROADCAST IGMP ip address: 10.55.2.188 gw address: 10.55...阅读全文
Go汇编学习 1.进程内存地址与寄存器 2017-02-07 前言 本文是我学习Go汇编的一些心得,网上关于Go的汇编资料实在是太少了,本人计算机不是科班,所以可能会有错误。 进程内存地址空间 操作系统执行程序时,会把程序的二进制部分加载进内存,同时分配一定的内存空间。如下图所示 TEXT/Code segment TEXT segment,或者叫Code segment,保存了程序的指令。 只能执行 固定长度 Data segment Data segment 保留着进程初始化的全局和静态的变量。这个数据段可以变为初始化只读区域(initialized read-only area)和初始化读写区域(initialized read-write area)。 Gvar Section 一个...阅读全文
【编者的话】多主机的网络直连需求源于ACS的金融云业务场景。 在此场景下,Docker容器运行在阿里云的ECS VM之中, Docker传统的网络解决方案采用NAT的方式实现容器间互联,不同宿主机的容器之间无法感知到真实ip地址,因此无法满足如配置中心这样的架构。而ECS又不支持给VM独立增加IP,从而迫使我们在短期内只能一个VM跑一个Docker的方案,势必会造成资源的浪费。OVS的直连方案隔离了宿主机和Docker容器的网络平面,提供了VM运行多Docker容器的能力,结合上ACS的容器编排能力,能大大提高资源的利用率,降低成本。 1. Docker主机网络互联的概述如果要实现多主机的容器网络通信,Docker,原生的网络模型可以采用Port Mapping的方式,本质上是对两个有互访需...阅读全文
就是根据一个开始IP地址和IP数然后将起始IP地址和掩码存入一个结构中,但是在根据IP数进行划分cidr的时候又一些问题。大多数的IP数都符合直接划分的规则,既直接imask := UintToIP(0xffffffff ^ uint32(num_ip-1))这样就能直接获得一个掩码,但是有部分IP数进行上述操作会导致直接处理的话掩码不是高位全1低位全0,需要额外进行划分处理,如num_ip=4627457,则掩码变为255.185.128.0, 要怎么对num_ip进行分段的处理才能使获得的掩码符合规则。。。...阅读全文
很简单,只需要两行代码。 http.Handle("/", http.FileServer(http.Dir("./"))) //把当前文件目录作为共享目录 http.ListenAndServe(":8080", nil) 这时候,通过浏览器打开 http://ip地址:8080 就可以了。 也许这样就完了,但是我为了方便非程序员用户使用,还需要程序自动获取本机的内网ip地址,最后浏览器自动打开这个地址。 获取内网ip地址 func GetIntranetIp() (r []string) { addrs, err := net.InterfaceAddrs() if err != nil { log.Fatal(err) } for _, address := range addrs {...阅读全文
前言 最近在整理之前写程序,学习时所记录的有道云笔记,发现一些有意思的小点跟大家分享一下。如有错误请大家给指出 一、闭包 defer 闭包(匿名函数) func test(){ i, n := 1 ,2; defer func(a int){ fmt.Println("defer:", a , n); //n被闭包引用 }(i) //复制i的值 i , n = i+1,n+2; fmt.Println(i , n); } 我们看一下结果: 2 4defer: 1 4 为什么会这样?是因为闭包复制的是原对象指针,出现了延迟引用现象 (加上defer的延迟调用,正好可以解释上面程序的延迟引用现象)。我们在使用闭包的时候要注意这个问题,同样在for 循环中 也会出现类似现象。 感谢“”小强”,增加...阅读全文
先记录代码 package main import "fmt" /* 声明指针 *T 是指向类型T的值的指针变量的类型 */ func main() { //b := 255 //var a *int = &b // a是int指针,指向b的内存地址 //fmt.Printf("Type of is:%T\n", a) //fmt.Println("address of b is", a) // //a := 22 //var b *int //b 这个变量是int类型的指针变量,变量的值,也只能是int型指针 //if b == nil { // // 指针的零值是nil // fmt.Println("b is", b) // b = &a // fmt.Println("b after...阅读全文
呃,最近在学习go语言,因为我是从java转过来的,有好多不习惯 go函数返回类型引用类型和值类型 go函数的返回值可以为引用类型和值类型,引用类型就是直接返回内存地址值类型是变量的副本,所以大多数情况下是返回内存地址比较节省空间 package main import ( "fmt" ) func getVar() string { var name = "wtsoftware" fmt.Println("函数内的变量内存地址:", &name) return name } func getVarAdd() *string { var name = "wtsoftware" fmt.Println("函数内nameAdr的变量内存地址:", &name) return &name } fu...阅读全文
所说的虚拟主机就是在一台服务器里运作几个网站,提供WEB、Mail、FTP等服务。那么在搭建wed服务器的同时,那么如何在[url=http://www.iisp.com/ztview/F_qgc5.html][b]wed服务器搭建虚拟主机[/b][/url]呢? wed服务器分为几个步骤来解说: 1.通过“开始”→“程序”→“管理工具”→“Internet服务管理器”然后启动“Internet信息服务”管理工具,IIS的全部内容都在这里设置。  2.在窗口左边你的主机名上单击鼠标右键,依次选择“新建”...阅读全文
JVM优化之调整大内存分页(LargePage) 本文将从内存分页的原理,如何调整分页大小两节内容,向你阐述LargePage对JVM的性能有何提升作用,并在文末点明了大内分页的副作用。OK,让我们开始吧! 内存分页大小对性能的提升原理 首先,我们需要回顾一小部分计算机组成原理,这对理解大内存分页至于JVM性能的提升是有好处的。 什么是内存分页? 我们知道,CPU是通过寻址来访问内存的。32位CPU的寻址宽度是 0~0xFFFFFFFF ,计算后得到的大小是4G,也就是说可支持的物理内存最大是4G。 但在实践过程中,碰到了这样的问题,程序需要使用4G内存,而可用物理内存小于4G,导致程序不得不降低内存占用。 为了解决此类问题,现代CPU引入了 MMU(Memory Management Un...阅读全文
4.4 变量 4.4.1 简介 声明变量的一般形式是使用 var 关键字:var identifier type。 需要注意的是,Go 和许多编程语言不同,它在声明变量时将变量的类型放在变量的名称之后。 Go 为什么要选择这么做呢?首先,它是为了避免像 C 语言中那样含糊不清的声明形式,例如:int* a, b;。在这个例子中,只有 a 是指针而 b 不是。如果你想要这两个变量都是指针,则需要将它们分开书写(你可以在 Go 语言的声明语法 页面找到有关于这个话题的更多讨论)。 而在 Go 中,则可以和轻松地将它们都声明为指针类型: var a, b *int 其次,这种语法能够按照从左至右的顺序阅读,使得代码更加容易理解。 示例: var a int var b bool var str s...阅读全文
15.蛤蟆笔记go语言——Web编程概念 Go目前已经拥有了成熟的Http处理包,这使得编写能做任何事情的动态Web程序易如反掌。 Web原理 浏览器本身是一个客户端,当你输入URL的时候,首先浏览器会去请求DNS服务器,通过DNS获取相应的域名对应的IP,然后通过IP地址找到IP对应的服务器后,要求建立TCP连接,等浏览器发送完HTTP Request(请求)包后,服务器接收到请求包之后才开始处理请求包,服务器调用自身服务,返回HTTP Response(响应)包;客户端收到来自服务器的响应后开始渲染这个Response包里的主体(body),等收到全部的内容随后断开与该服务器之间的TCP连接。 概念 URL(Uniform Resource Locator)是“统一资源定位符”的英文缩写...阅读全文
如果是数据类型,必然能够在定义的时候使用,这个好像只能够赋值,是个右值,所以&表示调用一个内建函数,求这个变量的内存地址 *才是数据类...阅读全文
Golang工程师 岗位职责: 1、负责产品平台系统的研发工作; 2、参与制定前后端业务流程、接口协议、文档输出等 3、参与项目研发、部署及日常运维工作; 4、解决和优化系统性能。 任职要求: 1、扎实的后端基础知识,精通golang; 2、熟悉Linux,对服务器性能优化有深刻了解,有高并发项目经验优先; 3、熟悉网络编程,了解TCP/IP,HTTP等工作原理; 4、精通MySQL,能写出高性能SQL及分析性能瓶颈,熟悉数据库表的设计; 5、熟练运用Redis、MYSQL、Mongodb、KAFKA等框架技术; 6、具有良好的沟通能力、学习能力、分析解决问题能力; 7、具有高度的责任心和团队合作精神。 工作时间:朝九晚六,周末双休 公司地址:深圳南山区粤美特大厦,有意可加微信:z53706...阅读全文
当我学习go的指针数组的时候。下面这段代码可以创建正确的指针数组。 正确代码 const max = 3 func main() { number := [max]int{5, 6, 7} var ptrs [max]*int //指针数组 //将number数组的值的地址赋给ptrs for i := 0; i < max; i++ { ptrs[i] = &number[i] } for i, x := range ptrs { fmt.Printf("指针数组:索引:%d 值:%d 值的内存地址:%d\n", i,*x, x) } } 打印内容。可以看到内存地址都不一样。这是没问题的。 指针数组:索引:0 值:5 值的内存地址:824634212672 指针数组:索引:1 值:6 值的...阅读全文
功能 能够发送/接收请求和响应 能够连接到集群 如果无法连接到群集(如果它是第一个节点),则可以作为主节点启动节点 每个节点有唯一的标识 能够在节点之间交换json数据包 接受命令行参数中的所有信息(将来在我们系统升级时将会很有用) 源码 package main import ( "fmt" "strconv" "time" "math/rand" "net" "flag" "strings" "encoding/json" ) // 节点数据信息 type NodeInfo struct { // 节点ID,通过随机数生成 NodeId int `json:"nodeId"` // 节点IP地址 NodeIpAddr string `json:"nodeIpAddr"` // 节点端口 ...阅读全文
1. 应用开发模型 2. 应用程序开发的SDK 2.1 概述 HFC(Hyperledger Fabric Client)是提供给应用程序开发的SDK,提供了gRPC连接的API。 2.2 SDK规范 SDK定义了两种模块的接口:一个是访问fabric-ca的接口,一个是访问Fabric的接口。其中fabric-ca模块是可选的,可以选用其他成熟的第三方CA系统。官方提供了如下几种语言的SDK实现。 Golang:https://github.com/hyperledger/fabric-sdk-go Node.js:https://github.com/hyperledger/fabric-sdk-node Python:https://github.com/hyperledger/fab...阅读全文
活动地址:https://promotion.aliyun.com/ntms/act/group/team.html?group=dAoHdOHab...阅读全文
请问谁知道有比较好用的生成以太坊分成确定性(HD)钱包地址的库...阅读全文
博客搬家至 Mun: https://kiddie92.github.io 简书同步更新 二维码有点意思,想着把俺的博客地址用二维码展示出来,比较来看还是go语言比较强大啊... 搭建golang环境 安装go # ubuntu sudo apt install golang-go # CentOS sudo yum install go 设置GOPATH 将GOPATH添加至环境变量 echo export GOPATH=/root/go >> ~/.bashrc # 设置当前终端生效 source ~/.bashrc # 查看GOPATH go env 创建所需文件夹 cd /root/go mkdir bin && mkdir pkg && mkdir src GOPATH的目录结构:...阅读全文
一、内存构成 内存管理组件构成 二、扩容 一般来说当内存空间span不足时,需要进行扩容。而在扩容前需要将当前没有剩余空间的内存块相关状态解除,以便后续的垃圾回收期能够进行扫描和回收,接着在从中间部件(central)提取新的内存块放回数组中。 // 根据空间规格 获取对应的索引 再获取alloc数组中对应的span func (c *mcache) refill(spc spanClass){ s := c.alloc[spc] if s != &emptymspan{ s.incache = false} // 解除当前span的状态 s = mheap_.central[spc].mcentral.cacheSpan // 从中间部件获取新的span c.alloc[spc] = s ...阅读全文
Go has various value types including strings, integers, floats, booleans, etc. Here are a few basic examples. Strings, which can be added together with + Integers and floats. Booleans, with boolean operators as you’d expect. package main import "fmt" func main() { fmt.Println("go" + "lang") fmt.Println("1+1 =", 1+1) fmt.Println("7.0/3.0 =", 7.0/3.0...阅读全文
IP search based on 17monipdb, the IP database parser for china with golang...阅读全文
在springboot项目中经常会有上传和下载的需求,此文章主要讲述在springboot项目中可能应用到的文件知识!假设我们需要将一些文件保存到服务器并将其对应信息记录到数据库中,接着能够通过前端发送的请求对文件进行相应的上传、下载和删除工作。 一、本地服务器文件的上传、下载和删除(这里说的本地服务器是指项目部署所在服务器且文件存放在与jar包同级的static的File目录下) 1.创建名为File的数据库(这里使用mysql数据库),并添加resource表,此表将记录所有文件信息,其中有主键id,文件名resource_url以及文件描述resource_desc字段。如下图: 截图 截图 2.在springboot中创建对应的Service层、Dao层、Controller层以及E...阅读全文
作者:Sander van LaarIPFS(星际文件系统)是一种点对点分布式文件系统,以类似BitTorrent的方式存储和检索文件。 IPFS的默认安装方式是将您的计算机连接到全局分布式网络。在某些情况下(隐私,机密性),私有IPFS网络优先于连接到公共IPFS网络。本文介绍在同一网络中的不同Ubuntu计算机上创建专用IPFS网络的步骤。确保他们可以相互联通。不与公共网络建立连接,因此该专用网络上的所有数据只能由网络上的已知对等方访问。对于Mac OS,安装步骤几乎相同,只需下载Mac版本的Go和IPFS即可。要在Windows上安装,您可以从Microsoft商店安装Ubuntu并按照以下步骤操作。第1步 - 安装IPFS开始安装要安装最新版本的IPFS,首先需要从https://g...阅读全文
之前关于Go的复合类型聊到数组和切片,今天继续看看指针(pointer)和结构体(struct)。 指针(pointer) 取地址符–& Go具有指针。指针保存了变量的内存地址。 我们都知道,变量是一种使用方便的占位符,用于引用计算机内存地址。 这里先要说下Go语言的取地址符– &,放到一个变量前使用就会返回相应变量的内存地址。 package main import "fmt" func main() { var a int = 20 var s string = "a" fmt.Printf("a 变量的存储地址: %x\n", &a) fmt.Printf("s 变量的存储地址: %x\n", &s) } %x是十六进制输出。 可以看出,两次运行的结果中,int型的变量地址不同的,st...阅读全文