自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 保证线程安全的10个小技巧

对于从事后端开发的同学来说,问题是我们每天都需要考虑的问题。线程安全问题通俗的讲:主要是在多线程的环境下,不同线程同时读和写公共资源(临界资源),导致的数据异常问题。比如:变量a=0,线程1给该变量+1,线程2也给该变量+1。此时,线程3获取a的值有可能不是2,而是1。线程3这不就获取了错误的数据?线程安全问题会直接导致数据异常,从而影响业务功能的正常使用,所以这个问题还是非常严重的。那么,如何解决线程安全问题呢?今天跟大家一起聊聊,保证线程安全的10个小技巧,希望对你有所帮助。我们都知道只有多个线程访问的

2022-06-22 14:13:23 4285 1

原创 适配器模式

适配器模式

2022-06-15 17:57:20 557

原创 ThreadLocal

1. 为什么要用ThreadLocal?并发编程是一项非常重要的技术,它让我们的程序变得更加高效。但在并发的场景中,如果有多个线程同时修改公共变量,可能会出现线程安全问题,即该变量最终结果可能出现异常。为了解决线程安全问题,JDK出现了很多技术手段,比如:使用synchronized或Lock,给访问公共资源的代码上锁,保证了代码的原子性。但在高并发的场景中,如果多个线程同时竞争一把锁,这时会存在大量的锁等待,可能会浪费很多时间,让系统的响应时间一下子变慢。因此,JDK还提供了另外一种用

2022-05-25 10:59:21 1218

原创 常用Lambda表达式

前言我们日常工作中,Lambda 使用比较多的场景,就是集合类下的 Lambda 流操作,往往几行代码可以帮助我们实现复杂代码,接下来我们把 Lambda 流的常用方法用案列讲解一下。ForEach集合的遍历 forEach 方法:publicvoidtestForEach(){List<String>list=newArrayList<String>(){{add("1");...

2022-05-13 16:04:40 1086 2

原创 Kafka、Netty都在用的Unsafe类,到底有多神?

前言几乎每个使用 Java开发的工具、软件基础设施、高性能开发库都在底层使用了 sun.misc.Unsafe,比如 Netty、Cassandra、Hadoop、Kafka 等。Unsafe 类在提升 Java 运行效率,增强 Java 语言底层操作能力方面起了很大的作用。但 Unsafe 类在 sun.misc 包下,不属于 Java 标准。很早之前,在阅读并发编程相关类的源码时,看到 Unsafe 类,产生了一个疑惑:既然是并发编程中用到的类,为什么命名为 Unsafe 呢?

2022-05-13 16:01:05 135

原创 Java多线程批量操作

前言项目概况如下: 项目代码基于:MySQL 数据 开发框架为:SpringBoot、Mybatis 开发语言为:Java8 项目代码:https://gitee.com/john273766764/springboot-mybatis-threads公司业务中遇到一个需求,需要同时修改最多约 5 万条数据,而且还不支持批量或异步修改操作。于是只能写个 for 循环操作,但操作耗时太长,只能一步一步寻找其他解决方案。具体操作如下。循环操作

2022-05-13 15:55:49 2775

原创 看完就可上手用的MQ

幸福的烦恼张大胖最近是又喜又忧,喜的是业务量发展猛增,忧的是由于业务量猛增,一些原来不是问题的问题变成了大问题。比如说新会员注册吧,原来注册成功只要发个短信就行了,但随着业务的发展,现在注册成功也需要发 push,发优惠券等...这样光注册用户这一步就需要调用很多服务,导致用户注册都需要花不少时间,假设每个服务调用需要 50 ms,那么光以上服务就需要调用 200 ms。而且后续产品还有可能再加一些发新人红包等活动,每加一个功能,除了引入额外的服务增加耗时外,还需要额外集成服

2022-05-13 15:51:48 245

原创 Guava中这些Map骚操作

前言Guava 是 Google 公司开发的一款 Java 类库扩展工具包,内含了丰富的 API,涵盖了集合、缓存、并发、I/O 等多个方面。使用这些 API 一方面可以简化我们代码,使代码更为优雅,另一方面它补充了很多 jdk 中没有的功能,能让我们开发中更为高效。今天我要给大家分享的就是 Guava 中封装的一些关于 Map 的骚操作,在使用了这些功能后,不得不说一句真香。先引入依赖坐标,然后开始我们的正式体验吧:<dependency>&lt...

2022-05-13 15:46:49 234

转载 Bean 注入 Spring 容器的方式

xml 方式 注解方式 @Configuration + @Bean @Import FactoryBean BDRegistryPostProcessor 源码 实战 一提到Spring,大家最先想到的是啥?是AOP和IOC的两大特性?是Spring中Bean的初始化流程?还是基于Spring的Spring Cloud全家桶呢?今天我们就从Spring的IOC特性入手,聊一聊Spring中把Bean注..

2022-04-24 18:49:41 288

原创 分布式架构知识点

01分布式系统带来的主要好处之一是实现了可扩展性,使我们能够存储和处理比单台机器所能容纳的大得多的数据集。实现可扩展性的主要方式之一是对数据进行分区(Partition)。分区是指将一个数据集拆分为多个较小的数据集,同时将存储和处理这些较小数据集的责任分配给分布式系统中的不同节点。数据分区后,我们就可以通过向系统中增加更多节点来增加系统可以存储和处理的数据规模。分区增加了数据的可管理性、可用性和可扩展性。分区分为垂直分区(Vertical Partitioning)和水平分区(Horiz..

2022-04-24 18:38:08 872

原创 常用定时任务

1目录 单点定时任务 JDK原始 Spring Task 基于Redis实现 分布式定时任务 quartz elastic-job-lite LTS xxl-job 总结 2单点定时任务JDK 原生自从 JDK1.5 之后,提供了 ScheduledExecutorService 代替 TimerTask 来执行定时任务,提供了不错的可靠性。public

2022-04-24 18:34:39 145

转载 8个MySQL错误

前言今天就给大家列举 MySQL 数据库中,最经典的八大错误案例,并附有处理问题的解决思路和方法,希望能给刚入行,或数据库爱好者一些帮助。🚀 1.忘记密码,无法登陆🌈 1.1 报错现象ERROR 1130 (HY000): Host ‘172.18.1.1’ is not allowed to connect to this MySQL server --提示无法登陆🌈 1.2 处理过程在MySQL中,若密码丢失则无法直接找回,只能通过特殊方式来修改密码。在配置文件中添加

2022-04-24 18:31:30 387

原创 Spring Boot项目配置免费HTTPS的详细流程

第一步 申请SSL证书这里选了免费的https://freessl.cn/,大家可以根据自己需求进行。我选的 离线生成,需要解析验证域名,阿里云用户可选一键生成,但需要提供授权码,不推荐亚洲诚信不支持小程序!!只支持电脑!!别申请错了PS:需要安装他要求的一个客户端软件,根据提示解析域名就会自动成功。如果一直验证加载没反应就改用【一键申请】之后选择【我不是阿里云用户】,就会从网页验证解析改成软件验证,可秒过)第二步 导出证书每个平台导出方法不一样,我这里以我的为例1...

2022-04-24 18:28:19 118

原创 SpringCloud:Nacos实现

Nacos架构 Provider APP:服务提供者 Consumer APP:服务消费者 Name Server:通过VIP(Virtual IP)或DNS的方式实现Nacos高可用集群的服务路由 Nacos Server:Nacos服务提供者,里面包含的Open API是功能访问入口,Conig Service、Naming Service 是Nacos提供的配置服务、命名服务模块。Consitency Protocol是一致性协议,用来实现Nacos集群节点的数

2022-04-24 18:23:23 394

原创 fastjson 2

1. FASTJSON 2.0介绍FASTJSON 2.0是FASTJSON项目的重要升级,目标是为下一个十年提供一个高性能的JSON库,同一套API支持JSON/JSONB两种协议,JSONPath是一等公民,支持全量解析和部分解析,支持Java服务端、客户端Android、大数据场景。 FASJTONS2代码 https://github.com/alibaba/fastjson2/releases/tag/2.0.1 JSONB格式文档 https://github.com/ali

2022-04-24 18:19:13 2076

原创 MyBatis 流式分页查询

基本概念流式查询指的是查询成功后不是返回一个集合而是返回一个迭代器,应用每次从迭代器取一条查询结果。流式查询的好处是能够降低内存使用。如果没有流式查询,我们想要从数据库取 1000 万条记录而又没有足够的内存时,就不得不分页查询,而分页查询效率取决于表设计,如果设计的不好,就无法执行高效的分页查询。因此流式查询是一个数据库访问框架必须具备的功能。流式查询的过程当中,数据库连接是保持打开状态的,因此要注意的是:执行一个流式查询后,数据库访问框架就不负责关闭数据库连接了,需要应用在取完数据后自己关.

2022-04-24 18:16:08 823

原创 lambda

采用java8 lambda表达式 实现java list 交集/并集/差集/去重并集一般的javaList 交、并集采用简单的 removeAll retainAll 等操作,不过这也破坏了原始的javaList对象,采用java8 lambda表达式流操作则可以不影响原始list对象而得到两个javaList对象的 交、并、差集。import static java.util.stream.Collectors.toList;import java.util.ArrayList;import

2022-04-19 16:24:30 74

原创 动态代理实现原理

什么是动态代理首先,动态代理是代理模式的一种实现方式,代理模式除了动态代理还有静态代理,只不过静态代理能够在编译时期确定类的执行对象,而动态代理只有在运行时才能够确定执行对象是谁。代理可以看作是对最终调用目标的一个封装,我们能够通过操作代理对象来调用目标类,这样就可以实现调用者和目标对象的解耦合。动态代理的应用场景有很多,最常见的就是AOP 的实现、RPC 远程调用、Java 注解对象获取、日志框架、全局性异常处理、事务处理等。动态代理的实现有很多,但是 JDK 动态代理是很重要的一种,下面..

2022-04-14 15:41:44 21115 3

原创 数据库精选 60 道高频面试题(含答案),值得收藏

基础相关1、关系型和非关系型数据库的区别?关系型数据库的优点 容易理解,因为它采用了关系模型来组织数据。 可以保持数据的一致性。 数据更新的开销比较小。 支持复杂查询(带 where 子句的查询) 非关系型数据库(NOSQL)的优点 无需经过 SQL 层的解析,读写效率高。 基于键值对,读写性能很高,易于扩展 可以支持多种类型数据的存储,如图片,文档等等。 扩展(可分为内存性数据库以及文档型数据库,比如 Redis,Mong

2022-04-13 17:54:01 17423 1

原创 Spring Boot中异步请求和异步调用

一、SpringBoot中异步请求的使用1、异步请求与同步请求图片图片特点:可以先释放容器分配给请求的线程与相关资源,减轻系统负担,释放了容器所分配线程的请求,其响应将被延后,可以在耗时处理完成(例如长时间的运算)时再对客户端进行响应。一句话:增加了服务器对客户端请求的吞吐量(实际生产上我们用的比较少,如果并发请求量很大的情况下,我们会通过nginx把请求负载到集群服务的各个节点上来分摊请求压力,当然还可以通过消息队列来做请求的缓冲)。2、异步请求的实现方式一:Ser

2022-04-13 17:51:03 1027

原创 SpringBoot+Redis实现接口限流

在这之前对redis一无所知,做的过程都是参考网上的资料,如果有冒犯之处请见谅,整理一下,希望对大家都用。1.使用maven添加依赖库,本项目中使用的是:<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><version>2.1.4.R...

2022-04-13 17:37:12 674

原创 Https如何保证传输安全

1. HTTP 协议在谈论 HTTPS 协议之前,先来回顾一下 HTTP 协议的概念。1.1 HTTP 协议介绍HTTP 协议是一种基于文本的传输协议,它位于 OSI 网络模型中的应用层。图片HTTP 协议是通过客户端和服务器的请求应答来进行通讯,目前协议由之前的 RFC 2616 拆分成立六个单独的协议说明(RFC 7230、RFC 7231、RFC 7232、RFC 7233、RFC 7234、RFC 7235),通讯报文如下: 请求 POSThttp://www..

2022-04-13 17:30:43 284

原创 Nginx

什么是Nginx?Nginx是一个 轻量级/高性能的反向代理Web服务器,用于 HTTP、HTTPS、SMTP、POP3 和 IMAP 协议。他实现非常高效的反向代理、负载平衡,他可以处理2-3万并发连接数,官方监测能支持5万并发,现在中国使用nginx网站用户有很多,例如:新浪、网易、 腾讯等。Nginx 有哪些优点? 跨平台、配置简单。 非阻塞、高并发连接:处理 2-3 万并发连接数,官方监测能支持 5 万并发。 内存消耗小:开启 10 个 Nginx 才占 150M

2022-04-13 17:19:49 508

原创 HashMap

1. HashMap的底层数据结构是什么?在JDK1.7中和JDK1.8中有所区别:在JDK1.7中,由”数组+链表“组成,数组是HashMap的主体,链表则是主要为了解决哈希冲突而存在的。在JDK1.8中,有“数组+链表+红黑树”组成。当链表过长,则会严重影响HashMap的性能,红黑树搜索时间复杂度是O(logn),而链表是O(n)。因此,JDK1.8对数据结构做了进一步的优化,引入了红黑树,链表和红黑树在达到一定条件会进行转换: 当链表超过8且数组长度(数据总量)超过

2022-04-13 16:38:19 1634

原创 动态照片播放

<!DOCTYPE html><html><head> <meta charset="utf-8" /> <title>zhaoyeming</title> <link rel="stylesheet" href="css/hovertree.css" /></head><body> <div class="hovertreeinfo"> <h2&...

2022-04-09 10:34:11 74

原创 ftl生成word文档

ftl生成word文档

2022-03-31 14:00:04 3391

原创 搜索附近人

思路,先将个人信息存放进MySQL数据库中,存进数据库的同时,需要将这个人的经纬度存放进MongoDB中,MongoDB中可以之村用户的主要信息等等,经纬度是必须要存进MongoDB的,需要将经纬度存放成一个double[],并且将该字段添加索引,然后利用你的经纬度查询MongoDB,就可以实现查询附近人。存入MySQL就不必写了,直接存放MongoDB我使用的是MongoDB自带的工具类

2022-03-31 10:25:09 791

空空如也

空空如也

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

TA关注的人

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