object

动态代理

梦想的初衷 提交于 2020-03-05 11:51:36
动态代理我个人理解是 给原对象A添加个代理对象,然后通过代理对象去操纵原对象A, 也就是中介,例如房屋中介 动态代理三个角色 真实对象(A),,代理对象,,抽象对象(接口) 特点是 更灵活,耦合性低,通过一个代理类就可以解决多个真实对象,但是因为单继承,只能来实现接口 原理是 通过反射获取到代理类的class对象,然后获取到构造器,通过构造器获取到代理类的实例 常用的retrofit内部就是通过动态代理来实现的 自己写的,凑合看吧, 哪里有不行的,欢迎指正 //抽象角色 public interface IProxy { void show(String s); } //代理角色 public class ProxySubject implements InvocationHandler{ private static final String TAG = "ProxySubject"; //持有的被代理的对象 public Object object; public void setSubject(Object obj){ object =obj; } //通过代理类 创建代理对象 public Object getInstance(){ return Proxy.newProxyInstance(object.getClass().getClassLoader(),

如何在WPF中绑定反布尔属性?

一个人想着一个人 提交于 2020-03-05 11:32:11
我所拥有的是具有 IsReadOnly 属性的对象。 如果此属性为true,我想将Button上的 IsEnabled 属性(例如)设置为false。 我想相信我可以像 IsEnabled="{Binding Path=!IsReadOnly}" 那样轻松地做到这一点,但是这并不适用于WPF。 我不得不经历所有的风格设置吗? 对于像将一个bool设置为另一个bool的反向那样简单的事情,似乎太过冗长。 <Button.Style> <Style TargetType="{x:Type Button}"> <Style.Triggers> <DataTrigger Binding="{Binding Path=IsReadOnly}" Value="True"> <Setter Property="IsEnabled" Value="False" /> </DataTrigger> <DataTrigger Binding="{Binding Path=IsReadOnly}" Value="False"> <Setter Property="IsEnabled" Value="True" /> </DataTrigger> </Style.Triggers> </Style> </Button.Style> #1楼 您可以使用ValueConverter为您反转bool属性。

2019.6.30 Spring注解 bean后置处理器和属性赋值

断了今生、忘了曾经 提交于 2020-03-05 10:00:45
6.30 BeanPostProcessor是一个接口,用于在bean初始化之前和之后调用。(在bean属性赋值之后) 需要实现其中的2个方法 @Component public class MyBeanPostProcessor implements BeanPostProcessor { @Override public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { System.out.println(beanName+"执行之前!"); return bean; } @Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { System.out.println(beanName+"执行之后!"); return bean; } } 属性赋值 xml文件中可以指定value属性,可以是基本类型的值,可以是springEL表达式(#{}),还可以是配置文件的K/V(${})[需要事先引入context标签库和 <context:property-placeholder

javascript中的类型判断

两盒软妹~` 提交于 2020-03-05 07:46:23
typeof 判断变量的类型 typeof返回值对应 类型 返回值 String "string" Number "number" Boolean "boolean" undefined "undefined" Object "object" function "function" Symbol "symbol" typeof 的不足之处: 1、不能区分对象、数组、正则返回的都是“object” 2、Safar,Chrome7之前的版本对正则对象返回的是“function” 3、在IE6、7、8中,大多数的宿主对象是对象,而不是函数 如:typeof alert 注释:宿主对象:window、document,内置对象:Math、Date等;本地对象: 就是自己申明的对象 instanceof判断实例对象的构造函数是谁 实现原理:实例对象的__proto__这个属性,和构造函数的prototype这个属性是不是同一个引用 作用: 判断实例对象的构造函数是谁 function Student ( name ) { this . name = name ; } var stu = new Student ( '张珊' ) console . log ( stu instanceof Student ) ; // true 说明stu就是Student的实例 console . log

Spring Boot的缓存之旅(二)

橙三吉。 提交于 2020-03-05 03:42:43
使用Redis 1.引入spring-boot-starter-data-redis依赖 2.进行项目文件配置 使用前先启动redis #redis配置 #redis服务器地址 spring.redis.host=localhost #redis服务器端口 spring.redis.port=6379 #数据库配置 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/test?characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true spring.datasource.username=root spring.datasource.password=123456abc ##validate 加载hibernate时,验证创建数据库表结构 ##create 每次加载hibernate,重新创建数据库表结构,这就是导致数据库表数据丢失的原因。 ##create-drop 加载hibernate时创建,退出是删除表结构 ##update 加载hibernate自动更新数据库结构 ##none

Dynamically accessing object property in .map array function [duplicate]

孤人 提交于 2020-03-05 03:21:33
问题 This question already has answers here : Dynamically access object property using variable (15 answers) Closed 2 years ago . i want to have reusable function that maps an array of objects based on property passed as parameter to function. Here's my code: let arr = [ { country: 'poland', population: 380000 }, { country: 'bangladesh', population: 3492423 } ] function filterMyArr (myArr, condition) { return myArr.map(element => element.country) } console.log(filterMyArr(arr)) When i change code

对象的新增方法

六眼飞鱼酱① 提交于 2020-03-05 01:46:19
Object.is() ES5 比较两个值是否相等,只有两个运算符:相等运算符( == )和严格相等运算符( === )。它们都有缺点,前者会自动转换数据类型,后者的 NaN 不等于自身,以及 +0 等于 -0 。JavaScript 缺乏一种运算,在所有环境中,只要两个值是一样的,它们就应该相等。 ES6 提出“Same-value equality”(同值相等)算法,用来解决这个问题。 Object.is 就是部署这个算法的新方法。它用来比较两个值是否严格相等,与严格比较运算符(===)的行为基本一致。 Object.is('foo', 'foo') // true Object.is({}, {}) // false 不同之处只有两个:一是 +0 不等于 -0 ,二是 NaN 等于自身。 +0 === -0 //true NaN === NaN // false Object.is(+0, -0) // false Object.is(NaN, NaN) // true ES5 可以通过下面的代码,部署 Object.is 。 Object.defineProperty(Object, 'is', { value: function(x, y) { if (x === y) { // 针对+0 不等于 -0的情况 return x !== 0 || 1 / x === 1 /

AOP面试知识整理,^_^-包括spring Aop

妖精的绣舞 提交于 2020-03-04 23:50:07
讲到java企业级开发框架,就不可避免的讲到 IOC,AOP,MCV   今天面试时被问到AOP,讲的很乱,这里整理笔记,包括AOP,spring-AOP的部分知识,错误的地方请小伙伴指出来. 谈谈你对AOP的理解: AOP概念(Aspect-Oriented Programming): 即面向切面编程,与OOP(Object - Oriented Programming,面向对象编程)相辅相成,AOP的基本单元为Aspect(切面),Struts2 的拦截器设计就是基于AOP的思想。 AOP原理: 大型系统中的 通用的服务型的代码会穿插在各个业务类 ,方法中,随着系统规模的增大,会造成 大量的代码重复 ,,且与核心代码没有太多的关系。 系统中的业务可分为 核心关注点和横切关注点 , 核心关注点是业务处理的主要流程,横切关注点是与核心业务无关的通用业务。如日志权限 等,各个横切点离散的穿插与核心业务中。导致系统中的每一个模块代码都与这些业务具有很强的依赖性,当需要添加横切功能时,需要大幅修改已有的代码。 AOP即解决这个问题, 使用AOP框架,能够将这些影响多个类的通用性服务抽取出来,(即切面) ,并通过 配置的方式明确在那些位置插入这些服务, 系统运行后,AOP框架在指定的时机自动运行这些服务,从而达到核心业务逻辑和服务性逻辑分离的目的,减少了重复代码的

C#:装箱和拆箱相关知识整理

大兔子大兔子 提交于 2020-03-04 21:56:02
1、装箱和拆箱是一个抽象的概念 2、 装箱是将 值类型 转换为 引用类型 ;   拆箱是将 引用类型 转换为 值类型    利用装箱和拆箱功能,可通过允许值类型的任何值与Object 类型的值相互转换,将值类型与引用类型链接起来 例如: int val = 100; object obj = val; Console.WriteLine (“对象的值 = {0}", obj); 这是一个装箱的过程,是将 值类型 转换为 引用类型 的过程 int val = 100; object obj = val; int num = (int) obj; Console.WriteLine ("num: {0}", num); 这是一个拆箱的过程,是将 值类型 转换为 引用类型 ,再由 引用类型 转换为 值类型 的过程 注:被装过箱的对象才能被拆箱 3、.NET中,数据类型划分为值类型和引用(不等同于C++的指针)类型,与此对应,内存分配被分成了两种方式,一为栈,二为堆( 注意:是托管堆 ) 值类型只会在栈中分配。 引用类型分配内存与托管堆。 托管堆对应于垃圾回收。 4: 装箱/拆箱是什么? 装箱 :用于在垃圾回收堆中存储值类型。装箱是值类型到 object 类型或到此值类型所实现的任何接口类型的 隐式转换 。 拆箱 :从 object 类型到值类型或从接口类型到实现该接口的值类型的 显式转换

js 垃圾回收机制

天大地大妈咪最大 提交于 2020-03-04 21:33:21
垃圾回收是编程语言必不可少的环节,当一个变量被定义时,会在系统中分配一个内存来储存变量的值,而当这个变量不在使用的时候就需要对变量进行回收,释放内存。 如果垃圾不进行回收就会照成内存泄露的情况,内存泄露可能会导致卡顿或者崩溃。 在编程语言中,c 语言需要手动对垃圾进行回收,而java 和 javascript 系统会自动进行垃圾回收。 javascript 中的垃圾回收机制有两种: 一、 引用计数   引用计数回收机制是通过对一个值的引用次数进行统计,当这个值被付给一个变量时会给这个值标记为引用一次,如果这个值在被付给另外一个变量,则会给这个变量标记为引用两次。当这个值的引用次数为0时,下次垃圾回收时会把这个值进行回收。   但是引用计数垃圾回收机制有个问题,就是循环引用,导致垃圾不能被回收。 1 function problem () { 2 var objectA = new Object(); 3 var objectB = new Object(); 4 5 objectA.someOtherObject = objectB; 6 objectB.anotherObject = objectA; 7 } 8 9 problem(); 上面为《JavaScript 高级程序设计》中的一个例子。 当执行problem 函数时创建一个objectA 变量指向一个空的Object