around

js的单线程和异步

亡梦爱人 提交于 2021-01-11 08:25:59
js的单线程和异步 前言 说到js的单线程(single threaded)和异步(asynchronous),很多同学不禁会想,这不是自相矛盾么?其实,单线程和异步确实不能同时成为一个语言的特性。js选择了成为单线程的语言,所以它本身不可能是异步的,但js的宿主环境(比如浏览器,Node)是多线程的,宿主环境通过某种方式(事件驱动,下文会讲)使得js具备了异步的属性。往下看,你会发现js的机制是多么的简单高效! 说说浏览器 js是单线程语言,浏览器只分配给js一个主线程,用来执行任务(函数),但一次只能执行一个任务,这些任务形成一个任务队列排队等候执行,但前端的某些任务是非常耗时的,比如网络请求,定时器和事件监听,如果让他们和别的任务一样,都老老实实的排队等待执行的话,执行效率会非常的低,甚至导致页面的假死。所以,浏览器为这些耗时任务开辟了另外的线程,主要包括http请求线程,浏览器定时触发器,浏览器事件触发线程,这些任务是异步的。下图说明了浏览器的主要线程。 图片来自popAnt 画得太好,忍不住引过来 ( http://blog.csdn.net/kfanning/article/details/5768776 ) 再说说任务队列 刚才说到浏览器为网络请求这样的异步任务单独开了一个线程,那么问题来了,这些异步任务完成后,主线程怎么知道呢?答案就是回调函数,整个程序是事件驱动的

Visualize climate change by AI models?

本小妞迷上赌 提交于 2021-01-09 17:04:48
Generative AI models have been co-opted to synthesize things from faces and apartments to butterflies, but a novel subcategory seeks to bring awareness to climate change by illustrating the consequences of catastrophic flooding. In an effort to establish a metric to quantify the veracity of these synthetic climate change images, researchers University of Montreal and Stanford University researchers recently detailed “several” evaluation methods in a preprint paper. They say that their work, while preliminary, begins to bridge the gap between automated and human-based generative quantification.

Cesium入门4

倾然丶 夕夏残阳落幕 提交于 2021-01-09 06:44:45
Cesium入门4 - 创建Cesium Viewer Cesium中文网: http://cesiumcn.org/ | 国内快速访问: http://cesium.coinidea.com/ 任何Cesium应用程序的基础都是 Viewer 。Viewer是一个带有多种功能的可交互的三位数字地球的容器(盒子)。创建一个Viewer和HTML中的一个id为"cesiumContainer"的div绑定即可。 var viewer = new Cesium.Viewer('cesiumContainer'); 使用以上代码之后,能看到下图所示的基本的数字地球: 默认地,场景支持鼠标(电脑)和手指(移动设备)交互。控制相机漫游数字地球可以通过以下方式: Left click and drag - Pans the camera over the surface of the globe. Right click and drag - Zooms the camera in and out. Middle wheel scrolling - Also zooms the camera in and out. Middle click and drag - Rotates the camera around the point on the surface of the globe.

SpringBoot系列(1)——AOP-入门

↘锁芯ラ 提交于 2020-12-31 08:17:28
摘要 aop关键词 spring aop小demo <!--more--> 概念 使用场景:与业务无关的且经常使用到的公共功能如鉴权,日志,性能优化,事务,错误处理,资源池,同步,审计,幂等等 优点:降低耦合度,易扩展,高复用 实现方式:静态代理(AspectJ) + 动态代理(CGlib/Jdk) aop关键词 连接点(Joinpoint) 连接点就是增强的实现 **切点(PointCut)**就是那些需要应用切面的方法 增强(Advice) 前置通知(before) 后置通知(after) 异常通知(afterThrowing) 返回通知(afterReturning) 环绕通知(around) 目标对象(Target) **织入(Weaving)**添加到对目标类具体连接点上的过程。 代理类(Proxy) 一个类被AOP织入增强后,就产生了一个代理类。 切面(Aspect) 切面由切点和增强组成,它既包括了横切逻辑的定义,也包括了连接点的定义 Spring aop测试 pom <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.5.RELEASE</version> <relativePath/

GEE 2020 Geo for Good Summit

醉酒当歌 提交于 2020-12-31 04:38:48
GEE2020 由于疫情影响,2020GEE官方峰会(Geo for Good Summit)采取线上举行的方式,所有人可以免费开放申请。会议时间:10月20-21日。申请截止日期9月25日。想参会的老师同学,抓紧时间申请。 NO.壹 Event Details What will happen at the Geo for Good Summit this year? · Tune into the Opening remarks & Keynotes to hear what’s on our minds this year. · Learn about the latest updates to Google Earth Engine, Google Earth and more during Product Demos and Announcements. · Listen to others in the Geo for Good community talk about using mapping technology for social and environmental impact during the Lightning Talks. · Tune into the sessions and ask questions! Before the summit,

老大爷都能看懂的RecyclerView动画原理

孤人 提交于 2020-12-30 21:05:55
如何阅读本篇文章 本文主要讲解RecyclerView Layout变化触发动画执行的原理。前半部分偏重原理和代码的讲解,后半部分通过图文结合场景讲解各个阶段的执行过程。 建议先粗略阅读前半部分的原理和代码篇,做到心中有概念,带着理论知识去阅读后半部分的场景篇。最后结合全文学到的知识,带着问题去阅读源码,效果会更好。 原理篇 1. Adapter的notify方法 用过RecyclerView的同学大概都应该知道Adapter有几个notify相关的方法,它们分别是: notifyDataSetChanged() notifyItemChanged(int) notifyItemInserted(int) notifyItemRemoved(int) notifyItemRangeChanged(int, int) notifyItemRangeInserted(int, int) notifyItemRangeRemoved(int, int) notifyItemMoved(int, int) 稍微有点开发经验的同学都知道,notifyDataSetChanged()方法比其它的几个方法更重量级一点,它会导致整个列表刷新,其它几个方法则不会。有更多开发经验的同学可能还知道notifyDataSetChanged()方法不会触发RecyclerView的动画机制

Unity 3D 遮挡剔除(仅专业版) Occlusion Culling Pro only

允我心安 提交于 2020-12-29 19:13:19
Occlusion Culling is a feature that disables rendering of objects when they are not currently seen by the camera because they are obscured by other objects. This does not happen automatically in 3D computer graphics since most of the time objects farthest away from the camera are drawn first and closer objects are drawn over the top of them (this is called "overdraw"). Occlusion Culling is different from Frustum Culling. Frustum Culling only disables the renderers for objects that are outside the camera's viewing area but does not disable anything hidden from view by overdraw. Note that when

flex布局 css3

落花浮王杯 提交于 2020-12-29 07:26:37
### flex布局 一般在移动端基本都采用flex的布局方式   display:flex;(此时内部容器、内容会强制一行)      display:flex;   flex-wrap: wrap;(使用flex特性 不强制一行)      display:flex;   flex-direction:column; //子容器排列方式 column(上下) column-reverse(下上) inherit(默认) initial(从左往右) row(从左往右) row-reverse(从右往左)         display:flex;               //横向(flex布局中 元素与容器等同)     justify-content: center; center (类似 text-align:center);          justify-content: flex-start ( 类似 text-align:left);        justify-content: flex-end( 类似 text-align:right);           justify-content: space-between(两端对齐 两个元素就是左浮动 右浮动)          justify-content:space-around; (两端间距对齐)  

从CentOS官网下载系统镜像详细教程

回眸只為那壹抹淺笑 提交于 2020-12-29 05:23:59
很多新手小白鼠想学习CentOS系统,但是不知道镜像去哪里搞,随便去个第三方发现要么要注册,要么各种广告病毒,或者好不容易找到官网,点进去一看却一脸懵逼,不仅全英文,有些专业术语也不懂啊,不要担心哈,本教程就手把手地带各位小白熟悉一下从官网下载自己想要的CentOS镜像整个流程。 工具/原料 可联网的计算机一台:装有任一种浏览器 &可用硬盘容量10GB+ CentOS官网地址 CentOS小科普 1 1、CentoS简介 CentOS(Community Enterprise Operating System,社区企业操作系统)是一个基于Red Hat Linux 提供的可自由使用源代码的企业级Linux发行版本,以高效、稳定著称。它使用与Red Hat相同的源代码编译而成,而且是开源免费的,因此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用,是很多中小服务器站点的首选。CentOS拥有Red Hat的所有功能,它们的不同之处在于CentOS并不包含封闭源代码软件,即Red Hat提供的额外的商业服务。 2 2、为什么要从官网下载CentOS系统镜像? 1)、CentOS官网是是绝对权威的CentOS版本发布平台,所有你想要的版本都可以在官网找到,而且官网下载可以保证资源的完整性、可用性和安全性; 2)

异常、异常处理和统一异常处理

送分小仙女□ 提交于 2020-12-17 11:31:20
异常、异常处理和统一异常处理 > 日常求赞,感谢老板。 > > 欢迎关注公众号:其实是白羊。干货持续更新中...... 废话不多说,先来几个基础垫吧垫吧。 一、异常 顾名思义,异常就是不正常呗,这是一种现象,也是Java为我们提供的程序安全退出的通道。一旦出现异常,异常处理机制会将代码执行交给异常处理器,而不再执行原有方法。 为了描述不同的这种不正常现象,我们定义了各种各样的异常类型。 首先来张图: 1)Throwable 没错它属所有异常和错误的“祖宗”,下面介绍几个常用的方法: getMessage():获取detail message即相关的错误描述信息。 toString():返回包含异常类名+getMessage()。 printStackTrace():打印详细异常信息和异常抛出路径(不推荐使用,可使用log代替)。 2)Error Error是Throwable的子类之一,包含的方法主要来自于继承自Throwable的那些。Error我们开发者接触到的不多,一般都是和虚拟机相关的问题,如:系统崩溃、虚拟机错误、系统资源如内存不足等,如:OutOfMemoryError等。Error靠程序自身是无法解决的,一般JVM会选择终止程序。 3)Exception Exception也是Throwable的子类之一。相较于Error而言,但是它可是和我们开发者有很大的关系