自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 资源 (5)
  • 收藏
  • 关注

原创 Arthas 排查工具

Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。Arthas 官方文档Arthas 代码仓库这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?

2023-12-26 13:34:16 824 1

原创 共识算法介绍

ZAB 协议主 要用于构建一个高可用的分布式数据主从系统,即 Follower 是 Leader 的从机,Leader 挂了, 马上就可以选举出一个新的 Leader,但平时它们都对外提供服务。对于分布式系统,网络环境相对是不可控的,出现网络分区是不可避免的,因此系统必 须具备分区容错性。在集群启动过程中的 Leader 选举过程(算法)与 Leader 断连后的 Leader 选举过程稍微 有一些区别,基本相同 若进行 Leader 选举,则至少需要两台主机,这里以三台主机组成的集群为例。

2023-12-26 10:46:35 1065

原创 深入浅出Java虚拟机

JVM指令主要分为:本地变量表到操作数栈类指令、操作数栈到本地变量表类指令、常数到操作数栈类指令、将数组指定索引的数组推送至操作数栈类指令、将操作数栈数存储到数组指定索引类指令、操作数栈其他相关类指令、运算相关类指令、条件转移类指令、类和数组类指令和其他指令。i开头的指令操作数类型是integer类型,l开头的指令操作数类型是long类型,f开头的指令操作数类型是float类型,d开头的指令操作数类型是double,a开头的指令操作数类型是引用类型(reference)。其他的指令主要用于操作数栈。

2023-12-26 10:43:22 853

原创 JVM运行时数据区与JVM指令集

一、程序计数器(ProgramCounter)具有线程隔离性占用的内存空间非常小,可以忽略不计java虚拟机规范中唯一一个没有规定任何OutofMemeryError的区域程序执行的时候,程序计数器是有值的,其记录的是程序正在执行的字节码的地址二、虚拟机栈( Java Stack )一个线程对应一个栈,一个栈对应多个方法栈帧, 栈帧包含局部变量表、操作数栈、动态连接、方法出口等int i = 8;i = i++; 0 bipush 8 压栈 2 istore_1 赋值出栈 3 .

2021-07-20 17:51:52 167 1

原创 MySQL的事务详解

MySQL中的日志binlog, undolog, redolog, relaylog, errorlog, slowlog只有innodb存储引擎有 redolog,undolog所有存储引擎都有binlog,errorlog,relaylog,slowlog既然有binlog,为什么还需要redolog,undolog?因为在mysql刚开始诞生的时候,并没有innodb引擎,用的是myisam引擎,它不支持事务。innodb引擎后来被创造之后,一开始是以插件的形式运行的,但是在5.5版本

2021-06-26 20:57:37 140

原创 JMM规范与对象结构

JMM规范硬件层数据一致性协议:intel使用MESI Cache一致性协议。有多种缓存协议参考文章:https://www.cnblogs.com/z00377750/p/9180644.html缓存锁实现之一,但是有些无法被缓存的数据或者跨越多个缓存行的数据依然必须使用总线锁读取缓存以cache line 为单位,目前64bytes位于同一行的缓存行数据,被两个不同CPU锁定,产生相互影响的伪共享问题解决使用缓存行的对齐能够提高效率合并写技术:WCBuffer(4个字节,很快)

2021-05-24 16:36:38 158 2

原创 JVM中Class的加载过程

Class加载过程一、Loading加载是指通过动态计算来查找具有特定名称的类或接口类型的二进制形式的过程LazyLoading五种情况new、get-static、put-static、invoke-static指令,访问final变量除外java.lang.reflect对类进行反射时调用初始化子类的时候,父类首先初始化虚拟机启动时。被执行的主类必须初始化动态语言支持java.lang.invoke.MethodHandle解析的结果为REF>get-s

2021-05-12 15:38:09 143 1

原创 JavaWeb开发项目搭建

WEB开发项目搭建创建spring mvc 版本web项目为例一、创建模板Maven项目二、补齐目录结构三、导入依赖包<!-- 依赖的jar --><dependencies> <!-- spring-mvc --> <dependency> <groupId>org.springframework</groupId> <artifactId&

2021-05-09 17:01:17 137

原创 JavaWeb开发环境搭建

WEB开发环境搭建一、TomcatTomcat 是一个免费开源的轻量级应用服务器,是开发和调试WEB 程序的首选开发环境Java环境变量检查是否有误C:\Users\xxx>set JAVA_HOMEJAVA_HOME=D:\_ide\jdk_8\jdk1.8.0_151C:\Users\xxx>java -versionjava version "1.8.0_151"Java(TM) SE Runtime Environment (build 1.8.0_151-

2021-05-09 16:01:23 235

原创 Mybatis入门和进阶

一、Mybatis(初识)MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。一、简介apache的一个开源项目ibatis, 2010年这个项目由apache 迁移到了google code,并且改名

2021-02-13 17:15:11 222

原创 JUC笔记(使用)

JUC笔记(How)三、How线程创建和使用 // 第四种:使用线程池来创建线程 @Test public void test04(){ ExecutorService service = new ThreadPoolExecutor( 2, Runtime.getRuntime().availableProcessors(), 2, Time

2021-02-01 21:51:40 100

原创 JUC笔记(作用)

JUC笔记(Why)二、Whyvolatilevolatile是Java提供的一种轻量级的同步机制。Java 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量,相比于synchronized(synchronized通常称为重量级锁),volatile更轻量级,因为它不会引起线程上下文的切换和调度。但是volatile 变量的同步性较差(有时它更简单并且开销更低),而且其使用也更容易出错。保证可见性线程A操作完后,会将工作内存的值刷新到主存中不保证原子性

2021-02-01 21:50:44 152

原创 JUC笔记(初识)

JUC笔记(What)一、WhatJUC介绍在 Java 5.0 提供了 java.util.concurrent (简称JUC )包,在此包中增加了在并发编程中很常用的实用工具类,用于定义类似于线程的自定义子系统,包括线程池、异步 IO 和轻量级任务框架。提供可调的、灵活的线程池。还提供了设计用于多线程上下文中的 Collection 实现等。JMM介绍Java虚拟机规范中定义了Java内存模型(Java Memory Model,JMM),用于屏蔽掉各种硬件和操作系统的内存访问差异,以实现

2021-02-01 21:49:06 80

原创 JavaWeb笔记(二)

四、ServletServlet 为创建基于 web 的应用程序提供了基于组件、独立于平台的方法,可以不受 CGI (Common Gateway Interface,公共网关接口) 程序的性能限制。Servlet 有权限访问所有的 Java API,包括访问企业级数据库的 JDBC API。一、servlet原理生命周期Servlet 初始化后调用 init () 方法。Servlet 调用 service() 方法来处理客户端的请求。Servlet 销毁前调用 destroy() 方法

2020-12-29 11:34:26 251 1

原创 JavaWeb笔记(一)

本人的Javaweb笔记是基于狂神大佬的笔记分享,不足之处请多指教。一、Web采用的是B/S架构,其主要作用是接受客户端的请求,响应相应的服务器资源。主要的服务器软件:微软的信息服务器(IIS),和Apache。分为静态和动态两种资源静态资源:请求的资源在服务器上响应的都是同一份不会发生变化。例:HTML、CSS动态资源:会根据不同的请求内容,响应的结果会发生不同的变化。例: Servlet/ISP,ASP,PHPJavaweb应用的组成部分HTML、CSS、JSse

2020-12-29 11:33:07 179 1

原创 Android开发真机与本地服务器调试

问题描述:手机与电脑处在同一网段,但是服务端与手机端不能进行接口通信。解决方式:一、问题定位:IP的固有化,Retrofit对象的单例模式创建。导致接口引用的都是同一个生成的单列对象,baseUrl的请求路径不能动态变更。 public static String BASEURL = AppConstant.BASE_URL; private static Retrofit retrofit; private static RetrofitManager retrofit

2020-12-25 15:41:42 530

原创 Android中Retrofit的封装使用

一、大致介绍:Retrofit:Square 基于OkHttp 实现的一款针对Android 网络请求的框架OkHttp: Square 开源的网络请求库RxJava:使得异步操作变得非常简单二、功能分离Retrofit 针对请求的数据和请求的结果,使用接口的方式呈现OkHttp 针对请求的过程RxJava 针对异步,各种线程之间的切换三、使用过程一、添加依赖库 //RxJava compile 'io.reactivex:rxjava:1.

2020-12-19 18:48:00 802 2

原创 Collection的底层了解

Collection(JDK1.2)单列数据的存储、数组的存储形式、数据的可重复性(List)、数据的不可重复性(Set)、List(JDK1.2)单列数据的存储、数据可重复性、数据有序性ArrayList(JDK1.2)概念:Object的数组存储、数据有序性、数据可重复性、查询快底层:默认初始化为10、扩容机制为1.5倍【oldCapacity + (oldCapacity >> 1)】数组初始化:jdk8前是创建时、后是第一次添加数据时存储自定义类需要重写

2020-12-16 17:01:56 236 1

原创 HashMap的底层理解

Map(JDK1.2)双列数据的存储、key-value键值对形式存储、数据的无序性、数据不可重复性Map的底层原理(JDK1.8)数据结构:keySet+values+entrySetkeySet概念:Map中key的单列不可重复的Set、可以存储nullkey要重写hashCode、equals方法values概念:Map中value的单列可重复的Collection、可以存储nullentrySet概念:Map中key-value的单列不重复的Set

2020-12-16 17:01:04 97 1

原创 Python中format函数

补齐格式:{:*^30}: 为引导符号***** 为补齐的字符可以是其他字符代替默认是空格^ 为补齐方式:^为中间对齐、>为右对齐、<为左对齐30 为字符所补齐后占的宽度str_01 = '1234'int_01 = 1234# 补齐格式 30表示总长度30,*表示用*填充不足的部分 *可以使用其他字符代替print('{0:*^30}'.format(str_01)) # 中间对齐print('{0:*>30}'.forma..

2020-11-30 19:15:31 1242 1

原创 MybatisPlus的进阶配置

五、乐观锁**主要适用场景:**当要更新一条记录的时候,希望这条记录没有被别人更新,也就是说实现线程安全的数据更新乐观锁实现方式:取出记录时,获取当前version更新时,带上这个version执行更新时, set version = newVersion where version = oldVersion如果version不对,就更新失败并添加 @Version 注解@Version@TableField(fill = FieldFill.INSERT)private Integ

2020-11-28 20:20:07 602

原创 MybatisPlus的基础配置

一、基础配置在 application.properties 配置文件中添加 MySQL 数据库的相关配置:mysql5# mysql数据库连接spring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plusspring.datasource.username=rootspring.datasource.passw

2020-11-28 20:18:34 402

原创 查找算法的逐步深入

一、线性查找思想:从头到尾依次查找线性查找又称顺序查找,是一种最简单的查找方法,它的基本思想是从第一个记录开始,逐个比较记录的关键字,直到和给定的K值相等,则查找成功;若比较结果与文件中n个记录的关键字都不等,则查找失败代码 private static int seqSearch01(int[] arrs, int i) { // 线性查找是逐一比较,发现发现相同值就放回下标 for (int j = 0; j < arrs.length; j++) { if(arrs

2020-11-28 19:38:31 244

原创 排序算法【O(nlogn)与O(n*k)】

一、快速排序思想: 将数据根据规定的某个值分为大小两边的序列,进下来的两边再根据规定的某个值进行通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。下面分为两种情况,按第一个值和按中间值进行比较排序根据中间值排序代码(经过测试效率较高)private static void subSort02(int[] data,int start,int

2020-11-28 18:24:19 237

原创 Java中对多线程理解

一、概念程序、进程、线程的基本概念程序:为了完成特定任务,用某种语言编写的一组指令集。一段静态的代码块,静态对象进程:正在运行的一个程序,相当于是一个程序执行的生命周期过程。线程:进程内的一条执行路线,拥有独立的运行栈和程序计数器(pc)单线程与多线程的区别单线程:相当于程序运行时只有一条主线流程流式程序速度上运行快多线程相当于程序运行时有多条主线流程运行提高应用程序的响应提高CPU的利用率改善程序结构,将复杂的进程拆分为多个线程运行二、使用Java的一门支

2020-11-26 22:39:48 82

原创 Java中对异常理解

一、概念Java程序在执行过程中所发生的异常事件可分为两类:Error :Java虚拟机无法解决的严重问题。如:JVM系统内部错误、资源耗尽等严重情况。比如:StackOverflowError和OOM。一般不编写针对性的代码进行处理。Exception: 其它因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理。通常可以处理的异常有两类:编译时异常在javac命令阶段编译时出现的异常编译器要求Java程序必须捕获或声明所有编译时异常。运行时异常在ja

2020-11-26 22:37:04 74

原创 排序算法【O(n^2)】

概念:将一个数据元素(或记录)的任意序列,重新排列成一个关键字有序的序列。分类:内部排序:将需要处理的数据全部加载到内部存储器中进行排序插入排序插入排序希尔排序选择排序选择排序堆排序交换排序冒泡排序快速排序归并排序基数排序外部排序:数量量过大,无法全部加载到内存中,需要借助外部存储进行排序一、冒泡排序思想:两个相邻元素进行比较交换通过对待排序序列从前往后,依次比较相邻元素的值,若发现后一个比前一个大就进行交换,使得较大元素逐渐从前移向后部,

2020-11-24 17:59:49 119

原创 算法之数据结构

一、定义程序=数据结构+算法数据结构是一门研究数据组织方式的学科有了编程语言也就有了数据结构,数据结构是程序编写更加优美,更加有效率的基石数据结构是算法的基础,换言之,想要学好算法,需要把数据结构学到位二、结构分为:线性结构与非线性结构线性结构线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的关系线性结构有两种不同的存储结构,即顺序存储结构(数组)和链式存储结构(链表)。顺序存储的线性表称为顺序表,顺序表中的元素是连续存储链式存储的线性表称为链表,链表存储的元素不一定

2020-11-19 18:41:43 82

原创 java中抽象与接口

抽象定义:将父类中无法统一实现的行为进行抽象化,由子类具体实现这些行为。形式:abstract关键字来修饰类叫抽象类,修饰方法叫抽象方法,没有具体的实现。含有抽象方法的类必须声明为抽象类不能实例化,有构造器。只能被用来继承,必须要重写抽象方法。不能用abstract修饰变量、代码块、构造器不能用abstract修饰私有方法、静态方法、final的方法、final类可以有独自的方法和属性应用:模板方法设计模式当功能内部一部分实现是确定的,一部分实现是不确定的。这时可把不确定的部分

2020-11-19 18:38:51 46

原创 java中主要的关键字

一、this相当于是指向本身的对象变量在方法内部使用,相当于对象的引用this关键字可以区分出来属性和局部变量在构造器中使用,相当于是初识对象this关键字必须在构造器的首行二、super在Java类中使用super来调用父类中的指定操作尤其当子父类出现同名成员时,可以用super表明调用的是父类中的成员super的追溯不仅限于直接父类(可以是更高级父类)super和this的用法相像,this代表本类对象的引用,super代表父类的内存空间的标识调用父类的构造器

2020-11-17 14:11:47 234

原创 java对象的三大特征

面向过程(POP)与面向对象(OOP)面向过程:以事件实现过程为中心,将各个步骤实现变为函数。以函数为最小单位,进行实现过程优点:流程化使编程过程明确、结合数据结构开发高效率缺点:精力耗费大、代码重用性底、扩展性差、后期维护比较大面向对象:以对象功能调用为中心,将事件各主体抽象为类,类中实例化对象包含各个具体功能行为,以对象调用来实现模块间的相互调用优点:程序模块化和结构化符合思维方式、易扩展、代码重复率高、低耦合、易维护缺点:内存开销大(无用的结构体系较多)、性能低(基于的思维模式不

2020-11-17 14:11:02 393

原创 java类以及类的成员

一、基本概念类和对象是面向对象设计的核心概念类是对一类事物的描述,是抽象、概念的定义。对象是实际存在的该类事物的每一个个体类的成员属性(filed):对应类中的成员变量行为(method):对应类中的成员方法构造器:类中的默认初识化值代码块:对Java 类或对象进行初始化内部类:类的成员使用、类的使用对象的创建和使用通过new关键字对类进行创建通过对象名.对象成员来访问属性和方法匿名对象是只能创建一次,类的访问机制在一个类中的访问机制:类中的方法可

2020-11-17 14:10:05 235

原创 java中数组介绍

一、概念为多个相同类型的数据按照一定顺序排列的集合进行统一管理的被称为数组。数组名、下标(索引)、元素、数组的长度(一旦确定,不可修改)数组本身是引用数据类型,但其集合存储的数据元素可以是基本数据类型和引用数据类型创建数组对象会在内存中开辟一块连续的空间,数组对象引用的是连续空间的首地址二、使用初始化分为两种动态初始化、静态初始化动态初始化:数组的空间申请于赋值操作分开进行静态初始化:数组的空间申请与赋值同时进行动态:int[] arrs = new intp[3];arr

2020-11-17 14:08:58 95

原创 java运算符与流程控制

java运算符与流程控制流程控制分为顺序结构、 分支结构、循环结构顺序结构程序从上而下执行流程,简单的例子如main的从上而下执行分支结构if-else、switch-case两种分支语句。但是if-else的语句要比switch-case的范围大,在相同情况下,优先推荐使用switch-case语句。三元运算符与if-else优先使用三元if-else有三种形式if、if-else、if-else if-elseswitch-case语句表达式指定的六种值类型:by

2020-11-11 21:36:36 79

原创 java简介与基本数据类型

JAVA简介与基本数据类型简介java是一门面向对象语言,现如今主流开发在javaEE、大数据、Android三大方向体系javaSE针对桌面开发应用,随着发展逐渐演变为javaEE的入门基础部分javaEE针对WEB应用层级开发,现在的主流开发趋向javaME针对移动端开发,已经基本舍弃。性质语法简单(在c语言的基础上进行改进)面向对象(将各个事物抽象成类来定义实现)可移植性(一次编译到处运行、 运行环境是用 ANSI C 实现 )、健壮性(内置强类型、异常处理、垃圾回

2020-11-09 19:41:38 83

原创 MapReduce之Shuffle详解

Shuffle机制概念:主要是Map阶段之后,Reduce阶段之前对数据的分区、排序、合并、分组过程分区(Partition)概述:为了将不同类型的内容输出到不同文件中,进行分类存储。默认分区:HashPartitioner根据key的hashCode对ReduceTasks个数取模得到的进行分区,用户不能进行设置。底层原理 : (key.hashCode() & Integer.MAX_VALUE) % numReduceTasks自定义Partitioer步骤:

2020-11-05 14:11:55 199

原创 Python数据分析工具之pandas

pandas与 SQL 或 Excel 表类似的,含异构列的表格数据;有序和无序(非固定频率)的时间序列数据;带行列标签的矩阵数据,包括同构或异构型数据;任意其它形式的观测、统计数据集, 数据转入 Pandas 数据结构时不必事先标记。不改变原始的输入数据,而是复制数据,生成新的对象。主要数据结构是 Series(一维数据)与 DataFrame(二维数据)一、数据的基本操作import pandas as pdimport numpy as npprint('pands对象的创建'

2020-11-03 20:28:50 102

原创 Python数据分析工具之numpy

numpy一个强大的N维数组对象 ndarray广播功能函数整合 C/C++/Fortran 代码的工具线性代数、傅里叶变换、随机数生成等功能下面是具体的案列实现,包括了numpy大部分常规操作,可以让开发者快速了解到numpy的使用过程。#!/usr/bin/python# -*- coding: utf-8 -*-# author : acker# date : 2020/11/2import numpy as np# 创建一维数组的方式print("创建数组的方式")ar

2020-11-03 20:27:19 78

原创 Python数据分析工具之matplotlib

matplotlib能将数据进行可视化,更直观的呈现使数据更加客观、更具说服力Python 2D-绘图领域使用最广泛的套件案列:根据案例大家可以去实现其他几种图形的展示#!/usr/bin/python# -*- coding: utf-8 -*-# author : acker# date : 2020/10/31import matplotlib.pyplot as plt,matplotlib.font_manager as font_managerimport random

2020-11-03 20:25:50 748

原创 Python数据分析类库简介

本文是快速上手数据分析的几个常用框架的使用过程,而不是详细讲解各个框架的具体使用。通过本文你可以快速了解到框架的使用Anaconda(统一的环境、包管理)matplotlib(主要做数据可视化图表)numpy(科学计算库的基础库)pandas( 最强大、最灵活、可以支持任何语言的开源数据分析工具 )Anaconda预装了大量常用 Packages。完全开源和免费。额外的加速和优化是收费的,但对于学术用途,可以申请免费的 License。对全平台和几乎所有Python版本

2020-11-03 20:24:03 207 2

Java面试第二季.xmind

JUC多线程及并发、JVM+GC解析、GitHub骚操作、消息中间件MQ、NOSQL数据库Redis

2021-02-22

ChromeSetup.exe

官方正版google离线安装

2021-02-22

计算二级题库软件.zip

计算机二级各类科目的刷题软件

2021-02-13

jdk1.8-window-linux.zip

支持window和Linux两个系统的Java开发环境

2021-02-13

eclipse-2020-09.zip

eclipse 2020年9月份版本的Java集成开发环境,基于jdk11开发。包含JavaSE、JavaEE两个版本。官网正版下载,无任何插件。

2021-02-13

空空如也

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

TA关注的人

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