自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

张志旺的专栏

技术路上的一名小学生...

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

原创 说明

本博客里的所有代码均为本人在学习和测试时所写,在编写过程中由于省时省事并未过多考虑代码规范问题(比如命名等),请见谅!但所有代码已通过编译并运行正常,望广大同行批评指正!

2014-07-22 16:13:48 409 1

原创 软件设计原则之第一篇——开闭原则(OCP)

这篇是软件设计原则系列文章的第一篇,之前写过一篇博客里面介绍了七种设计原则,但是将七种原则容纳到一篇文章之中总感觉哪里不对:说的太多文章就会变得冗长影响阅读体验,说的太少总感觉有的话没说完就进行下一项了,于是乎本人突发奇想为何不分开来写?更于是乎就有了“软件设计原则系列文章”,本文是个开篇。废话不多说了,Let's come to the point!软件设计一共有七大原则,在这七大...

2020-03-20 23:54:21 304

原创 浅谈软件设计的七大原则

首先,为什么要有软件设计原则?软件设计原则的目的是为了让我们编写出更好的代码,那什么是“更好的代码”?“更好的代码”就是使代码更简洁、更易读、更具有可维护性以及更具有可扩展性。那么我们写代码或者设计代码结构的时候不遵循软件设计原则可以吗?答案是可以的。因为软件设计原则不像是Java语法一样的硬性要求,不这么做编译就不通过,你的程序就运行不了,相反,不遵循这七大设计原则你的代码照样能够运行。那么所谓...

2020-02-20 19:33:34 1091

原创 SpringBoot启动后不报任何错误自动停止

在启动SpringBoot时后台日志没有报出任何异常或者错误然后就自动停止了,启动日志如下:查看红框框出来的日志时西东shutdown了,解决方法如下:在maven的pom文件里面加入依赖:<dependency> <groupId>org.springframework.boot</groupId> <artifa...

2019-12-24 17:42:50 3177 1

原创 HashMap原理(二)——jdk1.8中HashMap扩容底层代码和算法分析

这次给大家带来的是HashMap原理第二篇之——HashMap扩容的底层代码和算法分析。需要说明的是本文是基于jdk1.8来进行展开的,今后有机会会和大家分享在jdk1.7中HashMap的实现方式和1.8有哪些区别(扩容方式是其中的区别之一)。有朋友会说,既然HashMap是基于数组+单向链表+红黑树的底层数据结构,链表可以无限地延伸啊,红黑树也可以不停滴往里面放东西啊,还扩容干什么?这样的说法...

2019-12-22 14:34:21 402

原创 HashMap原理(一)

目录HashMap的底层数据结构 为什么默认初始大小为16以及为什么默认加载因子为0.75 为什么MashMap的容量是2的N次幂 HashMap的hash值是怎么算出来的,为什么这么算 HashMap的put()过程一、HashMap的底层数据结构HashMap的底层数据结构是数组+单向链表+红黑树(jdk1.8及以后版本才有红黑树结构)。二、为什么默认初始大小为16...

2019-12-20 10:03:33 421

原创 关于Java线程中this.getName()和Thread.currentThread().getName()区别的深入分析

本文为本人原创,转载请标明出处。先看测试代码和运行结果:问题的焦点在于运行结果标注的三个位置,为什么会是这三种结果?分析:逐个来看,先看运行结果1为什么是Thread-0。首先,子类的构造函数如果没有显式地指定调用父类的哪个构造方法,则在子类构造方法的第一行默认调用父类无参构造器,即隐式地调用super();其次,实例化子类要先实例化父类。本例中MyThread7是Thread...

2019-10-03 00:54:14 1005 1

原创 Java线程的状态到底一共多少个

Java线程的状态一共有过少个网上众说纷纭,5-7个不等,到底一共是多少个呢?打开java.lang.Thread源码,搜索关键字“State”,我们可以发现jdk给出的线程状态(是个枚举)一共有6个。Java线程究竟有没有就绪和运行状态呢?答案是:可运行状态(Runnable)包括了就绪(Ready)和运行(Running)状态。更具体地说,Runnable是JVM给出的线程状态,而Ready和...

2019-09-30 15:20:27 141

原创 java 局部内部类

/** *  */package com.card;/** * 局部内部类 *  * by Zhiwang Zhang on 2014年7月18日 */public class Test98 { public static void main(String[] args) {  Test98 test = new Test98();  tes

2014-07-22 13:39:39 477

原创 java 匿名内部类

/** *  */package com.card;/** * 匿名内部类 *  * by Zhiwang Zhang on 2014年7月18日 */public class Test100 { public static void main(String[] args) {  Test100 test = new Test100();  

2014-07-22 13:39:32 445

原创 java 静态内部类

/** *  */package com.card;/** * 静态内部类 *  * by Zhiwang Zhang on 2014年7月18日 */public class Test97 { private int age; public static void main(String[] args) {  // 1、静态内部类可以(在外

2014-07-22 13:39:07 558

原创 java 通过外部类的实例创建内部类的实例

package com.card;/** * 通过外部类的实例创建内部类的实例 *  * by Zhiwang Zhang on 2014年7月18日 */public class Test96 { public static void main(String[] args) {  Test96 test = new Test96();  // 通过外部

2014-07-22 13:37:58 834 1

原创 java 局部内部类的一般用途是实现某个接口,并作为这个接口传出方法被使用

/** *  */package com.card;/** * 局部内部类的一般用途是实现某个接口,并作为这个接口传出方法被使用 *  * by Zhiwang Zhang on 2014年7月18日 */public class Test99 { public static void main(String[] args) {  Tes

2014-07-22 13:37:48 629

原创 java 内部类和外部类互相访问各自的私有成员

package com.card;/** * 内部类和外部类互相访问各自的私有成员 *  * @author Zhiwang *  */public class Test93 { private String name = "zzw"; public static void main(String[] args) {  Test93 test = n

2014-07-22 13:35:49 1146

原创 java 内部类如何访问外部类的同名属性

package com.card;/** * 内部类如何访问外部类的同名属性 *  * by Zhiwang Zhang on 2014年7月18日 */public class Test95 { private int age; public static void main(String[] args) {  Test95 test = new Te

2014-07-22 13:34:49 2019

原创 java 匿名内部类

package com.card;/** * 匿名内部类 *  * by Zhiwang Zhang on 2014年7月18日 */public class Test94 extends E { public static void main(String[] args) {  Test94 test = new Test94();  // 第1种方式

2014-07-22 13:33:55 347

原创 Java 内部类

package com.card;public class Test91 { public class InnerClass {  private String name;  public void setName(String name) {   this.name = name;  }  public String getName() {   retur

2014-07-22 13:31:23 380

原创 单例模式---登记式

/** *  */package cn.thcic;import java.util.HashMap;import java.util.Map;/** * 登记式单例模式 *  * by Zhiwang Zhang on 2014年7月18日 */public class Test103 { // 私有静态的“登记单” private s

2014-07-22 13:29:44 630

原创 单例模式---饿汉式(类初始化的时候实例化)

/** *  */package cn.thcic;/** * 饿汉式(类初始化的时候实例化)单例模式 *  * by Zhiwang Zhang on 2014年7月18日 */public class Test102 { // 私有的静态的本类常量 private static final Test102 INSTANCE = new Tes

2014-07-22 13:27:47 1443

原创 单例模式---懒汉式(用的时候去实例化)

package cn.thcic;/** * 懒汉式(用的时候去实例化)单例模式 *  * by Zhiwang Zhang on 2014年7月18日 */public class Test101 { // 私有的静态的本类属性 private static Test101 test101; // 私有无参构造方法 private Test101(

2014-07-22 13:24:08 510

原创 java反射---getDeclaredFields()与getFields()的区别

/** *  */package cn.thcic;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.Method;/** * java反射 *  *  *  * by Zhiwang Zhang on 20

2014-07-22 13:23:08 1002

原创 java反射---综合

/** *  */package cn.thcic;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;imp

2014-07-22 13:19:54 403

原创 java反射---获取类的方法

/** *  */package cn.thcic;import java.lang.reflect.Method;/** * java反射---获取类的方法 *  *  *  * by Zhiwang Zhang on 2014年7月21日 */public class Test109 { public static void main

2014-07-22 13:18:44 490

原创 java反射---获取类的成员变量

/** *  */package cn.thcic;import java.lang.reflect.Constructor;import java.lang.reflect.Field;/** * java反射---获取类的成员变量 *  * Field类封装反射得到的成员变量 *  * by Zhiwang Zhang on 2014年7月2

2014-07-22 13:15:01 626

原创 java反射---获取类的构造方法

/** *  */package cn.thcic;import java.lang.reflect.Constructor;/** * java反射---获取类的构造方法 *  * Constructor类,用于封装反射得到的类的构造器 *  * by Zhiwang Zhang on 2014年7月21日 */public class T

2014-07-22 13:14:18 542

原创 java反射---获取类型信息

直接看代码:

2014-07-22 13:11:48 465

空空如也

空空如也

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

TA关注的人

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