小技术君

公众号:小技术君、独立博客:https://smalltechnologyjun.com
私信 关注
小技术君
码龄4年

A technical lover from beginning to end ~

  • 2,521
    被访问量
  • 28
    原创文章
  • 413,277
    作者排名
  • 1
    粉丝数量
  • 于 2017-02-21 加入CSDN
获得成就
  • 获得0次点赞
  • 内容获得0次评论
  • 获得9次收藏
荣誉勋章
TA的专栏
  • kafka
    1篇
  • Java
    6篇
  • 微服务
    1篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

如何快速玩转swagger

Spring Boot 框架是目前非常流行的微服务框架,我们很多情况下使用它来提供 Rest API。而对于 Rest API 来说很重要的一部分内容就是文档,Swagger 为我们提供...
原创
20阅读
0评论
0点赞
发布博客于 3 月前

使用 Spring Boot AOP 实现 Web 日志处理和分布式锁

AOP 的全称为 Aspect Oriented Programming,译为面向切面编程。实际上 AOP 就是通过预编译和运行期动态代理实现程序功能的统一维护的一种技术。在不同的技术栈...
原创
19阅读
0评论
0点赞
发布博客于 3 月前

代理设计模式

在有些情况下,一个客户不能或者不想直接访问另一个对象,这时需要找一个中介帮忙完成某项任务,这个中介就是代理对象。例如,购买火车票不一定要去火车站买,可以通过 12306 网站或者去火车票...
原创
21阅读
0评论
0点赞
发布博客于 4 月前

redis 基础-数据结构-字典

字典定义:字典(dictionary), 又名映射(map)或关联数组(associative array), 是一种抽象数据结构, 由一集键值对(key-value pairs)组成,...
原创
14阅读
0评论
0点赞
发布博客于 7 月前

redis 基础-数据结构-简单动态字符串

简单动态字符串定义:每个sds.h/sdshdr结构表示一个SDS值SDS示例:SDS和C字符一样保留空字符结尾,但是不会计算在len属性里,自动分配1字节空间和末尾添加空字符都是sds...
原创
20阅读
0评论
0点赞
发布博客于 7 月前

redis 基础-数据结构-跳跃表

跳跃表定义:跳跃表(skiplist)是一种有序数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。跳跃表支持平均O(logN)、最坏O(N)复杂度的节点查找,还可以通过顺序性操作来批量处理节点。跳跃表使用场景:Redis使用跳跃表作为有序集合键的底层实现之一,如果一个有序集合包含的元素数量比较多,又或者有序集合中元素的成员(member)是比较长的字符串时,Redis就会使用跳跃表来作为有序集合键的底层实现,和链表、字典等数据结构被广泛地应用在Redis内部不同,
原创
34阅读
0评论
0点赞
发布博客于 7 月前

Spring5-Reactor函数式编程

前言反应式编程是一种可以替代命令式编程的编程范式。这种可替代性存在的原因在于反应式编程解决了命令式编程中的一些限制。理解这些限制,有助于你更好地理解反应式编程模型的优点反应式流规范•对比...
原创
212阅读
0评论
0点赞
发布博客于 7 月前

深入了解kafka系列-主题

前言主题和分区是Kafka 的两个核心概念,前面系列中讲述的生产者和消费者的设计理念所针对的都是主题和分区层面的操作。主题作为消息的归类,可以再细分为一个或多个分区,分区也可以看作对消息...
原创
53阅读
0评论
0点赞
发布博客于 8 月前

深入了解kafka系列-消费者

前言与生产者对应的是消费者,应用程序可以通过KafkaConsumer来订阅主题,并从订阅的主题中拉取消息。不过在使用KafkaConsumer消费消息之前需要先了解消费者和消费组的概念...
原创
83阅读
0评论
0点赞
发布博客于 8 月前

深入了解kafka系列-生产者

基本概念整个Kafka体系结构中引入了以下3个术语。(1)Producer:生产者,也就是发送消息的一方。生产者负责创建消息,然后将其投递到Kafka中。(2)Consumer:消费者,也就是接收消息的一方。消费者连接到Kafka上并接收消息,进而进行相应的业务逻辑处理。(3)Broker:服务代理节点。对于Kafka而言,Broker可以简单地看作一个独立的Kafka服务节点或Kafka服务实例。大多数情况下也可以将Broker看作一台Kafka服务器,前提是这台服务器上只部署了一个Kafka
原创
70阅读
0评论
0点赞
发布博客于 8 月前

Java HashMap工作原理及实现

title: Java HashMap工作原理及实现tags:Java1. 概述从本文你可以学习到:什么时候会使用HashMap?他有什么特点?你知道HashMap的工作原理吗?你知道get和put的原理吗?equals()和hashCode()的都有什么作用?你知道hash的实现吗?为什么要这样实现?如果HashMap的大小超过了负载因子(load factor)定义的容量,怎么办?当我们执行下面的操作时:HashMap<String, Integer> m
原创
542阅读
0评论
0点赞
发布博客于 9 月前

Java 内存模型(JMM) 以及volatile关键字实现原理

网上JMM 一大堆 但是我觉得 大部分不结合实际代码去一点点了解,看了也只是一知半解,最后都会忘记!要学习内存模型先来简单看下现代计算机多级并发缓存架构多级并发缓存架构:其中CPU 缓存...
原创
44阅读
0评论
0点赞
发布博客于 9 月前

JVM系列之垃圾收集器

如果说上一节说的垃圾收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现简单的介绍Java的垃圾收集器以及选择它们对应的命令行开关。常用堆相关开关Java有很多的不同的命令行...
原创
25阅读
0评论
0点赞
发布博客于 9 月前

JVM系列之GC

点击上方“蓝字”,关注我们.GC 垃圾回收原理1 如何判断对象是垃圾 ?有两种经典的判断方法,借用网友的图(文中最后有给出链接):引用计数法,思路很简单,但是如果出现循环引用,即:A 引...
原创
19阅读
0评论
0点赞
发布博客于 9 月前

JVM系列之内存结构

点击上方“蓝字”,关注我们.JVM的内存结构大概分为:堆(Heap):线程共享。所有的对象实例以及数组都要在堆上分配。回收器主要管理的对象。堆内存是JVM中最大的一块由年轻代和老年代组成...
原创
31阅读
0评论
0点赞
发布博客于 9 月前

JVM系列之ClassLoader

前言:了解JVM-类加载之前我们先了解下为什么要这样? 学java 的都知道Java 是跨平台语言,一套代码到处运行,那为什么他可以跨平台呢?简单的说下:之所以可以跨平台运行 是依靠不同平台的JVM,我们编写代码, javac 编译成.class 文件,然后通过类加载器到JVM内存之中,紧接着 Java解释器将字节码文件翻译成机器代码,执行并显示结果,知道了前因后果 ,那我们来了解下 这个类加载器是怎么玩的呢?称述一些概念方便理解字节码文件是一种和任何具体机器环境及操作系统环境无关的中间
原创
95阅读
0评论
0点赞
发布博客于 10 月前

为什么不要用stop方法停止线程?

线程启动完毕后,在运行时可能需要终止,Java提供的终止方法只有一个stop,但是我不建议使用这个方法,因为它有以下三个问题:(1)stop方法是过时的从Java编码规则来说,已经过时的方法不建议采用。(2)stop方法会导致代码逻辑不完整stop方法是一种“恶意”的中断,一旦执行stop方法,即终止当前正在运行的线程,不管线程逻辑是否完整,这是非常危险的。看如下的代码:这段代码的逻...
原创
276阅读
0评论
0点赞
发布博客于 1 年前

9个处理Java异常的最佳实践

Java中的异常处理不是一个容易的话题。初学者很难理解,即使是经验丰富的开发人员也需要花费数小时来讨论如何抛出或处理哪些异常。这就是为什么大多数开发团队都有自己的规则来使用它们的原因。而...
原创
24阅读
0评论
0点赞
发布博客于 1 年前

Java版本和功能指南

您可以使用本指南查找和安装最新的Java,了解Java发行版(AdoptOpenJdk,OpenJDK,OracleJDK等)之间的差异,以及获得Java语言功能的概述,包括Java版本8-13。Java 8,Java 11,Java 13 —有什么区别?您可能还会喜欢:超越Java 8背景资料首先,让我们看一下人们在尝试为其项目选择正确的Java版本时遇到的一些常见的实际问...
原创
45阅读
0评论
0点赞
发布博客于 1 年前

我这样减少了26.5M Java内存!

首先,请注意,JDK集合的内部并不是魔术。它们是用Java编写的。他们的源代码随JDK一起提供,因此您可以在IDE中打开它。也可以在网上轻松找到。而且,事实证明,在优化内存占用方面,大多数集合都不是很完善。例如,考虑以下最简单和最受欢迎的集合类之一:java.util.ArrayList。内部每个ArrayList维护一个Object[] elementData数组。这就是列表元素的存储位置。...
原创
51阅读
0评论
0点赞
发布博客于 1 年前

#用中国速度与疫情赛跑#【火神山建设不完全手册】

用中国速度与疫情赛跑#【火神山建设不完全手册】看得人头皮发麻,其中的艰辛和力量远超我们想象。首先,看到人头皮发麻,其中的困难和力量远远超出了我们的想象。首先,您需要紧急命令:由武汉市建设...
原创
148阅读
0评论
0点赞
发布博客于 1 年前

搭建 ELK 实时日志平台并在 Spring Boot 和 Nginx 项目中使用

在排查线上异常的过程中,查询日志总是必不可缺的一部分。现今大多采用的微服务架构,日志被分散在不同的机器上,使得日志的查询变得异常困难。工欲善其事,必先利其器。如果此时有一个统一的实时日志分析平台,那可谓是雪中送碳,必定能够提高我们排查线上问题的效率。本文带您了解一下开源的实时日志分析平台 ELK 的搭建及使用。ELK 简介ELK 是一个开源的实时日志分析平台,它主要由 Elasticsea...
原创
88阅读
0评论
0点赞
发布博客于 1 年前

成为专业程序员路上用到的各种优秀资料、神器及框架

技术站点在线学习:Coursera、edX、Udacity、MIT公开课、MOOC学院Hacker News:非常棒的针对编程的链接聚合网站Techmeme:美国知名科技新闻和博客聚集网...
原创
30阅读
0评论
0点赞
发布博客于 1 年前

深入理解 Java 函数式编程系列 第 5 部分 深入解析 Monad

在本系列的前四篇文章中对函数式编程进行了多方位的介绍。本文将着重介绍函数式编程中一个重要而又复杂的概念:Monad。一直以来,Monad 都是函数式编程中最具有神秘色彩的概念。正如 JS...
原创
48阅读
0评论
0点赞
发布博客于 1 年前

深入理解 Java 函数式编程系列 第 4部分 使用 Vavr 进行函数式编程

在本系列的上一篇文章中对 Java 平台提供的 Lambda 表达式和流做了介绍。受限于 Java 标准库的通用性要求和二进制文件大小,Java 标准库对函数式编程的 API 支持相对比...
原创
79阅读
0评论
0点赞
发布博客于 1 年前

深入理解 Java 函数式编程系列 第 3 部分 Java 8 的 Lambda 表达式和流处理

在本系列的前两篇文章中,已经对函数式编程的思想和函数式编程的重要概念做了介绍。本文将介绍 Java 平台本身对函数式编程的支持,着重介绍 Lambda表达式和流(Stream)。Lamb...
原创
16阅读
0评论
0点赞
发布博客于 1 年前

深入理解 Java 函数式编程系列 第 1 部分 函数式编程思想概论

前言在讨论函数式编程(Functional Programming)的具体内容之前,我们首先看一下函数式编程的含义。在维基百科上,函数式编程的定义如下:"函数式编程是一种编程范式...
原创
25阅读
0评论
0点赞
发布博客于 1 年前

Java 12 新特性概述

Java 12 已如期于 3 月 19 日正式发布,此次更新是 Java 11 这一长期支持版本发布之后的一次常规更新,截至目前,Java 半年为发布周期,并且不会跳票承诺的发布模式,已经成功运行一年多了。通过这样的方式,Java 开发团队能够将一些重要特性尽早的合并到 Java Release 版本中,以便快速得到开发者的反馈,避免出现类似 Java 9 发布时的两次延期的情况。Java 1...
原创
36阅读
0评论
0点赞
发布博客于 1 年前