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

【GOLANG】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.") //【结果】打印...阅读全文

博文 2015-06-17 23:01:37 zhonglinzhang

年中总结与目标OKR

文: 年中总结与目标OKR thumbnail: /thumbnails/xingbake.jpg date: 2018-07-16 21:39:04 [TOC] 昨天看到了狗哥的年中总结, 虽然开头和结尾比较丧, 但还是比较详细的列出了半年回顾和计划 也让我感受到了像狗哥这样的年轻人有目标真好~ 自己没制定过目标和计划, 发现有点难或者好奇心没啦又断了 所以, 结合前段时间看到的OKR, 这次来学习做一次年中总结, 内容尽可能细致且可度量, 以便年终进行检验 一. OKR 先来简单说下OKR是什么 OKR: Objectives and Key Results的简称,中文名是目标与关键成果法 从名称上看到它包含两个要素 目标(Objectives) 关键结果(Key Results) 它由...阅读全文

博文 2019-05-22 17:34:54 i蝸居年華_谢谢谢

golang之树的遍历

go语言在区块链编程中有巨大的优势,其中fabric和ethereum都是基于go语言编写的。为了能更好的学习区块链的底层技术,先将go的基础打好。 本篇文章使用golang来实现树的遍历 树的定义 package tree type Node struct { Val int Left *Node Right *Node } 深度优先遍历 深度优先遍历需要优先使用栈 栈的定义 type Stack struct { list *list.List } func NewStack() *Stack { list := list.New() return &Stack{list} } func (stack *Stack) Push(value interface{}) { stack.lis...阅读全文

博文 2018-11-18 14:34:42 菟潞寺沙弥

golang.org/x/text使用

前言 go语言也已经使用一段时间了,但是关于golang的相关常用三方库仍然使用的不到位,正好前段时间接触了golang.org/x/text的库,这个包能强大的处理国际化和本地化,对应用的全球化时能帮上大忙。 包概览 golang.org/x/text 包含多层子包,提供了很多的工具和函数,并且用fmt风格的API来格式化字符串。 cases 提供通用的方法 // code src := []string{ "hello world!", "i with dot", "'n ijsberg", "here comes O'Brian", } for _, c := range []cases.Caser{ cases.Lower(language.Und), cases.Upper(lan...阅读全文

博文 2019-06-10 17:02:54 m20082008m

音视频同步(播放)原理

每一帧音频或视频都有一个持续时间:duration:采样频率是指将模拟声音波形进行数字化时,每秒钟抽取声波幅度样本的次数。。正常人听觉的频率范围大约在20Hz~20kHz之间,根据奈奎斯特采样理论,为了保证声音不失真,采样频率应该在40kHz左右。常用的音频采样频率有8kHz、11.025kHz、22.05kHz、16kHz、37.8kHz、44.1kHz、48kHz等,如果采用更高的采样频率,还可以达到DVD的音质对采样率为44.1kHz的AAC音频进行解码时,一帧的解码时间须控制在23.22毫秒内。背景知识:(一个AAC原始帧包含一段时间内1024个采样及相关数据)分析:1) AAC音频帧的播放时间=一个AAC帧对应的采样样本的个数/采样频率(单位为s)一帧 1024个 sample。采...阅读全文

博文 2020-03-03 00:33:10 linux大本营

一个不可思议的问题,大婶们进来看看

``` // 取redigo 连接 conn := models.Redis(setting.Conf.TimelineRedis).Get() defer conn.Close() for i, _ := range times { // redis key key := getTimelineKeyByCode(code, times[i]) // 接参数发送命令 err := conn.Send("HMGET", getTimelineArgs(key)...) if err != nil { return nil, err } } err := conn.Flush() if err != nil { ...阅读全文

golang日志分级记录log4go

依赖之前文章的loggor模块,可以将日志分级记录至文件,debug、info、warn、error、fatal,结合以下代码,可将项目中之前的log日志输出无缝打印至日志文件如://import "log"import log "util/mlog".....log.Println("...............")//@description 调试日志输出 //@author chenbintao //@data 2017-04-10 09:31 初稿 // 2017-05-04 21:31 调试 package mlog import ( "tool/log4go" ) func Println(message ...interface{}) { log4go.Println(tru...阅读全文

博文 2017-05-05 04:36:26 hansegod

从小立志当“司机”,却阴差阳错成为了阿里云PD

摘要: 五四青年节马上就要到了,受云栖社区邀请,来分享下自己的成长故事。 每个人都有每个人的成长故事,或惊涛骇浪,或一马平川。但是无论是平淡还是精彩,那都属于我们自己。 不是每个人都有立功立德立言的机遇,但是每个人都可以努力成为最好的自己。 “不是每个人都有立功立德立言的机遇,但是每个人都可以努力成为最好的自己” 曾经,我只想当一个公交车司机 很多人小时候都有成为超级英雄的梦想,不过我没有。 我小时候的梦想是成为一名公交车司机,因为公交车能坐很多人,能拉着七大姑八大姨一起逛北京城。 是的,我小时候的理想很淳朴。 现在,我是一个阿里云弹性计算的产品经理,就是业界熟知的ECS。 成长在教师家庭的烦恼 20世纪80年代,我出生在一个普通的教师...阅读全文

c++、c#、Python、GO语言基本语法比较

1 变量 1.1 定义 C++ 1) 数据类型 变量名;//单个变量定义 2) 数据类型 变量名 = 初始值;//单个变量定义并初始化 3) 数据类型 变量名1, 变量名2;//使用逗号一次定义多个同类型变量 4) auto 变量名 = 初始值;//使用auto关键字自动推导变量(C++11) 5) static 数据类型 变量名 = 初始值;//局部静态变量 6) extern 数据类型 变量名;//声明变量(在其他位置进行定义) C# 1) 数据类型 变量名;//单个变量定义 2) 数据类型 变量名 = 初始值;//单个变量定义并初始化 3) 数据类型 变量名1, 变量名2;//使用逗号一次定义多个同类型变量 4) var 变量名称 = 变量初值;//C#3.0引入 Python 1) ...阅读全文

博文 2015-10-06 17:00:00 sdhongjun

阿里云上线视频云剪辑 快速产出PGC短视频不再是问题!

摘要: 近日,阿里云率先推出了视频云剪辑功能。作为一款操作简单、功能齐全的PC端视频剪辑工具,针对短视频应用场景,提供丰富在线编辑与素材管理功能,可以帮助运营人员快速制作有趣、有料的视频内容。 中国网络视频已经进入黄金发展时期,数据研究机构骨朵传媒发布的《2016年网生内容产业发展研究白皮书》中显示,截至2016年12月,我国网络视频用户规模接近5.5亿,市场总规模可达600亿元。可以预见的是,在2017年这个数字也一定会持续走高。 如此大的市场规模,一定需要海量的、优质的、多元的内容来支撑。 从内容生产的角度来看,视频可以分为UGC(用户生产内容)、PGC(专业生产内容)、OGC(职业生产内容)。OGC大部分为长视频,比如电影、剧集、综艺、动漫等,网站或APP通过版权购买...阅读全文

区块链开发要学多久?

现在在区块链大热日子里,时间已经成为许多人抓住机会的筹码。对于那些已经进入区块链圈的人来说,他们已经开始了解区块链技术。等区块链以外的人做出了反应,机会已经错过了一半。但毕竟鲜有人有先见之明。现在是我们年轻人的时代,迅速掌握区块链技术并进入区块链领域才是获胜的方式。那么区块链开发要学多久? 区块链开发要学多久? 首先如果条件允许,尽量选择在一线城市学习,毕竟有一个技术聚集区。二看其他方面,如:教师实力、课程系统、教学模式、就业工资、学费等。可以直接去试镜检查学校的实际情况。 然后问题来了。就时间而言,自学肯定为时已晚。其余的是区块链系统。现在区块链课程需要学习多长时间?一般区块链课程共22周,分为5个阶段。 区块链开发要学多久? 4周的第一阶段是语言基础和网络并发,学习入门语言; 第二阶段4...阅读全文

博文 2019-02-11 19:34:41 汉全区块链

1个人1个电脑1周可以处理10000+的订单吗?

摘要: 码栈,以提升企业提效为目标,帮助用户连接不同的系统和服务,实现工作流程自动化。运用码栈能够显著将客服、运营、财务、法务、设计师以及更多领域的客户重复工作流高速化,提升岗位效率,进而提升企业效率。 码栈为电商、金融、游戏、政府、教育、财税、及传统大型企业等人力密集型企业提供一个高效引擎。 码栈,以提升企业提效为目标,帮助用户连接不同的系统和服务,实现工作流程自动化。运用码栈能够显著将客服、运营、财务、法务、设计师以及更多领域的客户重复工作流高速化,提升岗位效率,进而提升企业效率。 码栈为电商、金融、游戏、政府、教育、财税、及传统大型企业等人力密集型企业提供一个高效引擎。在三个典型应用场景:数据采集、批量处理和系统协同中,码栈的效率是传统人工效率的数倍。 以电商运营为例,每...阅读全文

教你轻松做一个响应式网站

在响应式还未流行的时候,很多企业与互联网公司都觉得响应式网站应该是大企业才用的上,大企业才有资金去投入。对于这个问题小编只能说,没错放在前段时间做一个响应式网站的确需要高投入,而且还很耗时间。但是放在今天来讲,小编可以告诉你,以现在的互联网技术,做一个响应式网站快的只需要几个小时,需要细致完成的也就几天时间。这样的发展速度,让众人所惊叹! 在响应式还未流行的时候,很多企业与互联网公司都觉得响应式网站应该是大企业才用的上,大企业才有资金去投入。对于这个问题小编只能说,没错放在前段时间做一个响应式网站的确需要高投入,而且还很耗时间。但是放在今天来讲,小编可以告诉你,以现在的互联网技术,做一个响应式网站快的只需要几个小时,需要细致完成的也就几天时间。这样的发展速度,让众人所惊叹! 现在...阅读全文

go database/sql包sql.Open不是长连接

sql.Open 不会创建连接 ,只会创建一个DB实例,同时会创建一个go程来管理该DB实例的一个连接池(是长连接,但不是在Open的时候创建)。 在调用Begin()取一个连接,回滚或者提交得时候归还。如果你直接使用时Exec()执行,则每次会从连接池里面取出一个连接,到Exec执行完毕的时候归还。可以通过参数来调节连接池的大小。 golang sql包已经做了并发处理,自己通过channel的方式维护了一个连接池,所以没有必要在go程中加锁共享。 关于每次sql.Open,我觉得应该是一个不恰当的做法,这会导致连接得不到重用,并产生过多的短时间关闭的连接,给数据库造成没必要的压力...阅读全文

博文 2015-12-23 04:00:01 s630405377

程序员在家办公挣得更多

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

我们已经拉开了差距之二

图片发自简书App 我的大学同学,现在是某知名教育机构的讲师,看了看她的朋友圈,惊叹!有人正在过着我想要的生活。压力了,焦虑了,Golang分布架构师,是讲啥的,我百度了一下,什么都不懂了,我们的差距,毕业十年就如此之大了。现在的我还在自认为努力学习,奋斗中,而早奋斗的人已经品尝胜利的果实了,还赶趟吗?与其苦苦挣扎不去釜底抽薪吧!不能放弃成长,种树最好是十年前,其次是现在,虽然短时间不能追上她的,至少会变得更好,梦想要有,每天都拿出来看看,行动,努力实现它...阅读全文

博文 2020-01-12 23:32:50 爱咋咋地康立娜

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-15 00:01:22 siddontang

【厉害了Word哥】Workshop第一期 | 容器技术如何落地?

![alt 文本](http://blog.tenxcloud.com/wp-content/uploads/2016/10/lADOfNAlE80B9M0DhA_900_500-1.jpg) ## 为什么关注容器落地? 2015年,容器元年,Docker技术破冰而出, 2016年,无数企业探索容器落地, 趟过坑,踩过雷,技术愈发成熟, **观望者**,对其经验、教训无限关注, **探索者**,亟需更系统全面的实践指导, **实践者**,希望结合自身需求与厂商进行深度对话, 基于以上考虑,时速云第一期工作坊主题确立! ## 讲什么? 【 企业如何实践微服务架构? 】 【 基于Docker的PaaS平台在企业中的落地实践 】...阅读全文

golang与C交互:cgo

1. 在Go中引用C代码很简单, 在 import "C"前用注释引入标准的C代码, 然后使用C.xxx的伪包引用C代码空间的标识符即可. 需要注意, import"C"是伪package,不能与其他package一块定义为import (..."C"...) 2. 在Go中引用C代码必须手工释放C代码对象. 释放方法为C.free(unsafe.Pointer(xxx)), 这也要求C代码包含#include 3. 必须深入理解下述: (1) Cgo recognizes this comment above import "C" statement. (2) Any lines starting with #cgo followed by a space chara...阅读全文

博文 2016-09-09 18:00:01 zolo

程序员在家办公挣得更多

**程序员在家办公挣得更多** --- 对于程序员来说,凭借自身的技能和经验,外加一些简单的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

学习Golang语言(1): Hello World

**学习Golang语言(1): Hello World** --- 今天开始进入golang语言的学习,golang语言的安装和测试就不再这里讲解了。网络上有不少资料可以参考。 学习任何编程语言的第一个程序都是Hello world,我就不打破这个传统了。看看Go的"Hello World"吧。 package main import "fmt" //引入fmt库 func main() { fmt.Println("Hello World!") } 逐行分析这段程序: 第一行是必须的。所有Go语言编写的文件都以package <***>开头,对于独立运行的执行文件必须是 package main;...阅读全文

开发者必备的swift技巧

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

golang二叉树前序,中序,后序非递归遍历算法

package main import ( "container/list" "fmt" ) // Binary Tree type BinaryTree struct { Data interface{} Left *BinaryTree Right *BinaryTree } // Constructor func NewBinaryTree(data interface{}) *BinaryTree { return &BinaryTree{Data: data} } // 先序遍历-非递归 func (bt *BinaryTree) PreOrderNoRecursion() []interface{} { t := bt stack := list.New() res := mak...阅读全文

博文 2018-07-02 21:35:46 暮色伊人

golang实现二叉搜索树

关于什么是二叉搜索树,不清楚的同学可以去看我写的这个数据结构与算法的网站 数据结构 首先我们定义需要的数据结构。注意,TreeNode的左右节点都是*TreeNode type的,而树只有一个Root数据域,为*TreeNode type type TreeNode struct { Value int Left *TreeNode Right *TreeNode } type BinarySearchTree struct { Root *TreeNode } Insert 向二叉搜索树中插入元素,首先要找到插入的位置,然后再插入。这里注意我们的实现方法为给TreeNode和BinarySearchTree这两个type添加方法。需要注意给type添加方法的方式,同时还要注意,如果你要改变...阅读全文

博文 2017-03-05 11:47:47 bigtom

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

Go deep into equals方法

深入equals方法 equals方法的重要性毋须多言,只要你想比较的两个对象不愿是同一对象,你就应该实现equals方法,让对象用你认为相等的条件来进行比较. 下面的内容只是API的规范,没有什么太高深的意义,但我之所以最先把它列在这儿,是因为这些规范在事实中并不是真正能保证得到实现. 1.对于任何引用类型, o.equals(o) == true成立.2.如果 o.equals(o1) == true 成立,那么o1.equals(o)==true也一定要成立.3.如果 o.equals(o1) == true 成立且 o.equals(o2) == true 成立,那么o1.equals(o2) == true 也成立.4.如果第一次调用o.equals(o1) == true成立再o...阅读全文

博文 2016-04-11 02:00:10 napolar

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