自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Netty时间轮调度算法原理分析,再不了解你就out啦

一、时间轮介绍之前公司内部搭建的延迟队列服务有用到时间轮,但是一直没有了解过它的实现原理。最近有个和支付宝对接的项目,支付宝接口有流量控制,一定的时间内只允许 N 次接口调用,针对一些业务我们需要频繁调用支付宝开放平台接口,如果不对请求做限制,很容易触发流控告警。为了避免这个问题,我们按照一定延迟规则将任务加载进时间轮内,通过时间轮的调度来实现接口异步调用。很多开源框架都实现了时间轮算法,这里以 Netty 为例,看下 Netty 中时间轮是怎么实现的。1.1 快速入门下面是一个 API 使用例

2020-12-28 15:57:09 385

转载 spring微服务这么火,你竟然还不懂bean的生命周期

前言spring在起初是是通过xml文件进行bean的配置的,本文就从xml文件配置作为bean生命周期的一个入口讲起。一、猜想bean的生命周期先简单举例个xml的配置,通过如下方式即可配置我们的bean。<bean id=? class=?><property name=? value=?><property name=? ref=?></bean><bean id=? class=?><constructor-ar

2020-12-25 14:29:17 186

转载 mysql的 int 类型,刨析返回类型为BigDicemal 类型的奇怪现象

经过实测:mybatis 中的sql语句int类型 java接收的几种情况。1.用resultType=“int” (返回类型用int)1.1 如果 resultType=“int”, id 没做运算,<select id="getTest" resultType="int"> select id from ting_cmdb_physical_equipment where id=2897;</select>显示结果,java可以用 int 接收。1.

2020-12-24 14:06:24 1409

转载 关于 ReentrantLock 中锁 lock() 和解锁 unlock() 的底层原理浅析

如下代码,当我们在使用 ReentrantLock 进行加锁和解锁时,底层到底是如何帮助我们进行控制的啦?static Lock lock = new ReentrantLock();public static void main(String[] args) { // 使用两个线程模拟多线程执行并发 new Thread(() -> doBusiness(), "Thread-1").start(); new Thread(() -> doBusiness(),

2020-12-23 10:33:18 1975

原创 Java后端面试25大专题面试题总结,斩获阿里P7 offer全靠它

容我小小的嘚瑟一下下啦~~这份神仙面试宝典总共有25大专题:专题一:JavaOOP面试题专题二:Java集合/泛型面试题专题三:Java中的IO与NIO面试题专题四:Java反射面试题专题五:Java序列化面试题专题六:Java注解面试题专题七:多线程&并发面试题专题八:JVM面试题专题九:Mysql面试题专题十:Redis面试题专题十一:Memcached面试题专题十二:MongoDB面试题专题十三:Spring面试题专题十四:Spring Boot面试题专题十五.

2020-12-22 11:15:59 525

转载 学习tomcat——如何建立连接,处理请求

tomcat如何建立连接,处理请求学习探讨tomcat如何建立网络连接协议,并处理客户端过来的请求建立http网络连接,指定通信协议tomcat在创建时,会创建连接对象,负责处理客户端的请求,基于socketconnector 连接 protocol 协议 endpoint终端 socket插座,端口连接创建初始化connector -> protocol -> endpoint -> socket接收请求创建任务acceptor.socket.acceptor()-&gt

2020-12-22 10:21:56 491

原创 Elasticsearch难学?!10万字笔记!Git已83.8k星,盘它!

Elaticsearch,简称为es, es是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别(大数据时代)的数据。es也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTfulAPI来隐藏Lucene的复杂性,从而让全文搜索变得简单。在国内,阿里巴巴、腾讯、滴滴、字节跳动、饿了么、360安全、小米,vivo 等诸多知名公司都在使用Elasticsearch。今天,这份10万

2020-12-19 22:10:52 444 13

转载 你来说一下springboot的启动时的一个自动装配过程吧

前言没有面试就继续夯实自己的基础,前阵子的在面试过程中遇到的各种问题陆陆续续都会总结出来分享给大家,这次要说的也是面试中被问到的一个高频的问题,我当时其实没答好,因为很早之前是看到springboot的启动的一个过程的源码的,但是时间隔得有点久了(两年多没用过springboot),所以当时也没答好。这次好好总结这部分知识。SpringApplication.run()我看网上好多介绍springboot自动装配过的文章时,上来就直接说@SpringBootApplication 注解是一个

2020-12-17 15:26:26 764

原创 2020最新出炉Java学习进阶图,他们说吃透这个图的都进大厂了……进来自取

部分展示:全图:需要完整大纲及相关进阶资料的,点它

2020-12-16 16:17:05 151 1

转载 SpringBoot 自动配置原理以及启动流程

@SpringbootApplication这个注解标记的类为Springboot程序的主配置类,进入这个注解@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUST

2020-12-16 14:44:52 391

原创 入职蚂蚁金服,年薪200万的大佬,随手扔给我的笔记,啃完后发现差距不止一点点!

前言2020终于迎来了最后的一个月,这一年,全世界都不安定,被疫情包围,渐渐治愈和免疫,国内虽然看着和往常没有多大的区别,但对于经济的冲击,不知道又倒退了多少年?大大小小的公司面临倒闭或已破产,对于职场上的我们而言,无疑是致命的打击,好了,回到主题,作为JAVA博主,看下JAVA近况~今年,从java转到别的行业的人不少,也有不少人挤进这个市场想要分得一杯羹。年复一年,年年如此。当然,Java程序员市场需求依然是比较大的,而且Java岗位晋升方向多,这就为许多人带去了机会。但是另一方面,高级人才紧缺,很

2020-12-15 16:20:18 1170 2

转载 不懂看这——Mybatis执行流程源码分析

第一部分:项目结构user_info表:只有id和username两个字段User实体类:public class User { private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.use

2020-12-15 15:23:20 107

转载 能详细讲一下Spring用了哪些设计模式吗?

思维导图概述一个优秀的框架肯定离不开各种设计模式的运用,Spring框架也不例外。因为网上很多文章比较散乱,所以想总结一下在Spring中用到的设计模式,希望大家看完之后能对spring有更深层次的理解。工厂模式工厂模式我们都知道是把创建对象交给工厂,以此来降低类与类之间的耦合。工厂模式在Spring中的应用非常广泛,这里举的例子是ApplicationContext和BeanFactory,这也是Spring的IOC容器的基础。首先看BeanFactory,这是最底层的接口。public i

2020-12-14 15:01:10 102

原创 凭借《Java核心知识点》拿到多个大厂offer,从基础到进阶,算法、源码、设计模式真的太香了

不知道大家在面试中有没有这种感觉:面试官通常会在短短两小时内对面试者的知识结构进行全面了解,面试者在回答问题时如果拖泥带水且不能直击问题的本质,则很难充分表现自己,最终影响面试结果。针对这种情况,这份阿里架构师纯手打的Java核心知识点笔记应运而生!这份笔记在讲解知识点时不拖泥带水,力求精简,详细介绍了Java程序员面试时常被问及的核心知识点。这份笔记总共九大部分,涵盖了Java开发1年到Java架构师层面的面试知识点总结,作者承诺:这份笔记100%免费获取!因为这份笔记的知识点太多,小编没办法为大家

2020-12-11 22:00:23 89

转载 Mybatis动态映射,这次终于搞明白了

动态 SQL 是 MyBatis 的强大特性之一。如果你使用过 JDBC 或其它类似的框架,你应该能理解根据不同条件拼接 SQL 语句有多痛苦,例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL,可以彻底摆脱这种痛苦。使用动态 SQL 并非一件易事,但借助可用于任何 SQL 映射语句中的强大的动态 SQL 语言,MyBatis 显著地提升了这一特性的易用性。如果你之前用过 JSTL 或任何基于类 XML 语言的文本处理器,你对动态 SQL 元素可能会感觉似曾相识

2020-12-11 17:15:59 559 11

转载 配置 Spring Batch 批处理失败重试机制

1. 引言默认情况下,Spring批处理作业在执行过程中出现任何错误都会失败。然而有些时候,为了提高应用程序的弹性,我们就需要处理这类间歇性的故障。在这篇短文中,我们就来一起探讨 如何在Spring批处理框架中配置重试逻辑 。2. 简单举例假设有一个批处理作业,它读取一个CSV文件作为输入:username, userid, transaction_date, transaction_amountsammy, 1234, 31/10/2015, 10000john, 9999, 3/12/20

2020-12-11 17:05:43 710

转载 高效并发下的高速缓存和指令重排

1. 前言关于计算机系统处理器资源的高效使用,计算机系统设计就引入 高速缓存 以解决CPU 运算速度与主内存存储速度之间的速度不匹配问题;引入 指令重排 来提升 CPU 内部运算单元的执行利用效率。提升计算机处理器的运算能力,最简单、最有效的手段是让计算机支持多任务处理,可以充分利用处理器的运算能力。当然计算机操作系统的运算能力不单单取决于处理器,还需考虑系统中并行化与串行化的比重,磁盘I/O读写速度,网络通信,数据库交互等。2. 高速缓存2.1 高速缓存与缓

2020-12-10 20:41:24 114

转载 mybatis-plus如何自动填充字段创建时间和修改时间

前言根据阿里巴巴开发手册,表必备三个字段:id,create_time, update_time,针对创建时间和修改时间我们有两种方式可以去生成——数据库层面和代码层面自动填充数据库层面数据库层面,就是在设计表的时候,针对某一个字段,可以设置一些更新策略。比如可以设置,当该记录添加的时候,自动设置创建时间为当前时间。当该条记录修改的时候,自动设置更新时间为当前时间。但是,由于数据库的设计非常重要,开发过程中不能随意修改数据库结构,故此种方法不作考虑代码层面代码层面,就是我们使用代码去填充创建时间

2020-12-09 16:09:31 3852

原创 工作10年+,从阿里P8出来,头发也没了,人也虚了,就剩下这份笔记了!

工作了11年,工作压力大,节奏快,但是从技术上确实得到了成长,尤其是当你维护与大促相关的系统的时候,熬到P8也费了不少心思,小编也是个爱学习的人,把这几年的工作经验整理成了一份完整的笔记。此笔记已助朋友拿到腾讯,阿里,美团等9个offer。由于细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!大致内容包括了: Java 集合、JVM、多线程、并发编程、设计模式、Spring全家桶、Java、MyBatis、ZooKeeper、Dubbo、Elasticsear

2020-12-09 14:54:51 961 17

转载 手写spring boot starter起步依赖demo

Spring Boot起步依赖(starter)大大简化了项目构建中的依赖配置,利用了传递依赖解析,把常用库聚合在一起,组成了几个为特定功能而定制的依赖,这些依赖项是使项目快速启动和运行所需的依赖项,如spring-boot-starter-web起步依赖,聚合了spring-boot-starter、spring-boot-starter-json、spring-boot-starter-tomcat、spring-web、spring-webmvc等依赖,使得我们的web项目无需引入多个web相关的依赖

2020-12-08 17:40:34 261

转载 volatile关键字的原理和要避免的误区

背景最近做code review看到有的同学在承载缓存数据的变量里加了volatile关键字。想起来之前项目中也看到有的同学习惯在从配置中心获取的配置数据的变量上加volatile。今天就来探讨一下这个volatile加的有没有必要。volatile关键字的作用1>防止指令重排2>禁用工作内存缓冲区,直接使用主内存。经典使用场景场景1public static Singleton getInstance() { //第一次null检查 if (instan

2020-12-07 22:12:35 168

转载 SpringBoot-整合HikariCP连接池

HikariCP连接池概述池化思想池化思想是我们项目开发过程中的一种非常重要的思想,如整数池,字符串池,对象池、连接池、线程池等都是池化思想的一种应用,都是 通过复用对象,以减少因创建和释放对象所带来的资源消耗,进而来提升系统性能。 例如Integer对象的内部池应用。package com.cy.java.pool;public class TestInteger01 { public static void main(String[] args) { Integer n1

2020-12-04 14:53:50 3497 1

转载 SpringBoot整合MybatisPlus实战动态SQL

MyBatis的动态SQL是最令人喜欢的功能在了解 动态SQL之前,你首先得知道一个表达式 OGNL,这个是基础!面试常问问题 : Mybatis 中$与#的区别?#是将传入的值当做字符串的形式,select id,name,age from test where id =#{id},当把id值传入到后台的时候,就相当于 select id,name,age from test where id =‘1’." "是将传入的数据直接显示生成sql语句,select id,name,age from

2020-12-03 21:28:17 824

原创 太全了吧!阿里面试官纯手打:金三银四跳槽必会Java核心知识点笔记整理

不知道大家在面试中有没有这种感觉:面试官通常会在短短两小时内对面试者的知识结构进行全面了解,面试者在回答问题时如果拖泥带水且不能直击问题的本质,则很难充分表现自己,最终影响面试结果。针对这种情况,这份阿里架构师纯手打的Java核心知识点笔记应运而生!这份笔记在讲解知识点时不拖泥带水,力求精简,详细介绍了Java程序员面试时常被问及的核心知识点。这份笔记总共九大部分,涵盖了Java开发1年到Java架构师层面的面试知识点总结,作者承诺:这份笔记100%免费获取!因为这份笔记的知识点太多,小编没办法为大家

2020-12-03 15:40:35 216 9

转载 从这五个方面看hashmap,新手一遍就能懂

前言HashMap可以说是Java中最常用的集合类框架之一,是Java语言中非常典型的数据结构,我们总会在不经意间用到它,很大程度上方便了我们日常开发。在很多Java的笔试题中也会被问到,最常见的,“HashMap和HashTable有什么区别?”,这也不是三言两语能说清楚的,这种笔试题就是考察你来笔试之前有没有复习功课,随便来个快餐式的复习就能给出简单的答案。HashMap概述:HashMap是基于哈希表的Map接口的非同步实现(Hashtable跟HashMap很像,唯一的区别是Hashtalbe

2020-12-02 16:14:46 136

原创 秋招总结——字节跳动,三轮面试,四个小时,灵魂拷问,结局我哭了但下次还敢

写在开篇和往年相比,今年的春招看上去不是那么顺利,多少都受疫情有所影响,但是令我惊讶的是第一家给我面试机会的公司竟然是宇宙条。一开始接到面试通知时,心情特别复杂,紧张又兴奋,字节跳动是出了名的考算法,实际上我算法部分是相对薄弱的。这次面试,一共三轮,共计四个小时左右,这三轮面试对我来说,简直是灵魂拷问,至于结局,往下看吧!话不多说,面试场景具体如何,各位看官捧个场吧。另外,下文中涉及到的面试题答案、复习资料,均有完整PDF版分享,点击直达下载~第一轮面试:1小时28分钟自我介绍数据库索引的

2020-12-01 17:08:32 2108 16

综合面试题.docx

本文档包含了Java一些常见的面试题,spring、虚拟机JVM、redis、MySQL等,整整46页的文档,包含面试题上百题!

2020-04-09

空空如也

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

TA关注的人

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