![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 78
图灵学院
Java工程化、高性能及分布式、高性能、高架构。性能调 优、Spring,MyBatis,Netty源码分析和大数据等多个知识点高级进阶干货分享
展开
-
【金九银十跳槽季】Java工程师如何在1个月内做好面试准备?
一面(问了数据结构、jvm、锁等):自我介绍和项目 HashMap底层如何实现? Hash一致算法? 说说HashMap和ConcurrentHashMap的区别?treemap和HashMap的区别? java的内存分区? java对象的回收方式,回收算法? CMS和G1了解吗? CMS解决什么问题,说一下回收的过程? CMS回收停顿了几次? java栈什么时候会内存溢出,java堆呢,说一种场景? 集合类如何解决这个问题(软引用和弱引用),讲下这个两个引用的区别? jav...原创 2020-09-22 20:36:33 · 258 阅读 · 0 评论 -
消息中间件与Spring集成和场景实例
消息中间件与Spring集成和场景实例spring的xml配置<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instan...原创 2018-10-18 14:42:50 · 241 阅读 · 0 评论 -
排序算法时间复杂度、空间复杂度分享
排序算法时间复杂度、空间复杂度分享今天分享的是时间复杂度、空间复杂度相关内容,可以简单了解下复杂度相关的知识。复杂度:复杂度描述的是算法执行时间或占用空间与数据规模的增长关系我们用大O表示法来表达复杂度关系 T(n) = O(f(n))其中 T(n) 是代码的执行时间,n 表示数据的规模,f(n)表示代码执行的总次数。O 表示代码的执行时间 T(n) 与 f(n) 成正比关系。要注...原创 2018-10-15 20:14:03 · 185 阅读 · 0 评论 -
高性能集合流式操作,MapReduce初体验
高性能集合流式操作,MapReduce初体验 1、MapReduce简介源自于google的MapReduce论文,发表于2004年12月,HadoopMapReduce是google MapReduce 克隆版。MapReduce是一种计算模型,用以进行大数据量的计算。其中Map对数据集上的独立元素进行指定的操作,生成键-值对形式中间结果。Reduce则对中间结果中相同“键”的所有“值”...转载 2018-10-19 14:58:20 · 343 阅读 · 0 评论 -
HashMap深度分析
HashMap深度分析HashMap 是 Map 的一个实现类,它代表的是一种键值对的数据存储形式。大多数情况下可以直接定位到它的值,因而具有很快的访问速度,但遍历顺序却是不确定的。HashMap最多只允许一条记录的键为null,允许多条记录的值为null。不保证有序(比如插入的顺序)、也不保证序不随时间变化。jdk 8 之前,其内部是由数组+链表来实现的,而 jdk 8 对于链表...转载 2018-10-17 15:53:35 · 119 阅读 · 0 评论 -
JVM整体结构与垃圾回收算法介绍问题
1.类加载器(ClassLoader):在JVM启动时或者在类运行时将需要的class加载到JVM中。2.执行引擎:负责执行class文件中包含的字节码指令(执行引擎的工作机制,这里也不细说了,这里主要介绍JVM结构);3.内存区(也叫运行时数据区):是在JVM运行的时候操作所分配的内存区。运行时内存区主要可以划分为5个区域,如图:方法区(Method Area):用于存储类结构信...转载 2018-10-22 14:10:39 · 217 阅读 · 0 评论 -
Java分布式框架netty之NIO框架区别分析
Netty概述:1、netty是基于Java NIO的网络应用框架,client-server框架2、Netty是一个高性能、异步事件驱动的NIO框架,它提供了对TCP、UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制获得IO操作结果。3、作为当前最流行的NI...转载 2018-10-25 14:52:20 · 405 阅读 · 0 评论 -
微服务之API网关接口设计
微服务之API网关接口设计API网关,顾名思义,就是外部到内部的一道门,其主要功能:服务路由:将前段应用的调用请求路由定位并负载均衡到具体的后端微服务实例,对于前端应用看起来就是1个应用提供的服务,微服务对于前段应用来说就是黑盒,前段应用也不需要关心内部如何分布,由哪个微服务提供。主要有静态路由和动态路由。 静态路由:有时候需要通过域名或者其他固定方式提供和配置路由表 动态路...原创 2018-10-28 14:30:22 · 4752 阅读 · 0 评论 -
并发编程的艺术-线程池源码解析
线程池的作用:1,降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。2,提搞响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。3,提高系统的客观理性。线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一分配,调优和监控。但是,要做到合理利用线程池,必须对其实现原理了如指掌。一,线程池的实现原理当想一个...原创 2018-10-21 13:46:55 · 140 阅读 · 0 评论 -
JAVA并发编程之多线程并发同步业务场景与解决方案
Java并发编程是一个很热点的话题,无论在面试时候还是在高并发的场景中。都会涉及到Java的并发编程相关的知识。Java的并发编程有两个主要的基础知识,一个是线程安全另一个是线程间通信。本Java并发编程系列博客作为博主系统学习Java并发编程的知识记录。也希望可以帮助其他人。摘要 1,线程概念 2,Java线程的实现方式 3,Java线程状态流转介绍 4,Thread类中的...原创 2018-10-23 14:34:30 · 867 阅读 · 0 评论 -
高并发场景下的缓存有哪些常见的问题?
分布式缓存重建并发冲突解决方案对于缓存生产服务,可能部署在多台机器,当redis和ehcache对应的缓存数据都过期不存在时,此时可能nginx过来的请求和kafka监听的请求同时到达,导致两者最终都去拉取数据并且存入redis中,因此可能产生并发冲突的问题,可以采用redis或者zookeeper类似的分布式锁来解决,让请求的被动缓存重建与监听主动的缓存重建操作避免并发的冲突,当存入缓存...原创 2018-10-29 16:10:58 · 557 阅读 · 0 评论 -
互联网分布式系统Session一致性问题解析
1. 什么是Session?用户使用网站的服务,需要使用浏览器与Web服务器进行多次交互。HTTP协议本身是无状态的,需要基于HTTP协议支持会话状态(Session State)的机制。具体的实现方式是:在会话开始时,分配一个唯一的会话标识(SessionID),并通过Cookie将这个标识告诉浏览器,以后每次请求的时候,浏览器都会带上这个会话标识SessionID来告诉Web服务器这...转载 2018-10-24 15:26:22 · 282 阅读 · 0 评论 -
解决Spring MVC @ResponseBody返回中文字符串乱码问题
解决Spring MVC @ResponseBody返回中文字符串乱码问题引起乱码原因为spring mvc使用的默认处理字符串编码为ISO-8859-1,具体参考org.springframework.http.converter.StringHttpMessageConverter类中public static final Charset DEFAULT_CHARSET = Charset...原创 2018-10-30 19:42:37 · 3279 阅读 · 1 评论 -
Spring Boot 如何解决项目启动时初始化资源
在我们实际工作中,总会遇到这样需求,在项目启动的时候需要做一些初始化的操作,比如初始化线程池,提前加载好加密证书等。今天就给大家介绍一个 Spring Boot 神器,专门帮助大家解决项目启动初始化资源操作。这个神器就是 CommandLineRunner, CommandLineRunner 接口的 Component 会在所有 SpringBeans都初始化之后, Spri...转载 2018-11-04 15:45:10 · 575 阅读 · 0 评论 -
Log4j1、Logback 以及 Log4j2 性能测试对
环境准备测试结果环境jdk:1.7.0_79cpu:i5-4570@3.20GHz 4核eclipse:3.7操作系统:win7准备1.log4j:1.7.21<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12<...转载 2019-08-05 13:56:01 · 823 阅读 · 0 评论 -
周围的餐馆有哪些?GeoHash算法
当今年代,每个人都有智能手机,出门在外,自然离不开使用手机地图了,查找附近的餐馆,附近的地铁站,非常方便,可是在这项技术背后又隐藏着什么算法呢?这篇博客将会讲述这个技术背后的GeoHash算法以及基本的实现。首先既然算法名字叫做GeoHash了那么对单词比较敏感的人可能已经猜出来了,差不多就是对当前的位置生成一个Hash值,然后再比较相似吧,是的,大概就是这个样子。GeoHash的原理就是讲...转载 2019-08-05 14:39:07 · 320 阅读 · 0 评论 -
教你使用 JPA 实现乐观锁
示例总结乐观锁的概念就不再赘述了,不了解的朋友请自行百度谷歌之,今天主要说的是在项目中如何使用乐观锁,做成一个小demo。持久层使用jpa时,默认提供了一个注解@Version先看看源码怎么描述这个注解的@Target({ METHOD, FIELD })@Retention(RUNTIME)public @interface Version {}简单来说就是用一个versi...转载 2019-08-05 15:04:55 · 276 阅读 · 0 评论 -
Dubbo 一些你不一定知道但是很好用的功能
直连Provider多版本回声测试隐式参数上下文本地伪装泛化调用访问日志延迟暴露dubbo功能非常完善,很多时候我们不需要重复造轮子,下面列举一些不一定知道,但是很好用的功能;直连Provider在开发及测试环境下,可能需要绕过注册中心,只测试指定服务提供者,这时候可能需要点对点直连,点对点直连模式,将以服务接口为单位,忽略注册中心的提供者列表,A 接口配置点对点,不影响...转载 2019-08-05 17:20:34 · 67 阅读 · 0 评论 -
关于消息队列的思考
消息队列组成消息队列的消费语义1、消息至多被消费一次2、消息至少被消费一次3、消息仅被消费一次结语消息队列是服务架构中常见的组件,可用于服务间解耦、事件广播、任务异步/延迟处理等,本文对于消息队列的实现如何满足几种消费语义进行了阐述。消息队列组成生产者(Producer):负责产生消息消息代理(Message Broker):负责存储/转发消息(转发分为推和拉两种,拉是指...转载 2019-08-08 13:49:27 · 79 阅读 · 0 评论 -
某小公司 RESTful、共用接口、前后端分离、接口约定的实践
前言 我们的目标 我们做了哪些事 之前的我们 目前效果 总结 前言随着互联网高速发展,公司对项目开发周期不断缩短,我们面对各种需求,使用原有对接方式,各端已经很难快速应对各种需求,更难以提高效率。于是,我们不得不重新制定对接规范、开发逻辑以便快速上线项目。我们的目标 尽可能的缩小沟通的成本,开最少的会,确定大部分的事。 ...转载 2019-08-08 15:08:13 · 108 阅读 · 0 评论 -
脑洞大开,如何生成 2018 年度代码报告
收集信息 分析 图片处理 成果 小结 网易云音乐、B站等 APP 都放出了用户的 2018 年度使用报告,在朋友圈掀起了一股年度报告的热潮,我昨天在刷微博时看到”精分君”分享的《年度骂人报告》后,在被笑得眼泪都出来的同时,也在想我是不是也可以出一个《年度代码报告》呢?收集信息得益于今年工作的稳定,所有本地代码仓库都老实地放在各个 jetBea...转载 2019-08-08 15:29:11 · 367 阅读 · 0 评论 -
Java 实现单例模式的 9 种方法
什么是单例模式单例模式的特点单例模式VS静态类单例模式的实现一. 什么是单例模式因进程需要,有时我们只需要某个类同时保留一个对象,不希望有更多对象,此时,我们则应考虑单例模式的设计。二. 单例模式的特点单例模式只能有一个实例。单例类必须创建自己的唯一实例。单例类必须向其他对象提供这一实例。三. 单例模式VS静态类在知道了什么是单例模式后,我想你一定会想到静态类,“既然...转载 2019-08-06 14:46:45 · 95 阅读 · 0 评论 -
分布式作业系统 Elastic-Job-Cloud 源码分析 —— 作业配置
本文基于 Elastic-Job V2.1.5 版本分享1.概述2.云作业App-2.1云作业App配置类-2.2操作云作业App配置3云作业-3.1云作业配置-3.2本地云作业配置-3.3云作业配置总结1. 概述本文主要分享 Elastic-Job-Cloud 作业配置。如果你阅读过以下文章,有助于对本文的理解:《官方文档 —— RESTFUL API》《Elas...转载 2019-08-06 15:12:31 · 167 阅读 · 0 评论 -
我们来谈下高并发和分布式中的幂等处理
我们先来谈下幂等的概念 实现幂等性的技术方案 最后总结: 我们先来谈下幂等的概念抽象概念幂等(idempotent、idempotence)是一个数学与计算机学概念,常见于抽象代数中。在编程中,一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响...转载 2019-08-18 16:02:57 · 83 阅读 · 0 评论 -
从 MySQL 物理外键开始的思考
首先贴一下知乎上的问题和回答为什么很多mysq课程不推荐用物理外键之前是由于有师弟跟我讨论这个问题,然后我是顺便搜了下知乎把想法也都写下,现在把他放回博客,然后进行了一下细化,依然是just a door系列,依然是为了更前面的探讨一些问题,本期topic是物理外键~let’s start with mysqlFirst of all,什么是物理外键,好吧虽然基础,但是我们不能跑偏,所以啰...转载 2019-08-07 14:26:41 · 166 阅读 · 0 评论 -
分布式作业系统 Elastic-Job-Cloud 源码分析 —— 作业调度(一)
本文基于 Elastic-Job V2.1.5 版本分享概述作业执行类型Producer 发布任务TaskLaunchScheduledService 提交任务TaskExecutor执行任务SchedulerEngine 处理任务的状态变更1. 概述本文主要分享 Elastic-Job-Cloud 调度主流程。对应到 Elastic-Job-Lite 源码解析文章如下:...转载 2019-08-07 14:57:52 · 354 阅读 · 0 评论 -
DB-Engines 2018:PostgreSQL 蝉联“年度数据库”称号
全球知名的数据库流行度排行榜网站 DB-Engines 于今日宣布:PostgreSQL 为 2018 年度数据库管理系统。理由如下:根据 PostgreSQL 在 2018 年的数据库排名,它比其他监测到的 343 个数据库管理系统都更受欢迎。因此,决定宣布PostgreSQL 为 2018 年的年度 DBMS。计算结果基于当前(2019年1月)分数和2018年1月的分数差值获得。最终...转载 2019-08-07 15:20:31 · 94 阅读 · 0 评论 -
一起来学 SpringBoot 2.x | 第十六篇:定时任务详解
定时任务概述Timer 方式基于 ScheduledExecutorServiceSpring Task(本章关键)1、导入依赖2、定时任务3、主函数4、测试总结说点什么SpringBoot 是为了简化 Spring应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以...转载 2019-08-09 20:12:26 · 144 阅读 · 0 评论 -
并发编程核心框架AQS之独占锁原理详解
怎么理解幂等性 HTTP GET方法 HTTP POST方法 HTTP PUT方法 HTTP PATCH方法 HTTP DELETE方法 如何设计符合幂等性的高质量RESTful API HTTP GET方法 vs HTTP POST方法 HTTP POST方法 vs HTTP ...转载 2019-08-19 14:53:22 · 87 阅读 · 0 评论 -
图解 SQL 里的各种 JOIN
前言 约定 常用的 JOIN 延伸用法 总结 更新:更多的 JOIN 补充说明 参考 从业以来主要在做客户端,用到的数据库都是表结构比较简单的 SQLite,以我那还给老师一大半的 SQL 水平倒也能对付。现在偶尔需要到后台的 SQL Server 里追查一些数据问题,就显得有点捉襟见肘了,特别是各种 JOIN,有时候傻...转载 2019-08-19 15:47:33 · 195 阅读 · 0 评论 -
一组匹配中国大陆手机号码的正则表达式
正则表达式 ([PCRE]) 匹配所有号码(手机卡 + 数据卡 + 上网卡) 匹配所有支持短信功能的号码(手机卡 + 上网卡) 手机卡 虚拟运营商 物联网数据卡 上网卡 在线测试/调试 规则 参考 一组匹配中国大陆手机号码的正则表达式。正则表达式 ([PCRE]...转载 2019-08-19 15:51:49 · 758 阅读 · 0 评论 -
优秀程序员写代码一定会用的 11 条经验
可读性 格式 死代码 嵌套代码 使用对象 大型代码块 命名规则 删除注释# 合理的返回 三的原则 对称性 这是一篇值得收藏起来,隔三差五就拿来重读的文章!因为作者向你保证,他“遇到的所有糟糕的代码,都是因为没采纳这些实践经验。而任何一段优秀的代码,都采纳了至少部分实践经验。”还等什么?赶...转载 2019-08-19 16:00:13 · 101 阅读 · 0 评论 -
一起来学 SpringBoot 2.x | 第十八篇:轻松搞定全局异常
初窥异常 具体代码 导入依赖 自定义异常 异常信息模板 控制层 异常处理(关键) 主函数 测试 总结 说点什么 SpringBoot是为了简化Spring应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注...转载 2019-08-19 16:08:37 · 98 阅读 · 0 评论 -
如何正确应对在线故障
线上运行的Java应用突然没有响应、响应缓慢,进程突然消失,遇到这些情况应该如何应对呢?在此我向大家推荐一个架构学习交流群。交流学习群号:993070439 里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优...转载 2019-08-19 16:54:24 · 77 阅读 · 0 评论 -
分布式作业系统 Elastic-Job-Cloud 源码分析 —— 作业失效转移
本文基于 Elastic-Job V2.1.5 版本分享 1. 概述 2. 记录作业失效转移 3. 提交失效转移作业 666. 彩蛋 1. 概述本文主要分享Elastic-Job-Cloud 作业失效转移。对应到 Elastic-Job-Lite 源码解析文章为《Elastic-Job-Lite 作业作业失效转移》。你需要对《Elastic-Job...转载 2019-08-20 13:56:00 · 183 阅读 · 0 评论 -
大型网站架构演进的五大阶段盘点
阶段一 从PHP 到Java 阶段二 分布式改造 阶段三 无线化改造 阶段四 中台改造 阶段五 国际化 一个创业公司起步时很可能就两台机器,一台Web 服务器、一台数据库服务器,在一个应用系统中集成了所有功能模块,但随着业务的发展、流量的增长,单应用远远不能满足业务需求。下面我们一同来聊聊网站架构发展所经历的几次主要演进,包括:从PHP 到Jav...转载 2019-08-20 14:12:27 · 124 阅读 · 0 评论 -
消息中间件 RocketMQ 源码解析 —— 调试环境搭建
0. 友情提示 1. 依赖工具 2. 源码拉取 3. 启动 RocketMQ Namesrv 4. 启动 RocketMQ Broker 5. 启动 RocketMQ Producer 6. 启动 RocketMQ Consumer 666. 彩蛋 0. 友情提示阅读源码之前,建议胖友对 RocketMQ 的文档已经...转载 2019-08-20 14:14:27 · 386 阅读 · 0 评论 -
Git 代码防丢指南
1. 常见工作流程 1.1 更新操作 1.2 创建本次提交 1.3 推送远程分支 2. 常见问题分析 2.1 合并远程分支冲突 2.2 恢复储藏冲突 2.3 文件占用错误 3. 先提交还是先更新?是个问题! 3.1 先提交后更新导致的问题 3.2 推荐先...转载 2019-08-20 14:42:38 · 70 阅读 · 0 评论 -
我对分布式多中心架构的几点看法
企业内的集成架构 去中心架构不适合应用集成 系统安全对去中心架构的限制 通过分区多中心来降低集中负载 通过数据冗余来提高查询类服务效率 企业内分布式多中心架构 能力中心的基本逻辑结构 互联网开放平台 其余各中心能力简介 小结 每天都在谈SOA和微服务,但你真的理解什么是服务吗?服务的技术架构之争...转载 2019-08-20 14:59:55 · 347 阅读 · 0 评论 -
如何理解 RESTful 的幂等性
怎么理解幂等性 HTTP GET方法 HTTP POST方法 HTTP PUT方法 HTTP PATCH方法 HTTP DELETE方法 如何设计符合幂等性的高质量RESTful API HTTP GET方法 vs HTTP POST方法 HTTP POST方法 vs HTTP ...转载 2019-08-20 15:05:32 · 146 阅读 · 0 评论