- 博客(27)
- 收藏
- 关注
原创 在Linux上部署非Web项目至Jenkins踩坑
       首先拿到手里的是一个“纯”Java项目,项目的作用大概是从第三方平台拿数据保存到本地,正因为项目具有一定的专一性,所以其中有的JAR都是私有的,并不能从Maven仓库中获取。部署之路开始,要求是,将其重构为一个Maven项目,然后可以部署在Jenkins上面,实现一键构建、发布。&nb
2018-09-03 19:38:54
454
原创 TimeUnit类
首先TimeUnit类是java.util.concurrent包下的一个类该类的出现主要是提供了可读性比较好的线程暂停操作,一般情况下使用其来代替Thread.sleep()。是因为Thread的sleep方法存在这一个潜在的问题,就是代码的可读性太差。我们先来简单的感受一下:Thread.sleep(2400000)可能在上面的代码中,一般人并不能直接看出这个线程究竟等...
2018-06-21 22:33:34
419
原创 详解JVM垃圾收集算法&垃圾收集器(图解)
垃圾收集算法:内存回收的方法论 垃圾收集器:内存回收的具体实现在正式讨论垃圾回收算法和垃圾收集器之前,我们应该了解一下JVM是如何判断一个对象已经死亡的? JVM主要使用了两种方法判断对象是否已经死亡: 引用计数法:这种方法实现起来简单,而且也好理解,就是给对象维护了一个计数器,当有一个地方引用它的时候,它就加一,当引用失效的时候计数器就减一。...
2018-06-20 23:42:48
778
1
原创 线程的两种创建方式、启动源码解析
创建线程的两种方式 1.在Thread子类覆盖的run方法中编写运行代码Thread thread1 = new Thread() { public void run() { while (true) { try { Thread.sleep(500); } catch (Inte...
2018-05-24 21:59:56
849
原创 HTTP、HTTPS区别&详解
HTTP协议版本:· HTTP1.0(短连接,发一次建立一次)· HTTP1.1(长连接)什么是长连接、短连接:    短连接:客户端和服务端每进行一次HTTP操作,就建立一次连接。任务结束就中断连接,当客户端浏览器访问的某个HTML或者其他类型的Web页面中包含有其他的Web资源,没遇到这样一个Web资源,浏览器就会重新建立一个HTTP会话...
2018-05-21 20:05:42
1761
原创 TCP协议的三次握手和四次挥手
三次握手    1. 第一次握手:建立连接。客户端发送连接请求报文段,将SYN设置为1,Seq为x,然后,客户端进入 SYN_SEND 状态,等待服务器的确认     2. 第二次握手:服务器收到客户端的SYN报文段,需要对这个SYN报文段进行确认,设置 Ack 为 x+1(seq+1);同时,自
2018-05-18 21:05:20
1419
原创 DNS解析过程(当你在浏览器中输入一个域名,一个回车之后发生了哪些事情)
DNS解析过程 1. 你使用的电脑发送了一个DNS请求到本地DNS服务器,本地DNS服务器一般都是你的网络接入服务器商提供,比如中国电信、中国移动。 2. 当你的DNS请求到达本地DNS服务器之后,本地DNS服务器会首先查询它的缓存记录,如果缓存中又该条记录,直接返回。如果没有,向根DNS服务器发出...
2018-05-18 19:14:59
1784
原创 Java中的时间和日期
Date    该类出现于JDK1.1,且该类提供了对日期进行操作的诸多方法,但是其一直存在着很多问题。官方也意识到了这个问题后来提供了Calendar类进行对日期的操作,日期的格式化交给了DateFormat。Date类的构造方法简述 1. Date() // 无参构造器,分配Date对象,并使用当前的时间初始化 2. Date(...
2018-05-17 21:34:52
203
原创 java中的编码与解码
编码表概述和常见的编码表概述:有字符及其对应的数值组成的一张表常见的编码表ASCII:美国标准信息交换表ISO8859-1:拉丁码表,欧洲码表GB2312:中国的中文编码表GBK:中国的中文编码表升级GB18030:GBK的取代版本BIG5:通用于香港、台湾地区的繁体字编码方案UTF-8:最多用3个子节表示一个字符Unicode:国际标准码,融合了多种文字,所有的文字都...
2018-05-17 21:05:08
29599
6
原创 向Mysql中插入时间只有日期没有时分秒的问题
关于向Mysql中写入插入时间只有日期没有时分秒以及JSP页面显示日期多了个.0的问题我们一般再将实体类中的日期类型的数据写入数据库的时候,需要把java.util.Date转换为java.sql.Date,我们使用常规的方法去转换,转换过来的只可以得到年月日。如果需要取得时分秒,可以使用Date类的子类Timestamp。java.util.Date是不能直接插入数据库的,虽然它包含了日...
2018-05-17 20:25:14
8229
原创 Java内存模型
       在了解Java内存模型之前应该先了解一下物理计算机的并发模型,因为计算机的并发模型,和JAVA虚拟机的内存模型是由很高的可比性的。计算机的并发模型:  &amp
2018-05-09 13:35:30
148
原创 Java内存区域
运行时数据区域   JVM再执行Java程序的过程中会把它锁管理的内存划分为若干个不同的数据区域。    这些区域都有自己的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有的区域则依赖用户线程的启动和结束而创建和销毁。 程序计数器:·它是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示...
2018-05-06 17:23:42
166
原创 并发编程初探
上下文切换: · 首先即使是单核处理器也支持多线程的执行代码,CPU通过给每个线程分配CPU时间片来实现这个机制。 · CPU通过分配时间片算法来循环执行任务,当前任务执行一个时间片后会切换到下一个任务。但是在切换之前会保存上一个任务的状态,以便在次执行回这个任务时,可以再加载这个任务的状态。 ...
2018-04-18 01:19:00
139
原创 最小生成树
最小生成树 借着上图,我们看到同样是连接五个点,左边得图形使用了10条边。而右边的图形使用了5条边,他们之间只有最少数量的边保证他们被连通。这组成了最小生成树(MST)。 对给定的一组顶点,可能有很多种最小生成树。比如,上图中的右边的图形是用边AB...
2018-04-11 10:05:07
175
原创 图
图 · 用于堆数据间关系进行编码的以一种机制 · 图是一种与树有些相像的数据结构。实际上,从数学意义上来说,树是图的一种。 · 上图就是一个
2018-04-11 00:13:10
543
原创 堆排序
· 堆数据结构的效率使它引出一种出奇简单,却很有效率的排序算法,称为堆排序。· 堆排序的基本思想是使用普通的 insert()例程在堆中插入全部无序的数据项,然后重复用remove()的例程,就可以按序移除所有的数据项。ForExample:for (j=0; j<size; j++) theHeap.insert(anArray[j]); // 将没有排序...
2018-04-07 23:05:05
226
原创 堆
引入 首先,现在说得的堆不是内存得一片区域,而是一种数据结构。 在说堆之前我们可以先复习一下之前学习的优先级队列,我们之前的优先级队列,使用数组实现的,虽然实现优先级队列可以有很多不同的内部结构。这种实现方式,岁然删除最大项的时间为O(1),但是插入的...
2018-04-06 11:02:50
236
原创 哈希表
引入: 哈希表是一种数据结构,它可以提供快速的插入操作和查找操作。哈希表有非常多的优点,不论哈希表中有多少数据,插入和删除数据只需要接近常量的时间,即O(1)时间级。 哈希表同样叶存在这一些缺点:它是基于数组的,数组创建后难以扩展。某些哈希表被基本填满...
2018-04-02 19:16:49
803
原创 外部存储
引入: 2-3-4树是多叉树的例子,多叉树是值节点的子节点多于两个并且数据项多于一个。另外一种多叉树,B-树,尚在外部存储器上的数据时,它起很大的作用。外部存储,通俗一点就是我们经常使用的电脑中的硬盘。访问外部数据: 之前学习的所有数据结都都是假设数据存储在主存中(RAM,随机访问存储器)。但是,在实际情况下有时要处理的数据量太大,不能存储在主存中。这时候我们就需要一种外部存储方
2018-04-01 15:39:52
519
原创 234树
引入 在二叉树中,每个节点有一个数据项,最多有两个子节点。如果允许每个节点可以有更多的数据项和更多的子节点,就是多叉树(multiway tree)。 2-3-4树,就是多叉树,它的每个节点最多有四个子节点和三个数据项。首先,2
2018-03-30 01:25:20
9708
4
原创 简单排序
一旦建立了一个数据库之后,就可能需要根据某些需求对数据进行不同方式的排序。计算机和人类的的区别就是计算机不能向人这样通览所有的数据,它只能根据计算机的“比较”操作原理,在同一时间对两个队员进行比较。在人类看来很简单的事情,计算机的算法却不能看到全景,因此它只能一步一步的解决具体问题和遵循一些简单的规则。 下面说的...
2018-03-28 16:43:48
223
原创 红黑树
引入: 结合上一篇普通的二叉树作为数据工具有着重要的优势:可以快速地找到一个给定关键字的数据项,并且可以快速地插入和删除数据项。但是,二叉树同时也存在一个很麻烦的问题,如果二叉树中插入的是随机数据,则执行小姑很好,但是如果插入的是有序数据(1,2,3,4,5)或者是逆序数据(5,4,3,2,1),速度就和变得特别的慢。因为当插入的数据为有序的话,那么二叉树就是非平衡的了。而对于非平衡的二
2018-03-18 19:20:10
192
原创 二叉树
二叉树:顾名思义就是每个节点都只能有两个子节点的树结构。为什么要使用树这种结构呢?树结构通常结合了另外两种数据结构的优点:一种是有序数组,另外一种是链表。 树结构的查询的速度和有序数组一样快,树结构的插入数据和删除数据的速度也和链表一样快。 树的术语: Name Function 路径 顺着连接点的边从一个节点走向另一个节点,所经过的节点的顺序排...
2018-03-17 16:48:44
17943
1
原创 递归
递归是一种方法(函数)调用自己的编程技术。知道递归这两个字的时候是在大学生活时代的C语言的课堂上,当时老师提到了递归,说这是一种一个函数自己调用自己的方法,然后就非常感兴趣,感觉非常的神奇,但是当自己实际用到的时候,却怎么都理解不了他的好处,它是怎么实现之类的,就不像 if-else 语句这种,学的时候就可以在大脑中刻画一个流程图出来,然后可以很快的理解,所以当时出于对知识的敬畏,就没有在深入研究
2018-03-17 16:36:33
367
原创 链表-02
此篇续着01篇,为基本链表的一些拓展好我们继续使用链表实现栈:/*使用链表实现栈操作*/public class LinkStack { public LinkList list = new LinkList(); // 用链表的向前插入数据 模拟压栈操作 public void push(long dd) { list.insertFirst(dd); } //
2017-12-01 00:26:56
221
原创 链表-01
引入: 我们在学习数组这种数据结构的时候,可能会发现这种数据结构存在着一定的缺陷。在无序数组中搜素是低效的;而在有序数组中插入效率又很低,不管在哪一种数组中删除的效率都是很低的。而且数组一旦创建之后,它的大小是不可改变的。链表的出现就可以解决上面出现的一些问题。链表的机制灵活、用途广泛、适用于许多通用的数据库、在某种程度上是可以取代数组的。 链结点: 在链表中每个数据项都被包含
2017-12-01 00:14:17
226
原创 栈和队列
引入: 相比我们之前学习的数组,之前在一个数组中我们若是知道了一个数组中的某个数据的下标即可以立即的访问这个数据, 或者可以使用一个循环结构访问到每一项数据。 但是在本次学习的过程中,我们学习的这种数据结构,他的访问是受限制的,即在特定的时刻只有一个数据项可以被访问或者删除。
2017-11-21 21:12:49
445
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人