JAVA
txs小山
这个作者很懒,什么都没留下…
展开
-
Mybatis day02_Mybatis的dao层实现原理
1.Mybatis的Dao层实现1.1 传统开发方式1.1.1编写UserDao接口public interface UserDao { List<User> findAll() throws IOException;}1.1.2.‘编写UserDaoImpl实现’,绝大部分代码套路固定,可以框架代理方式动态实现public class UserDaoImpl implements UserDao { public List<User> findAll(原创 2020-08-08 18:23:37 · 208 阅读 · 0 评论 -
spring mvc 初级流程代码
应用上下文对象是通过new ClasspathXmlApplicationContext(spring配置文件) 方式获取的, 但是每次从容器中获得Bean时都要编写new ClasspathXmlApplicationContext(spring配置文件) , '这样的弊端是配置文件加载多次,应用上下文对象创建多次。' 在Web项目中,可以使用S'ervletContextListener监听Web应用的启动',我们可以在Web应用启动时, 就加载Spring的配置文件,创建应用上下文对象Ap.原创 2020-08-01 00:17:13 · 90 阅读 · 0 评论 -
使用xml形式配置springAOP前置增强 快速入门
重点在于配置文件的编写,配置织入关系:告诉spring框架 哪些方法(切点)需要进行哪些增强(前置、后置...)配置文件:aop:config<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:.原创 2020-07-31 01:31:58 · 268 阅读 · 0 评论 -
json
JSON: 1. 概念: JavaScript Object Notation JavaScript对象表示法 Person p = new Person(); --p.setName("张三"); p.setAge(23); --p.setGender("男"); 'var p = {"name":"张三","age":23,"gender":"男"};' 逗号隔开,字符串的kv将值对 * json现在多用于存储和交换文本信息的语法 * 进行数据的传输 * JS原创 2020-07-25 20:29:53 · 111 阅读 · 0 评论 -
dao
Data Access Object原创 2020-07-24 14:55:24 · 271 阅读 · 0 评论 -
cookie session
# 今日内容 1. 会话技术 1. Cookie 2. Session 2. JSP:入门学习## 会话技术 1. 会话:一次会话中包含多次请求和响应。 * 一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止 2. 功能:在一次会话的范围内的多次请求间,'共享数据' 例如:京东购物,多次加入购物车,最后结算。需要知道历史上选中的商品。 3. 方式: 1. 客户端会话技术:Cookie 2. 服务器端会话技术:Session## Cooki原创 2020-07-23 22:21:08 · 92 阅读 · 0 评论 -
cookie 记住上一次访问时间
'cookie 获取特定值''存入cookie的值需要特殊URL编解码处理'package cn.itcast.cookie;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpS原创 2020-07-23 14:21:00 · 134 阅读 · 0 评论 -
Response对象
Response对象 * 功能:设置响应消息 1. 设置响应行 1. 格式:HTTP/1.1 200 ok 2. 设置状态码:setStatus(int sc) 2. 设置响应头:setHeader(String name, String value) 3. 设置响应体: * 使用步骤: 1. 获取输出流 * 字符输出流:PrintWriter getWriter() * 字节输出流:ServletOutputStream getOu原创 2020-07-22 22:00:38 · 114 阅读 · 0 评论 -
c3p0连接池
1、导入jar包c3p0-0.9.5.2.jarmchange-commons-java-0.2.12.jarmysql-connector-java-5.1.37-bin.jar在项目模块的src下创建配置文件名称有规定:c3p0.properties 或者 c3p0-config.xml内容如下:<c3p0-config> <!-- 使用默认的配置读取连接池对象 --> <default-config> <!-- 连接参数 --&g原创 2020-07-17 13:22:54 · 244 阅读 · 1 评论 -
java单元测试junit
测试结果:Assert.assertEquals(3,a)。绿色代表OK,红色代表失败了。初始化,资源释放@Before@Afterimport org.junit.Assert;import org.junit.Test;public class Teacher { @Test public void teach(){ int a=2+3; //断言是3,结果a是5,异常 Assert.assertEquals(3,a);原创 2020-07-15 01:07:54 · 130 阅读 · 0 评论 -
方法引用
常见的引用方式:1、引用类方法:类的静态方法2、引用对象的实例方法:类中的成员方法3、引用类的实例方法4、引用构造器'1'//引用类方法,都是静态方法的引用usePrintable(System.out::println); useConverter(Integer::parseInt);'2'//引用对象的实例方法PrintString ps = new PrintString();usePrinter(ps::printUpper);//Lambda表达式被对象的实..原创 2020-07-14 20:08:17 · 137 阅读 · 0 评论 -
接口组成更新
默认方法之前是实现了某一个接口,实现类就需要重写全部方法, 若是接口中后续追加抽象方法,必然导致所有的实现类要改写,不然是编译报错状态 可以定义新接口,继承原接口,但会导致接口众多, 因此默认方法出来了注意:默认方法有其实现代码,实现类可以重写他的方法,也可以不重写,就是接口中的代码逻辑由于默认方法是有自己的代码实现,类似普通类的方法, 因此在接口的多继承关系下,会出现不确定的情况若是实现类实现的两个接口有相同名称的两个默认方法,实现类讲究必须要重写字节集的默认方法 若是实现的接口中,.原创 2020-07-14 18:01:43 · 152 阅读 · 0 评论 -
java Lambda表达式
示例 class MyRunnable implements Runnable { @Override public void run() { System.out.println("多线程程序启动了"); }} public static void main(String[] args) { //实现类的方式实现需求// MyRunnable my = new MyRunnable();// Thread t =原创 2020-07-14 17:23:21 · 93 阅读 · 0 评论 -
网络编程
三要素IP地址IPv4: 32bit,如 192.168.1.66 (4个部分,十进制)IPv6: 128bit,如 ABCD:EF01:2345:6789:ABCD:EF01:2345:6789 (16个部分,16进制)ipconfig:查看本机IP地址,Linux系统是ifconfig,稍有差别ping IP地址:检查网络是否连通,如ping www.baidu.com127.0.0.1:是回送地址,可以代表本机地址,一般用来测试使用'InetAddress 主机名+地址原创 2020-07-13 23:37:12 · 116 阅读 · 0 评论 -
java 多线程的四个创建方式
1、extends Thread2、implements Runnable3、implements Callable4、线程池原创 2020-07-13 01:51:26 · 111 阅读 · 0 评论 -
java多线程 生产者消费者
package a1;//精确做出交替输出public class dxc1 { public static void main(String[] args) { Clerk clerk = new Clerk(); Productor p = new Productor(clerk); p.start(); Customer c = new Customer(clerk); c.start(); }}原创 2020-07-13 01:17:19 · 97 阅读 · 0 评论 -
java 多线程 重点
线程的同步(重点)线程的通信(重点)原创 2020-07-12 19:45:32 · 67 阅读 · 0 评论 -
java多线程 yield join
插队'Thread.yield();//当前线程让出CPU,别人不一定会过来插队 ''mt.join();//点名要求mt来插队,且直到mt全部执行结束'package a1;public class RunnableImpl { public static void main(String[] args) { MyThreadFour mt2 = new MyThreadFour(); mt2.start(); MyThreadThre原创 2020-07-12 18:16:53 · 79 阅读 · 0 评论 -
java 多线程 汇总
1.线程的相关概念2.线程的创建和启动(重点)3.线程的停止4.线程的常见方法(Thread)(重点)5.线程的生命周期6.线程的同步(重点)7.线程的通信(重点)8.线程的创建和启动:方式三(了解)9.线程的创建和启动:方式四(线程池)(了解)...原创 2020-07-12 15:31:32 · 91 阅读 · 0 评论 -
java 多线程 基础
多线程基本概念多线程的创建与开启1、继承Thread方式,多次创建对象,公有变量必须static修饰,保证一份。2、实现Runnable接口方式,变量虽然没有static修饰,但对象只创建了一次选择:开发中优先选择实现Runnable接口的方式 原因:1、实现的方式没有类的单继承的局限性,只能继承一个类 2、实现的方式更加适合来处理多个线程有共享数据的情况二者联系:Thread 也是实现 Runnable接口的相同点:两种方式都需要重写run方法,将线程要执行的逻辑代码声明在r原创 2020-07-12 19:48:16 · 152 阅读 · 0 评论 -
java 对象序列化 properties IO流
'对象的类需要实现序列化接口''有一个序列号'import java.io.Serializable;public class Student implements Serializable { private static final long serialVersionUID = 42L; private String name;// private int age; private transient int age;'序列化对象''oos.writ..原创 2020-07-10 13:20:00 · 183 阅读 · 0 评论 -
java 标准输入流
'标准输入流,是一个字节流,一般是嵌套使用'public static void main(String[] args) throws Exception { //new Scanner(System.in)也是传入标准字节输入流的 //Scanner sc = new Scanner(System.in); InputStream is = System.in; InputStreamReader isr = new InputStreamReader(is);//字节流转字符流 Buffe原创 2020-07-10 13:02:33 · 466 阅读 · 0 评论 -
IO流 集合 文件 随机点名 项目
public static void main(String[] args) throws Exception { //集合到文件 BufferedWriter bw = new BufferedWriter(new FileWriter("F:\\生活\\a.txt")); ArrayList<String> arr = new ArrayList<>(); arr.add("aa1"); arr.a原创 2020-07-09 23:44:56 · 209 阅读 · 0 评论 -
java 乱码 编码 解码
常用编码是GBK 和 UTF-8一个汉字的存储如果是GBK编码,占用2个字节如果是UTF-8编码,占用3个字节byte[] b1 = "汉字".getBytes("GBK");System.out.println(Arrays.toString(b1));//[-70, -70, -41, -42]byte[] b2 = "汉字".getBytes("UTF-8");System.out.println(Arrays.toString(b2));//[-26, -79, -119, -原创 2020-07-09 18:34:13 · 148 阅读 · 0 评论 -
java IO输入流
public static void main(String[] args) throws IOException { //创建字节输入流对象 FileInputStream fis = new FileInputStream("F:\\by.txt"); //读取单个字节,返回独到的字节 int by = fis.read(); System.out.println(by); //数组循环读取,返回值是读取的原创 2020-07-09 17:57:00 · 67 阅读 · 0 评论 -
java IO流 案例 复制文件
文件复制public static void main(String[] args) throws IOException { long start =System.currentTimeMillis(); FileInputStream fis = new FileInputStream("C:\\Users\\backgroundDefault (3).jpg"); FileOutputStream fos = n原创 2020-07-09 17:10:09 · 104 阅读 · 0 评论 -
java 字节流 OutputStream
IO流分类:按照数据的流向 输入流:读数据 输出流:写数据按照数据类型来分 字节流 字节输入流;字节输出流 字符流 字符输入流;字符输出流字节流写数据 - - 字节输出流 (new FileOutputStream("",boolean)) fos.write(98); "abcdeww".getBytes(); fos.write(bytes2,9,9);注意: 换行 追加 <-----> 清空重写 字节流写数据如何实现换行呢?原创 2020-07-09 11:57:03 · 143 阅读 · 0 评论 -
JAVA file
File类介绍它是文件和目录路径名的抽象表示文件和目录是可以通过File封装成对象的对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已。它可以是存在的,也可以是不存在的。将来是要通过具体的操作把这个路径的内容转换为具体存在的构造方法方法名 说明File(String pathname) 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例File(String parent, String child) 从父路径名字符串和子路径名字符串创建新的 File实原创 2020-07-09 00:57:31 · 300 阅读 · 0 评论 -
项目 斗地主
思路:创建一个牌盒,也就是定义一个集合对象,用ArrayList集合实现往牌盒里面装牌洗牌,也就是把牌打撒,用Collections的shuffle()方法实现发牌,也就是遍历集合,给三个玩家发牌看牌,也就是三个玩家分别遍历自己的牌package a1;import java.util.ArrayList;import java.util.Collections;/* 需求: 通过程序实现斗地主过程中的洗牌,发牌和看牌 思路: 1:创原创 2020-07-08 20:33:43 · 179 阅读 · 0 评论 -
JAVA 数据结构 集合map
map:public static void main(String[] args) { Map<String, String> m = new HashMap<>(); m.put("001","aa"); m.put("002","bb"); m.put("003","ccc"); //key相同时会将值覆盖 m.put("003","ccdc"); System.原创 2020-07-08 18:33:55 · 278 阅读 · 0 评论 -
JAVA 可变参数
可变参数sum(int… a)参数列表的数据组成一个数组,存入变量中如果一个方法有多个参数,且包含可变参数的,可变参数要放在最后一个方法中只能有一个可变参数public class ArgsDemo01 { public static void main(String[] args) { System.out.println(sum(10, 20)); System.out.println(sum(10, 20, 30)); System.o原创 2020-07-08 16:59:04 · 115 阅读 · 0 评论 -
JAVA 泛型
JDK5中引入的特性这种参数类型可以用在类、方法和接口中,分别被称为泛型类、泛型方法、泛型接口泛型的好处:把运行时期的问题提前到了编译期间避免了强制类型转换运用灵活,方便泛型类public class Generic<T> { private T t; public T getT() { return t; } public void setT(T t) { this.t = t; }}publ原创 2020-07-08 16:05:41 · 76 阅读 · 0 评论 -
java 数据结构 集合 set treeset 排序
TreeSet集合特点--------不重复、排好序元素有序,这里的顺序不是指存储和取出的顺序,而是按照一定的规则进行排序,具体排序方式取决于构造方法 TreeSet():根据其元素的自然排序进行排序 TreeSet(Comparator comparator) :根据指定的比较器进行排序没有带索引的方法,所以不能使用普通for循环遍历由于是Set集合,所以不包含重复元素的集合集合中元素是引用类型treeset元素是排好序的,默认自然排序public static void mai原创 2020-07-08 12:52:22 · 372 阅读 · 0 评论 -
JAVA linkedhashset set集合
linkedhashsetLinkedHashSet<String> l = new LinkedHashSet<>(); l.add("hello"); l.add("world"); l.add("java"); //元素不重复 l.add("world"); //元素有序 for (String s : l) { System.out.pr原创 2020-07-08 00:40:30 · 98 阅读 · 0 评论 -
JAVA hashmap 哈希表
哈希表:数组+链表JDK8之前,底层采用数组+链表实现,可以说是一个元素为链表的数组JDK8以后,在长度比较长的时候,底层实现了优化初始数组长度是 16扩容:hashset添加元素,对于对象的添加,优于new的对象hashcode不同,即使属性相同也会被当做不同元素存入集合中。因此为了识别属性相同的同一元素,将就需要重写hashcode和equals方法。...原创 2020-07-08 00:30:47 · 93 阅读 · 0 评论 -
JAVA hash
哈希值:是JDK根据对象的地址或者字符串或者数字算出来的int类型的数值Object类中有一个方法可以获取对象的哈希值public int hashCode():返回对象的哈希码值对象的哈希值特点同一个对象多次调用hashCode()方法返回的哈希值是相同的默认情况下,不同对象的哈希值是不同的。而重写hashCode()方法,可以实现让不同对象的哈希值相同同一个对象多次调用hashCode()方法返回的哈希值是相同的默认情况下,不同对象的哈希值是不相同的 通过方法hashcode重写返回原创 2020-07-07 23:56:50 · 169 阅读 · 0 评论 -
JAVA 数据结构 Set
Set集合特点不包含重复元素的集合没有带索引的方法,所以不能使用普通for循环遍历实现类: HashSet由HashMap哈希表支持不保证迭代顺序可以null元素public static void main(String[] args) { Set<String> set = new HashSet<>(); set.add("hello"); set.add("world"); set.add("j原创 2020-07-07 23:34:24 · 81 阅读 · 0 评论 -
JAVA 数据结构
数据结构:是计算机存储、组织数据的方式。是指相互之间存在一种或多种特定关系的数据元素的集合通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率常见数据结构栈:先进后出队列:先进先出数组:索引定位,查询快链表:指针,增删快...原创 2020-07-07 20:23:55 · 76 阅读 · 0 评论 -
JAVA 集合 数组 遍历
JAVA的数组、集合,有多种遍历方式主要代码 ArrayList<Student> stu = new ArrayList<>(); stu.add(new Student("ww",31)); stu.add(new Student("ww",32)); stu.add(new Student("ww",33)); stu.add(new Student("ww",34)); Iterator&l原创 2020-07-07 20:03:48 · 175 阅读 · 0 评论 -
JAVA 增强for循环
概述原创 2020-07-07 19:41:38 · 121 阅读 · 0 评论