随笔分类 - JavaSE
Java基础
摘要:Java反序列化漏洞实现 一、说明 以前去面试被问反序列化的原理只是笼统地答在参数中注入一些代码当其反序列化时被执行,其实“一些代码”是什么代码“反序列化”时为什么就会被执行并不懂;反来在运营商做乙方经常会因为java反反序列化漏洞要升级commons.collections或给中间件打补丁,前面说
阅读全文
摘要:# Java基础篇 ## 语法篇 ### JDK、JRE和JVM的关系 JDK、JRE和JVM的关系: - JDK(Java Development Kit)是Java开发工具包的缩写,包含了Java编译器、Java运行时环境(JRE)和其他开发工具。JDK是开发Java应用程序的必备工具,它提供了
阅读全文
摘要:jdk自带的jvm监控工具 jconsole ,jvisualvm,jmc **1.jconsole** > jconsole 主要监控 JVM 的概览、内存、线程、类、vm概要、MBean等内容。JConsole 会消耗大量系统资源,因此 [Oracle](https://so.csdn.net/
阅读全文
摘要:一、获取可执行jar包所在目录 (1)方法一:使用 System.getProperty("java.class.path") 获取classpath的路径,若没有其他依赖,在cmd下运行该可执行jar包,则该值即为该jar包的绝对路径。代码如下: /** * 方法一:获取当前可执行jar包所在目录
阅读全文
摘要:Java如何获取当前的jar包路径以及如何读取jar包中的资源 写作业的时候要输出一个record.dat文件到jar包的同级目录,但是不知道怎么定位jar包的路径。百度到的方法不很靠谱,所以在这里记录一下。 一:使用类路径 1 String path = this.getClass().getPr
阅读全文
摘要:前言 在Java领域,动态代理应用非常广泛,特别是流行的Spring/MyBatis等框架。JDK本身是有实现动态代理技术的,不过要求被代理的类必须实现接口,不过cglib对这一不足进行了有效补充。本篇博客将涉及2个话题:第一,JDK动态代理的实现原理,带你探索动态代理的实质面目;第二,自己动手写代
阅读全文
摘要:JDK动态代理的过程 JDK动态代理采用字节重组,重新生成对象来替代原始对象,以达到动态代理的目的。 JDK中有一个规范,在ClassPath下只要是$开头的.class文件,一般都是自动生成的。 要实现JDK动态代理生成对象,首先得弄清楚JDK动态代理的过程。 1.获取被代理对象的引用,并且使用反
阅读全文
摘要:tomcat filter 用的是责任链模式,每一个filter 就是一个过滤条件 参考文章:http://t.csdn.cn/jegoo
阅读全文
摘要:项目开发过程中为了增加程序的可读性和程序的健壮性, 方便后期程序的调试和维护,所以需要在开发过程中统一技术规范,一般会在项目初期确定好相关文档作为这一统一的规范。不同公司会对文档做不同要求,划不同的分类,但一般来说(或者拿自己的经验说)大致可以分为需求文档、接口文档、流程图(可以单独作为一份文件可以
阅读全文
摘要:Java基础 为什么要分数据类型? 优化存储空间,提高内存利用率。 Java有哪几种数据类型? Java分基本数据类型和引用数据类型。 基本数据类型(四类8种) 1.整数类型: byte int short long 2.浮点数(小数)类型: float double 3.字符类型: c
阅读全文
摘要:Java 读取JAR文件信息-PathMatchingResourcePatternResolver 解析classpath*: Java 读取JAR文件信息 JAR 文件格式以流行的 ZIP 文件格式为基础。与 ZIP 文件不同的是,JAR 文件不仅用于压缩和发布,而且还用于部署和封装库、组件和插
阅读全文
摘要:JAVA IO Java IO原理 IO流用来处理设备之间的数据传输。 Java程序中,对于数据的输入/输出操作以"流(stream)" 的方式进行。 java.io包下提供了各种"流"类和接口,用以获取不同种类的数据,并通过标准的方法输入或输出数据。 流的分类 按操作数据单位不同分为:字节流(8
阅读全文
摘要:回顾: 什么是集合: java.util.Collection接口:所有集合的顶级接口,下面有两个子接口:List、Set Collection接口中的常用方法: add():添加元素 size():获取集合元素个数 isEmpty():判断当前集合是否为空集(size()为0即为空集) clear
阅读全文
摘要:精华笔记: String常见面试题: String的常用方法: length():获取字符串的长度(字符个数) trim():去除当前字符串两边的空白字符 toUpperCase()/toLowerCase():将当前字符串中的英文部分给转换为全大写/全小写 startsWith()/endsWit
阅读全文
摘要:内存管理:由JVM来管理 堆: 存储的是new出来的对象(包括实例变量、数组的元素) 垃圾:没有任何引用所指向的对象 垃圾回收器(GC)不定时到内存中清扫垃圾,回收过程是透明的(看不到的),并不一定一发现垃圾就立刻回收,通过调用System.gc()可以建议虚拟机尽快调度GC来回收 实例变量的生命周
阅读全文
摘要:精华笔记: 数组: 复制: 排序: 方法:函数 封装一段特定的业务逻辑功能 尽可能独立,一个方法只干一件事 方法可以被反复多次调用 减少代码重复,有利于代码维护 何时用:一个业务有很多地方都用、只要是一个独立的功能就需要把它抽到一个方法中 方法的定义:五要素 修饰词 返回值类型 方法名(参数列表
阅读全文
摘要:精华笔记: 循环结构: for结构:应用率高、与次数相关的循环 三种循环结构如何选择: 先看循环是否与次数有关: 若有关 直接上for 若无关,再看第1要素与第3要素代码是否相同: 若相同 直接上do...while 若不同 直接上while break:跳出循环 continue:跳过循环体中剩余
阅读全文
摘要:精华笔记: Scanner接收用户输入的数据:共分三步,先记住它 面向对象第4天大家才能理解 分支结构: if结构:1条路 if...else结构:2条路 2选1 if...else if结构:多条路 多选1 switch...case结构:多条路 优点:效率高、结构清晰 缺点:只能对整数判断相等
阅读全文
摘要:精华笔记: 运算符: 算术:+、-、*、/、%、++、-- 关系:>、<、>=、<=、==、!= 逻辑:&&、||、! 赋值:=、+=、-=、*=、/=、%= 字符串连接:+ 条件/三目:boolean?数1:数2 分支结构:基于条件执行的语句 if结构:1条路 if...else结构:2条路 笔记
阅读全文