【笔记】使用 PDB 符号文件导出 Windows 内核数据结构

2022-03-26
阅读 2 分钟
3.1k
msvcrt.dll ucrtbase.dll 提供基础 CRT (C语言运行时)库,例如 fopen,_sleep 等。前者 msvcrt 绑定 MSVC 版本号,不同的版本不完全兼容(这也是安装很多软件时会让你装微软运行时的缘故),后者是微软新出的通用版本,所谓 Universal CRT

在 CentOS 下为 nginx 启用 SSL_sendfile 支持

2021-12-27
阅读 2 分钟
3.6k
Linux 的 sendfile 系统调用是最快的发送静态文件的方式。它通过在内核中直接拷贝数据,避免了使用 read / write 导致的用户态、内核态的上下文切换,极大的提升了传输效率。nginx 也很早就支持了 sendfile 指令的使用。

【硬核】乘以 0.01 和除以 100 哪个快?

2021-12-05
阅读 5 分钟
4.1k
在知乎上看到这个问题,觉得挺有趣的。下面的回答五花八门,但是就是没有直接给出真正的benchmark结果的。还有直接搬反汇编代码的,只不过汇编里用了 x87 FPU 指令集,天那这都 202x 年了真的还有程序用这个老掉牙的浮点运算指令集的吗?

前端的“Race Condition”

2021-03-11
阅读 7 分钟
3.2k
theme: qklhk-chocolate关于 Race Condition关于 Race Condition,维基上有具体介绍(英文版的更详细):举个例子,大概就是两个线程去修改全局资源,理想的情况:但在缺少同步锁的情况下,实际的情况可能是这样:如何去解决:大意是大部分语言都提供了资源锁/同步锁这种东西,根据不同的语言选择不同的方法去处理这个问题...
封面图

用个 EventBus 还得找第三方库?直接使用原生实现,B格瞬间提升一级

2020-09-13
阅读 2 分钟
3.9k
​Vue 3 大改了事件绑定机制,事件绑定变成了简单的属性传递,$on、$off 也没了,Vue 对象完全失去了 EventBus 的功能。尤大最后安利了一个第三方库,用个 EventBus 发个事件还要第三方库?这也太 low 了吧。

神奇的 JavaScript 之 bind.bind.bind

2020-08-23
阅读 2 分钟
2.4k
事情起源于一段JS代码: {代码...} 源代码出自 echarts 的底层依赖 zrender,为了优化我的 offscreen-echarts 库我在读 echarts 的源码,于是就发现了这段代码。干嘛要自己重新实现一遍 bind,难道还有浏览器不支持?于是去查了一下 MDN:好吧,果然是我大 IE8。想到 echarts 里大量的 VML 代码,我大百度还是对 IE8 用...

JavaScript:关于数组的四道面试题

2019-12-21
阅读 3 分钟
5.3k
已知后端返回一个对象数组,格式类似这样: {代码...} 按要求写代码: 按照 name 属性降序排序(字母顺序从大到小) 去除 id 属性相同的元素(如出现重复,后出现的覆盖先出现的,不要求保留原始顺序) 过滤出所有的95后(birth >= 1995年1月1日) 如何做前端分页 由于公司是大数据处理业务,数组相关操作使用还是挺...

一个可以用来截图的React组件

2019-10-22
阅读 4 分钟
5.2k
起初只是和同事在去吃路的路上, 互相吹*, 扯一些有的没得, 然后说到了马赛克, 探讨了一下马赛克的实现, 觉得还蛮有意思的, 感觉可以实现一波, 后面我觉得只实现马赛克功能又太单调, 就像做一个类似微信截图的功能.

文件系统与异步操作——异步IO那些破事

2019-06-16
阅读 3 分钟
8.5k
前面这篇文章提到,旧的 Linux AIO 只支持直接(Direct)IO,还对读写区域大小有限制,但是 Windows 上的 IOCP 就有完整的 AIO 支持。之前真的觉得 Windows 真的很牛B,但是对为什么这样一直懵懵懂懂。

用 io_uring 替代 epoll 实现高速 polling

2019-06-02
阅读 2 分钟
13.1k
前面的文章说到 io_uring 是 Linux 中最新的原生异步 I/O 实现,实际上 io_uring 也支持 polling,是良好的 epoll 替代品。

原生的 Linux 异步文件操作,io_uring 尝鲜体验

2019-05-27
阅读 5 分钟
16.7k
异步IO一直是 Linux 系统的痛。Linux 很早就有 POSIX AIO 这套异步IO实现,但它是在用户空间自己开用户线程模拟的,效率极其低下。后来在 Linux 2.6 引入了真正的内核级别支持的异步IO实现(Linux aio),但是它只支持 Direct IO,只支持磁盘文件读写,而且对文件大小还有限制,总之各种麻烦。到目前为止(2019年5月),...

C++:string_view 与 C API 的互操作性

2019-05-16
阅读 1 分钟
3.6k
std::string_view 是 C++17 新加的一个类,是字符串的无所有权引用。对 std::string_view 的操作都不会生成新字符串(比如 substr),而是返回一个新的 string_view 但是引用原字符串。

生成器与迭代器

2019-04-22
阅读 4 分钟
1.9k
range 就是一个生成器函数,它自身是函数可以调用(typeof range === 'function' // true),但又与普通函数不同,生成器函数(GeneratorFunction)永远返回一个生成器(Generator)

编写自适应高度的 textarea

2019-02-25
阅读 3 分钟
5.4k
有些初学者可能会想:自适应高度不就是 height: auto 么?可是你想一下,一个 textarea 没有手工给它指定过样式,不应该就默认是 height: auto 么?但是它还是有自己的初始高度,并没有像一个 div 那样高度为 0。

二进制状态码

2019-02-01
阅读 1 分钟
4.1k
我们知道计算机中数据都是用二进制数存储。二进制数是一系列0和1的组合,长整型64位,最短的字节型也有8位。其中每一位0和1都可以看做一种状态的开和关,所以就有了这样的一种状态码存储方式:把同一对象的多种状态按位组合到一个整数中。

庆祝新年?画一颗圣诞树?还是...

2019-01-21
阅读 6 分钟
2.8k
圣诞节,元旦,看大家(情侣)在朋友圈里发各种庆祝的或者祝福的话语,甚是感动,然后悄悄拉黑了。作为单身狗,我们也有自己庆祝节日的方式,今天我们就来实现一些祝福的效果。

Service worker (@nuxtjs/workbox) 采坑记

2018-09-20
阅读 3 分钟
7.9k
PWA(Progressive Web App)是前端的大趋势,它能极大的加快前端页面的加载速度,得到近乎原生 app 的展示效果(其实难说)。PWA 其实是多种前端技术的组合,其中最重要的一个技术就是 service worker。

关于 http2 下 push 接口请求的正确姿势

2018-06-04
阅读 2 分钟
6.7k
今天听👆哥说(吹)到他们网站用HTTP2推送接口请求极大的加快的网站访问速度。其实我在去年研究 HTTP2_push 时就想到了这个情形。 是否需要 push 静态资源是有疑问的:由于缓存的存在,你不能确保客户端真的需要这个文件。虽然浏览器可以主动阻止 PUSH 帧的发送,但是对于已发出的帧无能为力。 接口请求就不存在这个情况...

用 :focus-within 实现纯 CSS 下拉框组件

2018-05-21
阅读 1 分钟
2.9k
当点击表单中的文本框时需高亮整个表单元素。但是表单内部的文本框获得焦点并不代表表单元素本身有焦点,所以使用 form:focus 并不能生效,这时就可以使用 :focus-within

Angularjs 1 深度解析:组件化编程

2018-05-13
阅读 6 分钟
6.1k
前端组件化是前端开发模式中一个不可逆转的趋势,三大主要前端框架 angular 2 react vue 都不约而同的把组件化编程作为自己的一大卖点,angular 1 作为一个历史相对悠久的框架,在私生子 angular 2 的推动下,终于也搭上了组件化编程的末班车,公司里那些老项目终于也有机会体验组件化编程的滋味。

微信小游戏的前端攻城狮玩法

2018-05-13
阅读 5 分钟
5.4k
别人的截图都是25分左右,还有30分以上的。自己玩了两把,20分都没上,于是只能悻悻的闷声当没看见。但如果你是一名前端攻城狮,并且还有一台电脑在手边,那就大不一样了。因为:前端攻城狮有前端攻城狮的玩法。

如何检测浏览器是否支持某个伪类

2018-05-10
阅读 1 分钟
2.6k
原理:如果 CSS 解析器不认识某个伪类,CSS 会认为其整条规则都不合法,并将其忽略。style.sheet.cssRules 只会存放解析成功的规则,所以如果浏览器不认识这个伪类,就不会把这条规则存入 cssRules

四个最诡异的 CSS 特性

2018-05-06
阅读 2 分钟
2.5k
JavaScript 作为一个创始人拍脑袋 10 天搞出的语言,JS 中包含了很多在今天看来很多不应该出现在现代语言中的诡异特性。其实,作为 Web 中必不可少的 CSS 语言也不逞多让。今天我就来聊聊我认为的那些最诡异的 CSS 特性。

给你的网页游戏添加游戏手柄支持

2018-04-23
阅读 2 分钟
8.5k
HTML5 中获取游戏手柄的 API 是 navigator.getGamepads()。navigator.getGamepads 会返回一个可能包含 null 的数组。标准规定,对于同一个游戏手柄会在同一个下标中返回,不同的手柄必须不能使用其他手柄用过的下标——即便前者已经中断连接。如果没有检测到任何游戏手柄,实测在 Firefox 中会返回一个空数组,而在 Chrome...

redux中的异步

2018-03-29
阅读 5 分钟
4.6k
无论是前端开发还是后端的nodejs,异步基本上总是核心。我所在的公司是做大数据处理的,经常需要从后台拿取大量的数据,导致整个请求会比较耗时。如下一个场景:我选择A应用,点击搜索,这时候我马上去选择应用B,点击搜索,可能的情况是,A的数据量比B的数据量大,导致A的结果是你最后获取到的,这是就会出现这样的问题...

使用正则表达式找出所有不包含某字符串的行

2018-03-05
阅读 2 分钟
18.8k
通过 /\.(jpg|png|svg|gif|webp)$/ 判断图片文件,如果符合条件则将其储存至 images 目录下。然而这样做会把类似 fontawesome-webfont.svg 和 glyphicons-halflings-regular.svg 这样的字体文件也匹配进去

可拖动table表头的实现

2018-02-09
阅读 6 分钟
8.1k
自己做的项目碰到这样一个需求,就是对所有的表格添加表头可以拖动的效果。我一想,这不简单,分分钟钟给你做出来。拿起我的电脑,啪啪啪就敲起来了。一定是哪里不对,以我的聪明才智,结果应该不是这样的,然后净下心来,好好理了下思路后,总算是做出来了。至于结果嘛,我肯定是做出来的,像下面这种:

巧用 `Promise.all` 实现函数:有一个 Promise 被 resolve 整个函数就被 resolve

2018-02-04
阅读 2 分钟
3.8k
对于这样的问题,一个比较简单的方案是依次调用各个接口,如果前一个接口未成功返回再调用第二个接口。这样做的好处是对于服务器资源消耗比较小,但对于用户来说效率非常低下。设想调用第一个接口经过 20 秒超时出错才调用第二个接口,如果第二个接口又是 20 秒超时,用户就已经等待了 40 秒。用户的等待时间按线性增长...

scrollIntoView 与平滑滚动

2018-01-15
阅读 2 分钟
18.3k
经常有这样的需求:点击一个链接(内链)跳转到当前页面中间某个部分。对于这样的需求,很容易想到使用锚点实现。但有一个问题:滚动一步到位,太生硬了。

给初学者:JavaScript 的常见注意点

2018-01-06
阅读 5 分钟
5.1k
上篇说了一些 JS 中数组操作的常见误区,这次来总结一下初学者常见的其他易错点。 写立即执行函数时前置 void 立即执行函数(IIFE)在 JS 非常常用,作用就是构造一个函数级的变量作用域。常见的写法如下: {代码...} 这样写可能会被 JS 理解成为一个函数调用 {代码...} 从今天改变习惯,这样写: {代码...} 有些人喜欢...