`
blackbeans
  • 浏览: 140643 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
  有人问了问go的时间格式化问题,于是乎自己尝试了下,发现巨坑爹,不按常理出牌啊 format的竟然模版必须如下面的每个数字,fuck   t := time.Unix(1362984425, 0) nt := t.Format("2006-01-02 15:04:05") fmt.Println(nt)     附上现有的go格式 const ( ANSIC = "Mon Jan _2 15:04:05 2006" UnixDate = "Mon Jan _2 15:04:05 ...
 一.摘要 1.网络游戏MMORPG整体服务器框架,包括早期,中期,当前的一些主流架构2.网络游戏网络层,包括网络协议,IO模型,网络框架,消息编码等。3.网络游戏的场景管理,AI,脚本的应用等。4.开源的网络服务器引擎

golang之路--bitmap 实现

 
介绍一下bitmap的思想:   情景1: 有些时候我们为了判断一个某个元素是否存在一个集合中,普通的方式是map[int]xxxx存储。数据量小的时候还可以 待数据量庞大的时候,比如我们判断某人的momoid是否在某个Momoid切片中,存储 ...
timer := time.NewTicker(2 * time.Second) for { select { case <-timer.C: go func() { log.Println(time.Now()) }() } }  
【转载】http://blog.nosqlfan.com/html/4153.html 本文主要介绍了 Redis 处理客户端连接的一些内部实现机制,包括连接处理、超时、缓冲区等一系列内容。 注:本文所述内容基于 Redis2.6 及以上版本。 连接的建立
发现已经有protocbuf对go的支持了,特此来尝试一下。 1.首先得安装protocbuff的go的支持包 我采用源码安装在自己工程下 hg clone https://code.google.com/p/goprotobuf/ 然后 make 就可以了 如果出现不能make 的请在命令行下go env看看当前的GO_PATH是否有你当前的工程路径,没有则添加 成功后在你的工程的bin 和 pkg下会安装成功protoc 对go的支持。 为了方便,我把protoc 和protoc-gen-go拷到了/usr/local/bin下 2.编写test.proto文件 ...
a:=strconv.FormatFloat(10.100,'f',-1,32) 输出: 10.1 a := strconv.FormatFloat(10.101, 'f', -1, 64) 输出: 10.101 a := strconv.FormatFloat(10.010, 'f', -1, 64) 输出:10.01 a:=strconv.FormatFloat(10.1,'f',2,64) 输出:10.10 f 参数可以时e,E,g,G -1 代表输出的精度小数点后的位数,如果是<0的值,则返回最少的位数来表示该数,如果是大于0的则返回对应位数的值 ...
学习了go的基本的并发变成模式,思路就是一个用通信来共享数据,而并不是像java一样共享内存来通讯。go采用了用channel来传递消息,每一个协程持有一个信道,当信道可用时便可以读写数据,各信道间的处理数据互不影响。回想一下java中的并发编程,通常我们是因为操作一个数据而采用多线程并发访问,比较明显的是更新cache中的key对应的value. 让我更是欢喜的时在golang中提供了sync.Once这个神器,从此做系统级的开关不再苦恼,天然的保证了就算多个协程并发的情况下也只有一个协程执行once.Do(func()),其他的协程阻塞。你再想想java里面完成一个系统级初始化,做到并 ...

golang之路--接口

在go中接口时无侵入的,只要两个接口有相同的方法列表,那么就可以互相赋值,而不像java中,两个接口可以相互赋值必须来自同一个继承树。go没有了继承树,接口可以相互赋值变得简单,原则只有一个含有相同的方法列表。   package mine type IReader interface { read(buff []byte,len int) } package yours type IExtReader interface { read(buff []byte,len int) }  即使上述两个interface 属于不同的pack ...
func writeResult(vals []int, outfile string) error {   file, err := os.Create(outfile) if err != nil { fmt.Println("writer",err) return err } defer file.Close()   writer := bufio.NewWriter(file) for _, v := range vals {   writer.WriteString(strconv.Itoa(v)) wr ...
  //========相比java的读文件,go的读文件方式好清晰啊===== f, err := os.Open("conf/proxy.ini") defer f.Close() if nil == err { buff := bufio.NewReader(f) for { line, err := buff.ReadString('\n') if err != nil || io.EOF == err{ break } fmt.Println(line) } }
  /** * 求解两个有序数组的交集 * @param a * @param b * @return */ public static List<Integer> join(int[] a , int[] b){ List<Integer> list = new LinkedList<Integer>(); int ai = 0; int bi = 0; while(ai < a.length & ...
前一段时间做了写关于名人的优化,主要解决的问题: 系统加载时数据load非常慢,系统重启后到前台页面展现最少也要1分钟,旧的service比这种情况更严重。 以我的性格,我不愿意让出自己手下的代码如此低效并且丑陋的完成功能,于是乎便向组织提交了关于名人业务优化的申请没想到灰常顺利批准我做了。 下面就开始了我优化的流程: 寻找为什么慢: 1.数据库的拉去名人等级竟然用了字符串匹模糊匹配去拉取每个分类,并且这种拉取是单线程的,即顺序拉取 2.拉取完数据还不够,底层接口不给力只能以固定的数量的批量调用拉取用户最后发言。 3.拉取到了给定数量的人的发言,还要根 ...
  将物理节点hash和虚拟节点形成映射 private void hash() { /** * 将物理节点散列成虚拟节点 * */ for (INode node : this.physicalNodes) { for (int i = 0; i < virtualCount / 4; i++) { byte[] hashCodeBytes = (node.getKey().toString() + i).getBytes(); ...
  啥叫StepByStep就是一步一步来,让子弹飞中的那句经典台词就是“钱得一点一点赚,步子得一步一步迈,不然咔容易扯着蛋”,说的就是做事情按照一定的规律和顺序来。n个线程,各自执行一段业务逻辑,应业务需求现在需要将这些业务逻辑进行step and step 的完成,带有一定顺序,好比A 线程 输出A, B线程输出B,C线程输出C....现在的要求就是整个业务处理流程就是A-->B-->C 的步骤,晚上模拟了一把。代码见下面:     package com.blackbeans.example; import java.util.concurrent.LinkedBl ...
Global site tag (gtag.js) - Google Analytics