method

spring之为什么要使用AOP(面向切片编程)?

倖福魔咒の 提交于 2020-01-07 15:51:20
需求1-日志:在程序执行期间追踪正在发生的活动; 需求2-验证:希望计算器只处理正数的运算; Calculator.java package com.gong.spring.aop.helloworld; public interface Calculator { int add(int i, int j); int sub(int i, int j); int mul(int i, int j); int div(int i, int j); } CalculatorImpl.java package com.gong.spring.aop.helloworld; public class CalculatorImpl implements Calculator{ @Override public int add(int i, int j) { System.out.println("add begin"); // TODO Auto-generated method stub int result = i+j; System.out.println("add end"); return result; } @Override public int sub(int i, int j) { System.out.println("sub begin"); // TODO Auto

MDX Procedure Based on .NET

↘锁芯ラ 提交于 2019-12-31 05:00:52
MDX script in SSAS provides strong functions for multidimensional data analysis, however many problems are hard to solve with MDX actually. Because not all the problems can be cope with MDX script. In other words, these problems will be solved by coding way easily. MDX procedure is supported by all the .NET languages. namespace CustomAnalysisAssembly { public class SPDemo { public static double SalesDifference( double firstVal, double secondVal) { return secondVal – firstVal; } } } The .NET MDX procedure can be used when a assembly that contain the specific procedure is deployed into the

fastjson与多级泛型(一)

霸气de小男生 提交于 2019-12-28 14:38:55
1.问题背景 知道方法的Method和方法的响应字符串,将字符串转换为returnType。Method可能包含多级泛型 2.核心内容 method.getGenericReturnType 获取方法返回类型泛型类 ParameterizedTypeImpl 记录泛型嵌套关系 3.基本思路 先利用getGenericReturnType 获取方法返回类型泛型类,然后对返回的Type做判断,分两部分进行处理。核心代码如下: public static Object transfer1(String req,String className,String methodName ) throws Exception{ Class clazz=Class.forName(className); Method method=clazz.getDeclaredMethod(methodName); Type type=method.getGenericReturnType(); if(type instanceof ParameterizedType){ ParameterizedType type1=(ParameterizedType) type; ParameterizedTypeImpl beforeType = new ParameterizedTypeImpl(type1

Unity 编辑器扩展之反射重载的私有方法

陌路散爱 提交于 2019-12-23 09:27:02
效果: 直接上菜了喂 using System; using System.Reflection; using UnityEditor; using UnityEngine; public class MyReflection : EditorWindow { /* * 反射获取私有方法 */ [MenuItem("MyEditor/反射/MyReflectionTest/GetName()")] public static void Execute() { Type type = typeof(MyReflectionTest); object obj = Activator.CreateInstance(type); MethodInfo method = type.GetMethod("GetName", BindingFlags.NonPublic | BindingFlags.Instance,null, CallingConventions.Standard, new Type[] { },null); method.Invoke(obj,null); } [MenuItem("MyEditor/反射/MyReflectionTest/GetName(string name)")] public static void Execute1() { Type type =

ObjC Runtime 黑魔法 — Method Swizzling

老子叫甜甜 提交于 2019-12-22 18:45:06
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 适用情境 项目中大量控制器需要在载入时进行日志统计或进行类似的处理。如果直接往所有控制器中进行代码编写,会产生大量的重复的代码,降低了代码后期的可读性,不利于维护。由于所有部分的逻辑代码相同,针对这种情况,以切面编程(AOP)思想为导向,利用 Method Swizzling 能极大降低这种(日志统计)非主要逻辑代码与控制器的耦合度。 AOP概念详解(摘自百度百科) 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。 通过Demo来学习(MethodSwizzling_Demo) 1. 创建一个空工程,再为工程中的 ViewController类创建一个分类(Logging)。 2. 在ViewController 中重载 viewDidAppear: 方法。 - (void)viewDidAppear:(BOOL)animated { [super

python 中_ 与__ 与__xxxx__的区别

…衆ロ難τιáo~ 提交于 2019-12-22 11:51:51
_xx 单下划线开头 Python中没有真正的私有属性或方法,可以在你想声明为私有的方法和属性前加上单下划线,以提示该属性和方法不应在外部调用.如果真的调用了也不会出错,但不符合规范. Python中不存在真正的私有方法。为了实现类似于c++中私有方法,可以在类的方法或属性前加一个“_”单下划线,意味着该方法或属性不应该去调用,它并不属于API。 #!/usr/bin/env python # coding:utf-8 class Test(): def __init__(self): pass def _one_underline(self): # 定义私有方法,都只能被类中的函数调用,不能在类外单独调用 print("_one_underline") def __two_underline(self): # 防止类被覆盖,都只能被类中的函数调用,不能在类外单独调用 print("__two_underline") def output(self): self._one_underline() self.__two_underline() if __name__ == "__main__": obj_test=Test() obj_test.output() ''' #输出结果为: localhost:attempt_underline a6$ python undeline

Java 动态代理

此生再无相见时 提交于 2019-12-22 00:02:54
Java的动态代理 例子: 1.Subject接口 public interface Subject { public void doSomething(); public void callHome(); } 2.Subject的实现类RealSubject public class RealSubject implements Subject { public void doSomething() { System. out .println( "call doSomething()" ); } public void callHome() { System. out .println( "call home" ); } } 3.动态代理类DynamicProxy import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; public class DynamicProxy implements InvocationHandler { private Object proxied ; public DynamicProxy(Object proxied) { this . proxied = proxied; }

Ruby Block/Procedure/Lambdas/Method/Symbol

China☆狼群 提交于 2019-12-20 19:42:09
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 参考文档 Understanding Ruby Blocks, Procs and Lambdas The Difference Between Ruby Symbols and Strings Block 和 Procedure 这个在上一篇文章中已经记录,Block其实就是Procedure,只是没有变量指向它不可复用。 def show_type(&obj) puts obj.class end show_type {} # => Proc Lambdas Ruby通过以下方式支持lambda方式: def lambda_call(lam) lam.call end lambda_call lambda{puts "lambda"} Method Ruby 还可以直接调用method对象: def generic_return(block) block.call end def method_demo puts "method" end generic_return method(:method_demo) # =》 method Block、Proc和Lambda、Method的区别 Lambda和Method的执行是方法栈的调用,而Block或Proc实际行为是类似于迁入代码中的一个代码块,如下:

浅谈Ruby中的block, proc, lambda, method object的区别

江枫思渺然 提交于 2019-12-20 19:27:53
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 前言 当大家在百度中搜索“block proc lambda”的时候,会出来很多关于这几个概念之间区别的介绍,既然搜索结果中已经有了这些介绍,那为什么还要写这篇文章? 相信看过百度搜索结果中排名靠前的几篇文章的同学,都会发现其实这些文章并没有很好的说明他们之间区别是什么,大多只是介绍各自的用法,加上些许的区别,即使个别介绍了一些区别,也不够系统,不够深入。 正是基于上述原因,才酝酿了本文。本文以简单示例的方式,详细的介绍了它们之间的区别。相信您阅读完本文,一定会豁然开朗,并在今后的开发中准确并优雅的使用它们。 由于时间,个人能力水平等有限,本文难免有错误或缺失之处,欢迎不吝指出。 block & proc 在介绍它们的区别之前,我们先来看一段有关block的简单使用方法: def use_yield yield end use_yield do puts 'use yield' end def use_block_call(&block) block.call end use_block do puts 'use block call' end 以上介绍了两种在函数中使用block的方式,第一种是通过yield来使用block,另外一种则是通过block.call来使用block。

Spring面向切面编程(AOP)

孤人 提交于 2019-12-17 08:30:19
1 spring容器中bean特性 Spring容器的javabean对象默认是单例的。 通过在xml文件中,配置可以使用某些对象为多列。 Spring容器中的javabean对象默认是立即加载(立即实例化:spring加载完成,立即创建对象) scope:属性 singleton:默认值为单例,默认也是立即加载,在加载完成spring容器的时候,bean对象已经创建完成 prototype:多例的,默认懒加载,spring容器加载完成的时候,不会创建bean的对象,只有从容器获得bean对象的时候,才进行bean对象的实例化 request: 将创建的javabean对象,封装到request范围 session:将创建的javabean对象,封装到session范围 Spring容器bean的对象生命周期: Bean对象的创建一直到销毁为bean的生命周期。 生命周期的开始: 如果为单例,由加载完spring容器开始 如果为多例,由从容器获得bean对象开始 实例化 初始化 服务 销毁(单例:关闭容器的时候,多例由jvm自动回收) 2 spring的AOP面向切面编程 2.1 模拟银行转账业务 需求:实现银行的转账功能,在转账的时候需要完成 1 身份认证(登陆) 2 权限的验证 3 转账实现 4 历史交易记录, 分析:1,2,4三个功能对于银行的业务,属于公共的功能(共性的功能