JAVA
文章平均质量分 57
Tommy5553
一步一步
展开
-
JVM五大区
在虚拟机自动内存管理机制的帮助下,不再需要为每一个new操作去写配对 的delete/free代码,不容易出现内存泄漏和内存溢出问题,看起来由虚拟机管理内存一切都很美好。不过,也正是因为Java程序员把控制内存的权力交给了Java虚拟机,一旦出现内存泄漏和溢出方面的问题,如果不了解虚拟机是怎样使用内存的,那排查错误、修正问题将会成为一项异常艰难的工作。运行时数据区域Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域 有各自的用途,以及创建和销.原创 2022-04-24 16:07:49 · 1645 阅读 · 2 评论 -
springboot请求参数校验(自定义注解、反射机制)
在很多应用场景下,后端代码接受到前端请求传来的参数后,先要进行参数校验,然后才进行下一步的业务逻辑操作。1、自定义注解并实现ConstraintValidator接口进行参数校验首先自定义一个注解,用来标识需要校验的请求参数字段@Target({ElementType.METHOD, ElementType.FIELD})@Retention(RetentionPolicy.RUNTIME)@Constraint(validatedBy = ParameterValidate.cl原创 2021-05-21 15:27:09 · 838 阅读 · 0 评论 -
Vue/Spring Boot限制用户接口访问次数
限制用户接口访问次数前端控制前端控制用户接口的访问次数可以使用Local Storage实现案例:限制用户一小时内只能提交10次请求handleSubmit() { if (!this.canSubmit) return; const nowTime = new Date().getTime(); const data = Object....原创 2020-03-18 11:02:13 · 1138 阅读 · 0 评论 -
网络编程-网络基础
IP:网络之间互连的协议,IP地址具有唯一性IP的版本: IPv4:192.168.10.30 IPv6:1080:0:0:0:8:8:00:200C:417AIP地址编址方案:IP地址编址方案将IP地址空间划分为A、B、C、D、E五类,其中A、B、C是基本类A类:10.0.0.0--10.255.255.255B类:172.16.0.0--172.31.255.2...原创 2018-08-15 20:32:51 · 123 阅读 · 0 评论 -
集合框架-概述
Java中集合框架其实就是数据结构实现的封装集合框架是为表示和操作集合而规定的一种统一的标准的体系结构任何集合框架都包含三大块内容:对外的接口,接口的实现和对集合运算的算法(底层都对应着某一种数据结构的算法)常用的框架接口规范:Set(集) : 集合中的对象不按特定方式排序,不允许元素重复List (列表): 集合中的对象按照索引位置排序,允许元素重复Map(映射):集合中...原创 2018-08-13 10:27:47 · 153 阅读 · 0 评论 -
JAVA-模板方法设计模式
模板方法设计模式:在父类的一个方法中定义一个总体算法的骨架(模板方法),而将某一些步骤延迟到子类中,因为不同的子类实现细节不同。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。--------------------------------------------------------------------------------------------------...原创 2018-08-08 14:30:29 · 169 阅读 · 0 评论 -
Web项目-HttpSession
HttpSession是由JavaWeb提供的,用来会话跟踪的类。session是服务器端的对象,保存在服务器端服务器会为每个客户端创建一个session对象,session就好比客户端在服务器端的账号,他们被服务器保存在一个map中,这个map称之为session缓存Servlet中得到session对象:HttpSession session = request.getSessio...原创 2018-08-17 23:17:15 · 241 阅读 · 0 评论 -
Web项目-编码
服务器可以使用setHeader()方法来设置名为Content-Type的响应头,这个头给了浏览器,浏览器就知道服务器使用的是什么编码了response.setHeader("Content-Type","text/html;charset=utf-8");快捷方法:response.setContentType("text/html;charset=utf-8");Post请求,只...原创 2018-08-17 21:18:49 · 291 阅读 · 0 评论 -
JAVA-String和基本类型/包装类型之间的转换操作
把String转换为包装类型:方式1: static Xxx valueOf(String str) 把String转换为包装类的对象Integer i1 = Integer.valueOf("123");方式2:new Xxx(String str)Integer i2 = new Integer("123"); 把包装类对象转换为String:String st...原创 2018-08-08 10:46:51 · 515 阅读 · 0 评论 -
集合框架-TreeSet类
TreeSet集合底层采用红黑树算法,会对存储的元素默认使用自然排序(从小到大)注意:必须保证TreeSet集合中的元素对象是相同的数据类型package com.set;import java.util.TreeSet;public class TreeSetDemo { public static void main(String[] args) { TreeSet&...原创 2018-08-15 11:31:51 · 158 阅读 · 0 评论 -
集合框架-LinkedHashSet类
List接口:允许元素重复,记录先后添加顺序Set接口:不允许元素重复,不记录先后添加顺序需求:不允许元素重复,记录先后添加顺序 --->LinkedHashSet:底层采用哈希表和链表算法 哈希表:保证唯一性 链表:记录元素的先后添加顺序package com.set;import java.util.LinkedHashS...原创 2018-08-15 11:16:25 · 143 阅读 · 0 评论 -
集合框架-Set接口
Set是Collection的子接口,模拟了数学上集的概念Set集合存储特点:1、不允许元素重复2、不会记录元素的先后添加顺序在HashSet中如何判断两个对象是否相同问题1、两个对象的equals方法比较相等,返回true,则说明是相同对象2、两个对象的hashCode方法返回值相等对象的hashCode值决定了对象在哈希表中的存储位置二者缺一不可当往Hash...原创 2018-08-15 11:07:16 · 170 阅读 · 0 评论 -
集合框架-Map案例(计算字符串出现的次数)
package com.map;import java.util.Map;import java.util.TreeMap;//计算一个字符串中每一个字符出现的次数public class MapDemo { public static void main(String[] args) { String str = "aaacdvc"; //把字符串转换为char数组(字...原创 2018-08-15 14:14:56 · 183 阅读 · 0 评论 -
集合框架-Map
概述:严格来说,Map并不是集合,而是两个集合之间的映射关系(Map接口并没有继承与Collection接口),然而因为Map可以存储数据(每次存储都应该存储A集合中的一个元素(key),B集合中的一个元素(value),习惯的还是把Map称之为集合其中key集合是一个Set集合,因为key值不能重复,而value集合是一个List集合,元素可以重复并且把key-value这一键值对称之为...原创 2018-08-15 13:49:41 · 170 阅读 · 0 评论 -
集合框架-Vector
Vector底层实际上就是实现了一个Object类型的数组1、表面上把数据存储到Vector对象中,实际上底层还是把数据存储到Object数组中的2、数组的元素类型是Object,意味着集合中只能存储任意类型的对象3、集合中存储的对象,都存储的是对象的引用,而不是对象(数据)本身 package com.list;import java.util.Vector;pub...原创 2018-08-13 11:17:43 · 194 阅读 · 0 评论 -
集合框架-ArrayList类
ArrayList类是Java集合框架出现之后用来取代Vector类的一个类二者底层都是基于数组的算法,一模一样Vector:所有方法都使用了synchronized修饰,线程更安全,性能较低,适用于多线程环境ArrayList:没有使用synchronized修饰即使在多线程环境下,也不使用Vector类而是使用: List list = Collections.syn...原创 2018-08-13 14:19:09 · 134 阅读 · 0 评论 -
element-UI+Vue+SpringBoot 分页查询
前端分页插件使用element-UI的<el-pagination></el-pagination>组件代码 <el-pagination style="margin-top:15px;" background layout="prev, pager, next" :current-page.sync...原创 2019-10-11 15:35:14 · 2434 阅读 · 2 评论 -
操作IO流的模板
1、创建源或者目标对象文件流举例:输入操作:把文件中的数据流向程序中,此时文件是源,程序是目标输出操作:把程序中的数据流向文件中,此时文件时目标,程序是源2、创建IO流对象输入操作:创建输入流对象输出操作:创建输出流对象3、具体的IO操作输入操作:使用输入流对象的read()方法输出操作:使用输出流对象的write()方法4、关闭资源close()方法...原创 2019-01-04 15:28:52 · 169 阅读 · 0 评论 -
JAVA中冒泡排序和选择排序
冒泡排序这是最简单的排序方法,基本思路是:对未排序的元素从头到尾依次比较相邻的两个元素的大小关系,经过第一轮排序后可以得出最大或者最小元素。可以看出若有N个元素,那么一共要进行N-1轮比较,第M轮要进行N-M次比较。(若6个元素,要进行6-1轮比较,第3轮要比较6-3次)。public class BubbleSort { public static void main(Stri...原创 2018-06-16 17:24:57 · 172 阅读 · 0 评论 -
反射机制-Class类和Class实例
Class类:用来描述类或者接口的类型Class类的实例:在JVM中的一份份字节码,Class类实例表示在JVM中的类或者接口在程序在第一次使用某一个类的时候,就会把该类的字节码对象加载进JVM,并创建一个Class对象Class类可以表示N个类的字节码对象 String.class的类型是 Class<String> 如何创建Class对象,如何表示一个字节码...原创 2018-09-02 17:29:17 · 220 阅读 · 0 评论 -
反射机制-引出反射
元数据:描述数据的描述数据,Class相当于元数据反射:得到类的元数据的过程,在运行时期动态地去获取某一个类中的成员信息(构造器,方法,字段,内部类,接口,父类等),并且把类中的每一种成员,都描述成一个新的类。...原创 2018-08-31 15:32:05 · 206 阅读 · 0 评论 -
反射机制-类加载机制
类加载施将类的class文件(字节码文件)载入内存中,并为之创建一个java.lang.Class对象,称之为字节码对象。当类被加载进内存之后,系统为之生产一个对应的Class对象,接着把类的二进制数据合并到JRE中。 类的初始化,JVM负责进行初始化,主要是对static变量进行初始化。 ...原创 2018-08-31 15:12:01 · 200 阅读 · 0 评论 -
Web项目-request
requset:封装了客户端所有的请求数据请求行请求头空行请求体获取常用信息:获取客户端IP request.getRemoteAddr();获取请求方式 request.getMethod();获取请求参数:请求参数是由客户端发送给服务器的String getParameter(String name);获取指定名称的请求参数值String[] get...原创 2018-08-17 18:55:24 · 204 阅读 · 0 评论 -
Web项目-response
response:服务器响应给客户端响应头:重定向:response.setHeader("Location","目标Servlet");response.setStatus(302);定时刷新:(定时重定向)response.setHeader("Refresh","时间;URL=目标Servlet");快捷重定向:sendRedirect(String Lo...原创 2018-08-17 18:32:42 · 361 阅读 · 0 评论 -
JSP-基础
JSP和Servlet的分工:JSP:1、作为请求的发起页面,例如显示表单,超链接2、作为请求的结束页面,例如显示数据Servlet:作为请求中处理数据的环节JSP的组成:html+java脚本+jsp标签<%...%>:java代码片段,方法内可以写什么,它就可以写什么jsp本身就是一种特殊的servlet...原创 2018-08-17 15:14:36 · 170 阅读 · 0 评论 -
在web.xml中通过contextConfigLocation配置spring
开发Java Web程序,使用ssh架构时,默认情况下,Spring的配置文件applicationContext.xml存放在项目下的“web-inf/applicationContext.xml”目录下,默认时,Spring会加载这个文件,完成Spring的配置。如果想改变配置文件的名称,或者想添加多个Spring的配置文件,则可以通过如下方式添加。在web.xml文件中添加如下内...转载 2018-08-17 11:38:57 · 430 阅读 · 0 评论 -
集合框架-迭代
集合的迭代操作:把集合的元素一个一个的遍历取出来package com.iterator;import java.util.ArrayList;import java.util.Iterator;import java.util.List;//集合元素的迭代和遍历操作public class IteratorDemo { public static void main(S...原创 2018-08-13 21:06:52 · 120 阅读 · 0 评论 -
数据结构-哈希表
哈希表:(底层还是数组)元素的值(value)和在数组中的索引位置(index)有一个确定的对应关系(hash)key-value关系数组会记录添加顺序,按照索引位置来存储,允许元素重复哈希表中,元素是不能重复的,对象如果相同,则hashCode相同--->index相同,并且不会记录元素添加的顺序...原创 2018-08-12 21:13:34 · 129 阅读 · 0 评论 -
数据结构-栈
栈:先进后出(后进先出)继承了MyArrayList类来实现功能package com.stack;import com.array.MyArrayList;public class MyStack extends MyArrayList { //入栈 public void push(Object ele){ super.add(ele); } //出栈,删除栈...原创 2018-08-12 20:57:19 · 120 阅读 · 0 评论 -
数据结构-队列
队列:先进先出(后进后出)单向队列:只能从队列尾插入数据,只能从队列头部删除数据双向队列:可以从队列尾插入和删除数据,也可以从队列头插入和删除数据继承LinkedList类实现功能package com.queue;import com.linked.MyLinkedList;//双向队列public class MyDeque extends MyLinkedList...原创 2018-08-12 20:41:05 · 111 阅读 · 0 评论 -
JAVA-面试题(代码执行顺序)
public class App { private static App d = new App(); private SubClass t = new SubClass(); static { System.out.println(3); } public App() { System.out.println(4); } public static ...原创 2018-07-31 13:18:02 · 1986 阅读 · 1 评论 -
JAVA-二进制分解
import java.util.Stack;import java.lang.Integer;import java.util.Scanner;public class test1{ static void convert(int num) { int result = num; int consult = num; int remainder; Stack<I...原创 2018-07-03 20:28:48 · 421 阅读 · 0 评论 -
JAVA-二分法查找
public class BinarySearch { public static void main(String[] args) { // TODO Auto-generated method stub int[] arr = {1,2,3,4,5,6,7,8,9,10}; int index = binarySearch(arr,8); System.out.printl...原创 2018-06-16 20:03:13 · 183 阅读 · 0 评论 -
JAVA 泛型
泛型是程序设计语言的一种技术——泛化技术,可以将程序中数据类型进行参数化,它本质上是对程序的数据类型进行一次抽象,扩展语言的表达能力,同时支持更大程度的代码复用,它允许程序中某些特殊的数据类型在定义时不明确规定数据类型,而是被指定为一个参数,调用的时候再带入具体的数据类型。...原创 2018-06-02 18:50:24 · 118 阅读 · 0 评论 -
Java-MySql连接 自定义操作类
自定义操作类 在操作数据库时更方便package com.test;import java.sql.*;public class OperateSql { private String username; private String password; private String url; //private String sql; private String sqlDri...原创 2018-06-03 19:00:31 · 551 阅读 · 0 评论 -
JAVA中的栈和堆
JAVA虚拟机栈:描述JAVA方法执行的内存模型,每个方法被执行的时候都会同时创建一个栈帧用于存储局部变量表、操作栈、动态链接、方法出口等信息。每一个方法创建一个栈帧,栈帧存放了当前方法的数据信息(局部变量),当方法执行完毕,该方法的栈帧就被销毁了。JAVA堆:被所有线程共享的一块内存区域,在虚拟机启动时创建。所有对象实例以及数组都要在堆上分配(使用new关键字,就表示在堆中开辟一块新的存储空间)...原创 2018-06-13 20:47:03 · 122 阅读 · 0 评论 -
JAVA参数的值传递机制-基本数据类型和引用数据类型
基本数据类型public class ParameterDemo1 { public static void main(String[] args) { int x = 10; System.out.println("main方法前,x="+x); change(x); System.out.println("main方法后,x="+x); } static void ch...原创 2018-06-16 14:45:40 · 389 阅读 · 0 评论 -
JAVA-多态时方法调用问题
1原创 2018-06-22 11:49:22 · 204 阅读 · 0 评论 -
JAVA-多态
引入: Animal a = new Dog(); 对象a具有两种类型: 编译类型:声明对象的类型Animal。 运行类型:对象的实际类型Dog。 编译类型必须是运行类型的父类/或相同。多态就是对象具有多种形态,对象可以存在不同的形式。 Animal a = null; a = new Dog(); //此时a是Dog类型的形态。 a = ne...原创 2018-06-22 11:36:04 · 280 阅读 · 0 评论 -
JAVA-方法重写
1.方法重写的原则: 实例方法签名必须相同(方法签名 = 方法名+参数列表)。 子类方法的返回类型和父类方法返回类型相同或是其子类。 子类方法的访问权限比父类更大或是相等。(private修饰的方法不能被子类继承,也就不存在重写的概念)。 只有方法存在重写,字段不存在重写。 @Override标签:若方法是重写方法,则在方法前贴上@Override标签。2.方法重写解...原创 2018-06-22 10:06:45 · 220 阅读 · 0 评论