- 博客(141)
- 资源 (14)
- 收藏
- 关注
转载 SpringBoot全局异常统一处理
1.SpringBoot默认错误统一处理机制在基于SpringBoot的Web应用中,对于Http请求处理过程中发生的各种错误,如常见的400、404和500等错误,SpringBoot默认提供了一种映射到错误页面/error的机制来处理所有的错误,并且该页面也由SpringBoot默认提供,不需要开发者自己编写。该页面会显示请求的错误状态码, 以及一些错误原因和消息,如下图分别为SpringBoot默认提供的404错误和500错误页面:上述/error错误页面路径可以理解为SpringBoot默认为我
2021-04-06 21:43:30
844
转载 Spring Boot DevTools使用教程
springboot -devtools参考:SpringBoot热部署实现(devtools)Spring Boot DevTools使用教程引入DevTools通过提供自动重启和LiveReload功能,使您更快、更轻松地开发Spring Boot应用程序。除此之外,它还将各种属性设置为更适合本地开发的值。此外,它允许您远程连接到您的应用程序,并仍然使用其大部分功能。在生产中运行时,不要使用DevTools。如何使用DevTools进一步加快Spring Boot开发速度?你需要做的就是添加
2021-04-06 20:01:22
5981
1
转载 redis几种java客户端比较:jedis、redisson、lettuce
jedis、redisson、lettuce概况Jedis是Redis的Java实现的客户端,其API提供了比较全面的Redis命令的支持; Jedis中的方法调用是比较底层的暴露的Redis的API,也即Jedis中的Java方法基本和Redis的API保持着一致,了解Redis的API,也就能熟练的使用Jedis。 Redisson实现了分布式和可扩展的Java数据结构,提供很多分布式相关操作服务,例如,分布式锁,分布式集合,可通过Redis支持延迟队列。和Jedis相比,功能较为简单,.
2020-07-25 17:46:46
2918
转载 整理:Spring相关知识点
本篇文章将重点阐述Spring相关知识点,其他框架请期待下一篇Spring知识点-详解一、spring基本概念Sping中的基本概念本文涉及的流程与实现默认都是基于最新的5.x版本。spring中的几个重要概念如下:▌1.IOCIOC,就是控制反转,如最左边,拿公司招聘岗位来举例:假设一个公司有产品、研发、测试等岗位。如果是公司根据岗位要求,逐个安排人选,如图中向下的箭头,这是正向流程。如果反过来,不用公司来安排候选人,而是由第三方猎头来匹配岗位和候选人,然后进行推荐,如
2020-07-01 00:27:47
468
转载 Java JVM 参数设置大全
JVM参数设置说明参数名称 含义 默认值 -Xms 初始堆大小 物理内存的1/64(<1GB) 默认(MinHeapFreeRatio参数可以调整)空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制. -Xmx 最大堆大小 物理内存的1/4(<1GB) 默认(MaxHeapFreeRatio参数可以调整)空余堆内存大于70%时,JVM会减少堆直到 -Xms的最小限制 -Xmn 年轻代大小(1....
2020-06-29 11:52:17
555
转载 转:8年经验面试官详解 Java 面试秘诀
作者 |胡书敏责编 | 刘静出品 | 优快云(ID:优快云news)本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。Java程序员准备和投递简历的实战技巧1.1 简历中应包含的要素,一个都别落下为了让简历更吸引技术面试官或其它相关筛选简历的人,大家在准备简历应当注意“直接”两字:能让...
2020-06-24 19:04:09
562
转载 整理:如何估算吞吐量以及线程池大小
原文:https://chanjarster.github.io...估算吞吐量现在有一个task,它的执行时间分为2部分,第一部分做数学运算,第二部分等待IO。这两部分就是所谓的计算操作与等待操作。那么现在要求估算在CPU火力全开的情况下,执行这个task能够达到的吞吐量峰值是多少?那么我们要先知道执行这个task总共需要多少时间,计算部分花费多少时间,等待部分花费多少时间。假设这个task的计算部分花费1秒,等待部分花费9秒,并且开了10个线程执行10个task,在单核CPU的情况下
2020-06-23 18:31:05
2310
原创 系统吞吐量、QPS、并发数、响应时间,以及提高吞吐量的思路
一.系统吞度量要素:吞吐量是指系统在单位时间内处理请求的数量系统吞吐量几个重要参数:QPS(TPS)、并发数、响应时间QPS(TPS):每秒钟request/事务数量并发数:系统同时处理的request/事务数响应时间:一般取平均响应时间(很多人经常会把并发数和TPS理解混淆)理解了上面三个要素的意义之后,就能推算出它们之间的关系:QPS(TPS)= 并发数/平均响应时间 并发数 = QPS*平均响应时间...
2020-06-23 17:12:16
12212
转载 整理:redis一主多从+Sentinel哨兵高可用配置
Redis一主多从+Sentinel哨兵高可用方案一、简介Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案。实际上这意味着你可以使用Sentinel模式创建一个可以不用人为干预而应对各种故障的Redis部署。二、主要功能监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送
2020-06-16 23:11:32
1548
1
转载 整理:数据结构与算法之归并排序(递归的虚拟机栈帧的演示)
目录1、基本思想2、归并的实例:A-B两个有序数组归并3、递归:分解一个无需数组,然后归并3.1 递归分析3.2 虚拟机栈:演示递归的执行过程(重点)4、算法分析1、基本思想分析归并排序之前,我们先来了解一下分治算法。分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解。分治算法的一般步骤:分解,将要解决的问题划分成若干规模较小的同类问题; 求解,当子问题划分得足够小时,用较
2020-06-06 12:20:56
716
转载 转:dubbo新增最短响应时间-负载均衡策略分析
2020 年 5 月 15 日,Dubbo 发布 2.7.7 release 版本。其中有这么一个 Features新增一个负载均衡策略。先看一下提交记录:https://github.com/chickenlj/incubator-dubbo/commit/6d2ba7ec7b5a1cb7971143d4262d0a1bfc826d45负载均衡是基于 SPI 实现的,我们看到对应的文件中多了一个名为 shortestresponse 的 key。这个,就是新增的负载均衡策略了。
2020-06-05 19:44:03
3324
转载 整理:Spring IOC 实现原理
Spring IOC 实现原理IOC: Inversion of Control ,即 "控制反转" , 不是什么技术,而是一种思想。原先需要自行实例化的对象, 交给IOC容器去实现。那么控制反转,谁被控制? 谁被反转 ?在传统的JavaSE程序中,直接在类的内部通过new关键字来创建对象的实例,是程序主动去创建依赖对象,而IOC有一个专门的容器,来创建这些对象,由IOC容器来控制对象的创建,依赖对象也是容器帮忙查找创建并进行注入,对象只是被动的接受,依赖对象的获取被反转了。它还有一个更加形象的名字
2020-06-04 14:51:50
704
转载 整理:spring注解 @Autowired @Qualifier @Resource
spring注解 @Autowired @Qualifier @Resourcespringspringautowiredqualifierbytypebyname 在使用Spring框架中@Autowired标签时默认情况下使用Java代码@Autowired @Autowired注释进行自动注入时,Spring 容器中匹配的候选 Bean 数目必须有且仅有一个。当找不到一个匹配的 Bean 时,Spring 容器将抛出 BeanCreationException 异常...
2020-06-04 10:52:25
191
转载 整理:Java 线上问题排查思路与工具使用
一、前言Java 语言是当前互联网应用最为广泛的语言,作为一名 Java 程序猿,当业务相对比较稳定之后平常工作除了 coding 之外,大部分时间(70%~80%)是会用来排查突发或者周期性的线上问题。由于业务应用 bug(本身或引入第三方库)、环境原因、硬件问题等原因,Java 线上服务出现故障 / 问题几乎不可避免。例如,常见的现象包括部分请求超时、用户明显感受到系统发生卡顿等等。尽快线上问题从系统表象来看非常明显,但排查深究其发生的原因还是比较困难的,因此对开发测试或者是运维的同学产生了许
2020-06-02 23:02:42
382
转载 整理:数据结构与算法之二叉树
1、概述通过前面的学习,我们知道,有序数组可以利用二分查找法快速的查找特定的值,时间复杂度为O(log2N),但是插入数据时很慢,时间复杂度为O(N);链表的插入和删除速度都很快,时间复杂度为O(1),但是查找特定值很慢,时间复杂度为O(N)。那么,有没有一种数据结构既能像有序数组那样快速的查找数据,又能像链表那样快速的插入数据呢?树就能满足这种要求,不过依然是以算法的复杂度为代价。在编程的世界里,有一个真理叫“复杂度守恒定律”(当然,这是我杜撰的),一个程序当它降低了一个方面的复杂
2020-06-02 11:36:23
248
转载 整理:Redis中的lru算法实现
Redis中的lru算法实现redis发布于 2019-02-18首发于https://segmentfault.com/a/11...lru是什么lru(least recently used)是一种缓存置换算法。即在缓存有限的情况下,如果有新的数据需要加载进缓存,则需要将最不可能被继续访问的缓存剔除掉。因为缓存是否可能被访问到没法做预测,所以基于如下假设实现该算法:如果一个key经常被访问,那么该key的idle time应该是最小的。(但这个假设也是基于概率,并不是充.
2020-05-31 14:13:22
1612
转载 整理:ES索引存储原理
ES索引存储原理不变性写到磁盘的倒序索引是不变的:自从写到磁盘就再也不变。 这会有很多好处:不需要添加锁。不存在写操作,因此不存在多线程更改数据。提高读性能。一旦索引被内核的文件系统做了Cache,绝大多数的读操作会直接从内存而不需要经过磁盘。提升其他缓存(例如fiter cache)的性能。其他的缓存在该索引的生命周期内保持有效,减少磁盘I/O和计算消耗。当然,索引的不变性也有缺点。如果你想让新修改过的文档可以被搜索到,你必须重新构建整个索引。这在一个index可以容纳的数据量
2020-05-25 22:46:04
1007
转载 整理:ElasticSearch 2 (10) - 在ElasticSearch之下(深入理解Shard和Lucene Index)
ElasticSearch 2 (10) - 在ElasticSearch之下(深入理解Shard和Lucene Index)摘要从底层介绍ElasticSearch Shard的内部原理,以及回答为什么使用ElasticSearch有必要了解Lucene的内部工作方式? 了解ElasticSearch API的代价 构建快速的搜索应用 不要任何时候都commit 何时使用Stored Fields和Document Values Lucene可能不是一个合适的工具
2020-05-25 21:44:17
249
转载 整理:Elasticsearch 三种分页方式
1、from + size 浅分页"浅"分页可以理解为简单意义上的分页。它的原理很简单,就是查询前20条数据,然后截断前10条,只返回10-20的数据。这样其实白白浪费了前10条的查询。GET test_dev/_search{ "query": { "bool": { "filter": [ { "term": { "age": 28 } } ] }
2020-05-22 23:42:56
2491
7
转载 Elasticsearch为什么要移除type?
目录ES - es为什么要移除type?1、index、type的初衷2、为什么现在要移除type?3、替换策略4、迁移方案5、参考Elasticsearch 移除 type 之后的新姿势相关链接:ES - es为什么要移除type?1、index、type的初衷之前es将index、type类比于关系型数据库(例如mysql)中database、table,这么考虑的目的是“方便管理数据之间的关系”。2、为什么现在要移除type?2.1 在关系型数.
2020-05-22 15:47:47
3173
转载 参考整理:网络基础之网络协议
参考整理:网络基础之网络协议https://www.cnblogs.com/bypp/p/8252992.html网络基础之网络协议阅读目录一.操作系统基础 二.网络通信原理 三.网络通信实现 四.网络通信流程回到顶部一.操作系统基础 操作系统:(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。注:计算机(硬件)-&g...
2020-05-18 21:37:07
288
转载 Maven 多项目依赖版本管理(Maven Multi Project version management) 涉及自己的parent与spring-boot-starter-parent如何兼容
背景博主工作负责的微服务已经达到了十几个,每个微服务相互直接都是独立的,有独立的project,于是maven的依赖管理就很头疼了。每一个项目都需要添加自己的版本,还要互相比对,每次升级一些第三方依赖需要修改所有文件,于是产生了自己写parent的想法。maven多继承和继承链:https://blog.youkuaiyun.com/bingo_liu/article/details/73609381...
2020-04-01 12:07:52
570
转载 通过字节码展示Java8 Lambda的实现-整理
原文:https://www.cnblogs.com/bigshark/p/11257395.htmlJava8 增加了 Lambda 表达式,很大程度使代码变的更加简洁紧凑了,那么 Java8 是如何实现 Lambda 表达式的呢?1. 直接看一个简单的创建线程的例子。public class TestLambda { public static void mai...
2020-03-24 09:32:15
646
转载 浅析Linux文件系统
http://www.sohu.com/a/211162589_467784一、文件系统层次分析由上而下主要分为用户层、VFS层、文件系统层、缓存层、块设备层、磁盘驱动层、磁盘物理层用户层最上面用户层就是我们日常使用的各种程序,需要的接口主要是文件的创建、删除、打开、关闭、写、读等。VFS层我们知道Linux分为用户态和内核态,用户态请求硬件资源需要调用System Cal...
2019-01-21 15:55:19
350
转载 操作系统原理之进程和线程学习
操作系统原理之进程和线程学习 操作系统操作系统是控制应用程序执行的程序,并充当应用程序和计算机硬件之间的接口。操作系统为程序员屏蔽了硬件细节,并为程序员提供方便的接口.1. 程序开发:提供各种各样的工具和服务,编辑器和调试器2. 程序运行:处理指令数据载入到内存、初始化IO设备和文件、准备相关资源等调度问题3. IO设备访问:每个IO设备都有特有的指令集或控制信号,操作系...
2019-01-08 18:41:50
456
转载 以操作系统的角度述说线程与进程
作者: luoweifu 发布时间: 2017-11-29 17:17 阅读: 32986 次 推荐: 93 原文链接 [收藏] 原文发布于2015年10月25日 什么是线程 什么是线程?线程与进程有什么关系?这是一个非常抽象的问题,也是一个特别广的话题,涉及到非常多的知识。我不能确保能把它讲得好,也不能确保讲的内容全部都正确。即使这样,我也希望尽可能...
2019-01-08 18:41:05
243
转载 DevOps简介
DevOps简介https://www.cnblogs.com/liufei1983/p/7152013.htmlDevOps 是一个完整的面向IT运维的工作流,以 IT 自动化以及持续集成(CI)、持续部署(CD)为基础,来优化程式开发、测试、系统运维等所有环节。 DevOps的概念DevOps一词的来自于Development和Operations的组合,突出重视软件...
2018-12-11 15:12:00
192
转载 Runtime.getRuntime().availableProcessors()
然而,更大的问题在于Runtime.getRuntime().availableProcessors()也并非都能返回你所期望的数值。比如说,在我的双核1-2-1机器上,它返回的是2,这是对的。不过在我的1-4-2机器 上,也就是一个CPU插槽,4核,每个核2个超线程,这样的话会返回8。不过我其实只有4个核,如果代码的瓶颈是在CPU这块的话,我会有7个线程在同时 竞争CPU周期,而不是更合理的4个...
2018-10-25 11:09:03
26381
1
转载 Elasticsearch-bool组合查询 与或非
# bool组合查询# filter:过滤,不参与打分# must:如果有多个条件,这些条件都必须满足 and与# should:如果有多个条件,满足一个或多个即可 or或# must_not:和must相反,必须都不满足条件才可以匹配到 !非GET 51jobs/job/_search{ "query": { "bool": { "must": { ...
2018-10-18 10:28:43
14118
1
转载 TF-IDF原理及使用
一. 什么是TF-IDFTF-IDF(Term Frequency-Inverse Document Frequency, 词频-逆文件频率).是一种用于资讯检索与资讯探勘的常用加权技术。TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。上述引用总结...
2018-10-18 10:11:15
290
转载 Spring Boot + Log4j2 日志框架配置 (Maven)
参考Spring Boot官方文档 日志部分Spring Boot默认情况下,当使用"Starters" 使用Logback输出日志, 还包括适当的Logback路由, 确保其他的日志框架(Java Util Logging, Commons Logging, Log4j, SLF4J)都能正常使用Sping Boot文档的 26.5 Custom Log Configuration...
2018-10-16 12:39:58
2070
转载 Jenkins使用 -- 用户设置(角色权限管理)
https://www.jianshu.com/p/f1d378596a673. Jenkins使用 -- 用户设置建立用户主页点击系统管理 -> 管理用户,可见现在只有一个管理员用户点击右侧新建用户new.png输入所需信息现在,我们有两个用户退出admin账号,登录user1账号,确定没有问题,再次退出,返回admin账号分配用户角色...
2018-10-08 18:33:40
2097
转载 Elasticsearch之索引模板index template与索引别名index alias
https://www.cnblogs.com/zlslch/p/6478168.html为什么需要索引模板? 在实际工作中针对一批大量数据存储的时候需要使用多个索引库,如果手工指定每个索引库的配置信息(settings和mappings)的话就很麻烦了。所以,这个时候,就存在创建索引模板的必要了!!1 索引可使用预定义的模板进行创建,这个模板称作Index templ...
2018-09-27 10:04:07
4114
转载 在Elasticsearch里面使用索引别名
https://blog.youkuaiyun.com/u010454030/article/details/79719019在elasticsearch里面给index起一个aliases(别名)能非常优雅的解决两个索引无缝切换的问题,这个功能在某些场景下非常使用。比如电商的核心商品索引库,除了实时增量数据外,每天都要重建一遍索引,避免index里面的数据和db里面的数据不一致,因为index分sh...
2018-09-12 15:29:04
3033
转载 设置Idea类注释模板和方法注释模板
https://blog.youkuaiyun.com/u011961421/article/details/78773665网上找了一下,没有很详细且正确介绍Idea配置注释模板的,于是结合多篇文章自己琢磨整理出如下。设置类注释模板1.选择File–>Settings–>Editor–>File and Code Templates–>Includes–>File ...
2018-08-21 10:48:42
193
转载 Cglib动态代理实现原理-- 源码解读
Cglib动态代理实现方式我们先通过一个demo看一下Cglib是如何实现动态代理的。首先定义个服务类,有两个方法并且其中一个方法用final来修饰。public class PersonService { public PersonService() { System.out.println("PersonService构造"); } /...
2018-07-27 15:54:44
851
转载 TCP为什么需要3次握手与4次挥手
为什么需要“三次握手” 在谢希仁著《计算机网络》第四版中讲“三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误”。在另一部经典的《计算机网络》一书中讲“三次握手”的目的是为了解决“网络中存在延迟的重复分组”的问题。这两种不用的表述其实阐明的是同一个问题。 谢希仁版《计算机网络》中的例子是这样的,“已失效的连接请求报文段”...
2018-04-08 18:15:49
847
转载 Java Reflection(反射机制)详解
Java反射机制可以让我们在编译期(Compile Time)之外的运行期(Runtime)获得任何一个类的字节码。包括接口、变量、方法等信息。还可以让我们在运行期实例化对象,通过调用get/set方法获取变量的值。下面是一个小例子,让大家感受下Java反射的魔力Method[] methods = MyObject.class.getMethods();for(Method meth
2017-07-13 17:08:45
730
转载 一个例子让你了解Java反射机制
Java反射机制可以让我们在编译期(Compile Time)之外的运行期(Runtime)获得任何一个类的字节码。包括接口、变量、方法等信息。还可以让我们在运行期实例化对象,通过调用get/set方法获取变量的值。下面是一个小例子,让大家感受下Java反射的魔力Method[] methods = MyObject.class.getMethods();for(Method method : m
2017-07-13 17:01:15
366
转载 转:Lucene学习总结之一:全文检索的基本原理
一、总论根据http://lucene.apache.org/java/docs/index.html 定义:Lucene 是一个高效的,基于Java 的全文检索库。所以在了解Lucene之前要费一番工夫了解一下全文检索。那么什么叫做全文检索呢?这要从我们生活中的数据说起。我们生活中的数据总体分为两种:结构化数据 和非结构化数据 。结构化数据: 指具有固定格式或有限长度
2017-05-06 14:37:10
465
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人