自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 资源 (2)
  • 收藏
  • 关注

原创 JVM垃圾回收算法

JVM垃圾回收算法1. 标记-清除算法​ 标记清除顾名思义是一种分两阶段对对象进行垃圾回收的算法。​ 第一阶段:标记。从根结点出发遍历(深度优先)对象,对可访问的对象打上标记,表示该对象可达。​ 第二阶段:清除。对那些没有标记的对象进行回收,这样使得不能利用的空间能够重新被利用。优点:实现简单缺点:碎片化严重、效率低(多次遍历)2. 复制算法​ 复制算法将可用内存按容量划分为大小相等的两块,每次只使用其中的一块。当这一块的内存用完了,就将还存活着的对象复制到另外一块上面,然后再把已使

2020-08-20 19:57:31 200

原创 JVM垃圾判断机制

JVM垃圾判断机制1. 引用计数法(基本不用)给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值加1当引用失效时,计数器减1当计数器值为 0 时代表该对象不可能再被使用,将会被当作垃圾回收引用计数法的优点是简单、效率高,但有一个致命的缺点就是无法解决循环依赖问题。比如有两个对象A、B,且A.a = B , B.a = A,而A、B对象各自的引用已经失效,但此时因A、B循环依赖导致各自的引用计数器值为1,从而应该被回收的对象没有被回收掉2. 可达性分析法(常用)​ 通过一系列”

2020-08-19 19:42:00 183

原创 Java多线程面试题汇总

线程协作的方式,SyclicBarrier的底层是怎么实现的?如何实现三个线程交替打印ABC?volatile的底层原理?不是回答内存屏障,是问你调用了什么CPU的API,在不同硬件情况下会有什么不同吗?两个线程轮流打印奇数偶数synchronized介绍synchronized锁升级过程wait()和sleep()的区别volatile的作用双重检查的用处,假如不要第一次if判断会有什么问题synchronized和ReentrantLock..

2020-07-24 21:31:11 170

原创 Java自动装箱与拆箱

自动装箱与拆箱自动装箱与拆箱是自JDK 1.5 引入的概念:自动装箱:自动将基本数据类型变成对象自动拆箱:自动将对象转换回基本数据类型基本数据类型与包装类对应如下:当表格中左边列出的基础类型与它们的包装类有如下几种情况时,编译器会自动帮我们进行装箱或拆箱:进行 = 赋值操作(装箱或拆箱)进行四则运算(拆箱)进行 > < == 比较运算(拆箱)调用 equals 进行比较(装箱)ArrayList、HashMap等集合类添加基本数据类型时(装箱)Integer

2020-07-23 21:34:07 168

原创 Java集合框架概述

一、集合框架概述​ Java集合有两个大类,Collection 和 Map,两者主要有以下区别:Collection 是单列集合,Map 是双列集合Collection 中只有Set系列要求元素唯一,Map 中需要健值唯一,value 可以重复Collection 中数据结构是针对元素的,Map 中数据结构是针对健的二、各集合知识点1. Set​ 特点:存取无序,元素不可以重复,线程不安全,也就是说我们需要元素去重的时候就会考虑使用 Set(还是要根据具体情况来分析的),要注意Se

2020-07-22 20:03:53 216

原创 HashMap 深度解读

一、HashMap​ HashMap 是一个非常重要的类,在面试中百问不爽,下面我们就来捋一捋关于HashMap的知识点,以下讲述主要基于Java8。1. 底层结构​ 在 Java7 中,HashMap 的底层结构是数组 + 链表,但是在Java8 后,这个结构被稍微优化了一些,变成了 数 + 链表/红黑树。如图,HashMap最基本的就是 数组结构,根据索引来查找元素,所以 HashMap 查找的时间复杂度为 O(1),但这个时间复杂度也不是完全精准的,只有在只是一个数组的情况下才是 O(1)。

2020-07-21 22:03:57 274

转载 JVM方法区的变革

学习JVM必看的书籍无疑是《深入理解Java虚拟机》这本书了,在书中,关于运行时数据区域模型是这样描述的:在这里我们只针对HotSpot VM来说,它是OracleJDK和OpenJDK中所带的虚拟机,也是目前使用范围最广的Java虚拟机。在JDK7之前,这样的模型是正确的。但是到了JDK8,如图标红的部分,做了一些优化。什么是方法区,什么是永久代,运行时常量池又是什么“方法区”(Method Area),是线程共享的区域,用于存储已被虚拟机加载的类信息,常量,静态变量等数据。首先我们要知道,方法

2020-07-20 18:07:22 213

原创 JVM内存结构解读

参考书籍及部分图片来源:《深入理解Java虚拟机:第三版》一、JVM内存结构概述1. 程序计数器(Program Counter Register)​ 每个线程都有一个独立的程序计数器,占用空间非常小,它记录了线程正在执行的字节码指令的地址,字节码解释器通过修改它的值来选取下一条要执行的指令,因此被称为程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。注意如果正在执行的是本地(Native)方法,这个计数器值则应为空(Undefined)。因为nativ

2020-07-20 18:04:56 246

原创 String类解读

一、String1. String的不可变性​ String 定义了之后值是不可变的,通过查看String类源码可以发现:1. String类是被final修饰的; 2. 成员字段value也是用final修饰的。我们知道,fianl修饰类代表类不可以被继承,可以防止破坏,而fianl修饰变量代表变量不可以被改变,当然这里fianl修饰的是数组,数组存放在堆中,所以这里是value的引用地址不可变,堆中的value是可以改变的。​ 但是因为字符串常量池的存在,无论我们怎么改变字符串的值,最终改变

2020-07-19 19:08:25 266

原创 Java基础面试题汇总

Java的三大特性面向对象和面向过程的区别接口和抽象类的区别是什么?成员变量与局部变量的区别有那些?构造方法有哪些特性?对象的相等与指向他们的引用相等,两者有什么不同?静态方法和实例方法有何不同?什么是多态机制?Java语言是如何实现多态的?类、方法、成员变量和局部变量的可用修饰符在一个静态方法内调用一个非静态成员为什么是非法的?环境变量Path和ClassPath的作用是什么?如何设置这两个环境变量?ArrayList、Vector、HashSet的主要区别?CopyOnWrit.

2020-07-17 21:05:01 167

原创 计算机网络面试题汇总

TCP 和 UDP 的区别TIME_WAIT 是什么?TCP 流量控制和拥塞控制HTTP 包结构你提到了 If-Modified-Since,它的作用是什么?这个字段的值如何确定?HTTP 请求方法列举 HTTP 状态码TCP 的包怎么保证有序性?TCP 三次握手和四次挥手TIME_WAIT 为什么是 2MSL 而不是 1MSL 或者 3MSL?HTTPS 密钥交换的过程get和post的区别?HTTP和HTTPS输入网址访问的过程DNS解析过程,DNS劫持数据传输时如何保证.

2020-07-17 20:46:41 139

原创 Docker安装Jenkins教程

一、安装使用docker拉取镜像 jenkins/jenkins ,不要使用jenkinsci/blueocean镜像,该镜像存在依赖问题。拉取时可选择版本 lts长期支持版或latest最新版,默认为latestsudo docker pull jenkins/jenkins运行该镜像# 以下指令详细解释请参考官网sudo docker run \ -u root \ --rm \ -d \ -p 8080:8080 \ # 这里第一个端口为外部访问端口,按实际修改,

2020-07-14 11:17:02 272

原创 数据结构基础复习

参考书籍及图片来源:《大话数据结构》一、线性表顺序存储结构 --> 便于 add 和 get,不便于 insert 和 delete,需要提前定义大小链式存储结构 --> 便于 insert 和 delete,不便于 get,不需要提前定义大小单链表循环链表双链表双向循环链表二、栈与队列(特殊的线性表)栈:只能在一端进行插入与删除,先进后出顺序栈链栈队列:只能在一端掺入,另一端删除,先进先出顺序队列循环队列链队列三、串四、树(面试

2020-07-06 11:42:11 612 1

原创 后端面试题解答之计算机网络

1. TCP 和 UDP 的区别​TCP 是面向连接的协议,在收发数据前必须和对方建立可靠的连接,即三次握手、维护连接状态表等;UDP 是非连接的TCP 头部最少20个字节,UDP 头部只有8个字节TCP 会将数据分段,UDP 不会TCP 有流量控制、拥塞控制,UDP 没有TCP 保证数据的可靠性,即有序性、不丢失(重传),UDP 无法保证2. TCP 的流量控制和拥塞控制流量控制目的:如果发送方发送数据过快,接收方来不及接收,就会导致数据丢失实现:接收方每次收到数据包,可以在发送

2020-07-02 21:31:44 343

原创 Https原理及过程

一、原理1. 我们首先要知道Http数据包是没有加密的明文,这意味着任何人只要拦截到了你的数据包就能够查看甚至篡改你与服务端通讯的数据,这也是公共WIFI 极度不安全的原因之一,因为攻击者非常容易拦截到你的通讯数据包。这就是Https诞生的原因,互联网日益发达,安全至关重要。2. Https = Http + SSL(TLS),TLS 是 SSL 的升级版,两者在概念上是一样的。当前广泛使用的版本为 TLS 1.2.3. TLS 的作用:加密、证书校验、消息完整性校验、4. 论证证书存在的必

2020-07-02 21:13:23 367

原创 计算机网络学习(面试学习)(持续更新)

1. OSI 七层协议模型应用层:向应用程序提供通信服务,如 http、ftp、smtp、DNS等表示层:格式化数据、加密、解密等,如FTP允许你选择以二进制或ASCII格式传输会话层:管理会话,控制会话的开始与结束运输层:高层与低层的衔接,数据传输的单位是报文,报文过长时将其分割然后交给网络层,TCP/UDP网络层:负责将数据从源送到目的地数据链路层:控制网络层与物理层的通信,以帧为单位物理层:以二进制数据的形式在物理媒体上传输七层协议模型是一个理论模型,

2020-07-01 16:17:33 1926

原创 Linux必学命令(持续更新)

一、 常用命令1. &​ 在命令后面加上 & 会使该命令在后台运行,注意需要用户交互的命令不要放在后台运行,常配合输出重定向符 > 将该命令的输出重定向到某个文件中,如java -jar test.jar > log.file &java -jar test.jar > log.file 2>&1 &在shell脚本中,默认情况下,总是有三个文件处于打开状态,标准输入(键盘输入)、标准输出(输出到屏幕)、标准错误(也是输出到屏幕

2020-06-08 11:54:18 366

原创 Mac右键添加Google搜索

打开Automator,即自动操作选择快速操作新建文稿选择实用工具 --> 运行AppleScript在代码区添加如下代码,其它搜索引擎同理on run {input, parameters} tell application "Google Chrome" activate open location "http://www.google.com/search?q=" & input as string end tell return inputend run.

2020-05-28 10:31:32 1383

原创 JwtUtil工具类

依赖java-jwt<dependency> <groupId>com.auth0</groupId> <artifactId>java-jwt</artifactId> <version>3.10.1</version> &...

2020-03-28 10:44:20 3827

原创 一张图解释JWT

在线地址

2020-03-28 10:25:11 241

原创 Java开发工程师(实习)面试(二)

2020.03.07 17:30 腾讯-电脑管家一、自我介绍二、问题开始线程与进程的关系?解:

2020-03-11 21:05:33 223

转载 线程与进程的关系及区别

1.定义一个程序至少有一个进程,一个进程至少有一个线程。进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥...

2020-03-11 20:23:40 1975

原创 Java开发工程师(实习)面试(一)

2020.03.04 10:30 阿里巴巴-淘宝一、自我介绍首先你介绍一下你自己,然后你在介绍一下你在学校的成绩以及社会实践,还有你的技术栈…二、面试开始软件工程专业,首先询问是否学习过操作系统、计算机网络等课程进程的状态都有哪些?之间又是怎么切换的?解:进程有三种基本状态:就绪(Ready):当进程已分配到除CPU以外的所有必要的资源,只要获得处理机便可立即执行,这...

2020-03-04 23:15:06 746

原创 HashMap知识点

1.底层结构jdk1.7 数组 + 链表jdk1.8 数组 + 链表/红黑树如果同一个链表中的节点数量大于8(链表中出现多个节点的概率服从泊松分布,出现8个节点的概率为0.00000006,出现更多节点的概率小于百万分之一),那么该链表就会转变为红黑树结构(平衡二叉树)(转变概率极小,因为树节点的大小是普通节点的两倍)2.扩容初始容量为16(根据经验得出来的值,太小容易触发扩容,扩...

2020-02-29 22:33:51 175

原创 引用传递

package per.liam.study;import org.junit.jupiter.api.Test;/** * @author liam * @date 2020/2/29 下午3:05 */public class 值传递与引用传递 { @Test public void transfer() { StringBuffer sb = ...

2020-02-29 15:18:12 129

转载 MySQL企业使用规范

基础规范表存储引擎必须使用 InnoDB表字符集默认使用 utf8,必要时候使用 utf8mb4通用,无乱码风险,汉字 3 字节,英文 1 字节utf8mb4 是 utf8 的超集,有存储 4 字节例如表情符号时,使用它禁止使用存储过程,视图,触发器,Event对数据库性能影响较大...

2020-02-28 23:28:55 222

原创 软件测试基本知识

一、软件测试流程 二、黑盒测试 三、白盒测试 四、单元测试 五、集成测试 六、系统测试

2020-02-27 13:04:50 151

原创 LeetCode算法题(六):有效的括号

描述:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例 4:输入: ...

2020-02-15 14:37:40 252

原创 LeetCode算法题(五):最长公共前缀

描述:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z解法一:水平扫描(横推、向前)class Solutio...

2020-02-14 00:00:28 160

原创 LeetCode算法题(四):罗马数字转整数

描述:罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 ...

2020-02-12 17:49:05 169

原创 LeetCode 算法题(三):回文数

描述:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。解法一:...

2020-02-11 14:53:20 135

原创 LeetCode算法题(二):整数反转

描述;给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。解法一:class S...

2020-02-10 21:53:04 164

原创 LeetCode算法题(一):两数之和

描述:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]解法一:优化暴...

2020-02-09 21:51:40 136

原创 (前后端分离) Springboot + Vue 实现账户登录

使用 vue-cli 创建vue项目(我采用elementUI),完成一个vue项目的基本配置,编写登录页面:Login.vue<template> <div class="login_container"> <div class="login_box"> <div class="avatar_box"> ...

2020-02-02 01:02:43 3317 1

原创 类加载顺序

静态代码块->构造代码块->构造函数->普通代码块

2020-01-11 11:44:39 232

原创 WebService搭建用户注册与登录系统(初学)

1.使用idea首先建立一个Web项目,最好不要直接建立一个WebService项目,那样做我遇到了一大堆问题,如默认wsdl地址有问题、无法传递多个参数等等。2.写一个接口类MyService如下:package pers.liam.countManager;import javax.jws.WebMethod;import javax.jws.WebService;@WebServ...

2019-10-09 21:41:26 814

原创 idea 新建Web Service 运行后无法显示函数及wsdl文件

解决方法:修改生成的wsdl文件中的默认地址,删除中间的example(包名)即可

2019-09-28 21:25:14 607

原创 第一个爬虫(爬文字)

spider_main.pyfrom spider import url_manager, html_downloader, html_parser, html_outputerclass SpiderMain(object): def __init__(self): self.urls = url_manager.UrlManager() self....

2019-09-16 21:53:41 187

原创 linux 输入法的安装

sudo pacman -S fcitx fcitx-configtool fcitx-rime

2019-09-11 21:50:34 340

原创 .vimrc入门配置

set numberset tabstop=4colorscheme the-creatorsyntax oninoremap jj <Esc> map <C-n> :NERDTreeToggle<CR>nmap ss <Plug>(easymotion-s2)set hlsearchset incsearchcall p...

2019-09-07 23:33:54 153

WebService实现用户注册与登录.

WebService实现用户注册与登录,包块连接数据库,Android使用ksoap2测试

2019-10-09

WebService实现用户注册与登录

WebService实现用户注册与登录,连接数据库,在Android端上测试

2019-10-09

空空如也

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

TA关注的人

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