自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

gittgo

只是想默默的学学。不足之处请大家指点。

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

原创 原型模式

原型模式原型模式是指用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。适合原型模式的情景如下:程序需要从一个对象出发,得到若干个和其状态相同,并可独立变化其状态的对象时;对象创建需要独立于它的构造方法和表示时;以原型为基础,克隆新的对象,并完善对象实例变量时。潜复制如果原型对象的成员变量是值类型,则将复制一份给克隆对象;如果原型对象的成员变量是引用类型,则将引用对象的...

2018-08-07 11:49:07 199

原创 java SingleThreadedExecution

SingleThreadedExecutionSingleThreadedExecution意思就是以一个线程执行,就像独木桥同时只允许一个人同行一样,该模式用于设置限制,以确保同一时间内只能让一个线程执行处理。Single Threaded Execution有时候也称为临界区(critical section)或临界域(critical region)。Single Thread Ex...

2018-07-22 21:30:14 166

原创 实现线程的三种方法

线程启动方式利用Thread子类1.d定义Thread类的子类,并重写该类的run()方法,该方法的方法体就是线程需要完成的任务,run()方法也称为线程执行体。2.创建Thread子类的实例,也就是创建了线程对象3.启动线程,即调用线程的start()方法public class MyThread extends Thread{ public void run...

2018-07-22 09:42:55 466

原创 生成器模式(建造者模式)

生成器模式(建造者模式)生成器模式是指将一个复杂对象的构建与它的表示分离,使同样的构建过程可以创建不同的表示。适合该模式的情况如下:对象结构复杂,利用构造方法创建对象无法满足用户需求;对象创建过程必须独立于创建该对象的类。有些类是不宜直接创建对象的。成员变量是自定义类型:public class Product{ Unit u; Unit2 u2; Unit...

2018-07-19 22:31:45 196

转载 jdk1.8新特性

jdk1.8新特性1.接口的默认方法Java8允许我们给接口添加一个非抽象的方法实现,只需使用default关键字,这个特征又叫做扩展方法: 接口书写方法: 接口Apublic interface DefaultA { default void dmath(){ System.out.println("this is A.");0 };}...

2018-07-11 11:14:24 291

原创 单例(Singleton)

单例(Singleton)在大部分时候,我们把类的构造器定义成public访问权限,允许任何类自由创建该类的对象。但是在某些时候,允许其他类自由创建该类的对象没有任何意义,还可能造成系统性能下降。概念如果一个类始终只能创建一个实例,则这个类被称为单例类。在一些特殊场景下,要求不允许自由创建该类的对象,而是只允许为该类创建一个对象。为了避免其他类自由创建该类的实例,我们把该类的构...

2018-07-08 21:42:17 134

原创 工厂模式

工厂模式应用场景:当用户需要一个类的子类实例,且不希望与该类的子类形成耦合或者不知道该类有哪些子类可用时,可采用工厂模式;当用户需要系统提供多个对象,且希望和创建对象的类解耦时,可采用抽象工厂模式。简单工厂假设一个汽车工厂生产高中抵挡小汽车。//定义小汽车接口public interface ICar {}// 高档小汽车public class UpCar ...

2018-07-08 21:40:17 271

原创 Spring boot配置log4g2

Spring boot配置log4g2首先log4j不在更新官网:End of Life On August 5, 2015 the Logging Services Project Management Committee announced that Log4j 1.x had reached end of life. For complete text of the ...

2018-06-09 19:36:29 452

原创 Serializable 序列化和反序列化

Java 之 Serializable 序列化和反序列化序列化基本概念:序列化:把对象转换为字节序列化的过程称为对象的序列化。 反序列化:把字节序列恢复为对象的过程称之为对象的反序列化。什么情况下需要序列化当你想把的内存中的对象状态保存到一个文件中或者数据库中时候; 当你想用套接字在网络上传送对象的时候; 当你想通过RMI传输对象的时候; 当需要深度clone的时候...

2018-06-08 08:39:49 214

原创 Java 之 Serializable 序列化和反序列化

Java 之 Serializable 序列化和反序列化序列化基本概念:序列化:把对象转换为字节序列化的过程称为对象的序列化。 反序列化:把字节序列恢复为对象的过程称之为对象的反序列化。什么情况下需要序列化当你想把的内存中的对象状态保存到一个文件中或者数据库中时候; 当你想用套接字在网络上传送对象的时候; 当你想通过RMI传输对象的时候; 当需要深度clone的时候...

2018-06-07 22:19:23 195

原创 基于external version进行乐观锁并发控制

22基于external version进行乐观锁并发控制external version简介es提供一个feature,可以不用它提供的内部version版本号来进行并发控制,可以基于你自己维护的一个版本号来进行并发控制。例如:加入你的数据在mysql里也有一份,然后你的系统本身就维护了一个版本号,不管怎么生成的,程序控制的。此时,你进行乐观锁并发控制的时候,可能并不是想要用es内部...

2018-05-21 11:38:08 248

原创 21.基于_version进行乐观锁并发控制

elasticsearch基于_version进行乐观锁并发控制es版本elasticsearch-6.2.4kibana版本:kibana-6.2.4-windows-x86_641.构造一条数据PUT /test_index/test_type/7{ "test_fild":"test_test"}kibana返回结果:{ "_index": "...

2018-05-21 11:11:38 271

原创 40个Java集合类面试

Java集合框架为Java编程语言的基础,也是Java面试中很重要的一个知识点。这里,我列出了一些关于Java集合的重要问题和答案。1.Java集合框架是什么?说出一些集合框架的优点?每种编程语言中都有集合,最初的Java版本包含几种集合类:Vector、Stack、HashTable和Array。随着集合的广泛使用,Java1.2提出了囊括所有集合接口、实现和算法的集合框架。在保证线...

2018-05-17 14:33:08 459

原创 倒序插入排序算法

倒序插入排序算法public class p4_8 { // 倒序插入排序 static final int SIZE = 10; static void insertionSort(int[] a,int len){ // 插入排序 int i,j,t,h; for(i = 1;i<len;i++){ ...

2018-03-01 20:08:19 696

原创 Linux(CentOS 64)设置nginx开机自动启动及chkconfig管理

Nginx开机启动Linux(CentOS 64)设置nginx开机自动启动及chkconfig管理nginx 版本:nginx-1.8.0nginx安装完基本操作为:/usr/local/nginx/nginx-1.8.0/sbin/nginx #启动/usr/local/nginx/nginx-1.8.0/sbin/nginx -s reload

2018-01-03 22:30:33 239

原创 Nginx 安装

Nginx 安装系统平台:CentOS 64位。一、安装编译工具及库文件yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel二、首先要安装 PCREPCRE 作用是让 Nginx 支持 Rewrite 功能。1、下载 PCRE 安装包,下载地址: http://downloads.sourceforge

2017-12-27 18:47:33 208

原创 堆排序

堆排序堆结构是一种树结构,准确的说是一个完全二叉树。在这个树中每个结点对应原始数据的一个记录,并且每个结点应满足:如果按照从小到大的顺序排序,要求非叶子结点的数据要大于或等于其左、右子结点的数据。如果按照从大到小的顺序排序,要求非叶子结点的数据要小于等于其左、右子结点的数据。排序过程:例如,对于一个非叶结点A,假定Ai的左子树和右子树均已进行筛运算,也就是说左子树和右子树均已构成堆结构。对Ai

2017-12-21 22:39:36 247

原创 快速排序

快速排序步骤: - 首先设定一个分界值,通过该分界值将数组分成左右两部分。 - 将大于等于分界值的数据集中到数组右边,小于分界值的数据集中到数组的左边。此时,左边部分中各元素都小于等于分界值,而右边部分中各元素都大于等于分界值。 - 然后,左边和右边的数据可以独立排序。对于左侧的数组数据,又可以取一个分界值,将该部分数据分成左右两部分,同样将左边放置较小值,右边放置较大值。右侧的数组数据也可以

2017-12-12 21:31:40 206

原创 shell排序(希尔排序)

shell排序(希尔排序)步骤 - 将有n个元素的数组分成n/2个数字序列,第1个数据和第n/2+1ge数据为一对 - 一次循环使每一个序列对排好顺序, - 然后,再变为n/4个序列,再次排序。 - 不断重复上述过程,随着序列减少最后变为一个,也就完成了整个排序。代码public class P4_4 { static final int SIZE = 10; public s

2017-12-12 20:32:11 182

原创 插入排序

插入排序计算步骤 - 首先对数组的前两个数据进行从小到大排序。 - 接着将第三个数据与排好序的两个数据比较,将三个数据插入合适的位置。 - 然后,将第四个数据插入已排好序的前3个数据中。 - 不断重复上述过程,直到把最后一个数据插入合适的位置。最后,便完成了对原始数组从小到大的排序。代码:public class P4_3 { static final int SIZE = 10;

2017-12-11 22:52:07 171

原创 选择排序

选择排序流程首先从原始数组中选择最小的1个数据,将其和位于第一个位置的 数据交换。接着从生下n-1ge数据中选择次小的1个数据,将其和第2个位置的数据交换。然后不断重复上述过程,直到最后两个数据完成交换。至此,便完成了对原始数据从小到大的排序。代码实现:public class P4_2 { static final int SIZE = 10; public static vo

2017-12-11 22:22:16 196

原创 冒泡排序

冒泡排序方法:对数组中的各数据,依次比较相邻的两个元素的大小。如果前面的数据大于后面的数据,就交换这两个数据。经过第一轮的多次比较排序后,可将最小的数据排好。再用同样的方法把剩下的数据逐个比较,最后便可按照从小到达的顺序排好各数据。public class P4_1 { static final int SIZE = 10; public static void bubble

2017-12-11 22:07:02 389

原创 概率算法

概率算法概率算法依照概率统计的思路来求解问题,其往往不能得到问题的精确解,但是在数值计算领域得到了广泛的应用。因为很多数学问题,往往没有或者很难计算解析,此时便需要通过数值计算来求解近似值。概率算法执行基本过程: 1. 将问题转化为相应的几何图形S,S的面积容易计算,问题的结果往往对应几何图形中一部分S1的面积。 2. 然后,向几何图形中随机撒点。 3. 统计几何图形S和S1中的点数。根据S和

2017-12-05 22:19:55 248

原创 分治算法

分治算法分治算法的基本思想是将一个计算复杂的问题分为规模较小、计算简单的小问题求解,然后综合各个小问题,得到最终问题的答案。分治算法的执行过程: 1. 对于一个规模为N的问题,若该问题比较容易解决,则直接解决:否则执行下面的步骤。 2. 将该问题分解为M个规模较小的子问题,这些问题互相独立,并且与原问题形式相同。 3. 递归地解这些子问题。 4. 然后,将各子问题的解合并得到原问题的解。实例

2017-12-05 21:34:45 241

原创 递归算法

递归递归算法即在程序中不断反复调用自身来达到求解问题的方法。此处的重点是调用自身,这就要求待求解的问题能够分解为相同问题的一个子问题。这样,通过多次递归调用,便可求解完成。递归调用是一个方法在其方法体内调用自身的方法调用方式。这种方法也称为“递归方法”。编写递归方法时,必须使用if语句强制方法在未执行递归调用前返回。如果不这样做,在调用方法后,它将永远不会返回。好处:有的算法用递归表示要比循环表示简

2017-12-04 22:37:11 193

原创 递推法

递推算法递推算法是一种理性思维模式的代表,其根据已有的数据和关系,逐步推导而得到结果。根据已知结果和关系,求解中间结果。判定是否达到要求,如果没有达到,则继续根据已知结果和关系求解中间结果;如果满足要求,则表示寻找到一个正确答案。实例:斐波那契数列如果一对两个月大的兔子以后每个月都可以生一对小兔子,而一对新生兔子出生两个月后才可以生小兔子。也就是说,1月份出生,3月份才可产仔。那么假定一年内没

2017-12-04 22:12:12 303

原创 穷举法

穷举算法穷举算法依赖计算机的强大计算能力,来穷尽每一种可能的情况,从而达到求解问题的目的。穷举算法效率不高,但是适合一些没有明显规律可循的场合。基本思想对于一种可能的情况,计算其结果。判断结果是否满足要求,如果不满足则执行第1条来搜索下一个可能的情况;如果满足要求,则表示寻找到一个正确答案。在使用穷举算法时,需要明确问题的答案范围,这样才能指定范围搜索答案。指定范围后,才能用循环语句和判断语句

2017-12-04 21:35:05 539

原创 图结构

图结构图(Graph)结构也是一种非线性结构,图结构在实际生活中具有丰富的例子。例如:通信网络、人际关系网络等。什么是图结构:之前说的树结构基本特点是数据之间具有层次关系,每一层的元素可以和多个下层元素关联,但是只能和一个上层元素关联。如果将此规则进一步扩展,也就是每个元素数据之间可以任意关联,这就构成了一个图结构。正是这种任意关联性导致了图结构中数据关系的复杂性。一个典型的图结构包括以下内容:

2017-12-04 19:32:27 1875

原创 二叉树

二叉树什么是二叉树二叉树是树的一种特殊形式,它是n个结点的集合,每个结点最多只能有两个子结点。二叉树的子树仍然是二叉树。二叉树的一个结点上对应的两个子树分别称为左子树和右子树。由于子树有左右之分,因此二叉树是有序树。满二叉树在二叉树中除了最后一层的叶子结点外,每层的结点都有两个子结点。完全二叉树在二叉树中除最后一层,其它各层的结点数都达到最大个数,且最后一层叶结点从左向右的顺序连续存在,只缺最后一层

2017-12-03 22:49:06 196

原创 树结构

树结构树(Tree)结构是一种描述非线性层次关系的数据结构,其中重要的是树的概念。树是N个数据结点的集合,在该集合中包含一个根结点,根结点之下分布着一些互不交叉的子集合,这些子集合是根结点的子树。树结构的基本特征如下:在一个树结构中,有且仅有一个结点没有直接前驱,这个结点就是树的根结点。除根结点以外,其余每个结点有且仅有一个直接前驱。每个结点有任意多个直接后继。一个树结构可以是空,此时空树种

2017-12-03 17:38:53 381

原创 队列结构

队列结构顺序队列结构 即使用一组地址连续的内存单元依次保存队列中的数据。在程序中,可以定义一个指定大小的结构数组作为队列。链式队列结构 即使用链表形式保存队列中各元素的值。从数据运算角度来分析,队列结构是按照“先进先出的原则处理结点的数据”。基础数据public class DATA4 { private String name; private int age;// p

2017-12-03 16:29:52 223

原创 栈结构

栈结构定义栈结构是从数据的运算来分析分类的,也就是说栈结构具有特殊的运算规则。而从数据的逻辑结构来看。栈结构其实就是一种线性结构。如果从数据的存储结构来划分,栈的结构包括两类。顺序栈结构:既使用一组地址连续的内存单元依次保存栈中的数据。在程序中,可以定义一个指定大小的结构数组来作为栈,序号为0的元素就是栈底,再定义一个变量top保存栈顶的序号即可。链式栈结构:即使用链表形式保存栈中各元素的值。链

2017-11-30 00:15:11 309

原创 System的exit

System的exit源码 /** * Terminates the currently running Java Virtual Machine. The * argument serves as a status code; by convention, a nonzero status * code indicates abnormal termination.

2017-11-30 00:14:05 266

原创 git stash

git stashgit stash 保存当前工作进度。会分别对暂存区和工作区的状态进行保存。git stash list 显示工作进度列表。此命令暗示了git stash可以多次保存工作进度。gis stash pop 如果不使用参数则恢复最新保存的工作进度,从list删除最近工作进度。git stash apply stash@{1} 根据list中的stash 选择恢复进度git sta

2017-11-29 21:41:35 161

原创 撤销提交(完全提交和暂存区)

撤销提交(完全提交和暂存区)创建一个文件hello.txt$ git status -sA firstweb/src/a/b/c/hello.txt修改一个文件TestTwo.java$ git status -sA firstweb/src/a/b/c/hello.txt M firstweb/src/git/git7/TestTwo.java提交TestTwo.java$ git

2017-11-29 08:12:04 1392

原创 Git检出(建立子版本库更新并且合并到master)

Git检出(建立子版本库更新并且合并到master)HEAD: head可以理解为“头指针”,是当前工作区的“基础版本”,当执行提交时,HEAD指向的提交将作为新提交的父提交。看看当前HEAD指向。$ cat .git/HEADref: refs/heads/master查看master 和 head$ git rev-parse HEAD master4b9bdcab95d15dd79e7

2017-11-28 20:53:05 601

原创 git 重置(回退提交版本)and用reflog挽救错误重置

git 重置(回退提交版本)查看.git文件中master文件内容$ cat .git/refs/heads/master0e662b107b1c08f515393151649689db317fa539$ vi .git/refs/heads/master 1 0e662b107b1c08f515393151649689db317fa539查看历史提交的管理关系$ git log --gra

2017-11-28 19:17:02 458

原创 git创建版本库及第一次提交

git创建版本库及第一次提交查看git版本:$ git --version git version 2.10.1 (Apple Git-78)告诉git当前用户的姓名和邮件地址$ git config user.name 查看用户名wangchengwei$git config --global user.name "wangchengwei"创建版本库 在项目根目录下执行 git init$

2017-11-27 07:47:09 1236

原创 链表结构

链表结构什么是链表结构 数据部分,保存的是该节点的实际数据。 地址部分,保存的是下一个结点的地址。链表结构就是由许多这种结点构成的。在进行链表操作时,首先需要定义一个“引用头”变量(一般以head表示),该引用变量指向链表结构的第一个结点,第一个结点的地址部分又指向第二个结点…… 直到最后一个结点。最后一个节点不再指向其他结点,称为“表尾”,一般在表尾的地址部分放一个空地址null,

2017-11-26 22:41:59 362

原创 顺序表结构

顺序表结构实现实体类public class DATA { private String key; private String name; private int age; public String getKey() { return key; } public void setKey(String key) { this

2017-11-26 19:42:56 288

空空如也

空空如也

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

TA关注的人

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