自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(65)
  • 收藏
  • 关注

原创 01.JVM内存区域

01.JVM内存区域0101.运行时数据区程序计数器存储:下一段要执行的代码的地址共享:线程私有特点:占用非常小的内存空间OOM:唯一不会出现OOM的区域虚拟机栈:存储:方法执行的线程内存模型,入栈和出栈,对应的是方法的调用和退出;局部变量表:存储基本类型和引用类型、返回地址。共享:线程私有OOM:SOF:在入栈深度超过额定值会触发线程内内存用完,没有地方放新的栈帧OOM:要申请新线程会触发线程要扩内存,但是没有足够的内存会触发(HotSpot不

2022-01-16 20:34:58 306

原创 idea将配置设置为通用

路径:File | Settings | Other Settings |部分需要改变的配置路径:自动导包和自动删除无用包:File | Settings | Other Settings | Auto Import

2021-04-27 16:22:08 445

原创 Idea实用快捷键配置

Idea实用快捷键配置功能链接自动删除没有引用的jar包自动删除没有引用的jar包自动导包自动导包Maven自动更新Snapshot包Maven自动更新Snapshot包Maven路径设置Maven路径设置

2021-04-27 16:15:04 165

原创 Maven相关配置

路径:自动删除没有引用的jar包 :File | Settings | Build, Execution, Deployment | Build Tools | Maven红框1:自动更新Snapshot包红框2:maven安装路径红框3:maven的setting.xml配置

2021-04-27 16:13:20 571

原创 Idea自动删除没有引用的jar包和自动导包

路径:file---setting---editor---General--Auto Import--Optimize import on the fly

2021-04-27 16:06:08 1497

原创 Mysql索引详解(InnoDB引擎)

索引的类型Hash索引、有序数组索引、B树索引、全文索引索引的优点大大减少了服务器需要扫描的数据量帮助服务器避免排序和临时表索引可以将随机IO变为顺序IO索引的数据结构聚集索引数据存储在叶子节点上数据和索引是存储在一起的非聚集索引叶子节点存储的是主键值(二级索引)和实际数据存储是分离的索引优化思路详解用独立的列作为索引在索引列上进行计算操作、函数操作会导致索引失效。联合索引选择合适的索引列顺序如果首列查询为范围查询,则不会用到后边.

2021-04-01 18:02:36 88

原创 MysqlSql执行过程分析

查询Sql执行流程#mermaid-svg-hOqyBPMufwTC3cCw .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-hOqyBPMufwTC3cCw .label text{fill:#333}#mermaid-svg-hOqyBPMufwTC3cCw .node rect,#mermaid-svg.

2021-04-01 18:00:00 116

原创 慢Sql优化思路

思路开启慢查询日志,抓取慢sql通过explain查看执行计划,对慢sql语句分析创建索引并调整语句,再对比优化结果抓取慢sqlshow variables like '%quer%';Variable_nameValue含义binlog_rows_query_log_eventsOFFON 标识开启慢查询日志ft_query_expansion_limit20have_query_cacheYESlog_queries_not_us.

2021-04-01 17:51:59 277

原创 kibana-报字段无法加载

报错信息:字段无法加载/bundles/commons.bundle.js:3:1371494一般是由于 .kibana 的索引未删除导致的。猜测: .kibana 的索引中存储有 之前的 kibana 的相关信息,而kibana版本升级,但是索引信息中是上一个版本的信息,导致不匹配造成的无法加载处理方法:删除相应的索引获取索引列表:curl--location--requestGET'http://username:[email protected]....

2021-03-12 09:36:32 1288 1

原创 从公共镜像仓库拉取镜像到私有Harbor仓库

从公共镜像地址找对应的镜像https://registry.hub.docker.com/以Kibana为例,拿到对应镜像的拉取命令如果本地无法执行docker命令,则需要先预装docker在堡垒机找到一台可以连接我们镜像仓库地址的机器执行 docker pull kibana:7.5.1 命令下载完镜像之后docker images |grep kibana 查询是否有本地的镜像如果有docker login 10.233.117.194登...

2021-03-11 17:50:28 1326

原创 Windows的idea返回上一个代码位置快捷键失效

1. 看idea配置是否正确2. 排查 windows显卡设置如果此设置是关闭的,就重新打开再关闭一下

2020-11-03 18:51:50 1497

原创 java-并发-CAS

基本概念:比较 然后 交换 compare and swap参数:内存值 V,旧的预期值 A,要修改的新值 B过程:如果 V和 A 相等,则将 V替换 为 B,否则 自旋。缺点: ABA问题,A 变化为B ,再次变化为A 则检测不出来,需要用加版本号的方式来解决如果自旋时间太长的话,开销就会很大。CAS和锁的选择:1. 在资源竞争不激烈的时候,可以使用CAS,可以在较短时间内获取到锁。2. 在资源竞争激烈的时候,使用阻塞锁,避免CAS无限制自旋造成的性能开销...

2020-08-14 09:45:33 76

原创 java-并发-Volitile

作用:1. 共享变量在线程之间的可见性2. 禁止指令重排序具体实现方式:1. 共享变量在线程之间的可见性多线程的情况下,多个线程操作同一个共享变量的时候,是把共享变量复制一份,复制到自己的线程内存中,然后在私有线程里去操作自己单独的变量。等线程执行完毕的时候,会把私有线程中的变量复制到共享变量中,更新共享变量。线程可见性指的是,当线程A复制了数据num,线程B也复制了数据num,这时候线程A对num赋值2,线程B看到的是num=2具体实现为,volatile在进行写操作的时.

2020-08-14 09:43:54 126

原创 docker安装单节点nacos

1. 下载 docker nacos镜像docker pull nacos/nacos-server:1.1.4 //稳定版,推荐 docker pull nacos/nacos-server // 下载最新版2. docker 启动nacos 因为需要配置 数据库 等信息 所以需要修改 一些信息注意数据库ip不要设置为localhost 或者 127.0.0.1 要设置为 内网IP 或者 公网IP(本人用的是阿里云机器,设置的是阿里云公网IP)docker run -d \-e P

2020-08-06 23:43:51 1165

原创 Centos7安装Docker

1、Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。通过uname -r命令查看你当前的内核版本$ uname -r2、使用root权限登录 Centos。确保 yum 包更新到最新。$ sudo yum update3、卸载旧版本(如果安装过旧版本的话)$ sudo yum remove docker docker-common docker-selinux docker-engin...

2020-08-06 23:39:25 128

原创 java-并发-锁-死锁

什么是死锁:死锁是一种特定的程序状态,一般为多线程彼此持有对方需要的锁,彼此还在等待获取对方持有的锁、死锁的定位方式:jstack线程打印死锁产生的原因:1. 长期持有锁,使用完不释放2. 循环依赖如何避免死锁:1. 尽量避免使用多个所,并且只有需要的时候才使用2. 如果必须要使用多个锁,尽量设计好锁的获取顺序,可以将对象和锁的关系图形化展示出来3. 使用超时机制4. 通过不同的工具进行代码分析,查找出可能出现死锁的场景。...

2020-08-02 22:28:48 99

原创 java-并发-锁-AQS

主要包含:volatile int state 标记节点锁的状态tryacquire tryRelease 独占获取锁和释放锁 (state 0 /1 代表锁是否被占用)tryAcquireShare 和 tryReleaseShare 共享获取锁和释放锁(state=0 代表所有的锁都被使用完,state>0 有未使用的锁)Node的FIFO队列:volatile Node pre 当前节点的前一个节点volatile Node next 当前节点的下一个节...

2020-08-02 22:28:13 86

原创 java-并发-锁-Lock

底层原理:Lock底层是通过AQS实现的。AQS底层是通过CAS实现的。加锁过程:独占锁:通过tryAcquire方法,将state值从0设置为1,设置成功代表加锁成功通过tryRelease方法,将state值从1设置为0,设置成功则代表释放成功共享锁:通过tryAcquireShared(arg),获取到的结果如果>=0则获取锁成功,如果<0则获取锁失败。并且在队列尾部增加一个Node节点自旋获取锁。锁的重入:独占锁:通过tryA...

2020-08-02 22:26:20 105

原创 java-并发-锁-Synchronized

底层原理:Synchronized底层是通过monitorenter 和 monitorexit来实现的。如果synchronize在方法上,那就没有上面两个指令,取而代之的是有一个ACC_SYNCHRONIZED修饰,表示方法加锁了。它会在常量池中增加这个一个标识符,获取它的monitor,所以本质上是一样的。加锁过程: 如果monitor的进入数为0,则该线程进入monitor,然后将进入数设置为1,该线程即为monitor的所有者。 如果线程已经占有该monitor,只是重.

2020-06-19 00:18:02 128

原创 单链表 反转

package cm.com.datastructure.linkedlist;/** * 实现单链表 翻转 * * @author MemorysLiu * @version 1.0.0 * @date 2019-07-31 15:14 */public class SinglyLinkedList { public static void main(String[...

2019-07-31 15:32:06 148

原创 实现一个支持动态扩容的集合

package cm.com.datastructure.array;/** * 支持动态扩容的数组 * 初始容量为8 每次扩容2倍 * * @author MemorysLiu * @version 1.0.0 * @date 2019-07-29 18:53 */public final class Array<T> { private static...

2019-07-29 19:26:47 2059

原创 背包问题-动态规划

背包问题描述:将有限的几个物品放入一个能承受固定重量的背包中,求能背包中物品的最大重量package cm.com.algorithm.knapsack;import cm.com.algorithm.knapsack.compare.SortCompare;import java.util.Arrays;/** * 背包问题-动态规划实现 * * 核心思想...

2019-07-03 11:47:36 127

原创 背包问题-贪心算法

背包问题描述:将有限的几个物品放入一个能承受固定重量的背包中,求能背包中物品的最大重量package cm.com.algorithm.knapsack;import cm.com.algorithm.knapsack.compare.SortCompare;import java.util.ArrayList;import java.util.Arrays;impo...

2019-07-03 11:44:30 658

原创 后序遍历二叉树

package cm.com.algorithm.tree;/** * 后序遍历2叉树 * 后序遍历是指,对于树中的任意节点来说,先打印它的左子树,然后再打印它的右子树,最后打印它本身 * * @author [email protected] * @date 2019-06-11 22:14 */public class LRDTree { private s...

2019-06-17 12:15:57 571

原创 中序遍历二叉树

package cm.com.algorithm.tree;/** * 中序遍历2叉树 * 中序遍历是指,对于树中的任意节点来说,先打印它的左子树,然后再打印它本身,最后打印它的右子树 * * @author [email protected] * @date 2019-06-11 22:14 */public class LDRTree { private s...

2019-06-17 12:14:21 4527

原创 前序遍历二叉树

package cm.com.algorithm.tree;/** * 前序遍历2叉树 * 前序遍历是指,对于树中的任意节点来说,先打印这个节点,然后再打印它的左子树,最后打印它的右子树 * * @author [email protected] * @date 2019-06-11 22:14 */public class DLRTree { private ...

2019-06-17 12:12:35 214

原创 堆排序

原文:https://time.geekbang.org/column/article/69913 原文是极客时间,的数据结构与算法课程。整片文章感觉有抄袭的嫌疑,哈哈哈,不过感觉这个图的确是比文字或者别的更形象和有说服力。1.堆的定义:堆满足的两个必要条件:堆是一个完全二叉树。 堆中的每个节点的值都必须大于等于(或者小于等于)其子树的每个节点的值。对于每个节点的值都...

2019-06-14 20:43:32 240

原创 快速排序

快速排序:时间复杂度:时间复杂度主要取决于每次拆分的时间。是n*log(n)空间复杂度:在合并的时候,没有使用额外的存储空间,所以时间复杂度是O(1)原地排序算法:是原地排序算法。稳定排序算法:在排序的时候,前后大小相等的元素,不能保证排序后的顺序一致。如果从前往后排,则比中间值大的元素不能确保顺序一致,如果从后往前排,则比中间值小的元素不能确保顺序。时间复杂度计...

2019-06-10 20:21:11 123

原创 JAVA-面试题-02

58的一道面试题public class Main { public static void main(String[] args) { List<Integer> list = new ArrayList<>(Arrays.asList(1,2)); add(list); for (int i = 0...

2019-06-10 17:43:59 92

原创 归并排序

归并排序:时间复杂度:时间复杂度主要取决于合并的时间。是n*log(n)空间复杂度:在合并的时候,使用了额外的数组存储排序结果,所以空间复杂度不是O(1)原地排序算法:不是原地排序算法。稳定排序算法:在排序的时候,前后大小相等的元素,先排前边数组的元素,就可以保证排序的稳定性。时间复杂度推导方法:T(n) = 2*T(n/2) + n = 4*T(n/4) + ...

2019-06-08 17:27:28 99

原创 希尔排序

希尔排序:时间复杂度:O(n^(1.3—2))空间复杂度:O(1),原地排序算法稳定性:不是稳定的排序算法。相关介绍感觉百度百科介绍挺好的。见:https://baike.baidu.com/item/%E5%B8%8C%E5%B0%94%E6%8E%92%E5%BA%8F/3229428?fr=aladdinpackage cm.com.algorithm;/*...

2019-06-06 14:03:52 147

原创 选择排序

选择排序:时间复杂度:因为需要两次循环,每一次循环的复杂度都为n,所以总的时间负责度为O(n^2)空间复杂度:没有使用额外的空间,所以空间复杂度为O(1)原地排序算法:因为空间复杂度为O(1),没有占用额外的空间来排序,所以是原地排序算法。稳定排序算法:5,8,5,2,5,9 这样的就会乱序。所以是非稳定排序算法。因为不能保证相等元素的排序顺序和原来保持一致。pac...

2019-06-05 21:39:14 117

原创 插入排序

插入排序:时间复杂度:因为需要两次循环,每一次循环的复杂度都为n,所以总的时间负责度为O(n^2)空间复杂度:没有使用额外的空间,所以空间复杂度为O(1)原地排序算法:因为空间复杂度为O(1),没有占用额外的空间来排序,所以是原地排序算法。稳定排序算法:在排序的时候,如果遇到前后相等的元素就不互换位置,就可以做到顺序不改变,所以是稳定排序算法。package cm.co...

2019-06-05 21:23:44 109

原创 冒泡排序

冒泡排序:时间复杂度:因为需要两次循环,每一次循环的复杂度都为n,所以总的时间负责度为O(n^2)空间复杂度:没有使用额外的空间,所以空间复杂度为O(1)原地排序算法:因为空间复杂度为O(1),没有占用额外的空间来排序,所以是原地排序算法。稳定排序算法:在排序的时候,如果遇到前后相等的元素就不互换位置,就可以做到顺序不改变,所以是稳定排序算法。package cm.co...

2019-06-05 17:58:51 108

原创 java集合对比

详情参考:https://www.cnblogs.com/skywang12345/p/3323085.html#4269559集合底层数据结构是否线程安全其它ArrayListObject数组不安全每次扩容1.5倍LinkedList双向链表不安全随机访问的方式为,根据index和链表长度的一半来判断,是从前开始访问,还是从后开始访问。但是随机访问的时...

2019-06-05 13:21:44 706

原创 Mac idea 设置智能提示忽略大小写

1.打开preferences2.去掉Match case 勾选即可。

2019-06-01 09:45:46 5713 1

原创 算法的时间复杂度分类

1.算法的时间复杂度主要有以下几种1.1 0(1)指的是常数时间内的算法。例如: int i = 8; int j = 6; int sum = i + j;执行一次或者常数时间次数的代码,时间复杂度都是0(1)1.2 0(log n) 0(n log n)示例代码: i=1; while (i <= n) { i = i * 2; }上述代码的时间...

2019-05-29 14:40:43 4009

原创 Mac 修改maven 配置

1.安装 maven一般还是使用brew 命令 直接安装brew install maven2.覆盖setting.xml配置文件通过 mvn -version可以查看maven的安装目录替换对应的setting.xml文件3.修改idea的maven配置目录的话,直接通过文件夹找不太好找,我也没找到,我是通过终端控制台 用命令访问到对应的...

2019-05-29 11:00:46 7504

原创 Mac 开发软件安装

1. 安装brewcurl -LsSf http://github.com/mxcl/homebrew/tarball/master | sudo tar xvz -C/usr/local --strip 1抄袭自:https://www.jianshu.com/p/27d5a98144f32. brew 安装jdk8brew cask install caskroom/ver...

2019-05-28 15:22:55 283

原创 java虚拟机问题2

11.java中的synchronezed实现重量级锁:java线程的阻塞和唤醒都是依靠操作系统来完成的,需要操作系统从用户态切换至内核态,开销相当大。为避免这种情况,Java 虚拟机会在线程进入阻塞状态之前,以及被唤醒后竞争不到锁的情况下,进入自旋状态。通过动态设置自旋等待时间,来减少锁的开销。如果上次自旋获取到了锁,那么这次就延长自旋时间,如果上次自旋没有获取到锁,这次就缩短自旋时间。...

2019-05-28 10:06:27 148

空空如也

空空如也

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

TA关注的人

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