自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 @param注解,mybatis连接池,高级映射,动态sql多表查询

1. @param注解:参数绑定1.参数为普通类型 (1).接口中方法上 @Param("将指定的参数绑定到这个注解中")例:Student findStudentByNameAndAddress(@Param("name") String name,@Param("addr") String address) ; (2).映射配置 sql语句:直接使用绑定的注解名select * from student where name = #{name} and address

2022-03-17 23:25:11 1136

原创 git的使用

1. git1.git:分布式版本控制工具 svn:集中式版本控制工具 2.命令行的方式: 图形界面化方式:3.master:主分支 dev:开发分支 hot_fix:热修复分支1.1 git的使用流程 (1)工作区:自己磁盘上地址文件夹 初始化本地库:git init,生成.git文件夹 (2)暂存区:将本地库的文件添加到暂存区(stage存储区域) git add 文件名称,生成index文件 (3)提交到本地仓库:将暂存区中的内容,提交到本地仓库(

2022-03-17 23:24:42 263

原创 mybatis注解开发,原理以及部分属性

官网1.日志文件加入日志的依赖:导入log4j的jar包1.在应用的类路径中创建一个名为log4j.properties的文件# 全局日志配置log4j.rootLogger=ERROR, stdout# MyBatis 日志配置log4j.logger.org.mybatis.example.BlogMapper=TRACE# 控制台输出log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdou

2022-03-17 23:24:02 409

原创 mybatis入门,操作步骤以及xml配置

1. mybatis的入门1.mybatis最终就是将原生JDBC代码封装,并且进行了优化2.JDBC原生7大步骤: 注册驱动 获取连接对象 准备sql语句 发送sql语句到数据库中,并同时获取预编译对象 给参数赋值 执行更新/查询操作 释放资源3.存在弊端: (1)注册驱动,在获取数据库的连接对象里面的这些参数,存在硬编码 (2)获取预编译对象,给参数赋值,也存在硬编码 (3)频繁书写大量sql语句,消耗内存空间 4.什么是mybatis?(前身是ibatis) (1)是

2022-03-17 23:23:22 1469

原创 Maven、JQuery、Ajax、Cookie、Session

1.Maven :项目管理工具1.Maven项目管理模型(POM),可以通过一小段信息管理项目构建,报告和文档的项目管理工具软件 pom.xml能够被maven管理工具进行解析 本地仓库:local repository,没有配置,默认在.m2中 本地仓库找不到,需要访问中央仓库下载,可以访问公共库下载2.特点: 占用内存小(不仅有本地仓库,而且通过私服(企业项目中的jar包)--"坐标") 后期维护方便idea集成了maven插件-->创建maven项目2.Maven配置和项目创

2022-03-15 20:04:35 789

原创 JSP和bootstrap

1.JSP1.Java Server Page:java服务页面,能够书写java代码的html2.通过idea部署的web文件--->默认jsp文件存储路径:C:\Users\Administrator\.IntelliJIdea2019.1\system\tomcat\Tomcat_8_5_66_Web1\work\Catalina\localhost\Web1_war_exploded\org\apache\jsp3.经历两个阶段: 翻译阶段:需要被web容器解析 将当

2022-03-15 20:03:23 2583

原创 serverlet

1.Servlet(Servlet applet)1.针对服务器端程序的开发/服务器连接器 和前台进行交互的"控制器",主要目的:交互的浏览和生成数据 狭义上是一个接口,广义上是一个普通的类2.如何开发/使用步骤: (1)导包:tomcat里面自带的servlet-api.jar(也可自行下载) (2)狭义的servlet:自定义一个类继承HttpServlet类,至少重写一个方法 //get提交 @Override protected void doGet(HttpSer

2022-03-15 20:02:52 970

原创 PreparedStatement,JDBC管理事务,连接池

1.预编译对象PreparedStatement1.java.sql.PreparedStatement:预编译的SQL语句的对象 (1)通过连接获取获取预编译对象的时候,将参数化的sql语句发送到数据库并保存到编译对象中:PreparedStatement preparedStatement(String sql) throws SQLexceotion; (2)参数化的sql:insert into 表名(字段列表) values(?,?...) (3)给占位符赋值:void setXXX

2022-03-15 20:02:22 915

原创 tomcat连接以及HTTP协议

1.tomcat1.web应用服务器 Apache组织机构2. (1)官网下载(8.0以上,针对get乱码,自动解决中文乱码问题) (2)window系统 xx.zip Linux系统 xx.tar.gz (3)解压使用tomcat服务器 需要配置JAVA_HOME系统变量 tomcat使用Java语言编写 如果还出现闪屏 配置系统变量JAR_HOME 本地启动进入bin目录---startup.bat--->日志有乱码 在tomcat的conf目录中-

2022-03-15 20:01:40 920

原创 JavaScript入门

1.JavaScript入门1.使用方式 (1)可以写在部分标签里,例如 <button onlick="alter('消息内容');">文本内容</button> <a href="JavaScript:alter('内容')">文本内容</a> (2)内部方式:在head或者body标签的里面或者下面 <script></script> (3)外部方式---导入外部xx.js文件(推荐使用)

2022-03-15 20:00:50 1126

原创 HTML和CSS

本周内容前端三剑客:html,css(常见的表以及设置标签的样式),js(会基本DOM操作)前端框架:Jquery和bootstrap(提供全局CSS样式,组件/提供响应式布局)在idea创建web项目并且通过tomcat服务器-->本地部署servlet:针对前后端交互的技术,针对服务器程序的开发 基本使用步骤 xml配置/注解配置 生命周期 重要的对象ServletConfig/ServletContext maven--->项目管理工具(idea创建Maven项目)

2022-03-15 20:00:12 194

原创 单元测试和MVC

1.单元测试1.junit使用步骤:(1).导入核心包:junit-4.13.jar以及他的依赖包hamcrest-core-1.3.jar(2).定义一个类,专门针对不同功能进行测试(3).在类中成员方法,单元测试的方法必须在成员方法上加入@Test 这个方法没有参数,没有返回值(4).使用断言,将预期的结果和最终结果进行对比,如果不一致,单元测试通过不了,一致就是正常数据 例:junit提供的Assert,Assert提供的方法assertEquaks(预期值,实际值)2.单元测试中:

2022-02-18 17:54:36 165

原创 JDBC了解以及操作

1.什么是 JDBC1.Java操作数据库的一种连接器本质:即使实现了sun公司提供的接口的实现类2.java连接数据库的接口规范--->sun公司提供的java.sql.接口相关的(Driver接口,Connection接口,Statement接口)数据库厂商提供的-->数据库相关的驱动的jar包,里面实现类java.sql包下的接口实现类2.JDBC7大原生操作步骤1.步骤: 0.导包 1.注册驱动 Class.forName("驱动类的全限定名称");

2022-02-18 17:53:57 105

原创 jdk动态代理

1.对业务操作功能的一种增强 代理: jdk动态代理 cglib动态代理 (第三方jar包:cglib.jar)2.SpringAOP:面向切面编程基于oop横向切面:核心思想:对业务代码进行增强,将增强的代码和业务代码分离起来1.代理设计模式---动态代理(java.lang.reflect.Proxy):让代理角色帮助真实角色完成特定功能-->就是对真实角色的功能增强(通过反射的方式产生一种代理) 前提条件:必须存在一个接口,基于接口完成代理 public

2022-02-18 17:53:27 79

原创 数据库事务

1.事务及其特性1.概念: 在实际开发中,一个业务操作可能需要同时执行一个表中的多个sql或者是多个表中的sql,需要去使用事务将整个业务操作管理起来,这些sql要么同时执行成功,要么同时执行失败2.传统事务特性 (ACID) : (1)原子性:事务中的所有操作都可以看做一个原子,事务时应用中不可再分的最小逻辑执行体,使用事务对数据进行修改的操作序列,要么全部执行,要么全部不执行 (2)一致性:一致性是指事物执行的结果必须使数据库从一个一致性状态,变到另一个一致性状态(通过原子性保证) (3)隔

2022-02-18 17:52:46 79

原创 数据库的约束

1.数据库的约束约束:约束用户操作数据表的一种行为1.默认约束 default:没有插入数据默认字段值 当前操作表,如果没有插入字段值,默认约束插入字段值2.非空约束 not null:字段值不能为空 3.唯一约束 unique:约束字段值不能重复 删除唯一约束:alter table 表名 drop index 唯一约束所在字段名称4.主键约束 primary key:非空且唯一 删除主键约束:alter table 表名 drop primary key; 也要删除非空约束5.自增

2022-02-18 17:52:11 696

原创 数据库基本操作

1.数据库Mysql数据库关于数据库语句相关语法DDL:数据定义语言DML:数据操作语言DQL:数据查询语言DCL:数据控制语言2. DDL语句数据定义语句: 查询所有库: show databases;(需要分号) 新建库: create database 库名; create database if not exists 库名 删除库 drop database 库名; drop database if exists 库名; 查询新建数据

2022-02-12 13:30:12 417

原创 TCP协议

1.TCP单向传输1.TCP客户端操作步骤 (1)创建客户端Socket对象 public Socket(String host,int port)throws UnknownHostException,IOException (2)获取客户端所在的通道内字节输出流对象 public OutputStream getOutputStream() throws IOException (3)写数据到通道的流中 (4)释放资源public class Tcp_

2022-02-10 23:58:35 1012

原创 UDP协议

1.UDP和TCP的区别1.是否是一种可靠连接 UDP协议:是一种不可靠连接 TCP协议:是一种可靠连接2.是否需要建立连接通道 UDP协议:不需要建立连接通道 TCP协议:需要建立连接通道3.是否发送的数据大小有限制 UDP协议:有限制,因为UDP发送---> 以一种 "数据报包-->DatagramPacket"的方式 TCP协议:没有限制,连接通道里面--

2022-02-10 23:58:04 1151

原创 设计模式-静态代理

1. 静态代理1.静态代理的特点: 代理角色和真实角色需要实现同一个接口 代理角色:帮助真实角色完成一件事情 真实角色:专注于自己主要的事情 2.代码实现 //定义一个接口 interface Marry{ void marry(); }class You implements Marry{ @Override public void marry() { Syste

2022-02-10 22:14:03 70

原创 ----反射

1.反射1.1什么是反射?描述类的编译阶段-->运行 通过获取类或者接口的字节码文件对象,(正在运行的类)Class类对象 然后获取类中的构造方法所在的对象java.lang.reflect.Constructor<T>,创建当前类实例 然后获取获取类中的成员变量所在的java.lang.reflect.Field对象,给成员变量赋值 然后获取类中的成员方法所在的java.lang.reflect.Method对象,调用成员方法1.2 通过反射创建类的实例化

2022-02-10 22:13:16 63

原创 Properties类

1. Properties类1.Properties类:属性列表,描述一组属性和属性值,表示一组持久的属性。 Properties可以保存到流中或从流中加载。 没有泛型,继承自Hashtable<K,V>--->implements Map<K,V>接口1.1 基本功能1.使用Map的基本功能 添加功能 put(K key,V value) 遍历Map: Set<Key> keySet()获取所有的键

2022-02-10 22:12:25 89

原创 序列化流/反序列化流

1. 序列化流1.序列化流:ObjectOutputStream:将一个java对象的原始数据转换为流数据 前提条件:Java对象所在的类必须实现序列化接口:java.io.Serializable(这个接口没有成员方法--->标记接口)1.2 功能1.构造方法:public ObjectOutputStream(OutputStream out) throws IOException:创建序列化流对象 成员方法:public final void writeObject(Object

2022-02-10 22:11:35 410

原创 SequenceInputStream合并流

1.合并流1.java.io.SequenceInputStream:可以操作多个文件,表示其他输入流的逻辑级联1.1 构造方法一1.public SequenceInputStream(InputStream s1,InputStream s2)2.代码实现: 需要:将当前项目下的BufferedReaderDemo2.java和Teacher.java 复制到D:\EE_2113\day29\code\My.javapublic class SequenceInput

2022-02-10 22:10:45 410

原创 字符缓冲流

1.字符缓冲流1.1字符缓冲输入流1.BufferedReader--->Reader的子类,高效读取 构造方法: public BufferedReader(Reader in):创建默认的缓冲区大小的字符缓冲输入流 public BufferedReader(Reader in,inr size):创建指定缓冲区大小的字符缓冲输入流对象 成员方法: public int read() throws IOException:一次读取一个字符

2022-02-10 22:09:29 808

原创 字符输入输出流

1.字符输入流1.java.io.Reader:字符输入流,抽象类 具体的子类:字节输入流通向字符输入流的桥梁:InputStreamReader2.字符缓冲输入流: 构造方法: public InputStreamReader(InputStream in):使用默认字符集进行解码 public InputStreamReader(InputStream in,String charsetName)throws UnsupportedEncodingException:使

2022-02-08 18:09:22 2244

原创 字节缓冲流

1.字节缓冲输入流1.BufferedInputStream:字节缓冲输入流(提供默认的缓冲区大小)构造方法:public BufferedInputStream(InputStream in):创建字节缓冲区输入流对象,默认缓冲区大小public BufferedInputStream(InputStream in,int size):创建字节缓冲输入流对象,指定缓冲区大小读数据可以借助底层的字节输入流2.代码实现 public class BufferedInputStreamDem

2022-02-07 20:50:18 915

原创 IO流--字节流

1.流的分类1.按流的方向划分: 输入流-->读数据 输出流-->写数据2.按流的类型划分: 字节流:先出现 字符流:后出现3.先按类型划分,再按流的方向划分 字节输入流:抽象类InputStream 字节输出流:抽象类OutputStream 字符输入流:Reader 字符输出流:Writer2.字节输出流2.1 OutputStream类1.OutputStream:

2022-02-07 20:49:48 46

原创 File类

1.File类1.JDK提供的一个类,文件和目录路径名的抽象表现形式1.1构造方法1.仅仅是一个路径的表示,不代表具体事物是一定存在的 以下三种方式效果其实一样public File(String pathname)//参数就是路径public File(String parent,String child)public File(File parent,String child)2.代码实现 public class FileDemo{ public sta

2022-02-07 20:49:15 53

原创 Runtime类

1.Runtime类1.每个java程序都有一个Runtime类的Runtime,和运行环境相关 这个类就是单例模式之饿汉式2.代码实现: public class RuntimeDemo{ public static void main(String[] args)throws Exception{ Runtime runtime = Runtime.getRuntime(); //执行系统环境指令指令

2022-02-07 20:48:32 131

原创 设计原则与设计模式

1.面向对象设计原则1.单一职责原则:低耦合,高内聚(23种设计模式必须遵循)2.开闭原则:对修改关闭,对扩展开放(不修改现有代码基础上将扩展性提高)3.里氏替换原则:任何父类出现的地方都可以用子类代替(反射中可以用到)4.依赖注入原则:依赖于抽象,不依赖于具体实现5.接口分离原则:不应该强迫程序依赖它们不需要使用的方法,不应该将所有操作放在一个接口中6.迪米特原则:一个对象应该对其他对象尽可能少的了解,降低耦合2. 23种设计模式创建型模式(对象的创建):简单工厂模式,工厂方法模式,抽象

2022-02-07 20:47:26 150

原创 Timer类

1. Timer类java.util.Timer定时器类,使用定时器完成定时任务,任务可以安排一次执行,或者定期重复执行1.1 构造方法1.空参构造:创建一个新的定时器 Timer()1.2 成员方法1. public void cancle():终止此计时器,丢弃任何当前计划的任务 public void schedule(TimerTask task,Date time): 参数一:由计数器进行一次性或者重复执行的任务,抽象类 参数二:Stri

2022-02-07 20:44:19 432

原创 死锁问题和线程池

1.死锁问题1.1死锁1.多线程出现安全问题可以使用同步方法或者同步代码块以及Lock解决安全问题,但是有可能出现死锁2.死锁:当前多个线程操作不是同一个子类对象,可能会造成线程互相等待情况 解决方法:使用生产者和消费者模式1.2 生产者消费者模式思路以及实现代码1.SetThread类-->生产者所在线程资源类 GetThread类-->消费者所在线程资源类 Student类-->生产者线程不断产生学生数据,消费者线程不断使用学生数据 StudentTes

2022-02-07 20:43:41 212

原创 同步机制,方法,Lock接口

1.同步机制1.校验线程安全问题的标准 (1)是否为多线程环境 (2)是否是共享数据 (3)是否有多条语句对共享数据操作2.标准一和标准二不能修改,只能针对标准三.java提供了一个技术"同步机制" 将多条对共享数据的操作包裹起来,格式 sybchronized(锁对象){ }//锁对象可以是任意java类对象,必须保证多个线程使用的锁对象是同一个锁对象1.1 同步机制代码实现 public class MyMethod implements Runn

2022-02-07 20:43:10 82

原创 线程生命周期和状态转换及线程中方法

1.线程的生命周期及其状态转换1.1 线程六种状态1. (1)NEW(新建状态):创建一个线程对象后,该线程对象就处于新建状态,此时他不能运行,JVM只为其分配了内 存,没有表现出任何线程的动态特征 (2)RUNNABLE(可运行状态):当新建状态下的线程对象调用了start()方法,此时就会从新建状态进入可运行状态.RUNNABLE又可分为两种状态: READY(就绪状态):线程对象调用start()方法后,等待JVM的调度,此时线程并没有运行 RUNNING(运行状态):线程

2022-02-07 20:42:25 200

原创 线程的创建方式

1.线程的创建1.1 进程与线程的概念1.什么是进程? 正在运行的客户端程序,能够调用系统资源的独立单位 比如:同时运行QQ和音乐 看似并发执行,其实某个时间点只能用一个程序,也就是只能进行一个进程.操作系统会为每一个进程分配一段有限的CPU使用时间,CPU在这段时间执行某个进程,然后会在下一时间段切换到另一个进程中执行,由于CPU执行时间非常短,所以给人并发执行的感觉2.什么是线程? 依赖于进程存在,一个进程中可能包含多个线程,每一个线程在某个线程组中 线程是能够执行的独立单元

2022-01-23 20:36:55 811

原创 Coolections工具类

1. Collections工具类1.用于List集合排序2.方法: public static T max(Collection<? extends T> coll):获取Collection中的最大值 public static <T> int binarySearch(List<? extends Comparable<? super T>> lsit,T key):二分搜索法(折半查找):查询集合中指定元素第一次出现的索引值(前

2022-01-23 20:36:23 296

原创 Map接口及其子实现类

1. Map接口1.(1)Map<K,V>集合:能够描述现实世界事物的实体类 (2)将键映射到值的对象,表示一系列键值对元素 (3)Map针对键有效,跟值无关,值可以重复,但是键必须是唯一的2.子实现类: (1)HashMap:基于哈希表实现Map接口 特点:允许null值和null键存在,线程不安全的类,不能保证迭代顺序永久不变 (2)TreeMap:底层是一个红黑树结构1.1 Map的基本功能1. 获取长度: public int size():获

2022-01-23 20:35:42 175

原创 Set接口和Set子实现类

1.Set接口1.Set接口特点:不包含重复元素,元素唯一 无序性2.Set和List的存取方式一样2.HashSet集合1.当调用HashSet的add()方法存入元素时,会先调用hashCode()方法,获取哈希值,根据对象的哈希值计算出一个存储位置,如果位置没有元素,则存入;如果该位置有元素,则调用equals()方法让当前存入的元素和该位置上的元素进行比较.返回false,将元素存入集合,返回true,则将元素舍弃. 自定义类型需要重写hashCode()和equals()方

2022-01-23 20:35:06 357

原创 List接口三个子实现类

1. List三个子实现类1.1 List集合三个子实现类特点1.ArrayList:是我们通用的,单线程程序中,执行效率最高.(List集合默认使用) 底层结构是数组结构:查询快,增删慢. 是一个线程不安全的类,不同步.2.Vector:底层数据结构也是数组,查询快,增删慢 是一个线程安全的类,同步,执行效率低3.LinkedList:底层数据结构是链表:查询慢,增删快 线程不安全的类,效率高1.2 Vector集合1.特有功能: public voi

2022-01-23 20:34:09 579

空空如也

空空如也

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

TA关注的人

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