dnaugsuz
你说的有道理,异步和并发是隔离的概念,虽然多线程库会提供异步接口,也有异步接口是不需要其它(JVM/OS)线程的,尽管这个概念在工业界经常被混淆 毕竟谁会真的拿应用线程去请求系统异步资源,慢慢异步就等于在其它线程调度了,唉
刚才想了一会,觉得我们作为 编译原理/事件 的程序员,对并发的认知太薄弱了
认识不到线程是什么,一直觉得就是程序运行时始终存在、不会销毁的东西,它的任务完成后就直接变成 IDLE 状态等待事件,所以可以在异步信号来的时候能处理。
或者说一直就只有处理器I/O中断的那个认知,觉得就是不管什么程序序列(想了一下并行又没有顺序),肯定能抢占式执行而已。
想想也真是荒谬,如果线程在运行,它上面可能调度注册好的异步信号处理器?即便可以,那线程的独立性又有何意义?直接新建一个去执行不就好了?
所以说有事件队列啊,也不是说 event loop 是一个很难弄的东西,真的不甘心,我一直以为除了算法和绘制交互,自己已经了解的足够多(也不是没写过,两次。),其实还是什么都不懂。
认识不到线程是什么,一直觉得就是程序运行时始终存在、不会销毁的东西,它的任务完成后就直接变成 IDLE 状态等待事件,所以可以在异步信号来的时候能处理。
或者说一直就只有处理器I/O中断的那个认知,觉得就是不管什么程序序列(想了一下并行又没有顺序),肯定能抢占式执行而已。
想想也真是荒谬,如果线程在运行,它上面可能调度注册好的异步信号处理器?即便可以,那线程的独立性又有何意义?直接新建一个去执行不就好了?
所以说有事件队列啊,也不是说 event loop 是一个很难弄的东西,真的不甘心,我一直以为除了算法和绘制交互,自己已经了解的足够多(也不是没写过,两次。),其实还是什么都不懂。
Forwarded from dnaugsuz
噢,我明白了,其实是我一直不认为单线程用消息处理循环算是异步
我觉得异步是 IO 层面的(所以说浏览器JS也算多线程),这样的话肯定会有另外的程序流程(不管是不是内核里)在进行,共享了消息队列,不然它也不会莫名增长
这样的话异步就一定有其它线程了,除非IO中断打断了某线程后它还能恢复。
https://t.me/dsuse/15037
……想了想线程又名 LWP 好像的确是可以中断恢复( libc 的
我觉得异步是 IO 层面的(所以说浏览器JS也算多线程),这样的话肯定会有另外的程序流程(不管是不是内核里)在进行,共享了消息队列,不然它也不会莫名增长
这样的话异步就一定有其它线程了,除非IO中断打断了某线程后它还能恢复。
https://t.me/dsuse/15037
……想了想线程又名 LWP 好像的确是可以中断恢复( libc 的
signal(int, sighandler_t),这样的话单线程也能异步,感觉好绕。Telegram
duangsuse::Echo
刚才想了一会,觉得我们作为 编译原理/事件 的程序员,对并发的认知太薄弱了
认识不到线程是什么,一直觉得就是程序运行时始终存在、不会销毁的东西,它的任务完成后就直接变成 IDLE 状态等待事件,所以可以在异步信号来的时候能处理。
或者说一直就只有处理器I/O中断的那个认知,觉得就是不管什么程序序列(想了一下并行又没有顺序),肯定能抢占式执行而已。
想想也真是荒谬,如果线程在运行,它上面可能调度注册好的异步信号处理器?即便可以,那线程的独立性又有何意义?直接新建一个去执行不就好了?
所以说有事件队列啊,也不是说…
认识不到线程是什么,一直觉得就是程序运行时始终存在、不会销毁的东西,它的任务完成后就直接变成 IDLE 状态等待事件,所以可以在异步信号来的时候能处理。
或者说一直就只有处理器I/O中断的那个认知,觉得就是不管什么程序序列(想了一下并行又没有顺序),肯定能抢占式执行而已。
想想也真是荒谬,如果线程在运行,它上面可能调度注册好的异步信号处理器?即便可以,那线程的独立性又有何意义?直接新建一个去执行不就好了?
所以说有事件队列啊,也不是说…
Forwarded from Phonograph (Ralph 萌新喵)
终于明白「640K 内存能满足所有用户的需求」这个梗里面的「640K」是咋来的了。
在 DOS 环境下,0000:0000~9000:FFFF 是用户可用的内存空间,共640K.
在 DOS 环境下,0000:0000~9000:FFFF 是用户可用的内存空间,共640K.
#C :
也可以用 fputc:
这是横向的,当然也可以纵向:
#asm
.db fmt "%c%d\00"
_main:
push rbp
mov rbp, rsp
sub rsp, 4
mov [rbp-4], 0xFF
for:
mov rax, [rbp-4]
push rax
push rax
push fmt
call printf
dec rax
mov [rbp-4], rax
jnz for
for_out:
add rsp, 4
pop rbp
ret
#include <stdio.h>
void main(int argc, char** argv) {
for (int i=0; i<0xFF; i++) printf("%c%d", i, i);
}
也可以用 fputc:
void put(int i) {
fputc(stdout, (char) i);
int acc=i; while (acc!=0) {
fputc(stdout, '0'+acc%0xF);
acc /= 0xF;
}
}
这是横向的,当然也可以纵向:
void putTable(int nmax_col) {
int n=0xFF/nmax_col, m=nmax_col;
char ascii[n][m];
for (int j=0; j<m; j++) for (int i=0, i<n, i++) {
ascii[i][j] = (char)j*m+i;
}
for (int i=0, i<n, i++) for (int j=0; j<m; j++) {
char v=ascii[i][j]; printf("%c%d", v,v);
}
}
#asm
.db fmt "%c%d\00"
_main:
push rbp
mov rbp, rsp
sub rsp, 4
mov [rbp-4], 0xFF
for:
mov rax, [rbp-4]
push rax
push rax
push fmt
call printf
dec rax
mov [rbp-4], rax
jnz for
for_out:
add rsp, 4
pop rbp
ret
Forwarded from AlPlank (Al Pt)
https://t.me/XJBFW/5028
(Java里没有靠谱的清除屏幕的接口,只能执行clear/cls指令或靠回车物理清屏幕…)
(Java里没有靠谱的清除屏幕的接口,只能执行clear/cls指令或靠回车物理清屏幕…)
Telegram
XJB🍉FW
发一张生草图
Forwarded from 层叠 - The Cascading
上次是 GitHub [1],这次是 GitLab——有伊朗开发者表示自己近几天无法访问 GitLab,而最近连自己的 GitLab 账户都被封禁。由于政策原因,客服甚至无法暂时解除封禁以让他进行数据迁移。
不止 GitLab 受美国的禁运政策限制阻断了伊朗用户的访问,包括 Google Developers、Docker Hub、Golang、Kubernetes 等一系列开源企划的官方网站都阻断了来自伊朗的访问。
src: https://news.ycombinator.com/item?id=24886102
1. https://techcrunch.com/2019/07/29/github-ban-sanctioned-countries/
不止 GitLab 受美国的禁运政策限制阻断了伊朗用户的访问,包括 Google Developers、Docker Hub、Golang、Kubernetes 等一系列开源企划的官方网站都阻断了来自伊朗的访问。
src: https://news.ycombinator.com/item?id=24886102
1. https://techcrunch.com/2019/07/29/github-ban-sanctioned-countries/
TechCrunch
GitHub confirms it has blocked developers in Iran, Syria and Crimea
The impact of U.S. trade restrictions is trickling down to the developer community. GitHub, the world's largest host of source code, is preventing users
Forwarded from 层叠 - The Cascading
github/dmca#8142 被删除。
以及不知为何,有一小段时间 GitHub 将 github/dmca 识别成了 youtube-dl2/youtube-dl 的 fork。
https://web.archive.org/web/20201028040229/https://github.com/github/dmca
以及不知为何,有一小段时间 GitHub 将 github/dmca 识别成了 youtube-dl2/youtube-dl 的 fork。
https://web.archive.org/web/20201028040229/https://github.com/github/dmca
Forwarded from moke 的 日常分享、吐槽和动态
#android #design #java #xml
今天早上有幸在图书馆看到了一本关于 3.x Android 开发的书
感到了深刻的混乱, Java, XML, MVC ,降级了的 MVC,根本想不出这到底是什么玩意,写出了一坨什么东西。
有些人用官方推荐的 XML ,有些人直接创建 View 对象,有些人为提升性能用 View XML 的静态编译器,而 R.java 还要被生成来共享 resource id,不知道到底是应该在放在应用代码还是资源框架里,这时候我突然感觉 aapt 就是个恶魔工具,想分开却又若即若离, ARSC 比 java.util.ResourceBundle 要可怕得多
不就是为了文本翻译,gettext,一个单页小应用 XML 写几十行,我真的无法理解,真受不了这种编程,正是因为它只支持 Android View 一个后端,才导致各种 translate editor, JavaFX preview render 的折腾浪费,可配置真是可怕
有的人把 Spinner 称为 ComboBox ,对我这个“外国人”而言啥是 Spin?同样一个东西 Android,DOM,Qt,WinForm 会给你不同的名字、英语化的名字,莫名其妙,还不如早些的UI库。
过去我以为 Adapter 就是给不同类型提供统一接口的东西,现在才知道它是 Model/View 的对接器,那么设计的这么“可配置”到底有何意义?应用的客制化部分难道不应该独立于功能和视图结构?
今天早上有幸在图书馆看到了一本关于 3.x Android 开发的书
感到了深刻的混乱, Java, XML, MVC ,降级了的 MVC,根本想不出这到底是什么玩意,写出了一坨什么东西。
有些人用官方推荐的 XML ,有些人直接创建 View 对象,有些人为提升性能用 View XML 的静态编译器,而 R.java 还要被生成来共享 resource id,不知道到底是应该在放在应用代码还是资源框架里,这时候我突然感觉 aapt 就是个恶魔工具,想分开却又若即若离, ARSC 比 java.util.ResourceBundle 要可怕得多
不就是为了文本翻译,gettext,一个单页小应用 XML 写几十行,我真的无法理解,真受不了这种编程,正是因为它只支持 Android View 一个后端,才导致各种 translate editor, JavaFX preview render 的折腾浪费,可配置真是可怕
有的人把 Spinner 称为 ComboBox ,对我这个“外国人”而言啥是 Spin?同样一个东西 Android,DOM,Qt,WinForm 会给你不同的名字、英语化的名字,莫名其妙,还不如早些的UI库。
过去我以为 Adapter 就是给不同类型提供统一接口的东西,现在才知道它是 Model/View 的对接器,那么设计的这么“可配置”到底有何意义?应用的客制化部分难道不应该独立于功能和视图结构?
🤔 #web #frontend #css uilang.com 虽然挺菜(而且我觉得无意义,直接 EDSL 有何不可
但我突然感觉 CSS 很不错啊,居然只是它就能定义出开关、下拉、收缩栏的动画效果
看到我就想到了『东北语』和『文言文』,基本上都是一类前端应用,感觉是偏创意性的,没有真的结合其领域的哲学
但我突然感觉 CSS 很不错啊,居然只是它就能定义出开关、下拉、收缩栏的动画效果
看到我就想到了『东北语』和『文言文』,基本上都是一类前端应用,感觉是偏创意性的,没有真的结合其领域的哲学
突然感觉自己有点 JVM 老咸鱼了的意思,遇到问题即便只是查 API ,不需要搜索自己就能找到答案,而我对 #Java 不常见语法 (
开始在头脑里设计,然后再去对接底层 API 实现,没有 API 我也会尽量猜个八九不离十的出来,对编程语言的结构组织如数家珍、操纵更加自如
还是 Kotlin 好🤔 记得自己对区间的认知就是从用 Kotlin 开始的
inst.new T() , new T() {{}}, static {}, synchronized 什么的) 和 static,final,interface 的用法也比较习惯了开始在头脑里设计,然后再去对接底层 API 实现,没有 API 我也会尽量猜个八九不离十的出来,对编程语言的结构组织如数家珍、操纵更加自如
还是 Kotlin 好🤔 记得自己对区间的认知就是从用 Kotlin 开始的
真的很希望自己能对编程语言有新的理解,而且通过一些定义式框架的利用,写一些开发工具,能把这份理解用到实际各平台应用开发中去。
最近虽然安排了贼多小编程应用,也在筹划一个数学式的推导/变形工具,而且还打算设计一个基于 CPS 变换的协程实现,这样就能有 await/async 避免任何回调嵌套,不过略困难🤔
这三天我也设计了三个算法了(数学工具的合并连续区间、求值化简过程列表构造法,协程静态编译的一个)
最近虽然安排了贼多小编程应用,也在筹划一个数学式的推导/变形工具,而且还打算设计一个基于 CPS 变换的协程实现,这样就能有 await/async 避免任何回调嵌套,不过略困难🤔
这三天我也设计了三个算法了(数学工具的合并连续区间、求值化简过程列表构造法,协程静态编译的一个)