动态

Day23——动态代理

自闭症网瘾萝莉.ら 提交于 2020-01-31 13:16:06
一. 回顾 前面 Day22——AOP前奏 讲到了计算器的日志功能问题,由于代码散乱,需要将日志功能独立出来实现,需要用到动态代理。今天讲述动态代理。 本文章项目源码已上传到本博客的“资源”,可自行前往免费下载 二. 原理 2.1 动态代理的原理 代理设计模式的原理:使用一个代理将对象包装起来,然后用该代理对象“取代”原始对象,任何原始对象的调用都需要通过代理。代理对象决定是否以及何时将方法调用转到原始对象上。 动态代理原理: 在运行时,动态地给原始对象(即目标对象)生成一个代理对象,代理对象可以增强原始对象的功能(即扩展功能),代理对象只能完成扩展出来的功能,而原始对象的功能还必须由原始对象去完成。但是,代理对象决定是否以及何时将功能转回到原始对象上。 2.2 JDK动态代理 Proxy:所有动态代理的父类。主要用于生成代理类,代理对象。 //返回代理类的Class对象 public static Class < ? > getProxyClass ( Classloader loader , Class < ? > . . . interface ) ; //返回代理对象 public static Object newProxyInstance ( Classloader loader , Class < ? > [ ] . . . interface ,

动态加载JS脚本

邮差的信 提交于 2020-01-31 03:55:58
建立dynamic.js文件,表示动态加载的js文件,里面的内容为: function dynamicJS() { alert("加载完毕"); } 如下方法中的html页面和dynamic.js文件在一个目录下。 一. document.write() <! DOCTYPE html > < html lang ="en" > < head > < meta charset ="UTF-8" > < title > Dynamic load JS </ title > < script > function init() { document.write('<script src="dynamic.js"><\/script>'); document.write('<input type="button" onclick="load();" value="加载完毕" \/>'); } dynamicJS(); // 此处报错,由于dynamic.js文件还未加载完毕 function load() { dynamicJS(); } </ script > </ head > < body > < input type ="button" onclick ="init();" value ="初始化加载" /> <!-- <input type="button" onclick=

php-fpm配置优化

泪湿孤枕 提交于 2020-01-30 22:48:54
PHP配置文件php-fpm的优化 2013/06/28 php , php-fpm 应用加速与性能调优 评论 6,029 本文所涉及的配置文件名为 PHP -fpm.conf,里面比较重要的配置项有如下一些。 request_terminate_timeout = 30 #表示等待30秒后,结束那些没有自动结束的 php 脚本,以释放占用的资源。 pm表示使用那种方式,就是static(静态)或者dynamic(动态)。在更老一些的版本中,dynamic被称作apache-like。 pm.max_children:静态方式下开启的php-fpm进程数量。 pm.start_servers:动态方式下的起始php-fpm进程数量。 pm.min_spare_servers:动态方式下的最小php-fpm进程数量。 pm.max_spare_servers:动态方式下的最大php-fpm进程数量。 如果dm设置为static,那么其实只有pm.max_children这个参数生效,系统会开启设置数量的php-fpm进程。 如果dm设置为dynamic,那么pm.max_children参数失效,后面3个参数生效。 系统会在php-fpm运行开始 的时候启动pm.start_servers个php-fpm进程,然后根据系统的需求动态在pm.min_spare_servers和pm

VMware搭建虚拟机服务器

不羁的心 提交于 2020-01-28 02:57:59
一、需求点描述: 1、在有路由器的情况下,能够通过固定的外网IP访问路由器中某台实体机中运行的虚拟机。 2、能够通过外网IP访问该虚拟机中的ftp、远程连接、iis、tomcat等。 二、原理分析: 1、利用路由器的虚拟服务功能实现端口转发(目前市面上大多路由器都具备该功能),或者利用路由器的DMZ功能直接将一台虚拟机暴露出来。 这里利用路由器的虚拟服务功能实现该效果。 2、利用vmware自带网络桥接方式,将虚拟机中的操作系统联网方式跟实体机独立开来, 也就是说,类似于一台新的电脑在连接路由器。 三、所需工具: 1、vmware 肯定得有吧. 2、在vmware中的操作系统,本人装的是windows server 2003 3、一个能够实现端口转发的路由器。 4、运营商的固定IP,其实动态IP也能够实现,只不过每次启动都要去修改而已。我在再最后讲一下。 四、正式开始吧: 第一步,先配置vmware中的网络连接方式。先要启用vmware的虚拟机网卡,右键我的电脑——设备管理——然后网络适配器:把两张vmware的网卡设置为启用 第二步,将vmware的两张网卡的IP获得方式设置成自己获取,很多情况下这两张网卡的IP在安装完vmware时会自动给你一个默认的IP地址,我刚开始做的时候因为这里没有修改所以导致我一直没有成功,后来才发现这里必须去自动获取IP,否则会连接不到路由器的网关

vue动态样式绑定改变伪元素等特殊样式(css var函数)

两盒软妹~` 提交于 2020-01-27 15:57:08
改变样式是我们实际开发中最常做的事情。 诸如在css中,我们添加鼠标滑入滑出效果添加不同的样式。 诸如在js中,我们根据某个条件,或者触发某个方法,去动态改变某个样式。 那么,在vue中,我们更能很轻松的达到这点。 看下常见的几种情景: 情景一:我们需要根据某个变量是否存在(触发),去动态添加样式 描述:当我们点击按钮触发了某个条件,我们需要给对应的元素添加激活效果 <div class="flip" :style="{ background:变量?'red':'black' }" /div > 这里我们通过三目判断某个触发条件的变量是否为true以此来添加不同的样式(当然也可以动态绑定class,来添加不同的类名,实现不同的效果) 情景二:我们封装组件,希望外界可以自定义传入实现不同的样式 描述:通过props定义样式值,外界可自定义传入改变,不传入则使用默认值 < template > < div class = " rd-flop " > < div class = " flip " : style =" { width : width, height : height, lineHeight : lineHeight, margin : margin, fontSize: `$ { fontSize } px`, fontWeight : fontWeight,

spring ioc和aop的含义

霸气de小男生 提交于 2020-01-27 12:03:50
自己整理的一些笔记,如有错误欢迎提出指正,谢谢 1.IOC的定义? IOC:另外一种说法叫DI(Dependency Injection),即依赖注入,是一种设计思想。 我们通过IOC将相互依赖对象的创建、协调工作交给Spring容器去处理,每个对象只需要关注其自身的业务逻辑关系就可以了。 作用是为了解耦,降低类之间的耦合度,其设计思想就是设计模式的工厂模式, 我们并不需要知道其生产的具体过程,我们只要其产出的对象即可。 其工作流程就是:在Spring容器启动的时候,Spring会把你在application.xml中配置好的bean都初始化, 在你需要调用的时候,把已经初始化的bean分配给你要调用这些bean的类,而不用去创建一个对象的实例。 2.IOC的传值方式有哪些? 一般的是设值传入和构造方法传入。 3.IOC的容器有哪些? 常见的一般是ApplicationContext和BeanFactory,这两个容器的区别请看这里: http://blog.csdn.net/hi_kevin/article/details/7325554 4.依赖注入的实现方式 就是Java的反射,通俗的来讲就是根据给出的类名来动态地生成对象,用set方法将事先保存在hashmap中的类属性注入到类中。 AOP: 面向切面编程,被定义为促使软件系统实现关注点的分离的技术。

android jni动态注册

我们两清 提交于 2020-01-27 06:47:22
题外话 转眼间2019年也已经接近尾声了,回顾这一年也发生了很多事,换工作、搬家、赶项目、学习新技术等等很多事,忙碌的一年,博客也被放下了,真的是越来越懒了,每次都有一万个不写博客的理由,之前每年至少还要更新几篇文章,然而今年一篇文章也没写,趁着这个周末没事情,抓住2019年的小尾巴,把自己一直想写的文章写了,于是就有了今天这篇文章。 jni简介 JNI是Java Native Interface的缩写,它提供了若干的接口实现了Java和其他语言的通信(主要是c、c++)。从Java1.1开始,JNI标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。jni是Android中java和c++之间连接的桥梁,jni是jvm提供的一种与native方法对接的方式。 jni的注册方式分为静态注册和动态注册两种, 之前有一篇文章 写过jni相关的知识,那篇文章介绍的关于jni的知识就是静态注册的方式,今天主要写的是jni的动态注册。静态注册和动态注册, 两者优缺点如下: 静态注册 优点: 理解和使用方式简单, 属于傻瓜式操作, 使用相关工具按流程操作就行, 出错率低 缺点: 当需要更改类名,包名或者方法时, 需要按照之前方法重新生成头文件, 灵活性不高 动态注册 优点: 灵活性高, 更改类名,包名或方法时, 只需对更改模块进行少量修改, 效率高 缺点:

代理模式-CGLIB动态代理

自古美人都是妖i 提交于 2020-01-27 03:04:23
1.JDK动态代理是实现了被代理对象的接口,Cglib是继承了被代理对象。 2.JDK和Cglib都是在运行期生成字节码,JDK是直接写Class字节码,Cglib使用ASM框架写Class字节码,Cglib代理实现更复杂,生成代理类比JDK效率低。 3.JDK调用代理方法,是通过反射机制调用,Cglib是通过FastClass机制直接调用方法。 CGLIB动态代理 : 使用JDK的Proxy实现代理,要求目标类与代理类实现相同的接口。若目标类不存在接口,则无法使用该方式实现。 但对于无接口的类,要为其创建动态代理类,就要使用CGLIB来实现。CGLIB代理的生成原理是生成目标类的子类,而子类是增强过的,这个子类对象就是代理对象。所以,使用CGLIB生成动态代理,要求目标类必须能够被继承,即不能是final的类。 CGLIB(Code Generation Library)是一个开源项目,是一个强大的、高性能的、高质量的代码生成类库。它可以在运行期扩展喝增强Java类。Hibernate用它来实现持久对象的字节码的动态生成,Spring用它来实现AOP编程。 CGLIB包的底层是通过使用一个小而快的字节码处理框架ASM(Java字节码操控框架)来转换字节码并生成新的类。CGLIB是通过对字节码进行增强来生成代理的。 代理实现与解析: 使用CGLIB创建代理步骤: 步骤1

vue组件---动态组件&异步组件

*爱你&永不变心* 提交于 2020-01-26 23:56:31
(1)在动态组件上使用keep-alive 之前曾经在一个多标签的界面中使用 is 特性来切换不同的组件。接下来简单回顾下 <component>元素是vue 里面的一个内置组件。在里面使用 v-bind: is,可以实现动态组件的效果。 <!-- 1、动态组件 --> <div class="tab_area"> <button v-for="tab in tabs" v-on:click="currentTab = tab">{{tab}}</button> <component v-bind:is="currentTabComponent"></component> </div> <!-- 1、动态组件 --> <script type="text/javascript"> /* 1、动态组件 */ Vue.component('tab-home',{ template:"<div>Home主页展示信息</div>" }); Vue.component('tab-info',{ template:"<div>info信心页展示信息</div>" }); Vue.component('tab-location',{ template:"<div>location位置展示信息</div>" }); new Vue({ el:".tab_area", data:{

AOP与IOC区别

你。 提交于 2020-01-26 23:34:08
Spring核心知识 Spring是一个开源框架,Spring是于2003年兴起的一个轻量级的Java开发框架,由Rod Johnson在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为J2EE应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring的核心是控制反转(IoC)和面向切面(AOP)。简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式)轻量级开源框架。 为什么说Spring是一个一站式的轻量级开源框架呢?EE开发可分成三层架构,针对JavaEE的三层结构,每一层Spring都提供了不同的解决技术。 • WEB层:SpringMVC • 业务层:Spring的IoC • 持久层:Spring的JDBCTemplate(Spring的JDBC模板,ORM模板用于整合其他的持久层框架) 从上面的简要介绍中,我们要知道Spring的核心有两部分: • IoC:控制反转