V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  yezheyu  ›  全部回复第 1 页 / 共 4 页
回复总数  72
1  2  3  4  
127 天前
回复了 yezheyu 创建的主题 Docker 请教个关于 docker 中 init 进程的问题
@loveqianool
没啥说法吧,我只是不明白,既然我使用了 tini 作为 PID 1 的进程,registry_with_gc 作为其子进程就应该可以使用完就释放掉,要不然 tini 的作用在哪?只是作为信号转发器?

按我的理解,tini 作为 init 进程,只要其还在,容器的生命周期就不会结束,registry_with_gc 挂了也就挂了,不会导致容器结束
127 天前
回复了 yezheyu 创建的主题 Docker 请教个关于 docker 中 init 进程的问题
@povsister
嗯,如果你是指 Dockerfile 中这两行会发生替换,我认为你可能理解有偏差,可以自己翻下文档
ENTRYPOINT ["tini", "--"]
CMD ["./registry_with_gc.sh"]

至于第二点,我这是随便设计的,上传失败大不了重新上传,也没太大代价。如果真要较真,引入 Redis 作为上传请求数的计数器?
196 天前
回复了 yezheyu 创建的主题 问与答 请教个关于 docker 数据持久化的问题
@morningtzh 首先谢谢老哥

项目中只是一个很小的集群,只有一两台机器。
最开始技术选型时,对 k8s 不熟悉,感觉其比较重。
就用了比较熟悉的 docker(k3s 没想到)。

现在换 k3s 已经不太可能了,否则好多东西要推倒重来


所以目前来看还是用 minio 这种自带高可用的存储服务更加方便点?
要不然用 NFS 还需要起两个副本,且进行数据同步。
197 天前
回复了 yezheyu 创建的主题 问与答 请教个关于 docker 数据持久化的问题
@hefish @laminux29 首先谢谢两位的回答

局域网,上不了云存储, 除了一楼老哥介绍的 minio ,还有什么推荐的轻量化的网络存储服务吗
@Cagliostro 要以你在右上角设置中看到地区为准,在我这,如果忘了开代理,访问 bing ,他就会把地区自动切换回国内,当你再开代理访问 bing 时,就变成国内特供 bing 了
2 楼说的对,登录后,你需要把账号设置里的国家/区域改为国外就可以了
216 天前
回复了 yezheyu 创建的主题 程序员 请教一个关于工作目录的疑问
如果 JavaScript 这种不依赖工作目录,只要 js 文件的所在的目录(或其上级目录)含有所需的依赖(模块),就可以正常运行。

所以运行前段项目时,完全可以不进入项目所在的目录启动项目

直接在家目录也可运行项目?

`~/Project/node_modules/vite/bin/vite.js`
2023-10-31 10:54:39 +08:00
回复了 yezheyu 创建的主题 Unix 请教下关于 IO 缓冲的一点疑问
顶下帖
2023-10-30 18:16:59 +08:00
回复了 yezheyu 创建的主题 Unix 请教下关于 IO 缓冲的一点疑问
@zeonluang 是不是对于文件来说,如果文件数据比较小,page 的优先级是高于行缓冲模式?
2023-07-19 11:39:44 +08:00
回复了 alanying 创建的主题 Linux 大家 Linux 新安装一般是怎么分区的?
借楼问下

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

如果想了解下文件系统、LVM 、boot loader 、分区表等知识应该看些什么书籍呢?
2023-04-05 12:54:34 +08:00
回复了 yezheyu 创建的主题 程序员 关于 JavaScript 中 stream 的一些疑惑
@otakustay 好的,多谢
2023-04-04 17:52:28 +08:00
回复了 yezheyu 创建的主题 程序员 关于 JavaScript 中 stream 的一些疑惑
@otakustay

那我换中说法

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

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

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

这样理解合适吗?
2023-03-31 13:59:31 +08:00
回复了 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 就是这样的实现
1  2  3  4  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3673 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 23ms · UTC 04:23 · PVG 12:23 · LAX 20:23 · JFK 23:23
Developed with CodeLauncher
♥ Do have faith in what you're doing.