自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring Boot Admin,贼好使

原文作者:Java中文社群链接:https://juejin.cn/post/7052857798530433031Spring Boot Admin(SBA)是一个开源的社区项目,用于管理和监控 Spring Boot 应用程序。应用程序可以通过 http 的方式,或 Spring Cloud 服务发现机制注册到 SBA 中,然后就可以实现对 Spring Boot 项目的可视化管理和查看了。Spring Boot Admin 可以监控 Spring Boot 单机或集群项目,它提供详细的.

2022-01-23 14:02:25 133

原创 HashMap除了死循环之外,还有什么问题?

其实两年前校招的时候就往阿里投了一次简历,结果很明显凉了,随后这个理想就被暂时放下了,但是这个种子一直埋在心里这两年除了工作以外,也会坚持写博客,也因此结识了很多优秀的小伙伴,从他们身上学到了特别多东西,把这次面试分享出来,也是希望可以帮助到更多的人。一面(远程视频面)自我介绍 项目介绍 Redis 介绍 了解 redis 源码吗 了解 redis 集群吗 Hashmap 的原理 hashmap 容量为什么是 2 的幂次 hashset 的源码 object 类你知道的方法 h

2022-01-22 21:15:15 104

原创 工作四年,分享50个让你代码更好的小建议

前言工作了四年,看过很多思考不够深入的代码,因此写一下总结吧,50个让你代码更好的建议。其中的一些点,我以前的文章也写过啦,这次主要汇总一下。希望大家日常写代码多点思考,多点总结,加油!同时哪里有不对的,也望指出,感谢哈~1. 仅是判断是否存在时,select count 比 select 具体的列,更好。我们经常遇到类似的业务场景,如,判断某个用户userId是否是会员。(反例): 一些小伙伴会这样实现,先查从用户信息表查出用户记录,然后再去判断是否是会员:<select id

2022-01-19 21:01:59 209

原创 Spring 5系统架构

Spring大约有20个模块,由1300多个不同的文件构成。这些模块可以分为核心容器、AOP和设备支持、数据访问与集成、Web组件、通信报文和集成测试、集成兼容等类。Spring 5的模块结构如下图所示。组成Spring框架的每个模块都可以单独存在,也可以将一个或多个模块联合实现。下面分别介绍每类模块的组成和功能。1 核心容器核心容器由spring-beans、spring-core、spring-context和spring-expression(Spring Expression Lan

2022-01-19 20:38:58 134

原创 面试官:说说常用的排序算法呗

十大排序算法思路汇总在面试的过程中经常会遇到手写排序算法,所以本文就简单总结一下。不对算法的细节做介绍,只做一个概括性的描述。交换类:通过元素之间的两两交换来实现排序插入类:将数分为2部分,依次将无序的数插入到有序的数列中选择类:从待排序数列中找到最小值或者最大值元素,放到已拍好序的序列后面计数排序和基数排序可以认为是桶排序的一种特殊实现,都不是通过元素之间的比较来实现排序的冒泡排序冒泡排序,从头开始,依次比较数组中相邻的2个元素,如果后面的数比前面的数大,则交换2个数...

2022-01-11 14:53:58 71

原创 计算机网络知识复习(day01)--计算机网络相关概念及网络分层架构模型

参考书籍:《图解TCP/IP》、《计算机网络-谢希仁》1、计算机网络相关概念1、计算机网络:计算机网络是将分散在不同地点且具有独立功能的多个计算机系统,利用通信设备和通信线路相互连接起来,在网络协议和软件的支持下进行数据通信,实现信息传递和资源共享的计算机共享的集合。总之,计算机网络是互连的、自治【无主从关系】的计算机集合。2、计算机网络的组成:从组成部分上看,一个完整的计算机网络主要由硬件、软件、协议三大部分组成,缺一不可。硬件:由若干结点和连接这些结点的链路组成;结点.

2022-01-11 14:48:35 922

原创 Redis布隆过滤器

简介布隆过滤器是一种概率型数据结构(Probabilistic data structures),对插入和查询比较高效,能够计算 “某样东西 一定不存在 或者 可能存在 ”。如果存在那就是可能存在(hash的碰撞) 如果不存在那就一定不存在相比于传统的 List、Set、Map 等数据结构,它更高效插入和查询、占用空间更少,但是缺点是其返回的结果可能是误判存在的,合理设置长度以及hash 函数的个数可以提高准确率。布隆过滤器原理向布隆过滤器添加元素 key 时, 会使用多个 has.

2022-01-11 14:47:21 121

原创 异步任务的管理器 | 教你如何优雅打印日志

一、前言看完这篇文教你怎样biu的佛的打印日志二、线程池配置执行异步人任务时,需要将执行的任务放入到线程池中,所以需配置好我们的线程池,比如 核心线程大小 、 最大可创建的线程数 和 队列长度 等。2.1 基本参数配置@Configurationpublic class ThreadPoolConfig { /** * 核心线程池大小 */ private int corePoolSize = 50; /** * 最大.

2022-01-11 14:44:02 711

原创 Java参数传递到底是按 值传递 还是 引用传递 ?

前言首先明确,Java中方法参数传递方式是按值传递。对于基本类型(int a, long b),参数传递时传递的是值,例如int a = 5,传递的就是5。如果是引用类型,传递是指向具体对象内存地址的地址值,例如用System.out.println(new Object())打印出来的 java.lang.Object@7716f4 中 @符号后面的7716f4 就是16进制的内存地址,System.out.println实际上是默认调用了对象的toString方法,public String

2022-01-06 15:06:02 1673

原创 日期格式化你遇到过这样的坑吗

2022年的第6天,业务群里炸开了锅,昨天导入正式库的数据,昨天导入完查询正常,今天确查不到了,这是怎么回事呢,产品,测试,开发都在群里咋呼起来,经过排查,原来是代码逻辑的问题,业务关联了年度,只能查询当年的业务,虽然是个小插曲,却让我想起了一个很容易被人遗忘的问题,就是时间格式化,YYYY-MM-dd与yyyy-MM-dd的区别。这两个有什么区别呢,先让我们用代码运行一下看看吧public class Test{ public static void main(String[] ar..

2022-01-06 14:59:21 80

原创 业务代码与技术代码

当程序员大多都有一个共同的经历:当你在改一段复杂的代码时,你一边吐槽是哪个小可爱写的这段像一坨*一样的代码时,一边打开了提交记录,赫然发现竟然是自己3个月前写的!明明看起来很简单的业务,但写出来的软件代码为什么会这么复杂呢?这是所有程序员都可能会思考的问题。“领域驱动设计”号称是一种能够应对软件复杂性的解决方案,它的核心思路是从业务视角出发,去设计软件,并试图把技术复杂性和业务复杂性分离开来。但领域驱动设计是20年前就提出来的,那时候的软件面临的技术挑战和技术复杂性和现在不可同日而语,有些规则可

2022-01-04 21:33:36 229

原创 JAVA类加载机制之Classloader以及打破加载机制的方式

在jDK1.8中,Classloader加载class的字节码到JVM,它是遵循双亲委派模型的加载机制,主要是由BootstrapClassLoader,ExtClassLoader、AppClassloader,然后是自定义的Classloader加载,这样做主要是保证JDK的内部类加载安全性,所以优先加载JDK的ClassPath的jar包的类.双亲委派模型的如下图所示,其实就是由两级父Classloader加载,分别是BootstrapClassloader和ExtClassloader。JDK的

2022-01-04 21:30:03 970

原创 springboot实现对注解的切面

对注解实现切面案例菜鸟记录一下学习过程。(1)首先定义一个注解@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface MyAnnotation { String getValues() default "test annotation";}@Target(ElementType.METHOD)表示该注解作用在方法上(type表示类上,field表示成员变量上)@

2022-01-04 21:27:38 1491

原创 一文把Servlet整的明明白白

一、Servlet概述1.1、Servlet是什么Servlet 是 JavaEE 规范之一。规范就是接口。 Servlet 就 JavaWeb 三大组件之一。三大组件分别是:Servlet 程序、Filter 过滤器、Listener 监听器。 Servlet 是运行在服务器上的一个 java 小程序,它可以接收客户端发送过来的请求,并响应数据给客户端。简单来说:Servlet 是运行在 Web服务器(如Tomcat服务器)的,使用 Java编写的小应用程序。1.2、Servl.

2022-01-04 20:54:49 110

原创 一份简单够用的 Nginx Location 配置讲解

前言Location 是 Nginx 中一个非常核心的配置,这篇重点讲解一下 Location 的配置问题以及一些注意事项。语法关于 Location,举个简单的配置例子:http { server { listen 80; server_name www.yayujs.com; location / { root /home/www/ts/; index index.html; } }}大致的意思...

2022-01-04 20:38:21 888

原创 B站疯传24小时删

在腾讯工作了8年,工作压力大,节奏快,但是从技术上确实得到了成长,尤其是当你维护与大促相关的系统的时候,熬到9级也费了不少心思,小编也是个爱学习的人,把这几年的工作经验整理成了一份完整的笔记。此笔记已助朋友拿到腾讯,阿里,美团等互联网大厂10个offer !由于细节内容实在太多太全面啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!文末可免费获取。大致内容包括了: Java 集合、JVM、多线程、并发编程、设计模式、Spring全家桶、Java、MyBatis、ZooK.

2021-12-31 17:24:47 1494

原创 外包干了四年,今天分手了

这是来自一位粉丝的投稿内容如下:先说一下自己的个人情况,大专毕业,18年通过校招进入湖南某外包公司,干了接近4年的CRUD,马上2022年了,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的CRUD,已经让我变得不思进取,谈了3年的女朋友也因为我的心态和工资和我分手了。于是,我决定要改变现状,放眼于明年的金三银四!刚开始准备时,自己都蒙了,接近年的CRUD让我的技术没有一丝的进步,提升的只有我的年龄...没办法,我找到了我在阿里P7的学长,作为他的

2021-12-30 21:27:37 214

原创 【对线面试官】Kafka基础

面试官:今天要不来聊聊消息队列吧?我看你项目不少地方都写到Kafka了候选者:嗯嗯面试官:那你简单说明下你使用Kafka的场景吧候选者:使用消息队列的目的总的来说可以有三种情况:解耦、异步和削峰候选者:比如举我项目的例子吧,我现在维护一个消息管理平台系统,对外提供接口给各个业务方调用候选者:他们调用接口之后,实际上『不是同步』下发了消息。候选者:在接口处理层只是把该条消息放到了消息队列上,随后就直接返回结果给接口调用者了。候选者:这样的好处就是:候选者:1. 接口的吞吐量..

2021-12-30 20:37:34 64

原创 面试官问我JVM调优,我忍不住了,哈哈哈哈

面试官:今天要不来聊聊JVM调优相关的吧?面试官:你曾经在生产环境下有过调优JVM的经历吗?候选者:没有面试官:…候选者:嗯…是这样的,我们一般优化系统的思路是这样的候选者:1. 一般来说关系型数据库是先到瓶颈,首先排查是否为数据库的问题候选者:(这个过程中就需要评估自己建的索引是否合理、是否需要引入分布式缓存、是否需要分库分表等等)候选者:2. 然后,我们会考虑是否需要扩容(横向和纵向都会考虑)候选者:(这个过程中我们会怀疑是系统的压力过大或者是系统的硬件能力不足...

2021-12-30 20:35:02 82

原创 双十一期间Kafka以这种方式丢消息让我猝不及防

讲真,我今年的双十一有点“背”,负责的Kafka集群出了一些幺蛾子,但正是这些幺蛾子,让我这个双十一过的非常充实,也让我意识到如果不体系化学习Kafka,是无法做到生产集群及时预警,将故障扼杀在摇篮中,因此也下定决心研读kafka的内核。本文就先来分享一个让我始料未及的故障:Kafka生产环境大面积丢失消息。首先要阐述的是消息丢失并不是因为断电,而且集群的副本数量为3,消息发送端设置的acks=-1(all)。这样严苛的设置,那为什么还会出现消息丢失呢?请听笔者慢慢道来。1、故障现象故障

2021-12-30 19:44:12 524

原创 都这么卷了,不懂MyBatis插件开发怎么行,教你实现一个MyBatis分页插件

MyBatis可谓是Java开发工程师必须要掌握的持久层框架,它能够让我们更容易的通过Java代码操作数据库,并且它还有很高的扩展性,我们可以自定义插件,去让MyBatis的功能变的更为强大,本篇文章我们就以打印SQL,SQL分页为例,来讲一下如何开发MyBatis的插件。MyBatis 四大内置对象 Executor 执行器 实际用来执行SQL的对象 StatementHandler 数据库会话处理器 编译/处理SQL语句的 PreparedStatementHanler 创..

2021-12-29 20:35:21 73

原创 面试官:说说常用的排序算法呗

十大排序算法思路汇总在面试的过程中经常会遇到手写排序算法,所以本文就简单总结一下。不对算法的细节做介绍,只做一个概括性的描述。交换类:通过元素之间的两两交换来实现排序插入类:将数分为2部分,依次将无序的数插入到有序的数列中选择类:从待排序数列中找到最小值或者最大值元素,放到已拍好序的序列后面计数排序和基数排序可以认为是桶排序的一种特殊实现,都不是通过元素之间的比较来实现排序的冒泡排序冒泡排序,从头开始,依次比较数组中相邻的2个元素,如果后面的数比前面的数大,则交换2个数...

2021-12-29 20:32:11 74

原创 都这么卷了,不懂MyBatis插件开发怎么行,教你实现一个MyBatis分页插件

MyBatis可谓是Java开发工程师必须要掌握的持久层框架,它能够让我们更容易的通过Java代码操作数据库,并且它还有很高的扩展性,我们可以自定义插件,去让MyBatis的功能变的更为强大,本篇文章我们就以打印SQL,SQL分页为例,来讲一下如何开发MyBatis的插件。MyBatis 四大内置对象 Executor 执行器 实际用来执行SQL的对象 StatementHandler 数据库会话处理器 编译/处理SQL语句的 PreparedStatementHanler 创..

2021-11-30 15:33:47 108

原创 什么是BufferedWriter字符缓冲输出流?

BufferedWriter的中文意思就是字符缓冲输出流,可以写入单个字符,也可以写入字符数组,或者是字符串的某一部分,一句话就是非常好用。下面是BufferedWriter实例中一个最简单的结构。public static void main(String[] args) {BufferedWriter bw = null;bw = Files.newBufferedWriter("test.txt", StandardCharsets.UTF_8);bw.write("hell.

2021-11-30 15:32:56 283

原创 面试官:你说你精通Redis,你看过持久化的配置吗?

前边我们已经介绍了Redis五种数据类型的命令与配置文件的基本配置,今天让我们从理论和配置两个层面来揭开Redis持久化的神秘面纱。所谓持久化可以简单理解为将内存中的数据保存到硬盘上存储的过程。持久化之后的数据在系统重启或者宕机之后依然可以进行访问,保证了数据的安全性。Redis有两种持久化方案,一种是快照方式(SNAPSHOTTING),简称RDB;一种是只追加模式(APPEND ONLY MODE),称为AOF。接下来让我们分别了解一下它们的使用与注意事项。RDBRDB为Redis Da.

2021-11-30 15:31:58 74

原创 Redis 缓存过期处理与内存淘汰机制

已过期的key如何处理?设置了expire的key缓存过期了,但是服务器的内存还是会被占用,这是因为redis所基于的两种删除策略redis有两种策略:(主动)定时删除 定时随机的检查过期的key,如果过期则清理删除。(每秒检查次数在redis.conf中的hz配置) (被动)惰性删除 当客户端请求一个已经过期的key的时候,那么redis会检查这个key是否过期,如果过期了,则删除,然后返回一个nil。这种策略对cpu比较友好,不会有太多的损耗,但是内存占用会比较高。 所以,虽然.

2021-11-30 15:31:08 69

原创 《性能优化》并发与并行

前言性能优化系列第一篇主要给大家科普了一些性能相关的数字,为大家建立性能的初步概念。第二篇给大家介绍了支撑淘宝双十一这种达到百万QPS项目所需的相关核心技术。本文带来的是性能优化中的第一利器:并发与并行。除了核心原理介绍外,我将结合我自身的过去的实战经验,给出一些自己在使用上的建议,希望对大家有帮助。不多废话,直接开怼。正文1、并发和并行?并发和并行最关键的区别是:并行是同时执行,而并发不是同时。这边使用 Joe Armstrong 排队使用咖啡机的例子来看并行..

2021-11-25 15:03:49 510

原创 字节跳动十年架构师分享,会这个知识点的人都去BAT、TMD了

可以说,Java是现阶段中国互联网公司中,覆盖度最广的研发语言,掌握了Java技术体系,不管在成熟的大公司,快速发展的公司,还是创业阶段的公司,都能有立足之地。有不少朋友问,除了掌握Java语法,还要系统学习哪些Java相关的技术,今天分享一个,互联网Java高级技术学习路线图。现如今互联网企业最新、最全面、最流行的Java技术知识有哪些呢?1、底层源码与设计模式:阅读、分析源码是程序员最基本的码代码能力也是码农的根本所在,学习经典源码中所用到的经典设计思想及常用设计模式,能够帮你了解大牛是..

2021-11-25 13:56:46 108

原创 实战解析朝生暮死的Redis拓展应用—过期策略和LRU,继续强化学习

今天,我们继续Redis的拓展应用,继续深化了解、强化学习效果。拓展 4:朝生暮死 —— 过期策略Redis 所有的数据结构都可以设置过期时间,时间一到,就会自动删除。你可以想象 Redis 内部有一个死神,时刻盯着所有设置了过期时间的 key,寿命一到就会立即收割。你还可以进一步站在死神的角度思考,会不会因为同一时间太多的 key 过期,以至于忙不过来。同时因为 Redis 是单线程的,收割的时间也会占用线程的处理时间,如果收割的太过于繁忙,会不会导致线上读写指令出现卡顿。 这些问题

2021-11-24 15:14:48 97

空空如也

空空如也

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

TA关注的人

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