InfraPub 为您找到相关结果 558

深入理解Golang之context

: return "context.TODO" } return "unknown empty Context" } var ( background = new(emptyCtx) todo = new(emptyCtx) ) func Background() Context { return background } func TODO() Context { return todo } 但我们一般不会直接使用emptyCtx,而是使用由emptyCtx实例化的两个变量,别可以通过调用Background和TODO方法得到,但这两个context在实现上是一样的。那么Background和TODO方法得到的context有什么区别呢?可以看一下官方的解释:// Background returns...阅读全文

博文 2021-01-27 09:05:27 知乎

说透IO多路复用模型_京东云开发者的博客

FD_ISSET方法来轮询文件描述符,如果数据可读,则读取数据即可。 举个例子,假设此时连接上来了3个客户端,connection的文件描述符别为 4,8,12,那么其read_fds文件描述符表(bitmap结构)的大致结构为 00010001000100000…0,由于read_fds文件描述符的长度为1024位,所以最多允许1024个连接。 而在select的时候,涉及到用户态和内核态的转换,所以整体转换方式如下: 所以,综合起来,select整体还是比较高效和稳定的,但是呈现出来的问题也不少,这些问题进一步限制了其性能发挥: 文件描述符表为bitmap结构,且有长度为1024的限制。 fdset无法做到重用,每次循环必须重新创建。 频繁的用户态和内核态拷贝,性能开销较大。 需要对文件描述符表进行...阅读全文

博文 2023-01-01 15:13:50 CSDN博客

成功运作一个开源项目的15个要点

认可的开源许可证 不要创建你自己的自定义许可证;这将为任何想要使用你代码的人增加法律障碍。确保你选择的许可证与你打算使用代码的方式兼容。此外,请确保许可证与你的项目代码所需的任何第三方内容(例如库)兼容。在所有源文件的标题中包含许可证的SPDX代码。 15、将项目移到开源基金会 前面已经提到过几次基金会。基金会首先可以帮助你保持项目供应商中立,这将有助于采用:开源软件的魅力大多是因为采用者可以避免被某个特定组织所关注。基金会可以坚持和保卫项目的商标,建立治理模式,帮助你管理品牌,提供知识产权管理服务,并为运营成功的开源项目提供常用的帮助和建议。成为开源基金会的一部可以提供有价值的反馈循环。基金会可以为你的开源项目提供可信度,然后,开源项目反过来可以为基金会提供公信力。 运作开源项目包含很多...阅读全文

博文 2017-11-08 09:58:28 debian.cn

谷歌元老施密特隐退:传奇落幕 新篇开启

为一个1955年出生的老派人物,是如何与布林和佩奇两个70后走到一起的呢?其实从他在普林斯顿大学和加州大学伯克利校完成学士到博士的学习后,曾经在贝尔实验室、Sun 等大型公司工作过,而他待过的小公司更是数不胜数,甚至在加入谷歌之前的一个季度,施密特掌管的 Novell 公司亏了足足1.42亿美元,似乎他不怎么像一位能让谷歌起飞的人。 但是在施密特从 Novell 公司离职之后,投资者依然向佩奇和布林推荐了他,并且在面试之后,两位创始人立马敲定了新任 CEO 的人选,并且这 CEO 一当就是十年。这背后的原因没人知道,但是据猜测,施密特多次成功和一次失败的经验打动了对方,而这些经验也确实成为了谷歌崛起的关键点。 在1983年加入 Sun 之后,施密特以一己之力将 Java 打造成了最普及的编...阅读全文

博文 2017-12-24 09:18:44 debian.cn

什么是线程安全,以及并发需要知道的几个概念

= new Thread(); t1.start(); t2.start(); t1.join(); t2.join(); System.out.println(i); } } 两个线程 t1 和 t2 同时开启,执行run方法,在我们的预想中,如果是线程安全的话,那么main的执行结果应该是20,但是因为 i 是共享数据,而程序没有对 i 的操作做同步的处理,最终运行的结果并不是20,所以这种情况就不是线程安全的情况。 解决的办法也比较简单,可以利用synchronized关键字来修饰方法或代码块,这部的知识也是并发编程中非常重要的一块,当然,本文就不探究了,之后单独写篇文章出来细说。...阅读全文

博文 2018-12-31 20:44:06 debian.cn

Java Annotations详解

Java注释被用来为java代码提供元数据(meta data)。作为元数据,注释不会直接影响代码的执行结果,不过事实上有些注释就是为了影响代码的执行结果而定义的。 Java注释是从Java 5开始添加的。本文对于Java注释的讨论是基于java 6的,据我所知,到目前为止Java 7中关于注释的部并没有发生改变,所以本文对java 7编程人员上来说应该也是可用的。 目录: · Java 注释的作用 · 注释的基础知识 · 注释的位置 · Java中预置的注释 · 创建你自己的注释 Java 注释的作用 预编译指令(Compiler instructions) 编译时指令(Build-time instructions) 运行时指令(Runtime instructions) Java有...阅读全文

博文 2013-03-02 08:04:55 CSDN博客

Golang 中的 channel 通道详解

发送和接收操作将导致两个goroutine做一次同步操作。 因为这个原因,无缓存Channels有时候也被称为同步Channels 。当通过一个无缓存Channels发送数据时,接收者收到数据发生在再次唤醒发送者goroutine之前。单向channel当一个channel作为一个函数参数时,它一般总是被专门用于只发送或者只接收。为了表明这种意图并防止被滥用,Go语言的类型系统提供了单方向的channel类型,别用于只发送或只接收的channel。类型 chan<- int 表示一个只发送int的channel,只能发送不能接收。相反,类型<-chan int 表示一个只接收int的channel,只能接收不能发送。(箭头<-和关键字chan的相对位置表明了channel的方向 。)这种限...阅读全文

Docker 17.06 社区版发布

-only —subnet=10.1.0.0/16 local-config [Wrk-node2]$ docker network create —config-only —subnet=10.2.0.0/16 local-config [Mgr-node2]$ docker network create —scope=swarm —config-from=local-config -d macvlan mynet [Mgr-node2]$ docker service create —network=mynet my_new_service Swarm Mode Swarm mode添加了很多的新特性,这里是一部: 配置对象 swarm mode的一个新的配置对象,允许安全地像传递密码一样传递...阅读全文

博文 2017-06-30 23:08:57 debian.cn