/tmp/duangsuse.sock
Promise-Java.zip
其实我的意思本来是 Promise 任务是抽象的... 现在好像为了
所以我得负责进行异步操作分配
@FunctionalInterface 不得不额外弄了个 Working 出来所以我得负责进行异步操作分配
Executor 了...🤔 #Java #task 打算写一个上下文依赖注入(CDI)库,不过不是最近的事情
就起名叫做 Pot,钦定以下使用:
也打算支持使用 Singleton 模式
Pot 应该支持依赖链条(比如 Lock 有无参数架构器,实例还有别的依赖)
此外,循环依赖也应该被良好的处理(创建先后有日志输出)
Pot 可以支持两种创建注入对象的方法:
1.
2.
可以选择
Pot 支持按照反射参数化类型查找实例
不过其实组件化到这个地步也是足够的...
就起名叫做 Pot,钦定以下使用:
@pot abstract class Door {
@implicit public Lock locker;
public void open(String password) {
locker.checkPass(password);
openDoor();
}
private abstract void openDoor();
}
这是最基本的 Bean 用法,除了使用 public @implicit, 还可以用private @implicit Lock locker;
public @give(Lock.class) setLocker(Lock lck) { locker = lck; }
Door(@give Lock lck) { lock = lck; }
此外,还可以private Dependency<Lock> locker;
然后在 constructor 里locker.ensure();
当然 pot 的 annotation processor 可以自动生成这种 constructorDoor() { this.injectDependencies(); }
Pot 当然是全局的,要不然也无法提供注入了也打算支持使用 Singleton 模式
Pot 应该支持依赖链条(比如 Lock 有无参数架构器,实例还有别的依赖)
此外,循环依赖也应该被良好的处理(创建先后有日志输出)
class Van {
@ImplicitContext
public @interface DeepDarkHome {}
@ImplicitContext
public @interface Jam {}
}
@DeepDarkHome
@pot abstract class VanHomeDoor {
@implicit public Lock locker; // with context DeepDarkHome
public void open(String password) {
locker.checkPass(password);
openDoor();
locker = Pot.refresh(locker, Jam.class); // dropped, re-created with context Jam
locker = Pot.rebuild(lock, VanHomeDoor.class) // re-created
}
private abstract void openDoor();
}
🤔 这样?我不是很熟悉 CDIPot 可以支持两种创建注入对象的方法:
1.
@provides(...) 标记的方法2.
@provides(...) 标记的架构器可以选择
Pot 支持按照反射参数化类型查找实例
@implicit List<User> storageUserList;
...@provides List<User> loadUserListFromFile() {...}
...@provides(cacheRefresh = 0) List<User> refreshUserListFromFile() {...}
需要创建组件(pot) 的实例时:door_Jam = Pot.make(DarkDoor.class, "Jam");
door_Home = Pot.make(DarkDoor.class, "F**king comming");
当然关于那个 CDI 的 C 我不是很确定,以后可能再了解不过其实组件化到这个地步也是足够的...
#Telegram 其实我的确注意到了,原频道几乎没用人过来...
我想这可能有助于我认识 ::Echo 的情况:很多人可能都是咸的无聊找事看的
很多人根本不想看那些东西...
即使看看平常的广播,最多也就 40 多个阅读而已。
既然我说过不会去在意什么小丑自娱自乐的事情,我以后不会再提关于订阅和阅读数的问题。(当然如果又提了就 *_*(
不过,你们爱看看,不看也 have a nice day on Telegram
的确大部分人都是『冷漠』的,但其实作为作者我不应该在乎这些...
过几天我要写一个 JVM 脚本语言,主打 REPL interactive 和小体积
这样大概就有人愿意看了吧,到底还是不投机。(其实作为一个内容作者来说,希望自己的东西被更多人看到也是一种很正常的愿望吧)
估计会有开发者喜欢,当然啦,其实 Telegram 中层中文圈开发者很少(虽然大部分都是 Java 、JavaScript 等完成上层设计任务的...)
我想这可能有助于我认识 ::Echo 的情况:很多人可能都是咸的无聊找事看的
很多人根本不想看那些东西...
即使看看平常的广播,最多也就 40 多个阅读而已。
既然我说过不会去在意什么小丑自娱自乐的事情,我以后不会再提关于订阅和阅读数的问题。(当然如果又提了就 *_*(
不过,你们爱看看,不看也 have a nice day on Telegram
的确大部分人都是『冷漠』的,但其实作为作者我不应该在乎这些...
过几天我要写一个 JVM 脚本语言,主打 REPL interactive 和小体积
这样大概就有人愿意看了吧,到底还是不投机。(其实作为一个内容作者来说,希望自己的东西被更多人看到也是一种很正常的愿望吧)
估计会有开发者喜欢,当然啦,其实 Telegram 中层中文圈开发者很少(虽然大部分都是 Java 、JavaScript 等完成上层设计任务的...)
添加的特性:
Fucn helper:
添加
可以这么用:
将
让 Func2 和 Funv2 继承
其他 Func 接口的 SAM 方法重命名为 invoke
ADT 包的 Data 类我希望能加点反射 Annotation 元数据使用
争取能做到低开销和快速原型都 OK
Fucn helper:
添加
static Func?<...> into(Func?<...>) 方法可以这么用:
Funv2<String, User> $ = Func.into(users::put);
添加 flip3 函数,重命名 curry 和 flip 的名字为带数字的版本将
curry 作为 default 实现var $ = Func.flip3$1(Func.into(db::getFromDictOrDefault)).curry1("user").curry1("阿强")
$.apply("阿珍");
为 Func3 和 Funv3 、Func2, Funv2 添加 curry2 函数让 Func2 和 Funv2 继承
java.util.function.Function
让 Func1 和 Funv1 继承 java.util.function.Consumer
让 Func0 和 Funv0 继承 java.lang.Runnable其他 Func 接口的 SAM 方法重命名为 invoke
ADT 包的 Data 类我希望能加点反射 Annotation 元数据使用
争取能做到低开销和快速原型都 OK
class User extends Data {
String id, name, nick
bio;
int age;
Date created, lastOnline;
}
然后应该不需要任何其他东西来完成 equals, toString, hashCode感觉自己好菜... IDE 快捷键多久也记不住,重构也记不了几个,
Git CLI 的配置不会编辑、vi 和 emacs 不会用
就连写个 iterator 都花了我半天时间....
打字也很慢... dvork 键盘布局也不会用
Git CLI 的配置不会编辑、vi 和 emacs 不会用
就连写个 iterator 都花了我半天时间....
打字也很慢... dvork 键盘布局也不会用
/tmp/duangsuse.sock
添加的特性: Fucn helper: 添加 static Func?<...> into(Func?<...>) 方法 可以这么用: Funv2<String, User> $ = Func.into(users::put); 添加 flip3 函数,重命名 curry 和 flip 的名字为带数字的版本 将 curry 作为 default 实现 var $ = Func.flip3$1(Func.into(db::getFromDictOrDefault)).curry1("user").curry1("阿强")…
最后实际上:我弄错了 FuncX 的含义
Func2 是接受两个参数的函数,所以实际上它不入流,是我的扩展
Func1<R, I0> 是 Function<I0, R> 的子类型
Funv<I0> 同时是 Consumer<I0> 的子类型
Func0<R> 是 Supplier<R> 的子类型
Funv0 是 Runnable
Func2 是接受两个参数的函数,所以实际上它不入流,是我的扩展
Func1<R, I0> 是 Function<I0, R> 的子类型
Funv<I0> 同时是 Consumer<I0> 的子类型
Func0<R> 是 Supplier<R> 的子类型
Funv0 是 Runnable
其实我有点想放弃了,它的确是有点花时间... 虽然这对我来说也是一种不错的锻炼
过程中,我要忍受自己不怎么样的击键速度和 gnome-break-timer 每隔 6 分钟一次的休息提示...
虽然这的确强化了我对 Java 的认知,弥补了之前知识和理解上的缺失(比如
温故而知新,是非常好的学习方法。
... 其实我也是想早点开发 *** 实际应用的,可是... 好像写测试还要很久
Promise-Java 本来只是作为一个 essay 来写的,因为早期创建项目的困难(比如我不熟悉 Maven,对 XML 的感觉很差)我几乎每个项目都只是能按照语言内部的模块化系统划分而已,而且经常有挂羊头𧹒狗肉的情况(经常多写很多本来在其他模块里的代码)
Promise 写的时候要用一点 functional programming 里常用的数据和操作,于是我就写了 fuctional 包,后来又加上了一个 functional.adt 的包,添加了越来越多的抽象和实现...
依照目前的情况来看,虽然我编程不再会出现语法和类型错误了,但程序逻辑依然可能因为种种原因(比如,零基数组的索引计算、某些 API 的输入输出不是很理解)出现错误
目前根据测试,已经至少出现了十次以上的错误(虽然都得到了妥善解决)
这些东西是非得写测试不可的(要不然我不能保证他们的正确性,其次,写的时候我会稍微开心一点)...
我打算尽力克服... 毕竟这些都是要用的东西(真香!)
过程中,我要忍受自己不怎么样的击键速度和 gnome-break-timer 每隔 6 分钟一次的休息提示...
虽然这的确强化了我对 Java 的认知,弥补了之前知识和理解上的缺失(比如
@interface)温故而知新,是非常好的学习方法。
... 其实我也是想早点开发 *** 实际应用的,可是... 好像写测试还要很久
Promise-Java 本来只是作为一个 essay 来写的,因为早期创建项目的困难(比如我不熟悉 Maven,对 XML 的感觉很差)我几乎每个项目都只是能按照语言内部的模块化系统划分而已,而且经常有挂羊头𧹒狗肉的情况(经常多写很多本来在其他模块里的代码)
Promise 写的时候要用一点 functional programming 里常用的数据和操作,于是我就写了 fuctional 包,后来又加上了一个 functional.adt 的包,添加了越来越多的抽象和实现...
依照目前的情况来看,虽然我编程不再会出现语法和类型错误了,但程序逻辑依然可能因为种种原因(比如,零基数组的索引计算、某些 API 的输入输出不是很理解)出现错误
目前根据测试,已经至少出现了十次以上的错误(虽然都得到了妥善解决)
这些东西是非得写测试不可的(要不然我不能保证他们的正确性,其次,写的时候我会稍微开心一点)...
我打算尽力克服... 毕竟这些都是要用的东西(真香!)