![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 53
不曾听说
一切伟大的行动和思想,都有一个微不足道的开始。
展开
-
[设计模式]Adapter设计模式
简介《设计模式》一书对于Adapter设计模式的意图的描述:将一个类的接口转换成客户需要的另外一个接口。Adapter模式使原本由于接口不兼容而不能一起工作的类可以一起工作。问题描述客户要求实现圆,为此需要创建一个从Shape类中派生的Circle类,需要为其编写display、fill和undisplay方法。此时有软件工程师已经编写了一个处理圆形的类,名为XXCircle,但他的方法命名与设计不符。不能直接使用XXCircle,因为需要保持Shape类的多态行为,主要原因为:名称和原创 2021-10-14 10:53:40 · 246 阅读 · 0 评论 -
[设计模式] Facade设计模式
中文音译为外观设计模式。其实我们在开发中经常会使用到这种设计模式。比如我们项目中需要使用到一个中间件Elasticsearch,领导会让所有人都去学习如何使用它提供的复杂API,还是只需要让其中一个人学习并封装我们用得到的API呢?简介《设计模式》一书对于Facade模式的意图是这样描述的:为子系统中的一组接口提供一个统计接口。Facade模式定义了一个更高层的接口,使子系统更加容易使用。大多数工作依旧需要由子系统完成,但Facade模式提供了一组更容易理解的方法,这些方法使用底层系统来实.原创 2021-10-13 10:22:08 · 389 阅读 · 0 评论 -
[Java]代理
文章目录代理静态代理动态代理JDK动态代理Cglib动态代理代理Java中有一个经典的设计模式叫做代理模式(Proxy),在我们平时开发和框架源码中无处不在。这里可以看到,代理模式并没有改变对象A,而是换了一种方式访问对象A的方法,通过代理对象ProxyA来访问对象A,这样做的好处是——在A的基础上拓展,实现它的额外附加功能。静态代理创建一个接口ICar,里面有一个run方法,然后定义宝马的实现类来实现它:public interface ICar { void run();}原创 2021-09-17 21:46:10 · 108 阅读 · 0 评论 -
[JDK8]Optional和空指针不得不说的故事
java发展至今,从大学时期jdk1.6发展到如今jdk11,新的特性层出不穷,它们或是解决bug,比如Hashmap导致的DOS;或是性能优化,比如垃圾回收机制的改造;或是解决某些痛点,例如本文将提到的JDK1.8增加的Optional类。关于空指针判断的历史这个应该都不是很陌生,以前对于null的判断,最开始我们可能是这么判断:String s = "Hello World";if (s == null) { System.out.println("字符串为空!");} else { .原创 2021-08-19 14:28:44 · 94 阅读 · 0 评论 -
[Java]用servlet实现文件上传功能
由于我老婆这边需要用到文件上传,然后这任务不知道怎么就到了我头上。她的框架是比较老的struts2(说实话我一度连struts2都拼写不对。。。)文章目录背景介绍代码引入依赖tomcat依赖配置jar包依赖代码编写UploadServletindex.jspprint.jsp效果背景介绍从毕业以来最早接触的是SpringMVC,到后面用的是SpringBoot,struts2只出现在我大学课程里面毕竟这么重的框架又都是漏洞早就已经被踢出历史洪流。让我去回顾struts2是不可能的,接到的任务又只.原创 2021-06-22 17:13:08 · 1385 阅读 · 0 评论 -
[springboot]记一个学习中遇到的诡异的错误
今天在新电脑上面准备系统学习spring-security时,发现一个诡异的现象——使用maven打包是成功的,但是运行springboot的main方法就报错,提示找不到程序包,报错如下:在网上找了下,大多数不知所云,后面看到一篇文章,大概意思是说需要在idea中进行相关配置:该项的意思是将build/run 动作委托给 maven,之前工程没有进行过相关配置却可正常运行,有时间需要深究一下。...原创 2021-06-08 23:37:48 · 95 阅读 · 0 评论 -
[SpringBoot]手写一个内嵌tomcat
SpringBoot相对于SpringMvc,除了我们常讲到的“零配置”,其实还有一个特点就是集成了内嵌的tomcat,这就使得我们不再需要去每台虚拟机上面安装一个tomcat。文章目录工程结构pom.xml编码IndexServletMainTest效果工程结构整体比较简单,使用idea创建一个maven工程,包结构如图所示。pom.xml此处引入的依赖其实最主要的就是tomcat的jar包:<dependency> <groupId>org.apac.原创 2021-03-28 22:30:03 · 405 阅读 · 0 评论 -
[Java]HashMap相关
数据结构JDK1.8之前,HashMap使用的是数组+链表的形式;JDK1.8以后,HashMap使用的是数组+链表+红黑树的数据结构。HashMap之所以会使用红黑树有两方面原因:(1)查询性能。这个比较容易理解,因为链表检索的时间为O(n),而红黑树的检索时间为O(logn);(2)DOS攻击。HashMap在1.8以前单纯只使用链表,容易被黑客攻击,在同一个hash冲突的数组中放入N个对象,导致构造的这个链表很长,查询时将导致CPU飙升到100%。算法重写hashcodeHashMap原创 2021-03-17 15:10:43 · 192 阅读 · 0 评论 -
[shardingsphere] 源码解读(2) 从sharding-proxy的请求接入
源码解读请求接入流程PacketCodec(编解码)FrontendChannelInboundHandler(业务处理器)是完成这个流程的关键环节。PacketCodecpublic final class PacketCodec extends ByteToMessageCodec<DatabasePacket> { private final DatabasePacketCodecEngine databasePacketCodecEngine;原创 2021-02-25 17:40:36 · 441 阅读 · 0 评论 -
[shardingsphere] 源码解读(1) 从sharding-proxy的启动讲起
文章目录源码解读包结构启动流程BootstrapShardingSphereProxyDatabaseProtocolFrontendEngine源码解读包结构shardingsphere-proxy ├── shardingsphere-proxy-backend 负责与底层mysql通信 ├── shardingsphere-proxy-bootstrap 启动sharding-proxy ├── shardingsphere-proxy-common yaml配置文件原创 2021-02-25 11:33:08 · 1039 阅读 · 1 评论 -
[Java]SequenceDiagram
由于工作需要,阅读shardingsphere源码,但是shardingsphere模块众多,且调用复杂,阅读源码是一件很困难的事情。自己本准备阅读代码中画一个时序图加强源码阅读,突发奇想会不会有工具可以帮我们生成代码调用时序,百度了一下发现了SequenceDiagram这个神器。效果图安装File > Settings > Plugins 搜索该插件并安装。使用(1)找到要查看的方法,右键找到该菜单“SequenceDiagram”:(2)配置从上到下从左到右,大.原创 2021-02-24 17:35:58 · 382 阅读 · 0 评论 -
[Java]JVM基础
打工人996,最近实在没时间没精力写文档。最近在排查elasticsearch的一些诡异现象,因此贴该篇文档以回顾JVM相关内容。原创 2021-01-28 16:40:31 · 80 阅读 · 0 评论 -
[idea] git提交记录乱码
问题描述换了个新电脑,在idea中提交时对代码进行了备注:在gitlab中查看提交记录发现备注变成了乱码:问题解决修改git中的编码集:git config --global i18n.commitencoding utf-8 git config --global gui.encoding utf-8 git config --global i18n.logoutputencoding utf-8...原创 2020-09-02 16:43:31 · 1567 阅读 · 0 评论 -
[Java] ganymed-ssh2实现ssh连接工具
文章目录pom.xml依赖代码效果之所以会用到这个,是因为工作中有需要连接到服务器执行python脚本的需求,因此简单看了一下。该示例实现了用户密码形式连接服务器执行shell命令。pom.xml依赖主要是ganymed-ssh2,之所以用lombok是因为简化开发(使用lombok不需要写get/set方法)<!-- https://mvnrepository.com/artifact/ch.ethz.ganymed/ganymed-ssh2 --> <depend原创 2020-08-14 11:11:33 · 1770 阅读 · 0 评论 -
[Shardingsphere]数据源初始化
文章目录数据源初始化1.sharding-jdbc2.sharding-proxy数据源初始化1.sharding-jdbc工厂类ShardingDataSourceFactory.createDataSource()方法在创建Sharding-JDBC的数据源实现类ShardingDataSource的同时还创建了ShardingRule、ShardingRuntimeContext两个核...原创 2020-01-08 15:17:34 · 6045 阅读 · 0 评论 -
[Spring]聊一聊被Springboot废弃的web.xml
如果你接触的技术够新,你会发现,原本以前学习web工程时,每个工程的WEB-INF下面的web.xml似乎不见了。实话说,技术本来更新换代就比较快,有些人甚至都不知道web.xml是做什么的它就被湮没在历史的洪流中了。For Example比如,以下是一个web.xml的例子<?xml version="1.0" encoding="UTF-8"?><web-app...原创 2019-11-15 17:37:27 · 1546 阅读 · 0 评论