![](https://img-blog.csdnimg.cn/direct/18b3e5a0b759473cbc00a33dec8ad048.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java
文章平均质量分 60
Java知识分享
丢了尾巴的猴子
在这个世界上,一切都预先被谅解了,一切也就被卑鄙的许可了
展开
-
maven 中 <scope> 的作用
Maven 中的<scope>标签通过指定依赖的作用范围,帮助开发者更精细地控制依赖在项目的各个阶段中的可见性和行为,从而优化构建过程,提高项目的组织和管理效率。原创 2024-06-07 16:53:20 · 445 阅读 · 1 评论 -
dependencies 与 dependencyManagement 区别
在 Maven 项目中,和都用于定义项目的依赖关系,但它们的使用场景和功能有所不同。原创 2024-06-07 15:18:11 · 401 阅读 · 0 评论 -
每个程序员都应该了解的硬件知识
在追求高效代码的路上,我们不可避免地会遇到代码的性能瓶颈。但以上的内容可能都太过繁琐、细节太多,在阅读的过程中,我们可能会迷失在纷繁的细节中,没法很好地将知识运用到实践中。组相联映射则尝试吸收前两者的优点,将缓存中的缓存行分组,主存中某一行只能映射到特定的一组,在组内则采取全相联的映射方式。为 2 的幂次时,都会有一个运行时间的突起,一个性能的毛刺。而二维数组在内存中是按行排布的,换句话说,数组中相邻的两行是首尾相连排列的。),用黑色箭头表示在循环外进行的操作,用不同的颜色,表示不同迭代中的操作。转载 2024-04-16 10:33:29 · 47 阅读 · 0 评论 -
为什么SpringBoot的 jar 可以直接运行
Spring Boot 应用程序被打包成的jar包之所以可以直接通过java -jar命令运行,是因为Spring Boot在构建过程中做了一些特殊的设计和配置。: Spring Boot使用maven插件(或Gradle对应的插件)将项目及其所有依赖项打包成一个单一的、自包含的jar文件,通常称为“Fat JAR”或“Uber JAR”。这意味着不仅包含了自己的类文件,还包含了运行应用所需的所有第三方库。: 在打包过程中,此插件会修改MANIFEST.MF文件,这是jar包中的一个元数据文件。原创 2024-04-07 12:35:55 · 416 阅读 · 2 评论 -
JDK21|借鉴了近十种语言,String终于变好用了 - 掘金
要想看官方对于JDK21的更新说明,可以直接跳转到下面这个官方网站中JDK21是最新的LTS版本,里面添加了不少新的特性,本文将介绍JEP430–字符串模板前面介绍的这几种模板处理器都是JDK21中自带的,同时也提供了一个接口使得我们可以自己去实现一个字符串处理器,只需要继承StringTemplate.Processor,然后实现process方法即可。比如我现在想要自定义一个字符串的模板处理器,效果是将传入的变量中的空格都去除,就可以按照下面这种写法@Overridei++) {转载 2024-04-03 09:44:28 · 128 阅读 · 0 评论 -
Java核心卷一 · 笔记05
Java 的服务加载器机制允许开发者编写服务接口,然后通过服务提供者(实现了这些接口的类)来扩展和实现这些接口。在 Java 中,代理(Proxy)是一种设计模式,允许你提供一个替代或占位对象,以控制对另一个对象的访问。通过代理模式,你可以在不修改原始类的情况下对其进行控制和扩展,实现了更加灵活的代码结构。在静态代理中,代理类需要显式地实现与目标对象相同的接口,并在代理类中调用目标对象的方法。方法创建了一个动态代理对象,并在代理对象的方法调用前后输出了额外的信息。创建实现服务接口的类,这些类是服务提供者。原创 2024-03-01 11:34:43 · 694 阅读 · 0 评论 -
Java核心卷一 · 笔记04
需要注意的是,可变句柄是一种高级特性,通常用于特定的场景,如性能优化、并发编程等。在一般情况下,使用传统的面向对象方式来访问和修改对象的字段是更常见和推荐的做法。可变句柄的主要目标是提供一种高性能的方式来进行原子性和有序性操作,以及避免不必要的锁定和同步开销。它可以用于访问和修改对象的字段,包括私有字段,以及数组的元素。原子性操作:可变句柄提供了一系列原子性的操作,如读取、写入、比较和交换等,可以保证多线程环境下的数据一致性。方法返回的类型名称可能是实现定义的,可能是一个字符串,也可能是一个未指定的值。原创 2024-03-01 09:19:53 · 573 阅读 · 0 评论 -
Java核心卷一笔记03
抽象方法是没有具体实现的方法,只有方法签名,需要在具体的子类中实现。作为基类进行继承:抽象类可以被其他类继承,子类可以通过继承抽象类来获得其定义的接口和行为。需要注意的是,抽象类可以包含非抽象方法,但抽象方法必须在子类中进行实现。虚函数是一种特殊的成员函数,它允许在派生类中重写基类中的同名函数,并通过基类指针或引用调用派生类中的函数。关键字用于声明虚函数,允许在派生类中重写基类中的同名函数,并通过基类指针或引用调用派生类中的函数,实现多态性。类中,通过抽象类的引用调用了不同子类的方法,实现了多态性。原创 2024-01-29 20:20:03 · 1255 阅读 · 0 评论 -
Java核心卷一笔记02
To 175。原创 2024-01-24 13:27:27 · 362 阅读 · 0 评论 -
ThreadPoolTaskExecutor 线程池使用详解
https://www.yuque.com/meader/blog/gvok83原创 2020-09-09 19:15:58 · 496 阅读 · 0 评论 -
SpringBoot 导出 PDF 图表(折现图、饼状图等)
主要是基于 jfreechart + itext添加 MAVEN <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>.原创 2022-01-19 10:05:28 · 2588 阅读 · 4 评论 -
反射简单例子
package cn3.test3.to1;/** * Created */public class QuickSort { public static void quickSort(int[] array,int start,int end) { if(start<end) { int key=array[...原创 2018-04-10 18:01:42 · 432 阅读 · 0 评论 -
Spring Cloud Alibaba教程:Nacos的简单使用
https://www.yuque.com/meader/blog/mx072o原创 2020-08-24 18:25:09 · 131 阅读 · 0 评论 -
springboot 参数异常拦截(3种)
/** * 参数异常拦截 (model 里面的) * @author * @date 2020/11/17 0017 * @param e * @return GenericResponse **/ @ExceptionHandler(MethodArgumentNotValidException.class) public GenericResponse methodArgumentNotValidExceptio...原创 2021-01-19 16:48:32 · 1705 阅读 · 0 评论 -
RandomStringUtils 生成随机字符串
System.out.println(RandomStringUtils.randomAlphanumeric(32));System.out.println(RandomStringUtils.randomAlphabetic(32));System.out.println(RandomStringUtils.randomNumeric(32));System.out.prin...原创 2020-05-06 13:42:10 · 2285 阅读 · 0 评论 -
微信公众号发送模版消息
package com.wx.service.message;import com.alibaba.fastjson.JSON;import com.common.utils.HttpUtil;import com.wx.service.utils.GlobalConstant;import java.io.IOException;import java.util.HashMap;...原创 2020-04-01 13:19:18 · 236 阅读 · 0 评论 -
并发场景下的幂等问题——分布式锁详解
来自:阿里技术简介:本文从钉钉实人认证场景的一例数据重复问题出发,分析了其原因是因为并发导致幂等失效,引出幂等的概念。针对并发场景下的幂等问题,提出了一种实现幂等可行的方法论,结合通讯录加人业务场景对数据库幂等问题进行了简单分析,就分布式锁实现幂等方法展开了详细讨论。分析了锁在分布式场景下存在的问题,包括单点故障、网络超时、错误释放他人锁、提前释放锁以及分布式锁单点故障等,提出了对应的解决方案,介绍了对应方案的具体实现。作者 | 百书来源 | 阿里技术公众号写在前面:本文讨论的幂等问...转载 2022-03-25 11:16:08 · 1102 阅读 · 0 评论 -
浅析 RPC 与基本实现
本文转自:https://xiaomi-info.github.io/2020/03/02/rpc-achieve/注:文中所用到的代码已上传至 github: https://github.com/fankongqiumu/storm.git[作者简介] 孙浩,信息部售后组研发工程师引言本文主要论述的是“RPC 实现原理”,那么首先明确一个问题什么是 RPC 呢?RPC 是 Remote Procedure Call 的缩写,即,远程过程调用。RPC 是一个计算机通信协议。该协议允许运行...转载 2022-03-26 13:18:53 · 176 阅读 · 0 评论 -
synchronized 实现原理
本文转自:https://xiaomi-info.github.io/2020/03/24/synchronized/[作者简介] 张庆波,小米信息技术部架构组前言众所周知 synchronized 锁在 Java 中经常使用它的源码是 C++ 实现的,它的实现原理是怎样的呢?本文以 OpenJDK 8 为例探究以下内容。synchronized 是如何工作的synchronized 锁升级过程重量级锁的队列之间协作过程和策略对象头对象头的内容非常多这里我们只做简单介绍以引出后文。在.转载 2022-03-26 11:15:51 · 253 阅读 · 0 评论 -
spring-security-oauth2 的 /oauth/token 接口在哪里???
原创 2021-06-03 16:46:50 · 3539 阅读 · 0 评论 -
spring-security-oauth2 的 /oauth/check_token 接口在哪里???
原创 2021-06-15 18:55:00 · 2837 阅读 · 0 评论 -
微服务下如何保证事务的一致性
相关文章-1转载 2020-07-22 11:18:27 · 358 阅读 · 0 评论 -
java限流
接口限流@Inherited@Documented@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface RateLimit { /** * 默认每秒支持100个 * @return */ int limintNum() default 100;}/** * 限流 切面枚举实现 * * @author mingge * */@转载 2021-01-12 17:51:05 · 160 阅读 · 0 评论 -
Springboot 实现线程池 (示例,纯代码)
这里介绍两种:①注解式:import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;import org.springframework.context.annotation.Configuration;import org.springframework.scheduling.annotation.AsyncConfigurer;import org.springframework.scheduling.转载 2020-07-08 10:32:57 · 2251 阅读 · 1 评论 -
springboot整合nacos
下载服务端压缩包下载地址:链接: https://pan.baidu.com/s/18GR-zSHjCF-Qg98au6zfaA 提取码: n9fk启动访问:http://127.0.0.1:8848/nacos账户密码默认:nacos/nacos登录首页客户端设置与代码实现 (Springboot 项目)新建 命名空间新建配置代码配置maven引用 <dependency> <groupId>com原创 2021-03-05 10:40:53 · 175 阅读 · 1 评论 -
java 开发工具
JDK8 密码:9a54IDEA 2016.1 密码:vlw4原创 2018-04-23 15:03:17 · 260 阅读 · 0 评论 -
new Object()到底占用几个字节
上图中的对齐填充不是一定有的,如果对象头和实例数据加起来刚好是8字节的倍数,那么就不需要对齐填充。对象内存中可以分为三块区域:对象头(Header),实例数据(Instance Data)和对齐填充(Padding),以64位操作系统为例(未开启指针压缩的情况)Java对象布局。可以看到,这时候已经没有了对齐填充部分了,但是占用大小还是16位。然后分别在开启指针压缩和关闭指针压缩的场景下分别输出这个类的大小。最后的结果是16字节,没有问题,这是因为**这个时候就能看出来开启了指针压缩的优势了,原创 2023-10-18 09:31:03 · 395 阅读 · 0 评论 -
HashMap 的实现原理
原创 2020-02-27 17:27:04 · 96 阅读 · 0 评论 -
java学习笔记210226
单例,双重检查锁new 一个对象氛围三步申请内存,设默认值 0设置初始值建立关联new 对象的时候会有一个问题,就是指令重排序可以加volatile,volatile的一个作用就是禁止指令重排序,因为有内存屏障volatile 是JVM的关键字有两个作用,一个是禁止指令重排序,一个是线程可见性。一些面试问题线程的原子性为了保证线程的原子性,需要加锁,一个线程执行完,才允许下一个线程的操作java对象的内存布局分为头信息和补全信息,头信息里面有锁信息等,如果头信原创 2021-03-01 17:38:28 · 139 阅读 · 1 评论 -
Java学习笔记210304
设计模式调停者模式 (对内)部门内部打交道。每个类之间都不要互相打交道了,都通过一个调停者来交互。在实际应用中最多的就是消息中间件 – MQ。门面模式 (对外)要和系统中的多个类打交道,还必须理解这多个类之前的关系,太麻烦了,可以直接把这些错综复杂关系的类用一个Facade门面封装起来,就是对外的一个门面,调用者只需要和这个门面打交道即可。图解:代码示例:装饰器模式代码示例:责任链模式 (难)相关文章:https://refactoringguru.cn/design-p原创 2021-03-05 09:19:24 · 75 阅读 · 2 评论 -
Effective Java (一)
考虑用静态工厂方法代替构造器对于类而言,为了让客户端获取它自身的一个实例,最常用的方法就是提供一个公有的构造器。还有一种方法,也应该在每个程序员的工具箱中占有一席之地。类可以提供一个公有的静态工厂方法( static factory method),它只是一个返回类的实例的静态方法,下面是一个来自 Boolean(基本类型 boolean的包装类)的简单示例。这个方法将 boolean基本类型值转换成了一个 Boolean对象引用:public static Boolean valueof(bo.转载 2020-06-30 15:46:03 · 364 阅读 · 0 评论 -
SpringBoot实现PDF导出工具类 (代码纯享)
导出PDF · 语雀maven引用https://www.yuque.com/meadel/blog/toalg7<>原创 2021-11-08 10:20:14 · 194 阅读 · 1 评论 -
Java学习笔记210303
设计模式单例模式有8种写法,比较完美的有两种第一种写法 饿汉式 (推荐使用)第二种写法 (与第一个没多大区别)第三种 懒汉式在多线程的情况下,会出现混乱的问题。第四种写法 也称为懒汉式 ,为了解决3的问题,加锁,但是效率会降低第五种写法 也称为懒汉式 但还是不能彻底混乱的问题第六种写法 也称为懒汉式 双重检查第七种写法 比较完美的写法之一 ,静态内部类 ,比第一个完美一些 ,JVM保证了线程安全第八种写法 完美之二原创 2021-03-03 18:36:07 · 89 阅读 · 4 评论 -
String、StringBuilder、StringBuffer 实现原理解析
1原创 2021-06-15 15:21:27 · 169 阅读 · 1 评论 -
订单超时自动关闭的实现方案总结
统一来说,业务有“在一段时间之后,完成一个工作任务”的需求。实现这种定时任务有哪些方法呢,来总结一下想到的方法。一、定时轮询这是一个比较直接的思路,启动一个计划任务,每隔一定时间处理一次,这种处理方式只是适用比较小而简单的项目。假设订单表的结构为:t_order(oid, finish_time, stars, status, …),更具体的,定时任务每隔一个小时会这么做一次:select oid from t_order where finish_time > 30minite and st转载 2020-06-29 16:17:48 · 1845 阅读 · 1 评论 -
Java学习笔记210302
CMS – 浮动垃圾在垃圾回收过程中标记过程中产生的垃圾,被理解为浮动垃圾,这种垃圾没必要去在乎,影响不大,在下一次垃圾回收的时候会被垃圾回收器回收。CMS – 错标一个资源在被标记为垃圾的时候,突然另一个资源与之相连,成为了有用的资源,如果资源被清除,会带了问题。CMS – 重新标记在标记过程中,可能有些资源被错误标记,所以需要重新标记。这个过程属于STW。重新标记完成,下一步就是并发处理,把标记为垃圾的资源清楚,这个过程也有可能会产生浮动垃圾,但没有关系,下次标记清除的时候会被处理。CM原创 2021-03-03 09:41:52 · 70 阅读 · 0 评论 -
java学习笔记210309 -- 分布式事务(一)
分布式事务(一)文章来源:https://zhuanlan.zhihu.com/p/183753774 、https://www.cnblogs.com/dyzcs/p/13780668.html 、具体不多讲,详情看文章来源事务分布式事务产生的情景CAP定理重点CPA的组合方式总结几个分布式架构CPAzookeeper(Dubbo):CPeureka(springcloud - netflix):APnacos:(Springcl原创 2021-03-10 11:56:05 · 113 阅读 · 2 评论 -
assert关键字 在SpringBoot中的使用
public static void main(String[] args) { boolean isSafe = false; assert isSafe : "Not safe at all"; System.out.println("断言通过!"); }boolean isSafe = true;时boolean isSafe = false;时如果使assert关键字生效,必须配置一下VM options。如果是在idea中使用main方法如果是在.原创 2021-05-26 13:31:47 · 757 阅读 · 0 评论 -
java继承和组合的区别
摘自:http://blog.csdn.net/ycjnx/article/details/40952969转载 2017-12-18 15:47:27 · 387 阅读 · 0 评论 -
Java学习笔记210301
堆内存逻辑分区(不适用不分代垃圾收集器)jvm 内存空间注意:一个进程都有一套方法区和堆一个线程都有一套Java虚拟机栈和程序计数器各空间详解指针碰撞TLAB (指针碰撞的解决思路)TLAB的全称是Thread Local Allocation Buffe,线程本地分配缓存区。逃逸分析标量替换栈上分配同步消除对象创建过程,在jvm层面的内存分配;流程图只要是分代模型,一定是成对出现,常见的组合有3种jdk1.8可用分代模型,也可不用原创 2021-03-01 18:21:58 · 77 阅读 · 2 评论