Spring Boot

彻夜怒肝!Spring Boot+Sentinel+Nacos高并发已撸完,快要裂开了!

我的梦境 提交于 2021-01-22 14:38:06
都说程序员工资高、待遇好, 2021 金三银四就要到了, 你的小目标是 30K、40K,还是 16 薪的 20K? 作为一名 Java 开发工程师,当能力可以满足公司业务需求时,拿到超预期的 Offer 并不算难。然而,提升 Java 核心能力最快、最有效, 短期内升职加薪的方法,到底是什么? 首先,你需要跳出日常工作,接触更有深度、更前沿的顶级项目 。 一个简单的逻辑:大厂之所以能够给到高于行业水准的薪资,正是因为即使是普通开发人员,也要应对很多 复杂的场景 。这些复杂场景和项目,就像“墙外的世界”,没有看过,没有接触过,你就无法进行体系化的学习和建立认知, 技术壁垒自然就出现了。 所以,如果你期望通过个人努力,实现收入增长和职位晋升, 那最好的方式, 一定是多学透几个大厂的真实项目经验。 比如炙手可热的 电商平台系统 ,它包含微服务系统、高并发设计与性能调优,涉及 Spring Boot、Dubbo 等核心组件 的应用,还有秒杀活动用到的 Nginx、Redis、MQ、DB 等, 从底层组件应用,到模块设计一应俱全 ,非常适合深入学习和反复琢磨。 但想要快速吃透繁琐的电商系统并不简单,在自学的过程中,难免会遇到一些困难: 日常工作接触的技术维度偏少,对电商系统缺乏基本的认知与概念,无从学起。而网上的资料零零散散,经常讲解不透彻或技术点已过时,耗费大量精力却没有太多收获。

2021面试脚本!夜读互联网Java开发27大专题,终入P7

不想你离开。 提交于 2021-01-22 13:56:34
但作为面试者,想进入BAT并成长为一名高级Java工程师却没那么容易。 虽然面试者具备了一定的工作年限要求,也长期使用Java语言进行开发,但面试时,面对刨根问底的提问,经常感觉get不到面试官的点,自己回答的也是马马虎虎,甚至无法完整描述自己开发过的系统或者使用过的技术, 因此也就很难得到满意的面试结果。 过完年就是金三银四,2021不会比2020好过,过一年有很多小伙伴在面试中屡屡碰壁,不是基本功不扎实就是遇到一些平时没怎么接触过问题还失败告终。 今天在这特地整理了一份阿里,美团,京东,拼多多,蚂蚁金服等大厂Java岗面试必备清单! 注意: 由于篇幅原因,在这只展示了目录和内容截图, 有需要这份大厂Java后端面试清单的(以及更多学习资料),可以免费分享给大家一起学习,转发后转发后添加小编vx:mxzFAFAFA即可免费获取!!! JVM专题 作为Java从业者,在找工作的时候,一定会被问及关于 JVM 相关的知识。 JVM 知识的掌握程度,在很多面试官眼里是候选人技术深度的一个重要评判标准。 如果连JVM都回答不好,大厂一面基本也就凉凉! 在这里我们将详细地整理常见的 JVM 面试题目,并给出标准答案, 提供给大家学习参考。 内容展示 Java并发/多线程专题 从事 Java开发的小伙伴们会发现 Java 多线程和并发无论是工作或者是面试都绕不开的话题

Redis连接池是否有必要?

安稳与你 提交于 2021-01-21 18:08:07
先上结论 redis连接池主要作用体现在执行阻塞命令以及事务,通常情况下没有使用连接池的必要。 如何使用 先来看一下spring boot场景下如何使用redis。spring boot为各种sql,nosql提供了开箱即用的starter。这里关注如何配置集成redis,关于如何使用参考spring data redis文档。先来看一段spring boot document关于spring-boot-starter-data-redis的描述: Spring Boot offers basic auto-configuration for the Lettuce and Jedis client libraries and the abstractions on top of them provided by Spring Data Redis .By default, it uses Lettuce . By default, if commons-pool2 is on the classpath, you get a pooled connection factory. spring boot默认使用lettuce作为客户端,连接池需要依赖 commons-pool2 。所以pom里声明如下依赖: <dependency> <groupId>org

如何解决使用mybatis-plus提供的多租户插件出现Column ‘tenant_id‘ specified twice问题

被刻印的时光 ゝ 提交于 2021-01-21 17:40:00
前言 本文案例来源于业务开发部门进行多租户开发时发生的案例。用过mybatis-plus多租户插件的朋友,可能会知道,该插件的租户id值基本都是从上下文得来,这个上下文可以是cookie、session、threadlocal等。据业务部门反馈,在某次插入时,他们发现获取不到租户id值,于是他们在他们的代码层面上做了这么一层操作,在保存的时候,设置租户id。保存的时候,很成功的出现了Column 'tenant_id' specified twice 问题来源 在mybatis-plus 3.4版本之前,mybatis-plus进行多租户插入时是不会对已经存在的tenant_id进行过滤的,这就导致出现Column 'tenant_id' specified twice问题。其3.4版本之前多租户sql解析器处理insert语句源码如下 @Override public void processInsert(Insert insert) { if (tenantHandler.doTableFilter(insert.getTable().getName())) { // 过滤退出执行 return; } insert.getColumns().add(new Column(tenantHandler.getTenantIdColumn())); if (insert

spring boot启动报错Error starting ApplicationContext(未能配置数据源)

人走茶凉 提交于 2021-01-21 13:06:15
主要错误: Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. 未能配置数据源:未指定“url”属性,也无法配置嵌入式数据源。 Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2019-06-03 09:47:45.300 ERROR 23160 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPLICATION FAILED TO START *************************** Description: Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. Reason: Failed to determine a

Java后端部署以及与Android通信注意事项

空扰寡人 提交于 2021-01-21 13:00:19
1 概述 本文列举了一些 Android +后端 Java 通信/部署时的问题以及注意事项,覆盖的问题包括但不限于安全组、数据库、路径等,如果各位读者的 Android 端不能正常访问 Java 后端,希望这里的解决方案能帮助到您。 2 分类 这里将问题分为三类: Java 端问题 Android 端问题 其他杂项问题 先来看一下 Java 端可能出现的问题。 3 Java 端 包括: 数据库 安全组/防火墙 404 3.1 数据库 3.1.1 驱动 注意 MySQL5.7 与 MySQL8 注册驱动时是不一样的, MySQL5.7 是: Class.forName("com.mysql.jdbc.Driver"); MySQL8 以上是: Class.forName("com.mysql.cj.jdbc.Driver"); 另外要注意 JAR 包版本正确。 3.1.2 用户名/密码/权限 首先需要确保配置文件中的访问数据库的用户名以及密码要正确,不然的话可能会出现各种空指针错误,另外需要确保该用户对目标数据库或表具有对应的权限。 3.1.3 Spring Boot 中的加密配置 在 application.yaml / application.yml / application.properties 中配置对应的用户名以及密码,一般明文是没问题的,这里是针对使用了 Jasypt

当下最流行的后端框架

╄→尐↘猪︶ㄣ 提交于 2021-01-21 12:35:00
程序员日常开发,很需要一块适合自己适合项目的脚手架(快速开发平台),这也是我们团队准备解决这一痛点,开发了 xiaonuo系列 框架,虽说是开源平台同系列产品较多,从代码规范二次开发方面,我极力推荐使用小诺。 Vue前后分离登录界面 推荐理由: 模块化架构设计,层次清晰,业务层推荐写到单独模块,方便升级。 前后端分离架构,分离开发,分离部署,前后端互不影响。 前端技术采用vue + antdvPro + axios。 后端采用spring boot + mybatis-plus + hutool等,开源可靠。 基于spring security(jwt) + 用户UUID双重认证。 基于AOP实现的接口粒度的鉴权,最细粒度过滤权限资源。 基于hibernate validator实现的校验框架,支持自定义校验注解。 提供Request-No的响应header快速定位线上异常问题。 在线用户可查,可在线踢人,同账号登录可同时在线,可单独在线(通过系统参数配置)。 支持前端 + 后端在线代码生成。 文件,短信,缓存,邮件等,利用接口封装,方便拓展。 文件默认使用本地文件,短信默认使用阿里云sms,缓存默认使用内存缓存。 用户管理 代码风格统统采用阿里巴巴规范进行开发,分包合理,升级方便 来源: oschina 链接: https://my.oschina.net/u/4355040

spring boot启动报错Error starting ApplicationContext(未能配置数据源)

删除回忆录丶 提交于 2021-01-21 09:39:12
主要错误: Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. 未能配置数据源:未指定“url”属性,也无法配置嵌入式数据源。 Error starting ApplicationContext . To display the conditions report re - run your application with 'debug' enabled . 2019 - 06 - 03 09 : 47 : 45.300 ERROR 23160 -- - [ //加入Java开发交流君样:756584822一起吹水聊天 main ] o . s . b . d . LoggingFailureAnalysisReporter : * * * * * * * * * * * * * * * * * * * * * * * * * * * APPLICATION FAILED TO START * * * * * * * * * * * * * * * * * * * * * * * * * * * Description : Failed to configure a DataSource : 'url'

如何优雅地终止一个线程?

牧云@^-^@ 提交于 2021-01-21 07:26:22
我们的系统肯定有些线程为了保证业务需要是要常驻后台的,一般它们不会自己终止,需要我们通过手动来终止它们。我们知道启动一个线程是start方法,自然有一个对应的终止线程的stop方法,通过stop方法可以很快速、方便地终止一个线程,我们来看看stop的源代码。 通过注解@Deprecated看出stop方法被标为废弃的方法,jdk在以后的版本中可能被移除,不建议大家使用这种API。 那为什么这么好的一个方法怎么不推荐使用,还要标注为废弃呢? 假设有这样的一个业务场景,一个线程正在处理一个复杂的业务流程,突然间线程被调用stop而意外终止,这个业务数据还有可能是一致的吗?这样是肯定会出问题的,stop会释放锁并强制终止线程,造成执行一半的线程终止,带来的后果也是可想而知的,这就是为什么jdk不推荐使用stop终止线程的方法的原因,因为它很暴力会带来数据不一致性的问题。 正因为stop方法太过暴力,所以一般不推荐使用,除非你非常清楚你自己的业务场景,用stop终止不会给你的业务带来影响。 说了这么多,那如何优雅地终止一个线程呢?看看下面的程序。 其实也不难,只需要添加一个变量,判断这个变量在某个值的时候就退出循环,这时候每个循环为一个整合不被强行终止就不会影响单个业务的执行结果。 推荐去我的博客阅读更多: 1. Java JVM、集合、多线程、新特性系列教程 2. Spring MVC

Spring Boot 入门

半腔热情 提交于 2021-01-21 03:30:32
Spring Boot是Spring社区较新的一个项目。该项目的目的是帮助开发者更容易的创建基于Spring的应用程序和服务,让更多人的人更快的对Spring进行入门体验,让Java开发也能够实现Ruby on Rails那样的生产效率。为Spring生态系统提供了一种固定的、约定优于配置风格的框架。 Spring Boot具有如下特性: 为基于Spring的开发提供更快的入门体验 开箱即用,没有代码生成,也无需XML配置。同时也可以修改默认值来满足特定的需求。 提供了一些大型项目中常见的非功能性特性,如嵌入式服务器、安全、指标,健康检测、外部配置等。 Spring Boot并不是不对Spring功能上的增强,而是提供了一种快速使用Spring的方式。 本文根据官方文档深入讲解一段代码 简单例子 Spring Boot建议使用Maven或Gradle,本文以Maven为例。 首先创建一个一般的Maven项目,有一个pom.xml和基本的 src/main/java 结构。 在 pom.xml 中写上如下内容: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema