自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

半页童话

做一件事很容易,但长时间做同一件事却需要勇气和毅力。

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

转载 JAVA如何判断两个类是否相等?

两个类是否相等,取决于他们是否由统一个类加载器来加载。如果他们来自不同的类加载器,哪么就算这两个类来自同一Class文件,他们也是不相等的。哪么我们如何判断两个类是否来自于同一加载器呢?从各书籍和博客上可以了解到类加载有5个阶段:加载 验证 准备 解析 初始化加载阶段通过类的全限定名来获取定义此类的二进制字节流,并将字节流的静态存储结构转化为方法区的运行时数据结构。在堆中生成一个Class对...

2020-01-16 09:39:45 4562

转载 控制反转和依赖注入的理解(通俗易懂)

学习过Spring框架的人一定都会听过Spring的IoC(控制反转) 、DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC 、DI这两个概念是模糊不清的,是很难理解的,今天和大家分享网上的一些技术大牛们对Spring框架的IOC的理解以及谈谈我对Spring Ioc的理解。一、分享Iteye的开涛对Ioc的精彩讲解首先要分享的是Iteye的开涛这位技术牛人对Spring框...

2020-01-14 11:26:48 169

原创 一文把UML类图和时序图搞的明明白白

目录什么是UML?类图(Class Diagrams)继承关系实现关系组合关系聚合关系关联关系依赖关系类关系记忆技巧案例分析时序图时序图的作用时序图组成元素角色(Actor)对象(Object)对象的三种命名方式命名方式的选择对象的排列顺序生命线(Lifeline)控制焦点(Focus of Control)消息(Message)自关联消息组合片段1、抉择(Alt)2、选项(Opt)3、循环(Lo...

2020-01-13 10:25:51 531

原创 Java-SPI从入门到实战

Java–SPI机制SPI全称为Service Provider Interface,是JDK内置的一种服务提供发现机制。简单来说,它就是一种动态替换发现机制。例如:有个接口想在运行时才发现具体的实现类,那么你只需要在程序运行前添加一个实现即可,并把新加的实现描述给JDK即可。此外,在程序的运行过程中,也可以随时对该描述进行修改,完成具体实现的替换。Java提供了很多服务提供者接口(Servi...

2020-01-10 10:06:59 344

原创 Tomcat容器优化手记

配置优化减少web.xml/server.xml中标签如果没有使用jsp或者servlet可以删除servlet<servlet> <servlet-name>default</servlet-name> <servlet-class>org.apache.catalina.servlets.DefaultServlet&...

2020-01-06 21:09:52 238

原创 一步步教你手写迷你Tomcat

主体思路当我们的Web运行的时候,从浏览器发出的请求,必然首先到达tomcat中,之后由tomcat进行处理,由此要考虑tomcat要进行哪些处理,首先便是提供Socket服务,之后对于请求进行分发,把请求和产生的响应封装成request和response。提供Socket服务封装请求/响应对象将不同的请求映射到具体的Servlet处理HTTP协议HTTP协议就是字符串协议需要截取...

2020-01-05 22:14:06 277 1

原创 Spring面试题一网打尽

目录1.BeanFactory和FactoryBean的区别1.BeanFactory和FactoryBean的区别BeanFactoryBeanFactory是一个接口也是IOC最基本的容器,负责生产和管理bean,它为其他具体的IOC容器提供了最基本的规范,比如DefaultListableBeanFactory、XmlBeanFactory、ApplicationContext等具体的...

2020-01-05 13:19:59 154

原创 一步步教你计算java对象的大小

目录内存布局引入依赖测试案列排序规则一计算公式(M+C+I)%=0关闭指针压缩结论1结论2排序规则二计算公式(m+c+l)%8 !=0结论内存布局总计(byte):(m+c+f+p+l)%8=01、mark word->m2、class对象指针->c3、类字段->f4、补齐位->p5、如果是数组还有数组长度->l引入依赖 <dependency...

2020-01-02 16:28:16 628 1

原创 如何用代码验证对象头的存在

Java对象头的组成Java对象的对象头由 mark word 和 klass pointer 两部分组成,MarkWord:哈希码、GC分代年龄、锁状态标识、线程持有的锁、偏向的线程ID。类型指针:指向类元数据指针,方法区的Class模板。示例数据:实例数据部分就是成员变量的值,其中包括父类成员变量和本类成员变量。对齐填充:对齐填充并不是必然存在,也没有特别的含义,它仅仅起着占位符的...

2019-12-30 22:43:28 296

原创 解决SpringBoot+WebSocket生成War包部署到Tomcat(8)中报错

错误截图在网上查找了各种资料试了又试就是不行最后搜索了一下websocket和tomcat的冲突解决问题:让tomcat使用自己的websocket-api.jar包:

2019-12-27 17:29:16 887

原创 Spring-Bean的循环依赖的解决办法

0.测试代码用例其它环境配置参照:package circledenydependency;public class A { private B b; public B getB() { return b; } public void setB(B b) { this.b = b; }}package cir...

2019-12-24 16:42:43 299

原创 BeanFactory和FactoryBean的区别(详解)

目录BeanFactoryFactoryBeanFactoryBean的案例1.创建FactoryBean的实现类2.创建两个普通的Bean3.测试代码4.spring配置文件5.代码执行结果5.代码执行结果BeanFactoryBeanFactory是一个接口也是IOC最基本的容器,负责生产和管理bean,它为其他具体的IOC容器提供了最基本的规范,比如DefaultListableBean...

2019-12-24 11:25:05 818

原创 Spring项目基本的配置pom版

1.项目整体结构2.基本的pom文件<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="htt...

2019-12-24 10:47:44 1486

原创 SpringBoot面试题一网打尽

1.运行SpringBoot有哪几种方式?1.打包用命令或者放到容器中运行2.用 Maven/ Gradle 插件运行3.直接执行 main 方法运行

2019-12-23 09:46:09 911

原创 Spring Boot的三种启动方式详解

一、通过运行Application这个类的main方法二、应用的根目录下运行mvn spring-boot:run

2019-12-22 21:15:29 519

原创 23种设计模式之代理模式(三种)

代理模式的应用场景在生活中,我们经常见到这样的场景,如:租房中介、售票黄牛、婚介、经纪人、快递、事务代理、非侵入式日志监听等,这些都是代理模式的实际体现。代理模式(ProxyPattern)的定义也非常简单,是指为其他对象提供一种代理,以控制对这个对象的访问。代理对象在客服端和目标对象之间起到中介作用,代理模式属于结构型设计模式。使用代理模式主要有两个目的:一保护目标对象,二增强目标对象。案例...

2019-12-18 11:39:06 260

原创 分布式CAP和BASE理论

目录CAP理论1、一致性2、可用性分区容错性BASE理论1、基本可用2、软状态3.最终一致性CAP理论一个经典的分布式系统理论。CAP理论告诉我们:一个分布式系统不可能同时满足一致性(C:Consistency)、可用性(A:Availability)和分区容错性(P:Partition tolerance)这三个基本需求,最多只能同时满足其中两项。在分布式环境下,一致性是指数据在多个副本之...

2019-12-17 22:55:00 135

原创 原码、反码、补码详解(彻底搞明白)

目录一.机器数和真值1.机器数2.真值二.原码, 反码, 补码的基础概念和计算方法1.原码2.反码3.补码三.为何要使用原码, 反码和补码四 原码, 反码, 补码 再深入同余的概念负数取摸开始证明一.机器数和真值在学习原码,反码和补码之前,需要先了解机器数和真值的概念.1.机器数一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, ...

2019-12-17 22:00:51 257

原创 javac编译.java文件过程

目录词法分析语法分析语义分析中间代码生成前端编译主要指与源语言有关但与目标机无关的部分,包括词法分析、语法分析、语义分析与中间代码生成。我们所熟知的javac的编译就是前端编译。除了这种以外,我们使用的很多IDE,如eclipse,idea等,都内置了前端编译器。主要功能就是把.java代码转换成.class代码。词法分析词法分析阶段是编译过程的第一个阶段。这个阶段的任务是从左到右一个字符...

2019-12-16 21:08:00 358

原创 类加载ClassLoader和双亲委派机制

类加载器的发生时间是在类加载过程的加载阶段发生的。类加载器1.Bootstrap Class Loader会加载rt.jar下面的C++代码(启动类加载器)2.Extension Class Loader会加载ext/*.jar下面的代码(扩展类加载器)3.System Class Loader会加载用户自定义的代码(应用程序类加载器)用程序打印类加载器package all;p...

2019-12-15 21:02:00 152

原创 类加载过程

类加载的整个生命周期包括了:加载、验证、准备、解析、初始化、使用和卸载七个阶段。其中验证、准备和解析三个部分统称为连接。加载1.根据类的全限定名获取类的二进制字节流2.二进制字节流代表的静态结构转化为方法区运行时的数据结构3.内存创建Class对象,作为方法区这个类的各种访问入口连接验证验证Class文件是否符合虚拟机的规范,保证被加载类的正确性文件格式验证元数据验证字节码...

2019-12-15 18:50:31 131

原创 类文件结构详解

@[类文件结构class文件是一种8位字节的二进制流文件,class文件中的信息是一项一项排列的, 每项数据都有它的固定长度,其中u1、u2、u4、u8分别代表1个字节、2个字节、4个字节和8个字节的无符号数,无符号数可以用来描述数字、索引引用、数量值,或者按照UTF-8编码构成字符串值。ClassFile { u4 magic; // 魔法数字,表明当前文件是.class文件,...

2019-12-15 14:21:13 168

原创 字节码指令表(查找使用)

字节码助记符指令含义0x00nop什么都不做0x01aconst_null将null推送至栈顶0x02iconst_m1将int型-1推送至栈顶0x03iconst_0将int型0推送至栈顶0x04iconst_1将int型1推送至栈顶0x05iconst_2将int型2推送至栈顶0x06iconst_3将int...

2019-12-14 21:09:04 254

原创 原生Mybatis(查询)源码解析(二)

上一篇: 原生Mybatis(查询)源码解析(一)目录SqlSession会话创建过程1.创建Transaction(两种方式)2.创建Executor获得Mapper对象执行SQL调用invoke代理方法调用execute方法调用selectOne其实是selectListmappedStatements对象如图MappedStatement对象如图执行query方法1.创建CacheKe...

2019-12-13 10:28:30 221

原创 原生Mybatis(查询)源码解析(一)

大家应该都知道Mybatis源码也是对Jbdc的再一次封装,不管怎么进行包装,还是会有获取链接、preparedStatement、封装参数、执行这些步骤的。# 配置解析过程String resource = "mybatis-config.xml";//1.读取resources下面的mybatis-config.xml文件InputStream inputStream = Resour...

2019-12-12 08:59:20 272

原创 Mybatis源码单例模式详解

定义单例模式(Singleton Pattern)是指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点。1. 获取ErrorContext实例ErrorContext是用在每个线程范围内的单例,用于记录该线程的执行环境错误信息。代码片段public class ErrorContext { private static final String LINE_SEPARAT...

2019-12-11 12:00:57 706

原创 23种设计模式之责任链模式

定义责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。使用场景1、有多个对象可以处理同一个请求,具体哪个对象处理...

2019-12-11 08:44:13 95

原创 Mybatis的《一对一》《多对一》《多对多》详解(三)

文章目录总结association(一对一)实现方式代码实现第一种方式配置第二种方式配置测试一对一代码测试一对一结果collection(一对多、多对一)代码实现1.创建客户表和订单表2.创建Customer.java一对多配置3.创建Order.java多对一配置4.创建CustomerMapper.java类5.创建OrderMapper.java类6.配置一对多CustomerMapper....

2019-12-10 09:53:26 190

转载 Netty中ChannelInboundHandlerAdapter的生命周期

方法目录1.channelUnregistered2.channelWritabilityChanged3.userEventTriggered4.handlerAdded5.handlerRemoved6.channelRegistered7.channelActive8.channelRead9.channelReadComplete10.channelInactive1...

2019-12-09 15:02:55 3311 1

原创 Mybatis核心对象生命周期和一级标签(二)

Mybatis案例核心代码1.mybatis-config.xml代码<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybati...

2019-12-08 10:33:45 151

原创 Java Jdbc知识回顾(一)

主要方面创建jdbc步骤加载驱动Class.forname()获得连接Connection获得Statement(PreparedStatement)对象,执行SQL语句返回ResultSet结果,封装实体对象关闭结果Statement和PreparedStatement区别PreparedStatement可以防止参数注入,Statement不能防止PreparedSta...

2019-12-07 10:43:18 107

原创 java使用线程池和TCP实现简单多轮聊天系统

最近在做物联网项目,需要使用TCP和传感器进行双向交互,通过这种渠道,找到了下面的代码,写成博客主要也是为了记录一下,以后用到随时可以看。代码实现服务端package com.tcp;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.In...

2019-12-06 09:36:11 383

原创 java使用反射动态的获取接口的所有实现类并实例化(非抽象类)

实现的功能的业务是这样的,动态的获取java接口的所有的实现类并且排除抽象类和接口本身。代码实现1.创建接口Animalpackage com.tcp.executor;public interface Animal { public void say();}2.创建抽象类实现Animalpackage com.tcp.executor;public abstract...

2019-12-05 17:28:11 10319 5

原创 设计模式简介

设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式的类型设计模式总共有 23 种设计模式。这些模式可以分为三大类:创建型模式(Creational Patterns)、结构型模式(Structural Patterns)、行为型模式(Behavioral Patterns)创建型模式这些...

2019-12-05 11:15:26 62

原创 23种设计模式之外观模式

外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供一个客户端可以访问的接口。这种类型的设计模式属于结构性模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。示意图外观模式和微服务的网关思想上一样外观模式是聚合子系统,隐藏实现细节,给客户提供单一的接入服务暴露端口代码实现第一步:创建一个接口:package facade;public interfac...

2019-12-03 12:28:12 120

原创 Tomcat日志输出乱码的解决方案

1.打开tomcat下面的conf文件夹找到logging.properties如下图:2.打开logging.properties找到:找到 java.util.logging.ConsoleHandler.encoding = utf-8替换成 java.util.logging.ConsoleHandler.encoding = GBK3.本机测试结果...

2019-12-02 09:21:41 716 1

原创 非23种设计模式之委派模式

定义委派模式(Delegate Pattern)的基本作用就是负责任务的调用和分配任务,跟代理模式很像,可以看做是一种特殊情况下的静态代理的全权代理,但是代理模式注重过程,而委派模式注重结果。委派模式在 Spring 中应用非常多,大家常用的 DispatcherServlet 其实就是用到了委派模式。现实生活中也常有委派的场景发生,例如:老板(Boss)给项目经理(Leader)下达任务,项目...

2019-11-30 10:13:39 122

原创 分布式架构的演进过程

架构的本质一个软件系统随着功能越来越多,调用量急剧增长,整个系统逐渐碎片化,越来越无序,最终无法维护和扩展.所以系统在一段时间的野蛮生长后,也需要及时干预,避免越来越无序。架构的本质就是对系统进行有序化重构,使系统不断进化那架构是如何实现无序到有序的呢?基本的手段就是分和合,先把系统打散,然后重新组合。分的过程是把系统拆分为各个子系统 / 模块 / 组件,拆的时候,首先要解决每个组件的定位...

2019-11-29 09:03:32 163

原创 Mysql历史版本下载

下载地址

2019-11-28 10:07:29 127

转载 【转】一个字节可以用多少位的十六进制表示

1、一个字节 = 8位(8个二进制位) 1Byte = 8bit;2、一个十六进制 = 4个二进制位3、一个字节 = 2个十六进制

2019-11-27 20:46:28 2390

空空如也

空空如也

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

TA关注的人

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