2021Java春招面试经历,从基础到源码统统帮你搞定

Spring学习心得(一) NULL 博文链接:https://hafuokas.iteye.com/blog/2229869 立即下载

如何提升自己的实力?

Step 1:梳理自己的知识

对照下面这份学习大纲,梳理出自己的知识盲区,这份大纲里面的技术点完全对标P7岗的主流技术,因此这是一份很好的知识大纲笔记。

Step 2:查漏补缺,夯实基础

对照上面分享的学习路线梳理完自己的知识点后,就能够很清楚的知道自己的知识盲区,这样才能更加高效的学习,更快的往中高级程序员发展

Java核心技术:

(涵盖了JVM、并发编程、网络、分布式、微服务、数据库、数据结构与算法等等技术知识)

Spring高级源码:

Spring的重要性应该不用再多说了,市面上99%的互联网企业都在用的技术,更是面试的常见问题。

Step 3:搞定数据结构与算法:

面试过的朋友都知道,现在算法成了必问的,但是算法不是靠背就能搞定的,关键是吃透算法思维,这份学习笔记就是一份非常好的资料。

Step 4:吃透面试题,理清面试官思路:

面试题光背的作用其实不大,就算你背好了,面试官再往深了问,你就懵逼了。因此还是得把上面的笔记给吃透后,在吃透这些面试题,这份面试笔记也涵盖了面试官得思维,通过学习思维方法来解决面试问题。

总结

面试难免让人焦虑不安。经历过的人都懂的。但是如果你提前预测面试官要问你的问题并想出得体的回答方式,就会容易很多。

此外,都说“面试造火箭,工作拧螺丝”,那对于准备面试的朋友,你只需懂一个字:刷!

给我刷刷刷刷,使劲儿刷刷刷刷刷!今天既是来谈面试的,那就必须得来整点面试真题,这不花了我整28天,做了份“Java一线大厂高岗面试题解析合集:JAVA基础-中级-高级面试+SSM框架+分布式+性能调优+微服务+并发编程+网络+设计模式+数据结构与算法等”

image

资料领取方式:点击这里免费下载

且除了单纯的刷题,也得需准备一本【JAVA进阶核心知识手册】:JVM、JAVA集合、JAVA多线程并发、JAVA基础、Spring 原理、微服务、Netty与RPC、网络、日志、Zookeeper、Kafka、RabbitMQ、Hbase、MongoDB、Cassandra、设计模式、负载均衡、数据库、一致性算法、JAVA算法、数据结构、加密算法、分布式缓存、Hadoop、Spark、Storm、YARN、机器学习、云计算,用来查漏补缺最好不过。

算法、数据结构、加密算法、分布式缓存、Hadoop、Spark、Storm、YARN、机器学习、云计算,用来查漏补缺最好不过。

image

Spring总结(四) Spring个人总结,基于Annotation注解的方式开发,配置 立即下载

相关推荐

AD9371实战:如何用ZCU106搭建JESD204B TX时钟链(含关键参数计算)

本文详细解析了如何基于Xilinx ZCU106开发板为AD9371搭建JESD204B TX时钟链。文章从系统需求出发,逐步推导出从IQ采样率到GTH线速率的关键参数计算公式,并提供了在Vivado中配置GTH收发器(包括QPLL选择、分频比设置)的实战步骤与调试技巧,旨在帮助硬件工程师快速实现稳定可靠的JESD204B高速数据传输链路。

weixin_29164843的博客 294

2021大厂Java面试真题(分布式 )

2021大厂Java面试真题(分布式 ) 1、分布式服务接口的幂等性如何设计? 所谓幂等性,就是说一个接口,多次发起同一个请求,你这个接口得保证结果是准确得。 比如不能多扣款。不能多插入一条数据,不能将统计值多加了 1,这就是幂等性。 其实保证幂等性主要是三点: 对于每个请求必须有一个唯一的标识,举个例子:订单支付请求,肯定得包含订单 ID, 一个订单 ID 最多支付一次。 每次处理完请求之后,必须有一个记录标识这个请求处理过了,比如说常见得方案是再 mysql 中记录个状态啥得,比如支付之前记录一

ZJC'博客 3272

图数据挖掘 ECC K-core core number truss number clique

K-core:什么叫k-core,给定一个正整数k(k>=0),k-core是一个G的最大子图(也就是说k-core是一个图的限制),将这个子图定义为Hk,对于Hk中的每个顶点v,他的度数都是大于等于k的。 k-core是内嵌的,如下图所示,集合{ABCD}是H3,也就是3-core的子图。而集合{ABCDE}是H2,也就是2-core的子图,集合{ABCDEGF}是H1,也就是1-core的子图,而从集合的角度来讲H3<H2<H1。 core number:什么叫kcor

weixin_45193103的博客 1686

Spring总结

Spring学习过程的个人笔记,用于学习和提升。

毛哥的博客 2922

task5:在本地搭建大模型(ollama 和 LM studio 对比),接入 openclaw

关于大模型,大家千万不要想着在本地部署,根本不可行,没有那个财力。另外大模型迭代快,不可能每周都在下载大模型。再次,还是国外的模型好用,国内的模型真的在 deepresearch 上就有很大问题,你们懂的。所以本篇文章,还是聚焦在探索层面+实操,并不会实战。

这里是 AI 食用指南,持续分享有用的AI 实操和应用! 1973

基于STM32的电子时钟设计

基于STM32的电子时钟设计1、设计目的2、设计具体要求3、proteus仿真图4、程序代码 1、设计目的 (1)掌握使用KEIL MDK5进行软件开发的具体流程; (2)掌握硬件电路的设计方法; (3)掌握STM32微控制器的程序设计及代码编写方法。 2、设计具体要求 (1)通过STM32自带的实时时钟功能获取时间信息; (2)在OLED显示屏上显示日期、时、分、秒等时间信息; (3)通过按键可对时间信息进行修改; (4)具有闹钟设定功能; (5)加分项:自行增加其他功能。 3、proteus仿真图 4

唯一的博客 2万+

Spring学习总结

(一)Servlet 1、Servlet简介 Servlet就是sun公司开发动态web的一门技术 Sun在这些API中提供一个接口叫做:Servlet,如果你想开发一个Servlet程序,只需要完成两个小步骤: 编写一个类,实现Servlet接口 把开发好的Java诶部署到web服务器中 把实现了Servlet接口的Java程序叫做,Servlet 2、HelloServlet (1)Maven父子工程 构建一个普通的maven项目,删除掉里面的src目录,以后我们的学习就在这个项目里面创

weixin_43413307的博客 880

智能硬件产品 App 全球发布 第 1 章:全球 App 发布战略设计

本章阐述智能硬件 App 全球发布战略,涵盖市场分析、竞争格局、用户画像及资源配置。通过制定可执行的全球化推广路径,整合地区法规合规、渠道分发策略与营销活动设计,助力团队快速进入主流商店并确立品牌影响力。同时构建可量化的 KPI 监控体系,指导项目进度追踪与效果复盘,确保产品迭代持续优化,降低运营总成本。

moton2017的博客 157

spring的学习心得

IOC模块 什么是ioc IOC 是Inversion of Control的缩写,多数书籍翻译成“控制反转” IOC的核心是通过set注入来实现控制的反转。 代码案例: 一个useDao的接口。两个实现userDao 接口的实现类,userDaoImpl,userDaoMysqlImpl,还有一个userService接口类 来调用userDao类,从容实现service层和dao层的相互调用。 通用类代码 userDao类 public interface UserDao { v

LMF283的博客 3197

YOLO26改进 - SPPF模块 | 发论文神器!LSKA注意力改进SPPF,增强多尺度特征提取能力,高效涨点!!!

本文介绍了Large Separable Kernel Attention (LSKA)模块及其在YOLO26中的结合应用。LSKA旨在解决Visual Attention Networks (VAN)使用大内核卷积时的计算效率问题,通过将2D深度卷积层的卷积核分解为级联的水平和垂直1-D卷积核,降低了计算复杂度和内存占用,且使VAN更关注物体形状。我们将集成LSKA的SPPF_LSKA模块引入YOLO26,大量实验表明,改进后的模型在对象识别、检测、分割和稳健性测试上表现出色。

魔改工程师的博客 255

卫星轨道坐标转换:轨道六根数到经纬高(经STK验证)

a:半长轴(km)e:偏心率i:轨道倾角(度)Ω:升交点赤经(度)ω:近地点幅角(度)ν:真近点角(度)

weixin_52370774的博客 171

spring学习心得

spring学习的方面总的分为以下几个方面: 一.ioc容器 二.aop面向切面的编程 三.spring对事务的管理 spring配置文件放在类路径下,可直接使用 ApplicationContext applicationContext=new ClassPathXmlApplicationContext(“springaop.xml”); 其中applicationcontext是

氡佴的博客 1697

设计原则:面向对象设计原则详解

我们在应用程序开发中,一般要求尽量两做到可维护性和可复用性。 应用程序的复用可以提高应用程序的开发效率和质量,节约开发成本,恰当的复用还可以改善系统的可维护性。而在面向对象的设计里面,可维护性复用都是以面向对象设计原则为基础的,这些设计原则首先都是复用的原则,遵循这些设计原则可以有效地提高系统的复用性,同时提高系统的可维护性。面向对象设计原则和设计模式也是对系统.........

黄规速博客:学如逆水行舟,不进则退 4万+

大厂首发!P8级别的顶级“并发编程”宝典,从基础到源码统统帮你搞定

前言 一次偶然,从朋友那里得到一份“java高分面试指南”,里面涵盖了25个分类的面试题以及详细的解析:JavaOOP、Java集合/泛型、Java中的IO与NIO、Java反射、Java序列化、Java注解、多线程&并发、JVM、Mysql、Redis、Memcached、MongoDB、Spring、Spring Boot、Spring Cloud、RabbitMQ、Dubbo 、MyBatis 、ZooKeeper 、数据结构、算法、Elasticsearch 、Kafka 、微服务、Linu

125

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

奇安信大数据岗春招面试复盘:安全场景下的技术考察与备战策略

大数据开发是当前技术领域的热门方向,不仅需要掌握Hadoop、Spark、Flink等核心框架的原理,还要理解Kafka等消息中间件在数据链路中的作用。在真实的工程实践中,数据质量保障、数据倾斜排查、实时计算引擎选型都是决定系统稳定性的关键。当大数据技术进入网络安全领域,这些能力被赋予更高要求:安全日志的接入与清洗、告警风暴的应对、脏数据的业务决策,都需要架构师具备端到端的视野。以奇安信大数据岗春招面试为案例,从笔试到技术面完整考察了基础原理、系统设计和场景化问题,展现了安全场景下大数据工程师应具备的技术栈

weixin_34209851的博客 569

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

乐优商城第二篇:SpringCloud

文章目录系统架构演变阶段一:集中式架构阶段二:垂直拆分阶段三:分布式服务阶段四:流动计算框架(SOA)阶段五:微服务服务调用方式RPC和HTTPHttp客户端工具HttpClient使用演示Spring的RestTemplateRestTemplate使用演示初识SpringCloud简介版本注意SpringBoot的版本微服务场景模拟服务提供者服务调用者问题总结Eureka注册中心认识Eureka原理图入门案例搭建Eureka Server微服务注册到Eureka从Eureka获取服务Eureka详解基础

Ur_Eyes_的博客 1405

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Go 语言版 Redis 有序集合指令复刻探索

我们试图在 Go 语言的世界里,重新构建起那一套有序集合的指令体系,去挖掘其中的奥秘,去发现语言之间的共通与差异,去挑战自我并拓展技术的边界。返回到的值就是0,即aa位于跳表的第一个元素(除去头节点header),查询逻辑比较简单,通过字典确定是否存在,如果存在则到跳表中查询经过的步数,然后基于这个步数减去1得到元素的实际索引值。例如我们想知道test有序集合的长度,那么我们就可以直接通过zcard test得到结果,对应实现比较简单,在明确有序集合确实存在的情况下,直接返回底层的跳表的。

禅与计算机程序设计的艺术 1694

spring实验1

实验一:Spring IOC基本操作实验目的:1.掌握spring框架的搭建与配置2.理解Spring中的IoC和DI思想3.掌握ApplicationContext容器的使用4.掌握属性setter方法注入的实现实验类型:验证性实验内容:实验任务1:在idea中创建一个名为spring的项目,将Spring的xml文件配置更新。下载jar包 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springf.

weixin_46102505的博客 4304

学习微服务的体会

到今天微服务的学习也进行一周多了,总得来说,学习的收获挺大的。不过,总感觉学习的进度比我想象的要慢得多。原因就是,会边听边停,做笔记。 今后,应该把学习的东西学完了,理解透学习的内容,然后根据自己的学习成果记下笔记,这样我觉得才是正确的学习方法。明天开始,该学习的时候就认认真真学习,把要学的内容理解透。 ...

攻城狮Chova的博客 825

微服务基本认识总结

一、什么是微服务? 微服务架构风格是一种讲一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,服务间通信采用轻量级通信机制,这些服务围绕业务能力构建并且可通过全自动部署机制独立部署,这些服务公用一个小型的集中式的管理,服务可用不同的语言开发,使用不同的数据存储。 微服务具备以下的特性: 每个微服务可独立运行在自己的进程里 一系列独立运行的微服务共同构建起整个系统 每个微服...

岁月静好 1617

Spring的学习心得1

介绍 Spring,作为一个开源框架,是一个轻量级的解决方案,在Java Web开发方面非常流行。Spring的产生是为了解决企业应用开发的复杂性,其可以一站式构建企业级应用。从结构方面来说,Spring 框架是一个由多个定义良好的模块组成的分层架构(分层架构允许用户选择使用其中一个或多个组件,同时为J2EE应用的开发几桶继承的框架)。 Spring 框架模块图 什么是Spring? Spring是一个以IoC(Inversion of Control, 控制反转) 和 AOP(Aspect Orien

qq_46104495的博客 912

Spring实践作业5——Spring整合MyBatis

一、实验目的 了解Spring整合MyBatis方式 掌握Spring管理MyBatis基本配置 掌握Spring+Mybatis框架编程流程 二、实验内容 整合Spring+Mybatis框架并实现增删改查功能 三、实验内容与要求 创建项目并引入整合依赖 导入jdbc.properties属性文件 导入log4j.xml属性文件 编写application-context.xml核心配置文件 创建实体类Order(id, order_no, user_id, status, add_

米莱虾 3041

Spring IOC容器学习总结

1. Spring Ioc容器        Spring容器是Spring框架的核心。容器将创建对象,把它们连接在一起,配置它们,并管理他们的整个生命周期从创建到销毁。Spring 容器使用依赖注入(DI)来管理组成一个应用程序的组件。这些对象被称为 Spring Beans。        IOC(Inversion of Control):控制反转(也称依赖倒置)

weixin_46178852的博客 1510

spring实战读后感

spring实战

weixin_44002920的博客 274

SSM_Spring个人总结

SSM_Spring Day -01 第一章 简介 1.1. Spring概述 Spring是一个为简化企业级开发而生的开源框架。使用Spring开发可以将 Bean对象,Dao组件对象,Service组件对象等交给Spring容器来管理,这样使得很多复杂的代码在Spring中开发却变得非常的优雅和简洁,有效的降低代码的耦合度,极大的方便项目的后期维护、升级和扩展。 ​ ★★★ Spring是一个IOC(DI)和AOP容器框架。 1.2.Spring优良特性: 1) **非侵入式:**基于Spring开.

m0_56593901的博客 407
上一篇: 2021Java开发社招面试解答之性能优化,你掌握了多少?
下一篇: 2021Java春招面试经历,看完这篇彻底明白了
普通网友
博客等级 码龄6年 39粉丝 387原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值