java从菜鸟到进阶
pluszzh
这个作者很懒,什么都没留下…
展开
-
[java]深入理解equals和hashcode方法的区别和联系
"==”,equals方法,hashcode方法的区别和联系1 equals() 的作用是什么? equal类是Object类的方法,Object是所有类的基类。 在我们没有重写equals方法时,equals()的作用是比较两个对象地址是否相等,我们看看equal()的源码 public boolean equals(Object obj) { r...原创 2019-12-01 23:17:50 · 158 阅读 · 0 评论 -
[java]深拷贝和浅拷贝的区别介绍
为什么要使用Clone?深拷贝和浅拷贝的区别有哪些? 1.首先明白什么是引用? 当我们在创建对象时,首先在堆区进行内存的分配,然后调用构造方法进行初始化。对象的实例保存在堆中,对象的引用保存在栈中。引用就好像c语言中的指针一样保存着对象实例的地址,我们实际通过操作对象的引用来操作对象。 2. clone帮助我们解决了什么问题?为什么要进行clone? class Person...原创 2019-11-29 13:28:13 · 582 阅读 · 0 评论 -
[Java]重新梳理面向对象的三大特性
1.什么是面向对象?谈谈你对面向对象的理解? ①面向对象是一种编程思想,在面向对象这种编程思想出现以来,主流的是以c语言为首的面向过程的语言,更多的是按照计算机处理事务的思想来编写代码。在现实生活中的任何物体都可以归为一类事物,而每一个个体的就是这一类事物的实例。面向对象的编程是以消息为驱动,以对象为中心。程序 = 对象 + 消息 ② 面向对象主要有三种特性。 1.封装 封装就是...原创 2019-11-28 22:52:36 · 96 阅读 · 0 评论 -
[java]强引用、弱引用、软引用和虚引用
背景在jdk1.2以前,java对引用的定义和传统,只有引用和非引用之分。这种定义很纯粹,但是太过狭隘,一个对象在这种定义下,只有被引用或者没有被引用这两种状态,对于如何描述一些“食之无味,弃之可惜”的对象就显得无能为力。这时候推出了一种新的机制,强引用,弱引用,软引用和需虚引用1.强引用(Stong Reference)最普通的引用 Object o = new Object()...原创 2019-10-28 12:27:23 · 139 阅读 · 0 评论 -
[java]深入理解生产者消费者模型
生产者消费者模型不必多说,在操作系统课和java多线程都已经提到过。而你是否真的懂wait,notify,notifyAll使用的细节呢?下面我们一起来探究一下这是一个典型的生产者消费者模型这样写是完全符合线程安全的!这段代码很容易引申出来两个问题:一个是wait()方法外面为什么是while循环而不是if判断,另一个是结尾处的为什么要用notifyAll()方法,用notify()行吗?...原创 2019-10-16 18:05:44 · 177 阅读 · 0 评论 -
JDBC分页套路总结
JDBC分页逻辑JDBC分页实现 PageBean对象public class PageBean<T> { @Override public String toString() { return "PageBean{" + "totalcount=" + totalcount + "...原创 2019-07-28 18:10:32 · 181 阅读 · 0 评论 -
细说Session的钝化和活化及Session的监听器
1.Session的监听器HttpSessionBindingListener:当某个类实现了该接口后,可以感知本类对象添加到session中,以及感知从session中移除。例如让User类实现HttpSessionBindingListener接口,那么当把Person对象添加到session中,或者把Person对象从session中移除时会调用下面两个方法:public void va...原创 2019-04-21 22:16:12 · 881 阅读 · 0 评论 -
javaweb三大域对象的生命周期监听器和属性监听器
在javaweb中三大域对象都有自己的监听器(Servletcontext,HttpSesson,ServletRequest)生命周期监听器 ServletContextListener:Tomcat启动和关闭时调用下面两个方法 public void contextInitialized(ServletContextEvent evt):ServletContext对象被创建...原创 2019-04-21 21:26:41 · 772 阅读 · 0 评论 -
为什么内部类在访问外部的局部变量时需要用final关键字?
以前碰到过这个问题,很快就忘了,今天把它记载下来。再忘的时候来看看是因为内部类的生命周期与外部类局部变量的生命周期不一致所导致的1.内部类的生命周期和外部类的生命周期是相等的,并不会因为外部类的代码执行完成后就销毁。2.当内部类使用外部类的局部变量,这个变量在外部类执行后就会被gc,内部类就会丢失该变量的引用。3.所以使用final关键字修饰一个引用变量,其指向的内存区域就不会变了。内部类...原创 2019-04-16 15:58:28 · 257 阅读 · 0 评论 -
Java:Threadlocal类的使用和原理分析
ThreadLocalkey valuethread1 aaathread2 bbbthread3 ccc1 ThreadLocal APIThreadLocal类只有三个方法:void set(T value):保存值;T get():获取值;void remove():移除值。2 ThreadLocal的内部是MapThreadLocal内部其实是个Map来...原创 2019-04-16 15:35:09 · 134 阅读 · 0 评论 -
JAVA从入门到进阶(十四)——Servlet学习和手写剖析GenericServlet源码
Servlet类实现方式1.实现 Servlet接口 2 继承GenericServlet类 3.继承HttpServlet类Servlet作用:1接受请求2处理请求3完成响应一 Servlet接口Servlet中的方法大多数不需要我们来调用,而是由服务器(Tomcat)来调用。其中有生命周期方法void init(Servlet Config) :会被调用一次 在对象初始化后立...原创 2019-03-11 17:48:17 · 109 阅读 · 0 评论 -
jaxp学习(一) jaxp用dom解析xml文件(遍历,修改,删除,新建)操作
import java.io.IOException;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import javax.xml.transfor...原创 2019-03-04 20:53:53 · 154 阅读 · 0 评论 -
BaseServlet存在的意义和基本的原理
在进行项目开发时,有时候用户的一个操作就会新增一个Servlet来处理相应的操作,造成Sevlet的冗余现象为了解决Servlet太多的造成冗余的现象,我们只需定义一个BaseServlet来获取用户想要调用的方法名,通过方法的名称反射来调用该类的其他方法。这样原来定义的很多个Servlet就不再需要了。步骤1:定义一个抽象类BaseServlet和自定义的Servlet来继承BaseServ...原创 2019-04-17 19:01:25 · 937 阅读 · 0 评论 -
实现统计网页中ip的访问访问次数超过指定次数进行拦截
根目录如下:package filter;import java.io.IOException;import java.util.LinkedHashMap;import java.util.Map;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterCo...原创 2019-04-24 19:20:38 · 2634 阅读 · 0 评论 -
Socket + 多线程 java 实现多人聊天室(附源码)
这是老师布置的一次上机作业,这几天一直在学习Web的内容,有些不常用的工具都忘了。我捡起来的还算快,前前后后大概花了三,四个小时写出来了一版逻辑清晰一点的多线程聊天室。一.包的结构二.客户端public class Client { //author pzh hueedu /* * 任务: * 1.为每一个Client用户创建一个Socket * 2.开启发送线程 *...原创 2019-05-07 15:16:26 · 6203 阅读 · 0 评论 -
Java方法的静态绑定与动态绑定讲解(向上转型的运行机制详解)
原文地址:http://www.cnblogs.com/ygj0930/p/6554103.html一:绑定 把一个方法与其所在的类/对象 关联起来叫做方法的绑定。绑定分为静态绑定(前期绑定)和动态绑定(后期绑定)。二:静态绑定 静态绑定(前期绑定)是指:在程序运行前就已经知道方法是属于那个类的,在编译的时候就可以连接到类的中,定位到这个方法。 在Java中...转载 2019-05-15 22:09:37 · 118 阅读 · 0 评论 -
javaweb邮件激活(多线程小案例)
一.邮件激活的工具类和步骤public final class MailUtils { private static final String USER = ""; // 发件人称号,同邮箱地址 private static final String PASSWORD = ""; // 如果是qq邮箱可以使户端授权码,或者登录密码 /** * * ...原创 2019-08-06 16:48:17 · 264 阅读 · 0 评论 -
HttpServlet的执行流程及BaseServlet的抽取
1.HttpServlet的执行流程及BaseServlet的抽取图①service(ServletRequest req,ServletResponse res)进行参数强转附录② service(HttpServletRequest req,HttpServletResponse res)protected void service(HttpServletRequest req, H...原创 2019-08-07 11:19:51 · 508 阅读 · 0 评论 -
Java中的类的静态变量生命周期
一, 静态变量在类加载时被加载加载指的是将类的class文件读入到内存,类加载器会读取class文件,并为之创建一个java.lang.Class对象,也就是说,当程序中使用任何类时,系统都会为之建立一个java.lang.Class对象。二,静态变量在类卸载时被销毁当Sample类被加载、连接和初始化后,它的生命周期就开始了。当代表Sample类的Class对象不再被引用,即...原创 2019-08-15 11:26:34 · 2268 阅读 · 0 评论 -
为什么在JDBC连接数据库时,要通过Class.forName来加载驱动
一,平时我们加载数据库驱动通常会这样写 String url = "jdbc:mysql://127.0.0.1:3306/mydb"; String username = "root"; String password = "redhat"; Class.forName("com.mysql.jdbc.Driver"); Con...原创 2019-11-14 14:16:21 · 1035 阅读 · 1 评论 -
Java中堆空间和栈空间之间的区别
1.栈区(stack):又编译器自动分配释放,存放函数的参数值,局部变量的值等,其操作方式类似于数据结构的栈。栈空间保存局部变量,操作栈,动态链接,方法出口等信息。局部变量包括各种基本类型的变量和对象的引用变量都是在方法的栈内存中分配。当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即...原创 2019-08-16 16:15:21 · 876 阅读 · 0 评论 -
JAVA从入门到进阶(十三)——Tcp/ip通信的实现
需求:模拟一个大小转换器将键盘输入的小写字母提交到服务器上转化为大写字母并打印客户端:package Intenetprogress;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import ...原创 2019-02-24 13:50:46 · 706 阅读 · 0 评论 -
JAVA从入门到进阶(十二)——IO技术必杀技之三 Properties集合与IO流
Properties集合:Properties类表示一组持久的属性。 Properties可以保存到流中或从流中加载。 属性列表中的每个键及其对应的值都是一个字符串。特点:①hashtable的子类,键和值都是String类型,线程安全的②可以和IO技术相结合③通常该集合用于操作以键值对存在的配置文件用法举例import java.io.File;import java.io.Fi...原创 2019-02-18 22:12:23 · 429 阅读 · 0 评论 -
JAVA从入门到进阶(九)——集合类框架基础一
集合框架特点:1.用于存储对象的容器2.集合的长度是可变的3.集合类不可以存储基本数据类型值一 集合类的迭代器iteratorIterator<E> iterator()返回在此 collection 的元素上进行迭代的迭代器。关于元素返回的顺序没有任何保证(除非此 collection 是某个能提供保证顺序的类实例)。指定者:接口 Iterable<E>...原创 2019-02-14 20:17:31 · 139 阅读 · 0 评论 -
JAVA从入门到进阶(七)——String类的详解(转载)
https://www.cnblogs.com/zhangyinhua/p/7689974.html#_lab2_0_0(PS:转载博文,这位大佬写的十分详细)转载 2019-02-03 17:11:20 · 106 阅读 · 0 评论 -
JAVA从菜鸟到进阶(六)——多线程基础五 操作线程的方法总结
一 wait()方法与sleep()方法的区别1.wait方法和sleep()方法都是让线程进入冻结状态,既释放了执行资格,也释放了执行权。2.wait()方法可以指定进入冻结状态的时间,也可以不指定。sleep()方法必须指定时间3.在同步中,对cpu的执行权和锁的处理不同wait:释放执行权,释放锁。sleep:释放执行权,不释放锁。因为进入wait方法的线程需要和相对应的not...原创 2019-02-03 11:33:36 · 127 阅读 · 0 评论 -
JAVA从菜鸟到进阶(五)——object类(基础)
object类是所有类的父类,所有类都直接或间接继承object类历程:package ObjectDemo;class NothisException extends RuntimeException{ NothisException(String str) { super(str); }}class Son{ private int age; void sho...原创 2019-01-28 11:16:50 · 132 阅读 · 0 评论 -
JAVA从菜鸟到进阶(四)——异常
异常:是在运行时期发生的不正常情况,把问题封装成对象抛出就叫做异常,在java中用类的形式对不正常的情况进行描述和封装,描述不正常的情况的类,就叫做异常类。其实异常是java通过面向对象的思想把问题封装成立对象,用异常类对问题进行描述。不同的问题用不同的类进行具体描述。Throwable:无论是Error,Exception。问题发生就应该可以抛出,让调用者知道并处理。1.该体系特点在于Th...原创 2019-01-27 22:48:30 · 163 阅读 · 0 评论 -
JAVA从菜鸟到进阶(六)——多线程基础四 JDK1.5.0上新特性Lock,condition使用
在以前的博文中,已经讲述了如何解决多消费者多生产者的问题,我们分析问题的关键在于生产者和消费者在唤醒过程中调用的是己方的锁导致这样那样的问题产生。基于这个问题,java在JDK1.5.0以上版本进行优化改进。新增加了一个接口Lock和一个新的接口condition。我们来看如何用这两个东西去解决多线程问题。API中描述:void lock()获得锁。void lockInterrupti...原创 2019-01-31 21:33:39 · 164 阅读 · 0 评论 -
JAVA从菜鸟到进阶(六)——多线程基础三 线程间通信(等待、唤醒机制)
一 线程间通信(1)线程间通信基本介绍我们在实际开发时,通常不只是多个线程去处理同一个任务,而是多个线程处理多个不同的任务(比如说有一堆煤,一个车往里面运煤,一个车往里面拉煤)这就叫做线程间通信。通常线程中通信创建方式:①创建多个线程的公共资源②在多个线程中创建对公共资源操作的不同任务③开启各个线程(2)进行协调线程间通信的几种方法在等待唤醒机制涉及的方法:①wait():让线...原创 2019-01-31 20:05:06 · 299 阅读 · 0 评论 -
JAVA从菜鸟到进阶(三)——抽象类,接口,多态
final关键字1.final是一个修饰符,可以修饰类,方法,变量。2.final修饰的类不可以继承。3.final修饰的方法不可以被覆盖。4.final修饰的变量是一个常量,只能赋值一次。一 抽象类特点;①方法只有声明没有实现时,该方法就是抽象方法,需要被abstract修饰,该类也采用abstract修饰。② 抽象类不可以被实例化,因为调用抽象方法没意义③抽象类必须有其子类...原创 2019-01-26 14:14:23 · 131 阅读 · 0 评论 -
JAVA从菜鸟到进阶(二)——继承
一 继承的好处:1.提高代码复用性2.类与类之间产生了关系,为第三个特性多态产生提供了前提。二 什么时候继承?类与类之间有所属关系时。三 ①当本类的成员和局部变量同名 用this区分②当子父类的成员变量同名 用super区分this:代表本类对象的引用super:代表一个父类空间当子父类出现成员函数一模一样 会运行子类函数称为覆盖四:覆盖注意事项1.子类方法覆盖父类方法时,子...原创 2019-01-25 18:04:46 · 148 阅读 · 0 评论 -
JAVA从入门到进阶(八)——String,StringBuffer和StringBuilder的区别
String与StringBuffer,StringBuider的区别1.简单地说,就是一个变量和常量的关系.StringBuffer对象的内容可以修改;而字符串对象一旦产生后就不可以被修改,重新赋值其实是两个对象的StringBuffer的内部实现方式和字符串不同,StringBuffer的在进行字符串处理时,不生成新的对象,在内存使用上要优于串类。所以在实际使用时,如果经常需要对一个字符串...原创 2019-02-03 20:43:23 · 150 阅读 · 0 评论 -
JAVA从菜鸟到进阶(六)——多线程基础一 线程创建和同步
一进程:正在进行的程序(直译),只是分配该程序的内存空间。线程:是进程中一个负责程序执行的执行路径,一个程序有多个执行路径(多线程),一个进程中至少要有一个线程。二 .为什么开启多个进程?开启多个线程是为了运行多部分代码,每一个线程都有自己运行的内容。这个内容可以称为线程要执行的任务。三 多线程的好处和弊端好处:解决了多部分代码同时运行的问题弊端:线程的增多导致效率降低(Cpu进行快...原创 2019-01-30 12:42:17 · 195 阅读 · 0 评论 -
JAVA从入门到进阶(十二)——IO技术必杀技 转化流中的编码解码
当我们需要按照指定的编码表来读取或写入文件时,就需要用到转换流。转化流的构造方法中可以按照自定义的编码表来进行编码和解码的工作。import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileInputStream;import java.io.FileNotFoundException;im...原创 2019-02-18 14:58:52 · 131 阅读 · 0 评论 -
JAVA从入门到进阶(十二)——IO技术必杀技之二 转换流
字节流与字符流一.基本介绍在java.io包中操作文件内容的主要有两大类:字节流、字符流,两类都分为输入和输出操作。在字节流中输出数据主要是使用OutputStream完成,输入使的是InputStream,在字符流中输出主要是使用Writer类完成,输入流主要使用Reader类完成。其中包括:InputStream,OutputStream,Reader,Writer等InputStrea...原创 2019-02-18 13:27:35 · 183 阅读 · 0 评论 -
JAVA从入门到进阶(十二)——IO技术必杀技之四 文件的切割和合并
package iotest;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.SequenceInputStr...原创 2019-02-22 23:41:16 · 130 阅读 · 0 评论 -
JAVA从入门到进阶(十二)——IO技术必杀技之一 缓冲区的技术原理
在Reader和Writer类中,每次只能取单个元素或我们自己指定大小数组的元素。效率低。为了简化我们自身创建数组的步骤,产生了新的技术缓冲区。缓冲的原理:原来都是用源对硬盘上的数据进行操作,而缓冲区的出现就是一个很大的数组,我们把硬盘上的东西一次存储很多到数组上,原来需要多次操作的东西现在按一批一批来处理,这样提升了效率。下面是自定义的缓冲区类,和java提供的缓冲区实现相同的功能。imp...原创 2019-02-17 18:21:00 · 757 阅读 · 0 评论 -
JAVA从入门到进阶(十一)——常用工具类汇总
1 System类其中的属性和方法都是静态的,不能被实例化。常见应用:在跨平台操作时,不同平台有不同的快捷键。在System.getProperties方法中能获取当前的系统属性。Properties的实现是hashtable,有键值映射关系。而键是不会变化的,我们在跨平台操作时,可以通过(String value) System.getPropety(String key)得到value值,...原创 2019-02-17 10:54:49 · 131 阅读 · 0 评论 -
JAVA从入门到进阶(九)——集合类框架基础二
续…集合类框架基础一三 Set集合特点:元素不重复,存入的元素无序。1.1.HashSet 内部由哈希表实现,无序,需要重写hashcode方法和equal方法,来确保存入对象的唯一性。是不同步的。Exampleclass Box{ private int data; private String name; public Box() { super(); // TODO...原创 2019-02-16 17:17:58 · 165 阅读 · 0 评论