懒加载

记录一下对于单例模式的重新认识

折月煮酒 提交于 2020-01-11 10:15:16
单例模式,毋庸置疑,(这里以java语言来描述)字面意思就是在一个java进程中,只会存在一个对象实例。 单例模式主要分为4种,饿汉式,懒汉式,委托,枚举; 1.饿汉式: /** * * 测试饿汉式 * 能够保证线程的安全性,但是没有延迟加载,实例化完成后, * 如果长时间不进行使用,会造成内存空间的浪费,因为单例模式的实例中如果包含很多的静态成员变量 * 占用内存比较大,则内存空间的浪费就会非常明显。所以如果提高其性能,需要进行懒加载 * * @date 2020-01-01 * @since */ public class HungryDemo { private static byte[] bytes = new byte[1024]; public static String str = "just test"; static { System.out.println("hungry singleton"); } /** * 定义私有的构造器 */ private HungryDemo() {} /** * HungryDemo中的静态变量在类加载期间就会初始化, * 加载 => classLoader将类字节码加载到jvm内存中 * 验证 => 验证字节码文件的正确性 * 准备 => 为静态变量赋予初始值 * 解析 => 将符号引用转变为直接引用 * 初始化 =>

vue学习指南:第十二篇(详细) - Vue的 路由 第二篇 ( 路由按需加载(懒加载))

家住魔仙堡 提交于 2020-01-10 11:30:34
  各位朋友 因 最近工作繁忙,小编停更了一段时间,快过年了,小编祝愿 大家 事业有成 学业有成 快乐健康 2020开心过好每一天。从今天开始 我会抽时间把 Vue 的知识点补充完整,以及后期会带给大家更完善的知识体系!!!    路由的按需加载(懒加载)   我们都知道 vue的路由是我们必学的,也是不可分离的一部分,我们传统引入路由的方式是这样的,  import Home from '@/components/home/Home' 但是在真正项目的开发中,这种现象是杜绝的,是不建议使用这种传统方式引入的。 为什么不建议使用呢?   比如你当前有三个路由需要引入,会把这三个组件的js代码放在一个js文件中,导致打开其中一个页面,会把其它js代码也加载下来,这样是非常不好的,当项目很大会影响性能。 我们要使用路由懒加载   比如打开 home 组件只加载home组件的js,不加载其它组件,css没有问题因为 style标签有个 scoped,只针对私有的。 常用的路由懒加载有两种   1. 使用 Vue异步组件 和 Es中的 import   2. Vue 异步组件实现懒加载    方法如下:component:resolve=>(require(['需要加载的路由的地址']),resolve) import Vue from 'vue' import Router from

Element-ui tree懒加载时获取节点DOM

牧云@^-^@ 提交于 2020-01-10 07:24:45
tree提供的方法貌似没有可以直接获取节点DOM,或者点击勾选节点响应函数参数node其实只是传入data的数据对象,拿不到DOM,得想想法子来获取之 事情是这样的:最近做一个表单,要能勾选一个二级的下拉数据,于是就想起了element的tree组件,而且二级的数据是要调用接口懒加载展开的,这个应该很多人会遇到这种需求,tree组件即支持勾选框又支持懒加载节点,功能是够用的。 所以起初我是这样用组件的: <el-tree :data= "exitDataOnlyFirst" :props= "{label: 'name'}" :load= "loadNode" node-key= "code" :expand-on-click-node= "true" :default-checked-keys= "form.checkedKeysSecond" lazy ref= "dataTree" show-checkbox> < /el-tree> 注: 我的展示数据大概样子如下: data = [ { code: 1 , name: '一' , children: [{ code: 11 , name: '11' }]} ] 不过,在做编辑修改的时候,遇到这个组件就有点小困难了,虽然它有支持默认勾选节点的属性配置 default-checked-keys

懒加载的实现原理及一些实现方法

允我心安 提交于 2020-01-08 17:18:27
图片懒加载 为了避免页面一次性向服务器发送大量请求而造成页面阻塞,我们需要控制请求数量,按照我们需要的量去加载图片。 懒加载的优点 提高前端性能,按需加载图片减轻服务器负担,提高页面加载速度。 懒加载的原理 图片的加载是依赖于 src 路径,我们可以设置一个暂存器,把图片路劲放到暂存器中,当我们需要这个图片加载显示时,再把路径赋值给 src ,这样就能实现按需加载,也就是懒加载。我们通常使用html5中的 data- 属性作为暂存器,例如 src 的值默认是正在加载中的GIF,而真正的图片路径是保存在 data- 中。 懒加载的实现 现在很多优秀的插件都能够实现懒加载的功能,但是不管方法如何,实现原理都是一样的。 JQuery (不使用插件) 使用懒加载时,我们的 src 的值默认是”正在加载中“的GIF, data-lazyload 是自定义属性,用于存放图片真实路径。如下面的代码。 <img src="loading.gif" data-lazyload="img.jpg"> 我们首先要知道什么时候应该加载图片,什么时候不需要加载? 对于用户来说,看得到的地方才需要加载,看不到的地方加载了也是白白浪费资源。所以我们知道,在 可视区域中,我们才需要加载图片 。 如何判断图片是否在可是区域?我们可以利用元素的偏移高度,对比设备宽度加上滚动条高度来判断该元素是否处于可视区域中。

图片懒加载

五迷三道 提交于 2020-01-07 06:27:36
延迟加载、懒加载技术 什么是懒加载技术: 原理: 先将img标签中的src链接设为同一张图片(空白图片),将其真正的图片地址存储再img标签的自定义属性中(比如data-src)。当js监听到该图片元素进入可视窗口时,即将自定义属性中的地址存储到src属性中,达到懒加载的效果。这样做能防止页面一次性向服务器响应大量请求导致服务器响应慢,页面卡顿或崩溃等问题。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <script src="https://cdn.bootcss.com/jquery/2.1.0/jquery.min.js"></script> <style> .container{ max-width: 800px; margin:0 auto; } .container:after{ content:""; display: block; clear:both; } .container img{

浅析:Android--Fragment的懒加载

纵然是瞬间 提交于 2020-01-07 04:43:55
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 我们都知道, fragment 放在 viewPager 里面, viewpager 会帮我们预先加载一个,但是当我们要看 fragment 里面的内容时,我们也许只会去看第一个,不会去看第二个,如果这时候不去实现 fragment 的懒加载的话,就会多余的去加载一些数据,造成用户多消耗流量,所以我们采取懒加载的方式。 所谓懒加载,就是当 fragment 完全可见的时候我们再去加载数据 我们知道,当我们去滑动的时候, fragment 会显示与隐藏,当 fragment 完全显示在我们的眼前时, fragment 会调用一个方法 下面直接上代码 首先,我们定义一个抽象类去继承我们的 fragment, package fragment; import android.support.v4.app.Fragment; /** * Fragment懒加载 */ public abstract class LazyFragment extends Fragment{ protected boolean isVisible; @Override public void setUserVisibleHint(boolean isVisibleToUser) {//frahment从不可见到完全可见的时候,会调用该方法

08.Python网络爬虫之图片懒加载技术、selenium和PhantomJS

僤鯓⒐⒋嵵緔 提交于 2020-01-05 05:20:44
引入 今日概要 图片懒加载 selenium phantomJs 谷歌无头浏览器 知识点回顾 验证码处理流程 今日详情 动态数据加载处理 一.图片懒加载 什么是图片懒加载? 案例分析:抓取站长素材http://sc.chinaz.com/中的图片数据 #!/usr/bin/env python # -*- coding:utf-8 -*- import requests from lxml import etree if __name__ == "__main__": url = 'http://sc.chinaz.com/tupian/gudianmeinvtupian.html' headers = { 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36', } #获取页面文本数据 response = requests.get(url=url,headers=headers) response.encoding = 'utf-8' page_text = response.text #解析页面数据(获取页面中的图片链接) #创建etree对象 tree =

vuex和vue-router全家桶

自作多情 提交于 2020-01-02 09:15:35
vuex 关键词:state,getters,actions,mutations,store。 state为状态的参数。 getters为获取器,用于过滤的方法获取参数。 mutations是改变状态参数的函数,但是不能直接被调用,需要对应的 store.commit (可以额外传参数)。 actions不是直接修改状态,而是基于mutations,可以执行异步处理 store更像一个容器,装着以上的所有函数和参数,最后需要注入到Vue的实例当中。 2.0 特性--辅助函数 辅助函数j就是可用可不用。如果你用了,它就会提高代码编写效率的。 mapState mapGetter mapMutation 举个例子,如果不用辅助函数 mapState , computed: { count () { return this.$store.state.count } } 使用辅助函数 mapState , computed: mapState([ // 映射 this.count 为 store.state.count 'count' ]) 如果不用辅助函数 mapGetter computed: { doneTodosCount () { return this.$store.getters.doneTodosCount } } 使用辅助函数 mapGetter computed: {

mybatis中的懒加载

五迷三道 提交于 2020-01-02 04:00:41
知识点:mybatis中的懒加载的使用 参考:https://www.cnblogs.com/ysocean/p/7336945.html?utm_source=debugrun&utm_medium=referral (1)什么是mybatis的懒加载 通俗的讲就是按需加载,我们需要什么的时候再去进行什么操作。而且先从单表查询,需要时再从关联表去关联查询,能大大提高数据库性能, 因为查询单表要比关联查询多张表速度要快。 在mybatis中,resultMap可以实现高级映射(使用association、collection实现一对一及一对多映射),association、collection具备延迟加载功能。 (2)使用实例 mapper.xml文件 <mapper namespace="com.agesun.attendance.privilege.provider.mapper.OrgMapper"> <resultMap id="BaseResultMap" type="com.agesun.attendance.privilege.provider.model.Org"> <id column="org_id" jdbcType="INTEGER" property="orgId" /> <result column="parent_id" jdbcType=

设计模式之单例模式

荒凉一梦 提交于 2019-12-30 05:10:54
核心作用:保证一个类只有一个实例,并且提供一个访问该实例的全局访问点。 常见应用场景: 项目中读取配置文件的类,一般也只有一个对象。没必要每次使用配置文件的时候,都new一个对象去读取; 数据库连接池的设计一般是单利模式,因为数据库的连接是很耗资源的; 在servlet中的Application也是单利模式; 在Spring中,每个Bean都是单利的,这样的优点就是Spring容器可以去管理; 在Servet编程中,每个servlet也是单例的; springMVC中的控制器也是单例的; 单例模式的优点:   - 由于单例模式只生成一个实例,减少了系统性能开销,当一个对象产生需要消耗较多资源时,如读取配置文件、产生其他依赖对象时,则可以通过在启动时直接创建出一个对象,然后永久驻留内存的方式来解决   - 单例模式可以在系统设置全局的访问点,优化环共享资源的访问 常见的四种单例模式的实现方式:   -饿汉式(线程安全,调用效率高,不能延时加载)   -懒汉式(线程安全,调用效率不高,可延时加载)   -静态内部类式(线程安全,调用效率高,可延时加载)   -枚举单例(线程安全,调用效率高,不能延时加载,并且可以避免通过反射和序列化创建新对象) 选用方式:    单例对象占用资源少,不需要延时加载     枚举式 好于 饿汉式;   单例对象占用资源大,需要延时加载