自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 学习JVM虚拟机的第二天:运行时数据区

运行时数据区整体结构:一.程序计数器(Program Counter Register)*什么是程序计数器(PC寄存器)?*程序计数器(PC寄存器)是一个记录着当前线程所执行的字节码的行号指示器。*程序计数器是否多余?PC寄存器有什么作用?*假设程序永远只有一个线程,那么是完全不需要程序计数器的。但实际上程序是通过多个线程协同合作执行的。JVM的多线程是通过CPU时间片轮转算法(即线程轮流切换并分配处理器执行时间)来实现的。也就是说,某个线程在执行过程中可能会因为时间片耗尽而被挂起,而另一个线程获

2021-03-25 16:01:12 85

原创 Java JUC多线程?!

一.volatile关键字Java语言提供了一种稍弱的同步机制,即volatile变量,用来确保将变量的更新操作通知到其他线程。当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的,因此不会将该变量上的操作与其他内存操作一起重排序。volatile变量不会被缓存在寄存器或者对其他处理器不可见的地方,因此在读取volatile类型的变量时总会返回最新写入的值。如下实例:public class JUCTest1{ public static void main(Strin

2021-03-25 16:00:53 106

原创 Java生产者消费者问题开荒(上)?!

模拟场景:汉堡店有三个厨师,每个厨师3秒做一个汉堡。有6个顾客陆续到来,顾客2秒吃完一个汉堡,每个顾客需要吃5个汉堡才能吃饱。根据命题,做出了第一版(存在报错,不要复制),一个厨师一个顾客的场景:package com.lph.Test;public class Test1 { public static void main(String[] args) { //餐厅中只有一个取餐台 Cabinet cabinet = new Cabinet();

2021-03-25 15:59:35 115

转载 Java多线程基本知识点?!

1.进程和线程进程 : 程序运行过程中资源分配的最小单位,进程内部会有多个线程,会共享这个进程的资源。线程 : CPU调度的最小单位,必须依赖进程而存在。问题点:进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,简历数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵。而线程是共享进程中的数据的,使用相同的地址空间,因此CPU切换一个线程的花费远比进程要小的多。线程之间的通信更方便,同一进程下的线程共享全局变量、静态变量等数据,而进程之间的通信需要以通信的方式进行。多进程程序

2021-03-16 22:57:25 66

原创 学习JVM虚拟机的第一天:类的加载过程

首先,先看一下一个Class的加载过程:1.加载这个加载阶段为Class的加载过程中的第一个阶段,名为加载(Loading)阶段。其主要完成了以下三件事:(1)通过一个类的全限定名来获取定义此类的二进制字节流。(2)将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。(3)在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据访问的入口。对于加载的class文件的来源,可有以下途径:(a)从本地系统中直接加载。(b)通过网络下载.class文件

2020-06-25 23:59:11 105

原创 Java NIO学习?!

Java NIO 与 IO的区别:一.缓冲区(Buffer)在JavaNIO中负责数据的存取。缓冲区就是数组。用于存储不同数据类型的数据。根据数据类型不同(boolean除外),提供了相应类型的缓冲区。1⃣️ByteBuffer 2⃣️CharBuffer 3⃣️ShortBuffer 4⃣️IntBuffer 5⃣️LongBuffer 6⃣️FloatBuffer 7⃣️DoubleBuffer上述缓冲区的管理方式几乎一致,通过allocate()或得缓冲区。//分配一个指定大小的缓冲区B

2020-06-25 23:58:37 131

原创 foreach中remove/add报错问题?!

- 问题引入public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("kobe"); list.add("james"); list.add("curry"); for (String s : list) { if (s.e...

2020-04-06 00:49:22 627

原创 Spring源码-资源访问员Resource接口(理论)?!

前言: 刚刚开始探索Spring源码的小学生. 记录自己的每一段发现.1. 初识ResourceSpring中最简单的用法, Spring和bean的配合使用. Spring像是一个大水桶, 而bean像是里面的水.首先定义bean:public class MyTestBean { private String testStr = "testStr"; public S...

2019-12-19 16:20:38 98

原创 Java多线程简单理解并使用?!

在学习使用多线程之前,首先要先明白为什么需要使用它。使用多线程只有一个目的,那就是更好的利用CPU资源,因为大多数的多线程代码都可以用单线程来实现。让我们想象一个简单的例子,火车站的售票厅,我们用单线程来想一下:public class SignleSale { static int num = 10; static public void sale() { System.out....

2019-05-23 00:32:16 458

转载 Java多态原理(JVM角度)?!

第一次从JVM角度来看Java当中的问题,前期的c语言基础给了我很大帮助。直接上例子:class Father{ int age; public Father() { age=40; } void breath() { System.out.println("father is breathing.."); }}class Son extends Father{ int...

2019-05-18 23:54:23 563

转载 Java I/O系统(2)之OutputStream类?!

Java中将IO流进行分类,可分为字节流(字节输出流:OutputStream和字节输入流:InputStream)和字符流(字符输出流:Writer和字符输入流:Reader)【流的概念和作用(Thinking in Java):流:代表任何有能力产出数据的数据源对象或者是有能力接受数据的接收端对象流的本质:数据传输,根据数据传输特性将流抽象为各种类 】1.OutputStream类...

2019-05-09 10:36:04 183

转载 Java I/O系统(1)之File类?!

首先强调我自身小白对File的误解:File这个名字有一定的误导性,实际上FilePath对这个类来说是个更合适的名字,Java中的File类是文件和目录路径名的抽象形式。我们可能会认为它指代的是文件,但事实上,FIle既能代表一个特定文件的名称,又能代表一个目录下的一组文件的名称。总结来说,File类主要用来获取或处理与磁盘文件相关的信息,如文件名、文件路径和修改日期等,其不具有从文件读取信息和...

2019-04-28 11:33:39 125

转载 web.xml到底是什么?!

1. web.xml的运行步骤当一个WEB项目启动时。Tomcat首先会读取项目web.xml配置文件里的配置,当这一步骤没有出错并且完成后,项目才能正常地被启动起来。(1)启动WEB项目时,容器(Tomcat)首先会去它的配置文件web.xml中读取两个节点:和。(2)容器会创建一个ServletContext,这个WEB项目所有部分都将共享到这个上下文。(3)容器以的name作为键,v...

2019-03-03 21:43:35 511

转载 SpringMVC使用MultipartFile实现文件上传?!

工作原理*HTTP文件上传的基本原理:*使用html的标签,提交form的几个属性必须为: method=post encType=multipart/form-data;method属性必须设为post的原因:值不是放在URL之后传递到服务器的;encType属性:这个属性管理的是表单的MIME编码;服务器端:WEB服务器端程序接收到"mutipart.form-data"类型的H...

2019-02-28 15:10:04 569

转载 Java中的static关键字探究

一. static关键字的用途“static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的,而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。”简单的说就是:可以在没有创建对象的情况下对方法和对象进行调用。很显然,被static关键字修饰的方法或变量不需要依赖于对象进行访问,只要类被加载了,...

2019-01-27 20:29:51 84

原创 Java找素数?!

总结多种方法,并进行比较总结(主要探究厄拉多塞筛法)方法一(自己的方法):public static void main(String[] args) { for (int i = 1; i &lt; 1000; i++) { boolean flag=true; for (int j = 2; j &lt; i/2; j++) { if (i%j==0) { ...

2019-01-26 11:39:27 7522 4

转载 Integer.toBinaryString()源码探究

在Integer类中有静态方法toBinaryString(int i)方法,此方法返回int变量的二进制表示的字符串。同理,Integer类中也提供了toHexString(int i)方法和toOctalString(int i)方法来分别返回int变量的16进制表示和8进制便是字符串。三个方法的源码分别为:public static String toBinaryString(int ...

2019-01-20 11:59:19 354

转载 spring boot官方文档转载和部分翻译

1.Spring Boot介绍Spring Boot可以基于Spring轻松创建可以“运行”的、独立的、生产级的应用程序。对Spring平台和第三方类库我们有一个自己的看法,所以你最开始的时候不要感到奇怪。大多数Spring Boot应用程序需要很少的Spring配置。您可以使用Spring Boot创建可以使用java -jar或传统war包部署启动的java应用程序。我们还提供一个运行“s...

2019-01-20 00:35:58 161

转载 Spring Boot是什么?!

若使用spring boot,首先要先了解spring到底是什么?Spring是一个开源框架,为了解决企业应用开发的复杂性而创建的。Spring使用基本的javaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、测试性和松耦合的角度而言,任何java应用都可以从Spring中受益。**目的:**解决企业应用开发的复杂性**功能:**使用...

2019-01-19 22:22:47 377

转载 Maven是什么?!

1.什么是mavenMaven(POM project object model)是专门用于构建和管理java相关项目的工具。【自己的体会:maven能够结局jar包依赖的问题,假设开发需要用到Mysql,需要先到百度去搜素哪些jar包是必须的,然后到官网去下一堆jar包,再放到项目中。很麻烦。使用maven后,在pom里把依赖一配置,说明要用mysql的哪个版本,哪个厂家出的,就ok了。在有...

2019-01-06 14:36:57 778 6

转载 Java多态性(向上转型和向下转型)

*向上转型:*子类对象转为父类,父类可以是接口。公式:Father f=new Son();Father是父类或接口,son是子类。*向下转型:*父类对象转为子类。公式:Son s=(Son)f;package demo2;public class Human { public void sleep(){ System.out.println(&quot;Human sleep..&quot;); }...

2018-12-28 21:15:42 488

转载 JAVA前期(静态)绑定 后期(动态)绑定

绑定:绑定是指一个方法的调用和一个方法所在的类(方法主体)关联起来。对Java来说,绑定分为静态绑定(前期绑定)和动态绑定(后期绑定)静态绑定:在程序执行前已经被绑定(在编译过程中就已经知道这个方法到底是哪个类中的方法),此时由编译器或其他链接程序实现。针对Java简单的可以理解为程序编译期的绑定;【Java中的方法只有final,static,private和构造方法是前期绑定】//人...

2018-12-28 00:17:33 164

空空如也

空空如也

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

TA关注的人

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