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协议,那我只能抱歉的说本文的知识还远远不够;如果不是的话,那么就煮杯咖啡,轻松愉悦的阅读本文吧。爱丽丝、鲍伯和...信鸽?你在互联网上从事的任何活动(阅读这篇文章、在亚马逊上购物、上传图片等)归结到底都是... 继续阅读 >
201812-03 XOR 加密简介 本文介绍一种简单高效、非常安全的加密方法:XOR加密。一、XOR运算逻辑运算之中,除了AND和OR,还有一种XOR运算,中文称为"异或运算"。它的定义是:两个值相同时,返回false,否则返回true。也就是说,XOR可以用来判断两个值是否不同。trueXORtrue//falsefalseXORfalse//falsetrueXORfalse//truetrueXORfalse//trueJavaScript语言的二进制运算,有一个专门的XOR运算符,写作^。1^1//00^... 继续阅读 >
201812-03 离屏Canvas — 使用Web Worker提高你的Canvas运行速度 原文链接:developers.google.com现在因为有了离屏Canvas,你可以不用在你的主线程中绘制图像了!Canvas是一个非常受欢迎的表现方式,同时也是WebGL的入口。它能绘制图形,图片,展示动画,甚至是处理视频内容。它经常被用来在富媒体web应用中创建炫酷的用户界面或者是制作在线(web)游戏。它是非常灵活的,这意味着绘制在Canvas的内容可以被编程。举个... 继续阅读 >
201812-03 SQL优化指南 慢查询日志开启撒网模式 开启了MySQL慢查询日志之后,MySQL会自动将执行时间超过指定秒数的SQL统统记录下来,这对于搜罗线上慢SQL有很大的帮助。SHOWVARIABLESLIKE'slow%'以我刚安装的mysql5.7为例查询结果是这样子的:slow_launch_time:表示如果建立线程花费了比这个值更长的时间,slow_launch_threads计数器将增加slow_query_log:是否开启慢查询日志ON开启,OFF关闭默认没有开启... 继续阅读 >
201812-03 漫画赏析:Linux 内核到底长啥样 今天,我来为大家解读一幅来自TurnOff.us的漫画“InSideTheLinuxKernel”。 TurnOff.us 是一个极客漫画网站,作者DanielStori画了一些非常有趣的关于编程语言、Web、云计算、Linux相关的漫画。今天解读的便是其中的一篇。在开始,我们先来看看这幅漫画的全貌!这幅漫画是以一个房子的侧方刨面图来绘画的。使用这样的一个房子来代表Linux内核。地基作为一个房子,最重要... 继续阅读 >
201812-03 ROS 和Web 带来更智能的机器人 随着AI的发展,机器人必然变得越来越智能。然而要实现智能化,除了需要丰富的AI算法外,还需要强大的操作系统支持——ROS就是这样一款非常受欢迎的机器人系统。ROS目前已经建立了庞大的生态系统,其参与者包括来自全球机器人行业的众多开发者,而英特尔开源技术中心(OTC)的Web团队也是其中重要一员。他们在客户端、edge、云、IoT、W3C标准、机器人技术等领域开发及应用web技术,致力于保持web开放、安全、特性丰... 继续阅读 >
201811-16 如何优雅地写JS串行异步逻辑 随着现代浏览器的不断发展,相信大家渐渐对ES6中的Promise已经有很多的使用了,其中对Promise.all估计也用的很多。Promise.all就是并行执行多个任务,然后在所有任务成功后触发then里面的内容,或者任意一个任务失败后触发catch里面的内容。虽然Promise.all非常好用,但它也不是适合所有的场景,最常见的就是有些场景是需要串行的,一个任务列表要按顺序依次循环执行,任意一个失败就不触发下面的任务。那要实现这样的功能能怎么... 继续阅读 >