首页
学习
活动
专区
工具
TVP
发布

业余草

专栏作者
563
文章
1192321
阅读量
42
订阅数
面试官:说说如何打破或违反双亲委派!
SPI的全名为Service Provider Interface,主要是应用于厂商自定义组件或插件中,在java.util.ServiceLoader的文档里有比较详细的介绍。简单的总结下java SPI机制的思想:我们系统里抽象的各个模块,往往有很多不同的实现方案,比如日志模块、xml解析模块、jdbc模块等方案。面向的对象的设计里,我们一般推荐模块之间基于接口编程,模块之间不对实现类进行硬编码。一旦代码里涉及具体的实现类,就违反了可拔插的原则,如果需要替换一种实现,就需要修改代码。为了实现在模块装配的时候能不在程序里动态指明,这就需要一种服务发现机制。Java SPI就是提供这样的一个机制:为某个接口寻找服务实现的机制。有点类似IOC的思想,就是将装配的控制权移到程序之外,在模块化设计中这个机制尤其重要。
业余草
2021-12-06
1.5K0
Spring解决循环依赖的思路竟然来自于一道算法题
「Spring」如何解决的循环依赖,是近两年流行起来的一道 Java 面试题。我今年也面试过很多自称“高级”的 Java 工程师,对循环依赖的回答多数都不是很理想,今天我们一起来学习学习它。
业余草
2021-12-06
4440
还在用 Random生成随机数了?试试 ThreadLocalRandom 安全还好用!
最近在写一些业务代码时遇到一个需要产生随机数的场景,这时自然想到 jdk 包里的 Random 类。但出于对性能的极致追求,就考虑使用 ThreadLocalRandom 类进行优化,在查看 ThreadLocalRandom 实现的过程中,又追了下 Unsafe 有部分代码,整个流程下来,学到了不少东西,也通过搜索和提问解决了很多疑惑,于是总结成本文。
业余草
2021-12-06
3940
手把手简单制作一个 Java 木马程序
一直以来,Java 一句话木马都是采用打入字节码 defineClass 实现的。这种方法的优势是可以完整的打进去一个类,可以几乎实现 Java 上的所有功能。不足之处就是 Payload 过于巨大,并且不像脚本语言一样方便修改。并且还存在很多特征,例如继承 ClassLoader,反射调用 defineClass 等。本在这里提出一种 Java 一句话木马:利用 Java 中 JS 引擎实现的一句话木马。
业余草
2021-12-06
2.1K0
用了这么久的PageHelper,你知道原生的分页查询原理和步骤吗
分页查询则是在页面上将本来很多的数据分段显示,每页显示用户自定义的行数。可提高用户体验度,同时减少一次性加载,内存溢出风险。
业余草
2021-12-06
1.3K0
Java中​new关键字在虚拟机中是如何执行的?
如果Java堆中的内存是绝对规整的,所有用过的内存都放在一边,空闲的内存放在另一边,中间放着一个指针作为分界点的指示器,那所分配内存就仅仅是把那个指针向空闲空间那边揶动一段与对象大小相等的距离,这种分配方式称为“指针碰撞”(Bump the Pointer)。
业余草
2021-12-06
8390
面试官:Spring中的注解@Autowired是如何实现的
现在面试,基本上都是面试造火箭????,工作拧螺丝????。而且是喜欢问一些 Spring 相关的知识点,比如 @Autowired 和 @Resource 之间的区别。魔高一丈,道高一尺。很快不少程
业余草
2021-12-06
3080
if(a==1&&a==2&&a==3),有没有可能为true?
这是一个 JS 社区抛出来的问题。第一眼看到这个问题的时候,感觉这似乎是一个无稽之谈,一个变量怎么可能会同时满足俩个条件呢!
业余草
2021-12-06
3400
白话23 种设计模式,看完秒懂!
追 MM 少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是 MM 爱吃的东西,虽然口味有所不同,但不管你带 MM 去麦当劳或肯德基,只管向服务员说「来四个鸡翅」就行了。麦当劳和肯德基就是生产鸡翅的 Factory 工厂模式:客户类和工厂类分开。
业余草
2021-12-06
2020
面试官:如何停止一个正在运行的线程?
如何停止一个线程?如果你悄悄问问你同事,70% 的人可能回答不出来。今天我们在一起复习一下,如何停止一个线程!
业余草
2021-12-06
9960
为什么老程序员从不使用 Java 自带的序列化?
谈到序列化我们自然想到 Java 提供的 Serializable 接口,在 Java 中我们如果需要序列化只需要继承该接口就可以通过输入输出流进行序列化和反序列化。
业余草
2021-12-06
2160
Java序列化,碰到serialVersionUID不一致怎么处理?
公司有个子服务较多,交互频繁的系统,有一些需要共享传输的对象,它们通过 JDK 序列化(Java Object Serialization)后进行交互;但是由于一些不可描述的历史原因,这些对象存在多个版本,每个版本中的属性不一致,且未设置 serialVersionUID。
业余草
2021-12-06
3210
Java 15 年老兵都不一定了解的冷知识!
一般我们工作中,一个方法超过 5 个参数的都很少见。超过 10 个的估计是刚毕业的实习生干的,超过 255 个的更是没试验过。所以,你冷不丁的问工作了 15 年的 Java 老司机都不一定知道。
业余草
2021-12-06
4600
手把手教你利用Java获取图片GPS信息
一张图片能包含很多敏感信息,其中就包括图片拍摄的 GPS 信息。GPS 对多数网民来说都不太注重,然而对于懂技术的程序员来说,根据 GPS 信息,我们能准确的定位到他们。
业余草
2021-12-06
1.4K0
干掉activity、flowable,阿里开源工作流引擎compileflow使用指南
compileflow Process 引擎是淘宝工作流 TBBPM 引擎之一,是专注于纯内存执行,无状态的流程引擎,通过将流程文件转换生成 java 代码编译执行,简洁高效。当前是阿里业务中台交易等多个核心系统的流程引擎。
业余草
2021-12-06
3.1K0
Java必会的工具库,让你的代码量减少90%
工作很多年后,才发现有很多工具类库,可以大大简化代码量,提升开发效率,初级开发者却不知道。而这些类库早就成为了业界标准类库,大公司的内部也都在使用,如果刚工作的时候就有人告诉我使用这些工具类库,该多好!
业余草
2021-12-06
4390
设计模式之工厂模式,史上最强,不服来辩!
设计模式是对大家实际工作中写的各种代码进行高层次抽象的总结,如果设计模式没学会,抽象能力肯定就不会太强。常见的设计模式有 23 种,今天我们只聊最简单的工厂模式。
业余草
2021-12-06
3130
我在 Spring 的 BeanUtils 踩到的那些坑,千万不要犯!
最近项目中在和第三方进行联调一个接口,我们这边发送 http 请求给对方,然后接收对方的回应,代码都是老代码。根据注释,对方的 SDK 中写好的 Request 类有一个无法序列化的 bug,所以这边重新写了一个 Request 类,基本属性都是相同的,但是重点是有一个属性是静态内部类,还有两个是 list 属性,类似于下面这样:
业余草
2021-12-06
3380
SpringBoot 中解决跨域问题的 5 种方法!
出于浏览器的同源策略限制。同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。
业余草
2021-12-06
3.5K0
万字长文总结JAVA几种常见的编码格式和乱码原因分析
编码问题一直困扰着开发人员,尤其在 Java 中更加明显,因为 Java 是跨平台语言,不同平台之间编码之间的切换较多。本文将向你详细介绍 Java 中编码问题出现的根本原因,你将了解到:Java 中经常遇到的几种编码格式的区别;Java 中经常需要编码的场景;出现中文问题的原因分析;在开发 Java web 程序时可能会存在编码的几个地方,一个 HTTP 请求怎么控制编码格式?如何避免出现中文问题?
业余草
2021-02-04
8850
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档