自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 TextIn API使用心得

目前,在项目开发中遇到了需要识别用户的身份证,提取出里面的关键信息。然后系统自动补齐用户的姓名、身份证号码、年龄等关键信息,这里需要保证信息的正确提取。经过网上调研发现,TextIn合合信息旗下的智能文字识别产品非差好用,调用方便,刚好契合项目需求。

2024-04-14 17:38:27 671 1

原创 Java当中得到当前时间距离第二天凌晨还剩多少秒的统一写法

public long get() { Date currentDate = new Date(); // 明天00:00 LocalDateTime midnight = LocalDateTime.ofInstant(currentDate.toInstant(), ZoneId.systemDefault()).plusDays(1).withHour(0).withMinute(0) .w

2021-10-19 19:39:56 650

原创 volatile关键字的理解

volatile关键字的理解volatile主要为了解决线程间变量的可见性问题,当某个线程修改公共变量时,该变量可以及时通过总线更新到使用这个变量的其它线程副本当中,每个线程都有自己的缓存副本,线程开始运行时就将数据读入到工作副本中。加了volatile之后,底层的汇编指令会加个lock指令(相当于实现了一种内存屏障),lock指令可以基于总线锁或者缓存锁的机制来达到可见性的一个效果。这里面就涉及到缓存锁以及缓存一致性协议MESI,缓存锁的核心机制是基于缓存一致性协议来实现的,一个处理器的缓存会写到

2021-10-19 18:03:53 115

原创 @ConfigurationProperties注解与@EnableConfigurationProperties注解结合使用操作配置文件

@ConfigurationProperties注解与@EnableConfigurationProperties注解结合使用操作配置文件在编写项目代码时,有些重要的信息将会放到配置文件中,以此达到更好的解耦效果,更好的模块整合。在 Spring Boot 项目中,为满足以上要求,我们将大量的参数配置在 application.properties 或 application.yml 文件中,通过 @ConfigurationProperties 注解,我们可以方便的获取这些参数值,把配置文件的信息读取并

2021-10-19 17:57:31 375

原创 JVM怎么判断垃圾?

JVM采取判断一个对象是否为垃圾,采用引用计数法或者可达性分析算法,引用计数法则是给每个对象维持一个引用计数器count,如果有引用到其余对象则该值count++,引用消失则该值count–,count=0时则表示该对象没有任何引用,可当作垃圾回收。JVM一般不采用这种方法,当两个对象存在相互引用时,则两个对象都不会被回收。可达性分析算法维护一个GC Roots引用链,引用链上引用的对象不会被当作垃圾回收。像上图,及时object5-object7之间存在相互引用,但是三者并未在GC Roots引用

2021-10-19 13:37:57 405

原创 CMS收集器

CMS收集器是基于标记-清除算法实现的。它的垃圾收集分为四个步骤:初始标记并发标记重新标记并发清除其中初始标记与重新标记过程需要Stop the World。初始标记仅标记GC Roots直接关联的对象,速度很快;并发标记阶段则是从GC Roots直接关联的对象开始遍历整个对象图的过程;重新标记阶段是为了修正并发标记期间,用户线程继续运作而导致标记产生变动的那一部分对象标记记录,时间远比并发标记耗时短;并发清除阶段则是清除删掉标记阶段判断的已死亡的对象。在耗时最长的并发标记以及并发清除阶

2021-10-19 13:32:16 75

原创 JVM类加载机制

.class文件的二进制输入流被加载进类加载子系统,经过加载、链接、初始化等过程完成类的加载。在加载阶段通过类的全限定名获取该类的二进制数据流,将该字节流所代表的静态存储结构转换为程序运行时动态结构,在堆中生成这个Class对象的数据访问入口,在该阶段用户可以选择使用自定义的类加载器进行加载,或者使用系统加载器。链接阶段里面又细分为验证、准备、解析环节,验证环节为了确保加载的类的正确性,.class文件符合jvm要求;准备阶段是为了类变量(static)分配内存并设置初始值。这里的初始值是系统默认的初始

2021-10-19 13:31:11 64

原创 在Springboot中使用自定义注解进行controller层的数据校验

在Springboot中使用自定义注解进行controller层的数据校验利用Springboot开发后端项目时,常常需要对前端传递的参数进行校验,查看数据的格式是否正确等,多数情况下都会选择重新定义方法进行校验或者自定义注解进行校验,本文讲解利用自定义注解进行校验。需要引入自定义注解相关的数据包: <dependency> <groupId>javax.validation</groupId> <artifactId>validat

2021-10-16 14:40:27 1601

原创 深入Web请求过程

深入Web请求过程互联网的架构由传统的C/S架构转变为B/S架构。B/S架构有以下两方面好处:①客户端使用统一的浏览器②服务端基于统一的HTTPB/S架构概述B/S架构基于统一的应用层协议HTTP来交互数据,HTTP采用无状态的短连接的通信方式,一次请求完成一次数据交互。下图为B/S架构中大多采用的架构设计。解析:当一个用户在浏览器输入一个网址时,它会请求DNS把这个域名解析成对应的IP地址,然后根据IP地址在互联网上找到对应的服务器,向这个服务器发送请求,服务器再返回数据资源。还有的相关内

2021-01-12 15:09:17 147

原创 Java控制执行流程

Java控制执行流程简介Java使用了C的控制流程语句,在Java中,涉及的关键字包括if-else、whlile、do-while、for、return、break、和选择语句switch-casetrue和false所有条件语句都利用表达式来判断真或假来决定执行路径。其中条件表达式的返回值为true(对)、false(假)。true和false均为Java中的Boolean(布尔)类型。注意大小写不能写错。1. int a = 1; 2. int b = 1; 3. System.ou

2021-01-11 15:19:46 179 1

空空如也

空空如也

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

TA关注的人

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