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

程序员在家办公挣得更多

**程序员在家办公挣得更多** --- 对于程序员来说,凭借自身的技能和经验,外加一些简单的IM沟通,就可以独立完成工作,只要需求明确,那么和其他人面对面沟通的必要性是很有限的。 所以,已经有很多程序员辞职成为自由职业者,边旅游边工作。他们时间自由的同时,财务也更加自由:有数据显示,自由开发者获得的平均报酬要比那些在办公室工作的开发者高出40%。 这些自由开发者在靠谱的IT众包平台上寻找适合自己的任务,完成在线合同和交付任务等一系列交易环节,过程无需任何线下操作,第三方平台完全保证交易双方的利益。只要完成需求方的开发任务,就可以得到相应的报酬。 --- **IT开发众包平台是如何保证程序员安全云工作的?** 拿“[云沃客][1]”网站为例,IT众包流程如下: ...阅读全文

为物联网而生:高性能时间序列数据库HiTSDB商业化首发!

摘要: 近日,阿里云宣布高性能时间序列数据库 (High-Performance Time Series Database , 简称 HiTSDB) 正式商业化。 近日,阿里云宣布高性能时间序列数据库 (High-Performance Time Series Database , 简称 HiTSDB) 正式商业化。 先跟大家聊一下什么叫时序数据。简单的说,就是时间上分布的一系列数值,关键字是数值,我们一般认为的时序数据是什么时间发生了什么事情,但是在时序数据这个领域里定义的时序数据全都是跟数值有关的。也就是说,如果只是一个带有时间戳的一条数据并不能叫做时序数据。举个例子,比如像我早上8点半上楼吃了个饭这条记录,相当于一个日志,这个本身不构成一个时序数据,但是如果某个餐厅早上8点...阅读全文

Golang net/http: HTTP/1.x transport connection broken: malformed HTTP status code "HTTP/1.1"

简述今日用golang开发微信小程序 请求wechat服务接口碰到一个问题记录一下 请求发生了错误 用golang 标准库请求发生了错误 胡乱猜想协议不对 服务器挂了???之后用了postman 工具模拟请求了一下如下 并没有网络错误 此时之前猜想的微信服务器出了问题排除了。最后我仔细看了下请求的日志终于发现了问题 参数之间有了空格 原因参数之间有空格所以才会报net/http: HTTP/1.x transport connection broken: malformed HTTP status code "HTTP/1.1"总结犯错误到是没什么,低级错误真是害死人,太耽误时间了!!...阅读全文

博文 2019-10-18 19:32:48 aside section ._1OhGeD

golang 时间加减

time包中的Add和Sub的用法,Add用于计算某个时间之前和之后的时间点,Sub用于计算两个时间差 package main import ( "fmt" "strings" "time" ) func main() { // Add 时间相加 now := time.Now() // ParseDuration parses a duration string. // A duration string is a possibly signed sequence of decimal numbers, // each with optional fraction and a unit suffix, // such as "300ms", "-1.5h" or "2h45m". // ...阅读全文

博文 2019-08-29 14:33:46 Steven_25bb

Golang多线程文件传输

Golang多线程文件传输 ------------------------------ 前段时间抽空用Golang简单实现了一下多线程文件传输。 采用的方式为将待传输的文件拆分成多部分由多个协程同时传输。服务端在全部数据接收完成后将文件拼接还原为原文件。 服务端编译后直接执行,客户端至少需要带一个参数:待发送文件名 。另外更多参数中,第二参数为指定服务端最终生成的文件名。第三个参数为单次发送数据包的大小(单位:Byte),最大不超过18K。第四个参数为待发送文件拆分的个数,其对应发送的协程数量。 好了,下面是全部代...阅读全文

博文 2015-06-17 20:02:30 LvanNeo

开发者必备的swift技巧

不管是swift语言还是其他什么编程语言,如果我们在使用中,能掌握一部分小技巧的话,往往都能达到事半功倍的效果,今天和大家分享的就是swift开发中的一些小技巧,一起来看看吧。 通过Guard来验证方法   Swift的guard语句让代码更简洁、更安全。guard语句会检查一到多个情况,找出不符合else部分的调用。而else部分需要return,break,continue或throw语句来终止方法的执行,也就是说终止程序控制的执行。   我们使用guard语句来减少代码混乱,并避免在if/else语句中的嵌入。由于在guard语句的else部分中,代码必须转移程序控制的范围,如果出现无效的情况,简单地采用if语句来调用return语句更为安全。在编译时这些bug仍...阅读全文

Greenlets间如何实现互相通信?

  Greenlets互相通信之Event   1.为什么引入Event;   2.Event是什么;   3.编程实例。   为什么引入Event   1.windows中有Events,作为线程间同步的方法;   2.Gevent中则是Greenlet间“同步”的一种方法;   3.获得某个时机;   4.比如学校,下课铃响了,大家可以放学回家了;   5.如果纯手工,如何实现?   代码实例:   # -*- coding: utf-8 -*-   import gevent   from gevent.event import Event, AsyncResult   evt = AsyncResul...阅读全文

云计算学习需要多长时间呢?云计算是什么?

云计算,是大家都比较熟悉的,经过最近几年的发展,云计算已经获得了很大的关注和重视,吸引了越来越多人的眼球和关注,也有不少人的想要学习linux云计算。 但是对于零基础的人员来说,根本不知道什么是云计算?其实简单的来说,云计算就是一种资源交付、使用模式,通过网络获得应用所需要的资源,提供资源的网络叫做云,云中可以进行无线的拓展,随时可以进行获取的。 可以按需进行购买,就好比百度云盘一样,属于云计算里面的公有云。那么云计算听起来复杂,学习会很难吗?学习周期是多长? 其实从划分上来说,云计算分为了公有云、私有云、混合云等多种,不给大家一一讲解这三种的具体表现,但是大家一定要记住,云计算运维相对于编程语言来说,更容易入门,也非常容易掌握,对于零基础的人员来说是非常不错的选择。 对比编程语言来说,编程...阅读全文

博文 2019-11-13 16:34:15 zhouzhou2018

记录从android开发转golang后台开发

自从golang问世之后 一直就对其非常感兴趣,也同时利用业余时间去学习相关知识。当初也是凭着兴趣爱好去学习这门新语言,也没想到现在有机会转做服务器golang开发。服务器开发相关知识犹如汪洋大海,学习起来真是非常辛苦,但自己还是下定决心去做了。怎么说呢,毕竟已经从事Android开发五年,觉得自己应该尝试去学习一下新的东西,挑战一下自己。尝试着站在服务器开发的角度上来看业务问题,这完全是另外一片视野空间。经常有同事问我,为什么选择golang 而不是选择Java等成熟的编程语言,其实这里是这么想的,我觉得任何语言其实都是让我们达到目的的一种方式,没有必要去对比其中的优劣。转做服务器已经有一段时间了,现在才有时间出来写写自己的感想,第一次写感想,云里来雾里去的...阅读全文

博文 2018-07-07 15:34:43 诸葛烤红薯

golang 爬取教务系统的成绩 goquery的使用

const ( login_url string="你的网页"//登陆页 post_url string="你的URL"//跳转页(隐藏路由) main_url string="你的URL"//进入学生专区页 score_url string="你的URL"//成绩页面 creit_url string="你的URL" ) func Login(id string,password string,kksj string,xsfs string) (interface{} interface{},interface{},interface{}){ course_url := "http://jwcxxcx.ccsu.cn/jwxt/tkglAction.d...阅读全文

golang gui介绍

在之前说句:努力过自己想要的生活,珍惜你我他,如果自己的控制力不行,请像办法提升自己不要浪费时间。你可以做任何事情。 首先我们找到go作为21世纪的c语言,饱受开源社区的喜欢,我们都知道c语言是世界上最强大的语言,c可以做一切,go作为21世界c也同理。 当时golang官网没有出gui库,但是有我们玩go玩的6的开发了很多库可以让我们参考 **walk的git地址为:http://github.com/lxn/walk 开发文档为:http://godoc.org/github.com/lxn/walk** package main import ( "log" ) import ( "github.com/lxn/walk" . "github.com/lxn/walk/declarat...阅读全文

博文 2020-04-27 19:32:49 南苑bert

后端工程师入手了树莓派 pi 3B和SIM 900

po 主是苦逼码农一枚,软件工程师,做服务端方向,主要写 nodejs & golang 偶尔写点 python,所以这是一篇刚刚拥有第一个开发板的小白写的小白文,以上是背景 前段时间为了改善生活买了一块树莓派3,装了 debian 8 jessie。 1. 换清华的源: sudo vi /etc/apt/sources.list 注释掉其他的源插入这两个: deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ jessie main non-free contrib deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ jessie main non-fr...阅读全文

博文 2017-06-15 19:06:38 HughFace

golang:使用timingwheel进行大量ticker的优化

Ticker 最近的项目用go实现的服务器需要挂载大量的socket连接。如何判断连接是否还存活就是我们需要考虑的一个问题了。 通常情况下面,socket如果被客户端正常close,服务器是能检测到的,但是如果客户端突然拔掉网线,或者是断电,那么socket的状态在服务器看来可能仍然是established。而实际上该socket已经不可用了。 为了判断连接是否可用,通常我们会用timer机制来定时检测,在go里面,这非常容易实现,如下: ticker := time.NewTicker(60 * time.Second) for { select { case <-ticker.C: if err := ping(); err != nil { close() } } } 上面我们使用一个...阅读全文

博文 2015-08-19 03:00:00 moxiaopeng

Vs - 基于 d3.js 和 vue.js 的数据可视化

### Vs 概述 > Vs 是一个基于 `d3.js` 和 `vue.js` 的数据可视化分析包,适用于图表,dashboard 制作。 [Github Repo](https://github.com/GopherJ/Vs) ### 目前支持的组件 - `d3Bar` - `d3Line` - `d3Pie` - `d3ProgressArc` - `d3SankeyCircular` - `d3Timelion` - `d3Timeline` ### 主依赖 - `d3.js v4` - `vue.js v2.5` ### 安装 ```javascript npm i -S GopherJ/Vs ``` ### 使用 > 建...阅读全文

使用golang的channel的坑

很多时候我们经过使用有缓冲channel作为通信控制的功能,以至有一些误解和坑出现。 ## 误解一:有缓存channel是顺序的 执行下面代码。 ``` package main import ( "time" "math/rand" ) func main(){ cache:=make(chan int,4) go func() { for i:=0;i< 10;i++ { cache<-i } }() go getCache(cache) go getCache(cache) go getCache(cache) ...阅读全文

golang -- 时间日期总结

golang时间处理 相关包 "time" 时间戳 当前时间戳 ? 1 2 fmt.Println( time .Now().Unix()) # 1389058332 str格式化时间 当前格式化时间 ? 1 2 fmt.Println( time .Now().Format( "2006-01-02 15:04:05" )) // 这是个奇葩,必须是这个时间点, 据说是go诞生之日, 记忆方法:6-1-2-3-4-5 # 2014-01-07 09:42:20 时间戳转str格式化时间? 1 2 3 str_time := time .Unix(1389058332, 0).Format( "2006-01-02 15:04:05" ) fmt.Println(str_time) # 20...阅读全文

博文 2015-08-31 15:00:01 徐学良

2019年7月复盘

柳传志复盘方法论 1、回顾目标:当初目的或期望是什么 2、评估结果:和原定目标相比有哪些亮点和不足 3、分析原因:事情成功和失败根本原因,包括主观和客观两方面 4、总结经验:需要实施哪些新举措,叫停哪些项目等 本月周复盘汇总 2019第27/52周复盘 2019第28/52周复盘 2019第29/52周复盘 2019第30/52周复盘 2019第31/52周复盘 1、7月计划完成情况 []《论语》每周写1/2篇解读。 [] 跟上混沌商学院的课程。 [] 跑步6.47/50公里。 [] 完成Golang的课程。 [] 股票相关内容和写作方式学习。 [] /3篇周期文章的编辑。 7月书单:《投机者的扑克》、《狙击牛熊市》、《优势投资法则》、《外汇交易的10堂必修课》、《一个农民的亿万传奇》、《战...阅读全文

博文 2019-08-03 22:32:40 空灵一月

新网站的运营每天更新内容及数量的问题

新建的网站一般需要大概半个月时间才会收录。而这段时间需要你定期更新网站内容。最好是每天更新一次,千万别偷懒哦。这个区间是最重要的,最好就是每天更新一个类型的内容。并且内容不能复制,必须是原创内容。别再搞那些为原创,这种真的没什么用。不要为了收录而刻意去做。我们做网站必须端正心态,做的任何事情必须以用户体验为中心,不要为了追求一定的利益去做。最好就是写一些自己感兴趣而且比较在行的内容。这样更新起来不费力,而且也不累。 如果你是按照用户体验来运营网站,那么你的出发点就是更好的做内容,而更不会去复制或者随便乱写一些无意义的东西。这样坚持做下去肯定会带来不错的效果。至于外链方面也不要太激进,不要一次性大量发很多,要发就发高质量的内容加外链。最好做到定期去做,别一时兴起来了就短时间增加的太多。下面总...阅读全文

程序员如何预估自己的项目开发时间?

项目时间的估算对项目的成败至关重要。项目时间管理包括了项目按时完成所需的各个过程。但是,在实际项目中,经常出现项目延期,估算严重不准确的现象。预估时间本身就很难。每个程序员的估计都会跟真正需要的时间有些差距。估计时间短了说明有些事情被忽略了(编译,测试,提交代码)。估计时间超了说明任务太大,难以理解。对于资历较浅的程序员,这种估计误差是混乱的,他们经常会轻视一些任务,同时又对一些稍微有难度的任务过分高估。我认为,对一个有经验的程序员,一个任务的时间应该在半小时到24小时之间,超出24小时的任务都需要拆分。程序员在脑中想一想可能会认为要60小时,但实际上即使是很有经验的程序员也需要将任务分成可控的模块再来分析做决定。还有一个很重要的需要认识到的一点是,编程上的经验并不等同于时间估计上的经验。一...阅读全文

博文 2018-09-28 08:59:43 androidstarjacksky

Golang函数执行模板(log,耗时,panic)

有些函数执行前后,需要加日志、记录耗时、还要处理panic,都是些重复性的东西。 所以弄了个模板式的东西,碰到这类需求,直接把相关函数和参数,丢到run函数去就不用管了,省得浪费时间。 先上个调用例子: //函数执行模板 //author: Xiong Chuan Liang //date: 2015-3-19 package main import ( "fmt" "log" "os" "utils" ) func main() { log.SetOutput(os.Stdout) w := utils.NewWorker() w.Run("myPrintf()", myPrintf, "aa", "bb") } func myPrintf(args ...interface{}) (in...阅读全文

博文 2015-06-17 20:23:36 xcltapestry

学习hadoop需要多长时间?学习hadoop开发

hadoop是大数据开发学习重要知识点,也是大数据开发工作必备技能,有些人员想学习hadoop,更多的是关系培训时间和学费,那么hadoop培训到底需要多长时间呢? 首先我们要了解的是,hadoop培训的时间长短,跟以下几个因素有关。 首先培训多久跟学习者的自身基础水平有关,同样的内容,之前有过相关基础的人来学习,肯定要比没有基础的人更快,这个是正常现象。既然谈到了有没有基础这个事情,就多说一句,如果你有java的经验,那么在学习hadoop等大数据相关的内容的时候,会更容易理解,学习效率也更高。而对于什么基础都没有的,也不要担心,调整好心态,一步步来,最终结果取决于自己,而不是取决于是否有基础。 另外既然谈到培训,那么最重要的必然就是课程,目前市面上的hadoop大数据培...阅读全文

程序员如何预估自己的项目开发时间?

项目时间的估算对项目的成败至关重要。项目时间管理包括了项目按时完成所需的各个过程。但是,在实际项目中,经常出现项目延期,估算严重不准确的现象。 预估时间本身就很难。每个程序员的估计都会跟真正需要的时间有些差距。估计时间短了说明有些事情被忽略了(编译,测试,提交代码)。估计时间超了说明任务太大,难以理解。 对于资历较浅的程序员,这种估计误差是混乱的,他们经常会轻视一些任务,同时又对一些稍微有难度的任务过分高估。我认为,对一个有经验的程序员,一个任务的时间应该在半小时到24小时之间,超出24小时的任务都需要拆分。程序员在脑中想一想可能会认为要60小时,但实际上即使是很有经验的程序员也需要将任务分成可控的模块再来分析做决定。 还有一个很重要的需要认识到的一点是,编程上的经验并不等同于时间估计上的经...阅读全文

博文 2018-09-28 09:34:39 程序员小灰

【职场轶事】与求职者的一段对话引发的思考

早上八点,上班的地铁上,我习惯性的打开工作微信查看。有一个陌生人要求加我为好友,出于猎头的直觉(又是一名求职者),我马上通过他的请求。刚一通过请求他便发来信息(我暂且用A来称呼他)。“你好,你们公司还招人吗?”A发来微信。“你好,请问是从哪里看到我的招聘信息的?”我发问到。作为一名专业的猎头,利用的渠道实在是太多了,所以会先确定一下求职者是通过哪个渠道找到我的。“某某社区”A回答到。 随后我向他说明自己是猎头,并不是甲方公司及确定他是否找我推荐职位后,就进入了职位沟通环节。我习惯性的先了解对方的背景,所以我随即便向他索要简历,这也是减少双方在没必要的环节浪费时间。他回答说没有现成的简历,我便开始询问一些常规性的却也是至关重要的问题:1.你工作几年了?答:五年2.什么学校毕业的?答:某某工学院...阅读全文

博文 2018-08-16 09:51:18 kelasong

[golang]一定要设置超时

运行了好长时间的进程忽然挂了,结果打出好长的堆栈,显然是goroutine泄漏了。 逻辑很简单只是定时从指定api取值而已,怎么会泄漏呢? net/http.(*Transport).getConn //获取连接 /usr/local/go/src/net/http/transport.go:1004 created by net/http.(*Transport).getConn //建立新连接 /usr/local/go/src/net/http/transport.go:998 net.(*Resolver).LookupIPAddr //DNS查询 /usr/local/go/src/net/lookup.go:227 created by internal/singleflight...阅读全文

博文 2019-01-06 18:34:46 一桶冷水

通过leetcode学算法——动态规划(dp)

先贴问题: Delete Operation for Two Strings Given two words word1 and word2, find the minimum number of steps required to make word1 and word2 the same, where in each step you can delete one character in either string. 说白了就是找到两个字符串非连续最大公共字符串。如果对dp算法很熟悉的很快就能想到这个问题的解法,然而我并不是很熟悉,所以用了一个很挫很慢的方法,个人理解应该是分治法,很多步骤被重复算了很多次。 写的很搓,轻喷。 下面就要介绍一下简单易懂的dp算法啦,先上代码(leetco...阅读全文

博文 2017-08-02 03:06:31 Tibbersshao

Go语言学习-time包

go语言的time包 组成 time.Duration(时长,耗时) time.Time(时间点) time.C(放时间点的管道)[ Time.C:=make(chan time.Time) ] time包里有2个东西,一个是时间点,另一个是时长 时间点的意思就是“某一刻”,比如 2000年1月1日1点1分1秒 那一刻(后台记录的是unix时间,从1970年开始计算) 时长就是某一刻与另一刻的差,也就是耗时 函数 Sleep函数 time.Sleep(time.Duration) 表示睡多少时间,睡觉时,是阻塞状态 fmt.Println("start sleeping...") time.Sleep(time.Second) fmt.Println("end sleep.") //【结果】...阅读全文

博文 2016-10-08 10:00:04 tree2013

raft简单介绍

一致性算法 - Raft Raft 状态 一个 Raft 集群包含若干个服务器节点;通常是 5 个,这允许整个系统容忍 2 个节点的失效,每个节点处于以下三种状态之一: follower(跟随者) :所有结点都以 follower 的状态开始。如果没收到 leader消息则会变成 candidate状态。 candidate(候选人):会向其他结点“拉选票”,如果得到大部分的票则成为leader。这个过程就叫做Leader选举(Leader Election)。 leader(领导者):所有对系统的修改都会先经过leader。 Raft 一致性算法 Raft通过选出一个leader来简化日志副本的管理,例如,日志项(log entry)只允许从leader流向follower。 基于lead...阅读全文

博文 2018-08-06 11:34:53 kakushao

基于time的ticker封装的定时器

本人最近新学GO,为了能够深入了解GO,于是计划使用GO实现一个高并发、IO密集操作的ETL程序。闲话不多说,今天完成了ETL中最基本的要素,定时器。首先了解到GO中的time.Ticker不适用到高精度的定时器,因为ETL任务周期设定是1分钟,故此处无需高精度的定时器(对于高精度的定时器,在网上看到有人使用时间轮实现timewheel,我也看了实现,并且也按其思路实现了一版,此处略去)。封闭的类型:TimeTicker,使用示例代码如下:func main() { var tt *timeticker.TimeTicker = timeticker.New(3*time.Second) //创建一个3秒钟执行一次任务的定时器 e := tt.AddJob(job, true) //向此定时...阅读全文

博文 2018-04-11 22:36:24 duy_2018

go指南:映射练习

题目 题目地址https://tour.go-zh.org/moretypes/23 练习:映射 实现 WordCount。它应当返回一个映射,其中包含字符串 s 中每个“单词”的个数。函数 wc.Test 会对此函数执行一系列测试用例,并输出成功还是失败。 你会发现 strings.Fields 很有帮助。 答案 package main import ( "golang.org/x/tour/wc" "strings" ) func WordCount(s string) map[string]int { sFields := strings.Fields(s) var resMap = map[string]int{} for _,v := range sFields{ resMap[...阅读全文

自己业余时间学习GO语言,参考网上文章,利用layUI+Go+MySQL写了个小网站(博客+后台管理+即将开始的进销存系统)

#### 自己业余时间学习GO语言,参考网上文章,利用layUI+Go+MySQL写了个小网站(博客+后台管理+即将开始的进销存系统),欢迎大家提意见,多交流,有能一起开发进销存的最好了 ### [我的测试网站 http://www.haowd.top](http://www.haowd.top "我的测试网站") ### 第一次用WEB方面的程序,见笑了,大家多指导。 #### 部分代码示例: **控制器:** ``` package controllers import ( "strings" "github.com/astaxie/beego" "github.com/lwx3i/ydd/models" "github.com/lwx3i/ydd/util" ) // NextPrep...阅读全文

golang 时间和日期

//当前时间 t := time.Now() fmt.Println(t.Format("2006-01-02 15:04:05")) fmt.Println(t.Year(), int(t.Local().Month()), t.Day()) //时间戳10位 秒 fmt.Println(time.Now().Unix()) //时间戳13位 毫秒 fmt.Println(time.Now().UnixNano() / 1e6) //时间戳转时间 sec := time.Now().Unix() fmt.Println(time.Unix(sec, 0).Format("2006-01-02 15:04:05")) //时间转时间戳 fmt.Println(time.Date(2020, ...阅读全文

博文 2020-05-31 09:32:47 对方正在输入_5723

没想到总结也挺费时间的

这个防盗链真是烦,图片要自己一个一个上传。 时间没把握好,睡得多了点,玩的多了点,明天两篇阅读。 四月份的计划:计划尽量固定时间段 1.上午三番茄,中午13:00睡一会,下午四个番茄【主java,基础知识;副golang的区块链】 2.背单词都在傍晚,和15分钟的听力,一篇阅读连在一起 3.半小时阅读 4.晚上,听力精听课 额外:要多翻看单词本,可以看看笔记,整理下逻辑结构,补充相应的复习视频 多出来的边角时间,可以刷b站,看视频。 要知道人家有的自学的,一天学10小时,光是时间,一天就顶我好几天,以后,学习量是会慢慢增加的...阅读全文

博文 2020-03-31 23:32:46 div密码错误div

Golang 时间格式化的奇怪设定 —— 为什么你一直出错

首发于:http://blog.shajiquan.com/2015/12/golang-time-format/ 今天有人在群里问: 问一个时间格式化问题: fmt.Println(time.Now().Format("2006year 01month 02day")) 2015year 12month 18day fmt.Println(time.Now().Format("2015year 01month 01day")) 181253year 12month 12day 为什么? 困扰好久 首先,这是一个很奇葩的问题。 其次,我,以及比我对 Golang 更了解的朋友,都掉过这个坑。我们曾在这个问题上,花了很多时间,最后发现是 Golang 自己的奇怪设定导致。尤其是,一段时间不用 ...阅读全文

博文 2017-02-09 08:10:28 shajiquan

go版本Excel导入脚本

一直挺想用 go 的,但是没想到能干啥,前段时间正好有个任务导入 Excel 到后台数据库,用 Python 的话我可能分分钟就写好了,但是作死的我就想试下 go,因为 go 可以打包成可执行程序包,然后就可以不依赖 go 的环境。 直接编码 使用 flag 获取终端参数解析 path := flag.String("path", "", "excel 路径") url := flag.String("url", "**", "服务器地址") flag.Parse() 这里定义了 path 路径和服务器地址 url,唯一需要注意的是,这里变量返回都是指针。flag 有个好处,他的参数都是形如(defaultValue,$description),所以在执行 -h 的时候,都会返回 key 以...阅读全文

博文 2018-12-16 23:34:43 追风骚年

golang:使用timingwheel进行大量ticker的优化

Ticker 最近的项目用go实现的服务器需要挂载大量的socket连接。如何判断连接是否还存活就是我们需要考虑的一个问题了。 通常情况下面,socket如果被客户端正常close,服务器是能检测到的,但是如果客户端突然拔掉网线,或者是断电,那么socket的状态在服务器看来可能仍然是established。而实际上该socket已经不可用了。 为了判断连接是否可用,通常我们会用timer机制来定时检测,在go里面,这非常容易实现,如下: ticker := time.NewTicker(60 * time.Second) for { select { case <-ticker.C: if err := ping(); err != nil { close() } } } 上面我们使用一个...阅读全文

博文 2014-10-04 19:27:06 siddontang

Go Commons Pool 1.0 发布

Go commons pool是一个通用的go语言对象池,基于Java版本的Apache Commons Pool改写。Go commons pool实现了Java版本的主要功能,改写了大多数Java版本的测试用例,测试覆盖率达到90%,性能测试结果和Java版本的相近,已经可以用于生产环境,于是发布1.0版本。 Go commons pool保留了Java版本的主要功能,包括: 自定义的 PooledObjectFactory. 丰富的设置选项,可以精确控制对象的生命周期。详细参看ObjectPoolConfig。 对象池是否是 LIFO (后进先出) 或者是 FIFO (先进先出) 对象池的容量控制 对象池对象的验证配置 获取对象时是否阻塞以及最大等待时间配置 对象池对象的回收机制配置(...阅读全文

go语言使用体会

初步看了下GO语言的基本语法,只是看不写代码很快就看了后面就忘了前面了,所以还是要实战,但是只是写几个题目感觉有点浪费时间,突然间想到一直想着做算法题来着,所以这次就是用GO来实现算法题吧,一方面可以加深是用GO的语法,一方面也提高自己的算法水平,一箭双雕。 ---------------------------------------- 变量 ---------------------------------------- 1) 如果一个变量没有被用到,GO的编译会报错,而不是像JAVA这样报警。所以如果是遍历数组时使用range,不使用下标值时就使用_代替: for _, r := range result { --------------------------------------...阅读全文

博文 2015-10-27 16:00:06 mickelfeng

子串查找算法-Rabin-Karp

好久没学习东西了, 前段时间有点过于放纵, 天天打游戏, 现在需要写点东西来减轻罪恶感. 对Rabin-Karp早有耳闻, 它可以在Golang官方库中找到, 当初粗略看了下觉得有点复杂就没仔细研究, 现在就看看它吧. 什么是Rabin-Karp算法 Rabin-Karp算法用来解决一个"简单"的问题: 在一个字符串中定位子串的位置. 同样的算法还有: KMP, BM. 关于他两可以再看看这位老哥写的文章:白话分析字符串匹配算法——KMP算法 乍一看这个问题一个for循环就能搞定, 但Rabin-Karp这个神奇的算法能让问题解决得更高效 有趣. 在了解Rabin-Karp之前,我们需要了解for暴力算法的缺点。 暴力算法的缺点 首先从头部开始匹配,如果没匹配到则向后移动一步再次匹配,如此循...阅读全文

博文 2018-11-13 00:34:39 bysir

golang 使用beego框架安装bee 报错

不使用框架开发项目简直是浪费时间,好的轮子应该拿来就用,今天在安装国人开源的golang框架beego时,在安装bee工具时报错/usr/local/go/pkg/tool/darwin_amd64/link: combining dwarf failed: Unknown load command 0x32 (50),编译错误, 查了好久原来是版本问题,我的版本是1.92,降级到1.11.5解决问题,不知道beego为什么版本高了反而不支持了,,这让我对这个框架的靠谱程度产生了怀疑,而且这个bug的issue起码半年前就有了也没被修复。。。。...阅读全文

博文 2019-02-10 21:34:43 臣以君纲

H5响应式自助建站系统让快速建站成为触手可及

随着智能互联网的飞速发展,智能手机的普及,让网民用户对移动端的时候越来越多,浏览网页、查询资料手机浏览新闻、搜索资源、查找销售渠道、网购、订餐等等成为了一种新的生活方式。为了解决移动设备屏幕不同大小的问题,让网站适应每种设备的屏幕大小,所以响应式网站就这样出现了。 ![00.png](https://static.studygolang.com/180505/5cd545e6b099c4c71dfc4e6fab815813.png) 那么响应式网站怎么做?对于一般企业建站来说,他们会直接外包给建站公司或者团队进行网站开发搭建,而企业网站就如同互联网上的一张名片,定制化网站少则几千,多则上万,很多定制网站只是把界面稍加改动,实力强一点的企业可能稍好一些,其实目前企业想要建设...阅读全文

2019的到来Java程序员如何不被淘汰,互联网最新的技术了解足够?

程序员是一个高薪的行业,也是一个门槛比较高的职业,能进入这行是好多人的愿望,近几年来这行的人也是越来越多,每年都在持续增长,那么怎么才能保持持久的竞争力而不被淘汰了,除了一些精神品质上下功夫外,如耐心,勤奋,能吃苦之外,再加一些学习的技巧是十分有必要的。下面我就从以下几方面来说起。​不断的巩固基础首先技术是一个熟练工种,没有不断的实践,不断的巩固基本功很难在这方面出人头地的,做为一名程序员,要想优秀,比需有一定代码量的积累才是可以的,如果平时有项目,就积极的参与项目,增加自己的实战机会,项目不紧的时候,可以看一些书籍,敲一些各种形式的代码,争取自己的代码量远远高于其他人,这样在基本功上时间久了,你就会高于其他人,这是硬功夫,其他人就很难超越,要想超越,就要花同等时间去超越,这样你和其他人之间...阅读全文

博文 2019-01-14 18:58:14 javaJGJL

唯一ID生成器-发号器实践-企业实例--内存buffer方式

缓存模式 基于内存buffer的发号器架构如图,这也是目前我在维护的发号器之一 优点:1.水平扩展方便2.对高并发支持良好3.数据库依赖较低,只在buffer耗尽时需请求数据库,连接失败情况下仍可实现较长时间发号4.该服务目前支持step发号返回的id格式符合 id=startID+idStep*n5.该服务支持一次获取多号,性能与单个发号相近缺点:1.集群情况下,发号为趋势递增而非严格递增(趋势递增指ID整体上是增加且唯一的,但不是严格两次发号都差1,比如两台服务器A持有1001-2000 B持有2001-3000 两次发号请求分别到了AB两个机器,得到1001 和2001)2.重启服务后未用完的号段作废 实现: 服务以worker方式工作,一个serviceID对应一个worker,以服...阅读全文

博文 2020-04-16 17:33:01 Charles_Wong

Go1.5 zip 压缩目录修正时间

package zip import ( "archive/zip" "io" "os" "path/filepath" "time" ) const zone int64 = +8 func Zip(source, target string) error { zipfile, err := os.Create(target) if err != nil { return err } defer zipfile.Close() archive := zip.NewWriter(zipfile) defer archive.Close() return filepath.Walk(source, func(path string, info os.FileInfo, err error) e...阅读全文

博文 2016-03-07 18:00:01 fyxichen

golang时间处理

golang 时间处理 package main import ( "fmt" "time" ) const ( date = "2006-01-02" shortdate = "06-01-02" times = "15:04:02" shorttime = "15:04" datetime = "2006-01-02 15:04:02" newdatetime = "2006/01/02 15~04~02" newtime = "15~04~02" ) func main() { thisdate := "2014-03-17 14:55:06" timeformatdate, _ := time.Parse(datetime, thisdate) fmt.Println(timefor...阅读全文

博文 2014-10-04 19:26:45 别人说我名字很长

go学习笔记 利用chan嵌套chan 实现函数异步执行 顺序返回值

遇到的问题 异步对于绝大多数的开发而言并不陌生,在go语言中异步的实现变得异常方便。只要在执行的方法前加一个go关键字就可以实现异步操作。但是如果需求是,按照调用的先后顺序(FIFO)来返回值我们应该怎么办。大家都知道,一系列的方法调用如果使用了异步执行那么就并不能保证返回的先后顺序,返回的先后顺序取决于每个函数耗时的长短,耗时短的则会先返回。当然解决这个问题的办法有很多,在最近看的一本书中发现了chan嵌套chan可以很巧妙的实现这个需求。 没解决之前 先看一下没有使用嵌套chan的情况。代码很简单,方法operation1 内部sleep 1秒 方法operation2 内部sleep 2秒。5次调用都在goroutine中执行,结果可以看到 5个方法大约耗时2秒。 package ma...阅读全文

博文 2019-03-12 17:34:41 大二小的宝