V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  yezheyu  ›  全部回复第 1 页 / 共 4 页
回复总数  65
1  2  3  4  
149 天前
回复了 yezheyu 创建的主题 Unix 请教下关于 IO 缓冲的一点疑问
顶下帖
150 天前
回复了 yezheyu 创建的主题 Unix 请教下关于 IO 缓冲的一点疑问
@zeonluang 是不是对于文件来说,如果文件数据比较小,page 的优先级是高于行缓冲模式?
253 天前
回复了 alanying 创建的主题 Linux 大家 Linux 新安装一般是怎么分区的?
借楼问下

大家说的分区方式完全不懂,每次装 linux ,如果要手动设置分区,就完全不知道怎么搞

如果想了解下文件系统、LVM 、boot loader 、分区表等知识应该看些什么书籍呢?
358 天前
回复了 yezheyu 创建的主题 程序员 关于 JavaScript 中 stream 的一些疑惑
@otakustay 好的,多谢
359 天前
回复了 yezheyu 创建的主题 程序员 关于 JavaScript 中 stream 的一些疑惑
@otakustay

那我换中说法

JavaScript 中的 stream 接口只是对消费方式的一种改造,把原来那种必须把数据完全接收到 buffer ,再一次消费,改成接收一点消费一点

而在 http 中不管使用什么方式组织数据发送,都是 http 流模式,因为这是 tcp 赋予的特性。

对于 Transfer-Encoding: chunked 是才是对数据组织方式一种改造,把数据变成分块传输,并把数据长度由在 header 整体记录,改为让每个数据块自己记录

这样理解合适吗?
363 天前
回复了 yezheyu 创建的主题 程序员 关于 JavaScript 中 stream 的一些疑惑
@otakustay
第一种模式,假设是长度是 30g ,传统的处理方式是根据 Content-Length 事先在内存中开辟一个 30g 的 buffer ,等数据把 buffer 填满即意味着 tcp 连接中的这个响应接收完毕,然后再把数据交给业务代码去消费

而把 Content-Length 的响应改用 stream 模式去消费,接收一块数据,就直接交给业务代码去消费,并记下数据的长度,重复这个过程并累加计算数据长度,直到累加长度等于 30g ,也就意味着 tcp 连接中这个响应接收完毕

我这样理解对吗?

所以 JavaScript 中的 stream 只是对消费方式的一种改造,而 http 中的 stream 是对数据的一种组织方式,我这样理解对吗?
2023-03-28 19:52:56 +08:00
回复了 yezheyu 创建的主题 程序员 关于代理的一些理解,请大家帮我看下对不对
@Hccake @kop1989smurf @NoOneNoBody @josephxrays @sillydaddy 首先谢谢大家!

所以,如果浏览器到 proxy client 之间如果使用的 socks5 ,是谁把原本用户使用浏览器发出的 http 请求转换成 socks5 呢?

是 switchyomega 这个插件吗?那这个 switchyomega 实际上也是扮演着一个微型的代理角色是吗?

而在代理软件上,一般我们也可以进行流量的访问控制,所以我们可以把 PAC 写在 switchyomega ,也可以写在 shadowsocks 上对吗?


游戏加速器也是类似这种架构吗?

加速器软件代理游戏发出的 UDP 请求,通过自己的专线发给国外的代理服务器,再交给游戏服务器。收到数据后再原路返回
2023-01-12 18:07:27 +08:00
回复了 yezheyu 创建的主题 程序员 关于异步任务的一点疑问,有没有老哥帮忙解答下
关于 button 的点击事件的回调函数 this 为啥是 button

我猜是这样的的,你们看对吗?

当页面上一个点击事件触发时,页面上如果有多个元素绑定了点击事件,那总不能把所有的点击事件都触发了,为了精准触发某个按钮的点击事件,所以区别于一般的任务,其多保存了一个回调函数的绑定对象,大概结构类似下面

{
btn1:{
showText1: func(){…},
showText2: func(){…}
}
}

所以回调函数调用时是这样 btn1.showText()调用,走的隐式绑定,所以 this 指向 btn1

@biguokang
@autoxbc
@Al0rid4l
2023-01-12 16:41:13 +08:00
回复了 yezheyu 创建的主题 程序员 关于异步任务的一点疑问,有没有老哥帮忙解答下
@biguokang
@autoxbc
@Al0rid4l
@h0099

还有个问题想请教大家

---------------------------------------------------------
setTimeout( function(){ console.log(this), 0 } )
// 打印 window
--------------------------------------------------------

异步任务的回调函数中的 this 大多数是指向 window ,因为回调函数作为任务执行时,主线程的执行栈已清空,函数是单独调用,其默认绑定的就是 window

我这样理解对吗?

那为啥 button 点击事件的回调函数中 this 会指向事件的触发对象 button 呢?而不是 window ?
2023-01-11 23:29:05 +08:00
回复了 yezheyu 创建的主题 程序员 关于异步任务的一点疑问,有没有老哥帮忙解答下
@biguokang #30
老哥你这一说,我也觉得像,哈哈
2023-01-11 16:15:57 +08:00
回复了 yezheyu 创建的主题 程序员 关于异步任务的一点疑问,有没有老哥帮忙解答下
@biguokang
@h0099

多谢老哥的详细解答,那再请教一个类似的问题。

对于 JavaScript 中事件绑定和触发,同样涉及到事件循环,我这样理解对吗?



当你为一个事件绑定一个回调函数 ( 事件触发后执行的一段代码,可以是绑定多个回调函数 )时,本质是使用一个容器 ( 如对象 ) 记录事件名和回调函数的映射

当浏览器监控到特定的事件被触发时,就会从容器中取出事件对应的回调函数,把事件对象作为参数传递进回调函数中,再封装成一个任务放入任务队列中等待主线程执行
2023-01-11 14:23:25 +08:00
回复了 yezheyu 创建的主题 程序员 关于异步任务的一点疑问,有没有老哥帮忙解答下
@h0099
多谢指正

所以 xhr 只是负责和浏览器的网络线程通信,下发任务
而网络线程就只管从服务器下载资源,对于下载好的资源,你怎么处理,就算只是打印一下,也必须让主线程处理。网络线程只负责 socket 通信。

所以我上面的例子,对于结果不管是更新 UI ,还是打印结果,都只能是主线程处理,对吗?
2023-01-11 12:35:01 +08:00
回复了 yezheyu 创建的主题 程序员 关于异步任务的一点疑问,有没有老哥帮忙解答下
@cyndihuifei @peterlitszo

个人理解,可能有错,欢迎指出



js 之所以是单线程,主要为了避免资源竞争问题。

但实际上 js 不可能是单线程,就比如 xhr 图片加载,xhr 在下载时没有阻塞主线程,那图片的下载必定不是在主线程执行,那必定有一个线程帮你执行下载工作,就是网络线程。

所以我认为 js 单线程是指你在 js 代码中无法像其它语言那样使用多线程模块创建一个线程执行一个代码块。只能使用预留的 API 调用现有的线程,如浏览器的 xhr Web Api ,node 的 fs 模块

那像 xhr 中在网络线程中要渲染图片,涉及到操作 dom ,就会出现资源竞争问题,所以必须放到任务队列中让主线程来进行



那你在代码中的耗时任务该怎么办呢? js 又没有多线程让你开辟一个线程去处理,而浏览器也没有一个特定的 WEB API 帮你执行。

所以为了不阻塞后续代码只能延期执行,让其它代码先执行,执行完后再执行耗时任务和对其结果的依赖代码,即微任务。

每个宏任务都有一个微任务队列,里面放的就是这些延期代码。微任务的执行时机就是当前宏任务执行完,下一个宏任务执行前。这样就可以完美解决。

而 Promise 就是这样的实现
2023-01-11 10:56:09 +08:00
回复了 yezheyu 创建的主题 程序员 关于异步任务的一点疑问,有没有老哥帮忙解答下
@Mutoo 多谢老哥,明白了
2023-01-11 10:22:02 +08:00
回复了 yezheyu 创建的主题 程序员 关于异步任务的一点疑问,有没有老哥帮忙解答下
@elonmask 有道理,但如果不是 UI 相关,收尾代码纯粹 console.log 或者保存图片等等,另一个线程也能做到,是不是就没必要放到任务队列中等主线程执行呢?
2022-11-25 14:34:08 +08:00
回复了 yezheyu 创建的主题 程序员 如何定制 console.log 的打印结果?
@Great233

再次感谢老哥,最近重新看了 Object 上 Object.getOwnPropertyDescriptors() API ,其中提到了属性的是否可枚举,我才算彻底明白这个问题,也明白了是我当初这个问题问歪了,哈哈
2022-10-28 09:36:16 +08:00
回复了 yezheyu 创建的主题 程序员 如何定制 console.log 的打印结果?
@stefanieewu

谢谢!这就是我本意想问的答案,怪我描述不清,害的大家误解我的意思


还有,也多谢 @Great233 老哥的耐心解答
2022-10-27 20:00:50 +08:00
回复了 yezheyu 创建的主题 程序员 如何定制 console.log 的打印结果?
@valkyrjaE
确实,我不太知道怎么清楚准确的描述这个问题,我的问题
2022-10-27 19:59:37 +08:00
回复了 yezheyu 创建的主题 程序员 如何定制 console.log 的打印结果?
@Great233 我在 node 中试了试,console.log 就是只有浏览器中第一行的输出结果,打印数组也不会多打印 length 属性
2022-10-27 18:57:14 +08:00
回复了 yezheyu 创建的主题 程序员 如何定制 console.log 的打印结果?
@Great233

仔细想想,才发现是我自己理解错了

只有第一行的结果是 console.log 打印的结果,下面点开的属性是浏览器帮忙提取出来是吗?

我一直错误的以为下面点开的那部分也是打印的结果

所以一直很奇怪,为啥数组也算是对象的一种,为啥其打印出来会多打印一个 length ,原来是浏览器判断你打印的是数组,所以就帮你提取一个 length

这都是浏览器的行为,不是 console.log 帮我多打印一个 length

我理解的对吗
1  2  3  4  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3666 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 20ms · UTC 10:42 · PVG 18:42 · LAX 03:42 · JFK 06:42
Developed with CodeLauncher
♥ Do have faith in what you're doing.