#life #emmm #tech http://www.hostloc.com/thread-452946-1-1.html
这就是传说中的李平先生,学习了,我不参加撕逼,我只围观撕逼
宽安撕逼都已经把宽安毁了
这就是传说中的李平先生,学习了,我不参加撕逼,我只围观撕逼
宽安撕逼都已经把宽安毁了
神奇的笔记
对不起 我的电脑不足以预览海面模拟……… 更别提完整渲染了………
duangsuse::Echo
#daily #tech #cs #pl 又是一周的 duangsuse 随机瞎想集合 今天的格言是 想给你一个拥抱,让全世界知道。 ——微微一笑很倾城 via 一言 API (闲的了) + #Rust 奇怪的 ty 标记类型名称 对 Rust 宏稍微有一点了解的人(比如我)(但我只限于·一点·了解)(我还会学)知道宏可以按标记类型匹配(其实是我搞错了... Rust 这个宏处理过程有点奇葩弄得我糊涂了) 宏模式中还可以包含捕获。这允许输入匹配在某种通用语法基础上进行,并使得结果被捕获进某个变量中。此变量可在输出中被替换使用。…
+ #oop 垃圾 duangsuse 才知道为什么 #Java 子类转型基类是类型安全的
简单点来说(我不讲什么面向对象的 is_a(class) 什么 can_do(interface)无关的):
我们知道,有一种类型理论叫做「Duck Typing(动态类型)」「一个动物走起来像鸭子、叫起来像鸭子,那它就是鸭子」
鸭子的叫声是 Quack,并且它叫唤的时候,我们假设能够获得它的名字 — 并且知道它是只鸭(肯定的)
现在我们有个函数,它接受一只动物(Animal)并且会先确保它醒着(如果已经睡着就把它弄醒),让它叫。然后会再让它睡着,再让它叫(打呼噜 233)
我们再回到「Duck Typing」动态类型的理论上来,因为 Animal 类「派生」到的对象,他们都拥有的
因为我们只知道可以在
而反观
我们反过来看,
我们都知道了,
+ #emmm 菜鸡要啃草才能... 变成肉鸡
duangsuse 比较菜呢... 好好学习吧,菜鸡虽然菜... 多吃点总会变成... 肉鸡(删除)战斗鸡的吧 当然也要注意身体啊(现在我明显没有...)
+ #cs #pl 读 Lice 动态作用域实现后我才知道 Lime 主动实现的是动态作用域...
动态作用域... 就是那种只是在特殊操作的时候维护作用域「Environment」栈的方法吧,比如在进行函数调用的时候,至于作用域嵌不嵌套是另一回事
冰冰这篇博文说的是
于是就这么做:我在进入新嵌套作用域时已经知道了那个作用域有哪些符号,然后我检查冲突并且把冲突的符号(包含符号的名字和值)给备份一下(集合类型引用备份到栈上),然后再进入作用域,这样就可以简单的 put() 和 get() 了(不过你依然得记录新产生的键值对,等到离开这层作用域时删除他们,不能让符号「泄漏」到作用域外面)
就是说它看重时序,而不是「定义域」
我看完博客后自己又草稿了几种不同的作用域实现,我感觉帅炸了:
\+ PrefillScope
\+ PrefixScope (NamespaceMap)
\+ IndexedScope
\+ ArrayOrHashScope (AutoArrayOrHashMap)
\+ CollisionScope (CollisionMap, ByPlaceCollisionMap)
+ #android #tech #dev Android 的保护(反 crack)技术
六个我还记得(真的有六个?)
1. 手动验证 OkHttp SSL 证书以 filter 掉系统 CA 证书信任「bypass 绕过检验」问题
2. Mess 混淆 XML
3. Proguard 混淆 repackage
4. 核心代码用 native 语言写
5. JNI_OnLoad 验证环境
6. 忘记了一个... 哦是用第三方库加密 assets 运行时解密,这个也很常见
+ #pl #cs 常见的程序语言实现优化技术,扫盲
1. 常量传播
2. 常量折叠
3. 函数内联
4. 指令顺序调整
5. 公共子表达式消除
6. 逃逸分析
7. 循环常量外提
8. 循环展开
9. 死代码消除
10. 表达式重组
啊啊啊懒得写了
简单点来说(我不讲什么面向对象的 is_a(class) 什么 can_do(interface)无关的):
我们知道,有一种类型理论叫做「Duck Typing(动态类型)」「一个动物走起来像鸭子、叫起来像鸭子,那它就是鸭子」
abstract class Animal {这是我们对「动物」的定义:可以睡觉、可以发声,同时这个封装保存了
boolean is_sleeping = false;
public Animal() {}
public void sleep() { is_sleeping = true; }
public void wakeUp() { is_sleeping = false; }
public boolean isSleeping() { return is_sleeping; }
public void makeNoise() {
if (!is_sleeping)
System.out.println("Animal making noise");
else
System.out.println("Sleeping animal making noise");
}
}
boolean is_sleeping
状态,允许 Animal
的子类实现根据情况(动物是否醒着) makeNoise
class Duck extends Animal {这是我们对鸭子(Duck)的定义:它定义为依赖
final String name;
public Duck(String name) { this.name = name; }
public String getName() { return name; }
@Override public void makeNoise() {
System.out.print("[Duck ");
System.out.print(name);
System.out.print("] ");
if (!is_sleeping) System.out.println("Quack!");
else System.out.println();
}
}
Animal
类(从此类派生(Derived)),并且有一个扩展字段:name
以允许我们给鸭子命名鸭子的叫声是 Quack,并且它叫唤的时候,我们假设能够获得它的名字 — 并且知道它是只鸭(肯定的)
现在我们有个函数,它接受一只动物(Animal)并且会先确保它醒着(如果已经睡着就把它弄醒),让它叫。然后会再让它睡着,再让它叫(打呼噜 233)
public static void playWithAnimal(final Animal animal) {我们来测试一下(假设下面的代码是 Groovy 写的)
if (animal.isSleeping()) animal.wakeUp();
animal.makeNoise();
animal.sleep();
animal.makeNoise();
}
animal = new Duck("Doddle")... 好吧,我承认我的例子举得比较失败,但有上面的例子我想你已经知道为啥这种类型转换(type casting)是安全的了
animal.makeNoise()
// [Duck Doddle] Quack!
animal.sleep()
animal.makeNoise()
// [Duck Doddle]
playWithAnimal(animal)
// [Duck Doddle] Quack!
// [Duck Doddle]
playWithAnimal
接受一个 Animal
作为它的参数,而 Duck
是 Animal
的子类却也可以被传递进去,为什么呢?我智商比较低一直不明白因为 Duck 「继承」了 Animal 的所有公开方法和公共属性,将 Duck 转换为 Animal 会让对象不能 getName()(Animal 类没有这个方法),而不管怎么样,都不会让 Animal 类原有的 sleep() wakeUp() 方法被 *删除* 而无法调用
Duck *是*(is_a) 一个 Animal,只不过它有自己额外的特性(name)而已!所以将它隐式转型为 Animal 是完全可以的
Duck is JUST an Animal AND MORE!我们再回到「Duck Typing」动态类型的理论上来,因为 Animal 类「派生」到的对象,他们都拥有的
Animal
所拥有行为(睡觉、发出叫声),所以他们都 *是* Animal
因为我们只知道可以在
Animal
对象上做这些操作:sleep、wakeUp、isSleeping、makeNoise,而这个类的实例对象实现了所有这些 *行为*,就说它 *是* Animal
而反观
Duck
呢?它从 Animal
那里继承到了所有这些操作,所以它当然是一只 Animal
我们反过来看,
Duck
比 Animal
多了一项操作:getName
,而 Animal
*没有* 实现此操作,所以 Animal
不是一个 Duck
我们都知道了,
Animal
并不是一个 Duck
,所以在运行时将它(一个相对的基类)转型为 Duck
(相对的子类)自然是不可能实现的。同时这也不是类型安全的行为+ #emmm 菜鸡要啃草才能... 变成肉鸡
duangsuse 比较菜呢... 好好学习吧,菜鸡虽然菜... 多吃点总会变成... 肉鸡(删除)战斗鸡的吧 当然也要注意身体啊(现在我明显没有...)
+ #cs #pl 读 Lice 动态作用域实现后我才知道 Lime 主动实现的是动态作用域...
动态作用域... 就是那种只是在特殊操作的时候维护作用域「Environment」栈的方法吧,比如在进行函数调用的时候,至于作用域嵌不嵌套是另一回事
冰冰这篇博文说的是
let var = valExpr
这种作用域优化。就是说在求值的时候可以只在全局放一个 Hashtable
因为一旦放多(每层 scope 一个 hashtable,*访问(read/write)* 还是带锁的(这是他原话我也不知道是写带锁还是全都带锁))了他会很心疼(Hashtable 这种空间换时间的数据结构... allocate 一大堆 bins 会爆炸的)于是就这么做:我在进入新嵌套作用域时已经知道了那个作用域有哪些符号,然后我检查冲突并且把冲突的符号(包含符号的名字和值)给备份一下(集合类型引用备份到栈上),然后再进入作用域,这样就可以简单的 put() 和 get() 了(不过你依然得记录新产生的键值对,等到离开这层作用域时删除他们,不能让符号「泄漏」到作用域外面)
就是说它看重时序,而不是「定义域」
我看完博客后自己又草稿了几种不同的作用域实现,我感觉帅炸了:
\+ PrefillScope
\+ PrefixScope (NamespaceMap)
\+ IndexedScope
\+ ArrayOrHashScope (AutoArrayOrHashMap)
\+ CollisionScope (CollisionMap, ByPlaceCollisionMap)
+ #android #tech #dev Android 的保护(反 crack)技术
六个我还记得(真的有六个?)
1. 手动验证 OkHttp SSL 证书以 filter 掉系统 CA 证书信任「bypass 绕过检验」问题
2. Mess 混淆 XML
3. Proguard 混淆 repackage
4. 核心代码用 native 语言写
5. JNI_OnLoad 验证环境
6. 忘记了一个... 哦是用第三方库加密 assets 运行时解密,这个也很常见
+ #pl #cs 常见的程序语言实现优化技术,扫盲
1. 常量传播
2. 常量折叠
3. 函数内联
4. 指令顺序调整
5. 公共子表达式消除
6. 逃逸分析
7. 循环常量外提
8. 循环展开
9. 死代码消除
10. 表达式重组
啊啊啊懒得写了
duangsuse::Echo
🐱 Sticker
http://bbs.seewoedu.cn/search.php?mod=forum&searchid=30258&orderby=lastpost&ascdesc=desc&searchsubmit=yes&kw=%E7%82%B9%E5%90%8D
#emmm #recommended #life #school #dev
... 官方逼死同人系列.... 😭
说实在话,我真的不敢搜... 其实想想也知道这么常见的功能怎么可能不做呢...
#emmm #recommended #life #school #dev
... 官方逼死同人系列.... 😭
说实在话,我真的不敢搜... 其实想想也知道这么常见的功能怎么可能不做呢...
bbs.seewoedu.cn
搜索 - 希沃论坛
,希沃论坛
https://github.com/duangsuse/Book/issues/1#issuecomment-430547733
#tech #cs #emmm 妈耶这人可真 TM 会找,这下我比较尴尬了 ://
这俩估计十有八九又双把我当 sb 了
#tech #cs #emmm 妈耶这人可真 TM 会找,这下我比较尴尬了 ://
这俩估计十有八九又双把我当 sb 了
GitHub
发现了一只大佬 #1
🌚 在看 gh 更新时发现之前因为 "中文 C#" 事件 #csharplang/993 关注的 @Glavo Star 了一个 JVM 程序设计语言的 repo https://github.com/lice-lang/lice 看看居然是函数式 Lisp 方言! 后来还发现是中国人开发的??? (虽然之前那个 lemon-lang 也中国人 后来发现居然... 是高中大佬??? 于是找...
duangsuse::Echo
#include <stdio.h> int main(int argc, char *argv[]); inline linked_list parse_input(FILE *fp); inline void recur_dump_list(FILE *out, linked_list *list); typedef struct node_st { void *obj; node *next; } node; typedef struct linked_list_st { size_t…
Forwarded from duangsuse Throws
#gfw #freedom #net #emmm #tech #sysadmin
又暂时使用了 SS(一直 MTProto Proxy 的)上 P 站什么的
又暂时使用了 SS(一直 MTProto Proxy 的)上 P 站什么的
[DuangSUSE@duangsuse]~% ssurl -d "ss://xxxxxxxxx/#Mercury" | sslocal -c /dev/stdin
INFO: loading config from /dev/stdin
2018-12-01 15:56:41 INFO loading libcrypto from libcrypto.so.10
2018-12-01 15:56:41 INFO starting local at 127.0.0.1:1080
duangsuse Throws
#School 这周马上就要放寒假了(还有一个月) 🤔 duangsuse 的安排嘛... 其他的都好了,本来每周就是讲东西为主,然后本周买了别的东西,画了几张画,最后书什么的基本没看。嗯嗯。 这周就是讲点东西,发点照片,没了。 顺便说一下,推荐有打印机又看过书的大家可以没事带几张 papper (比如之前那个代数程序逻辑的 fold.pdf,我在 USTC 中科大学生的分享里淘到的,当然论文基本都是公开的你们可以随便找个大学比如 Illinois 的 CS 系看...)到例如公交车的地方看看,因为…
#emmm 这周我发的一些东西... 因为都是『超常发挥』(其实都是我不了解的东西,然后我暴力硬讲)
一些水平比较高的人可能可以注意到我讲得都有点民科感了(其实还不如民科///,比如那个『哥巴赫猜想证明』我就写不出来,这里无讽意味
👆 这里就体现出一个 trivial 和 nontrivial 的区别了,本频道会告诉大家他的证明为什么是错误的,while 一些关注此事的其他频道都只是发个链接而已,根本懒得去看什么证明原文,更不会拿 XeTeX 特地排版个 PDF 出来给大家看了
对于能看出我这次讲得很迫真的人来说,说句抱歉,请多包涵... (
也非常感谢一些同行者的理解,虽然我们水平会相差很大,但我这个不算是乌龟的家伙正在努力的赶上前面的兔子,我不想特别去比较,但我要赶上前面的大家。
当时那样幼稚的话,要是还发给了 @drakeet 肯定早被长者们拉黑了,可是有些人虽然因为永远在学习所以不能特别的去关心其他 naive 一点的爱好者,却每次都愿意给予帮助,实在是发自真心的热爱 CS 啊
因为我其实对 FP 还有 Haskell 的一些东西都不是特别了解,然后又硬想讲
然后就出这种笑话,当然我其实不怕出笑话的( 🤔
我的水平其实一直不是特别高,目前算是打了个理解力基础,书什么的我还要再看第三遍
我还要尝试打字更快,然后我会再开一个频道专门放我对一些书知识的理解,到̶时̶候文̶体̶两̶开̶花̶,̶多̶多̶支̶持̶...
谢谢大家对我的关注。Thank Q Thank Q!(指 XM
今后也会努力做到曾经想的『工̸程̸理̸论̸两̸开̸花̸、信̸息̸生̸活̸两̸开̸花̸』同时 DSP、Net、信息编码、计算机图形学、人工智能这类边角科也得学好。
一些水平比较高的人可能可以注意到我讲得都有点民科感了(其实还不如民科///,比如那个『哥巴赫猜想证明』我就写不出来,这里无讽意味
👆 这里就体现出一个 trivial 和 nontrivial 的区别了,本频道会告诉大家他的证明为什么是错误的,while 一些关注此事的其他频道都只是发个链接而已,根本懒得去看什么证明原文,更不会拿 XeTeX 特地排版个 PDF 出来给大家看了
对于能看出我这次讲得很迫真的人来说,说句抱歉,请多包涵... (
也非常感谢一些同行者的理解,虽然我们水平会相差很大,但我这个不算是乌龟的家伙正在努力的赶上前面的兔子,我不想特别去比较,但我要赶上前面的大家。
当时那样幼稚的话,要是还发给了 @drakeet 肯定早被长者们拉黑了,可是有些人虽然因为永远在学习所以不能特别的去关心其他 naive 一点的爱好者,却每次都愿意给予帮助,实在是发自真心的热爱 CS 啊
因为我其实对 FP 还有 Haskell 的一些东西都不是特别了解,然后又硬想讲
然后就出这种笑话,当然我其实不怕出笑话的( 🤔
我的水平其实一直不是特别高,目前算是打了个理解力基础,书什么的我还要再看第三遍
我还要尝试打字更快,然后我会再开一个频道专门放我对一些书知识的理解,到̶时̶候文̶体̶两̶开̶花̶,̶多̶多̶支̶持̶...
谢谢大家对我的关注。Thank Q Thank Q!(指 XM
今后也会努力做到曾经想的『工̸程̸理̸论̸两̸开̸花̸、信̸息̸生̸活̸两̸开̸花̸』同时 DSP、Net、信息编码、计算机图形学、人工智能这类边角科也得学好。