自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【JavaSE】JVM的运行时数据区域

一、运行时数据区域当JVM运行之后,操作系统会将自己内存 堆中的一块空间分配给JVM作为运行时存储数据的区域。因为操作系统栈中的区域可能会被操作系统回收。内存分配图如下(以windows系统为例):1.程序计数器线程私有的,记录此线程当前所执行的字节码的行号指示。(因为Java具有解释型语言的特征,所以用程序计数器去记录解释到某一行的字节码行号)。2.Java虚拟机栈线程私有的,当一个...

2019-08-23 15:14:08 214

原创 【类集源码】HashMap的源码分析

HashMap一、成员变量。先简单解释一下,下面查看方法的时候,会具体解释。transient Node<K,V>[] table; //这个Node是HashMap中的一个内部类,用它的对象数组来存储K,V值 transient Set<Map.Entry<K,V>> entrySet; //这个变量主要是为了保存将map转换为set之后的...

2019-08-07 15:23:24 334

原创 【类集源码】ArrayList的源码分析。

ArrayList一、构造方法1.无参构造。 public ArrayList() { this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA; }而elementData是类中的一个属性,数据类型为数组。 transient Object[] elementData;DEFAULTCAPACITY_EMPT...

2019-07-21 11:35:27 231

原创 【数据库】隔离级别的代码演示,实际测试。

一、Read uncommitted(读未提交)会产生脏读。1.修改当前数据库的隔离级别2,开启事务A和事务B3.事务A查看当前t表中的a列数据。4.事务B修改t表中的a列。(注意没有提交)5.事务A再次查看t表中的a列6.这时候事务B回滚事务。返回到未修改t表的时候,并结束事务。7.这时候在事务A中查看t表,数据又变回原来的数据,说明中间读到的数据就是“脏数据”。...

2019-07-15 21:30:06 377

原创 【线程】线程的几种状态转换。

线程在一定条件下,状态会发生变化。线程一共有以下几种状态。1.新建状态(New)新创建了一个线程对象。2.就绪状态(Runnable)线程对象创建后,在其他地方调用了该线程的start()方法,该线程准备好所有执行前的资源,然后位于可执行线程池中,变得可执行,等待CPU的执行权。3.运行状态(Running)就绪状态的线程,获得了CPU的使用权。执行自己run方法中的代码。4.阻塞状...

2019-07-12 11:49:39 367

原创 【问题】空指针是否可以调用静态方法?

class Test1{ public static void hello(){ System.out.println("hello"); }}public class Demo1 { public static void main(String[] args) { Test1 test1 = null; test1.h...

2019-05-21 13:05:51 430

原创 【数据库】数据库事物四大特性,原子性,一致性,隔离性,持久性。隔离级别:脏读、不可重复读、幻读。

事务(Transaction)是由一系列对系统中数据进行访问与更新的操作所组成的一个程序执行逻辑单元。1.事物的ACID特性原子性事物的原子性是指事物必须是一个原子的操作序列单元。事物中包含的各项操作在一次执行过程中,只允许出现两种状态之一。全部执行成功全部执行失败任何一个异常的操作,都会使目前正在进行的事物中所有的操作都失败,并回滚到事物开始之初。只有最终事物执行完毕...

2019-04-22 23:11:49 1695

原创 【数据库】数据库四大范式1NF、2NF、3NF、BCNF

一、数据库范式1.什么是范式?什么是范式:简言之就是,数据库设计对数据的存储性能,还有开发人员对数据的操作都有莫大的关系。所以建立科学的,规范的的数据库是需要满足一些规范的来优化数据数据存储方式。在关系型数据库中这些规范就可以称为范式。先说说基础概念实体:实体就是现实世界中客观存在并可以被区别的事物。比如:学生、书、课程。属性:就是每个实体的属性,也就是表中的列。比如:王同学、李同...

2019-04-21 19:43:44 1422

原创 【网络】在网页输入网址之后会发生什么?

网络数据传输过程主机A------跨网络访问------>主机B主机A先查看自己是否保存了当前局域网的默认路由器的MAC地址,如果没有保存就进行一次ARP请求(目的IP地址就是自己的IP地址和本地子网掩码进行与操作,获得当前的网络号),然后默认路由器给主机A响应自己的MAC地址。主机A拿到了默认路由器的MAC地址后,它的数据链路层就可以向默认路由器发送数据了,为了得到主机B的IP...

2019-03-31 17:13:15 388

原创 【网络】网络层IP报头的格式、网段划分、子网掩码、路由、数据链路层、MAC地址、ARP协议。

一、IP协议网络层主要是为了在复杂的网络环境中确定一个合适的路径。而IP协议中的IP地址唯一的标识了网络中的某一台主机。1.IP协议的报头格式4位版本号(version):指定IP协议的版本,对于IPv4来说,就是4.4位头部长度(header length):IP头部的长度是多少个32bit。因此IP头部最大长度是60字节。8位服务类型(Type Of Service):...

2019-03-31 16:26:06 1479

原创 【网络】传输层,传输层的TCP协议和UDP协议。TCP的可靠性、三次握手和四次挥手、流量控制、拥塞控制、确认应答、超时重传。

一、传输层提供的服务如果说应用层的http协议决定怎么使用接收的数据,和接下来要发送什么数据。那么传输层的作用就是保证这些数据能准确的发送和接收到应用层。传输层的报头中会保存目的端口号,这标识着发送方所请求的唯一的应用程序。1.端口号范围划分0-1023 : 知名端口号,HTTP,FTP,SSH等这些广为使用的应用层协议,他们的端口号都是固定的。1024-65535 : 操作系统动态...

2019-03-23 12:14:53 453

原创 【网络】解释Http协议,URL,Http的格式。

一、协议协议就是计算机网络中的一种约定。二、认识url我们常说的“网址”,其实就是url。1. 输入URL。不管是链接还是地址栏的输入,情况都是一样的。http协议已经规定了URL的格式,通过http协议中的域名或IP找到服务器。2. 找到服务器会有http的请求发送过来,告诉服务器我求你做什么?http协议规定了发送请求的格式,这个格式有三部分组成请求行、请求头、请求体。...

2019-03-21 14:50:27 3128

原创 【JavaSE】解释三种工厂设计模式-----简单工厂模式、工厂方法模式、抽象工厂模式。

一、简单工厂模式简单工厂就是有一个工厂的接口,然后将实现接口子类的实例化操作放在另一个实现类中然后这个类通过接受的参数来决定实现什么类,参数由客户端传入interface INoodles{ //抽象产品 public void desc();}class LzNoodles implements INoodles{ // 具体产品 @Override ...

2019-02-23 18:28:57 198

原创 【JavaSE】集合类Collection集合Map集合的简单介绍,List接口,中三个常用子类ArrayList、Vector、LinkedList之间的比较。Set接口。

集合类集合类就是动态的用数组保存一组对象的信息。在java中数组用的并不多就是因为数组的长度已经固定了,而集合类是动态的,数组长度可以改变。集合类(java.util包)有两大接口分别是:Collection和Map,实现这俩个接口的子类都可以保存对象信息,区别就是Collection是对单个对象进行保存,而Map保存的是一对对象,分别用Key、Value标识。一、Collection接口C...

2019-02-22 17:26:55 449

原创 【JavaSE】Map集合,HashMap的常用方法put、get的源码解析

Map集合Collection集合的特点是每次进行单个对象的保存,如果现在要进行一对对象(偶对象)的保存就只能使用Map集合来 完成,即Map集合中会一次性保存两个对象,且这两个对象的关系:key=value结构。这种结构最大的特点是可以通 过key找到对应的value内容。首先来观察Map接口定义:public interface Map&lt;K,V&gt;在Map接口中有如下常用方...

2019-02-20 18:22:50 466

原创 【JavaSE】Lock锁,独占锁ReentrantLock的AQS源码,如何管理同步队列。acquire方法和release方法

一、Lock锁具体是如何实现的由上一篇博客解释,实现Lock锁的子类,实现了接口的所有方法。每个方法又都依赖Sync这个内部静态类来实现的,所以主要看一下Sync这个内部静态类。abstract static class Sync extends AbstractQueuedSynchronizerSync继承了AbstractQueuedSynchronizer这个抽象类,其实它是jav...

2019-01-23 14:32:52 371

原创 【JavaSE】Lock锁和synchronized锁的比较,lock锁的特性,读写锁的实现。

一、为什么出现了Lock锁出现lock锁肯定是由于synchronized锁有一些缺陷,下面说一下具体缺陷:1. 不提供中断锁synchronized锁有两种情况会释放锁:①.代码块或者方法执行完毕,自动释放锁②.在执行代码块或者方法过程中发生异常,自动释放锁.那么如果在执行过程中要等待IO或者其他原因被阻塞了,但是又没有其他方法释放锁,其他线程只能继续等待,这是非常影响程序效率的。...

2019-01-22 22:40:49 252

原创 【JavaSE】浅谈TreadLocal,TreadLocal的常用方法set()、get()、remove()源码分析

1.TreadLocal类的作用先来看一段代码:public class Test { private static String commStr; private static ThreadLocal&amp;lt;String&amp;gt; threadStr = new ThreadLocal&amp;lt;String&amp;gt;(); public static void main(S...

2019-01-21 11:46:15 425

原创 用java语言,模拟实现操作系统的进程调度算法,先来先服务,高优先级、高响应比、时间片轮转和短作业

构思算法的实现过程。①先来先服务算法一开始我从最简单的先来先服务开始想,既然要排序进程链表的执行顺序,肯定要将链表的头head作为参数传入到方法中。其次为了之后方便一次性检验多种算法,传入进来的head链表我不会对它进行任何改变。所以创建一个新链表head2用CreateHead方法将链表进行复制,这样我就可以拿head2这个复制品随便搞,也不会影响之后调用其他算法,因为head没变。当我拿...

2019-01-06 18:12:04 8357 9

原创 用java语言,模拟实现操作系统的银行家算法。

先来看看我理解的银行家算法的程序流程图:详细设计1.先选用储存进程和系统资源的数据结构,两者我都是用链表的形式储存的。(其实系统资源用数组比较好,因为它基本上都是修改,没有增加和删除。)。选用链表之后就是创建链表类的属性,系统资源的属性有名字、系统总资源和可用资源。进程类链表的属性是进程名字、最大需要资源的链表头节点和当前占有资源的链表头节点。2.然后是设计菜单。大概设计成这样就行,然...

2019-01-06 16:52:27 1705

原创 【JavaSE】偏向锁、轻量级锁和重量级锁,如何获取锁,如何撤销锁。

一、java对象头锁的获取和撤销会关系到对象头,所以先来看看对象头。Java对象头Mark Word字段存放内容:根据竞争状态的激烈程度,锁会自动进行升级,锁不能降级(为了提高锁获取)一、偏向锁由于老版本的内建锁synchronized存在最大的问题:在存在线程竞争的情况下会出现线程的阻塞以及唤醒带来的性能问题,这是一种互斥同步(阻塞同步)。大多数情况下,锁不仅不存在多线程竞争...

2018-11-20 00:01:35 2376 4

原创 【JavaSE】线程的同步和死锁,synchronized对象锁和全局锁,一个生活的例子解释。

一、synchronized加锁操作1.多线程为什么要加锁?因为在多线程启动之后,所有线程都是无顺序任意运行的,甚至几乎同时访问同一个资源或者代码块,所以上一个线程对资源所做的改变,还没来得及使用,就有可能被下一个线程所覆盖。引入锁的概念,就是为了让竞争资源在各个线程使用的时候可以互不影响。2.synchronized两种使用方法对象锁...

2018-11-16 20:06:11 297

原创 【JavaSE】多线程的实现继承Thread类,实现Runnable接口,实现Callable<V>接口

一、线程是什么我们都知道进程是一个程序在系统中运行的一个周期。但是一个进程在运行的过程中,不一定只执行一项任务。所以就要引入线程。线程就是进程进行分支任务的时候,每一个任务就称为一个线程。main方法也是一个线程,他是所有分支线程的主线程线程与进程的比较与进程相比,线程更加的&quot;轻量级&quot;,创建、撤销一个线程比启动、撤销一个进程开销要小的多,并且一个进程中的所有线程共享此进程的所有资源。...

2018-11-14 16:42:03 336 1

原创 【javaSE】异常处理try,catch语句。throw和throws的区别和应用场景

一、异常分类

2018-11-07 00:04:53 942

原创 【JavaSE】三个特殊的类,String类,Object类,包装类。

一、String类1.String类的两种实例化方式直接赋值

2018-11-05 19:53:06 148

原创 【javaSE】内部类、成员内部类、静态内部类、方法内部类、匿名内部类

内部类内部类就是嵌套在外部类中的类,比如:class A{ //这是外部类 class B{ //这是内部类 }}1.内部类的优点内部类与外部类可以方便的访问彼此的私有域(包含私有方法、私有属性)内部类是另外一种封装(保护性),对外部的其他类隐藏不可见,比如:心脏在人身体内内部内部类可以实现Java单继承的局限2.内部类的缺点结构复杂3.创建内部类的语法...

2018-10-31 16:38:00 183

原创 【Linux】实现简单的静态库链接和动态库链接,二者区 别

练习静态库/动态库之前,先创建三个文件。test.c文件:定义函数test.h文件:声明函数main.c:测试静态库生成一个库其实就是将所有的代码都打包起来–最终得到一个库文件。静态库需要创建.o文件打包起来才能链接。1.先创建test.o文件2.将所有test.o文件(这里只有一个)打包成一个libtest.a文件。3.在当前文件下找test名字的.a文件,用生成可...

2018-10-25 23:44:13 3080

原创 【数据结构】冒泡排序和归并排序

一、冒泡排序冒泡排序就是进行n躺循环,每次都从j=0开始到size-i-1,判断相邻的两个数的大小,如果前面的大于后面的,就交换两个数。直到所有躺数都完成。代码如下:void BubbleSort(type array[],int size){ int i,j; for(i=0 ;i&amp;amp;lt;size-1 ;i++) { for(j=0 ;j&amp;amp;lt;size-1-i ;j++) ...

2018-10-23 23:03:08 675

原创 【数据结构】快速排序递归实现和循环实现三种方法挖坑法、前后指针法、交换法

一、冒泡排序冒泡排序就是进行n躺循环,每次都从j=0开始到size-i-1,判断相邻的两个数的大小,如果前面的大于后面的,就交换两个数。直到所有躺数都完成。代码如下:void BubbleSort(type array[],int size){ int i,j; for(i=0 ;i&amp;amp;amp;amp;lt;size-1 ;i++) { for(j=0 ;j&amp;amp;amp;amp;lt;size-1-i ;j++) ...

2018-10-23 01:26:11 1015

原创 【数据结构】插入排序、详细解释希尔排序、堆排序、选择排序

一、直接插入排序将一个数组进行直接插入排序,每次取数组中一个数A保存起来,和此数下标之前已经排好的数组进行比较(第一次因为前面没有数,直接取数组第二个数),假设需要升序数列,如果A数小于要比较的数,就继续往数组中更小下标的数比较(在这个过程中因为A数已经保存起来了可以一边比较一边将比较过的数往后移一位,因为A迟早要插入到序列中会占一位),直到找到不小于A的数,就将A插入当前下标位置,继续下一个数...

2018-10-21 21:16:32 213

原创 【数据结构】大小堆的理解,创建,增加和删除元素操作

什么是大小堆?大小堆是基于完全二叉树的结构;大堆:任意一个结点的左右孩子的数据都小于此结点的数据,位于堆顶的结点的数据最大。小堆:任意一个结点的左右孩子的数据都大于此结点的数据,位于堆顶的结点的数据最小。下面以小堆为例,图解:以下都是以小堆为例如何创建小堆?首先我们只会得到一个数组,并且我们知道堆最终形态是完全二叉树。通过递归的思想,如果能把最后一个以非叶子结点为根的树变为小堆,然...

2018-10-21 13:15:24 1488

原创 环境变量setenv函数和export命令的解释

一、环境变量1.概念指在操作系统中用来指定操作系统运行环境的一些参数。环境变量通常具有特殊用途,在系统中具有全局特性。环境变量通常具有全局属性,可以被子进程继承下去。2.常见的环境变量(1)PATH:指定命令的搜索路径(2)HOME:指定用户的主工作目录(即用户登录到Linux系统中时,默认的目录)(3)HISTSIZE:指保存历史命令记录的条数(4)SHELL:当前Shell,它...

2018-10-18 16:55:02 34192 1

原创 【Linux】进程控制块PCB,task_struct源码成员解析

进程的含义首先什么是进程?1&amp;amp;gt;进程是程序的一个执行的实例;2&amp;amp;gt;进程是正在执行的程序3&amp;amp;gt;进程是能分配处理器并由处理器执行的实体按内核的观点来谈进程:它所担当分配系统资源(CPU时间,内存)的实体。进程的两个基本的元素如下:一、程序代码(可能被执行相同程序的其它进程共享)二、和代码相关联的数据集。这里和代码相关联的数据集指的是数据段和进程控制块PCB。进程是一种动态描述...

2018-10-18 15:55:13 1683

原创 【Linux】使用代码模拟实现僵尸进程, 孤儿进程的场景.对僵尸进程和孤儿进程的

僵尸进程(Zombie Process):就是已经结束了的进程,但是没有从进程表中删除。太多了会导致进程表里面条目满了,进而导致系统崩溃,倒是不占用其他系统资源。在Linux进程的状态中,僵尸进程是非常特殊的一种,它已经放弃了几乎所有内存空间,没有任何可执行代码,也不能被调度,仅仅在进程列表中保留一个位置,记载该进程的退出状态等信息供其他进程收集,除此之外,僵尸进程不再占有任何内存空间。它需要...

2018-10-17 23:00:31 223

原创 【Linux】几种常见的进程调度

进程的调度算法1.先来先服务调度算法(FCFS:firstcome first service)先来先服务(FCFS)调度算法即可适用于作业调度,也可以适用于进程调度。当此算法在作业调度中时,它每次选取一个或多个最先进入该队列的作业,将它们调入内存,分配资源,创建进程,然后放入就绪队列。在进程调度中,就是每次选取就绪队列中最先进入该队列的进程,为之分配处理机,使它投入运行。只有该进程运行到结束...

2018-10-16 21:00:51 661

转载 同学们自行调研Linux下软件安装的几种方式(源码安装, rpm安装, yum安装). 重点要理解rpm安装和yum安装的区别.

一、源码安装源码安装的步骤就是:编译源码,然后安装1.1 安装准备a. 首先用yum安装gcc,用于编译源码b. 官网下载源码包c. winSCP windows与linux传输文件(如果直接用要安装软件的linux电脑下载就不用传输了)1.2 安装过程a. 解压b. 进入解压后的目录,配置软件 ./configure # 大多数情况下源码包都会带configure这样一个配置工具...

2018-09-23 18:18:29 199

原创 除了vim, 还有哪些常用的牛逼的编辑器。 自行查找资料, 调研除了gcc, 还有哪些常用的牛逼的编译器,为什么调试的时候需要编译选项中添加 -g在Linux下实现进度条程序

除了vim, 还有哪些常用的牛逼的编辑器, 并能够横向对比编辑器之间的区别和优缺点。首先先有一个概念IDE(集成开发环境),厉害的有vs等等。vim以及Emacs就向着这个方向发展。为了实现其强大功能。vim有了多模式编辑有(normal,insert,visual)而emacs则是选择了复杂的快捷键。一般来说vim用户居多,因为vim是内置的,所以更容易被接受。默认的配置一般是不能满足人们的...

2018-09-22 19:59:48 349

原创 查找资料, 学习如何使用命令安装gcc/g++, gdb, vim

安装gcc:yum install gcc安装g++:yum install gcc-c++安装gdb:&lt;1&gt;先切换到root权限。centos点help。&lt;2&gt;在终端下打开FireFox,复制 https://mirrors.aliyun.com/回车&lt;3&gt;再输入yum list | grep gdb安装vim:输入命令 yum -y ins...

2018-09-21 12:20:50 101

原创 查找资料, 了解以下重要命令. du, df, top, free, pstack, su, sudo(sudo -, sudo -s), adduser, password

重要命令1.du命令: du [选项] 文件(1)功能该命令是显示指定文件以及下的所有文件占用系统数据块的情况,如果没有文件,默认为是当前工作目录     -a    显示所有文件对系统数据块的使用情况    -b    显示数据块大小时以字节为基本单位    -c    除了显示文件对系统数据块的使用情况外还显示出文件的总和     -s    只显示文件数据块总...

2018-09-21 12:10:50 260

原创 查找资料, 了解以下Linux下的重要目录/proc, /sys, /SElinux, /bin, /usr/lib, /usr/local, /var, /tmp,Linux文件权限问题

Linux权限问题一、进入目录需要什么权限?1.首先创建一个目录,并查看目录的权限,显示是775(r是默认权限)。2.将目录的权限修改为000,并尝试进入目录。权限不够无法进入。3.第一组权限是属主权限,所以现在通过改变第一组权限尝试是否能进入,先将权限改为r-- — ---,也就是400,可读权限。尝试进入,权限不够。4.将权限改为rw- — ---,即600,拥有可读,可写权限...

2018-09-21 11:03:58 1362

空空如也

空空如也

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

TA关注的人

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