经验总结
文章平均质量分 64
&友情岁月&
good good study , day day up!!!
展开
-
java简单实现生日计算方法
java简单实现生日计算方法原创 2022-11-24 17:22:16 · 3042 阅读 · 1 评论 -
java一个切面如何作用多个注解
java一个切面如何作用多个注解原创 2022-07-04 16:32:36 · 2902 阅读 · 0 评论 -
使用切面实现记录操作日志
使用切面记录日志原创 2022-07-05 14:58:42 · 2545 阅读 · 0 评论 -
com.fasterxml.jackson.databind.exc.InvalidFormatException问题
客户端使用fastjson进行序列化,服务端使用jackson反序列化失败。报错。Caused by: com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `java.util.Date` from String "2022-04-04 04:04:04": not a valid representation (error: Failed to parse Date valu原创 2022-06-29 18:19:19 · 6330 阅读 · 0 评论 -
雪花算法生成id
雪花算法生成id原创 2022-06-27 16:04:14 · 298 阅读 · 0 评论 -
java实现各种排序
java实现各种排序原创 2022-06-27 11:41:26 · 319 阅读 · 0 评论 -
【纯干货】SpringBoot 整合 ES 进行各种高级查询搜索
在上篇 SpringBoot 整合 ElasticSearch 文章中,我们详细的介绍了 ElasticSearch 的索引和文档的基本增删改查的操作方法!本文将重点介绍 ES 的各种高级查询写法和使用。废话不多说,直接上代码!本文采用的版本号是,服务端 es 的版本号是,客户端采用的是官方推荐的版本号是,方便与的版本兼容。单条件精确查询 多条件精确查询,取并集 范围查询 模糊查询,支持通配符 不使用通配符的模糊查询,左右匹配 多字段模糊查询原创 2022-06-25 22:14:48 · 11469 阅读 · 2 评论 -
使用 Elasticsearch 搭建自己的搜索系统,真心强大!
Elasticsearch 是一个开源的高度可扩展的全文搜索和分析引擎,拥有查询近实时的超强性能。大名鼎鼎的Lucene 搜索引擎被广泛用于搜索领域,但是操作复杂繁琐,总是让开发者敬而远之。而 Elasticsearch将 Lucene 作为其核心来实现所有索引和搜索的功能,通过简单的 RESTful 语法来隐藏掉 Lucene 的复杂性,从而让全文搜索变得简单ES在Lucene基础上,提供了一些分布式的实现:集群,分片,复制等。我们本文案例是一个迷你商品搜索系统,为什么不考虑使用MySQL来实现搜索功能呢原创 2022-06-25 22:12:16 · 3512 阅读 · 0 评论 -
程序员新人上午使用 isXxx 形式定义布尔类型,下午就被劝退?
小二是新来的背锅侠,哦,不不不,新来的实习生。面试过程中表现得非常不错,各种问题对答如流,老板和我都倍感欣慰。这么优秀的人,绝不能让他浪费一分一秒,于是很快,我就给他安排了一个非常简单的任务。大家都知道,在日常开发中,我们会经常要在类中定义布尔类型的变量,比如在给外部系统提供一个 RPC 接口的时候,我们一般会定义一个字段表示本次请求是否成功的。关于这个”本次请求是否成功”的字段的定义,我见过很多不同的开发者,定义的方式都不同,尤其是在属性的命名上,有人用 success,有人用 isSuccess 表示。原创 2022-06-25 22:10:29 · 125 阅读 · 0 评论 -
别再用 System.currentTimeMillis() 统计耗时了,太 Low,StopWatch 好用到爆!
你还在用 System.currentTimeMillis... 统计耗时?比如下面这段代码:System.currentTimeMillis...这种方式统计耗时确实是用的最多的,因为它不用引入其他的 JAR 包,JDK 就能搞定,但是它用起来有几个不方便的地方:1)需要定义初始时间值,再用当前时间进行手工计算;2)统计多个任务的耗时比较麻烦,如果 start 赋值搞错可能还会出现逻辑问题;有没有其他的更好的替代方案呢?答案是肯定的:StopWatch!StopWatch 是一个统计耗时的工具类:常原创 2022-06-25 22:08:50 · 647 阅读 · 0 评论 -
为什么线程崩溃不会导致 JVM 崩溃
网上看到一个很有意思的美团面试题:为什么线程崩溃崩溃不会导致 JVM 崩溃,这个问题我看了不少回答,但发现都没答到根上,所以决定答一答。相信大家看完肯定会有收获,本文分以下几节来探讨。线程崩溃,进程一定会崩溃吗?进程是如何崩溃的——信号机制简介。为什么在 JVM 中线程崩溃不会导致 JVM 进程崩溃?openJDK 源码解析。一般来说如果线程是因为非法访问内存引起的崩溃,那么进程肯定会崩溃。为什么系统要让进程崩溃呢?这主要是因为在进程中,各个线程的地址空间是共享的。既然是共享,那么某个线程对地址的非法访问就原创 2022-06-25 21:53:15 · 233 阅读 · 0 评论 -
如何用 Nginx 禁止国外 IP 访问网站!
之前看了下 Nginx 的访问日志,发现每天有好多国外的 IP 地址来访问我的网站,并且访问的内容基本上都是恶意的。因此我决定禁止国外 IP 来访问我的网站。想要实现这个功能有很多方法,下面我就来介绍基于 Nginx 的 ngx_http_geoip2 模块来禁止国外 IP 访问网站。# 安装 geoip2 扩展依赖# 下载 ngx_http_geoip2_module 模块解压模块到指定路径我这里解压到 /usr/local 目录下:# 安装 nginx 模块首先说明下环境,我的 ngi原创 2022-06-25 21:50:39 · 795 阅读 · 0 评论 -
Spring Boot 启动时自动执行代码的几种方式
前言java自身的启动时加载方式Spring启动时加载方式代码测试总结目前开发的SpringBoot项目在启动的时候需要预加载一些资源。而如何实现启动过程中执行代码,或启动成功后执行,是有很多种方式可以选择,我们可以在static代码块中实现,也可以在构造方法里实现,也可以使用注解实现。当然也可以去实现Spring的与接口去实现启动后运行的功能。在这里整理一下,在这些位置执行的区别以及加载顺序。static代码块static静态代码块,在类加载的时候即自动执行。构造方法在对象初始化时执行。执行顺序在stat原创 2022-06-25 21:48:34 · 197 阅读 · 0 评论 -
SpringUtil工具类
spring获取bean工具类原创 2022-06-22 16:11:29 · 415 阅读 · 0 评论 -
@Accessors注解作用指定前缀遵守驼峰命名
指定前缀遵守驼峰命名原创 2022-06-22 14:44:20 · 190 阅读 · 0 评论 -
Java获取ip地址方式
获取ip地址原创 2022-06-22 10:18:10 · 4078 阅读 · 0 评论 -
解决高并发下System.currentTimeMillis卡顿
解决高并发下System.currentTimeMillis卡顿原创 2022-06-14 18:51:13 · 262 阅读 · 0 评论 -
Java8 判空这样写,惊艳,又骚气
在文章的开头,先说下NPE问题,NPE问题就是,我们在开发中经常碰到的NullPointerException.假设我们有两个类,他们的UML类图如下图所示在这种情况下,有如下代码user.getAddress().getProvince();这种写法,在user为null时,是有可能报NullPointerException异常的。为了解决这个问题,于是采用下面的写法if(user!=null){Addressaddress=user.getAddress();...原创 2022-05-24 23:01:30 · 411 阅读 · 0 评论 -
Mybatis 批处理真牛逼
问题原因在公司写项目的时候,有一个自动对账的需求,需要从文件中读取几万条数据插入到数据库中,后续可能跟着业务的增长,会上升到几十万,所以对于插入需要进行批处理操作,下面我们就来看看我是怎么一步一步踩坑的。简单了解一下批处理背后的秘密,BatchExecutor批处理是 JDBC 编程中的另一种优化手段。JDBC 在执行 SQL 语句时,会将 SQL 语句以及实参通过网络请求的方式发送到数据库,一次执行一条 SQL 语句,一方面会减小请求包的有效负载,另一个方面会增加耗费在网络..原创 2022-05-24 22:57:51 · 2618 阅读 · 1 评论 -
4种Redis集群方案介绍+优缺点对比
在服务开发中,单机都会存在单点故障的问题,及服务部署在一台服务器上,一旦服务器宕机服务就不可用,所以为了让服务高可用,分布式服务就出现了,将同一服务部署到多台机器上,即使其中几台服务器宕机,只要有一台服务器可用服务就可用。redis也是一样,为了解决单机故障引入了主从模式,但主从模式存在一个问题:master节点故障后服务,需要人为的手动将slave节点切换成为maser节点后服务才恢复。redis为解决这一问题又引入了哨兵模式,哨兵模式能在master节点故障后能自动将salve节点提升成master原创 2022-05-20 14:38:57 · 284 阅读 · 0 评论 -
mybatis连接池获取连接逻辑图
原创 2022-05-19 11:13:32 · 123 阅读 · 0 评论 -
图解ArrayList原理
原创 2022-05-19 10:57:27 · 183 阅读 · 0 评论 -
设置Java线程休眠0秒有啥用
Thread.sleep(0);作用就是“触发操作系统立刻重新进行一次CPU竞争”原创 2022-04-28 15:41:00 · 1154 阅读 · 0 评论 -
select......for update 会锁表还是锁行
select查询语句是不会加锁的,但是select .......for update除了有查询的作用外,还会加锁呢,而且它是悲观锁。那么它加的是行锁还是表锁,这就要看是不是用了索引/主键。没用索引/主键的话就是表锁,否则就是是行锁。验证:建表sql//id为主键//name为唯一索引CREATETABLE`user`(`id`INT(11)NOTNULLAUTO_INCREMENT,`name`VARCHAR(255)DEFAULTN...原创 2022-04-28 14:46:33 · 287 阅读 · 0 评论 -
Java EasyExcel不创建实体对象(Model)读取数据
<dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.1.1</version></dependency><dependency> <groupId>com.alibaba</groupId> <ar.原创 2022-04-27 16:20:50 · 4216 阅读 · 0 评论 -
Spring Boot Mybatis 搞反向工程
1. 拷贝 Mybatis 反向工程配置文件到项目的根目录下2. 根据项目及表的情况,修改 GeneratorMapper.xml 配置 如果使用 高版本 , 驱动类变为:com.mysql.cj.jdbc.Driver url 后面应该加属性 nullCatalogMeansCurrent=true ,否则生成有问题 当前版本 MySQL 数据库为 5.7主要根据注释来修改自己的内容<?xmlversion="1.0"encoding="UTF-8"?&..原创 2022-04-15 09:30:36 · 821 阅读 · 0 评论 -
idea 取消自动格式化功能
原创 2022-04-13 17:57:48 · 7285 阅读 · 0 评论 -
clickhouse使用遇到的坑
使用驱动版本<!--ClickHouse驱动--><dependency> <groupId>ru.yandex.clickhouse</groupId> <artifactId>clickhouse-jdbc</artifactId> <version>0.2.4</version></dependency>Error during connection to原创 2022-04-13 15:49:48 · 11577 阅读 · 0 评论 -
Centos7安装Redis
一、安装gcc依赖由于 redis 是用 C 语言开发,安装之前必先确认是否安装 gcc 环境(gcc -v),如果没有安装,执行以下命令进行安装[root@localhost local]# yum install -y gcc二、下载并解压安装包[root@localhost local]# wget http://download.redis.io/releases/redis-5.0.3.tar.gz[root@localhost local]# tar -zxvf re..原创 2022-04-07 11:28:29 · 94 阅读 · 0 评论 -
这一次搞懂 Spring 的 Bean 实例化原理
前两篇文章分析了Spring XML和注解的解析原理,并将其封装为BeanDefinition对象存放到IOC容器中,而这些只是refresh方法中的其中一个步骤——obtainFreshBeanFactory,接下来就将围绕着这些BeanDefinition对象进行一系列的处理,如BeanDefinitionRegistryPostProcessor对象方法的调用、BeanFactoryPostProcessor对象方法的调用以及Bean实例的创建都离不开这些BeanDefinition对象。下面就来看看原创 2022-04-02 21:59:58 · 99 阅读 · 0 评论 -
SpringBoot + Redis:模拟 10w 人的秒杀抢单
本篇内容主要讲解的是redis分布式锁,这个在各大厂面试几乎都是必备的,下面结合模拟抢单的场景来使用她;本篇不涉及到的redis环境搭建,快速搭建个人测试环境,这里建议使用docker;本篇内容节点如下:Jedis的nx生成锁 如何删除锁 模拟抢单动作(10w个人开抢) jedis的nx生成锁 对于java中想操作redis,好的方式是使用jedis,首先pom中引入依赖:<dependency><groupId>redis.clie...原创 2022-04-02 21:57:00 · 93 阅读 · 0 评论 -
Redis 布隆(Bloom Filter)过滤器原理与实战
在Redis 缓存击穿(失效)、缓存穿透、缓存雪崩怎么解决?中我们说到可以使用布隆过滤器避免「缓存穿透」。码哥,布隆过滤器还能在哪些场景使用呀?比如我们使用「码哥跳动」开发的「明日头条」APP 看新闻,如何做到每次推荐给该用户的内容不会重复,过滤已经看过的内容呢?你会说我们只要记录了每个用户看过的历史记录,每次推荐的时候去查询数据库过滤存在的数据实现去重。实际上,如果历史记录存储在关系数据库里,去重就需要频繁地对数据库进行 exists 查询,当系统并发量很高时,数据库是很难扛住压力的。原创 2022-04-02 21:53:44 · 537 阅读 · 0 评论 -
SpringBoot 一个接口同时支持 form 表单、form-data、json 的优雅写法
网上很多代码都是千篇一律的 cvs,相信我只要你认真看完我写的这篇,你就可以完全掌握这个知识点,这篇文章不适合直接 cvs,一定要先理解。最近重写个项目遇到个比较棘手的问题,老项目是 PHP 接口,这个接口同时兼容 POST json 和 form 表单,更骚的是连form-data也兼容。。。因为写 PHP 请求的对接方代码不严谨。而在 Java 中,一个接口只支持一种content-type,json 就用@RequestBody,form 表单就用@RequestParam或不...原创 2022-03-30 23:53:42 · 259 阅读 · 0 评论 -
@Bean 与 @Component 用在同一个类上,会怎么样?
疑虑背景疑虑描述最近,在进行开发的过程中,发现之前的一个写法,类似如下以我的理解,@Configuration加@Bean会创建一个 userName 不为 null 的 UserManager 对象,而@Component也会创建一个 userName 为 null 的 UserManager 对象那么我们在其他对象中注入 UserManager 对象时,到底注入的是哪个对象?因为项目已经上线了很长一段时间了,所以这种写法没有编译报错,运行也没有出问题后面去找同事了解...原创 2022-03-30 23:37:18 · 241 阅读 · 0 评论 -
MyBatis中使用流式查询避免数据量过大导致OOM
今天mybatis查询数据库中大量的数据,程序抛出:java.lang.OutOfMemoryError:Javaheapspace看下日志,是因为一次查询数据量过大导致JVM内存溢出了,虽然可以配置JVM大小,但是指标不治本,还是需要优化代码。网上查看大家都是流式查询,这里记录下解决的过程。1、Mapper.xml配置select语句需要增加fetchSize属性,底层是调用jdbc的setFetchSize方法,查询时从结果集里面每次取设置的行数,循环去取,直到取完。默认siz...原创 2022-03-30 22:45:47 · 463 阅读 · 0 评论 -
Kafka 顺序消费方案
本文针对解决Kafka不同Topic之间存在一定的数据关联时的顺序消费问题。如存在Topic-insert和Topic-update分别是对数据的插入和更新,当insert和update操作为同一数据时,应保证先insert再update。1、问题引入kafka的顺序消费一直是一个难以解决的问题,kafka的消费策略是对于同Topic同Partition的消息可保证顺序消费,其余无法保证。如果一个Topic只有一个Partition,那么这个Topic对应consumer的消费必然是有序的。不同的T原创 2022-03-30 22:34:43 · 294 阅读 · 0 评论 -
SpringBoot 的@Value注解太强大了,用了都说爽
一、前言在日常开发中,经常会遇到需要在配置文件中,存储List或是Map这种类型的数据。Spring 原生是支持这种数据类型的,以配置List类型为例,对于.yml文件配置如下:test:list:-aaa-bbb-ccc对于.properties文件配置如下所示:test.list[0]=aaatest.list[1]=bbbtest.list[2]=ccc当我们想要在程序中使用时候,想当然的使用@Va...原创 2022-03-28 23:08:05 · 180 阅读 · 0 评论 -
Spring Boot 解决跨域问题的 3 种方案
前后端分离大势所趋,跨域问题更是老生常谈,随便用标题去google或百度一下,能搜出一大片解决方案,那么为啥又要写一遍呢,不急往下看。问题背景:Same Origin Policy,译为“同源策略”。它是对于客户端脚本(尤其是JavaScript)的重要安全度量标准,其目的在于防止某个文档或者脚本从多个不同“origin”(源)装载。它认为自任何站点装载的信赖内容是不安全的。当被浏览器半信半疑的脚本运行在沙箱时,它们应该只被允许访问来自同一站点的资源,而不是那些来自其它站点可能怀有恶意的资源。原创 2022-03-28 23:02:43 · 174 阅读 · 0 评论 -
Java8 Stream:2万字20个实例,玩转集合的筛选、归约、分组、聚合
Java8 Stream先贴上几个案例,水平高超的同学可以挑战一下: 从员工集合中筛选出salary大于8000的员工,并放置到新的集合里。 统计员工的最高薪资、平均薪资、薪资之和。 将员工按薪资从高到低排序,同样薪资者年龄小者在前。 将员工按性别分类,将员工按性别和地区分类,将员工按薪资是否高于8000分为两部分。 用传统的迭代处理也不是很难,但代码就显得冗余了,跟Stream相比高下立判。1 Stream概述Java 8 是一个非常成功的版本...原创 2022-03-28 22:58:44 · 117 阅读 · 0 评论 -
Java不支持协程?那是你不知道Quasar
你好,我是 Guide。在编程语言的这个圈子里,各种语言之间的对比似乎就一直就没有停过,像什么古早时期的"PHP是世界上最好的语言"就不提了。最近我在摸鱼的时候,看到不少文章都在说"Golang性能吊打Java"。作为一个写了好几年java的javaer,这我怎么能忍?于是在网上看了一些对比golang和java的文章,其中戳中java痛点、也是golang被吹上天的一条,就是对多线程并发的支持了。先看一段描述:Go从语言层面原生支持并发,并且使用简单,Go语言中的并发基于轻量级线程Gorouti原创 2022-03-28 22:52:07 · 386 阅读 · 0 评论