- 博客(25)
- 收藏
- 关注
原创 5. GC垃圾回收
什么是垃圾:在运行中没有任何指针指向的对象.垃圾回收总体上来说分为两步,一:判断对象是否存活,标记垃圾、二:清除垃圾标记阶段的主要算法:清除阶段的主要算法:对于不同代的对象采用不同的收集算法.对于年轻代中的对象,多是朝生夕死的,垃圾较多,使用复制算法来回收对于老年代中的对象,多是长期存活的,垃圾较少,占用内存时间较多,采用标记-清除算法和标记-压缩算法混合的模式来回收在进行GC时会触发STW,增量收集通过交替进行垃圾回收线程和用户线程来减少系统的停顿时间,同样的整体上会增加垃圾回收的成本,同时会降低系统
2022-07-07 17:36:26
386
2
原创 4. 执行引擎
执行引擎用于翻译字节码指令为机器指令交由操作系统执行.java语言是一种半编译半解释型语言,并不是指java需要先编译成class在解释执行.而是值jvm执行引擎中即有解释器又有JIT编译器.使用编译器可以将字节码直接逐行翻译成机器指令后再执行解释器在运行期间将字节码指令直接翻译成机器指令执行JIT编译器后期的效率比解释器要高对于一个被多次调用的方法或者循环次数较多的循环体就是热点代码.会使用JIT编译器编译成机器指令,并在执行过程中替换(栈上替换)hotspot虚拟机的热点代码的探测是基于计数器实现的,
2022-07-07 17:25:18
201
原创 3.运行时数据区
运行时数据区简图:在JDK8中使用元数据区(元空间)代替了方法区,它使用的是本地内存其中本地方法栈,程序计数器,虚拟机栈是线程私有的,每个线程独一份堆区和元数据区和JIT编译产物(代码缓存)是进程独一份的,由线程之间共享的.元数据区和JIT编译产物(代码缓存)在JVM中叫做非堆区(方法区).每个JVM进程都对应着一个Runtime的实例,Runtime也就是运行时数据区内存泄露指空闲空间不足,垃圾回收之后可用空间还是不足将出现OOM内存溢出严格上指对象不被使用了但GC又无法回收的情况.宽泛而言,可以指一些
2022-07-07 14:12:30
388
原创 2. 类加载子系统与JVM数据
主要作用就是从文件系统或网络中加载class文件生成描述类信息的Class类并将类信息放到方法区中类加载子系统只负责加载class,能否执行需要根据执行引擎决定.加载的类信息会放到方法区中,除了类信息,还会存放运行时的常量池,可能还包括字符串字面量和数字常量(这些信息是class文件中常量池的内存映射)Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数,属性和方法等,Java允许用户借由这个Class相关的元信息对象间
2022-07-07 10:29:22
107
原创 1. JVM基本认识
计算机识别高级语言的过程:高级语言 -> 汇编语言 -> 机器语言java文件–前端编译器–>class文件–JVM–>机器指令---->操作系统java编译器是基于栈的指令集架构,另外一种架构是基于寄存器的指令集架构。HotSpot是一种基于栈的指令集架构。基于栈和基于寄存器:简单说明基于栈和基于寄存器的区别,并不是实际的jvm流程.基于栈:首先数据要入栈成如下数据栈操作栈两栈依次取就是:1+2=3指令如下:基于寄存器:1+2=3指令如下:mov eax,1add eax,2JVM规范中
2022-07-07 10:12:08
61
原创 HTTPS协议总论
HTTPS协议是用来解决HTTP协议的不安全性的,HTTP协议是明文传输的.HTTPS在此基础上添加了加解密.HTTPS在HTTP和TCP之间加了一层SSL,不直接和TCP进行交互而是通过SSL来交互SSL(Secure Socket Layer)安全套接字,由网景公司发明,从 3.1 开始被 IETF 标准化并改名为TSL(Transport Layer Security)传输层安全,是信息安全领域的权威标准,现行标准为1.3 (2021/03/07)HTTPS主要解决数据传输的安全性,通讯双方身份的可
2022-07-07 10:01:49
1081
原创 HTTP协议总论
在TCP协议原理中已经讲过HTTP通讯的完整的一个过程,这里不再将过多的tcp内容,详细见TCP协议原理,这里仅介绍一下tcp的报文和特点.http(Hyper Text Transfer Protocol) 超文本传输协议,HTTP是应用层协议,叫做传输协议实际传输是由传输层协议tcp完成的.http协议的数据会封装到tcp的数据部分.特点:http请求的格式由请求行,请求头,请求体构成.请求头和请求体之间需要有空行http响应格式由状态行,响应头,响应正文构成,响应头和响应正文之间需要有空行以从
2022-07-07 09:59:21
69
原创 TCP协议总论
在网络传输中,从一个A主机发送数据到B主机可能会遇到如下问题:1.由于网络传输过程中的bit位错误,解析错误,路由表更新,线路故障等情况.B可能收不到数据包.或者收到有损的数据包.2.A要发送的数据太多,一个以太帧的数据部分无法存储全部信息,只能进行ip分片,发送多个数据包到B,而网络延迟可能导致B收到数据包的顺序是错乱的.4.A可能要发多个应用程序的不同数据包给B,B需要给这些数据包进行归类3.当网络链路中的某些节点处理数据太多导致速度特别慢,需要控制流量TCP的出现就是为了解决以上问题.TCP的特
2022-07-07 09:55:47
6662
原创 UDP协议总论
UDP(User Datagram Protocol)用户数据报协议和TCP(Transmission Control Protocol)传输控制协议是传输层最重要的两个协议.相比TCP,UDP不能验证接收方是否收到,不想TCP那样具有可靠性.UDP只尽最大能力交付,适用于不要求传输质量只要求传输时效性的情况.UDP数据包由标头和数据组成.数据包如下:校验和部分主要是用来校验数据包的正确性,UDP可以通过校验和来提供数据正确性验证,但无法自动修正.有错只能丢弃UDP有如下几个特点:那么相对应的,TCP的特
2022-07-07 09:42:35
538
原创 DNS协议基本原理
总论网络通讯大部分基于TCP/IP,而用户对于ip地址很难记忆.大部分用户都只能记住域名.DNS就是将域名翻译成ip的系统.DNS(Domain Name System)是一种组织成域层次结构的计算机和网络服务命名系统,它用于TCP/IP网络,它所提供的服务是用来将主机名和域名转换为IP地址的工作.DNS协议概论DNS是应用层协议,但实际上DNS是为其他应用层协议(HTTP,SMTP,FTP等)服务的,主要是将主机名转换为ip地址。所有DNS请求和回答报文使用的UDP数据报经过端口53发送为什
2021-03-02 11:06:27
2070
原创 vi的基本使用
VI基本使用基本知识vi有三种模式1.命令行模式2.编辑模式(插入模式INSERT和替换模式REPLACE)3.末行模式按:从命令行模式切换到末行模式按ESC从末行模式或编辑模式切回到命令行模式按插入命令切换到插入模式vi打开文件的命令选项vi temp.txt +100打开temp.txt 将光标定位到100行不加行数只写+ 直接定位到文件末尾vi命令行模式命令插入i: 切换到插入模式,从光标前开始插入I: 切换到插入模式,从行首开始插入a: 切换到插
2021-02-22 21:02:34
2135
原创 数据结构与算法--利用栈结构实现计算器
对于计算一个表达式1+2*3/4,该如何处理,如何处理不同的操作符的优先级栈的特点和队列相反,先进后出.可以把队列类比于一个两头通透的通道,一端进入另一端拿出.而栈是一个一头封闭的通道,从一端压入一端拿出.下面是基于数组的实现,import java.util.List;/** * @Project: StackCalculator * @Description: 一个简单的基于数组的栈实现 * @Creator: sunwei * @CreatDate: 2020/7/4 * @Mo
2020-07-15 20:34:12
296
原创 Eureka报错:...INSTANCES ARE UP WHEN THEY‘RE NOT.
服务已经停止,但eureka server不会剔除服务。eurekaServer默认约定client需要30s发送一次心跳通信进行续约。引入下面两个名词:Renews threshold:server期望在每分钟中收到的心跳次数Renews (last min):上一分钟内收到的心跳次数。ex:eurekaServer每分钟会自己发一次心跳所以threshold值为 1+2n,n为client个数。renews/renews threshold:eureka.server.renewalPer
2020-07-15 20:23:30
112
原创 数据结构与算法--约瑟夫问题的解法1(单向环形链表)
约瑟夫问题的解法1(单向环形链表)0.约瑟夫问题定义问题又称为约瑟夫环。又称“丢手绢问题”。基本定义:N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。例如N=6,M=5,被杀掉的顺序是:5,4,6,2,3。1.约瑟夫问题分析根据定义其实可以很简单的提出一种解法,就是环形链表。从一个起点遍历指定次数后把当前节点剔除再继续遍历直到剩下一个节点,也就是自己的下一个节点也指向自己。2.代码实现这里引入一个自己写的Node类来模拟一个链表节点public class
2020-07-14 00:20:37
202
原创 Linux(CentOs7)下相关软件和服务的安装(Tomcat、Mysql、ftp...)
0.一些重要的辅助命令查看防火墙开放端口:firewall-cmd --zone=public --list-ports添加端口:firewall-cmd --zone=public --add-port=需要添加的端口/tcp --permanent firewall-cmd --reload查看端口进程:netstat -tunIp | grep 端口号杀死进程:kill 进程id1.JDK的安装1.解压缩 tar -xzvf jdk-xxx-xxx.xx.tar.gz 放在usr/loca
2020-06-20 17:54:06
160
原创 数据结构与算法--基于数组的循环队列实现
基于数组的循环队列实现,循环效果主要通过取模运算来实现.package com.wei.ds;/** * @Project: CircularArrayQueue * @Description: 循环队列基于数组的实现, 通过模运算来达到循环的效果 * @Creator: sunwei * @CreatDate: 2020/6/20 * @Modifier: */public class CircularArrayQueue { //队列尾部指针,指向的是最后一个元素的下一个位
2020-06-20 10:15:05
149
原创 java源码--ArrayList(重点摘抄)
底层数据结构为数组,默认的大小为10一般最大的size为private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;为什么要-8:Some VMs reserve some header words in an array.ArrayList的扩容:1.当所需容量大于目前数组的长度时,默认扩容为原容量的1.5倍.2.当扩容后容量还是不够时会直接扩容成所需容量.3.如果扩容后容量大于MAX_ARRAY_SIZE,根.
2020-06-18 19:52:33
204
原创 数据结构与算法--稀疏数组的实现
稀疏数组如果一个二维数组中无用的数据远多于有用的数据时,就造成了很多空间的浪费,此时可以使用稀疏数组来压缩稀疏数组第一行记录的是原数组的行数,列数, 有用的数据个数稀疏数组其他行记录的是原数组中有用数据的行数,列数, 数据的值以下是一个二维数组与稀疏数组之间的转换代码:package com.wei.ds;import java.util.Arrays;public class Main { public static void main(String[] args) {
2020-06-18 19:51:26
152
原创 Linux权限认知
linux中有三种权限r:read//读权限,数为4w:write//写权限,数为2x:execute//可执行权限,数为1只有root和所有者可以修改权限linux中的权限对目录和文件是不一样的文件目录r表示可以查看文件内容表示可以列出目录中的内容w表示可以修改文件内容表示可以在目录下删除或创建文件x表示可以执行文件表示可以进入目录如果目录没有w权限即使目录中的文件有w权限也不能删除文件,即使文件所有者也不能删除如果目录有w权限即使目
2020-06-18 19:45:02
142
原创 代码命名及代码规范(代码整洁之道读后感)
代码整洁之道简单代码规则能通过所有测试;没有重复代码;体现系统中的全部设计理念;包括尽量少的实体,比如类、方法、函数等。减少重复代码,提高表达力,提早构建简单抽象五大设计原则单一职责原则(Single-Resposibility Principle)其核心思想为:一个类,最好只做一件事,只有一个引起它的变化。单一职责原则可以看做是低耦合、高内聚在面向对象原则上的引申,将职责定义为引起变化的原因,以提高内聚性来减少引起变化的原因。职责过多,可能引起它变化的原因就越多,这将导致职责依赖,
2020-06-18 19:36:37
138
原创 idea相关使用和问题
idea源值1.5已过时, 将在未来所有发行版中删除<profiles> <profile> <id>jdk-1.8</id> <activation> <activeByDefault>true</activeByDefault> <jdk>1.8</jdk>
2020-06-18 19:32:58
101
原创 基本cmd命令
查找具体端口使用的进程netstat -ano | findstr 端口结束具体进程taskkill /pid 进程pid /f生成ssh公私钥ssh-keygen -t rsa -C "youremail@example.com"
2020-06-18 19:17:41
66
原创 eclipse相关使用
快捷键根据函数返回值生成变量接收:鼠标置于行末,ctrl+2松开后按L选中当前行:shift+end复制当前行到下一行:ctrl+alt+↓复制当前行到上一行:ctrl+alt+↑交替上下行:alt+↑/alt+↓shift+tab左移代码自动成生注释:alt+shift+j相关设置统计代码行:选中项目>>search栏>>File>>ContainingText填\n,选中Regular expression>>File name patt
2020-06-18 19:15:14
75
原创 开发问题集(备忘录),持续更新
Junit:保存之后才能testbeanutils不能给null值的bean封装mybatis中配置mapper一个出错就不能创建SqlSessionBuilder绝对不将项目放在中文目录下,maven会找不到pom文件netstat -ano 查看端口情况pom文件报出MoJo缺失加入:org.apache.maven.pluginsmaven-war-plugin3.0.0web.xml中的spring监听器一定不能删否则会出现注入失败!!!.
2020-06-18 19:09:20
148
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人