面试真题·进阶教程·职场干货·思维导图免费分享
基于springboot的在线办公小程序。它是在Windows下,以MYSQL为数据库开发平台,java技术和Tomcat网络信息服务作为应用服务器。在线办公小程序的功能已基本实现,主要包括首页、个人中心、通知公告管理、员工管理、部门信息管理、职位信息管理、会议记录管理、待办事项管理、工资信息管理、留言板管理、系统管理等。 论文主要从系统的分析与设计 、数据库设计和系统的详细设计等几个方面来进行论述,系统分析与设计部分主要论述了系统的功能分析、系统的设计思路,数据库设计主要论述了数据库的设计,系统的详细设计部分主要论述了几个主要模块的详细设计过程。
前言 在本篇文章当中主要跟大家介绍并发的基础知识,从最基本的问题出发层层深入,帮助大家了解并发知识,并且打好并发的基础,为后面深入学习并发提供保证。本篇文章的篇章结构如下:
如果你觉得在一些程序员平台获取到的资料太乱学习起来毫无头绪,但是单看《Java编程思想》相似的一类的Java圣经“枯燥无味”,那我推荐你看一下这份GitHub获得过120k标星的《Java面试知识点总结》PDF,虽然文档章节不多,但是短小精悍,其中总结了Java这几年大佬整理的所有心血结晶!
众所周知,阿里后台一直以Java为重,面试官也是做Java开发的。但是语言只是工具,对代码的理解才是核心。面试时重点考察的是基础知识,以及解题的思考过程。 小编也是托了很多的关系,要到了这份阿里内容的面试解析。通过这份资料,拿到了多家大厂的offer! 一直以来,通过知头条这个程序员知识分享聚集地,学习到了很多经验方法,也少走了很多弯路。感谢这个平台给予我的帮助,同时也分享一下我的Java学习资料。希望能帮到大家。
什么是分布式缓存? 分布式缓存能够处理大量的动态数据,因此比较适合应用在Web 2.0时代中的社交网站等需要由用户生成内容的场景。从本地缓存扩展到分布式缓存后,关注重点从CPU、内存、缓存之间的数据传输速度差异也扩展到了业务系统、数据库、分布式缓存之间的数据传输速度差异。 今天给大家分享的是一本从大型互联网大厂系统角度探讨分布式系统的手册,从原理、框架、架构、案例等多个视角对分布式缓存进行了探讨
一、现象分析 上篇博客说到,Java服务假死的原因是使用了Guava缓存,30分钟的有效期导致Full GC无法回收内存。经过优化后,已经不再使用Guava缓存,实时查询数据。从短期效果来看,确实解决了无法回收内存的问题,但是服务运行几天后,发现内存又逐渐被占满,Full GC后只能回收一小部分。
传统做法 spring boot整合shiro后,如果某些接口需要屏蔽鉴权的话(比如登录)接口,我们一般会这么做:
Spring Boot配置 在spring中我们都知道所有配置定义在配置文件 application.yml 中我们就可以通过注解获取到。 Spring 中对所有配置管理都有一个统一的上层接口 Environment 实现类图
众所周知,字节跳动因为需要较高的推送准确率,所以对于数据结构与算法看得十分重要,放眼全球,字节跳动的数据结构与算法都可以说是“首屈一指”的,可以称得上是最锋利的“矛”,更有甚者说掌握了字节的算法,基本上半个身子就算是进了大厂了,所以算法刷一份字节跳动的算法,还是很有必要的。 应众粉丝要求,凯撒可以说是“跑断了腿,求没了人,熬坏了眼”,终于是搞出了一份相当全面的《字节千题算法实录》,共十四部分,今天免费分享给大家,以感谢大家一直以来对我的支持,一起看下:
自我介绍: 马士兵教育: 由马士兵老师携手BATJ名师为大家提供java架构师培训,人工智能培训,大数据培训,软件测试培训,Web前端培训,区块链培训等课程,课程均由一线互联网公司技术大牛精心研发,全程项目式教学!
什么是高并发? 高并发(High Concurrency)通常是指通过设计保证系统能够同时并行处理很多请求。 通俗来讲,高并发是指在同一个时间点,有很多用户同时访问同一 API 接口或者 Url 地址。它经常会发生在有大活跃用户量,用户高聚集的业务场景中。 今天给大家分享一份由一位阿里大牛亲自操刀写出来的一份:Java高并发核心编程手册,号称即使再过20年这份资料依然不会被淘汰!
MQ是Message Queue的缩写,也就是消息队列。 MQ(Message Queue)消息队列,是基础数据结构中“先进先出”的一种数据结构。指把要传输的数据(消息)放在队列中,用队列机制来实现消息传递——生产者产生消息并把消息放入队列,然后由消费者去处理。消费者可以到指定队列拉取消息,或者订阅相应的队列,由MQ服务端给其推送消息。 消息队列这种技术主要用在分布式设计当中,其实可以说是一种设计模式。是相对同步系统而言的。同步系统是什么呢? 同步,是当所有的操作都完毕,才会返回结果,比如用户支付,如果是同步的话就是当用户所发起的支付操作,然后只有等支付的这个业务成功然后才给用户返回结果说支付
常见的消息队列很多,主要包括 RabbitMQ、Kafka、RocketMQ 和 ActiveMQ,相关的选型可以看我之前的系列, 这篇文章只讲 RabbitMQ,先讲原理,后搞实战。 文章很长,如果你能一次性看完,“大哥,请收下我的膝盖”,建议大家先收藏,啥时需要面试,或者工作中遇到了,可以再慢慢看。 不 BB,直接上思维导图:
Spring核心和设计思想 <1>Spring是什么?如何理解Spring<2>IoC和DI是什么?区别? <1>通过容器对象.getBean()获取<2>依赖注入:把一个Bean对象,注入到另一个Bean的属性当中byName:通过Bean的id/名称来匹配如果此时你的id/名称不存在或者说不唯一。怎么绑定?方式一:使用 @Qualifier("XXX")方式二: 使用@Resource(name="XXX")<3>说一下@Autowired 和 @Resource 的区别 这一部分就是关于Spring的部分了,在这里我们主要学习四个部分
springboot作为现在spring技术体系里面最热门的框架没有之一,既可以用于构建企业应用系统也可以用作高性能互联网应用。
京东提前批一面: 简单的自我介绍 看我的项目取名叫“高级”,问我项目中怎么体现高级的(直接被人蒙了,瞎说了一通,把面试都逗笑了)? 怎么理解springboot、mybatis等框架的 如果没有mybatis,该怎么办(回答了用JDBC)那么mybatis和JDBC的区别是什么,为什么优先用mybatis mybatis是怎么操作数据库的,有哪些参数 你项目里用了kafka,怎么用的?只会用Kafka吗,用过其他的消息队列吗(我说用过blockqeue) ? 你项目里用到redis了,运用到了哪些场景?两大模块三大改进
随着JDK的不断迭代更新,国内的一些一线互联网大厂都安耐不住了,都开始了自己内部的JDK源码内卷,其中最受大家关注的阿里最先发布了一份号称21年最新的JDK源码整合手册,瞬间受到大批的源码开发者追捧一时风头无两!
一、什么RabbitMq 1. MQ就是message queue,即消息队列 2. 一个处理即时消息/延时消息的中间件 3. 一个传递消息的中间站 二、实际应用场景 1. 消息通讯 如短信通知,实时聊天等 2. 数据量大的时效性任务 如订单到时自动失效,定时任务,延时通知等 3. 限制流量 在双十一,618等期间订单的暴增会对服务器造成极大的负担,通过rabbitMq的消息队列的限流可以为服务器减载 三、最基本的框架
一丶Spring中事务的实现 <1>事务的四大特性有哪些<2>数据库并发一致性问题以及隔离级别的设置2>隔离可以解决的并发问题<3>Spring事务隔离级别 <1>事务的传播机制是什么?为什么需要传播机制<2>事务的传播机制有哪些?<3>Spring事务传播机制使用和各种场景演示1>支持当前事务(REQUIRED)2>不支持当前事务(REQUIRES_NEW)3> 不支持当前事务,NEVER 抛异常4>NESTED 嵌套事务 + 嵌套事务和加入事务区别? 这部分,就是关于事务了。emmmm,前言也不知道说啥了,人有点麻了。
简介 在这篇文章中,我将向你展示使用Lightrun分析一个Java应用程序,这样你就可以发现各种性能调整的改进,你可以应用到你当前的Java应用程序。 在上一篇文章中,我解释了什么是Lightrun,以及你如何使用它来注入动态日志、捕获运行时快照或添加动态指标。 在这篇文章中,我将使用Lightrun作为我的JPA关联获取验证器的替代品。
计算机(computer)俗称电脑,是现代一种用于高速计算的电子计算机器,可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能。是能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备。 由硬件系统和软件系统所组成,没有安装任何软件的计算机称为裸机。可分为超级计算机、工业控制计算机、网络计算机、个人计算机、嵌入式计算机五类,较先进的计算机有生物计算机、光子计算机、量子计算机等。 从最初由约翰·冯·诺依曼发明之后经过代代的不断改良和迭代增加到现在已经发展了几十年之久,计算机可以说是20世纪最先进的科学发展之一
为什么要说SpringBoot? SpringBoot作为一个被市场高度关注的微服务开发框架,版本迭代十分频繁。 Spring和SpringBoot技术的使用和涉及面十分广泛,一些技术博大精深,版本更替也十分频繁。 今天给大家分享的这份资料是由一份阿里大神甩给我的444页深入浅出SpringBoot2.X大神手册!
RocketMQ的发展史? RocketMQ的开源正是源于对这种开源文化的认同,开放是为了更好的协同创新,并将这一技术推向新的高度。在经历了阿里巴巴集团内部多年“双11”交易核心链路工业级场景在验证,2016年11月,团队将RocketMQ捐献给全球享有盛誉的Apache软件基金会正式质为孵化项目。 至此,RocketMQ开启了迈向全球顶级开源软件的新征程。
基于XML配置的容器启动过程 我们常用的Spring MVC是基于Servlet规范实现的,所以我们先来回顾一下Servlet相关的内容。
OAuth2是一种授权方法,用于通过HTTP协议提供对受保护资源的访问。首先,OAuth2使第三方应用程序能够获得对HTTP服务的有限访问权限,然后通过资源所有者和HTTP服务之间的批准交互来让第三方应用程序代表资源所有者获取访问权限。
分布式锁的引入 一个很典型的秒杀场景,或者说并发量非常高的场景下,对商品库存的操作,我用一个SpringBoot小项目模拟一下。 用到的技术知识: SpringBoot Redis ZooKeeper 我提前将库存 stock 放在redis,初始值为288:
临近年关,相信很多小伙伴都无心工作了吧!今天给大家分享出一份让大家上班摸鱼也可以随意看的阿里巴巴内部特供Java面试八股文手册,这份手册据说曾经也是让GitHub都为之低头的存在!
相信领域驱动设计这个对有些小伙伴来说很陌生,领域驱动设计(Domain Driven Design,DDD)自诞生以来已有十几年时间,这门本已步入老年的方法学却因为微服务的兴起而焕发了第二春。并不是微服务拯救了领域驱动设计,是因为领域驱动设计一直在坚硬的生长,然而看起来,确乎因为微服务,领域驱动设计才又焕发了青春。
首先什么是事件驱动型微服务?(书中摘要) 微服务和微服务类型的架构已经存在很多年了,它们有许多不同的形式和名字。面向服务的架构(service-oriented architecture,SOA)通常由多个相互直接同步通信的微服务构成。消息传递架构使用可被消费的事件在微服务之间进行异步通信。基于事件的通信当然不算新颖,但大规模并实时地处理大数据集是新的需求,而这要求对旧的架构类型进行改进。
文章目录 JDK 17 之 JVM调优 史诗级 教程 3.6.3 其他收集器适用场景4.1.2 如何产生dump文件4.1.2.1 JVM的配置文件中配置4.1.2.3 第三方可视化工具生成4.5 对比调优前后指标差异5.8.1 如何启动JConsole5.8.2 如何设置JAVA程序运行时可以被JConsolse连接分析6.4.1 -XX:+PrintFlagsInitial、-XX:+PrintFlagsFinal6.4.2 -XX:+PrintCommandLineFlags6.4.4 -XX:CMSFullGCsBeforeCompaction6.4.5 -XX:HeapDumpPat
. Dump内存快照 • 在运行java程序的时候,有时候想测试运行时占用内存情况,这时候就需要使用测试工具查看了。在eclipse里面有 Eclipse Memory Analyzer tool(MAT)插件可以测试,而在idea中也有这么一个插件,就是JProfiler,一款性能瓶颈分析工具!
文章目录 一、Kettle为什么可以读取流数据? 二、rabbitMQ中启动MQTT插件并创建队列和路由键 三、Kettle实现rabbitMQ的生产与消费 Kettle是一款非常强大的ETL工具,不仅可以使用图形化界面,还可以处理各种数据,今天记录一下本人使用Kettle中MQTT组件来实现从rabbitMQ中读取流数据,并进行解析和处理。 提示:以下是本篇文章正文内容,下面案例可供参考
并发编程: 所谓并发编程是指在一台处理器上"同时"处理多个任务。并发生在同一实体上的多个事件。多个事件在同一时间发生。 并发编程的目标 并发编程的目标是充分地利用处理器的每一个核心,以达到最高的处理性能。
最近好多粉丝后台私信凯撒想要我整理一份最新的Java面试手册,我去各大程序员网站搜罗了这一份2022年AlibabaJava中高级架构师面试手册(对标P5-P8),现在就和我一起看一下吧!
lntelliJ IDEA是一款优秀的软件开发工具,学习和掌握IntelliJ IDEA对于开发者来讲具有十分重要的意义。
工作中有些场景需要用到延迟队列,大概对RabbitMQ延迟队列场景有一些了解,网上大部分的场景应用于:订单超时、定时执行等。 而我需要延迟队列的场景是:有一批机器需要监控这个延迟队列长度,一旦满足就提前预备机器,准备执行任务。通过监控延迟队列,我可以准确、可靠的清楚,接下来的某个时间我一定会执行哪些任务。相较于传统通过API来唤醒设备,提升了稳定性。我只需要关注一点:发布消息。
这几天在做一个小项目,没有数据权限、菜单权限,所以呢就决定不使用权限验证框架了。登录呢,就直接用redis存储登录的用户信息就行了。 实现及存在问题: 一开始的实现思路大概就是:调用登录接口,校验用户名和密码是否正确,如果正确的话,直接生成一个随机字符串作为token,返回会给前端,同时用这个token作为redis中的key,value则存储的是当前登录的用户信息。然后在拦截器中,直接根据请求头中携带的token去redis找这个key,存在则放行,不存在则提示用户未登录。 存在问题:我以为这样是没有问题的,结果后面去redis一看,十几个key,点开一看全是同一个用户的,我直接好家伙藍
前言 俗话说:面试造火箭,入职拧螺丝。尽管99.99%的业务都不需要用到分库分表,但是分库分表还是频繁出现在大厂的面试中。 分库分表涉及到的内容非常多,有很多细节,如果在面试中被问到了,既是挑战,也是机会,如果你能回答好的话,会给你的面试加很多分。 由于业务量的关系,绝大部分同学都很难有实际分库分表的机会,因此很多同学在碰到这个问题时很容易懵逼。 因此今天跟大家分享一下分库分表的相关知识,本文内容源于实际高并发+海量数据业务下的实战和个人的思考总结。
有人说,今年可能是过去十年最差的一年,但却是未来十年最好的一年。随着越来越多的知名企业进行大规模裁员,我们不得不承认一个事实:经济寒冬与裁员潮,将是未来常态! 今年找工作属实有点难找,不过我还算幸运目前已斩获P8offer,下面我就给大家简单带过一下吧~ 本人介绍:6年多经验的程序员,坐标南京。
本书内容极其丰富,不仅涵盖了Spring MVC、MyBatis Plus、SpringData JPA、Spring Security、Quartz等主流框架,整合了MySQL、Druid、Redis、RabbitMQ、Elasticsearch等互联网常用技术与中间件,还涉及单元测试、异常处理、日志、Swagger等技术细节,以及AOP、IOC、自动配置、数据库事务、分布式锁等硬核知识。本书从初始化到部署、监控,实现了软件全生命周期一站式打包解决。
项目介绍 推荐一款开源的智慧物业开源系统。实现了微信公众号、小程序、PC、H5、智能硬件多端打通,旨在提升物业公司效率、规范物业服务流程、提升物业服务满意度、加强小区智慧化建设、便捷业主服务。 后端采用Koa + Typescript轻量级构建,支持分布式部署; 前端使用vue + view-design
谈谈你对 Spring Boot 自动装配机制的理解 什么是 Spring Boot 自动装配? @SpringBootApplication@SpringBootConfiguration@EnableAutoConfigurationAutoConfigurationImportSelector Spring Boot 中的 SPI 机制 Spring Boot 作为现在 Java 微服务开发中的中流砥柱,其开箱即用、免去 xml 配置等特点,高效便捷的使 Java 程序员进行业务开发。每次面试 Spring Boot 相关技术点时,其自动装配原理也是重点关注对象。下面我将结合源码针对 S
都说程序员的三大浪漫是:操作系统、编译原理、图形学;但图形学确实是特定的专业领域,我们几乎接触不到,所以对我来说换成网络更合适一些,最后再加上一个数据库。 这四项技术如果都能掌握的话,可以在 IT 行业横着走了,加上这几年互联网行业越来越不景气,越底层的技术就越不可能被替代;所以为了给自己的 30+ 危机留点出路,从今年上半年开始我就逐渐开始从头学习编译原理。 功夫不负有心人,经过近一个月的挑灯夜战,每晚都在老婆的催促下才休息,克服了中途好几次想放弃的冲动,终于现在完成了 GScript 一个预览版。 预览版的意思是语法结构与整体设计基本完成,后续更新也不太会改动这部分内容、但还缺少一些易用功
本文章的目标 完成对数据库中表的一条记录进行修改 MySql的Sql语句: UPDATE `demossmtest`.`orders` SET `name` = '电脑AS', `foondname` = '华为OS', `ordertime` = '2022.6.9', `count` = 3456, `price` = 3452.09, `amount` = 1234.09 WHERE `id` = 6
简单说一下吧,本人疫情还没开始时面试过一次鹅厂,在MySQL、redis这方面惨败,经过半年的沉淀,加上对MySQL,redis和分布式这块的补齐,终于重拾面试信心,再次出征。 二战腾讯 面试职位:go后端开发工程师,接受从Java转语言。 都知道腾讯是cpp的主战场,而以cpp为背景的工程师大都对os,network这块要求特别高,不像是Java这种偏重业务层的语言。 之前面试Java的公司侧重还是在数据结构、网络、框架、数据库和分布式。所以OS这块吃的亏比大。
我们知道,高并发代表着大流量,高并发系统设计的魅力就在于我们能够凭借自己的聪明才智设计巧妙的方案,从而抵抗巨大流量的冲击,带给用户更好的使用体验。这些方案好似能操纵流量,让流量更加平稳得被系统中的服务和组件处理。 下面我会通过一本PDF实战跟大家一起深入了解亿级流量网站架构核心技术。 这本PDF实战总结并梳理了亿级流量网站高可用和高并发原则,通过实例详细介绍了如何落地这些原则。本书分为四部分:概述、高可用原则、高并发原则、案例实战,从负载均衡、限流、降级、隔离、超时与重试、回滚机制、压测与预案、缓存、池化、异步化、扩容、队列等多方面详细地介绍了亿级流量网站的架构核心技术,可以让大家看完后能
Spring框架自诞生以来一直备受开发者青睐,有人亲切的称之为:Spring 全家桶。它包SpringMVC、SpringBoot、Spring Cloud、Spring Data等解决方案。 很多研发人员把spring看作心目中最好的java项目,没有之一。Spring系列包含非常多的项目,可以满足java开发中的方方面面。所以这是重点也是难点,工作中必须会,面试时肯定考。 下面我会为大家介绍一些上面所说方案的相关实战PDF及面试资料,希望会对大家有所帮助~
微服务基本概念 架构的演变 为什么会有微服务? 假如回到10年前,一天张三入职了电商企业—并夕夕商城。 公司初创,人比较少,公司网站的用户也很少,公司只有一个工程师 项目架构比较简单
索引的定义 MySQL官方对索引的定义为:索引(Index)是协助MySQL高效获取数据的数据结构。 本质上,索引的目的是为了提高查询效率,通过不断地缩小想要获取数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序的事件,也就是说,有了这种索引机制,我们可以总是用同一种查找方式来锁定数据。 可以类比银行的保险柜,比如你要找归属你的保险柜子。如果没有索引,你需要拿着钥匙,一个个的保险柜的试过去才能找到属于你的保险柜。但是如果有了索引,而且保险柜能够以物理分区的方式存在在对应的区域,同时你可以根据钥匙上的编号(A1003-10-17),找到保险柜所在 A1003的存放房间,找到存放室保险柜的
ThreadLocal在日常开发中还是比较常见的,本文将从源码的角度彻底揭秘ThreadLocal,并会分享一些较为常见的面试题,let's go。 ThreadLocal是什么? ThreadLocal隶属于lang包,它的主要功能是为每个线程提供一个私有的局部变量,这个变量在线程间相互隔离,互不影响。 主要解决的就是单例情况下全局变量的线程安全问题