发布了文章2021-04-12
不具备稳定性的排序:选择排序、快速排序、堆排序具备稳定性的排序:冒泡排序、插入排序、归并排序(nlogn)选择排序每次遍历找到数组中最小的元素的索引,依次交换。 {代码...} 快速排序快速排序是由上到下的,先分区,然后再处理子问题。基本思路:先从数组中找一...
发布了文章2021-04-10
概述Redis优缺点优点读写性能优异。支持数据持久化,支持AOF和RDB两种持久化方式。支持事务,Redis的所有操作都是原子性的,同时Redis还支持对几个操作合并后的原子性执行。支持的数据结构丰富。支持主从复制,主机会自动将数据同步到从机,可以进行读写分离。缺点数...
发布了文章2021-04-02
ArrayList集合底层数据结构List 接口的可调节大小的数组实现。特点:增删慢,查询快。ArrayList实现的三个接口它实现了三个接口,相同点都是空接口,作为一个标记出现。Serializable标识接口类的序列化由实现这个接口的类启动。不实现此接口的类不会使用任何状态序列...
发布了文章2021-04-02
ThreadLocal 叫做线程变量,意思是 TheadLocal 中填充的变量属于当前线程,该变量对于其他线程来说是隔离的。即 提供线程内的局部变量,不同的线程之间不会相互干扰。
发布了文章2021-04-01
死锁是指两个或多个以上的进程在执行过程中,因争夺资源而造成一种互相等待的现象,若无外力干涉那他们都将无法推进下去。如果资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。
发布了文章2021-03-31
HashMap用于存储键值对,在JDK1.8之前是基于数组+链表实现的,JDK1.8加入了红黑树结构,提高了查询效率。(让再说一说就 线程不安全,扩容问题)
发布了文章2021-03-31
语言特性面向对象编程三大特性封装:封装把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法。继承:继承就是子类继承父类的特征和行为,使用继承我们能够非常方便地复用以前的代码。多态:多态就是同一个接口,使用不同的实例而执行不同操作Java和C++...
发布了文章2021-03-28
用户表,包括 id、用户名、密码、盐值、邮箱、类型(普通/管理员/版主)、状态(激活/未激活)、激活码(随机字符串)、头像 url、注册时间。
发布了文章2021-03-26
LRU的全名为 Least Recently Used,意思是“最近少用”,是一种常用的页面置换算法,选择最近最久未使用的数据予以淘汰。典型的Redis缓存就采用了各类变种的LRU算法。
发布了文章2021-03-22
引出获取多线程的方法,我们都知道有三种,还有一种是实现Callable接口实现Runnable接口实例化Thread类实现Callable接口使用线程池获取Callable接口Runnable和Callable的区别Runnable接口没有返回值,Callable接口有返回值Runnable接口不会抛异常,Callable接口可以...
发布了文章2021-03-16
LockSupport是线程等待唤醒机制(wait/notify)的改良版本。LockSupport中的 park() 和 unpark() 的作用分别是阻塞线程和接触阻塞线程。
发布了文章2021-03-08
当用volatile去申明一个变量时,就等于告诉虚拟机,这个变量极有可能会被某些程序或线程修改。为了确保这个变量修改后,应用范围内所有线程都能知道这个改动,虚拟机就要保证这个变量的可见性等特点。最简单的一种方法就是加入volatile关键字。
发布了文章2021-03-07
引用计数法(该算法已经过时了,解决不掉循环引用的问题)每当有一个地方引用它,计数器值加1;每当有一个引用失效,计数器值减1任何时刻计数器值为零的对象就是不可能再被使用的,那么这个对象就是可回收对象。
发布了文章2021-03-07
java虚拟机是运行java字节码的虚拟机。JVM有针对不同系统的特定实现,目的是使用相同的字节码,它们都会给出相同的结果。(跨平台性)
发布了文章2021-03-06
OSI七层模型 和 TCP/IP五层模型物联网淑惠试用应用层:通过不同的应用层协议为不同的网络应用提供服务。表示层:使通信的应用程序能够解释交换数据的含义。会话层:负责建立、管理和终止表示层实体之间的通信会话。传输层:为两台主机进程之间的通信提供服务,建立端...
发布了文章2021-02-24
public static void main(String[] args) { int i = 1; i = i++; int j = i++; int k = i + ++i * i++; System.out.println("i=" + i); System.out.println("j=" + j); System.out.println("k=" + k); }
发布了文章2021-02-24
字节码助记符指令含义0x00nopNone0x01aconst_null将null推送至栈顶0x02iconst_m1将int型-1推送至栈顶0x03iconst_0将int型0推送至栈顶0x04iconst_1将int型1推送至栈顶0x05iconst_2将int型2推送至栈顶0x06iconst_3将int型3推送至栈顶0x07iconst_4将int型4推送至栈顶0x0...
发布了文章2021-02-23
概念自旋锁(spinlock):是指尝试获取锁的线程不会立即阻塞,而是采用循环的方式去尝试获取锁。之前学过的CAS,底层使用的就是自旋锁,自旋就是多次尝试,多次访问,不会阻塞的状态就是自旋。优缺点优点:循环比较获取直到成功,没有类似wait的阻塞。还能减少线程上...
发布了文章2021-02-23
(官方概念)指的是同一线程外层函数获得锁之后,内层递归函数仍然能获取到该锁的代码,在同一线程在外层方法获取锁的时候,在进入内层方法会自动获取锁。
发布了文章2021-02-23
非公平锁:是指多个线程获取锁的顺序,并不是按照申请锁的顺序。有可能申请的线程比先申请的线程优先获取锁,在高并发环境下,有可能造成优先级翻转,或者饥饿的线程(也就是某个线程一直等不到锁)