自定义注解使用场景: 类属性自动赋值,例如对上下文.传入参数等赋值 验证对象属性完整性,例如,对参数的校验 代替配置文件功能,像spring基于注解的配置 可以生成文档,例如java 最早提供的注解.常用的有@param @return 等 利用注解针对性做一些前置或者后置的处理,例如记录日志.检验权限等 自定义注解会需要元注解,此处先介绍元注解. 元注解包含四种:@Retention.@Inherited.@Documented.@Target @Documented –注解是否将包含在Jav…
面向对象的特征 封装.继承和多态 https://blog.csdn.net/jianyuerensheng/article/details/51602015 封装: 定义:封装就是将数据或函数等集合在一个个的单元中(我们称之为类).被封装的对象通常被称为抽象数据类型. 优点:1.保护数据成员,不让类以外的程序直接访问或修改,只能通过提供的公共的接口访问==>数据封装. 2.方法的细节对用户是隐藏的,只要接口不变,内容的修改不会影响到外部的调用者==>方法封装. 3.良好的封装可以降低程序的耦…
http://www.cnblogs.com/logsharing/p/8448446.html 转载的这篇文章,很有意思,说的也很全面,学习下,防丢失,备份记录下 GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二. 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数. 你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚知道什么时候该用什么. 当你在面试中被问到这个问…
在一个表达式中可能包含多个有不同运算符连接起来的.具有不同数据类型的数据对象:由于表达式有多种运算,不同的结合顺序可能得出不同结果甚至出现错误运算错误,因为当表达式中含多种运算时,必须按一定顺序进行结合,才能保证运算的合理性和结果的正确性.唯一性. 优先级 1.优先级与求值顺序无关.如a+b && bc,虽然优先级最高,但这个表达式求值顺序是从左到右. 2.优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级. 3.相同优先级中,按结合性进行结合.大多数运算符结合性是…
这是个设计相关的问题,它考察的是面试者对现有系统和一些普遍存在但看起来不合理的事物的看法.回答这些问题的时候,你要说明为什么把这些方法放在Object类里是有意义的,还有不把它放在Thread类里的原因.一个很明显的原因是JAVA提供的锁是对象级的而不是线程级的,每个对象都有锁,通过线程获得.如果线程需要等待某些锁那么调用对象中的wait()方法就有意义了.如果wait()方法定义在Thread类中,线程正在等待的是哪个锁就不明显了.简单的说,由于wait,notify和notifyAll都是锁…
 什么是序列化和反序列化 序列化:把堆内存中的java对象数据,通过某种方式把对象存储到磁盘文件或者传递给其他网络节点.这个过程称为序列化.简单来说呢,就是将对象转换成二进流的过程. 反序列化:把磁盘文件或网络节点上的对象数据恢复成java模型的过程,也就是将序列化过程中产生的二进制串转化为数据结构或者对象的过程. 为什么要序列化 1.在分布式系统或者需要远程调用,此时就需要把对象在网络上传输,需要把对象转为二进制形式,需要共享的JavaBean对象,都需要做序列化. 2.服务器钝化:如果服务器…
 hashCode和equals方法的区别和联系  两个方法的定义 equals(Object obj)方法用来判断两个对象是否"相同",如果"相同"则返回true,否则返回false. hashCode()方法返回一个int数,在Object类中的默认实现是"将该对象的内部地址转换成一个整数返回.  官方给出的一些说明: 在 Java 应用程序执行期间,在同一对象上多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是对象上 equals…
==: ==比较的是变量内存中存放的对象的内存地址,用来判断两个对象地址是否相同,比较的是否是同一个对象. 1.两边的操作数必须是同一类型,不然编译不通过. 2.如果是基本数据类型比较,值相等则为true.因为基本类型不存在引用的概念,都是直接存储在内存中的内存栈上的,数据本身的值就是存储在栈空间. equals: equals比较的是两个对象的内容是否相等,由于所有的类都是继承自java.lang.Object类的,所以适用于所有的对象.如果没有对equals方法重写,调用的就是Object类…
MVC简介: MVC(Model View Controller) 是模型(model)-视图(view)-控制器(controller)的缩写.一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑.MVC被独特的发展起来用于映射传统的输入.处理和输出功能在一个逻辑的图形化用户界面的结构中. 为什么要用MVC: 重用性高.不同的视图可以共用一个模型. 耦合性低.视图层和业务层分离,这样就允…
https://www.cnblogs.com/zlw-xf/p/8001383.html 1:cookie数据存放在客户的浏览器上(客户端),session数据放 @1:cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie 欺骗,如果主要考虑到安全应当使用session @2:session会在一定时间内保存在服务器上.当访问增多,会比较占用你服务器的性能,如果主要考虑到减轻服务器性能方面,应当使用cookie 2:单个cookie在客户端的限制是3K,就是说一个站点…
https://blog.csdn.net/SongYuxinIT/article/details/81872066 反射的核心是JVM在运行时才动态加载类或调用方法/访问属性,它不需要事先(写代码的时候或编译期)知道运行对象是谁. java反射框架主要提供以下功能: 在运行时判断任意一个对象所属的类 在运行时构造任意一个类的对象 在运行时判断任意一个类所具有的成员变量和方法(通过反射甚至可以调用private方法) 在运行时调用任意一个对象的方法 主要用途: 反射最重要的用途就是开发各种通用框…
抽象类和接口的区别 抽象类和接口在设计层面的区别主要体现在:接口是对动作的抽象,抽象类是对根源.类的抽象.抽象类表示的是,这个对象是什么,接口表示的是,这个对象可以做什么. 比如,男人.女人是人,人是男人女人的抽象类.人可以吃东西,动物也可以吃东西,人还有各种行为,吃东西就可以定义为一种接口. 语法上具体的异同如下: 1.不管是抽象类还是接口都不能实例化. 2.抽象类要被子类继承,接口要被类实现. 3.抽象类中可以有具体的方法实现,接口中只能做方法说明. 4.接口里定义的变量只能是公共的静态的常…
重载和重写的区别 重写: 1.也叫子类的方法覆盖父类的方法,要求返回值.方法名和参数都相同: 2.子类抛出的异常不能超过父类相应方法抛出的异常.(子类异常不能超出父类异常): 3.子类方法的的访问级别不能低于父类相应方法的访问级别(子类访问级别不能低于父类访问级别). 重载: 重载是在同一个类中的两个或两个以上的方法,拥有相同的方法名,但是参数却不相同,方法体也不相同,最常见的重载的例子就是类的构造函数. 注意: 如果父类方法是final或者private 等原因子类不能继承,实现返回类型.名称…
String.StringBuilder.StringBuffer 主要区别在两点上: 速度效率上对比:StringBuilder>StringBuffer>String 线程安全上来说:StringBuffer是线程安全的,StringBuilder是线程不安全的 总结: String:不可变,适用于少量字符串拼接: StringBuilder:可变,适用于单线程字符串缓冲区进行大量操作: StringBuffer:可变,适用于多线程字符串缓冲区进行大量操作. 详细原理解析如下:(很详细,从…
包装类:java是典型的面向对象编程,但是八种基本数据类型并不支持面向对象编程.基本类型的数据不具备对象的特性,没有属性和方法.沿用它们只是为了迎合人类根深蒂固的习惯,并的确能简单.有效地进行常规数据处理. 但是,这种非面向对象的做法也会带来不便,因此,java为每种基本数据类型分别设计了对应的类,称为包装类. 基本数据类型以及对用的包装类的关系如下: byte Byte short Short int Integer long Long char Char float Float double…
int和Integer的区别 int是基本数据类型,Integer是int的包装类. Integer必须实例化后才能使用,int变量不需要. Integer实际是对象的引用,生成一个新对象实际上是生成一个指针指向此对象:而int则是直接存储数据值. Integer默认值是null,int默认值是0: Integer的缓存范围是-128到127. 关于Int和Integer比较的一些延伸: 例子: Integer a= new Integer(100); Integer b = new Integ…
Throwable.Error.Exception.RuntimeException 关系如下类图所示: Throwable: Throwable类是java语言中所有错误或者异常的超类.它的两个子类是Error和Exception. Error: Error是Throwable的子类,用于指示合理的应用程序不应该试图捕获的严重问题. 一般都是不可控制的(unchecked),用来表示虚拟机内部错误或者底层资源的错误. Exception: 可以是被控制的(checked)或者不可控制的(unc…
final, finally, finalize 首先,这三个关键字没什么关联,只是放在一起比较像,用法用处完全不同. final: final关键字可以用来修饰类.方法.变量(成员变量和局部变量),final用的多,下面详细介绍下 1.1 final 修饰类 final修饰类,表明这个类不能被继承,同时该类内的所有方法都被隐式定义为final. 1.2 final 修饰方法 final 修饰方法,该方法不可以被继承,不可以被重写.因此要注意,如果子类定义相同方法名和参数的函数,不是重写父类方法…
目录 java实现注解的底层原理和概念 五种元注解详解 使用动态代理机制处理注解 spring.AOP和注解机制 (题外)@FunctionalInterface原理介绍 欢迎指正文中错误 关注公众号,一起交流 参考文章 java实现注解的底层原理和概念 java注解是JDK1.5引入的一种注释机制,java语言的类.方法.变量.参数和包都可以被注解标注.和Javadoc不同,java注解可以通过反射获取标注内容 在编译器生成.class文件时,注解可以被嵌入字节码中,而jvm也可以保留注解的内…
本篇文章将从元注解.自定义注解的格式.自定义注解与反射结合的简单范例.以及自定义注解的应用来说一说java中的自定义注解. 一.元注解 元注解也就是注解其他注解(自定义注解)的java原生的注解,Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明.Java5.0定义的元注解: 1.@Target, 2.@Retention, 3.@Documented, 4.@Inherited                        …
为了更清晰容易地熟悉掌握Project的基础应用,我们在基础篇中一起来学习掌握在Project中如何做进度计划.资源计划.成本计划以及跟踪项目的执行情况并生成所需的项目报表. 一.进度计划 这里,首先要问各位朋友一个问题,你平时如何新建一个project项目计划的?很多用户初次使用project创建项目计划时,启动project以后直接在甘特图视图的区域内开始输入任务信息.其实这种做法是不符合使用规范的,为了提高计划编写的科学性.准确性,建议按下述规范顺序使用. 首先是创建项目文件.这可以利用现…
博主快速入门matlab,系统地整理一遍,如何你和我一样是一个新手,那么此文很适合你: 本人能力有限,文中难免有错误和纰漏之处,请大佬们不吝赐教 创作不易,如果本文帮到了您: 请帮忙点个赞…
上一篇讲到了UITabBarViewController,接着说说UITabBarViewController中怎么自定义TabBar. 今天仿写了微博,发现底部tabbar中间的button和其他有所不同,button较大且着色:而且我们平时工作中也有很多类似这样的问题,有些app有一个看起来像标准 tabBarController,但是呢,tabBar的中间是凸起的或者着色的.我们怎样做可以构建这种现实效果呢? 如图: 这些标签栏除了中间项以外看起来都相当的标准,所以我们会从一个标准的包含一…
一.概述 每一个应用程序默认的标题栏(注意与状态栏的区别)只有一行文字(新建工程时的名字),而且颜色.大小等都是固定的,给人的感觉比较单调.但当程序需要美化的时候,那么修改标题栏是就是其中一项内容,虽然Android已经定义了很多样式资源,但更多时候我们需要使用的是自己定义的样式. 二.要求 使用自己定义的样式来修改程序的标题栏. 三.实现 新建工程MyTitle,不用修改main.xml文件,在/res/layout目录下新建布局文件title.xml,在里面添加一个TextView和一个Bu…
package util; import java.io.File; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; /** * jdbc通用的方法…
基本数据类型 java 是强类型语言,在 java 中存储的数据都是有类型的,而且必须在编译时就确定其类型. 基本数据类型变量存储的是数据本身,而引用类型变量存的是数据的空间地址. 基本类型转换 自动类型转换 把一个表数范围小的数值或变量直接赋给另一个表数范围大的变量时,系统将会进行自动类型转换,否则需要强制转换. 强制类型转换 强制类型转换可能存在溢出导致数据精度丢失的情况. 字符串 Java 没有内置的字符串类型,而是提供了一个标准类库 String. 特征:不可变字符串 优点:编译器可以让…
基本功 面向对象特征 封装.继承.多态和抽象 1.封装:给对象提供了隐藏内部特性和行为的能力.对象提供一些能被其他对象访问的方法,来改变它内部的数据. 在Java中,其访问权限有3种修饰符:public.private.protected.每一个修饰符给其他的位于同一包或者不同包对象都赋予了不同的访问权限. 好处: 1.通过隐藏对象的属性,来保护对象内部的状态. 2.提高了代码的可用性和可维护性,因为对象的行为可以被单独改变或者扩展. 3.禁止对象之间的不良交互,提高模块化. 2.继承:给对象提…
一.  面向对象的特征:继承.封装.(抽象).多态 继承:继承是子类自动共享父类数据和方法的机制,这是类之间的一种关系,提高了软件的可重用性和可扩展性. 封装:封装是保证软件部件具有优良的模块性的基础,封装的目标就是要实现软件部件的“高内聚.低耦合”,把对同一事物进行操作的方法和相关的方法放在同一个类中,把方法和它操作的数据放在同一个类中. 抽象:抽象就是找出一些事物的相似和共性之处,然后将这些事物归为一个类,这个类只考虑这些事物的相似和共性之处 多态:指程序中定义的引用变量所指向的具体类型和通…
在Spring中实现字符串清除的方法有很多,原生方法String自带trim()方法,或者使用StringUtils提供的trim...方法. 通常可以将上面的方式封装成自定义注解的形式去实现来节省更多的业务代码. Trimmed.java: import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import j…
[SpringBoot 基础系列]实现一个自定义配置加载器(应用篇) Spring 中提供了@Value注解,用来绑定配置,可以实现从配置文件中,读取对应的配置并赋值给成员变量:某些时候,我们的配置可能并不是在配置文件中,如存在 db/redis/其他文件/第三方配置服务,本文将手把手教你实现一个自定义的配置加载器,并支持@Value的使用姿势 I. 环境 & 方案设计 1. 环境 SpringBoot 2.2.1.RELEASE IDEA + JDK8 2. 方案设计 自定义的配置加载,有两个…