笔记
名字真的很急用
“格拉条”阜阳乡镇街边的一种地道美食,每次回家都会来上一碗...老板多放辣椒多放醋呀...
展开
-
我有一个ArrayList<Integer>集合,现在我想添加一个字符串数据,如何实现?
反射可以越过泛型的机制。代码如下package fanshe_test;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.util.ArrayList;public class example { public static void main(String[] args) throws NoSuchMethodException, Secur原创 2021-07-03 18:42:44 · 144 阅读 · 1 评论 -
JAVA多线程之生产者和消费者案例
生产者和消费者案例中包含的对象。奶箱类Box 定义一个成员变量,表示第x瓶奶,提供存储奶和获取奶的操作生产者producer 实现Runnable接口 重写run方法,调用存储牛奶的操作消费者customer 实现Runnable接口 重写run方法,调用获取牛奶的操作测试类BoxDemo,里面有main方法创建奶箱对象 这里是共享数据区域创建生产者对象,把奶箱对象作为构造方法的参数,因为这个类需要调用存储牛奶的操作创建消费者对象,把奶箱对象作为构造方法的参数,因为这个类需要调用获取牛奶的操原创 2021-07-03 18:11:58 · 108 阅读 · 1 评论 -
Lock实现卖票代码
Lock锁。Lock实现提供使用synchronized方法和语句可以获得更广泛的锁定操作。Lock中提供了获得锁和师释放锁的方法。void lock() 获得锁void unlock() 释放锁Lock是接口不能实例化,这里采用了她的实现类ReentrantLock来实例化。ReentrantLock的构造方法。ReentrantLock()创建一个ReentrantLock的实例。代码如下。package threadtest02;import java.util.concur原创 2021-07-03 17:04:02 · 197 阅读 · 2 评论 -
线程安全问题-synchronized(方法)火车票卖票代码演示
同步方法。同步方法就是把synchronized关键字加到方法上,格式: 修饰符 synchronized 返回值类型 方法名 (方法参数){}同步方法的锁对象是什么?this同步静态方法。同步静态方法就是把synchronized关键字加到静态方法上,格式: 修饰符 static synchronized 返回值类型 方法名 (方法参数){}同步静态方法的锁对象是什么?类名.class(反射机制)下面代码演示火车票买票。package threadtest;public clas原创 2021-07-03 16:28:12 · 158 阅读 · 4 评论 -
免费链接:springmvc所需有的jar包
链接:https://pan.baidu.com/s/10iRbYio0yiVH0q8q5zm-vQ提取码:ct3j复制这段内容后打开百度网盘手机App,操作更方便哦原创 2021-06-18 16:09:58 · 119 阅读 · 1 评论 -
实现第一个简单的spring-mvc的程序
这是整个项目的结构图,方便大家对照。lib下面的jar包实现第一个FirstController类,这里用的注解模式,不需要实现借口了。import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;@Controllerpubl原创 2021-06-18 15:06:15 · 103 阅读 · 2 评论 -
ServletRequest的请求转发和Response重定向的不同
请求转发特点:发送了一次请求,响应一次,和request域对象配合使用,可以实现值的传递转发路径:转发动作是在服务器内部实现的,所以转发路径不要携带项目名称请求重定向特点:发送了二次请求,响应了二次,不能跟Request域对象配合使用。重定向路径:重定向路径在浏览器端执行的,所以路径需要带项目名称。请求转发代码RequestDispatcher forwardobj =request.getRequestDispatcher(“另一个资源路径”);forwardobj.forward(re.原创 2021-06-17 21:21:26 · 143 阅读 · 1 评论 -
Servlet事件监听器来写一个统计网站当前人数-完整代码
许多网站都具有统计在线人数的功能,通常情况下,一个用户在进入网站时,会被创建一个HttpSession对象,当用户离开网站时,HttpSession对象就会被销毁,HttpSessionListener监听器便可以监听web应用中的HttpSession对象的创建和销毁过程,因此,我们可以利用实现HttpSessionListener接口的监听器来统计网站的在线人数。首先,我们创建一个实现HttpSessionListener接口的监听器类CountListener,CountListener类用于实现网原创 2021-06-15 15:42:29 · 358 阅读 · 2 评论 -
Spring简单的练习AspectJ,来完成aop-菜鸟一枚
AOP,即面向切面编程,它是oop(面向对象编程)的一种补充,在传统的业务处理代码中,通常会进行事务处理,日志记录等操作,虽然使用OOP可以通过组合的形式或者继承的方式来达到代码的重用,但如果要实现某个功能(如日志记录),同样的代码会分散到各个方法中。这样,如果想要关闭某个功能,或者进行修改,就必须要修改所有的相关方法。为了解决这个问题,AOP思想随之产生,AOP采用横向抽取机制,将分散在各个方法中的重复代码抽取出来,然后在程序编译或者运行时,再将这些提前出来的代码应用到需要执行的地方。AOP相关概念原创 2021-06-11 15:22:59 · 188 阅读 · 2 评论 -
Spring使用注解的方式来实现简单的打印机功能,附完整代码,菜鸟教程
上一篇写的是正常情况下的Spring实现打印机的功能,必须在applicationcontext.xml中实现依赖注入,还要在print 中实现set,get方法,比较麻烦。为此,老师又讲了实现注解的简单方法。代码如下。下面是各个包下对应的类和接口的代码。这是第一个包下面的对应类和接口。package com.lnk;import org.springframework.stereotype.Service;@Service("myback")@Service //实例化的对象名 默认原创 2021-06-10 16:59:43 · 806 阅读 · 2 评论 -
Spring简单实现打印机功能-附完整代码
在我们初次学习Spring时,肯定会遇到这个简单的操作,让我们菜鸟来感受一下Spring的魅力所在,今天上课就简单的练习了一下。老师上课说,模拟此功能就是用来让我们这些菜鸟来体验一下Spring的扩展开放功能,方便我们对类对象的操作修改以及更新,而不需大改工程项目,这就是比new一个对象的好处。自己描述的语言可能不是很正确,欢迎指正第一步,来看项目的结构第二步就是写我们需要的Java对象,也就是bean。以及接口包lnk下的类:public class Back implements Lnk原创 2021-06-10 16:36:05 · 1314 阅读 · 1 评论 -
Spring的入门程序--新手教程
我用的是eclipse来做一个简单的Spring入门程序案例,来简单的了解一下运行过程以及控制反转(ioc)。第一步,在我们的lib下导入我们需要的jre包,第二步,建立我们需要的持久化对象,也就是bean对象,也就是Java对象。package com.entity;public class Child { public void study() { System.out.println("好好学习 天天山下"); }}package com.entity;pu原创 2021-06-10 15:37:53 · 254 阅读 · 4 评论 -
Mybatis实现连接查询和分段查询以及association和collection的运用
首先我们创建我们的数据库实现表与表之间的关系 id dept_name ------ ------------- 1 开发部 2 市场部 3 客服部 4 xxxx部门 5 yyyyy部门 6 ttt部门 这是我们数据库表中部门和员工信息,其中deptid作为外键连接表dept中的ID主键。 id name sex e原创 2021-06-04 14:16:14 · 468 阅读 · 1 评论 -
过滤器Filter
在web开发中,为了实现某些特殊的功能,经常需要对请求和响应消息进行处理,例如,记录用户的访问信息,统计页面访问次数,验证用户身份等。filter作为servlet2.3中新增的功能,可以实现用户在访问某个目标资源之前,对访问的请求和响应进行相关处理。什么是FilterFilter被称为过滤器或者拦截器,其基本功能就是对servlet容器调用servlet的过程进行拦截,从而在servlet进行响应处理前后实现一些特殊功能。这就好比现实中的污水净化设备。当浏览器访问服务器中的目标资源时,会被Filte原创 2021-05-31 17:25:15 · 145 阅读 · 1 评论 -
mybatis的配置以及连接MySQL数据库进行复杂数据的select和insert
废话不多说,直接上代码第一步肯定是先创建直接的数据库mybatis,然后建立自己的Student,然后进行数据库的数据插入,一便我们后续的进行操作。INSERT INTO Student VALUES ('1','joy','18','13352598223');INSERT INTO Student VALUES ('2','tom','16','13352008223');INSERT INTO Student VALUES ('3','jack','20','18852598223');SE原创 2021-05-28 15:10:15 · 576 阅读 · 1 评论 -
final关键字
final关键字可用于修饰类,变量和方法,它有“无法改变”或者“最终”的含义,因此被final修饰的类,变量和方法将具有一下特性。•final修饰的类不能被继承。•final修饰的方法不能被子类重写。•final修饰的变量(成员变量和局部变量)是常量,只能赋值一次。final关键字修饰类JAVA中的类被final关键字修饰后,该类不可以被继承,也就是不能够派生子类。final class animal{//方法体为空}class dog extends animal{//方法体为空}原创 2021-05-26 21:17:47 · 529 阅读 · 1 评论 -
super关键字
当子类重写父类的方法后,子类对象将无法访问父类被重写的方法,为了解决这个问题,JAVA专门提供了一个super关键字用于访问父类的成员。例如访问父类的成员变量,成员方法和构造方法。使用super关键字访问父类的成员变量和成员方法,具体格式如下。super.成员变量super.成员方法(参数1,参数2…)通过一个案例来演示一下super关键字的用法class animal{String name=“动物”;void shout(){System.out.println(“动物发出叫声”);}原创 2021-05-26 17:36:18 · 186 阅读 · 2 评论 -
JDBC事务处理
在数据库操作中,一项事务是由一条或者多条数据库的SQL语句组成一个不可分割的工作单元,只有当事务中所有操作都正常完成,整个事务才能被提交到数据库中,如果一项操作没有完成,则整个事务会被撤销。例如我们的银行转账业务。针对JDBC处理事务的操作,在Connection接口中,提供了三个相关的方法,具体如下。setAutoCommit(boolean autoCommit)设置是否自动提交事务。commit()提交事务。rollback()撤销事务。我们来演示一下银行转账业务的事务数据库操作语言原创 2021-05-25 22:00:11 · 231 阅读 · 3 评论 -
字符流
前面已经讲过InputStream和OutputStream类在读写文件时操作的都是字节,如果希望在程序里操作字符,使用这二个类就不太方便了,为此jdk提供了字符流,同字节流一样,字符流也有二个抽象的顶级父类,分别是Reader和Writer。其中Reader是字符输入流,用于从某个源设备读取字符。Writer是字符输出流,用于向某个目标设备写入字符,它们也有很多子类。字符流操作文件在程序开发,经常需要对文本文件的内容进行读取,如果想从文件中直接读取字符,便可以使用字符输入流FileReader,通过此原创 2021-05-24 21:32:44 · 220 阅读 · 1 评论 -
垃圾回收
在JAVA中,当一个对象成为垃圾后扔会占有空间,时间一长,就会导致内存空间的不足,针对这种情况,JAVA中引入了垃圾回收机制。有了这种机制,程序员不需要过多的考虑垃圾过多的问题,JAVA虚拟机会自动回收垃圾对象所占有的空间。一个对象在成为垃圾后暂时保留在内存中,当这样的垃圾堆积到一定程度时,JAVA虚拟机就会启动垃圾回收器将这些垃圾对象从内存中释放,从而使程序获得更多可用的空间。除了等待JAVA虚拟机进行自动垃圾回收外,还可以通过调用System.gc()方法来通知JAVA虚拟机立即进行垃圾回收。当一个对原创 2021-05-24 21:05:19 · 1240 阅读 · 6 评论 -
字节流
IO流有很多种,按照操作数据的不同,可以分为字节流和字符流,按照数据传输方向的不同又可分为输入流和输出流,程序从输入流中读取数据,向输出流中写入数据。在IO包中,字节流的输入输出流分别用java.io.InputStream和java.io.Outputstream表示,字符流的输入输出分别用java.io.Reader和java.io.Writer表示。字节流在计算机中,无论是文本,图片,音频还是视频,所有文件都是以二进制(字节)形式存在的,IO流中针对字节的输入输出提供了一系列的流,统称为字节流。在原创 2021-05-24 20:50:45 · 459 阅读 · 1 评论 -
JDBC概述和连接MySQL数据库
什么是JDBCJdbc的全称是java数据库连接,它是一套用于执行SQL语句的javaAPI。应用程序可以通过这套API连接到关系数据库,并使用SQL语句来完成对数据库中的数据查询,更新和删除等操作。Jdbc的实现包括三个部分(1)Jdbc驱动管理器:负责注册特定的Jdbc驱动器,主要通过java.sql.DriverManager类实现。(2)Jdbc驱动器API:由sun公司负责制定,其中最主要的接口是java.sql.Driver接口。(3)JDBC驱动器:它是一种数据库驱动,由数据库厂商创原创 2021-05-23 18:15:45 · 1349 阅读 · 5 评论 -
三元运算
在JAVA中有一种特殊的运算叫做三元运算,它和if—else语句类似,语法如下。判断条件 ?表达式1 : 表达式2三元运算会得到一个结果,通常用于对某个变量进行赋值,当判断条件成立时,运算结果为表达式1的结果,否则结果为表达式2的值。例如求二个数x,y中的较大者,如果用if—else语句来实现,具体代码如下。int x=0;int y=1;int max;if(x>y){max=x;}else{max=y;}上面的代码运行之后,变量max的值为1,上述代码片段中的if…else原创 2021-05-17 15:39:26 · 701 阅读 · 1 评论 -
Map接口
在现实生活中,每个人都有唯一的身份证号,通过身份证号可以查询到这个人的信息,这二者是一对一的关系,在应用程序中,如果想存储这种具有对应关系的数据则需要使用jdk中提供的Map接口。Map接口是一个双列集合,它的每一个元素都包含着一个键对象key和值对象Value,键和值对象之间存在一种对应关系,称为映射。从Map集合中访问元素时,只要指定key ,就能找到对应的Value。Map集合常用的方法表void put(Object key, Object value)将指定的值与映射中的值关联Objec原创 2021-05-15 17:21:55 · 104 阅读 · 1 评论 -
杭电2078JAVA
为了能过个好年,xhd开始复习了,于是每天晚上背着书往教室跑。xhd复习有个习惯,在复习完一门课后,他总是挑一门更简单的课进行复习,而他复习这门课的效率为两门课的难度差的平方,而复习第一门课的效率为100和这门课的难度差的平方。xhd这学期选了n门课,但是一晚上他最多只能复习m门课,请问他一晚上复习的最高效率值是多少?Input输入数据的第一行是一个数据T,表示有T组数据。每组数据的第一行是两个整数n(1 <= n <= 40),m(1 <= m <= n)。接着有n行,每行原创 2021-05-13 09:00:59 · 109 阅读 · 1 评论 -
JDK5.0新特性——泛型
集合可以存储任何类型的对象,但是当一个对象存入集合后,集合就会“忘记”这个对象的类型,将该对象取出时,这个对象的编译类型就会变成Object类型,换句话来说,在程序中无法确认一个集合中的元素到底是什么类型的。那么在取出元素时,如果进行强制类型转换就很容易出错。import java.util.*public class example{public static void main(String[] args){ArrayList list = new ArrayList();list.add(原创 2021-05-11 16:21:21 · 135 阅读 · 1 评论 -
Set接口
Set接口简介Set接口和List接口一样,同样继承自Collection接口,它与Collection接口中的方法基本一致,并没有对Collection接口进行功能上的扩充,只是比Collection接口更加严格了。与List接口不同的是,set接口中元素无序,并且都会以某种规则保证存入的元素不出现重复。set接口主要有二个实现类,分别为HashSet和TreeSet,其中,HashSet根据对象的哈希值来确定元素在集合中的存储位置,因此具有良好的存取和查找功能,TreeSet则是以二叉树的方式来存储原创 2021-05-11 16:02:39 · 511 阅读 · 1 评论 -
Iteratot接口
在程序开发中,经常需要遍历集合中的所有元素。针对这些需要,jdk专门提供了一个接口Iterator。Iterator接口也是JAVA集合的一员,但它与collection,map接口有所不同,collection和map接口主要存储元素,而Iterator主要用来迭代访问(即遍历)collection中的元素,因此Iterator对象也被称为迭代器import java.util.*public class example{public static void main(String[ ] args)原创 2021-05-10 17:12:27 · 143 阅读 · 1 评论 -
集合概述(一天一个知识点)
在程序中可以通过数组来保存多个对象,但在某些情况下开发人员无法预先确定需要保存对象的个数,此时数组将不再适用,因为数组的长度是不可变的。为了在程序中可以保存这些数目不确定的对象,jdk中提供了一系列特殊的类,这些类可以存储任意类型的对象,并且长度可变,在JAVA中这些类被称为集合。集合类都位于java.util包中,在使用时注意要导包。集合按照其存储结构可以分为二大类,即单列集合collection和双列集合map。collection:单列集合类的根接口,用于存储一系列符合某种规则的元素,它有二个重要原创 2021-05-10 16:46:52 · 147 阅读 · 1 评论 -
JAVA中static的作用(通俗易懂)
static主要是减少成员变量和方法的多次创建,一旦声明为静态,该成员变量或方法就属于这个类,可以被该类所创建的所有对象共享,就能直接用类名来调用。也就是说大家都要用的东西,我声明为静态,就不会浪费内存,静态的成员变量在编译字节码文件时,是被分配到内存中的静态区,非静态的成员变量是被分配到堆内存。...原创 2021-05-09 16:36:57 · 203 阅读 · 1 评论 -
Static关键字的详细用法
1、static关键字基本概念我们可以一句话来概括:方便在没有创建对象的情况下来进行调用。也就是说:被static关键字修饰的不需要创建对象去调用,直接根据类名就可以去访问。对于这个概念,下面根据static关键字的四个基本使用来描述。然后在下一部分再来去分析static的原理,希望你能认真读完。2、static关键字修饰类java里面static一般用来修饰成员变量或函数。但有一种特殊用法是用static修饰内部类,普通类是不允许声明为静态的,只有内部类才可以。下面看看如何使用。public cla原创 2021-05-09 16:34:18 · 1419 阅读 · 1 评论 -
方法的形参和实参
如果有传递消息的需要,在定义一个方法时,参数列表中的参数个数至少为一个,有了这样的参数,才有将外部消息传送本方法的可能,这些参数被称为形式参数,简称形参。而在调用这个方法时,需要调用者提供与原方法定义匹配的参数(类型,数量,顺序都保持一致),这些实际调用时提供的参数,称为实际参数,检测实参。例如;int max(int num1,int num2)参数 num1和num2为形参。…int a =1;int b=2;…t.max(a,b)参数a,b为实参。形参和原创 2021-05-06 17:52:36 · 1391 阅读 · 1 评论 -
JAVA读入一行文本,并且解决找到我们想要的内容
我们学习了如何读入一个单词或一个字符,但我们需要一次读入一行,因为在很多文件中,一行文字才是一条完整的记录,这时我们就用到了nextLine()String line = in.nextLine();这里的in表示事先定义好的处理控制台或者文件输入的对象。为了确保每次都读入一行,建议用hasnextLine()提前判断一下。while(in.hasnextLine()){String line = nextLine();}假设某个文件中包含某只股票的信息,由于每一行的股票信息都不止一个单词,包原创 2021-05-04 16:43:59 · 847 阅读 · 1 评论 -
判断字符分类的方法
当我们从控制台或文件中读取一个字符时,我们可能会想知道某个字符串中的某个字符是哪一类字符,比如说,数字,字母,还是空白符,或者是大写字母,还是小写字母,这时我们就需要用到character类中的静态方法,判断的结果返回一个boolean,也就是false或者TRUE。Character.isDigit(ch);如果ch是数字0-9中间的一个,那么返回ture,否则返回false。这样的方法还有五个,如下所示:isDigit(char)判断是否为数字。isLetter(char)判断是否是字母原创 2021-05-03 17:41:07 · 382 阅读 · 1 评论 -
文本文件的操作
在JAVA中,读入文本的方便机制,莫过于使用scanner类来完成。不过我们主要使用scanner类来进行控制台的输入,比如说,使用system.in来作为scanner构建方法的参数。事实上这种方法也适合File类对象。首先我们创建一个文件。File inputFile =new File(“input.txt”);然后将这个文本作为参数,构建scanner对象。Scanner in = new Scanner(inputFile);于是,scanner对象就可以把文件作为数据输入源,然后我们就原创 2021-05-03 16:33:18 · 156 阅读 · 1 评论 -
分隔符的路径解决问题
在Windows系统之中路径的分隔符是使用"\",而在Linux系统中分隔符使用"/",而现在JAVA程序如果要想让其具备可移植性,就必须考虑分隔符的问题,所以为了解决这样的困难,在file类中提供了一个常量。public static final String separatorFile file = new File(“c:”+File.separator+“1.txt”);在日后的开发之中,只要遇见路径分隔符的问题,都可以使用separator常量来解决,separator会自动根据当前的运行的原创 2021-05-02 17:49:25 · 272 阅读 · 1 评论 -
线程的状态
每个JAVA程序都有一个默认的主线程,对于JAVA应用程序,主线程就是main方法执行的线程。想要实现多线程,必须在主线程中创建新的线程对象。线程具有创建,运行(包括就绪,运行),等待(包括一般等待和超时等待),阻塞,终止等7个状态。在给定时刻上,一个线程只能处于一种状态。(1):New(创建态),初识状态,线程已经被构建,但尚未启动,即还没有被调用start()方法。(2):runnable(运行态),正在JAVA虚拟机中执行的线程处于这种状态。在JAVA的线程概念中,将操作系统的 就绪(read原创 2021-05-02 16:57:10 · 548 阅读 · 2 评论 -
MyBatis的核心配置-<mappers>元素
mappers元素在配置文件中,元素用于指定MyBatis映射文件的位置,一般可以使用一下4种方式来引入映射文件,具体如下;1.使用类路径引入2.使用本地文件路径引入3.使用接口类引入4.使用包名引入...原创 2021-05-02 15:33:40 · 1292 阅读 · 1 评论 -
杭电OJ-2050JAVA递推公式
折线分割平面,要求尽可能分割出最多的平面,原理其实和直线分割平面一样,都是要使最终所有线的交点最多。递推公式直线:f(n)=f(n-1)+n;折线:f(n)=f(n-1)+4*(n-1)+1;原创 2021-04-30 08:50:24 · 192 阅读 · 1 评论 -
初识MyBatis-脚下留心
在使用“${}”进行SQL字符串拼接时,无法防止SQL注入问题,所以想要即能实现模糊查询,又要防止SQL注入,可以对映射文件某某.xml中模糊查询的select语句进行修改,使用MySQL中的concat()函数进行字符串拼接,具体修改如下。select * from student where username like concat(’%’,#{value},’%’)...原创 2021-04-29 21:36:58 · 92 阅读 · 1 评论