自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

啦卡的博客

自己学习过程中的经验总结

  • 博客(101)
  • 收藏
  • 关注

原创 Ubuntu(Linux)上安装wine,安装QQ

(1)安装 wine如果是64位的Ubantusudo apt-get install wine64如果是32位的Ubantusudo apt-get install wine32可以通过 wine --version 查看是否安装成功

2021-03-26 11:10:42 272

原创 IDEA中打jar包问题

1、项目包含pom.xml文件,全项目打 jar 包项目右键 --->Open Module Settings如下选择,点击OK点击OK退出!在Intellij Idea的菜单栏中依次选择“Build -> Build Artifacts”选项,最后选择Rebuild操作,即可在上述指定的输出目录中发现本次生成的Jar文件。2、普通Java项目,只导出部分 类由于原工程有目录结构,因此在这里要手动创建和原工程一样的项目结构(只需要导出的部...

2020-12-28 15:51:32 506

原创 Ubuntu安装新内核报错:Switched to clocksource tsc

只需要在创建虚拟机时采用 Typical安装  或者   Custom安装时选择IDE

2020-12-18 14:13:14 1852 1

原创 给Linux增加系统调用

1、前期准备工作(2)安装 必要软件sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison(2)查看当前内核版本 及可以安装的内核版本查看可以安装的内核版本apt-cache search linux-source查看当前内核版本uname -r(3)下载内核源码sudo apt-get install linux

2020-12-16 15:56:53 1193

原创 vscode中出现 找不到slab.h、mm.h等头文件时

解决办法,先找到 mm.h 等头文件在本机中的位置我们选择 /usr/src/linux-headers-5.3.0-28/include这个路径点击上图中右下角的 linux点击上图中的 编辑配置(JSON)在 includePath 中加入刚才选择路径,保存即可可以看到 slab.h 、mm.h 灯头文件已经不提示报错了。剩下报错的头文件可 参考此方法来解决...

2020-12-14 10:04:04 2158 2

原创 JDK8系列:Collection接口 AND AbstractCollection抽象类

1、Collection 接口1.1、简介List和Set都是接口,它们继承与Collection。List是有序的队列,可以用重复的元素;而Set是数学概念中的集合,不能有重复的元素。List和Set都有它们各自的实现类。为了方便,我们抽象出AbstractCollection类来让其他类继承,该类实现类Collection中的绝大部分方法。AbstractList和AbstractSet都继承与AbstractCollection,具体的List实现类继承与Abstract...

2020-12-11 15:42:52 116

原创 Ubuntu上安装RabbitMQ

(1)先安装 erlang,因为 RabbitMQ 是通过 erlang 写的sudo apt-get install erlang-nox可以通过下面命令看是否安装成功:erl(2)通过软件源安装 RabbitMQsudo apt-get install rabbitmq-server(3)查看 RabbitMQ 的状态,开启,关闭,重新启动等查看状态sudo service rabbitmq-server status开启服务sudo service rabb

2020-12-11 10:46:40 169 1

转载 Ubuntu上解决vscode 空格太小看不清

转载自:https://blog.csdn.net/weixin_42377635/article/details/100010524

2020-12-10 20:38:28 668

转载 Ubuntu下IDEA无法查看JDK源码

原文链接:https://www.cnblogs.com/jielearscoding/p/13466350.html

2020-12-04 22:07:35 339

原创 ubuntu WPS 报错系统缺失字体symbol、wingdings、wingdings 2、wingdings 3

出现提示的原因是因为WPS for Linux没有自带windows的字体,只要在Linux系统中加载字体即可。1下载缺失的字体文件,然后复制到Linux系统中的/usr/share/fonts文件夹中, 解压http://pan.baidu.com/s/1mh0lcbY2执行以下命令,生成字体的索引信息:sudo mkfontscalesudo mkfontdir3运行fc-cache命令更新字体缓存sudofc-cache4. 重启w...

2020-12-02 12:01:33 1177

转载 Vmware Unable to install all modules,不能够编译安装vmmon和vmnet

原文链接:https://blog.csdn.net/pannubi/article/details/107885466

2020-11-30 09:19:14 1581

转载 linux上安装nodejs

原文链接:https://www.cnblogs.com/mao2080/p/9346018.html

2020-11-29 16:06:29 82

转载 Linux上安装redis详细步骤

原文链接:https://www.cnblogs.com/happywish/p/10944253.html

2020-11-29 15:42:09 100

转载 Ubuntu(Linux)上安装openjdk8

(1)更新软件源sudo apt-get update(2)安装openjdk8sudo apt-get install openjdk-8-jdk(3)通过which java找到java安装路径我这里找到的是 /usr/bin/java(4)添加环境变量sudo vim ~/.bashrc在尾部加入export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64export JRE_HOME=${JAVA_HOME}/jr..

2020-11-28 17:02:05 1219

原创 JDBC编程简单入门

Java程序都是通过JDBC连接数据库,JDBC是由SUN公司提出的一系列规范,但是它之定义了接口规范,而具体的实现由各个数据库产商来实现。JDBC是一种典型的桥接模式。(1)后台数据库CREATE TABLE `role` ( `id` bigint(20) NOT NULL, `role_name` varchar(255) DEFAULT NULL, `note` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=I

2020-11-23 11:27:03 66

转载 Ubantu安装mysql5.7

原文链接:https://blog.csdn.net/yiyangtime/article/details/84899756

2020-11-19 15:46:23 148

转载 Ubuntu安装中文输入法

https://www.jianshu.com/p/a800fa6d57b7

2020-11-09 22:37:03 158

原创 JDK8系列:阻塞队列 之 DelayQueue(延迟队列)源码分析

1、DelayQueue 简介DelayQueue 是一个支持延时获取元素的无界阻塞队列,队列使用PriorityQueue来实现,队列中的元素必须实现Delayed接口,在创建元素时可以指定多久才能从队列中获取当前元素,只有在延时期满时才能从队列中提取元素。列头的元素是最先“到期”的元素。PriorityQueue 是一种优先级的队列,队列中的元素会按照优先级进行排序,我们在前面讲过PriorityBlockingQueue,PriorityQueue其实现原理也是使用的二叉堆,因此这次将不会再分

2020-11-09 15:58:59 904

原创 vmware虚拟机上Linux(Kylin、Ubantu、CentOS)安装--分区大小规划

采用的是 vmware 虚拟机可以采用典型安装,这种安装方法比较简单,但是貌似不能自己对分区做自己的规划。采用自定义安装仅仅是为了学习Linux,一遍一遍的安装linux,可以加深对linux各个文件夹的理解。1、新建一个空白虚拟机2、开始安装确定之后,点击开启虚拟机注意:对一块磁盘,最多有3个主分区,一般为3主分区+1个逻辑分区下面就不一一对每个分区做..

2020-11-07 18:51:17 510

原创 Hashtable 与 HashMap 的区别(JDK1.8)

1、HashMap 简介HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同样会自动增长。节点数量过多时,还会转化为红黑树。 HashMap是非线程安全的,只是用于单线程环境下,多线程环境下可以采用concurrent并发包下的concurrentHashMap。 HashMap实现了S...

2020-11-07 15:09:56 139

原创 HashMap 源码分析(JDK1.8 只分析了重点)

1、HashMap 简介1.1、常用数据结构数组:采用一段连续的存储单元来存储数据。对于指定下标的查找,时间复杂度为O(1);通过给定值进行查找,需要遍历数组,逐一比对给定关键字和数组元素,时间复杂度为O(n),当然,对于有序数组,则可采用二分查找,插值查找,斐波那契查找等方式,可将查找复杂度提高为O(logn);对于一般的插入删除操作,涉及到数组元素的移动,其平均复杂度也为O(n) ...

2020-11-07 15:09:42 459

原创 JDK8系列:阻塞队列 之 LinkedTransferQueue(无界阻塞队列)源码解析

1、LinkedTransferQueue 简介是一个由链表结构构成的无界阻塞TransferQueue队列。相对于其他阻塞队列,多了 tryTransfer 和 transfer 方法。LinkedTransferQueue是LinkedBlockingQueue、SynchronousQueue(公平模式)、ConcurrentLinkedQueue三者的集合体,它综合了这三者的方法,并且提供了更加高效的实现方式。2、成员变量 和 构造方法public class Linked..

2020-11-07 15:09:14 459

原创 JDK8系列:阻塞队列 之 LinkedBlockingDeque(双向阻塞队列)源码解析

1、LinkedBlockingDeque 简介LinkedBlockingDeque是一个基于链表的双端阻塞队列。和LinkedBlockingQueue类似,区别在于该类实现了Deque接口,而LinkedBlockingQueue实现了Queue接口。该类的继承关系如下图:容量问题LinkedBlockingDeque是一个可选容量的阻塞队列,如果没有设置容量,那么容量将是Int的最大值。底层数据结构LinkedBlockingDeque的底层数据结构是一个双端队列,该队列使用链.

2020-11-07 15:08:57 410

原创 JDK8系列:阻塞队列 之 SynchronousQueue(同步队列)源码分析

1、SynchronousQueue 简介1. 整个 queue 没有容量, 表现为, 你每次进行put值进去时, 必须等待相应的 consumer 拿走数据后才可以再次 put 数据2. queue 对应 peek, contains, clear, isEmpty ... 等方法其实是无效的3. 整个 queue 分为 公平(TransferQueue FIFO)与非公平模式(TransferStack LIFO 默认)4. 若使用 TransferQueue, 则队列中永远会存在一个 d.

2020-11-06 21:40:49 481

原创 JDK8系列:阻塞队列 之 PriorityBlockingQueue(优先级队列)源码分析

1、PriorityBlockingQueue 简介(1)PriorityBlockingQueue整个入队出队的过程与PriorityQueue基本是保持一致的;(2)PriorityBlockingQueue使用一个锁+一个notEmpty条件控制并发安全;(3)PriorityBlockingQueue扩容时使用一个单独变量的CAS操作来控制只有一个线程进行扩容;(4)入队使用自下而上的堆化;(5)出队使用自上而下的堆化;该阻塞队列每次取出的都是最小的对象(小顶堆!!!),

2020-11-06 21:39:49 505 1

原创 JDK8系列:Iterable、Iterator、Spliterator 迭代器

1、Iterable 接口Iterable,即迭代器的意思。其作用是为集合类提供for-each循环遍历的支持,只要让一个类实现这个接口,该类的对象就可以成为for-each循环遍历的目标。换句话说,想让一个Java对象支持for-each遍历,只要让它的类实现Iterable接口即可。public interface Iterable<T> { // 在类型的元素上返回迭代器 Iterator<T> iterator(); // 对Iterab

2020-11-06 21:39:26 914

原创 BindingException 异常处理 与 IDEA中设置空包可见

问题如下:可能出现错误的地方:(1)检查 xml 文件的 namespace 有没有写错,要和 dao那个接口对应(2)检查 不能绑定的方法在 dao接口中有没有(如图中的 selectAll)(3)如果返回的是对象实例,那么需要用 ResultMap 或者 ResultType 来绑定(4)检查 mybatis 的配置信息有没有写错(5)这个错误很难发现,可能你在 resource 中创建包的时候出错了,如果你在 resource 中创建包时,直接输入了 com..

2020-11-02 21:31:10 222

原创 JDK8系列:阻塞队列 之 ArrayBlockingQueue(有界阻塞队列)源码解析

4、ArrayBlockingQueue 类4.1、简介一个由数组支持的有界阻塞队列。它的本质是一个基于数组的BlockingQueue的实现。它的容纳大小是固定的。此队列按FIFO(先进先出)原则对元素进行排序。队列的头部是在队列中存在时间最长的元素。队列的尾部是在队列中存在时间最短的元素。新元素插入到队列的尾部,队列检索操作则是从队列头部开始获得元素。这是一个典型的“有界缓存区”,固定大小的数组在其中保持生产者插入的元素和使用者提取的元素。一旦创建了这样的缓存区,就不...

2020-11-02 10:35:10 402

原创 JDK8系列:阻塞队列 之 LinkedBlockingQueue(有界阻塞队列)源码解析

1、LinkedBlockingQueue 简介线程安全底层实现原理:单项链表 + 2个ReentrantLock + 2个Condition生产和消费数据用的不是同一独占锁,生产和消费是可以同时进行生产者从队尾添加数据,消费者从队头的下一个节点开始获取数据生产数据达到了容量则生产线程等待,消费者消费完了数据则消费者线程等待头节点的数据项为null,不允许添加的数据项为null2、成员变量 和 构造方法public class LinkedBlockingQueue&lt..

2020-11-02 10:34:52 3241

原创 JDK8系列:刨根问底 之 队列

1、Queue 接口public interface Queue<E> extends Collection<E> { // 将元素添加到这个队列中,但是如果没有可用空间,则抛出异常IllegalStateException boolean add(E e); // 入队 boolean offer(E e); // 移除头部或者如果队列为空。则返回null E remove(); // 出队 E poll

2020-11-02 10:34:32 242

原创 自定义同步组件TwinsLock

1、首先明确:自定义同步器一般作为自定义同步组件的内部类2、需求分析同一时刻最多允许2个线程同时访问共享式,需要重写方法 tryAcquireShare(int) 和 tryReleaseShare(int) 定义资源数为2,status正常取值为 0,1,23、代码import java.util.concurrent.TimeUnit;import java...

2020-11-02 10:34:15 163

原创 线程池的实现原理

1、线程池简介多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3 销毁线程时间。如果:T1 + T3 远大于 T2,则可以采用线程池,以提高服务器性能。一个线程池包括以下四个基本组成部分:1、线程池管理器(ThreadPool):用于创建并管理线程池,包括 创建线程池,销毁线程池,添加新任务;2、工作线程(PoolWorker):线...

2020-11-02 10:33:56 108

原创 线程池:ThreadPoolExecutor 源码解析

1、继承关系图2、简介大体过程:1. 当前线程数<核心线程数时,创建线程执行任务。2. 当前线程数>=核心线程数时,把新的任务放入阻塞队列。3. 当queue已满,并且最大线程数 > 核心线程数,创建线程执行任务。4. 当queue已满,并且最大线程数>=核心线程数,默认采取拒绝策略(RejectedExecutionHandler)线程池的优势:降低创建线程和销毁线程的性能开销 提高响应速度,当有新任务需要执行是不需要等待线程创.

2020-11-02 10:33:38 239 1

原创 JDK8系列:Set集合 之 LinkedHashSet 源码分析

1、LinkedHashSet 简介对于LinkedHashSet而言,它继承与HashSet、又基于LinkedHashMap来实现的。LinkedHashSet底层使用LinkedHashMap来保存所有元素,它继承与HashSet,其所有的方法操作上又与HashSet相同,因此LinkedHashSet的实现上非常简单,只提供了四个构造方法,并通过传递一个标识参数,调用父类的构造器,底层构造一个LinkedHashMap来实现,在相关操作上与父类HashSet的操作相同,直接调用父类...

2020-10-29 08:52:58 269

原创 JDK8系列:Set集合 之 HashSet源码分析

1、HashSet 简介通过内部使用的 hashMap 保持元素的唯一性。这个hashMap 的组成是 :key是set种的元素,但value全是PRESENTSet没有 get()方法,因为没有实际意义。Set中的元素没有顺序,根本不可能通过 index 取。但是Set有迭代器遍历元素2、成员变量public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneab..

2020-10-29 08:52:43 176

原创 JDK8系列:List集合 之 LinkedList 源码分析

1、LinkedList 简介2、成员变量public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.Serializable.

2020-10-29 08:52:26 201

原创 JDK8系列:List集合 之 ArrayList 源码分析

1、ArrayList 简介1)ArrayList是可以动态增长和缩减的索引序列,它是基于数组实现的List类。2)该类封装了一个动态再分配的Object[]数组,每一个类对象都有一个capacity属性,表示它们所封装的Object[]数组的长度,当向ArrayList中添加元素时,该属性值会自动增加。 如果想ArrayList中添加大量元素,可使用ensureCapacity方法一次性增加capacity,可以减少增加重分配的次数提高性能。3)ArrayList的用...

2020-10-29 08:52:13 177

原创 JDK8系列:Set集合 之 TreeSet源码分析

1、TreeSet 简介TreeSet实现了SortedSet接口,它是一个有序的集合类,TreeSet的底层是通过TreeMap实现的。TreeSet并不是根据插入的顺序来排序,而是根据实际的值的大小来排序。TreeSet也支持两种排序方式:自然排序 自定义排序2、成员变量使用 map 的key来保存set集合的元素,而value是一个已经定义好的成员变量(全部的value都一样)各种 Set集合都是这么实现的public class TreeSet<E>..

2020-10-29 08:51:57 251

原创 JDK8系列:刨根问底 之 List集合

对于数组我们应该很熟悉,一个数组在内存中总是一块连续的存储空间,数组的创建使用new关键字,数组是引用类型的数据,一旦第一个元素的位置确定,那么后面的元素位置也就确定了,数组有一个最大的局限就是数组一旦创建,他的长度就是固定的,不可以进行更改,如果数组空间不够大,唯一的方法就是再创建一个大的数组,把原来的数组元素拷贝过去。为了使程序鞥狗方便的存储和操作数量不固定的数据,java加入了集合个概念,和数组最大的区别也就是长度可以改变,是一种动态的调整。在java中一共有三种集合分别是List,Set,M

2020-10-29 08:51:38 329

原创 JDK8系列:刨根问底 之 Set

1、Set 接口1.1、Set 简介Collection接口是集合类的根接口,它没有具体的实现,但是让其两个儿子Set和List,其中Set中不能包含重复的元素。List是一个有序的集合,可以包含重复的元素,提供了按索引访问的方式。1.2、源码分析public interface Set<E> extends Collection<E> { // 查询操作 int size(); boolean isEmpty(); bo.

2020-10-29 08:51:21 327

空空如也

空空如也

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

TA关注的人

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