图灵课堂诸葛
码龄3年
关注
提问 私信
  • 博客:52,550
    52,550
    总访问量
  • 73
    原创
  • 1,066,046
    排名
  • 3,202
    粉丝

个人简介:十三年java老兵,不定时分享java技术知识。

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:湖南省
  • 加入CSDN时间: 2021-05-21
博客简介:

m0_58479800的博客

查看详细资料
个人成就
  • 获得326次点赞
  • 内容获得452次评论
  • 获得358次收藏
创作历程
  • 77篇
    2021年
成就勋章
创作活动更多

AI大模型如何赋能电商行业,引领变革?

如何使用AI技术实现购物推荐、会员分类、商品定价等方面的创新应用?如何运用AI技术提高电商平台的销售效率和用户体验呢?欢迎分享您的看法

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

十个问题教你弄清JVM&GC,细致入微全是精华!!(建议收藏)

每个java开发同学不管是日常工作中还是面试里,都会遇到JDK、JVM和GC的问题。本文会从以下10个问题为切入点,带着大家了解一下JVM的方方面面。JVM、JRE和JDK的区别和联系JVM是什么?以及它的主要作用JVM的核心功能有哪些类加载机制和过程运行时数据区的逻辑结构JVM的内存模型如何确定对象是垃圾垃圾收集的算法有哪些各种问世的垃圾收集器JVM调优的参数配置线程私有内存区在类加载器编译某个class文件时就确定了执行时需要的“程序计
原创
发布博客 2021.07.20 ·
347 阅读 ·
2 点赞 ·
2 评论 ·
2 收藏

Java 集合框架看这一篇就够了!

话不多说,直接上图:Java 集合,也称作容器,主要是由两大接口 (Interface) 派生出来的:Collection 和 Map顾名思义,容器就是用来存放数据的。那么这两大接口的不同之处在于:Collection 存放单一元素;Map 存放 key-value 键值对。就是单身狗放 Collection 里面,couple 就放 Map 里。(所以你属于哪里?学习这些集合框架,我认为有 4 个目标:明确每个接口和类的对应关系;对每个接口和类,熟悉常用的 API
原创
发布博客 2021.07.20 ·
308 阅读 ·
3 点赞 ·
2 评论 ·
3 收藏

细嚼慢咽 Java 线程池,你品你细品!

你好同学,我是今天的面试官。咱们来聊聊平时开发中为什么要使用线程池技术,Java 线程池它具体是怎么实现的?好处多多假设我们不使用线程池技术,那么就在任务来临时刻启动一个新的线程,任务处理结束,释放线程资源。但是启动和销毁线程对服务器来说是比较耗费性能的一件事情,首先当任务来临时候,由于需要创建新的线程,会造成任务的延迟,其次频繁的创建和销毁线程也造成了大量不必要的资源浪费。在使用线程池以后,线程处理完当前任务以后不会被销毁,当新任务来临时候会重新利用已经创建好的线程,避免了创建销毁线程的开销,同时.
原创
发布博客 2021.07.20 ·
256 阅读 ·
1 点赞 ·
2 评论 ·
2 收藏

搞定SpringBoot多数据源:动态数据源

一句话概括:使用动态数据源对多个数据库进行操作,灵活,简洁。1. 引言动态数据源可以解决多套数据源的处理不够灵活、占用资源多等问题。用户可以根据实际的业务需要,统一操作逻辑,只要在需要切换数据源的进行处理即可。何为动态,其实是批切换数据源的时机可以动态选择,在需要的地方进行切换即可。本文延续上一篇文章的示例,以主从场景为示例,结合代码,对动态数据源的实现进行讲解,内容包括搭建动态数据源原理、动态数据源配置、动态数据源使用,AOP 注解方式切换数据源等。2. 动态数据源流程说明Spring Bo.
原创
发布博客 2021.07.20 ·
1040 阅读 ·
3 点赞 ·
2 评论 ·
6 收藏

BIO,NIO,AIO 总结

熟练掌握 BIO,NIO,AIO 的基本概念以及一些常见问题是你准备面试的过程中不可或缺的一部分,另外这些知识点也是你学习 Netty 的基础。BIO,NIO,AIO 总结Java 中的 BIO、NIO和 AIO 理解为是 Java 语言对操作系统的各种 IO 模型的封装。程序员在使用这些 API 的时候,不需要关心操作系统层面的知识,也不需要根据不同操作系统编写不同的代码。只需要使用Java的API就可以了。在讲 BIO,NIO,AIO 之前先来回顾一下这样几个概念:同步与异步,阻塞与非阻塞。同步
原创
发布博客 2021.07.20 ·
139 阅读 ·
1 点赞 ·
2 评论 ·
1 收藏

如何产出规范、安全、高质量的代码?

对于一个软件开发团队,可以通过哪些代码质量指标和扫描方法让团队产出规范、安全、高质量的代码?让开发团队运行的安全、透明、可靠?本文总结了其中一些实践和工具,包含常见代码质量扫描工具、代码质量指标、第三方依赖管理、安全运维等几个方面,主要适用于 Java/JavaScript 技术栈的 web 项目,希望对于想要规范化自己的项目的 Tech Lead 有所帮助。对于一个软件开发团队,可以通过哪些代码质量指标和扫描方法让团队产出规范、安全、高质量的代码?让开发团队运行的安全、透明、可靠?本文总结了其中一.
原创
发布博客 2021.07.20 ·
1086 阅读 ·
6 点赞 ·
11 评论 ·
10 收藏

秒懂JVM的三大参数类型,就靠这十个小实验了

本实验的目的是讲解 JVM 的三大参数类型。在JVM调优中用到的最多的 XX 参数,而如何去查看和设置 JVM 的 XX 参数也是调优的基本功,本节以实验的方式讲解 JVM 参数的查看和设置。希望大家能有所启发。标配参数常见标配参数-version,获取JDK版本-help,获取帮助-showverision,获取JDK版本和帮助动手实验 1 - 查看标配参数实验步骤:查看Java JDK 版本`java -version `实验 1-1可以看到Java
原创
发布博客 2021.07.20 ·
157 阅读 ·
2 点赞 ·
2 评论 ·
2 收藏

Guava - 拯救垃圾代码,写出优雅高效,效率提升N倍!

杭州-梦想小镇最近在看一个同学代码的时候,发现代码中大量使用了 Google 开源的 Guava 核心库中的内容,让代码简单清晰了不少,故学习分享出 Guava 中我认为最实用的功能。Guava 项目是 Google 公司开源的 Java 核心库,它主要是包含一些在 Java 开发中经常使用到的功能,如数据校验、不可变集合、计数集合,集合增强操作、I/O、缓存、字符串操作等。并且 Guava 广泛用于 Google 内部的 Java 项目中,也被其他公司广泛使用,甚至在新版 JDK 中直接引入了 .
原创
发布博客 2021.07.20 ·
525 阅读 ·
9 点赞 ·
13 评论 ·
10 收藏

HashMap 是如何工作的?图文详解,一起来看看!

1 HashMap 在 JAVA 中的怎么工作的?基于 Hash 的原理。2 什么是哈希?最简单形式的 hash,是一种在对任何变量 / 对象的属性应用任何公式 / 算法后, 为其分配唯一代码的方法。一个真正的 hash 方法必须遵循下面的原则:“哈希函数每次在相同或相等的对象上应用哈希函数时, 应每次返回相同的哈希码。换句话说, 两个相等的对象必须一致地生成相同的哈希码。Java 中所有的对象都有 Hash 方法,Java 中的所有对象都继承 Object 类中定义的 hashCode(
原创
发布博客 2021.07.19 ·
156 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

你真的了解String吗?一道面试题引发的思考

前言首先,先来和大家看一道熟悉的面试题,判断以下输出的结果分别是什么?public class Test { public static void main(String[] args) { String str1 = "hello"; String str2 = "hello"; String str3 = new String("hello"); String str4 = new String("hello");
原创
发布博客 2021.07.19 ·
115 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

2021,你还在写“赤裸裸”的API吗?来试试这个方法吧!

前言新的项目要开始了,由于项目中涉及到和第三方厂商的接口对接,所有对接口的安全性有要求,下来我们看看如何写好一个规范的接口如何保证接口传输中数据安全保证数据安全,大家首先能想到的就是对内容进行加密。加密的话主要有两种方式,对称加密和非对称加密。1、对称加密我们先一起看一张图 可以看到,上图中采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中。对称加密的强度取决
原创
发布博客 2021.07.19 ·
182 阅读 ·
10 点赞 ·
12 评论 ·
11 收藏

如何从字节码角度分析Java问题!

前言有一天逛知乎的时候,遇到了这样的问题:面代码为什么i最后的结果是8?`public static void main(String[] args) { int i = 1; i += i += ++i + 2.6 + i; } `很简单的两行代码,如果是你遇到这样的问题,你会怎样去把问题解释清楚?是利用Java运算符顺序将式子拆解,然后一步步运算,还是其他什么办法?在思索一会儿之后,决定还是通过字节码指令来看看这两行代码是怎么运行的。将两行代码拷贝到Test.java中,
原创
发布博客 2021.07.16 ·
116 阅读 ·
6 点赞 ·
5 评论 ·
6 收藏

Java8的Stream流真香,没体验过的永远不会知道

虽然现在Oacle官方发布的最新JDK版本已经到了JDK14。但我相信很多团队的生产系统还是JDK8,甚至有的团队还是JDK7或者JDK6。即便很多团队已经将生产环境升级为JDK8,但是代码却还是老代码,也就是说根本没有使用JDK8提供的新特性。JDK8 给程序员来带了很多便利,甚至可以让Java程序员跟Python,Ruby等程序员撕逼的时候,也能够扬眉吐气一把;因为JDK8终于开始支持“行为参数化了”,也就是大家经常说的,可以把一个函数当作参数传给另一个函数。JDK8最明显的两个变化就是开始支持La
原创
发布博客 2021.07.16 ·
250 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

真正号称下一代可视化监控系统,结合SpringBoot使用,贼爽!

摘要当面对一个复杂的系统时,我们往往需要监控工具来帮助我们解决一些性能问题。比如之前我们使用SpringBoot Admin来监控应用,从而获取到SpringBoot Actuator暴露的指标信息。今天给大家介绍一个功能强大的监控工具Grafana,只要需要用到监控的地方,用它做可视化就对了!Grafana简介Grafana是一款开源的数据可视化和分析工具,不管你的指标信息存储在哪里,你都可以用它来可视化这些数据。同时它还具有告警功能,当指标超出指定范围时会提醒你。Prometheus简介Pro
原创
发布博客 2021.07.16 ·
224 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

SQL 查询并不是从 SELECT 开始的,让阿里P8来告诉你!

日常使用中写 SQL 查询命令都是以 SELECT 开始的(注意:本文仅探讨 SELECT 查询,不涵盖 insert 或其他 SQL 命令)。昨天我想到一个问题:可以用 WHERE、HAVING 或者其他方式来过滤窗口函数执行结果吗?经过一番探索,我得出的最终结论是否定的,因为窗口函数必须在 WHERE 和 GROUP BY 之后才能运行。但是,这也延伸到了一个更大的问题——SQL 查询的执行顺序是怎么样的呢?你所不知道的 SQL 查询执行顺序我专门查了一下文档 SQL 查询执行顺序如下:如果
原创
发布博客 2021.07.16 ·
105 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

高质量代码优化!谈谈重构项目中的if-else代码

switchif - else只适合在3层之内使用当条件判断较多时,可以首先考虑使用switchinterface当判断条件还可能动态增加时,可以考虑将switch进一步优化,引入接口interface,将代码与数据分离:创建一个map:key: switch的case值value: 对应的实体类抽象出通用方法,变成一个接口,统一入参和返回值主实现类controller类就是将type值传进去,获取到对应的实现类,然后调用抽象出来的方法,这样无论增加多少个case, 都不会改
原创
发布博客 2021.07.16 ·
139 阅读 ·
4 点赞 ·
3 评论 ·
4 收藏

面试再次被吊打系列 - Redis缓存血崩

小张兴冲冲去面试,结果因为redis的缓存雪崩问题被面试官拒绝!小张:面试官,你好。我是来参加面试的。面试官:你好,小张。我看了你的简历,你们平时在项目中用了redis,能说一下你们使用redis的场景吗?小张:redis的话我们主要是用来存储一些常用的配置类数据还有一些热点数据;还有存储一些到期失效的数据,比如登录用户颁发的token等。面试官:那好,既然你们用来存储热点数据。那么我来问你个实际场景,「查询热点数据的时候会先从缓存加载,如果缓存没有命中则会检索数据库获取数据。往往我们还会给热点.
原创
发布博客 2021.07.15 ·
125 阅读 ·
3 点赞 ·
2 评论 ·
3 收藏

史上最全Redis高可用技术解决方案大全,腾讯大牛来教你!

Redis常见的几种主要使用方式:Redis 单副本Redis 多副本(主从)Redis Sentinel(哨兵)Redis ClusterRedis 自研Redis各种使用方式的优缺点:1Redis单副本Redis 单副本,采用单个Redis节点部署架构,没有备用节点实时同步数据,不提供数据持久化和备份策略,适用于数据可靠性要求不高的纯缓存业务场景。优点:1、架构简单、部署方便2、高性价比,当缓存使用时无需备用节点(单实例可用性可以用supervisor或
原创
发布博客 2021.07.15 ·
169 阅读 ·
3 点赞 ·
2 评论 ·
3 收藏

Redis的内存优化,阿里P8来教你!

前言作为一台服务器来说,内存并不是无限的,所以总会存在内存耗尽的情况,那么当 Redis 服务器的内存耗尽后,如果继续执行请求命令,Redis 会如何处理呢?内存回收使用Redis 服务时,很多情况下某些键值对只会在特定的时间内有效,为了防止这种类型的数据一直占有内存,我们可以给键值对设置有效期。Redis 中可以通过 4 个独立的命令来给一个键设置过期时间:expire key ttl:将 key 值的过期时间设置为 ttl 秒。pexpire key ttl:将 key 值的过期时间设置为
原创
发布博客 2021.07.15 ·
100 阅读 ·
3 点赞 ·
2 评论 ·
3 收藏

Redis 分布式锁遇到的序列化问题,细致入微全是精华!

场景描述最近使用 Redis 遇到了一个类似分布式锁的场景,跟 Redis 实现分布式锁类比一下,就是释放锁失败,也就是缓存删不掉。又踩了一个 Redis 的坑……这是什么个情况、又是怎样排查的呢?本文主要对此做个复盘。问题排查既然是释放锁有问题,那就先看看释放锁的代码吧。释放锁释放锁使用了 Lua 脚本,代码逻辑和 Lua 脚本如下:释放锁示例代码public Object release(String key, String value) { Object existedV
原创
发布博客 2021.07.15 ·
181 阅读 ·
3 点赞 ·
2 评论 ·
3 收藏
加载更多