笔记
文章平均质量分 61
无需多言.
·
展开
-
ThreadLocal与线程池的相关理解
ThreadLocal线程变量,为每一个线程复制一份变量,每个线程对自己内部的变量进行操作,实现线程封闭。ThreadLocal原理分析底层是维护了一个ThreadLocalMap,key是当前线程,value是线程变量。ThreadLocal造成内存泄漏问题底层的ThreadLocal的key是一个弱引用,容易被回收掉,导致key为null,而value是一个强引用关系,如果当前线程一直不结束,key为null的entry的value就会存在一条强引用链,无法回收,所以就引起内存泄漏。解决办法原创 2021-07-22 20:55:13 · 1048 阅读 · 0 评论 -
Java并发编程
并行与并发并行:在同一时刻可进行多种操作并发:在同一时间段发生多种操作,微观上是串行操作多线程解决性能问题提升CPU的利用率多线程并行问题安全性 性能(CPU的切换)死锁可见性 有序性 原子性java内存模型(JMM)硬件中: CPU --内存-- IO 设备上存在速度的差异问题做出了以下优化CPU 添加了缓存,以环节与内存直接的速度差异操作系统添加了线程进程,分时复用CPU,均衡CPU与IO的速度差异编译代码优化,对代码进行重排java内存模型java内存模型就是规范计原创 2021-07-21 21:00:41 · 111 阅读 · 0 评论 -
JVM之执行引擎
概述执行引擎是java虚拟机核心的组成成分之一.首先我们知道jvm的主要任务是装载字节码到其内部,但是字节码并不能够直接运行在操作系统中,字节码指令并不是等价于本地机器指令,那么执行引擎的作用就在这里.想要一个java程序运行起来,通过执行引擎将字节码指令解释/编译(后端编译)为对应平台上的本地机器指令.也就是说,执行引擎是将高级语言翻译称为机器语言.解释器与JIT编译器解释器:java虚拟机启动,根据预定义的规范对字节码采用逐行解释,将每条字节码文件的内容翻译为本地机器指令执行.JIT编译器:虚原创 2021-07-21 20:58:46 · 110 阅读 · 0 评论 -
JVM之本地方法接口
本地方法(Native Method)一个本地方法就是一个java调用非java代码的接口,该方法的底层是由非java语言实现的,比如C语言.在定义一个本地方法时,不提供实现体,因为其实现体是由非java语言实现的.关键字native可以与其他所有的java标识符连用,abstract除外.本地方法的用处:1.与java环境外交互在java应用时有时会需要与java外面的环境交互,这是本地方法存在的主要原因.本地方法这种交流机制为我们提供了一个简单的接口,不需要去了解java应用之外的繁琐细节.原创 2021-07-21 20:39:53 · 102 阅读 · 0 评论 -
对垃圾回收相关算法的理解
垃圾标记阶段算法判断对象在内存中是否存活。两种方式来进行判断对象存活引用计数算法为每一个对象保存了一个引用计数器算法,具体过程是当A对象被引用时,计数器加一,当引用失效时,计数减一,当计数器为0时,表示该对象不会被使用,可以进行回收。缺点:该算法无法解决循环引用问题。需要单独的计数属性,增加了内存空间消耗。可达性分析算法以根对象集合为起始点,按照从上往下的方式寻找被根对象集合(GC Roots)所直接或者间接连接的对象是否可达,这条链路就被称为引用链,如果不存在这条引用链中的对象,则是可以被回原创 2021-07-19 21:04:26 · 64 阅读 · 0 评论 -
jvm详解----jvm结构之类加载
类加载子系统的作用类加载子系统就是负责加载字节码class文件.类加载的信息存放于方法区的内存空间.类加载子系统就是负责class文件的加载,对于是否可以运行则由执行引擎这部分决定.class文件在其文件开头有特定的文件标识(以 CA FE BA BE 标识开头).类加载的过程如图所示为类加载的具体过程.加载阶段:在这个阶段,会通过类名获取此类的二进制字节流,然后将这个字节流所代表的静态存储结构转换为方法区的运行时结构,会在内存中生成一个代表这个类的java.lang.Class对象,作为方法原创 2021-04-13 21:41:04 · 84 阅读 · 0 评论 -
java面向对象语言的三大特征(封装,继承,接口)
面向对象语言的三大特征封装封装:将类中某些信息隐藏在类的内部,不允许外部类直接进行访问,而是通过该类提供的方法进行访问和操作.封装的好处:方便修改,方便加入控制语句,隐藏类的实现细节,只能通过规定的方法访问.具体操作:属性使用private私有权限,方法使用public公共权限.this关键字:代表自身类的对象.使用this关键字引用成员变量,成员方法. 必须使用在非静态方法里. 常常用来区分同名的局部变量和成员变量p原创 2020-12-10 16:23:14 · 193 阅读 · 0 评论 -
Java基础知识整理(类,方法)
面向过程与面向对象的设计思想面向过程:解决一个问题,分析解决这个问题所需要的具体的步骤,然后实现这些步骤.面向对象:解决问题时先进行以分类大思想进行分析,然后以分类的形式进行解决问题.举个例子:把大象装进冰箱里面向过程:打开冰箱门 把大象装进去 关闭冰箱门面向对象:对此事件进行分类 人类: 装东西 操作… 大象:被装进冰箱 冰箱原创 2020-11-27 22:56:06 · 181 阅读 · 0 评论 -
稀疏数组的认识与理解
稀疏数组在二维数组的学习中,了解到有时候二维数组存有大量无效的数据,为零或者为空,占据了大量的空间,为了能更方便更少空间的描述此数组,即提出了稀疏数组的概念,也可以称为数组的压缩.稀疏数组的存储稀疏数组的第一行,分别记录原始二维数组的总行数总列数和具体有效的二维数组个数.接下来每一行分别存储着有效二维数组数所在行所在列和具体指.package feifan.day1;public class xishu { public static void main(String[] args) {原创 2020-11-23 21:11:02 · 199 阅读 · 0 评论 -
数组排序--冒泡,选择,插入排序
数组冒泡排序思想与过程描述:相邻数据之间进行比较大小,比较出较大的(升序),然后交换位置,再与后一位相邻数据进行比较,以此循环.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 · 136 阅读 · 0 评论 -
java--数组相关理解1
数组数组,是一组相同数据类型的数据的集合,具有连续性和线性.可以存储基本的数据类型,也可以引用数据类型.数组的声明数组声明的两种方式:数据类型 [] 数组名字 和 数据类型 数组的名字 [] /* 声明数组的两种方式*/ int[] a;//建议使用此种声明方式 避免混淆 int b[];数组的创建有三种创建方式. /*数组的创建 new 数据类型[数组的长度] 数组中的元素值为默认的初始值,int=0 String=null原创 2020-11-14 21:22:06 · 82 阅读 · 0 评论 -
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 · 105 阅读 · 0 评论 -
java基础知识的详细整理
标识符标识符是在java中对类,方法,变量等命名时使用的字符序列.命名规则强制规则:可以用大小写的英文字母,数字,下划线,$组成但是不能用数字作为开头,不能与关键字一样,但是可以包含关键字,不能包含空格,并且java中大小写区分严格人为约定:见名知意包名:英文单词命名,且为小写类名、接口名: 多单词组成时,所有单词的首字母大写,即驼峰命名法,如 TextName变量名、方法名 :多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写常量名: 所有首字母大写,下划线命名式,原创 2020-11-14 18:59:13 · 296 阅读 · 0 评论 -
简单制作百度注册页面
简单制作百度页面<!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 · 3519 阅读 · 2 评论 -
对java的基础认识
为什么是javajava语言主要以应用程序为主,在各个方面领域涉及范围较为广泛,语言的使用量也是比较高的,而且在就业方面,也是深受欢迎~java语言发展史1991,名为sun公司,在詹姆斯.高斯林的带领下,需要研发出一种语言,其要求是能够程序运行时内存占用小,可以跨平台运行.在1995的时候正式确立;2004年9月Java1.5发布,其改名,并且命名方式为 5 6 7 8,其中, jdk5改动较大;2009年被oracle收购.java语言的特点开源,即开放源代码面向对象平台无关性,原创 2020-11-08 16:02:22 · 188 阅读 · 0 评论 -
HTML表单
HTML–表单表单是可以输入或者选择的组件,用户输入信息数据,然后提交到后台服务器.表单标签form—表单标签,一块区域,组件写在标签内单行文本框input type=“text”—输入单行信息id=""—为标签定义id号,自定义的,唯一的,不可重复的,不能用数字作为开头name=""—自定义的,可重复的,向服务器提交数据的键value=""—向服务器提交的值placeholder=“请输入账号”—提示信息,在未输入数据内容前方框内显示的内容,输入数据内容后可被覆盖readonly=“原创 2020-10-25 08:57:21 · 290 阅读 · 1 评论 -
HTML概述
HTML概述html是什么超文本标记语言(HyperText Markup Language)超文本:网页语言内容标记语言:即标签,是用来标注网页内容<b>我的第一张网页</b> html做什么做网页HTML的基本语法开发工具HBulider x基本语法结构<!-- 声明html版本类型为html5 --><!DOCTYPE html><!-- 网页中的内容写在html标签中 --><html> <原创 2020-10-20 21:12:30 · 144 阅读 · 0 评论