自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 资源 (6)
  • 收藏
  • 关注

转载 Kafka(十):Kafka概述

第1章Kafka概述1.2.2消息队列的两种模式(1)点对点模式(一对一,消费者主动拉取数据,消息收到后消息清除)消息生产者生产消息发送到Queue中,然后消息消费者从Queue中取出并且消费消息。消息被消费以后,queue中不再有存储,所以消息消费者不可能消费到已经被消费的消息。Queue支持存在多个消费者,但是对一个消息而言,只会有一个消费者可以消费。本教程由尚硅谷教育大数据研究院出品,如需转载请注明来源,欢迎大家关注尚硅谷公众号(atguigu)了解更多。...

2021-01-31 21:16:03 238

原创 NIO(2):基本原理从NIO到堆外内存-1

目录1、CPU/内存/硬盘2、内核2.1、网络IO流程/数据传输分析2.2、应用程序是如何拿到数据提供给CPU计算?2.3、网络中的数据如何到达内存?2.4、同步调用/异步调用、阻塞/非阻塞2.5、阻塞IO2.6、当有多个客户端到达网卡Thread是否处理?2.7、非阻塞IO2.8、IO多路复用3、BIO/NIO/AIO3.1、BIO重要组件1、CPU/内存/硬盘IO设备:网卡/硬盘等,数据从网络经过网卡直接放到内存中的DMA或从硬盘读数据到DMA,C

2021-01-23 00:00:51 285 2

转载 Java线程基础(8): Java 线程状态之 TIMED_WAITING

在上一篇章中我们谈论了 WAITING 状态,在这一篇章里,我们来看剩余的最后的一个状态:TIMED_WAITING(限时等待)。定义一个正在限时等待另一个线程执行一个动作的线程处于这一状态。A thread that is waiting for another thread to perform an action for up to a specified waiting time is in this state.更详细的定义还是看 javadoc(jdk8):带指定的等

2021-01-21 16:15:41 1011

转载 Java 8 中使用 Stream 方式处理数据

目录一、什么是 Stream二、Stream 操作分类三、Stream 特性四、数据转换为 Stream五、Stream 转换得到指定类型数据六、Stream 对于基本类型的封装七、Stream 的串行与并行1、Stream 的并行介绍2、Stream 并行示例八、Stream 中间操作(有状态)常用 API1、distinct2、sorted3、skip4、limit九、Stream 中间操作(无状态)常用 API1、map2、pe.

2021-01-20 21:08:20 2161

转载 Java 8 中使用 Optional 处理 null 对象

目录一、Optional 简介二、Optional 类描述三、Optional 常用方法及使用示例1、静态方法 Optional.of()2、静态方法 Optional.ofNullable()3、对象方法 isPresent()4、对象方法 get()5、对象方法 ifPresent()6、对象方法 orElse()7、对象方法 orElseGet()8、对象方法 orElseThrow()9、对象方法 map()10、对象方法 flatMap()1

2021-01-20 20:14:13 3950

转载 Circuit Breaker熔断器

在分布式环境中,我们的应用可能会面临着各种各样的可恢复的异常(比如超时,网络环境异常),此时我们可以利用不断重试的方式来从异常中恢复(Retry Pattern),使整个集群正常运行。然而,也有一些异常比较顽固,突然发生,无法预测,而且很难恢复,并且还会导致级联失败(举个例子,假设一个服务集群的负载非常高,如果这时候集群的一部分挂掉了,还占了很大一部分资源,整个集群都有可能遭殃)。如果我们这时还是不断进行重试的话,结果大多都是失败的。因此,此时我们的应用需要立即进入失败状态(fast-fail),并采取

2021-01-20 15:38:54 839

原创 Linux(七):/bin/bash和/bin/sh的区别

1、执行脚本test.sh脚本test.sh内容:#!/bin/shsource pcy.sh #pcy.sh并不存在echo hello1.1、执行./test.sh屏幕输出为:./test.sh: line 2: pcy.sh: No such file or directory由此可见,在#!/bin/sh的情况下,source不成功,不会运行source后面的代码。修改test.sh脚本的第一行,变为#!/bin/bash,再次执行./test.sh,屏幕输出为.

2021-01-20 15:22:58 2025 1

原创 Java性能调优面试-4

1、线程池1.1、Thrift的原理理解1.2、服务调用方A调用服务B,如果A的QPS为1000,通过Thrift调用内部使用线程池内部128个线程,即通过128个线程并发调用服务B,如果服务B内部开了线程池20个线程,那么有<128*20的线程并发执行,不等于128*20是因为:某一个线程完成任务后会处理下一个任务。...

2021-01-20 00:20:15 151 3

转载 Java性能调优面试-7

gcviewer待整理官网:https://github.com/chewiebug/GCViewerG1 Gabage Collector-XX:+UnlockExperimentalVMOptions -XX:+UseG1GC5部分参数第一部分:column title meaning of the column n number of events found min (s) duration of s...

2021-01-19 11:21:01 143

转载 Java性能调优面试-6

一、JVM调优参数简介1、 JVM参数简介-XX 参数被称为不稳定参数,之所以这么叫是因为此类参数的设置很容易引起JVM 性能上的差异,使JVM 存在极大的不稳定性。如果此类参数设置合理将大大提高JVM 的性能及稳定性。不稳定参数语法规则:1.布尔类型参数值 -XX:+<option> '+'表示启用该选项 -XX:-<option> '-'表示关闭该选项2.数字类型参数值: -XX:<option>=&lt...

2021-01-19 11:19:28 358

转载 Java性能调优面试-5

深入浅出JVM调优基本概念:JVM把内存区分为堆区(heap)、栈区(stack)和方法区(method)。由于本文主要讲解JVM调优,因此我们可以简单的理解为,JVM中的堆区中存放的是实际的对象,是需要被GC的。其他的都无需GC。下图文JVM的内存模型从图中我们可以看到,1、JVM实质上分为三大块,年轻代(YoungGen),年老代(Old Memory),及持久代(Perm,在Java8中被取消,我们不做深入介绍)。2、垃圾回收GC,分为2种,一是Minor GC,可以.

2021-01-19 11:17:22 226

原创 Java性能调优面试-3

1、GC调优步骤打印GC日志-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:./gc.log1、因为Minor GC执行时间非常短对性能影响不大,当MinorGC执行次数非常多且密集,也是需要分析。2、正常FullGC间隔几十s或几分钟。此时仅仅间隔5s则不正常。3、元空间:在程序刚加载时会从0增长,因为需加载各种jar包而在程序正常执行时空间不变。 此时增大元空间大小。...

2021-01-18 10:22:04 281 2

原创 Java性能调优面试-2

1、JVM整体架构2、JVM内存模型1、类装载子系统将字节码文件【.class】装载到运行时数据区,即装载到方法区;2、执行引擎负责执行...

2021-01-17 16:32:41 539 6

原创 Mysql基础(21):建立二级索引数据库索引

目录1、索引本质2、索引数据结构3、索引是怎么支撑千万级表的快速查找?4、如何基于索引b+树精准简历高性能索引?5、联合索引底层数据结构是怎么样的?1、索引本质 索引是帮助Mysql高效获取数据的排好序的数据结构2、索引数据结构 二叉树、红黑树、Hash表、B-TreeMysql从第一行将数据从磁盘load到内存与sql对比,每一次load叫做一次IO。此时给Col2添加索引,Col2作为一个二叉树,二叉树也存储在磁盘上。每个节点保存为一个map&...

2021-01-16 23:07:20 1376

原创 刷题(五):1332. 删除回文子序列

1、删除回文子序列给你一个字符串s,它仅由字母'a' 和 'b'组成。每一次删除操作都可以从 s 中删除一个回文 子序列。返回删除给定字符串中所有字符(字符串为空)的最小删除次数。「子序列」定义:如果一个字符串可以通过删除原字符串某些字符而不改变原字符顺序得到,那么这个字符串就是原字符串的一个子序列。「回文」定义:如果一个字符串向后和向前读是一致的,那么这个字符串就是一个回文。class Solution { public int removePalindromeSub(...

2021-01-12 10:50:15 174

转载 如何读懂火焰图?

软件的性能分析,往往需要查看 CPU 耗时,了解瓶颈在哪里。火焰图(flame graph)是性能分析的利器。本文介绍它的基本用法。一、perf 命令让我们从 perf 命令(performance 的缩写)讲起,它是 Linux 系统原生提供的性能分析工具,会返回 CPU 正在执行的函数名以及调用栈(stack)。通常,它的执行频率是 99Hz(每秒99次),如果99次都返回同一个函数名,那就说明 CPU 这一秒钟都在执行同一个函数,可能存在性能问题。$ sudo perf

2021-01-11 22:05:53 1230

原创 Java基础类(三):Character类

1、属性static int MIN_RADIX :返回最小基数。static int MAX_RADIX :返回最大基数。static char MAX_VALUE :字符类型的最大值。static char MIN_VALUE :字符类型的最小值。static Class TYPE :返回当前类型。2、构造函数Character(char value):以char参数构造一个Character对象。3、方法1. char charValue() :返回字符对象的值。2. i

2021-01-10 13:39:24 415

原创 Java基础类(十一):StringBuilder类

java.lang.Objectjava.lang.StringBuilderAll Implemented Interfaces:Serializable,Appendable,CharSequencepublic final class StringBuilderextends Objectimplements Serializable, CharSequence一个可变的字符序列。 此类提供与StringBuffer的API,但不保证同步。 此类设计用作简易替换为St...

2021-01-10 13:29:41 288

原创 刷题(六):1374. 生成每种字符都是奇数个的字符串

1374. 生成每种字符都是奇数个的字符串给你一个整数 n,请你返回一个含 n 个字符的字符串,其中每种字符在该字符串中都恰好出现 奇数次 。返回的字符串必须只含小写英文字母。如果存在多个满足题目要求的字符串,则返回其中任意一个即可。示例 1:输入:n = 4输出:"pppz"解释:"pppz" 是一个满足题目要求的字符串,因为 'p' 出现 3 次,且 'z' 出现 1 次。当然,还有很多其他字符串也满足题目要求,比如:"ohhh" 和 "love"。class Solution

2021-01-10 13:19:24 155

原创 Java基础类(四):String类

String类里面常用的20个方法和长度有关的方法返回类型 方法名 作用int length() 得到一个字符串的字符个数(一个中文是一个字符,一个英文是一个字符,一个转义字符是一个字符)和数组有关的方法返回类型 方法名 作用byte[] getBytes() 将一个字符串转换成字节数组 char[] toCharArray() 将一个字符串转换成字符数组 String[] split(String) ...

2021-01-10 00:08:53 10505 2

原创 刷题(四):819. 最常见的单词

1、最常见的单词给定一个段落 (paragraph) 和一个禁用单词列表 (banned)。返回出现次数最多,同时不在禁用列表中的单词。题目保证至少有一个词不在禁用列表中,而且答案唯一。禁用列表中的单词用小写字母表示,不含标点符号。段落中的单词不区分大小写。答案都是小写字母。class Solution { public String mostCommonWord(String paragraph, String[] banned) { paragraph += "

2021-01-09 16:12:53 201

原创 刷题(三):35. 搜索插入位置

35. 搜索插入位置给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。解题思路标签:二分查找 如果该题目暴力解决的话需要O(n)O(n)的时间复杂度,但是如果二分的话则可以降低到O(logn)O(logn)的时间复杂度 public int searchInsert(int[] nums, int target) { int left = 0, right = ...

2021-01-09 01:09:18 103

转载 Java接口中属性、方法、接口修饰符介绍

1、java接口的修饰符abstract(interface本身就是抽象的,加不加abstract都一样)2、接口中字段的修饰符public static final(默认不写)如下解释:public: 使接口的实现类可以使用这个常量static:接口不涉及和任何具体实例相关的细节,因此接口没有构造方法,不能被实例化,没有实例变量,只有静态(static)变量。static修饰就表示它属于类的,随的类的加载而存在的,当JVM把字节码加载进JVM...

2021-01-04 12:28:20 5648

原创 Java基础(五):Java数组声明与初始化

1、初始化 Java语言中数组必须先初始化,然后才可以使用。 初始化就是为数组的数组元素分配内存空间,并为每个数组元素附初始值。注意:数组完成初始化后,内存空间中针对该数组的各个元素就有个一个默认值: 基本数据类型的整数类型(byte、short、int、long)默认值是0; 基本数据类型的浮点类型(float、double)默认值是0.0; 基本数据类型的字符类型(char)默认值是'\u0000';...

2021-01-04 11:31:27 20258

转载 Java内存分配的原理

本文将由浅入深详细介绍Java内存分配的原理,以帮助新手更轻松的学习Java。这类文章网上有很多,但大多比较零碎。本文从认知过程角度出发,将带给读者一个系统的介绍。进入正题前首先要知道的是Java程序运行在JVM(Java VirtualMachine,Java虚拟机)上,可以把JVM理解成Java程序和操作系统之间的桥梁,JVM实现了Java的平台无关性,由此可见JVM的重要性。所以在学习Java内存分配原理的时候一定要牢记这一切都是在JVM中进行的,JVM是内存分配原理的基础与...

2021-01-03 21:22:20 291

转载 Java程序在内存中运行详解

Java语言是一门编译型语言,需要将编写的源代码(.java文件)编译之后(.class字节码文件),通过 jvm 才能正常的执行,下面的内容记录了一个程序从编写到执行整个过程在内存中是怎么一个变的。一、JVM的内存分布先了解下 JVM 的内存分布,因为Java程序想要运行,就要依靠 JVM,可以把JVM理解成Java程序和操作系统之间的桥梁,JVM 实现了Java 的平台无关性,由此可见JVM的重要性。所以在学习 Java 内存分配原理的时候一定要牢记这一切都是在 JVM 中进行的,JVM 是内存

2021-01-03 21:08:05 2096

原创 Java匿名内部类

1、匿名内部类也就是没有名字的内部类正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口2、匿名内部类的定义先看匿名内部类的定义的语法格式:new 实现接口(){ //匿名内部类类体部分}new 父类构造器(实参列表){ //匿名内部类类体部分}为什么匿名内部类的定义有这两种方式呢?这是因此这两种方式的定义分别对应两种方式,一种是接口,另一种是类。对于实现接口,由于接.

2021-01-03 20:41:21 255

转载 Java内部类

1、内部类就是一个类中还包含着另外一个类如同一个人是由大脑、肢体、器官等身体结果组成,而内部类相当于其中的某个器官之一,例如心脏:它也有自己的属性和行为(血液、跳动)显然,此处不能单方面用属性或者方法表示一个心脏,而需要一个类而心脏又在人体当中,正如同是内部类在外部内当中实例1:内部类的基本结构 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

2021-01-03 20:21:33 156

原创 一个16进制的数占多少字节?(半个字节)

1、1个字节是8位,二进制8位:xxxxxxxx 范围从00000000-11111111,表示0到255。一位16进制数(用二进制表示是xxxx)最多只表示到15(即对应16进制的F),要表示到255,就还需要第二位。所以1个字节=2个16进制字符,一个16进制位=0.5个字节。2、位(bit)就是一个二进制位,即可表示0和1,而字节(Byte)是计算机更通用的计算单位。1字节等于8位,可以代表256个数字(在编程中可以通过这些数字作为判断),int类型一般为4字节,即32位。一个十六

2021-01-03 19:20:33 37060 2

转载 Java实例初始化详解

1、类的主体声明了成员(变量,方法,内部类和接口)、实例初始化、静态初始化和构造器。在对象生命周期之初,Java虚拟机(JVM)在堆上分配足够的存储空间以容纳对象的实例变量。但是当这些存储空间刚被分配的时候,里面包含的数据是无法预测的。如果存储空间就这样被使用,对象的行为也将是不可预测的。为了避免这样的境地,Java保证这块存储空间在被任何代码使用之前至少被初始化为可预测的默认值。2、初始化很重要,因为一直以来,没有初始化的数据都是bug的主要来源。例如,由于未初始化的数据导致的错误经常出现在C代码中,

2021-01-02 16:53:18 1301

转载 Java中静态初始化块、初始化块和构造方法

在Java中,有两种初始化块:静态初始化块和非静态初始化块。它们都是定义在类中,用大括号{}括起来,静态代码块在大括号外还要加上static关键字。非静态初始化块(构造代码块):作用:给对象进行初始化。对象一建立就运行,且优先于构造函数的运行。与构造函数的区别:非静态初始化块给所有对象进行统一初始化,构造函数只给对应对象初始化。应用:将所有构造函数共性的东西定义在构造代码块中。对于普通的类而言,可以放在初始化块中的初始化工作其实完全可以放到构造函数中进行,只不过有时会带来些许不便,如有多个构造器

2021-01-02 16:34:11 850

086、案例实战:每秒仅仅上百请求的系统为什么会因为OOM而崩溃.pdf

086、案例实战:每秒仅仅上百请求的系统为什么会因为OOM而崩溃.pdf

2021-11-14

sqoop详细教程

sqoop详细教程。Apache Sqoop是用来实现结构型数据(如关系数据库)和Hadoop之间进行数据迁移的工具。它充分利用了MapReduce的并行特点以批处理的方式加快数据的传输,同时也借助MapReduce实现了容错。

2018-05-17

matlab实现神经网络

用matlab实现了神经网络,并标注了批注,通俗易懂。易于理解。

2018-01-30

matlab使用小结

matlab基础介绍,每条语句标注清楚,通俗易懂。易于理解。

2018-01-30

lomok.docx

lombok的讲解

2017-08-21

空空如也

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

TA关注的人

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