异步demo
序言在日常开发中,有很多时候都会使用异步的方式去请求方法,以提高代码的执行效率。比如用户购买某件商品,然后需要插入购买记录,物品-1,微信公众号消息推送之类,流程会很多,也会需要很多时间,而 SpringBoot 为异步提供了更加简单的使用方式,通过两个注解即可实现异步调用方法。
1、使用方式SpringBoot 为我们提供了很多使用便利,我们只需要一个@Enablexxx 注解 + 功能注解,便能轻松简单的实现功能,比如异步调用和定时任务。
1.1 简单使用异步调用(无返回调用)假定使用场景:用户购买完一件商品,需要短信通知 + 微信消息推送(不考虑失败场景),不需要返回值。
注意:下面代码是为了展现一个之前一直困惑我的问题,所以代码有些问题,解决办法看下面:
Service 层,模拟功能实现:
@Servicepublic class AsyncMsgService { private static final Logger logger = LoggerFactory.getLogger(AsyncMsgService.class); @Async ...
切换为root账号
Ubuntu 的默认 root 密码是随机的,即每次开机都有一个新的 root 密码。可以在终端输入命令 sudo passwd,然后输入当前用户的密码,回车.
终端会提示输入新的密码并确认,此时的密码就是 root 新密码。修改成功后,输入命令 su root,再输入新的密码就成功切换到 root 帐号了
npm常用命令
检查前 NPM 源:npm get registry
设置镜像命令npm config set registry http://registry.npm.taobao.org/ #设置淘宝镜像npm config set registryhttps://registry.npmjs.org #设置默认镜像
初始化项目建立一个空文件夹,在命令提示符进入该文件夹 执行命令初始化npm init按照提示输入相关信息,如果是用默认值则直接回车即可。name: 项目名称name: 项目名称description: 项目描述keywords: {Array}关键词,便于用户搜索到我们的项目最后会生成 package.json 文件,这个是包的配置文件,相当于 maven 的 pom.xml我们之后也可以根据需要进行修改。如果想直接生成 package.json 文件,那么可以使用命令npm init -y
当从 git/svn 下载源码的时候,此时没有 node_modules 目录,使用此命令能根据 package.json 里的配置的依赖版本下载所有的依赖包npm install
( ...
安装nginx
# 切换至root用户sudo su rootapt-get install nginx
查看 nginx 是否安装成功
nginx -v
启动 nginx
service nginx start #方式1/usr/sbin/nginx #方式2
结束 nginx
service nginx stop #方式1/usr/sbin/nginx -s stop #方式2
重启 nginx
service nginx reload #方式1/usr/sbin/nginx -s reload #方式2
注意:nginx 方式 1 和方式 2 不能互相调用
nginx 文件安装完成之后的文件位置:
/usr/sbin/nginx:主程序
/etc/nginx:存放配置文件
/usr/share/nginx:存放静态文件
/var/log/nginx:存放日志
@Async和@EnableAsync注解
1) 含义:1,在方法上使用该@Async 注解,申明该方法是一个异步任务;
2,在类上面使用该@Async 注解,申明该类中的所有方法都是异步任务;
3,使用此注解的方法的类对象,必须是 spring 管理下的 bean 对象;
4,要想使用异步任务,需要在主类上开启异步配置,即,配置上@EnableAsync 注解;
2) 使用:在 Spring 中启用@Async:
1,@Async 注解在使用时,如果不指定线程池的名称,则使用 Spring 默认的线程池,Spring 默认的线程池为SimpleAsyncTaskExecutor。
2,方法上一旦标记了这个@Async 注解,当其它线程调用这个方法时,就会开启一个新的子线程去异步处理该业务逻辑。
3) 代码示例—默认线程池:3.1,启动类中增加@EnableAsync以 Spring boot 为例,启动类中增加@EnableAsync:
@EnableAsync@SpringBootApplicationpublic class ManageApplication { //...}
3.2,方法上 ...
快速搭建v2ray
0783c7a821e71906579a5c8fae0b5765f7d19a65d5d7adf1d9fc89456874fb3455c40e47f61bd48d511d56671fc1da43a8ba6f78a37f172ff0fbf689e775e003301fccd8ddbafdf8af7a71f509e13925429030910bd305a2580c64a122d97e636f145bfee4e731f923409fcee2baadd7d61aebace455ba05a26a4b7092d7fd7bbd8b4f63c008d3ab7cf3ee8f5c9248aeda77314997c4f1e54bdb7bacf5bb06276fe85ff46e22508b04a7ccb79c4e1c311558d0df848e74014e8c4a35afe9539cadba0ac6b17e4223266981aec29c37b8d0314bfc9590b658065b2bdfd4be300597255ff73e773f012fd77d959be43fc1d280c2edc8e6e1a49 ...
toSee
0783c7a821e71906579a5c8fae0b5765f7d19a65d5d7adf1d9fc89456874fb34f858a876b23a627e2727fe73d1bef0a9153a8fe8f680893be708c51b4e5c3cda6ad26904979e981dcd28750d599ea9765d2ef7ea6874f633d8d6d070435ad3abc7c93ad533f91f32ddd0908fe9f9e86e17400988b1a37f1eedf4d1f76e52b433f5e6ca2d48608c8446546ff4c7d19ef45cb419326e3cfb1a60f14825f2da50c557cc4e832097a2a96097223e78a6932011c025c7dd410571c90415ae15d199fd4a1dba44a75d9891f515852263b18e0a531131f5563b6716e394d6d7b84c471d70388a822b85a1e689e0405d57a5456ba8d56cfac28968e6b ...
toDo
0783c7a821e71906579a5c8fae0b5765f7d19a65d5d7adf1d9fc89456874fb345fd45bf6a59111d263a347903155debee7cf4fc37800f9d5814590dea63ef1bb41e2b6a18a5bab40295246dd893a49fad09f72ba83632a8a1bfd512dfa78fa84c8c9813e2006ea100c4895893d762f78100f35dbc90a40eae3d9a708c39d682e9b95cde37cef7fad0df21c46f0205d4fe550bd8f64ff35d4190ed200052fb825df5897f41b858b222c05814e03fcc0aff1148a7e34c407342108f3d4b4f4081a7fdeb1ff1d848b52158c1db1ba305c42d4dcff7b63636e83fb300cbb9390245b45ea6aacaf02dc5e55a9db196c9f0410022dfbc4a461aa1e8 ...
实时监听input或textarea值发生变化(不需要失去焦点)
暂时只对 input 和 textarea 有效
select 没经过测试,不知道对 select 是否也有效
$('textarea').bind('input propertychange', function () { // do sth})
hello world
值此博客建站成功之际,难以抑制内心的激动心情只好写一行 hello world 了 😄😄😄
public static void main(String[] args){ System.out.println("hello world");}
写完了 hello world,然后就是测试主题 butterfly 的各种功能
测试 toc 功能一级标题111
二级标题222
三级标题333
还要整合的模块
[x] 评论系统
[x] 搜索系统
[ ] 网站验证
[ ] 广告
公式测试(mathjax)
e^{i\theta}=\cos\theta+i\sin\theta