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

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
#Java zephyr, [17.01.21 15:07]
大家好,我是初学者,我发现反射这部分比较难,我可不可以跳过呢?
iseki: 你先说说有什么难的
zephyr: 动态代理这儿
iseki: 😔真没感觉有多难啊😔感觉这个还没Java9之后的模块化机制带来的问题复杂
Akira: 反射以后熟悉了再说吧 先学基本的
Akira: 往深了就是字节码生成
K: 你这要讲底层听不懂啊
iseki: 模块化有聚聚们真的在用吗🤔请教下,反正我没用过
K: 真进去了还不是crud
Akira: [In reply to iseki 萍水相逢,相聚是缘|菜到开始学习]
没有 但是我们在升级到11的过程中用的9的那个multirelease
iseki: 习惯了以前不分模块瞎jb搞,模块化之后加了一堆限制还不习惯呢😥
Forwarded from dnaugsuz
java.lang.reflect.Proxy
还好啊,比如说你有
import java.lang.reflect.Proxy
interface XXListener { void onEvt(); }
Object inst = Proxy.newInstance(this.getClass().getClassLoader(), [XXListener.class], new java.lang.reflect.InvocationHandler() { Object invoke(Object self, java.lang.reflect.Method m, Object[] args){} })

这不就能拿到能动态实现方法派发(给名字参数,调用)接口的 inst 对象了吗

举个极端点的例子, #code 以下函数能动态实现 @FunctionalInterface 类的 interface java.util.function.Function<T,R> { R apply(T x); } 兼容,但要进行强制类型转换:
import java.util.function.Function;
import java.lang.reflect.*; //Proxy, InvocationHandler, Method
<FUNC, T, R> FUNC functor(Class<FUNC> fn_type, Function<T, R> impl) {
FUNC fn = (FUNC)Proxy.newInstance(getClass().getClassLoader(), new Class[]{fn_type}, new InvocationHandler() {
@Override Object invoke(Object o, Method m, Object[] args) { return impl.apply(args[0]); } // self(o) ignored, argc&m unchecked
});
return fn;
}

Proxy 这是小 case ,一般人也就在小脚本提供兼容 API 绑定时使用它,你看大框架哪个不用字节码技术动态定义 class
什么时候我也能搞出个 2.1k star 的项目(痴心妄想)(自嘲完美) #Haha 😂
Forwarded from Epics of Anti-Censorship
腾讯收集的这么多网址都去哪里了呢?原来是用MD5把关键词的内容哈希之后,结合长度做匹配,然后把用户的浏览记录报上去。

有三四名群友献祭了他们的六十万浏览记录,维基中文百科词典已跑完,只剩下一个没有解出来。

不知道发生了什么的请自己看:
https://t.me/anticensorship_epics/60

备用存档:
https://t.me/anticensorship_epics/71
https://archive.vn/EH2N8
https://web.archive.org/web/https://bbs.pediy.com/thread-265359.htm
“叫你们给境外势力递刀子” “中国人没那么重视隐私,愿意用隐私获取便利” “腾讯是知名企业,可以信赖的,你们凭什么造谣抹黑污蔑它?” #China 🌚
Forwarded from 奶昔论坛 (乃月希🌸|@NyarimeW)
看雪论坛 bbs.pediy.com 被打
Forwarded from 门 门
duangsuse::Echo
我写了一个拿无损视频存下终端色号的…… 估计虽然修改版性能有改善,还是要把整帧 buffer 下来才不会抹布…… 要考虑是不是做一个 buffer , chunked 化 stdout 呢 https://stackoverflow.com/questions/15728939/lossless-compression-for-video-in-opencv https://docs.opencv.org/4.5.0/dd/d9e/classcv_1_1VideoWriter.html#ad59c61d8…
不追求优化性能了,也懒得用函数指针替换静态 if 判断了,思量着解决了个返回变量关系搞好的 bug ,最后重构下发了吧
实在熬不下去了吧 🌚 再说有很多事情可做 为什么要烂苹果啊

C++ 和 Java 的 IO stream 都可以有很多 tweak 啊,数据流各种 buf, chunk, cache 的处理也屡见不鲜,都不知道 setvbuf(); sync_with_stdio(); cout.tie(0); 这些有什么用,但最终还是明白了 termios 怎么写贪吃蛇吧,还是多开坑少硬杠比较健康
执拗的我最后TM 还是写了,但是发现性能并没有比使用 Console.flush 之后有任何改善,看来不是渲染速度问题,是 IO 问题, Jawa 的 IO 速率他妈是废的 🌝
为了寻找减少抹布效应的方法我把原版 StringBuilder 都试过了,结果只是更慢

还是算了吧,不过 chunk buffering 写都写了,还是留着吧(本来直接 while ((frame = vid.getNativeFrame()) != null) 渲染也没问题的)
duangsuse::Echo
https://gist.github.com/duangsuse/64c9ac7a278da48f4b3de3dafd70e9df 🥳遇到困难,就老熬夜;后来我就提了一个,年轻人早点睡,做到12点就不做了睡大觉,长大了有福报。
🌚简单说一下技术细节吧。
这次新增两个py脚本,一个是对 mvn.py 继续缩行的复用性测试,一个是 C++ 版更新(支持 mech=0 ,1,2 变量) 后能播放其录制无损动画的脚本

C++ 这次修复了一个 unstop=vid.read(/*to*/frame) 生命周期关系 使用旧值的 bug(导致视频结束时出错)
性能方面是没什么好说的(我都懒得优化,它毕竟是 C++🌝
mech0 是既有的直接生成 ANSI 控制台转义/换行符序列
1则是带录制到文件效果(编码器参数 FOURCC)的 goto-line 无换行符序列, 2 可以回放生成的 cache.avi (render窗 p键敲字可设置色码偏移)

Java 早就有 b,p,s,sr 四种 MECH
buffered 是用 framebuffer 每帧部分生成色值(渲染)并刷新屏幕,这个很重要,性能往往是最好的(C++: 🌚就是霸道)
posited 就是全屏重绘的 buffered
seq 是用换行符到, seqrst 是用 [y H 转义跳至行的,性能好一点
Forwarded from mivik::channels::tech
*Mivik 发觉自己完全不会出题:瞎想两道题一道题不会

毕生出题水平巅峰:
https://www.luogu.com.cn/problem/P7121 | 根据 mt19937 随机数引擎初始化后给出的 N 个随机数反推初始化种子
https://www.luogu.com.cn/problem/U135806 | 求字符串所有子串的本质不同子串个数之和
https://www.luogu.com.cn/problem/P1316 | 一个长度为 n,字符集为 m 的随机字符串的期望本质不同子串个数
https://i.redd.it/ttltg0p0jnb61.jpg #Security IncaseFormat 写出 bug (DAY_MS 过大) 导致的设计发作日期拖延问题
https://segmentfault.com/a/1190000012641345 #Java #DontKnow #Stream
其实 ParserKt 里出现过的 Reducer 在 Java stream 里叫 Consumer, 动词都一样

这是个 Java8 StreamForker 实现,可以流一遍出多个结果,实质上和我的版本功能一致

简单说下, builder() 出一个 Consumer 然后会被拿去 sequential().forEach()
其中 m1.entries.reduce(new Map 的是 ... 啊不对, reduce(initial, op, op_finish={ m1.putAll(m2); m1 })
这实际相当于 forEach { (k,v) -> m1[k]=waitOperationTo(queues, v) }
其中 queues:List<BlockingQueue<T>>
m1=forks as Map<Object, Function<Stream<T>, ?>>

waitOperationTo 把 StreamSupport.stream(newSpliterator(addQueue()) ) 在 CompletableFuture.supplyAsync 里 apply 给 op

它返回 ForkingStreamConsumer(queues,actions=m1) , 这个里面定义一个 EndOf S(tream) 对象是“帮助”被 queue 的子 stream 鉴别的, finish() 时使用

accept() = queues.forEach(q -> q.add(item));
get(i) = ((Future<R>) actions[i]).get();
Forwarded from duangsuse::Echo (duangsuse)
fold.kt
1.1 KB
#Kotlin #OOP "小王 老猪 阿司马 某A君".split(" ").map(String::length).fold { reduceAll(::minMaxer, ::averager) } == arrayOf(2 to 3, 2)