• JavaScript与有限状态机
    有限状态机(Finite-state machine)是一个非常有用的模型,可以模拟世界上大部分事物。 简单说,它有三个特征:   * 状态总数(state)是有限的。   * 任一时刻,只处在一种状态之中。   * 某种条件下,会从一种状态转变(transition)...
  • Javascript异步编程的4种方法
    你可能知道,Javascript语言的执行环境是"单线程"(single thread)。 所谓"单线程",就是指一次只能完成一件任务。如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推。 这种模式的好处是实现起来比较简单,执行环境相对单纯;坏处是只...
  • Javascript模块化编程(二):AMD规范
    这个系列的第一部分介绍了Javascript模块的基本写法,今天介绍如何规范地使用模块。 (接上文) 七、模块的规范 先想一想,为什么模块很重要? 因为有了模块,我们就可以更方便地使用别人的代码,想要什么功能,就加载什么模块。 但是,这样做有一个前提,那就是大家必须以...
  • 文件上传的渐进式增强
    文件上传是最古老的互联网操作之一。 20多年了,它几乎没变,还是原来的样子:操作麻烦、缺乏交互、用户体验不佳。在这个新技术日新月异的时代,显得非常落伍。 网页开发者们想了很多办法,试图提升文件上传的功能和操作体验,在各种Javascript库的基础上,开发了五花八门的插件。...
  • jQuery的deferred对象详解
    jQuery的开发速度很快,几乎每半年一个大版本,每两个月一个小版本。 每个版本都会引入一些新功能。今天我想介绍的,就是从jQuery 1.5.0版本开始引入的一个新功能----deferred对象。 这个功能很重要,未来将成为jQuery的核心方法,它彻底改变了如何在jQue...
  • 线程安全的 log 回调函数
    最近在做 3d engine 时发现,我们使用的渲染 api 库 bgfx 提供的 log 回调函数是需要自己保证线程安全的。也就是说 bgfx 有可能在不同线程(采用多线程渲染时)调用这个 log 回调函数。 如果回调函数仅仅只是把 log 串写入文件(例如标准输出),那么可以由 crt 本身来保证线程安全。但如果想自己处理 log ,例如把 log 串压回 lua 虚拟机,那么就必须自己负责线程安全的问题。 ...
  • skynet 里的 coroutine
    skynet 本质上只是一个消息分发器,以服务为单位,给每个服务一个独立的 id ,可以从任意服务向另一个服务发送消息。 在此基础上,我们在服务中接入 Lua 虚拟机,并将消息收发的 api 封装成 lua 模块。目前用 lua 编写的服务在最底层只有一个入口,就是接收并处理一条 skynet 框架转发过来的消息。我们可以通过 skynet.core.callback (这是一个内部 API ,用 C 编写,通常由 skynet.start 调...
  • skynet 的启动流程中的异步 IO 问题
    有同学向我反应,自从 skynet 的 IO 库重写后,Mac OSX 上便无法启动了。 我检查了一下,直接原因是 kqueue 部分写的不对。kqueue 和 epoll 的 api 设计还是有些区别的,epoll 的 api 可以合并读写消息,但 kqueue 读是读,写是写。当时随手写好后一直没有在真实环境下测试,所以一直是有问题的,只是这次另外一个问题将它暴露了。 我新写的 IO 库是异步操作的。异步处理针对任何 IO 请求,其中也包...
  • 在 C 中设置 Lua 回调函数引起的一处 bug
    我们的服务器框架提供了一个 C 接口, 在 RPC 调用时, 回调一个事先注册的函数. C 中标准的回调函数的接口设计, 标准方法是设置一个 C 函数指针加一个 void * 类型的数据指针. 由于我们的游戏逻辑使用 Lua 来实现, 所以这里只需要实现一个 C 函数去调 Lua 机里的函数, 而对应的 void * 自然就是 lua_State * 。 今天,同事在实现服务的热更新功能。发现多次热更新 lua 写的服务会导致一处 core...
  • 正确的迭代处理对象
    昨天在写一个 AOI 模块,设计时又碰到一个对象迭代的老问题,必须谨慎对待,文以记之。 缘起: 当对象 A 进入 B 的 AOI 区域时,会触发一个 Enter 事件。这个事件处理是以回调函数的形式完成,如果回调函数中再次调用 AOI 模块,产生一次间接递归,就有可能破坏 AOI 模块内部的某些迭代过程。 更要命的是,如果回调函数内删除了一些相关对象,很有可能引起对已释放对象的访问错误。 这类问题在各种对象管理的程序框架中经常出现。除了上...
  • 实现一个 timer
    前段时间写过一篇 blog 谈到 用 timer 驱动游戏 的一个想法。当 timer 被大量使用之后,似乎自己实现一个 timer 比用系统提供的要放心一些。最近在重构以前的代码,顺便也重新实现了一下 timer 模块。 这次出于谨慎,查了一些资料,无意中搜到这样一篇文章:Linux内核的时钟中断机制 。真是一个不错的设计啊 :D 和我的 timer 实现的思路是一致的,但是在细节上要优秀。 ...
  • Scrapy框架| Scrapy中spiders的那些事......
    来源:JAP君   链接:https://mp.weixin.qq.com/s/Rdv-ncSzlol_IpJtQ7TRjQ1写在前面的话     今天继续更新scrapy的专栏文章,今天我们来聊一聊scrapy中spiders的用法。我们知道在整个框架体系中,spiders是我们主要进行编写的部分,所以弄清楚spiders这一块的知识,对我们学习scrapy有着很大的好处。但是这一章里大多数都是一些spiders里面的一些模板的介绍,实战代码可能会比较少,但是大家了解了这些之后,对于scrapy的使用会更...
  • 深入理解php的输出缓冲区(output buffer)
    微信公众号:PHP在线这篇文章是翻译自Julien Pauli的博客文章PHP output buffer in deep,Julien是PHP源码的资深开发和维护人员。这篇文章从多个方面讲解了PHP中的输出缓冲区以及怎么使用它。输出缓冲区可能一直都是PHP开发人员的一个盲点,很多人可能只是知道这个东西,而且也知道大概怎么使用,但对于它为什么是这个样子,以及还可能是其他什么样子,可能并不了解,这篇文章可以解决你的所有困惑!引言大家都知道PHP中有一个名为“输出缓冲区”层(layer)的东西。这篇文章就是来讲...
  • 深入理解php的输出缓冲区(output buffer)
    这篇文章是翻译自Julien Pauli的博客文章PHP output buffer in deep,Julien是PHP源码的资深开发和维护人员。这篇文章从多个方面讲解了PHP中的输出缓冲区以及怎么使用它。输出缓冲区可能一直都是PHP开发人员的一个盲点,很多人可能只是知道这个东西,而且也知道大概怎么使用,但对于它为什么是这个样子,以及还可能是其他什么样子,可能并不了解,这篇文章可以解决你的所有困惑!引言大家都知道PHP中有一个名为“输出缓冲区”层(layer)的东西。这篇文章就是来讲解它到底是个什么东西的...
  • 面试官想知道你有多理解call,apply,bind?
    函数原型链中的 apply,call 和 bind 方法是 JavaScript 中相当重要的概念,与 this 关键字密切相关,相当一部分人对它们的理解还是比较浅显,所谓js基础扎实,绕不开这些基础常用的API,这次让我们来彻底掌握它们吧!目录call,apply,bind的基本介绍call/apply/bind的核心理念:借用方法call和apply的应用场景bind的应用场景中高级面试题:手写call/apply、bindcall,apply,bind的基本介绍语法:fun.call(thisArg,...
  • 重磅推荐:六个让前端既高效又有趣的开发神器
    loonggg读完需要5分钟速读仅需2分钟我最近已经大约应该有快一年的时间没有再开发 Android 了,自从来到二线城市,做 Android 开发也是断断续续,一会 Android ,一会小程序开发,一会又用 Vue 做前端开发,中间也穿插着各种技术管理和团队管理的工作。在非一线城市做开发工作,给我最大的感受就是需要工程师什么都会,最好是全栈,你懂得越多越有价值,而不是你懂得越精,越深越有价值。由于最近半年一直在做 Vue 的开发工作,今天我就整理了 6 个 Vue 相关的工具和开源库,都非常有价值,希望...
  • 你了解Promise吗?
    导读在异步编程中,Promise扮演了举足轻重的角色,它解决了ajax请求过程中的回调地狱的问题,令代码更具可读性。下面的介绍中,笔者会通过一些片段代码,加上一些其自己的理解带大家一起重新温故一下Promise为编程所带来的便利。Promise是抽象异步处理对象以及对其进行各种操作的组件;Promise很重要!实例:var promise = new Promise;//使用promise.then.catch;注意:本文中的函数表达式均采用ES6的箭头函数表达式的语法,你若还不是很清楚,请自行查阅[1]。介绍完回调函数,要回到Promise的主场了。这时Promise就要闪亮登场了,Promise中强大的then方法,可以解决刚刚出现的恐怖的回调地狱问题,并且让代码更优雅。
官方公众号
活跃用户
专注前端开发技术,分享前端开发资源和前沿技术资讯,助力前端开发工程师更好成长。
关注前端,产品体验设计,更关注前端同行的成长。 每天清晨五点早读,七万+同行相伴成长。
西安交大品牌讲座“学而讲坛”创始人和负责人,致力于打造一个跨界融合的学术共同体。北大文学博士,西安交大国家大学生文化素质教育基地副主任,人文学院高培中心主任,著有《陕西文化产业实战研究》、《视觉素养导论》、《艺术导论》、《读图范式》等。
《科技日报》是富有鲜明科技特色的综合性日报,是面向国内外公开发行的中央主流新闻媒体,是党和国家在科技领域的重要舆论前沿,是广大读者依靠科技创造财富、提升文明、刷新生活的服务平台,是中国科技界面向社会、连接世界的明亮窗口。
我们是网络世界的启明星,安全之路的垫脚石。
每天分享成长干货,路虽远,行则必至
专注于.NET Core的技术传播。在这里你可以谈微软.NET,Mono的跨平台开发技术。在这里可以让你的.NET项目有新的思路,不局限于微软的技术栈,横跨Windows,Linux 主流平台
讯石信息咨询(深圳)有限公司成立于2001年4月,由国际光电产业的一群通讯行业专家、管理专家与咨询专家共同创办而成。
围绕Database、Bigdata、AiOps的企业级专业社群。顶级大咖、技术干货,每天精品原创文章推送,每周线上技术分享,每月线下技术沙龙,受众20W+。
一个专注侃侃计算机视觉方向的公众号。计算机视觉、图像处理、机器学习、深度学习、C/C++、Python、诗和远方等。
《前端剑解》 —— 是由海之林技术团队维护的前端公众号,关注前端技能的发展;【前端面试每日3+1】 —— 365天,每天早上5点发布面试题(html, css, js, 软技能),以面试题来驱动学习,提倡每日学习与思考,每天进步一点!
我是浪里行舟,Github博客3000+star作者,致力于打造一系列能够帮助初中级工程师提高的优质文章。
Java和大数据领域开发,干货,面试,资料下载,源码解读等
分享项目实践,洞察前沿架构,聚焦云计算、微服务、大数据、超融合、软件定义、数据保护、人工智能、行业实践和解决方案。
记录工作,生活的地方。
一个有情怀的公众号。机器学习、自然语言处理、算法等知识集中营、期待与你相遇~
每天分享Flutter&Dart技术
高效运维公众号由萧田国及朋友们维护,经常发布各种广为传播的优秀原创技术文章,关注运维转型,陪伴您的运维职业生涯,一起愉快滴发展。
web笔记本,随身携带的笔记本。记录互联网、编程、工作等的思考感悟,专注前端学习成长。欢迎留言与我探讨呀~