JAVA知识点梳理
我的博客:lcatake_flume,spark,zookeeper-CSDN博客
看不懂的话进去看看
1.Java的三个版本
JAVASE 基本
JAVAME 微缩
JAVAEE 标准
3.java的特点
面向对象
跨平台:jvm将java文件转变为字节码文件(.class)在多个系统中运 行字节码文件
5.Java的三个组件
JDK 语言开发包
JRE 运行环境
JVM 虚拟机
6.基本数据类型
整数:byte(1字节) short(2) int(4) long(8)
浮点:float(4) double(8)
字符串:char(2)
布尔:boolean
5.基本数据类型精度
byte<short<char<int<long<float<double
6. 基本数据类型之间的转换规则
1.低精度给高精度 自动转换
2.高精度给低精度 强制转换
3.不同类型进行运算时,先将低精度转为高精度,精度一致后再进行计算
7.break,continue
break 跳出循环
cotinue 跳出本次循环
8.三目运算符
判断条件?条件满足:条件不满足
9.switch 数据类型
buty,short,int,char,String
10.while do..while区别
while 先判断后执行
switch 数据类型 buty,short,int,char,String
11.获取控制台的信息
Scanner s1=new Scanner(System.in);
while (s1.hasNext()){
String str1=s1.next();
12.数组的缺点
必须要指定数组长度
13.创建多维数组:
1.int[ ][ ] a1=new int[3][ ];
a1[0]=new int[1];
2.int[ ][ ] a1=new int[3][ ];
3. int[][] a3={{1},{2,3},{4,5,6,7},{7,4,5,1}};
14.冒泡排序
int[] arr = {2, 11,4,7,5,22,15,37,12,1};
int zjvalue = 0;//中间值
boolean boo=false;
//冒泡比较相邻元素将小的提前打的放后
//外层循环时用来控制轮数
//内存循环控制每一轮的;排序
//每个元素都走完一遍全部的长度
for (int i = 0; i < arr.length ; i++) {
//每一轮排序都会将最大的一个排到最后 所以-i
for (int j = 0; j <arr.length - 1-i; j++) {
if (arr[j] > arr[j + 1]) {
//存储小的值
zjvalue = arr[j];
//把大的值赋给小的
arr[j ] = arr[j+1];
//把小的值赋给大的
arr[j+1] = zjvalue;
}
boo=true;
}
if (boo==false){
break;
}
}
for (int a : arr) {
System.out.print(a + ",");
}
System.out.println();
15.杨辉三角
int[][] arr=new int[7][];
for (int i = 0; i < arr.length; i++) {
arr[i]=new int[i+1];
}
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j <arr[i].length ; j++) {
if (j==0||j==arr[i].length-1){
arr[i][j]=1;
}else{
arr[i][j]=arr[i-1][j]+arr[i-1][j-1];
}
}
}
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j <arr[i].length ; j++) {
System.out.print(arr[i][j]);
}
System.out.println();
}
16.递归算法的条件
递归:
//1.有出口
//2.有递归算法
17.数组的三个方法
1.是否相等 Arrays.equals
2.复制:system.arraycopy
arraycopy(Object src, int srcPos, Object dest, int destPos,int length);
3.排序Arrays.sort
18.String的方法 (至少十个)
1。charAt()
2。replace() 替换字符串 ,replace(旧内容,新内容) 全部对应元素都要改变 str2.replace("a","q");
3。isEmpty() 判断字符串是否为空
4。concat() 连接字符串
6。indexOf() 查询字符第一次出现的位置
7。lastIndexOf() 查询字符最后一次出现的位置
8.endsWith() 判断字符串是否以。。。结尾
9。toUpperCase()
10。toLowerCase()
11。contains()
12。subString() 截取字符串
13。split() 拆分字符串,变成数组
14。equals() 判断字符串是否相等
15。compareTo() 比较两个字符串
1.如果相同返回0;
第一次不同如果是字符,返回两个字符的Ascrll码的差值
16. startsWith("a");以。。开始
17.lenght() 数组长度
19.Math的方法10个
1.Math.max(20.0,10) 最大值 二选一
2.Math.min(20.0,10) 最小值
3.Math.abs(2-1) 绝对值
4.Math.ceil(9.1)相上取整 浮点数
5.Math.floor(8.9) 向下取整
6.Math.round(8.6)四舍五入
7.Math.pow(x,y) x的y次幂'
8.Math.sqrt(64)开平方
9. Math.random()[0,1)随机数
10.Math.PI 圆周率
20.全局遍历和局部变量的区别
//【区别】:1.初始值不同:成员变量有系统给定的默认值
//局部变量没有初始值 需要使用必须赋予初始值
//2.作用域:成员变量可以在整个类中使用;
//局部变量只能在声明的区域内使用
//3。内存地址不同:成员变量存储在堆,局部变量存储在栈
21.什么是面向对象及其特征
//1.面向对象:面向对象是一种编程思想,所有的操作都是针对对象的属性和方法进行操作
//万事万物皆对象
// 2.面对对象的特征:封装,继承,多态,抽象
22.什么是类什么是对象
//3。类:class,类就是描述事物的抽象概念,可以看作一类物的模板
//4.对象:对象就是类的具体实例
//5.类与对象的关系:类是对象的模板,对象是类的实例
23.构造方法
//【构造方法】:1.没有返回值也不用加void
//2.方法名和类名一样
//构造方法:默认无参构造方法--当没有 有参构造方法时,可写可不写,系统默认提供
//当有了构造方法 需要使用无参构造方法时,必须写出来无参构造;
24.值传递与==
//值传递:
//1.基本数据类型传递的是值
//2.类类型传递的是地址
//==
//1.基本数据类型比较的是值
//2.类类型比较的是地址
25.静态
//关键字 static:静态
//静态修饰的对象: 变量 方法 代码块
//静态修饰的变量:1.调用方法: 引用.静态变量;类名.静态变量
//2.在类加载到内存时,还没有创建对象就已经分配了内存
//3.静态只能调静态
// 静态修饰 的方法:1.静态方法只能访问静态成员变量
//2.静态方法中,不能使用this和super
//3.静态方法只能调用其他的静态方法;不能调用其他实例方法
//静态修饰的代码块:类的加载顺序1.静态代码块在没有创建对象之前,【主动执行一次】
//2.非静态代码块,在【每次】创建对象之前都会主动执行一次
26.封装的概念及其可见性和好处
//【封装】:java把变量和方法封装到类中,通过可见性实现封装
//可见性:
//1.public:公共的 在工程中可见
//2.protected:受保护的,当前类可见,本包可见,外包的子类
//3.default: 不写的时候(默认) 本类,本包可见;
//4.private:私有的,本类可见
//【封装的好处】:1.提供方法名供外界调用
// 2.对内隐藏数据,防止被破坏
27.包装类已经自动装箱,自动拆箱
//int------Integer *
//char---Character *
//【自动装箱】:把基本数据类型转换成对应的封装类
//【自动拆箱】:把封装类转换成基本数据类型
28.重载与重写
【重载 Overload】:在同一个类中 方法名相同,参数的个数或类型不同;
//【重写 @Override】 :在子类重写父类方法时,同名,同参,同返回类型 ;
//重写后的子类的可视性不能比父类的可视性更严格
29.有继承关系的加载顺序
//(前两步)只执行一次
//父类静态代码块
//子类静态代码块
//(后四步)每次对象创建就执行一次
//父类非静态代码块
//父类构造方法
//子类非静态代码块
//子类构造方法
30.//【继承关系中的构造方法】
// 1.父类和子类都没有构造方法时,系统会给父类与子类分别提供默认的无参构造方法(父类只提供父类,子类提供父类和子类)
//2.如果父类存在有参构造方法,子类必须在构造方法的第一行用super(传参)调用父类的构造方法
31.【super】
//1.区分父类的成员变量和子类的成员变量
//2.子类可以在第一行用super(传参)调用父类的构造方法
//3.子类可以在实例方法用super.实例方法 来调用父类的实例方法
32.This
1.区分成员变量和局部变量
//2. 在构造方法的第一行,用this(传参)调用其他的构造方法
//3.在实例方法使用this.方法名调用其他的实例方法
// 33. 【final】
1.final 定义的量叫常量,一经修改就不能改变
//2.final 修饰的类不能被继承
// 3.final 修饰的方法不能被重写但可以重载
34.// 【向上转型】 【向下转型】 动态绑定
//【向上转型】:父类的引用指向子类的对象
//1.只能调用父类的方法和父类的属性,不能调用子类的方法和属性;
//2.如果子列重写了父类的方法,调用的是子类的重写方法
//【向下转型】:父类的引用 赋值给子类的引用
//1.可以调用父类和子类的属性和方法
//2.父类的引用必须是:向上转型的引用
3.向下转型的子类必须和向上转型的子类一致
动态绑定 :在执行期间 而非编译期间,判断引用的类型,根据实际情况调用方法和属性
35.抽象及其在描述抽象时不可以使用的关键字
//[抽象]:共性的内容抽取到父类,但是某些内容无法在父类中具体实现
//1.抽象方法只有方法声明,没有方法体({})
//可见性 abstract 方法名();
//2.包含抽象方法的类必须声明为抽象类
//3.抽象类里可以有实例反法,构造方法和属性
//4.抽象类不能直接new对象,用来给子类new对象和初始化成员变量
//5.继承抽象类的子类,必须重写父类所有的抽象方法
//final因为final类 不能继承,final方法不能被重写
//static 在类加载时已经分配了内存,无法继承和重写
//private仅本类可见,外包无法访问
//使用抽象方法: 必须要重写,有共性
36.接口
//[关键字]:声明接口 interface
//:实现接口 implements
//1.默认被 public static final 修饰的静态常量;
//2.不能写构造方法
//3. 默认被public abstract修饰的抽象方法
//4.接口可以多实现,用","分割
//5.接口可以继承接口 可以【多继承】(java单继承)
//接口 extends 接口1,接口2.。。
//6.如果类是带有继承关系的接口,
//那就需要把所有父接口和子接口的抽象方法全部实现一遍
接口回调
接口的对象指向了 (已经实现了此接口)类的对象
// 这个变量只能调用此接口和父接口在实现类中重写和方法和属性(此接口)
37.java集合体系
//6个接口: 单列 :Collection,(父接口)
// 1.List 有序(有下标,存储位置)(不能去重)
// 2.set 无序(无法使用下标)(可以去重)
//2.1 SortedSet
// 多列:Map
// 1.SortedMap
//一个工具类:Collections
38.[泛型]:
在集合中用来规定集合的类型
List: 实现类,及其区别
Arraylist 2.LinkedList
//1.ArrayList底层是数组存储,LinkList底层是双向列表
//2.ArrayList适合查找,LinkList适合增删
39.List的常用方法
//1.添加元素(在末尾添加,指定位置添加)add可以添加null 并在集合中出现 返回的是布尔类型
//2.删除元素 remove
//3.清空集合
//4。判断是否为空 isEmpty()
//5.查看集合是否包含某个元素 contains
//6.查找元素下标 indexOf
40.遍历集合三种
//1.for-each循环 元素 集合是整数类型,当有null不能使用,会有空指针异常
for (int i:list1){
System.out.println(i);
}
//2.下标长度 list1.size() 获取值 list1.get(i)
for (int i=0;i<list1.size();i++){
System.out.println(list1.get(i));
}
//迭代器 Iterator 是一个接口 提供了遍历集合的方法
Iterator<Integer> it = list1.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
41.// LinkList 独有的方法
//独有的 打印第一个值:list2.getFirst()
//打印最后一个值:list2.getLast()
//删除第一个值: list2.removeFirst();
//删除最后一个值:list2.removeLast();
42.集合 数组互转
//List和数组转换
//1.集合转数组list1.toArray();
//2.数组转集合Arrays.asList(brr);
Set及其接口的实现类和子接口实现类的区别
//【Set】:继承于Collection集合(无序)
//实现类:HashSet
//【SortedSet】:set的子接口
//实现类:TreeSet
//HashSet
//1.去重,可以添加空 不可以选择添加的位置
//2.for-下标 不能使用 s1.get(i)报错
//3.indexOf 无法使用
//TreeSet
//1.不能添加null,按照数字,字母顺序排序,去重,无法通过指定下标写入
//2.for-下标 不能使用 s1.get(i)报错
//3.indexOf 无法使用
//4.不能添加存储类类型 需要重写compareTo方法;
重写equals
@Override
public boolean equals(Object obj){
// 对比的双方是本体 this指向前面的引用名
if (obj==this){
return true;
}
if (obj instanceof People){
People pp=(People)obj;
return pp.sfz.equals(this.sfz);
}else {
return false;
}
}
//在重写equals时,必须重写hashCode
@Override
public int hashCode() {
return Objects.hash(sfz);
}
Map的实现类与实现类的特点与区别
//【Map】:双列集合,键值对形式存储,映射关系(kay,value)
//实现:HashMap
//子接口:SortedMap Map的子接口
//实现类:TreeMap
//HashMap
//1。可以插入null
//2.key不可以重复 会覆盖value值
//3.value值可以重复
// TreeMap
1.key不可以为null
//1.添加 put 返回值不是布尔类型
获取key value和key value对(方法和返回值类型就行)
//2.遍历 普通for循环无法使用get
//1.key
//keySet() 返回值为Set集合 Key为int 存储不能为null
Set<Integer> setkey= m1.keySet();
for (int i:setkey){
System.out.print(i);
}
System.out.println();
//2.value
//values() 返回值为Collection
Collection<String> cc=m1.values();
Iterator it=cc.iterator();
while (it.hasNext()){
System.out.println(it.next());
// 3.key和valueentrySet 返回值为Set<Map.Entry<ket类型,value类型>>
Set<Map.Entry<Integer,String>> entry= m1.entrySet();
for (Map.Entry<Integer,String> en:entry){
System.out.print("key:"+en.getKey()+","+"value:"+en.getValue());
System.out.println();
}
Iterator it3=entry.iterator();
while (it3.hasNext()){
System.out.println(it3.next());
}
常见异常
//1.ArrayIndexOutOfBoundsException 数组下标越界异常
// 2.StringIndexOutOfBoundsException 字符串下标越界异常
//3.NullPointerException 空指针异常
//4.ClassCastException 类转换异常
//5.ArithmeticException 算术异常
//6.NumberFormatException 数字转换异常
50. 【异常的五个关键字】
// try: 指定一个代码块预防所有异常,需要紧跟catch
//后面可以跟多个catch,按照异常顺序捕获异常
//如果有0个catch必须跟上finally
//catch:放在try后面,用来捕获异常类型
//finally: 无论是否发生异常,fianlly都会执行
//在return之前执行.
//
//throws:放在方法名后面主动抛出异常;
//throw:放在方法体里,主动抛出异常;
51. [自定义异常];
//1.新建异常类,继承Execption类,创建构造方法,设置message信息
//2.在需要的地方 用throw new 新的异常类 来抛出异常
52.File的方法
System.out.println(f1.getPath());//地址
System.out.println(f1.getAbsolutePath());//绝对地址
System.out.println(f1.getName());//文件名
System.out.println(f1.exists());//文件是否存在
System.out.println(f1.length());//文件大小
System.out.println(f1.lastModified());//最后一次修改的毫秒数
//获取父目录 getParent() 返回String
getParentFile() 返回File
//创建文件 createNewFile() 文件前的地址一定要存在否则报IoExecption
//创建目录
//mkdir 如果地址不存在 返回false 创建失败
//mkdirs 如果地址不存在 会把所有的父级目录全都创建一次
//创建文件 createNewFile() 文件前的地址一定要存在否则报IoExecption
//创建目录
//mkdir 如果地址不存在 返回false 创建失败
//mkdirs 如果地址不存在 会把所有的父级目录全都创建一次
//【i/o体系】:及其创建
//1.处理单位:字节流,字符流
// 2.处理流向:输入流,输出流
//3.处理功能:节点流,处理流
字节:
FileInputStream input=null;
FileOutputStreamoutput=null;
input=new FileInputStream(path); output=new FileOutputStream(path)
字节处理流:
BufferedInputStream input = null;
BufferedOutputStream output = null;
input = new BufferedInputStream(new FileInputStream(path));
output = new BufferedOutputStream(new FileOutputStream(path)
字符:
FileReader input = null;
FileWriter output = null;
input = new FileReader(path;
output = new FileWriter(path);
字符 处理流
BufferedReader input = null;
BufferedWriter output = null;
input = new BufferedReader(new FileReader(path) {
});
output = new BufferedWriter(new FileWriter(path));
54.字节流和字符流用于读取什么文件
//字节流:适合处理音频,视频,图片读取汉字 分成三个数字
//字符流:通常适合用于处理汉字多的文本文件 读取汉字 分成一个数字
Write和append的区别
write 不可以写空 append可以为空
Write穿的是 int 和byte
append可以直接串String
相关文章:
JAVA知识点梳理
我的博客:lcatake_flume,spark,zookeeper-CSDN博客 看不懂的话进去看看 1.Java的三个版本 JAVASE 基本 JAVAME 微缩 JAVAEE 标准 3.java的特点 面向对象 跨平台:jvm将java文件转变为字节码文件(.class)在多个系统中运 行字…...
[SWPUCTF 2022 新生赛]ez_ez_php
这段代码是一个简单的PHP文件处理脚本。让我们逐行进行分析: error_reporting(0); - 这行代码设置了错误报告的级别为0,意味着不显示任何错误。 if (isset($_GET[file])) { - 这行代码检查是否存在一个名为"file"的GET参数。 if ( substr($_…...
GraphQL strawberry的使用回顾和体会
GraphQL vs RESTful 简单来说GraphQL 比起 RESTful 集成额外一些功能 出入参校验、序列化 (简化后端编程)自由可选的返回数据字段 (简化一些多余接口开发和沟通联调成本) 这些都是优点了。 开发效率在项目初期是很重要的,需要快速原型化。 但是后期稳定后&#…...
08无监督学习——聚类
1.什么是聚类任务? 类别:无监督学习 目的:通过对无标记训练样本的学习来揭示数据的内在性质及规律,为进一步的数据分析提供基础。 1.1K均值聚类 步骤: 随机选取样本作为初始均值向量(初始值:k的值【即几个簇】)分别…...
Python使用OpenCV库对彩色图像进行通道分离
目录 1、解释说明: 2、使用示例: 3、注意事项: 1、解释说明: 在Python中,我们可以使用OpenCV库对彩色图像进行通道分离。通道分离是将彩色图像的每个像素分解为三个通道(红、绿、蓝)的过程。…...
前端面试:【CSS】盒模型、选择器、布局、响应式设计、Flexbox 与 Grid
CSS(层叠样式表)是用于控制网页外观和布局的重要语言。在这篇文章中,我们将深入探讨CSS的基础知识,包括盒模型、选择器、布局、响应式设计,以及弹性盒子(Flexbox)和网格布局(Grid&am…...
深入浅出通过PHP封装根据商品ID获取抖音商品详情数据方法
抖音商城商品详情数据是指商品在抖音商城中的展示信息,包括商品的标题、描述、价格、图片等。商家可以通过商品详情数据了解用户对商品的兴趣和需求,从而进行优化和调整。 商品详情数据还可以帮助商家评估商品的销售情况和市场竞争力,为制定…...
排序(七种排序)
1.插入排序 2.希尔排序 3.选择排序 4.堆排序 5.冒泡排序 6.快速排序 7.归并排序 1.插入排序 1.1思路 把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为 止,得到一个新的有序序列 1.2实现 //插入排…...
【工程优化问题】基于鲸鱼、萤火虫、灰狼优化算法的张力、压缩弹簧设计问题研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
sap ui5刷新页面的方式
1.第一种 window.location.reload();2.第二种 如果你想在UI5应用程序中使用MVC模式来处理页面刷新,可以通过重新加载当前路由来实现刷新。首先,确保你有一个Router对象实例: var oRouter = sap.ui.core.UIComponent.getRouterFor(this);然后&...
Java课题笔记~ Fastjson 概述
3.3 JSON串和Java对象的相互转换 学习完 json 后,接下来聊聊 json 的作用。 以后我们会以 json 格式的数据进行前后端交互。前端发送请求时,如果是复杂的数据就会以 json 提交给后端;而后端如果需要响应一些复杂的数据时,也需要…...
Arduino 入门学习笔记11 读写内置EEPROM
Arduino 入门学习笔记11 使用I2C读写EEPROM 一、Arduino 内置EEPROM介绍二、EEPROM 操作1. 包含EEPROM库:2. 写入数据到EEPROM:3. 从EEPROM读取数据4. 完整示例: 一、Arduino 内置EEPROM介绍 Arduino的内置EEPROM(Electrically E…...
【Nginx】安装make后遇到/bin/sh: 第 0 行:cd: ../pcre-8.38: 没有那个文件或目录
遇到/bin/sh: 第 0 行:cd: ../pcre-8.38: 没有那个文件或目录 需安装pcre 下载 http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz 上传到/usr/local下 pcre解压编译 tar -zxvf pcre-8.35.tar.gz mv pcre-8.35 /usr/local/src/cd /usr/local/src/p…...
在Windows Server 2008上启用自动文件夹备份
要在Windows Server 2008上启用自动文件夹备份,您可以使用内置的Windows备份功能。下面是如何设置它的方法: 1. 点击“开始”按钮并选择“服务器管理器”,打开“服务器管理器”。 2. 在“服务器管理器”窗口中,单击左侧窗格中的“…...
数据结构—线性表的查找
7.查找 7.1查找的基本概念 问题:在哪里找?——查找表 查找表是由同一类型的数据元素(或记录)构成的集合。由于“集合”中的数据元素之间存在着松散的关系,因此查找表是一种应用灵便的结构。 问题:什么查找&…...
EndNote(一)【界面+功能介绍】
EndNote界面: 顶上小图标的介绍: ①:同步 ②:分享 ③:检索全文 对于第三个(检索全文的功能): (不做任何操作的情况下的界面,检索全文的按钮是灰的&…...
JWT令牌验证
目录 一、JWT介绍 二、安装依赖 三、登陆接口 1、令牌工具类 2、接口代码 四、说明 一、JWT介绍 JWT全称:JSON Web Token (官网:JSON Web Tokens - jwt.io) 定义了一种简洁的、自包含的格式,用于在通信双方以json…...
【微信小程序】下拉刷新功能实现
微信小程序开发系列 文章目录 前言一、onPullDownRefresh函数二、实现1.开启下拉刷新2.监听下拉事件 前言 在开发微信小程序中经常会需要下拉页面进行更新要页面数据的功能,微信小程序提供了onPullDownRefresh函数。该函数作用是监听用户下拉动作。 一、onPullDown…...
三角函数与圆,角度和弧度 (草稿,建设中)
目录 1 三角函数与圆,角度和弧度 1.1 三角形 1.2 圆形 2 角度 3 弧度 rad 4 角度,弧度的换算 2 三角函数 1 三角函数与圆,角度和弧度 1.1 三角形 角度弧长sin()cos()tan() 1.2 圆形 半径,周长,弧长半径面积 …...
AIGC 施展“物理魔法”,3D视觉突破“精度极限”
点击关注 文|姚悦,编|王一粟 “没有艺术,全是物理!物理让你快乐,不是吗?” 近日,在世界计算机图形会议 SIGGRAPH 2023 上,英伟达创始人、CEO 黄仁勋宣布,将…...
【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...
vulnyx Blogger writeup
信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...
【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...
脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)
一、OpenBCI_GUI 项目概述 (一)项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台,其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言,首次接触 OpenBCI 设备时,往…...
Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成
一个面向 Java 开发者的 Sring-Ai 示例工程项目,该项目是一个 Spring AI 快速入门的样例工程项目,旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计,每个模块都专注于特定的功能领域,便于学习和…...
华为OD机试-最短木板长度-二分法(A卷,100分)
此题是一个最大化最小值的典型例题, 因为搜索范围是有界的,上界最大木板长度补充的全部木料长度,下界最小木板长度; 即left0,right10^6; 我们可以设置一个候选值x(mid),将木板的长度全部都补充到x,如果成功…...
