史上最详细JVM与性能优化知识点综合整理
JVMJVM是java的核心和基础,在java编译器和os平台之间的虚拟处理器。它是一种利用软件方法实现的抽象的计算机基于下层的操作系统和硬件平台,可以在上面执行java的字节码程序。 java编译器只要面向JVM,生成JVM能理解的代码或字节码文件。Java源文件经编译成字节码程序,通过JVM将每一条指令翻译成不同平台机器码,通过特定平台运行。 以下资料是我利用工作之余耗时将近一个月整理出来
三面腾讯,已拿offer!分享复习经验和后台开发面经(附赠复习资料)
复习过程 项目准备;leetcode:刷完剑指之后每天会刷2-4道leetcodejava基础: 主要刷面经、重点掌握垃圾回收机制操作系统: 之前没学过,用几天时间看了一下最重要的进程线程、死锁、消费者生产者、哲学家问题、银行家算法计算机网络:花几天时间复习了一下,重点复习tcp(三次握手四次挥手拥塞控制流量控制)、udp、https数据库: 重点了解了索引的实现以及引擎的区别数据结构和算法
关于事务、事务的隔离级别以及对脏读、不可重复读、幻读的理解
什么是事务? 事务,即数据库事务。是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。 通常,事务的正确执行会使数据库从一种状态转换为另一种状态。 事务的特性(ACID原则) 原子性(atomicity) 即不可分割性,事务要么全执行、要么全不执行。一致性(consistency) 事务的执行使得数据库从一种正确状态转换成另外一种正确状态。隔离性(
阿里巴巴蚂蚁金服2020金融核心部门实习面经(Redis+IOC+AOP+中间件+分布式锁+事务等)
推荐阅读: 面试机会不等人,资料看精不看多!史上最全Java技术资料合集!2019年中总结,400道一线大厂高频精选面试题合集(JVM+Spring+RabbitMQ+Mybatis+Redis+分布式+微服务)整理完今年的阿里、腾讯、网易等公司的面试后,我有一个重要发现 一面(个人感觉回答得还不错)1. 自我介绍2. 说项目,项目问的非常深(本人提到之前做过的一篇关于FULL
两个月刷400道leetcode之后的经验与心得总结、真题整理分享
推荐阅读: 面试机会不等人,资料看精不看多!史上最全Java技术资料合集!整理完今年的阿里、腾讯、网易等公司的面试后,我有一个重要发现 前言随着互联网寒潮的到来, 越来越多的互联网公司提高了面试的难度,其中之一就是加大了面试当中手撕算法题的比例。这里说的算法题不是深度学习,机器学习这类的算法,而是排序,广度优先,动态规划这类既考核数据结构也考核编程能力的题目。刷题的网址非常的多,其中以
解决SpringBoot多模块发布时99%的问题?SpringBoot发布的8个原则和4个问题的解决方案
如果使用的是 SpringBoot 多模块的项目,在发布的时候可能遇到各种各样的问题。本文归纳了以下 8 个原则和发布时经常出现的 4 个问题的解决方案,掌握了这些原则和解决方案,几乎可以解决绝大数 SpringBoot 发布问题。推荐阅读:面试机会不等人,资料看精不看多!史上最全Java技术资料合集!2019年中总结,400道一线大厂高频精选面试题合集(JVM+Spring+RabbitMQ+M
SpringBoot:RabbitMQ 延迟队列
SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程 初探RabbitMQ消息队列中介绍了RabbitMQ的简单用法,顺带提及了下延迟队列的作用。所谓延时消息就是指当消息被发送以后,并不想让消费者立即拿到消
SpringBoot:初探 RabbitMQ 消息队列
SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程MQ全称(Message Queue)又名消息队列,是一种异步通讯的中间件。可以将它理解成邮局,发送者将消息传递到邮局,然后由邮局帮我
技术变化那么快,Java程序员如何做到不被淘汰?
写了这么久的代码,你是否曾经有过这样的迷茫和困惑:技术发展日新月异,奋力追赶的我们,究竟是技术的主人还是技术的奴隶?技术人真的挺辛苦,除了在办公室高强度、高压力搬砖外,还要时刻关注最新的市场信息、技术动态、行业信息等等。一不小心,就担心自己的技能、知识跟不上行业的变化。在快节奏的时代,不进则退,技术人需要不停地吸纳新知识。今天,小编精挑细选了一些各大互联网公司的都在用的最火技术知识点,推荐给大家。
一个五年Java程序员的现状,你甘心做一辈子码农吗?
你愿意做码农吗?恍然间,发现自己在这个行业里已经摸爬滚打了五年了,原以为自己就凭已有的项目经验和工作经历怎么着也应该算得上是一个业内比较资历的人士了,但是今年在换工作的过程中却遭到了重大的挫折。详细过程我就不再叙述,在此,只想给大家说一说被拒绝的原因,看看大家有没有相似的经历,和类似的感悟。面试官对我的答复大致是这样的,我们不需要熟练工,我们需要在某领域拥有超过常人的积累认知,和拥有整套完整思维模
月薪8k和月薪38K的Java程序员的差距仅是一个系统学习的架构体系
回想自己做开发的这十多年,我获得了很多,技术能力、培训、出国、大公司的,还记得刚刚出来第一年那段时间,太多东西不懂的,我都是一切听从老大的安排,敲敲代码,看看数据库,测试自己和别人的代码;这样干了一年第二年的时候我就在想,自己还要这样吗?当然是否定的,不可能的,一年的经验自己完全可以入行了,是时候该学习怎么进行需求分析,怎么设计数据库,怎么写各类文档,怎么写更好的代码?所以说:一个人在一家公司呆久
快进来看程序员风格的修真小说!
终有一天我手中的编译器将成为我灵魂的一部分,这世界在我的眼中将被代码重构,我将看到山川无尽银河生灵都汇成二进制的数字河流,过往英雄都在我脑海眼前一一浮现,而我听到无数码农跪倒在我的程序面前呼喊。他们叫我代码之神。到那个时候,我想我一定可以找回你。一这是一个属于代码的修真世界。这世界里的每一个人,每一个东西,包括高山大海,刀剑风云,其本质都是一串数字流。打个比方,如果你知道一块石头的内部数据结构,并
如何优雅使用Docker?请收下这15个小技巧。
Tip1获取最近运行容器的id 这是我们经常会用到的一个操作,按照官方示例,你可以这样做(环境ubuntu):这种方式在编写脚本的时候很有用,比如你想在脚本中批量获取id,然后进一步操作。但是这种方式要求你必须给ID赋值,如果是直接敲命令,这样做就不太方便了。 这时,你可以换一种方式:docker ps -l -q命令将返回最近运行的容器的id,通过设置别名(alias),dl命令就是获取最近容器
两年摸爬滚打 Spring Boot,总结了这 16 条最佳实践
Spring Boot是最流行的用于开发微服务的Java框架。在本文中,我将与你分享自2016年以来我在专业开发中使用Spring Boot所采用的最佳实践。这些内容是基于我的个人经验和一些熟知的Spring Boot专家的文章。在本文中,我将重点介绍Spring Boot特有的实践(大多数时候,也适用于Spring项目)。以下依次列出了最佳实践,排名不分先后。1、使用自定义BOM来维护第三方依赖
你不得不了解的前后端分离原理!
前后端分离已成为互联网项目开发的业界标准使用方式,通过nginx+tomcat的方式(也可以中间加一个nodejs)有效的进行解耦,并且前后端分离会为以后的大型分布式架构、弹性计算架构、微服务架构、多端化服务(多种客户端,例如:浏览器,车载终端,安卓,IOS等等)打下坚实的基础。这个步骤是系统架构从猿进化成人的必经之路。核心思想是前端html页面通过ajax调用后端的restuful api接口并
29 岁成为阿里巴巴 P8,工作前 5 年完成晋升 3 连跳,他如何做到?
泡泡是我的好朋友。今年 31 岁,毕业后就进了阿里巴巴,工作五年内从 P4 晋升至 P6、P7、P8。和他很少聊到工作,但总觉得他有很棒的职场心得,应该分享出来,于是有了这次采访。希望对职场新人有所帮助。聊了 3 个小时后,发现对我这个工作多年的人也很有启发。采访正文开始:进职场前,知识对我不是什么难事了我 06 年进入大学,专业工业设计,10 年毕业。读大学的时候,我的知识,并不主要来自老师,而
面试中有哪些经典的数据库问题?
一、为什么用自增列作为主键1、如果我们定义了主键(PRIMARY KEY),那么InnoDB会选择主键作为聚集索引、如果没有显式定义主键,则InnoDB会选择第一个不包含有NULL值的唯一索引作为主键索引、如果也没有这样的唯一索引,则InnoDB会选择内置6字节长的ROWID作为隐含的聚集索引(ROWID随着行记录的写入而主键递增,这个ROWID不像ORACLE的ROWID那样可引用,是隐含的)。
Redis面试总结
什么是redis?Redis 是一个基于内存的高性能key-value数据库。 (有空再补充,有理解错误或不足欢迎指正)Reids的特点Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作
优秀架构师必须掌握的架构思维
一、抽象思维如果要问软件研发/系统架构中最重要的能力是什么,我会毫不犹豫回答是抽象能力。抽象(abstraction)这个词大家经常听到,但是真正理解和能讲清楚什么是抽象的人少之又少。抽象其实是这样定义的:对某种事物进行简化表示或描述的过程,抽象让我们关注要素,隐藏额外细节。举一个例子,见下图:你看到什么?你看到的是一扇门,对不对?你看到的不是木头,也不是碳原子,这个门就是抽象,而木头或者碳原子是
最坏的不是面试被拒,而是根本没有面试机会!
本人在之前的博客里写了很多面试技巧,这是有个前提:至少候选人被面试了,在这个前提下,候选人哪怕失败了,至少也能用实战来检验和校对面试准备的结果,用句比较时髦的话来说就是试错,多试几次之后总能找到正确的方式。本人在技术面试的实践中,对简历会做初步的筛选,在这过程中,会发现有些简历是一定通不过的,也就是说不会有面试机会,甚至如果该候选人用这份简历,在其它公司也未必能得到面试机会,那么这类候选人就比较悲