自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 设计模式三:原型模式

1 定义用原型实例指定创建对象的种类,通过拷贝这些原型,创建新的对象简单理解就是对象的克隆2 使用clone方法实现在java中可以使用Object对象中的clone方法来实现。首先,如果想实现clone方法必须实现Cloneable接口,如下:public class User implements Cloneable{ private String username; ...

2020-01-05 16:55:25 37

原创 设计模式二:工厂模式

在设计模式的的七大原则中提到过,要针对接口编程,而不是针对实现编程。比如这样写:List<String> list = new ArrayList<>();等号左侧用的是List类型(接口),而不是ArrayList类型(实现)。但是,在等号右侧,我们不得不new一个具体类型,这样从某种程度上来说也是面向实现编程了,如果说以后我自己写了个新的ArrayList,想要...

2020-01-05 14:00:50 40

原创 设计模式一:单例模式

使用一定的方法,保证在整个软件系统中,对某个类只能存在一个对象实例单例模式的实现有多种方式,下面一一介绍。1 饿汉式所谓饿汉式,就是不管需不需要,都先new一个实例出来,是不是调用get方法的时候再new出来public class Singleton1 { private static final Singleton1 instance = new Singleton1(); ...

2019-12-31 22:53:29 36

原创 设计模式七大原则

1 设计模式带来的好处提高代码可重用性提高代码可读性提高代码可扩展性提高代码可靠性使程序呈现高内聚,低耦合的特性设计模式七大原则,其实就是在编程过程中应当遵守的原则,也是各种设计模式的基础,七大原则如下:单一职责原则接口隔离原则依赖倒置原则里氏替换原则开闭原则迪米特法则合成复用原则下面对这一原则一一介绍。2 单一职责原则对类来说,一个类只负责一项职责。如果一...

2019-12-29 15:37:53 56

原创 Item1: 考虑使用静态工厂方法代替构造方法

1 什么是静态工厂方法静态工厂方法不是指设计模式中的工厂方法,而是在类中提供一个静态方法,该类方法返回类的一个实例。在Java API中有许多这样的例子,如所有的基本对象的包装类都会提供一个valueOf()的方法用于获取该对象的实例:String str = String.valueOf(1);Integer integer = Integer.valueOf("1");Long lo...

2019-12-26 00:52:44 37

原创 设计模式一:观察者模式

1 认识观察者模式首先认识以下什么是观察者模式,举一个现实生活中的例子,出版社于订阅者。出版社负责出版报纸订阅者向出版社订阅报纸,出版社印刷好报纸后将报纸送给订阅者任何人都可以到出版社订阅报纸订阅报纸的人可以随时取消订阅这就是观察者模式的基本逻辑了。在观察者模式中,常常将出版社的角色命名为主题(Subject),将订阅者命名为观察者(Observer),观察者模式也被称为发布-订阅模...

2019-12-15 17:21:36 36

原创 Mac Homebrew安装、卸载与更新慢等问题

最近用homebrew安装gradle,发现update特别慢,而且下载的gradle不是最新版,而且多次执行brew命令时会出现如下错误:Error: Another active Homebrew update process is already in progress.Please wait for it to finish or terminate it to continue....

2019-09-04 23:48:59 501

原创 git应用详解十:git diff

可以通过git diff命令来对比文件的修改点。linux的diff命令在介绍git diff命令之前,先看看linux提供的diff命令。比如现在桌面上有a.txt,b.txt两个文件,比较两个文件的不同点:diff -u a.txt b.txt --- a.txt 2019-08-11 16:59:07.000000000 +0800 ...

2019-08-11 17:31:13 306

原创 git应用详解九:git stash命令

git stashgit stash命令用来暂存工作区,不多说,下面看例子:同样查看当前git状态:下面开始:先创建一个新分支,不切换分支,依然在master分支上做一个新的提交:然后切换分支,到新分支上做修改:此时尝试切回master分支:git提示修改会被覆盖,在切回分支前要先提交。提交之后再切换分支是肯定可以的,当还有另一种方法,使用stash命令:git stas...

2019-08-09 08:45:05 39

原创 git应用详解八:checkout命令

关于checkout命令前面陆陆续续写了不少,比如用来丢弃工作区的修改、切换分支、创建并切换分支等。下面继续将checkout的其他用法。先看当前git的状态:总共有三次提交,每次提交对应新增一行。下面使用如下命令:git checkout d75echeckout后面跟上提交的commit id,输入命令中为第二次提交的commit id。输入命令后git提示当前位于游离的H...

2019-08-09 08:00:34 73

原创 git应用详解七:版本回退

在使用版本回退前,先看看当前的提交日志:看一下文件内容:每次提交对应新增一行。下面开始版本回退:使用命令:git reset --hard HEAD^回退到上一个版本如果要回退到上上个版本,使用命令:git reset --hard HEAD^^使用两个 ^^ 即可。如果要回退到前10个提交,当然写10个 ^ 也是可以的,但git有一种更简洁的方式:git reset...

2019-08-01 23:32:00 46

原创 git应用详解六:git分支

目录分支基本操作分支基本操作查看当前所在分支以及当前版本库中的所有分支:git branch图片所示,*表示的是当前分支,当前版本库中只有一个master分支。创建新分支:git branch new_branch切换分支:git checkout new_branch 可以查看一下新分支中有哪些内容:可以看到,新分支与原分支的内容完全相同。git在创建分支时新...

2019-07-21 00:20:46 54

原创 git应用详解五:.gitignore文件的使用

在实际使用git的过程中,与遇到项目中有些文件不应该加入版本库,比如一些IDE的配置文件,引入的jar包等,当然可以在写git命令的时候将需要的文件一个一个加入版本库,当这样做及其不方便,首先,工作区永远是不干净的,git会一直提示将文件加入版本库,第二个是当不要用加入版库的文件较多时,很容易出现混乱,再者就是一个一个写文件名太过繁琐,不能使用"git add ." 命令将所有的文件加入版本库。...

2019-07-20 23:00:46 102

原创 git应用详解四:git日志

目录修改提交消息修改提交消息先修改工作区,并将修改加入暂存区下面进行提交,假设提交消息写错了使用git log命令看一下日志:下面修改这条提交消息:git commit --amend -m '修正后的消息'看一下日志:可以看到,原来的错误消息已经没有了,替换成了修正后的消息。...

2019-07-20 11:07:52 44

原创 git应用详解三:添加、修改与删除

目录丢弃工作区中的修改删除暂存区的修改丢弃工作区中的修改接着上篇文章,首先确定工作区中是干净的,查看工作区的文件以及文件的内容:下面在test.txt中新增一行:echo 'line 3' >> test.txtcat test.txt 当然也可以使用vi打开文件编辑,如果只是简单的往文件末尾追加一行的话,使用这个命令更快捷。下面查看状态:git 提示有修改没有...

2019-07-17 00:09:45 121

原创 git应用详解二:git入门

git基础在git中文件有三种状态:已修改(modified)、已暂存(staged)、已提交(committed)在工作区中修改文件,修改后文件的状态为已修改状态,随后对已修改的文件进行git暂存操作,将文件存入暂存区,最后再将已暂存的文件进行git提交操作,将文件存入版本库,这所有的操作都是在本人电脑上操作,不涉及远程,即使电脑没有联网也能完成这些操作。创建git版本库首先在桌面上创...

2019-07-15 00:34:15 57

原创 git应用详解一:准备工作

目录git安装Mac上git安装Windows上git安装环境准备git安装Mac上git安装通过XCode安装Mac上安装Xcode包括git的安装,安装好后在mac控制台输入git --version输出git的版本说明安装成功官网安装进入git官网,https://www.git-scm.com/ 下载相应的版本安装,安装后同样在控制台查看git版本来查看git是否安...

2019-07-14 10:58:36 38

原创 Echarts实时获取后台数据之三:Ajax实时获取数据

使用Ajax之后,效果就是图会根据后台数据实时变化,不会有加载动画。首先,本人没用使用任何前端框架,用的是原始的Ajax,不需要导入任何文件。代码如下:function userAjax() { var dom = document.getElementById("userContainer"); var myChart = echarts.init(dom); var app = {...

2019-01-23 19:41:35 2085

原创 Echarts实时获取后台数据之二:获取后台数据

前台去获取后台数据,如果在jsp文件中,可以使用el表达式遍历,如果在js文件中,又不想使用json,那么传过去的就是字符串了,需要自己处理,自己两种都尝试了。建议还是使用json格式。字符串形式在js中获取后台数据有很多中方式,这里只提供两种方式,一是将js代码和html放在同一文件中,二是将js代码放在单独的文件中。如果将js文件放在html代码中,只需要这样:var data = '...

2019-01-23 18:18:02 2228

原创 Echarts实时获取后台数据之一:Echarts新手入门

最近接触了Echarts,具体就不多加介绍了,可以到官网查看,不过不知道为什么有时候进不去https://echarts.baidu.com/这个网址,但换个WIFI却可以,这个不是很理解。Echarts入门最基本的就是在自己的电脑上跑起来,首先在官网上下载,我是直接下载的完整版,下载下来的文件是echart.min.js,这是一个js文件,直接引入到自己的代码中即可。然后到它的官方示例中选一个...

2019-01-23 16:43:50 3035 1

原创 Linux常用命令及技巧

Linux版本:ubuntu-16.04.2-desktop-amd641.图形界面与命令行模式之间的切换linux共有七个控制台,1-6为命令行模式,第7个为图形化界面。同时按下Control+Alt+Fn //Fn是指F1到F7,对应7个控制台可以通过在命令行输入tty查看当前位于哪一个控制台。2.history命令在控制台输入history命...

2018-12-29 14:13:01 110

原创 数据库事务四大特性及事务隔离级别在mysql中的具体体现

事务的四大特性原子性 指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。一致性 指事务必须使数据库从一个一致性状态转换到另一个一致性状态。拿转账来说,不管如何转账,钱的总数不变。隔离性 指多个用户访问数据库时,用户为每个数据库开启的事务,不能被其他事务的操作数据干扰,多个并发事务之间要相互隔离。永久性 指一个数据一旦提交,它对数据库中数据的改变是永久的。...

2018-02-27 11:06:27 307

原创 Mac上安装Mysql配置文件的添加及修改配置文件

安装Mysql默认安装在/usr/local目录下,这个目录可以通过command+shift+G进入: 进入后选择mysql安装文件夹。配置文件Mac上Mysql默认没有配置文件,需要自己添加,可以support-file 文件目录下的my-default.cnf复制一份到桌面上,可以把文件中的内容全部替换为一下内容# Example MySQL config file for small

2017-11-26 13:48:28 23662

原创 RTTI

RTTI,英文全称Run-Time Type Identification,即运行时类型识别,我们常用的多态就是基于RTTI实现的。RTTI的功能主要有Class类实现。 在Java中,所有的类都是在对其第一次使用时,动态加载到JVM中的。当程序创建第一个对类的静态成员的引用是,就会加载这个类,所以构造器也是静态的,即使它并没有声明成static。 在程序运行时,类加载器会先检查这个类的Clas

2017-10-24 18:03:55 454

原创 正则表达式

通过static Pattern.complie(String regex)方法来编译正则表达式,它会根据传入的String类型的正则表达式生成一个Pattern对象,然后将想要检索的字符串传入Pattern对象的matcher()方法,生成一个Matcher对象,通过该Matcher对象的一些方法对字符串进行处理:boolean matches() 判断整个字符串是否都匹配boolean lo

2017-10-24 15:54:23 305

原创 xml两种解析原理对比

DOM解析xml解析器一次性将整个xml文档加载进内存,然后在内存中构建一棵Document对象树,通过Document对象,得到树上的结点对象,再通过结点对象访问xml内容。Node 所有结点的父类Element 标签结点Attribute 属性结点Text 文本结点主要工具:JAXP 官方工具,使用范围很小JDOM 非官方工具Dom4J

2017-10-14 00:41:54 1224

原创 匿名内部类

匿名内部类只能访问final局部变量,但可以访问外部类的普通成员变量。public class InnerClass { public static void main(String[] args) { Outer o = new Outer(); Inner i = o.method(1); i.print(); }}class Ou

2017-10-05 16:08:07 171

原创 Java中的初始化过程

Java中变量初始化顺序:1.静态变量在类加载时初始化2.将分配给对象的存储空间初始化成二进制的0,即先将所有的非静态成员变量初始化成03.如果有父类,先调用父类构造方法4.按照声明的顺序调用初始化成员变量5.调用导出类的构造方法主体具体例子可以看下面这段代码:public class InitOrder { public static void main(String[] args

2017-10-05 14:21:44 208

原创 协变返回类型

Java进行方法重写有一下几个要求: 1、重写的方法和被重写的方法必须具有相同方法名称、参数列表和返回类型。 2、重写方法不能使用比被重写的方法更严格的访问权限。 但在Java SE5中添加了协变返回类型,它表示子类中的重写方法可以返回基类方法返回类型的子类。public class CovariantReturn { /* * 协变返回类型: * 表示在

2017-09-27 21:02:30 291

原创 final关键字

数据final关键字用于数据时,代表这个数据是一个常量,不可改变,这个数据通常属于基本数据类型。但有几点需要注意: 当final修饰引用数据时,代表的是引用不变,一旦引用指向一个对象,就无法把他改为指向另一个对象,然而对象自身是可以更改的。

2017-09-26 19:57:58 169

原创 精通正则表达式八:多选结构是匹配优先还是忽略优先

记得在前面测试引擎的类型的时候用正则表达式‘nfa|nfa not’来匹配文本‘nfa not’,因为DFA和POSIX NFA不支持忽略优先量词,所以如果匹配到的是‘nfa’,则是NFA: 对于NFA而言,会逐个按顺序尝试多选结构的分支,哪个先匹配到返回的就是哪个: 对于DFA而言,却总是返回匹配长度最长的文本: test.txt中的文本是‘nfa not’,其实这也跟它的文本主

2017-09-19 17:24:38 1344

原创 精通正则表达式七:占有优先量词和固化分组

定义占有优先量词:?+ *+ ++ {m,n}+占有优先量词与匹配优先量词很相似,只是它们从来不会交还已经匹配的字符。 固化分组:(?>...) ...是指具体内容固化分组的内容与正常的匹配并无区别,只是当匹配完括号中的内容后,括号中的备用状态会全部舍去。例子将所有的小数保留三位,规则如下:如果小数位数第三位不为0保留三位,如果小数位数少于三位或第三位为0,保留两位小数。 首先可以用

2017-09-18 17:23:05 1649

原创 Java编程思想:吸血鬼数字

吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘而得到,而这对数字各包含乘积的一半位数的数字,其中从最初的数字中选取的数字可以任意排序。以两个0结尾的数字是不允许的<百度百科>

2017-09-13 19:32:28 310

原创 匹配优先可能遇到的问题

简单的问题其实在精通正则表达式六:匹配优先与忽略优先中已经看到了匹配优先的问题,比如我想匹配一段文本中引号中的内容,用匹配优先就会出现问题: 原本希望匹配的是”Welcome”和”hosted”,然而却得到了错误的结果,上篇文章已经写过,这里就不多加赘述。现在来说说如何解决这个问题,首先可以用忽略优先量词: 还可以用排除型字符组: 用排除法时注意,‘^’只要用在‘[]’的里面才是排除,

2017-09-13 15:52:12 502

原创 精通正则表达式六:匹配优先与忽略优先

定义匹配优先:尽可能多的匹配 忽略优先:尽可能少的匹配 我们刚开始接触的都是匹配优先:* + ?{num,num}忽略优先只需要在原本的匹配优先量词后加一个问号即可:*? +? ?? {num,num}?要注意的是,DFA不支持忽略优先。实例来看下面两个例子: 匹配优先: 忽略优先: 原因是什么呢?上面说过,匹配优先总是尽可能多的匹配,所以‘\w+’先匹配所有的文本,然后为了匹配‘

2017-09-12 10:38:13 4127 3

原创 精通正则表达式五:NFA与DFA

定义NFA与DFA是正则表达式引擎所使用的两种基本技术:NFA:非确定型有穷自动机DFA:确定型有穷自动机作者用用电动机来比喻DFA,用汽油机来比喻NFA,他们确实有许多相似之处: 1.汽油机的历史更长,NFA的历史也比DFA长 2.汽油机应用更加广泛,NFA的应用也比DFA更加广泛 3.汽油机可分为达到加利福尼亚州的尾气排放标准(更严格)和没有达到两种,NFA也分为POSIX NFA和传统

2017-09-11 20:47:34 2228

原创 逆置栈中的内容

问题: 给定一个栈,逆置栈中的内容,要求只能只用栈操作push和pop,不能用数组、栈、队列等做过渡。基本思路: 用递归,先将原来栈中的元素递归出栈,直至栈为空,然后在每次递归向上步骤时,将上一步中出栈的元素插入栈底,具体代码如下:import java.util.Stack;public class ReverseStack { /* * 给定一个栈,将其中的内容逆置

2017-09-11 16:40:51 1423

原创 matlab如何让横坐标竖直排列

在用matlab画图的时候,会遇到一种情况是横坐标比较长,正常排列不下,这是就要将横坐标竖直排列。 基本思想是将原本的坐标去掉,然后用text函数来重新标出坐标,网上的如下:http://www.ilovematlab.cn/forum.php?mod=viewthread&tid=94787,具体如下:clear,clc;KS=[0.6215 0.6411 0.6306 0.6105];

2017-09-08 16:09:49 7279

原创 JavaScript中的prototype属性

prototype是函数的保留属性,即所有的函数都有prototype属性,它指向一个对象引用,这个对象称为原型对象,当用new创建对象的时候,新建对象会重原型对象上继承属性和方法。应用从上面的定义可以看出,可以用prototype给对象添加属性和方法,比如JavaScript中内置的数组对象中没有获取最大值的方法,我们就可以自己给数组对象添加这个方法。Array.prototype.getMax

2017-07-18 19:40:15 161

原创 JavaScript中的自定义对象

首先需要明确的一点:JavaScript中没有类的概念,只要有函数就可以创建对象1.使用无参函数创建对象function Person(){}var p = new Person(); // 创建一个Person对象p.id = 12;p.name = "张三";p.print = function(){ // 定义一个方法 document.write("id=" + this.i

2017-07-12 22:43:26 226

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