自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JVM内存模型

JVM的内存模型 JVM运行时的内存区域可以分为两大类 一个是线程私有区 有: 程序计数器 在JVM中占内存比较小的地方,唯一一块不会发生OOM 会告诉你执行的代码归于哪一行 上下文切换的时候可以回到正确状态。 虚拟机栈 使用栈帧 方法在执行的同时都会创建一个栈帧用于存储变量和方法的信息,一个方法的调用就是从入栈到出栈的过程。 本地方法区 虚拟机栈为执行 Java 方法服务, 而本地方法栈则为 Native 方法服务 然后是线程共享区 方法区 存放永久代 常量池常量 类的信息 堆 存放实例 是GC的主要区

2020-09-12 11:37:01 104

原创 TCP的可靠传输原理

理想的传输条件有以下两个特点: 1.传输信道不产生差错。 2.不管发送方以多快的速度发送数据,接收方总是来得及处理收到的数据。 在这样的理想传输条件下,不需要采取任何措施就能够实现可靠传输。 然而实际的网络都不具备以上两个理想条件。必须使用一些可靠传输协议,在不可靠的传输信道实现可靠传输。 停止等待协议 1.停止等待。发送方每次只发送一个分组。在收到确认后再发送下一个分组。 2.编号。对发送的每个分组和确认都进行编号。 3.自动重传请求ARQ (Automatic Repeat reQuest)。发送方为

2020-08-29 09:49:08 347

原创 HTTPS加解密原理

HTTP(Hypertext Transfer Protocol)超文本传输协议,是一种用于分布式、协作式和超媒体信息系统的应用层协议,可以说 HTTP 是当代互联网通信的基础。 但是HTTP在传输数据时信息都是明文的,没有经过任何加密,而这些明文数据会经过WiFi、路由器、运营商、机房等多个物理设备节点,如果在这中间任意一个节点被监听,传输的内容就会完全暴露,因此很容易出现数据被监听和窃取的情况。 为了解决HTTP明文传输数据可能导致的安全问题,1994年网景公司提出了HTTPS(HyperText T

2020-08-22 09:45:43 270 1

原创 Thymeleaf基本语法小结

Thymeleaf表达式 所有表达式都应该写在HTML5中的自定义属性th中。 变量表达式:变量表达式即OGNL表达式或Spring EL表达式(在Spring中用来获取model attribute的数据)。 如下所示 ${user.name} <span th:text="${text}">你好 thymleaf</span> <span>标签中的内容会被表达式${text}的值所替代,无论模板中它的内容是什么。Thymeleaf的基本变量和JSP一样,都使用${.}表示获取变

2020-08-08 09:18:12 536

原创 java1.7与1.8的部分新特性

jdk1.7 可以用二进制来表示整数,用0b或0B开头。在数字间可以增加’_'符号提高阅读性 int a = 0b1111; int b = 0b1111_1111; Switch语句支持string类型(通过调用switch中str.hashCode,将str转换为int从而进行判断。) switch (str) { case "aaa": System.out.println("aaa"); break; case "123": System.out.println

2020-08-01 09:30:10 121

原创 Ajax中get和post方法

ajax()方法 $.ajax({ url:请求地址 type:"get | post | put | delete " 默认是get, data:请求参数 {"id":"123","pwd":"123456"}, dataType:请求数据类型"html | text | json | xml | script | jsonp ", success:function(data,dataTextStatus,jqxhr){ },//请求成功时 error:function(jqxhr,textStatus,

2020-07-11 08:42:47 237 1

原创 JVM的垃圾回收算法

如何确定垃圾 想要回收垃圾,首先要判断对象是否可视为垃圾。确定垃圾的方法有两种,分别是引用计数法和可达性分析算法。 1.引用计数法 使用引用计数法,要先给每一个对象中添加一个计数器,一旦有地方引用了此对象,则该对象的计数器加1,如果引用失效了,则计数器减1。这样当计数器为0时,就代表此对象没有被任何地方引用。 缺点是会产生循环依赖,如果两个对应互相引用,导致他们的引用计数都不为0,最终不能回收他们。 2.可达性分析算法 在大部分主流语言中都是通过此方法来判断对象是否存活的,这个算法的思想是通过一系列被称为“

2020-07-04 09:15:17 140

原创 浅谈对JVM的理解

这篇文章主要是写给一些新人方便理解JVM在Java中所承担的角色,其中没有涉及太多专业性的知识。 编程使用的是汇编语言,是人容易理解记忆并被统一规定的语言。但这些语言计算机中的机器硬件肯定是不认得的,机器的本质是高低电平的转换,因此机器语言是能被机器直接识别并由计算机中相应的的电路来完成的二进制语言。我们使用某一编程软件,便是写入我们所能理解的语言,由软件代为翻译成计算机所能理解的语言并在计算机上执行。 通过Java使汇编语言转换成机器语言大致流程如下。 首先,我们需要知道的是:我们不可能直接对着一块电路

2020-06-20 09:50:47 159

原创 Lambda表达式的介绍和使用方法

Java在1.8版本引入了Lambda表达式,它属于函数式编程思想。它和面向对象的思想有很大的不同。面向对象的思想提倡:创建对象,调用方法,解决问题。而函数时编程思想注重的是方法,不关注过程,只注重结果。 当要实现的方法比较简单,或是只要被调用一次时,若使用面向对象的的思想,会增加代码量。如果这时候使用Lambda表达式,可以大大减少代码量,一定程度上提高代码编写效率。以下代码可以实现与上方相同的功能。 Lmabda表达式的语法 (parameter) ->{statements;}括号中的值为参

2020-06-06 09:32:55 339

原创 线程池的工作流程

线程池中参数最全的构造方法有7个参数 当一个任务(runnable)被添加时 一、判断当前线程数量是否达到核心线程最大值(corePoolSize),若当前线程数<corePoolSize ,则创建核心线程执行任务。若当前线程数>corePoolSize,则尝试进入阻塞队列BlockingQueue。 二、判断队列是否已满,若未满,则进入队列等待,若已满,则尝试创建非核心线程。 三、线程总数最大值(maximumPoolSize)=核心线程最大值(corePoolSize)+非核心线程最大值。线

2020-05-29 23:02:16 1692

原创 JAVA中Date DateFormat Calendar 的互相转换

Data(日期) DateFormat(日期格式) Calendar(日历)三个类的灵活运用可以解决JAVA中大部分与时间有关的问题。 Data->DateFormat将当前日期转换成预期的格式 DateFormat是抽象类,不能实例化,因此用它的子类SimpleDateFormat SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm ss"); String text = format.format(new Date(

2020-05-23 09:20:44 266

原创 简单的五子棋小游戏

import java.util.Scanner; public class Demo2 { public static void main(String[] args) { Scanner input = new Scanner(System.in); int[][] chess = new int[16][16]; int n = 1; int a = 0; int b = 0; int finish = 1; while(true) { //输入落子 if(n=

2020-05-16 23:28:01 275

空空如也

空空如也

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

TA关注的人

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