自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

软件测试入门笔记

卷死各位,或者被各位卷死

  • 博客(29)
  • 收藏
  • 关注

原创 Java - 在Linux系统上使用OpenCV和Tesseract

7、执行命令:make,开始编译,经过较长时间的等待,如果进度到100%且没有报错,则编译完成;此时build目录下生成了一系列文件,其中lib目录中,就有我们需要的libopencv_java249.so文件,此外bin目录中,还生成了opencv-249.jar这个jar包文件。2)CMAKE_INSTALL_PREFIX=/usr/local/app/install,指定了opencv的安装目录(install也是自己新建的),如果只是为了编译得到.so文件,此参数可以不写;

2024-04-26 10:53:08 1257 7

原创 java - 使用OpenCV + Tesseract识别图片验证码

java-ocr基础

2023-09-19 17:40:20 1395

原创 java基础 - 使用HttpClient封装http工具类

【代码】使用HttpClient封装http工具类。

2023-09-08 18:25:52 602

原创 java基础 - 使用HttpURLConnection封装http工具类

HttpURLConnection使用

2023-09-05 14:25:34 498

原创 java基础 - HashMap

既然输入是无限的,而我们使用的特征空间是有限的,那么不管使用的hash算法多么复杂和精妙,都有可能出现不同的输入信息计算出的特征是相同的,这就是hash碰撞,也叫hash冲突。由put方法的流程可知,调用resize方法扩容出现在首次put,以及put后元素个数大于扩容阈值时,扩容的核心操作是创建一个更大的数组(HashMap采用2倍扩容),然后把原来的元素放到新数组中正确的位置上。这些Node结点在数组中的位置,是通过对k-v中的key进行hash运算,根据计算出的值来确定的,所以叫做HashMap。

2023-06-03 23:40:30 1203

原创 java基础 - 实现一个简单的Http接口功能自动化测试框架(HttpClient + TestNG)

http接口自动化测试

2023-05-29 01:06:49 2590 2

原创 Java基础 - JDBC操作数据库(MySql)

JDBC是Java语言操作数据库的一套接口,也就是规范,具体的实现需要各个数据库厂商去实现。比如我们在使用JDBC去连接mySql数据库的时候,我们必须要依赖一个叫做mysql-connector-java的jar包,这里面封装的就是mySql对于JDBC的实现。

2023-05-23 10:41:08 5825

原创 java基础 - ReentrantLock

从结构上来看,AQS中有两个内部类,一个是Node结点类,一个是ConditionObject条件对象类,前者用来实现队列,后者用来做线程间通信。

2023-05-23 10:40:40 2798

原创 java基础 - ReentrantReadWriteLock

ReentrantReadWriteLock,可重入的读写锁,一个ReentrantReadWriteLock对象中,包含一个Sync同步器对象、一个ReadLock读锁对象 以及一个WriteLock写锁对象。Sync、ReadLock、WriteLock都是ReentrantReadWriteLock的内部类,其中Sync继承自AbstractQueuedSynchronizer,所以ReentrantReadWriteLock也是基于AQS框架的实现。

2023-05-23 10:40:18 339

原创 java基础 - ThreadLocal

ThreadLocal是一个泛型类,作用是实现线程隔离,ThreadLocal类型的变量,在每个线程中都会对应一个具体对象,对象类型需要在声明ThreadLocal变量时指定。

2023-05-23 10:40:02 239

原创 java基础 - 多线程实现

同时它内部有一个Callable类型的成员变量可以通过构造函数进行赋值,线程运行时调用的run方法内部又调用了该Callable成员的call方法,而call方法正是我们可以自己实现的。Producer类实现了Callable接口,重写了带返回值的call方法,但是Thread类的构造函数不接受Callable类型的参数,所以这里用到FutureTask这个泛型类进行串联。3、实现Callable接口,重写call方法,然后结合FutureTask类创建线程。2、实现Runnable接口,重写run方法。

2023-05-23 10:39:07 94

原创 java基础 - 线程池

线程池需要用到java的线程池类ThreadPoolExecutor,通常使用它的构造方法来创建线程池。:核心线程数,即线程池中保持存活的最少线程数。核心线程即使空闲,也会一直存活,除非手动设置参数 allowCoreThreadTimeOut 为true,才能使空闲的核心线程在超过存活时间阈值后被销毁。:线程池中允许存在的最大线程数。:空闲线程的存活时间。默认情况下,核心线程数一直保持存活,此参数只影响针对超出核心数的那部分线程;

2023-05-23 10:38:45 89

原创 java基础 - 设计模式 - 工厂模式

工厂模式也属于创建型模式,主要用来创建对象。通常分为三个级别:简单工厂、工厂方法 以及 抽象工厂。

2023-05-23 10:37:40 60

原创 java基础 - 设计模式 - 单例模式

饿汉式、双检锁式、静态内部类、枚举类型都是可用的单例模式实现方案,可以根据需求不同进行选择,当然最推荐的还是枚举方式的实现,不仅实现简单,而且天然免疫反射、反序列化、clone()等任何形式的破坏,非常安全。

2023-05-23 10:37:02 54

原创 java基础 - synchronized关键字

java基础

2023-04-29 17:07:15 389

原创 spring boot基础 - Mybatis的Mapper实例化原理

我们在使用Mybatis的时候,通常会在Mapper接口上添加@Mapper注解,或者为了方便而使用@MapperScan注解。接下来分别看看这两种注解是如何实现相关mapper的bean注册的。

2023-04-09 16:59:12 1922

原创 spring基础 - AOP

AOP,面向切面编程,通常用来封装与具体业务无关,却用被各业务模块统一调用的逻辑,比如日志管理、权限校验、事务管理等。spring AOP基于动态代理,对类的方法进行增强。

2023-04-09 16:58:50 183

原创 Java基础-JDK动态代理

JDK的中实现动态代理,需要用到java反射包中Proxy类,和InvocationHandler接口使用Proxy创建的代理,本质上是面向接口的代理,是对接口的实现。我们通常说的为目标对象创建一个代理对象,前提就是需要目标对象实现接口,对目标对象的方法增强,本质上是代理对象对接口中对应方法的实现。

2023-04-09 16:58:20 1186

原创 Spring boot启动流程-bean的实例化和初始化

AbstractApplicationContext类的refresh方法中,调用了finishBeanFactoryInitialization(beanFactory)方法,完成了bean factory的初始化,其中就包括bean的实例化和初始化。

2023-04-09 16:57:15 1579

原创 Spring boot启动流程-解决循环依赖

这里可能还看不出来什么头绪,继续往下走,在bean A初始化的时候,会自动装配依赖的bean B、C等,而在B、C初始化时又会自动装配它们所依赖的A(当然B、C在实例化之后也会和A一样先缓存起来),但这个时候A也正在创建中,最终的对象肯定是拿不到的,这时候就考虑生成一个A的早期引用,先提供给B、C。然后B、C就能够完成初始化,最终A也能完成初始化。最后要注意的是,spring解决循环依赖的方式是在bean的实例化完成之后,所以不要在构造方法中引入循环依赖,因为这时对象还没有实例化,spring也无法解决。

2023-04-09 16:56:57 8461

原创 Java基础-Cglib动态代理

摘自OSCHINA(开源中国)的介绍:CGLib (Code Generation Library) 是一个强大的、高性能、高质量的 Code 生成类库。它可以在运行期扩展 Java 类与实现 Java 接口。Hibernate 用它来实现 PO 字节码的动态生成。CGLib 比 Java 的 java.lang.reflect.Proxy 类更强的在于它不仅可以接管接口类的方法,还可以接管普通类的方法。CGLib 的底层是 Java 字节码操作框架 —— ASM。

2023-04-09 16:55:16 1455

原创 Spring boot基础 - 依赖注入

spring boot基础

2023-03-17 17:34:47 4562

原创 Springboot源码学习-启动流程

spring boot启动流程

2023-02-25 18:59:21 740

原创 简单springboot项目搭建(二)-引入数据库(整合mybatis)

springboot整合mybatis

2023-02-21 12:47:09 1999

原创 简单Spring Boot项目搭建(一)-快速上手

springboot入门

2023-02-20 15:15:34 333

原创 JVM类加载机制

JVM类加载

2023-02-01 23:56:54 81

原创 JVM垃圾回收

JVM垃圾回收

2022-12-08 18:06:11 1237

原创 JVM结构及内存管理

jvm

2022-12-05 20:10:25 463

原创 网络基础知识

网络题目

2022-10-18 13:35:01 84

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除