Forwarded from 𝓐𝓵𝓶𝓸𝓷𝓭🍪
发现一个介绍 PyTorch 的playlist,动画效果属实不错,缺点是废话有点多。。建议1.25或1.5倍速 https://www.youtube.com/playlist?list=PLZbbT5o_s2xrfNyHZsM6ufI0iZENK9xgG
If you are using Maven and if you place the logback-test.xml under the src/test/resources folder, Maven will ensure that it won't be included in the artifact produced. Thus, you can use a different configuration file, namely logback-test.xml during testing, and another file, namely, logback.xml, in production.
Forwarded from Jiajun的编程随想
《用peewee代替SQLAlchemy》用了几年SQLAlchemy,但是说实话,复杂的很,包括配套的DB Migration工具alembic。想要配置一个自动生成migration也是很复杂。最近用了几天peewee,发现真的是简单好用...
via Jiajun的编程随想 https://ift.tt/2zGDurT
via Jiajun的编程随想 https://ift.tt/2zGDurT
Forwarded from Jiajun的编程随想
这篇文章解释了为啥在Docker容器里,如果监听localhost,外界无法访问,清晰易懂: https://jiajunhuang.com/sharing#412
不管你做一个什么产品,都一定有一个被操作的主体,比如:服务框架管理的Service,任务框架管理的Task,Spring管理的Bean等,这就是实体域。
即然有被操作者,就一定有操作者,它管理被操作者的生命周期,发起动作,比如:服务框架的ServiceInvoker,,任务框架的TaskScheduler,Spring的BeanFactory等,这就是服务域。
服务域发起动作,在执行过程中,会有一些临时状态需要存储交换,比如:Invacation,Execution,Request等,这就是会话域。
即然有被操作者,就一定有操作者,它管理被操作者的生命周期,发起动作,比如:服务框架的ServiceInvoker,,任务框架的TaskScheduler,Spring的BeanFactory等,这就是服务域。
服务域发起动作,在执行过程中,会有一些临时状态需要存储交换,比如:Invacation,Execution,Request等,这就是会话域。
* Engine 为服务域
* 它是API的入口,并负责实体域Template的生命周期管理,它是Singleton单一实例的,加载后不可变,所以是线程安全的,它的初始化过程较重,请复用单例。
* Template 为实体域
* 代表着被操作者,它是Prototype原型实例的,即每个模板产生一个实例,加载后不可变,同样也是线程安全的,模板变化后,将产生不同的实例,而不改变原实例。
* Context 为会话域
* 持有操作过程中的所有可变状态,它是ThreadLocal线程内实例的,即不和其它线程竞争使用,所以也是线程安全的,请不要跨线程传递,它的初始化过程很轻量,每次模板执行前都新建实例,执行完即销毁。
这样划分的好处是,职责清晰,可变状态集中,每个域都是无锁线程安全的,保证在大并发下,不会降低系统的活性。
* 它是API的入口,并负责实体域Template的生命周期管理,它是Singleton单一实例的,加载后不可变,所以是线程安全的,它的初始化过程较重,请复用单例。
* Template 为实体域
* 代表着被操作者,它是Prototype原型实例的,即每个模板产生一个实例,加载后不可变,同样也是线程安全的,模板变化后,将产生不同的实例,而不改变原实例。
* Context 为会话域
* 持有操作过程中的所有可变状态,它是ThreadLocal线程内实例的,即不和其它线程竞争使用,所以也是线程安全的,请不要跨线程传递,它的初始化过程很轻量,每次模板执行前都新建实例,执行完即销毁。
这样划分的好处是,职责清晰,可变状态集中,每个域都是无锁线程安全的,保证在大并发下,不会降低系统的活性。
设计的基本常识:
如果你要写个远程调用框架,那远程调用的过程应该有一个统一的拦截接口,
如果你要写一个ORM框架,那至少SQL的执行过程,Mapping过程要有拦截接口,
如果你要写一个Web框架,那请求的执行过程应该要有拦截接口,
等等,没有哪个公用的框架可以Cover住所有需求,允许外置行为,是框架的基本扩展方式,
这样,如果有人想在远程调用前,验证下令牌,验证下黑白名单,统计下日志,
如果有人想在SQL执行前加下分页包装,做下数据权限控制,统计下SQL执行时间,
如果有人想在请求执行前检查下角色,包装下输入输出流,统计下请求量,
等等,就可以自行完成,而不用侵入框架内部,
拦截接口,通常是把过程本身用一个对象封装起来,传给拦截器链,
比如:远程调用主过程为invoke(),那拦截器接口通常为invoke(Invocation),
Invocation对象封装了本来要执行过程的上下文,并且Invocation里有一个invoke()方法,
由拦截器决定什么时候执行,同时,Invocation也代表拦截器行为本身,
这样上一拦截器的Invocation其实是包装的下一拦截器的过程,
直到最后一个拦截器的Invocation是包装的最终的invoke()过程,
同理,SQL主过程为execute(),那拦截器接口通常为execute(Execution),原理一样,
如果你要写个远程调用框架,那远程调用的过程应该有一个统一的拦截接口,
如果你要写一个ORM框架,那至少SQL的执行过程,Mapping过程要有拦截接口,
如果你要写一个Web框架,那请求的执行过程应该要有拦截接口,
等等,没有哪个公用的框架可以Cover住所有需求,允许外置行为,是框架的基本扩展方式,
这样,如果有人想在远程调用前,验证下令牌,验证下黑白名单,统计下日志,
如果有人想在SQL执行前加下分页包装,做下数据权限控制,统计下SQL执行时间,
如果有人想在请求执行前检查下角色,包装下输入输出流,统计下请求量,
等等,就可以自行完成,而不用侵入框架内部,
拦截接口,通常是把过程本身用一个对象封装起来,传给拦截器链,
比如:远程调用主过程为invoke(),那拦截器接口通常为invoke(Invocation),
Invocation对象封装了本来要执行过程的上下文,并且Invocation里有一个invoke()方法,
由拦截器决定什么时候执行,同时,Invocation也代表拦截器行为本身,
这样上一拦截器的Invocation其实是包装的下一拦截器的过程,
直到最后一个拦截器的Invocation是包装的最终的invoke()过程,
同理,SQL主过程为execute(),那拦截器接口通常为execute(Execution),原理一样,
梁飞的看书方式:
爱看书
爱看写作者思想的书,不爱看工具用法的书。
爱看只讲一个观点的书,不爱看堆彻作者所有知识的书。
喜欢把书中引用的书,接龙看下去。
爱看源码
看Linux,JDK,Spring等开源代码。
看不懂就自己写一个或一部分。
看自己写的代码。
爱看书
爱看写作者思想的书,不爱看工具用法的书。
爱看只讲一个观点的书,不爱看堆彻作者所有知识的书。
喜欢把书中引用的书,接龙看下去。
爱看源码
看Linux,JDK,Spring等开源代码。
看不懂就自己写一个或一部分。
看自己写的代码。
爱问为什么
为什么要Action -> Service -> Dao?为什么要服务化?
为什么要在范儿图片推荐第三行插入话题推荐,而不是第一行?
为什么他会这么思考问题,而我不会?
爱总结
书上那些原则,那些理论体系怎么来的?不就是作者总结的?为什么不自己总结?
自己总结,自己发明理论。不会,多写就会。
爱质疑
从小教科书就把各种知识全当真理教给了我。我智商低,别骗我。
喜欢有“此理论未被证明”或”与实验结论不符”或“下一章推翻上一章”的书。
看到开源软件自吹性能多牛,一定要自己动手去测一测。(一个main函数+多个线程就够了,别被搭性能环境吓着)
为什么要Action -> Service -> Dao?为什么要服务化?
为什么要在范儿图片推荐第三行插入话题推荐,而不是第一行?
为什么他会这么思考问题,而我不会?
爱总结
书上那些原则,那些理论体系怎么来的?不就是作者总结的?为什么不自己总结?
自己总结,自己发明理论。不会,多写就会。
爱质疑
从小教科书就把各种知识全当真理教给了我。我智商低,别骗我。
喜欢有“此理论未被证明”或”与实验结论不符”或“下一章推翻上一章”的书。
看到开源软件自吹性能多牛,一定要自己动手去测一测。(一个main函数+多个线程就够了,别被搭性能环境吓着)
什么样的人能更快晋升?
做好自己,技术实力强,有深度,也有宽度。
对事专注,持之以恒,将事情做到极致,发挥自己的长处,成为专家。
传道授业,对内对外分享,帮助手边的人成长,影响力大。
主动性强,不只做好手上的事,还能推动事情的发展,独挡一面。
有高度,能先人一步思考,找到方向,找到落地点。
做好自己,技术实力强,有深度,也有宽度。
对事专注,持之以恒,将事情做到极致,发挥自己的长处,成为专家。
传道授业,对内对外分享,帮助手边的人成长,影响力大。
主动性强,不只做好手上的事,还能推动事情的发展,独挡一面。
有高度,能先人一步思考,找到方向,找到落地点。