自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 注解原理剖析与实战

Java注解及其应用

2023-02-25 22:14:00 822

原创 Java集合深入解析(一)——集合的基本概念

Java集合框架、Java基础

2022-06-14 18:49:19 1473

原创 UML建模与软件开发设计(七)——时序图设计

UML建模与软件开发设计、类图、时序图等

2022-06-11 00:12:03 11782 1

原创 UML建模与软件开发设计(六)——类图设计与类之间的关系

UML建模,开发设计,类图,时序图

2022-06-07 18:30:23 2381

原创 UML建模与软件开发设计(五)——类图设计的基本概念

UML建模、开发设计、类图、时序图

2022-06-07 17:52:44 3335

原创 UML建模与软件开发设计(四)——包图设计

UML建模与开发设计思想、包图、类图、时序图

2022-06-01 16:56:10 4003

原创 UML建模与软件开发设计(三)——UML常用开发工具

UML建模与开发设计思想、包图、类图、时序图

2022-06-01 13:43:52 19137

原创 UML建模与软件开发设计(二)——UML概述

UML建模与开发设计思想、包图、类图、时序图等

2022-06-01 11:53:11 1853

原创 UML建模与软件开发设计(一)——软件开发设计概述

UML建模与开发设计思想、包图、类图与时序图等

2022-06-01 11:41:15 562

原创 【深刻理解Java的序列化和反序列化】

序列化和反序列化

2022-02-20 23:57:19 470

原创 学会使用debug模式调试代码

在企业开发中,质量和效率显得尤为重要。学会通过debug模式调试代码是每一个开发的必修课。下面我通过一个案例来描述一下如何来调试、跟踪代码。步骤:在接口或方法的入口打上调试端点,如下所示。通过“debug as”运行代码,进入debug代码调试模式。下面介绍几个重要的调试技巧:step into(F5),进入函数内部调试、step over(F6),在当前函数步进调试、step retur...

2019-05-15 03:33:33 9024

原创 #数据结构--基于双端链表实现双端队列

4.8.3.5 源码package com.yzh.maven.entity;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import com.yzh.maven.base.abstracts.MyQueueAbstract;import com.yzh.maven.base.da...

2019-05-04 19:29:43 558

原创 #数据结构--基于数组实现双端队列

4.8.4.6 源码package com.yzh.maven.entity;import java.util.ConcurrentModificationException;import java.util.EmptyStackException;import com.yzh.maven.base.abstracts.MyQueueAbstract;import com.yzh.ma...

2019-05-04 19:27:14 418

原创 #经典面试题--全组合问题

给定一个非重复数数列,求该数列的全组合。例如,{1,2,3}的全组合为{1},{2},{3},{1,2},{1,3},{2,3},{1,2,3}。这是一道非常经典的笔试题,可以通过递归来求解。这里我们可以利用上面已知的二进制方法来求解,我们可以将组合数中的每一个数标记为”1”,0表示未击中该组合数的任何数字,例如,110表示击中了该组合数的前两个数字,这样我们可以通过数组来取出这两个数字,从得到...

2019-05-04 19:24:47 377

原创 #栈--基于链表实现栈

3.4.2.2 基于本地创建的链表实现栈package com.yzh.maven.entity;import com.yzh.maven.base.dao.MyStackDao;public class MyLinkedStack<E> implements MyStackDao<E>{ private int size; private MyDobbleL...

2019-05-04 19:22:43 286

原创 #面试--单链表常见面试题汇总

2.7.4.3.8.1 找出单链表中的倒数第k个元素,实现该方法这是一道经典的笔试题,其实实现该方法十分简单。直接找倒数第k个元素似乎不太容易,要想找出倒数第k个元素,我们可以从第k个元素和倒数第k个元素的关系来获取倒数第k个元素。该关系如下所示。从上图可以看出来,倒数第k个节点的索引 = size – (k+1)。所以方法实现如下:/**@functionName reverseGe...

2019-05-04 18:57:22 714

原创 #Java源码分析--LinkedList容器之实现单链表(2)

2.7.4.2单链表add方法的实现2.7.4.2.1循环法但是,从上面链表添加元素的操作来看,一点也不觉得优雅,而且它将所有的节点数据信息全部暴露给外部了。在Java中,将数据信息暴露给外部已经违背它的设计特点—封装的完整性。那么,如何进行改进呢?实际上,我们可以这样考虑,由于第一个节点可以表示为头节点.getNext(),第二个节点可以表示为头节点.getNext().getNext(),...

2019-05-04 18:39:12 222

原创 #Java源码分析--LinkedList容器(1)

2.7.1 链表的概念链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,操作。2.7.2 链表的分类从链表的实现方式可以把链表分为单链表,循环链表,双向链表...

2019-05-04 18:25:42 137

原创 #架构师之性能优化篇--防止SQL注入攻击

要解决SQL注入攻击,首先必须要认识什么是SQL注入攻击。先来看一个例子:package com.yzh.maven.main;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.St...

2019-01-21 00:07:52 180

原创 #架构师之性能优化篇--应使用日志打印语句代替e.printStackTrace()

例try{ int i = 3/0;}catch(Exception e){ e.printStackTrace();}需要将其修改为日志打印异常的方式:private static final Logger logger = Logger.getLogger(TestA.class);try{ int i = 3/0;}catch(Exception e){ logger...

2019-01-21 00:06:24 4538

原创 #架构师之性能优化篇--不要在循环中使用try…catch…,应该把其放在最外层

除非需要在循环中进行特殊的捕获处理,否则禁止在循环内部使用try…catch…语句。正确的做法是在for循环外部进行异常捕获处理。

2019-01-21 00:05:05 3707 1

原创 #架构师之性能优化篇--不要在循环体内声明变量或对象

List&lt;Object&gt; myList = new ArrayList&lt;Object&gt;(); for(int k = 0;k&lt;10;k++){ //注意即使是将str提到循环外声明拼接字符串还是会创建多个StringBuilder对象 String str = k+""; A a = new A(); a.set(s...

2019-01-21 00:02:26 1039 1

原创 #架构师之性能优化篇--ArrayList遍历最优化探究

你已经知道遍历ArrayList的方式有三种,分别是get(i)/size()、增强型for(forEach)和使用迭代器。那么这三种方式效率最高的是哪一种方式呢?List&lt;String&gt; list = new ArrayList&lt;String&gt;();List&lt;String&gt; list2 = new ArrayList&lt;String&gt;();Li...

2019-01-20 23:55:26 368

原创 #架构师之性能优化篇--String与StringBuffer的拼接

4 String与StringBuffer的拼接例 对下面的代码进行优化String str = &quot;&quot;;for(int i = 0;i&amp;lt;10;i++){str +=&quot;&quot;+i;}说明:在java中,String的+拼接方式不适合使用在大量的拼接场合中。那么这是为什么呢?换句话说,+拼接符在拼接字符串的时候都做了什么呢?我们可以使用Java反编译工具来查看+拼接符到底做了些什么。首...

2019-01-20 23:51:40 443

原创 #架构师之性能优化篇--两个Integer类型比较大小

由于Integer是引用类型,因此比较大小使用equals方法,但是Integer与int类型比较时,会转化为int类型进行比较。对于-128-127之间的数据,可以使用==进行比较两个Integer类型数据的大小(因为此时使用的是缓存数据,数据的内存地址都是使用的缓存数据的内存地址),但是以外的数据需要使用equals()进行数据大小比较。...

2019-01-20 23:48:19 496

原创 #架构师之性能优化篇--遍历map最优方法entrySet的迭代方式

假设创建了如下的map:Map&lt;String,String&gt; map = new HashMap&lt;String,String&gt;();for(int i = 1001;i&lt;149511;i++){ map.put(i+"",i+"");}遍历map有五种遍历方式,如下所示:2.1 通过增强型for遍历keySetlong start1 = System....

2019-01-20 23:45:18 687 1

原创 #架构师之性能优化篇--使用包装类的parseXXX()代替valuesOf()

valuesOf和parseXXX都是包装类的静态方法,都可以将字符串类型的数字转化为整型数据,但略有不同,我们来看下面这一段代码:String numStr1 = "127";String numStr2 = "127";System.out.println(Integer.valueOf(numStr1) == Integer.valueOf(numStr2));System.out....

2019-01-19 11:25:52 839

转载 #Eclipse中使用javap命令打出字节码虚指令(转)

1、Eclipse中Run-&gt;External Tools-&gt;External Tools Configurations,打开看到如下界面:2、右键点击Program-&gt;new,然后出现界面:3、然后配置Location、Working Directory、Arguments:Location:C:\Program Files\Java\jdk1.7.0_80\bin...

2019-01-18 02:31:24 203

原创 #Java算法设计与分析1--递归算法

1.递归算法1.1递归的概念所谓递归,就是程序方法在运行过程中自身调用自身。定义如下所示。fn(){ if(递归出口条件){ return x;}else{ //some codes…return fn();}}1.2递归的使用条件1.2.1 必须要有明确的递归出口所谓递归出口就是需要有明确的结束条件。1.2.2 每次递归都要使问题的规模减小1.2.3 递归的规模...

2019-01-09 07:33:03 474

原创 #源码分析篇--Java集合操作(9)重写顺序表的toString()方法

2.6.12 重写顺序表的toString()方法默认情况下,普通类都是继承了Object超类的toString(),这个方法如下所示:public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode());}在打印某个对象时,其实是省略了toString(),因...

2019-01-02 02:19:00 606

原创 # 源码分析篇--Java集合操作(8)根据源码设计一个顺序表

2.6.6 get(int index)方法我们知道,顺序表中的get方法通过元素的索引获取底层数组的元素。我们可以把该方法理解为顺序表的查询操作,该方法返回元素范型类型,源代码如下所示:public E get(int index) { //范围检查rangeCheck(index);return elementData(index);}rangeCheck(index);方法...

2019-01-02 02:12:33 165

原创 #数据结构--用Java实现一个顺序表

一个顺序表应该具有基本的增删改查功能,它最显著的特点是能够自动扩容,底层是基于数组实现的,下面我们来自己实现一个包含基本功能的顺序表。定义MyList接口,该接口声明了顺序表功能的基本方法:package com.yzh.maven.main;public interface MyList&lt;E&gt; { /*** * @functionName:add * @descrip...

2019-01-02 02:01:29 479

原创 源码分析篇--Java集合操作(7)自己实现一个add()方法

2.6.5 自己实现一个add()方法分析:add()方法涉及到扩容,扩容需要size(顺序表大小)、顺序表底层支持数组、默认容量大小以及默认的控元素数组四个必要属性,代码实现如下所示。package com.yzh.maven.main;/** * @className MyArrayList&lt;E&gt; * @description 创建一个顺序表 * @author yz...

2018-12-31 13:41:32 748 3

原创 源码分析篇--Java集合操作(6)顺序表的扩容原理

2.6.4 顺序表的扩容原理之add()方法的实现原理add()方法用于将元素动态添加到ArrayList容器中。将数据保存在list后,我们可以通过该list进行CRUD操作。我们知道,list(列表)的底层是由数组设计的,因此,数组具备了哪些优缺点,list就具备了哪些优缺点。我们知道,链表与数组是两种不同的数据结构,数据结构可以分为线性结构和非线性结构,在线性结构中,存储方式又分为连续存...

2018-12-31 13:35:18 521

原创 源码分析篇--Java集合操作(5)

2.6 ArrayList容器ArrayList类实现了List接口,它继承自AbstractList抽象类,继承机构如下所示:public class ArrayList&lt;E&gt; extends AbstractList&lt;E&gt; implements List&lt;E&gt;, RandomAccess, Cloneable, java.io.Seri...

2018-12-31 13:23:37 141

原创 源码分析篇--Java集合操作(4)

2、List的实现类List是一个接口,继承自Collection接口,包为java.util.*,由于继承的特性,因此,List接口具有了Collection接口的全部方法。但是,List本身又重新定义了这些方法:int size();boolean isEmpty();boolean contains(Object o);Iterator iterator();Object[] t...

2018-12-31 12:57:11 119 1

原创 源码分析篇--Java集合操作(3)

二、Collection接口Collection是一个集合顶层接口,位于java.util包下,继承了Iterable接口, public interface Collection extends Iterable { Iterable接口只有一个iterator()方法,如下所示。public interface Iterable&lt;T&gt; { /** * Ret...

2018-12-31 12:35:14 129

原创 源码分析篇--Java集合操作(2)

4、两大集合接口在Java集合中,有两大集合,一个是Collection接口及其实现类,另一个是Map接口及其实现类。下面给出这两种集合的框架图。如下所示。4.1Collection接口框架图4.2Map接口框架图从上面两个框架图可以看出,Cllection接口和Map接口是两大顶层接口。二者最为显著的区别是:Cllection接口的实现类及其子类的元素都是单一的,不可分割的元素,而M...

2018-12-31 12:27:40 147

原创 源码分析篇--Java集合操作(1)

一、集合框架1、集合框架体系图2、集合的概念 Java集合是使程序能够存储和操纵元素不固定的一组数据。 所有Java集合类都位于java.uti包中。与Java数组不同,Java集合中不能存放基本数据类型,只能存放对象的引用。但是在JDK5.0以后的版本当中,JAVA增加了“自动装箱”和“自动拆箱”的机制,比如如果要存入一个INT类型的数据,JVM会把数据包装成Integer然后再存入集合...

2018-12-31 12:16:12 162

原创 #Postman--接口测试工具Postman的使用

一、什么是Postman?Postman是google开发的一款功能强大的网页调试与发送网页HTTP请求,并能运行测试用例的的Chrome插件。其主要功能包括:(1)模拟各种HTTP requests从常用的 GET、POST 到 RESTful 的 PUT 、 DELETE …等等。 甚至还可以发送文件、送出额外的 header。(2)Collection 功能(测试集合)Collec...

2018-12-18 00:11:27 417

空空如也

空空如也

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

TA关注的人

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