动态

12.动态代理

无人久伴 提交于 2020-03-09 15:26:25
参考的学习视频→ https://b23.tv/av47952931/p82 -特点 :字节码随用随创建,随用随加载 -作用 :不修改源码的基础上对方法增强 -分类 : 基于接口的动态代理 基于子类的动态代理 ▲基于接口的动态代理 -涉及的类 :Proxy -提供者 :JDK官方 -如何创建代理对象 :使用Proxy类中的newProxyInstance方法 -创建代理对象的要求 :被代理类最少实现一个接口,否则不能使用 -newProxyInstance方法的参数 : Classloader :类加载器 用于加载代理对象字节码,和被代理对象使用相同的类加载器(固定写法) Class[] :字节码数组 用于让代理对象和被代理对象有相同的方法(固定写法) InvocationHander :用于提供增强的代码 写如何代理,一般我们会写一个该接口的实现类,通常情况下为匿名内部类,但不是必须的 ▲示例 新建MAVEN工程,配置POM文件,规定打包形式为JAR 新建一个接口类 定义接口类IProducer IProducer接口定义了销售saleProduct和售后afterService两个方法 定义接口实现类Producer Producer继承IProducer接口并实现其方法 模拟一个消费者Client main函数中运用代理 运行结果 ▲基于子类的动态代理 -涉及的类

Vue:动态表单标签/校验提示

孤街浪徒 提交于 2020-03-09 13:49:37
场景介绍 对于表单项,存在前一个表单项填写控制后一个表单项展示问题。即动态表单项展示。 处理思路 定义表单项变量::label="nameLabel" < Form ref = "form" : model = "formModel" : rules = "formRulesList" label - width = "100px" size = "mini" > < FormItem label = "家长" required prop = "isFather" > < Select v - model = "formModel.isFather" clearable @change = "changeFamilyType" > < Option v - for = "(dataType, index) in familyList" : key = "index" : label = "dataType.type" : value = "dataType.isFather" / > < / Select > < / FormItem > < FormItem : label = "nameLabel" required prop = "nameId" v - if = "isVisible" > < Select v - model = "formModel.nameId"

使用form-create动态生成vue组件

不问归期 提交于 2020-03-08 20:03:54
使用form-create动态生成vue自定义组件和嵌套表单组件 [github] | [说明文档] 示例 let rule = [ { type:'row', children:[ { type:'i-col', props:{ span:12 }, children:[ formCreate.maker.input('商品名称','goods_name','iphone'), formCreate.maker.number('商品加个','goods_price',8688) ] }, { type:'i-col', props:{ span:12 }, children:[ formCreate.maker.dateTime('创建时间','create_at'), formCreate.maker.radio('是否显示','is_show').options([ {value:1,label:'显示'}, {value:0,label:'不显示'} ]) ] } ] } ] maker.create 通过建立一个虚拟 DOM的方式生成自定义组件 生成 Maker let rule = [ formCreate.maker.create('i-button').props({ type:'primary', field:'btn' loading:true }) ] $f

动态点分治

…衆ロ難τιáo~ 提交于 2020-03-06 22:33:03
原理 动态点分治模板题。。说实话动态点分治有点像 \(dp\) 很灵活 回顾一下点分治,我们发现是利用重心的性质强行把暴力次数降低到了 \(log\) 次,动态点分治也差不多 由于我们需要修改, 那么我们可以修改一次点分治一次 ,所以不能暴力点分治 考虑为什么点分治可以做到优秀的复杂度?因为重心的性质,每次递归访问的不是儿子而是子树的重心 那么我们可以根据这一点,建出点分树(按点分治递归顺序),在点分树上进行修改,由于点分树一定严格小于等于 \(log\) 层,所以复杂度可以有保证 例题 捉迷藏 每个点处开两个堆,一个堆用来维护向点分树下所有黑点的距离,另一个点用来标记删除(当然您直接写可删除堆也是可以的) 答案就是最大值和次大值拼起来啦~ 不过这样做有可能选到的两个值其实来自原树的同一子树 所以我们再开一个堆,用来存放每个点所有原树上的儿子到改点的最大距离,选取答案的时候在这个堆里拼接 由于我们建出了点分树,所以更改的时候只需要改点分树上对应的链就可以了 开店 我们设 \(siz[0]\) 是子树内点个个数, \(siz[1]\) 是子树内所有点到 \(u\) 的距离和, \(siz[2]\) 的子树内点到 \(f[u]\) 的距离和 对于某个点 \(u\) 的答案为 \(siz_1[u]+\sum siz_1[fa]-siz_2[p]+(siz_0[fa]-siz_0[p])

C++ 动态链接 静态链接

痞子三分冷 提交于 2020-03-06 07:51:17
本文主要内容 :什么是动态链接、静态链接?静态链接、动态链接的优缺点是什么? 1. 什么是 静态链接、 动态链接 静态链接:静态链接是由 链接器 在链接时将库的内容加入到可执行程序中的做法。 链接器 是一个独立程序,将一个或多个库或目标文件(先前由 编译器 或 汇编器 生成)链接到一块生成可执行程序。 动态链接(Dynamic Linking):相对于静态链接而言,要等到 程序运行时 再将组成程序的目标文件进行链接的过程。 2.静态链接、动态链接的优缺点 静态链接 优点 : 不同的程序模块可以独立开发和测试,最后链接在一起供用户使用,促进程序开发效率; 缺点 : (1) 浪费空间 这是由于多进程情况下,每个进程都要保存静态链接函数的副本 (2)更新困难 当链接的众多目标文件中有一个改变后,整个程序都要重新链接才能使用心得版本 动态链接 优点 : (1)当系统多次使用同一个目标文件时,只需要加载一次即可,节省内存空间 (2)不同数据间的数据和指令访问都集中在了同一个共享模块,可以减少物理页面的换入换出,增加CPU的缓存命中率 (3)程序升级变得容易 当升级某个共享模块时,只需要简单的将旧目标文件替换掉,程序下次运行时,新版目标文件会被自动装载到内存并链接起来,即完成升级 (4)插件的引入 程序运行时可以动态选择加载的各种模块,即选择插件 (5)加强程序的兼容性

08、NAT

天涯浪子 提交于 2020-03-05 21:40:38
NAT 一、NAT概述 1、NAT的概念与意义 2、IPv4私网地址与公网地址 二、NAT原理 1、静态NAT 2、动态NAT 3、PAT 4、ALG 三、NAT配置相关指令 一、NAT概述 1、NAT的概念与意义 NAT(Network Address Translation,网络地址转换) 当我们的数据包想要从拥有内网(本地专用网络)地址的设备转入公网设备,或公网想要与内网通信时,可使用NAT方法。 NAT将会将私网地址与公网地址互相转换。 私有IP地址只能在内网使用,禁止出现在公网上,且可以重复利用。 公网路由表不会存有前往私网地址的路由条目。 NAT不仅能解决IP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。 通常我们内网下的全部设备往往对公网只有一个或几个公网地址,这样一来扫描端口将无法直接获取内网设备的真正地址,只能得到公网映射的地址。 2、IPv4私网地址与公网地址 由于IPv4地址有限,ISO国际标准化组织创立了私有IP地址(专用网络地址)的概念,三个地址块被保留作专用网络。这些地址块在专用网络之外不可路由,专用网络之内的主机也不能直接与公共网络通信。但通过网络地址转换(NAT),使用这些地址的主机可以像拥有共有地址的主机在互联网上通信。 专用网络地址范围: 名字 地址范围 地址数量 有类别的描述 最大的CIDR地址块 24位块

静态语言与动态语言,强类型语言与弱类型语言

杀马特。学长 韩版系。学妹 提交于 2020-03-05 04:39:08
Dynamic Programming Language (动态语言或动态编程语言) Dynamically Typed Language (动态类型语言) Statically Typed Language (静态类型语言) 动态语言,准确地说,是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等在结构上的变化。比如众所周知的ECMAScript(JavaScript)便是一个动态语言。除此之外如Ruby、Python等也都属于动态语言,而C、C++等语言则不属于动态语言。 动态类型语言:是指在运行期间才去做数据类型检查的语言。在用动态语言编程时,不用给变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。 所谓的动态类型语言,意思就是类型的检查是在运行时做的,比如如下代码是不是合法的要到运行时才判断(注意是运行时的类型判断): def sum(a, b): return a + b 而静态类型语言的类型判断是在运行前判断(如编译阶段),比如C#就是一个静态类型语言,静态类型语言为了达到多态会采取一些类型鉴别手段,如继承、接口,而动态类型语言却不需要,所以一般动态语言都会采用dynamic typing,常出现于脚本语言中。(idior不知道这能不能回答你对动态语言多态的疑问^_^) 静态类型语言:与动态类型语言刚好相反

JS 动态增添同类对象

允我心安 提交于 2020-03-05 01:34:25
同类单一对象: <div id="confirmForm" > <input type="button" id="confirm" name="confirm" value="批量出库" /><br/> <input type="text" name="orderId1" id="orderId1" value="" placeholder="请输入订单号!" /><br/> </div> <script type="text/javascript"> $(function(){ var num = 1; $("#orderId"+num).focus(); /** 回车触发方法*/ $("#orderId"+num).keyup(function(e){ if (e.keyCode == 13) { var input = $(this); var value = input.value; input.readyOnly = "readyOnly"; num = parseInt(num) + 1; var next = "<input type='text' name='orderId"+num+"' id='orderId"+num+"' value='' placeholder='请输入订单号!'><br/>"; $("#confirmForm").append(next)

ztree的使用经验2(动态获取后台ztree数据)

≡放荡痞女 提交于 2020-03-04 05:54:03
经过尝试,发现ztree动态获取后台数据的方式有两种。一种是通过ajax调用后台数据获取数据后,赋予ztree;另一种是通过ztree插件自身的功能获取数据。但是两种获取方式是有区别的。使用ztree动态调取数据,点击展开栏时会再次默认请求路径。而ajax只能调取一次(需要通过点击展开栏事件才能实现这个效果),所以目前ztree会较为便捷。好了,直接上代码吧。 一、ajax调取数据 后台代码 (这里就不连接数据库了,因为连接数据库还要给出表结构。如果要连接数据库,原理也是一样的。只要把查询出的数据进行循环,动态赋予map,存入集合中就可以将数据库的数据完美的展示在前端。) @ResponseBody @RequestMapping("getData") public List<Map<String, Object>> getData() { Map<String, Object> map1 = new HashMap<String, Object>(); Map<String, Object> map2 = new HashMap<String, Object>(); Map<String, Object> map3 = new HashMap<String, Object>(); //区域 code map1.put("code", "36000"); map2.put(