自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(76)
  • 资源 (1)
  • 收藏
  • 关注

转载 JAVA线上故障排查全套路

线上故障主要会包括cpu、磁盘、内存以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依次排查一遍。同时例如jstack、jmap等工具也是不囿于一个方面的问题的,基本上出问题就是df、free、top 三连,然后依次jstack、jmap伺候,具体问题具体分析即可。一、CPU一般来讲我们首先会排查cpu方面的问题。cpu异常往往还是比较好定位的。原因包括业务逻辑问题(死循环)、频繁gc以及上下文切换过多。而最常见的往往是业务逻辑(或者框架逻辑)导致的,可以使用js

2020-09-22 17:45:24 413

转载 图解+代码|常见限流算法以及限流在单机分布式场景下的思考

大家好,我是 yes。今天来说说限流的相关内容,包括常见的限流算法、单机限流场景、分布式限流场景以及一些常见限流组件。当然在介绍限流算法和具体场景之前我们先得明确什么是限流,为什么要限流?。任何技术都要搞清它的来源,技术的产生来自痛点,明确痛点我们才能抓住关键对症下药。限流是什么?首先来解释下什么是限流?在日常生活中限流很常见,例如去有些景区玩,每天售卖的门票数是有限的,例如 2000 张,即每天最多只有 2000 个人能进去游玩。题外话:我之前看到个新闻,最不想卖门票的景区“

2020-09-22 13:06:08 495

转载 String的replace()与replaceAll()区别

以为replaceAll()就是替换全部,其实不然。其实replace()和replaceAll()都是都是替换全部,只是参数不同:replace()是匹配的字符串 replaceAll()是匹配的正则表达式例子:String a = "1.0.3";String replace = a.replace(".", "");String replace1 = a.replaceAll(".", "");String replace2 = a.replaceAll("\\.", "");

2020-09-30 14:15:59 1096

转载 图解|为什么HTTP3.0使用UDP协议

我们都知道互联网中业务是不断迭代前进的,像HTTP这种重要的网络协议也是如此,新版本是对旧版本的扬弃。本文转载自微信公众号「后端技术指南针」,作者指南针氪金入口 。转载本文请联系后端技术指南针公众号1. 大白和小黑生活不止眼前的苟且,还有诗和远方的田野。新的一周又开始了,大白和小黑是同事,平时俩人一起喝酒吃肉打游戏居多,当然有时候也讨论下学术和前沿技术。这不,小黑听说了个新鲜玩意,然后和大白聊了起来:小黑:大白大白,听说HTTP协议已经到3.0了?大白:是的,已经到3.0了,甚.

2020-09-30 13:19:24 425

原创 OSS阿里对象存储服务 官方学习地址

OSS官方学习路径:https://help.aliyun.com/learn/learningpath/oss.html?spm=a2c4g.11186623.2.32.60493470v11pm5各语言 SDK 示例(java版)地址:https://help.aliyun.com/document_detail/32008.html?spm=5176.208357.J_1153451820.2.4f86390frRaWO3

2020-09-29 19:24:47 311

转载 阿里云OSS使用详解(java版本)

近几年,云图片服务器五花八门,越来越多,有腾讯云,阿里云,又拍云,华为云等等,但是使用了这么多年,我还是感觉阿里云图片服务器oss比较稳定,访问速度也比较快,因此我在这里手把手教给你如何使用阿里云oss服务;一、使用之前,我们还是先来搞清楚阿里云oss使用的原理吧其实调用方式也就两种,一种是直接客户端调用阿里云提供的服务器进行上传,一种是通过服务器间接上传,我们来分析以下优缺点吧:上传方式 优点 缺点 直接调用 上传速度快,能直接快速上传到阿里云服务器,不需要中转

2020-09-29 19:19:02 1471 1

转载 Java实现简单上传图片到阿里云对象存储OSS

阿里云对象存储服务(Object Storage Service,简称 OSS)提供基于网络的数据存取服务。使用 OSS,可以通过网络随时存储和调用包括文本、图片、音频和视频等在内的各种非结构化数据文件。具有:1、易用性:简单易用,便于管理,深度集成数据处理服务;2、高可靠:多重冗余备份,服务设计可用性不低于99.99%;3、强安全:多层次安全防护,支持跨区域复制、异地容灾机制;4、低成本:总体TCO更低,生命周期管理进一步降低成本等特点。在实现之前首先要购买阿里云对象存储OSS资源包并

2020-09-29 19:12:29 783

转载 Java三元表达式拆包

三元表达式拆包三元表达式是Java编码中的一个固定语法格式:“条件表达式?表达式1:表达式2”。三元表达式的逻辑为:“如果条件表达式成立,则执行表达式1,否则执行表达式2”。1.问题现象boolean condition = false;Double value1 = 1.0D;Double value2 = 2.0D;Double value3 = null;Double result = condition ? value1 * value2 : value3;//抛出空指针异常

2020-09-28 10:31:13 648

转载 异步请求xhr、ajax、axios与fetch的区别比较

why: 为什么会出现不同的方法呢?what: 这些都是异步请求数据的方法。在不重新刷新页面的情况下与服务器通信,交换数据,或更新页面。how:他们都有各自的特点。目录XMLHttpRequest对象 jQuery ajax axios fetch 参考1. XMLHttpRequest对象现代浏览器,最开始与服务器交换数据,都是通过XMLHttpRequest对象。它可以使用JSON、XML、HTML和text文本等格式发送和接收数据。它给我们带来了很多好处。不重新加载页面的

2020-09-27 18:48:07 371

原创 Network中XHR与JS的区别

1、主要作用是用于筛选所有的XHR类型的请求,达到只看XHR类型请求的目的 XHR这个标签出现在Chrome浏览器的开发者工具Network选项卡中 XHR类型即通过XMLHttpRequest方法发送的请求 filter是一个过滤器,它可以筛选包含输入关键词的请求,也可以筛选特性类型的请求,如domain、status-code等2、简单的说就是 content-type 的区别:xhr 是 application/json js 是 application/javascript.

2020-09-27 18:46:17 2577 3

原创 Java中throw和throws的区别

throw和throws的区别:1、throw代表动作,表示抛出一个异常的动作;throws代表一种状态,代表方法可能有异常抛出throw用在方法实现中,而throws用在方法声明中;throw只能用于抛出一种异常,而throws可以抛出多个异常2、throw关键字用来在程序中明确的抛出异常,相反 throws语句用来表明方法不能处理的异常。每一个方法都必须要指定哪些异常不能处理,所以方法的调用者才能够确保处理可能发生的异常,多个异常是用逗号分隔的。3、throw是在代码块内的

2020-09-27 18:41:22 11976

转载 消灭 Java 代码的“坏味道”

简介:阿里妹导读:代码中的"坏味道",如"私欲"如"灰尘",每天都在增加,一日不去清除,便会越累越多。如果用功去清除这些"坏味道",不仅能提高自己的编码水平,也能使代码变得"精白无一毫不彻"。这里,一直从事Java研发相关工作的阿里高级地图技术工程师王超,整理了日常工作中的一些"坏味道",及清理方法,供大家参考。让代码性能更高需要 Map 的主键和取值时,应该迭代 entrySet()当循环中只需要 Map 的主键时,迭代 keySet() 是正确的。但是,当需要主键和取值时,迭代 ent..

2020-09-25 18:20:47 388

转载 大写的服,看完这篇你还不懂RocketMQ算我输

目录 RocketMQ介绍 RocketMQ概念 为什么要用RocketMQ? 异步解耦 削峰填谷 分布式事务最终一致性 数据分发 RocketMQ架构 RocketMQ消息类型 普通消息 顺序消息 定时消息 事务消息 最佳实践 消息重试 消息过滤 消费模式 消费幂等

2020-09-25 12:14:51 493

转载 Java 代码精简之道,总结得太好了!

前言古语有云:道为术之灵,术为道之体;以道统术,以术得道。其中:“道”指“规律、道理、理论”,“术”指“方法、技巧、技术”。意思是:“道”是“术”的灵魂,“术”是“道”的肉体;可以用“道”来统管“术”,也可以从“术”中获得“道”。在拜读大佬“孤尽”的文章《Code Review是苦涩但有意思的修行》时,感受最深的一句话就是:“优质的代码一定是少即是多的精兵原则”,这就是大佬的代码精简之“道”。工匠追求“术”到极致,其实就是在寻“道”,且离悟“道”也就不远了,亦或是已经得道,这就是“工

2020-09-25 10:34:53 448

原创 java保证值存在

普通:Integer thisValue;if (Objects.nonNull(value)) { thisValue = value;} else { thisValue = DEFAULT_VALUE;}精简://Optional.ofNullable(value).orElse(DEFAULT_VALUE) 判断对象是否为nullInteger thisValue = Optional.ofNullable(value).orElse(DEFAULT_VAL

2020-09-24 17:14:31 369

转载 Java泛型:泛型类、泛型接口、泛型方法

文章目录泛型类 泛型类的继承 泛型与内部类泛型接口 泛型接口的实现泛型方法 形参的类型参数通过实参确定 泛型方法被多个形参推断 返回值的类型参数通过方法返回值赋值的对象确定 形参和返回值用了同一个类型参数 泛型方法定义中的类型推断 静态方法不可以使用泛型类定义的类型参数 泛型方法返回值赋值给形参 可变参数和泛型方法泛型类和泛型方法 泛型类中的成员泛型方法和静态泛型方法匿名内部类和泛型个人理解总结...

2020-09-24 11:28:26 815

转载 Java泛型全解析【接口、类、封装类型】

目录1、导读2、为何需要泛型?3、泛型的定义格式4、泛型的好处5、什么时候使用泛型?6、泛型的擦除7、泛型的补偿8、泛型的应用 8.1【泛型类】 8.2【泛型方法】 8.3【泛型接口】9、泛型の通配符:?10、泛型的限定1、导读泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。Generic有“类的,属性的”之意,在Java中代表泛型。泛型作为一种安全机制而产生。2、为何需要泛型?我们知道集合...

2020-09-24 10:44:54 560

转载 java 读取本地json文件

pom依赖<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.47</version></dependency>读取JSON工具类/*** 读取json文件,返回json串* @param fileName* @return*/public ..

2020-09-23 17:19:37 3528

原创 java实现本地json文件的读取和解析

依赖:<dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version></dependency><dependency> <groupId>com.alibaba</groupId> <artifactId

2020-09-23 16:55:10 1530

转载 Collections.unmodifiableList方法的使用与场景

在公司接触到 Collections.unmodifiableList(List<? extends T> list)) 觉得用法挺特殊的,所以学习了下,简单而言,看名字就知道,将参数中的List返回一个不可修改的List。觉得以下这篇文章写得很好,说明了它的应用场景。在《重构——改善既有代码的设计》一书中,有一种重构手法叫Encapsulate Collection(封装集群),为了演示该重构手法,我写了四个类,通过对比重构前后的代码,加深对这一重构手法的理解。类Student有.

2020-09-23 14:50:07 1040

转载 关于类加载的一些常见错误

最近在做类隔离相关的一些工作,而恰恰之前协助开发同学时也发现会遇到许多类加载相关的异常,并且往往比较难定位与解决。这里简单做一个小总结。类加载首先我们来捋一捋类加载的基础知识。以上是大家比较熟悉的类加载器模型,主要包含 3 种类加载器:BootstrapClassloader 根加载器,也就是系统类加载器,加载核心库,如 rt.jar。 ExtensionClassloader 扩展类加载器,主要加载/ext/下面的 jar 包 AppClassloader 离我们最近的类加载器,负责加载

2020-09-22 19:44:58 667

转载 ThreadLocal的应用场景和注意事项

前言这篇文章聊聊 ThreadLocal,我们经常会在一些开源中间件的源码中见到它的身影,比较常见的用途是保存上下文信息,还有就是保证了线程安全。实际上,ThreadLocal 为每个线程提供一个单独的变量,确是一种保证线程安全的手段,ThreadLocal 创建的变量只能被当前线程访问,其他线程不得干涉。ThreadLocal API使用 ThreadLocal 其实非常简单,直接看下面的示例:public class ThreadLocalSimpleDateFormat {

2020-09-22 17:03:15 1191

原创 使用ThreadLocal注意事项

需要注意两个事项:在get方法的时候出现null 内存泄漏或产生脏数据1、在get方法的时候出现nullpackage com.ray.deepintothread.ch04.topic_3;public class ThreadLocalGetNull { private int count = 0; public ThreadLocal<Integer> intThreadLocal = new ThreadLocal<Integer>();

2020-09-22 16:41:17 1045 1

转载 如何决定使用 HashMap 还是 TreeMap?

问:如何决定使用 HashMap 还是 TreeMap?介绍TreeMap<K,V>的Key值是要求实现java.lang.Comparable,所以迭代的时候TreeMap默认是按照Key值升序排序的;TreeMap的实现是基于红黑树结构。适用于按自然顺序或自定义顺序遍历键(key)。HashMap<K,V>的Key值实现散列hashCode(),分布是散列的、均匀的,不支持排序;数据结构主要是桶(数组),链表或红黑树。适用于在Map中插入、删除和定位元素。结论

2020-09-22 15:06:43 524

转载 一次搞懂 Runnable、Callable、Future、FutureTask,不懂不要钱!

一般创建线程只有两种方式,一种是继承Thread,一种是实现Runnable接口。但是这两种创建方式有一个致命的缺点就是没有返回值,没返回值就让人很苦恼了啊。得用共享变量或者其他通信方式才能得到线程处理完的结果,就有点麻烦。还有一般不提倡使用继承Thread来创建线程方式,因为Java只有单继承,不能继承多个。但是Runnable是接口,所以可以让你的实现类同时实现多个接口。而且之后要上线程池,如果之前你是用Runnable来实现的,那就可以直接传入Runnable给线程池进行管理了!在Java1.

2020-09-22 14:13:27 542

转载 Semaphore 信号量及其理解

一、Semaphore 信号量Semaphore (信号量)是由计算机科学家Dijkstra在1965年提出的,广泛应用不同的操作系统,在管程提出之前信号量就是并发编程领域的霸主!几乎所有并发的语言都支持信号量机制。Semaphore 也有被翻译成信号灯,因为其机制就像我们日常生活中的红绿灯,车辆的通行看红绿灯,对应编程世界的线程能不能执行得看信号灯!Semaphore 用来多线程互斥问题,相对于synchronized和Lock来说它允许多个线程访问一个临界区!例如各种池:数据库连接池、对象池

2020-09-22 11:39:16 1329

转载 Git 看这一篇就够了

上一篇讲 Git 的文章发出来没想到效果特别好,很多读者都要求继续深入的写。那今天齐姐简单讲下 Git 的实现原理,知其所以然才能知其然;并且梳理了日常最常用的 12 个命令,分为三大类分享给你。本文的结构如下:作者和开发原由 Git 的数据模型 常用命令 资源推荐作者和开发原由Talk is cheap. Show me the code.这句话就出自 Linux 和 Git 的作者Linus Torvalds。原本 Linux 内核的版本控制系统是用的 BitKeeper

2020-09-21 19:07:07 261

转载 spring boot 2.0增加跨域请求支持 全局配置 以及局部配置

一·简介spring boot升级到2.0后发现继承WebMvcConfigurerAdapter实现跨域过时了,那我们就紧随潮流。二·全局配置2.0以前 支持跨域请求代码:import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.CorsRegistry;import org.springframework.w

2020-09-21 17:35:55 290

原创 记spring boot打war包

1. pom.xmlpackage改为war<packaging>war</packaging><groupId>cn.bookcycle.panda</groupId><artifactId>panda-payservice</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging>.

2020-09-21 17:05:27 220

原创 避免出现重复的代码( Don’t Repeat Yourself)

避免出现重复的代码( Don’t Repeat Yourself):必要时抽取共性方法 或者抽象公共类 甚至是共用模块

2020-09-21 16:28:08 392

原创 不同类型接口的异常处理规范

对于公司外的 http/api 开放接口必须使用 errorCode; 跨应用间 RPC 调用优先考虑使用 Result 方式,封装 isSuccess()方法、errorCode、errorMessage; 而应用内部推荐直接抛出异常即可。说明:关于 RPC 方法返回方式使用 Result 方式的理由:使用抛异常返回方式,调用方如果没有捕获到就会产生运行时错误。 如果不加栈信息,只是 new 自定义异常,加入自己的理解的 error message,对于调用端解决问题的帮助不会太多。如果加了栈

2020-09-21 15:57:57 1914

原创 java 可能会出现NPE的情况

防止 NPE,是程序员的基本修养,注意 NPE 产生的场景: 1) 返回类型为基本数据类型,return 包装数据类型的对象时,自动拆箱有可能产生 NPE。 反例:public int f() { return Integer 对象}, 如果为 null,自动解箱抛 NPE。 2) 数据库的查询结果可能为 null。 3) 集合里的元素即使 isNotEmpty,取出的数据元素也可能为 null。 4) 远程调用返回对象时,一律要求进行空指针判断,防...

2020-09-21 14:46:01 1073

转载 大公司Java异常处理的规范

项目的运行环境一定会出现各种问题,比如数据库服务器连接不上或者网络不通畅,所以异常处理代码会频繁地出现在代码里,这里我们来总结下异常处理部分的使用要点。要点1,尽量用try…catch…finally的语句来处理异常,在finally应当尽可能回收内存资源。要点2,尽量减少用try监控的代码块。比如某个方法有100行,其中第4到第20行代码用来连接数据库,第50到90行代码用来连接网络,我就见过不少程序员为了图省事,直接用一个try来包围第4到第90行的代码,把一些不需要监控的代码也用try包围

2020-09-21 14:02:23 325

转载 Java静态类

在Java世界里,经常被提到静态这个概念,static作为静态成员变量和成员函数的修饰符,意味着它为该类的所有实例所共享,也就是说当某个类的实例修改了该静态成员变量,其修改值为该类的其它所有实例所见。最近一个项目里频繁用到static修饰的内部类,再读了一下《Effective Java》才明白为什么会用static来修饰一个内部类也就是本文的中心——静态类。如果一个类要被声明为static的,只有一种情况,就是静态内部类。如果在外部类声明为static,程序会编译都不会过。在一番调查后个人总结出了..

2020-09-21 13:30:18 311

原创 try catch在for循环外面还是里面

一、实例展示static void Main(string[] args) { //将异常写在循环外,出现异常循环终止 try { Console.WriteLine("抛出异常不输出"); for (int i = 0; i < 5; i++) { Console.WriteLine(i); Convert.ToInt16("test"); } } catch (Exce.

2020-09-21 11:26:11 8542

原创 关于catch语句块中要不要写业务逻辑代码

一、前言在catch中捕获到的异常一定要做处理,不能直接return。处理方式:(1)继续抛出(2)打出日志反例:上例中,对捕获到的异常没有做任何处理,这是不合适的,虽然不影响代码的逻辑,但是代码确实出问题了,而又没有将错误内容显示出来,这样会影响代码排除错误。正例:上例中,将捕获到的异常信息打印到日志中,这样就可以在不影响业务逻辑的情况下,还知道出现了什么异常,可以进一步解决问题。二、实例解释最近工作中,发现其他人员开发的模块功能中,在catch语句块中调.

2020-09-21 11:05:43 3259

原创 内存的读写速度是硬盘的多少倍

内存的读写速度是硬盘的多少倍:DDR3内存读写速度大概10G每秒(10000M)固态硬盘速度是300M每秒,是内存的三十分之一机械硬盘的速度是100M每秒,是内存的百分之一DDR4内存读写速度大概50G每秒(50000M)固态硬盘速度是300M每秒,是内存的二百分之一机械硬盘的速度是100M每秒,是内存的五百分之一CPU先是从自己带的一级缓存里找数据,还就是二级缓存,然后就是内存,再下面就是硬盘的虚拟内存,再再接就就是正常的硬盘分区。硬盘读数据:ms内存读数据:.

2020-09-17 18:26:25 21357

原创 maven删除不必要的依赖;优化pom依赖研究

maven如何去除没有使用的依赖:项目做了比较大的改动。以前很多的依赖都没有用了。能否让maven或者eclipse自动检索,哪些依赖是没有被使用的。标记出来或者直接删除。方法1:好像没有这个功能。你可以手动筛选。把不是必须的包配置注释掉。如果报异常,就把需要的包的注释打开。方法2:>mvn dependency:analyze[INFO] --- maven-dependency-plugin:2.8:analyze (default-cli) @ wtp-core ---

2020-09-16 15:01:34 4308

原创 HTTP 常见状态码

HTTP 常见状态码: 操作成功 2xx:200,ok;201,created Client Error 4xx:400,bad request;401,未授权;404,not found Server Error 5xx:500,internal server error

2020-09-16 14:13:31 260

转载 mysql 表结构(包含注释)

我们常用desc tablename方式查看表结构,但是看不到表注释其他两种方式1.show create table tablename方式2.show full fields from tablename 方式3.其他命令表操作命令:复制表结构:create table table1 like table;复制数据:insert into table1 select * from table机器授权:grant select on *.* to 'reader.

2020-09-16 13:58:56 1017

Java8 新特性.rar

Java8新特性,包含代码实例与技术文档。

2020-03-29

空空如也

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

TA关注的人

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