java
Alex十年
永远年轻,永远热泪盈眶。
展开
-
java基础--集合----并发修改异常
并发修改异常: 当你遍历集合的同时,又往集合中添加或者删除元素,就可能报并发修改异常。 方案一:用列表迭代器解决。注意:要用列表迭代器的添加或者删除方法。 方案二:用CopyOnWriteArrayList.package jihe;import java.util.ArrayList;import java.util.ListIterator;import java.uti...原创 2018-04-26 17:08:48 · 369 阅读 · 0 评论 -
java基础--集合----Properties集合类
Properties集合类:是一个双列集合,键值都是String,他是唯一一个可以和IO流直接结合使用的集合类。主要是一些以.propertie结尾的配置文件。 它可以直接从流中读取数据,也可以直接写入数据到流中。package jihe;import java.io.FileInputStream;import java.io.FileOutputStream;import j...原创 2018-04-26 18:01:40 · 228 阅读 · 0 评论 -
java--工具类、正则表达式
一、工具类的两个特点: 1.构造方法是私有的 2.所有的成员都是静态的,即变量和方法都是静态的。 在java中,Math类就是工具类二、正则表达式 String中的方法:matches(String regex)告知此字符串是否匹配所给的正则表达式 正则校验手机号:(首先是要检验是否为空)一行代码:return if(num==null)?false:num.matches(...原创 2018-04-27 14:39:57 · 267 阅读 · 0 评论 -
javaWeb--http协议
一、协议:协议的甲乙双方,就是客户端(浏览器)和服务器! 理解成双方通信的格式! 1、 请求协议格式如下: (get请求没有请求体,但是有空行)请求首行; (GET /hello/index.jsp HTTP/1.1:GET请求,请求服务器路径为/hello/index.jsp,协议为1.1;)请求头信息; (请求头,请求头由key/value组成。)空行; (这个位置虽然没有...原创 2018-04-28 15:35:26 · 426 阅读 · 0 评论 -
java基础--常犯错误(一)
一、equal()和==1、如果 Object o 非 null,那么 o.equals(null) 恒等于 false,即 null 不等于任何非 null 对象。 2、== 是个运算符,表示内存地址是否相同。 从Object类中equals的实现来看,原始的equals方法跟==是等价的。 3、基本数据类型 如 byte, char, short, int, long, float...原创 2018-08-13 11:07:26 · 435 阅读 · 0 评论 -
javaWeb---自定义标签库
一、九个内置对象out –> jsp的输出流,用来向客户端响应page –> 当前jsp对象! 它的引用类型是Object,即真身中有如下代码:Object page = this;config –> 它对应真身中的ServletConfig对象!pageContext –> 一个顶9个!request –> HttpServletEequestres...原创 2018-08-13 11:07:50 · 378 阅读 · 0 评论 -
javaweb ---JDBC
一、JDBC核心类(接口)介绍 JDBC中的核心类有:DriverManager、Connection、Statement,和ResultSet! DriverManger(驱动管理器)的作用有两个:注册驱动:这可以让JDBC知道要使用的是哪个驱动;获取Connection:如果可以获取到Connection,那么说明已经与数据库连接上了。Connection对象表示连接,与数据...原创 2018-08-13 11:08:22 · 359 阅读 · 0 评论 -
javaWeb---jsp三大指令
一、JSP指令概述 JSP指令的格式:<%@指令名 attr1=”” attr2=”” %>,一般都会把JSP指令放到JSP文件的最上方,但这不是必须的。 JSP中有三大指令:page、include、taglib,最为常用,也最为复杂的就是page指令了。 二、page指令的pageEncoding和contentType(重点) pageEncoding指定当前JSP页面的...原创 2018-08-13 11:08:55 · 216 阅读 · 0 评论 -
一道题明白类加载过程
重点记忆:构造代码块(普通代码块)是随着构造器的执行而执行。当执行构造器的时候,如果有构造代码块,会先执行构造代码块,然后再执行构造器。类中的实例成员,相当于构造代码块。也就是说,构造代码块执行的时候,也会执行实例成员。类中的静态成员,相当于静态代码块,也就是说,静态代码块执行的时候,也会执行静态成员。类加载有四种情况:调构造器,Class.formName(),调静态属性,调静态方法。后面...原创 2019-08-19 16:58:21 · 147 阅读 · 0 评论 -
例题讲解-两个线程间通信-依次输出12A34B56C......
例题:线程A输出1-52,线程B输出A-Z,最后的输出结果是:12A34B56C…。首先要想依次输出,需要实现两个线程之间的通信,线程之间的通讯可以通过共享对象来实现思路:两个线程A,B都实现Runnable接口,在C线程的main方法中,定义一个Object变量,并且将这个Object变量传入到A,B的构造方法中,当创建A,B两个线程的时候,通过有参的构造方法创建,在for循环中添加同步代码...原创 2019-08-19 19:23:10 · 607 阅读 · 0 评论 -
java设计原则
设计模式就是前辈们总结出来的设计方法。不同的设计模式适用于不同的场景。公认的设计模式有23种。千万不要认为有任何一种设计模式能够解决任何问题,每一种设计模式只能用于特定的场景,而不是万能的。设计模式有优点,也有缺点,不能为了使用设计模式而使用设计模式。切记模式的滥用。单一职责原则:每个方法,每个类,每个框架只负责一件事。优点:代码的重用性提高,代码的可读性提高,就像大纲一样。开闭原则:对扩...原创 2019-08-20 09:31:21 · 217 阅读 · 0 评论 -
浅克隆和深克隆
浅克隆:克隆的时候是直接将内存中的二进制复制一份,克隆不会调用构造器。实现浅克隆需要是先实现Cloneable接口,其实实现Cloneable接口就像是实现序列化接口一样,仅仅是一个标识的作用。不过此时我们需要重写clone()方法。浅克隆的时候,如果被克隆的对象的某个属性还是一个对象,那么克隆出来的对象的这个属性和被克隆的对象的这个属性将指向同一块地址,所以在修改克隆出来的对象的这个属性时,被...原创 2019-08-21 10:22:28 · 159 阅读 · 0 评论 -
阻塞的三种状态以及死锁
1、一个线程占有了一个对象锁之后,CPU资源仍然能够被抢走。2、当其他线程抢到了CPU资源之后,发现获取不到对象锁,就会进入阻塞状态,此时进入的是由于获取不到对象锁而阻塞的阻塞队列中。3、当占有锁的线程释放锁的时候,就会立即唤醒等待锁的其他线程(在因获取不到对象锁而阻塞的阻塞队列中的线程)。上面所说的释放锁的时候,包括了所有释放锁的情形:a、线程退出同步块synchronized(obj...原创 2019-08-21 11:36:06 · 5375 阅读 · 1 评论 -
try和finally中有return时,执行结果总结
try中有return,但是finally中无return,但是finally中有代码,这个时候finally的代码会执行。如果try中return返回的是对象,在finally中的代码对return的对象修改,return返回的值是修改后的值。如果try中return返回的是基本数据类型,在在finally中的代码对return的基本数据类型修改,try中return的值不会被改变。try...原创 2019-08-29 16:39:45 · 564 阅读 · 0 评论 -
高并发缓存架构设计之缓存雪崩解决方案
使用缓存:用户访问java程序,java程序请求数据库,为了减少数据库的压力,我们在java程序和数据库之间加入缓存,并且可以进行快速的响应。缓存雪崩:因为缓存服务挂掉或者热点缓存失效,从而导致所有的请求都去查数据库,导致数据库连接不够用或者数据库处理不过来,从而导致整个系统不可用。数据库服务器压力大,依赖数据库的其他系统也会面临崩溃的风险。缓存雪崩的原因:一、高峰期大面积缓存key失效(...原创 2019-08-29 16:40:09 · 252 阅读 · 0 评论 -
java基础--集合----单列集合和双列集合遍历
单列集合遍历(主要是ArrayList和HashSet):双列集合遍历(主要是HashMap): Map是java中的接口,Map.Entry是Map的一个内部接口。 Map提供了一些常用方法,如keySet()、entrySet()等方法, keySet()方法返回值是Map中key值的集合; entrySet()的返回值也是返回一个Set集合,此集合的类型为M...原创 2017-12-22 19:11:40 · 1697 阅读 · 0 评论 -
java基础知识
一、标识符和关键字 标识符:用来标识类名、变量名、方法名、类型名、数组名、文件名等等的有效字符序列。 命名规则:1、由字母、下划线、美元符号和数字组成,长度不受限制。2、第一个字符不能是数字 3、不能够是关键字 4、标识符不能是true,false,null。5、区分大小写 java语言使用Unicode标准字符集,前28个字符刚好是ASCII码表。关键字:JAVA语言中已经被赋予了特定...原创 2018-01-13 11:45:54 · 381 阅读 · 0 评论 -
上转型对象、抽象和接口、内部类、匿名类
一、对象的上转型对象 假设A类是B类的父类,用子类创建一个对象,并把这个对象的引用放到父类的对象中,此时这个父类的对象就称之为子类创建的对象的上转型对象。 A a=new B();//用子类的构造对象创建一个父类对象对象的上转型对象的实体是子类负责创建的,但上转型对象会失去原对象的一些属性和功能(上转型对象相当于子类对象的一个“简化”对象)。上转型对象具有如下特点:1)上转型原创 2018-01-14 11:30:07 · 497 阅读 · 0 评论 -
面向对象的三大特征(封装、继承、多态)
Java面向对象的体现是所有的声明必须放在一个类中,不允许在外面放东西。 面向对象设计的方法:根据现实问题直接抽象出对象,分析对象的行为和行为相关的数据,对象间通过传递消息进行通讯,从问题出发,模拟现实问题,建立系统模型,易于理解和实现。 结构化开发方法就是面向过程的方法: 1、采用自顶向下,逐步求精的程序设计方法 2、使用三种基本控制结构构造程序,任何程序都可以由顺序选择循环三种...原创 2018-01-13 21:02:13 · 3371 阅读 · 0 评论 -
request
一、request概述 在客户端发出每个请求时,服务器都会创建一个request对象,并把请求数据封装的request中,然后在调用Servlet.service()方法时传递给service()方法。 request的功能可以分为以下几种:封装了请求头数据封装了请求正文数据,如果是Get请求,那么就没有正文request是一个域对象,可以把他当成Map来添加获取数据request转载 2018-01-16 20:28:26 · 247 阅读 · 0 评论 -
java基础--IO流-----分割文件
分割文件 RandomAccessFile类的主要功能是完成随机读取功能,可以读取指定位置的内容。 之前的File类只是针对文件本身进行操作的,而如果要想对文件内容进行操作,则可以使用RandomAccessFile类,此类属于随机读取类,可以随机读取一个文件中指定位置的数据, 实例化此类的时候需要传递File类,告诉程序应该操作的是哪个文件,之后有一个模式,文件的打开模式,常用的两种模式:...原创 2018-04-30 16:21:24 · 664 阅读 · 1 评论 -
各种混合小知识点(一)
1、虚拟机是无法跨平台的,不同的操作系统上有不同版本的虚拟机。因为虚拟机技术,java才可以跨平台。 2、我们所说的栈为虚拟机栈。 3、finalize()方法,返回类型是object,当没有引用指向该对象时,垃圾回收器调用该方法。就算我们自己手动调用该方法,你也不知道什么时候就被回收,所以我们是无法控制对象什么时候被回收。 4、超文本:带有超链接的文本 5、http:无状态协议,不会记住...原创 2018-05-01 14:29:25 · 342 阅读 · 0 评论 -
Scanner中next()和nextLine()
public class T { public static void main(String[] args){ Scanner scan = new Scanner(System.in); System.out.println("请输入第一个值"); String s1= scan.next(); //String s11=...原创 2018-04-24 20:28:48 · 173 阅读 · 0 评论 -
java基础— File类以及IO流
一、File类的使用(用来操作路径的) 在写路径的时候,不能按照电脑中的方式写,如果使用\要写为\,但是推荐写为/,这是只用写/,而不用写两个 即E:\\text\\a.jpg等同于E:/text/a.jpg 给了三种构造方法: 1.只传路径 2.路径分开为两部分写 3.把前面的路径封装为一个file对象File file = new File("C:/");File file2...原创 2018-04-25 16:13:47 · 547 阅读 · 0 评论 -
java基础---IO流--复制文件(面试题)
普通字节流,一次读写一个字节(FileInputStream && FileOutputStream)普通字节流,一次读写一个字节数组高效字节流,一次读取一个字节(BufferedInputStream && BufferedOutputStream)高效字节流,一次读取一个字节数组普通字符流,一次读取一个字符(FileReader &...原创 2018-04-25 19:02:23 · 833 阅读 · 0 评论 -
java基础--IO流--异常处理
JDK1.6及之前异常处理选中try-catch的代码块,Alt+Shift+Z,快捷键try-catchpackage io;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;...原创 2018-04-25 19:57:41 · 229 阅读 · 0 评论 -
java基础--IO流----复制文件夹
其实有写好的jar包可以使用,现在项目下面新建一个文件夹lib,然后把jar包复制进去,右击—Build Path—add to buildPath即可,jar包原理如下 思路:定义一个方法,用来获取用户录入的文件夹路径 getDir() 定义一个方法,用来复制文件夹 copyDirToDir()package io;import java.io.File;import ja...原创 2018-04-25 21:03:06 · 343 阅读 · 0 评论 -
java异常
一、异常的底端是Throwable类,异常分为编译期异常(只处理语法问题)和运行时异常(不处理也可以通过编译)。 捕获异常快捷键alt+shift+z 二、异常处理的两种方式: 1.try{ //尝试要运行的代码}catch(异常类型 异常名){ //处理异常代码}finally{ //要释放的资源,正常情况下,是最后肯定会运行的 (如果catch中写了S...原创 2018-04-25 21:30:02 · 99 阅读 · 0 评论 -
双列集合遍历的两种方式
package day4_20;import java.util.HashMap;import java.util.Map;import java.util.Set;public class CollectionTest { public static void main(String[] args) { Map<String,String> ma...原创 2018-04-25 21:30:28 · 865 阅读 · 0 评论 -
java基础--多线程---简要和两种实现方式
线程简要理解进程:可执行文件或者程序,例如.exe 线程:进程的执行单元或者路径。 (车看做进程,线程就是马路,单线程就是单行道,多线程就是多行道) 多线程软件:QQ,微信,就是你和别人聊天的同时,还能和另一个人聊天,能够同时进行多个事情。 一个电脑上可以有多个进程,这些进程之间的数据时隔离的。(我用qq发给你的信息,你只能用qq接收,而不能用微信接受) 一个进程可以有多个线程,这些...原创 2018-04-26 10:22:15 · 318 阅读 · 0 评论 -
java基础--匿名内部类
详解请点击—–匿名内部类 现在有一个抽象的Animal类,其中有一个抽象eat()方法,如何调用eat()方法。普通做法是,创建一个子类Cat继承Animal,然后重写eat()方法,创建对象Cat c = new Cat(),调用eat()方法。我们可以简便写为:new Cat().eat(),其中new Cat()就是Cat类的一个匿名对象,也可以说是Animal类的子类的一个匿名对象...原创 2018-04-26 11:40:15 · 259 阅读 · 0 评论 -
java基础--多线程模拟买票案例---(同步)
Thread类中的构造方法和常用方法: 构造方法:public Thread() 和 public Thread(Runnable target) 常用方法:start() 开启线程 和 getName() 获取线程名字,线程名字的默认编号是Thread-编号,编号是默认从0开始 currentThread()是Thread的静态方法,获取当前线程对象多线程安全问题: ...原创 2018-04-26 11:56:11 · 2047 阅读 · 0 评论