02 2021 档案
摘要:前言 Arthas 是 Alibaba 开源的 Java 诊断工具,具有实时查看系统的运行状况;查看函数调用参数、返回值和异常;在线热更新代码;秒解决类冲突问题;定位类加载路径;生成热点;通过网页诊断线上应用。如今在各大厂都有广泛应用,也延伸出很多产品。 这里将介绍如何将 Arthas 集成进 Sp
阅读全文
摘要:1. 背景 谈及linux内存,很多时候,我们会关注free,top等基础命令。当系统遇到异常情况时,内存问题的根因追溯,现场诊断时,缺乏深层次的debug能力。本篇幅不做深层讨论,能把当前系统的问题描述清楚,是每个SRE应该具备的最基础能力。 2. free 2.1 free命令原理 free是通
阅读全文
摘要:执行效率的优化一直是 Flink 追寻的目标。在大多数作业,特别是批作业中,数据通过网络在 task 之间传递(称为数据 shuffle)的代价较大。正常情况下一条数据经过网络需要经过序列化、磁盘读写、socket 读写与反序列化等艰难险阻,才能从上游 task 传输到下游;而相同数据在内存中的传输
阅读全文
摘要:一、 从一个同步的Http调用说起 一个很简单的业务逻辑,其他后端服务提供了一个接口,我们需要通过接口调用,获取到响应的数据。 逆地理接口:通过经纬度获取这个经纬度所在的省市区县以及响应的code: curl-i"http://xxx?latitude=31.08966221524924&chann
阅读全文
摘要:跨端 Write once, run everywhere。 我们都听说过这句经典的宣传用语,后来我们都知道,没有什么东西是可以真正 run everywhere 的,充其量也只能做到 debug everywhere。 而当我们谈论一次编写多端运行时,显然不可能真的指跨一切所有端,大多数情况下你不
阅读全文
摘要:一、 从一个同步的Http调用说起 一个很简单的业务逻辑,其他后端服务提供了一个接口,我们需要通过接口调用,获取到响应的数据。 逆地理接口:通过经纬度获取这个经纬度所在的省市区县以及响应的code: curl-i"http://xxx?latitude=31.08966221524924&chann
阅读全文
摘要:有时候需要存储一组数据,之前使用数组,但是数组具有固定的容量,但是在写程序时并不知道需要多少对象,在java.util包下提供了一套完整的集合类,包含List、Set、Queue、Map。java集合类都可以自动地调整自己的大小。 在创建集合时,经常使用泛型,可以在编译期防止将错误的类型放入到集合中
阅读全文
摘要:场景一 pm要做双十一促销活动,技术老大杀过来,问了两个问题: 机器能抗住么? 如果扛不住,需要加多少台机器? 场景二 新系统上线,技术老大杀过来,又问: 数据库需要分库么? 如果需要分库,需要分几个库? 技术上来说,这些都是系统容量预估的问题,容量设计是架构师必备的技能。 常见的容量评估包括数据量
阅读全文
摘要:七、模板引擎 1.简介 目前Java Web开发推荐使用模板引擎,不建议使用jsp页面 jsp的缺点:本质时Servlet,需要后台进行编译,效率较低 模板引擎:不需要编译,速度快 常用的模板引擎:Freemarker、Thymeleaf等 SpringBoot推荐Thymeleaf,且默认不支持j
阅读全文
摘要:一、SpringBoot简介 1.什么是SpringBoot 产生背景:Spring开发比较繁琐,配置文件很多,部署流程复杂,整合第三方框架难度大。这会降低开发效率 SpringBoot是一个简化Spring应用创建和开发的框架 整合了整个Spring技术栈,是JavaEE开发一站式解决方案
阅读全文
摘要:本文基于当前 Spring Security 5.3.4 来分析,为什么要强调最新版呢?因为在在 5.0.11 版中,角色继承配置和现在不一样。旧版的方案我们现在不讨论了,直接来看当前最新版是怎么处理的。 1.角色继承案例 我们先来一个简单的权限案例。 创建一个 Spring Boot 项目,添加
阅读全文
摘要:开发工具JDK的下载 开发工具JDK的安装 配置环境变量 1.1开发工具JDK的下载 JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境,JAVA工具和JAVA基础的类库 下载地址: http: //
阅读全文
摘要:简介 IBM® 收购 Red Hat® 后,现在拥有更多的 Java 应用程序运行时,包括: 传统的 IBM WebSphere® Application Server JBoss® EAP / WildFly WebSphere Liberty / Open Liberty Quarkus 这样一
阅读全文
摘要:1.Duplicated Code 代码重复几乎是最常见的异味了。他也是Refactoring的主要目标之一。代码重复往往来自于copy-and-paste的编程风格。与他相对应OAOO是一个好系统的重要标志。 2.Long method 它是传统结构化的“遗毒”。一个方法应当具有自我独立的意图,不
阅读全文
摘要:一、前言 在进行 Java 开发时,通常我们会选择 Slf4j 作为日志门面,但日志实现却不尽相同。如果系统运行中同时存在多个日志实现,就会出现类似下图的 Warning。 二、问题原因 我们知道 SpringBoot 默认使用的日志实现是 Logback,因此我们尝试在项目中引入 Log4j 的依
阅读全文
摘要:一图胜千言,如果图解没有阐明问题,那么你可以借助它的标题来一窥究竟。 1、字符串不变性 下面这张图展示了这段代码做了什么 String s = "abcd"; s = s.concat("ef"); 2、equals()方法、hashCode()方法的区别 HashCode被设计用来提高性能。equ
阅读全文
摘要:如果说,物理上的存储结构,表达的是数据存储的具体位置,那么我们现在要讨论的逻辑上的数据存储结构,表达的就是数据与数据之间的关系。 逻辑结构,顾名思义,实际上,我们在对数据进行处理的过程中,数据与数据之间组成了各种各样的关系,那么我们 使用逻辑结构的目的,就是要将这些数据有序化,从混乱难以处理的情况,
阅读全文
摘要:数组可以是int, char等原始类型,也可以是对象的引用。对于原始类型,实际值会存储在连续的位置;对于对象类型,存储在堆段中。 一维数组 一维数组的声明 type varName[]; 或者 type[] varName; 数组的声明有两部分:类型(type)和名字(varName)。类型声明数组
阅读全文
摘要:Java反射机制可以动态地获取类的结构,动态地调用对象的方法,是java语言一个动态化的机制。java动态代理可以在不改变被调用对象源码的前提下,在被调用方法前后增加自己的操作,极大地降低了模块之间的耦合性。这些都是java的基础知识,要想成为一名合格的程序猿,必须掌握! Java反射机制 JAVA
阅读全文
摘要:这次介绍的主要内容是和J2SE相关的部分,另外,会在以后再介绍些J2EE相关的、和Java中各个框架相关的内容。 经过这么多年的Java开发,以及结合平时面试Java开发者的一些经验,我觉得对于J2SE方面主要就是要掌握以下的一些内容。 1. JVM相关(包括了各个版本的特性) 对于刚刚接触Java
阅读全文
摘要:前言 Java注解是在JDK1.5被引入的技术,配合反射可以在运行期间处理注解,配合apt tool可以在编译器处理注解,在JDK1.6之后,apt tool被整合到了javac里面。 什么是注解 注解其实就是一种标记,常常用于代替冗余复杂的配置(XML、properties)又或者是编译器进行一些
阅读全文