Java
文章平均质量分 62
Java
CHQIUU
当你发现自己的才华撑不起野心时,就请安静下来学习吧
展开
-
线程同步简介,看看多线程应用程序中最流行的并发控制方法
同步是确保两个或更多线程正常运行的一堆技巧。原子性——如果你的代码包含了对多个线程共享的数据进行操作的指令,那么对该数据的无管制并发访问可能会触发数据竞争。包含这些指令的代码段称为临界区(critical section)。你要确保临界区是原子性执行的:正如上一集定义的那样,一个原子操作(atomic operation)不能被分解成更小的操作,因此当一个线程正在执行它时,其他线程不能通过;排序——有时你希望两个或多个线程以可预测的顺序执行工作,或者对访问特定资源的线程数量进行限制。原创 2023-08-17 09:07:08 · 10309 阅读 · 0 评论 -
对多线程的简单介绍,关于进程和线程的相关知识
现代计算机有能力在同一时间执行多个操作。在先进的硬件和更智能的操作系统的支持下,这个特性使你的程序运行得更快,无论是执行速度还是响应速度。编写利用这种能力的软件是令人着迷的,但也非常棘手:它需要你理解计算机背后发生了什么。原创 2023-08-16 17:26:29 · 10215 阅读 · 0 评论 -
为什么要将 Java 用于后端基础架构?
想知道为什么要在后端基础架构中使用流行的Java编程语言吗?如果您计划构建新的 Web 或移动应用程序,这是一个重要的问题。原创 2023-08-16 16:48:28 · 10186 阅读 · 0 评论 -
怎么才能写出“干净的代码”,编写干净代码的十大技巧
它必须是可读的;它们看上去很雅致;它们必须易于理解,并遵循单一责任原则(SRP);干净的代码必须易于理解,易于修改,易于维护;干净的代码必须按照测试策略运行测试。在他的书《面向对象的分析与设计》中,Brady brooch将干净的代码定义为“简单和直接”。干净的代码读起来就像写得很好的散文。干净的代码从来不会模糊设计者的意图,而是充满了清晰的抽象和直接的控制线。原创 2023-08-15 15:34:41 · 10281 阅读 · 0 评论 -
程序员要写出清晰代码的六条建议
让我们看看如何通过最小化变量的可见性来防止面条式代码()现象的一些建议。我们的目标是将变量在源代码中可见的代码部分减少到尽可能少的程度,即减少变量的作用域。原创 2023-08-15 14:59:53 · 10277 阅读 · 0 评论 -
20个具有争议的编程观点
是的,我知道这冒犯了一些人,他们多年的高质量记忆和/或大量的编程书籍开始被任何人都可以在几秒钟内访问的资源所取代,但你不应该反对使用它的人。如果你是在书上查到的,在谷歌上查到的,或者从一只会说话的青蛙那里听到的,你产生了幻觉,这重要吗?我们花费了大部分时间维护别人(或自己)编写的代码,而糟糕的、不正确的、过时的、误导性的注释肯定是代码中最令人讨厌的工作之一。如今,这似乎是一个有争议的观点。去年我做了相当多的面试,我的面试部分是测试人们的思维方式,以及他们如何在白板上实现简单到适度的算法。原创 2023-08-14 11:37:19 · 10159 阅读 · 0 评论 -
NullPointerException(NPE)是你的朋友,而不是错误
事实证明,在大多数情况下,我们的API函数不是假定的,也不是其他开发人员期望返回空的。在特殊情况下,比如缺少某些东西,Java中的惯例是返回一些“空对象”(空集合、未填充的域对象等),或者抛出异常,这比返回空的危害要小一些。当某个类型的某些值在运行时失败(如被零除)时,这是正常的,但当一个值导致所有操作的运行时失败时,这表明该值从一开始就不属于该类型。事实是,NULL的概念没有错,但Java的类型系统认为NULL是每种类型的成员,这是错误的。它们只不过是不同的类型,有不同的、安全的操作集可供使用。原创 2023-08-13 16:16:31 · 10181 阅读 · 0 评论 -
什么是单页应用程序?如何选择及架构、优势和挑战
单页面应用程序(Web应用程序或网站)仅加载单个页面。然后,当用户与Web服务器交互时,它使用从Web服务器获取的新内容重写页面,而不是为每次交互加载新页面。单页面应用程序是一种网站解决方案,可以直接在浏览器中呈现JavaScript代码。它确保用户在浏览网站时不会重新加载页面。这是通过确保浏览器通过单个请求或通过响应用户活动更新必要的材料来获得基本的HTML、JavaScript和CSS代码来实现的。采用单页面应用程序(SPA)的企业因其结构简单、易于导航和使用更少的资源而越来越受欢迎。原创 2023-08-13 12:06:43 · 10658 阅读 · 0 评论 -
为新手和非技术人员提供扩展Web网站提供一个升级指南
本指南总结了扩展的基本原则,从一台服务器扩展到能够服务数百万用户的Web应用程序。它面向在技术领域工作的新手和非开发人员。因此,如果您刚刚部署了您的多云平台VPN设置,那么本文并不适合您。话不多说,那就让我们开始吧!原创 2023-08-12 11:15:06 · 10313 阅读 · 0 评论 -
使用dom4j将xml转为String并去掉所有格式
要将 XML 转换为字符串并去除格式,您可以使用 dom4j 提供的 OutputFormat 类,并设置其格式化选项为不缩进和不添加换行符。有以下xml内容,需要转成String字符串。同时,要去掉文中所有格式。原创 2023-08-09 09:15:44 · 11038 阅读 · 0 评论 -
使用dom4j 在指定标签前插入标签
XML开发过程中,要在xml指定位置使用 dom4j 插入标签,您可以通过以下步骤实现: 1. 首先,找到要插入的位置的父节点; 2. 创建新的元素或复制现有元素作为要插入的标签; 3. 使用父节点的 add(int index, Element element) 方法将新创建或复制的元素插入到指定索引位置。原创 2023-08-02 08:45:00 · 10312 阅读 · 0 评论 -
jsoup输出设置格式化为关闭格式化,保持HTML原样输出,保留:回车、 换行、 空格
jsoup输出设置格式化为关闭格式化,保持HTML原样输出,保留:回车、 换行、 空格原创 2022-12-08 09:35:34 · 10912 阅读 · 0 评论 -
删除HTML中特定标签,同时保留标签里的内容处理办法
删除HTML中特定标签。如:`span1spanl1i1il1 i2`,需要删除其中的span标签和i标签,想要得到的结果为:`span1spanl1i1il1 i2`原创 2022-12-08 09:21:10 · 10588 阅读 · 0 评论 -
Java中数字转字符串使用String.format实现补0方法
Java中数字转字符串使用String.format实现补0方法原创 2022-03-31 17:22:01 · 12463 阅读 · 1 评论 -
Spring Security 登录失败时获得用户输入账号和密码
文章目录前言一、代码实现前言在记录用户登录操作日志,是想要记录用户登录失败的操作日志信息,记录当次用户登录的IP、登录名及输入的密码信息。当然你还可以用来控制用户多次登录失败后锁定用户登录等。一、代码实现可以考虑使用import cn.hutool.extra.servlet.ServletUtil;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Autowired;原创 2021-09-26 16:19:52 · 10428 阅读 · 0 评论 -
Windows系统中使用bat批处理文件启动Springboot项目jar说明,让部署跟简便
文章目录前言一、准备项目程序及配置文件二、编写启动bat文件三、执行批处理前言在项目开发和部署中,根据业务需要,我的项目程序不一定都是运行在Linux系统环境中,也有运行在Window Server中的,那么我们样才能更加便捷的部署和更新程序呢。下面介绍一种通过编写bat批处理文件方式,启动Springboot项目的方法供大家参考。一、准备项目程序及配置文件以code-generator-plus项目为例,打包好的jar包和config文件拷贝到部署目录,如下图所示二、编写启动bat文件原创 2021-08-13 17:48:08 · 10779 阅读 · 4 评论 -
Idea中发布JAR包到中央仓库报错问题处理 unable to find valid certification path to requested target
报错信息如下:Failed to execute goal org.sonatype.plugins:nexus-staging-maven-plugin:1.6.8:deploy (injected-nexus-deploy) on project spring-redis-current-limit: Execution injected-nexus-deploy of goal org.sonatype.plugins:nexus-staging-maven-plugin:1.6.8:deploy原创 2020-12-24 12:43:07 · 10484 阅读 · 0 评论 -
高并发系统的限流方案研究,其实限流实现也不复杂
在高并发系统中可以通过至少三种技术来保护系统:缓存、降级、限流。这里主要介绍限流算法。随着网站用户规模的增加,业务的扩张,我们网站所承受的流量规模和并发数也会不断增加。到了一定阶段我们就会希望可以对网站的流量进行一定程度的控制。因为我们的业务处理能力是有限的,我们需要优先保证关键业务的正常运转。技术人员一直以来都在致力于可以彻底的解决高并发问题,但是到目前为止也没有一种可以彻底解决的方案。其实我们可以从一整个用户请求的过程中的每个阶段进行分析,在不同的阶段采用不同的方案。原创 2020-12-16 17:08:40 · 10203 阅读 · 3 评论 -
Spring Boot Validator校验注解配置说明
Spring Boot Validator校验注解配置说明验证注解验证的数据类型说明空检查@Null任意类型验证注解的元素值是null@NotNull任意类型验证注解的元素不是null@NotBlankCharSequence子类型(CharBuffer、String、StringBuffer、StringBuilder)验证注解的元素值不为空(不为null、去除首尾空格后长度不为0),不同于@NotEmpty,@NotBlank只应用于字符串且在比原创 2020-09-24 16:27:10 · 10310 阅读 · 1 评论 -
手把手教你编写bat文件重启Springboot项目生成的jar包
在项目运维中,会遇到要更新线上项目的jar情况。有些项目根据客户要求可能会运行在Windows Server中,当我们更新发布新的jar文件时候都要执行多条命令才能更新完成。这里为大家提供一条新的思路进行参考,那就是建立一个批处理文件,完成jar项目重新启动功能。原创 2021-07-16 14:58:50 · 10231 阅读 · 18 评论 -
Java8新增的日期处理工具LocalTime、LocalDate、LocalDateTime常用功能笔记整理
文章目录前言一、LocalTime二、LocalDate二、LocalDateTime前言Java 8新增了LocalDate和LocalTime接口,为什么要搞一套全新的处理日期和时间的API?因为旧的java.util.Date实在是太难用了。java.util.Date月份从0开始,一月是0,十二月是11,变态吧!java.time.LocalDate月份和星期都改成了enum,就不可能再用错了。java.util.Date和SimpleDateFormatter都不是线程安全的,而Local原创 2021-07-16 11:31:15 · 10194 阅读 · 10 评论 -
练习使用WebMagic爬取唯美图片
周末闲着没事,准备练习一下爬虫技术,同时也拓展一下视野(欣赏一下美好的东西),练习使用WebMagic爬取美女图片实战。原创 2021-07-12 11:19:36 · 10189 阅读 · 8 评论 -
为大家提供一个基于Springboot开发的SSM代码自动生成工具(附源码地址)
code-generator-plus是基于Springboot开发的SSM代码生成器,使用 Apache FreeMarker 作为代码文件的模板,用户可以一键将数据库中的表生成entity、xml、dao、service、html、js、sql代码文件,并集成表的基础操作接口及前端功能实现(数据表的增加、删除、修改、根据ID获取信息以及分页查询功能),减少60%以上的开发任务;该工具支持所有实现JDBC规范的数据库;默认集成了MySQL数据库脚本;该工具提供了两种数据库表导入方式,连接数据库或直接导原创 2021-07-02 14:10:45 · 10396 阅读 · 113 评论 -
HttpClient支持HTTPS(SSL),忽略安全证书配置,一文搞懂
文章目录问题描述解决方案:HttpClient4.5中支持HTTPS请求处理方法HttpClient5.1中支持HTTPS请求处理方法问题描述最近在学习HttpClient做爬虫,尝试使之能够支持HTTPS请求,忽略安全证书。在网上找了很久的资料,发现这方面的资料很少,而且多数都不准确。故记录一下。解决方案:HttpClient4.x与HttpClient5.x中配置还是有所不同,以下为大家两个版本的处理方法。HttpClient4.5中支持HTTPS请求处理方法Maven中引入配置:<原创 2021-07-01 16:14:19 · 19119 阅读 · 5 评论 -
电脑多网卡模式下,使用特定网口发送HTTP请求的代码实现(HttpClient5.1)
目录前言:解决方案:基于HttpClient5.1:总结:前言:前面我们讲了使用基于HttpClient和Socket两种方式处理多网卡模式下的绑定本地网卡发送请求的代码实现,现在讲一下重写HttpClient5实现本地网卡绑定实现方法。解决方案:基于HttpClient5.1:关键代码,重写DefaultRoutePlanner.determineLocalAddress 方法,加入需绑定的本地IP。代码如下:import lombok.SneakyThrows;import lombo原创 2021-07-01 15:39:45 · 10599 阅读 · 2 评论 -
自己开发邮编查询,根据地址查邮编代码实现(JAVA)
文章目录前言一、数据准备二、代码实现1. 格式化地址对象2. mapper数据库查询代码3. 查询代码实现三、运行效果前言通过地址查询邮编处理步骤:1. 首先要对地址进行格式处理,去掉多余部分,某某路后面的部分不要,因为地址库中可能没有会查不到;2. 对省市县进行处理,去掉省市县(民族)后缀;3. 若提供的详细地址在库中查不到,则从地址尾部去掉一个字再查询,直到查询到数据为止;4. 使用Mysql全文检索(5.7以后的版本),提供查询精度;一、数据准备首先准备全国邮编数据库,这里我整理了原创 2021-06-30 11:11:36 · 11421 阅读 · 3 评论 -
SpringBoot性能调优笔记
分析起一个单纯的spring boot的web项目,容器为undertow自动GC后使用的内存约为28M,随着运行产生一些运行对象,最高达到约300M起一个只有一个接口的spring cloud euraka项目,容器为undertow自动GC后使用的内存约为49M,最高达到约344M,每隔约17分钟执行一次垃圾回收hap-user-service服务,不添加JVM参数自动GC后使用的内存约为115M,最高达到约1.4G,每隔约50分钟执行一次垃圾回收。本机内存为16G,JVM自动原创 2021-06-24 11:00:34 · 10709 阅读 · 4 评论 -
SpringBoot项目中Controller层代码编写规范整理
SpringBoot项目中Controller层代码编写规范整理Controller层代码规范SpringMVC接口定义要注意以下常见的几种问题1. 返回格式不统一2. 没有考虑失败情况3. 出现和业务无关的输入参数Controller层代码规范主要的内容是就是接口定义里面的内容,你只要遵循里面的规范,controller就问题不大,除了这些,还有另外的几点:所有函数返回统一的ResultBean/PageResultBean格式;没有统一格式,AOP无法玩.ResultBean/PageRes原创 2021-06-24 10:49:18 · 10571 阅读 · 2 评论 -
Springboot项目中对返回前端的JSON数据进行格式化配置
文章目录前言对返回前端的JSON数据进行格式化代码前言在WEB项目开发中,通常都是前后端分离,由后端提供接口前端进行访问,返回的数据一般是JSON格式,在配置项目时候会对返回JSON进行格式化。下面是我在多个项目开发过程中总结出来的一个通用的JSON数据格式化的通用配置,希望能够帮助到大家。对返回前端的JSON数据进行格式化代码代码如下(示例): /** * 对返回前端的JSON数据进行格式化 * * @return 进行格式化ObjectMapper原创 2021-06-21 16:15:11 · 10395 阅读 · 0 评论 -
介绍Spring Boot 启动时,自动执行指定方法的 7 种方法
目录前言实现方式1.实现ServletContextListener接口contextInitialized方法2.静态代码块方式3.@PostConstruct注解方式4. 实现ServletContextAware接口setServletContext 方法5. @EventListener方式6. 实现ApplicationRunner接口run 方法7.实现CommandLineRunner接口run 方法以上几种方式的执行顺序总结前言在实际项目开发过程中,我们有时候需要让项目在启动时执行特定原创 2021-06-21 15:45:17 · 15330 阅读 · 0 评论 -
教你使用JAVA代码重启路由器(TP-LINK)
目录前言:解决方案:前言:在我们写爬虫时,防止目标网站封禁我们的IP,可能会经常重启路由器或光猫,重新获取IP地址解决方案:直接上代码:import org.openqa.selenium.By;import org.openqa.selenium.Dimension;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;import org.openqa.seleniu原创 2021-06-18 15:41:57 · 10419 阅读 · 3 评论 -
电脑多网卡模式下,使用特定网口发送HTTP请求的代码实现(WebMagic)
目录前言:解决方案:基于WebMagic:总结:前言:前面我们讲了使用基于HttpClient和Socket两种方式处理多网卡模式下的绑定本地网卡发送请求的代码实现,现在讲一下重写WebMagic实现本地网卡绑定实现方法。解决方案:基于WebMagic:首先,重写HttpUriRequestConverter类,增加绑定本地IP地址功能。代码如下:import org.apache.http.HttpHost;import org.apache.http.auth.AuthState;i原创 2021-06-18 08:54:04 · 10433 阅读 · 4 评论 -
电脑多网卡模式下,使用特定网口发送HTTP请求的代码实现(HttpClient4、Socket)
电脑多网卡模式下,使用特定网口发送HTTP请求的代码实现。我的电脑上有多个网卡,同时链接有多个网络。在写爬虫的时候想使用特定的网卡发送请求,这样就不会每次需要爬取数据都要将另外的网卡禁用,防止使用到其他网卡而被要爬取的网站封禁IP。原创 2021-06-09 15:43:13 · 10890 阅读 · 4 评论 -
学习FreeMarker常用语法,一篇就够了
if指令//第一种用法[#if 条件]...[/#if]//第二种用法 [#if 条件] ... [#else] ...[/#if] //第三种用法 [#if 条件] ... [#elseif 条件] ... [#else] ...[/#if]list指令//第一种用法[#list animals as animal] ...[/#list]//第二种用法[#list animals] //如果集合为空则不进list ... [#ite原创 2021-06-02 09:18:46 · 10288 阅读 · 0 评论 -
Spring 5中WebClient支持SSL配置
问题描述:最近在学习WebClient做爬虫,尝试使之能够支持SSL。在网上找了很久的资料,发现这方面的资料很少,而且多数都不准确。故记录一下。解决方案:代码如下: public static WebClient createWebClient() throws SSLException { SslContext context = SslContextBuilder.forClient().trustManager(InsecureTrustManagerFactory.INST原创 2021-05-28 11:27:22 · 10978 阅读 · 1 评论 -
MyBatis-Plus自定义DefaultSqlInjector,添加自定义通用方法(replace、insertIgnore、insertIgnoreBatch)
文章目录前言一、代码结构二、使用步骤1.创建通用方法的实现类(InsertIgnore、InsertIgnoreBatch、Replace)2.MybatisPlus自定义SQL方法枚举3.创建自定义SQL注入器CustomerSqlInjector3.自定义基础CustomerMapper继承BaseMapper4.自定义基础Service继承IService及实现类5.增加或MybatisPlus配置类,加载自定义sql注入器总结前言虽然MyBats-Plus的BaseMapper提供了非常好用,原创 2021-05-25 10:36:02 · 14676 阅读 · 14 评论 -
Linux中重启Springboot项目命令
在将Springboot项目发布到Linux服务器后,经常会遇到发布新版本的情况。以前的操作流程需要将JAR包拷贝到服务器通过以下命令重启新版本的程序# 找到APP运行的进程IDps -ef|grep java 或 ps -ef|grep myapp# 结束进程kill -9 1343# 进入app目录后启动版本的appcd /apps/myapp/nohup java -jar myapp-1.0.8.jar & echo $! > /apps/myapp/myapp.pi原创 2021-03-29 17:29:25 · 10462 阅读 · 4 评论 -
介绍一个基于Spring Redis Lua的无侵入应用级网关限流框架
介绍一个基于Spring Redis Lua的无侵入应用级网关限流框架项目介绍为什么选择spring-redis-current-limitQuick Start1. 引入spring-redis-current-limit2. 注册spring-redis-current-limit1.SpringBoot或SpringCloud项目2.Spring项目3. 配置您的redis连接1.SpringBoot或SpringCloud项目2. Spring应用4. 使用spring-redis-curre原创 2021-01-22 09:13:14 · 10215 阅读 · 29 评论 -
SpringBoot项目增加统计接口耗时监控拦截器
话不多说直接上代码:import cn.hutool.core.util.StrUtil;import cn.hutool.extra.servlet.ServletUtil;import lombok.extern.slf4j.Slf4j;import org.springframework.lang.Nullable;import org.springframework.web.bind.annotation.RequestMethod;import org.springframewo原创 2020-10-14 10:28:43 · 11123 阅读 · 3 评论 -
SpringBoot项目基于@RestControllerAdvice注解进行全局异常统一处理
当我们在使用SpringBoot开发项目时,通常会对异常进行全局统一处理。在SpringBoot项目中,要进行全局异常处理通常有3种方式:通过@RestControllerAdvice或@ControllerAdvice注解方式;通过AOP切面方式;通过继承ErrorController方式;通过权衡,这里我们还是采用注解方式,减少代码耦合度,项目开上去也比较清爽。创建GlobalExceptionHandler类并添加注解@RestControllerAdvice,具体代码如下所示。当然你也原创 2020-09-01 09:13:38 · 10536 阅读 · 4 评论