无需翻墙,无需注册 GPT 账号,5 分钟教程,8.8 rmb 一个月畅聊。不开会员有广告,限制每日 5 条,建议开一个月试用。
。
技术文档中,我们经常表达一些要求,例如:代码中禁止
行尾注释;建表必须
添加自增ID。rfc2119 定义了一些表示要求的严格程度的动词,如下图:
关键词 | 中文关键词 | 释义 |
---|---|---|
MUST/REQUIRED/SHALL | 强制/必须 /务必/只能 |
强制性规则,表示绝对要求这样做 |
MUST NOT/SHALL NOT | 禁止 /不能/不要 |
强制性规则,表示绝对禁止这样做 |
SHOULD/RECOMMENDED | 应/应当 /应该/建议/推荐 |
非强制性规则,表示一般情况下应该这样做,但在知悉全部后果的前提下,可以选择不这样做 |
SHOULD NOT/NOT RECOMMENDED | 不应当/不应该 /不建议/不推荐 |
非强制性规则,表示一般情况下不应该这样做,但在知悉全部后果的前提下,可以选择这样做 |
MAY/OPTIONAL | 可以 /可选 |
非强制性规则,表示这个要求是可选的,可以这样做,也可以不这样做 |
见参考部分。
个人简单的技术文档模板。
参考:
Web场景中,对于一些耗时的任务,为了保证及时响应,会进行异步调用。例如大批量数据的保存,异步调用执行,执行结果通过邮件、工作台等反馈。
异步调用本质是将异步任务放到单独线程执行,不阻塞主线程。在Java中,可使用 ThreadPool
、CompletableFuture
实现异步任务,Spring 提供了 @Async
以支持异步调用。
将@EnableAsync
添加到Java Bean上,即可启用异步调用支持。
如下,将@EnableAsync
加到SpringBoot启动类上(@SpringBootApplication标识的类会被注册为Bean)。
@SpringBootApplication
@EnableAsync
public class RestApplication {
...
}
或者在其它Java Bean添加@EnableAsync
。
@Configuration
@EnableAsync
public class AsyncConfig {
...
}
@EnableAsync
注解有4个属性,一般情况使用默认值即可。
annotation:设置标识异步调用的注解类型。默认情况下,将同时检测Spring的@Async
和EJB 3.1 @javax.ejb.Asynchronous
注解。
proxyTargetClass:是否创建子类代理CGLIB,默认为false,即接口代理;仅当mode属性设置为 AdviceMode.PROXY
时此属性才有效。
mode:代理类型。默认值为 AdviceMode.PROXY
,即JDK代理。JDK代理不支持自调用,因为直接调用的本地方法,绕过了代理。如果想要支持自调用,则选择 AdviceMode.A
对于原子操作的解释:不可中断的一个或者一组操作。
单核环境下:原子操作仅仅是不可中断的一个或者一组操作,因为只有一个CPU在执行指令。
多核环境下:原子操作不仅不能被中断,并且该CPU执行原子操作时其他CPU不能读写该操作访问的内存地址。
在多核下,CPU实现原子操作的方式有:(1)锁缓存(2)锁总线
首先CPU会自动保证基本内存操作的