Spring Boot

2020 年 4 月全国程序员工资出炉!

為{幸葍}努か 提交于 2021-02-20 13:48:45
点击上方 Java后端 ,选择 设为星标 优质文章,及时送达 看到脉脉上一网友分享程序员4月份工资,平均工资竟达到14120! 网友:“这头发掉的值” 工资趋势 工资分布: 2020年中国一线城市程序员的平均工资为 16285 元,工资中位数为 14583 元,其中95%的人的工资位于 5000 到 20000 元之间。 和往年数据比较: 其中 北京的平均工资为 18048 ,中位数为 15000 。 上海的平均工资为 16653 ,中位数为 15000 。 广州的平均工资为 13831 ,中位数为 12500 。 深圳的平均工资为 16488 ,中位数为 15000 。 工作经验 数据显示,工资会随着工作经验的增长而增长。 职位 和2019年相比,算法工程师的比例从8%提高到了10%。 公司性质 公司很重要,选择一个什么样的公司,决定了工资高低。 由上数据可知,欧美外企的工资显著高于其他企业。所以,童鞋们要努力学好英语呀! 公司规模 公司越大,工资会越高。 行业 金融业果然名不虚传,有钱! 话说你拖后腿了吗? *数据来源:有数可据 https://blog.csdn.net/juwikuang/article/details/103840385 https://blog.csdn.net/juwikuang/article/details/104643366 -END-

从微信小程序到鸿蒙js开发【07】——menu&toast&dialog

ε祈祈猫儿з 提交于 2021-02-20 12:51:46
目录: 1、menu弹出菜单 2、Toast提示框 3、prompt模块的对话框dialog 4、dialog对话框组件 1、menu弹出菜单 这是微信小程序没有的一个组件,提供了一个可唤起的轻量级弹出菜单。menu的子组件为option。 <menu id="userMenu" onselected="menuSelect"> <option value="login">登录</option> <option value="register">注册</option> </menu> 在hml中写好菜单,但这时启动app是不会显示出来的,且不会占用任何页面空间。 menu需要在方法中被唤起,因此需要设置id属性。这里通过点击“点击登录/注册“文本框唤起菜单: <text if="{{ !userInfo }}" onclick="showUserMenu" class="info_hint"> 点击登录/注册 </text> showUserMenu() { this.$element("userMenu").show(); } 使用无参的show()方法,菜单在页面的左上角被唤起弹出。 show方法还有一个重载方法,可以设置菜单弹出的x轴和y轴偏移量。x和y需要给数值类型,单位为px。 showUserMenu() { this.$element("userMenu").show

Spring | Bean 的生命周期

谁说胖子不能爱 提交于 2021-02-20 08:37:27
作者:sunshujie1990 www.jianshu.com/p/1dec08d290c1 S pring Bean的生命周期是Spring面试热点问题。 这个问题即考察对Spring的微观了解,又考察对Spring的宏观认识,想要答好并不容易! 本文希望能够从源码角度入手,帮助面试者彻底搞定Spring Bean的生命周期。 只有四个! 是的,Spring Bean的生命周期只有这四个阶段。把这四个阶段和每个阶段对应的扩展点糅合在一起虽然没有问题,但是这样非常凌乱,难以记忆。要彻底搞清楚Spring的生命周期,首先要把这四个阶段牢牢记住。实例化和属性赋值对应构造方法和setter方法的注入,初始化和销毁是用户能自定义扩展的两个阶段。在这四步之间穿插的各种扩展点,稍后会讲。 实例化 Instantiation 属性赋值 Populate 初始化 Initialization 销毁 Destruction 实例化 -> 属性赋值 -> 初始化 -> 销毁 主要逻辑都在doCreate()方法中,逻辑很清晰,就是顺序调用以下三个方法,这三个方法与三个生命周期阶段一一对应,非常重要,在后续扩展接口分析中也会涉及。 createBeanInstance() -> 实例化 populateBean() -> 属性赋值 initializeBean() -> 初始化 源码如下,能证明实例化

介绍一款 API 敏捷开发工具

末鹿安然 提交于 2021-02-20 07:07:06
作者:棒锤 xie.infoq.cn/article/b5c3a339267e1351c6151b42a 初衷 用尽可能简单的方式,完成尽可能多的需求。通过约定的方式 实现统一的标准。告别加班,拒绝重复劳动,远离搬砖 特性 用于快速开发API接口。不再定义 Controller , Service , Dao , Mybatis , xml , Entity , VO 等对象和方法. 可视化界面,将入参自动封装到可执行的脚本上,支持所有关系性数据库SQL执行语句,非关系型 MONGODB 查询语句.欢迎扩展 完全基于springboot2.x 作为springboot项目的stater方式集成,无侵入性,新老项目都能快速集成 只需编写一行代码即可完成大部分的业务需求开发,使用难度级别(测试 or 运维)也可参与开发 在线动态编译,无需重启,即时生效,多数据源操作 版本控制,历史记录比对,回滚等功能 远程一键发布到线上环境 线上POSTMAN调试,保存POSTMAN信息或三方文档的自动生成,历史调用记录存储,回塑 代码提示,SQL提示,语法提示 用户管理控制,安全性控制,以及历史行为记录 经过多次项目验证,传统业务型开发,服务端效率能够提升3-5倍,前后端联调提升效率1倍,测试效率2倍提升 传统开发步骤: 增加一张表 创建实体对象,映射这张表 创建API入参VO 创建API出参VO

给日志打标签,让你的日志定位再无困难

时光毁灭记忆、已成空白 提交于 2021-02-20 05:58:39
背景 不知道各位在生产日志中定位问题时有没有碰到这样的场景:由于coding的时候日志输出的比较少,出现问题时,很难通过日志去定位到问题。又或者是,你明明coding的时候有输出日志。但是在庞大的日志文件中,由于业务线程并发比较多,你输出的日志又没有加关键信息。你也很难定位到你所需要的日志信息。 之前在公司里写业务代码时,为了使每个RPC调用能被日志记录下来,我们在公司基础组件里定义了一个切面,拦截所有的RPC调用,方法开始之前,在日志里输出调用的服务和方法以及参数,方法结束时输出方法的耗时。我相信很多人也是这么做的。 这样一来 ,所有的调用都能通过参数里的关键信息被搜索到。也能定位到调用是什么结束的以及耗时。 但是在有些业务方法中,也打上了很多的业务日志。由于核心业务的tps和qps很高,日志是互相穿插的。如果你的日志没有打上关键的业务信息(比如订单号,业务ID),那就很难在日志中被定位出来。 也许有些童鞋会说,用线程号呀。通过搜索业务ID定位到调用开始的地方,再搜索这条线程的线程号,就可以定位整个请求的所有日志。其实之前我也是这么干的,但是线程一般都是由线程池进行管理的,在tps很高的业务中,同一个线程号有可能短时间会出现多次,但是却是不同的请求。而且业务方法中可能也会有异步线程,导致了线程号会变。这样对于定位日志就又增加了难度。当然最后可以通过对时间戳的分析

纯0基础Java自学 Java基础

萝らか妹 提交于 2021-02-19 17:42:45
纯0基础Java自学 Java基础 做Java开发,Java基础是最需要下功夫的一项,因为基础决定上层建筑,如果以后想要进阶却发现自己的基础不牢固,又要重新补习基础是一件很麻烦的事情,所以建议各位小伙伴在刚开始学习的时候就打好Java基础。 推荐一本书《JAVA核心技术 卷1》,入门书籍看这一本就够了,但是不用全部看完,把 数据类型、核心语法、面向对象、数组、集合、IO流、String/StringBuffer/StringBuilder、线程、并发、反射、泛型这些模块看完 就可以了,后面的Swing、applet等等就不需要看了。 当然如果你是零基础学习Java并理解力不是爆棚的话,我建议以视频学习为主。 如果是零基础普通人,看视频学习/看不懂源码/用百度/看中文博客来学习丢人。 ps:如果 看的视频讲师的语速不是特别快,建议倍速观看。 因为我是零基础,所以我在自学的时候是听的李明杰的《Java语言基础课》这个课程时间不算长。 我觉得完整听完可以比较扎实的掌握Java基础,当然了,如果想要彻底学会还是需要自己的运用。然后再回到第一步,看书或者继续学习课程。 我当时学习的时候是先看了一遍视频,然后又看了一遍书。毕竟我还是希望我的基础知识更加的扎实。 JavaWeb基础 学习好了Java基础,接下来就是JavaWeb基础。 JavaWeb是一系列技术的综合

搭建互联网架构学习--001--前言

北城以北 提交于 2021-02-19 17:13:29
前言: 自己也参与过app上的前后端分离项目,说是项目,其实就是app上一个新的功能。和其他功能不相干,所以不是在公司app项目基础上做的新增,而是一个单独的maven项目,具体到代码,自己参与的还只是CRUD,写service,以至于再去面试,别人问到这个前后端分离的一些具体问题,自己就答不上来。离开了上家公司,所以想把前后端分离模式下的一些细节问题弄懂。在网上买的这个教程。题目是《从无到有搭建中小型互联网公司后台服务架构与运维架构》,感觉这个正是自己想要了解的。学学吧,这里做一些记录,以便日后使用查阅。如有错误,请指教,谢谢! 这是课程介绍的内容: 本课程主要是针对如何从无到有搭建中小型互联网公司后台服务架构和运维架构的课程,课程所涉及的内容均是当前应用最广泛的技术和工具。本课程所讲解的技术体系已经在多个中小型互联网公司中实战运行使用,目前运行已经非常稳定,数据量也是在不断持续增加。并且,这个技术体系也正在被其他很多互联网公司应用,希望通过此课程,让大家能快速熟练掌握各个技术,并且能实际应用到项目中。课程将会通过实际案例讲解,并且会提供完整的视频案例源码供学员学习使用,同时有需要的企业或学员可以直接拿本套教学案例代码来使用或者二次开发。 本课程设计的技术及工具如下: 后台服务架构:dubbo、spring-boot、spring mvc、spring-security

Spring RSocket:基于服务注册发现的 RSocket 负载均衡

怎甘沉沦 提交于 2021-02-19 17:07:19
作者 | 雷卷 来源| 阿里巴巴云原生公众号 RSocket 分布式通讯协议是 Spring Reactive 的核心内容,从 Spring Framework 5.2 开始,RSocket 已经是 Spring 的内置功能,Spring Boot 2.3 也添加了 spring-boot-starter-rsocket,简化了 RSocket 的服务编写和服务调用。RSocket 通讯的核心架构中包含两种模式,分别是 Broker 代理模式和服务直连通讯模式。 Broker 的通讯模式更灵活,如 Alibaba RSocket Broker,采用的是事件驱动模型架构。而目前更多的架构则是面向服务化设计,也就是我们常说的服务注册发现和服务直连通讯的模式,其中最知名的就是 Spring Cloud 技术栈,涉及到配置推送、服务注册发现、服务网关、断流保护等等。在面向服务化的分布式网络通讯中,如 REST API、gRPC 和 Alibaba Dubbo 等,都与 Spring Cloud 有很好地集成,用户基本不用关心服务注册发现和客户端负载均衡这些底层细节,就可以完成非常稳定的分布式网络通讯架构。 RSocket 作为通讯协议的后起之秀,核心是二进制异步化消息通讯,是否也能和 Spring Cloud 技术栈结合,实现服务注册发现、客户端负载均衡,从而更高效地实现面向服务的架构

收藏从未停止!阿里Spring全栈学习宝典2021全新开源

谁说我不能喝 提交于 2021-02-19 15:15:28
Spring 5.0 我们做这行的对于Spring的学习,可以说是一直未停止。前段时间Spring5.0发布,多了很多新功能,这些新功能改变了我们使用该框架的方式。但是 很多铁汁对于Spring 5.0的新增功能并不是很了解,更别说利用这些新功能使用Spring MVC构建应用程序,使用Spring Framework构建并扩展微服务,以及如何开发和部署云应用程序了。 对于Spring,虽然大家在工作中离不开这个框架,但是在简历上却没有太多人敢写精通。如果大家想要深入学习Spring,真正成为一名Spring精通者,那么下面这份Spring全栈宝典大家可一定不要错过! 这份Spring全栈宝典演示了应用程序架构的进化过程——从单体架构到围绕微服务构建的架构。此外,还介绍来SpringBoot的高级功能,并通过强大的实例演示这些功能。 由于文档有358页篇幅限制不能全部为大家展示出来,需要的朋友帮忙点zan+zhaun发,关注我之后直接添加小助理vx:bjmsb2020 即可获取免费下载方式! Spring全栈宝典 目录总览 向Spring Framework 5.0进化&依赖注入 使用Spring MVC 构建Web应用程序 向微服务和云原生应用程序进化 使用Spring Boot构建微服务 扩展微服务 Spring Boot的高级功能 Spring Data Spring

JUnit5学习之一:基本操作

a 夏天 提交于 2021-02-19 09:57:40
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等; 关于《JUnit5学习》系列 《JUnit5学习》系列旨在通过实战提升SpringBoot环境下的单元测试技能,一共八篇文章,链接如下: 基本操作 Assumptions类 Assertions类 按条件执行 标签(Tag)和自定义注解 参数化测试(Parameterized Tests)基础 参数化测试(Parameterized Tests)进阶 综合进阶(终篇) 本篇概览 本文是《JUnit5学习》系列的第一篇,通过实战学习在SpringBoot框架下JUnit5的基本功能,全篇章节如下: JUnit5简介 SpringBoot对JUnit5的依赖 常用注解简介 5版本已废弃的注解介绍 进入实战环节,先介绍版本和环境信息 创建《JUnit5学习》系列源码的父工程 创建子工程,编码体验常用注解 关于JUnit5 JUnit是常用的java单元测试框架,<font color="blue">5</font>是当前最新版本,其整体架构如下(图片来自网络): 2. 从上图可见,整个JUnit5可以划分成三层:顶层框架(Framework)、中间的引擎(Engine),底层的平台