- 博客(248)
- 收藏
- 关注
原创 selenium(二)基于java、元素操控、Frame切换、元素等待
注意ExpectedConditions的写法变成了自定义try {@Overridetry {});if (alert!= null)
2024-08-28 14:22:41
960
原创 selenium(一)基于java、元素定位
是一个用于Web应用程序的自动化测试工具。它直接运行在浏览器中,可以模拟用户在浏览器上面的行为操作。
2024-08-28 14:20:16
1755
原创 JVM(三) GC垃圾判定、垃圾回收算法、垃圾收集器
可以看出,效率上来说,复制算法是当之无愧的老大,但是却浪费了太多内存,而为了尽量兼顾上面所提到的三个指标,标记/整理算法相对来说更平滑一些,但效率上依然不尽如人意,它比复制算法多了一个标记的阶段,又比标记/清除多了一个整理内存的过程。可预测的停顿:这是G1相对于CMS的另一大优势,降低停顿时间是G1和CMS共同的关注点,但G1除了追求低停顿外,还能建立可预测的停顿时间模型,能让使用这明确指定一个长度为M毫秒的时间片段内,消耗在垃圾收集上的时间不得超过N毫秒。这种情况复制算法的回收整理,速度是最快的。
2024-08-11 14:37:09
842
原创 JVM(二) Heap体系、堆内存分析
Heap 堆:一个JVM实例只存在一个堆内存,堆内存的大小是可以调节的。类加载器读取了类文件后,需要把类、方法、常变量放到堆内存中,保存所有引用类型的真实信息,以方便执行器执行,堆内存逻辑上分为三部分:新生区Young/New养老区Old/Tenure永久区Perm新生代(年轻代)、老年代永久代(持久代)。永久区(非堆)就是方法区为什么需要把Java堆分代?不分代就不能正常工作了吗其实不分代完全可以,分代的唯一理由就是优化GC性能。经研究,不同对象的生命周期不同。
2024-08-11 14:20:09
1099
原创 JVM(一) 类加载器、类加载过程、JVM参数设置
每种操作系统的解释器都是不同的,但基于解释器实现的虚拟机是相同的,这也是Java能够跨平台的原因。负责加载class文件,class文件在文件开头有特定的文件标示,并且ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine决定。通过这种层次模型,可以避免类的重复加载,也可以避免核心类被不同的类加载器加载到内存中造成冲突和混乱,从而保证了Java核心库的安全。,即 将要执行的指令代码),由执行引擎读取下一条指令,是一个非常小的内存空间,几乎可以忽略不记。
2024-08-11 13:56:31
831
原创 Git+Gitlab 远程库测试学习
本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作。推送本地的feature-branch(冒号前面的)分支到远程origin的feature-branch(冒号后面的)分支(没有会自动创建)推送分支,就是把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上。会把本地的master分支和远程的master分支关联起来,
2024-06-08 09:54:21
1317
1
原创 idea 打jar包、lib文件夹
在 JAR 文件的内容中,包含了一个 META-INF/MANIFEST.MF 文件,这个文件是在生成 JAR 文件的时候自动创建的,包含了JAR包的描述信息、主类的全类名等信息。manifest 文件中的每一行都是 key-value 对应的:属性名开头,接着是 ":" ,然后是属性值,每行最多72个字符,如果需要增加,可以在下一行续行,续行以空格开头,以空格开头的行都会被视为前一行的续行。在一个标准的Java项目中,lib文件夹下会包含多个jar文件,每个jar文件对应一个第三方库。
2024-02-24 09:15:49
7435
原创 计算机网络-整理(01)
DHCP客户机使用的ip地址的使用是有期限的,一般DHCP客户机使用分配的IP地址到了租期的50%时,会主动向DHCP发送续约请求,DHCP服务器接收到续约请求后,会检查此ip有没有被别的客户机抢占,如果没有就继续续约,如果此IP地址被其他客户机使用,就续约不成功,此时客户机将会重新发起DHCP discovery请求,请求获取新的IP。它同时提供WWW和MAIL服务,为了便于用户访问服务。的20字节是固定的,后面有 4n 字节是根据需要而增加的选项 (n 是整数),因此TCP首部的最小长度是20字节。
2024-02-20 18:59:15
1457
原创 java发送邮件、接收邮件
当你给别人发送邮件时,你的机器的某个动态端口(大于1024)就会与邮件服务器的25端口建立一个连接,你发送的邮件就会通过这个连接传送到邮件服务器上,保存起来。SMTPS和SMTP协议一样,也是用来发送邮件的,只是更安全些,防止邮件被黑客截取泄露,还可实现邮件发送者抗抵赖功能。开启了IMAP后,您在电子邮件客户端收取的邮件仍然保留在服务器上,同时在客户端上的操作都会反馈到服务器上,如:删除邮件,标记已读等,服务器上的邮件也会做相应的动作。接收邮件常用的协议有pop3,imap和exchange。
2024-01-20 09:45:06
6001
原创 Http协议、HttpClient
HttpClient 是Apache HttpComponents 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。可以看到,XFF 的内容由「英文逗号 + 空格」隔开的多个部分组成,最开始的是离服务端最远的设备 IP(用户真实 IP),然后是每一级代理设备的 IP。存放在请求数据包的请求行的URI字段中,以?浏览器 向 WEB服务器发送数据的时候,这个发送的数据需要遵循一套标准,这套标准中规定了发送的数据具体格式。
2024-01-14 11:12:35
1049
原创 Spring Boot整合 Spring Security、 OAuth2
OAuth是一种用来规范令牌(Token)发放的授权机制,主要包含了四种授权模式:授权码模式、简化模式、密码模式和客户端模式OAuth相关的名词第三方应用程序,比如这里的虎牙直播;HTTP服务提供商,比如这里的QQ(腾讯);资源所有者,就是QQ的所有人,你;User Agent用户代理,这里指浏览器;认证服务器,这里指QQ提供的第三方登录服务;资源服务器,这里指虎牙直播提供的服务,比如高清直播,弹幕发送等(需要认证后才能使用)。认证服务器主要包含了四种授权模式的实现和Token的生成与存储资源服务器。
2023-12-08 23:51:07
3012
1
原创 Gateway网关、WebFlux入门
Gateway旨在提供一种简单而有效的方式来对API进行路由,以及提供一些强大的过滤器功能,例如:熔断、限流、重试等
2023-11-11 10:10:21
1454
原创 Netty入门、Reactor 模式
Netty是 一个异步事件驱动的网络应用程序框架, 用于快速开发可维护的高性能协议服务器和客户端。事件驱动模型主要应用在图形用户界面(GUI)、网络服务和 Web 前端上。比如编写图形用户界面程序, 要给界面上每个按钮都添加监听函数, 而该函数只有在相应的按钮被用户点击的事件发生时才会执行, 开发者并不需要事先确定事件何时发生, 只需要编写事件的响应函数即可。监听函数或者响应函数就是所谓的事件处理器(event handler), 类似的事件还有鼠标移动、按下、松开、双击等等, 这就是事件驱动。
2023-10-15 09:17:31
377
原创 SpringBoot整合数据库连接
通过this调用同一个service中的方法,this是指service实现类对象本身,不是代理对象,就相当于方法中的代码粘到了大方法里面,相当于还是一个方法。t_user中数据不会变化,因为执行这条sql的时候报错了嘛,但是t_book这个表里面的库存减一了,也就是“买书三步骤”中的第三步报错了,但是第二步依旧没回滚。若B方法执行的过程中,只要有抛出异常,B事务方法回滚,A不会回滚,即不影响A中的其他事务的执行(如第二次买书失败不影响第一次买书成成功)mybatis默认不开启驼峰命名规则。
2023-10-01 22:09:06
12573
1
原创 分布式文件存储系统minio、大文件分片传输
MD5计算将整个文件或者字符串,通过其不可逆的字符串变换计算,产生文件或字符串的MD5散列值。如果传入的是一个负数,那么这个偏移量将会从数据的末尾从后到前开始计算。因为如果文件、字符串的MD5散列值不一样,说明文件内容也是不一样的。包含了一套完整的事件模型,用于捕获读取文件时的状态,下面这个表格归纳了这些事件。通过slice方法,从blob1中创建出一个新的blob对象,size等于3。的一个下标,这个下标-1的对应的字节将会是被拷贝进新的。,其中 3 个用以读取文件,另一个用来中断读取。
2023-09-22 23:18:27
2012
原创 tomcat服务器
方式一:new moudle--java--web application--[和你的tomcat没有任何关系] 之后需要可以自己创建一个tomcat实例。当前web应用里也有web.xml,只作用于当前工程本身,俩个web.xml上有逻辑继承关系,配置有冲突时以它自己的为准【范围小的为准】3.1 server.xml 用来配置tomcat本身的配置信息,就只需要知道一个地方,69行左右,设置当前的端口号。1.redeploy 重新部署web应用,只部署更新后的,tomcat不需要重启,
2023-08-26 18:07:49
499
原创 Jmeter压测测试
Tomcat作为Servlet容器,负责处理客户端请求,把请求传送给Servlet,并将Servlet的响应返回给客户端。每一次HTTP请求到达Web服务器,Web服务器都会创建一个线程来处理该请求.最大工作线程数:(4核8g内存,线程数800,一般是。变量输入:E:\server\jmeter\apache-jmeter-5.4.1\apache-jmeter-5.4.1。我的电脑----》属性----》高级----》环境变量----》在系统变量中----》点击新建JMETER_HOME,
2023-08-25 22:28:22
287
原创 操作系统OS(二)进程和线程
如果处理机正在第i队列中为某进程服务时,又有新进程进入优先权较高的队列(第1~(i-1)中的任何一个队列),则此时新进程将抢占正在运行进程的处理机,即由调度程序把正在运行的进程放回到第i队列的末尾,把处理机分配给新到的高优先权进程。该算法赋予各个队列中进程执行时间片的大小也各不相同,在优先权愈高的队列中,为每个进程所规定的执行时间片就愈小。PCB 作为进程实体的一部分,记录了操作系统所需的,用于描述进程的当前情况以及管理进程运行的全部信息,是操作系统中最重要的记录型数据结构。只调入一次,调出一次。
2023-06-30 17:51:23
260
原创 操作系统OS(一)磁盘与文件系统
它能对用户的操作进行记录,通过对用户权限进行非常严格的限制,使每个用户只能按照系统赋予的权限进行操作,充分保护了系统与数据的安全。就可以立即让磁头返回,并且磁头只需要返回到有磁道访问请求的位置。规定:只有磁头朝某个特定方向移动时才能处理磁道访问的请求。且每一个磁盘块应包含2的整数幂个地址,如一个磁盘块包含2^10个地址,即1KB。缺点:如果有大量进程竞争使用磁盘,请求访问的磁道很分散,则FCFS在性能上很差,寻道时间长。同一盘片不同半径的同心圆, 是由磁头在盘片表面划出的圆形轨迹,方便数据存储。
2023-06-26 20:33:11
899
原创 bat脚本、cmd命令
bat脚本就是DOS批处理脚本,就是将一系列DOS命令按照一定顺序排列而形成的集合,运行在windows命令行环境上。这个文件的每一行都是一条DOS命令在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用Cmd.exe来运行该文件。
2023-05-13 08:38:46
5954
原创 算法加密与解密、字符集、编码方式
通过散列算法可实现数字签名实现,数字签名的原理是将要传送的明文通过一种函数运算(Hash)转换成报文摘要(不同的明文对应不同的报文摘要),报文摘要加密后与明文一起传送给接受方,接受方将接受的明文产生新的报文摘要与发送方的发来报文摘要解密比较,比较结果一致表示明文未被改动,如果不一致表示明文已被篡改。这个字符集只规定了这个字符集中每个字符对应的码值是多少,但是这个字符集并没有规定具体的编码规则,具体的编码规则有UTF系列的编码规则实现。UTF-8最大的一个特点,就是它是一种变长的编码方式。
2023-05-08 20:57:31
1583
原创 JVisualVM、Visual GC
最大 84M ,实际分配内存:61M ,当前使用了 27.092M , 15 次 的 GC 共使用了 125.394毫秒。最大内存 171M 实际分配了 41M ,当前使用 27.476M , 2次的 GC ,共使用了104.015毫秒。之间,并且我的是jdk8版本,所以我选择JDK 8 Update 40-121,点击对应蓝色链接即可。线程dump – 此按钮主要生产当前程序中所有线程的快照(对分析线程死锁,比较有帮助)最大内存 1.029G 实际分配了 41.25M ,当前使用了 38.603M。
2023-04-20 21:49:25
1479
原创 java设计模式(2)单例模式、工厂模式、原型模式、建造者模式
环境下,我们就要考虑到线程的安全问题:即是否有不同的线程分别new一个对象实例,导致不同线程创建的class类的实例不是同一个。,在新增产品的时候不需要改动已经存在的代码,利于程序的扩展。而简单工厂模式在添加新的产品时,不得不修改工厂方法,扩展性不好。与工厂方法模式相比,抽象工厂模式中的工厂不再只是创建一种具体的产品(比如上面,我们的小米工厂就只是去创建小米手机)。的同时就已经创建好一个静态的对象供系统使用,以后不再改变,所以。看的出来,我们新增了很多个工厂类,那么工厂方法模式好在哪里呢?
2023-04-11 22:04:37
509
原创 java设计模式(1) 适配器模式、装饰器模式、策略模式、观察者模式
之所以会先提到适配器,也是因为在用到GUI编程(awt,swing,swt,jface)的时候经常会遇到。这是在编写awt编程的时候,用到了MouseAdapter,当然这块内容有很多Adapter。我们来看SynchronizedList,它是Collections的静态内部类。MouseListener是一个接口,里面有鼠标的各种事件。上面的这种适配器用法对应的是适配器的第三种用法。这是我在学习安全的并发容器类时用到过的,比如。核心:在不改变原有类的基础上给类新增功能。适配器的主要作用:把原本。
2023-04-06 22:17:07
1875
1
原创 awt、swing
Swing是纯java实现的(100%),不再调用本地平台的GUI,可以在所有操作系统上都保持相同的界面外观,相较于awt被称为“轻量级组件”。Swing组件采用MVC,模型-视图-控制器。
2023-04-01 11:40:42
1063
原创 java日志
m:输出代码中指定的消息%p:输出优先级%r:输出应⽤启动到输出该⽇志信息时花费的毫秒数%c:输出所在类的全名%t:输出该⽇志所在的线程名%n:输出⼀个回⻋换⾏符%d:输出⽇志的时间点%l:输出⽇志的发⽣位置,包括类名、线程名、⽅法名、代码⾏数。
2023-03-07 21:31:57
1046
原创 BIO、NIO
Netty是异步的(指定回调处理)、基于事件驱动的网络应用框架,用于快速开发高性能、高可靠性的网络IO程序。Netty本质是一个NIO框架,适用于服务器通讯相关的多种应用场景,分布式节点远程调用中Netty往往作为RPC框架使用,如Dubbo层级结构NettyNIO(io、网络)jdk原生io编程和网络编程最底层是tcp+ip。
2023-02-15 22:51:21
782
原创 WindowBuilder、SWT、jface
GUI(Graphical User Interface,简称GUI,图形用户界面)是指采用图形方式显示的计算机操作用户界面,与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。AWT:1.包含了很多类和接口2.元素:窗口、核心类:组件Component可以直接用的基本组件:button、TextArea、Label容器:有窗口Window【分为Frame和Dialog】和面板Panel【Applet】基本组件存放在容器中,用add操作。
2023-02-14 22:56:30
1586
1
原创 22-12-19 西安 vue-cli vue-cli脚手架、组件化编程、插槽、vue-router路由、Vuex共享数据
路由route是一组key-value的对应关系;多个路由需要经过路由器的管理对应在vue中就是路径与组件的映射成为路由路由器router时时刻刻检测路径变化。
2022-12-20 10:01:56
708
1
原创 2022-11-14 西安 activiti工作流(01)
使用activiti流程建模工具(activity-designer)定义业务流程(.bpmn文件)。.bpmn文件就是业务流程定义文件,通过xml定义业务流程。定义流程,按照BPMN的规范,使用流程定义工具,用流程符号把整个流程描述出来在idea中,为整个流程起一个id和名字。为每一个任务指定负责人给别人看流程的时候,要导出为png图片(截图也可以)
2022-11-25 21:08:08
858
原创 22-10-14 西安 spring循环依赖
1,Spring创建 bean主要分为两个步骤,创建原始bean对象,接着去填充对象属性和初始化。2,每次创建 bean之前,我们都会从缓存中查下有没有该bean,因为是单例,只能有一个。3,当创建 A的原始对象后,并把它放到三级缓存中,接下来就该填充对象属性了,这时候发现依赖了B,接着就又去创建B,同样的流程,创建完B填充属性时又发现它依赖了A又是同样的流程,不同的是:这时候可以在三级缓存中查到刚放进去的原始对象A。
2022-10-16 22:37:45
459
3
原创 22-10-06 西安 谷粒商城(08)项目打包、jenkins自动部署
程序员只需要关心写代码即可,剩下的代码编译 测试 打包 生成制品(将生成不同版本的包保存到仓库中) 将jar包和他需要的环境一起打包成docker镜像保存到镜像仓库 需要部署的服务器拉取镜像 部署运行 运行失败生成警报发送给程序员。使用6的制品 根据Dockerfile 构建镜像(要执行的jar包 和依赖的镜像 和其他的环境参数)如果还有插件安装失败,可以访问下面的地址 手动下载,按照上面的步骤下载插件上传到jenkins容器。找个目录,把我们的jar包使用xftp拖过去,进入该目录后。
2022-10-06 22:12:10
1450
原创 22-09-29 西安 谷粒商城(07)定时任务、SpringTask异步任务、xxl-job
1.jdk自带的 timer(功能简单)2.springTask提供的定时任务3.quartz:经典的定时任务框架,但是配置繁琐且不能动态配置4.xxl-job:分布式定时任务框架,基于quartz改进的可以动态配置。
2022-09-29 20:43:30
1028
原创 22-09-25 西安 谷粒商城(06)单点登录SSO、JWT实现无状态登录、购物车
网关过滤器分为 全局过滤器和局部过滤器,本次使用的是自定义局部过滤器,验证登录状态。理由如下:很多接口都需要用户登录以后才能访问,比如“加入购物车”,所以选择在网关服务做登录校验如下,只是雏形。。在apply方法中还有一大堆业务代码没写呢。也可以看成是一个模板,没啥可变性。。。@Component/*** 一定要重写构造方法* 告诉父类,这里使用PathConfig对象接收配置内容*/}@Override//获取请求路径。
2022-09-29 09:28:59
718
原创 22-09-23 西安 谷粒商城(05)CompletableFuture异步编排、nginx实现页面静态化
java8提供了基于FutureTask+Callable封装的一个类:CompletableFuture,可以直接执行异步任务并获取任务的结果,同时还可以将多个有任务前后依赖关系的任务使用队列按顺序执行CompletableFuture 实现了Future接口,可以获取任务执行的结果 或者任务执行的状态CompletableFuture 实现了 CompletionStage接口,可以对多个任务进行编排,控制任务按什么顺序执行1、初始化执行异步任务CompletableFuture 提供了四个
2022-09-23 22:46:08
1084
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人