自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 收藏
  • 关注

原创 spring整合Mybais

Spring整合Mybatis搭建环境目的简单实现查询user表中id为1的数据信息建立一个maven项目在资源(Resouses)中写配置文件mybatis-config.xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/d

2021-10-11 21:25:03 121

原创 代理模式总结

代理模式​ 代理模式在 Java 开发中是一种比较常见的设计模式。设计目的旨在为服务类与客户类之间插入其他功能,插入的功能对于调用者是透明的,起到伪装控制的作用。如租房的例子:房客、中介、房东。对应于代理模式中即:客户类、代理类 、委托类(被代理类)。​ 为某一个对象(委托类)提供一个代理(代理类),用来控制对这个对象的访问。委托类和代理类有一个共同的父类或父接口。代理类会对请求做预处理、过滤,将请求分配给指定对象。​ 生活中常见的代理情况:​ 租房中介、

2021-10-11 21:24:31 149

原创 Spring IOC简单登录案例

Spring IOC简单登录案例bean层 private String username; private String password;两个成员,一个用户名,一个密码Dao层@Repositorypublic class UserDao { private final String USERNAME="admin"; private final String PASSWORD="admin"; public User queryByName(Strin

2021-10-10 13:37:01 312 1

原创 Spring IOC

Spring IOCSpring 框架介绍Spring 是众多开源java项目中的一员,基于分层的javaEE应用一站式轻量级开源框架,主要核心是IOC(控制反转/依赖注入)与 AOP(面向切面)两大技术,实现项目在开发过程中的轻松解耦,提高项目的开发效率。在项目中引入 Spring 立即可以带来下面的好处 降低组件之间的耦合度,实现软件各层之间的解耦。可以使用容器提供的众多服务,如:事务管理服务、消息服务等等。当我们使用容器管理事务时,开发人员就不再需要手工控制事务.也不需处理复杂的事务传播

2021-10-10 13:28:11 92

原创 html总结知识点

Html知识点<!DocType html> html类型申明 h5的申明方式标签分类双标签| 闭合标签:标签对需要定义内容单标签|自闭和标签:标签对中不需要定义内容属性:帮助更完善的展示标签的作用head中定义的内容是给浏览器看的body中的内容是给用户看的<meta charset="utf-8">解码格式:浏览器使用哪种编码格式解析html页面中的内容编码与解码保持一致<title></title>标题标签head中唯一一

2021-09-21 20:17:04 73

原创 JDBC封装查询功能

JDBC封装查询功能分析查询出的是一条一条数据每一条数据都有多个属性创建一个类来装数据名字相匹配实现public class BaseDo<T> { public List<T> query(String sql,Class<T> cls,Object...args){ //申明 Connection connection = null; PreparedStatement statement =

2021-09-20 21:47:33 151

原创 JDBS详细步骤

JDBC详细步骤正常步骤public class DemoStatement { public static void main(String[] args) throws ClassNotFoundException, SQLException, IOException { Properties pro = new Properties(); pro.load(Thread.currentThread().getContextClassLoader().getR

2021-09-20 21:46:39 275

原创 Oracle关于查询的知识点总结

查询基本语法做查询时分析查询的数据:eg员工姓名数据的来源 eg员工表条件 where语法distinct 去重:对结果集中完全相同的数据去重,只显示相同数据的一个伪列:不是数据结构中真实存在的但是可查询数字 (可方便计算)select 1 from emp;表达式(可以方便计算年薪什么的)select sal*12 from emp;字符串(’'一对单引号表示字符串)select ename ,sal.deptno,'yjxxt'from

2021-09-20 13:24:25 131

原创 注解的知识点

注解介绍​ 注解是Java 1.5 引入的,目前已被广泛应用于各种Java框架,如Hibernate,Jersey,Spring。注解相当于是一种嵌入在程序中的 元数据 ,可以使用注解解析工具或编译器对其进行解析,也可以指定注解在编译期或运行期有效。在注解诞生之前,程序的元数据存在的形式仅限于java注释或javadoc,但注解可以提供更多功能,它不仅包含元数据,还能作用于运行期,注解解析器能够使用注解决定处理流程。Annotation(注解)就是Java提供了一种元程序中的

2021-09-19 16:07:54 140

原创 利用构造器创建对象

利用构造器创建对象创建对象的方式创建对象的方式,有new 、克隆、反序列化,再加一种,根据Class对象如何利用构造器创建对象获取class对象获取构造器通过方法newInstance创建对象FruitList fruitList = new FruitList();Constructor<FruitList> constructor = fruitListClass.getConstructor(Integer.class, Integer.class, Integer.c

2021-09-19 16:06:08 414

原创 利用反射获取字段

通过反射获取类中的属性(字段)getFiled(String name)只能获得单个的公共字段 Class fruitListClass=fruitList.getClass();//获取class对象 Field apple = fruitListClass.getField("apple");//获得字段applegetFileds()获取该类中所有的公共的字段Class fruitListClass=fruitList.getClass();//获取class对象F

2021-09-19 16:05:42 113

原创 利用反射获取构造器

利用反射获取构造器getConstructor(Class<?>… parameterTypes)获取公共的构造器Class fruitListClass=fruitList.getClass(); fruitListClass.getConstructor(); Constructor constructor = fruitListClass.getConstructor(Integer.class, Integer.class, Integer.class);

2021-09-19 16:04:48 114

原创 利用反射获取方法

利用反射获取所有方法getMethod(String name , Class <?> … parameterTypes)获得公共方法 Class fruitListClass=fruitList.getClass();Method getApple = fruitListClass.getMethod("getApple");Method setApple = fruitListClass.getMethod("setApple", Integer.class);getMe

2021-09-19 16:04:04 47

原创 反射的知识点与特点

反射反射的含义反射是发生在程序运行期间的行为反射的源头Class对象Class 类实例表示正在运行的Java应用程序中的类和接口。java反射机制可以实现的功能在运行时判断任意一个对象所属的类在运行时构造任意一个类的对象在运行时判断任意一个类所具有的成员变量和方法在运行时调用任意一个对象的方法生成动态代理获取class对象的方式类名.class对象.getClass()Class.forName(权限定名=包名.类名)–>推荐注意事项在类加载内存之后就会

2021-09-19 16:03:16 237

原创 Tcp双向登录

Tcp实现双向登录定义客户端public class DemoTwoClient { public static void main(String[] args) throws IOException { System.out.println("========定义客户端========="); Socket client = new Socket("localhost",9898); //准备数据 BufferedReader

2021-09-12 18:15:20 61

原创 Tcp双向登录

Tcp实现双向登录定义客户端public class DemoTwoClient { public static void main(String[] args) throws IOException { System.out.println("========定义客户端========="); Socket client = new Socket("localhost",9898); //准备数据 BufferedReader

2021-09-12 18:14:49 49

原创 对线程的同步锁问题

多线程的安全问题前提多线程同时操作同一份资源时会出先数据不安全问题买票问题简介,有张三和李四两个人买100张票public class DemoTickets implements Runnable{ static int tickets = 100; public static void main(String[] args) { DemoTickets demoTickets = new DemoTickets(); Thread th1 = ne

2021-09-12 15:43:15 52

原创 线程的操作之礼让和插队

礼让线程yield这个方法会让当前线程直接恢复到就绪状态。eg public static void main(String[] args) { DemoYeiold demoYeiold = new DemoYeiold(); new Thread(demoYeiold,"A").start(); new Thread(demoYeiold,"B").start(); } @Override public void run()

2021-09-12 15:42:10 109

原创 线程的守护线程

守护线程用来守护用户线程的,当用户线程执行完毕,而守护线程并没有执行完毕jvm会自动退出。public class Demo02 implements Runnable { public static void main(String[] args) { Demo02 demo02 = new Demo02(); Thread th = new Thread(demo02); th.setDaemon(true); th.star

2021-09-12 15:41:35 64

原创 线程的中断

线程的中断3种方法void interrupt()该方法会为当前线程添加中断标识boolean isInterrupted()判断其线程是否添加过中断标识,添加过则返回true,没添加过则返回falseboolean interrupted()判断其是否添加过,是返回true不是会返回false,同时会复位public class DemoInterrupt implements Runnable{ public static int i=0; public

2021-09-12 15:40:21 61

原创 线程的状态与优先级问题

线程的状态线程有6种状态new 尚未启动的线程处于这种状态RUNNABLE 在java虚拟机中执行的线程处于此状态BLOCKED 被阻塞等待监视器锁定的线程处于此状态,等待所得线程处于这种状态WAITING 无限等待另一个执行特定操作的线程处于此状态。egwait(),join()TIMED_WAITING 正在等待另一个线程指定等待时间的操作的线程。sleep(),join(ms)TERMINATED 已推出的线程出于此状态该6种状态是在一个枚举

2021-09-12 15:39:18 60

原创 java设计模式之消费者和生产者模式

消费者模式题目简介:在一个街道上有车,有人,有红绿灯,当是绿灯时人走西北道路,当是红灯时车走南北道路public class Demo01 { public static void main(String[] args) { Street street = new Street(); //人线程和车线程走在一个街道对象 Thread th1 = new Thread(new Car(street)); Thread th2 = ne

2021-09-12 15:38:46 56

原创 java中线程创建与含义

线程进程与线程的区别进程:操作系统中的多个程序,可以理解为多个进程线程:一个进程中的多个顺序流,可以理解为线程每一个进程都有独立的代码和数据空间,一个进程包含1-n线程。1到多个线程共享进程的资源,但是每一个线程具有自己独立的运行栈和计数器进程的切换开销较大,进程是资源分配的最小单位线程之间的切换较小,线程是调度和执行的最小单位多线程的优点和缺点优点:资源利用率好,提高效率。提高性能缺点:设计复杂,容易出错,数据不安全创建线程该类继承Thread,并且重

2021-09-10 12:34:54 43

原创 java设计模式之静态代理

静态代理前提代理角色和真实角色实现相同的接口代理角色必须有真实角色的引用代理引用具体实现public class Demo03 { public static void main(String[] args) { new Hr(new Manger()).adduser(); }}interface AddUser{ void adduser();}//经理对象class Manger implements AddUser{ @Ove

2021-09-10 12:34:09 34

原创 java中Strem流终止操作

Stream的中止操作前提public static List<Emploeer> getEmploer(){ List<Emploeer> list = new ArrayList<>(); list.add(new Emploeer(1,"张三",18,5000)); list.add(new Emploeer(2,"李四",20,5000)); list.add(new Emploeer(3,"王五

2021-09-10 12:33:33 284

原创 Java中Stream流的中间操作步骤

Stream流的中间操作前提public static List<Emploeer> getEmploer(){ List<Emploeer> list = new ArrayList<>(); list.add(new Emploeer(1,"张三",18,5000)); list.add(new Emploeer(2,"李四",20,5000)); list.add(new Emploeer(3,"王

2021-09-10 12:33:01 419

原创 java中Stream流

Stream含义数据的渠道,用来操作数据源产生元素的序列。集合和数组是对数据进行存储,但Stream是对数据进行一系列处理操作。特点惰性加载,只有在获取的时候才会把一系列的中间操作做完并且返回流是不能重复使用的,做完一次操作返回的是新的流而不是原来的。stream本身不存储数据Stream不会写该数据源的数据,在每次进行操作后获得新的流流的创建Collection 里面有获取Stream流的方法Arrays.Stream获取操作数组的流stream.of操作过程List&l

2021-09-08 10:20:55 120

原创 构造器引用和数组的引用

构造器的引用和数组的引用构造器的引用前提当lambda体中的语句体是,使用构造器的时候,如果抽象方法参数列表和构造器的参数列表保持一致使用正常的lambdaFunction<String,String> fun = s -> new String(s); fun.apply("adnsd");使用过后的Function<String,String> function = String::new; function.apply("

2021-09-08 10:20:19 58

原创 java8中的方法引用

方法引用目的为了简化lambda表达式,前提当lambda体中的语句体调用方法时当引用方法的参数列表与返回值和要重写的抽象方法的参数列表与返回值保持一致注意要求满足上列两个要求才能方法引用使用的情况对象::方法名正常的lambda表达式为Consumer<String> con = s -> System.out.println(s); con.accept("你真帅");使用过后为Consumer<String>

2021-09-08 10:19:50 98

原创 java中四大内置函数式接口

四大内置函数式接口消费型接口特点:有参数,没有返回值Consumer<Integer> con = s-> System.out.println("我今天消费了"+s); con.accept(2000);函数型接口特点:有一个参数,有一个返回值Function<String,String> fun = a-> a.toUpperCase(); System.out.println(fun.apply("adsd"));段

2021-09-07 21:43:27 54

原创 java中lambda表达式

lambda表达式含义就是对匿名内部类的简化。前提必须满足函数式接口(接口里面只有一个语句体的叫做函数式接口)简化过程前提1)声明函数式接口,接口中声明抽象方法,public String getValue(String str) * 2)声明类 TestLambda,类中编写方法使用接口作为参数,讲一个字符串转成大写,并作为方法的返回值 * 3)再将一个字符串的第2个和第4个索引位置进行截取子串*/public static void main(String

2021-09-07 21:42:56 111

原创 Java中Properties

Properties定义表示一组持久的属性,可以保存在流中,或从流中加载出来,两个键值默认是字符串。作为配置文件使用在src下创建xx.perproties在文件中写出对应键值对的信息创建properties对象pro.load加载流新增方法pro.getproperties(String key)通过key获取valuepro.setproperties(String key ,String value)设置新的key和value public static void

2021-09-07 21:42:25 198

原创 一篇文章叫你看懂TreeMap

TreeMap底层结构红黑树特点默认升序排序实现根据key来做存储,做去重,并且做排序去重要求实现内部比较器或者外部比较器,来实现比较规则,有限找外部,其次找内部排序排序去重都时根据比较器来实现的,hashcode和equals方法去重是在HashSet和hashMap里面一些方法TreeMap<Teacher1 ,String> treeMap = new TreeMap<>(new Comparator<Teacher1>() {

2021-09-06 19:52:10 72

原创 一篇文章教你看懂HashMap

HashMap底层结构数组+链表+红黑树初始容量为16加载因子为0.75扩容机制为每次2倍扩容临界值为:16*0.75HashMap的存储方式更具对象地址或者对象内容(在类里面自己重写的hashcode和equals方法)来计算出对应的hashcode值(对象的整数表示形式)//原理(h=key.hashcode())^(h<<<16)根据得到的hashcode的值来用hash算法平均分布到每个位桶上//原理h=(n-1)&hash判断t

2021-09-06 19:51:44 45

原创 一篇文章教你看懂Map

Map含义是一个键值对的集合<key,value>key代表着键值,他是唯一的不可重复,去重的,无序的--------对应Setvalue代表着值,可重复,无序的-------对应collection一个key只能对应一个value,value可以是数组也可以是集合遍历方式keysetpublic static void main(String[] args) { Map<Teacher ,String> map = new HashMap<

2021-09-06 19:50:28 139

原创 一篇文章教你看懂HashSet

HashSet底层结构数组加上链表的结构,在jdk1.8后再加上红黑树;如果数组长度大于8或者总元素长度大于64,则转化为红黑树如图所示如上的数组中存储的都是一个节点对象,没有则指向空,如果有节点对象会指向下一个节点对象知道null为止HashSet是由HashMap维护的特点增删比链表慢但是比数组快,查询比数组慢但是比链表快存储语法根据对象或者父类的默认的Object中的hashcode方法得到对象的整数表达形式​ 对象.hashcode()

2021-09-06 19:49:58 141

原创 TreeSet集合,以及比较规则

TreeSet集合底层结构红黑树,平衡二叉树特点数据默认升序排序应用场景存储多个数据,不允许重复数据,并且想要排序,就可以选用TreeSet注意事项不同类型的数据不能使用TreeSet实现排序自定义引用数据类型对象存储必须要定义比较规则根据compareTo返回值决定去重和排序eg 01.compareTo(02) 返回值为0 01=02 负数01<02 正数01>02比较规则内部比较器自然排序:比较规则定义在类的内部类必须实现comparab

2021-09-05 20:35:53 133

原创 迭代器和列表迭代器知识点以及区别

iterator和listIterator两者之间区别iterator可以用于set和list迭代遍历,而listIterator只能用于list的迭代相比iterator,listIterator多了许多方法listIterator可以双向迭代,而iterator只能单向迭代iterator常用方法创建迭代器Collection collection = Array.asList(1,2,3,4);Iterator it = collection.iterator();hasn

2021-09-05 20:05:00 413

原创 LinkedList集合的知识点,以及自定义linkedlist类实现简单操作

LInkedLIst集合底层结构链表结构(数据以节点为单位)单向链表双向链表特点查询效率较低,增删效率较高定义一个链表结构来实现添加和获取操作package work03;public class DemoLinkedList { public static void main(String[] args) { MyLinkedList.add("s"); MyLinkedList.add("ssa"); MyLinkedList

2021-09-05 20:04:11 152

原创 一道关于String的面试题

String 的拼接原理面试题如下String s = "ab";String s1 = "a";String s2 = "b";String s3 = "a"+"b";String s4 = "a"+s2;String s5 = s1+"b";String s6 = s1+s2;如上拿s和s3,s4,s5,s6进行==比较!问题的答案是只有s和s3是true其他全是false只有知道原理才能知道这个答案首先我们要知道s3在编译期间就会变成s3=“ab”;这二样的形式而s4,s5

2021-09-05 16:32:43 96

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除