java 自学简单框架(反射+注解)】的更多相关文章

1.先定义一个学生类 2.再定义一个teacher类(这个是为了练习多个注解,自己练习可以 不写这个) 3.再定义个一个学生老师类(这个是为了最终调用上面的那个学生类做准备) 4.下面开始真正的写框架:先定义一个注解类 5.reflect里面就是所有的逻辑了 6.就是在main函数调用了:…
最近打算从0开始学学大数据,目前的主业是Android开发,但是当年毕业之后其实是搞J2EE的,所以打算没事又来拓展一下后台的技能,扩宽一下自己的知识体系对于自己的未来也能够多一些可能,另外大数据的一些知识其实对于搞Android也是有一些技能补充的,每一项技术并不是单独存在的,或多或少都会有一些交集,接下来会踏踏实实的从0开始一步步来学习它. Junit: 关于它应该对于搞Java的人再熟悉不过了,不过为了觉得比较扎实,这里再来复习复习. 测试分类: 黑盒测试:不需要写代码,给输入值,看程序是…
1.为什么会用到反射机制? 最近需要写定时服务,如果一个一个去写定时服务的话,后期维护是很烦人的,通过反射机制,我们就可以将定时服务的信息通过数据配置来实现,这样我们后期就可以将整个模块交给运维人员去管理,这样就大大的减少了我们的运维时间,可以更多的时间和精力投入到新项目或者学习中.原来在用.net的时候已经实现了这部分的功能,现在公司大方向转到java,我们也只能跟着转了. 因为接到了这个任务后面还是要做类似.net的运维功能,所以趁着空闲了解了一下java中的反射机制: 下面写一个简单的例子…
Java集合框架 工具类Collections Collections是一个类,容器的工具类,就如同Arrays是数组的工具类 步骤 1 : 反转 reverse 使List中的数据发生翻转 package collection; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class TestCollection { public static void main…
Java集合框架 Collection Collection是一个接口 步骤 1 : Collection Collection是 Set List Queue和 Deque的接口 Queue: 先进先出队列 Deque: 双向链表 注:Collection和Map之间没有关系,Collection是放一个一个对象的,Map 是放键值对的 注:Deque 继承 Queue,间接的继承了 Collection…
Java集合框架 HashSet 示例 1 : 元素不能重复 Set中的元素,不能重复 package collection; import java.util.HashSet; public class TestCollection { public static void main(String[] args) { HashSet<String> names = new HashSet<String>(); names.add("gareen"); Syst…
Java集合框架 HashMap 示例 1 : HashMap的键值对 HashMap储存数据的方式是-- 键值对 package collection; import java.util.HashMap; public class TestCollection { public static void main(String[] args) { HashMap<String,String> dictionary = new HashMap<>(); dictionary.put(…
Java集合框架 二叉树 示例 1 : 二叉树概念 二叉树由各种节点组成 二叉树特点: 每个节点都可以有左子节点,右子节点 每一个节点都有一个值 package collection; public class Node { // 左子节点 public Node leftNode; // 右子节点 public Node rightNode; // 值 public Object value; } 示例 2 : 二叉树排序-插入数据 假设通过二叉树对如下10个随机数进行排序 67,7,30,7…
Java集合框架 LinkedList 序列分先进先出FIFO,先进后出FILO FIFO在Java中又叫Queue 队列 FILO在Java中又叫Stack 栈 示例 1 : LinkedList 与 List接口 与ArrayList一样,LinkedList也实现了List接口,诸如add,remove,contains等等方法. 示例 2 : 双向链表 - Deque 除了实现了List接口外,LinkedList还实现了双向链表结构Deque,可以很方便的在头尾插入删除数据 什么是链表…
Java集合框架与数组的区别 示例 1 : 使用数组的局限性 如果要存放多个对象,可以使用数组,但是数组有局限性 比如 声明长度是10的数组 不用的数组就浪费了 超过10的个数,又放不下 //TestCollection.java package collection; import charactor.Hero; public class TestCollection { public static void main(String[] args) { //数组的局限性 Hero heros[…
Java hashCode原理 步骤 1 : List查找的低效率 假设在List中存放着无重复名称,没有顺序的2000000个Hero 要把名字叫做"hero 1000000"的对象找出来 List的做法是对每一个进行挨个遍历,直到找到名字叫做"hero 1000000"的英雄. 最差的情况下,需要遍历和比较2000000次,才能找到对应的英雄. 测试逻辑: 初始化2000000个对象到ArrayList中 打乱容器中的数据顺序 进行10次查询,统计每一次消耗的时…
遍历ArrayList的三种方法 步骤 1 : 用for循环遍历 通过前面的学习,知道了可以用size()和get()分别得到大小,和获取指定位置的元素,结合for循环就可以遍历出ArrayList的内容 package collection; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import charactor.Hero; public class TestCollectio…
ArrayList上使用泛型 步骤 1 : 泛型 Generic 不指定泛型的容器,可以存放任何类型的元素 指定了泛型的容器,只能存放指定类型的元素以及其子类 package property; public class Item { String name; int price; public Item(){ } //提供一个初始化name的构造方法 public Item(String name){ this.name = name; } public void effect(){ Syst…
ArrayList与List接口 步骤 1 : ArrayList和List ArrayList实现了接口List 常见的写法会把引用声明为接口List类型 注意:是java.util.List,而不是java.awt.List package collection; import java.util.ArrayList; import java.util.List; import charactor.Hero; public class TestCollection { public stat…
ArrayList常用方法 步骤 1 : 增加 add 有两种用法: 第一种是直接add对象,把对象加在最后面 heros.add(new Hero("hero " + i)); 第二种是在指定位置加对象 heros.add(3, specialHero); package collection; import java.util.ArrayList; import charactor.Hero; public class TestCollection { public static…
HashMap和Hashtable之间的区别 步骤 1 : HashMap和Hashtable的区别 HashMap和Hashtable都实现了Map接口,都是键值对保存数据的方式 区别1: HashMap可以存放 null Hashtable不能存放null 区别2: HashMap不是线程安全的类 Hashtable是线程安全的类 package collection; import java.util.HashMap; import java.util.Hashtable; public…
ArrayList和LinkedList的区别 步骤 1 : ArrayList和LinkedList的区别 ArrayList ,插入,删除数据慢 LinkedList, 插入,删除数据快 ArrayList是顺序结构,所以定位很快,指哪找哪. 就像电影院位置一样,有了电影票,一下就找到位置了. LinkedList 是链表结构,就像手里的一串佛珠,要找出第99个佛珠,必须得一个一个的数过去,所以定位慢 步骤 2 : 插入数据 package collection; import java.u…
Java ArrayList和HashSet的区别 示例 1 : 是否有顺序 ArrayList: 有顺序 HashSet: 无顺序 HashSet的具体顺序,既不是按照插入顺序,也不是按照hashcode的顺序. 以下是HasetSet源代码中的部分注释 /** * It makes no guarantees as to the iteration order of the set; * in particular, it does not guarantee that the order…
HashSet. LinkedHashSet.TreeSet之间的区别 步骤 1 : HashSet LinkedHashSet TreeSet HashSet: 无序 LinkedHashSet: 按照插入顺序 TreeSet: 从小到大排序 package collection; import java.util.HashSet; import java.util.LinkedHashSet; import java.util.TreeSet; public class TestCollec…
Java Comparator和Comparable 步骤 1 : Comparator 假设Hero有三个属性 name,hp,damage 一个集合中放存放10个Hero,通过Collections.sort对这10个进行排序 那么到底是hp小的放前面?还是damage小的放前面?Collections.sort也无法确定 所以要指定到底按照哪种属性进行排序 这里就需要提供一个Comparator给定如何进行两个对象之间的大小比较 //Hero.java package charactor;…
聚合操作 步骤 1 : 聚合操作 JDK8之后,引入了对集合的聚合操作,可以非常容易的遍历,筛选,比较集合中的元素. 像这样: String name =heros .stream() .sorted((h1,h2)->h1.hp>h2.hp?-1:1) .skip(2) .map(h->h.getName()) .findFirst() .get(); 但是要用好聚合,必须先掌握Lambda表达式 package lambda; import java.util.ArrayList;…
我们知道在使用MyBatis开发时,只需要添加DAO接口和对应的映射XML文件,不需要写DAO的实现类,其实底层是通过动态代理实现. 本文将使用前几篇文章的知识点实现一个纯面向接口编程的简单框架,与MyBatis实现DAO实现类相似,主要采用注解.反射.动态代理.工厂模式等.具体功能: 接口添加自定义类注解,动态生成接口的实现类 通过可配置的方式实现接口行为,如在网络传输中使用TCP或UDP协议,在数据库中配置不同的数据库类型等 方法上添加自定义方法和参数注解,控制接口具体实现 底层通过代理模拟…
lombok 是什么? lombok 是一个非常神奇的 java 类库,会利用注解自动生成 java Bean 中烦人的 Getter.Setting,还能自动生成 logger.ToString.HashCode.Builder 等 java 特色的函数或是符合设计模式的函数,能够让你 java Bean 更简洁,更美观. 来先看下使用 lombok 后的 java bean 看起来是怎样的 @Data @AllArgsConstructor public class User { priva…
设计框架包可以作为一个工具给大家用,需要有完全不同设计思路给出来,不同于我们去做一个web服务.网站. 或者一个业务微服务,需要从原来使用视角转换成一个构建者视角. 框架或者工具,更多是框架来管理或者说调用我们,我们来遵循框架原则来实现,框架和业务实现上的核心差异. java框架,可以依赖注解以及抽象类来实现逻辑,实现基于注解配置,通过注解简化配置方式.子类实现抽象类, 子类中的注解对象可以用过反射方式在框架中被调用,从而实现一个简单的框架. 注解类: import java.lang.anno…
Java基础13:反射与注解详解 什么是反射? 反射(Reflection)是Java 程序开发语言的特征之一,它允许运行中的 Java 程序获取自身的信息,并且可以操作类或对象的内部属性. Oracle官方对反射的解释是 Reflection enables Java code to discover information about the fields, methods and constructors of loaded classes, and to use reflected fi…
一.RPC简介 RPC,全称为Remote Procedure Call,即远程过程调用,它是一个计算机通信协议.它允许像调用本地服务一样调用远程服务.它可以有不同的实现方式.如RMI(远程方法调用).Hessian.Http invoker等.另外,RPC是与语言无关的. RPC示意图 如上图所示,假设Computer1在调用sayHi()方法,对于Computer1而言调用sayHi()方法就像调用本地方法一样,调用 –>返回.但从后续调用可以看出Computer1调用的是Computer2…
一.RPC简介 RPC,全称为Remote Procedure Call,即远程过程调用,它是一个计算机通信协议.它允许像调用本地服务一样调用远程服务.它可以有不同的实现方式.如RMI(远程方法调用).Hessian.Http invoker等.另外,RPC是与语言无关的. PC概述 RPC(Remote Procedure Call)即远程过程调用,允许一台计算机调用另一台计算机上的程序得到结果,而代码中不需要做额外的编程,就像在本地调用一样. 现在互联网应用的量级越来越大,单台计算机的能力有…
一.RPC简介 RPC,全称Remote Procedure Call, 即远程过程调用,它是一个计算机通信协议.它允许像本地服务一样调用远程服务.它可以有不同的实现方式.如RMI(远程方法调用).Hessian,Http invoker等.另外,RPC是与语言无关的. RPC示意图: 如上图所示,假设Computer1在调用sayHi() 方法,对于Computer1而言,调用sayHi()方法就像调用本地方法一样.调用->返回.但从后续调用可以看出Computer1调用的是Computer2…
Java自学路线图的框架分为两个阶段,第一阶段的Java框架包含六个内容:MyBatis,Spring,SpringMVC,Maven高级,Git,Dubbo. 在Java自学过程中掌握框架的使用,对企业项目的构建有着关键性的作用.Java框架规定了应用体系结构,构成了某类特定软件的可复用设计.自学完这一部分的Java框架后,可以使Java开发人员只关注软件的业务功能,这是迈向中级程序员的重要一步. Java框架自学资源 Java框架有哪些是企业刚需的?(点击进入) Java框架第一阶段技术要点…
一.使用注解可以解决JavaBean和数据库中表名不一致.字段名不一致.字段数量不一致的问题. 1.Sun公司给jdbc提供的注解 @Table.@Column.@Id.@OneToMany.@OneToOne.@ManyToMany 2.小练习:对JavaBean的某些字段进行注解.对JavaBean名称进行注解以匹配数据库表名. Person.java package com.kdyzm.domain; import javax.persistence.Column; import java…