- 博客(11)
- 收藏
- 关注
原创 Java动态代理
1 静态代理1)接口public interface person{ void eat();}2)被代理类public class child implements person{ void eat(){ System.out.println("小孩吃饭"); }}3)代理类public class proxyChild implements person{ private child c1; public proxyChild (child c1){ thi
2021-11-19 11:21:12
493
原创 JavaWeb知识点补充(Session,四大域对象,监听器)
1 Cookie和Session1.1来源 http协议是无状态的,也就是说就算客户端是第二次访问服务器,服务器还是把此次访当做一个新的访问进行处理,因为服务端并不知道客户端之前是否访问过。1.2Cookie1.2.1 简介 服务端给客户端的数据,存储于客户端(浏览器)。由于是保存在客户端上的,所以存在安全问题,并且cookie是由个数和大小限制的(4KB),
2021-11-18 10:38:07
627
原创 Servlet入门及常遇问题
1 编写流程1)在网页端提交表单数据,根据url调用tomcat服务器中的Servlet程序(http://localhost:8080/ServletTest1/register),这个注册请求会调用tomcat中的名字为register的servlet程序2)根据上一步所知,在web.xml中找到 /register,其对应的类是com.book.web.RegisterServle <servlet> <servlet-name>register</
2021-11-17 21:24:18
437
原创 Mysql事务隔离级别的误区(InnoDB为例)
1 问题引入看下图: 根据Mysql技术内幕:InnoDB引擎,不同事务隔离级别可以解决不同问题,分别是脏读,不可重复读(幻读),丢失更新 而不可重复读其实就是幻读(上述说两者有细微差别),丢失更新是业务层面的丢失(对同一银行账户进行余额查询并修改,导致最后结果不一致)2 不同级别的实现1)先验知识1)MVC
2021-11-14 20:54:56
748
原创 Java的泛型
1 泛型引入的原因 为了在编译期间保证(泛型擦除,运行期间不存在泛型),容器类只能传入指定类型的对象。2 泛型类型的限制 只是限定了能传入方法或者类的泛型的参数的界限,没有涉及子父类关系的改变,且只能作为泛型方法或者类的限定,而不能用来声明变量。public static <T extends Comparable> T min(T[] a)//限
2021-10-22 19:26:22
525
原创 JAVA内存泄漏
概念严格意义:内存泄露是指不再使用的对象由于仍然被其他对象引用导致垃圾收集器不能及时释放这些对象。(对象已经不需要但仍占用内存)宽泛意义:有些不好的编码习惯导致的某些对象生命周期过长(隐式内存泄漏),也称为内存泄露泄漏的原因本质上是长期存活对象引用短期存活对象,导致短期存活对象占用的对象无法回收分类1、静态集合类,如HashMap、LinkedList等等。如果这些容器为静态的,那么它们的生命周期与程序一致,则容器中的对象在程序结束之前将不能被释放,从而造成内存泄漏。简单而言,长生命周期的对象持
2021-10-16 12:55:55
112
原创 JAVA的值传递和引用传递
概念值传递:是将实参的值赋值给形参引用传递:将实参的值(地址)赋值给形参故,归根结底来说,java其实就只有值传递这一种方式。距离值传递 public static void main(String[] args) { int a = 10,b =20; swap(a,b); //a依旧为10,b为20 } static void swap(int x, int y){ int t =x; x = y; y = t;
2021-10-15 21:10:49
203
原创 JVM对象深堆和浅堆
基本概念1)浅堆: 一个对象在内存中占用的大小class Person{ int age; String name; boolean sex; public Person(name){ this.name = name;}Person对象在内存中的浅堆为 12(压缩后的字节头) + 4(int) + 4(String引用类型) + 1(boolean) = 21Byte 之后需要8字节对齐,故最终浅堆大小为 24Byte2)保留集:仅由此对象引用的对象集合(包括对象自己)3)深堆
2021-10-15 17:16:58
244
原创 String常量池的解析(包含intern函数)
1.String类型的常量池比较特殊。它的主要使用方法有两种:直接使用双引号声明出来的String对象会直接存储在常量池中。如果不是用双引号声明的String对象,可以使用String提供的intern方法。intern 方法会从字符串常量池中查询当前字符串是否存在,若不存在就会将当前字符串放入常量池中String s = "npu";//常量池中创建"npu"对象String s1 = new String("npu");//此语句会创建两个对象//1)堆中String对象 2)常量池中"
2021-09-22 14:21:25
277
原创 Java集合容器介绍
Java集合容器介绍:分两大类:Collection,MapQueue接口也继承了Collection接口,有两种实现方式:1)循环数组 ArrayDeque2)链表形式 直接使用LinkedList就行1、Iterator接口Iterator接口,这是一个用于遍历集合中元素的接口,主要包含hashNext(),next(),remove()三种方法。它的一个子接口LinkedIterator在它的基础上又添加了三种方法,分别是add(),previous(),hasPrevious()。
2021-08-24 12:55:57
247
原创 将web项目部署到云服务器
将web项目部署到云服务器部署步骤第一步 打包第二步 部署第三步 遇到的问题1 项目端2 tomcat 端3 mysql总结部署步骤第一步 打包在idea使用maven将web项目打成 war包,这步不会自行百度第二步 部署在部署前需要自己在阿里云或者其他云,买一个云服务器,记得把相应的端口打开,web服务需要打开 8080(tomcat),3306(mysql),其他的端口自动打开了。之后使用xshell连接到开的服务器,在服务器上安装相应软件,jdk,mysql,tomcat,然后将war包
2021-04-13 17:28:26
864
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人