摄影:产品经理 感谢小何的上等牛肉 当我们创建一个Python 类并初始化时,一般代码这样写: class People: def __init__(self, name): self.name...一个不能被初始化的类,有什么用? 这就要引入我们今天讨论的一种设计模式——混入(Mixins)。 Python 由于多继承的原因,可能会出现钻石继承[1]又叫菱形继承。...显然,这样写会报错,因为两个类的实例是不能比较大小的: 但在现实生活中,当我们说 某人比另一个人大时,实际上是指的某人的年龄比另一人年龄大。...def __ge__(self, other): return self.age >= other.age 运行效果如下图所示: 但如果这几个魔术方法会在多个类中使用...return self.age > other.age def __ge__(self, other): return self.age >= other.age 然后在使用
Spring容器里为什么没有我需要的Bean?...,看着小菜在沸点评论区不停的滑动,似乎在寻找着什么大瓜 此时的小菜似乎察觉到气氛不太对劲,身后似乎有人,于是飞快的按下 Windows + 1 弹出Idea的开发界面 此时,项目经理开口道:小菜啊,这里有个紧急需求...原来是小菜把controller包不小心创建在springbooteasyframeworks包的同级目录 图片 启动类中的@SpringBootApplication中包含@ComponentScan...controller包与其同级时无法扫描其中的组件,因此导致容器中找不到对应的Bean 如果需要扫描其他包,或者需要依赖公共项目common下的包时,可以使用配置basePackages,如果已经配置*...菜菜的后端私房菜
通常来讲,有了个这个知识点傍身,按需手动创建相应个数的线程就好 但是现实中,你也许听过或者被要求: 尽量避免手动创建线程,应使用线程池统一管理线程 为什么会有这样的要求?背后的道理又是怎样的呢?...可以看到,使用线程池不但能完成手动创建线程可以做到的工作,同时也填补了手动线程不能做到的空白。...禁止使用Executors创建线程池 相信很多人都看到过这个问题(阿里巴巴Java开发手册说明禁止使用 Executors 创建线程池),我把出处(P247)截图在此: ?...Executors 大大的简化了我们创建各种类型线程池的方式,为什么还不让使用呢? 其实,只要你打开看看它的静态方法参数就会明白了 ?...总的来说,使用 Executors 创建的线程池太过于理想化,并不能满足很多现实中的业务场景,所以要求我们通过 ThreadPoolExecutor来创建,并传入合适的参数 总结 当我们需要频繁的创建线程时
通常来讲,有了个这个知识点傍身,按需手动创建相应个数的线程就好 但是现实中,你也许听过或者被要求: 尽量避免手动创建线程,应使用线程池统一管理线程 为什么会有这样的要求?背后的道理又是怎样的呢?...可以看到,使用线程池不但能完成手动创建线程可以做到的工作,同时也填补了手动线程不能做到的空白。...禁止使用Executors创建线程池 相信很多人都看到过这个问题,我把出处(P247)截图在此: ?...Executors 大大的简化了我们创建各种类型线程池的方式,为什么还不让使用呢? 其实,只要你打开看看它的静态方法参数就会明白了 ?...总的来说,使用 Executors 创建的线程池太过于理想化,并不能满足很多现实中的业务场景,所以要求我们通过 ThreadPoolExecutor来创建,并传入合适的参数 总结 当我们需要频繁的创建线程时
Yodonicc无论你对async/await的立场如何,我都想向你说明,根据我的经验,为什么async/await往往会使代码复杂度更高,而不是更低。...这在客观上是正确的,但在大多数情况下,我不认为async/await真的能解决这个问题。谎言和async/await我用来确定是否要使用某个模式的指标之一是它所带来的代码综合质量。...JavaScript中的try块会立即将这部分代码排除在许多引擎优化之外,因为代码不能再被分解成确定的片段。...但后来我真的看到了一些promise的代码,它们看起来惊人地像回调地狱。我很困惑,为什么有人会这样使用promise。最终,我得出结论,有些人对promise的工作原理有一个非常基本的误解。...在我讨论这个问题之前,首先让我承认,事实上不可能用async/await创造出金字塔结构的回调地狱,所以它有这个优势。但是我从来没有写过一个超过两级的promise流,没有必要。
最近因为重新翻修了下博客,找到了一个非常适合我想法的 hexo-stellar 主题,博客的图片可以使用 Github + jsdelivr + PicGo 来打造图床,而 Typora 对 PicGo...刚下载安装 Typora,第一印象是非常的简洁,跟一记事本似的。 随着深入地使用了,发现真的是很不错的一款 Markdown 编辑工具。下面说说目前发现的一些吸引我的特点。...图片功能 这是我最喜欢的一个功能,也是我决定使用 Typora 的主要原因。.../themes/github.css ,在该文件中搜索 #write ,下图红框的三处修改为想要的宽度即可: 总结 Typora 的功能非常丰富,上面记录的是比较吸引我的一些特点,更多的功能需要在深入使用的过程中去慢慢发现...现在最新的 Typora 需要收费,89 元可以支持三个设备,这个价格我觉得很亲民了,而且还是买断式的。如果不想使用收费版,仍然可以使用之前的测试版。 Typora 会成为接下来我的主力写作工具。
有在Update执行之前所包含的数据行有被修改,则会发生并发性操作错误。 da.Update(dataTable); 解决并发性办法: if (dataTable.GetChanges() !...Deleted 该行已通过 DataRow 的 Delete 方法被删除。 Detached 该行已被创建,但不属于任何 DataRowCollection。...DataRow 在以下情况下立即处于此状态:创建之后添加到集合中之前;或从集合中移除之后。 Modified 该行已被修改,AcceptChanges 尚未调用。...使用BeginEdit方法将DataRow置于编辑模式。在此模式中,事件被临时挂起,以便允许用户在不触发验证规则的情况下对多行进行多处更改。...例如,如果需要确保总数列的值等于某行中借贷列的值,则可以将每一行都置入编辑模式,以便在用户尝试提交值之前挂起对行值的验证。
使用容器的理想境界是一个容器只启动一个进程,现实中有时是做不到的。比如容器除了主进程外还启动辅助进程,做监控或者logs;再比如程序本身就是多进程的。...而容器中也是由init进程直接或间接创建了Namespace中的其他进程。 linux信号 而为什么不能在容器中kill 1号进程呢?进程在收到信号后,就会去做相应的处理。...运行命令 kill -9 1 里的参数“-9”,就是指发送编号为 9 的这个 SIGKILL 信号给 1 号进程。 为什么在容器中不能kill 1号进程? 对于不同的程序,结果是不同的。...如果信号被忽略了,那么 init 进程就不能收到指令了。 想要知道 init 进程为什么收到或者收不到信号,就要去看 sig_task_ignored()的实现。...0000000000004000 [root@043f4f717cb5 /]# kill 1 # docker ps CONTAINER ID IMAGE COMMAND CREATED 重点总结 “为什么我在容器中不能
小工具升级啦 我之前开发了一款定制化的代码生成工具,基于MyBatis Generator开发的。...有有兴趣的可以看看我之前写的这篇文章: “MyBatis generator逆向生成实体类插件开发 当时这个款工具能一键生成实体类、Mapper类、Mapper的xml文件。...但是远远满足不了公司的开发需求。为此,我对这款工具做了升级。 升级后的小插件可以生成实体类、Mapper类、Mapper的xml文件、Service、ServiceImpl、Controller。...一秒生成,让机械无味的mybatis文件编写工作一去不返。随时随地,方便快捷。 使用方式 我们只需要配置application.properties配置文件,然后启动Main类即可。...小工具的源代码我已经上传到github上面了
最近在知乎看到一个问题,原问题如下: “ 很奇怪,为什么现在能找到自己手动创建vue脚手架的文章非常少,而且大家似乎对webpack4的热情并不高,对于想基于vue2.0+webpack4搭建一个脚手架的我来说资料真是少得可怜...难道现在一般的做法就是直接从vue-cli开始然后改成自己需要的模样吗?难道就没有人从零开始搭建一个渐进增强的脚手架?这一点我很疑惑,希望大牛给点指导。”...这个问题我之前在公司也曾想过,当初入门vue项目也是从一个 npm install vue-cli -g 的命令行开始的,觉得官方提供的vue-cli脚手架很友好,不用想vue+webpack的工作流怎么搭建...中级前端或者更进阶者就有统筹全局的能力,类似于文章开头说的,能手动创建一个和公司项目需求深度定制的vue脚手架,而不再依赖于官方提供的vue-cli,一方面自己定制的脚手架哪出了问题自己心里清楚,从而也能培养自己前端架构的能力...所以,平时你们可以在公司里看看你们的leader在忙些什么。 这就是我为什么不推荐你使用vue-cli创建脚手架的原因(此文的受众是想要进阶中级的初级前端人员)。
又升级啦 之前我自己写了个代码生成工具,为了能在创建实体时节省不必要的工作。当时我给这个工具升级了一次。...有兴趣的同学可以看看我写的这篇文章: “还记得我之前的代码生成工具么,这次我给它升级了” 当时升级的功能可以自动生成Service,ServiceImpl,Controller等类,并按照实际做了定制化的开发...这次我主要升级的是: “在Service层增加增删改查代码” 源码说明 我们来看看代码: 首先我在serviceImpl增加了如下代码: 这里我们看一个methodForServiceImplCreate...xxxServiceImpl.java 自动生成的创建方法: 如上图,注释,注解,以及方法全部由程序自动生成。 同理我们来看看查询方法。 这里我只写了list方法,和page分页方法。...我们来看看service方法: 最后是controller方法: 这里我只写了create方法,其他的方法可以在生成代码中新增功能。
这个需求应该也比较常见,在不同的条件下创建不同的bean,具体场景很多,能看到这篇的肯定懂我的意思。...倘若不了解spring4.X新加入的@Conditional注解的话,要实现不同条件创建不同的bean还是比较麻烦的,可能需要硬编码一些东西做if判断。...新建一个springboot项目,添加一个Configuration标注的类,我们通过不同的条件表达式来创建bean。...可能上面的那些你用的地方不常见,那我来举一个我正在使用的例子。...虽然不影响功能,但是看着一直不停的报错也是不顺眼。 那么我就可以使用Condition注解来解决它。 /** * @author wuweifeng wrote on 2017/11/25.
来总结一下我RxJava遇到的坑,或者说我为什么不在推荐使用RxJava。相信熟悉或者关注我的朋友,绝大多数都是因为RxJava。所以看到这个标题你已经会惊讶。...作为RxJava坚定的拥护者,或者说自干五?为什么突然不再支持RxJava了呢? 先讲讲历史 在我的文章中已经讲过很多次RxJava诞生之初就是因为异步。...你永远无法预测你同事的RxJava水平 上面几点可能有点抽象,而这点和接下来的几点都是我在实际工作中遇到的实际情况。首先就是你并不能预测或者要求你的同事RxJava到达什么样的水平。...我之前的公司使用了一个简单的类redux框架。其中RxJava是核心部分,他承载了中间render层和view层的连接。...但是优秀并不代表适合所有人,我在之前推广RxJava,认为这样的异步基础应该是每一个Android开发者必不可少的知识点。但实际工作使用两年之后,我觉得这并不实际,也不必要。
我对箭头函数绝对是真爱,但要声明一个顶级函数时,我仍用“土气”的函数声明。 为什么呢?“Uncle Bob” Martin 是这么说的: 花1小时写代码,就要花10小时检查代码。...都退后,我要开始装逼了 Fair warning:接下来我要放大招了——下文“行话”连篇,但你只要明白在声明之前不能使用常数就好。...换言之,JavaScript 提升了sayHelloTo的声明——先阅读,再置其于顶层,然后创建空间来储存其值——但在执行之前不会声明sayHelloTo。...很多人,包括很多聪明人都会觉得在声明之前使用不合常理,而且会产生不良后果。但什么好,什么不好,只是个人意见而已,并非真理。 但我的意见是:代码就是用来交流的。好的代码就是一则精彩的故事。...使用箭头函数时,还会使用地图、过滤器等,它们都是我的好朋友。 举个例子: const goodSingers = singers.filter((singer) => singer.name !
当然了,bad case分析这块我也聊了很多,多分析能发现其中的端倪,知道模型需要什么,该怎么处理,我再放一遍在这里,希望能好好阅读。...模型、代码层的问题 检查有没有bug,代码整体流程是否有问题,无论是训练还是推理,这个就得自己检查和使用了,这个没法解,只能自己debug,找问题然后解决。...至于训练集,首先要说的是训练集内部的问题,其实还是数据的数量和质量问题: 学习资料和练习题要足够,才能让模型学得会,学得好。 数据分布问题,不能偏科,各个类型的数据最好都能覆盖。...这里背后的逻辑可以参考我这篇文章: 心法利器[45] | 模型需要的信息提供够了吗 训练问题 针对训练问题,其实也就是一个经验的问题了,多弄其实问题就会小很多,大家可以多去看各个论文使用的超参,一般调的差不多基本都不会有的...首先要做基线,一般是考虑折腾这个CLS,而在下游加插件的时候,也要注意不能让BERT模型被学走,注意调整学习率、trainable,同时也可以结合MLM任务来维持模型的稳定,平衡BERT原有的基础知识与实际场景问题的差距
营业员在帮我办理业务时,除了拍照我的身份证件外,还说要留存我的健康码和行程码。...这个要求就有点奇怪了,尽管我两个码都是正常,但作为从事隐私信息保护工作的我,对涉及自己隐私数据的事情,觉得还是要和他掰斥一下。 首先,我问他为什么需要留存我的两码?...因为我进营业厅的时候扫过各种健康码的,我于是给他扣了个大帽子:过度防疫(另一个类似的帽子是“层层加码”)。...因为我清楚地记得,行程码在使用时,用户只授权了用于防疫目的。至于其他目的,对不起,我没授权你用,就算你的理由多么冠冕堂皇,也不能随便给你。 至于他们留存我的健康码,更连个正当的理由都没有。...现在,当《个人信息保护法》颁布后,任何人都不得以便捷等借口,随意收集和使用用户的数据。 在疫情期间,为了防疫,我们很多时候都是被““隐私换便利”了。
错误情况1 在同一项目中使用“TestClass2”这个类时出现错误。 ...【分析】:这个错误比较明显,图中将“TestClass2”写在了 “TestClass1”中,类在使用中是不允许出现嵌套的,否则就是我们常说的“类中类”,必须杜绝这样的编程失误。...错误情况2 在同一项目中使用“TestClass2”这个类时出现错误。 【分析】:“TestClass1”中只有一个方法,没有其他类,所以不存在“类中类”的情况。...仔细观察,发现Program 的命名空间为 “thinger.com” ,而“TestClass1”的命名空间为 “thinger.com.cn”,两者的命名空间不一致。...错误情况3 在同一项目中使用“TestClass1”这个类时出现错误。 【分析】:类名称为 “TestClass1”,而使用时却将类名称写成了“TestClass11”。
我为什么不建议使用框架默认的 DefaultMeterObservationHandler 背景知识 最近,我们升级了 SpringBoot 3.x,并且,升级后,我们全面改造了原来的 Sleuth 以及...指标数据是统计数据,是聚合数据,是一段时间内的数据,而链路追踪数据是实时数据,是每个请求的数据 但是像是链路追踪上报在生产上肯定不能 100% 上报(上报性能,还有成本考虑,以及查询的存储性能有限,成本不能太高...全面使用 Observation 遇到了内存溢出以及 CPU 飙高(非不断 GC 导致) 但是,我们在全面使用 Observation 的时候,发现了一个问题,就是内存溢出以及 CPU 飙高(非不断 GC...为何会出现内存溢出 我们通过增加如下启动参数启动并且在退出的时候 dump JFR: -XX:StartFlightRecording=disk=true,dumponexit=true 或者使用下面的参数在内存溢出的时候...我们将全局的 ObservationHandler 改为什么都不做的,对比下: package com.github.hashjang.wwsmbjysymrdo; import io.micrometer.common.KeyValue
[图片] 原文链接cnblogs.com/jackyfei/p/12122767.html 经常有同学疑问,为什么有时候一个SQL语句使用了索引,为什么还是会进入到慢查询之中呢?...案例剖析 --------- 言归正传,为了实验,我创建了如下表: CREATE TABLE `T`( `id` int(11) NOT NULL, `a` int(11) DEFAUT NULL,...很显然你会这么写:select * from t_people where name like '张%' and age=8; 在MySQL5.5和之前的版本中,这个语句的执行流程是这样的: [图片...name_first的虚拟列,然后给name_first和age上创建一个联合索引,并且,让这个虚拟列的值总是等于name字段的前两个字节,虚拟列在插入数据的时候不能指定值,在更新的时候也不能主动修改,...这样这个语句的执行过程,就只需要扫描联合索引的100万行,并回表100万次,这个优化的本质是我们创建了一个更紧凑的索引,来加速了查询的过程。
作为分布式实施的基础,跨进程通信的技术也是五花八门,为什么Core WebApi越来越火,被众多大牛们一直推荐?小编这就为你一一解答!...02 基于Http协议的服务 如WebService、WCF、WebApi,甚至还有ashx一般处理程序,使用最广泛。...03 远程调用模式 远程调用模式,包括FX下的RPC和.NetCore下的gRPC,有使用限制和优异的性能。大部分的开发者和项目选型中,第二类是最为广泛的。下文对gRPC和WebApi有细致比对。...更好的REST风格支持(WCF也可以但很麻烦),对移动端的友好支持等,甚至跟MVC同一个开发技术栈,这些理由很充分的让技术团队都倾向于使用WebApi。...,REST的通用性更强,像典型的前后端分离架构,当下各公众平台对外数据提供,都是选择的REST接口,包括在微服务架构实施上,Core WebApi使用还是更广泛一些。
领取专属 10元无门槛券
手把手带您无忧上云