- 博客(100)
- 收藏
- 关注
原创 JVM 概述、内存结构、溢出、调优(基础结构+StringTable+Unsafe+ByteBuffer)
什么是 JVM ?定义Java Virtual Machine - java 程序的运行环境(java 二进制字节码的运行环境)好处 一次编写,到处运行 自动内存管理,垃圾回收功能 数组下标越界检查 多态 jvm jre jdk 常见的 JVM整体结构内存结构程序计数器定义Program Counter Register 程序计数器(寄存器) 作用 是记住下一条 jvm 指令的执行地址,也就是线程当前要执行的
2021-11-19 20:51:55 1319 2
原创 这篇 MySQL 索引和 B+Tree 讲的太通俗易懂
正确的创建合适的索引,是提升数据库查询性能的基础。在正式讲解之前,对后面举例中使用的表结构先简单看一下:create table user( id bigint not null comment 'id' primary key, name varchar(200) null comment 'name', age bigint null comment 'age', gender int null comment '
2021-11-19 17:04:19 384
原创 JVM垃圾回收算法总结
一.GC算法1.对象存活判断算法引用计数算法和可达性分析算法2. 判断对象是否存活①.第一次标记:可达性分析算法中不可达的对象,被标记和筛选,筛选条件是此对象有必要执行finalize()方法,当未重写finalize()或方法已被执行过,则没必要执行②.第二次标记:如果有必要执行finalize,此对象会被放在F-Queue中,由Finalizer线程执行。GC将在queue中第二次标记只要重新与引用链上的任一对象建立关联即可,例如把自己(this)赋值给某个类变量或者对成员变量,建立
2021-11-19 16:56:41 427
原创 从更高到更好 2021阿里双11背后的技术亮点
简介: 今年,是阿里巴巴第13个双11。今年双11,阿里巴巴大促峰值的计算成本相比去年下降50%;截至11日,小蛮驴无人车在双11期间累计配送快递已超过100万件。更多的阿里自研技术投入到双11,在芯片、服务器等硬核技术攻坚的同时,技术也在推动全链路的降本增效。除了深耕自立自强的高科技,阿里还在践行“人人受益、责任担当、开放共享”的好科技,希望用技术给客户创造更好的价值,为社会创造更大的贡献。从更高到更好,今年双11,阿里巴巴的技术有什么不一样?作者 | Alibaba Tech来源 | 阿里技术公众
2021-11-19 16:54:21 685
原创 如何使用 Spring Boot Actuator 组件实现系统监控?
通过前面的学习,我们知道如何使用 Spring Boot 开发我们 Web 应用。这一讲我们将介绍 Spring Boot 中一个非常有特色的主题——系统监控。系统监控是 Spring Boot 中引入的一项全新功能,它能够有效的对应用程序运行状态进行管理。它为我们的应用提供了强大的监控能力。随着互联网发展,现在的应用程序越来越复杂了,线上常常需要借助一些监控工具去帮助我们快速的定位问题。Spring Boot Actuator 组件主要通过一系列 HTTP 端点提供的系统监控功能来实现系统监控。因
2021-11-19 16:44:01 1460 1
原创 Java内存模型之从JMM角度分析DCL
DCL,即Double Check Lock,中卫双重检查锁定。其实DCL很多人在单例模式中用过,LZ面试人的时候也要他们写过,但是有很多人都会写错。他们为什么会写错呢?其错误根源在哪里?有什么解决方案?下面就随LZ一起来分析问题分析我们先看单例模式里面的懒汉式:public class Singleton { private static Singleton singleton; private Singleton(){} public static Singleton
2021-11-19 16:37:54 148
原创 SpringBoot基础之花式使用MybatisPlus
前言Mybatis像汽车,但是加持了MybatisPlus绝对是绝对是加装了氮气的超跑.在没有使用MybatisPlus之前,在查询单表的时候要不默默的写sql代码,要不用代码生成器生成基础的代码,一旦参数有多种匹配方式,那么要不copy一份重写,要不加一个if条件,还是比较难受的.但是一旦用了MybatisPlus 那仿佛是另一个世界.前置基础信息SQLCREATE TABLE `student` ( `id` bigint(20) NOT NULL AUTO_INCREMEN
2021-11-19 16:36:17 5764
原创 Java之父总结出的《MySQL调优指南》程序员的必学
MySQL数据库优化通常有如下四个维度:硬件、系统配置、数据库表结构、SQL及索引。从优化成本来看:硬件>系统配置>数据库表结构>SQL及索引。 从优化效果来看:硬件<系统配置<数据库表结构<SQL及索引。要想对MySQL进行优化,我们需要知道MySQL各组件之间如何协同工作以及MySQL是如何优化和执行查询的。MySQL逻辑架构MySQL逻辑架构整体分为三层,最上层为客户端层,并非MySQL所独有,诸如:连接处理、授权认证、安全等功能均在这一层处
2021-11-19 16:32:03 5163
原创 基于SpringBoot的在线文件预览神器,可支持常用文件的在线预览
kkFileView简介kkFileView可以用来搭建文件在线预览服务,在Github上已有5.7k+Star。该项目使用流行的SpringBoot搭建,易上手和部署,基本支持主流办公文档的在线预览,如docx、xlsx、pptx、pdf、txt、zip、图片、视频、音频等等。项目特性可以参考下图。安装kkFileView支持在Windows和Linux下安装,下面我们介绍下它的安装,基本就是开箱即用!Windows首先下载最新版的安装包,下载地址:gitee.com/keki
2021-11-18 21:13:07 279
原创 linux命令入门之必备宝典
1.mkdir make diretory 创建一个新的目录(空目录)mkdir /data <--在根目录下面创建一个data空目录-p <--实现创建多级目录2.ls list 列表文件或目录信息ls /data <-- 查看data目录下面的数据信息ls -l /data <-- -l 参数表示查看文件目录详细信息ls -d /data <-
2021-11-17 15:27:07 1521 1
原创 为什么你的 SpringBoot 自动配置失效了
问题描述下面是一个简单复现的代码片段,在你没有阅读完本文时,如果能做出正确的判断,那恭喜你可以节省阅读本文的时间了。1、自动配置类:AutoTestConfiguration@Configuration@EnableConfigurationProperties(TestProperties.class)@ConditionalOnProperty(prefix = "test", name = "enable")public class AutoTestConfiguration {
2021-11-17 14:47:19 6972
原创 MyBatis 中为什么不建议使用 where 1=1?
最近接手了一个老项目,“愉悦的心情”自然无以言表,做开发的朋友都懂,这里就不多说了,都是泪... 接手老项目,自然是要先熟悉一下业务代码,然而在翻阅 mapper 文件时,发现了一个比较诡异的事情。这里给出简化后的业务代码:
2021-11-17 14:41:39 300
原创 面试官:高并发场景下,你们是怎么保证数据的一致性的?
1. 场景分析面试官:你们的服务的QPS是多少?我:我们的服务高峰期访问量还挺大的,大约是3万吧。面试官:这么大的访问量,你们的服务器能撑住吗?有加缓存吗?我:有的,我们使用了Redis做缓存,接口优先查询缓存,缓存不存在,才访问数据库。这样可以减少数据库访问压力,加快查询效率。面试官:一份数据存储在两个地方,更新数据的时候,你们是怎么保证数据的一致性的?看到了吧,好的面试官一般不直接问你数据一致性的解决方案,而是循循善诱,结合具体的使用场景,再问你解决方法。如果你没做过这方面,没有
2021-11-17 14:34:52 1909
原创 阿里p8所写的Mysql基础篇:必知必会
示例表mysql> DESC one_piece;+---------+-------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+---------+-------------+------+-----+---------+-------+| id | char(10) | NO | | NULL |
2021-11-15 21:23:11 719
原创 letcode刷题n7-q167:两数之和 II - 输入有序数组
题目描述给定一个已按照 非递减顺序排列 的整数数组numbers ,请你从数组中找出两个数满足相加之和等于目标数target 。函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标 从 1 开始计数 ,所以答案数组应当满足 1 <= answer[0] < answer[1] <= numbers.length 。你可以假设每个输入 只对应唯一的答案 ,而且你 不可以 重复使用相同的元素。示例 1:输入:numbers = [2,7,1
2021-11-15 21:12:39 998
原创 MySQL随机函数的运用场景示例总结
1、随机数字-- 随机 0-1select floor(rand() * 2);-- 随机1-100 select floor(rand()*100); -- 随机八位数 select floor(rand()*90000000 + 10000000); -- 随机2位小数select convert(floor(rand() * 70 + 30) / 100,decimal(10,2)); -- 随机N位字符串select substr(md5(rand()),1,8);se
2021-11-12 21:34:01 3005
原创 沐子带你深入理解一致性Hash算法
近年来B2C、O2O等商业概念的提出和移动端的发展,使得分布式系统流行了起来。分布式系统相对于单系统,解决了流量大、系统高可用和高容错等问题。功能强大也意味着实现起来需要更多技术的支持。例如系统访问层的负载均衡,缓存层的多实例主从复制备份,数据层的分库分表等。我们以负载均衡为例,常见的负载均衡方法有很多,但是它们的优缺点也都很明显:随机访问策略。系统随机访问,缺点:可能造成服务器负载压力不均衡,俗话讲就是撑的撑死,饿的饿死。轮询策略。请求均匀分配,如果服务器有性能差异,则无法实现性能好的服务器能够多
2021-11-12 21:31:35 132
原创 Java项目集成工作流引擎解决方案及实例展示(前后分离版)
前言activiti工作流引擎,企业erp、oa、hr、crm、进销存等审批系统轻松落地,请假审批demo从流程绘制到审批结束实例。一、项目形式springboot+vue+activiti集成了activiti在线编辑器,快速开发平台,可插拔工作流服务。 用来做私活神器。二、项目介绍本项目拥有用户管理,部门管理,代码生成,系统监管,报表,大屏展示,业务审批等功能。功能太强大,只能粗矿的介绍,所见即所得,体验一下吧。三、工作流1.流程模型绘制进入流程模型菜单,创建流程模型,这
2021-11-12 21:23:34 766 1
原创 由Java之父讲解的SpringBoot中的profile,太详细了吧
写在前面SpringBoot开发是目前Java后端的主流框架了,但是当我们去真正在生产环境上使用时,难免会存在和开发、测试环境不同的一些配置文件,或者是配置变量值等等的情况。当遇到这种情况,我们又要如何更好的解决这个问题呢。所以我们要开始补充新的知识了。profileSpringBoot中的配置文件,一般都是使用application.yml或者是application.properties文件来实现配置文件的设置。那么如何实现不同环境下的配置文件不同的情况呢,这个springboot给
2021-11-12 21:18:26 1347
原创 冲刺大厂每日算法&面试题,动态规划第4天
导读肥友们为了更好的去帮助新同学适应算法和面试题,最近我们开始进行专项突击一步一步来。我们先来搞一下让大家最头疼的一类算法题,动态规划我们将进行为时4天的养成计划。还在等什么快来一起肥学进行动态规划4天挑战吧!!21天动态规划入门给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 ;整数 fee 代表了交易股票的手续费用。你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。返回获得利润的最大
2021-11-09 14:50:07 154
原创 冲刺大厂每日算法&面试题,动态规划第3天
导读肥友们为了更好的去帮助新同学适应算法和面试题,最近我们开始进行专项突击一步一步来。我们先来搞一下让大家最头疼的一类算法题,动态规划我们将进行为时3天的养成计划。还在等什么快来一起肥学进行动态规划3天挑战吧!!21天动态规划入门给你一个字符串 s 和一个字符串列表 wordDict 作为字典,判定 s 是否可以由空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。示例 1:输入: s = "leetcode", wordDict = ["leet
2021-11-08 21:45:03 102
原创 冲刺大厂每日算法&面试题,动态规划第2天
导读肥友们为了更好的去帮助新同学适应算法和面试题,最近我们开始进行专项突击一步一步来。我们先来搞一下让大家最头疼的一类算法题,动态规划我们将进行为时2天的养成计划。还在等什么快来一起肥学进行动态规划2天挑战吧!!21天动态规划入门给你一个整数 n ,请你找出并返回第 n 个 丑数 。丑数 就是只包含质因数 2、3 和/或 5 的正整数。示例 1:输入:n = 10输出:12解释:[1, 2, 3, 4, 5, 6, 8, 9, 10, 12] 是由前 10 个丑数组成的
2021-11-08 21:41:45 203
原创 冲刺大厂每日算法&面试题,动态规划第1天
导读肥友们为了更好的去帮助新同学适应算法和面试题,最近我们开始进行专项突击一步一步来。我们先来搞一下让大家最头疼的一类算法题,动态规划我们将进行为时21天的养成计划。还在等什么快来一起肥学进行动态规划21天挑战吧!!21天动态规划入门如果一个数列 至少有三个元素 ,并且任意两个相邻元素之差相同,则称该数列为等差数列。例如,[1,3,5,7,9]、[7,7,7,7] 和 [3,-1,-5,-9] 都是等差数列。 给你一个整数数组 nums ,返回数组 nums 中所有为等差数组的 子数组
2021-11-08 21:38:38 98
原创 我这样写代码,比直接使用 MyBatis 效率提高了 100 倍
对一个 Java 后端程序员来说,mybatis、hibernate、data-jdbc 等都是我们常用的 ORM 框架。它们有时候很好用,比如简单的 CRUD,事务的支持都非常棒。但有时候用起来也非常繁琐,比如接下来我们要聊到的一个常见的开发需求,最后本文会给出一个比直接使用这些 ORM 开发效率至少会提高 100 倍的方法(绝无夸张)。首先数据库有两张表用户表(user):(简单起见,假设只有 4 个字段)字段名 类型 含义 id bitint 用户 ID
2021-11-08 20:22:34 1064 8
原创 网络协议基础学习(一): 环境搭建
一、安装JAVA JDK1、下载安装打开链接 www.oracle.com/java/techno… 找到要下载的JAVA版本, 我使用的是MAC, 所以下载了MAC的JAVA 17下载后安装即可2、配置环境安装Java后, 位置如下路径如下/Library/Java/JavaVirtualMachines/jdk-17.0.1.jdk复制代码打开终端, 打开~/目录下的.zshrcvim .zshrc复制代码然后配置Java路径export JAVA_H
2021-11-08 20:02:48 276
原创 《扫雷游戏》零基础项目,230 行源码注释示例
这篇文章主要为大家详细介绍了C语言实现——《扫雷游戏项目》,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下!游戏介绍:游戏区包括雷区、地雷计数器(位于左上角,记录剩余地雷数)和计时器(位于右上角,记录游戏时间),确定大小的矩形雷区中随机布置一定数量的地雷(初级为9*9个方块10个雷,中级为16*16个方块40个雷,高级为16*30个方块99个雷,自定义级别可以自己设定雷区大小和雷数,但是雷区大小不能超过24*30),玩家需要尽快找出雷区中的所
2021-11-08 19:47:22 174
原创 MySQL——数据库基本操作(教程)
数据库的基本操作查看Mysql中存在的数据库SHOW DATABASES;这里显示的三个数据库是Mysql安装完成后自带的数据库。创建一个数据库CREATE DATABASE test_01;查看已经存在的数据库的创建语句SHOW CREATE DATABASE test_01;删除数据库DROP DATABASE test_01;数据库表的基本操作数据表属于数据库,所以在创建数据表之前我们需要使用USE 数据库名这样的语句选择一个
2021-11-08 15:01:26 1048
原创 Java“之父“带你一文带你了解SpringMVC基本知识
SpringMVC简介MVC模式MVC是软件工程中的一种软件架构模式,它是一种分离业务逻辑与显示界面的开发思想。 M(model)模型:处理业务逻辑,封装实体 V(view) 视图:展示内容 C(controller)控制器:负责调度分发(1.接收请求、2.调用模型、3.转发到视图) SpringMVC概述SpringMVC 是一种基于 Java 的实现 MVC 设计模式的轻量级 Web 框架,属于SpringFrameWork 的后续产品,已经融合在Sprin
2021-11-08 14:51:29 164
原创 MySQL基本概念和正确发音(表、列、行、注解等讲解)
1、什么是数据库维基百科关于数据库的定义:In computing, a database is an organized collection of data stored and accessed electronically from a computer system. Where databases are more complex they are often developed using formal design and modeling techniques.翻译成中文的意思
2021-11-08 14:19:57 1266
原创 MySQL:互联网公司常用分库分表方案汇总
一、数据库瓶颈不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Service来看就是,可用数据库连接少甚至无连接可用。接下来就可以想象了吧(并发量、吞吐量、崩溃)。1、IO瓶颈第一种:磁盘读IO瓶颈,热点数据太多,数据库缓存放不下,每次查询时会产生大量的IO,降低查询速度 -> 分库和垂直分表。第二种:网络IO瓶颈,请求的数据太多,网络带宽不够 -> 分库。2、CPU瓶颈第一种:SQL问题,如SQL中包含
2021-11-05 19:44:51 112
原创 Java生态的异常,还是异常的生态
前言Java中针对异常做了很细的拆分。大多分为Exception和Error , 他们两个都继承自Throwable这个类。 Exception是程序执行过程中因为业务产生的错误。程序本身针对Exception能够进行处理的异常。 Error大多是程序本身无法解决的问题。比如内存不够了,栈深度太深了等等问题什么是异常异常是指在程序执行期间有些事无法通过实现代码层面上做出的判断。依赖于数据产生的可能情况分类 Throwable是异常的父类,所有的异常都是从这里衍生来的。其下有两个主力
2021-11-05 19:41:41 100
原创 最详细的Mysql 索引保姆式教程
索引类型索引可以提升查询速度, 会影响where查询和order排序普通索引create index indexName on tableName fieldNamealter table tablename add index indexName fieldNamecreate table tableName([...], index indexName(fieldName))唯一索引索引字段必须唯一,但允许有空值。create unique index indexNam
2021-11-05 19:32:21 173
原创 【Mybatis-源码解析】1.1 启动过程中,Mapper接口的扫描与代理注册
整体流程简易流程图整体流程创建扫描器实例扫描器根据配置注册过滤器扫描器进行扫描扫描后获取bean定义交给Spring进行加载spring通过MapperFactoryBean获取到Mapper的代理对象结束文本概括创建扫描器实例 如何使用的是@MapperScan,@MapperScan中配置了@Import(MapperScannerRegistrar.class)注解 会使MapperScannerRegistrar类在启动时自动加载 (待-见spring学习)
2021-11-05 19:26:08 527 1
原创 Java之父带你——深入理解JVM
JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。一、类加载
2021-11-05 17:27:49 182
原创 深入理解Java中的7种JVM垃圾收集器原理【一万字】
虽然常见的垃圾收集算法都是固定的,但是内存回收如何具体进行是由虚拟机所采用的GC收集器决定的,而通常虚拟机中往往不止有一种GC收集器,他们也采用的不同的垃圾收集算法,下面来看看HotSpot中的7种GC收集器。如果说垃圾收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。1 垃圾收集器概述HotSpot虚拟机的常见垃圾收集器如下:上图展示了7种作用于不同分代的收集器,如果两个收集器之间存在连线,就说明它们可以搭配使用。虚拟机所处的区域,则表示它是属于新生代收集器还是老年代收集器
2021-11-05 16:51:24 362
原创 Linux下必须的6条Touch命令技巧
前言linux中创建文件可以使用touch命令,但好奇的是为什么叫touch,貌似和文件没有一点关系,除了他还可以使用'>'、'>>',但是touch命令远不止创建文件这样简单,下面列举了6条常用的技巧。1.创建单个文件hxl@hxl-PC:/home/HouXinLin/touch$ touch test.txthxl@hxl-PC:/home/HouXinLin/touch$ lstest.txthxl@hxl-PC:/home/HouXinLin/touch$
2021-11-05 16:43:06 180
原创 SpringMVC : 基于 Jackson 的数据转换处理
一 . 前言这一篇只关注一个小点 , 学习一下 SpringMVC 是如何进行数据转换.二. 数据承接2.1 数据转换常见用法以 fasterxml 为例 , 它属于外包 , 但是 SpringMVC 对其进行了集成 , 那么该功能是如何进行处理的呢 ?2.2 数据转换的源码梳理JSON 的转换流程主要为 HttpMessageConverter 模块 , 先来看一下之前的流程图可以看到 , 会先通过 HandlerMethodArgumentResolverComposit
2021-11-05 16:23:18 1099
原创 2021最新Java集合 ———Java随笔记
前言刚跳槽换了工作,最近忙的焦头烂额,回想起来,还是老东家的日子才是天堂啊! 感觉自己停更蛮久了,but,2021的最后日更活动,咬着牙也要坚持下去啊!hahah 中间件的更新暂且停一停,最近特别想整理下先前面试的过程【痛苦又真实】。 接下来我会更新一些java基础的内容,有兴趣的可以看看,对我本人来说,这是回顾,这是记录。对各位看官来说,也是一个总结吧,希望对各位有帮助哦~ 当然,也有水文的因素在里面,我怂我承认~一、Java集合集合类存放于 Java.util 包中,主要有 3 种:s
2021-11-04 20:57:36 120
原创 【摸鱼高手】搭个自己的FTP服务器玩玩
前言 大家好,我是小诚,在开始学习之前,先给大家推荐下最近筹划的【技术圈子】,在没有更文的20多天里,一直在梳理之前的文章知识和学习资源,现在已经初步梳理完成,圈子中所有资源都免费分享,资源包括但不限于面试资源、简历模板、年终汇报PPT、CSDN VIP下载资源等等,需要得请点击主页查看,期待您的加入。 如果文章对你有帮助,可以帮忙一键三连和专栏订阅哦! 本篇文章重点介绍:Window环境搭建FTP服务器,JAVA程序实现FTP服务器文件上传、下载功能。 ????️ 二、完
2021-11-04 16:35:56 259
原创 《从0学MySQL》之最详细MySQL安装教程(Linux)
前言大家好,我是小呆,《从0到1-全面深刻理解MySQL系列》第二篇就从最基本的安装MySQL-Linux环境开始,感兴趣的小伙伴可以关注我,系列文章会持续更新,一起加油,一起进步! Windows安装教程:《从0到1-全面深刻理解MySQL系列》- 最详细的MySQL安装流程(Window环境)1、删除旧版本 查看服务器是否有自带的MySQL,如果有可以直接使用,如果自带的版本比较低,可以删除然后安装自己想要的版本(在安装新版本MySQL之前,需要卸载服务器自带的MySQL包和MySQL
2021-11-04 16:08:51 213
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人