Java后端
文章平均质量分 86
Java语言
鹿指为码
努力!奋斗!
展开
-
Spring AnnotationConfig 启动流程分析
背景 Spring基本属于目前离不开的开发框架了,Spring IOC更是如此,IOC主要的实现,控制反转,将所有Bean归于Spring容器中进行管理,通过使用CurrentHashMap来保证其线程安全性。使得开发对Bean的管理与使用变得及其方便、简洁。那么我们今天主要来盘一盘Spring中AnnotationConfigApplicationContext类启动流程。当面试提起这个问题时,分分钟拿下对手。区别 首先我么在获取SpringBean时常用...原创 2021-08-09 14:54:35 · 455 阅读 · 1 评论 -
Spring Bean获取的那些事儿
背景 实际项目中,我们都会用到Spring容器去存放我们的Bean对象,获取Bean对象时我们常用的@Autowired注解去进行导入,那么该方式有什么缺点?那么获取Bean还有哪些方式?这些方式都有哪些区别呢?啊这些都不重要,重要的是当成为面试题该怎么聊?那么我们挨个进行分析。@Autowired...原创 2021-08-05 17:23:42 · 280 阅读 · 0 评论 -
盘点Spring中Bean的注入方式
背景 Spring中,我们总是通过IOC肆无忌惮的去获取Bean对象,本着饮水思源的道理,我们来针对Bean注入的各种姿势进行详细分析。其实重点还有一个,面试的时候我很喜欢提这个问题,Spring的Bean注入方式你了解哪些?而非Spring的Bean获取方式。1.XML注入 XML注入是一种最原生的注入方式,一个XML配置文件,一个Bean配置对象,即可在Spring容器中注入一个Bean。<beans xmlns="http://www.spri...原创 2021-08-01 14:42:25 · 826 阅读 · 0 评论 -
偷窥Spring中的Bean加载
简介 Spring一统天下,相信Java开发的小伙胖们都不陌生,而Spring最重要的特点,不在于其技术,而在于其思想,一提到Spring,脑海中自然浮现AOP(面向切面)与IOC(控制反转)两大核心思想,那么今天我们来辩一辩IOC中,依赖注入的一个加载机制。体系 Spring的结构体系分为如下1.Spring Core 主要组件是BeanFactory,创建JavaBean的工厂,使用IOC管理所有Bean对象。2.Spring Aop ...原创 2021-07-29 17:07:06 · 278 阅读 · 0 评论 -
Eureka集群部署,服务器释压之多台服务器分开部署服务,服务之间相互调用,分布式注册中心Eureka的辉煌再现
背景 Eureka,SpringCloud第一代产品,虽说目前Nacos已经席卷而来,基本要掀翻Eureka,但是难免老系统用到的注册中心是Eureka,那么正好,我在操作这个老系统的时候,就遇到了一些坑,我想把多个服务通过两台服务器来完成部署,AB服务器各部署一半,释压的同时,腾出内存,当我以自认为无比清晰的思路去弄,以为一下子就能好时,发现事与愿违,足足花了我N小时,最后仍然只是小细节,踩了坑之后各位就看到了这篇文章,我能怎么办,我也很无奈。场景 还是一句老...原创 2021-07-21 18:06:23 · 1648 阅读 · 1 评论 -
设计模式之不愿被代理的代理模式,到底是怎么被代理的?
简述代理模式,顾名思义,首先一定是有一个代理方,和一个被代理方的区别。而我们日常生活中,中介找房租房就是一个非常直观的代理案例,中介代理房东的房子展示给客户,客户通过中介就能够直接进行看房、选房等一系列操作,非常方便。如图所示,客户想看什么房子,直接找中介就行了。完事Java里面,代理模式下,我们要找什么对象,找代理类(目标对象)就行了。适用场景 代理模式很明显的是一个代理方可以代理多个目标对象,如同中介可以托管多个房东的房子,那么...原创 2021-07-19 16:36:19 · 194 阅读 · 4 评论 -
浅谈分布式任务调度平台
背景分布式场景下,我们会对每个独立出来的服务进行集群,来提升服务的可用性,但集群环境下就会出现当前服务模块的定时任务重复进行的情况。那么解决方案实际上有多种:1.将定时任务提取出来,存放在后台管理系统2.将定时任务单独部署成一个服务3.将不同的服务部署不同的定时任务服务,用任务调度中心将其进行整合管理,也就是本文所说的分布式任务调度平台原理如图:在分布式任务调度中心中(这里以XXL-JOB的架构图为例),分为两部分。1.任务调度中心:即任务中心管理系统,处理所有的任务分发,执行原创 2020-10-27 16:38:19 · 579 阅读 · 0 评论 -
三顾HashMap,一顾结构,二顾变量,三顾构造函数及首次扩容原理
背景摘要:在Map集合中,最常用的集合就是HashMap集合了。相信各位也能脱口而出她的特征,JDK7(以下简称为7)和JDK8(以下简称为8)源码和实现不一样。7底层由数组+单向链表实现。在这之前我们提到过基于数组和链表实现的两个集合。ArrayList与LinkedList。那么在8源码中新增了红黑树这么一个数据结构,由于其特性大大增加了查询效率。同时HashMap也是无序且线程非安全。那么今天基于7的源码来三顾HashMap。一顾结构解析、二顾核心变量、三顾构造函数及首次扩容原理。HashMap原创 2020-06-04 18:06:17 · 586 阅读 · 0 评论 -
IDEA将当前项目JDK更改为指定版本
背景摘要:在日常学习回顾时,我们可能要根据不同版本的JDK对其差异源码进行分析。来了解她背后的优秀设计。顾我们就需要知道如何去灵活替换IDEA的当前项目的JDK,而不是当需要替换时就卸载当前JDK,装一个需要的JDK,使用完后再弄回来之类的做法。JDK~~~一、安装多个JDK相信小伙伴都有安装过JDK8,如下:那现在需要新安装JDK7,就先去官网下载一个7的版本。官网地址:https://www.oracle.com/java/technologies/javase/java原创 2020-06-04 11:12:38 · 7732 阅读 · 3 评论 -
你还在找测试接口的工具吗?来看看PostMan吧!
背景摘要:接口测试,是后端攻城狮编码后非常高兴去做的一件事儿~那么我们如何高效、方便去做。且在工作中,通常都会有多个环境,那么各环境的切换,接口的调试如何更便捷。那么今天我们来看看这款神器-PostMan。为什么突发奇想写一篇关于接口测试PostMan的使用以及介绍呢?原因是公司妹子今天看到我玩PostMan,问我这是什么,也想用来调试接口。然后我就发了一个安装包,至于使用方法,我相信她是应该不知道的,所以我就找了几篇以前入门的博客,但发现各有所缺陷。故自己也该总结经常使用的功能写一篇详细、靠谱的教程原创 2020-05-19 15:18:13 · 449 阅读 · 0 评论 -
恋上链表之深入LinkedList源码分析
背景摘要:在List集合中,我们最熟悉的就是ArrayList与LinkedList。一谈到它们我们第一个反应就是ArrayList查询快,LinkedList增删快,所以在增删操作频繁的场景下适合使用LinkedList,而在其他场景ArrayList就够用了。那么前篇我们提到了ArrayList源码分析,今天再来细聊LinkedList。目录一、恋上链表单向链表双向链表二、LinkedList2.3、LinkedList集合新增快的原因2.4、LinkedList删除背后的历原创 2020-05-14 18:21:11 · 416 阅读 · 0 评论 -
JVM栈上分配、对象组成部分与引用方式
背景摘要:前两篇文章主要提到过JVM内存结构、JVM对象创建过程及空间开辟。JVM内存结构篇中我们了解到了对象一般是存放于堆中,那么其实栈也是可以存放对象的,这就是基于我们的JVM栈上分配了。至于JVM对象创建篇,我们了解了对象的创建详细过程步骤,以及JVM是如何为对象分配空间,那么这里也继续分析JVM的对象组成部分以及对象引用方式。目录一、JVM栈上分配内存逃逸二、JVM对象组成部分数据填充三、对象引用方式一、JVM栈上分配我们在之前了解过对象一般存放于堆中,那么其实栈也是原创 2020-05-13 18:28:38 · 1033 阅读 · 0 评论 -
JVM对象创建过程及空间开辟
背景:我们在通过写代码创建一个对象时,有时会秃然想到,在创建一个对象时做了哪些事情?怎么来的这个对象?那么我们今天来了解一下创建对象的背后都发生了啥。在那之前:一、对象创建过程首先我们通过一张图与一段代码来大概了解创建一个对象的步骤。New类名 。》图中为New String(),指定创建的对象为String 根据new的参数在常景池中定位一个类符号的引用。》图中创建了String对象,固会去找当前对象Class。 如果没有找到这个符号的引用,说明类还没有被加载,则进行类的加载,解析..原创 2020-05-12 16:47:05 · 718 阅读 · 0 评论 -
极光推送之自定义消息推送
一、引入Maven jar 包官网最新版jar地址:https://docs.jiguang.cn/jpush/server/sdk/java_sdk/<!-- 极光推送 --><dependency> <groupId>cn.jpush.api</groupId> <artifactId>jpush-cl...原创 2019-05-09 16:27:24 · 2564 阅读 · 0 评论 -
记一次StackOverflowError
背景:StackOverflowError(译为:堆栈溢出错误)当然平时我们称之为内存溢出。在回顾LinkedList集合源码时偶然遇到了该错误,由此兴趣大发,吟诗作乐(写博作乐)一发。先祝各位妈妈母亲节快乐,回想上一次母亲节,仿佛就在昨天~一、Bug的心动历程StackOverflowError,在偶然的一次Node节点的相互追加中心动。来图...原创 2020-05-11 15:40:54 · 221 阅读 · 0 评论 -
JVM内存结构组成
背景:一谈到JVM一直是很多人觉得头疼的知识点,那么针对JVM这个痛点,我总结了一些,网上很多谈到由浅入深JVM,其实丑话说在前,一篇文章或者几篇文章是不够深入JVM的,但至少知其然。PS:至于知其所以然,依旧还是推荐《深入理解JVM》这本书,虽说它很多还是基于JDK1.7去演示的,但万变不离其宗。且目前已有更新第三版,完全不用担心过时。周老师还是很强滴~~一、Java内存结构组成首先我们来看一张图。由图我们可得知,JVM组成主要包含 堆、栈、元区间(方法区)、本地方法栈、PC寄存器等。原创 2020-05-08 18:37:54 · 1742 阅读 · 0 评论 -
手写ArrayList集合与源码分析
背景:首先集合大家是非常熟悉的,不管是个人日常编码还是公司项目,都是经常打交道的好朋友。但是我们要摸清楚她的底细,毕竟好朋友就是要知根知底~那么来认识认识集合中的List集合,List集合中的ArrayList集合,四舍五入就是集合中的集合。首先,简单陈述ArrayList集合特性,底层使用动态数组实现,随机查询效率非常快(元素下标),但插入和删除需要移动整个数组、效率低,Arr...原创 2020-05-07 18:04:16 · 350 阅读 · 0 评论 -
springmvc框架无法解析html文件
看到网上很多解决无法解析html文件导入一大堆配置,殊不知每个人用的版本不同,会产生解析类不存在的BUG,这时候就苦恼了,浪费很多时间解决这个问题。这里来教大家从根源上解决问题。问题:SpringMVC框架无法访问html出现404错误。原因:这是因为在spring拦截器配置中拦截了服务器所有的请求。<!-- Spring MVC servlet --> <...原创 2019-02-21 00:09:35 · 1558 阅读 · 0 评论 -
解决tomcat运行startup.bat闪退问题
BUG原型: 点击tomcat-->bin-->startup.bat启动时不能正常运行、启动,出现闪退问题。启动时,需读取环境变量与配置信息,缺少了这些信息,或信息出现错误,就导致了闪退。附:正常情况下,该窗口不会自动关闭,会显示运行信息如图: BUG场景 1.解压tomcat压缩包后直接运行文件,发生闪退。...原创 2019-02-13 20:20:34 · 3851 阅读 · 2 评论 -
Maven私服搭建与管理
相信大家搭建Maven私服一定花了不少功夫,我查阅了很多安装的帖子以及百度了很多错误解决方案,然后将所有的帖子精华部分,附上我的经验来带给大家一个特别详细的安装方案,所以该文章大部分可以说是总结别人帖子话不多说,开始安装:1.下载 官网:https: //www.sonatype.com/ 名称为: Nexus Repository ...原创 2018-11-16 14:10:23 · 1003 阅读 · 0 评论 -
分布式事务框架TC-LCN
本分布式事务系列主要讲分布式事务从理论-> 解决方案 -> 使用框架 -> 实现及原理 -> 案例实战 -> 事务回滚(全局异常统一处理)->分布式事务消息该篇着重于讲述分布式事务框架之一(LCN框架)原理,特性,及其实现。1.为什么选择LCN框架2.LCN框架介绍3.LCN框架原理一、为什么选择LCN框架1.实用性LCN有...原创 2020-04-23 10:25:02 · 403 阅读 · 0 评论 -
分布式事务解决方案
本分布式事务系列主要讲分布式事务从理论-> 解决方案 -> 使用框架 -> 实现及原理 -> 案例实战 -> 事务回滚(全局异常统一处理)->分布式事务消息该篇着重于讲述分布式事务的解决方案,与各位一起打开新视界的大门。1.柔性事务与刚性事务2.传统分布式事务解决方案Jta+Atomikos3.提交协议2PC与3PC4.分布式事务解决方案...原创 2020-04-23 09:38:29 · 108 阅读 · 0 评论 -
分布式基本理论与经典案例分析
本分布式事务系列主要讲分布式事务从理论-> 解决方案 -> 使用框架 -> 实现及原理 -> 案例实战 -> 事务回滚(全局异常统一处理)->分布式事务消息该篇着重于讲述分布式事务的基础理论。因为它本身就是一个偏理论性的难题。分布式事务产生背景 ACID酸碱平衡理论 CAP帽子原理 分布式事务案例分析--支付接口 Base理论一、分布...原创 2020-04-21 16:42:08 · 406 阅读 · 0 评论 -
分布式日志收集原理
一、传统系统日志收集的问题在传统项目中,如果在生产环境中,有多台不同的服务器集群,如果生产环境需要通过日志定位项目的Bug的话,需要在每台节点上使用传统的命令方式查询,这样效率非常底下。通常,日志被分散在储存不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。当务之急我们使用集中化的日志管理,例如:开源的syslog...原创 2019-10-24 11:53:04 · 3205 阅读 · 0 评论 -
【JDK1.8】Lambda表达式
配置开发环境首先需要下载安装JDK1.8。如果想在Android开发中使用lambda表达式,需要在Android Studio中配置Java 8开发环境。配置app的Gradle文件:开启jack编译选项 设置编译选项兼容到1.8android { defaultConfig { ... //开启jack编译 jack...转载 2019-03-19 22:41:49 · 208 阅读 · 0 评论 -
Dubbo是什么?能做什么
1. Dubbo是什么?Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架(告别Web Service模式中的WSdl,以服务者与消费者...转载 2019-03-07 23:36:53 · 194 阅读 · 0 评论 -
Caused by: mapping values are not allowed here in 'reader'
原因是因为yml 文件 代码格式缩进。举个栗子:False:key1: key2:value key3:valueTrue:key1: key2: key3:value在错误的示例中,key3的父实际上是key1,因为key2已经有了一个值。在正确的示例中,key3是key2的值。每次在YML中缩进时,都是父键的值。如果父键已经有一个...原创 2019-03-19 22:24:58 · 3568 阅读 · 0 评论 -
消息中间件企业级应用
众所周知,消息中间件是大型分布式系统中不可或缺的重要组件。它使用简单,却解决了不少难题,比如异步处理,系统藕合,流量削锋,分布式事务管理等。实现了一个高性能,高可用,高扩展的系统。本章通过介绍消息中间件的应用场景,消息中间件的传输模式,ActiveMQ快速入门三个方面来对消息中间件进行入门介绍。还在等什么,赶快来学习吧!说明:消息中间件非常强大,值得我们认真去学习和使用。完整代码请异步git...转载 2019-03-09 21:15:54 · 125 阅读 · 0 评论 -
常见的内存泄漏原因及解决方法
(Memory Leak,内存泄漏)为什么会产生内存泄漏?当一个对象已经不需要再使用本该被回收时,另外一个正在使用的对象持有它的引用从而导致它不能被回收,这导致本该被回收的对象不能被回收而停留在堆内存中,这就产生了内存泄漏。内存泄漏对程序的影响?内存泄漏是造成应用程序OOM的主要原因之一。我们知道Android系统为每个应用程序分配的内存是有限的,而当一个应用中产生的内存泄漏比较多...转载 2019-03-09 21:10:24 · 390 阅读 · 0 评论 -
SpringMVC工作流程
一、SpringMVC简介 SpringMVC是一种基于Spring实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,使用了MVC架构模式的思想,将web层进行职责解耦,并管理应用所需对象的生命周期,为简化日常开发,提供了很大便利。 SpringMVC提供了总开关DispatcherServlet;请求处理映射器(Handler Mapping)和处理适配器(Ha...原创 2019-03-08 22:45:43 · 168 阅读 · 1 评论 -
Struts框架文件上传与下载
首先在看这篇文章的前提下,你得会用Struts框架,有一定的基础了解,说白了了解怎么搭建就行了,然后基本就能顺利运行本篇文章的Demo,当然这个类不仅仅局限于图片上传下载的,因为是自己用流写的方法所以可以支持其他文件上传下载。 首先是给子控制器提供所需要的request属性以及结果码等的辅助类。package com.yiang.strutsUtil;imp...原创 2018-11-14 21:18:02 · 129 阅读 · 0 评论 -
一篇文看懂Hadoop
我们很荣幸能够见证Hadoop十年从无到有,再到称王。感动于技术的日新月异时,希望通过这篇内容深入解读Hadoop的昨天、今天和明天,憧憬下一个十年。 本文分为技术篇、产业篇、应用篇、展望篇四部分 技术篇 2006年项目成立的一开始,“Hadoop”这个单词只代表了两个组件——HDFS和MapReduce。到现在的10个年头,这个单词代表的是“核心”(即Core ...转载 2019-03-20 22:29:50 · 226 阅读 · 0 评论 -
Nginx 相关介绍(Nginx是什么?能干嘛?)
Nginx的产生没有听过Nginx?那么一定听过它的"同行"Apache吧!Nginx同Apache一样都是一种WEB服务器。基于REST架构风格,以统一资源描述符(Uniform Resources Identifier)URI或者统一资源定位符(Uniform Resources Locator)URL作为沟通依据,通过HTTP协议提供各种网络服务。然而,这些服务器在设计之初受到当时环...转载 2019-03-17 21:16:18 · 144 阅读 · 0 评论 -
The content of element type "resultMap" must match "(constructor?,id*,result*,association*
错误代码:The content of element type "resultMap" must match "(constructor?,id*,result*,association*,collection*,discriminator?)".翻译:元素类型“resultMap”的内容必须匹配“(构造函数?、id*、结果*、关联*、集合*、鉴别器?)”。错误示列...原创 2019-03-26 09:46:33 · 7683 阅读 · 2 评论 -
SpringBoot邮件服务
springboot-mail邮件服务springboot版本:2.1.3.RELEASE邮箱开启POP3服务以及查看服务密码引导:163邮箱如何开始POP3协议,获取授权码目录一、导入依赖 (可在I/O中勾选)二、添加配置文件配置properties文件yml文件三、实现代码1、MailService 接口2、MailServiceImpl 实现类3...原创 2019-04-02 15:22:23 · 532 阅读 · 0 评论 -
前端传集合至后端
springboot + MyBatis开发时有这么一个需求点击进货单时生成所有勾选了供应商的订单那么在做这个需求的时候就需要去给后台传一个表格数据集合,使用ajax提交,那么贴代码。一、在JS定义一个模拟数据var orderList = new Array();orderList.push({id: "1", goodsName: "sp_ydf", supplier:...原创 2019-03-29 08:55:26 · 11402 阅读 · 0 评论 -
Could not write JSON: JsonObject; nested exception is com.fasterxml.jackson.databind.JsonMappingExce
目录一、错误标题:二、错误原文:三、错误原图四、错误解释:五、错误解决六、末尾说明一、错误标题:Could not write JSON: JsonObject; nested exception is com.fasterxml.jackson.databind.JsonMappingException: JsonObject (through refere...原创 2019-05-07 20:27:30 · 20600 阅读 · 6 评论 -
【多线程】一、多线程快速入门
目录一、进程与线程的区别二、为什么要使用多线程?三、常见创建线程的方式3.1、继承Thread类3.2、实现Runnable接口3.3、匿名内部类3.4、匿名内部类(Lambda创建)四、启动线程方式以及优先级多线程相信大家可能有一定的认知与了解,比方说百度云下小视频,或者迅雷下种子,一次性能开启多个任务,这就是一个典型的多线程。一、进程与线程的区别比...原创 2019-05-22 10:42:35 · 432 阅读 · 0 评论 -
JSON数据转换处理
一、需求背景我们在项目中时常会需要使用第三方接口,在使用第三方接口时,会返回一个JSON格式字符串,这个时候就需要使用JSON工具类来进行转换。PS:根据不同需要来转换对应的类型。二、使用示例在没有使用工具类方法时的代码体现。我们不难发现,每个字段都需要我们手动去进行赋值,当字段多或者项目使用接口多时,会特别麻烦。于是我们根据Utils工具包进行优化RoomEntit...原创 2019-05-13 16:24:00 · 1218 阅读 · 2 评论 -
使用Lambda优化代码,Lambda表达式之美
一、优化线程//JDK1.7及以前创建Thread thread = new Thread( new Runnable() { @Override public void run() { System.out.println("原始线程"); } });//JDK1.8之后 Lambda创建Thr...原创 2019-05-17 14:45:04 · 681 阅读 · 0 评论