- 博客(31)
- 收藏
- 关注
原创 ThreadLocal与线程池的相关理解
ThreadLocal 线程变量,为每一个线程复制一份变量,每个线程对自己内部的变量进行操作,实现线程封闭。 ThreadLocal原理分析 底层是维护了一个ThreadLocalMap,key是当前线程,value是线程变量。 ThreadLocal造成内存泄漏问题 底层的ThreadLocal的key是一个弱引用,容易被回收掉,导致key为null,而value是一个强引用关系,如果当前线程一直不结束,key为null的entry的value就会存在一条强引用链,无法回收,所以就引起内存泄漏。 解决办法
2021-07-22 20:55:13
1132
原创 Java并发编程
并行与并发 并行:在同一时刻可进行多种操作 并发:在同一时间段发生多种操作,微观上是串行操作 多线程 解决性能问题 提升CPU的利用率 多线程并行问题 安全性 性能(CPU的切换) 死锁 可见性 有序性 原子性 java内存模型(JMM) 硬件中: CPU --内存-- IO 设备上存在速度的差异问题 做出了以下优化 CPU 添加了缓存,以环节与内存直接的速度差异 操作系统添加了线程进程,分时复用CPU,均衡CPU与IO的速度差异 编译代码优化,对代码进行重排 java内存模型 java内存模型就是规范计
2021-07-21 21:00:41
171
原创 JVM之执行引擎
概述 执行引擎是java虚拟机核心的组成成分之一. 首先我们知道jvm的主要任务是装载字节码到其内部,但是字节码并不能够直接运行在操作系统中,字节码指令并不是等价于本地机器指令,那么执行引擎的作用就在这里.想要一个java程序运行起来,通过执行引擎将字节码指令解释/编译(后端编译)为对应平台上的本地机器指令.也就是说,执行引擎是将高级语言翻译称为机器语言. 解释器与JIT编译器 解释器:java虚拟机启动,根据预定义的规范对字节码采用逐行解释,将每条字节码文件的内容翻译为本地机器指令执行. JIT编译器:虚
2021-07-21 20:58:46
178
原创 JVM之本地方法接口
本地方法(Native Method) 一个本地方法就是一个java调用非java代码的接口,该方法的底层是由非java语言实现的,比如C语言.在定义一个本地方法时,不提供实现体,因为其实现体是由非java语言实现的. 关键字native可以与其他所有的java标识符连用,abstract除外. 本地方法的用处: 1.与java环境外交互 在java应用时有时会需要与java外面的环境交互,这是本地方法存在的主要原因.本地方法这种交流机制为我们提供了一个简单的接口,不需要去了解java应用之外的繁琐细节.
2021-07-21 20:39:53
148
原创 对垃圾回收相关算法的理解
垃圾标记阶段算法 判断对象在内存中是否存活。 两种方式来进行判断对象存活 引用计数算法 为每一个对象保存了一个引用计数器算法,具体过程是当A对象被引用时,计数器加一,当引用失效时,计数减一,当计数器为0时,表示该对象不会被使用,可以进行回收。 缺点:该算法无法解决循环引用问题。需要单独的计数属性,增加了内存空间消耗。 可达性分析算法 以根对象集合为起始点,按照从上往下的方式寻找被根对象集合(GC Roots)所直接或者间接连接的对象是否可达,这条链路就被称为引用链,如果不存在这条引用链中的对象,则是可以被回
2021-07-19 21:04:26
101
原创 java学习之网络编程
网络编程 概述 计算机网络 将分散的、不同地理区域的具有独立功能的计算机系统,通过通信设备、线路连接起来,由功能完善的软件实现资源共享和信息传递的系统。 网络编程的目的 为了直接或者间接的通过网络协议与其他计算机进行通信。 需要解决的问题 如何通过网络来找到或者说定位一台主机或者对台; 找到主机后如何高效的进行传输数据。 网络通信协议: IP/端口号 IP地址:inetAddress唯一的表示Internet上的计算机 本地回环地址(hostAddress):127.0.0.1 主机名(host
2021-05-25 10:52:47
102
原创 jvm详细整理之运行时数据区(1)
运行时数据区 程序计数器 是占用较小的一块内存空间,可以看做是当前线程所执行的字节码的行号指示器(标记着线程执行到哪一步了)。 作用: 用于存储下一条指令的地址,也就是即将执行的指令地址,由执行引擎来进行读取下一条指令。 特点: 占用空间小,执行速度快,线程私有,与线程的生命周期保持一致。 任何时间,线程中都只有一个方法正在执行,也就是当前方法,程序计数器会记录当前线程正在执行的方法的jvm指令地址。但是如果执行的是native方法,则是未指定值。 在程序中,分支,循环,跳转,异常处理,线程恢复等都是依靠程
2021-05-08 09:12:45
103
原创 jvm详解----本地方法接口
本地方法接口 本地方法(Native Method) 一个本地方法就是一个java调用非java代码的接口,该方法的底层是由非java语言实现的,比如C语言.在定义一个本地方法时,不提供实现体,因为其实现体是由非java语言实现的. 关键字native可以与其他所有的java标识符连用,abstract除外. 本地方法的用处: 1.与java环境外交互 在java应用时有时会需要与java外面的环境交互,这是本地方法存在的主要原因.本地方法这种交流机制为我们提供了一个简单的接口,不需要去了解java应用之外
2021-04-14 21:21:40
196
原创 jvm详解----jvm结构之类加载
类加载子系统的作用 类加载子系统就是负责加载字节码class文件.类加载的信息存放于方法区的内存空间.类加载子系统就是负责class文件的加载,对于是否可以运行则由执行引擎这部分决定. class文件在其文件开头有特定的文件标识(以 CA FE BA BE 标识开头). 类加载的过程 如图所示为类加载的具体过程. 加载阶段: 在这个阶段,会通过类名获取此类的二进制字节流,然后将这个字节流所代表的静态存储结构转换为方法区的运行时结构,会在内存中生成一个代表这个类的java.lang.Class对象,作为方法
2021-04-13 21:41:04
137
原创 java学习之IO流
IO流 File类 File类是java.io包中很重要的一个类;在程序中一个File类对象可以代表一个文件或目录 public class FileDemo1 { public static void main(String[] args) throws IOException { File f = new File("E:\\long.txt"); System.out.println(f.getName());//获取文件名 System.out
2021-03-09 19:47:00
102
原创 java学习之集合
集合 泛型 泛型,即“参数化类型”.就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式,然后在使用/调用时传入具体的类型. import java.util.ArrayList; /* 泛型 : 类型参数化 ,将类类型当参数一样传进去 任意单个大写的字母 可以有多个 传入的类型只能是类类型 没有定义类型时,默认object */ public class TeatDemo<T,A> { T n
2021-03-09 19:41:43
116
原创 java学习之API
Math类 java.Lang.Math类提供了一些静态方法用于计算,方法的参数和返回值的类型都为double型. double a= Math.abs(-3);//绝对值 System.out.println(a); double b = Math.pow(3,4);// a的b次幂 System.out.println(b); double c = Math.max(5.1,7.3); System.out
2021-01-18 20:33:21
119
原创 java学习之异常
异常 异常的概念:在java程序中,在程序执行过程中所发生的的不正常当然情况称为异常. Java程序在执行过程中所发生的异常事件可分为两类: Error: Java虚拟机无法解决的严重问题.如:JVM系统内部错误、资源耗尽等严重情况.一般不编写针对性的代码进行处理. Exception: 其它因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理 以下是一些平时练习中所遇到的异常: //1.数组索引越界异常 java.lang.ArrayIndexOutOfBoundsExcepti
2021-01-18 20:31:27
168
原创 javaAPI--(基本数据类型包装类,object类,String类,Array类)
javaAPI概述 API(ApplicationProgramming Interface)应用程序编程接口 API是对java预先定义的类或接口功能和函数功能的说明文档 目的是提供给开发人员进行查询说明 java基本数据类型包装类 在java中,基本数据类型并不是面向对象,在有些操作中会有一些不方便,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类. 基本数据类型(8种) byte,short,int,long,float,double,boolean
2020-12-17 18:15:32
520
原创 java面向对象语言的三大特征(封装,继承,接口)
面向对象语言的三大特征 封装 封装:将类中某些信息隐藏在类的内部,不允许外部类直接进行访问,而是通过该类提供的方法进行访问和操作. 封装的好处:方便修改,方便加入控制语句,隐藏类的实现细节,只能通过规定的方法访问. 具体操作:属性使用private私有权限,方法使用public公共权限. this关键字:代表自身类的对象.使用this关键字引用成员变量,成员方法. 必须使用在非静态方法里. 常常用来区分同名的局部变量和成员变量 p
2020-12-10 16:23:14
252
原创 java基础知识整理(对象与引用,static关键字,包,访问权限修饰符)
对象与引用 引用类型:类,接口,数组.在java中除了基本类型之外都属于引用类型. 基本类型:8种,整数型(byte,short,int,long),浮点数(float,double),字符型(char),布尔值(boolean). java中的对象是通过引用进行操作的. //自定义一个类Dog public class Dog { String name; String color; float price; } //创建一个对象 Dog mt = new Dog(); /* Dog mt
2020-11-30 21:18:34
189
原创 Java基础知识整理(类,方法)
面向过程与面向对象的设计思想 面向过程:解决一个问题,分析解决这个问题所需要的具体的步骤,然后实现这些步骤. 面向对象:解决问题时先进行以分类大思想进行分析,然后以分类的形式进行解决问题. 举个例子:把大象装进冰箱里 面向过程:打开冰箱门 把大象装进去 关闭冰箱门 面向对象:对此事件进行分类 人类: 装东西 操作… 大象:被装进冰箱 冰箱
2020-11-27 22:56:06
229
原创 数组排序--冒泡,选择,插入排序
数组 冒泡排序 思想与过程描述:相邻数据之间进行比较大小,比较出较大的(升序),然后交换位置,再与后一位相邻数据进行比较,以此循环. package Sortdamo; import java.util.Arrays; public class BubbleSort { public static void main(String[] args) { /*冒泡排序 相邻的两个值进行比较 */ int[]a=new int[]{5,3
2020-11-23 21:40:50
189
原创 稀疏数组的认识与理解
稀疏数组 在二维数组的学习中,了解到有时候二维数组存有大量无效的数据,为零或者为空,占据了大量的空间,为了能更方便更少空间的描述此数组,即提出了稀疏数组的概念,也可以称为数组的压缩. 稀疏数组的存储 稀疏数组的第一行,分别记录原始二维数组的总行数总列数和具体有效的二维数组个数.接下来每一行分别存储着有效二维数组数所在行所在列和具体指. package feifan.day1; public class xishu { public static void main(String[] args) {
2020-11-23 21:11:02
259
原创 java--数组相关理解1
数组 数组,是一组相同数据类型的数据的集合,具有连续性和线性.可以存储基本的数据类型,也可以引用数据类型. 数组的声明 数组声明的两种方式:数据类型 [] 数组名字 和 数据类型 数组的名字 [] /* 声明数组的两种方式*/ int[] a;//建议使用此种声明方式 避免混淆 int b[]; 数组的创建 有三种创建方式. /*数组的创建 new 数据类型[数组的长度] 数组中的元素值为默认的初始值,int=0 String=null
2020-11-14 21:22:06
133
原创 java基础知识整理2
数据类型转换 默认转化 容量小的可以转化为大容量的数据类型,数据类型按照容量大小排序为:byte,short,char<int<long<float<double.其中byte,short,char之间不会相互转化,在计算时会转化为int类型. byte b=10; int a=b; long x=a; double y=x; 强制转化 容量大的转化为容量小的数据类型,需要强制转化符,但是会出现两种问题:溢出现象,精度降低. double a=1.98; int b=(
2020-11-14 20:15:00
160
原创 java基础知识的详细整理
标识符 标识符是在java中对类,方法,变量等命名时使用的字符序列. 命名规则 强制规则: 可以用大小写的英文字母,数字,下划线,$组成 但是不能用数字作为开头,不能与关键字一样,但是可以包含关键字,不能包含空格,并且java中大小写区分严格 人为约定: 见名知意 包名:英文单词命名,且为小写 类名、接口名: 多单词组成时,所有单词的首字母大写,即驼峰命名法,如 TextName 变量名、方法名 :多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写 常量名: 所有首字母大写,下划线命名式,
2020-11-14 18:59:13
358
原创 简单制作百度注册页面
简单制作百度页面 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> .d1{ background-image: url(img/reg_bg_min.jpg); width: 1350px; height: 650px; } #bd1
2020-11-08 16:03:00
3714
2
原创 对java的基础认识
为什么是java java语言主要以应用程序为主,在各个方面领域涉及范围较为广泛,语言的使用量也是比较高的,而且在就业方面,也是深受欢迎~ java语言发展史 1991,名为sun公司,在詹姆斯.高斯林的带领下,需要研发出一种语言,其要求是能够程序运行时内存占用小,可以跨平台运行. 在1995的时候正式确立; 2004年9月Java1.5发布,其改名,并且命名方式为 5 6 7 8,其中, jdk5改动较大; 2009年被oracle收购. java语言的特点 开源,即开放源代码 面向对象 平台无关性,
2020-11-08 16:02:22
239
原创 制作淘宝界面的简易框架
(练习)淘宝页面的基本框架 根据浮动,定位知识,做一个小练习,制作一个简易的淘宝页面框架. 其代码如下 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> .tb1{ width: 250px; background-color: #6495ED;
2020-11-07 09:50:02
2683
原创 对CSS浮动,定位的简单理解
基础概念 清除浏览器的默认样式:浏览器自带设置一些标签的默认样式,默认的margin和padding,可以在编写过程前将这些默认值删除 *{ margin: 0; padding: 0; } 文档流:标签在网页中排列时占用的位置,窗体的位置从上往下排列,每行中从左往右排列为一行.即文档流的默认标签会贴在上一个标签的右边,如果位置不足放不下则会另起一行,按照从左往右的顺序排放. 浮动 浮动:指的是标签脱离文档流,在父标签中浮动起来,行级标签和块级标签都可以浮动起来,行级标签浮动起来会变成块级标签.当一个标签
2020-11-07 09:47:01
167
原创 CSS之盒子模型的定义与理解
盒子模型 盒子模型可以分为四个部分,分别是内容区,内边距(padding),边框(border),外边距(margin).盒子的大小即标签大小 = 内容区+内边距+边框. 内容区 内容区指的是盒子里放置内容的区域,其内容也就是文本内容,如果不设置边框,内边距,内容的大小就是盒子的大小,此区域可以设置高度和宽度,使用width和heigth标签,设置的是内容区的大小,而不是盒子的大小. #d1{ /* 设置内容区的背景颜色 */ background-color: #8A2BE2; /*
2020-10-28 19:54:08
552
原创 CSS的定义与基本语法
css css是什么 css是级联样式表(Cascading Style Sheets) 级联:关联,联系,两部分内容之间的联系 样式表:修饰网页的语法集 优点:可以将页面内容与表现形式分离 可以重复利用 css与html的关系:HTML是网页内容,css是定义网页的外观样式等. css做什么 为HTML控制外观,布局 css的基本语法 css的三种样式表 1.行级样式表 行级样式表,即直接写在标签的行内.用标签style=“属性名=属性值…” <!-- 行级样式表--> <p styl
2020-10-28 19:50:31
1708
原创 HTML表单
HTML–表单 表单是可以输入或者选择的组件,用户输入信息数据,然后提交到后台服务器. 表单标签 form—表单标签,一块区域,组件写在标签内 单行文本框 input type=“text”—输入单行信息 id=""—为标签定义id号,自定义的,唯一的,不可重复的,不能用数字作为开头 name=""—自定义的,可重复的,向服务器提交数据的键 value=""—向服务器提交的值 placeholder=“请输入账号”—提示信息,在未输入数据内容前方框内显示的内容,输入数据内容后可被覆盖 readonly=“
2020-10-25 08:57:21
358
1
原创 HTML-超链接锚点 表格
HTML 超链接锚点 定义锚点:< a name=“名字”> < /a> 超链接寻找锚点:< a href="#名字"> 标题< /a> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <a name="top">&
2020-10-20 21:47:59
713
3
原创 HTML概述
HTML概述 html是什么 超文本标记语言(HyperText Markup Language) 超文本:网页语言内容 标记语言:即标签,是用来标注网页内容 <b>我的第一张网页</b> html做什么 做网页 HTML的基本语法 开发工具 HBulider x 基本语法结构 <!-- 声明html版本类型为html5 --> <!DOCTYPE html> <!-- 网页中的内容写在html标签中 --> <html> <
2020-10-20 21:12:30
196
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人