实例化

Spring知识点小结

≯℡__Kan透↙ 提交于 2020-01-07 13:52:00
1.Spring是什么? Spring是一个轻量级的IoC和AOP容器框架。目的是用于简化企业应用程序的开发,它使得开发者只需要关心业务需求。常见的配置方式有三种:基于XML的配置、基于注解的配置、基于Java的配置。 主要由以下几个模块组成: Spring Core:核心类库,提供IOC服务; Spring AOP:AOP服务; Spring Context:提供框架式的Bean访问方式; Spring DAO:对JDBC的抽象,简化了数据访问异常的处理; Spring ORM:对现有的ORM框架的支持; Spring Web:提供了基本的面向Web的综合特性,例如多方文件上传; Spring MVC:提供面向Web应用的Model-View-Controller实现。 2、Spring 的优点? spring属于低侵入式设计,代码的污染极低; spring的DI机制将对象之间的依赖关系交由框架处理,减低组件的耦合性; Spring提供了AOP技术,支持将一些通用任务,如安全、事务、日志、权限等进行集中式管理,从而提供更好的复用。 spring对于主流的应用框架提供了集成支持。 3.Spring的AOP理解: AOP,一般称为面向切面,作为面向对象的一种补充,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被命名为“切面”

浅析vue封装自定义插件

大憨熊 提交于 2020-01-07 13:07:56
  在使用vue的过程中,经常会用到Vue.use,但是大部分对它一知半解,不了解在调用的时候具体做了什么,因此,本文简要概述下在vue中,如何封装自定义插件。   在开始之前,先补充一句,其实利用vue封装自定义插件的本质就是 组件实例化的过程或者指令等公共属性方法的定义过程 ,比较大的区别在于封装插件需要手动干预,就是一些实例化方法需要手动调用,而Vue的实例化,很多逻辑内部已经帮忙处理掉了。 插件相对于组件的优势就是插件封装好了之后,可以开箱即用,而组件是依赖于项目的 。对组件初始化过程不是很熟悉的可以参考 这篇博文 。     我们从vue源码中,可以看到Vue.use的方法定义如下:  Vue.use = function (plugin: Function | Object) { const installedPlugins = (this._installedPlugins || (this._installedPlugins = [])) // 已经存在插件,则直接返回插件对象 if (installedPlugins.indexOf(plugin) > -1) { return this } // additional parameters const args = toArray(arguments, 1) args.unshift(this) //

离线安装和实例化fabric java chaincode

醉酒当歌 提交于 2020-01-06 21:52:09
离线安装和实例化fabric java chaincode 需求 hyperledger fabric由于其本身的特性,目前主要应用于大型国企和银行,其环境的部署一般是与外部网络隔离的。如果采用docker的部署方式,docker镜像可以通过导入即可,但是在安装和实例化的时候需要下载相应的依赖,而且在1.4的环境中,fabric实例化链码需要使用到shadowJar插件。 解决方案 目前网上能找到的解决方案是修改javaenv镜像的dockerfile,将shadowJar插件的依赖直接在生成javaenv镜像文件的时候加载。我在测试这种方法的时候发现在重新生成javaenv镜像文件的时候会缺少一些文件,导致生成的镜像不可用。 参考文章地址: http://www.bubuko.com/infodetail-3024199.html 于是我决定直接将所有的依赖copy到项目目录下: build.gradle 文件内容: plugins { id 'com.github.johnrengelman.shadow' version '2.0.3' id 'java' } group 'org.hyperledger.fabric-chaincode-java' version '1.0-SNAPSHOT' sourceCompatibility = 1.8 repositories {

c++模板显示实例化,显示具体化,隐式实例化

↘锁芯ラ 提交于 2020-01-06 20:54:32
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 函数模板是C++新增的一种性质,它允许只定义一次函数的实现,即可使用不同类型的参数来调用该函数。这样做可以减小代码的书写的复杂度,同时也便于修改(注:使用模板函数并不会减少最终可执行程序的大小,因为在调用模板函数时,编译器都根据调用时的参数类型进行了相应实例化)。下面来看看函数模板的使用过程: [cpp] view plain copy struct job { char name[20]; int salary; }; template <class T> //函数模板声明,通用变量类型为T void swap(T &a, T &b); void showJob(const job &a);//打印job内容 using std::cin; using std::cout; using std::endl; void main(void) { int a = 4; int b = 5; cout<<"Before swap a = "<<a<<" b="<<b<<endl; swap(a, b); cout<<"After swap a = "<<a<<" b="<<b<<endl; job jobA = {"coder", 10000}; job jobB = {"manager", 1000}; cout

c++具体化和实例化的区别

馋奶兔 提交于 2020-01-06 20:53:05
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 首先: 区分 非模板函数 模板函数 具体化 非模板函数就是没有template<typename Type> 模板函数就是有template<typename Type>在前面的 template<typename T> void Swap(T &a, T &b) { balabala } 具体化: template <> void Swap<job>(job &1 ,job &2) { 和前面的函数模板的实现是不同的 } 接着,看看实例化和具体化 实例化: 使用模板的特定类型生成函数定义的时候,得到的就是模板的实例 例如: 在main()里面 template void Swap<char>(char&,char&);这个就是显示实例化 在后面可以这样使用: char g,h; Swap(g,h); 也可以不用显示实例化,而使用隐式实例化: short a,b; Swap(a,b);这个就是隐式实例化 来源: oschina 链接: https://my.oschina.net/u/920274/blog/3152442

C++模板之函数模板实例化和具体化

蹲街弑〆低调 提交于 2020-01-06 19:00:03
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 模板声明 template<typename/class T>, typename比class最近后添加到C++标准。 常规模板,具体化模板,非模板函数的优先调用顺序。 非模板函数(普通函数)> 具体化模板函数 > 常规模板 显示具体化: 具体化表示为某一特定的类型重写函数模板,声明的含义是使用独立的,专门的函数定义显示地为 特定类型生成函数定义。 为什么要有显示具体化? 处理模板函数所不能处理的特殊情况。显式具体化显式具体化也是基于函数模板的,只不过在函数模板的基础上,添加一个专门针对特定类型的、实现方式不同的具体化函数。 显示具体化声明在关键字template后包含<>. 如: template<> void swap<job>(job &j1, job &j2); vs2013不支持: void swap(Any &a, Any &b); struct job { char name[40]; double salary; int floor; }; template<> void swap<job>(job &j1, job &j2); void Show(job &j); int main(){ using namespace std; template void swap<job>(job &,

C++函数模板的隐式实例化、显式实例化与显式具体化

一笑奈何 提交于 2020-01-06 18:56:50
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 一、什么是实例化和具体化? 为进一步了解模板,必须理解术语实例化和具体化。 (1)、实例化:在程序中的函数模板本身并不会生成函数定义,它只是一个用于生成函数定义的方案。编译器使用模板为特定类型生成函数定义时,得到的是模板实例。这即是函数模板的实例化。 而函数模板实例化又分为两种类型:隐式实例化和显式实例化 例如: template < typename T > void Swap( T &a, T &b ) { T temp; temp = a; a = b; b = temp; } int main(void) { int a= 1, b = 2; Swap(a, b); Swap<int>(a, b); return 0; } 可以发现,在主函数中有两种Swap函数调用。 第一个Swap(a, b)导致编译器自动识别参数类型生成一个实例,该实例使用int类型,此为隐式实例化。 而第二个Swap<int>(a, b),直接命令编译器创建特定的int类型的函数实例,用<>符号指示类型,此为显式实例化。 (2)、具体化:即显式具体化,与实例化不同的是,它也是一个模板定义,但它是对特定类型的模板定义。显式具体化使用下面两个等价的声明之一: template <> void Swap<int>(int &, int

模板

◇◆丶佛笑我妖孽 提交于 2020-01-04 23:57:21
在我们编写代码时,我们会遇见这种情况: 比如交换函数,当我们要交换的类型是int(传的参数为int型)时,我们要编写的swap函数的形参就应该是int,但当我们要交换的是double型时,我们还要再写一个swap函数来满足要求。每换一种类型就要再重载一个swap函数来满足条件。 虽然通过这方法重载实现所有类型的交换函数,但是这种方法有几个不好的地方,一是重载函数仅仅类型不同,导致代码的复用率很低,只要有新类型出现,就要增加对应的函数;再者代码的可维护性比较低,一个出错可能所有的重载都出错,要一个一个改。 通过上面的例子,我们想能不能告诉编译器一个模子,编译器可以通过不同的类型利用这样的模子自动生成适合各种类型的函数。答案是当然可以 即泛型编程:编写与类型无关的通用代码,而模板是泛型编程的基础。 下面我们来郑重的引入 模板 模板分为函数模板和类模板 函数模板: 什么是函数模板? 函数模板是一个与类型无关,并且对所有类型都适用的函数,在使用时函数可被参数化,根据实参类型结合模板产生函数的特定类型版本实现函数功能。 如何使用? template <typename T1,typename T2...> 返回值 函数名(参数列表){ } typename是用来定义模板参数关键字的,也可以用class 例如: template<typename T> void Swap(T &x, T &y

什么是依赖注入与Ioc容器了

二次信任 提交于 2020-01-04 17:27:31
背景 在很多编程语言(例如java)开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,一旦有修改,牵扯的类会很多。 最早在java的spring提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过spring容器帮我们new指定实例并且将实例注入到需要该对象的类中。目前许多主流PHP框架也使用了依赖注入容器,如ThinkPHP、Laravel等。 一、概念 1、容器:字面上理解就是装东西的东西。常见的变量、对象属性等都可以算是容器。一个容器能够装什么,全部取决于你对该容器的定义。当然,现在我们讨论的是这样一种容器,它存放的不是文本、数值,而是对象、对象的描述(类、接口)或者是提供对象的回调(闭包),通过这种容器,我们得以实现许多高级的功能,其中最常提到的,就是 “解耦”、“依赖注入”。 2、IoC - Inversion of Control 控制反转 控制反转是从容器的角度在描述,即:容器控制应用程序,由容器反向的向应用程序注入应用程序所需要的外部资源。 3、DI - Dependency Injection 依赖注入 依赖注入是从应用程序的角度在描述,可以把依赖注入,即:应用程序依赖容器创建并注入它所需要的外部资源。 备注:依赖注入和控制反转说的是同一个东西,是一种设计模式

Python面向对象编程的三大特性

為{幸葍}努か 提交于 2020-01-03 19:26:02
面向对象编程的三大特性 面向对象的三大特性是指:封装、继承和多态 01对象和类 类(Class) 是现实或思维世界中的实体在计算机中的反映,它将数据以及这些 数据上的操作封装在一起。 对象(Object) 是具有类类型的变量。类和对象是面向对象编程技术中的最基本 的概念。 如何定义类? class 类(): pass 如何将类转换成对象? 实例化 是指在面向对象的编程中,把用类创建对象的过程称为实例化。是将一个抽象的概 念类,具体到该类实物的过程。实例化过程中一般由类名 对象名 = 类名(参数1,参数2…参数n)构成 类(Class) 是是创建实例的模板 对象(Object) 是一个一个具体的实例 # class 类名称: 定义类的方式 class Person : # 占位关键字, 什么也不做 pass print ( Person ) # <class '__main__.Person'> 存储于当前脚本的Person类 # 对象:将类实例化/具体化产生的值 personObj = Person ( ) # <__main__.Person object at 0x7f28164b04d0> # 当前脚本的Person类实例化出来的对象存储的内存地址是0x7f28164b04d0 print ( personObj ) Python中自带的类有: from datetime