JAVA学习之旅
文章平均质量分 59
Y3pro
欢迎一起讨论问题
展开
-
OFCMS代码审计
这次搭建环境比较顺利,没有遇到什么坑点,于是将前面学的应用到实际的框架审计中。原创 2022-08-19 10:44:06 · 851 阅读 · 0 评论 -
Java代码审计-SQL注入
在执行executeQuery()方法时,如果没有对输入的数据进行提前处理,而是直接拼接到sql语句中,就可能造成sql注入,可以看做executeQuery()就是执行sql语句,而不会进行任何检查。这几个阶段,在预编译的过程中,数据库首先接收到的是带有占位符(?)的语句,解析生成语法树,并且缓存在cache中,然后接受对应的参数信息,从cache中取出语法树,设置参数,再执行优化和执行操作,占位符来代替数据的位置,注意先预编译再拼接数据,而不是拼接完数据之后再预编译(这样的预编译不起作用)...原创 2022-08-10 11:03:16 · 556 阅读 · 0 评论 -
Java-maven换源
找到settings.xml文件,idea自带的maven的路径在。原创 2022-07-24 00:01:12 · 364 阅读 · 0 评论 -
Java代码审计-Java的反射机制
在程序运行时,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性。这种动态的获取信息以及动态调用对象的方法的功能称为 java 的反射机制。类 主要方法是,Runtime可以调用exec()方法执行命令; 每个java程序中都有一个Runtime实例,这个Runtime实例调用getRuntime方法,返回Runtime对象,这个对象拥有exec执行命令的方法获取类的对象 构造任意类的对象 调用任意实例对象的方法: 一段利用反射构建的具有原创 2022-06-24 07:52:50 · 404 阅读 · 0 评论 -
Java代码审计-Filter核心技术
核心内容:Filter的作用:用于拦截请求Filter的执行顺序:先web.xml,在注解Filter的拦截:filter工作在servlet之前,提供过滤功能Filter的配置:web.xml和基于注解的方式Servlet API提供了一个Filter接口,Filter 对web资源进行拦截,通常是拦截request请求待补充...原创 2022-06-22 23:03:25 · 184 阅读 · 0 评论 -
Java代码审计-Servlet学习
1.2 基于注解的方式配置启用注解支持web.xml 的顶层标签 中有一个属性:metadata-complete,该属性用于指定当前 web.xml 是否是完全的。若该属性设置为 true,则容器在部署时将只依赖 web.xml,忽略所有的注解。若不配置该属性,或者将其设置为 false,则表示启用注解支持。在第一次创建servlet的时候被调用,如果servlet已经初始化,那么会跳过这一个方法;也就是说init方法在servlet生命周期中只执行一次传入参数: ServletCo...原创 2022-06-20 20:52:22 · 133 阅读 · 0 评论 -
Java代码审计-环境搭建
1、java环境配置JAVA_HOMEjava -version //查看版本,验证是否配置成功2、docker使用一款开源的项目,更方便搭建环境windows下可以用 Docker Desktop常见docker命令docker pull image-name //从远程拉取一个镜像,但不会生成一个容器docker ps [-a] // 展示当前运行的容器,-a显示所有的docker images // 列出本地获取的镜像文件(里面的时间是镜像制作的时间)docker rmi原创 2022-05-29 00:00:47 · 517 阅读 · 0 评论 -
Java反射-调用构造方法、获取继承关系、动态代理
文章目录一、调用构造方法二、获取继承关系三、动态代理一、调用构造方法1、通过Class类提供的newInstance()方法可以实例化一个类Person p = Person.class.newInstance();//局限性在于 实例化只能调用 public属性的 无参构造方法2、通过构造器来调用构造方法 Constructor 对象getConstructor(Class...):获取某个public的Constructor;getDeclaredConstructor(Class..原创 2022-05-19 20:47:50 · 1200 阅读 · 0 评论 -
Java反射-调用方法
调用方法与访问字段类似,通过Class实例的方法获得Method实例 getMethod()、getDeclaredMethod()、getMethods()、getDeclaredMethods()(这里的方法与获得Field字段的时候的用法是一致的)通过Method实例可以获得有关方法的信息 getName()、getReturnTypes()、getParameterTypes()、getModifiers() (方法的名字、返回类型、参数类型、修饰符)通过Method实例调用某个对象的方法原创 2022-05-18 00:33:19 · 16027 阅读 · 0 评论 -
java反射-访问字段
1、在 java.lang.reflect 下有个 Field 类,因为反射是通过Class类得到的,所以访问字段的方法是在Class类中的方法,得到的类型都是Field类型,一共有四种方法:获取单个 public 属性 的字段(包含父类) Field getField(name)获取单个字段(不包含父类) Field getDeclaredField(name)获取所有 public属性 的字段(包含父类) Field[] getFields()获取所有字段(不包含父类) Fiel原创 2022-05-15 18:31:03 · 684 阅读 · 0 评论 -
Java反射-Class类
反射思考:有没有方法,能在程序运行时去操作一个新建的类?反射可以做到,反射是java的一种操作类的机制,反射就是通过Class实例获取对应class的信息反射基本框架Class newclass= Class.forname(className);//获取类的Class对象(包括类的详细信息)//注意className必须是全限定名(全称)Constructor constructor = newclass.getConstructor();// 通过Class 对象获取构造方法对象(原创 2022-05-07 21:21:14 · 236 阅读 · 0 评论 -
Java核心类学习-String类
文章目录1、String类基本概述2、字符串的比较3、操作子串搜索与提取子串去除首尾空白字符替换子串分割与拼接字符串格式化字符串类型转换1、String类基本概述String是一个引用类型,本身是一个对象注:对于Java而言,除了primitive type值(即int, long, double等),其余的都是对象String类型最大的特点是字符串不可变,这是由于String类内部的private final char[]决定的2、字符串的比较equals()==要想比较两原创 2022-05-03 00:11:25 · 439 阅读 · 0 评论 -
java面向对象编程实践
文章目录一、 题目二、做题流程1、最顶层的抽象类和接口2、往下一层的抽象类3、然后就是具体类的实现4、最后写一个测试类一、 题目分析要点:二、做题流程有哪些接口有哪些抽象类有哪些具体类(实现抽象方法在这里面)各种继承关系和实现关系1、最顶层的抽象类和接口Person.javapackage coach_athlete;/** * @className:Person; * @time:2022-04-28-23:20; * @author:Lee Ye; * @descr原创 2022-04-29 00:20:26 · 981 阅读 · 0 评论 -
java面向对象编程-内部类、classpath、模块
一、内部类1、Inner Classclass Outer{ class Inner{ }}内部类实例无法单独存在,必须依赖于外部类Inner Class的作用在外部类的内部,可以访问private字段,并且可以修改private字段java编译为.class文件,Outer类被编译成Outer.class, Inner 类被编译成 Outer$Inner.class2、匿名类(Anonymous Class)继承接口Runnable r = n原创 2022-04-27 00:05:39 · 270 阅读 · 0 评论 -
java面向对象编程-静态字段、包、作用域
一、静态字段和静态方法1、声明静态字段通过static进行声明,与class中普通字段不同的是, 一个类的所有实例都共享一个静态空间,用来放静态字段的值静态字段访问:类名.静态字段 尽量不要用实例名.静态字段实例对象并没有静态字段,编译器自动转换为类名静态方法调用实例方法必须通过一个实例变量,而调用静态方法则不需要实例变量,通过类名就可以调用。静态方法类似其它编程语言的函数。静态方法只能访问静态字段,不能访问this,不能访问实例字段静态方法用于工具类Arrays.sort(原创 2022-04-27 00:03:10 · 207 阅读 · 0 评论 -
java面向对象编程-抽象类与接口
一、抽象类问题一:能不能去掉父类中被重写方法的执行语句?问题二:能不能去掉父类中被重写的方法?问题一:class Person{ public void run(); //去掉执行语句}问题二:class Person{ //去掉被重写的方法}public void runTwice(Person p){ p.run()}结果是都会报编译错误1、抽象类和abstract关键字如果一个类定义了方法,但没有任何执行语句,这个方法就是抽象方法 用abstrac原创 2022-04-27 00:00:21 · 432 阅读 · 0 评论 -
java面向对象编程——继承与多态
一、继承继承是面向对象的一种强大的机制,可以实现代码的复用,通过extends关键字实现class Person{ }class Student extends Person{ }ps:子类会自动获得父类的所以字段,不能在子类中再去定义和父类字段相同的字段扩展:在OOP的术语中,把Person称为超类(super class),父类(parent class),基类(base class),把Student称为子类(subclass),扩展类(extended class)原创 2022-04-18 12:33:54 · 405 阅读 · 1 评论 -
java面向对象编程——构造方法
需求的提出:能不能在实例化对象的同时,同时完成对象的初始化?Person ming = new Person();ming.setName = "Xiao Ming";ming.setAge = 19用构造方法之后,创建一个实例Person ming = new Person("Xiao", 19);ps:由于构造方法特殊,构造方法(函数)的名称就是类名1、构造方法的特点参数没有限制,在构造方法内部可以写任何语句构造方法没有返回值调用构造方法要用 new 操作符2、默认构造方法原创 2022-04-13 15:26:05 · 182 阅读 · 0 评论 -
java面向对象编程——方法
1、一个类可以包含多个字段(field),field的两种属性public 外部可以直接操作private 拒绝外部访问,需要通过方法(method)来间接访问2、方法public 方法暴露给外部的可以操作的函数private方法类中调用,外部无法调用this变量this是一个隐含的变量,始终指向当前的实例,用法:this.fieldps:如果有局部变量和字段重名,局部变量的优先级更高class Example{ private String name;原创 2022-04-13 14:31:49 · 418 阅读 · 0 评论 -
十五周学习java的一些问题
写在前面:保证每周都要学一点java的基础知识1 、用IDEA 时遇到Error: java: 无效的源发行版: 17错误解决原因:因为中途我改了java 的版本,所以出现了这种报错解决:项目结构 => 修改 SDK2、java如何判断某一变量属于什么类型1、对于简单类型变量,是无法直接获得变量类型的,要想获取,必须自定义函数进行返回。 2、对于包装类型变量,是可以直接获得的,变量名称.getClass().getName();3、使用 instanceof 来判断:变量名 i原创 2022-04-04 00:23:55 · 192 阅读 · 0 评论 -
JAVA题目——从 ¼ 变成 0
写在前面:一道有意思的java编程题,解决判断奇数的问题,很简单,转换思维即可主要的点在:i % 2 的值可以是0, -1, 1,三种,这里涉及到java对取余符号%的定义例如:当取余操作返回一个非零的结果时,它与左操作数具有相同的正负符号。即 a % b(b!=0) 的结果由 a 决定,a 是正数则结果为正,a 是负数则结果为负,所以当 i 是一个负奇数时,i % 2 等于-1而不是1解决代码如下public class OddUtil{ public static bool原创 2022-03-25 14:04:26 · 612 阅读 · 0 评论 -
关于一整天都无法构建一个Java Web项目这件事
写在前面:配置环境枯燥,特别让人不耐烦,把入门java的过程记录下来,避免再去踩同样的坑,也为别人提供一种解决问题的思路1、下载java和tomcat这个地方选择去百度一下,在官网上下载即可两种方式:下载安装包下载安装文件,一键安装(这个我不能用,枯了)要注意版本匹配的问题2、配置java和tomcat环境参考文章2.1 给java配系统环境1、JAVA_HOME (jdk的安装环境)2、Path%JAVA_HOME%\bin%JAVA_HOME%\jre\bin%CAT原创 2022-03-20 23:38:04 · 869 阅读 · 0 评论 -
JAVA学习之旅第三天——数据类型
一、数据类型1、基本数据类型在java中,默认的数字类型是int型,初始化long类型时,应当为 long 变量 = 1L(大小写l都可以)int num = 1 定义了一个int型long num = 1 num还是int型,因为存在类型自动转换,数字默认是intlong num = 1L 定义一个long型char ch = 97 与 ch = 'a’相同1.1、数据类型所占空间byte(字节)——1字节short(短整型)——2字节int(整型)——4字节long(长整型)——原创 2022-03-18 00:33:14 · 430 阅读 · 0 评论 -
JAVA50道练习题
写在前面:这一周在复习考试,复习间隙累了就看看简单的编程题目,当做熟悉java的基本知识第一题古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?import java.util.Scanner;//导入Scanner包,用来接受键盘的输入和输出/** * @className:Question_one; * @time:2022-03-11-20:02; * @author:Lee Ye; *原创 2022-03-13 23:33:37 · 2081 阅读 · 0 评论 -
JAVA学习之旅第二天-常量与变量
一、常量1、声明常量语法:final 数据类型(如int) 常量名 = 值规范:常量名通常全部大写,常量初始化后不可再次赋值意义:用有意义的变量名来避免魔术数字,package Demo;/** * @className:TestFinal; * @time:2022-03-06-17:28; * @author:Lee Ye; * @description:这是一个java示例; */public class TestFinal { static final int Y原创 2022-03-06 18:34:11 · 93 阅读 · 0 评论 -
Java学习之路-第一天
Java学习之路-第一天写在前面:学习java知识,早日看懂wp参考大佬的博客学,博客1、第一个java程序package Demo; //声明包/** * @className:Hello; * @time:2022-03-05-20:32; * @author:Lee Ye; * @description:这是一个java示例; */public class Hello { //一个类用public声明,类名与文件名要一致 public st原创 2022-03-05 22:29:06 · 221 阅读 · 0 评论