初始化

2. 类与对象 & 构造方法与初始化

人走茶凉 提交于 2020-03-27 12:13:24
类与对象的关系: 类是对一类对象的描述 对象是类的具体实例(对象==实例) [public] [abstract | final] class 类名 [extends 超类] [implements 接口列表] { 数据成员声明及初始化; 方法成员声明及方法体; } 以上是类声明语法 [ ] 外面的都不能省。 对象声明与创建: 创建类的实例(对象),通过对象使用类的功能。 * 使用对象之前,先声明指向它的引用变量。 例子:Table aTable;     aTable = new Table(); 解释:Table是已经声明的类名,声明引用变量aTable,用于存储该类对象的引用;声明一个引用变量时并没有生成对象。     第二行创建对象,new的作用时:在内存中为Table类的对象分配内存空间;让对象返回它的引用(aTable)。 对象初始化: 系统在生成对象时,会为对象分配内存空间,并自动调用构造方法对实例变量进行初始化。 构造方法: 用来初始化对象,每个类都需要有构造方法。分为默认构造方法和自定义构造方法。 默认构造方法: 没有参数,方法体为空; 使用默认的构造方法初始化对象时,如果在类声明中没有给实例变量赋初值,则对象的属性值为0或null。 一个默认构造方法的例子: class BankAccount { String ownerName; int

对.Net Framework的认识(2)

主宰稳场 提交于 2020-03-27 08:40:45
类和接口的访问权限默认是internal,接口成员不能添加访问修饰符,默认是public,类成员默认是private的。 C#中静态类不能实现接口,它里面所有的成员(包括成员类型,方法等)必须是静态的。 CLR不支持partial,那只是C#的语法,所以partial class必须用C#写。 virtual和override,前者用于父类标识可重构的成员,后者用于子类的重构,virtual方法最好少用,因为性能会降低。因为非virtual方法,CLR可以很快定位到这个方法的出处,而virtual方法,CLR得先去找调用该方法的对象是哪个类型的,在确定类型之后才能定位方法的出处,如果派生层次很多很复杂的话,性能消耗就会比较大。 sealed标识密封类,即不可继承类,不能同时使用virtual关键字,类申明成sealed可以提高性能,因为可以减少很多检查和验证。 new除了实例化对象外,当子类的方法签名和父类一样时,用new可以更清楚地表达子类的方法和父类没有任何关系,如果不用的话,编译时会警告,但还是会隐藏父类方法,使用子类自己定义的方法。 常量的值必须在编译时就确定,编译后,CLR会把常量的值保存在程序集的元数据中,如果代码中使用到常量,CLR会去元数据中查找并把常量值放入IL中。常量如果为引用类型(String除外),则只能赋值null。类中的常量字段引用方式和静态字段一样

java WEB开发中的过滤器接口Filter

蹲街弑〆低调 提交于 2020-03-27 07:49:57
Filter在Web开发中的应用。 过滤器概述: 过滤器就是在源数据和目的数据之间起过滤作用的中间组件。对Web应用来说,过滤器 是一个驻留在服务器端的Web组件,它可以截取客户端和资源之间的请求与响应信息, 并对这些信息进行过滤。 当Web容器接受到一个对资源的请求时,它将判断是否有过滤器与这个资源相关联。如 果有,那么容器将把请求交给过滤器进行处理。在过滤器中,你可以改变请求的内容, 或者重新设置请求的报头信息,然后再将请求发送给目标资源。当目标资源对请求作出 响应时候,容器同样会将响应先转发给过滤器,再过滤器中,你可以对响应的内容进行 转换,然后再将响应发送到客户端。 与过滤器开发相关的接口与类都包含在javax.serlvet和javax.servlet.http包中,主 要有下面的接口和类。 ·javax.servlet.Filter接口 ·javax.servlet.FilterConfig接口 ·javax.servlet.FilterChain接口 ·javax.servlet.ServletRequestWrapper类 ·javax.servlet.ServletResponseWrapper类 ·javax.servlet.http.HttpServletRequestWrapper类 ·javax.servlet.http

Spring02——Spring 中 Bean 的生命周期及其作用域

早过忘川 提交于 2020-03-27 00:00:11
在前一篇文章中,我们已经介绍了 Spring IOC 的相关知识,今天将为个位介绍 Spring 中 Bean 的相关知识。关注我的公众号「Java面典」,每天 10:24 和你一起了解更多 Java 相关知识点。 Bean 的生命周期 Spring 生命周期有四个阶段,分别是: 实例化 Instantiation 属性赋值 Populate 初始化 Initialization 销毁 Destruction 实例化 通过构造器或工厂方法创建 Bean 实例,也就是我们常说的给自己 new 一个对象。 属性赋值 为 Bean 的属性设置值和对其他 Bean 的引用,主要涉及以下几个方面的内容: IOC 依赖注入 :按照 Spring 上下文对实例化的 Bean 进行配置,也就是 IOC 注入; setBeanName 实现 :如果这个 Bean 已经实现了 BeanNameAware 接口,会调用它实现的 setBeanName(String)方法,此处传递的就是 Spring 配置文件中 Bean 的 id 值; BeanFactoryAware 实现 :如果这个 Bean 已经实现了 BeanFactoryAware 接口,会调用它实现的 setBeanFactory,setBeanFactory(BeanFactory)传递的是 Spring 工厂自身

pytest+python下的UI自动化基础框架

三世轮回 提交于 2020-03-26 17:25:24
整体设计模式: config目录:存放一些公共的静态文件,如项目名称,配置文件等这些环境变量(可以用其他组件替换,如sql,主要能把配置文件的内容被程序识别)。 httptrquest目录:存放接口代码,UI自动化因为其稳定性问题会出现有些地方出错导致后续无法进行,故添加接口操作。 initailize目录:初始化代码,用于存放初始化操作的代码,比如初始化一些全局变量,初始化webdriver等,应用于整个项目的代码。 test目录:真正执行的目录,用于存放测试用例的代码,会被pytest识别将其转化为可执行的测试用例(PS:该文件的目录名及其模块、类、方法名都要根据pytest的设置来进行设置);该目录下的代码都会被pytest装饰,控制执行顺序,执行依赖等操作。 testcase目录:为test目录服务,执行相关的操作,定位元素,执行操作,输出结果等等,该目录下的模块、方法都会被test目录下相应的代码调用实例化 testcase_utils: 辅助工具类,在操作过程中某些页面上有些公共的操作,如表格table定位,批量元素的输入,js操作等等,便于维护。 utils目录: 工具类,为整个项目的运行提供基础的操作,如读取文件,将yaml文件转化为WebElement类对象元素,日志、截图、测试报告、sql操作、装饰器、发送报告等基础操作。与testcase

ConcurrentHashMap(1.8) 相关整理

天涯浪子 提交于 2020-03-26 15:03:22
1. ConcurrentHashMap 1.1 HaspMap(JDK 1.8) JDK 1.8 HashMap JDK 1.8 对 HashMap 进行了修改, 最大的不同就是利用了红黑树,其由数组+链表+红黑树组成 。 JDK 1.7 中,查找元素时,根据 hash 值能够快速定位到数组的具体下标,但之后需要顺着链表依次比较才能查找到需要的元素,时间复杂度取决于链表的长度,为 O(N) 。 为了降低这部分的开销,在 JDK 1.8 中,当链表中的元素超过 8 个以后,会将链表转换为红黑树,在这些位置进行查找的时候可以降低时间复杂度为 O(logN) 。 JDK 1.8 使用 Node(1.7 为 Entry) 作为链表的数据结点,仍然包含 key,value,hash 和 next 四个属性。 红黑树的情况使用的是 TreeNode。 根据数组元素中,第一个结点数据类型是 Node 还是 TreeNode 可以判断该位置下是链表还是红黑树。 核心成员变量于 1.7 类似,增加了核心变量,如下表。 属性 说明 TREEIFY_THRESHOLD 用于判断是否需要将链表转换为红黑树的阈值,默认为 8。 put 方法过程 public V put(K key, V value) { return putVal(hash(key), key, value, false, true);

Python里面这些点,据说80%的新手都会一脸懵逼

可紊 提交于 2020-03-26 11:10:06
Python虽然语法简单,通俗易懂,但是再简单它也是一门语言,就像一棵大树,总有一些树枝是弯弯绕绕的,让新手看完之后一脸懵逼,今天我们就来说说这几个点,反正我学的时候是很困惑的! 01.函数里面的 *args 1).可变参数 这个是什么鬼,尤其是有其他c,c++语言基础的人,看到这个点,一定懵逼了,难道是指针,两个**又是什么鬼? 其实这个Python里面的函数入参的几种形式,假如你来设计一个语言,一个函数fun(),里面要传参数进来,要考虑扩展性:变量会有很多种形态,有可能是变量,也可能是数组,也可能是结构体,或者是哈希数组。 比如你有一个累加功能的函数: 每次调用函数都要传一个列表或者元组进去,非常死板,不灵活,如果我要传多个列表,多个变量,我又不想改接口,但是改成下面这样就灵活很多: 在这里顺便说下不管你是为了Python就业还是兴趣爱好,记住:项目经验永远是核心,如果你缺新项目练习,可以去小编的Python交流.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,里面很多新教程项目,还可以跟老司机交流讨教! *args:表示可变参数,就是传入的参数个数是可变的,可以是1个、2个到任意个或者0个,其实就是把一堆参数当作一个数组(Python列表或者元组传递进来)。 02.关键字参数 **kwargs 关键字参数可以让你输入0或者多个含参数名的参数,并且自动组装为一个字典

【转】全局变量、静态全局变量、静态局部变量和普通局部变量的区别

老子叫甜甜 提交于 2020-03-26 10:13:58
原文链接:https://blog.csdn.net/qq_39736982/article/details/82685277 按存储区域分: 1、全局变量、静态全局变量和静态局部变量都存放在内存的全局数据区 2、局部变量存放在内存的栈区 按作用域分: 1、全局变量在整个工程文件内都有效; 2、静态全局变量只在定义它的文件内有效; 3、静态局部变量只在定义它的函数内有效,且程序仅分配一次内存,函数返回后,该变量不会消失;局部变量在定义它的函数内有效,但是函数返回后失效。 4、全局变量和静态变量如果没有手工初始化,则由编译器初始化为0。局部变量的值不可知。 5、静态局部变量与全局变量共享全局数据区,但静态局部变量只在定义它的函数中可见。静态局部变量与局部变量在存储位置上不同,使得其存在的时限也不同,导致对这两者操作 的运行结果也不同。 #include <stdio.h> void func();//函数声明,主要是因为被调用的函数定义写在了main函数后面了 int n = 1; //全局变量 int main(void) { static int a; // 静态局部变量,但静态局部变量只在定义它的函数中可见,并且只初始化一次 int b = -10; // 局部变量 printf("main: a=%d, b=%d, n=%d\n",a,b,n); b += 4; func()

电商全端(一)

回眸只為那壹抹淺笑 提交于 2020-03-26 03:21:14
项目介绍 项目描述 乐淘商城是一个针对鞋类商品的在线交易平台,合适就穿,不合适就换。乐淘为您支付退换货的物流费用,以最快速度把换好的鞋子送到您手中,最好的品牌,最低的价格。乐淘族凭借雄厚的资金实力和在电子商务业界的诚信积累,与Nike、Adidas、Converse、NewBalance等国际大牌深度合作。保证了产品与专卖店同步更新,让您不出家门能最快速度买到当季新款名牌鞋。乐淘族坚持自营,减少中间环节,让利给用户,因此所有产品价格均低于传统销售渠道。 功能介绍 后端管理(pc端) 登录功能/退出功能(bootstrap-validator)基于bootstrap 的表单校验插件 首页功能模块(echarts) 用户管理功能(bootstrap-paginator) 分类管理功能(jquery-fileupload) 商品管理功能 前端展示(移动端) 首页(mui框架) 用户登录页 分类页面(一级分类与二级分类) 搜索页 商品展示页 商品详情页 购物车页面 个人中心页面 项目架构 开发模式 后端渲染模式 前端写好静态页面,交给后端渲染,后端准备数据,渲染页面。 缺点: 渲染工作交给后端,后端需要懂前端的知识。 前后端职责纠缠不清。 ​ 接口化开发(前后端分离模式) 前端写静态页面,渲染页面, 后端只负责提供数据和接口。 优点: 前后端职责清晰,分工明确。 环境搭建 安装node

Java 基础 - 数组

a 夏天 提交于 2020-03-26 03:08:57
目录 初识数组 数组的初始化 定义数组变量 初始化 静态初始化 动态初始化 数组的访问 数组元素读取、赋值 数组的遍历 for 循环 foreach循环 深入了解数组 JDK 中的 Array 数组的内存分布 多维数组 数组是编程语言中最常见的一种数据结构,可以用于储存多个数据,通常可通过数组元素的索引来访问数组元素,包括数组元素赋值和取出数组元素的值. 初识数组 数组也是一种类型,属于引用数据类型. 数组元素的类型是唯一的,一个数组里只能存储一种类型的数据. 数组的长度是固定的,即一个数组一单初始化完成,数组在内存中所占的空间将被固定下来,长度不在发生改变.即使把某个数组的元素清空,其所占的空间依然被保留. 数组的初始化 定义数组变量 Java支持两种语法格式定义数组: type[] arr; type arr[]; 对于这两种定义而言,通常使用第一种格式来定义数组,因为第一种有更好的语义.第二种容易和变量名混淆 初始化 Java 数组只有初始化之后才能使用,所谓的初始化,就是为数组的元素分配内存空间.并为每个数组元素赋初始值. 静态初始化 由程序员显示的指定每个数组原始的初始值.由系统决定数组的长度. 静态初始化的语法格式为: type[] arr = new type[]{item1, item2, item3,...}; type 为数组元素的数据类型, 数组元素类型必须为