Go语言中文网 为您找到相关结果 16

Go连接MySQL的方式问题

在系统安装好mysql,go以及mysql-go的驱动之后,需要做的就是连接mysql,给个简短的连接数据库代码如下: package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" ) func main() { db, err := sql.Open("mysql", "user:password@/test")//对应数据库的用户名和密码 defer db.Close() if err != nil { panic(err) } else { fmt.Println("success") } rows, err := db.Query("SELECT number FROM squarenum"...阅读全文

博文 2015-06-18 09:06:09 happy_life123

golang interface浅谈

golang 的接口设计是这门编程语言的两大亮点之一,本文仅浅谈golang接口和其它语言(以C++为例)的区别。引用《Go语言编程》作者在书中的话,go语言中的接口是“非侵入式”的,而其它语言中的接口是“侵入式”的。因此,需要对非侵入式和侵入式分别理解才能理解清楚golang 接口的优点首先 让我们看看C++中的接口:在C++中,接口的实现必须要通过继承```cppinterface IFoo{ void Bar(); } class Foo: public IFoo {} IFoo *Foo=new IFoo;在此类语言中 即使另外有一个接口IFoo2实现了与IFoo完全一样的接口方法,甚至名字相同只不过位于不同的名字空间下,编译器也会认为上面的类Foo只实现了IFoo的接口,而没有实现...阅读全文

博文 2017-03-30 01:29:56 themoonstone

归并排序及go语言实现

归并排序的基本思想 将待排序序列R[0...n-1]看成是n个长度为1的有序序列,将相邻的有序表成对归并,得到n/2个长度为2的有序表;将这些有序序列再次归并,得到n/4个长度为4的有序序列;如此反复进行下去,最后得到一个长度为n的有序序列。 综上可知: 归并排序其实要做两件事: (1)“分解”——将序列每次折半划分。 (2)“合并”——将划分后的序列段两两合并后排序。 归并操作(merge),也叫归并算法,指的是将两个顺序序列合并成一个顺序序列的方法。 如 设有数列{6,202,100,301,38,8,1} 初始状态:6,202,100,301,38,8,1 第一次归并后:{6,202},{100,301},{8,38},{1},比较次数:3; 第二次归并后:{6,100,202,301...阅读全文

博文 2016-04-15 16:00:01 zhaoguoguang

今年黑马项目,我已经关注skycoin#skycoin

一、暴涨103%,老牌币强势归来BTC一骑绝尘冲破8000大关并站稳脚跟,蓄势待发!其他数字货币一样开始了大狂欢。XRP、ETH、EOS先后领涨,不甘落后。SKY涨势抢眼,连续三天总共暴涨103%。15日夜间,SKY闪亮登场——暴涨90%以上,有图有真相: 图片发自简书App 15日,SKY最高达到2.11美元,24小时最大涨幅96.41%。16日,SKY继续飞升,价格超过2美元。 图片发自简书App 截止至17日上午11时30分,在BTC价格大跳水的情况下,SKY兑BTC的价格仍逆势大涨,涨幅达近6%(见下图)。SKY已经连续3天高歌猛进,走出惊人大阳线。这也不得不引起小编的思考,将手中的BTC置换成SKY或许是目前规避风险最稳妥的操作。 图片发自简书App 币市如火如荼,场外人和币圈小伙...阅读全文

博文 2019-05-21 00:34:44 钢铁肥蛋嘭嘭嘭

设计自用的golang日志模块

设计自用的golang日志模块 golang的原生日志模块不能满足需求,而开源的第三方包,也不完全够用。用户较多的logrus,却没有rotate功能,这已经是众所周知的。对于运维来说,当然是希望日志的处理中比较简单、实用、够用。不需要额外的通过系统来实现logrotate。 1、需求 从需求方面来说,主要有几个方面: 一方面肯定是需要有轮转功能,而且要限制保留的日志份数。至于是按文件大小,还是按天、按小时切割,则可以讨论。 另一方面,对于日志的级别,如果能够动态调整,则方便日志关闭常规日志,在线调试时,动态降低日志的等级,打印更多debug日志。 2、调研 目前主要的有几个: github.com/sirupsen/logrus。用户广泛,但明确表示不支持日志切割功能,建议通过hook走日...阅读全文

博文 2018-03-09 14:30:02 qinqiao

n! 的结果中包含多少个0(Go语言实现)

n! 的结果中包含多少个0(Go语言实现) 详细解释见代码注释 package main import ( "fmt" ) type myInt int32 /* *统计阶乘n!结果中0的个数 *方法1:统计5出现的次数 *如25出现了两个5 *因为任意一个偶数都可以和5组成10 *而且偶数的量是足够的 */ func fZereCount1(n myInt) myInt { var count, i myInt = 0, 0 //完全枚举 for ; n >= 5; n-- { i = n //i值是不会等于0的,所以无需加上&& i > 0 for i%5 == 0 { count++ i /= 5 } } return count } /* *方法1的第二种写法 */ func fZe...阅读全文

博文 2015-06-17 23:01:18 WAPWO

重定向301和302

网上很多关于301和302的区别,这里只举实例以作说明:3011、浏览器第一次访问url时,会请求服务器,然后从响应头的Location字段拿到落地页做跳转2、浏览器后面再访问url时,不会请求服务器,直接用浏览器缓存直接跳转到最终落地页3、清理浏览器缓存后,再次请求url,同第1步3021、浏览器无论什么时候访问url,都会请求服务器,然后从响应头的Location字段拿到落地页做跳转综上:如果希望每次跳转都经过服务器,必须使用30...阅读全文

博文 2019-08-06 10:37:04 yanglikai

敏感词过滤算法

前言 在游戏设计中一个最基本的功能就是处理屏蔽字、敏感字,至于为什么这个需求这么重要?你懂的。在网上搜了很多资料,发现主要有三种实现方式: 对于输入的一句话message, 1、循环使用所有的屏蔽词去message中查找,看是否存在,如果存在则判定为敏感词。 优点:简单,只要学过几个月编程的都会; 缺点:效率太低,而且效果不是太好; 2、将有共同起始内容的屏蔽词分为一组,然后再使用方式1。 优点:比方案1效率高一些; 缺点:效率仍然很低,而且效果太差; 3、使用DFA算法。 优点:效率高,内存消耗低; 缺点:与前两者相比,实现复杂。 综上:为了应对越来越多的敏感词,寻找一个高效率的敏感词过滤算法就摆在了各个程序员的面前。而DFA是所有方法里面效率最高的。 在网上看了很多现有的实现方式,觉得存...阅读全文

Golang中的接口

软硬件环境 Windows 10 Go 1.8 什么是接口? 接口定义了一组方法,但是这些方法不包含实现的代码,另外接口里也不能包含变量。如下定义了一个接口 type intfNamer interface { Method1(param_list) return_type Method2(param_list) return_type ... } 为什么要设计接口? Go不是传统意义上的面向对象编程语言,它没有类及其继承的概念。接口是一种契约,实现类型必须满足它,它描述了类型的行为,规定类型可以做什么。接口彻底将类型能做什么,以及如何做分离开来,使得相同接口的变量在不同的时刻表现出不同的行为,这就是多态的本质。 简单接口示例 package main import ( "fmt" ) ty...阅读全文

博文 2017-05-25 00:36:04 djstava

DCRM 5.0发布,Defi时代真正到来

FUSION Foundation成立于2018年,旨在创建一个数字世界中无边界且互联的金融系统。从一开始,FUSION便专注于此类系统所需的基础部分:“分布式控制权限管理(DCRM)”的跨链和跨系统解决方案。FUSION 很高兴地宣布,最新版本DCRM 5.0将在 11月25日作为开源实施发布。该版本提供了灵活的模块,能够供企业和个人于所在的环境和工作流程中进行创新。在此版本中,FUSION 仍然恪守其开源承诺,利用社区广泛的影响力来加速全球创新。 为什么互操作性如此重要 互操作性的重要性已在其他文章中详细介绍过。综上所述,只有当区块链连接到一切并使得所有人均可访问时,才能完全实现区块链的所有可能性。然而,随着成千上万的项目构建区块链生态系统,而这些生态系统只能在各自的平台中应用,区块链行...阅读全文

ipset

IPSET 本项目提供与Linux IPSET技术兼容的服务器隔离策略自动部署和更新方案 快速开始 本项目为Golang开发的插件 原理   IPTables是Linux服务器上进行网络隔离的核心技术,内核在处理网络请求时会对IPTables中的策略进行逐条解析,因此当策略较多时效率较低;而是用IPSet技术可以将策略中的五元组(协议,源地址,源端口,目的地址,目的端口)合并到有限的集合中,可以大大减少IPTables策略条目从而提高效率。测试结果显示IPSet方式效率将比IPTables提高100倍。   使用到的IPTables参数如下: -A INPUT|OUTPUT 指定IPTables链,对应网络数据流相对于当前网卡的方向是流入或流出 -p tcp|udp|icmp 指定网络数据流...阅读全文

博文 2018-11-13 16:34:45 超哥__

为什么go中的receiver name不推荐使用this或者self

前言 在日常的开发中我们除了定义函数以外, 我们还会定义一些方法。这本来没有什么, 但是一些从PHP或者其他面向对象语言转GO的同学往往会把receiver name命名为this, self, me等。 笔者在实际项目开发中也遇到类似的同学, 屡次提醒却没有效果,于是决心写下这篇文章以便好好说服这些同学。 CR标准做法 首先我们来看一下GO推荐的标准命名Receiver Names,以下内容摘抄自https://github.com/golang/go/wiki/CodeReviewComments#receiver-names: The name of a method's receiver should be a reflection of its identity; often a ...阅读全文

博文 2020-08-19 10:32:44 新世界杂货铺

golang 1.8 gc的演进

在java的gc中,主要有三种算法,即:标记-删除,标记-整理,复制,网上有很多资料介绍相关内容,其中标记主要是为了找到内存中不可达的对象,并将其回收。而gc过程中最关键的指标就是STW时间,如果STW过长,会影响整体程序的响应。 Serial Serial 采用单一线程进行GC。 特点:STW时间长,但是无线程切换开销,简单高效 ParNew ParNew 与Serial一样,只是在新生代采用并发gc CMS CMS CMS收集器主要用于老年代内存的回收,致力于降低STW时间,但是却拉长了gc的整体时间。 对CPU资源非常敏感,可能会导致应用程序变慢,吞吐率下降。 无法处理浮动垃圾,因为在并发清理阶段用户线程还在运行,自然就会产生新的垃圾,而在此次收集中无法收集他们,只能留到下次收集,这部...阅读全文

博文 2019-12-08 01:33:00 淡泊宁静_3652

go学习记录--如何运行

go学习记录--如何运行 个人一直觉得语法的学习不存在多大问题,咱们真正要了解的是程序如何运行。对于go语言的编译到运行其实还是一个比较有意思的过程,比如go的代码写完到底层的汇编代码是一个怎样的结构,通过了解底层的结构,我们应该如何去深入的学习go。 导读 go程序编译执行 再看汇编码 思考总结 go程序编译执行 咱们先简单运行一个go的代码例子,看下要满足什么条件go才能编译执行 代码示例 go的文档肯定会告诉你,打包运行一个程序需要在main包下有一个main方法才行。写了下面一段简单代码,咱们看下具体的操作流程 package main import "fmt" func main() { fmt.Println("hello world") } 上面代码写完之后咱们先运行一下,通过...阅读全文

博文 2020-03-22 17:32:42 A1len

Golang LeetCode - 2. Add Two Numbers 两数相加

Add Two Numbers You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list. You may assume the two numbers do not contain any leading zero, except the number 0 itself. Example: Input: (2 -> ...阅读全文

博文 2020-03-31 23:32:58 Avery_up

golang并发编程

go main函数的执行本身就是一个协程,当使用go关键字的时候,就会创建一个新的协程 channel channel 管道,用于在多个协程之间传递信号 无缓存管道 当对无缓冲通道写的时候,会一直阻塞等到某个协程对这个缓冲通道读 阻塞场景: 通道中无数据,但执行读通道。 通道中无数据,向通道写数据,但无协程读取。 综上,无缓存通道的读写必须同时存在,且读写分别在两个不同的协程 func main(){ ch := make(chan int) go func(ch chan int){ ch <-222 }(ch) println(<-ch) } 有缓冲管道 有缓存时可以向通道中写入数据后直接返回,缓存中有数据时可以从通道中读到数据直接返回,这时有缓存通道是不会阻塞的 阻塞场景: 通道的缓存...阅读全文

博文 2020-01-10 16:32:41 Cazy