duangsues.is_a? SaltedFish
60 subscribers
609 photos
6 videos
91 files
562 links
🌶🐔🐟 duangsuse 的日常
尤其喜欢发些奇奇怪怪的东西
和转载别人的东西
Download Telegram
Forwarded from dnaugsuz
https://lab.xecades.xyz/ 大佬写过一个“图形编程语言Piet”(指代码是位图)的随机代码生成器 😂
Forwarded from 琳 缇佩斯
(你写 "hello",他实际上是 "hello" 还是 "Hello" 还是 "heLLo" 完全取决于他的字符串常量池里是哪个
Forwarded from dnaugsuz
"heLLo" == "hello" 神奇自反性(自身相等性)...
Forwarded from dnaugsuz
嗯…… 没试过
{-# LANGUAGE RankNTypes #-} --"forall"
f x :: forall x. x -> x
f x = x

看起来好像没有这个问题吧
:: 只是定义了类型约束,那个 x 全叫 a 写 forall a. (a -> a) 也可以
Forwarded from dnaugsuz
是的,这个是算法大佬,同时也是前端会CSS/HTML
昨天还在想他的一个DEMO要实现的一些细节
Java 和 C++ 的主要区别: #Java #Learn #cplusplus

Java 有 GC 没指针和&reference,所以编程时不需要考虑存储分配位置在调用栈(stack)还是堆(heap),也没有 delete 算符(且 Java 没有 operator 语法也没 template<>)
有不推荐的 Object.finalize() 方法覆盖,实现了 ~T() 析构器的功能但不推荐使用
Java 采用 类名 Capitalized , 其字段名/方法名 camelCased, 参数及局部变量名 snake_cased, 类型参数名全大写 T,U,K,V 这种命名风格(泛型不用模板实现,函数级的类型参数 <T/*extends T_Parent*/> void operate(T x); 这样写)
没有 #include , 只能 import package_name 的 .Item 或 .* , main 函数类型签名是 static void main(String.../*String[]*/ args)
许多语言相关的包(package)在 java.lang ,算法及数据结构的在 java.util ,I/O 的在 java.io,可用 javap (-cp class_path1:2) 命令查询接口
没有 size_t/bool,只能 int/boolean
Java 的字符串原生支持 Unicode UTF-16 ,当然兼容 UTF-8 ,从标准输入(System.in)读可以用 util.ScannerInputStreamReader.read()->int
Java 支持 java.lang.reflect ,可以动态获得类/成员的元数据及强行访问/调用,也可以通过 ClassLoader 寻找并加载类字节码(defineClass),许多大型web/db框架都用了动态字节码生成(往往用到可存于语法树上的 annotation 即 @interface ,属于反射 API) 。
util 包有 Collection<E> 子类: List, Set ,有 LinkedList, ArrayListHashSet ;也有 HashMap<K,V> 和线程安全的 Hashtable
集合类皆没有 C++ stl(即std) 式的 back() iterator 等迭代指针也没有 push_back (用 add/contains/remove/clear);foreach 语法 for (T item : (java.lang.Iterable)items) 与 C++11 语法无二
新版本可 (List<Integer>)List.of(1,2,3) 即用,旧版本是 util.Arrays.asList(1,2,3)
java.lang.Object 是顶类型(所有类型的超类),其 wait(), notify() 等方法已被 java.util.concurrent 的相应工具替换, Java 里判断非『原生类型(int,long)』的全等性(a==b) 而相等性用 a.equals(b) (这点易混)

语法上:
面向对象OOP 结构(构造器/字段和属性/方法)和语法与 C++ 类似但没有多继承和 Mixin(混入非public成员)
Java 的 public/private/protected (保护性或可访问性)修饰符是每个成员一份而非 public: 标签式,默认值没人学过,可能是其定义类的保护性
Java 没有 structunion 但有不能指定起始号的 enum (见 java.lang.Enumint ordinal)
可以用 Lombok Annotation Processor 编译器插件自动生成类字段的 getter/setter ,插件更支持 Java 12(的record特性) 才有的数据类
请用 class V{} class A/B extends V{}if (v instanceof A) 替换不严谨的 union

Java 里 final class 不能被继承(extends),此外支持 inner class 即可访问超类成员的 class ,它们不可以在外部直接引用,在 class {} 内定义类时用 static class 可以规避这一点。
Java 没有 T a(); 局部变量,构造器也没 T(T value): field1(value) {} 这种简写
Java 的继承是 extends ParentT 单继承,此外有仅支持 abstract(即virtual) 方法的 interface ,子类继承自(实现)接口要 class A implements Intrf {}
Java 支持 new T() {} 的匿名内部类(anonymous subclass),它可以包住局部变量,但这个量不能被重赋值(effective final)。
覆写成员一般要加 @Override
Java 的 SEH(try-catch-finally) 没有 noexcept 但要抛出(非 extends RuntimeException 的)异常的函数必写 throws T_EXC1,T_EXC2版本8 支持 try (File f=new File("a.txt")) 的这种语法(try-with-resource)
Java 的 break/continue 支持随机跳转至循环(头/末)位置: out:while(false) { break out; }
if/else/switch/case/default/return 与 C++ 没啥区别,除了 switch 支持 case String:

interface 可以理解为无构造器的 class,常被用于存储(如 static final String) 的常量,其上方法如果加 default 关键字也可以带 {} 函数体。
其实,static 成员本质上是一个与类 1:1 数量关系对应的对象实例上的成员,用 kotlinlang.org 你就会明白这一点
@FunctionalInterface , 又称 SAM(single abstract method) 标记的接口可以用 Intrf inst = () -> { return; }; 的函数式语法创建。
还有一大堆都很简单(或者涉及并发编程了),可以慢慢学
Forwarded from 捏造的 ✴️ 信仰
面向对象语法和常用类需要花时间过一遍,比如常用集合,异常处理,文件存取,网络收发,线程和锁,加密解密,这些都过一遍之后就对 Java 有了一个比较全面的观感了。
对应的包及常见类是 (java.) util(List,Map),无,io(File,(Data) (Input/Output) Stream),net(URL),util.concurrent(.locks.ReentrantLock, .atomic.AtomicInteger),security(MessageDigest,KeyPair)
可以在 docs.oracle.com/javase/8/docs/api 在线查看(草
RegExp 用 java.util.regex.Pattern#matcher matches() 后也可以看 MatchResult.group(int)
a _a_ b
Forwarded from duangsuse::Echo (duangsuse)
补充提取代码的 #Python #code

replacecode.py:
@regress("len(it)","+","a")
def headerSize(fp): pass
from sys import argv; fps = argv[1:]

with open(argv[0], "r") as f: headerSize(f.read(), argv[0])
for fp in argv[1:]:
with open(fp, "r") as f: s = f.read(); code = s[headerSize(s)+1:]
with open(fp, "w") as f: f.write(code)

其中 #Python #code
def regress(*code_parts):
code = "".join(code_parts)
def solve(d, x,y): #不懂算法就写死点二元仅(+)啦
vL = eval(code_parts[0], None, d)
for k in d: d[k] = (y - vL)
def excVar(ex): s = ex.args[0]; return s[len("name "):s.rfind("'")]
def wrap(whatever): #我也拽下洋文(迫真
syms = {} #已回归表
def call(x, y=None):
syms["it"] = x
if y != None:
try: eval(code) if len(syms)==0 else None
except NameError as ex: syms[excVar(ex)] = None
solve(syms, x, y)
return eval(code, None, syms)
return call
return wrap
这个做完发现第一项需要 fpath 就没用了 QAQ
def forFstAndTails(op0, op, xs):
xz = iter(xs)
try:
op0(next(xz))
while True: op(next(xz))
except StopIteration: pass
<Cthon98> hey, if you type in your pw, it will show as stars
诶,如果你把密码发出来,它会被自动码掉!
<Cthon98> ***** see!
(星号)看,看!
<AzureDiamond> hunter2
(这货真的把自己密码发出来了,或者在反串😂)
<AzureDiamond> doesnt look like stars to me
看起来它不是星号啊?
<Cthon98> <AzureDiamond> ***
(星号)
<Cthon98> thats what I see
我看见的只有这些。(😂
<AzureDiamond> oh, really?
真的吗?
<Cthon98> Absolutely
当然啦。
<AzureDiamond> you can go hunter2 my hunter2-ing hunter2
(一句全用密码造的玩笑性短句 建议自读)
<AzureDiamond> haha, does that look funny to you?
哈哈,你看这样好玩吗?(🤣
<Cthon98> lol, yes. See, when YOU type hunter2, it shows to us as ***
嗯有意思,当你本人输入 hunter2 时,它会显示为(星号)
<AzureDiamond> thats neat, I didnt know IRC did that
很奇妙,我不知道 IRC 有这种功能。
<Cthon98> yep, no matter how many times you type hunter2, it will show to us as ***
不管你发多少次 hunter2 ,我们都只看到(星号)
<AzureDiamond> awesome!
真是 太 好 玩 了(🤣注入灵魂
<AzureDiamond> wait, how do you know my pw?
等等,你怎么知道我的密码(hunter2)?
<Cthon98> er, I just copy pasted YOUR **'s and it appears to YOU as hunter2 cause its your pw
呃,我只是复制粘贴了你发的(星号),但你会看到你自己的密码。
<AzureDiamond> oh, ok.
噢,原来如此
Forwarded from 可爱 鸭鸭
另外这是典型的XY问题呀
Forwarded from 可爱 鸭鸭
你想完成X,但你认为Y能完成X,于是问了Y
Forwarded from 可爱 鸭鸭
试试二分?
Forwarded from 可爱 鸭鸭
之前dolphin改间距被我二分出来了
Forwarded from 可爱 鸭鸭
然后人肉patch回去
Forwarded from 可爱 鸭鸭
git bisect
Forwarded from 可爱 鸭鸭
软件都是从代码库里来的
Forwarded from 可爱 鸭鸭
你找到一个有问题的版本