java

使用maven实现有关Jsoup简单爬虫的步骤

2021-09-15
一.Jsoup的简介 jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据 二.我们可以利用Jsoup做什么 2.1从URL,文件或字符串中刮取并解析HTML查找和提取数据, 2.2使用DOM遍历或CSS选择器操纵HTML元素,属性和文本 2.3从而使我们输出我们想要的整洁文本 三.利用Jsoup爬取某东示例 可以从图中看到,成功爬取某东的女装热门销量从高到低的

Spring Boot线程池使用的一些实用心得

2021-09-15
目录 前言 使用步骤 用postmain或者其他工具来多次测试请求一下 总结 前言 前两天做项目的时候,想提高一下插入表的性能优化,因为是两张表,先插旧的表,紧接着插新的表,一万多条数据就有点慢了 后面就想到了线程池ThreadPoolExecutor,而用的是Spring Boot项目,可以用Spring提供的对ThreadPoolExecutor封装的线程池ThreadPoolTaskExecutor,直接使用注解启用 使用步骤 先创建一个线程池的配置,让Spring Boot加载,用来定义

源码解析带你了解LinkedHashMap

2021-09-14
目录 元素存储关系 继承体系 属性 构造方法 无参 有参 按插入顺序访问 newNode linkNodeLast 链表节点的删除 LRU(Least recently used,最近最少使用) 栗子 元素被移到队尾 LinkedHashMap维护插入的顺序. 元素存储关系 红黄箭头:元素添加顺序 蓝箭头:单链表各个元素的存储顺序 head:链表头部 tail:链表尾部 继承体系 继承自 HashMap ,因此 HashMap 拥有的荣耀它也都有. 属性 双向链表的头(最老) 双链表的末尾(最小

Spring框架开发IOC两种创建工厂方法详解

2021-09-14
1.IOC有两种创建工厂的方法 IoC 通过工厂模式创建 bean 的方式有两种: 静态工厂方法 实例工厂方法 2.两种方法的不同 2.1静态方法创建 就是直接可以通过静态方法来实例化一个对象,采用类名.方法名的方式创建 public class HelloFactory { public static HelloWorld getInstance(){ return new Hello(); } } HelloWorldFactory.getInstance(); 2.2实例方法创建 采用ne

关于MyBatis plus条件构造器的逐条详解

2021-09-14
目录 条件构造器 说明 警告 说明 allEq 个别参数说明 eq 实例 ne gt ge lt le between notBetween like notLike likeLeft likeRight isNull isNotNull in 例 例 notIn inSql notInSql groupBy orderByAsc 实例 orderByDesc orderBy having func or and nested apply-拼接SQL 实例 last exists notExis

利用Java实现红黑树

2021-09-14
目录 1.红黑树的属性 2.旋转 3.插入 4.删除 5.所有代码 6.演示 1.红黑树的属性 红黑树是一种二分查找树,与普通的二分查找树不同的一点是,红黑树的每个节点都有一个颜色(color)属性.该属性的值要么是红色,要么是黑色. 通过限制从根到叶子的任何简单路径上的节点颜色,红黑树确保没有比任何其他路径长两倍的路径,从而使树近似平衡. 假设红黑树节点的属性有键(key).颜色(color).左子节点(left).右子节点(right),父节点(parent). 一棵红黑树必须满足下面有下面

java应用开发之JVM运行时内存分析

2021-09-14
目录 1.JVM的运行时内存也叫JVM堆 2.JVM新创建的对象 3.新生代详解 4.老年代详解 5.永久代 1.JVM的运行时内存也叫JVM堆 从GC的角度可以将JVM分为新生代,老年代,永久代.其中新生代默认占1/3的堆内存空间,老年代默认占2/3内存空间,永久代占非常少的堆内存空间方式. 而新生代分为Eden,SurvivorFrom,SurvivorTo区,Eden默认占8/10新生代区域空间,SurviorFrom和SurviorTo则占1/10. 2.JVM新创建的对象 JVM新创建

使用Spring Cache设置缓存条件操作

2021-09-14
目录 Spring Cache设置缓存条件 原理 @Cacheable的常用属性及说明 Root对象 @CachePut的常用属性同@Cacheable Cache缓存配置 1.pom.xml 2.Ehcache配置文件 3.配置类 4.示例 Spring Cache设置缓存条件 原理 从Spring3.1开始,Spring框架提供了对Cache的支持,提供了一个对缓存使用的抽象,通过在既有代码中添加少量它定义的各种 annotation,即能够达到缓存方法的返回对象的作用. 提供的主要注解有@

使用springMVC所需要的pom配置

2021-09-14
目录 springMVC所需要的pom配置 配置应用的字符编码格式 servlet api的maven依赖 javaservlet page api(jsp api)的maven依赖 jstl的maven依赖 spring-webmvc的maven依赖 commons-lang3的依赖 hibernate-validator 应用版本跟jetty配置 springMVC 基本pom依赖及配置文件 Spring MVC pom依赖 application.xml web.xml springMVC

Java设计模式之java备忘录模式详解

2021-09-14
目录 引言 备忘录模式(Memento Pattern) 角色 为什么会出现守护者对象(负责人)? 备忘录模式实现框架 下棋案例 备忘录模式总结 优点 缺点 适用场景 注意细节 参考文章 总结 引言 备忘录模式经常可以遇到,譬如下面这些场景: 浏览器回退:浏览器一般有浏览记录,当我们在一个网页上点击几次链接之后,可在左上角点击左箭头回退到上一次的页面,然后也可以点击右箭头重新回到当前页面 数据库备份与还原:一般的数据库都支持备份与还原操作,备份即将当前已有的数据或者记录保留,还原即将已经保留的数

SpringBoot启动指定profile的多种方式

2021-09-14
配置文件中设置 通常在公司级别的项目中,我们可能会写多个application- dev/prod.yml ,然后我们通常会在application.yml配置文件中写入 spring: profiles: active: dev 这里会指定激活的profile是application- dev.yml 注意:application.yml中类似Java中的父类,其他application- dev/prod.yml会继承这个文件,可以进行重写,没有进行重写的属性我们也是能直接读取的,比如app

详解MyBatis resultType与resultMap中的几种返回类型

2021-09-14
目录 一.返回集合 1.返回JavaBean集合 2.返回 Map 集合 二.返回 Map 1.一条记录 2.多条记录,需要指定 Map 的 Key 和 Value 的类型 三.返回 resultMap 自定义结果集封装 1.自定义 JavaBean 的封装 2.关联查询的封装,一对一,JavaBean 属性包含 JavaBean 3.关联查询的封装,一对多,JavaBean 属性包含 JavaBean 的集合 4.鉴别器discriminator 一.返回集合 1.返回JavaBean集合 p

Java并发编程之代码实现两玩家交换装备

2021-09-14
目录 1 Exchanger 是什么 2 Exchanger 详解 3 Exchanger 应用 总结 1 Exchanger 是什么 JDK 1.5 开始 JUC 包下提供的 Exchanger 类可用于两个线程之间交换信息.Exchanger 对象可理解为一个包含2个格子的容器,通过调用 exchanger 方法向其中的格子填充信息,当两个格子中的均被填充信息时,自动交换两个格子中的信息,然后将交换的信息返回给调用线程,从而实现两个线程的信息交换. 功能看似简单,但这在某些场景下是很有用处的

java集合类遍历的同时如何进行删除操作

2021-09-14
目录 java集合类遍历的同时进行删除操作 1. 背景 2. 代码示例 3. 分析 java集合中的一个移除数据陷阱 遍历集合自身并同时删除被遍历数据 异常本质原因 解决 java集合类遍历的同时进行删除操作 1. 背景 在使用java的集合类遍历数据的时候,在某些情况下可能需要对某些数据进行删除.往往操作不当,便会抛出一个ConcurrentModificationException,本方简单说明一下错误的示例,以及一些正确的操作并简单的分析下原因. P.S. 示例代码和分析是针对List的实

Java线程创建的四种方式总结

2021-09-14
多线程的创建,方式一:继承于Thread类 1.创建一个继承于Thread类的子类 2.重写Thread类的run()--->将此线程执行的操作声明在run()中 3.创建Thread类的子类的对象 4.通过此对象调用start(): start()方法的两个作用: A.启动当前线程 B.调用当前线程的run() 创建过程中的两个问题: 问题一:我们不能通过直接调用run()的方式启动线程 问题二:在启动一个线程,遍历偶数,不可以让已经start()的线程去执行,会报异常:正确的方式是重新创建一

Java数据开发辅助工具Docker与普通程序使用方法

2021-09-14
目录 介绍 需求背景: 程序的使用方法 Docker 方式: 普通方式 配置文件说明 最后的话 介绍 需求背景: 有很多业务系统,他们的数据库是相互独立的,俗称数据孤岛,为了做数据统计分析,就需要把这些数据归集在一个数据库中,比如数据仓库,然后多表关联查询,方便开发数据应用.希望能有这样的工具,指定两个数据库和表名,就可以将表从源数据库拷贝到目标数据库中.具体需求如下: 能自动同步表结构,如:源表加字段,目标表自动加字段. 支持增量或全量复制数据,比如按日期进行复制数据. 支持指定字段同步,只同

Java instanceof关键字用法详解及注意事项

2021-09-14
instanceof 严格来说是Java中的一个双目运算符,用来测试一个对象是否为一个类的实例,用法为: boolean result = obj instanceof Class 其中 obj 为一个对象,Class 表示一个类或者一个接口,当 obj 为 Class 的对象,或者是其直接或间接子类,或者是其接口的实现类,结果result 都返回 true,否则返回false. 注意:编译器会检查 obj 是否能转换成右边的class类型,如果不能转换则直接报错,如果不能确定类型,则通过编译,

java开发之基于Validator接口的SpringMVC数据校验方式

2021-09-14
Spring MVC 提供了两种数据校验的方式: 1.基于 Validator 接口. 2.使用 Annotation JSR - 303 标准进行校验. 基于 Validator 接口的⽅式需要自定义 Validator 验证器,每⼀条数据的验证规则需要开发者⼿动完成, 使⽤ Annotation JSR - 303 标准则不需要⾃定义验证器,通过注解的方式可以直接在实体类中添加每个属性的验证规则,这种方式更加方便,实际开发中推荐使用. 1.定义实体类Account package entit

Java设计模式之java外观模式详解

2021-09-14
目录 模式动机 模式定义 模式结构 角色 模式分析 典型的外观角色代码 外观模式实例与解析 实例一:电源总开关 实例二:文件加密 模式优缺点 优点 缺点 模式适用环境 源码分析外观模式的典型应用 (1) 外观模式应用于JDBC数据库操作 (2) Session外观模式是外观模式在Java EE框架中的应用 模式扩展 一个系统有多个外观类 不要试图通过外观类为子系统增加新行为 外观模式与迪米特法则 抽象外观类的引入 总结 参考文章 总结 模式动机 引入外观角色之后,用户只需要直接与外观角色交互,用

springboot 拦截器执行两次的解决方案

2021-09-14
springboot拦截器执行两次 原因是: org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.error 也是一个controller路径为/error @Configuration public class MVCConfig extends WebMvcConfigurationSupport { //自定义的拦截器 @Bean public SecurityInterceptor g