自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java中级篇之通过私有构造器强化不可实例化的能力

Java中有很多工具类,这些类中只包含静态方法和静态域,比如java.lang.Math,java.util.Arrays,java.util.Collections等等。这样的工具类不希望被实例化,因为实例化对它没有任何意义。企图通过将类做成抽象类来强制该类不可被实例化是行不通的。因为抽象类可以被子类化,子类可以被实例化。由于只有当类不包含显式的构造器时,编译器才会生成缺省的构造器,因为只有...

2019-06-30 22:27:17 188

原创 Java设计模式篇之单例模式

定义:确保一个类只有一个实例,并提供全局访问点单例模式应该是设计模式中最容易理解的一个模式了,但是要写一个健壮的单例类,还是要花点功夫的。来看一个经典的单例模式实现:public class Singleton{ private static Singleton uniqueInstance; private Singleton(){} public static Singleto...

2019-05-31 23:20:42 156

原创 Java设计模式篇之工厂模式

定义:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类原则:要依赖抽象,不要依赖具体类通俗的理解就是,需要在代码中创建某个类的各种子类,每次都需要关键字new来创建,带来的问题是当类变化时,那么散落各处的代码维护起来不方便,这个时候就需要统一管理这些类的创建,那么就有了工厂的概念。来看一个简单的代码:public class SimplePiz...

2019-05-31 21:41:42 142

原创 Java中级篇之静态工厂方法代替构造器

这里的静态工厂方法并不是设计模式中的工厂方法,只是类中的一个静态方法,这个方法的主要作用就是通过调用类的构造器来返回类的实例。这样做有以下几个优势:第一大优势:它们有名称如果希望一个类能通过不同的参数来实例化,那么用公有构造器只能通过构造器的重载来实现,这样在实例化的时候就需要谨慎仔细的鉴别输入参数。如果使用静态工厂方法的话,就可以在方法名称上加以区分,方便使用。public class ...

2019-04-14 21:18:15 440

原创 Java设计模式篇之装饰者模式

定义:动态地将责任附加到对象上。想要扩展功能,装饰者提供有别于继承的另一种选择。原则:对扩展开放,对修改关闭当阅读代码时,发现在new一个对象时传递的参数也是new的一个对象,而参数对象的参数也是new了一个对象,而且这些对象直接或间接的继承了一个基类,那么就很有可能时装饰者设计模式,可以把装饰者模式理解为一种功能增强。比如Java I/O就是典型的装饰者模式:InputStream ...

2019-04-14 18:02:38 114

原创 System.arraycopy()方法与参数数组长度的关系

System.arraycopy()方法的作用:从源数组拷贝指定长度的内容至目的数组。参数示例:System.arraycopy(src, srcPos, dest, destPos, length);测试示例:public static void main(String args[]){ byte[] source = "qwertyuiopasdfghjklzxcvbnm".get...

2019-04-14 16:34:06 821

原创 Java设计模式篇之观察者模式

定义:观察者模式,在对象那个之间定义一对多的依赖,这样一来,当一个对象改变状态,依赖他的对象都会收到通知,并自动更新。原则:为交互对象之间的松耦合设计而努力。一般在读代码的时候遇到有注册功能的代码时,就应该想到这里是不是用了观察者模式,观察者模式中有主题对象和观察者,那么主题对象就是通过注册功能来确定,它到底有那些观察者。还是举一个例子来说明一下,有个气象站,需要收集气象数据,然后显示在...

2019-03-31 17:03:59 117

原创 Java设计模式篇之策略模式

记得之前一个帖子说过,设计模式不用刻意的学,可以在代码实践中慢慢总结,但是我觉得想要阅读一个现有系统或者一个框架的源码,学习一些常用的设计模式还是有必要的,废话不多说,直接将进入正题。定义:策略模式定义算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。原则:封装变化;组合优于继承;针对接口而不是针对实现编程看着感觉有点似懂非懂的,直接上代码示例吧。示...

2019-03-24 18:38:18 87

原创 《深入理解Java虚拟机》总结整理

关于《深入理解Java虚拟机》这本书就不多说废话了,我觉得只要是搞Java的程序员都应该有这本书,因为这本书确实是很有用,对于理解Java虚拟机的底层运行机制非常有帮助,只有这样才算是真正进入了Java世界。下面列下各个章节内容:第一章:走近Java介绍了Java和虚拟机的发展史,展望Java技术的未来第二章:Java内存区域与内存溢出异常重点介绍了运行时数据区域:程序计数器、Java虚...

2019-03-10 14:20:13 231

原创 《代码整洁之道》总结整理

《代码整洁之道》这本书的作者是外国某公司总裁,这本书我觉得主要分成两个部分,前半部分是适合新手,说的是在写代码过程中如何给变量或者函数取名以及代码和注释等等方面;后半部分是适合老手,说的是如何重构经过长时间的迭代开发而形成的烂代码。这本书关于注释这块跟我之前的理解还是有偏差的,刚工作那会记得有人说过,好的代码应该至少有三分之一以上的注释,但是本书给出的结论是,好的代码是不需要注释的,需要加注释的原...

2019-03-10 02:16:51 282

原创 《深入分析JavaWeb技术内幕》总结整理

这本书前段时间刚读完,整体感觉就是内容覆盖比较广,描述从前端发送请求,后端接受请求处理,然后再将结果返回前端的整个过程,对于新手来说适合快读阅读形成一个整体的知识体系,然后对于具体的技术细节需要找专门的讲解书籍来看,总体来说,感觉作者说的很细,但就是难以理解。下面介绍具体章节:第一章:深入Web请求过程这章内容主要说的是前端发起请求之后会经过哪些服务单元,经过那些处理然后到达后端,这一章内...

2019-03-05 22:17:23 1094

原创 Shell中的正则表达式基础及示例

正则表达式就是根据你定义的模式模板进行模式匹配的一种技术,由字面文本和具有特殊意义的符号组成。下面介绍下主要规则:一、位置标记^,这个表示匹配字符串的开始位置$,这个表示匹配字符串的结束位置二、标识符A字符,表示必须匹配A字符. 这个点表示匹配任意一个字符,包括空字符,但有且只能必须匹配一个[ ],中括号内可以是一个字符组或字符范围,[0-9]表示单个数字,[ab]表示匹配a...

2019-03-03 19:37:20 460

原创 Java、Shell、awk分别打印乘法表

分别使用Java和Shell来打印乘法表Java:public static void main(String[] args){ for(int i=1;i<=9;i++){ for(int j =1;j<=i;j++){ System.out.print(j+"*"+i+"="+i*j+" "); } System.out.println(); }}结...

2019-02-27 22:55:20 315

原创 JAVA基础篇——02泛型

1、什么是泛型,为什么要用泛型?泛型其实是一种为了实现代码复用的机制,比如几个功能除了对象的基本外,其他的实现方法都是相同的,那么就可以用泛型机制来实现。Java5开始引入了“参数化类型”的概念,也就是泛型。在Java5之前只能通过像Object这样的超类来实现泛型。2、Java5之前利用Object实现泛型?public class Cat{ private Object obj; p...

2019-02-26 23:59:22 129

原创 JAVA基础篇——01 面向对象及平台无关性

1、什么是面向对象?什么是面向过程?面向过程:指的是按照功能来分析系统需求,主要原则包括自顶向下、逐步求精、模块化等。面向对象:基本思想是使用类、对象、继承、封装、消息等基本概念进行程序设计。2、面向对象的三大基本特征和五大基本原则?三大基本特征- 封装:指的是将对象的实现细节隐藏起来,通过公共方法提供功能。- 继承:子类继承父类后,将直接获得父类的属性和方法,是一种软件复用的手段-...

2019-02-25 23:37:53 251

原创 《大型网站技术架构-核心原理与案例分析》总结整理

这本书的作者曾是阿里巴巴的技术专家,书中的内容不涉及具体的技术细节,只是针对大型网站介绍了架构演化发展历程,然后系统介绍了架构中的几个核心要素,并列举了几个大型网站的系统架构作为案例以及典型的故障案例分析,最后对于架构师这个职位总结了自己的一些心得。下面列举本书的主要章节及内容概述:一、网站的架构模式分层、分割、分布式、集群、缓存、异步、冗余、自动化、安全分层就是按照应用层、服务层、数据层...

2019-02-25 01:27:19 473

原创 《Oracle查询优化改写2.0》总结整理

《Oracle查询优化改写》这本书是两位专门从事Oracle数据库开发的大牛编写的针对SQL查询的技巧和大量案例分析。 这本书的前半部分是针对某一类的功能结合具体的案例进行讲解,包括单表查询,对结果排序,多表查询,增删改,字符串和数字的使用,日期的运算和操作,范围处理,高级查找,报表和数据仓库运算,分层查询,应用案例实现等等,对于常用的知识点会细化讲解。本书的后半部分则分享了五十多个改写调优案...

2019-02-24 01:06:47 1754

原创 《码农翻身》总结整理

最近突然想把自己读过的一些书总结一下,做个记录。 《码农翻身》是我毕业之后认真读过的第一本书,从此之后一发不可收拾,上网买了一堆博客大神推荐的书,读完之后也有自己的一些总结,后面会陆续补上。 《码农翻身》这本书的特点是用有趣的故事,通俗易懂的语言来描述计算机的世界,涉及的范围和内容都是一些常用的知识,从底层操作系统,到数据库,再到java语言以及JavaWeb技术,以及代码管理等等...

2019-02-23 00:21:57 1104

原创 linux中查询某目录下以点开头的文件长列表展示

正常查看所有文件命令,-a表示可以查看隐藏文件ls -a通过查找命令,过滤出点开头的文件grep "^\..*"其中,^\. 表示以点开头,因为点在Linux中是特殊字符(需要反斜杠转义),表示任意某个字符,必须要匹配一个字符,空格也行,空格也表示一个字符,但是不能是空, * 表示某字符匹配0次或者多次,.* 连在一起就表示任意长度的字符如果少了一个点是^\.* ,表示转义后的点符号匹配...

2019-01-12 01:58:21 8151

原创 基于上一篇的js中parseInt()函数数值转换的参数类型问题

上一篇中提到parseInt(“010”)=parseInt(“010”,8)这个的返回值是8今天测试时发现,如果第一个参数不是字符串,而是一个num形数值,返回结果时什么呢parseInt(010)这个返回8parseInt(010,8)这个返回NaN原因是什么,通过函数源码得知,函数校验参数之后,第一步会对第一个参数强转StringString(010)的返回值是“8”,所以上面再...

2018-12-27 21:52:15 235

原创 js中关于parseInt()方法的数值转换问题

//将字符串按“-”符号分割成一个字符串数组,数组元素是字符串var a = “2018-08-26”.split("-");//a[1]的值是“08”当调用parseInt(args , radix),其中第二个参数可以为空,当args为数字类型时,radix默认为10当args为字符串类型时,radix根据字符串的开头,分别指定radix默认值0x或者0X开头时,radix为16...

2018-12-26 22:07:34 1008

原创 int类型左移位数超过32位的问题,比如1左移50位结果是什么

1<<50的结果是什么int类型的数据占4个字节,一共32位,所以最多左移31位,那么后面的50如何处理呢测试结果:1<<50 = 1<<1850跟18相差了32,有人可能猜到了跟int类型占32位有关,也确实如此根据java规范中描述 int a<<b, b这个操作数只能取二进制数的低五位(就是最后5位)50的二进制表示00…00 00...

2018-12-24 22:02:37 7736

原创 Tomcat修改Server Locations后报错找不到backup系统路径,拒绝访问等报错

Tomcat修改Server Locations后报错找不到backup系统路径解决方案:在tomcat安装路径下,新建一个backup文件夹,然后修改整个tomcat文件夹的读写权限,就可以了右击属性—安全—编辑—上面用户组选择users下面允许列全勾上----应用保存重新修改Server Locations,保存启动,就OK了...

2018-12-22 19:47:32 630

空空如也

空空如也

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

TA关注的人

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