- 博客(31)
- 收藏
- 关注
原创 02JVM内存模型深度剖析与优化
一、JDK体系结构二、Java语言的跨平台特性三、JVM整体结构及内存模型补充一个问题:在minor gc过程中对象挪动后,引用如何修改?对象在堆内部挪动的过程其实是复制,原有区域对象还在,一般不直接清理,JVM内部清理过程只是将对象分配指针移动到区域的头位置即可,比如扫描s0区域,扫到gcroot引用的非垃圾对象是将这些对象复制到s1或老年代,最后扫描完了将s0区域的对象分配指针移动到区域的起始位置即可,s0区域之前对象并不直接清理,当有新对象分配了,原有区域里的对象也就被清除了。min
2021-09-28 21:14:32
269
3
原创 01类加载机制深度解析
一、类加载运行全过程当我们使用java命令运行某个类的main函数启动程序时,首先需要类加载器把主类加载到JVM。通过java代码命令执行代码的大体流程如下:其中loadclass的类加载过程有如下几部:加载>>验证>>准备>>解析>>初始化>>使用>>卸载加载:在硬盘上查找并通过IO读取字节码文件,使用到类时才会被加载,例如调用这个类的main()方法,new对象等等,在加载阶段会在内存中生成一个代表这个类的java.l
2021-09-21 16:42:35
252
原创 SpringMVC细致讲解
SpringMVC基本用法SpringMVC是Spring框架的一个模块,SpringMVC和Spring无需通过中间整合层进行整合。SpringMVC是一个基于MVC的web框架,即Spring Web MVC。Spring Web MVC和Struts2都属于表现层的框架,它是Spring框架的一部分,我们可以从Spring的整体结构中看得出来:Web MVC原理首先来一下MVC,MVC是一种开发模式,在大量的软件开发过程中所积累出来的经验,然后根据经验抽象出来的一种开发模式。下面来看一下MVC
2020-06-05 16:24:57
1047
原创 Spring内容史上最全、最细致讲解(二)
Spring AOP使用Spring AOP之前出现的问题:代码混乱:越来越多的非业务需求(日志和验证等)加入后,原有的业务方法急剧膨胀.每个方法在处理核心逻辑的同时还必须兼顾其他多个关注点代码分散:以日志需求为例,只是为了满足这个单一需求,就不得不在多个模块(方法)里多次重复相同的日志代码.如果日志需求发生变化,必须修改所有模块.AOP简介AOP(Aspect-Oriented Programming,面向切面编程):是一种新的方 法论,是对传统00P(Object-OrientedP
2020-06-03 18:20:11
537
1
原创 Java数据结构与算法——栈(栈的入门与介绍)
栈的一个实际需求请输入一个表达式计算式:[722-5+1-5+3-3] 点击计算【如下图】请问: 计算机底层是如何运算得到结果的? 注意不是简单的把算式列出运算,因为我们看这个算式7 * 2 * 2 -5, 但是计算机怎么理解这个算式的(对计算机而言,它接收到的就是一个字符串),我们讨论的是这个问题。-> 栈栈的介绍栈的英文为(stack)栈是一个先入后出(FILO-First In Last Out)的有序列表。栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行
2020-06-01 13:43:36
221
原创 Java数据结构与算法——链表(环形链表与Josephu 问题)
Josephu 问题约瑟夫问题的示意图:Josephu 问题Josephu 问题为:设编号为1,2,… n 的n 个人围坐一圈,约定编号为k(1<=k<=n)的人从1 开始报数,数到m 的那个人出列,它的下一位又从1 开始报数,数到m 的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。提示用一个不带头结点的循环链表来处理Josephu 问题:先构成一个有n 个结点的单循环链表,然后由k 结点起从1 开始计数,计到m 时,对应结点从链表中删除,然后再从被删除结
2020-05-31 11:46:44
258
原创 Spring内容史上最全、最细致讲解(一)
Spring是什么Spring是- - 个开源框架.Spring为简化企业级应用开发而生.使用Spring可以使简单的JavaBean实现以前只有EJB才能实现的功能.Spring是一个IOC(DI)和AOP容器框架.具体描述Spring:轻量级. sping是非侵入性的.基于Sping开发的应用中的对象可以不依赖于Spring的API依赖注.入(DI - dependency ijecion. 1oC)面向切面编程(AOP - aspect orientedprogramming)窗器:
2020-05-29 20:26:47
2159
1
原创 Java数据结构与算法——链表(手撕双向链表)
双向链表应用实例双向链表的操作分析和实现 使用带head 头的双向链表实现–水浒英雄排行榜管理单向链表的缺点分析:单向链表,查找的方向只能是一个方向,而双向链表可以向前或者向后查找。单向链表不能自我删除,需要靠辅助节点,而双向链表,则可以自我删除,所以前面我们单链表删除时节点,总是找到temp,temp 是待删除节点的前一个节点(认真体会).分析了双向链表如何完成遍历,添加,修改和删除的思路对上图的说明:分析双向链表的遍历,添加,修改,删除
2020-05-28 15:27:51
439
原创 Java数据结构与算法——链表(手撕单链表)
一、链表(Linked List)介绍链表是有序的列表,但是它在内存中是存储如下小结上图:链表是以节点的方式来存储,是链式存储每个节点包含data 域, next 域:指向下一个节点.如图:发现链表的各个节点不一定是连续存储.链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定单链表(带头结点) 逻辑结构示意图如下二、单链表的应用实例使用带head 头的单向链表实现–水浒英雄排行榜管理完成对英雄人物的增删改查操作, 注: 删除和修改,查找在添加英雄时,根据排名将英雄插入
2020-05-26 13:23:29
346
原创 Linux基础知识——常用命令(一)
一 命令的基本格式1. 命令的提示符[root@localhost ~]#[]:这是提示符的分隔符号,没有特殊含义。root:显示的是当前的登录用户,超哥现在使用的是root用户登录。@:分隔符号,没有特殊含义。localhost:当前系统的简写主机名(完整主机名是localhost.localdomain)。~:代表用户当前所在的目录,此例中用户当前所在的目录是家目录。#:命令提示符。超级用户是#,普通用户是$2. 命令的基本格式[root@localhost ~]# 命令[选项]
2020-05-25 21:17:52
319
1
原创 spring boot入门到精通(一)——spring boot简介及环境准备
**一、**Spring Boot 入门1、Spring Boot 简介简化Spring应用开发的一个框架;整个Spring技术栈的一个大整合;J2EE开发的一站式解决方案;2、微服务2014,martin fowler微服务:架构风格(服务微化)一个应用应该是一组小型服务;可以通过HTTP的方式进行互通;单体应用:ALL IN ONE微服务:每一个功能元素最终都是一个可独立替换和独立升级的软件单元;详细参照微服务文档3、环境准备环境约束–jdk1.8:Spring Boot
2020-05-25 17:24:54
221
原创 Java数据结构与算法——队列与环形队列
队列与环形队列一、队列介绍队列是一个有序列表,可以用数组或是链表来实现。遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出示意图:(使用数组模拟队列示意图)== 二、数组模拟队列思路== 队列本身是有序列表,若使用数组的结构来存储队列的数据,则队列数组的声明如下图, 其中maxSize 是该队列的最大容量。 因为队列的输出、输入是分别从前后端来处理,因此需要两个变量front
2020-05-25 11:56:07
299
原创 Java数据结构与算法——稀疏数组与二维数组的转换
二维数组与稀疏数组的互相转换基本介绍:当一个数组大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。稀疏数组的处理办法:(1)、记录数组一共有几行几列,有几个不同的值。(2)、把具有不同的值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模。应用实例1)、使用稀疏数组来保留之前的二维数组(棋盘、地图)2)、把稀疏数组存盘、并且可以重新恢复原来的二维数组 二维数组转稀疏数组的实例:1)、遍历原始的数组,得到有效数据的个数sum2)、根据sun就可以创建稀疏
2020-05-25 11:28:18
317
1
原创 TCP通信程序案例
本篇主要讲述一篇TCP通信程序的案例,实现客户端和服务器端之间的TCP通信连接具体代码实现如下所示:①服务器端package Socket_Test;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.ServerSocket;imp...
2019-10-15 12:11:43
439
原创 Java网络编程之网络通信概述
网络编程三要素:协议、IP、端口号一、协议网络通信协议:在计算机网络中,一些连接和通信的规则被称为网络通信协议TCP/IP协议:4层分层协议应用层:HTTP FTP TFTP SMTP SNMP DNS传输层:TCP UDP网络层:ICMP IGMP IP ARP RARP物理层、数据链路层:由底层网络定义的协议(作为了解内容)协议分类:UDP:用户数据报协议(User Da...
2019-10-14 15:23:46
283
原创 Java多线程从入门到精通(一)
Java多线程简单入门本篇文章主要讲述Java多线程的基础入门知识,之后会陆续分享更深入的技术!一、两种创建线程的方法1、MyThread继承Thread类,然后重写其中的run方法示例如下:public class MyThread extends Thread{ @Override public void run() { while(true) { System.out...
2019-09-20 13:43:46
1706
1
原创 Java IO流之字节流
一、 IO 流的概念简述I:Input:输入(读取),把硬盘中的数据读取到内存中使用O:Output:(输出、写入),把内存中的数据,写入到硬盘中保存流:(字符、字节),1字符=2字节,1字节=8个二进制位字节流:字节输入流:InputStream ,字节输出流:OutputStream字符流:字符输入流:Reader,字符输出流:Writer二、字节输出流写入数据到文件Java.i...
2019-09-19 20:58:01
213
原创 Java中IO之递归
递归: 方法自己调用自己递归的分类: 直接递归和简介递归 直接递归是指方法自己调用自己 简介递归可以简单描述为A方法调用B,B方法调用A 注意事项:递归一定要有条件限定,保证递归能够停下来,否则会造成栈内存溢出 递归虽然有条件限定,但是递归次数不能太多,否则也会造成栈内存溢出 构造方法禁止递归 递归的使用前提:当调用方法的时候,方法的主题不变,每次调...
2019-09-07 13:14:43
240
原创 Java中IO流之File类
File类 的概述: java.io.File类文件和目录路径名的抽象表示形式Java把电脑中文件和文件夹(目录)封装成了一个File类,我们可以使用File类对文件和文件夹进行操作我们可以使用的File类的方法: 创建一个文件/文件夹 删除一个文件/文件夹 获取一个文件/文件夹 判断一个文件/文件夹 对文件夹进行遍历 File 类遍历(文件夹)目录功能File...
2019-09-06 15:22:52
233
1
原创 Java集合总结
Java集合及其工具类一、常用的两种遍历集合的方法迭代器的实现 Iterator<String> it =coll.iterator(); while(it.hasNext()){ String line =it.next(); System.out.println(line); }实现原理: 首先指针会指向集合的-1索引,判断hasNext之后就会输出...
2019-09-06 10:50:02
144
原创 MySQL多表查询
MySQL数据库——多表查询查询语法:select列名列表from表名列表where …准备sql: #创建部门表 create table dept( id int primary key auto_increment, name varchar(20) ); insert into dept (name) VALUES('研发部'),('市场部'),('财务部');...
2019-09-05 21:30:55
341
原创 MySQL数据库表的约束(主键约束、外键约束、唯一约束、非空约束、自动增长、级联操作)
约束:概念:对表中的数据进行限定,保证数据的正确性、有效性和完整性分类:1、主键约束:primary key2、非空约束:not null3、唯一约束:unique4、外键约束:foreign key(5、自动增长)(6、级联操作) 一、主键约束:primary key1、注意: (1)、含义:非空且唯一 (2)、一张表只能由一个字段为主键 (3)、主键就是表中记录的唯...
2019-09-03 17:46:37
1184
原创 Mysql数据库、表、表中数据的增删改查
MySQL数据库常用的增删改查先简单描述一下数据库的概念:1、什么是SQL?Structured Query Language:结构化查询语言其实就是定义了所有操作型数据库的规则。每一种操作的方式存在不一样的地方,简称“方言”2、SQL通用语法(1)sql语句可以单行或多行书写,以分号结尾(2)可以使用空格或缩进来增强语句的可读性(3)MySQL数据库的SQL语句不区分大小写,...
2019-09-03 17:09:11
2711
原创 Java的流程控制
Java程序结构中有三种基本类型,即:顺序结构、选择结构、循环结构一、顺序结构顾名思义,顺序就是简单的从上往下、逐条运行程序,这种程序的运行方式成为顺序执行,对应的结构称为顺序结构。顺序结构是我们平时做程序设计的基础,结构简单易懂,在此就不做过多介绍。二、选择结构选择结构又被称为分支结构,在程序的运行过程中,根据所给的限定条件判断是否执行这条语句,如果不满足条件则跳过执行下一条。选择结构主...
2019-03-18 21:01:50
165
原创 Java的运算符、表达式及语句
一、运算符运算符是连接操作符的符号,根据操作数个数的不同,可以分为:单目运算符、双目运算符、三目运算符。下面按照功能的不同分类做简单介绍。1、算术运算符算术运算符基本和数学中的运算符差不多,有区别的地方在于 / 和 % 这两个符号,前者是取整运算符,例如:5/2=2.而后者则是取余运算符,例如:5/2=12、自增(自减)运算符(++ --)自增自减运算符均为单目运算符,目的是让操作数的...
2019-03-16 23:34:45
509
原创 java中的关键字、标识符、变量及常量
一、关键字Java语言中一些具有特殊用途的单词被称作关键字,定义标识符时不要让标识符和关键字相同,以免引起错误,Java中的关键字一般都是小写,Java一共包含50个关键字,根据他们的用途,可以划分成4类。1、标识数据类型、对象:boolean、byte、char、double、false、float、int、long、new、null、short、true、void、instanceof;...
2019-03-16 15:56:40
1094
原创 JAVA开发前的准备工作(JDK与eclipse的安装,并写一个简单的Java程序)
Java开发前的准备工作一、JDK的安装1、下载并安装、配置Java程序需要的JDK(Java SE Development Kit),即Java标准版开发包。它提供了编译、运行Java程序所需要的各种工具和资源,包括Java编译器、Java运行时环境,以及常用的Java类库。在安装JDK时要记住安装路径,接下来会用到。2、右键我的电脑,选择属性,选择高级系统设置,点击环境变量,在下方系统变...
2019-03-05 10:13:29
830
原创 JAVA编程语言的认知与入门(二)
Java语言的特点与运行机制- Java语言的特点1、简单性Java语言与c++相比较来说较为简单,没有头文件、操作符、指针运算虚基类等,这将有利于我们学习和掌握,此外,Java还拥有垃圾自动回收机制,减轻了程序员的负担。2、面向对象Java语言提供了类、接口和继承等特性,Java只支持类之间的单继承和接口之间的多继承,并且也支持类与接口之间实现机制,总而言之,Java是一种面向对象的程...
2019-03-04 21:50:38
332
原创 JAVA编程语言的认知与入门(一)
学习Java语言的诞生、发展(初学者的入门)**Java语言的前身:**java语言其实最早诞生于1991年,起初被称为OAK,是sun公司位消费性电子产品设计的通用环境,sun公司最初的目的就是为了开发一种独立于平台的软件技术,在网络出现之前,OAK是默默无闻的一款软件,随着互联网的不断发展,才推进了OAK的发展与延申。在Java语言出现之前,互联网的网页就像一张白纸一样,只有一些枯燥乏味的H...
2019-03-03 18:34:13
392
原创 一场追梦的开始!
学习无止境,任重而道远这是我的第一篇创作,接下来的时间里我将会分享我的IT技术学习历程和内容。希望在接下来的时间里能和大家一起分享我每天的收获,能够互相学习,共同进步。...
2019-03-03 16:35:38
205
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人