自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

科技D人生

做正确的事情永远都比把事情做对更重要。在错误的方向上努力再多也不如找到正确的方向。

  • 博客(1325)
  • 资源 (8)
  • 论坛 (1)
  • 收藏
  • 关注

原创 Java基础学习总结(175)——分布式ID的9种生成方式总结

背景业务量小于500W的时候单独一个mysql即可提供服务,再大点的时候就进行读写分离也可以应付过来。但当主从同步也扛不住的是就需要分表分库了,但分库分表后需要有一个唯一ID来标识一条数据,数据库的自增ID显然不能满足需求;特别一点的如订单、优惠券也都需要有唯一ID做标识。此时一个能够生成全局唯一ID的系统是非常必要的。那么这个全局唯一ID就叫分布式ID。分布式ID需满足那些条件:全局唯一:基本要求就是必须保证ID是全局性唯一的。 高性能:高可用低延时,ID生成响应要快。 高可用:无限接近于10

2021-03-16 10:27:08 85

原创 2016年终总结

分享一个大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!点击浏览教程一、技术总结(1)App/JavaWeb后台系统1.1、采用RestFul架构的SSM(Spring SpringMVC MyBatis)框架集成开发的App后台系统,将用户鉴权分离出来单独的模块,将用户鉴权登录状态Token保存到Redis内存数据库中,从而便于上层业务后...

2017-01-10 11:54:34 4923 19

原创 青春路上,岁月如烟

分享一个大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!点击浏览教程青春路上,岁月如烟凡人一世,始聚终散。年长当权,寂寞同醉。年少轻狂,知己共饮。世界一如既往,不存在永恒和不灭。我们终为一介凡人,没法脱离世俗,看破红尘。人生亦是悲欢离合,聚如春梦,散如烟。我们这样一群在人生道路上越发迷茫的人,看不清梦想在何处,寻不到温柔乡,太多的美好被...

2014-06-23 18:35:45 3875 9

原创 Java基础学习总结(179)——Java 日志框架冲突解决方案大汇总

前言你是否遇到过配置了日志,但打印不出来的情况?你是否遇到过配置了logback,启动时却提示log4j错误的情况?像下面这样:log4j:WARN No appenders could be found for logger (org.example.App).log4j:WARN Please initialize the log4j system properly.log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#no

2021-04-08 10:47:02 72

原创 Java基础学习总结(178)——时候替换你的logback/log4j1了,使用性能更强大配置更简单的log4j2

Log4j2简介Apache Log4j 2是 Log4j(1) 的升级版,比它的祖先 Log4j 1. x 有了很大的改进,和logback对比有很大的改进。除了内部设计的调整外,主要有以下几点的大升级:更简化的配置 更强大的参数格式化 最夸张的异步性能Log4j 2中,分为**API(log4j-api)和实现(log4j-core)**两个模块。API 和slf4j 是一个类型,属于日志抽象/门面,而实现部分,才是Log4j 2的核心。org.apache.logging.log4j

2021-04-08 10:32:29 49

转载 架构的缘起与目标

前言在软件研发这个领域,程序员的终极目标都是想成为一名合格的架构师。然而梦想很美好,但现实却很曲折。在实际工作中,程序员会分很多种,有的擅长编码实现,有的擅长底层原理,有的擅长逻辑实现等等,在各自的领域都表现不俗、担当核心,然而,面临更高层架构设计时,很多优秀的程序员却折戟沙场,未能完成华丽转身。架构的真谛是什么呢?架构真的如此难把控吗?难道真的只有天资聪慧、天赋异能的程序员才能驾驭架构吗?不要气馁,平常心,其实人人都是架构师,可能你做的任一一件事已无形中用到了架构。本篇文章将带您慢慢走进架构,揭秘架构

2021-04-08 09:41:46 42

原创 Java多线程学习总结(3)——Java线程的6种状态及切换

一、线程六种状态线程的状态在java中有明确的定义,在java.lang.Thread.State中有6种。① New:线程被创建,未执行和运行的时候 ② Runnable:不代表线程在跑,两种:被cpu执行的线程,随时可以被cpu执行的状态。 ③ Blocked:线程阻塞,处于synchronized同步代码块或方法中被阻塞。 ④ Waiting:等待先生的线程状态。线程当前不执行,如果被其他唤醒后会继续执行的状态。依赖另一个线程的通知的。这个等待是一直等,没人叫你,你起不来。 ⑤ Tim

2021-04-02 09:32:57 94 1

原创 Java多线程学习总结(7)——创建线程池的正确姿势

一、通过Executors创建线程池的弊端在创建线程池的时候,大部分人还是会选择使用Executors去创建。下面是创建定长线程池(FixedThreadPool)的一个例子,严格来说,当使用如下代码创建线程池时,是不符合编程规范的。ExecutorService fixedThreadPool = Executors.newFixedThreadPool(5);原因在于:(摘自阿里编码规约)线程池不允许使用Executors去创建,而是通过ThreadPoolExecutor的.

2021-03-31 12:03:49 81 1

原创 Git学习总结(25)——Git 常用的分支开发模式及规范总结

一、master 分支master 为主分支,也是用于部署生产环境的分支,所有提供给用户使用的正式版本,都在这个主分支上发布。为确保 master 分支稳定性, master 分支一般由 develop 以及 hotfix 分支合并,任何时间都不能直接修改代码。二、develop 分支master 分支只用来分布重大版本,日常开发应该在另一条分支上完成。我们把开发用的分支,叫做 develop。develop 为开发分支,始终保持最新完成以及 bug 修复后的代码,一般开发的新功能时,fea

2021-03-30 09:56:36 52

原创 压测学习总结(7)——Jmeter性能测试之脚本增强

参数化在Jmeter中,实现参数化的方式很多。 本质上来说,参数化的实现方式有两种:文件方式:一般建议通过配置元件--CSV 数据文件设置组件来实现。CSV 数据文件设置组件函数方式:一般通过调用Jmeter内置的、第三方插件、自定义的函数来实现。 一般通过函数助手来生成调用的字符串。调用方式在jmeter中,任何鼠标点击可以输入的地方(输入字符串),都可以实现调用参数化操作,在Jmeter中,参数、变量、函数的调用方式是固定的: ${参数名} ${变量名} ${函数名}

2021-03-26 14:13:34 92

原创 压测学习总结(6)——Jmeter同步定时器的使用

添加同步定时器同步定时器介绍:同时触发一个事务,以达到模拟真实环境下多个用户同时操作,实现性能测试的最终目的。Jmeter中使用同步定时器功能,模拟多用户并发测试,即多个线程在同一时刻并发请求。用来保证我们的取样器在同一时刻向服务器发起负载参数介绍模拟用户组的数量:集合多少用户后再执行请求(也就是执行的线程数)PS:等同于设置为线程组中的线程数,设置的值不能大于线程数。超时时间以毫秒为单位:指定人数 多少秒没集合到算超时(设置延迟时间以毫秒为单位)PS:如果设置“超时时间以毫

2021-03-26 14:03:59 51

原创 压测学习总结(5)——如何使用Jmeter 进行简单的并发操作

建立线程组:鼠标右键“测试计划” -> “添加” -> "线程组(用户)" -> “线程组”, 建立线程组。添加HTTP请求:鼠标右键“线程组” -> “添加” -> “取样器” -> “HTTP请求”, 添加HTTP请求请求内容:输入“服务器名称或IP”,对应的端口号(一般没有指定端口不用输入)。选择请求的方法,, 输入对应的路径,添加参数及值。添加察看结果数:鼠标右键“HTTP请求” -> “添加” -> “监听器” -> “

2021-03-26 14:00:03 31

原创 压测学习总结(4)——Jmeter 脚本构成

一、测试计划:是默认存在的组件,所有的Jmeter的组件都是依赖于测试计划的。 在这个组件中,可以设置全局变量,可以设置线程组的启动方式。二、Threads:线程组件,又叫用户组件,是Jmeter中的必加组件,是Jmeter用来控制线程计划的。有三个可选组件:线程组、setUp线程组、tearDown线程组。这三类线程组本质上是一样的,只有当多种线程组组件同时出现在一个测试计划下时,会有执行顺序的区别。 所有的setUp线程组是优先执行的,执行完毕之后,才会执行线程组,最后才会执行tearD

2021-03-26 13:47:50 25

原创 压测学习总结(3)——Jmeter 脚本如何生成

一、第三方工具录制。 常用的工具有两种:badboy、blazemeter。badboy是基于内置的浏览器来进行录制的。录制成功导出JMX格式文件,再进行导入Jmeter。缺陷:因为内置浏览器的内核是IE的内核,所以可能会因为浏览器的兼容性导致无法使用badboy进行录制。blazemeter是提供了chrome浏览器的插件,可以在chrome浏览器中直接录制。二、Jmeter自带的http代理服务器方式录制代理服务器录制操作详解:第一步:右键测试计划,添加组件--Threads

2021-03-26 13:38:26 29

原创 压测学习总结(2)——Jmeter 基本知识入门

Jmeter的简介:Jmeter是一款基于纯JAVA语言开发的开源的性能测试工具。jmeter启动界面Jmeter的下载:·最新版:http://jmeter.apache.org/download_jmeter.cgi·历史版本:https://archive.apache.org/dist/jmeter/binaries/PS:如果是windows下使用,则下载zip压缩包,如果linux平台使用,则下载tgz。安装和使用:Jmeter是基于java的应用,所以需

2021-03-26 11:29:34 35

转载 关于软件架构的一切

现有软件架构方法的详细概述软件开发可以描述为一个复杂的系统过程,需要在各个技术领域以及相关业务方面的专业知识。就像总体规划的蓝图一样,通过定义软件的体系结构,可以促进此软件开发过程的组成部分。为什么我们需要软件架构> Big Ball of Mud早期的开发人员用来设计无体系结构的软件,这种软件最初看起来像是没有计划开销以及更快的原型制作的优点。但是,随着他们深入到过程中,该软件变得像泥泞的球一样变得僵化和难以管理。随着每项变更的成本越来越高,这种方法后来被称为“泥浆大球”(B

2021-03-25 09:12:24 51

转载 我在架构设计和代码开发中的一些常用原则

不管我一生中取得了多大的成功,其主要原因都不是我知道多少事情,而是我知道在无知的情况下自己应该怎么做。我一生中学到的最重要的东西是一种以原则为基础的生活方式,是它帮助我发现真相是什么,并据此如何行动。——瑞·达利欧(Ray Dalio)在日常的开发和设计过程中,大家对技术设计上的一些问题往往会面临很多的选择,不同的人会有不同的选择,每每如此,我都会尝试着问自己:我做出选择和判断背后的原则是什么?经过这么多年的发展,在软件设计过程,目前沉淀下来的原则有很多,但很多情况下,很多原则为了普适性,总结得.

2021-03-24 09:26:07 51

原创 Java基础学习总结(177)——关于Oracle对JDK长期支持(LTS)路线图

长期支持版(LTS)LTS,Long-term support,长期支持,软件的产品生命周期政策,延长了软件维护的周期,增加了软件开发过程及软件版本周期的可靠度。长期支持(LTS)版本通常与应用程序或操作系统有关,会在较长的时间内获得安全、维护和(有时有)功能的更新。Oracle的长期支持的JDK版本:JDK8、 JDK11、JDK17,学习、应用、商用,都可以选择Oracle Java SE支持路线图:地址:https://www.oracle.com/java/technologie

2021-03-24 09:23:41 58

原创 Java基础学习总结(176)——JDK 16 正式发布,一次性发布 17 个新特性

JDK 16 正式发布JDK 16 不是一个长期支持的版本,只支持 6 个月到 2021 年 9 月,上一个长期支持版本还是 JDK 11,下一个长期支持版本是 JDK 17,还有半年也要发布了。所以千万不要把 JDK 16(非长期支持版本)用于生产,大家了解一下就好。JDK 16 新特性一览ID JEP Feature 1 394 Pattern Matching for instanceof 2 395 Records 3 392

2021-03-18 09:58:21 89

转载 自动驾驶专题研究报告:自动驾驶产业链全梳理

核心观点2021年自动驾驶正加速向L3买进。2020年L3级自动驾驶开始普及已成为行业共识。2021年作为 自动驾驶技术进入L3等级的元年,是自动驾驶技术发展的重要节点。全球自动驾驶迈入商用探索新阶段。我们预计2024年全球L1-L5级自动驾驶汽车出货量有望突破 5000万。据百度Apollo智能交通白皮书,预计2035年后可完全实现无人驾驶。自动驾驶相关标准渐行渐近。LTE-V、5G等通信技术成为自动驾驶车辆通信标准的关键,将为自 动驾驶提供高速率、低时延的网络支撑。端、管、云服务体系逐渐推.

2021-03-16 15:30:57 142

原创 Linux学习总结(67)——shell脚本中$0 $1 $# $@ $* $? $ 等总结

$# 是传给脚本的参数个数$0 是脚本本身的名字$1 是传递给该shell脚本的第一个参数$2 是传递给该shell脚本的第二个参数$@ 是传给脚本的所有参数的列表$* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个$$ 是脚本运行的当前进程ID号$? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误eg:...

2021-03-15 09:56:43 62

原创 为什么要重构,何时进行重构

重构的目的代码重构是DevOps软件开发方法中使用的过程,该过程涉及编辑和清除以前编写的软件代码,而不更改代码的功能。代码重构的基本目的是使代码更加有效和可维护。这是降低技术成本的关键,因为现在清理代码比错误(Error)已然发生要好得多。代码重构提高了可读性,使质量保证和调试过程更加顺畅。 虽然它不能消除错误,但肯定可以在将来防止它们发生。这就是为什么需要例行代码重构的原因。如果要避免可怕的代码腐烂,代码重构很重要。 代码重复是由重复的代码,无数的补丁,错误的分类和其他编程差异引起的。 由不同开发人员

2021-03-09 09:44:52 98

原创 Java基础学习总结(174)——Java 开发者应该会的流程图绘制技巧

一、流程图简单介绍流程图 (Flow Chart )是流经一个系统的信息流、观点流或部件流的图形代表。在企业中,流程图主要用来说明某一过程。这种过程既可以是生产线上的工艺流程,也可以是完成一项任务的管理过程。流程图是揭示和掌握封闭系统运动状况的有效方式。作为诊断工具,它能够辅助决策制定,让管理者清楚地知道,问题可能出在什么地方,从而确定出可供选择的行动方案。(摘自MBA智库·百科)相比于时序图而言,流程图不需要过多考虑时间的维度,它能更加一目了然地描述各种分支情况的走向。针对不同的用户群,流程图有很多种

2021-03-08 10:17:07 5651 3

原创 Java基础学习总结(173)——Java 8到Java 15新功能总结

函数式编程(Java 8)在Java 8中,功能编程和lambda被添加为语言功能。函数式编程的两个核心范例是不变的值和将函数提升为一等公民的方法。数据经过一系列修改步骤,其中每个步骤都需要一些输入并将其映射到新的输出。函数式编程可与Java中的Streams和null安全monad(可选)一起使用,如下所示…List<String> stringList = Arrays.asList("Hello", "World", "How", "Are", "You", "Today");

2021-03-05 10:10:50 185 2

转载 架构设计:文件服务的设计与实现

功能文件服务器的核心功能就两个:「文件上传」和「文件下载」!其中上传可能需要支持断点续传、分片上传。而下载可能需要进行下载保护,例如非指定客户端无法下载。除了这两个核心功能,一般都会有一个额外功能,就是「转换」!转换包括:图片规格转换:一张图片需要切分多个不同的尺寸 添加水印:图片或视频需要添加水印 格式转换: 文件格式转换:office转pdf,pdf转word,pdf转图片,office转图片等 视频格式转换:mp4转m3u8,码率转换等除了上面的业务功能外,还包括如下非功能性约束:

2021-03-05 09:52:01 165

原创 Redis学习总结(20)——Java 开发人员Redis 使用军规

一、缩短键值对的存储长度键值对的长度是和性能成反比的,比如我们来做一组写入数据的性能测试,执行结果如下:从以上数据可以看出,在 key 不变的情况下,value 值越大操作效率越慢,因为 Redis 对于同一种数据类型会使用不同的内部编码进行存储,比如字符串的内部编码就有三种:int(整数编码)、raw(优化内存分配的字符串编码)、embstr(动态字符串编码),这是因为 Redis 的作者是想通过不同编码实现效率和空间的平衡,然而数据量越大使用的内部编码就越复杂,而越是复杂的内部编码存储的

2021-03-02 15:25:06 57

原创 Redis学习总结(19)——Redis 5种集群方式对比

一、常用的5种集群方式Redis 的几种常见使用方式包括:Redis 单副本 Redis 多副本(主从) Redis Sentinel(哨兵) Redis Cluster Redis 自研二、各种使用方式的优缺点1、Redis 单副本Redis 单副本,采用单个 Redis 节点部署架构,没有备用节点实时同步数据,不提供数据持久化和备份策略,适用于数据可靠性要求不高的纯缓存业务场景。优点:架构简单,部署方便;高性价比:缓存使用时无需备用节点(单实例可用性可以用.

2021-03-01 17:41:48 84 1

原创 Jenkins学习总结(6)——Jenkins 的安全实践

一、时刻保持Jenkins的安全在默认配置情况下,Jenkins是不执行任何安全检查的。也就是说,除一些简单基本的Jenkins配置、作业和构建,网站的访问者几乎可以在Jenkins的主数据库中执行任何随机代码。同时,Jenkins还允许在所有连接的代理上,执行包括用户密码、证书、以及其他隐私数据之类的代码操作。具体实践为了保护Jenkins的安全,我们需要通过如下两个方面,来“配置全局安全性(Configure Global Security)”选项。安全领域: 通常也被称为“身份验证”。它会

2021-02-25 18:12:21 85

原创 Windows学习总结(21)——常用网络命令ping、Telnet等详解

一,ping它是用来检查网络是否通畅或者网络连接速度的命令。它所利用的原理是这样的:网络上的机器都有唯一确定的IP地址,我们给目标IP地址发送一个数据包,对方就要返回一个同样大小的数据包,根据返回的数据包我们可以确定目标主机的存在,可以初步判断目标主机的操作系统等。在 DOS 窗口中键入:ping /?回车。所示如下帮助画面:ping/?-t 表示将不间断向目标 IP 发送数据包,直到我们强迫其停止。-l 定义发送数据包的大小,默认为32 字节,我们利用它可以最大定义到65500 字..

2021-02-25 10:08:15 147

转载 Json学习总结(9)——放弃FastJson!Jackson的功能原来如此之牛

什么是JacksonJackson是比较主流的基于Java的JSON类库,可用于Json和XML与JavaBean之间的序列化和反序列化。没看错,Jackson也可以处理JavaBean与XML之间的转换,基于jackson-dataformat-xml组件,而且比较JDK自带XML实现更加高效和安全。而我们使用比较多的是处理JSON与JavaBean之间的功能。Jackson主流到什么程度?单从Maven仓库中的统计来看,Jackson的使用量排位第一。而Spring Boot支持的三个JSON库(G

2021-02-25 09:53:51 227

转载 Json学习总结(8)——经过多方调研,最终还是决定禁用FastJson

前言老项目中使用到多种json类库,没有统一管理。最近开启全新的项目,准备对json类库进行统一,这样不仅能够压缩jar包的大小,也能够避免某个类库的漏洞导致系统问题。其实,就在前几个月因为FastJson的漏洞,已经全面升级过一次FastJson的版本。现在项目中有用FastJson,有用gson,也有用Jackson。虽然用的类库比较多,但使用的场景并不多,还在可控范围之内。这篇文章重点讲讲对FastJson的一些调研,虽然最终决定强制在项目中禁用FastJson,但在放弃之前,还是要学习一下这个类

2021-02-25 09:48:04 97

原创 Docker学习总结(54)——save,load,import 命令有何区别

docker save 保存的是镜像(常用)docker load 加载的镜像(常用)docker export 保存的是容器containerdocker import 是加载的容器container,同时恢复镜像docker import || docker exportdocker load || docker saveimport的是镜像,save是镜像...

2021-02-25 09:40:31 63

原创 Java基础学习总结(172)——手写Java 重试机制

package com.zhy.common.retry;import java.util.Arrays;import org.apache.commons.lang3.StringUtils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;/** * @ClassName RetryWrap * @Description (异常重试机制) * @author ZHY * @date 2021-2-22 11:09:48.

2021-02-22 11:59:08 118

转载 Spring Cloud与微服务学习总结(12)——微服务失败的 11 个原因

微服务是当前流行的架构。简单地说,微服务就是一种面向服务的软件架构,在这种架构中,服务器端应用程序是通过组合许多单用途、小容量的网络服务来构建的。微服务架构让边界设计良好的服务的失效互不影响成为可能。但是,微服务和所有的分布式系统一样,也会存各种各样的问题。Shekhar Gulati 给我们分享了微服务失败的 11 个原因,这些原因还算比较常见,我们相信,他总结的心得对于想要尝试转型微服务的公司是大有裨益的,因此,我们翻译并分享了这篇文章,以飨读者。在过去的几年里,我对进行数字化转型的多家产品团队.

2021-01-25 11:27:12 173 1

原创 Java基础学习总结(171)——CountDownLatch 使用总结

一、CountDownLatch 是什么?CountDownLatch是一个同步工具类,用来协调多个线程之间的同步,或者说起到线程之间的通信(而不是用作互斥的作用)。CountDownLatch能够使一个线程在等待另外一些线程完成各自工作之后,再继续执行。使用一个计数器进行实现。计数器初始值为线程的数量。当每一个线程完成自己任务后,计数器的值就会减一。当计数器的值为0时,表示所有的线程都已经完成一些任务,然后在CountDownLatch上等待的线程就可以恢复执行接下来的任务。二、CountDown

2021-01-21 10:48:20 107

原创 Mysql学习总结(83)——常用的几种分布式锁:ZK分布式锁、Redis分布式锁、数据库分布式锁、基于JDK的分布式锁方案对比总结

一、基于数据库实现分布式锁1.1、悲观锁利用select … where … for update 排他锁。注意: 其他附加功能与实现一基本一致,这里需要注意的是“where name=lock ”,name字段必须要走索引,否则会锁表。有些情况下,比如表不大,mysql优化器会不走这个索引,导致锁表问题。1.2、乐观锁所谓乐观锁与前边最大区别在于基于CAS思想,是不具有互斥性,不会产生锁等待而消耗资源,操作过程中认为不存在并发冲突,只有update version失败后才能觉察到。我们的抢

2021-01-18 14:15:35 101

原创 Java基础学习总结(170)——Java8并发工具类CompletableFuture学习总结

1、What's a CompletableFuture?首先了解什么是CompletableFuture,它是用于Java中的异步编程。异步编程是一种编写非阻塞代码的方法,它通过在主应用程序线程独立的线程上运行任务,并通知主线程其进度、完成或失败。 这样,你的主线程就不会阻塞、等待任务的完成,它可以并行地执行其他任务。 拥有这种并行性可以极大地提高程序的性能。2、Future vs CompletableFutureCompletableFuture是Java Future API的扩展,该.

2021-01-14 11:36:10 116

原创 Java基础学习总结(169)——ThreadLocal 使用总结

一.ThreadLocal 常用场景1、场景一:每个线程需要一个独享对象(通常是工具类,典型需要使用的类有SimpleDateFormat和Random);每个Thread内有自己的实例副本,不共享。比喻:教材只有一本,一起做笔记有线程安全问题。复印后没有问题,使用ThradLocal相当于复印了教材。2、场景二:每个线程内需要保存全局变量(例如在拦截器中获取用户信息),可以让不同方法直接使用,避免参数传递的麻烦。二、场景实践1、场景一的实例/** * 两个线程打印日期 *

2021-01-08 11:12:44 142

原创 Java基础学习总结(168)——为什么推荐在RPC的接口中入参和出参都不要使用枚举

前言:为什么推荐在RPC的接口中入参和出参都不要使用枚举。最近,我们的线上环境出现了一个问题,线上代码在执行过程中抛出了一个IllegalArgumentException,分析堆栈后,发现最根本的的异常是以下内容:java.lang.IllegalArgumentException:Noenumconstantcom.a.b.f.m.a.c.AType.P_M大概就是以上的内容,看起来还是很简单的,提示的错误信息就是在AType这个枚举类中没有找到P_M这个枚举项。于是经过排查...

2020-12-31 09:43:55 148

原创 Java基础学习总结(167)——Java项目实践中如何实现幂等

什么是幂等性?幂等是一个数学与计算机学概念,在数学中某一元运算为幂等时,其作用在任一元素两次后会和其作用一次的结果相同。在计算机中编程中,一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数或幂等方法是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。什么是接口幂等性?在HTTP/1.1中,对幂等性进行了定义。它描述了一次和多次请求某一个资源对于资源本身应该具有同样的结果(网络超时等问题除外),

2020-12-16 09:55:11 134

容器网页终端(websocket-webshell)

Java WebSockt DockerSSH Html5 Tomcat8 等技术写的WebShell 容器网页终端 传统websockt终端和容器化终端解决方案!

2017-09-23

Javag工程师简历模版.zip

Java 工程师简历专用模版,供技术人员参考,如何写出好看实用的Java 简历。相关技术从业人员的简历书写可参考改压缩包中的两份简历模版。

2020-08-06

开源博客系统

博客系统

2016-09-22

短信平台,activemq 及常用第三方短信平台接入

短信平台

2016-09-22

最新版Myeclipse2018.8破解

最新版Myeclipse2018.8破解,亲测100%有效,欢迎大家下载尝试!

2018-08-25

阿里巴巴Java开发手册(终极版)

阿里巴巴Java开发手册(终极版) 阿里巴巴Java开发手册(终极版)

2017-09-30

清华-2018人工智能之自动驾驶研究报告.pdf

自动驾驶技术已经成为整个汽车产业的最新发展方向。应用自动驾驶技术可以全面提升汽车驾驶的安全性、舒适性,满足更高层次的市场需求等。自动驾驶技术得益于人工 智能技术的应用及推广,在环境感知、精准定位、决策与规划、控制与执行、高精地图与车联网 V2X 等方面实现了全面提升。

2019-09-02

netty推送系统

netty推送系统,点对点推送

2016-07-17

科技D人生的留言板

发表于 2020-01-02 最后回复 2020-03-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除