duangsuse::Echo
713 subscribers
4.24K photos
127 videos
583 files
6.46K links
import this:
美而不丑、明而不暗、短而不凡、长而不乱,扁平不宽,读而后码,行之天下,勿托地上天国。
异常勿吞,难过勿过,叹一真理。效率是很重要,盲目最是低效。
简明是可靠的先验,不是可靠的祭品。
知其变,守其恒,为天下式;穷其变,知不穷,得地上势。知变守恒却穷变知新,我认真理,我不认真。

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
Forwarded from AlPlank (YuutaW @UNIX: 1603519536107)
YuutaW 官方帐号,认准 UNIX 时间戳,前后误差为五秒
Forwarded from AlPlank (YuutaW @UNIX: 1603520370096)
由于 Telegram API 限制,速率改为五分钟一次)
#QQ #statement #dev

顺便说一句,对计算机应用来讲英文还是很重要的。

比如一个凳子可以有什么操作?能搬起(lift up)、坐下(sit down on)、毁掉(destroy),叫别人坐下(mike: sit on it)、搬到某个教室去(move to class1);后两者涉及对另外对象(人(Person)、地点(Place))的指代(refer, reference),就不可能只用一个动词命名了,必须用两三词的短语表达。

对程序部分(是依赖什么变量的什么操作)易读性而言,中文的语序把不重要的词(比如说靠「以」「对」等介词引入的对象)放前面,并不利于速览。
比如:

Alice (waved to us) silently.
爱丽丝默默地(向我们 挥手)。

可以看到中文前置了动词 wave 的参数,在编程里这会导致意图不清晰进而滚雪球式造成问题,是大忌。

所以说对英文语序的熟悉会影响到咱未来的编程能力、会影响到你写出代码的质量和易读性。

我是作为程序设计领域的小萌新给大家这一点建议(强调:不是你们的竞争者,所以不必有抵触心理),网名 duangsuse 。
#school #math #fp 🤔低阶点的函数式?
#DontKnow #Java #JS 其实 Math.floorMath.trunc 有区别: floor(-1.5) == -2, 前者是最大不大、后者是浮点整数部分 (-1.5 % 1.0)
#Kotlin #code #coroutine

suspend fun main() = coroutineScope {
for (i in 0 until 10) launch {
delay(1000L - i*10); print("$i ")
}
}


提问:为什么结果是 9 downTo 0 ?launch 的里面用了 coroutine 特性,但为什么 main 也是 suspend fun?

如果只是单线程,是怎么在最后才输出第一次的 $i 的?
Forwarded from dnaugsuz
单线程的话是 1 <sleep 10> 2 <sleep 9> 3 ...
这种形式输出的
Forwarded from dnaugsuz
异步本身就是在存在其它线程的情况下才有的啊,不是封装成回调就成全局单线程也有异步了

回调只不过是因为不能卡线程做的变通而已,要不然 WaitCondition 加个锁有何不可
Forwarded from iseki 萍水相逢,相聚是缘|菜到开始学习
但是即便全局单线程也可以实现满足这个的调度器啊🤔
Forwarded from 天 09:19 AM UTC+8 🕘
异步不等于需要多线程,只是多线程是实现异步的一个常见形式
Forwarded from dnaugsuz
那么你说的异步是什么? Promise 或 callback ?
Forwarded from iseki 萍水相逢,相聚是缘|菜到开始学习
当然我的上下文中 线程 明确的指java.lang.Thread
Forwarded from dnaugsuz
你上面的意思大概是说可以用调度器,本身线程也是操作系统内核调度接口的抽象而已

我的意思是,如果真的只是按顺序操作,没有事件进来,异步和多线程也能存在,Reactive 也能用,但没有任何意义,所以说没有多线程不用异步任务
Forwarded from dnaugsuz
之前记得是有 java.util.collection 这个包的,后来发现是把 java.util.concurrentkotlin.collection 记混了 😂 #Haha
Forwarded from dnaugsuz
上面的意思是,我觉得不应该有任务调度器而都是 delay 回调嵌套的形式,毕竟这样没有额外修饰

即便有调度器,coroutine 的 suspend() 感觉比较没意思,因为 Int 量 i 是通过闭包存住的,既然是这样调度任务的话也就可以理解了
Forwarded from dnaugsuz
我是不理解 Kotlin 到底是如何改进 coroutine 的既有特性的,在我的认知里协程就是能 suspend/resume 的普通程序而已,实现上就是 C#/ TypeScript ES6 的状态机化,但 Kotlin 显然不止于此。

delay 的话,如果只是避免回调地狱的 CPS 变换是肯定做不到预期的顺序的(会卡住其它协程的执行),一般的理解肯定是多线程,我是没想到 Kotlin 的协程还绑上了调度器特性,这么说它的 delay() 完全可以有特殊处理,相当于全局 timer 了
如果当前 dispatcher 没有实现 Delay, kotlin 会使用自己提供的 Delay, 那里头有个线程
Forwarded from dnaugsuz
这样也的确可以,但你的调度器必须实现抢占式调度啊,分配时间片结束得取得执行权🤔
这个就不得不依赖硬件的 timer 中断了
然后任务还要能保护现场、恢复现场,像个小协程 #coroutine 一样

要不然一个任务卡死了,调度也炸了

所以说平常还是不考虑用户级线程的情况比较好,都是谈操作系统的 Process和LWP
Forwarded from dnaugsuz
你说的有道理,异步和并发是隔离的概念,虽然多线程库会提供异步接口,也有异步接口是不需要其它(JVM/OS)线程的,尽管这个概念在工业界经常被混淆

毕竟谁会真的拿应用线程去请求系统异步资源,慢慢异步就等于在其它线程调度了,唉
dnaugsuz
你说的有道理,异步和并发是隔离的概念,虽然多线程库会提供异步接口,也有异步接口是不需要其它(JVM/OS)线程的,尽管这个概念在工业界经常被混淆 毕竟谁会真的拿应用线程去请求系统异步资源,慢慢异步就等于在其它线程调度了,唉
刚才想了一会,觉得我们作为 编译原理/事件 的程序员,对并发的认知太薄弱了

认识不到线程是什么,一直觉得就是程序运行时始终存在、不会销毁的东西,它的任务完成后就直接变成 IDLE 状态等待事件,所以可以在异步信号来的时候能处理。
或者说一直就只有处理器I/O中断的那个认知,觉得就是不管什么程序序列(想了一下并行又没有顺序),肯定能抢占式执行而已。

想想也真是荒谬,如果线程在运行,它上面可能调度注册好的异步信号处理器?即便可以,那线程的独立性又有何意义?直接新建一个去执行不就好了?

所以说有事件队列啊,也不是说 event loop 是一个很难弄的东西,真的不甘心,我一直以为除了算法和绘制交互,自己已经了解的足够多(也不是没写过,两次。),其实还是什么都不懂。