随笔分类 -  JAVA

java 基本功
摘要:JDK中CompletableFuture类 原创2019-07-02 21:15·技术联盟总坛 一、前言 CompletableFuture是一个可以通过显示的设置结果和状态以便让任务结束的Future,并且可以作为一个CompletionStage(计算阶段)当它的计算完成时候触发一个函数或者行 阅读全文 »
posted @ 2021-08-04 09:37 菜菜聊架构 阅读(321) 评论(0) 推荐(0) 编辑
摘要:提到 JAVA 加锁,我们通常会想到 synchronized 关键字或者是 Java Concurrent Util(后面简称JCU)包下面的 Lock,今天就来扒一扒 Lock 是如何实现的,比如我们可以先提出一些问题:当我们通实例化一个 ReentrantLock 并且调用它的 lock 或 阅读全文 »
posted @ 2021-07-30 15:53 菜菜聊架构 阅读(100) 评论(0) 推荐(0) 编辑
摘要:一步一步,带你了解SpringBean的生命周期 2019-11-29 06:00·追逐仰望星空 推荐阅读: Spring全家桶笔记:Spring+Spring Boot+Spring Cloud+Spring MVC 一个SpringBoot问题就干趴下了?我却凭着这份PDF文档吊打面试官. Sp 阅读全文 »
posted @ 2021-07-30 15:52 菜菜聊架构 阅读(118) 评论(0) 推荐(0) 编辑
摘要:2021 github java领域超40k star项目,top10 拿走,不谢 原创2021-07-24 00:23·undergrowth CyC2018/CS-Notes 技术面试的必备知识,官方网站 http://www.cyc2018.xyz/,主要是涉及计算机基础知识(计算机网络,ht 阅读全文 »
posted @ 2021-07-28 09:36 菜菜聊架构 阅读(1304) 评论(0) 推荐(0) 编辑
摘要:1.简单工厂(非23种设计模式中的一种) 实现方式: BeanFactory。Spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得Bean对象,但是否是在传入参数后创建还是传入参数前创建这个要根据具体情况来定。 实质: 由一个工厂类根据传入的参数,动态决定应该创 阅读全文 »
posted @ 2021-07-28 09:32 菜菜聊架构 阅读(154) 评论(0) 推荐(0) 编辑
摘要:之前我们在学习Oauth2的时候,需要通过写代码来实现认证授权服务。最近发现一款可视化的安全框架Keycloak,只需几个命令就可以快速搭建认证授权服务,无需自行开发。原生支持SpringBoot,使用起来非常简单,推荐给大家! 简介 Keycloak是一款开源的认证授权平台,在Github上已有9 阅读全文 »
posted @ 2021-07-27 10:59 菜菜聊架构 阅读(582) 评论(1) 推荐(0) 编辑
摘要:目录 一、来自深夜的电话! 二、准备工作 三、使用 AOP 做个切面监控 1. 工程结构 2. 定义监控注解 3. 定义切面拦截 4. 初始化切面类 5. 运行测试 四、ASM 1. 先来个测试 2. 监控设计工程结构 3. 监控类入口 4. 字节码方法处理 5.字节码方法解析 6. 运行测试 五、 阅读全文 »
posted @ 2021-07-19 14:07 菜菜聊架构 阅读(478) 评论(1) 推荐(0) 编辑
摘要:在文章的开头,先说下 NPE 问题,NPE 问题就是,我们在开发中经常碰到的 NullPointerException. 假设我们有两个类,他们的 UML 类图如下图所示 在这种情况下,有如下代码 user.getAddress().getProvince(); 这种写法,在 user 为 null 阅读全文 »
posted @ 2021-06-23 16:22 菜菜聊架构 阅读(485) 评论(0) 推荐(0) 编辑
摘要:controller默认是单例的,不要使用非静态的成员变量,否则会发生数据逻辑混乱。正因为单例所以不是线程安全的。 我们下面来简单的验证下: package com.riemann.springbootdemo.controller;import org.springframework.contex 阅读全文 »
posted @ 2021-06-23 16:21 菜菜聊架构 阅读(100) 评论(0) 推荐(0) 编辑
摘要:在java中Map中的实现有HashMap、HashTable、LinkedHashMap等,其中最常用的有HashMap和HashTable,那么HashMap为什么很常用呢?因为HashMap的效率更高些,如果不是在多线程的环境下,不考虑线程安全问题,HashMap绝对是首选项,HashMap通 阅读全文 »
posted @ 2021-06-23 16:20 菜菜聊架构 阅读(687) 评论(0) 推荐(0) 编辑
摘要:说起本地线程变量,我相信大家首先会想到的是 JDK 默认提供的 ThreadLocal,用来存储在整个调用链中都需要访问的数据,并且是线程安全的。 由于本文的写作背景是笔者需要在公司落地全链路压测平台,一个基本并核心的功能需求是压测标记需要在整个调用链中进行传递,线程上下文环境成为解决这个问题最合适 阅读全文 »
posted @ 2021-06-23 16:01 菜菜聊架构 阅读(664) 评论(0) 推荐(0) 编辑
摘要:背景 最近测试服出现了CPU异常高的情况,占用率接近 100%,所以写篇文章简单地记录下碰到这种情况,该如何去定位导致CPU异常的代码,下文介绍了几种比较常用的工具。 下文均基于测试代码。 准备 我们先准备一个测试项目,此处使用的是一个简单的 springboot 的 web 项目,直接跑去官网初始 阅读全文 »
posted @ 2021-01-15 17:46 菜菜聊架构 阅读(1449) 评论(0) 推荐(1) 编辑
摘要:>>>> IntelliJ IDEA 与 IntelliJ Platform IntelliJ IDEA 简称 IDEA,是 Jetbrains 公司旗下的一款 JAVA 开发工具,支持 Java、Scala、Groovy 等语言的开发,同时具备支持目前主流的技术和框架,擅长于企业应用、移动应用和 阅读全文 »
posted @ 2020-12-15 17:26 菜菜聊架构 阅读(2161) 评论(0) 推荐(0) 编辑
摘要:一、使用线程 有三种使用线程的方法: 实现 Runnable 接口; 实现 Callable 接口; 继承 Thread 类。 实现 Runnable 和 Callable 接口的类只能当做一个可以在线程中运行的任务,不是真正意义上的线程,因此最后还需要通过 Thread 来调用。可以理解为任务是通 阅读全文 »
posted @ 2020-12-14 15:47 菜菜聊架构 阅读(179) 评论(0) 推荐(0) 编辑
摘要:一、运行时数据区域 程序计数器 记录正在执行的虚拟机字节码指令的地址(如果正在执行的是本地方法则为空)。 Java 虚拟机栈 每个 Java 方法在执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、常量池引用等信息。从方法调用直至执行完成的过程,对应着一个栈帧在 Java 虚拟机栈中入栈和出栈的 阅读全文 »
posted @ 2020-12-14 15:25 菜菜聊架构 阅读(278) 评论(0) 推荐(0) 编辑
摘要:一、背景 可能大家在使用Spring Cloud Gateway构建微服务网关的时候,过五关斩六将,Reactor没能难倒我们,链路追踪没能难倒我们,最后在上线之后发现许多奇妙的问题,这些奇妙的问题还无从下手,比如这个堆栈,深入使用过SCG的人一定不会陌生: reactor.netty.http.c 阅读全文 »
posted @ 2020-11-12 13:49 菜菜聊架构 阅读(12727) 评论(0) 推荐(4) 编辑
摘要:腾讯团队:https://github.com/tencent 微信团队:https://github.com/tencent-wechat 微信前端团队:https://github.com/WechatFE 阿里巴巴团队:https://github.com/alibaba/ 阿里妈妈团队:ht 阅读全文 »
posted @ 2020-05-12 16:03 菜菜聊架构 阅读(927) 评论(0) 推荐(0) 编辑
摘要:一、我们为什么要对JVM做优化 在本地开发环境中我们很少会遇到需要对JVM进行优化的需求,但是到了生产环境,我们可能会有下面的需求: 运行的应用“卡住了”,日志不输出,程序没有反应 服务器的CPU负载突然升高 在多线程应用下,如何分配线程的数量? 本次使用的JDK版本为1.8 二、JVM的运行参数 阅读全文 »
posted @ 2020-04-28 15:06 菜菜聊架构 阅读(206) 评论(0) 推荐(0) 编辑
摘要:一、什么是垃圾回收 程序的运行必然需要申请内存资源,无效的对象资源如果不及时处理就会一直占用内存资源,最终将导致内存溢出,所以对内存资源的管理是非常重要了。 1.1 C/C++语言的垃圾回收 在C/C++语言中,没有自动垃圾回收机制,是通过new关键字申请内存资源,通过delete 关键字释放内存资 阅读全文 »
posted @ 2020-04-28 14:58 菜菜聊架构 阅读(226) 评论(0) 推荐(0) 编辑
摘要:算法(Algorithm)是指用来操作数据、解决程序问题的一组方法。对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,但在过程中消耗的资源和时间却会有很大的区别。 那么我们应该如何去衡量不同算法之间的优劣呢? 主要还是从算法所占用的「时间」和「空间」两个维度去考量。 时间维度:是指执行当前 阅读全文 »
posted @ 2020-04-24 14:13 菜菜聊架构 阅读(348) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示