一只流氓的小菜鸟
码龄5年
关注
提问 私信
  • 博客:69,354
    69,354
    总访问量
  • 26
    原创
  • 1,856,545
    排名
  • 10,632
    粉丝
  • 40
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:河北省
  • 加入CSDN时间: 2020-03-06
博客简介:

qq_46494427的博客

查看详细资料
个人成就
  • 获得59次点赞
  • 内容获得7次评论
  • 获得652次收藏
  • 代码片获得203次分享
创作历程
  • 27篇
    2022年
成就勋章
创作活动更多

2024 博客之星年度评选报名已开启

博主的专属年度盛宴,一年仅有一次!MAC mini、大疆无人机、华为手表等精美奖品等你来拿!

去参加
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

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

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

适配器模式

适配器模式
原创
发布博客 2022.06.15 ·
697 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

ThreadLocal

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

常用Lambda表达式

前言我们日常工作中,Lambda 使用比较多的场景,就是集合类下的 Lambda 流操作,往往几行代码可以帮助我们实现复杂代码,接下来我们把 Lambda 流的常用方法用案列讲解一下。ForEach集合的遍历 forEach 方法:publicvoidtestForEach(){List<String>list=newArrayList<String>(){{add("1");...
原创
发布博客 2022.05.13 ·
1286 阅读 ·
1 点赞 ·
2 评论 ·
9 收藏

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

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

Java多线程批量操作

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

看完就可上手用的MQ

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

Guava中这些Map骚操作

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

Bean 注入 Spring 容器的方式

xml 方式 注解方式 @Configuration + @Bean @Import FactoryBean BDRegistryPostProcessor 源码 实战 一提到Spring,大家最先想到的是啥?是AOP和IOC的两大特性?是Spring中Bean的初始化流程?还是基于Spring的Spring Cloud全家桶呢?今天我们就从Spring的IOC特性入手,聊一聊Spring中把Bean注..
转载
发布博客 2022.04.24 ·
316 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

分布式架构知识点

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

常用定时任务

1目录 单点定时任务 JDK原始 Spring Task 基于Redis实现 分布式定时任务 quartz elastic-job-lite LTS xxl-job 总结 2单点定时任务JDK 原生自从 JDK1.5 之后,提供了 ScheduledExecutorService 代替 TimerTask 来执行定时任务,提供了不错的可靠性。public
原创
发布博客 2022.04.24 ·
205 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

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 ·
432 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

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

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

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 ·
485 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

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 ·
2230 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

MyBatis 流式分页查询

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

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 ·
102 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

动态代理实现原理

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

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

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

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

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