配置_配置线 - CSDN
  • 神经网络学习小记录42——windows下的tensorflow-gpu=1.13.2环境配置学习前言环境内容Anaconda安装下载Cudnn和CUDA配置tensorflow环境安装VSCODE 学习前言 好多人问环境怎么配置,还是出个教程吧。 环境内容 ...

    神经网络学习小记录42——windows下的tensorflow-gpu=1.13.2环境配置

    学习前言

    好多人问环境怎么配置,还是出个教程吧。
    在这里插入图片描述

    环境内容

    tensorflow-gpu:1.13.2
    keras:2.1.5
    numpy:1.17.4

    Anaconda安装

    最新版本的Anaconda没有VSCODE,如果大家为了安装VSCODE方便可以直接安装旧版的Anaconda,百度网盘连接如下。也可以装新版然后分开装VSCODE。
    链接: https://pan.baidu.com/s/12tW0Oad_Tqn7jNs8RNkvFA
    提取码: i83n

    取网上搜索Anaconda的官网:https://www.anaconda.com/distribution/
    在这里插入图片描述
    下载左边的python3.7版本,64位的,下载完成后打开:
    在这里插入图片描述
    选择安装的位置,可以不安装在C盘。
    在这里插入图片描述
    我选择了Add Anaconda to my PATH environment variable,我用起来觉得更好用。
    在这里插入图片描述
    等待安装完之后,就安装了Anaconda了。

    下载Cudnn和CUDA

    我这里使用的是tensorflow-gpu=1.13.2,因此会用到cuda10.0,与cuda10.0对应的cudnn是7.4.1.5,这个组合我实验过了,绝对是可以用的。

    cuda10.0官网的地址是:
    cuda10.0官网地址
    cudnn官网的地址是:需要大家进去后寻找7.4.1.5。
    cudnn官网地址

    官网下载是比较慢的,可以在百度云上下载,我给大家分享一手。

    链接: https://pan.baidu.com/s/1znYSRDtLNFLufAuItOeoyQ
    提取码: 8ggr

    下载完之后得到这两个文件。

    在这里插入图片描述
    在这里插入图片描述
    下载好之后可以打开cuda_10的exe文件进行安装。
    在这里插入图片描述
    这里选择自定义。
    不
    然后直接点下一步就行了。
    在这里插入图片描述
    安装完后在C盘这个位置可以找到根目录。
    C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0
    然后大家把Cudnn的内容进行解压。
    在这里插入图片描述
    把这里面的内容直接复制到C盘的根目录下就可以了。
    在这里插入图片描述

    配置tensorflow环境

    Win+R启动cmd,在命令提示符内输入以下命令:

    conda create –n tensorflow-gpu python=3.6
    
    activate tensorflow-gpu 
    
    pip install tensorflow-gpu==1.13.2
    
    pip install keras==2.1.5
    

    需要注意的是,如果在pip中下载安装比较慢可以换个源,可以到用户文件夹下,创建一个pip文件夹,然后在pip文件夹里创建一个txt文件。
    在这里插入图片描述
    修改txt文件的内容,并且把后缀改成ini

    [global]
    index-url = http://pypi.mirrors.ustc.edu.cn/simple
    [install]
    use-mirrors =true
    mirrors =http://pypi.mirrors.ustc.edu.cn/simple/
    trusted-host =pypi.mirrors.ustc.edu.cn
    

    在这里插入图片描述
    在这里插入图片描述
    全部安装完成之后重启电脑。

    安装VSCODE

    我个人喜欢VSCODE……所以就安装它啦。
    打开anaconda,切换环境。
    在这里插入图片描述
    安装VSCODE,安装完就可以launch一下了,之后就可以把VScode固定到任务栏上,方便打开。
    在这里插入图片描述
    最新版本的Anaconda没有VSCODE因此可以直接百度VSCODE进行安装。

    安装完成后在左下角更改自己的环境就行了。
    在这里插入图片描述

    展开全文
  • k8s部署配置中心

    2020-05-22 14:38:58
    本文假设您已经完成了 在Kubernetes上部署配置中心教程的前序步骤 配置中心项目搭建 构建docker镜像并推送到仓库 kuboard注册中心集群部署 部署配置中心 在 Kuboard 界面中进入 ocp 名称空间,并点击页头的按钮 ...

    本文假设您已经完成了 在Kubernetes上部署配置中心教程的前序步骤

    部署配置中心

    在 Kuboard 界面中进入 test 名称空间,并点击页头的按钮 创建工作负载,如下图所示:

    填写表单:

    字段名称 填写内容 备注
    服务类型 StatefulSet
    服务分层 中间件
    服务名称 config
    服务描述 配置中心
    副本数量 3
    容器名称 config-server
    镜像 harbor.hld.com/test/config:latest harbor镜像仓库镜像地址
    抓取策略 Always
    环境变量 eureka.client.service-url.defaultZone=http://cloud-eureka-0.cloud-eureka.test.svc.cluster.local:1111/eureka,http://cloud-eureka-1.cloud-eureka.test.svc.cluster.local:1111/eureka,http://cloud-eureka-2.cloud-eureka.test.svc.cluster.local:1111/eureka 填入 kuboard 时环境变量名后面不带 =
    Service NodePort:协议 TCP 服务端口 8991节点端口 31991 容器端口 8991 可从节点端口访问
    Ingress 域名:xxxxx 路由配置: 映射URL / 服务端口 8991 可通过域名访问

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    • 保存、应用。然后等待完成

    验证

    eureka-server 界面如下图所示:
    在这里插入图片描述

    展开全文
  • 前言:刚开始是不打算写这篇博客的,但是我最近为了完成对老师布置的区域生长算法,强行要配置一波opencv,因为换了电脑,所以选择了有黑黑主题酷酷的VS2017,但无奈网上的博客关于vs2017配置Opencv不够全(vs2010...

     

    前言:刚开始是不打算写这篇博客的,但是我最近为了完成对老师布置的区域生长算法,强行要配置一波opencv,因为换了电脑,所以选择了有黑黑主题酷酷的VS2017,但无奈网上的博客关于vs2017配置Opencv不够全(vs2010配置opencv的倒是贼多!),我当时是看了将近10篇文章才配置成功,所以在此我来从一个新入坑的角度来说一下怎么完整的配置一个OPencv!下面就分步来进行说明吧!

    注意:不是博主这个版本的opencv本教程也是实用的,只需要改一点点东西就行,后面会进行提示!

     

    第一步:下载opencv安装包

    下载的途径有三种:

    1、官网下载

    在此,说明一下,没有必要去根据博主 的博客下载与博客相应的版本,其实只需要改一点点东西即可,后面进行说明,官网下载真的是贼头大,首先下载好好的突然说下载中断,而且无法恢复,此外,还慢,毕竟外网,没有办法。一个安装包大概100多M,而下载速度只有50多K(校园网20K,对面宿舍宽带50K),所以最后我实在无法忍受,已经失败了N次,时间紧,就没必要在这一棵树上撞死。

    但是网好的朋友也可以试试,在此我给出官网的网址,大家可以根据自己情况选择合适的版本(我的是3.4.1版本)

    网址:https://opencv.org/releases.html#

     

     

    2、网上资源

    靠谱的是CSDN等博主提供的安装包,但是是要C币的,我一般不会充值的,所以如果条件允许的话可以选择这个

    https://download.csdn.net/download/yu2439/10369150?utm_source=bbsseo(其中的一个网址)

    还有一个建议就是不要去尝试在一些钓鱼网站去下载opencv,我上回为了下载一个matlab破解版,虽然一路小心翼翼,最终下载了将近7、8个捆绑软件,连卸载时也给我加两个。。。。

     

    3、身边同学或者一起搞编辑的朋友们啊

    我的opencv就来自我对面宿舍的同学,他在官网下载成功了,直接用U盘拷过来用,还不是美滋滋,在此我给个百度网盘链接:opencv3.41

     

    二、解压下载文件

     

    双击下载好的或者拷好的安装包,选择解压路径后点Extract即可完成解压,解压后会自动生成一个opencv的文件夹(图2)

    图3中的文件夹如果配置环境比较多的筒子们还是非常眼熟的。

     

    第三步:配置系统变量(WIN10)

    1、找到此电脑(图4)

    2、右键->属性->高级系统设置->环境变量

    找到系统变量中的path变量,双击它,点击新建,将你解压的opencv文件夹中的***opencv\build\x64\vc14\bin路径添加到当中。这里我是选择了vc14这个子文件夹,也可以选择15,但后面要做出相应调整,所以不妨就vc14咯!

    注意:路径粘贴后记得点确定,并在外面点能点的确定全点选一遍!

     

    详细操作可看下图!

     

     

     

     

     

     

     

     

    以上完成了系统变量的配置,其实不是特别复杂,说简单点就是拷贝个路径

     

     

    第四步:相关文件的配置

     

    注意:网上很多教程没有这一步,会报那种找不到dll文件的错误,是因为没有将opencv里面的相关文件复制到C盘中的文件夹里面

    操作方法:将bin目录下面的opencv_world341.dll和opencv_world341d.dll文件复制到C:\Windows\SysWOW64这个文件夹里面即可

    将bin目录里面的opencv_ffmpeg341_64.dll复制到C:\Windows\System32这个文件夹里面(详细看图)

    如果是opencv其他的版本,把对应的dll文件移动到上述两个C盘文件夹即可!

     

     

     

     

     

     

     

    第五步:进入VS2017配置属性管理器进行相关配置

     

    1、新建一个项目,我这里建了一个空项目

    2、进入属性管理器,菜单栏->视图->其他窗口->属性管理器

    3、对Debug|X64进行配置,右键Microsoft.Cpp.x64.user,点击属性

    4、这里我们对属性中的 VC++目录->包含目录和VC++目录->库目录进行添加相关路径,对 链接器->输入->附加依赖项进行添加相关路径

    5、包含目录中加入

    F:\OPENCV\opencv\build\include

    F:\OPENCV\opencv\build\include\opencv

    F:\OPENCV\opencv\build\include\opencv2

    库目录中加入

    F:\OPENCV\opencv\build\x64\vc14\lib

    6、链接器->输入->附加依赖项中加入

    opencv_world341d.lib

    注意:博主后面了解到release|X64的配置为可选项,后面也有热心读者提醒,所以下面的这一步可以不做,因为编译时只用到了debug,release是发布程序时才会用到。

    //7、对Release|X64进行配置,右键Microsoft.Cpp.x64.user,点击属性

    //链接器->输入->附加依赖项中加入

    //opencv_world341.lib

    注意:如果是opencv其他版本,只需要将将上述的依赖项文件稍作修改即可;eg:如果是opencv版本3.4.0,只需要将dll名字改为opencv_world340d.lib即可,依次类推!

     

     

     

    第六步:勾选微软符号服务器(此步为可选项)

    其实到上一步已经配好了,但是到了关键时候VS2017总是说我少各种dll文件,百度上面说不用理这种错误,可以选择勾选微软符号服务器来下载缺失的dll文件

    操作步骤:左键调试->选项->常规 勾选启动源服务器支持

    符号那一项勾上微软符号服务器

    注意:可以用一个文件夹来缓存下载的dll文件,只是第一次加载,不用担心。或者,你也可以等加载完了之后,再把之前勾选的取消掉,也没有问题。 我建了一个文件夹(文件夹是我自己建的),后面发现它下载了很多pdb文件!

     

     

     

     

    注意:到上面所有工作,opencv已经配完了,注意解决方案平台那一栏要换成X64(因为我们一直都在配X64)

     

    第七步:测试环节!

    注意:由于很多人遇到图片无法输出的情况,在此特地添加一条需要注意的事项,读入图片路径时有两种方法。

    (1)绝对路径

    eg:Mat img = imread("F:\\suoxiaotu\\poyanghu缩小图.tif");

    注意这个地方的双斜杠很重要,直接弄过来的图片途径是只有一个斜杠的,两个斜杠的原因应该是第一个斜杠是转义字符。

    (2)图片路径

    eg:Mat img = imread("poyanghu缩小图.tif");

    这个地方有两点需要注意:第一个就是大家的图片格式一定要分清楚,建议自己右键查看目标图片的属性,另一个就是要注意这样做的前提条件就是你的图片就在你所建工程的目录下。不然会显示找不到图片。

    #include <iostream>  
    #include <opencv2/core/core.hpp>  
    #include <opencv2/highgui/highgui.hpp>  
    
    using namespace cv;
    
    int main()
    {
    	// 读入一张图片(poyanghu缩小图)    
    	Mat img = imread("F:\\suoxiaotu\\poyanghu缩小图.tif");
    	// 创建一个名为 "图片"窗口    
    	namedWindow("图片");
    	// 在窗口中显示图片   
    	imshow("图片", img);
    	// 等待6000 ms后窗口自动关闭    
    	waitKey(6000);
    	return 0;
    }

     

    输出:

     

    以上,配置完成!

    [-_-]眼睛累了吧,注意劳逸结合呀[-_-]

    ”若您愿意的话,请博主喝杯咖啡呗“

     

    下面是交流群,大家可以互相交流交流经验,互相解决配置遇到的问题,互相学习,不只是opencv!群号:830792425

    (2019年2月6号更新)可以说,博主这一篇文章就解决了我绝大多数问题!唯一补充的一点是,我用博主的方法,在运行代码的时候,发现waitKey(6000);这个函数结束后,其申请的内存没有正常释放,所以会引发异常。所以需要在这句的后面加上destroyAllWindows();实现内存的手动回收 @jerryNYX

     

    (2019年3月4号更新)加载符号遇到问题的朋友:“第六步勾选微软服务器”可以省略,把勾取消掉就能运行了,不然会卡住。希望对大家有帮助。@æ°å:

    (2019年4月22号更新)  谢谢博主,除了release部分我没有配置以外,其他部分按照博主的方法配置成功了。谢谢。@blackkkkk

    (2019年5月8日更新)小白成功了!非常感谢楼主!我遇到的问题“无法打开PDB文件”或者是“图像显示出来是灰色”的可能解决方法是:Debug|X64只放opencv_world341d,Release|X64只放opencv_world341 @https://me.csdn.net/weixin_40288785

    (2019年5月9日更新)主要针对CSDN编辑器的bug(给我的博客增加了好多空格,强迫症受不了),另外为方便阅读,将所有图片全部居中。

    展开全文
  • VLAN的基本配置

    2018-12-23 16:59:01
    (2)掌握vlan的配置方法、VLAN划分和Trunk链路的配置; (3)理解通过三层交换机实现VLAN间通信的工作原理,理解通过单臂路由方式实现VLAN间通信的工作原理,理解路由在不同网络间通信的作用。 ...

    实验目的:

    (1)了解vlan的用途、工作原理和几种实现技术;

    (2)掌握vlan的配置方法、VLAN划分和Trunk链路的配置;

    (3)理解通过三层交换机实现VLAN间通信的工作原理,理解通过单臂路由方式实现VLAN间通信的工作原理,理解路由在不同网络间通信的作用。

     

    实验要求:

    (1)交换机上连接两台主机,测试主机联通性;

    (2)在交换机上分别创建两个vlan,并为它们分配相应的端口,测试vlan内连通性和vlan间连通性;

    (3)利用交换机的三层功能,实现VLAN间的路由,用ping测试其连通性;

    (4)使用路由器的快速以太网接口以及802.1Q封装实现vlan间通信。

     

    要求:画出拓扑图,写出路由器、交换机的配置命令,写出为PC机设置的IP地址及测试情况。

    一.了解VLAN

    虚拟局域网(VLAN)是一组逻辑上的设备和用户,这些设备和用户并不受物理位置的限制,可以根据功能、部门及应用等因素将它们组织起来,相互之间的通信就好像它们在同一个网段中一样,由此得名虚拟局域网。Vlan的实现技术主要又一下四种:基于端口划分的vlan,基于mac地址划分valn,基于网络层划分vlan,根据ip组播划分vlan。

     

    二.网络拓扑图

       1.VLAN的配置

      

       2.两个VLAN间通信

         1.三层交换机

      

    2.路由器

     

    三.配置命令

      ①VLAN建立:全局模式下   vlan  + 1-1005

      ②改变接口模式:接口模式下  switchport mode + 模式

      ③将端口加入到VLAN:接口模式下  switchport access + VLAN  

      ④将端口改变为Trunk模式:接口模式下   switchport mode + trunk

      ⑤为接口封装802.1:接口模式下  switchport trunk encapsulation dot1q

      ⑥启用路由功能:全局模式下  ip routing

      ⑦为配置ip地址:接口模式下  ip address + ip地址 + 子网掩码

      ⑧开启端口:接口模式下  no shutdown

      ⑨虚拟端口:全局模式下 interface fastEthernet 0/0._ _为VLAN号

      ⑩封装802.1:Router(config-subif)#  encapsulation dot1Q +VLAN号

     

    四.准备和测试

       1.设置ip地址,子网掩码,网关

         

       2.ping命令

       

     

     

     

     

    实验过程描述

    • VLAN的配置
    1. 设置(四台pc机按上述拓扑配置)

    2.配置(两台交换机配置均相同)

    ①创建VLAN 10:

    Switch(config)#vlan 10

    Switch(config-vlan)#name MGY_10

    ②创建VLAN 20:  

    Switch(config)#vlan 20

    Switch(config-vlan)#name MGY_20

    ③将 fa 0/1 加入VLAN 10:

    Switch(config)#interface fastEthernet 0/1

    Switch(config-if)#switchport mode access

    Switch(config-if)#sw access vlan 10

    ④将 fa 0/2 加入VLAN20:

    Switch(config)#interface fastEthernet 0/2

    Switch(config-if)#switchport mode access

    Switch(config-if)#sw access vlan 20

    ⑤将 fa 0/3设置成trunk模式 :

    Switch(config)#interface  fastEthernet 0/3

    Switch(config-if)#switchport mode trunk

    Switch(config-if)#exit

    ⑥结果

    3.测试

    • VLAN间的通信

    三层交换机:

    1. 设置(四台交换机按上述拓扑配置)

    1. 配置(两台二层交换机配置相同)

    ①配置Switch2

    1.创建VLAN10:

    Switch(config)#vlan 10

    Switch(config-vlan)#name MGY_10

    2.创建VLAN20:

    Switch(config)#vlan 20

    Switch(config-vlan)#name MGY_20

    3.将fa 0/3设置成trunk:

    Switch(config)#interface  fastEthernet 0/3

    Switch(config-if)#switchport mode trunk

    4.将fa 0/1 加入VLAN10

    Switch(config)#interface fastEthernet 0/1

    Switch(config-if)#switchport mode access

    Switch(config-if)#sw access vlan 10

    5.将fa 0/2 加入VLAN20

    Switch(config)#interface fastEthernet 0/2

    Switch(config-if)#switchport mode access

    Switch(config-if)#sw access vlan 20

          6.结果

          

    ②配置Switch3

      配置步骤同上配置Switch2。

    ③配置Multilayer Switch2

      1.创建VLAN10

    Switch(config)#vlan 10

    Switch(config-vlan)#name MGY_10

      2.创建VLAN20

    Switch(config)#vlan 20

    Switch(config-vlan)#name MGY_20

      3.将 fa0/1 fa0/2改成trunk模式

        Switch(config)#int fa 0/1

    Switch(config-if)#switchport trunk encapsulation dot1q

    Switch(config-if)#switchport mode Trunk

    Switch(config-if)#exit

    Switch(config)#int fa 0/2

    Switch(config-if)#switchport trunk encapsulation dot1q

    Switch(config-if)#switchport mode Trunk

      4.开启路由模式

    Switch(config)#ip routing

      5.创建VLAN接口VLAN10,配置IP地址并开启端口

        Switch(config)#interface vlan 10

    Switch(config-if)#ip address 192.168.2.1 255.255.255.0

    Switch(config-if)#no shutdown

    Switch(config-if)#exit

      6.创建VLAN接口VLAN20,配置IP地址并开启端口

        Switch(config)#interface vlan 20

    Switch(config-if)#ip address 192.168.3.1 255.255.255.0

    Switch(config-if)#no shutdown  

           7.结果

           

       3. 测试

    路由器:

    1.设置(四台交换机按上述拓扑配置)

    2.配置(两台二层交换机)

    ①配置Switch2

    1.创建VLAN10:

    Switch(config)#vlan 10

    Switch(config-vlan)#name MGY_10

    2.创建VLAN20:

    Switch(config)#vlan 20

    Switch(config-vlan)#name MGY_20

    3.将fa 0/3设置成trunk:

    Switch(config)#interface  fastEthernet 0/3

    Switch(config-if)#switchport mode trunk

    4.将fa 0/1 加入VLAN10

    Switch(config)#interface fastEthernet 0/1

    Switch(config-if)#switchport mode access

    Switch(config-if)#sw access vlan 10

    5.将fa 0/2 加入VLAN20

    Switch(config)#interface fastEthernet 0/2

    Switch(config-if)#switchport mode access

    Switch(config-if)#sw access vlan 20

              6.结果

               

    ②配置Switch3

    1.创建VLAN10:

    Switch(config)#vlan 10

    Switch(config-vlan)#name MGY_10

    2.创建VLAN20:

    Switch(config)#vlan 20

    Switch(config-vlan)#name MGY_20

    3.将fa 0/3设置成trunk:

    Switch(config)#interface  fastEthernet 0/3

    Switch(config-if)#switchport mode trunk

    4.将fa 0/1 加入VLAN10

    Switch(config)#interface fastEthernet 0/1

    Switch(config-if)#switchport mode access

    Switch(config-if)#sw access vlan 10

    5.将fa 0/2 加入VLAN20

    Switch(config)#interface fastEthernet 0/2

    Switch(config-if)#switchport mode access

    Switch(config-if)#sw access vlan 20

              6.fa 0/4设置成trunk模式

    Switch(config)#interface  fastEthernet 0/4

    Switch(config-if)#switchport mode trunk

              7.结果

               

    ③配置路由器

    1.开启接口f0/0

    Router(config)#interface f0/0

    Router(config-if)#no shutdown

    2.进入子接口f0/0.10和f0/0.20并配置IP地址

    Router(config)#interface f0/0.10

    Router(config-subif)#encapsulation dot1Q 10

    Router(config-subif)#ip address 192.168.2.1 255.255.255.0

    Router(config-subif)#no shutdown

    Router(config-subif)#exit

    Router(config)#interface f0/0.20

    Router(config-subif)#encapsulation dot1Q 20

    Router(config-subif)#ip address 192.168.3.1 255.255.255.0

    Router(config-subif)#no shutdown

         结果

         

       3. 测试

    三.流量分析

    1.ping 命令开始生成一个报文。

    2.报文到达交换机,由于跨网络通信交换机将报文转发给路由器。

    3.通过路由器,转发进另一个网段。此处路由器相当于网关,连接两个网络。

    4.报文通过交换机发送到目的主机。

    5.目的主机以同样的方法返回相应报文。

    回答问题

    1.说明划分虚拟局域网的意义。

    通过分割,在较大的LAN中创建不同的VLAN,可以抵御广播风暴的影响,同时可以多设置防火墙来大大提高网络的安全性。另外一个是有助于提高工作效率和接入速度。

    2.交换机在配置VLAN前后,冲突域和广播域各有什么不同?

    交换机是一种二层设备,所有的接口组成一个广播域。但是在VLAN配置后,每一个VLAN组成一个广播域。即VLAN是划分广播域的一种技术。

    交换机的每一个接口都是一个独立冲突域,划分后不改变冲突域。

    3. 实现vlan间通信有哪些方法?

    ①通过路由器的不同物理接口与交换机上的每个VLAN分别连接:

    ②通过路由器的逻辑子接口与交换机的各个VLAN连接:

    ③用三层交换机代替路由器实现VLAN间的通信:

        启用交换机的路由功能或者利用某些高端的交换机所支持的专用VLAN功能来实现CLAN间的通信。

    展开全文
  • 一.spring框架的配置一般姿势1.导包2.创建对象3.配置文件(src/applicationContext.xml) 3.1 导入约束 3.2 配置applicationContext.xml文件3.3测试用例二.spring概念1.IOC2.DI3.创建Bean工厂的两种方式 3.1 ...

    一.spring框架的配置一般姿势

    1.导包


    2.创建对象


    3.配置文件(src/applicationContext.xml)

        3.1 导入约束

        

        3.2 配置applicationContext.xml文件


    3.3测试用例


    二.spring概念

    1.IOC


    2.DI


    3.创建Bean工厂的两种方式

        3.1 BeanFactory接口方式(了解,开发时不用),每次在获取对象时才会创建对象。

        3.2 ApplicationContext 每次容器启动时就会创建容器中配置的所有对象。如果从类路径下加载配置文件使用ClassPathXmlApplicationContext("applicationContext.xml");如果从硬盘绝对路径下加载配置文件则使用FileSystemXmlApplicationContext("d:/xxx/xxx/xxx").

          3.3 总结 :web开发中,使用applicationContext. 在资源匮乏的环境可以使用BeanFactory。

    三.spring配置详解

    1.scope属性

        1.1 singleton(默认值):单例对象.被标识为单例的对象在spring容器中只会存在一个实例;

        1.2 prototype:多例原型.被标识为多例的对象,每次再获得才会创建.每次创建都是新的对象.整合struts2时,ActionBean必须配置为多例的.

        1.3 request:web环境下.对象与request生命周期一致.

        1.4 session:web环境下,对象与session生命周期一致.


    2.生命周期属性



    public void init(){
    		System.out.println("生命周期属性之创建");
    	}
    	public void destroy(){
    		System.out.println("生命周期属性之销毁");
    	}

    3.spring创建对象的方式有三

        3.1空参构造方式(配置同前面的测试用例此处不再赘述)

        3.2静态工厂(了解)

          UserFactory.java如下

    public class UserFactory {
    	
    	public static User creatUser(){
    		System.out.println("2.静态工程方式创建对象");
    		return new User();
    	}
    }

    配置文件


    测试方法

    @Test
    	//1.静态工厂方式
        public void fun2(){
    		//1.创建容器对象
    		ApplicationContext ac = new ClassPathXmlApplicationContext("com/auicyh/b_creat/applicationContext.xml");
    		//2.向容器要user对象
    		User user = (User) ac.getBean("user2");
    		//3.打印输出
    		System.out.println(user);
    		
    	}

        3.3实例工厂(了解)

     UserFactory.java

    public class UserFactory {
    	
    	public  User createUser2(){
    		
    		System.out.println("实例工厂创建User");
    		
    		return new User();
    		
    	}
    
    }

    配置文件


    测试代码

    //创建方式3:实例工厂
    	@Test
    	public void fun3(){
    		//1 创建容器对象
    		ApplicationContext ac = new ClassPathXmlApplicationContext("com/auicyh/b_creat/applicationContext.xml");
    		//2 向容器"要"user对象
    		User u = (User) ac.getBean("user3");
    		//3 打印user对象
    		System.out.println(u);
    	}

    4.sping的分模块配置


    四.Spring属性注入的方式

        1.set方法注入

    User.java

    package com.auicyh.bean;
    
    public class User {
    	private String name;
    	
    	private Integer age;
    	private Car car;
    	
    	public Car getCar() {
    		return car;
    	}
    
    	public void setCar(Car car) {
    		this.car = car;
    	}
    	public User() {
    		System.out.println("1.无参构造方法");
    	}
    	public String getName() {
    		System.out.println("getName="+name);
    		return name;
    	}
    	public void setName(String name) {
    		System.out.println("setname="+name);
    		this.name = name;
    	}
    	public Integer getAge() {
    		return age;
    	}
    	public void setAge(Integer age) {
    		this.age = age;
    	}
    	public void init(){
    		System.out.println("生命周期属性之创建");
    	}
    	public void destroy(){
    		System.out.println("生命周期属性之销毁");
    	}
    	
    	@Override
    	public String toString() {
    		return "User [name=" + name + ", age=" + age + ", car=" + car + "]";
    	}
    }
    

    Car.java

    package com.auicyh.bean;
    
    public class Car {
    	private String name;
    	private String color;
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public String getColor() {
    		return color;
    	}
    	public void setColor(String color) {
    		this.color = color;
    	}
    	@Override
    	public String toString() {
    		return "Car [name=" + name + ", color=" + color + "]";
    	}
    }

    配置文件applicationContext.xml


    测试用例


    测试结果


    2.构造函数注入

    构造函数配置


    applicationContext.xml配置


    测试类


    测试结果


    3.构造函数的特殊情况(如果有多个构造函数时,在配置文件中可以通过index和type属性来设置使用的是哪一个构造)

    构造函数


    applicationContext.xml配置


    测试类


    测试结果


    4.p命名空间注入

    applicationcontext.xml中需要导入p的命名空间


    测试类和User类没有发生变化

    测试结果  ------ 从测试结果可以看出p空间注入和set方式注入的机理是一样的。


    5.SPEL表达式注入

    配置文件


    测试结果


    6.复杂类型注入

    CollectionBean.java

    package com.auicyh.c_injection;
    
    import java.util.Arrays;
    import java.util.List;
    import java.util.Map;
    import java.util.Properties;
    
    public class CollectionBean {
    	private Object[] arr;//数组类型注入
    	private List list;//list/set 类型注入
    	private Map map;//map类型注入
    	private Properties prop;//properties类型注入
    	
    	public Object[] getArr() {
    		return arr;
    	}
    	public void setArr(Object[] arr) {
    		this.arr = arr;
    	}
    	public List getList() {
    		return list;
    	}
    	public void setList(List list) {
    		this.list = list;
    	}
    	public Map getMap() {
    		return map;
    	}
    	public void setMap(Map map) {
    		this.map = map;
    	}
    	public Properties getProp() {
    		return prop;
    	}
    	public void setProp(Properties prop) {
    		this.prop = prop;
    	}
    	@Override
    	public String toString() {
    		return "CollectionBean [arr=" + Arrays.toString(arr) + ", list=" + list + ", map=" + map + ", prop=" + prop
    				+ "]";
    	}
    
    }

    配置文件applicationcontext.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd ">
    	<!-- 将User对象交给spring容器管理 -->
    	<!-- Bean元素:使用该元素描述需要spring容器管理的对象
    			class属性:被管理对象的完整类名.
    			name属性:给被管理的对象起个名字.获得对象时根据该名称获得对象.  
    					可以重复.可以使用特殊字符.
    			id属性: 与name属性一模一样. 
    					名称不可重复.不能使用特殊字符.
    			结论: 尽量使用name属性.
    	  -->
    	  <!-- set方法注入 
    	       value 表示注入的是字符串
    	       ref   表示注入的是对象
    	  -->
    	<!-- <bean name="user1" class="com.auicyh.bean.User">
    		值类型注入  :为User对象中的name属性注入值
    		<property name="name" value="ydj"></property>
    		为User对象中的age属性注入值
    		<property name="age" value="30"></property>
    		对象类型注入:为car属性配置Car对象
    		<property name="car" ref="car"></property>
    	</bean> -->
    	<!-- 将car对象配置到容器中 -->
    	<bean name="car" class="com.auicyh.bean.Car">
    		<property name="name" value="劳斯兰斯"></property>
    		<property name="color" value="黑色"></property>
    	</bean>
    	
    <!--                          构造函数注入                                          -->
    	<!-- name属性: 构造函数的参数名 -->
    	<!-- index属性: 构造函数的参数索引 -->
    	<!-- type属性: 构造函数的参数类型-->
    	<bean name="user" class="com.auicyh.bean.User">
    		<constructor-arg name="name" value="999" index="1" type="java.lang.Integer"></constructor-arg>
    		<constructor-arg name="car" ref="car"></constructor-arg>
    	</bean>
    	<!--                           p空间注入     -->
    <!--  p名称空间注入, 走set方法
    	1.导入P名称空间  xmlns:p="http://www.springframework.org/schema/p"
    	2.使用p:属性完成注入
    		|-值类型: p:属性名="值"
    		|-对象类型: p:属性名-ref="bean名称" -->
    		 <bean  name="user3" class="com.auicyh.bean.User" p:name="lucy" p:age="20" p:car-ref="car"  >
    	</bean>
    	<!-- ============================================================= -->
    
    <!-- 
    	spel注入: spring Expression Language sping表达式语言
     -->
    <bean  name="user4" class="com.auicyh.bean.User" >
    		<property name="name" value="#{user3.name}" ></property>
    		<property name="age" value="#{user3.age}" ></property>
    		<property name="car" ref="car" ></property>
    </bean>
    <!-- ==================================================================== -->
    	<!-- 复杂类型注入 -->
    <bean name="cb" class="com.auicyh.c_injection.CollectionBean" >
    	<!-- 如果数组中只准备注入一个值(对象),直接使用value|ref即可 
    	<property name="arr" value="tom" ></property>
    	-->
    	<!-- array注入,多个元素注入 -->
    	<property name="arr">
    		<array>
    			<value>tom</value>
    			<value>jim</value>
    			<ref bean="user4" />
    		</array>
    	</property>
    	
    	<!-- 如果List中只准备注入一个值(对象),直接使用value|ref即可 
    	<property name="list" value="jack" ></property>-->
    	<property name="list"  >
    		<list>
    			<value>jack</value>
    			<value>rose</value>
    			<ref bean="user3" />
    		</list>
    	</property>
    	<!-- map类型注入 -->
    	<property name="map"  >
    		<map>
    			<entry key="url" value="jdbc:mysql:///crm" ></entry>
    			<entry key="user" value-ref="user4"  ></entry>
    			<entry key-ref="car" value-ref="user3"  ></entry>
    		</map> 
    	</property> 
    	<!-- prperties 类型注入 -->
    	<property name="prop"  >
    		<props>
    			<prop key="driverClass">com.jdbc.mysql.Driver</prop>
    			<prop key="userName">root</prop>
    			<prop key="password">1234</prop>
    		</props>
    	</property>
     </bean>
    </beans>

    测试类


    测试结果

    User( Car car,String name)
    1.无参构造方法
    setname=lucy
    1.无参构造方法
    getName=lucy
    setname=lucy
    CollectionBean [arr=[tom, jim, User [name=lucy, age=20, car=Car [name=劳斯兰斯, color=黑色]]], list=[jack, rose, User [name=lucy, age=20, car=Car [name=劳斯兰斯, color=黑色]]], map={url=jdbc:mysql:///crm, user=User [name=lucy, age=20, car=Car [name=劳斯兰斯, color=黑色]], Car [name=劳斯兰斯, color=黑色]=User [name=lucy, age=20, car=Car [name=劳斯兰斯, color=黑色]]}, prop={driverClass=com.jdbc.mysql.Driver, password=1234, userName=root}]


    展开全文
  • 先秀一下我的Vim界面 语法补全我用的是YouCompleteMe, 有目录树插件,taglist插件等。 通过插件管理器Vundle来进行安装,具体方法自行百度。...背景可以通过换张自己喜爱的壁纸,然后调终端的透明度,就可以对着...
  • Eclipse如何配置JDK

    2019-08-01 10:03:59
    第一步、首先需要大家安装好最新版的eclipse和jdk10,双击打开桌面eclipse图标。然后弹出窗口要我们选择工作空间路径,建议最好新建一个目录。 ...第一次打开会有些许慢,需要加载的东西多些。...
  • nginx配置https服务

    2019-06-22 14:27:14
    nginx配置https服务
  • Maven配置教程

    2018-12-29 17:00:24
    Maven配置 Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。 Maven 的配置却让一些初学者望而却步,这里我就把Maven的详细配置过程写下,希望能对你有所帮助...
  • 对于一般使用 STL 的用户而言,Allocator 是不可见的,如果需要对 STL 进行扩展,如编写自定义的容器,就需要调用 Allocator 的内存分配函数进行空间配置。 在C++中,一个对象的内存配置和释放一般都包含两个步骤,...
  • 人工智能,零基础入门!...这个是tomcat用的最多的地方,分享一下,但是其实Tomcat还可以作为其他来用,这里要讲的就是用tomcat来配置本地的文件服务器。下面是步骤: 二、配置步骤 【1】下载一个to...
  • 首先会去读取web.xml配置文件里的配置,当这一步骤没有出错并且完成之后,项目才能正常的被启动起来。  启动WEB项目的时候,容器首先会去读取web.xml配置文件中的两个节点: 和 如图:    紧接着,容器...
  • zookeeper 分布式配置中心
  • 使用jpa操作数据库,最终实现根据不同 的配置文件读取不同的数据源(数据库,缓存以及其他配置信息) 本文主要介绍的是多环境配置与部署,所以关于其他配置就简略的叙述 多环境配置配置application.properties(公共...
  • intellij IDEA配置tomcat

    2019-09-12 10:11:09
    intellij IDEA配置tomcat 如果网上流传的方法(即方法2)不能配置成功,点击加号什么都没有的话,请看方法一配置方法。 解决问题:intlellij IDEA配置tomcat点击加号没东西。 方法一:手动添加tomcat插件然后再...
  • 报错如上。(如果按照我的方法不能解决,请继续百度。。我目前只会该方法,也不打算继续深究) 原因: 公众号配置的回调域名与请求的域名不一致。...根据微信公众号配置修改,微信公众号的配置位置在:登录微信
  • 1、相信很多童鞋在换工作或者因为开辟新项目的工作空间的原因,有时就是要新建一个workspace,但是新建工作空间所有的配置都会是默认的,跟我们之前的习惯不一样,在这里总结一下需要配置的地方: (1)、编码格式...
  • Spring Boot 属性配置和使用Spring Boot 允许通过外部配置让你在不同的环境使用同一应用程序的代码,简单说就是可以通过配置文件来注入属性或者修改默认的配置。Spring Boot 入门 请看:...
  • 之前编写Python更多的是使用pycharm作为编译器进行开发,...在这里对vscode配置Python开发环境做一下记录。 步骤1:安装Python 安装Python的教程网上有很多。直接到官网下载安装就行。 下载链接:https://www.p...
  • 1.首先确定微信公众号上配置的url跟自己提交的redirect_uri 是一致的 按照官方下载好txt文件并在服务器上配置好对应路径 接下来就是要注意的地方了,微信文档上面说可以放在根目录或某个文件夹下面,但是我之前...
1 2 3 4 5 ... 20
收藏数 6,564,015
精华内容 2,625,606
关键字:

配置