自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 面向切面编程

面向切面编程CGLIB的动态代理不需要接口,目标类有没有接口都可以package com.kang;import java.lang.reflect.Method;import org.springframework.cglib.proxy.Enhancer;import org.springframework.cglib.proxy.MethodInterceptor;import org.springframework.cglib.proxy.MethodProxy;import

2021-05-25 14:01:55 135

原创 Spring小结3

Spring小结3代理模式1.静态代理2.动态代理代理模式是为现有的功能类提供一个代理类,外部使用时,使用的是代理类。主要的目的为了不修改原有类的代码,我们扩展功能时,在代理类上扩展;使用方和功能的提供方解耦合。1静态代理提前为目标定义好要用的代理类,一个目标类可以有多个代理类当我们提前定义好的多个代理类,如果没有使用的话,就造成了资源的浪费。组成部分:1.功能接口2.实现了该接口的目标类3.实现了该接口的代理类package com.kang.proxy;public in

2021-05-21 17:18:52 142

原创 spring小结2

spring小结2工厂模式简单工厂(静态工厂)工厂方法(实例工厂)抽象工厂(工厂的工厂)作用:1.隐藏对象的创建细节,让使用者只关系对象的功能的使用2.解耦合工厂方法:生产的产品类型不确定1.提供一个工厂接口,在接口中提供一个生成产品的方法抽象工厂:生产多种类族下的多种产品的一种解决方案1.提供一个抽象工厂,定义所有要生产产品的规范方法2.各种具体生产产品的工厂,改工厂需要继承自抽象工厂简单工厂(静态工厂)package com.kang.factory;import co

2021-05-21 15:27:35 125

原创 spring

spring小结1核心功能:1.IOC(控制反转):将对象的管理权限交给spring容器,管理生命周期2.DI(依赖注入):管理IOC容器中对象的依赖关系3.AOP(面向切面 ):对面向对象补充, 解决系统级别的非核心功能耦合度问题Spring是一个开源的免费的框架(容器)Spring是一个轻量级的、非入侵式的框架控制反转(IOC)、面向切面的编程(AOP)支持事务的处理,对框架整合的支持Spring就是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的框架配置文件<?

2021-05-19 12:45:18 80

原创 mybatis小结4

mybatis小结4多表查询创建两张表,添加相关属性表与表之间建立关联靠字段在java中,它是一个面向对象的语言,表明关系时,肯定是对象和对象,不能再是属性。案例:class Room{//要和person产生关联 此处写为:private List<Person> persons;}class Person{//要和Room产生关系private Room room;//不能写成 private Integer roomId;}上面room和person的实

2021-04-22 21:03:26 75

原创 mybatis小结3

mybatis小结3配置文件<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><!-- 所有的配置都需要写到该标签内部 --><configuration><!-- 引入属性文件

2021-04-21 12:53:40 159

原创 mybatis小结2

mybatis小结2面向接口编程/实体类:映射数据库中的表public class Student { //对应表中的四个字段,一般情况下,最好属性名和字段名保持一致private Integer id;private String name;private Integer age;private String sex;public Integer getId() { return id;}public void setId(Integer id) { this.id = id;

2021-04-17 10:25:58 88

原创 MyBatis小结1

MyBatis小结11.持久性框架:我们将数据存储在磁盘中的行为,被称为持久化:负责操作数据库的框架2.mybatis、hibernate、3.ORM框架:目前流行的持久性框架,都是ORM框架4.ORM:object Relation Mapper(对象关系映射) 将咋们的java对象和关系型数据库建立映射关系,本质上就是可以将记录和java对象进行互相转化5.阻抗不匹配:将表中的记录和对象 模型不匹配行为;ORM主要解决阻抗不匹配的问题6.完全ORM:使用者可以不用写sql语句,只要

2021-04-17 09:57:28 94

原创 JSP小结

JSP小结MVC:modle(数据模型) view(视图) controller(控制器)1.为了将数据层和视图层进行解耦2.M和V不直接通讯,都是通过C进行通讯BIAO1JSP:Java server Page 本质上是一个特殊的Serverlet1.语法2.三大指令 page、include、 taglib3.九大内置对象(隐式对象)4.七大动作指令5.el表达式6.标准标签库jstl配置文件<%--JSP的注释,在前端不显示 <%@:用来定义

2021-04-09 14:30:31 68

原创 jdbc小结3

jdbc小结3批量执行SQLpackage com.kang;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;import java.util.Arrays;//SQL语句的批量执行//1.只能批量执行DML//2.只能通过Statement执行public class JDBC4 {public stati

2021-04-07 12:55:45 80

原创 JDBC小结2

JDBC小结2##package com.kang;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.SQLException;import java.sql.Statement;public class JDBC2 { public static void main(S

2021-03-31 12:54:13 1622 2

原创 JDBC小结1

JDBC小结11.JDBC:java数据库连接技术sun公司只提供接口与抽象类,具体实现由各大数据库厂商实现各大厂商的实现称为驱动sun公司提供的接口和抽象类:1.DriverManger 驱动管理器2.Connection 连接数据库3.Statement 执行SQL语句4.ResultSet 结果集步骤1.加载驱动2.连接数据库3.通过Statement对象执行SQL4.通过ResultSet获取结果集packa

2021-03-29 17:50:37 193 2

原创 练习4

练习41.StringBuffer类对象创建之后可以再修改和变动. (A)A:正确B:错误//:String str = “aa”; str = “aa”+“bb”; 此时str的值为"aabb",但是"aabb"不是在开始的字符串"aa"后面直接连接的"bb",而是又新生成了字符串"aabb",字符串"aa"一旦被初始化,那么它的值不可能再改变了。 StringBuffer strb = StringBuffer(“aa”); strb.append(“bb”); 此时的strb的值也为"aabb

2021-03-26 20:18:13 214 1

原创 练习3

练习31.下列那个类没有实现java.util.Map 接口?A:HashtableB:HashMapC:VectorD:IdentityHashMap//答案为C//A,B,D都实现了Map接口,其中A与B的区别是一个是线程安全的,一个是线程不安全的C中Vector是实现了List接口,是一个线程安全的List2.JSP分页代码中,哪个步骤次序是正确的?A:先取总记录数,得到总页数,最后显示本页的数据。B:先取所有的记录,得到总页数,再取总记录数,最后显示本页的数据。C:先取总页

2021-03-24 20:24:26 918

原创 牛客练习2

牛客练习21.对于以下代码段,4个输出语句中输出true的个数是( 3)。class A{}class B extends A{}class C extends A{}class D extends B{}A obj = new D();System.out.println(obj instanceof B);System.out.println(obj instanceof C);System.out.println(obj instanceof D);System.out.prin

2021-03-22 20:40:28 426

原创 牛客练习

牛客练习1.程序读入用户输入的一个值,要求创建一个自定义的异常,如果输入值大于 10 ,使用 throw 语句显式地引发异常,异常输出信息为 ”something’swrong!” ,语句为(A) A:if(i>10)throw new Exception("something’swrong!");B:if(i>10)throw new Exception("something’swrong!");C:if(i>10) throw new Exception e("someth

2021-03-17 13:22:13 464 3

原创 SQL练习2

SQL练习24.1查有成绩的学生信息select *from studentwhere student.sid in(select DISTINCT sc.sid from sc);5.查询「白」姓老师的数量select count(*)from teacherwhere teacher.tname like’白%’;6.查询学过「张三」老师授课的同学的信息select * from student,SCwhere(student.sid=SC.sidand sc.cid in (

2021-03-17 12:22:04 176

原创 SQL 练习1

SQL 练习1一、 建立各种表1.学生表 Student(SId,Sname,Sage,Ssex)–SId 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别create table student(Sid integer,Sname varchar(20),Sage integer,Ssex varchar(20)) charset=utf8;insert into student(Sid, Sname,Sage,Ssex) values(1,‘张三’,18,‘男’);in

2021-03-15 21:14:02 564

原创 SQL:结构化的查询语音

SQL:结构化的查询语音MYSQL、Oracle、SQL Server、DB2、sqlite3关系型数据库是指存储数据的容器是一个二维表格1.记录:表中的一行 等同于Java中的一个对象2.字段:表中的一列 等同于Java中对象的属性sql语句:1.DDL:数据库定义语言,对数据库表结构进行操作:建库、建表、修改表结构、删库、删表等等SQL语句大小写不敏感1.创建数据库CREAT DATABASE[if NOT EXIST] dbname[charset=utf8 collate

2021-03-13 21:03:35 407 2

原创 泛型

泛型当将一个对象放入集合中,集合不会记住此对象的类型,当再次从集合中取出此对象时,改对象的编译类型变成了Object类型,但其运行时类型任然为其本身类型。List list=new ArrayList();list.add(new Random());list.add("asd"); //list并没有识别"abc"是字符串类型,而是当作Object进行处理String str=list.get(0);//语法错误,需要编程实现类型转换注意:问题1进行数据的强制类型转换之前必须进行类型判断,C

2021-03-11 20:41:27 203 3

原创 ArrayList LinkedList Vector比较

ArrayList LinkedList Vector比较ArrayList :数组,按照索引下标访问速度快O(1),但是当删除、添加元素时会导致元素的移动,速度慢O(n)不同步,线程不安全,但是并发高,访问效率高LinkedList :双向链表,按照索引下标访问速度慢O(n),但是删除添加元素速度快O(1)不同步,线程不安全,但是并发高,访问效率高Vector数组,按照索引下标访问速度快O(1),但是当删除添加元素时会导致元素的移动,速度慢O(n)同步,所以线程安全,但是并发

2021-03-11 20:38:16 151 2

原创 线性表 链表与Collection接口

最近学习了关于链表、线性表以及Collection接口中的Set接口和List接口,本文为关于这些知识 的笔记线性表 链表与Collection接口链表存储区间离散(数据不是连续存放的),占用内存比较宽松,故空间复杂度很小,但操作元素的时间复杂度很大,达O(N)。链表的特点是:链表动态分配内存 链表在内存中是不连续的链表是一种物理存储结构上非连续,非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表的插入或删除不需要移动其他元素,时间复杂度是O(1)。链表通过遍历定位元

2021-03-10 19:11:20 105

原创 线性表 链表与Collection接口

线性表 链表与Collection接口1、线性表(数组)存储区间是连续的,占用内存严重,故空间复杂度很大。但数组的二分查找(前提是必须有序)时间复杂度小,为O(1);数组的特点是:寻址容易(arr[n]=arr[0]+n*每个元素的长度,时间复杂度为O(1))插入和删除困难(可能会引发一半以上的数据元素移动,时间复杂度为O(n));Java中的数组是定长的,如果需要变长则需要自行编程实现2、链表存储区间离散(数据不是连续存放的),占用内存比较宽松,故空间复杂度很小,但操作元素的时间复杂度

2021-03-10 19:02:22 91

原创 线性表 链表与Collection接口

线性表 链表与Collection接口1、线性表(数组)存储区间是连续的,占用内存严重,故空间复杂度很大。但数组的二分查找(前提是必须有序)时间复杂度小,为O(1);数组的特点是:寻址容易(arr[n]=arr[0]+n*每个元素的长度,时间复杂度为O(1))插入和删除困难(可能会引发一半以上的数据元素移动,时间复杂度为O(n));Java中的数组是定长的,如果需要变长则需要自行编程实现2、链表存储区间离散(数据不是连续存放的),占用内存比较宽松,故空间复杂度很小,但操作元素的时间复杂度

2021-03-10 18:57:15 72

原创 反射机制

反射机制反射机制:在运行时,我们可以动态的获取类中的信息;在运行期间可以实例化对象、调用方法 属性等等所有的反射机制都是由字节码对象发起的反射机制直接操作字节码文件,获取字节码对象:Class class1=CC.class;//警告信息:Class是泛型Class class2=Class.forName("com.kang4.CC");Class class3=new CC().getClass();获取类中的信息class DD{ public String hhh; pro

2021-03-08 21:08:11 78

原创 什么是线程池

什么是线程池创建线程要花费昂贵的资源和时间,如果任务来了才创建线程那么响应时间会变长,而且一个进程能创建的线程数有限。为了避免这些问题,在程序启动的时候就创建若干线程来响应处理,它们被称为线程池,里面的线程叫工作线程。从JDK1.5开始,Java API提供了Executor框架可以创建不同的线程池。比如单线程池,每次处理一个任务;数目固定的线程池或者是缓存线程池(一个适合很多生存期短的任务的程序的可扩展线程池)new Thread的弊端每次new Thread新建对象性能差。线程缺乏统一管理,可

2021-03-05 15:46:22 278

原创 过滤流类型

过滤流类型过滤流就是在节点流的基础上附加功能处理类型字符流字节流缓存BufferedReader、BufferedWriterBufferedInputStream、 BufferedOutputStream过滤处理FilterReader、FilterWriterFilterInputStream、FilterOutputStream桥接处理InputStreamReader OutputStreamWriter对象序列化处理Object

2021-03-05 15:12:23 376

原创 线程的编程4种实现方法

线程的编程4种实现方法1、继承ThreadThread类本质上是实现了Runnable接口的一个实例,代表一个线程的实例。public class Thread implements Runnable@FunctionalInterface //函数式接口,其中包含一个抽象方法run public interface Runnable { public abstract void run();}启动线程的唯一方法就是通过Thread类的start()实例方法,不能直接调用run()方法。s

2021-03-05 14:35:17 157 2

原创 多线程编程基础

多线程编程基础基础概念程序是为完成特定任务、用某种语言编写的一组指令的集合。指一段静态的代码,是一个静态的概念进程是具有一定独立功能程序的运行过程,是系统进行资源分配和调度的一个独立单位,重点在系统调度和单独的单位,也就是说进程是可以独立运行的一段程序。进程是程序的一次执行过程,通常是一个可执行程序在内存中的一个完整副本,每个进程都有自己的数据段、栈段和代码段,是一段完整的程序,在内存中占据较大的空间,是系统进行调度和资源分配的一个独立单位。是一个动态的概念多进程是指操作系统能同时运行多个任务(

2021-03-05 13:48:06 122

原创 流模型

流模型主要目的:屏蔽具体实现的区别,使用统一的方法进行编程输入和输出字节和字符节点和过滤 装饰模式BIO NIO AIO字节流父类InputStream和OutputStream一次一字节的操作方式,一般用于声音、图像、视频之类的二进制文件InputStream方法: - read():int -1 - read(byte[]):int -1 - close():void - FileInputStream主要用于操作文件 - System.in 主要用于接收用户输入Outpu

2021-03-03 13:02:00 258 4

原创 输入输出编程

输入输出编程1.输入输出流模型在java程序中,对于数据的输入输出操作以流Stream方式进行,javaSE提供各种各样的类用于使用相同方法获取不同类型的数据,程序中通过标准的方法输入或者输出数据。流是处理输入/输出的一个洁净的方法,它不需要代码理解键盘和网络的不同。Java中流的实现是基于java.io包定义的类层次结构的1.1 流的概念java.io包通过数据流、序列化和文件系统为用户提供一种完成I/O操作的输入输出流数据流是所有的数据通信通道流是字节或字符流的数据源或目的,用以隐藏数据传

2021-03-01 16:45:39 944

原创 Java异常处理

Java异常处理程序运行时发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。异常发生时,是任程 序自生自灭,立刻退出终止。Scanner sc=new Scanner(System.in);String ss=sc.nextLine();int kk=Integer.parseInt(ss);System.out.println("用户输入数据为:"+kk); //用户输入abc /*则执行结果为: Exception in thread "main" java.lang.

2021-02-18 09:40:08 208

原创 接口

接口##接口,可以用于 规范实现接口的类中必须实现接口中抽象方法。接口可以理解为一种契约使用关键字interface定义接口public interface 会飞的 { public void 起飞(); //没有具体实现,也无法定义具体实现,这里是抽象方法 public void 巡航飞行();public void 降落(); }抽象类中的抽象方法不能省略abstract关键字,但是接口中的方法声明可以添加abstract,也可以不写接口不能直接使用,必须有对应的实现类publ

2021-01-21 19:34:44 76

原创 内部类笔记

内部类##一个类或者接口定义在另外一个类或者接口的内部public class A1{//外部类 class B1{}//内部类 interface C1{}//内部接口 }将一个类定义置入另一个类定义中,这就叫作“内部类”内部类之外的类称为外部类内部类的名称必须区别于它所在的外部类,和其它类之间没有要求//内部类的全名叫做[外部类名称$内部类名称] public class A1 { public class A1{} //语法报错 class B1{}

2021-01-21 19:34:02 59

原创 特殊关键字

特殊关键字包package是类或接口的容器什么是包包是类的组织方式,提供名空间和访问控制类似于文件系统的组织声明包中的类package语法:package 包名称;声明包要求是源代码文件的第一个语句程序中最多只能有一条package语句,没有包定义的源代码文件成为默认包中的一部分 :程序中如果有package语句,该语句必须是第一条语句(前面只能有注释或空行)包的作用包能将相关的源代码文件组织在一起包减少了名称冲突带来的问题可以使用package指明源文件中的类属于哪个具体的

2021-01-17 22:36:27 262

原创 面向对象

面向对象##面向对象概论面向对象的三大基本特征是:封装、继承、多态封装隐藏了类的内部实现机制,从而可以在不影响使用者的前提下改变类的内部结构,同时保护了数据继承是为了重用父类代码,同时为实现多态性作准备多态性是发送消息给某个对象,让该对象自行决定响应何种行为。通过将子类对象引用赋值给超类对象引用 变量来实现动态方法调用。编程概述面向过程是一种自上而下的程序设计方法,主要思路专注于算法的实现过程式的特征是以函数为中心,用函数作为划分程序的基本单位;数据在过程式设计中处于从属的位置过程式

2021-01-17 22:33:31 447

原创 匿名类 接口 final关键字

匿名类 接口 final关键字今天学习了匿名类 接口 finall关键字的相关知识,做一个总结。匿名类:1.没有名字的子类对象。2.匿名类中,必须要包含的是类型中抽象方法的实现。3.匿名类是一次性的。几点区别:1.抽象类里有构造方法,抽象类不能直接创建对象。普通类有构造方法,普通类能创建对象。2.抽象类能承载抽象方法,普通类不能承载抽象方法。3.抽象类可以有普通属性,普通类有普通属性。** 1.方法重写过程不能改变返回值,不能改变方法名,不能改变参数列表,能改变访问控制(可以从小往大改

2020-11-23 19:22:43 147

原创 数组

##数组今天学习了数组的相关知识,整理了笔记数组是表示多个相同类型变量的集合(在一个数组中所存放的所有元素的类型必须一致),可以使用共同的名字引用它,属于复杂数据类型.Java数组是固定的不能扩展数组是存放在堆中的,所以在声明数组时,需要定义数组的长度,即在堆中开辟出一个空间【数组的长度一旦声明,不能修改;如果需要修改则需要自行编程实现,这里实际是新创建一个数组,长度是修改后的长度,也就是说替换之前的数组】数组的声明格式(1)类型[] 变量名(2)类型 变量名 []数组的赋值(1.)动态赋值

2020-11-12 18:42:46 100

原创 关系运算符与结构化编程

关系运算符与结构化编程今天主要学习了关系运算符的使用与三种结构(顺序结构、选择结构、循环结构)。关系运算符>、<、>=、<=、==、!=用于判断两个数据之间的大小关系,计算结果为boolean,如果成立返回为true,否则为falsedouble d1=10;System.out.println(d1>3); //返回true==和=的区别:k=100;这是赋值运算符,意思是将=右边的计算结果储存在=左边的变量中k==100这是比较计算,意思是判断k是否值为

2020-11-01 20:29:07 277

原创 基本类型(原生类型)

基本类型(原生类型)今天学习了JAVA中的基本类型(原生类型)基本类型是指不能再分解的数据类型,其数据在函数的调用中是以传值方式工作的。简单数据类型代表单值,而不是复杂的对象Java是完全面向对象的,但简单数据类型却不是,它们类似于其他大多数非面向对象语言中的简单数据类型。这样做的原因是出于效率方面的考虑。在面向对象中引入简单数据类型不会对执行效率产生太多的影响。Java编程语言有八个原始数据类型,可分为4种整型、浮点数、字符型数据和布尔型数据,不会随着计算机类型而变化的,注意Java具有平台无关

2020-10-31 16:08:48 707

空空如也

空空如也

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

TA关注的人

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