java
文章平均质量分 76
令狐前生
深耕:java/分布式微服务/多线程/MQ等; 喜欢的动漫人物——何方知、沈峤、 韩立。
展开
-
实现自定义SpringBoot的Starter组件
springboot通过一个@SpringBootApplication注解启动项目,springboot在项目启动的时候,会将项目中所有声明为Bean对象(注解、xml)的实例信息全部加载到ioc容器当中。 除此之外也会将所有依赖到的starter里的bean信息加载到ioc容器中,从而做到所谓的零配置,开箱即用。原创 2023-02-07 20:36:25 · 2232 阅读 · 1 评论 -
springBoot+Cache(自定义有效时间配置)
自定义的类继承org.springframework.data.redis.cache.RedisCacheManager。if(!//表示天 return super . createRedisCache(key , cacheConfiguration . entryTtl(Duration . ofDays(cycleTime)));原创 2022-12-18 23:08:34 · 2532 阅读 · 0 评论 -
Elasticsearch技术总结笔记
Elasticsearch(ES)是一个基于 Lucene 构建的开源分布式搜索分析引擎,可以近实时的索引、检索数据。具备高可靠、易使用、社区活跃等特点,在全文检索、日志分析、监控分析等场景具有广泛应用。......原创 2022-07-24 21:55:09 · 1397 阅读 · 0 评论 -
Elasticsearch倒排索引的原理介绍
Elasticsearch倒排索引的原理介绍原创 2022-07-24 21:31:05 · 917 阅读 · 0 评论 -
JAVA项目的配置迁移至Apollo服务
一、背景目前Java项目的配置信息是放置在SpringBoot的YML格式的文件中配置管理,但在运维时,假如项目的某个配置参数需要改动,并且希望立即生效,则当前的配置无法满足;假如这个配置参数可以修改,也希望是指定账户允许修改,只允许某些人修改;并且可以根据环境来读取配置信息。是的,没错,这些基本的操作都是apollo配置框架的特性。而且它的特性不止这一点,更多特性请看链接10.4.4.1、A...原创 2020-01-01 12:27:36 · 1071 阅读 · 0 评论 -
内存屏障的认识
目录一、摘要二、volatile变量规则2.1、定义2.2、可见性与重排序2.2.1、可见性2.2.2、重排序问题来源三、缓存一致性协议——MESI3.1、MESI协议介绍3.2、借助MESI协议理解可见性问题3.3、剩余问题3.4、编译器编译时的优化3.4.1、处理器执行时的乱序优化四、内存屏障4.1、标准4.2、x86架构的内存屏障指令Store BarrierLoad BarrierFull Barrier五、vo...转载 2021-10-21 14:59:17 · 465 阅读 · 0 评论 -
http接口公网对接时用到的RSA加密/解密实现示例
一、摘要企业间,业务对接时长需要服务api接口对接,而业务对接就必须做到接口互相安全认证,防止数据被截取破解泄露商业信息。此时就用到安全措施,如加白名单、数字认证证书等。其中,RSA非对称加密进行加签和验证是常用的一种。RSA公钥加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的。RSA取名来自开发他们三者的名字。RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。RSA算法基于原创 2021-10-20 18:02:38 · 7034 阅读 · 0 评论 -
Eureka Server集群服务搭建(包含权限认证)
目录第一步:使用官网上新建脚手架的的工具,创建项目。进入创建项目的界面。步骤二:根据官网文档配置。进入技术文档。步骤三:配置服务idea导入解压后的项目,并配置application.yml。步骤四:访问服务eureka-server1的注册信息结果查看。eureka-server2的注册信息结果查看。参考资料:Spring | Home。第一步:使用官网上新建脚手架的的工具,创建项目。进入创建项目的界面。步骤二:根据官网...原创 2021-09-12 13:05:43 · 1171 阅读 · 2 评论 -
jdk1.8 HashMap中的hash方法
目录前言关键代码被使用的地方1、get方法用到2、put方法用到问题:为什么hash函数这么设计前言在HashMap中的hash函数实现代码如下图所示,为什么要这么设计?有什么好处? static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16); }另一个定位数组原创 2021-08-22 12:55:22 · 760 阅读 · 1 评论 -
Java位运算符学习
前言位运算符有 与(&)、或(|)、异或(^)、取反(~)、左移(<<)、右移(>>)、无符号右移(>>>)。位运算其实就是二进制的运算,加减乘除适用于十进制,而位运算就是二进制的运算。如果是非二进制数使用位运算符,系统会自动转换成二进制再进行运算。运算符与(&)概念:两个操作数中的位都为1,结果才为1,否则结果为0。如下图代码实践结果 运算过程 ...原创 2021-08-21 22:29:54 · 670 阅读 · 0 评论 -
springboot+sharding-jdbc(自定义精准分片)+SPI自定义雪花算法
步骤一:准备一个springBoot框架的maven项目主要框架版本如下(其他版本集成需要尝试才知道是否会有问题):主要框架 版本 springBoot 2.2.1.RELEASE sharding-jdbc-spring-boot-starter 4.0.0-RC1 mybatis-plus-boot-starter 3.3.2 druid-spring-boot-starte 1.1.24 项目pom.xml配置如下。<?xml ve原创 2021-07-20 00:15:05 · 2496 阅读 · 3 评论 -
Jvm 常见4个内存溢出(OOM)和一个栈溢出总结
jvm中常见的几种导致应用宕机的问题总结下(4个OOM和一个栈溢出)。原创 2021-06-20 23:46:10 · 1321 阅读 · 1 评论 -
JAVA设计模式学习——策略模式
摘要在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。介绍意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。主要解决:在有多种算法相似的情况下,使用 if...else 所带来的复杂和难以维护。何时使用:一个系统有许多许多类,而区分它们的只是他们直接的原创 2021-06-14 19:44:05 · 1220 阅读 · 2 评论 -
JAVA设计模式学习——单例模式
原则单一职责原则:开闭原则:里斯替换原则:接口隔离原则:依赖倒置原则:设计模式原创 2021-06-13 19:32:07 · 1105 阅读 · 1 评论 -
CentOS7使用yum命令安装jdk1.8
第一步:安装之前先检查一下系统有没有自带open-jdk:命令:rpm -qa |grep java //检索java文件命令:rpm -qa |grep jdk //检索jdk文件第二步:检索含有“java”开头的文件命令:yum list java*第三步:选择java1.8版本对应的安装包安装.命令:yum install -y java-1.8.0-openjdk.x86_64校验java是否安装成功:...原创 2021-05-18 22:17:22 · 381 阅读 · 1 评论 -
HttpComponents封装的HttpClient配合连接池的使用
一、介绍HttpClient相比传统JDK自带的HttpURLConnection,从使用上(get/post请求)、功能上(支持连接池)、以及扩展性(多钟组件实现)都更胜一筹。HttpClient是Apache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。HttpClient已经应用在很多的项目中,比如Apache Jakarta上很著名的另外两个开源项目Cactus和HTMLUnit都使用了Ht原创 2021-05-04 22:47:52 · 891 阅读 · 0 评论 -
springframework的RestTemplate配合连接池的使用
一、RestTemplate 介绍从RestTemplate的注解类上的重点描述:从5.0版本开始,非阻塞。 支持异步和同步。 将在未来的版本中弃用,不会有主要的新功能。二、RestTemplate的使用该类在spring-web包里,如果你引用了spring-boot-start-web,则会自动引入。三、RestTemplate的使用实例 定义httpClient线程池管理器 /** * 定义httpClient线程池管理器 * @return */.原创 2021-05-04 12:45:44 · 1725 阅读 · 0 评论 -
java常用进制间的转换
有时候需要去找Java里找进制间的转换方式,这里简单记录下,方便日后用时查用。 /** * 十进制转成十bai六进制: * Integer.toHexString(int i) */ System.out.println("二进制数9转十六进制:" + Integer.toHexString(9)); /** * 十进制转成八进制 * Integer.toOctalString(int i) */ System原创 2020-08-25 00:17:04 · 246 阅读 · 0 评论 -
如何替代被遗弃的BASE64Encoder/BASE64Decoder
一、问题关键词:警告: BASE64Decoder是内部专用 API, 可能会在未来发行版中删除!场景:在编码时,密码机密或二进制转换的时候,使用了sun.misc.BASE64Encoder或sun.misc.BASE64Decoder类;二、因素使用了sun.misc包下的BASE64Encoder类或BASE64Decoder类。这两个类是sun公司的内部方法,并没有在java api中公开过,不属于JDK标准库范畴,但在JDK中包含了该类,可以直接使用。jdk1.8及后面已经弃用了该原创 2020-08-23 00:15:27 · 12678 阅读 · 0 评论 -
mysql 数据库中varchar的存储单位是什么
一、先了解字节与字符字节(Byte)是计量单位,表示数据量多少,是计算机信息技术用于计量存储容量的一种计量单位,通常情况下一字节等于八位。 字符(Character)计算机中使用的字母、数字、字和符号,比如'A'、'B'、'$'、'&'等。一般在英文状态下一个字母或字符占用一个字节,一个汉字用两个字节表示。字节与字符:ASCII 码中,一个英文字母(不分大小写)为一个字节,一个中文汉字为两个字节。 UTF-8 编码中,一个英文字为一个字节,一个中文为三个字节。 Unicode原创 2020-08-06 15:00:53 · 5108 阅读 · 0 评论 -
Kafka的ack参数详解
一、前序面试大厂时,一旦简历上写了Kafka,几乎必然会被问到一个问题:说说acks参数对消息持久化的影响?这个acks参数在kafka的使用中,是非常核心以及关键的一个参数,决定了很多东西。所以无论是为了面试还是实际项目使用,大家都值得看一下这篇文章对Kafka的acks参数的分析,以及背后的原理。二、深入原理(1)如何保证宕机的时候数据不丢失?如果要想理解这个acks参数的含义,首先就得搞明白kafka的高可用架构原理。比如下面的图里就是表明了对于每一个Topic,我们都可.转载 2020-07-13 17:02:19 · 1989 阅读 · 0 评论 -
idea新建的SpringBoot项目启动无异常自动停止退出问题
1. 问题描述启动创建好的SpringBoot项目启动无异常, 立马就自动退出,无论使用什么方式启动情况仍然都一样。2. 解决办法确认自己的pom.xml/gradle.build文件中是否加入spring-boot-starter-web的依赖,spring-boot-start-web依赖spring-boot-start-tomcat容器启动项目。...原创 2020-07-12 23:07:38 · 4024 阅读 · 0 评论