info

RTTI运行时类型识别

一曲冷凌霜 提交于 2020-03-17 05:40:36
RTTI是Runtime Type Identification的缩写,是“运行时类型识别”的意思。面向对象的编程语言,象C++, Java ,Delphi都提供了对RTTI的支持。 本文将简略介绍 RTTI 的一些背景知识、描述 RTTI 的概念,并通过具体例子和代码介绍什么时候使用以及如何使用 RTTI。本文还将详细描述两个重要的 RTTI 运算符的使用方法,它们是 typeid 和dynamic_cast。 1. typeid的用法 1.1type_info类 typeid 的结果是 const type_info&。所以下面先对type_info类作下介绍: class type_info { public: virtual ~type_info(); size_t hash_code() const _CRTIMP_PURE bool operator==(const type_info& rhs) const; _CRTIMP_PURE bool operator!=(const type_info& rhs) const; _CRTIMP_PURE int before(const type_info& rhs) const; _CRTIMP_PURE const char* name() const; _CRTIMP_PURE const char* raw

认识JPA以及如何使用JPA(1)

强颜欢笑 提交于 2020-03-17 05:01:25
一:JDBC是什么? JDBC统一了Java应用程序访问数据库的标准。 二:什么是JPA? JPA统一了Java应用程序使用使用ORM框架的方式。 配置文件说明: 三:使用JPA的第一个实例。 1.创建JPA项目,也可以直接创建java项目,然后创建persistence.xml文件 2.导入jar包 3.persistence.xml : <?xml version="1.0" encoding="UTF-8"?> <persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> <persistence-unit name="Jpa-01" transaction-type="RESOURCE_LOCAL"> <!-- 配置使用什么ORM产品作为JPA的实现 1.实际上配置的是javax.persistence.spi

函数进阶:闭包、装饰器、列表生成式、生成器、迭代器

吃可爱长大的小学妹 提交于 2020-03-16 19:42:41
名称空间 命名空间(又称“名称空间”): 存放名字的地方 (概念性的东西)。例如:变量x = 1, 1存放在内存中,命名空间就是存放名字x与1绑定关系的地方。 名称空间有3种: locals:是函数内的(或者是locals所在的那一层的)名称空间|,包括局部变量和形参 globals:全局变量 builtins: 内置模块的名字空间 不同变量的作用域不同就是由这个变量所在的命名空间决定的 作用域即范围: 1. 全局范围: 全局存活,全局有效 2. 局部范围: 临时存活, 局部有效 查看作用域方法: globals() locals() 作用域的查找顺序: LEGB L: locals E: enclosing (相邻的) G:globals B: builtins 闭包: def func(): n = 10 def func2(): print('func2:', n) return func2 # 没有执行func2, 只是把func2的函数名(func2的内存地址) f = func() #执行func函数, 此时func()得到的结果是func2的内存地址,即f就是func2的内存地址 f() # 执行f, 由于f就是func2的内存地址,此时执行的就是func2函数 # 输出结果: # func2: 10 # 在函数(func)外部执行了函数内部的子函数(func2)

5、关键字的参数定义;

自闭症网瘾萝莉.ら 提交于 2020-03-16 17:54:28
1、位置参数; 如下图所示,建立 关键字时,传入的普通参数,就是位置参数; 定义带参关键字; 参数说明: “Return Value” : 将执行结果,返回给调用者; “Timeout” :本用例执行时间上限,超过这个时间,就超时报错; 调用; 测试结果: Starting test: UItest programs.Test Suite.var_test 20200316 15:43:46.570 : INFO : ${result} = 80 20200316 15:43:46.570 : INFO : 80 20200316 15:43:46.571 : INFO : ${result} = 80 20200316 15:43:46.572 : INFO : 80 Ending test: UItest programs.Test Suite.var_test 2、关键字参数带默认值的情况; 如下图所示,定义时, 两个参数中有一个有默认值了 ; 调用的时候,给一个值就可以了 ; 测试结果: Starting test: UItest programs.Test Suite.var_test 20200316 16:45:30.815 : INFO : ${result} = 15 20200316 16:45:30.816 : INFO : 15 20200316 16:45

ArcGIS三大文件格式解析

有些话、适合烂在心里 提交于 2020-03-16 12:39:56
原文: ArcGIS三大文件格式解析 Shape数据 Shapefile是ArcView GIS 3.x的原生数据格式,属于简单要素类,用点、线、多边形存储要素的形状,却不能存储拓扑关系,具有简单、快速显示的优点。一个shapefile是由若干个文件组成的,空间信息和属性信息分离存储,所以称之为“基于文件”。 每个shapefile,都至少有这三个文件组成,其中: *.shp 存储的是几何要素的的空间信息,也就是XY坐标 *.shx 存储的是有关*.shp存储的索引信息。它记录了在*.shp中,空间数据是如何存储的,XY坐标的输入点在哪里,有多少XY坐标对等信息 *.dbf 存储地理数据的属性信息的dBase表 这三个文件是一个shapefile的基本文件,shapefile还可以有其他一些文件,但所有这些文件都与该shapefile同名,并且存储在同一路径下。 其它较为常见的文件: *.prj 如果shapefile定义了坐标系统,那么它的空间参考信息将会存储在*.prj文件中 *.shp.xml 这是对shapefile进行元数据浏览后生成的xml元数据文件 *.sbn 和 *.sbx 这两个存储的是shapefile的空间索引,它能加速空间数据的读取。这两个文件是在对数据进行操作、浏览或连接后才产生的,也可以通过ArcToolbox >Data Management

Ansible-免密登录与主机清单Inventory

徘徊边缘 提交于 2020-03-16 00:50:33
Ansible的指定用户与密码登录、免密登录、指定ssh端口以及主机清单Inventory配置 在实际使用中并不需要对ansible配置进行修改,或者说只有需要的时候才修改ansible配置。 添加用户账号 说明: 1、 运维人员使用的登录账号; 2、 所有的业务都放在 /app/ 下「yun用户的家目录」,避免业务数据乱放; 3、 该用户也被 ansible 使用,因为几乎所有的生产环境都是禁止 root 远程登录的(因此该 yun 用户也进行了 sudo 提权)。 1 # 使用一个专门的用户,避免直接使用root用户 2 # 添加用户、指定家目录并指定用户密码 3 # sudo提权 4 # 让其它普通用户可以进入该目录查看信息 5 useradd -u 1050 -d /app yun && echo '123456' | /usr/bin/passwd --stdin yun 6 echo "yun ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers 7 chmod 755 /app/ 基于密码连接「了解」 在实际生产环境中,建议使用基于秘钥连接而不是密码连接。 原因如下: 1、将密码直接写入文件中,有安全隐患; 2、生产环境的密码可能会定期更换,如果基于密码连接,那么我们也会频繁的维护,造成维护成本高; 3、基于秘钥连接

llinux系统下应用版本上线自服务脚本

霸气de小男生 提交于 2020-03-15 16:04:28
    鉴于肺活量有限,在潜水了半年多之后上岸来透透气觉着是时候写点东西了,能力有限都是记录平常工作中遇到的问题以及解决方法,如果再能帮到有相似问题的同仁,那就算是额外收获了!【抱拳】     其实写这个的初衷也是,之前几个系统上线部署的时候写过自动上线部署的脚本,但每次发布完之后,可能本地没有保存副本,导致再上线的时候又得去登系统再做部分修改,再部署脚本太繁琐了(主要还是记性不好),每次去网上找相关的部署脚本,基本大同小异也不知道到底文章的源头是谁。自己想要的也找不到,俗话说自己动手丰衣足食废话不多说直接上脚本。 写脚本之前先交代一下整个升级的流程:     上边的流程大体是这样,其实整体并不难,复杂的是之前的各种判断。看下脚本是写成了两个脚本文件,上线部署和失败后的回退脚本,应用启停的脚本过会再提供。 #!/bin/bash # # SCRIPTNAME:sdwan_version.sh # DATE: 2020/03/13 # author: Mright # version: V1.3 # desc: # V1.2:增加version.info文件到应用用户目录下,保存即将部署的应用版本号以及当前生产上部署的 # 版本号,应用部署完成后将版本号回写到version.info中 # V1.3:调整version.info内容可记录不同应用版本号

commons-dbutils使用介绍,commons-dbutils是JDBC的替代品

南笙酒味 提交于 2020-03-15 15:50:32
commons-dbutils 是Apache开源组织提供的用于操作数据库的工具包。今天为大家介绍一下该包的常用方法。 对于数据库的操作无外乎增删改查,而增删改本质上可以归为一类,操作方式相同,只是SQL语法不同而已,所以我将以修改和查询两类来介绍 commons-dbutils 的用法。 首先我们来创建一个测试类,使用JUnit进行测试。 import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import org.apache.commons.dbutils.DbUtils; import org.apache.commons.dbutils.QueryRunner; import org.junit.After; import org.junit.Before; import org.junit.Test; public class DBUtilsTest { private Connection conn = null; @Before public void initConnection() throws SQLException, ClassNotFoundException { printCurrentMethodName(); Class

Silverlight中的Binding使用(一、二、三)

[亡魂溺海] 提交于 2020-03-15 04:19:01
本文将详细讲述Silverlight中Binding,包括Binding的属性和用法,Binding的数据流向。 Binding:一个完整的Binding过程是让 源对象 中的某个 属性值 通过一定 流向规则 进行 转换 和 验证 之后绑定到目标对象的某个属性上面。这个源对象由ElementName指定,源对象的属性由Path指定,流向规则由Mode指定,转换由Converter指定,验证由ValidatesOnDataErrors等指定。 首先我们来看Binding的属性如下:      ElementName :指定源对象的名称    Path :指定需要绑定的源对象的属性名称     Mode :指定Binding的数据流向规则   Converter :指定源对象的属性需要经过用户自定义的转换 其次我们来看看Binding的数据流向Mode分为以下几种:      OneTime :源对象的属性只有在第一次的时候绑定到目标对象,以后源对象属性值变化时,目标对象值不变      OneWay :源对象的属性值变化的时候,目标对象值也跟着相应变化,而目标对象值变化时,源对象属性值不变      TwoWay :源对象的属性值变化的时候,目标对象值也跟着相应变化,目标对象值变化时,源对象属性值也跟着变 下面我们通过以下实例源码来看看Binding的简单应用和转换

CentOS7安装Airflow

拈花ヽ惹草 提交于 2020-03-14 14:37:47
实验环境: centos7 python3.6 安装配置: 1.看看是否有gcc,没有的话需要进行安装: yum install gcc (后续安装airflow如果不成功,可以再次执行,它会更新包)【这个很重要哦】 2.安装脚本和依赖: yum install -y python36 yum install -y python36-pip yum install -y python36-develpip3 install paramiko  安装airflow前,还需要安装依赖的环境: yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel   安装airflow pip3 install apache-airflow 安装pymysql pip3 install pymysql 3.配置环境变量 # vi /etc/profile   #airflow   export AIRFLOW_HOME=/software/airflow # source /etc/profile 初始化 1.初始化数据库表(默认使用本地的sqlite数据库):