
Java
湛蓝蜗牛
stay hungry,stay foolish
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
类之间的关系
这里写自定义目录标题关联成分符号分类代码实例:聚集成分符号分类代码实例泛化成分符号分类代码实例依赖和精化成分符号分类代码实例关联成分1. 关联方向(可选):用黑三角标注2. 关联名(可选)3. 重数(可选,未注明默认为1):※或数字等标示4. 关联角色:类名5. 限定词(可选):属性名 在关联关系末端设置小方框调价限定词可以将普通关联变为限定关联, 从而将一对多或多对多的关系简化为一对一或多对一。 限定词一般选取的是能够唯一确定一个实例对象的属性, 或者说是主键。在类图中放置的位置一般原创 2021-09-03 20:48:29 · 1057 阅读 · 0 评论 -
状态模式理解
package mode.State;public abstract class State { protected int x ; public abstract State setX(int x); public abstract String status(); public State(int x) { super(); this.x = x; } }package mode.State;class StateOK extends State {原创 2021-09-01 22:01:26 · 264 阅读 · 0 评论 -
策略模式理解
个人感觉跟桥模式的实现特别类似,或者说他就是桥模式的一部分。就是通过创建不同的接口实现类对象来选择具体调用哪一种接口方法的实现。直接上代码吧:package mode.Strategy;public class Client { private Sort sort; public Client(Sort sort) { super(); this.sort = sort; } public void name() { sort.sort(); }原创 2021-09-01 21:44:57 · 242 阅读 · 0 评论 -
代理模式详解
关于代理模式,其最大的用途是通过客户类通过代理类简介调用委托类的方法实现,主要优点是能保证信息安全。比如数据库或日志访问等操作,我们就可以将所有申请访问数据的请求都交给代理类来处理。这样一来除了代理类其他任何类对象都没机会直接访问数据,极大保证了信息安全。另外一点是可以在符合开闭原则的前提下对目标对象进行功能扩展,就是可以通过代理类添加一些附加功能(非主业务),比如清理缓存、打印日志等。这一点跟装饰模式有点类似(当然本质上是不一样的)但是缺陷在于每个代理类只能针对一项服务,如果有多个服务都需要通过中介调用原创 2021-09-01 20:21:32 · 174 阅读 · 0 评论 -
装饰模式详解
对于装饰模式而言,核心就是装饰类Decorator,假设接口为impl,提供一个原始抽象方法operation,其实现类为Con,提供operation的原始实现,最初的调用应该是创建一个Con的对象直接调用Con的方法。现在想在原始实现方法基础上新增功能,那么就可以借助Decorator实现。public class Decorator implements Component {// 关联原抽象业务 private Component component; public Decorato原创 2021-08-31 22:06:40 · 156 阅读 · 0 评论 -
运行web项目提示异常:non-compatible bean definition of same name and class【com.xxx.xxx.XXX】
情景描述:报错提示non-compatible bean definition of same name and class【com.xxx.xxx.XXX】但在代码中并未发现指定的bean有冲突原因一:之前创建了一个接口的实现类,然后后面挪了个位置,但是重新打包的时候,并没有进行clean一下,导致打出来的war里面的class存在了两个。原因二:本身框架中已封装好该指定的实体类,因此另外进行声明会造成冲突,但是直接查询却又查不到该实体类解决一:maven clean一下, project cle原创 2021-03-17 17:05:01 · 6165 阅读 · 0 评论 -
Serializable 序列化相关概念和应用场景
Serializable 序列化:将对象状态转换为可保持或传输的格式的过程。————与之相对的是反序列化:将流转换为对象的过程序列化和反序列化的主要目的是进行存储和传输数据序列化:对象——>字节序列反序列化:字节序列——>对象以上主要是用在下列场景中:1、针对需要对数据进行网络传输的场景2、针对需要将对象的状态信息进行持久化保存的场景...原创 2020-12-15 14:14:39 · 428 阅读 · 0 评论 -
浅谈try-catch——为什么要用try-catch&什么时候用try-catch?
本文主要内容如题所述,下面给出解答:首先第一个问题,我们为什么要使用try-catch捕获异常?我们都知道当程序中出现诸如数值越界之类的异常是,系统会自动抛出特定异常,不加处理的话此时的异常是一堆程序员看着都头疼的错误日志,而如果说前端直接将异常信息打印给客户端,用户看到后必然更加头疼。这时就需要我们后端对这些容易出现的异常进行补货并处理,另其返回到终端的数据能狗尽可能直观一目了然。这样一来,如果是用户输入或操作的问题,也能及时察觉并进行修正。另外在日常调试中,使用trycatch也能帮助我们快速定位b原创 2020-12-14 15:50:21 · 5174 阅读 · 0 评论 -
记录一个项目交接时遇到的问题:‘tomcatEmbeddedServletContainerFactory’的bean无法创建
这个问题是我在交接一个使用springboot框架开发的maven项目时遇到的,具体发生时间是一切一切外部资源(仓库、jdk)配置妥当后运行时出现的。具体报错信息如下: . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) '原创 2020-11-13 14:53:30 · 1865 阅读 · 0 评论 -
一个容易忽略的数组问题——数组的length该怎么求
写这篇文章,主要是想提醒自己一下,在Java和C语言、C++中的数组长度求法是不一样的。希望诸位如果和我一样遇到三种其中两种语言时不要混淆了。首先,在Java中要求一个数组的长度是可以直接用length属性来获取的int []A = {1,2,3}; int len = A.length;在Java中这种方式就可以直接获取到数组的长度。值得注意的是,在Java中还有一个length()方法。这个方法是针对字符串而言的,只能用来求字符串长度。此外还有一个size()方法,是用来求泛型集合元素个数的。C+原创 2020-09-27 15:32:58 · 2812 阅读 · 1 评论 -
Java对象的对象头到底是什么?
一:对象头HotSpot虚拟机中,对象在内存中存储的布局可以分为三块区域:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。HotSpot虚拟机的对象头(Object Header)包括两部分信息,第一部分用于存储对象自身的运行时数据, 如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等等,这部分数据的长度在32位和64位的虚拟机(暂 不考虑开启压缩指针的场景)中分别为32个和64个Bits,官方称它为“Ma..原创 2020-08-25 15:46:26 · 5265 阅读 · 1 评论 -
pom.xml文件标签详解
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/maven-v4_0_0.xsd"> <!--父项目的坐标。如果项目中没有规定某个元素的值,那么原创 2020-08-12 16:50:05 · 256 阅读 · 0 评论 -
泛型详解(未完待续)
什么是泛型?原创 2020-07-16 18:09:49 · 589 阅读 · 0 评论 -
mybatis中的重要标签及属性
/*1. <properties> <property name="" value="" /></properties>标签的使用可以在标签内部配置连接数据库的信息。也可以通过外部属性引用外部配置文件信息2.使用<typeAliases><!--typeAlias用于配置别名。type属性指定的是实体类全限类名。 alias属性指定别名。当指定了别名就不区分大小写 --><typeAlias type="com.ithe原创 2020-07-07 14:56:54 · 293 阅读 · 0 评论 -
深入剖析Java的反射机制
一、反射机制的具体概念表述:关于反射:在计算机领域,反射指的是一种能够自我描述以及自我控制的应用。引用维基百科的解释:在计算机学中,反射(英语:reflection)是指计算机程序在运行时(runtime)可以访问、检测和修改它本身状态或行为的一种能力。用比喻来说,反射就是程序在运行的时候能够“观察”并且修改自己的行为。要注意术语“反射”和“内省”(type introspection)的关系。内省(或称“自省”)机制仅指程序在运行时对自身信息(称为元数据)的检测;反射机制不仅包括要能在运行时对程原创 2020-06-22 16:15:32 · 229 阅读 · 0 评论 -
记一次奇怪的bug——误导入com.sun.org.apache.xpath.internal.operations.String 引起的
应该能明显看到二者有一定区别,实际情况中的具体体现是,引入String类之后,main方法无法启动编译。运行时会报告如下错误提示:错误: 在类 com.jyk.App 中找不到 main 方法, 请将 main 方法定义为:public static void main(String[] args)否则 JavaFX 应用程序类必须扩展javafx.application.Application造成bug的原因:java.lang.String是系统默认导入的,com.sun.org.ap..原创 2020-06-17 15:13:15 · 858 阅读 · 0 评论 -
【转】关于Java学习的一些tips
原文链接:https://zhuanlan.zhihu.com/p/27738868前言如何学习我到现在也只有个大致的思路,写出来,做个分享,也为自己接下去一年的学习设个目标。上面说的这些技术,虽说我自己学得也不精;但大体都有所了解。虽然感觉略懂无用,但有一点是很重要的,那就是对整个系统的架构能有所了解。能知道所谓分布式系统的大致实现思路,不至于别人说用个Dubbo、Zookeeper,自己却一无所知,不知道这两货是干啥的。还有最重要的一点,那就是,学这些技术,大多数人的第一步都是先百...原创 2020-06-03 17:49:47 · 186 阅读 · 0 评论 -
关于实现java后端上传图片接口(微信二维码)的一些记录
@Override public ReturnMsg uploadQRCode(WxQRCodeRes wxQRCodeRes) { Return msg = new Return(); RmsUserextension rmsUserextension = new RmsUserextension(); if (wxQRCodeRes.getQrcodeBase() == null) { // 图像数据为空 retur..原创 2020-05-27 10:22:37 · 636 阅读 · 0 评论 -
关于.do过滤和.controller过滤的区别辨析
首先明确一点,.do和.controller分别是对后缀为do和controller的类的过滤设置。具体来讲,.controller一般是用来过滤登录的,因为在过滤登录时过滤器会检测请求中是否包含token,因为token是存在session里的,如果有token一般说明他是一个会话期间内的,...原创 2020-05-26 21:21:04 · 1071 阅读 · 0 评论 -
使用HttpClientUtil工具类调用第三方接口
先附上测试可用的HttpClientUtil工具类:package com.newtouch.product.transfer.utils;import java.io.IOException;import java.net.URI;import java.util.ArrayList;import java.util.List;import java.util.Map;import org.apache.http.NameValuePair;import org.apache.htt原创 2020-05-14 17:14:37 · 1523 阅读 · 0 评论 -
关于控制层映射测试时出现的404无法获取页面问题的一些原因及解决方案
测试时经常出现的页面访问不到的问题原因及解决思路报错大概是这样子:{“timestamp”: “2020-05-12T06:16:45.675+0000”,“status”: 404,“error”: “Not Found”,“message”: “No message available”,“path”: “/security/v1.0/deleteNum”}原因有这么几个:(以下都是在确保开发者能肯定存在这么个映射的基础上来讨论的)1、拼写错误,这个就不谈了,多检查几遍或者直接将映原创 2020-05-12 15:58:39 · 4172 阅读 · 1 评论 -
关于@Column注解和@JsonProperty注解的区分
关于@Column注解和@JsonProperty注解的区分@Column注解:声明该属性与数据库字段的映射关系比如:变量名为 createTime, 希望JPA自动对应到数据库的 create_time 字段,可以使用 @Column 注解。 @Column(name = "create_time") public Timestamp getCreateTime() ...原创 2020-05-08 14:10:51 · 981 阅读 · 0 评论 -
数组复制的几种方法
一、for循环二、使用system.arraycopy方法: System.arraycopy(src, srcPos, dest, destPos, length);可以选定复制原数组的部分内容,但新数组需要先声明并初始化;另外这种方法可以用来实现原数组的扩容,即将原数组的内容拷进去,但是比较麻烦三、Arrays.copyOf方法:Arrays.copyOf(original, n...原创 2020-01-09 14:26:51 · 3641 阅读 · 0 评论 -
java 语言中三种输出的区别:
java 语言中三种输出的区别:1、print:就是一般的标准输出,但是不换行,将他的参数显示在命令窗口,并将光标定位在所显示的最后一个字符之后2、println:标准输出,但是换行,将他的参数显示在命令窗口,并在结尾加上换行符,将光标定位在下一行的开始3、printf:格式化输出,不换行(继承自C语言的一些特性)举个例子:(对于换不换行这个特性采用循环可以体现的更清楚)impo...原创 2019-01-05 15:09:51 · 1955 阅读 · 0 评论 -
Java语言中的输入方法
主要是两种:1.输入一个数值、字符、字符串:先导入jar包import java.util.Scanner;在调用Scanner类,创建Scanner对象 System input=new Scanner(System.in);然后看接受的是什么数据类型,决定调用什么方法String型:String name=input.next();int型:int year=input....原创 2019-01-05 13:06:37 · 1382 阅读 · 0 评论 -
equals方法与“==”区分整合
equals 方法是 java.lang.Object 类的方法。有两种用法说明:(1)对于字符串变量来说,使用“==”和“equals()”方法比较字符串时,其比较方法不同。“==”比较两个变量本身的值,即两个对象在内存中的首地址。“equals()”比较字符串中所包含的内容是否相同。比如:String s1,s2,s3 = "abc", s4原创 2020-10-26 15:27:26 · 180 阅读 · 0 评论