自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux总结

Linux文件操作命令 1、文件查看命令 文本查看 cat 查看文件内容 合并文件 往文件中写入数据, Ctrl+d 是结束输入 more 当一个文件的内容超过一个屏幕能显示的行数,使用 more 可以分屏显示文件内容。使用方式: more filename less 文本内容查看器,查看文件内容,但是文件内容不会显示到界面上 head 显示文件前 n 行的内容 tail 显示文件后 n 行的内容 数据统计 wc 统计文件中单词个数(-w)、字符个数(-c)、行数(-l) 文件编辑命令 VIM

2020-10-21 12:00:05 238

原创 初始Linux目录结构

Linux 就是一组软件,而软件分为操作系统软件和应用软件,当然 Linux 属于操作系统软件。 Linux和Windows的区别终端的基本操作Linux结构目录结构:路径开机与重启Linux文件类型 Linux 就是一组软件,而软件分为操作系统软件和应用软件,当然 Linux 属于操作系统软件。 1、Linux 主要使用命令行操作系统,Windows 图形化界面2、Linux 主要应用于服务器,Windows 是个人操作系统3、Linux 属于开源项目,而 Windows 不开源4、Linux 是多用户系

2020-10-07 21:26:17 359

原创 线程间通信

线程间通信线程通信是什么wait()/notify()/notifyAll()await/signal/signalAll 线程通信是什么 线程通信的目标是使线程间能够互相发送信号。另一方面,线程通信使线程能够等待其他线程的信号。 例如,线程B可以等待线程A的一个信号,这个信号会通知线程B数据已经准备好了 wait()/notify()/notifyAll() 必须在synchronized同步代码块中使用 一个线程一旦调用了任意对象的wait()方法,就会变为非运行状态,直到另一个线程调用了同一个对象的n

2020-07-31 10:59:29 235

原创 死锁

这里写目录标题什么是死锁二级目录三级目录 什么是死锁 二级目录 三级目录 死锁是指两个或两个以上的线程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。 死锁的必要条件 1)互斥条件:某个资源某一时刻只能由一个线程占用 2)不可抢占条件:资源申请者不能从资源占有者手中抢夺资源 3)占有且申请:线程至少已经占有一个资源,但又去申请新的资源,新资源被占用,该线程会阻塞 4)循环等待:

2020-07-28 21:55:54 140

原创 ConcurrentHashMap

ConcurrentHashMap类的继承关系核心方法put()、get()解读 类的继承关系 public class ConcurrentHashMap<K,V> extends AbstractMap<K,V> implements ConcurrentMap<K,V>, Serializable { AbstractMap:一个抽象类,与HashMap一样,会有一些公有方法定义在AbstractMap里,对Map的基本操作; ConcurrentMa

2020-07-28 21:51:08 154

原创 ReentrantLock

ReentrantLockReentrantLock底层实现获取锁与释放锁公平锁与非公平锁可重入锁与不可重入锁ReentrantLock与synchronized的比较 ReentrantLock 提供了无条件的,可轮询的,定时的以及可中断的锁获取操作 加锁和解锁都是显式的 使用格式:```java Lock lock = new ReentrantLock(); try{ lock.lock();//加锁操作 }finally{ lock.unlock(); } `` 使用后必须释放锁 底层实现 当我们n

2020-07-28 21:39:20 124

原创 Volatile

Volatile Volatile 内存屏障 在多线程中volatile关键字解决类似于cpu缓存一致性问题 线程1 线程2 线程1的工作内存 线程2的工作内存 (x的副本) (x的副本) 主内存(共享变量x)、 x++ unsafe.cpp源码中,volatile修饰的变量存在一个"lock."的前缀 "lock."相当于是一个内存屏障 例: int x = 10; int y = 10; volatile int

2020-07-28 21:24:53 129

原创 多线程的讲解

并发与并行: 并发:多个线程操作同一个资源,不是同时执行,而是交替执行,单核CPU交替执行时间间隔特别短 并发编程:指多个任务在一个时间段重复执行的结构 并发编程的三个特性: 1.原子性 原子操作:不可分割的操作,中间不会被其他线程打断,不需要同步操作 多个原子操作合起来就需要使用到同步 原子性指的是一次操作或者多个操作,要么全部执行,要么全部都不执行 例如: int a = 10 ; //原子操作 a++; // 不是原子操作 int b = a; //不是原子操作 a = a+1; // 不是操作

2020-07-28 21:04:32 122

原创 HashMap的分析

HashMap: HashMap 在底层将 key-value 当成一个整体进行处理,这个整体就是一个 Entry 对象。 HashMap 底层采用一个 Entry[] 数组来保存所有的 key-value 对,当需要存储一个对象时, 会根据hash算法来决定其在数组中的存储位置,在根据equals方法决定其在该数组位置上的链表中的存储位置;当需要取出一个对象时,也会根据hash算法找到其在数组中...

2020-04-04 22:10:35 183

原创 PriorityQueue的总结

PriorityQueue: 1、构造函数:无参数:默认参数大小为11 public PriorityQueue() { this(DEFAULT_INITIAL_CAPACITY, null); } 有参数:用户可自定义大小 public PriorityQueue(int initialCapacity) { this(initialCapacity, null); } 2:扩...

2020-04-04 21:18:21 243

原创 ArrayList 与 LinkedList区别:

ArrayList 与 LinkedList区别: 1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 LinkedList: public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque&l...

2020-04-03 17:16:11 202

原创 Mysql基础

一、数据库的基础使用: 创建数据库: create database 数据库名 命名规则: 数据库名不能重名 查看已创建好的数据库: show databases; 删除数据库: drop database 数据库名; 使用数据库: use 数据库名; 创建表: create table 表名 ( 属性名1 数据类型 … 属性名N 数据类型 完整性约束 ); 修改表: 添加字段: alter ta...

2020-03-02 21:14:08 390

原创 类和对象

#(类和对象) 首先要知道 类和对象的关系是对象是类的实例,类是对象的模板。 1.对象的含义:对象是生活中的的确确存在的事物 2.如何使用对象: 类名 对象名 =new 类名(); 例如: public class lei { public static void main(String[] args) { lei li=new lei(); } } 所包...

2019-11-25 22:27:35 110

空空如也

空空如也

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

TA关注的人

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