自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 消息队列

消息队列传统消息队列的应用场景进行异步的一些处理,加快系统的响应时间,比如用户进行注册时需要将注册信息先写入数据库再调用发送短信的接口这样的话比较慢,加入了消息队列时,我们在用户将注册信息填写完写入数据库时,页面就响应注册成功,然后我们就将发送短信的消息写入消息系统,这样减少了系统的响应时间问题。使用消息队列的好处解耦异步用户向系统A发送一个请求,系统A处理一条sql20ms,...

2020-04-29 13:37:33 181

原创 Servlet

概念:一、通用网关接口(CGI):接收客户端浏览器发送的请求,主要用来处理网页提交的数据,比如form提交的数据,比如ajax的一些数据。不是专门为网页编程设计的,c,java,vb都可以编写二、什么是servleta)servlet是一个CGI程序,使用java语言开发b)servlet技术是使用java servlet应用程序设计接口(API)及相关类和方法的jaava程序。java ...

2020-03-13 21:10:52 149

原创 JSP九大内置对象

jsp的简介:JSP全称:Java Server Pages将java代码嵌入到html页面中1.1:指令部分:对当前页面设置的区域,一般在页面的第一行1.2:小脚本:java代码嵌入的区域1.3:表达式:输出区域 输出显示到页面中<!--JSP的组成部分--><!--这个区域是JSP的指令部分--><%@ page language="java" ...

2020-03-13 21:09:09 200

原创 ArrayList源码解析

ArrayList整体架构ArrayList就是一个数组的结构图中展示的是一个长度为10的数组(elementData),从1开始计数。index表示数组的大小从0开始计数,接下来了解几个概念DEFAULT_CAPACITY:数组的初始大小10size:表示当前数组的大小,从1开始计数,没有volatile修饰,线程不安全modCount:统计当前数组被修改的版本次数,修改一次+1...

2020-03-10 22:10:20 141

原创 MySQL的存储引擎

数据库与实例数据库的概述:​ 简单说就是存放数据的仓库,这个仓库按一定的数据结构(数据的组织形式、或数据之间的联系)来组织和存储的,数据库分为关系型数据库(Oracle,MySQL,SQLServer)和非关系型数据库(NOSQL,Memcaced,redis等)实例​ MySQL实例是由线程和内存组成,它是真正用于操作数据库文件的,一般情况下一个实例操作一个或...

2020-03-10 11:10:57 82

原创 JVM类加载机制

类加载的过程加载通过一个类的全限定名来获取此类的二进制字节流将静态存储结构转换为方法区的运行时数据结构生成一个java.lang.class 对象,作为这个类的访问入口验证其实就是检查加载的 class 的正确性和安全性准备为类变量分配存储空间以及设置类变量初始值(附默认值)解析JVM 将常量池内的符号引用转换为直接引用初始化执行类变量的赋值 以及静态代码块双亲委派...

2020-03-10 11:02:45 145 2

原创 集合的安全问题

Listimport java.util.List;import java.util.UUID;import java.util.concurrent.CopyOnWriteArrayList;public class UnSafeArrayListDemo { public static void main(String[] args) { List<String>...

2020-03-10 10:50:25 176

原创 HashMap源码

整体架构常见属性//初始容量为 16 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; //最大容量 static final int MAXIMUM_CAPACITY = 1 << 30; //负载因子默认值 static final float DEFAULT_LOAD_FACTOR = 0.75...

2020-03-10 10:39:59 64

原创 Linux命令

LinuxLinux命令练习vi和vim编辑器所以的linux系统都会内建vi文本编辑器,vim是vi的增强型,可以主动的以字体颜色辨别语法的正确性vi/vim编辑器有三种模式正常模式正常模式下可以使用快捷键,以vim打开一个文档就进入正常模式。插入模式/编辑模式该模式下程序员可以输入内容按下i、I、o、O、a、A、r、R任一字母就会进入编辑模式,一般使用i命令模式在这个模式...

2020-03-02 20:17:12 114

原创 Java集合

存储对象可以考虑的方式:数组、集合1、数组存储对象的特点Student []stu=new Student[20]; Stu[0]=new Student();弊端:a、一旦数组被创建,其长度不可变​ b、真实数组存放的对象的个数是不可知的,所以会用到集合2、集合Collection接口方法:add() addAll() size() clear() ...

2020-02-12 11:19:44 74

原创 abstract、static、final关键字

关键字abstract关键字抽象的,可以用来修饰类和方法1、修饰类抽象类,抽象类是为了模型化那些父类无法确定全部实现,而是由子类提供具体实现的对象的类a、不可被实例化,因为可能含有抽象方法,如果由此类的对象来调用时就无法调用未完成的抽象方法b、抽象类有构造器,还可以自定义构造器2、修饰方法抽象方法a、格式:没有方法体,以及{};例:public abstract void eat...

2020-02-11 16:17:45 254

原创 Redis设计与实现

Redis设计与实现数据结构与对象简单动态字符串Redis没有直接使用C语言传统的字符串表示(以空字符结尾的字符数组),而是自己创建了一种名为简单动态字符串(SDS)的抽象类型,并将SDS用作Redis的默认字符串表示在Redis里面,C字符串只会作为字符串字面量用在一些无需对字符串值进行修改的地方,比如打印日志。在Redis数据库里面,包含字符串值的键值对在底层都是由SDS实现的。例...

2020-02-04 17:41:27 232

原创 Redis入门

NoSQL概述NoSQL: Not Only Sql 非关系型数据库为什么需要NoSQL?High Performance 高并发读写Huge Storage 海量数据的高效率存储和访问High Scalablity&& High Availability 高可扩展性和高可用性NoSQL数据库的四大分类 键值存储 列存储 文档数据库 ...

2020-02-02 17:24:48 76

原创 Java并发编程的艺术

java并发编程的艺术并发编程的挑战并发编程的挑战:并发编程的目的是为了让程序运行的更快,但是并不是启动更多的线程就能让程序最大限度地并发执行。在进行并发编程时,会面临非常多的挑战,比如上下文切换问题,死锁问题,以及受限于硬件和软件的资源限制问题。上下文切换即使是单核的处理器也支持多线程执行代码,CPU通过给每个线程分配CPU时间片来实现这个机制。时间片是CPU分配给各个线程的时间,因为时...

2020-01-29 11:42:17 224

原创 JVM垃圾回收机制

序言我们知道程序计数器,虚拟机栈,本地方法栈等三个区域随线程而生,随线程而灭。栈中的栈帧随着方法的进入和退出进行着入栈和出栈。每一个栈帧中分配多少内存基本在类结构确定下来时就已知了,因此这几个区域的内存分配和回收都具备确定性,那么在这几个区域就不用过多的考虑回收的问题。因为方法结束或者线程结束后,内存也会跟着回收。而java堆和方法区则不一样,一个接口中的多个实现类需要的内存可能不一样,一个方...

2019-12-04 17:04:53 106

原创 java虚拟机运行时数据区域

概述:对于java程序员来说,在虚拟机自动内存管理机制的帮助下不再需要为每一个new操作去写配对的delete/free代码,不容易出现内存泄漏和内存溢出问题,由虚拟机管理内存,不过也正是因为java程序员把内存控制的权力交给了java虚拟机,一旦出现内存泄露和溢出方面的问题,如果不了解虚拟机是怎样使用内存的,那么排查错误将会成为一项异常艰难的工作。运行时数据区域程序计数器:当前线程所执行的...

2019-12-02 16:58:14 155

原创 JDBC

介绍JDBCjava数据库连接(Java Database Connectivit),简称JDBC,主要的功能在java与数据库之间建立连接,相当于一个桥梁。是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。执行原理 Java提供访问数据库规范称为JDBC,而生产厂商提供规范的实现类称为驱动。JDBC是接口,驱动是接口的实现类...

2019-12-01 16:10:37 93

原创 线程池

系统启动一个新线程的成本是非常高的。因为它涉及与操作系统的交互,使用线程池可以很好的提高性能。尤其是当系统中需要创建大量短暂存在的线程时。线程池在系统启动时即创建大量空闲的线程,程序将一个Runnable对象或者Callable对象传给线程池,线程池就会启动一个空闲的线程来执行它们的run()方法或者call()方法,当run()方法或者call()方法执行完后,该线程并不会死亡,而是再次返回线...

2019-11-28 22:13:11 53

原创 创建类和对象

定义类//定义类[修饰符]class 类名{零个到多个构造器定义零个到多个成员变量定义零个到多个方法}//构造器:用于构造该类的实例,java语言通过new关键字来调用构造器,从而返回该类的实例[修饰符]构造器名(形参列表){构造器执行体}//成员变量:用来定义该类或该类的实例包含的状态数据[修饰符]类型 成员变量名[=默认值]//方法:用来定义该类的行为特征或者功能实...

2019-11-27 15:29:31 238

原创 Mysql数据库基础

Mysql数据库操作一、对数据库的一些操作(1)查询所有的数据库SHOW DATABASES;(2)选择使用数据库USE 数据库名称;(3)查询当前正在使用的数据库SELECT DATABASE();(4)创建数据库CREATE DATABASE 数据库名称; ##当数据库不存在时才进行创建CREATE DATABASE IF NOT EXISTS 数据库名称;(...

2019-11-26 20:38:32 150

原创 线程的通信问题

在现实中,我们有时需要线程之间的协作来处理问题,比如最经典的生产者消费者模式,生产者必须等到队列中有空间时才能继续往里面放货物,那么在等待的时间里,就需要释放对临界资源的占(队列),因为生产者不释放对队列的占用权,消费者就无法进行消费,那么生产者就会一直进行等待。对于消费者同样如此,这种互相通信的方式就是线程间的通信。实现线程通信的常用方式实现线程间的通信最常见的以下两种方式i>syn...

2019-11-26 17:28:47 128

原创 java集合基础知识

java集合java集合实现类的继承树总述java集合类主要由Collection和Map两个接口派生而出,Collection是List、Set、Queue接口的父接口,Map是HashMap和TreeMap的父接口集合类和数组不一样,数组即可以放基本类型的值,也可以是对象,而集合里只能放对象。List集合是有序可以放重复值的,Set集合是无序的,不能放重复的值。ArrayList...

2019-11-25 16:53:15 98

原创 线程同步

java中实现线程同步的三种方式i>同步代码块ii>同步方法iii>使用同步互斥锁Reetrantlock

2019-11-22 22:56:12 95

原创 线程的优先级和守护线程

线程的优先级Thread类提供了setPriority(int newPriority),getPriority()来设置和返回指定线程的优先级,设置优先级的范围是1-10之间的整数,也可以是Thread类下的三个静态常量MAX_PRIORITY 值是10MIN_PRIORITY 值是1NORM_PRIORITY 值是5高优先级的线程会获得更多的执行机会守护线程守护线程也叫后台线程、...

2019-11-21 16:45:17 94

原创 线程的控制--sleep

线程睡眠如果需要让当前执行的线程暂停一段时间,并进入阻塞状态可以调用Thread类的静态方法sleep()实现当当前线程调用sleep方法后,该线程会进入阻塞状态,在该线程睡眠的时间里,该线程不会有执行的机会,即使执行的程序中没有其他线程。 @Override public void run() { System.out.println("睡眠前时间"+new Dat...

2019-11-21 16:23:32 631

原创 线程的控制--join

joinjoin方法是确定线程何时结束的,该方法将实现等待,一直到调用它的线程执行完join容器不会死,一直到容器中的线程死光,join死主线程也会死,是一种连锁效应例子1 public static void main(String[] args) { System.out.println("主线程开始"); ThreadA ta=new ThreadA(...

2019-11-21 15:45:21 78

原创 线程的状态

线程的状态有新建,就绪,运行,阻塞,死亡具体的过程如下:新建:当一个线程对象被new出来时就完成了新建线程就绪:当新建出的线程对象调用了start()后线程进入就绪状态运行:新建的线程对象调用了run()方法后线程进入运行状态阻塞:i>调用了sleep(),让线程进入睡眠状态ii>发生了IO阻塞iii>等待同步锁解锁iv>wait()等待通知v>调用...

2019-11-20 18:05:06 66

原创 java多线程的基本概念

线程和进程的区别i>进程是程序运行和资源分配的基本单位,线程是进程的一个实体,是CPU调度和分配的基本单位,是比程序更小的能独立运行的基本单位。ii>进程在执行的过程中拥有独立的内存单元,而多个线程共享内存资源,减少切换次数,从而效率更高。并发和并行的区别并行:指的是在同一时刻,有多个处理器同时处理多条指令并发:指的是在同一时刻只能处理一条指令,指令交替进行处理,在宏观上具有...

2019-11-20 17:08:07 70

原创 java多线程的创建方式

线程的创建方式通过继承Thread类来创建线程//分别创建两个类分别继承Thread创建线程public class ThreadA extends Thread { @Override public void run() { for(int i=0;i<3;i++){ //打出当前线程的名字 System.out.prin...

2019-11-20 16:42:11 84

原创 java异常

java异常异常体系Throwable是所有异常的父类Error:程序无法处理的系统错误,编译器不做检查,属于jvm的问题。Exception:程序可以处理的异常,捕获后可能恢复。RuntimeException(运行时异常):是不可预知的异常,程序应当自行避免(如数组的下标越界,空指针异常),属于程序的问题。CheckedException(非运行时异常):是可以预知的异常(如内存...

2019-10-30 14:02:01 92

空空如也

空空如也

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

TA关注的人

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