- 博客(31)
- 收藏
- 关注
原创 第七部分-MySQL-003多表操作
前提:一对多关系:部门表、员工表一、内连接1、隐式内连接select t1.name 员工姓名,t1.gender 员工性别,t2.name 员工部门 from emp t1,dept t2 where t1.deptid=t2.id;2、显式内连接select * from emp [inner] join dept on deptid = dept.id;二、外连接1、左外连接:查询的左表所有的数据+交集select * from emp left [outer] join dep
2021-05-10 13:10:58
90
原创 JavaWeb草稿
1、BeanUtils使用场景:封装JavaBean对象JavaBean:标准的Java类(1)public类(2)必须提供空参构造(3)private成员变量(4)public的setter、getter注意:成员变量:属性:setter和getter方法截取后的产物 例如:getUsername() --> Username–> username //1.设置编码 req.setCharacterEncoding("utf-8"); //2.获取请求参数 S
2021-05-07 21:03:52
91
原创 JavaWeb-servlet-003会话技术
会话技术一次会话:浏览器端第一次向服务器端发送请求,会话建立,直到有一方断开功能:共享数据。(因为HTTP是无状态的,每个请求之间独立,不共享数据)Cookie:客户端会话技术1、常用方法(1)服务器端接受浏览器端的cookie Cookie[] cookies = request.getCookies(); (2)浏览器端收到服务器端的cookie Cookie cookie = new Cookie(String name, String value); response.
2021-05-06 23:49:23
84
原创 JavaWeb-servlet-001请求响应
一、Request功能1、获取虚拟目录:String getContextPath()2、获取请求URI:String getRequestURI()3、根据请求头的名称获取请求头的值:String getHeader(String name)4、根据请求参数名称获取值:String getParameter(String name)----------------username=zhangsan5、根据参数名称获取参数值的数组:String[] getParameterValues(Strin
2021-05-06 19:01:59
65
原创 JavaWeb-servlet-002请求转发与重定向
一、请求转发1、定义:请求->AServlet->BServlet2、Request域对象的作用范围如图所示:3、Request域对象的常用方法:void setAttribute(String name,Object obj):存储数据Object getAttitude(String name):通过键获取值void removeAttribute(String name):通过键移除键值对4、请求转发特点:浏览器地址栏路径不发生变化只能转发到当前服务器内部资源中。转发是
2021-05-06 18:57:09
81
原创 JavaWeb-js-003dom和bom
1、dom获取元素对象getElementById() : 根据id属性值获取元素对象。id属性值一般唯一getElementsByTagName():根据元素名称获取元素对象们。返回值是一个数组getElementsByClassName():根据Class属性值获取元素对象们。返回值是一个数组getElementsByName(): 根据name属性值获取元素对象们。返回值是一个数组2、bom常用方法与弹出框有关的方法:alert() 显示带有一段消息和一个确认按钮的警告框。confir
2021-05-06 18:16:05
59
原创 JavaWeb-js-002事件
事件监听机制:* 概念:某些组件被执行了某些操作后,触发某些代码的执行。 * 事件:某些操作。如: 单击,双击,键盘按下了,鼠标移动了 * 事件源:组件。如: 按钮 文本输入框... * 监听器:代码。 * 注册监听:将事件,事件源,监听器结合在一起。 当事件源上发生了某个事件,则触发执行某个监听器代码。 //1.获取light2对象 var light2 = document.getElementById("light2"); //2.绑定事件 light2.
2021-05-06 18:04:12
109
原创 JavaWeb-js-001ES
1、js与html结合方式(1)内部:(2)外部:8、自定义对象对象的定义: 对象的访问: 变量名.属性/方法名();
2021-05-06 17:55:29
60
原创 第七部分-MySQL-002多表关系
摘要:这里主要讲两种关系:一对多(多对一)多对多1、一对多部门[1]和员工[n]:一个部门对应多个员工一个员工对应一个部门实现方式:多的一方建立外键,指向一的一方的主键2、多对多学生[n]和课程[n]:一个学生对应多个课程一个课程对应多个学生实现方式:借助中间表,中间表至少两个字段,作为中间表的外键,分别指向两张表的主键...
2021-05-06 13:18:38
58
原创 第七部分-MySQL-001单表操作
一、DML:增删改表中数据1、insertinsert into 表名(列名1,列名2,…列名n) values(值1,值2,…值n);insert into 表名 values(值1,值2,…值n);2、deletedelete from 表名 [where 条件]如果要删除所有记录:(仅仅删除记录,而不是删除表)(1)delete from 表名; – 不推荐使用。有多少条记录就会执行多少次删除操作(不加where条件,会删除所有记录)(2)truncate table 表名; – 推荐
2021-05-06 13:12:35
223
原创 第三部分-设计模式-005适配器模式
适配的是类和接口中对应的一个方法(功能相同的方法)1、类适配器Adapter类,通过继承src类、实现dst接口,完成src->dst的适配例如:充电器(Adapter)、220V交流电(src类)、5V直流电(dst)public class Voltage220V { public int output220V() { return 220; }}public interface IVoltage5V { public int output5V();}public
2021-05-06 00:26:39
93
原创 第三部分-设计模式-004装饰者模式
需求:我们去咖啡店订购咖啡时,往往是先选择咖啡,然后再说加什么调料。现在我们设计这样一个系统,方便咖啡、调料种类的扩展。则我们的思路是:咖啡父类----子类为各种咖啡调料父类(装饰者,装饰咖啡的类)----子类为各种调料饮料父类----子类为咖啡父类和调料父类1、Drink父类代码public abstract class Drink { public String des; //描述 private double price=0.0f; //价格 public
2021-05-05 23:27:06
63
1
原创 第五部分-算法-002排序图解
1、希尔排序原数组能分为gap个数组,然后再对每一个子数组进行插入排序;是对插入排序的一种优化2、快速排序一般对随机的乱序数字进行排序,选择快速排序3、基数排序适用于不同位数...
2021-05-05 22:14:52
43
原创 第四部分-数据结构-002二叉排序树与左右旋转
/*二叉排序树建树: 7,3,10,12,5,1,9 7放到根节点; 3比7小,放到7左边;10比7大,放到7右边; 12比7大,放右边,12比10大,放到10右边;5比7小,放左边,5比3大,放到3右边;1比7小,放左边,1比3小,放到3左边;9比7大,方右边,9比10小,放到10左边 总结:待比较节点 与 当前二叉树的根节点 比较,小放左边,大放右边,递归比较 */左旋转右旋转总结...
2021-05-05 22:07:12
59
原创 第三部分-设计模式-001类之间的关系
1、依赖A类中使用到了B类,则A依赖B。这里说的使用:成员变量、方法参数、方法返回值、局部变量2、泛化:依赖关系的特例实际上就是继承3、实现:依赖关系的特例实际上就是实现4、关联:依赖关系的特例5、聚合、组合(注意区别):关联关系的特例聚合:整体和部分可以分开组合:整体和部分不能分开本质就是部分作为成员时,new没new聚合:组合注意:...
2021-05-05 21:59:41
75
原创 第六部分-多线程-003生产者与消费者-003线程交替执行
先看这个前面提到:synchronized的锁对象和同步监视器是同一个,因此不能做到A-B-C-D-A-B-C-D因此对于生产者A、C,消费者B、D;当仓库数量为0时,A生产完,B和D会抢着消费1、传统的synchronized代码输出结果:(部分)A===>1B===>0C===>1B===>0A===>1D===>0public class Test { public static void main(String[] args) {
2021-05-05 21:37:01
67
原创 第六部分-多线程-003生产者与消费者-002问题探究
1、生产者消费者程序执行流2、常见问题1:无限等待原因:如上图所示,第一次(i=0)消费者执行完了一次函数,那次函数else语句后面没有执行,因此消费者少执行一次解决办法:去掉else错误代码:public class Test1{ public static void main(String[] args) { Clerk clerk = new Clerk(); Producer pro = new Producer(clerk);
2021-05-05 19:21:54
64
转载 第六部分-多线程-003生产者与消费者-001入门
生产者消费者问题:没产品,生产者生产;有产品,消费者消费。1、管程法生产者将产品放入缓冲区,消费者从缓冲区取数据public class Demo { public static void main(String[] args) { SynContainer container=new SynContainer(); new Productor(container).start(); new Consumer(container).start(
2021-05-05 19:00:51
72
原创 第六部分-多线程-002同步监视器和锁对象
同步监视器和锁对象:wait、notify、notifyAll的调用者是同步监视器进程能否进入该语句块,判断的是锁对象是否被拿走1、synchronized代码块锁对象和同步监视器是同一个,也就是括号里的东西synchronized(){}2、synchronized方法锁对象是方法的调用者;static synchronized的锁对象是类模板...
2021-05-05 17:50:19
125
原创 第六部分-多线程-001synchronized锁对象
摘要:本文只讲解synchronized方法(同步方法)的锁的对象是谁;synchronized:锁的对象是调用该方法的对象static synchronized:所得对象是类.classpublic class Test1 { //结果:发短信---打电话 public static void main(String[] args) throws InterruptedException { Phone phone = new Phone(); new
2021-05-05 17:43:30
81
2
原创 第五部分-算法-001排序
选择排序找出最大值及其索引,与最后一个元素交换/*选择排序: 每次找出最大值及其下标,与最后一个数交换 */public class SelectSort { public static void main(String[] args) { int[] arr={3,9,-1,10,-2}; for(int i=0;i<arr.length-1;i++){ int max=arr[0]; int
2021-05-03 21:00:47
62
原创 第四部分-数据结构-001二叉树前中后序遍历与查找
1、前中后序遍历(1)Node结点代码 //前序遍历 public void preOrder(){ System.out.println(this); if(this.left != null){ this.left.preOrder(); } if(this.right!=null){ this.right.preOrder(); } } //
2021-05-03 14:01:27
121
原创 第三部分-设计模式-003代理模式
代理模式思想:抽取实现不同接口的不同实现类中公共实现部分本质:1、执行公共部分2、执行被代理类的方法3、执行公共部分注意:代理对象会对被代理对象(实现接口)的所有方法进行代理。代理类和被代理类是兄弟关系,他们继承或实现同一个父类/接口1、静态代理ClothFactory clothFactory=new NikeClothFactory();ClothFactory proxy=new StaticProxy(clothFactory);这两句Java代码的意思:我要代理哪一个接口的哪
2021-05-02 14:42:12
75
原创 第一部分-Java基础-004网络编程
1、计算机网络计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信链路(有线、无线)连接起来,在网络操作系统、网络管理软件和网络通信协议的管理与协调下,实现资源共享和信息传递的计算机系统。2、网络编程3要素(1)ip:确定唯一主机(2)port:确定唯一进程(一个程序由多个进程qq.exe,每个进程的port不相同)(3)网络协议网络协议应用层:主要解决如何包装数据HTTP:(1)默认端口号:80(2)基于请求响应模型,一次请求对应一次响应(3)无状态的:每
2021-05-02 12:37:37
78
原创 第三部分-设计模式-002单例模式
类加载不只是Singleton.getInstance(),如果Singleton.add()(即:只使用该类的其他方法,而不使用该类对象)也会类加载1、饿汉式线程安全:类加载时,完成了创建若没有使用过该对象,会造成内存浪费public class Singleton1 { //1、构造器必须私有化,防止new private Singleton1(){} //2、创建唯一对象 private static Singleton1 instance;//加不加final
2021-05-01 22:33:22
30
原创 第一部分-Java基础-003多线程
学习顺序:1、基本知识点2、两种创建方式、区别3、线程同步三种方法4、死锁5、线程通信6、生产者消费者7、拓展的两种线程创建方式---------------------------------------------一、基本知识点1、程序、进程、线程(1)程序:一段静态的代码(2)进程:正在执行的程序;进程是资源分配的单位,系统为每个进程分配不同的内存区域(3)线程:程序的一条执行路径;线程是调度和执行的单位,每个线程有独立的运行栈和程序计数器;一个线程的多个线程共享相同的内存地
2021-05-01 22:18:00
58
原创 第一部分-Java基础-002集合-LinkedList源码分析jdk8
在进行源码分析时,我们需要知道LinkedList底层是什么LinkedList底层是双向链表 transient int size = 0; transient Node<E> first; //指向第一个节点 transient Node<E> last; //指向最后一个节点...
2021-05-01 20:26:03
45
原创 第一部分-Java基础-002集合-ArrayList源码分析jdk8
在进行源码分析时,我们需要知道ArrayList底层是什么ArrayList底层是可扩容的动态数组 private static final int DEFAULT_CAPACITY = 10; //默认容量10 private static final Object[] EMPTY_ELEMENTDATA = {}; //空数组 private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {}; //默认容
2021-05-01 20:12:26
30
原创 第二部分-JVM-002内存模型
1、内存模型2、本地方法栈(了解)public class Student { public native void start(); //注意这是一个普通类}本地方法栈只是登记了native修饰的方法,执行引擎执行时,本质是调用JNI,加载本地方法库中的方法3、程序计数器.java-----编译------>.class(字节码)-----解释器---->机器码------>CPU(1)字节码文件是多个指令的集合,每个指令都有个地址。 0:
2021-05-01 19:43:04
141
原创 第二部分-JVM-001类加载
1、类加载2、双亲委派机制(1)如果一个类加载器收到了类加载请求,它并不会自己先去加载,而是把这个请求委托给父类的加载器去执行。(2)如果父类的加载器还存在其父类加载器,则进一步向上委托,依次递归,请求最终会到达顶层的启动类加载器。(3)如果父类加载器可以完成类加载任务,就成功返回,倘若无法完成此加载任务,则委派给它的子加载器去加载。Application ClassLoader->Extension ClassLoader->BootStrap ClassLoader总结:如果有
2021-05-01 19:19:45
62
1
原创 第一部分-Java基础-001Java关键字
Java常见关键字:1、final(1)变量:必须赋值且不能更改(2)方法+类:最终类,不能被继承;方法则不能被重写2、abstract(1)类:抽象类(2)方法:抽象方法3、static(1)成员变量:属于类所有(2)成员方法(工具类的方法)(3)代码块:类第一次被使用,会执行代码块:主要作用是实现static属性的初始化(4)静态内部类:a)非静态内部类不能定义static元素b)外部类被类加载时,静态内部类不会被加载ps1、static final:该变量必须被初始化,且
2021-05-01 19:05:30
58
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人