自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据结构之HashMap

package newdata.datastruct.binarytree;import java.util.ArrayDeque;import java.util.Objects;import java.util.Queue;public class HtqHashMap<K,V> { private static class Entry<K,V>{ int hash; boolean color; K key;

2020-07-15 23:46:09 156

原创 数据结构之TreeMap

package datastruct.binarytree;import java.util.Comparator;public class HtqTreeMap<K,V> { private static class Node<K,V>{ boolean color; K key; V value; Node<K,V> parent; Node<K,V> left

2020-07-14 23:57:40 211

原创 数据结构之二叉平衡搜索树(RBT)

package datastruct.binarytree;import java.util.Comparator;import java.util.Objects;public class RBTree<E> { private static class Node<E>{ boolean color; E item; Node<E> parent; Node<E> left;

2020-07-14 18:06:05 148

原创 数据结构之二叉平衡搜索树(AVL)

package datastruct.binarytree;import java.util.Comparator;import java.util.Objects;public class AVLTree<E> { private static class Node<E>{ E item; Node<E> parent; Node<E> left; Node<E>

2020-07-14 18:05:10 122

原创 数据结构之二叉搜索树

package datastruct.binarytree;import java.util.ArrayDeque;import java.util.Comparator;import java.util.Queue;import java.util.Stack;public class BinarySearchTree<E> { private static class Node<E>{ E item; Node<E&gt

2020-07-14 00:21:18 114

原创 数据结构之双端循环队列(ArrayDeque)

动态循环数组为了提高效率,ArrayDeque采用了循环数组的设计,也就是说虽然基础容器是一个普通的数组(默认容量16),但是在逻辑上,这个数组没有固定的开头或结尾,既可以直接向尾部添加数据,也可以直接向头部之前添加数据,不需要大面积地移动数据。所以ArrayDeque与之前写的ArrayList优化(CircleArrayList)类似CircleArrayList支持指定索引添加删除元素CircleArrayList对数组容量没有要求ArrayDeque的数组容量必须是2^n 每次扩容2倍

2020-07-13 17:52:48 321

原创 模运算解决方案

在源码里经常遇到需要取模的需求,但是模运算又十分消耗性能降低效率,源码都用巧妙的其他运算代替。加减法(index+head>=elementData.length)?(index+head-elementData.length): (index+head<0)?index+head+elementData.length:index+head位运算(head - 1) & (elements.length - 1)...

2020-07-13 16:52:29 113

原创 数据结构之栈原理(Vector)

栈接口public E push(E item);public synchronized E pop();public synchronized E peek();public boolean empty();public synchronized int search(Object o);底层实现是Vectorpublic class Stack extends Vector {…}采用是继承的方式,也就是说Stack也可以使用Vector其他方法。Vector分析构造方法创

2020-07-13 15:06:29 609

原创 help GC 犯的错

LinkedListJDK源码private E unlinkFirst(Node<E> f) { // assert f == first && f != null; final E element = f.item; final Node<E> next = f.next; f.item = null; f.next = null; // help GC first

2020-07-13 10:25:38 274

原创 数据结构之两个栈实现队列

package datastruct.linearlist;import java.util.Stack;public class HtqTwoStackQueue<E> { private Stack<E> enStack = new Stack<>(); private Stack<E> deStack = new Stack<>(); public int size(){ return en

2020-07-13 01:04:18 102

原创 数据结构之两个队列实现栈

package datastruct.linearlist;import java.util.ArrayDeque;import java.util.Queue;public class HtqTwoQueueStack<E> { private Queue<E> queue1 = new ArrayDeque<>(); private Queue<E> queue2 = new ArrayDeque<>();

2020-07-13 01:02:49 100

原创 数据结构之双向循环链表

package datastruct.linearlist;import java.lang.reflect.Array;import java.util.Objects;/** * 不用单向循环链表 * 不仅要在最后维护first和last * 还要注意linkBefore和unLink中的非空判断 */public class HtqCircleLinkedList<E> { private static class Node<E>{

2020-07-13 00:59:19 187

原创 数据结构之双向链表

package newdata.datastruct.linearlist;import java.lang.reflect.Array;import java.util.Objects;public class HtqLinkedList<E> { private static class Node<E>{ E item; Node<E> pre; Node<E> next;

2020-07-13 00:43:11 99

原创 数据结构之单向循环链表

package datastruct.linearlist;import java.lang.reflect.Array;import java.util.Objects;/** * 添加删除后维护尾头节点 * 不能用while null作为判断条件 */public class HtqSinglyCircleLinkedList<E> { private static class Node<E>{ E item; Node

2020-07-13 00:29:17 272

原创 动态循环数组(ArrayList优化)

测试结果分析动态数组有一个最大的弊端就是浪费内存空间,这个无法避免。还有一个弊端就是添加删除都需要移动数组元素,最坏情况下要从头移动到尾,也就是n次,致使时间复杂度为O(n) 。下面这个例子就解决了这个问题,通过判断索引位置,移动元素少的一端,可以至少节约一半的时间。这个对外使用是无感的,只是内部逻辑实现不同而已。初始化10,添加8个元素:CircleArrayList{size=8, head=0, elementData=[1, 2, 3, 4, 5, 6, 7, 8]}NewRealAr

2020-07-10 16:05:06 338 2

原创 数据结构之动态数组(ArrayList)

数据结构概述数据结构是计算机存储、组织数据的方式线性结构线性表数组链表栈队列树形结构二叉树AVL树红黑树B树堆Trie哈夫曼树并茶集图形结构邻接矩阵邻接表数组具有 n 个相同类型元素的有限序列( n ≥ 0 )一维数组数组定义默认初始化 / 动态初始化int[] arr = new int[1016];int arr[] = new int[1016];arr[0] = 1;arr[1] = 0;arr[2] = 1;arr[3] =

2020-06-29 16:27:23 421

原创 高效实现斐波那契数列(Fibonacci数列)

Fibonacci数列Fibonacci数列就形如:0, 1, 1, 2, 3, 5, 8, 13, …,在Fibonacci数列中的数我们称为Fibonacci数。给你一 个N,你想让其变为一个Fibonacci数,每一步你可以把当前数字X变为X-1或者X+1,现在给你一个数N求最少需要多少步可以变为Fibonacci数。常规方法首先看到题目,第一想法就是递归实现,简单方便,易于理解。public int fn(int n) { return n<=0?0:(n==1?1:fn(n-1)+

2020-06-23 12:40:30 634

原创 数据结构之单向链表

单向链表的定义public class Node{ int value; Node next; public Node(int value) { this.value = value; }}单向链表遍历public void list(Node head) { while (head!=null){ System.out.print(head.value+" "); head = head.next; } Sy

2020-06-20 17:26:13 154

原创 设计模式之软件设计七大原则

一、开闭原则(Open Closed Principle,OCP)一个软件实体如类,模块和函数应该对扩展开放,对修改关闭。用抽象构建框架,用实现扩展细节提高软件系统的可复用性及可维护性下面是一个简单的Course实体:public interface ICourse { Integer getId(); String getName(); Double getPrice();}public class javaCoure implements ICourse {

2020-06-12 12:22:59 159

原创 Nginx反向代理与负载均衡

一、Nginx安装Nginx 是一款高性能的 http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师伊戈尔·西索夫(Igor Sysoev)所开发,官方测试 nginx 能够支支撑 5 万并发链接,并且 cpu、内存等资源消耗却非常低,运行非常稳定。环境准备gcc编译器套件(C、C++、Fortran、Pascal、Objective -C、Java、Ada、Go)[root@oahzero]# yum install gcc-c++pcrePCRE

2020-06-03 11:16:26 232

原创 消息中间件之ActiveMQ

一、消息中间件MOM基本功能将信息以消息的形式,从一个应用程序传送到另一个或多个应用程序。MOM主要特点:避免传统的直接调用的方式,实现服务间完全解耦,同时也实现了服务间的异步调用。消息异步接受,类似手机短信的行为,消息发送者不需要等待消息接受者的响应,减少软 件多系统集成的耦合度;消息可靠接收,确保消息在中间件可靠保存,只有接收方收到后才删除消息,多个消息也 可以组成原子事务消息中间件的主要应用场景:在多个系统间进行整合和通讯的时候,通常会要求:可靠传输,数据不能丢失,有的时候,也

2020-06-03 00:36:54 270

原创 redis配置与使用

中文文档:http://www.redis.cn/一、redis安装[root@oahzero]# wget http://download.redis.io/releases/redis-4.0.8.tar.gz[root@oahzero]# tar xzvf redis-4.0.8.tar.gz[root@oahzero]# cd redis-4.0.8[root@oahzero]# make[root@oahzero]# cd src[root@oahzero]# make instal

2020-06-02 17:16:10 542

原创 Slf4j日志框架的使用及Logback、Log4j2的整合和性能对比

一、Slf4jslf4j(Simple Logging Facade for Java)是日志框架的一种抽象,那么也就是说 slf4j 是不能单独使用的必须要有其他实现日志框架来配合使用,并且如果要启用slf4j框架要导入slf4j-api-xxx.jar 这个包, 这个包是slf4j 实现各种支持的日志框架的包。如 log4j、log4j2、logback等。编码模式import org.slf4j.Logger;import org.slf4j.LoggerFactory;......pr

2020-06-02 14:46:33 1720

原创 Linux安装Maven、POM及配置文件详解

下载Maven下载地址 https://maven.apache.org/download.cgi下载maven安装包[root@oahzero]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz安装Maven[root@oahzero]# tar zvxf apache-maven-3.6.3-bin.tar.gzMave

2020-06-02 12:10:21 3031

原创 局域网环境搭建Jenkins

局域网环境搭建Jenkins一、准备安装包二、安装Jenkins三、修改配置文件四、Jenkins初始化五、Jenkins系统管理全局工具配置Maven 配置JDKMaven系统配置Maven项目配置Publish over SSHManaged files新建任务新建Install任务ss新建发布任务新建自动任务一、准备安装包因为服务器不能连接外网,所以不能使用yum下载安装二、安装Jenkins安装三、修改配置文件配置大于编码四、Jenkins初始化首次访问五、Jenkins系统管理

2020-06-01 00:25:27 1409

空空如也

空空如也

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

TA关注的人

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