自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?

昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要...

2019-11-05 21:35:50

阅读数 59955

评论数 178

原创 结合Spring Security进行web应用会话安全管理

一、Spring Security创建使用session的方法 Spring Security提供4种方式精确的控制会话的创建: always:如果当前请求没有session存在,Spring Security创建一个session。 ifRequired(默认): Spring Secur...

2020-01-17 22:20:16

阅读数 173

评论数 0

转载 Nginx 我们必须知道的那些事

1、Nginx 介绍Nginx NGINX写入解决服务器的少数之一C10K问题。不同于传统的服务器,NGINX不依靠线程来处理请求。相反,它使用一个更可扩展的事件驱动的(异步)架构。这种结构采用小,但更重要的是,可预测的量的负荷下存储器。即使你不希望处理成千上万的并发请求,你仍然可以从NGI...

2020-01-08 22:13:08

阅读数 393

评论数 0

原创 年前准备好金三银四,年后跳槽全新Java面试

前言 跳槽时时刻刻都在发生,没必要局限在金三银四,金九银十。但金银月的确让我学到很多。 今天给大家分享下我刚过不久的金三银四跳槽中整理的Java面试大纲,其中大部分都是面试过程中的面试题,可以对照这查漏补缺,当然了,这里所列的肯定不可能覆盖全部方式。 项目介绍 大部分情况,这是一场面试的开...

2020-01-08 22:03:05

阅读数 402

评论数 0

原创 新年蚂蚁金服部门面试题解析:MySQL+Redis+MongoDB+Zookeeper等

今天分享给大家的都是目前主流企业使用最高频的面试题库,也都是 Java 版本升级之后,重新整理归纳的最新答案,会让面试者少走很多不必要的弯路。同时每个专题都做到了详尽的面试解析文档,以确保每个阶段的读者都能看得懂,同时这部分面试文档也是可以免费的提供给有需要的同学们学习的,有需要的可以查看文末的获...

2020-01-07 22:10:29

阅读数 403

评论数 0

原创 雪花算法 Snowflake & Sonyflake

唯一ID算法Snowflake相信大家都不墨生,他是Twitter公司提出来的算法。非常广泛的应用在各种业务系统里。也因为Snowflake的灵活性和缺点,对他的改造层出不穷,比百度的UidGenerator、美团的Leaf、索尼的Sonyflake等等。这篇帖子主要是讲一下原生的Snowflak...

2020-01-07 22:03:09

阅读数 419

评论数 0

原创 Java容器系列-HashMap源码分析

HashMap 实现了 Map 接口。HashMap 使用的很广泛,但不是线程安全的,如果在多线程中使用,必须需要额外提供同步机制(多线程情况下推荐使用 ConCurrentHashMap)。 HashMap 的类图相对简单,主要就是继承了 AbstractMap,有一点需要注意,虽然没有实...

2020-01-06 21:35:47

阅读数 358

评论数 0

原创 一张图帮你记忆,Spring Boot 应用在启动阶段执行代码的几种方式

前言 有时候我们需要在应用启动时执行一些代码片段,这些片段可能是仅仅是为了记录 log,也可能是在启动时检查与安装证书 ,诸如上述业务要求我们可能会经常碰到 Spring Boot 提供了至少 5 种方式用于在应用启动时执行代码。我们应该如何选择?本文将会逐步解释与分析这几种不同方式 Com...

2020-01-06 21:26:43

阅读数 310

评论数 0

原创 如何实现分库分表插件

前言 随着系统数据量的日益增长,在说起数据库架构和数据库优化的时候,我们难免会常常听到分库分表这样的名词。 当然,分库分表有很多的方法论,比如垂直拆分、水平拆分;也有很多的中间件产品,比如MyCat、ShardingJDBC。 根据业务场景选择合适的拆分方法,再选择一个熟悉的开源框架,就能帮...

2020-01-06 21:21:31

阅读数 304

评论数 0

原创 BAT等大型互联公司面试必考题。这些题你会吗?(已整理内含答案)

据官方数据统计,在全球编程语言工程师的数量上,Java以900万的程序员数量位居首位,很多软件的开发都离不开它。深受社会上广大编程爱好的喜爱,我们整理100家IT名企(阿里、百度、腾讯)面试题,为了帮助更多想在金三银四提升现状的同学,整理了这篇文章帖子,只为帮助更多的人受益。 整套面试...

2020-01-05 21:24:32

阅读数 336

评论数 0

原创 Java | 浅克隆与深克隆

前言 克隆,即复制一个对象,该对象的属性与被复制的对象一致,如果不使用Object类中的clone方法实现克隆,可以自己new出一个对象,并对相应的属性进行数据,这样也能实现克隆的目的。 但当对象属性较多时,这样的克隆方式会比较麻烦,所以Object类中实现了clone方法,用于克隆对象,Ja...

2020-01-05 21:19:52

阅读数 314

评论数 0

原创 Spring框架中的异步执行

一、Spring框架中的异步执行 在Spring Framework中分别使用TaskExecutor和TaskScheduler接口提供异步执行和任务调度的抽象,本节我们着重讲解基于TaskExecutor支撑的的注解@Async如何实现异步处理的。 二、 @Async注解异步处理原理 在...

2020-01-05 21:14:44

阅读数 303

评论数 0

转载 Java没有创新了吗?Java 13提供可提高生产率和效率的功能

在其CodeOne会议上,Oracle解释了Java SE 13正式发布后Java的快速发布周期如何带来创新。在过去的二十多年中,Java编程语言新版本的开发速度相对较慢,仅每隔几年就会进行重大更新。甲骨文在2018年推出了一项新的发布策略,如今这一切都发生了变化,现在该策略现在每年可以看到多个J...

2020-01-03 22:37:00

阅读数 312

评论数 0

原创 JAVA线程池原理与源码分析

1、线程池常用接口介绍 1.1、Executor public interface Executor { void execute(Runnable command); } 执行提交的Runnable任务。其中的execute方法在将来的某个时候执行给定的任务,该任务可以在新线程、池化线...

2020-01-03 21:22:17

阅读数 308

评论数 0

原创 深入理解JVM - 内存溢出实战

Java堆溢出 Java堆用于存储对象实例,只要不断地创建对象,当对象数量到达最大堆的容量限制后就会产生内存溢出异常。最常见的内存溢出就是存在大的容器,而没法回收,比如:Map,List等。 出现下面信息就可以断定出现了堆内存溢出。 java.lang.OutOfMemoryError: ...

2020-01-03 20:55:52

阅读数 309

评论数 0

原创 Redis 到底是怎么实现“附近的人”这个功能的呢?

前言:针对“附近的人”这一位置服务领域的应用场景,常见的可使用PG、MySQL和MongoDB等多种DB的空间索引进行实现。而Redis另辟蹊径,结合其有序队列zset以及geohash编码,实现了空间搜索功能,且拥有极高的运行效率。本文将从源码角度对其算法原理进行解析,并推算查询时间复杂度。 ...

2020-01-02 22:25:39

阅读数 317

评论数 0

原创 选择合适Redis数据结构,减少80%的内存占用

前言 redis作为目前最流行的nosql缓存数据库,凭借其优异的性能、丰富的数据结构已成为大部分场景下首选的缓存工具。 由于redis是一个纯内存的数据库,在存放大量数据时,内存的占用将会非常可观。那么在一些场景下,通过选用合适数据结构来存储,可以大幅减少内存的占用,甚至于可以减少80%-9...

2020-01-02 21:58:48

阅读数 363

评论数 0

原创 完美解决 Spring Boot + Vue Axios 跨域

前言 前后台分离开发模式越来越来成为主流,刚接触这种开发模式时,我们必定会遇到一个问题: 跨域。 跨域 产生跨域问题的罪魁祸首是浏览器同源策略,当协议、子域名、主域名、端口号中任意一个不相同时,都算作不同域,不同域之间的网络请求就会触发跨域问题。跨域并不是请求发不出去,请求能发出去,服务端能...

2020-01-02 21:55:12

阅读数 335

评论数 0

原创 为什么我的JVM能实际使用的内存比-Xmx指定的少?

眼前的这个问题就是关于不同工具对于可用内存大小检测的差异。 其实就是一个工程师在调查一个应用程序的过高的内存使用情况时发现,尽管该程序已经被指定分配2G堆内存,但是JVM检测工具似乎并不能确定进程实际能用多少内存。例如 jconsole显示可用堆内存为1,963M,然而 jvisualvm 却显...

2019-12-31 22:09:52

阅读数 361

评论数 0

原创 灵魂拷问:Java的Comparable和Comparator是兄弟俩吗?

在逛 programcreek 的时候,我发现了一些专注细节但价值连城的主题。比如说:Java 的 Comparable 和 Comparator 是兄弟俩吗?像这类灵魂拷问的主题,非常值得深入地研究一下。 (标题有点皮嘛) 另外,我想要告诉大家的是,我越来越喜欢这个系列的文章了,不知道大家有...

2019-12-31 21:12:45

阅读数 366

评论数 0

原创 从1+1=2来理解Java字节码

背景 前不久《深入理解Java虚拟机》第三版发布了,赶紧买来看了看新版的内容,这本书更新了很多新版本虚拟机的内容,还对以前的部分内容进行了重构,还是值得去看的。本着复习和巩固的态度,我决定来编译一个简单的类文件来分析Java的字节码内容,来帮助理解和巩固Java字节码知识,希望也对阅读本文的你有...

2019-12-31 17:40:45

阅读数 846

评论数 2

原创 图解Java线程池原理

什么是线程池? 为了避免频繁重复的创建和销毁线程,我们可以让这些线程进行复用,在线程池中,总会有活跃的线程在占用,但是线程池中也会存在没有占用的线程,这些线程处于空闲状态,当有任务的时候会从池子里面拿去一个线程来进行使用,当完成工作后,并没有销毁线程,而是将线程放回到池子中去。 线程池主要解...

2019-12-30 22:13:27

阅读数 334

评论数 0

原创 Redis为什么是单线程、及高并发快的3大原因详解

Redis的高并发和快速原因 1.redis是基于内存的,内存的读写速度非常快; 2.redis是单线程的,省去了很多上下文切换线程的时间; 3.redis使用多路复用技术,可以处理并发的连接。非阻塞IO 内部实现采用epoll,采用了epoll+自己实现的简单的事件框架。epoll中的读、...

2019-12-30 17:32:03

阅读数 337

评论数 0

原创 微服务分布式事务4种解决方案实战

分布式事务 分布式事务是指事务的参与者,支持事务的服务器,资源服务器分别位于分布式系统的不同节点之上,通常一个分布式事物中会涉及到对多个数据源或业务系统的操作。 典型的分布式事务场景:跨银行转操作就涉及调用两个异地银行服务 CAP理论 CAP理论:一个分布式系统不可能同时满足一致性,可用性和...

2019-12-30 17:02:23

阅读数 337

评论数 0

原创 【搞定Jvm面试】 面试官:谈谈 JVM 类加载过程是怎样的?

类加载过程 Class 文件需要加载到虚拟机中之后才能运行和使用,那么虚拟机是如何加载这些 Class 文件呢? 系统加载 Class 类型的文件主要三步:加载->连接->初始化。连接过程又可分为三步:验证->准备->解析。 加载 类加载过程的第一步,主要完成下...

2019-12-29 20:45:54

阅读数 306

评论数 0

原创 我以为我对Mysql索引很了解,直到我遇到了阿里的面试官

相信很多人对于MySQL的索引都不陌生,索引(Index)是帮助MySQL高效获取数据的数据结构。 因为索引是MySQL中比较重点的知识,相信很多人都有一定的了解,尤其是在面试中出现的频率特别高。楼主自认为自己对MySQL的索引相关知识有很多了解,而且因为最近在找工作面试,所以单独复习了很多关于...

2019-12-29 20:29:21

阅读数 321

评论数 0

原创 熟悉这几道 Redis 高频面试题,面试不用愁

1、说说 Redis 都有哪些应用场景? 缓存:这应该是 Redis 最主要的功能了,也是大型网站必备机制,合理地使用缓存不仅可以加 快数据的访问速度,而且能够有效地降低后端数据源的压力。 共享Session:对于一些依赖 session 功能的服务来说,如果需要从单机变成集群的话,可以选择 ...

2019-12-29 20:26:12

阅读数 312

评论数 0

原创 支撑马蜂窝会员体系全面升级背后的架构设计

流量红利正逐渐走向终结,这已经不再是什么秘密。后互联网时代,如何维系住用户群,提升用户在平台上的体验是整个行业都需要考虑的事情。正是出于这一原因,现在全行业都在关注会员体系的搭建,这也是马蜂窝 2019 年重点投入的方向之一。 面对这个全行业都在发力的会员市场,要对「马蜂窝特色」的会员体系进行有...

2019-12-26 21:52:08

阅读数 314

评论数 0

原创 Spring详解Bean的生命周期

简介 在传统的Java程序中,实例化一个bean的过程是相当简单的,使用new关键字即可完成创建,然后该bean就可以使用了。一旦该bean不再被使用后,将由java虚拟机自动进行垃圾回收处理。相比之下,Spring创建bean的过程(即Bean的生命周期... 在传统的Java程序中,实例...

2019-12-26 16:02:17

阅读数 307

评论数 0

原创 Java稀疏数组_Java数据结构和算法

简介 在学习算法这一门学科,数组是一种很常见的数据结构。本篇文章笔者主要与读者分享的是常见的一种以数组作为数据结构的算法:稀疏数组。1、稀疏算法的基本介绍&nb... 在学习算法这一门学科,数组是一种很常见的数据结构。本篇文章笔者主要与读者分享的是常见的一种以数组作为数据结构的算法:...

2019-12-26 15:59:43

阅读数 306

评论数 1

原创 给HashMap做个深度剖析手术

人们对于任何事物的认知,往往都存在这么一个现象:只有你了解的东西,你才会感兴趣。 HashMap之于Java开发者来说,也是如此。相信多数人在起初相当长的时间内,对HashMap的印象都是“Map接口的实现类,是基于哈希的,用于存放键-值对,允许null作为键和值,非线程安全的”,仅此而已。于是在...

2019-12-25 20:50:39

阅读数 316

评论数 0

原创 详解Spring MVC 4之DispatcherServlet

Spring MVC 4与其它MVC框架类似,都是基于请求驱动的,通过中央Servlet处理器,将请求转发到控制器然后完成相应的功能。Spring的 DispatcherServlet与其它MVC框架不同的是,它与Spring的IoC容器集成并允许用户使用Spring的其它特性。 1. Dis...

2019-12-25 20:47:36

阅读数 310

评论数 0

原创 java面试题:DO DTO VO的区别

DO DTO VO的使用 DO:对应数据库表结构 VO:一般用于前端展示使用 DTO:用于数据传递。(接口入参和接口返回值都可以) 以ssm框架为例:controller层: public List<UserVO> getUsers(UserDTO userDto); ...

2019-12-25 20:30:42

阅读数 307

评论数 0

原创 五年java人的一点感悟

恍然间,发现自己在这个行业里已经摸爬滚打了五年了,原以为自己就凭已有的项目经验和工作经历怎么着也应该算得上是一个业内比较资历的人士了,但是今年在换工作的过程中却遭到了重大的挫折。详细过程我就不再叙述,在此,只想给大家说一说被拒绝的原因,看看大家有没有相似的经历,和类似的感悟。面试官对我的答复大致是...

2019-12-24 21:11:07

阅读数 313

评论数 0

原创 一个Java的Actor框架:kilim

除了Akka以外,另外一个将类似Erlang和Scala的Actor的并发模型引入Java的开源框架:kilim/kilim - GitHub,其使用了一种mailbox跨线程共享内存,没有锁或同步。 消息消费者代码如下,监听mailbox: public class Calculator ...

2019-12-24 21:03:21

阅读数 353

评论数 0

原创 SpringCloud 高可用的 Eureka Server 集群

一:为什么要搭建Eureka Server 集群 在一个分布式系统中,服务注册中心是最重要的基础部分,如果是单点话,遇到故障就是毁灭性的,理应随时处于可以提供服务的状态。为了维持其可用性,使用集群是很好的解决方案。Eureka通过互相注册的方式来实现高可用的部署,所以我们只需要将Eureke Se...

2019-12-23 21:44:29

阅读数 300

评论数 0

原创 BAT大佬强烈推荐《微服务架构实战》pdf文档,让你面试如鱼得水

最近几年,微服务架构一跃成为 IT 领域炙手可热的话题,大量一线互联网公司因为庞大的业务体量和业务需求,纷纷投入了微服务架构的建设中,像阿里巴巴、百度、美团等大厂,很早就已经开始了微服务的实践和应用。 一线大厂的带动,让微服务成为了 Java 系程序员面试的必备考点。其中是否具有 Spring C...

2019-12-23 21:41:56

阅读数 307

评论数 0

原创 基于SpringMVC的Cookie常用操作详解

在下面的内容中,我将介绍基于SpringMVC的一些Cookie常用操作,包括:cookie的增、删、改、查 一 Cookie的属性简介 对于一个Cookie来说,一般有以下几个属性: wKioL1g7jNqAPi17AABx-VgU5Gg747.png Name:一个cookie的...

2019-12-23 21:39:52

阅读数 295

评论数 0

原创 SpringMVC源码分析(8)剖析ViewResolver

ViewResolver很简单,通过名称(name),获取View视图的。 View视图 其实就是对应MVC中的"V" 1.ViewResolver 结构图 2.BeanNameViewResolver 通过把返回的逻辑视图名称去匹配定义好的视图bean对象。 ...

2019-12-23 20:50:54

阅读数 383

评论数 0

原创 今日头条Go建千亿级微服务的实践

今日头条当前后端服务超过80%的流量是跑在 Go 构建的服务上。微服务数量超过100个,高峰 QPS 超过700万,日处理请求量超过3000亿,是业内最大规模的 Go 应用。 Go 构建微服务的历程 在2015年之前,头条的主要编程语言是 Python 以及部分 C++。随着业务和流量的快速增...

2019-12-23 16:17:47

阅读数 308

评论数 0

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