async

java~@Async异步功能

匿名 (未验证) 提交于 2019-12-02 20:59:24
@Async注解,可以实现异步处理的功能,它可以有返回值,或者直接在新线程时并行执行一个任务,对于异步来说,它的执行是有条件的, 你需要把异步代码块放在单独的类 里,当spring在注入时,才不会相互影响,因为异步是一个比较特殊的代理。 异步入口 @EnableAsync 具体的异步方法 /** * 异常的类型应该和同步执行的类分开,这样在ioc建立时不会相互干扰 */ @Service public class MessageService { @Async public void msg1() throws Exception { Thread.sleep(5000L); System.out.println("async1:" + LocalDateTime.now() + ",id:" + Thread.currentThread().getId()); } } 上面代码中的异步,是一个没有返回值的,一般像发送消息可以采用这种方式。 带有返回值的异步 @Async public Future<String> asyncMethodWithReturnType() { System.out.println("Execute method asynchronously - " + Thread.currentThread().getName()); try { Thread

html5-自定义数据与js加载

匿名 (未验证) 提交于 2019-12-02 20:37:20
dataset // data- 前缀必须有 <div id="div1" data-miaov="miaov" data -miaov-all = "miaovkt" >div</div> <script> window.onload = function () { var oDiv = document.getElementById(‘div1‘ ); alert( oDiv.dataset.miaov ); // miaov alert( oDiv.dataset.miaovAll ); // miaovkt // 最常用的形式 就是将html 和 js分离 利用自定义属性设置html的样式 knockoutjs.com } </script> // js是单线程 会从上向下执行(可能出现白屏) defer可用于延迟加载(先加载其下面内容) // 如果三个js都给defer 理论上三者按顺序执行, 实际可能乱序执行 <script src="a.js" defer="defer"></script> <script src="b.js"></script> <script src="c.js"></script> <body> <img src="" /> </body> // async异步加载 四个同时加载,谁先加载完毕谁先执行,执行顺序无法保证 // dom

IndexedDB 简单封装

匿名 (未验证) 提交于 2019-12-02 20:21:24
当然浏览器数据存储 还有LocalStorage,Cookies,web SQL等 为什么还再来一个indexedDB。 之前我在开发过程中使用的是web sql,可以直接写sql查询数据。 LocalStorage,用key-value键值模式存储数据,而且Localstorage就是专门为小数量数据设计的。 Cookies只能是字符串 而且空间有限。 如果你在实际应用中希望存储大量数据时,IndexedDB会明显的更适合,IndexedDB也能提供你更为复杂的查询数据的方式,还能建立索引,他的索引还是挺666的。 下面是自己看了阮一峰的 文章 http://www.ruanyifeng.com/blog/2018/07/indexeddb.html const dbName = "test"; const dbVersion = 1; export default { // indexedDB兼容 indexedDB: window.indexedDB || window.webkitindexedDB || window.msIndexedDB || window.mozIndexedDB, //name:表名 key:主键 ,cursorIndex 索引 store: { teacher: { name: "teacher", key: "id", cursorIndex:

在爬虫中使用单线程异步协程,包含单任务和多任务,以及数据解析使用回调函数

混江龙づ霸主 提交于 2019-12-02 19:56:47
aiohttp 简介 aiohttp 可以实现单线程并发IO操作,用他来代替非异步模块request来发送请求,请求中的ua,headers,和参数都可以添加,添加方法如下: 环境安装 pip install aiohttp aiohttp使用 1.发起请求 async def fetch(): async with aiohttp.ClientSession() as session: async with session.get('https://www.baidu.com') as resposne: print(await resposne.text()) loop = asyncio.get_event_loop() tasks = [fetch(),] loop.run_until_complete(asyncio.wait(tasks)) 2.添加请求参数的方法: params = {'key': 'value', 'page': 10} async def fetch(): async with aiohttp.ClientSession() as session: async with session.get('https://www.baidu.com/s',params=params) as resposne: print(await resposne.url

aiohttp实现爬虫功能

与世无争的帅哥 提交于 2019-12-02 16:28:56
aiohttp中文文档 获取responseDemo: async def fetch(session, url): # 设置超时时间 with async_timeout.timeout(10): async with session.get(url) as response: return await response.text() async def main(): async with aiohttp.ClientSession() as session: html = await fetch(session, 'http://python.org') print(html) loop = asyncio.get_event_loop() loop.run_until_complete(main()) 抓取豆瓣Demo: import aiohttp import asyncio import async_timeout from bs4 import BeautifulSoup url = 'https://movie.douban.com/top250' datadict = {} # 获取response async def fetch(session, url): # 设置超时时间 with async_timeout.timeout(10): async with

async和await执行顺序

折月煮酒 提交于 2019-12-02 14:49:13
关于执行顺序和线程ID,写了一个小程序来检测学习: 1 using System; 2 using System.Net; 3 using System.Threading; 4 using System.Threading.Tasks; 5 6 namespace AsyncOrder 7 { 8 class Program 9 { 10 static void Main(string[] args) 11 { 12 Console.WriteLine($"Main: befor Task1 。 线程ID:{Thread.CurrentThread.ManagedThreadId}"); 13 const string url1 = "http://www.163.com/"; 14 const string url2 = "http://www.baidu.com/"; 15 16 Task<string> t1 = p1(1, url1); 17 Task<string> t2 = p1(2, url2); 18 19 Console.WriteLine($"网页:{url1}长度:{t1.Result.Length}。 线程ID:{Thread.CurrentThread.ManagedThreadId}"); 20 Console.WriteLine($"网页:{url2

Multi thread: std::async()和std::future(1)

ε祈祈猫儿з 提交于 2019-12-02 14:36:14
对于初学者而言,“以多线程运行程序”的最佳起点就是C++标准库中的 std::async() 和 class std::future 提供的高级接口. (1) , std::async() 提供一个接口,让一段机能或者说一个 callable object function(可调用函数对象) 若是可能的话 在后台运行成为一个独立的线程 . (2) , std::future 允许你等待线程结束并获取其结果(一个返回值,也有可能是一个异常). #include <iostream> #include <future> #include <chrono> #include <random> #include <exception> int doSomething(const char& c) { std::default_random_engine engine(c); std::uniform_int_distribution<int> id(10, 1000); for(int i=0; i<10; ++i){ std::this_thread::sleep_for(std::chrono::milliseconds(id(engine))); std::cout.put(c).flush(); } return static_cast<int>(c); } int func1()

C# 与 Java 的一些差异

荒凉一梦 提交于 2019-12-02 14:35:43
如果你是 Java 开发人员,则可以在 Xamarin 平台上充分利用你的技能和现有代码,同时获得 C# 的代码重用优势。你会发现 C# 语法与 Java 语法非常相似,这两种语言提供非常类似的功能。此外,你会发现 C# 的特有功能,这些功能将帮助你轻松进行开发工作。 概述 本文介绍面向 Java 开发人员的 C# 编程,主要侧重于在开发 Xamarin.Android 应用程序时会遇到的 C# 语言功能。 此外,本文说明了这些功能与其 Java 对应项的区别所在,并介绍了在 Java 中不可用的重要 C# 功能(与 Xamarin.Android 相关)。 包含指向附加参考资料的链接,因此你可以将本文用作一个“起点”以进一步研究 C# 和 .NET。 如果你熟悉 Java,那么对于 C# 语法的使用便可以轻松上手。 C# 语法与 Java 语法非常相似 – C# 是“大括号”语言,如 Java、C 和 C++。 在许多方面,C# 语法读起来像是 Java 语法的超集,但是有一些重命名和新增的关键字。 可以在 C# 中找到 Java 的许多主要特征: 面向对象的基于类的编程 强类型化 支持接口 泛型 垃圾回收 运行时编译 Java 和 C# 都被编译为中间语言,在托管执行环境中运行。 C# 和 Java 都是静态类型,这两种语言将字符串视为不可变类型。 这两种语言使用单根类层次结构

vue项目第三阶段

限于喜欢 提交于 2019-12-02 12:53:32
###今日目标 1.修改用户,删除用户 2.推送代码到码云 3.权限列表 4.角色列表 5.分配角色 ###1.修改用户信息 A.为用户列表中的修改按钮绑定点击事件 B.在页面中添加修改用户对话框,并修改对话框的属性 C.根据id查询需要修改的用户数据 //展示编辑用户的对话框 async showEditDialog(id) { //发送请求根据id获取用户信息 const { data: res } = await this.$http.get('users/' + id) //判断如果添加失败,就做提示 if (res.meta.status !== 200) return this.$message.error('获取用户信息失败') //将获取到的数据保存到数据editForm中 this.editForm = res.data //显示弹出窗 this.editDialogVisible = true } D.在弹出窗中添加修改用户信息的表单并做响应的数据绑定以及数据验证 <!-- 对话框主体区域 --> <el-form :model="editForm" :rules="editFormRules" ref="editFormRef" label-width="70px"> <el-form-item label="用户名"> <el-input v-model=

node.js 调用mysql 数据库

﹥>﹥吖頭↗ 提交于 2019-12-02 11:49:11
1、在package.json中添加mysql依赖 命令:npm install mysql --save 2、项目中添加mysql文件夹 > 文件夹下创建config文件夹,并在config下创建index.js写入mysql配置文件 const mysql = require('mysql') const connectdb=()=>{ let connection = mysql.createConnection({ host : 'localhost', port : '3306', user : 'root', password : '', database : 'rehab' }) return connection; } module.exports=connectdb; mysql 配置 > mysql文件夹下创建mysql.js文件 const conn = require('./config/index'); const connection = conn(); // 查询所有数据 let selectAll = async(sql,callback)=>{ return sqlQuery(sql) } let selectBy = async(table,where,callback)=>{ var _WHERE=''; // var keys=''; //