自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(79)
  • 问答 (1)
  • 收藏
  • 关注

原创 VMware 安装macos的方法

帮助

2022-08-20 08:58:42 613 1

原创 快排再了解

package com.taiji.xmt.modular.test;/** * @Author: Chasers * @Date: 2022/3/9 23:18 * @Description: */public class QuickSort { public static void quickSort(int[]a,int low,int high){// 不是每次排序都是从头尾开始排序的 int start = low; //左边的游标 int.

2022-03-10 00:36:06 153

原创 Having 的用法

Having 主要用于group by 分组之后 对聚合条件的选择下面的示例按产品 ID 对 SalesOrderDetail 进行了分组,并且只包含那些订单合计大于 $1,000,000 且其平均订单数量小于 3 的产品组。SELECT ProductID, AVG(OrderQty) AS AverageQuantity, SUM(LineTotal) AS TotalFROM Sales.SalesOrderDetailGROUP BY ProductIDHAVING SUM(

2022-02-17 10:41:16 298

原创 分布式事务

面试必问:分布式事务六种解决方案 - 知乎点赞再看,养成习惯,微信搜一搜【敖丙】关注这个喜欢写情怀的程序员。 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点、资料以及我的系列文章。 前言上一篇文章已经讲完分布式了,那…https://zhuanlan.zhihu.com/p/183753774...

2022-02-16 11:21:19 185

原创 jenkins+docker+springboot自动化部署

jenkins+docker实现自动编译、打包、构建镜像、容器部署_FinelyYang的专栏-CSDN博客_jenkins打包,发布,部署docker一、整个持续集成、自动部署流程开发push代码到gitlab,触发jenkins自动pull代码,通过maven编译、打包,然后通过执行shell脚本使docker构建镜像并push到私服(或者阿里云)仓库,此操作完成后jenkins服务器上再执行SSH命令登录到部署服务器,docker从仓库(私服)拉取镜像,启动容器。整个操作流程完成。二、服务器软件环境配

2022-02-09 10:51:37 649

原创 jvm的方法区

JVM方法区详解_勇心在馨-CSDN博客_jvm方法区

2022-01-17 17:42:53 51

原创 HashSet 如何保证不重复

通过调用hashcode和equals方法而保证不会存储进去相同的元素。

2022-01-17 17:40:48 290

原创 java 中== 和equals 的区别

== 用来比较内存地址是否相同Object 的equals 和== 一样的普通的类型存储在方法区的常量池中hashset 中所以是同一个所以地址相同,所以可以使用== 比较,其他对象比较使用equals 需要重构equals方法比如String 重构了equals在java中==和equals()的区别_LCSY的博客-CSDN博客_java中==和equals在Java学习和面试中经常遇到这个问题,虽然想着简单,但还是决定记录下来,毕竟菜嘛......==:==是直接比较的两个对象的堆内存

2022-01-17 17:37:07 213

原创 获取对象地址的方式

import sun.misc.Unsafe;import java.lang.reflect.Field;public class Main { private static final Unsafe unsafe; static { try { unsafe = getUnsafe(); } catch (NoSuchFieldException | IllegalAccessException e) { .

2022-01-17 17:06:18 2416

原创 B树和B+树的不同

B+和B树本质上的不同B树每个节点会存值和指针,所以一个节点的关键字=孩子树-1(关键字隔离出来的缝就是子树的索引)B+ 树非叶子结点只存储指针,所有关键字都存储在叶子结点上,也叶子结点之间有前后指针相连(每一阶都需要一次磁盘IO,所以树越矮越好)理论上不同1、中间结点不存储关键字所以树更矮胖2、B+ 树查询必须查到叶子结点,B树不会直接查找到叶子结点,因此b+树查找更稳定3、对于范围查找,b+树只需遍历叶子结点链表,b树却需要重复中序遍历https://www.cnblogs.com/xu

2022-01-17 15:31:16 181

原创 springbean 的生命周期

spring中的scope详解_呵呵。。。-CSDN博客_scope springhttps://blog.csdn.net/jacklearntech/article/details/40157861@Scop 用来管理springbean 的存活时间singtonleton 定义为单例prototype 会为每一个请求生成一个bean

2021-12-28 16:29:36 141

原创 分库分表的业务

垂​​​​​​​​​​​​​​cc​​​​​​​c​​​​​​​彻底搞清分库分表(垂直分库,垂直分表,水平分库,水平分表)_传智燕青-CSDN博客_分库分表分库分表的基本原理_一群专业码农的笔记本-CSDN博客_分库分表原理...

2021-12-27 18:27:52 66

原创 SpringIOC 的原理

IOC 控制反转DI 依赖注入Java面试题2.0--spring ioc_青春季风暴-CSDN博客_springioc面试题欢迎关注《Java面试题2.0》合集发布页,持续更新中!什么是IOC,什么又是DI,他们有什么区别?一、IOC介绍IOC是控制反转。创建对象实例的控制权从代码控制剥离到IOC容器控制(之前的写法,由程序代码直接操控使用new关键字),实际就是你在xml文件控制,控制权的转移是所谓反转,侧重于原理。二、DI介绍DI是依赖注入创建对象实例时,为这个对象注入属性值或其它对象实例,侧

2021-12-27 18:21:20 145

原创 docker 常用的一些命令

docker imagedocker psdocker cpdocker startdocker rundocker stop restart statusdocker 常用命令总结_toforu-CSDN博客_docker常用命令

2021-12-27 17:18:06 336

原创 spring 事务管理

使用@trasaction 其中包含一些核心参数spring @Transactional注解参数详解 - Just_Do - 博客园事物注解方式: @Transactional 当标于类前时, 标示类中所有方法都进行事物处理,例子: 当类中某些方法不需要事物时: 事物传播行为介绍: @Transactionhttps://www.cnblogs.com/caoyc/p/5632963.htmlspring @Transactional注解参数详解 - Just_Do - 博客园...

2021-12-27 17:06:28 59

原创 两个有序数组求中位数的三种解法

寻找两个有序数组的中位数(附上三种解法)_BoCong-Deng的博客-CSDN博客_两个有序数组求中位数

2021-12-27 16:36:20 350

原创 JVM 调优的一些参数

设置堆栈大小-xms 设置最小堆内存大小-xmx设置最大堆内存大小-xmn 设置年轻代大小-xss 设置每个线程的栈帧大小如果最小堆满了之后会尝试gc,如果GC 之后还无法得到足够的内存空间,就会在最大内存范围内扩大堆空间设置GC工具XX:+UseParallelGC -XX:ParallelGCThreads=20XX:+UseParallelOldGCJVM参数调优总结 -Xms -Xmx -Xmn -Xss_jakeswang的博客-CSDN博客_xms .

2021-12-27 16:19:20 92

原创 线程常用监控命令

linux查看进程idps -ef|grep查看内存使用情况free -m查看内存cpu 使用情况topjvm查看进程和线程jps -lv pid查看栈内存空间jstatck -l pid查看堆内存jmap -head pid查看gcjstat线上环境JVM问题排查常用指令_花郎徒结的博客-CSDN博客...

2021-12-27 15:50:58 156

原创 synchronized 的优化过程

问题synchronized 的执行过程1.6 之前需要大量的用户态和内核态的切换消耗了大量的资源有了一个无锁-->偏向锁-->自旋锁-->重量级锁的锁升级的过程偏向锁 如果第一个线程添加锁后无其他线程抢占资源则这个线程不会变成同步状态自旋锁 如果持有锁的线程能在很短时间内释放锁资源,那么那些等待竞争的锁的线程就不需要做内核态和用户态之间的转换(线程私有内存,和共有内存),进入阻塞,挂起状态等。深入理解synchronized锁升级过程_CrazySnail_x..

2021-12-21 18:35:47 131

原创 ES 一些经验

1、合理设计分片优化检索2、删除时不会立马删除标记为删除状态,段合并时才会删除3、track_total_hists 为true 会返回详细总量不加不会计算,所以优化大范围分页检索4、大量消重取出前多少条,滚动消重5、分页 拿出所有踢掉前面的给出后面的。6、spark 微批次处理,flink 单条处理...

2021-12-17 11:41:01 1194

原创 ES 基本操作

ES基本查询语句教程 - @ 小浩 - 博客园查询语句常见问题2021年春招Elasticsearch面试题_寒冰屋的专栏-CSDN博客_elasticsearch面试题2021目录1、Elasticsearch是如何实现master选举的?2、详细描述一下 Elasticsearch 索引文档的过程。3、详细描述一下 Elasticsearch 更新和删除文档的过程。4、详细描述一下 Elasticsearch 搜索的过程?5、Elasticsearch 对于大数据量(上亿量级)的聚合如何

2021-12-13 17:43:46 1002

原创 算法时间复杂度的求解方法

1、最高次数即为复杂度2、求对数的原因是 2*x =n x = log2n时间复杂度怎么算?如何计算时间复杂度?时间复杂度 - 知亦行 - 博客园详解O(log n)时间复杂度的由来_每天八杯水的博客-CSDN博客_时间复杂度o...

2021-12-10 11:05:13 212

原创 Spring Aop

AOP的几个关键属性AspectJ 切面 (定义的那个类)Pointcut 切点 (真正的切入方法)Advice:通知 (around”,“before”和“after”)就是触发切面的原因Join point:连接点 要把程序插入那个程序运行点AOP 常用的场景日志、鉴权、方法调用统计。。。SpringAOP 包含 jdk 动态代理 和CGLIB 动态代理两者都是在JVM运行时期创建一个Class对象,实例化一个代理对象,对目标类进行代理,JDK 动态代理只能基于.

2021-12-09 15:35:14 256

原创 mysql 数据库事务和相应的解决方法

事务ACID理解_dengjili的专栏-CSDN博客_acid事务管理(ACID)谈到事务一般都是以下四点原子性(Atomicity) 原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。 一致性(Consistency) 事务前后数据的完整性必须保持一致。 隔离性(Isolation) 事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔...https://blog.csdn.net/dengjili/

2021-12-07 11:16:23 605

原创 Redis 数据结构

为了拿捏 Redis 数据结构,我画了 40 张图

2021-12-07 10:58:13 55

原创 服务的熔断和降级

(无代码)服务降级和Hystrix详解 - 知乎

2021-12-01 14:35:41 48

原创 多线程中各个锁的原理-专题

1、CAS(比较转换)使用JUC 中的线程安全基础常量AtomicBoolean AtomicInteger AtomicLong 是使用实例原理图解释:注:t1,t2线程是同时更新同一变量56的值因为t1和t2线程都同时去访问同一变量56,所以他们会把主内存的值完全拷贝一份到自己的工作内存空间,所以t1和t2线程的预期值都为56。假设t1在与t2线程竞争中线程t1能去更新变量的值,而其他线程都失败。(失败的线程并不会被挂起,而是被告知这次竞争中失败,...

2021-11-29 14:46:24 254

原创 常用的排序算法

快速排序:// 三个参数 要排序的数组 ,前置索引// 取一个中间值一般为数组的第一个值// 分别取 一个前置漂移值 一个后置漂移值// 从后往前比中间值小的交换,然后从前往后比中间值大的交换// 结果是两个漂移值相等,左右漂移值相等指向为中间值,然后左右两个数组分别递归// 递归出来的原理是左右漂移值发生变化的时候(本来应该是相等的)public static int[] quictSort1(int[] arr,int low,int high){ int sta.

2021-11-25 16:32:50 711

原创 sql 的优化

union 去重两表合并 union all 不去重两表合并15 种 SQL 优化中,老司机才懂的处理技巧

2021-11-23 09:41:16 396

原创 数据库的三范式

第一范式: 数据的原子性(列的概念不可再分)第二范式: 行有唯一键(每一行必须有一个唯一属性,其他属性依赖这一属性)第三范式:依赖不应该具有传递性,一行不能依赖除了主键外的其他行数据库三大范式_凉亭的博客-CSDN博客_数据库三范式...

2021-11-22 14:50:38 182

原创 树(二叉查找树,AVL树,红黑树,B树,B+树)

1、二叉搜索树二叉搜索树是一种节点值之间具有一定数量级次序的二叉树,对于树中每个节点:1、若其左子树存在,则其左子树中每个节点的值都不大于该节点值;2、若其右子树存在,则其右子树中每个节点的值都不小于该节点值。 存在的问题:退化为单链2、平衡二叉树它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。这个方案很好的解决了二叉查找树退化成链表的问题,把插入,查找,删除的时间复杂...

2021-11-22 10:47:37 528

原创 Redis 常用知识

1、redis中有5种基本的数据类型String ,list ,set zset,hashString使用方法:Set key value;Get key设置一个不存在的字符串,返回0,表示设置失败,已存在,返回1,表示设置新值成功,nx 表示not。Setnx key valueGet key。一次性设置多个mset key1 value1 key2 value2Hash 哈希Hset hash key1 value1Hget hash key1//..

2021-11-18 10:22:32 302

原创 Redis实现分布式锁的原理

分布式锁

2021-11-18 10:16:19 414

原创 美团的一次简单算法题

public static void merge(int A[],int m,int B[],int n){ for(int i=0;i<n;i++){ A[m]=B[i]; for(int j=m;j>0;j--){ if(A[j]<A[j-1]) { int curr = A[j]; A[j]=A[j-1]; A[j-1]=cur...

2021-10-26 19:54:20 124

原创 Mysql 中MVCC 设计方式

是什么?多版本并发控制作用是什么?在并发场景下,使用不加锁或者乐观锁的思想去解决读和写的关系,使提高读的效率和又控制了写时的并发问题。核心思想是:读是快照读,写是通过undo log 记录版本链。当前读和快照读?当前读:像select lock in share mode(共享锁),select for update ; update; insert; delete(排它锁),这些操作都是一种当前读,她读取的事记录的最新版本,读取时还要保证其他并发事务不能修改当前记录,会

2021-09-29 15:16:53 109

原创 Mysql 数据库的隔离级别

Mysql 数据库会出现的事务问题脏读在事务A修改数据之后提交数据之前,这时另一个事务B来读取数据,读到的是A修改后的数据,而之后A由于回滚或者修改数据再提交,则B读到的就是脏数据。不可重复读一个事务在读取某些数据后的某个时间,再次读取以前的数据,却发现数据已经发生了变更,或者某些数据已经被删除了。幻读:事务A在按查询条件读取某个范围的记录时,事务B又在该范围内插入了新的满足条件的记录,事务A 再次按条件查询记录,会产生新的满足条件的记录。不可重复读和幻读的区别: 不

2021-09-28 00:28:07 236 1

原创 Mysql 中的三种常见的日志 redo log undo log binlog

Mysql 中的三种常见的日志 redo log 重做日志,undo log 回滚日志 ,binlog 二进制日志Redo log 日志 undo log 都是用来操作事务的,mysql中只有InnoDB可以操作事务,所以这两个日志应该是InnoDB独有日志方式。Binlog 是执行器用来记录逻辑操作的操作的二进制日志。Redo log 操作执行于事务操作之后,提交之前,要么不执行,执行就会被记录,所以数据库在发生故障时可以使用redo log 恢复。Redo log 大小固定,记录满了以后就从头循

2021-09-26 23:19:26 154

原创 Mysq 几种索引的不同

常用的索引有4个 FULLTEXT, HASH, BTREE,RTREE索引的作用就是通过一种算法,避免全表扫描,从而快速定位数据的位置。FULLTEXT 全文索引,目前只有MyISAM 引擎支持,只可以在CHAR,VARCHAR,TEXT列上可以创建全文索引,全文索引是通过分词策略创建的一种索引模式。HASH 通过hash算法形成键值对,如果函数映射,所以hash很适合做索引,为某一列或者几列建立hash索引,就会利用这一列或者几列的值通过一定的算法算出一个hash值,对应一行或者..

2021-09-24 14:09:41 69

原创 mysql 的内部结构

连接器(Connectors)就是类似JDBC这种数据库接口层连接池 数据库内置用来和客户端构建连接的工具SQL接口层:用来接收客户端发过来的sql语句。分析器: 将sql 拆解为数据库能够读懂的程序片段优化器: 选择更快的索引以最小的内存,最小CPU的消耗执行sql语句。缓存:将数据存在内存中。存储引擎:提供不同的存储机制、索引技巧、锁定水平、的程序组件。常见的4个存储引擎:MyISAM、Memory、InnoDB、Archive各自不同的特点。...

2021-09-23 09:35:53 229

原创 并发编程中的常用的集合

JUC集合(java.util.concurrent)并发编程里常用的集合,由于在高并发的场景下,很多传统的集合不再适用了,所以在JUC包下提供了大量的并发编程场景适用的集合。主要的操作是通过对集合进行加锁操作。主要以阻塞队列和CurrentHashMap为代表。下面单独分析CurrentHashMap。5种常见数据结构:栈,队列,表(hash表),树(二叉树,红黑树,B+),图1、数据结构Hash表哈希表就是一种以键值(key-indexed) 存储数据结构,我们只要输入待..

2021-09-22 15:02:52 226

空空如也

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

TA关注的人

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