自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Java觉浅的博客

Java觉浅的博客

  • 博客(70)
  • 资源 (1)
  • 收藏
  • 关注

原创 【总】算法从入门到精通合集(持续更新中。。。。。。)

一、概述 Mysql性能优化就算通过合理安排资源,调整系统参数使Mysql运行更快,更节省资源。Mysql性能优化包括查询速度优化,更新速度优化,Mysql服务器优化等等。本系列文章包含,Mysql性能优化的介绍,查询优化,数据库结构设计优化,Mysql分区优化等。 本文将系统的对Mysql调优知识进行梳理,方便大家系统的学习!二、内容 1、认识复杂度和简单排序算法 2、认识O(NlogN)的排序 3、详解桶排序以及排序内容大总结 4、链表...

2021-11-21 21:44:08 1412

原创 【总】Mysql调优精讲(持续更新中。。。。。。)

一、概述 Mysql性能优化就算通过合理安排资源,调整系统参数使Mysql运行更快,更节省资源。Mysql性能优化包括查询速度优化,更新速度优化,Mysql服务器优化等等。本系列文章包含,Mysql性能优化的介绍,查询优化,数据库结构设计优化,Mysql分区优化等。 本文将系统的对Mysql调优知识进行梳理,方便大家系统的学习!二、内容 1.Mysql调优精讲--使用profiles,performance_schema性能监控 2. Mysql调优精讲--数据...

2020-08-25 11:36:33 851 2

原创 【总】JVM精讲合集

一、概述 JVM作为java底层基础知识,是重中之重的知识,博主通过本文,将JVM必知必会的知识体系结构呈现出来,方便大家有脉络得进行系统的学习。二、目录 1. 我的JVM(一):虚拟机基础概念 2. 我的JVM(二):Class文件结构 3. 我的JVM(三):Class文件加载过程和初始化 4. 我的JVM(四):JMM运行时内存结构 5. 我的JVM(五):JVM运行时数据区和JVM指令集 6. 我的JVM(六):GC的基础概念...

2020-08-19 16:24:45 274

原创 【总】JDK1.8源码 由浅入深!抽丝剥茧!重要类的归纳总结!

一、 java.lang我的jdk源码(一):Object 一切类的根本!我的jdk源码(二):String 一个特殊而强大的类!我的jdk源码(三):AbstractStringBuilder类我的jdk源码(四):StringBuffer 线程安全可多次修改我的jdk源码(五):StringBuilder 高效可多次修改String我的jdk源码(六):Thread我的jdk源码(七): ThreadLocal二、 ...

2020-06-18 00:10:03 273

原创 【总】Spring Cloud从入门到实战!史上最简单快速上手归纳汇总!

我的Spring Cloud(一):微服务概述我的Spring Cloud(二):Eureka Server注册中心我的Spring Cloud(三):Eureka Client 服务提供者我的Spring Cloud(四):RestTemplate的使用我的Spring Cloud(五):Zuul 服务网关我的Spring Cloud(六):Ribbon 负载均衡我的Spring Cloud(七):Feign 声明式接口调用我的Spring Cloud(八):Hystrix 容

2020-05-27 09:06:11 301

原创 生动形象解释forEach、filter、map、some、every、find、findIndex、reduce间的区别

一、概述从最开始学的for循环遍历方法,到后来层出不穷的各种遍历方法,其实最大的区别就是应用场景的不同。 我们最需要记住的就是,什么情况下用哪一种方法比较合适。二、分析这里有一堆土豆,如果换成代码,可以表示如下:var potatos = [{ id: '1001', weight: 50 },{ id: '1002', weight: 80 },{ id: '1003', weight: 120 },{ id: '1004', weight: 40 },{ id.

2021-11-23 23:56:32 323

原创 算法从入门到精通(二):认识O(NlogN)的排序

一、概述 在上一篇中我们分析了几个时间复杂度为O(N^2)排序算法,今天我们将深入学习几个时间复杂度为O(NlogN)的排序,大家拴好安全带,博主直接弹射起步,开始本篇的内容。二、分析 1.剖析递归行为 重点:剖析递归行为和递归行为时间复杂度估算 场景:用递归方法找一个数组中的最大值,系统上到底是怎么做到的? 递归行为时间复杂度估算常用公式:master公式的使用:T(N) = a*T(N/b) + O(N^d),满足此公式的算法时间复杂度计算如下:...

2021-11-19 09:00:00 619 1

原创 算法从入门到精通(一):认识复杂度和简单的排序算法

一、概述 算法是进入大厂的敲门砖,也是每位程序员必备技能,从今天开始,博主将仔细和大家聊聊算法和数据结构,努力记下这些,在面试中立于不败之地!二、分析 1.认识时间复杂度 常数操作:一个操作如果与样本的数据量没有关系,每次都是固定时间内完成的操作,称为常数操作。 时间复杂度为一个算法流程中,常数操作数量的一个指标。常用0(读作big o)来表示。具体来说,先要对一个算法流程非常熟悉,然后去写出这个算法流程中,发生了多少常数操作,进而总结出常数操作数量的表达式。在...

2021-11-17 01:20:08 1992 3

转载 从浏览器角度看网络安全的演变

我是一个浏览器,每到夜深人静的时候,主人就打开我开始学习。为了不让别人看到浏览记录,主人选择了“无痕模式”。但网络中总是有很多坏人,他们通过抓包截获我和服务器的通信,主人干了什么,请求了什么数据全被他们知道了!光窃听也就罢了,他们还经常篡改内容,在网页里面插入诱人的小广告,真是太坏了!为了保护主人的隐私还他一个干净的上网环境,我决定对通信加密!第一版:直接简单加密加密嘛,很简单,把原来要发送的数据加密处理后再发给服务器就行了。为了安全,

2021-09-28 13:52:32 120

原创 jdk17稳定版来了,jdk8还能香多久?

一、目录二、新特性 1. 接口默认方法 2.Lambda 表达式 3.函数式接口 4.方法与构造函数引用 5. 新的Date API 7. HashMap增加红黑树三、总结概述 在jdk1.8以后的版本需要收费前,jdk1.8相较于1.7进行了一次大更新,很多不愿意付费的公司都只用到jdk1.8,所以学好jdk1.8就显得格外重要,那么本文就来着重讲一下jdk1.8有哪些新的有趣的东西吧!二、新特性 1......

2021-09-15 14:25:50 20171 6

转载 腾讯应用宝认领应用步骤

腾讯应用宝认领应用步骤

2020-12-08 10:54:34 183

原创 HBuilderX的快捷键

//*--------左侧是默认快捷键设置,右侧是自定义设置。右侧设置会覆盖左侧设置--------*////*--------自定义快捷键和默认快捷键冲突时会弹出选择菜单。也可在右侧设置添加 "override":true 参数来强制覆盖默认设置--------*////*--------支持连续快捷键,例如"key":"cltr+1 2" --------*/////*// # HBuilderX的快捷键理念// HBuilderX的快捷键原则是:不定义记不住的快捷键// 过去的很多工具

2020-11-20 10:45:27 6443

原创 Mysql调优精讲(二):schema与数据类型优化

一、概述Mysql数据类型优化可以使我们在设计之初,就考虑到时间反应,以及空间的节省等方面的优化,使得Mysql数据库从设计之初就趋于完美。那么接下来就一起来什么了解一下我们可以从哪些方面进行优化吧!二、分析 1. 数据类型的优化 (1) 更小的通常更好应该尽量使用可以正确存储数据的最小数据类型,更小的数据类型通常更快,因为它们占用更少的磁盘、内存和CPU缓存,并且处理时需要的CPU周期更少,但是要确保没有低估需要存储的值的范围,如果无法确认哪个数据类型,就选...

2020-08-27 22:36:00 346

原创 MySQL中UTF-8编码方式和utf8mb4的区别

一、概述 在学习到Mysql调优schema与数据类型优化时,字符集的选择一般推荐大家使用utf8mb4,而不是我们所熟悉的UTF-8编码方式,这是为什么呢? 这是因为MySQL 从 4.1 版本开始支持 UTF-8,也就是 2003 年,然而目前流行的UTF-8 标准(RFC 3629)是在此之后规定的。正因此,才造就了MySQL中的UTF-8与我们日常开发中的UTF-8不一致,从到导致了些问题。MySQL的UTF-8只支持每个字符最多三个字节,而真正的 UTF-8 是每个字符最多四个...

2020-08-27 22:29:28 896

原创 Mysql调优精讲(番外):雪花算法

一、概述 在学习Mysql调优的schema与数据类型优化内容时,有讲到数据库表id的设计,分布式系统中我们如何保证可以利用id进行时间排序呢,那么就需要我们今天的主角--雪花算法。二、分析1、常见主键生成策略 一般对于系统的实体类主键,我们一般采用如下两种策略:int 变量自增:采用数据库自增功能,id采用整数类型进行自增。 字符串 UUID:采用UUID生成工具可生成随机字符串。2、问题int类型的主键:该方式生成的主键一般是连续的数字,主键有一定的顺序,可排序。...

2020-08-27 22:23:27 2218

原创 Mysql调优精讲(一):使用profiles、performance_schema实现性能监控

一、概述Mysql性能优化就算通过合理安排资源,调整系统参数使MYSQLMysql更快,更节省资源。Mysql性能优化包括查询速度优化,更新速度优化,Mysql服务器优化等等。本文先讲一下Mysql调优的前置条件-性能监控。其实类似JVM调优要监控是哪个线程占用CPU资源和内存资源一样,我们也可以通过Mysql的性能监控快速定位问题,对症下药。二、分析 1.Mysql的基础层次Mysql的基础层次如下图: 2. 性能监控-profiles查询剖析工具 ...

2020-08-25 11:56:17 1519 2

原创 我的JVM(八):常用命令和实战调优场景

一、概述 实际项目中,时常会有已经上线的问题出现问题,那么我们如何能够让项目能够健壮的运行呢?那么就需要我们进行诊断和分析,今天本文我们就来学习一下JVM常用命令和实战调优场景。二、解析 1. 选择垃圾收集器的原则(吞吐量/反应时间) 我们先来介绍两个概念: (1) 吞吐量 = 用户代码执行时间/(用户代码执行时间+垃圾收集执行时间) (2) 反应时间快= 用户线程停顿的时间短 我们可以针对不同的业务场景来选择锁使用的垃圾回收...

2020-08-22 21:39:56 518 1

原创 我的JVM(五):JVM运行时数据区和JVM指令集

一、概述 本文主要介绍java程序运行时,运行时数据区中的数据变化过程,借此来帮助我们深刻的理解jvm运行机制。二、解析 1. 运行时数据区 运行时数据区Run-time data areas,如下图: 主要包含以下六大区域: (1) Program Counter:程序计数器,用于存放下一条要执行的指令的位置。常用于线程切换时,记录下线程执行到了哪个位置。 (2) JVM Stacks:java代码运行时,每一个线程对应一个栈,每一个方法对应...

2020-08-19 16:17:17 328

原创 我的JVM(四):JMM运行时内存结构

一、概述 上一文我们主要分析了class文件的加载过程,那么本文主要来分析JMM内存模型,英文名JAVA Memory Model,它是与计算机硬件有关的一个概念。为了保证共享内存的正确性(可见性、有序性、原子性),内存模型定义了共享内存系统中多线程程序读写操作行为的规范。二、解析 1. 硬件层的并发优化基础知识 存储器的层次结构图如下: 各级缓存耗时对比: 采用分层缓存的层次结构会带来数据不一致问题,如下图: ...

2020-08-14 16:13:55 354

原创 我的JVM(三):Class文件加载过程和初始化

一、概述 前文《我的JVM(二):class文件结构》中已经详细介绍class文件的内容结构,本文主要详细讲解class文件的加载过程,并且详细分析类加载器的分类以及底层原理。二、分析 1. 加载过程 class文件加载的过程分为大的三个步骤,具体如下图所示: 此图也正好解释了对象初始化与半初始化,如上图,在Preparation阶段,静态变量被赋予了默认值,而要在Initializing阶段才被赋予初始值。 (1) Loading:把cla...

2020-08-13 17:59:13 628 2

原创 我的JVM(二):Class文件结构

一、概述 由于整个JVM是以class文件为核心,所以分析class文件有利于我们更加深入理解JVM运行机制。二、解析 1. class文件整体结构 class文件整体结构如下图所示(建议收藏): 主要内容包括: (1) Magic Number:魔数,用于区分文件类型,解释如下图: (2) Minor Version:jdk小版本号。 (3) Major Version:jdk大版本,也就是主版本。...

2020-08-10 16:00:44 312

原创 我的JVM(一):虚拟机基础概念

一、概述为了能够深入学习JVM打下坚实的基础, 本文主要介绍JVM的基础知识。二、解析 1. java从编码到执行 我们先由java文件的执行过程,来认识JVM,如下图: .java文件执行javac命令后就变成了.class文件,这个.class文件如何执行的呢?.class文件会被ClassLoader加载到内存里,同时这个文件内所引用到的java类库也会被ClassLoader加载。加载完成后,会调用字节码的解释器或者JIT即时编译器来进行解释或编译,...

2020-08-09 11:20:21 301

转载 我的JVM(番外):Arthas - Java 线上问题定位处理的终极利器

前言在使用Arthas之前,当遇到 Java 线上问题时,如 CPU 飙升、负载突高、内存溢出等问题,你需要查命令,查网络,然后 jps、jstack、jmap、jhat、jstat、hprof 等一通操作。最终焦头烂额,还不一定能查出问题所在。而现在,大多数的常见问题你都可以使用Arthas轻松定位,迅速解决,及时止损,准时下班。1、Arthas 介绍Arthas是Alibaba在 2018 年 9 月开源的Java 诊断工具。支持JDK6+, 采用命令行交互模式,提供Ta...

2020-08-07 18:04:22 390

原创 我的JVM(七):十种垃圾回收器和三色标记法

一、概述 在上文《我的JVM(一):GC的基础概念以及GC算法》中我们了解了到jdk14.0的十种垃圾回收器,本文来详细介绍一下各种垃圾回收器的底层原理以及采用的算法。二、分析 1. 十种垃圾回收器 2. Serial垃圾回收器Serial和Serial Old这两种垃圾处理器已经很少见了,它们两的原理相同,只是用于的区域不同,Serial用于新生代,Serial Old用于老年代。我们来看一下它们的工作原理,如下图: Serial垃圾回收器在...

2020-08-07 17:23:11 644

原创 我的JVM(六):GC的基础概念以及GC算法

一、概述 垃圾收集Garbage Collection通常被称为GC,但是GC一般也指Garbage Collecting(垃圾回收这个动作)或Garbage Collector(垃圾回收器),这些都是是JVM知识体系中非常重要的知识,也是程序员必须要掌握的技能,本文将详细讲述Java垃圾回收的概念机制以及核心算法。二、分析 1. 什么是垃圾 我们所说的垃圾是指没有任何引用的一个对象或者多个对象(这多个对象相互引用,但是没有一个与主对象挂钩,也就是根可达算法(下文会讲)无...

2020-08-06 11:56:35 404 1

原创 我的面试题(一):关于Object o = new Object()的追魂8连问!

一、概述 大厂面试一般喜欢针对一个简单的东西进行不断的深入追问,那么接下来看一下Object o = new Object()中会涉及多少知识点呢?二、题目以及答案分析 1. 解释一下对象的创建过程。(半初始化) 汇编码解释: (1) new #2 <T>:在内存中开辟一块空间并生成所有的成员变量,给t这个对象专用,此时成员变量m也有了,只是值是初始默认值0(long类型也是0;boolean类型是false;引用类型就是null)。...

2020-08-05 11:49:01 1273 2

原创 我的设计模式(二):Strategy 策略模式

一、概述 在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。那么我们就由实际需求出发,一步一步深入剖析设计原理。二、解析 1. int数组排序 我们假设一种业务场景,要对一个int数组进行排序,测试类代码如下:import java.util.Arrays;public class Main { public static void main(String[] args) { i...

2020-08-03 00:49:39 177

原创 我的设计模式(一):Singleton 单例模式

一、概述 单例模式可能是大家听到的最多的模式,但是你真的了解了吗。单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。单例模式具有以下特点: (1) 单例类只能有一个实例。 (2) 单例类必须自己创建自己的唯一实例。...

2020-08-01 12:10:39 1489

原创 我的并发编程(三):Volatile的底层实现及原理

一、概述 Java语言中要学习同步和多线程,必定绕不开Volatile关键字,它定义为Java允许线程访问共享变量,为了确保共享变量能够被准确和一致性地更新,线程应该确保通过排它锁单独获得这个变量。那么今天我们来深入解析一下Volatile的底层实现及原理。二、详细分析 1. 程序在计算机中如何执行的? 计算机的组成如下图所示: 当我们需要执行一个程序时,分为以下几步: (1) 将程序从磁盘中加载到内存中做成一个进程,进程里面...

2020-07-24 17:41:44 1331

原创 我的并发编程(二):java对象头以及synchronized升级过程

一、概述 研究java对象头的目的是详细分析Java的synchronized锁的升级过程,因为synchronized在锁升级的时候,就是依赖对象头的信息来决定的。本博文针对64位的操作系统来对Java对象头进行详解。二、详细分析 1. 用户态与内核态内核态与用户态是操作系统的两种运行级别,当程序运行在3级特权级上时, 就可以称之为运行在用户态,因为这是最低特权级,是普通的用户进程运 行的特权级,大部分用户直接面对的程序都是运行在用户态;当程序运行在0级特权级...

2020-07-02 21:52:14 493

原创 jdk1.8新特性,你还不知道就out了!

一、概述 在jdk1.8以后的版本需要收费前,jdk1.8相较于1.7进行了一次大更新,很多不愿意付费的公司都只用到jdk1.8,所以学好jdk1.8就显得格外重要,那么本文就来着重讲一下jdk1.8有哪些新的有趣的东西吧!二、新特性 1. 接口默认方法interface Formula { double calculate(int a); default double sqrt(int a) { return Math.sqrt(a);...

2020-06-18 23:15:03 1684

原创 我的jdk源码(二十四):AtomicInteger类和CAS机制

一、概述AtomicInteger类处于java.util.concurrent.atomic包下,与其他原子操作的类一样,底层都是采用CAS机制,调用了Unsafe类的CAS方法实现的。我们先分析一下AtomicInteger类的源码,再来分析CAS机制的种种。二、源码分析 1. 类的声明public class AtomicInteger extends Number implements java.io.Serializable继承了 Number, 这主要...

2020-06-18 00:00:13 397

原创 教你一招:element日期选择器el-date-picker修改指定日期样式

一、概述 今天在项目开发中有一个需求,要求日期选择器中,制定的日期标红,并且其他日期不能选择。查阅资料后我们得知,ElementUI在2.12.0版本里,日期选择器的picker-options新增了cellClassName方法,那么我们就来看一下如何实现。二、代码分析 1. 定义一个pickerOptions并绑定给el-date-picker元素上,如下图: 代码如下:<el-date-picker class="myDatePicker" v-mo......

2020-06-17 10:30:03 16863 1

原创 我的jdk源码(二十三):ReentrantLock类

一、概述ReentrantLock类是在内部利用自己的内部类Sync继承了AbstractQueuedSynchronizer,实现了tryAcquire()方法,在这个方法中增强自己的功能,比如添加了重入和公平锁、非公平锁。ReentrantLock再将Sync作进一步的封装,开放出去Lock的接口。ReentrantLock是通过在请求锁的时候判断CLH列表有没有比当前线程等待时间更久的线程来实现公平性的。当一个线程请求公平锁的时候,如果state为0,还需要在CHL中没有等待节...

2020-06-16 23:20:19 229

原创 我的jdk源码(二十二):AbstractQueuedSynchronizer类

一、概述AbstractQueuedSynchronizer类翻译为抽象队列同步器, 提供了一个基于FIFO队列,可以用于构建锁或者其他相关同步装置的基础框架,也是一个Java提供的底层同步工具类,用一个int类型的变量state表示同步状态,并提供了一系列的CAS操作来管理这个同步状态。AQS的主要作用是为Java中的并发同步组件提供统一的底层支持,比如 ReentrantLock、CountDownLatch 和 Semaphore 等都是基于AQS实现的,因此学习AQS的使用与源码实现对深...

2020-06-15 17:10:53 314

原创 我的并发编程(一):java锁的分类

一、概述 在我们的开发工作中,需要利用多线程处理高并发的情况,那么我们就不可避免的需要用到锁机制。分类总览图如下:二、锁的分类 1. 公平锁与非公平锁 (1) 公平锁:在并发环境中,多个线程需要对同一资源进行访问,同一时刻只能有一个线程能够获取到锁并进行资源访问,其他的每个线程都在等待资源访问的机会,并且遵循先来后到的顺序,这样的锁就叫做公平锁。 (2)非公平锁:如果针对上诉情况,后来的锁反而比先来的锁先获得资源访问的权限,也就是其他线程获取资源的顺序是随机...

2020-06-11 19:32:33 283

转载 我的jdk源码(二十一):ConcurrentHashMap类

一、概述ConcurrentHashMap类实际上就是为了解决HashMap的线程不安全而设计的类,ConcurrentHashMap类处于jdk的并发包下,在并发编程中有着非常重要的作用。二、源码分析 1. 类的声明public class ConcurrentHashMap<K,V> extends AbstractMap<K,V> implements ConcurrentMap<K,V>, Serializable ...

2020-06-11 10:29:54 257

原创 我的jdk源码(二十):TreeSet类

一、概述TreeSet类的构造方法底层调用的是TreeMap类的构造方法,也就是说,TreeSet类底层也是红黑树的结构,红黑树的结构这里不再赘述,小伙伴们可以在《我的jdk源码(十九):TreeMap类 红黑树实现的map结构》一文中看到。类似HashSet与HashMap的关系,TreeSet类中,也是将要添加的对象E作为key-value组成的TreeSet元素中的key,value存的也是一个预先就声明好的空对象, 所以当你既想利用Map的高效查找特性,又想维持元素特定的顺序,又想保证元...

2020-06-09 15:09:38 221

原创 我的jdk源码(十九):TreeMap类 红黑树实现的map结构

一、概述TreeMap类是一个有序的key-value的集合,与HashMap不同,TreeMap底层只有一个红黑树的结构(对红黑树不了解或者不熟悉的和觉得文字太枯燥的,推荐一个在线演示地址: https://rbtree.phpisfuture.com/ ),结点TreeMap类的内部类Entry,维护树结构;并且由于红黑树的特性,使得元素保存在TreeMap中默认是根据key值的自然顺序排序,也可以传入特定的比较器实例使TreeMap维持指定的顺序。所以,当你既想利用Map的高效查找特性,又...

2020-06-09 00:05:21 532

原创 我的jdk源码(十八):LinkedHashSet类

一、概述LinkedHashSet类也是集合家族中的一员,LinkedHashSet类是Set类的一个实现,具有set集合不重复的特点,同时具有可预测的迭代顺序,也就是我们插入的顺序。那么具体如何实现,请看源码解析。二、源码解析 1. 类的声明public class LinkedHashSet<E> extends HashSet<E> implements Set<E>, Cloneable, java.io.Seria...

2020-06-07 23:31:55 201

中高级项目管理师70天突破计划.pdf

为了更有效的学习和通过软考,特别制定的70天突破项管软考的复习计划建议,以便大家合理安排时间,积极备考,争取顺利通过!

2020-05-25

空空如也

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

TA关注的人

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