202003-12 一个零 GC 的缓存库:freecache HOT 今天给大家推荐一个零 GC 开销、高并发性能的缓存库:FreeCache,项目地址:https://github.com/coocood/freecache,Star 数:2.5k+。 继续阅读 >
202003-12 Micro In Action(一):入门 HOT 这个系列聊一聊 Micro, 我们将以实际开发微服务为主线,顺带解析相关功能。从最基本的话题开始,逐步转到高级特性。 Micro 很强大,掌握后使用起来也相当便利。但它的演进速度非常快, 导致其文档有严重缺失和滞后。 很多功能没有文档;很多基本问题不得不去 GitHub 上提 issue 或去 Slack 里面问,又得不到什么反馈。最后, 查看源码成了唯一的学习途径。这对于使用者来说非常不友好,阻碍了 Micro 被更多人所采用。 继续阅读 >
202003-12 “网红” WebAssembly 与 K8s 如何实现双剑合璧? HOT WebAssembly 技术已经走出浏览器,让计算无处不在。本文利用 containerd 的扩展机制,可以为 WebAssembly 应用提供与其他容器应用一致的、抽象的、应用分发、交付和运维模型,可以在 Kubernetes 集群中进行统一调度和管理。 继续阅读 >
202003-11 Golang源码系列四:Interface实现原理分析 HOT 接口是一种抽象类型,它没有暴露所含数据的布局或者内部结构,当然也没有哪些数据的基本操作,所提供的仅仅是一些方法。当你拿到一个接口类型的变量,你无从知道它是什么,但你能知道它能做什么,或者更精确地讲,仅仅是它提供了哪些方法。 继续阅读 >
202003-11 Golang源码系列三:Channel实现原理分析 HOT channel可以在两个或者多个goroutine之间传递消息。在Go中,goroutine和channel是并发编程的两大基石,goroutine用来执行并发任务,channel用来在goroutine之间来传递消息。 继续阅读 >
202003-11 Golang 源码系列二:Slice实现原理分析 HOT 众所周知,在golang中,slice(切片)是我们最常使用到的一种数据结构,是一种可变长度的数组,本篇文章我们主要结合源码来介绍一下slice的底层实现,以及在使用slice时的一些注意事项。 继续阅读 >
202003-11 Golang源码系列一:Map实现原理分析 HOT 每个map的底层结构是hmap,是有若干个结构为bmap的bucket组成的数组。每个bucket底层都采用链表结构。 继续阅读 >
202003-10 除了标准库 sync 包外,这个官方包(golang.org/x下的)你应该了解 HOT go 语言里使用 go 关键字就可以轻松搞定并发的问题,它讲究的是“不要通过共享内存来通信,而应该通过通信来共享内存”的原则,在 Go 里 channel 是个线程安全的多线程通讯介质。Go 本身的这些原语基本上可以解决常见的各种需求了。 继续阅读 >
202003-10 Go 如何防止缓存穿透 HOT 事实上不止于防止 缓存穿透, do-once-while-concurrent 更准确的定位是 重复资源过滤 ,,在某讲座业务中,使用 do-once-while-concurrent 来避免同一时刻同一用户id 重复解析 、列表页 重复检索 、排序 等,减少了资源竞争,提高了整体的qps和稳定性。 继续阅读 >
202003-10 一文掌握 Go 语言 Select 的四大用法 HOT 本文带大家认识 Go 语言的 Select 用法,相信大家对于 switch 并不陌生,然而 select 跟 switch 有个共同特性就是都通过 case 的方式来处理,但是 select 跟 switch 处理的事情完全不同,也完全不相容。来看看 switch 有什么特性: 各种类型及型别操作,接口 interface{} 型别判断 variable.(type),重点是会依照 case 顺序依序执行。 继续阅读 >
202003-03 Go-项目结构和代码组织 做大量的输入,通过对比、借鉴,加上自己的经验,产出一个尽可能优的方案。 开源界优秀项目的结构示例 因为最新的 Go 版本已经使用 module 作为版本依赖,所以,所有项目的 vendor 我都忽略,建议直接使用 module 来管理依赖,而且较好的解决某些库国内访问不了的问题 继续阅读 >
202002-14 Go语言之父带你重新认识字符串、字节、rune和字符 Go语言之父带你重新认识字符串、字节、rune和字符 文章篇幅还是挺长的,大家时间都很宝贵所以我先把文章探究的问题的结论放在前面,有时间的同学还是建议整篇读一下。 继续阅读 >
201906-01 黑客入侵 linux 系统常用手段,有你不知道的没? HOT linux不提权跨目录访问的代码 linux权限多设的比较松的其实,但有的虚拟机还是不能跨目录访问的。 在提不了权的情况下,试试如下代码吧。 继续阅读 >
201903-06 学习编程需要什么基础吗 推荐 有的人认为学习编程不需要的基础,俗语说笨鸟先飞,勤能补拙,你只要认真学习编程的每一门课程,多吧自己的学到的知识引用实践练习。不过在学习编程语言之前首先你得明确自己对编程的兴趣,然后是你学习编程的目的。只有对编程有很大兴趣和目的,那样你学习起来也会很有冲劲和奋斗目标,学习效率也会大步提高 继续阅读 >
201903-05 编程语言的学习方法 推荐 开始入门的时候你可以去网上搜索一些经典的编程语言书籍,针对性的去找自己想学的那一类的书籍。我个人反而更喜欢去一些编程视频网站看一些视频同步学习,如:六星教育和编程学习网等网络视频网站,这样给人更直观的感受; 继续阅读 >
201903-04 自学编程需克服的几大因素 推荐 现在的大学生普遍现象是毕业之后在家不知道自己该做什么,能做什么,感觉很迷茫。 经过一段时间,有的去做销售,有的去创业,甚至有的进厂等等五花八门各门各业都有 。不过也有一些经过家里人的推荐尝试着去学习网络编程,越来越多的人对学习编程产 生了兴趣。 继续阅读 >
201902-22 PHP程序员如何预估自己的项目开发时间? 项目时间的估算对项目的成败至关重要。项目时间管理包括了项目按时完成所需的各个过程。但是,在实际项目中,经常出现项目延期,估算严重不准确的现象。 继续阅读 >
201901-03 你真的了解回流和重绘吗? 回流和重绘可以说是每一个web开发者都经常听到的两个词语,我也不例外,可是我之前一直不是很清楚这两步具体做了什么事情。最近由于部门内部要做分享,所以对其进行了一些研究,看了一些博客和书籍,整理了一些内容并且结合一些例子,写了这篇文章,希望可以帮助到大家。浏览器的渲染过程本文先从浏览器的渲染过程来从头到尾的讲解一下回流重绘,如果大家想直接看如何减少回流和重绘,可以跳到后面。(这个渲染过程来... 继续阅读 >
201812-17 Redis是单线程的,但Redis为什么这么快? 近乎所有与Java相关的面试都会问到缓存的问题,基础一点的会问到什么是“二八定律”、什么是“热数据和冷数据”,复杂一点的会问到缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题,这些看似不常见的概念,都与我们的缓存服务器相关,一般常用的缓存服务器有Redis、Memcached等,而笔者目前最常用的也只有Redis这一种。如果你在以前面试的时候还没有遇到过面试官问你《为什么说Redis是单线... 继续阅读 >
201812-17 腾讯的历史 今天,我读到一篇英语文章,向美国读者介绍腾讯公司的历史。我觉得,这篇文章整理了好多资料,写得非常清楚。腾讯是怎么发展起来的,只看这篇文章就够了。下面就是它的译文,供大家参考。1、1971年,马化腾生于海南。13岁,随家人移居到深圳。1989年,父母希望马化腾在本地读大学,所以他选择了深圳大学,尽管他的高考分数可以上清华大学。马化腾早年对天文学着迷,打算选择这个专业,但是深圳大学没有天... 继续阅读 >
201812-13 图解WebGL和Three.js工作原理 一、我们讲什么?我们讲两个东西:1、WebGL背后的工作原理是什么?2、以Three.js为例,讲述框架在背后扮演什么样的角色?二、我们为什么要了解原理?我们假定你对WebGL已经有一定了解,或者用Three.js做过了一些东西,这个时候,你可能碰到了这样一些问题:1、很多东西还是做不出来,甚至没有任何思路;2、碰到bug无法解决,甚至没有方向;3、性能出现问题,完全不知道如何去优化。这个时候,我们需要了解更多。三、先... 继续阅读 >
201812-07 微软正在构建一个基于 Chromium 的浏览器并计划取代 Microsoft Edge 微软终于在浏览器上认输了?在用Edge取代多年的IE之后,如今Edge也低下了头颅,承认了Chrome的胜利。MicrosoftEdge浏览器在2015年1月21日公布,并在3月30日发布了第一个预览版,并在之后成为Windows10的默认浏览器,采用EdgeHTML渲染引擎并在体验上相比IE有着多项改进。但现在 Edge默认浏览器的地位已经岌岌可危,根据windowscentral的报道,微软将放弃自家的EdgeHTML渲染引... 继续阅读 >
201812-07 谷歌的JavaScript编写风格中 13点值得我们注意的! 对于那些还不熟悉JavaScript的编写风格的人,谷歌提供了编写JavaScript的编写风格指南,谷歌风格指南其中列出了编写干净、可理解代码的最佳风格实践。对于编写有效的JavaScript来说,这些并不是硬性的、快速的规则,而只是在源文件中维护一致的、吸引人的样式选择的规则。这对于JavaScript来说尤其有趣,它是一种灵活且多变的语言,允许多种风格的选择。谷歌和Airbnb有两个最受欢迎的编写风格指南。如果我的工作... 继续阅读 >
201812-07 用信鸽来解释 HTTPS 密码学是一门难以理解的学科,因为它充满了数学定理。但是除非你要实际开发出一套加密算法系统,否则你是没必要强制理解那些深奥的数学定理的。如果你阅读本文的目的是想设计下一套HTTPS协议,那我只能抱歉的说本文的知识还远远不够;如果不是的话,那么就煮杯咖啡,轻松愉悦的阅读本文吧。爱丽丝、鲍伯和...信鸽?你在互联网上从事的任何活动(阅读这篇文章、在亚马逊上购物、上传图片等)归结到底都是... 继续阅读 >