- 博客(190)
- 问答 (3)
- 收藏
- 关注
原创 使用stream将List转换为用逗号拼接的字符串
摘要有时候需要将List中的元素转换为用逗号拼接的字符串,很简单的实现,略略写一下stream的实现。 实现使用stream实现:public void test(){ List<String> list = new ArrayList<>(); list.add("Nginx"); list.add("Tomcat"); list.add("Redis"); list.add("Linux"); System.out
2022-02-11 00:11:56 9398
原创 7-项目成本管理
高项第一阶段~日签这世上没有毫不后悔的选择,生活也是没有正确答案的,只要坚信选择的道路就是正确答案,并把它变成正确答案就可以了。 导图一个过程记录
2021-12-20 09:31:13 437
原创 6-项目进度管理
高项第三天~日签对待生命你不妨大胆冒险一点,因为好歹你要失去它。如果这世界上真有奇迹,那只是努力的另一个名字。生命中最难的阶段不是没有人懂你,而是你不懂你自己。 导图一个过程记录...
2021-12-10 00:08:35 252
原创 5-项目范围管理
高项第三天~日签对待生命你不妨大胆冒险一点,因为好歹你要失去它。如果这世界上真有奇迹,那只是努力的另一个名字。生命中最难的阶段不是没有人懂你,而是你不懂你自己。 导图一个过程记录...
2021-12-09 23:57:36 118
原创 4-项目整体管理
高项第三天~日签对待生命你不妨大胆冒险一点,因为好歹你要失去它。如果这世界上真有奇迹,那只是努力的另一个名字。生命中最难的阶段不是没有人懂你,而是你不懂你自己。 导图一个过程记录...
2021-12-09 23:45:03 122
原创 2-信息系统项目管理基础
高项第一天~日签这世上没有毫不后悔的选择,生活也是没有正确答案的,只要坚信选择的道路就是正确答案,并把它变成正确答案就可以了。 导图一个过程记录
2021-12-08 23:19:17 186
原创 1-信息化和信息系统
高项第一天~日签这世上没有毫不后悔的选择,生活也是没有正确答案的,只要坚信选择的道路就是正确答案,并把它变成正确答案就可以了。 导图一个过程记录
2021-12-08 23:06:55 209
原创 HashTable特点(jdk1.8)
简单写一写HashTable的特点~继承树HashTable的继承树如下图: 特点(1)底层使用Entry数组保存元素(2)默认初始容量是11,加载因子是0.75。 /** * Constructs a new, empty hashtable with a default initial capacity (11) * and load factor (0...
2019-10-08 21:09:56 704
原创 LinkedHashMap特点(jdk1.8)
结束上篇的HashMap扩容分析,今天来聊聊LinkedHashMap的特点,继承了HashMap类(以下都是基于jdk1.8)。之前简单聊过LinkedHashSet的特点,它的底层实际就是使用的LinkedHashMap。 继承树LinkedHashMap的继承树如下图: 特点(1)由于继承HashMap类,所以默认初始容量是16,加载因子是0.75。accessOrder为fals...
2019-10-08 16:20:34 531
原创 深入理解HashMap扩容(JDK1.8)---源码分析
HashMap有自动扩容机制,那么它是如何扩容的?本篇带你跟着源码一步步走近。以下都是基于jdk1.8的。 Let's start从HashMap的put方法入手,逐步深入: /** * Associates the specified value with the specified key in this map. * If the map previously co...
2019-10-07 19:54:42 1217 4
原创 HashMap指定初始容量的构造函数-基于源码分析
今日主题是源码分析之HashMap指定初始容量的构造函数(以下都是基于jdk1.8)。HashMap可以指定初始容量大小的构造函数有两个: /** * The maximum capacity, used if a higher value is implicitly specified * by either of the constructors with arg...
2019-09-15 09:18:20 556
原创 HashMap常量设计目的
HashMap中有哪些常量?这些常量设计的目的是什么?本篇带你走近Doug Lea、Josh Bloch、Arthur van Hoff、 Neal Gafter对HashMap的设计。(以下都是基于jdk1.8) 常量设计(1)HashMap默认初始化大小是1 << 4(即16) /** * The default initial capacity - MUST...
2019-09-14 17:23:50 546 3
原创 HashMap类注释解析
结束了Collection集合的summary,现在先来看看Map集合下的HashMap的类注释。以下都是基于jdk1.8的。 继承树HashMap继承树如下图:HashMap类注释解析(1)HashMap是基于Map接口实现的,它提供了Map中所有的操作,并且允许key和value为null。HashMap跟HashTable基本一样,只是HashMap是线程不安全的,并且HashMa...
2019-09-12 11:28:28 397
原创 Vector扩容机制源码分析
再来稍微聊一下Vector的特点。 继承树Vector继承树如下图:特点(1)允许null值(2)底层使用动态对象数组Object[] elementData(3)默认初始容量是10(4)线程安全,通过synchronized锁得以保证(5)fail-fast机制...
2019-09-12 08:28:32 640
原创 LinkedList特点
聊一聊LinkedList的特点吧~(以下都是基于jdk1.8) 继承树LinkedList的继承树如下图:特点(1)允许null值(2)内部以双向链表的形式来保存集合中的元素 /** * Pointer to first node. * Invariant: (first == null && last == null) || * ...
2019-09-11 20:17:50 4292
原创 ArrayList源码分析(jdk1.8)
聊一聊ArrayList的特点吧~(以下都是基于jdk1.8) 继承树ArrayList的继承树如下图: 特点(1)底层使用动态数组Object[] elementData 来保存所有元素(2)线程不安全。可通过如下方式使用线程安全的操作:List list = Collections.synchronizedList(new ArrayList(...));(3)默认初始容量...
2019-09-11 20:02:48 253
原创 PriorityQueue特点-基于源码分析
愉快地聊一聊PriorityQueue的特点吧~(以下都是基于jdk1.8) 一棵树PriorityQueue的继承树如下图: 基本特点(1)双端队列,可从两端添加、删除元素。作为队列使用时,性能优于LinkedList。作为栈使用时,性能优于Stack。(2)底层使用可变数组Object[] elements, 数组容量按需增长(3)不能存储null(4)支持双向迭代器遍历(5...
2019-09-11 15:30:47 388
原创 ArrayDeque源码分析
愉快地聊一聊ArrayDeque的特点吧~(以下都是基于jdk1.8) 一棵树ArrayDeque的继承树如下图: 基本特点(1)双端队列,可从两端添加、删除元素。作为队列使用时,性能优于LinkedList。作为栈使用时,性能优于Stack。(2)底层使用可变数组Object[] elements, 数组容量按需增长(3)不能存储null(4)支持双向迭代器遍历(5)线程不安全...
2019-09-10 16:01:26 258
原创 TreeSet特点
聊一聊TreeSet的特点吧~(以下都是基于jdk1.8) 继承树TreeSet的继承树如下图: 特点(1)底层使用TreeMap来保存所有元素(2)线程不安全。可通过如下方式使用线程安全的操作:SortedSet s = Collections.synchronizedSortedSet(new TreeSet(...));(3)能够确保集合元素处于排序状态,依赖于compar...
2019-09-08 20:09:17 1150
原创 LinkedHashSet源码分析
今天来聊聊LinkedHashSet,继承了HashSet类,基于LinkedHashMap来实现(以下都是基于jdk1.8)。 继承树LinkedHashSet的继承树如下图: 源码之旅(1)底层基于LinkedHashMap实现,默认初始容量是16,加载因子是0.75 public LinkedHashSet() { super(16, .75f, tr...
2019-09-08 17:52:39 496
原创 HashSet部分源码分析
今天来简单讲讲HashSet,因为HashSet实际上是基于HashMap来实现的,底层使用HashMap来保存集合元素,关于HashMap会在接下来的博客中加以介绍,所以这次HashSet就简单写一写了。(以下都是基于jdk1.8) 继承树HashSet的继承树如下图: 类注释解析(1)基于HashMap实现,不能保证集合的迭代顺序;特别是它不能保证元素的顺序不随时间而改变。且允...
2019-09-08 17:09:23 185
原创 Collection集合与Map集合体系
Java集合大致可以分为Set、List、Queue、Map四种体系,其中set代表无序、不可重复的集合;List代表有序、重复的集合;Map代表具有映射关系的集合;Java5增加的Queue体系代表一种队列集合实现。Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些子接口和实现类。 Collec...
2019-09-08 09:56:17 671
原创 Loading class `com.mysql.jdbc.Driver'. This is deprecated.
警告信息“Loading class ‘com.mysql.jdbc.Driver’. This is deprecated. The new driver class is ‘com.mysql.cj.jdbc.Driver’. The driver is automatically registered via the SPI and manual loading of the driver ...
2019-08-06 10:11:19 1360 1
原创 连mysql报错The server time zone value '�й���ʱ��' is unrecognized or represents more than one time zone
EurekaClient配置连接数据库出现如下问题:java.sql.SQLException: The server time zone value '�й���ʱ��' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via...
2019-08-06 09:57:00 1159 1
原创 Unregistering application CLIENT with eureka with status DOWN
Eureka Server启动之后,client启动的时候报错“Unregistering application CLIENT with eureka with status DOWN”。检查配置文件,发现并无问题:eureka: client: service-url: defaultZone: http://localhost:8761/eureka/sprin...
2019-08-04 17:56:04 3918 4
原创 深入理解synchronized实现原理
在多线程编程中,有可能会出现多个线程同时访问同一个共享、可变资源的情况,这种资源可能是对象、变量、文件等。由于线程执行的过程是不可控的,所以需要采用同步机制来协同对对象可变状态的访问。于是,JVM内置锁synchronized登上了舞台。 如何使用synchronized既可以同步方法(同步实例方法、类方法),也可以同步代码块。//同步实例方法:public synchronized vo...
2019-08-03 17:09:31 499 1
原创 简单理解Spring IoC
IoC(Inverse of Control),控制反转,简单的解释:在传统的开发模式下,我们都是采用直接 new 一个对象的方式来创建对象,也就是说你的对象直接由你自己控制,但是有了 IOC 容器后,则直接由 IoC 容器来控制。需要实例对象时,从spring工厂(容器)中获得,需要将实现类的全限定名称配置到xml文件中。来一个超简单的例子加以说明:(1)首先导入jar包:四个核心(be...
2019-07-29 21:52:09 300 1
原创 Sprig简介
Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。◆目的:解决企业应用开发的复杂性◆功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能◆范围:任何Java应...
2019-07-29 21:38:12 1197 2
原创 线程的生命周期------运行和阻塞
当线程被创建并启动以后,它既不是一启动就进入执行状态,也不是一直处于执行状态,在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)、死亡(Dead)这5中状态。上一篇已经介绍新建和就绪状态了,这篇接着介绍运行和阻塞状态。 运行(Running)处于就绪状态的线程获得CPU,开始执行run()方法的线程执行体,则该线程处于运行状态...
2019-07-29 21:13:37 432 3
原创 线程的生命周期------新建和就绪
当线程被创建并启动以后,它既不是一启动就进入执行状态,也不是一直处于执行状态,在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)、死亡(Dead)这5中状态。 Let's start当程序使用new关键字创建一个线程之后,这个线程就处于新建状态,此时Java虚拟机为其分配内存,并初始化其成员变量的值。此时的线程对象没有表现出任何...
2019-07-29 20:37:32 189 2
原创 线程创建------使用Callable和Future
Start 从Java5开始,Java提供了Callable接口(也是函数式接口),该接口提供了一个call()方法可以作为线程执行体,相较于run()方法,call()方法功能更强大:(1)call()方法可以有返回值。(2)call()方法可以声明抛出异常。由于Callable接口是Java5新增的接口,而且它不是Runnable接口的子接口,所以就不能作为Thread的targe...
2019-07-29 20:09:25 437
原创 线程创建------实现Runnable接口
步骤通过实现Runnable接口创建并启动线程的步骤:(1)定义Runnable接口的实现类,并重写该类的run()方法,该run()方法的方法体就是线程执行体。(2)创建Runnable实现类的实例,并以此实例作为Thread的target来创建Thread对象,该Thread对象才是真正的线程对象。(可以在创建Thread对象时为该Thread对象指定一个名字) (3)调用线程对象...
2019-07-29 19:07:07 1318
原创 线程创建------通过继承Thread类
步骤通过继承Thread类创建并启动线程的步骤:(1)定义Thread类的子类,并重写该类的run()方法,该run()方法的方法体就代表了线程需要完成的任务。因此把run()方法称为线程执行体。(2)创建Thread子类的实例,即创建线程对象。 (3)调用线程对象的start()方法来启动该线程。 代码实例 代码实现如下:![在这里插入代码片](https://img-blo...
2019-07-29 17:42:13 1160
原创 Win10鼠标点一下文件夹或文件没有选中的那个蓝色,但还是能正常用,比如双击跟右键,点一下也有详细信息
Win10系统,小新今天出了一点小问题,鼠标点一下文件夹或文件(或者鼠标移上去)没有选中的那个蓝色,但还是能正常用,比如双击和右键,点一下也有详细信息。就是下图的背景色没有了,倒也不是大问题,只是不习惯。解决方法打开"任务管理器",找到"Windows资源管理器",我们发现有时候会出现不止一个。有的人会发现只有一个,如果出现两个"Windows资源管理器"的情况,就把打开的所有文件夹(资源...
2019-07-12 21:43:05 9274 2
原创 【Java】归并排序
归并排序是另一类不同的排序方法,这种方法是运用分治法解决问题的典型范例。基本思想归并排序的基本思想是基于合并操作,即合并两个已经有序的序列是容易的,不论这两个序列是顺序存储还是链式存储,合并操作都可以在 Ο(m+n)时间内完成(假设两个有序表的长度分别为 m 和 n)。排序过程 归并排序的过程为:1. 划分:将待排序的序列划分为大小相等(或大致相等)的两个子序列;2. 治理:当子序列...
2019-07-06 15:47:26 184 1
原创 【Java】简单选择排序
简单选择排序属于选择类排序方法,它的改进是堆排序。基本思想简单选择排序的基本思想非常简单(假设从小到大排序):第一趟,从 n 个元素中找出关键字最小的元素与第一个元素交换;第二趟,在从第二个元素开始的 n-1 个元素中再选出关键字最小的元素与第二个元素交换;如此,第 k 趟,则从第 k 个元素开始的 n-k+1 个元素中选出关键字最小的元素与第 k 个元素交换,直到整个序列按关键字有序。排序...
2019-07-06 15:23:34 504 1
原创 【Java】希尔排序
希尔排序又称为“缩小增量排序”,它属于插入类排序方法,是对直接插入排序的改进。基本思想首先将待排序的元素分为多个子序列,使得每个子序列的元素个数相对较少,对各个子序列分别进行直接插入排序,待整个待排序序列“基本有序”后,再对所有元素进行一次直接插入排序。 排序过程 小结...
2019-07-06 15:11:54 670 1
空空如也
BindingSource怎么和DataGridView结合使用?
2017-08-20
VS中的BindingSource怎么用,它和DataGridView有什么不同?
2017-08-20
操作手册和用户手册有什么区别?
2016-12-26
TA创建的收藏夹 TA关注的收藏夹
TA关注的人