自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 zookeeper3.5.7源码分析

zookeeper启动源码解析。

2022-10-09 17:52:05 317 1

原创 计算机如何执行减法运算

补数是一种处理有符号数的方法,用于变换数字的符号,通过使用补数将减法中的“-”转换为“+”。例如现在时钟上显示9点钟,想要变换成6点钟,可以逆时针旋转3圈,也可以顺时针旋转9圈。这样达到的效果是相同的。我们将方向定位正负,即-3与+9等价。而数学上称12为模写作(mod 12),而称+9是-3以12为模的补数记为所以+9是-3以12为模的补数,+8是-4以12为模的补数|-5|+ 7 = 12 ,|负数|+补数 = 模 ,所以补数一定为正数。

2022-09-04 16:19:18 4015 1

原创 JUC高并发编程学习2

===================== Callable ===============================创建线程多种方式继承Thread类实现Runnable接口实现Callable接口线程池方式Runnable接口和Callable接口区别是否有返回值是否抛出异常实现名称不同,一个是run 一个是call@FunctionalInterfacepublic interface Runnable { /** * When an ob

2022-04-17 20:06:19 337

原创 JUC高并发编程学习1

什么是JUCJava.util.Concurrent 包进程和线程区别:一个进程中可以有多个线程执行线程状态 public enum State { /** * Thread state for a thread which has not yet started. */ NEW,(新建) /** * Thread state for a runnable thread. A thre

2022-04-14 15:02:55 374

原创 性能监控与调优篇--5 分析GC日志 --B站尚硅谷JVM课程学习

GC日志格式GC分类部分收集:新生代收集(MinorGC/Young GC),老年代手机(Major GC/Old GC),混合收集(Mixed GC)整堆收集:Full GC 收集整个java堆和方法区哪些情况触发Full GC老年代空间不足方法区空间不足显示调用System.gcMinorGC进入老年代的数据平均大小大于老年代的可用内存大对象直接进入老年代 老年代空间不足MinorGC日志解析FullGC日志分析GC日志分析工具GCEasy 在线工具GCVi

2022-04-13 19:01:17 314

原创 性能监控与调优篇--4 JVM运行时参数 --B站尚硅谷JVM课程学习

JVM参数选项类型标准参数选项,比较稳定,以-开头,在cmd中java -help命令得到的就是-X参数选项:非标准-XX参数选项:非标准分类为Boolean类型和非Boolean类型(数值型和字符串型)Boolean型:数值型:字符串型:-XX:HeapDumpPath = /url/a.hprof 设置堆转存文件的路径添加JVM参数选项在idea中 edit configuration运行jar包java -Xms100m -Xmx100m -XX:+

2022-04-13 10:45:57 159

原创 性能监控与调优篇--3 JVM监控及诊断工具--GUI篇-B站尚硅谷JVM课程学习

工具概述JConsoleVisual VMeclipse MATJProfilerArthasjava Mission ControlBtraceFlame Graphs

2022-04-10 20:26:22 494

原创 性能监控与调优篇--2 JVM监控及诊断工具--命令行篇-B站尚硅谷JVM课程学习

概述无监控、不调优jps:查看正在进行的java进程jstat

2022-04-01 16:34:28 1311

原创 性能监控与调优篇--1 概述篇-B站尚硅谷JVM课程学习

背景说明调优概述监控依据:运行日志、异常堆栈、GC日志、线程快照、堆转储快照调优大方向:合理编写代码、充分利用硬件资源、合理进行JVM调优性能优化的步骤性能监控(发现问题)性能分析(排查问题)1)打印GC日志,通过GCView查看2)命令行:jstack、jmap、jinfo3)dump出堆文件性能调优(解决问题)性能评价/测试指标停顿时间:提交请求和返回该请求的相应之间的时间 / 用户线程停顿时间。吞吐量:单位时间之内完成的工作量(web应用) / 用户运行代码的时间占总体

2022-03-30 20:37:11 194

原创 字节码与类的加载篇--4 类的加载器 -B站尚硅谷JVM课程学习

概述所有Class都是由ClassLoader加载到内存中,负责通过各种方式将Class信息的二进制数据流读入JVM内部,转换为一个与目标类对应的Class对象实例。然后交给JVM进行链接和初始化等操作类的加载分类:显示加载和隐式加载显示:Class.forName()或者this.getClass().getClassLoader().loadClass()隐式:通过虚拟机自动加载到内存package chapter204;public class UserTest { publi

2022-03-29 20:11:51 433

原创 字节码与类的加载篇--3 类的加载过程详解 -B站尚硅谷JVM课程学习

概述类的生命周期类的使用过程加载(loading)阶段加载完成的操作加载:将Java类的字节码文件加载到机器内存中,并在内存中构建出Java类的原型–类模板对象。加载完成的操作:查找并加载类的二进制数据,生成Class的实例通过类的全名,获取类的二进制数据流解析类的二进制数据流为方法区内的数据结构创建Class类的实例,表示该类型。作为方法区这个类的各种数据的访问入口获取二进制流的方式:只要所读取的字节码符合JVM规范即可,获取之后转换为一个Java.lang.Class实例类

2022-03-28 21:09:49 473

原创 字节码与类的加载篇--2 字节码指令集与解析举例 -B站尚硅谷JVM课程学习

概述字节码与数据类型与数据类型有关的指令:iload:用于从局部变量表中加载int型的数据到操作数栈中arraylength:操作数组类型对象与数据理性无关的指令:goto:跳转大部分的指令都没有支持整数类型byte、char、和short,boolean类型。编译器会在编译期或运行期将byte和short类型带符号扩展为相应int类型的数据。boolean和char也扩展为int加载和存储指令算术指令类型转换指令对象的常见与访问指令方法调用与返回指令操作数栈管理指令...

2022-03-25 20:28:44 294

原创 字节码与类的加载篇--1 Class文件结构 -B站尚硅谷JVM课程学习

class文件结构 类的加载 执行引擎===》内存的结构与分配===》垃圾回收算法与垃圾回收器===》性能监控(命令行、可视化工具)===》性能优化概述字节码文件的跨平台性:java语言是跨平台的语言 write once,run anywherejava 虚拟机是跨语言的平台JVM 都遵循Java 虚拟机规范java的前端编译器javac编译器,前端编译器,idea默认使用javac编译器AOT编译器:在编译之前字节码文件翻译成机器指令,适用于Linux透过字节码指令看代码

2022-03-23 11:29:58 583

原创 内存与垃圾回收篇--17 垃圾回收器 -B站尚硅谷JVM课程学习

GC分类与性能指标按线程数分:串行垃圾回收器(硬件配置低,单CPU;Client模式下)和并行垃圾回收器,都会STW按工作模式分:并发式垃圾回收器(交替工作)和独占式垃圾回收器按碎片处理方式:压缩式垃圾回收器和非压缩式垃圾回收器(指针碰撞、维护空闲列表)按工作的内存区间分:年轻代垃圾回收器和老年代垃圾回收器不同的垃圾回收器概述Serial回收器:串行回收parNew回收器:并行回收Parallel回收器:吞吐量优先CMS回收器:低延迟G1回收器:区域化分代式垃圾回收器总结GC日志

2022-03-17 11:37:43 181

原创 内存与垃圾回收篇--16 垃圾回收相关概念 -B站尚硅谷JVM课程学习

System.gc的理解与Runtime.getRuntime().gc()调用一样会触发显示 Full GC提醒jvm的垃圾回收新给,但无法保证对垃圾收集器的调用垃圾回收是自动进行的,无须手动调用调用System.runFinalization 强制调用使用引用的对象的finalize方法内存溢出与内存泄露内存溢出(OOM):Full GC后内存仍然不够用JVM大的堆内存设置不够代码中创建了大量对象,并且长时间不能被垃圾回收器收集内存泄露(Memory Leak):只有对象不再

2022-03-15 20:22:29 246

原创 内存与垃圾回收篇--15 垃圾回收相关算法 -B站尚硅谷JVM课程学习

标记阶段:引用计数算法对象死亡:没有被任何活的对象引用引用计数:对每个对象保存一个整型的引用计数器属性,用于记录对象被引用情况优点:实现简单;判断效率高,回收没有延迟性缺点:需要单独的字段存储计数器,增加存储开销每个赋值都要更新计数器,增加时间开销无法循环引用Python使用引用计数算法进行垃圾回收,解决循环引用:手动解除弱引用标记阶段:可达性分析算法根搜索算法、追踪性垃圾收集实现简单、执行高效、解决循环引用问题,防止内存泄露实现思路:根对象集合(一组必须活跃的引用)为

2022-03-14 20:42:21 727

原创 内存与垃圾回收篇--14 垃圾回收概述 -B站尚硅谷JVM课程学习

什么是垃圾垃圾:没有任何指针指向的对象为什么需要GC自动内存管理,降低内存泄露和内存溢出风险关注:方法区和堆区频繁手机新生代较少手机老年代基本不动元空间早期垃圾回收Java垃圾回收机制...

2022-03-14 17:26:23 866

原创 内存与垃圾回收篇--13 StringTable -B站尚硅谷JVM课程学习

String的基本特性字符串 String s1 =“abc” 字面量的定义方式; String s2 = new Strinng(“hello”)final 不可被继承实现Serializable 支持序列化 ,实现Comparable 可比较大小1.8及以前内部定义了final char[] value用于存储字符串,jdk9改为byteString的内存分配String的基本操作字符串拼接操作intern()的使用StringTable的垃圾回收G1的String去重操作

2022-03-13 18:50:45 247

原创 内存与垃圾回收篇--12 执行引擎-B站尚硅谷JVM课程学习

执行引擎概述虚拟机的执行引擎是由软件自行实现的,不受物理条件制约,能够执行不被硬件直接支持的指令集形式将字节码翻译成机器指令java代码编译执行过程橙色:javac编译器(和JVM无关)绿色(解释过程)/蓝色(编译过程):字节码的执行是由JVM执行引擎完成的解释器:逐条翻译JIT编译器:将源代码翻译成机器语言机器码、指令、汇编语言机器码:0101001指令:inc、mov指令集:x86指令集汇编语言:助记符代替操作码,要翻译成机器指令高级语言字节码:中间状态的二进制码

2022-03-07 20:47:35 174

原创 内存与垃圾回收篇--11直接内存--B站尚硅谷JVM课程学习

直接内存不是虚拟机运行时数据区的一部分,也不是JVM规范定义的内存区域Java堆外的、直接向系统申请的本地内存来源NIO(new IO / Non-Blocking IO),通过堆中的DirectoryBuffer操作Native内存public class BufferTest { private static final int BUFFER = 1024 * 1024 * 1024; //1GB public static void main(String[] args)

2022-03-07 13:48:53 132

原创 内存与垃圾回收篇--10对象实例化内存布局与访问内存--B站尚硅谷JVM课程学习

对象实例化创建对象方式new最常见变形1:XXX的静态方法变形2:XXXBuilder/XXXFactory的静态方法Class的newInstance:反射方式,只能调用空参的构造器,必须是publicConstructor的newInstance(XXX):反射方式,可以调用空参,带参构造器,权限没有要求使用clone:不需要任何构造器,当前类需要实现CLoneable接口,实现clone反序列化:从文件、网络中获取一个对象的二进制流第三方库:Objenesi

2022-03-06 20:29:18 129

原创 内存与垃圾回收篇--09方法区--B站尚硅谷JVM课程学习

栈、堆、方法区的交互关系从线程是否共享角度图中元空间又称为方法区方法区的理解线程共享独立于Java堆外的内存空间在JVM启动时被创建,物理内存可以不连续可选择固定大小、可扩展方法区大小决定系统可以保存多少个类jdk7 OOM:PerGen spacejdk8 OOM:MetaSpace(1)加载大量第三方的jar包(2)Tomcat部署的工程过多(30-50)(3)大量动态生成反射类package chaptert09;public class Test {

2021-12-16 16:14:19 671

原创 内存与垃圾回收篇--08堆--B站尚硅谷JVM课程学习

堆的核心概述一个JVM实例只存在一个堆内存,堆是Java内存管理的核心区域Java堆在JVM启动时被创建,大小也被确定。是JVM管理的最大一块内存空间,大小可调节JVM规范规定堆可以在物理上不连续的内存空间中,但逻辑上要连续所有线程共享Java堆,在这里还划分线程私有的缓冲区(Thread Local Allocation Buffer,TLAB)JVM规范规定几乎所有对象实例以及数组都应在运行时分配到堆上数组和对象可能远远不会存储在栈上,因为栈帧中保存引用,这个引用执行对象或者数组在堆中引用

2021-12-13 20:43:04 365

原创 07本地方法栈--B站尚硅谷JVM课程学习

本地方法栈(1)用于管理本地方法的调用(2)线程私有(3)可设置为固定大小-StackOverflow,也可设置为动态扩展-OOM(4)本地方法栈中登记本地方法,压入栈,执行引擎执行时加载本地方法库当某个线程调用一个本地方法时,就进入了一个全新的不受虚拟机限制的世界,和虚拟机有同样的权限不是所有的Java虚拟机都支持本地方法HotSpot中,将本地方法栈和虚拟机栈合二为一...

2021-12-13 15:27:00 413

原创 06 本地方法接口--B站尚硅谷JVM课程学习

什么是本地方法?Java调用非Java代码的接口定义时,并不提供实现体,类似Java的interface,native修饰的本地方法接口融合不同的编程语言为Java所用,初衷是融合c/c++程序为什么要使用Native method?(1)与Java环境外交互(2)与操作系统交互(3)Sun‘s Java :Sun 解释器用C写的目前该方法使用越来越少,除非与硬件有关的应用...

2021-12-13 15:20:04 140

原创 05 虚拟机栈--B站尚硅谷JVM课程学习

虚拟机栈概述跨平台,指令集小(8位),编译器容易实现,性能下降,指令更多栈:运行时的单位,解决程序的运行问题堆:存储的单位,解决数据存储的问题,比较大的区域每个线程创建时都会创建一个Java虚拟机栈,保存的是栈帧,一个战帧对应一个Java方法,方法调用代表着栈帧的出栈操作与线程相同生命周期主管java乘除的运行,保存局部变量(8种基本数据类型、对象的引用地址)、部分结果,参与方法的调用和返回局部变量 成员变量基本数据类型变量 引用类型变量栈的优点:快速的分配存储,仅此于PC r

2021-12-12 16:45:34 429

原创 04 程序计数器--B站尚硅谷JVM课程学习

PC Register介绍程序计数器寄存器(PC Register),又称为程序钩子,JVM中PC寄存器是对物理PC寄存器的一种抽象模拟。每个线程一份。用来存储下一条指令的地址。运行最快的存储区域每个线程都有自己的PC Register,线程私有存储当前线程正在执行的Java方法的JVM指令地址字节码解释器工作时就是改变计数器的值来选取下一条需要执行的字节码指令没有GC和OOM举例说明package charpter04;public class PCRegisterTest

2021-12-10 19:16:55 277

原创 03 运行时数据区概述及线程--B站尚硅谷JVM课程学习

概述内存(运行时数据区)方法区和堆 是一个进程对应一份程序计数器、本地方法栈和虚拟机栈 是一个线程一份,5组线程共有方法区和堆空间一个虚拟机中只有一个运行时数据区 Runtime线程JVM允许一个程序有多个线程并行执行,支持多线程在Hotspot VM中,每个线程都与操作系统的本地线程直接映射操作系统负责所有线程的安排调度到任何一个可用的CPU上。一旦本地线程初始化成功,就会调用Java线程中的run方法线程:守护线程 和 普通线程...

2021-12-09 19:39:15 801

原创 02 类加载子系统--B站尚硅谷JVM课程学习

1.内存结构系统2.类加载器与类的加载过程类加载器子系统作用:类加载器子系统负责从文件系统或者网络中加载.class文件,class文件在文件开头都有特定的文件标识ClassLoader只负责class文件的加载,至于是否可以运行则由ExecutionEngine决定加载的类信息存放在方法区中,除了类信息,方法区中还会存放运行时常量池信息类的加载过程加载Loading通过类的全限定名获取定义此类的二进制流将字节流所代表的静态存储结构转化为方法区的运行时数据结构在内存中生成一个代

2021-12-09 16:45:29 279

原创 01 JVM与Java体系--B站尚硅谷JVM课程学习

1 前言Java自动动态管理内存,自动垃圾回收2 面向人群及参考书目Java虚拟机规范:《深入理解Java虚拟机》周志明3 Java及JVM简介Java:跨平台语言JVM:跨语言的平台Java内置的虚拟机是HotSpot任何能在JVM平台上执行的字节码格式是相同的,统称为JVM字节码4 Java发展的重大事件5 虚拟机与Java虚拟机6 JVM整体结构7 Java代码执行流程8 JVM的架构模型9 JVM生命周期10 JVM的发展历程...

2021-12-06 14:49:54 96

原创 2021.3.30-蚂蚁金服-后端开发-实习-二面

1 Python装饰器(Decorator)2 Java异常处理机制,自定义异常Java异常分为两类:error,JVM无法解决的问题;exception ,可以处理的问题异常处理机制:将异常处理的程序代码集中在一起,与正常的程序代码分开,Java提供的异常处理是抓抛模型。如果出现异常,会生成一个异常类对象,该异常对象将被交给Java运行时系统,过程称为抛出(throw)异常。try – catch – finally自定义异常类:在Java中要想创建自定义异常,需要继承Throwable或

2021-03-31 21:31:09 443

原创 2021.3.29 腾讯后台开发-实习 一面

1 线程和进程的区别?Java多线程的内存管理进程是资源分配的最小单位,线程是CPU调度的最小单位,一个进程中包含多个线程。内存管理:MM(java内存模型) 描述Java程序中各种内存(线程共享变量)的访问规则。所有变量都存在于主内存中,每个线程都有自己独立的工作内存,线程间不可以直接互相操作其工作内存中的变量,以及主内存的变量,只能以主内存为媒介做改变。多线程的可见性实现有两种方式1) synchronized给线程加锁,实现可见性获取互斥锁–清空工作区内存–从主内存copy值到工作内存–执行

2021-03-31 16:21:40 67

原创 键盘输入构造单链表

package com.hrbust.test01;import java.util.Scanner;class Node {//节点类 int data; //数据域 Node next=null;//指向下一个节点的指针 public Node(int data) {//创建带有值的节点 this.data=data; }}public class test01 { static Node head=null;//头结点 static Node tail=null; publi

2021-03-27 16:35:26 612

原创 2021.3.26美团-大数据开发-实习-一面

select student.id,student.name,book.stu_id ,count(*) as total from student, book wherestudent.id=book.stu_id and student.age=18 and student.gender=‘男’group by book.nameorder by total desc limit 1;面试时没看到book中id是否为主键的问题,如果为主键那么久不能有重复值,假设book的name是没有重复的,.

2021-03-26 20:10:46 525

原创 pandas shift和groupby使用 21年春招字节面试 大数据岗位

pandas库的shift方法的API解释:groupby对数据进行拆分参数介绍by:分组依据axis:轴向 0表示列操作,默认0level:代表标签所在级别as_index:是否以dataframe的索引形式输出,默认为Truesort:是否对分组依据分组标签进行排序group_keys:是否显示分组标签的名称,默认Truesqueeze:是否允许的情况下降维,默认False分组后得到的是一个对象,不能直接查看,而是被存在内存中,输出的是内存地址。查看可以使用一些常用方法:

2021-03-25 16:23:33 178

原创 常数级时间复杂度取栈中最小值 / LeetCode155题

要维护一个最小栈和数值栈class MinStack { Stack<Integer> data; Stack<Integer> min; /** initialize your data structure here. */ public MinStack() { data=new Stack<>();//数据栈中存放全部元素 min =new Stack<>();//栈顶元素即为最小值 .

2021-03-21 16:29:09 136

原创 hive基础知识

1 hive处理非常小的数据集在执行时也会出现延迟情况hive 不提供数据排序、查询cache,也不提供在线事务处理、实时的查询功能和记录级的更新。hive没有专门的存储格式,hive提供了四种数据类型,表、外部表、分区和桶2 hive外部表和内部表的区别外部表被external修饰,内部表没有外部表数据由hdfs管理,内部表数据hive自身管理外部表只删除元数据,hdfs上数据不删除;内部表删除全部数据包括元数据和存储数据外部表的表结构和分区修改需要修改msck repair table,内

2021-03-19 16:23:00 184

原创 快速排序和冒泡排序、归并排序的Java代码

快速排序public class QuickSort { public static void main(String[] args) { int[] arr= {5,1,7,3,1,6,9,4}; QS(arr,0,arr.length-1); for(int i:arr) { System.out.print(i+" "); } } public static void QS(int[] arr, int left,int right) { if(lef

2021-03-10 20:19:43 96

原创 devstack 搭建OpenStack环境

开发环境:Ubuntn 16.04.51修改阿里源先备份命令:sudo cp /etc/apt/sources.list /etc/apt/sources.list.copy命令:sudo vi /etc/apt/sources.list添加一下内容:deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted unive...

2018-11-29 16:54:29 368

原创 pyspark 编程基础学习

1 创建RDDRDD有两种类型操作:转换和行动转换:filter–过滤 map flatmap groupbykey reducebykey行动:count collect first take reduce foreachfilter过滤操作:找出spark存在的所有行构成新的RDDmap(func)操作将每个元素传递给函数,并将结果返回为一个新的RDD。使用numpy包创建数组...

2018-11-29 16:44:00 644

空空如也

空空如也

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

TA关注的人

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