- 博客(46)
- 收藏
- 关注
原创 SpringBoot-ssm流程
1、创建项目lombok、devtool、spring web、mybatis、oracle driver2、在src/main下创建文件webappwebapp/WEB-INFwebapp/WEB-INF/content3、application.properties# 配置连接池,使用默认推荐的HikariCPspring.datasource.driver-class-name=oracle.jdbc.OracleDriverspring.datasource.url=jdbc:
2021-06-01 12:01:40 192
原创 1-Spring的IoC-DI容器
file:///C:/Users/Administrator/Desktop/Spring/1-Spring的IoC-DI容器.html 1/34Spring的IoC容器IoC在程序开发中,实例的创建不再由调用者管理,而是由Spring容器创建。Spring容器会负责控制程序之间的关系,而不是由程序代码直接控制,因此,控制权由程序代码转移到了Spring容器中,控制权发生了反转,这就是Spring的IoC思想基础理论回顾Spring是一个轻量级的控制反转IoC/DI依赖注入和面向切面AOP的开源
2021-05-08 17:52:03 485
原创 Mybatis执行流程
加载mybatis全局配置文件(数据源、mapper映射文件等),解析配置文件,MyBatis基于XML配置文件生成Configuration对象和一个个MappedStatement(包括了参数映射配置、动态SQL语句、结果映射配置),其对应着<select | update | delete | insert>标签项SqlSessionFactoryBuilder通过Configuration对象生成SqlSessionFactory,用来开启SqlSessionSqlSession对象
2021-04-25 17:02:08 145
转载 RowBounds
在 mybatis 中,使用 RowBounds 进行分页,非常方便,不需要在 sql 语句中写 limit,即可完成分页功能。但是由于它是在 sql 查询出所有结果的基础上截取数据的,所以在数据量大的sql中并不适用,它更适合在返回数据结果较少的查询中使用最核心的是在 mapper 接口层,传参时传入 RowBounds(int offset, int limit) 对象,即可完成分页。不需要修改xml配置添加limitmapper 接口层代码如下List<Book> selectBoo
2021-04-23 16:15:33 2132
原创 概述MyBatis
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。以开发sql语句的工作量为代价换取高灵活性##Hello MyBatis1、添加依赖<dependency> &
2021-04-17 14:51:23 63
转载 监听器Listener应用
监听器是指专门用于在其他对象身上发生的事件或者状态改变进行监听和相应处理的对象,当被监听的对象发生变化时立即采取相应的行动Web监听器定义:Servlet规范中定义的一种特殊类用于监听ServletContext、HttpSession、ServletRequest等域对象的创建与销毁事件用于监听ServletContext、HttpSession、ServletRequest域对象的属性attribute修改的事件监听事件的类型是通过类所实现的接口进行区分可以在事件发生前和发生后作出一些必要
2021-04-14 20:21:52 419
原创 9大默认对象
JSP容器根据servlet API而提供了某些隐含对象。可以使用标准的变量来访问这些对象,可以在JSP页面直接使用这九大对象page this 封装页面对象,是Object类型的,该对象代表了正在运行的由JSP文件产生的类对象,相当于this。一般情况下不建议使用该对象是Object类型的,所以可以合法调用的方法都是Object中定义的方法toString equals hashcode wait notify notifyAll在jsp页面种声明了一个方法pp<%!
2021-04-12 18:42:33 213
转载 重要的API
configinit()和init(ServletConfig config)getInitParameter():StringgetServletConfig().getInitParameter("height")response响应HttpServletResponse接口属于Servlet规范,存在于servlet-api.jar中,由服务器提供接口的实现类,主要用于封装服务器的响应信息,可以将doGet或doPost的响应信息写出到【响应体】中ServletResponse隐藏
2021-04-09 19:29:00 80
原创 web 登录
public class LoginServlet extends HttpServlet { //针对get请求的处理,需要生成一个带有form表单的输入页面 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html;charset=UTF-8");
2021-04-07 20:20:32 107
原创 tomcat的结构和配置
tomcat目录结构bin:tomcat启动、关闭之类的脚本文件conf:tomcat各种配置文件。其核心配置文件有:1、server.xml 配置与server相关信息。2、web.xml是web应用(一个web应用相当于一个站点)的父配置文件。3、tomcat-users.xml 配置tomcat相关信息(管理tomcat服务器的用户名、密码和权限等)lib:tomcat启动所依赖的jar包logs:tomcat的系统日志temp:tomcat运行时产生的临时文件webapps:web应用
2021-04-07 20:07:24 149
原创 Web开发
web应用概述WEB在英语中web即表示蜘蛛网的意思,它用于表示Internet主机上(服务器)供外界访问的资源Web应用程序是一种可以通过Web访问的应用程序。Web应用程序的一个最大好处是用户很容易访问应用程序。用户只需要有浏览器即可,不需要再安装其他软件。应用程序有两种模式C/S、B/S。C/S是客户端/服务器端程序,也就是说这类程序一般独立运行。而B/S就是浏览器端/服务器端应用程序,这类应用程序一般借助服务器运行,需要IE等浏览器来查看运行结果。B/S架构浏览器/服务器架构Browser
2021-04-07 19:49:17 162
原创 今天开始接触Html
段落标签 <p>这是一个段落,因为他比较长,<br>我们不希望它自动换行,所以我们在合适的地方让它换行</p>效果:有序列表 <h2>有序列表</h2> <ol start="5" reversed type="I"> <li value="4">列表项1</li> <li>列表项2</li> <li>列表项
2021-03-26 21:44:41 93
原创 上次学到了list的几种实现类,接着上次没学完的LinkedList
类定义public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>,Cloneable, java.io.Serializable//Deque是队列接口,提供一个双端队列的访问方法实现底层实现为双向链表private static class Node<E> { //节点定义 E item; //具体存储的数据 N
2021-03-22 21:07:45 84
原创 集合框架
数据结构1、线性表数组随机访问O(1),删除和新增O(n)2、链表随机访问O(n),删除和新增O(1)概述集合Java针对常见的数据结构进行了封装,提供了一组工具类java.util包集合只能存放对象集合存放的是多个对象的引用,对象本身还是放在堆内存中集合可以存放不同类型,不限数量的数据。定义集合变量时如果不指定数据类型,则默认数据类型为ObjectList cc=new ArrayList();cc.add("abc");Object obj=cc.get(0); //Strin
2021-03-22 20:58:45 88
原创 map接口
Map接口Map接口Map接口的定义Map接口中常见方法Map实现类HashMap构造器HashMap的存储结构HashMap的put方法Map接口哈希表就是一种以键-值(key-indexed) 存储数据的结构,只要输入待查找的值即key,即可查找到其对应的值。哈希的思路很简单,如果所有的键hashCode都是整数,那么就可以使用一个简单数组来实现:将键作为索引,值即为其对应的值,这样就可以快速访问任意键的值。简单的计算方法hashcode%数组长度=【0,数组的长度-1】它提供了一组键值的映射
2021-03-01 20:34:09 108
原创 set接口和数据结构
Set接口,数据结构Set接口实现类HashSetHashSet的特征LinkedHashSetTreeSet数据结构哈希表哈希冲突散列算法二叉树Set接口特点:无序、不允许重复,是Collection接口的子接口没有定义新方法,所有的方法都是Collection接口中所定义的方法实现类HashSet存储采用哈希表的方式进行存储,HashSet采用HashCode算法来存取集合中的元素,因此具有比较好的读取和查找性能LinkedHashSet是在HashSet的基础上添加一个额外的链表结构可以记
2021-03-01 20:33:33 110
原创 泛型、泛型应用、泛型好处、泛型类
泛型、泛型应用、泛型好处、泛型类泛型什么是泛型使用泛型的定义典型场景Comparable接口泛型的好处泛型类集合类中定义范型有界类型调用泛型类通配符参数通配符参数的语法使用小结泛型类泛型方法泛型类的继承泛型的实现原理泛型的局限性泛型当将一个对象放入集合中,集合不会记住此对象的类型,当再次从集合中取出此对象时,改对象的编译类型变成了Object类型,但其运行时类型任然为其本身类型。List list=new ArrayList();list.add(new Random());list.add("a
2021-02-25 21:18:12 408
原创 数据结构、集合
数据结构、集合概述、集合框架中的接口数据结构线性表链表概述集合数组和集合的比较集合框架中的接口Collection接口常见方法Iterator迭代器List接口Set接口常见的List接口的实现类ArrayList实现类VectorLinkedListList总结修改同时并发迭代访问的问题一个线程使用迭代器访问数据,另外一个线程修改数据对象赋值和克隆数据结构线性表(数组)存储区间是连续的,占用内存严重,故空间复杂度很大。但数组的二分查找(前提是必须有序)时间复杂度小,为O(1);数组的特点是:寻
2021-02-25 21:17:23 95
原创 线程安全(实现多个线程的有序执行)
线程安全多线程的执行顺序不可重现,但是必须要求执行结果必须可以重现线程的共享数据操作不完整性就一定会出现数据被破坏,而导致结果无法预知的问题—线程的安全问题同步处理的引入在java语言中存在两种内建的synchronized语法:synchronized代码块和synchronized方法( 静态方法和非静态方法)可以解决线程安全问题首先synchronized将并行改为串行,当然会影响程序的执行效率,执行速度会受到影响。其次synchronized操作线程的堵塞,也就是由操作系统控制CPU的内核
2021-02-22 20:23:03 291
原创 今天学习更多有关流的应用
过滤流类型过滤流就是在节点流的基础上附加功能过滤流FilterInputStream/FilterOutputStream和FilterReader/FilterWriterpublic class FilterInputStream extends InputStream { //典型的装饰模式protected volatile InputStream in; //被装饰目标protected FilterInputStream(InputStream in) { //通过构造器组装被装饰
2021-01-26 20:15:07 148
原创 学习流模型,好晕 知识点太多了
流模型主要目的:屏蔽具体实现的区别,使用统一的方法进行编程输入和输出字节和字符节点和过滤 装饰模式BIO NIO AIO字节流父类InputStream和OutputStream一次一字节的操作方式,一般用于声音、图像、视频之类的二进制文件InputStream方法: - read():int -1 - read(byte[]):int -1 - close():void - FileInputStream主要用于操作文件 - System.in 主要用于接收用户输入Outpu
2021-01-25 19:34:43 187
原创 输入输出种的流模型、扩展类的功能、File类、文件过滤器FilenameFilter、Path和Paths以及Files、字节流
输入输出种的流模型、扩展类的功能、File类、文件过滤器FilenameFilter、Path和Paths以及Files、字节流输入输出应用编程输入输出种的流模型流概念流的分类扩展类的功能继承装饰模式在IO流定义中使用装饰模式File类常见的构造方法需要记忆的方法静态属性访问文件名的方法文件检测相关方法常见操作文件过滤器FilenameFilter语法糖Lambda表达式Path和Paths以及FilesPath相关方法Files工具方法字节流基本输入输出方法以下为今天的总结内容:输入输出种的流模型、扩展
2021-01-21 21:40:35 169
原创 程序出错老看不懂,今天专门去总结了一下程序异常的情况
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.N
2021-01-20 23:54:38 1478
原创 学习接口的相关操作
接口允许多重继承一个类在继承另一个类的同时,还可以实现多个接口public class Person { public static void main(String[] args) { IA a1 = new AImpl(); B a2 = new AImpl(); a1.pp(); }}interface IA { public void pp();}class B { public void pp() { System.out.println("this is
2021-01-19 19:42:15 410 1
原创 抽象类的概念和应用方法
抽象类面向对象编程的核心是面向抽象编程,一般依赖抽象不依赖具体public class A{public void pp(Pig pig){} //如果进行切换类型,则必须进行修改源代码}//-------------public class A{public void pp(Animal animal){} //这里可以任意更换Animal的子类}class Animal{}class Pig extends Animal{}class Cat extends Animal{}p
2021-01-18 20:00:46 947
原创 多态性
多态性多态性是发送消息给某个对象,让该对象自行决定响应何种行为。通过将子类对象引用赋值给超类对象引用变量来实现动态方法调用public class Test1 { public static void main(String[] args) { Fa cc=new Fa(); //调用的是一个名称为pp的方法,但是参数不同执行的处理不同 cc.pp();//Fa...pp cc.pp(12);//Fa.pp(int) }}class Fa{ public void pp
2021-01-15 22:11:42 190
原创 继承
继承继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。继承是is-a的相互关系继承的优点将所有子类的共同属性放入父类,实现代码共享,避免重复,提高开发效率可以使得修改扩展继承而来的实现比较简单继承的缺陷父类变,子类就必须变继承破坏了封装,对于父类而言,它的实现细节对与子类来说都
2021-01-15 21:48:25 157
原创 封装和UML
封装是指将现实世界中存在的某个客体的属性与行为绑定在一起,并放置在一个逻辑单元内。在面向对象程式设计方法中,封装Encapsulation是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。既可以实现对客体属性的保护作用,又可以提高软件系统的可维护性只要用户接口不改变,任何封装体内部的改变都不会对软件系统的其他部分造成影响 封装隐藏实现细节,并对外提供了公共的访问方式封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问要访问该类的代码和数据,必须通过严格的接口控制。
2021-01-12 23:27:39 722
原创 面向对象的概念
终于学到了面向对象了 加油程计划和说明1、掌握面向对象的基本编程思想【重点】2、了解类和创建对象3、理解引用变量赋值4理解构造器和成员方法的定义方式面向对象概论面向对象的三大基本特征是:封装、继承、多态封装隐藏了类的内部实现机制,从而可以在不影响使用者的前提下改变类的内部结构,同时保护了数据继承是为了重用父类代码,同时为实现多态性作准备多态性是发送消息给某个对象,让该对象自行决定响应何种行为。通过将子类对象引用赋值给超类对象引用变量来实现动态方法调用。编程概述面向过程是一.
2021-01-11 23:42:00 1103
原创 多维数组和字符串
多维数组针对数组中的元素类型没有特殊要求,所以允许数组的元素是数组。多维数组可以理解为数组的数组,数组中的每个数组元素可以是一个数组,但是不要求每个充当元素的数组长度一致包装类和Number一般地当需要使用数字的时通常使用内置数据类型,如byte、int、long、double 等。然而在实际开发过程中,经常会遇到需要使用对象,而不是内置数据类型的情形。为了解决这个问题,Java 语言为每一个内置数据类型提供了对应的包装类。所有的数值类型数据的包装类Integer、Long、Byte、Double
2021-01-11 11:03:43 464
原创 理解引用数据类型
今天认识到了数组更深层次的知识,很绕啊brr=arr意思是将arr所代表的复杂类型数据的地址传递给brr变量,结果是brr和arr变量使用的是同一个复杂类型数据,不管是brr修改或者arr修改,实际上修改是同一个数据,会发现一个修改,另外一个也同时发生变化数组复制备份:注意这里不是地址值的复制,因为地址值的复制brr=arr,实际上两个变量引用的是同一个复杂类型数据需要两个不同复杂类型数据,操作中不相互影响使用循环作数组复制—克隆扩展:实现一个可变长的数组【Java中要求数组的长度是确定,
2021-01-08 22:23:45 623
原创 数组
今天学习了好多 一起每天进步一点。数组数组是表示多个相同类型变量的集合(在一个数组中所存放的所有元素的类型必须一致),可以使用共同的名字引用它属于复杂数据类型由类型相同的元素组成的有顺序的数据集合Java数组是固定的不能扩展[长度一旦声明,不能修改]可以存储基本数据类型或对象数组可以定义为任意数据类型,并且可分为一维数组或多维数组一维数组一维数组实质上是相同类型变量的列表。要创建一个数组必须首先定义数组变量所需的类型。通用的一维数组的声明格式是:type var-name[ ];i
2021-01-07 21:54:23 224
原创 方法的声明和调用!!
终于开始学习新的知识了 ,今天了解到了方法的概念,分享给大家。方法的概念多次反复编写明显是不合适的,而结构化编程中的模块化在Java中的体现就是自定义方法。例如:输出1-100之间所有素数public class Test1 { // 特殊的方法,用于表示程序的执行起始点,也就意味着不能写错 public static void main(String[] args) { for(int i=2;i<101;i++){ if(abc(i)){ //调用处传入的数据是实参 Syste
2021-01-07 21:29:41 325
原创 继续练习语法
这些题真的很有代表性,再编码的过程中,遇到了很多问题,明显感觉的到编码的不简单 ,加油!通过键盘输入一个年份,输出判断某一年是否为闰年能被4整除并且不能被100整除或者能被400整除`public class A1 { public static void main(String[] args) { int year = 0; Scanner sc = new Scanner(System.in); while (true) { System.out.println("请输入年份:");
2021-01-06 21:56:11 77
原创 做练习碰到很多问题,总结一下题型和解决问题的方法。
代码调试第一步:在代码视图的左侧双击添加一个断点第二步:右键debug as à java application第三步:自动单击yes切换到debug视图第四步:F5进入方法体内、F6逐步、F7返回上一个断点、F8返回到下一个断点、跳到方法头、也可以直接观察表达式的值第五步:如果已经熟悉了业务逻辑那么可以清空断点和查看的变量后直接切换视图到java编程视图。debug单步执行在程序中添加断点。在指定行的最前面双击数据左键即可,看到的效果是这行语句前会出现一个蓝色的小圈在代码的空白区域
2021-01-05 21:53:13 251
原创 今天针对之前学习到的语句,做了一些比较典型的练习题。
这些题可以很好的锻炼这些语句的综合运用,大家也可以试试。九九乘法口诀表public class Test7 { public static void main(String[] args) { for(int i=1;i<=9;i++) {//控制行数 for(int k=1;k<=i;k++) {//控制每行的列数 System.out.print(k+"*"+i+"="+(i*k)+"\t"); } System.out.println(); } }}编程实现判断一
2021-01-04 19:46:18 442
原创 今天学习Java的运算符和几种基础的语句
先记录一下之前没有注意到的一些东西valueOf和parseInt的区别public static Integer valueOf(String s) throws NumberFormatException 返回值得类型为包装类,底层实现其实就是parseIntpublic static int parseInt(String s) throws NumberFormatException 返回值类型为原生类型数值与字串的转换数值转换为字串有3种方法: Strings=String.valu
2021-01-03 21:49:22 165
原创 JAVA基础概念
Java语言一种面向对象的语言一种平台无关的语言,必须程序运行的解释环境一种健壮的语言,吸收了C/C++语言的优点,但是去掉了影响程序健壮性的部分,例如指针、内存的申请与释放等Java应用场景Java编程语言是一种广泛应用于互联网应用的高级计算机语言,主要应用于网络编程和互联网电子商务应用,特别适合于Internet应用程序开发JVM、JRE和JDK的区别JVM -java virtual machine在真实机器中用软件模拟实现的一种想象机器 ,java虚拟机负责解释执行字节码文件,是可
2020-12-29 21:40:23 265
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人