- 博客(277)
- 资源 (3)
- 收藏
- 关注
原创 【BurpSuite】BurpSuite模拟http、https请求发起中间人攻击
默认情况下,当你通过Burp去访问一个HTTPS的网站时,代理为每个主机生成一个TLS证书,由其自己的证书颁发机构(CA)进行证书签名。此CA证书是第一次运行Burp时生成的,并存储在本地。要在访问HTTPS网站上最有效地使用Burp代理,`您需要在浏览器中安装Burp的CA证书作为可信根证书。`否则,就会出现类似如下图的情况:
2024-03-25 17:09:26 753
原创 【Java基础】了解Java安全体系JCA,使用BouncyCastle的ED25519算法生成密钥对、数据签名
- 通过JCA统一的、可扩展的一套`用于实现加密服务的基础功能基础API`,,打包成一个`Provider服务( 安全提供者),也就是一个实现JCA标准的jar包` , **可以动态地加载到Java运行环境中。** - 而开发者在使用只需根据JCA框架提供的`统一接口来调用各种第三方服务商加密算法`、密钥管理等功能,而无需关心底层的实现细节
2024-03-22 11:31:39 998
原创 【Maven】使用maven-jar、maven-assembly、maven-shade优雅的实现第三方依赖一同打Jar包
- **maven-jar-plugin** maven 默认打包插件【springboot默认使用该方式打包】,用来创建` project jar`- **maven-shade-plugin** 用来打可执行包,executable(fat) jar- **maven-assembly-plugin** 支持`定制化打包方式`,例如 apache 项目的打包方式
2024-03-20 16:48:51 792
原创 【Jvm】看懂字节码指令,了解JVM解析和执行Java代码的过程,对并发编程很有好处
JVM字节码指令是Java虚拟机在执行Java程序时所遵循的一种低级指令集。在.java源文件为.class字节码文件后,存储在字节码文件中的就是这些`字节码指令。该指令在Java虚拟机上运行的,与具体的操作系统和硬件无关,实现了Java语言的“一次编译,到处运行”的特性。一般情况下,Java开发者不需要直接与这些指令打交道,因为它们是由Java编译器自动生成的。但在某些高级场景,如类加载器、字节码操作库(如ASM、Javassist)等中,了解这些指令是非常有用的。
2024-03-01 11:40:03 942
原创 【Python】记录生产编程小tips(字符串处理、列表删除、字典、csv、excel操作)持续更新
如果 key 不在字典中,则插入 key 及设置的默认值 default,并返回 default ,default 默认值为 None。倒叙遍历,删除某个元素后,后面元素向前顶替位置,后面的元素是已经check过的,所以不会导致元素遗漏问题。python 使用for循环删除列表元素,容易出现结果与期望不一致问题。pop方法:是删除第一个或者是指定删除元素的下标。可以删除指定下标的元素,删除指定下标范围内的多个元素,删除整个对象。remove方法:直接指定要删除的元素值,删除首个匹配的值。
2024-02-26 17:04:09 355
原创 【SpringBoot】一文教会你使用mybaitsPlus进行面向生产开发
MyBatis-Plus (opens new window)(简称 MP)是一个MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
2024-02-20 15:41:30 892
原创 【Jvm】运行时数据区域(Runtime Data Area)原理及应用场景
Jvm由4个部分组成,分为2个子系统和2个组件,2个子系统为Class loader(类装载)、Execution engine(执行引擎);2个组件为Runtime Data Area(运行时数据区)、Native Interface(本地接口)。Class loader(类加载器):根据给定的全限定名类名(如:Java.lang.Object)来装载class文件到Runtime data area中的method area。Runtime Data Area(运行时数据区域)
2024-02-18 16:23:47 1270 2
原创 【Jvm】性能调优(拓展)Jprofiler如何监控和解决死锁、内存泄露问题
Jprofilers是针对Java开发的性能分析工具可以对Java程序的内存,CPU,线程,GC,锁等进行监控和分析如果没有Jprofiler这类工具, 在生产环境发生内存泄漏, 去一行一行review所有代码是不现实的, 通过此工具我们可以在较短的时间内定位到导致内存泄漏出现的代码位置, 然后review该位置的代码即可.内存泄漏的难的主要是定位, 解决起来一般比较简单,重启生产环境应用,让服务恢复正常, 然后在把导致内存泄漏的代码优化(
2024-02-18 11:28:44 1389
原创 【Jvm】类加载机制(Class Loading Mechanism)原理及应用场景
**JVM 的类加载器具有父子关系**,双亲委派机制是在`Java 1.2`后引入的,其工作原理的是 **,如果一个类加载器收到了类加载请求,它并不会自己先去加载,而是把这个请求委托给父类的加载器去执行,如果父类加载器还存在其父类加载器,则进一步向上委托,依次递归,请求最终将到达顶层的启动类加载器(Bootstrap Class Loader),如果启动类加载器可以完成类加载任务,就成功返回,否则就一层一层向下委派子加载器去尝试加载**,这就是`双亲委派模式`,即`每个儿子都很懒,每次有活就丢给父亲去干,
2024-02-18 11:26:38 1302 2
原创 【Jvm】性能调优(下)线上问题排查思路汇总
【Jvm】性能调优(上)线上问题排查工具汇总1.合理地配置JVM的运行内存空间 2.使用合适的垃圾回收器。内存空间的分配设置:JVM 内存分配不合理最直接的表现就是频繁 GC,这会导致上下文切换(STW)等性能问题,从而降低系统的吞吐量、增加系统的响应时间。调整堆内存空间减少 Full GC、调整年轻代减少 MinorGC、设置合理的 Eden 和 Survivor 区的比例。选择合适的垃圾回收器:GC主要指堆对象和方法区(元空间)只不过废弃常量和无用的类的回收。对于系统响应时间优先的程序可以选择。
2024-02-18 11:24:37 1170
原创 【Jvm】性能调优(中)Java中不得不了解的OOM Error
**在Java中内存相关的问题主要有2种**- **内存泄露 (Memory Leak)**:**申请了内存,但是`没有释放`,导致内存空间浪费**。通俗说法就是`有人占着茅坑不拉屎`。 - **`即应该被GC对象没有被回收`**。通过 JDK的` Jvisualvm 工具`导入`堆快照dump文件`进行分析。- **内存溢出(Out Of Memory)** **申请内存时,JVM没有足够的内存空间**。通俗说法就是`去蹲坑发现坑位满了`。 - **`即内存中的对象确实都是必须存活的`** ,
2024-02-18 11:17:01 827
原创 【Jvm】性能调优(上)线上问题排查工具汇总
- **CPU利用率**:显示的是程序在运行期间实时`占用的CPU百分比`- **CPU负载**:显示的是`一段时间内正在使用和等待使用CPU的平均任务数`。**CPU利用率高,并不意味着负载就一定大**。 - 举例:有个程序需要一直使用CPU的运算功能,那么此时CPU的使用率可能达到100%,但是CPU的工作负载则是`趋近于“1”`,因为`CPU仅负责一个工作嘛`!如果同时执行这样的程序`两个`呢?**CPU的使用率还是100%,但是工作负载则变成2了。所以也就是说,`当CPU的工作负载越大`,代表
2024-02-18 10:52:08 1155
原创 【Java基础】JVM关闭回调函数(ShutdownHook)的应用场景
ShutdownHook就是一个简单的 已初始化 但是 未启动的 线程。当虚拟机开始关闭时,它将会调用所有已注册ShutdownHook的回调函数,这些回调函数执行是并发的,执行顺序是不确定的。作用:JVM退出时执行的业务逻辑(注意:ShutdownHook方法参数必须是Thread的子类,由此得知,ShutdownHook是异步执行的。添加移除需要注意的是,在ShutdownHook里执行的操作应当是不太耗时的。
2024-01-25 17:52:12 909
原创 【Python】如何在服务器上优雅的部署Python项目(Linux/Windows/Mac)
**一般每个不同的项目都会依赖各自的库,有些库的版本不一样会引起冲突,为了解决这个问题,需要使用`虚拟环境`,Python可以在`每个项目目录下创建各自的虚拟环境`,`项目所依赖的包就在当前目录环境下`,这样避免了`库版本的冲突`,也方便相同操作系统间可以快速的拷贝项目运行。**
2024-01-24 16:13:33 1432
原创 【Java开发工具】windows和mac多版本JDK 安装指南:让你在开发中轻松应对不同版本需求
在系统变量中新增三个系统变量分别指向Java8的安装路径,Java17的安装路径以及一个动态的 JAVA_HOME 。一般而言,我们电脑上只安装一个版本的jdk时,我们只需要在 JAVA_HOME 中填入对应版本的Java安装路径即可。然后我们使用path变量,引用JAVA_HOME指定对应的bin路径。当我们采用动态的JAVA_HOME 时,才是将之前单版本的Java路径当作一个变量,比如Java8的安装路径叫JAVA8_HOME,Java17的安装路径叫做JAVA17_HOME,JAVA_HOME使用%
2024-01-09 14:05:31 879
原创 【Python】AppUI自动化—appium自动化元素定位、元素事件操作(17)下
使用Python或Java调用相关的Client,那么Appium里就会通过`Webdriver协议`(Selenium里同样)在应用层进行HTTP方式的数据请求,收到请求的手机上`Appium APP`的**Server**就会解析相关的请求并且使用`Appium`提供的相应`自动化测试方法`去驱动手机做出相应的操作。
2023-11-10 17:32:05 1270
原创 【Python】AppUI自动化—appium自动化开发环境部署、APP测试案例(17)上
Appium是一个跨平台移动端自动化测试工具,可以为IOS和Android平台创建自动化测试用例。可以模拟App内部的各种操作,如点击、滑动、文本输入等。只要我们手工操作的动作Appium都可以完成。appium 支持多平台、多语言appium在不同平台中使用了标准的自动化APIs,所以在跨平台时,不需要重新编译或者修改自己的应用。appium支持Selenium WebDriver支持的所有语言
2023-11-09 17:12:21 1625
原创 【Andriod】使用adb命令安装和卸载apk的通用python脚本
adb 称之为:`Android 调试桥 (Android Debug Bridge )`是一种允许`模拟器或已连接的 Android 设备`进行通信的`命令行工具`,它可为各种设备操作提供便利,如`安装和调试应用`,并提供对 `Unix shell(`可用来在模拟器或连接的设备上`运行各种命令`)的访问。
2023-10-26 14:33:17 776
原创 【Andriod】Appium的不同版本(Appium GUI、Appium Desktop、Appium Server )的安装教程
**`Appium 的核心就是 Appium Server`,使用` node.js` 语言实现,所以在安装 Appium Server 命令行版本之前我们需要先`安装配置 node.js`。Appium 命令行版本安装`相较于 Appium 图形化版本要复杂很多`,建议初学者先安装桌面版本练习,后续再使用命令行版本。**
2023-10-20 14:59:21 2172
原创 【Andriod】adb调试安卓手机时连接真机或模拟器的3种方法,你知道么?
adb 称之为:`Android 调试桥 (Android Debug Bridge )`是一种允许`模拟器或已连接的 Android 设备`进行通信的`命令行工具`,它可为各种设备操作提供便利,如`安装和调试应用`,并提供对 `Unix shell(`可用来在模拟器或连接的设备上`运行各种命令`)的访问。 - 可以在`Android SDK/platform-tools`中找到` adb 工具或下载 ADB Kits `。
2023-10-20 14:04:50 11371
原创 【Java基础】JDK下载安装及环境配置完整教程
Jdk(Java development kit): JDK是 Java语言的软件开发工具包,主要用于移动设备,嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。在进行java开发的时候,都要先安装好JDK,JRE,以及其他java工具。没有JDK的话,无法编译Java程序(指java源码.java文件),如果想只运行Java程序(指class或jar或其它归档文件),要确保已安装相应的JRE。
2023-10-20 10:49:43 415
原创 【Andriod】SDK下载安装及环境配置完整教程
由于 Android Studio 的安装包过大,而使用 adb命令 的时候实际上只需要用到 SDK 工具而已。所以推荐大家去另外一个国内的 Android 工具的下载网站 androiddevtools 下载。进入页面后点击【Android SDK 工具】按钮,然后在弹出的选择框内点击【SDK Tools】按钮,然后界面会自动跳转到SDK 的下载界面,选择适合自己的版本进行下载
2023-10-20 10:37:00 13336 8
原创 【Python】WebUI自动化—如何用Selenium IDE录制脚本生成单元测试代码(基于Chrome)(17)
**Selenium IDE是Chrome和FireFox浏览器中的插件,Selenium IDE结合浏览器提供`脚本录制、脚本回放、脚本编辑、元素定位`等功能,使用Selenium IDE可以将录制的脚本生成相应单元测试框架的自动化测试脚本,录制脚本支持导出`Python pytest、Java JUnit、 NUnit等格式`**
2023-10-09 10:26:02 1450
原创 【Python】WebUI自动化—Selenium的下载和安装、基本用法、项目实战(16)
Selenium 是一个用于测试Web 应用程序的自动化测试工具,它直接运行在浏览器中,实现了对浏览器的自动化操作,它支持所有主流的浏览器,包括IE,Firefox,Safari,Chrome 等。-支持所有主流平台(如,等)实现了诸多自动化功能,比如软件自动化测试,检测软件与浏览器兼容性,自动录制、生成不同语言的测试脚本,以及自动化爬虫等。Selenium 提供了一个工具集,包括Selenium WebDriver(浏览器驱动)、Selenium IDE(录制测试脚本)、
2023-10-08 15:06:49 1773
原创 【SpringBoot】集成SpringSecurity+JWT实现多服务单点登录,原来这么easy
- **单点登录(SingleSignOn,SSO)**,当用户在身份`认证服务器`上登录一次以后,即可**获得访问单点登录系统中其他关联系统和应用软件的权限**,同时这种实现是不需要管理员对用户的登录状态或其他信息进行修改的,这意味着在多个应用系统中,`用户只需一次登录就可以访问所有相互信任的应用系统`。这种方式减少了由登录产生的时间消耗,辅助了用户管理,是目前比较流行的一种**分布式登录方式**。
2023-09-25 16:49:06 1454
原创 【JavaWeb】你这么厉害,知道RBAC权限模型和ABAC权限模型吗?
**ABAC(Attribute Base Access Control)**- 基于 `属性`的权限控制不同于常见的将用户通过某种方式关联到权限的方式,ABAC则**是通过动态计算一个或一组属性来是否满足某种条件来进行授权判断**(可以编写简单的逻辑)。- 属性通常来说分为四类:`用户属性(如用户年龄)`, `环境属性(如当前时间)`, `操作属性(如读取)和对象属性`,所以理论上能够实现非常灵活的权限控制,几乎能满足所有类型的需求。
2023-09-22 15:49:02 807
原创 【Python】从入门到上头—mysql数据库操作模块mysql-connector和PyMySQL应用场景 (15)
PyMySQL 是在` Python3.x 版本中用于连接 MySQL 服务器的一个库`,Python2 中则使用 mysqldb。
2023-09-13 17:32:41 525
原创 【Python】从入门到上头—常用第三方模块基础应用(14)
用Python来编写脚本简化日常的运维工作是Python的一个重要用途。在Linux下,有许多系统命令可以让我们时刻监控系统运行的状态,如。但这样做显得很麻烦,尤其是要写很多解析代码。要获取这些系统信息,Python可以通过。为单位的整数,可以看到,总内存大小是。,journaled表示支持日志。可以看到,磁盘’/'的总容量是。
2023-09-13 16:19:36 116
原创 【Python】从入门到上头—常用内置模块基础应用(13)
Python中的内置模块是一组预先安装在Python解释器中的模块,它们提供了各种各样的功能和工具,可以直接在Python中使用。这些内置模块涵盖了广泛的应用领域,包括数学计算、文件操作、网络通信、日期和时间处理等。 内置模块的存在使得我们能够在不引入第三方库的情况下,利用Python解释器自带的功能,进行快速开发和实现各种任务
2023-09-13 14:16:52 132
原创 【Python】从入门到上头—网络请求模块urlib和reuests的应用场景(12)
- urllib的`request模块`可以非常方便地抓取URL内容,也就是发送一个`GET请求`到指定的页面,然后返回HTTP的响应:- 如果安装了Anaconda(免费、易于安装的包管理器),requests就已经可用了。否则,需要在命令行下通过pip安装:
2023-09-13 09:58:27 331
原创 【Python】从入门到上头— 使用re模块用于快速实现正则表达式需求(11)
**正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的。**- **Python提供re模块,包含所有正则表达式的功能。由于Python的字符串本身也用`\转义`,所以要特别注意:**
2023-09-12 17:50:26 404
原创 【Python】从入门到上头— 多进程与分布式进程(10)
**Python在线程和进程汇总中,应当优选Process,因为Process更稳定,而且,Process可以分布到多台机器上,而线程最多只能分布到同一台机器的多个CPU上。**- Python的`multiprocessing模块`不但支持`多进程`,其中**`managers子模块`**还支持把`多进程分布到多台机器上`。**一个服务进程可以作为调度者,将任务分布到其他多个进程中,依靠网络通信。 - - **由于managers模块封装很好,不必了解网络通信的细节,就可以很容易地编写`分布式多进程程
2023-09-12 15:35:11 593
原创 【Python】从入门到上头— 多线程(9)
**Python的线程虽然是真正的线程,但解释器执行代码时,有一个`GIL锁`:Global Interpreter Lock,任何Python线程执行前,`必须先获得GIL锁`,然后每执行100条字节码,解释器就自动释放GIL锁,让别的线程有机会执行。**- `GIL全局锁实际上把所有线程的执行代码都给上了锁,所以多线程在Python中只能交替执行,即使100个线程跑在100核CPU上,也只能用到1个核`。**- GIL是Python解释器设计的历史遗留问题,通常我们用的解释器是官方实现的**CPy
2023-09-12 10:44:51 233 1
原创 【Python】从入门到上头— IO编程(8)
**IO在计算机中指Input/Output,也就是输入和输出。由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是`磁盘、网络`等,就需要`IO接口`。**比如你打开浏览器,访问新浪首页,浏览器这个程序就需要通过`网络IO`获取新浪的网页。浏览器首先会发送数据给新浪服务器,告诉它我想要首页的HTML,这个动作是往外发数据,叫Output,随后新浪服务器把网页发过来,这个动作是从外面接收数据,叫Input。所以,通常,程序完成IO操作会有Input和Outp
2023-08-31 15:40:36 590
原创 【Python】从入门到上头— 使用包、模块、安装第三方模块(7)
**在Python中,一个`.py文件`就称之为一个模块(Module)。****模块好处?**:- 方便重用代码,写完一个通用的模块,可以在很多地方直接拿来用- 相同名字的函数和变量完全可以分别存在不同的模块中
2023-08-29 18:49:47 262
原创 【Python】从入门到上头— 高级特性(6)
但是在Python中,代码不是越多越好,而是越少越好。代码不是越复杂越好,而是越简单越好。基于这一思想,我们来介绍Python中非常有用的高级特性,1行代码能实现的功能,决不写5行代码。请始终牢记,代码越少,开发效率越高。
2023-08-29 15:24:19 154
原创 【Python】从入门到上头— 错误和异常以及调试(5)
- Python 有两种错误很容易辨认:`语法错误和异常。` - Python` assert(断言`)用于判断一个`表达式`,在表达式条件为` false `的时候触发异常。
2023-08-28 16:44:38 147
原创 【Python】从入门到上头—Python类和对象(4)
具有相同的属性和方法的对象的集合。对象是类的实例。:类中定义的函数。:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。:定义在方法中的变量,只作用于当前实例的类。:在类的声明中,属性是用变量来表示的,这种变量就称为实例变量,。:即一个派生类(derived class)继承基类(base class)的字段和方法。
2023-08-28 16:28:38 139
原创 【Python】从入门到上头—函数(3)
- 函数可重用的代码块,在java中又称为`方法`- 函数分为内置函数,即Python自带的如数,比如 input() 、print()、range()、len() 函数等等,这些都是 Python 的内置函数,可以直接使用。 - 也可以自己创建函数,即将一段有规律的、可重复使用的代码定义成函数,从而达到一次编写、多次调用的目的。这被叫做`用户自定义函数`。
2023-08-25 10:59:11 165
原创 【Python】从入门到上头—Python基础(2)
以#开头的语句是注释,注释是给人看的,可以是任意内容,解释器会忽略掉注释。其他每一行都是一个语句,当语句以冒号:结尾时,缩进的语句视为代码块。缩进有利有弊。好处是强迫你写出格式化的代码,但没有规定缩进是几个空格还是Tab。按照约定俗成的惯例,应该始终坚持使用4个空格的缩进。缩进的另一个好处是强迫你写出缩进较少的代码,你会倾向于把一段很长的代码拆分成若干函数,从而得到缩进较少的代码缩进的坏处就是“复制-粘贴”功能失效了,这是最坑爹的地方。当你重构代码时,粘贴过去的代码必须重新检查缩进是否正确。此
2023-08-24 15:38:28 816
Inkscape是一个开放源码的矢量绘图软件
2023-10-09
exe4j+infoSetup.zip
2021-02-22
屏幕亮度调节软件 8.2.1.4 正式版.zip
2021-02-22
python滑动验证
2023-10-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人