自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(70)
  • 收藏
  • 关注

原创 笑岔气!一个程序员的水平能差到什么程度?

笑岔气!一个程序员的水平能差到什么程度?最近,知乎上有一则灵魂拷问“一个程序员的水平能差到什么程度?”让各位程序员们纷纷有感而发。小编精选了两个有趣的高赞回答只为抛砖引玉,欢迎大家说出你的故事! 1来自知乎网友“Benny”想起了一件十多年前的往事,有一次帮客户的 Java 项目组升级框架。入场之后屡次听到项目组的运维小哥抱怨 war 包过大,导致每次发布要等很久很久,用过 WebS...

2020-04-20 12:23:41 240

原创 对比3-5年和10年的Java程序员,差距在哪里?

找工作过程中我们经常会看到“与工作年限相匹配的水平”这样的字眼,那么究竟什么样才算是匹配呢? 当然,这个话题可以说是仁者见仁,智者见智了。 其实互联网职业可以大致分两个阶段,在毕业后的3到5年内主要都是以学习、积累为主,从一开始啥都不懂的校园“新鲜人”向“职业人”转变。如果你是Java开发者,在这个阶段你会学习:1、基础的Java知识,多线程、集合类、JVM2、进阶知识,设计模式、系统设计和方法论...

2020-04-18 12:53:17 271

原创 为什么SpringBoot的 jar 可以直接运行?

为什么SpringBoot的 jar 可以直接运行?SpringBoot提供了一个插件spring-boot-maven-plugin用于把程序打包成一个可执行的jar包。在pom文件里加入这个插件即可:               &nbsp...

2020-04-18 12:52:38 370

原创 关于多线程的问题及答案四

关于多线程的问题及答案四这些多线程的问题,有些来源于各大网站、有些来源于自己的思考。可能有些问题网上有、可能有些问题对应的答案也有、也可能有些各位网友也都看过,但是本文写作的重心就是所有的问题都会按照自己的理解回答一遍,不会去看网上的答案,因此可能有些问题讲的不对,能指正的希望大家不吝指教。31、什么是Java内存模型Java内存模型定义了一种多线程访问Java内存的规范。Java内存模型要完整讲...

2020-04-14 12:49:16 176

原创 关于多线程的问题及答案三

关于多线程的问题及答案三这些多线程的问题,有些来源于各大网站、有些来源于自己的思考。可能有些问题网上有、可能有些问题对应的答案也有、也可能有些各位网友也都看过,但是本文写作的重心就是所有的问题都会按照自己的理解回答一遍,不会去看网上的答案,因此可能有些问题讲的不对,能指正的希望大家不吝指教。17、怎么检测一个线程是否持有对象监视器我也是在网上看到一道多线程面试题才知道有方法可以判断某个线程是否持有...

2020-04-14 12:44:52 202

原创 关于多线程的问题及答案二

这些多线程的问题,有些来源于各大网站、有些来源于自己的思考。可能有些问题网上有、可能有些问题对应的答案也有、也可能有些各位网友也都看过,但是本文写作的重心就是所有的问题都会按照自己的理解回答一遍,不会去看网上的答案,因此可能有些问题讲的不对,能指正的希望大家不吝指教。8、Java中如何获取到线程dump文件死循环、死锁、阻塞、页面打开慢等问题,打线程dump是最好的解决问题的途径。所谓线程dump...

2020-04-13 14:26:34 92

原创 关于多线程的问题及答案一

这些多线程的问题,有些来源于各大网站、有些来源于自己的思考。可能有些问题网上有、可能有些问题对应的答案也有、也可能有些各位网友也都看过,但是本文写作的重心就是所有的问题都会按照自己的理解回答一遍,不会去看网上的答案,因此可能有些问题讲的不对,能指正的希望大家不吝指教。1、多线程有什么用?一个可能在很多人看来很扯淡的一个问题:我会用多线程就好了,还管它有什么用?在我看来,这个回答更扯淡。所谓"知其然...

2020-04-13 14:25:44 107

原创 Java 面试 1 小时,我看出了和月薪 3w 的差距“

有一次和大学同学聚会,和几个在BAT的同学聊了聊技术,发现自己在创业公司这几年,完全是吃老本的状态,没有什么机会精进技术,同样是工作了三年,和同学的差距越来越大”我继续问他,他说真正让他受打击的是这个月的一次面试。 “面的是一个大厂,面试官问了很多问题,一大半的问题我都是一知半解,回答上来问题也是特没底。大概回顾了这场面试:上来先是问了Java基础知识,jvm、字符串、集合、线程等等,这部分我...

2020-04-10 12:41:16 391

原创 14 个 Spring MVC 顶级技巧!

通常,在Spring MVC中,我们编写一个控制器类来处理来自客户端的请求。然后,控制器调用业务类来处理与业务相关的任务,然后将客户端重定向到逻辑视图名称,该名称由Spring的调度程序Servlet解析,以呈现结果或输出。这样就完成了典型的请求-响应周期的往返。今天整理了一下编写Spring MVC控制器的14个技巧,你今天get到了吗?(≧▽≦)/1、使用@Controller构造型这是创建可...

2020-04-09 12:14:20 150

原创 3-5年和10年的程序员,差距分别在哪里?

找工作过程中我们经常会看到“与工作年限相匹配的水平”这样的字眼,那么究竟什么样才算是匹配呢? 当然,这个话题可以说是仁者见仁,智者见智了。 其实互联网职业可以大致分两个阶段,在毕业后的3到5年内主要都是以学习、积累为主,从一开始啥都不懂的校园“新鲜人”向“职业人”转变。如果你是Java开发者,在这个阶段你会学习:1、基础的Java知识,多线程、集合类、JVM2、进阶知识,设计模式、系统设计和方法论...

2020-04-09 12:13:18 344

原创 细细拆分了一下Spring容器的refresh过程,真难..

细细拆分了一下Spring容器的refresh过程,真难…我们分析了SpringBoot的启动过程:构造SpringApplication并调用它的run方法。其中构造SpringApplication的时候会初始化一些监听器和初始化器;run方法调用的过程中会有对应的监听器监听,并且会创建Spring容器。 Spring容器创建之后,会调用它的refresh方法,refresh的时候会...

2020-04-08 12:23:57 81

原创 面试官:你经常在SpringBoot中使用的条件注解底层是如何实现的?你了解过吗?

面试官:你经常在SpringBoot中使用的条件注解底层是如何实现的?你了解过吗?SpringBoot内部提供了特有的注解:条件注解(Conditional Annotation)。比如@ConditionalOnBean、@ConditionalOnClass、@ConditionalOnExpression、@ConditionalOnMissingBean等。 条件注解存在的意义在...

2020-04-08 12:22:45 181

原创 SpringBoot是否内置了Servlet容器?如果内置了,它是如何工作的?

SpringBoot是否内置了Servlet容器?如果内置了,它是如何工作的?SpringBoot内置了Servlet容器,这样项目的发布、部署就不需要额外的Servlet容器,直接启动jar包即可。SpringBoot官方文档上有一个小章节内置servlet容器支持用于说明内置Servlet的相关问题。 在SpringBoot源码分析之SpringBoot的启动过程文章中我们了解到如果...

2020-04-07 12:36:01 1205

原创 Redis 使用的 10 个小技巧Redis

在当前的技术社区里是非常热门的。从来自 Antirez 一个小小的个人项目到成为内存数据存储行业的标准,Redis已经走过了很长的一段路。随之而来的一系列最佳实践,使得大多数人可以正确地使用 Redis。下面我们将探索正确使用 Redis 的10个技巧。1、停止使用 KEYS *Okay,以挑战这个命令开始这篇文章,或许并不是一个好的方式,但其确实可能是最重要的一点。很多时候当我们关注一个red...

2020-04-07 12:31:11 133

原创 多线程!你只要看这一篇就够了!

一个小伙伴最近参加某一线互联网公司的面试,被问到了一些并发相关的问题,看看大家能否答出来: (1)synchronized的CPU原语级别是如何实现的?(2)无锁、偏向锁、轻量级锁、重量级锁有什么差别,升级过程如何?(3)线程间通信,同机器进程间通信,跨机器进程间通信,各有什么方法?(4)下列三种业务,应该如何使用线程池:· 高并发、任务执行时间短的业务· 并发不高、任务执行时间长的业务· 并发高...

2020-04-06 12:58:35 122

原创 数据库设计的 10 个最佳实践

以下为译文:数据库是应用及计算机的核心元素,负责存储运行软件应用所需的一切重要数据。为了保障应用正常运行,总有一个甚至多个数据库在默默运作。我们可以把数据库视为信息仓库,以结构化的方式存储了大量的相关信息,并合理分类,方便搜索及使用。因此,数据库设计成为软件开发中的重要一环,对于开发者来说,设计一个高效的数据库至关重要。那么,为什么数据库设计很重要,“好”的标准又是什么?本文将做以介绍。为什么数据...

2020-04-06 12:57:44 126

原创 SpringBoot 优雅的配置拦截器方式

其实spring boot拦截器的配置方式和springMVC差不多,只有一些小的改变需要注意下就ok了。下面主要介绍两种常用的拦截器:一、基于URL实现的拦截器:public class LoginInterceptor extends HandlerInterceptorAdapter{/*** 在请求处理之前进行调用(Controller方法调用之前)* 基于URL实现的拦截器* @...

2020-04-03 12:41:34 91

原创 用好Java中的枚举,真的没有那么简单!

用好Java中的枚举,真的没有那么简单!1 概览在本文中,我们将看到什么是 Java 枚举,它们解决了哪些问题以及如何在实践中使用  Java 枚举实现一些设计模式。enum关键字在 java5 中引入,表示一种特殊类型的类,其总是继承java.lang.Enum类,更多内容可以自行查看其官方文档。枚举在很多时候会和常量拿来对比,可能因为本身我们大量实际使用枚举的地方就是为了替...

2020-04-02 13:32:05 131

原创 高频面试题:如何保证缓存与数据库的双写一致性?

分布式缓存是现在很多分布式应用中必不可少的组件,但是用到了分布式缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题,那么你如何解决一致性问题?Cache Aside Pattern最经典的缓存+数据库读写的模式,就是 Cache Aside Pattern。读的时候,先读缓存,缓存没有的话,就读数据库,然后取出数据后放入缓存,同时返回响应。更新的时候,先更新数据库...

2020-04-02 13:30:40 138

原创 现在的Java面试已经和2年前完全不一样了!

最近技术群的一个问题,引起了我的思考:今年,还存在金三银四吗?大家都知道程序员涨薪主要还是要靠跳槽来完成!但是我们都知道,无论是考试,还是求职,这个难度,参加人数是影响难度的一个很大因数(当然特别牛逼的大佬可以忽略这句话)。每年高考、考研人数都在增加,这求职人数也必然是每年都会增加的,因此,就算完全不出新技术,求职的难度也会越来越大。最近和不少出去面试的朋友闲聊,都发现,两年前面试高级开发,...

2020-04-01 12:38:32 222

原创 关于程序员的段子,你知道多少?

(1)程序员的读书历程:x 语言入门 —> x 语言应用实践 —> x 语言高阶编程 —> x 语言的科学与艺术 —> 编程之美 —> 编程之道 —> 编程之禅—> 颈椎病康复指南。(2)程序员最讨厌的四件事:写注释、写文档、别人不写注释、别人不写文档……(3)十行代码 九个警告 八个错误 竟然敢说七日精通 六天学会 五湖四海也不见如此 三心二意之项目...

2020-04-01 12:37:50 229 1

原创 Spring 最常用的 7 大类注解,史上最强整理!

随着技术的更新迭代,Java5.0开始支持注解。而作为java中的领军框架spring,自从更新了2.5版本之后也开始慢慢舍弃xml配置,更多使用注解来控制spring框架。而spring的的注解那么多,可能做java很多年,都用不上。这里按照类型总结了这7种最常用的注解。 1 核心注解 @Required此注解用于bean的setter方法上。表示此属性是必须的,必须在配置阶段注入,否则会抛...

2020-03-31 12:31:15 270

原创 SQL性能优化这几个技巧,太太太太太太太有用了!

先简单梳理下Mysql的基本概_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDU0NTA4OA==,size_16,color_FFFFFF,t_70#pic_center)然后分创建时和查询时这两个阶段的优化展开。1 基本概念简述1.1 逻辑架构 § 第一层:客户端通过连接服务,将要执行的sql指令传输过来§ § 第二层:服务器解析并优化sql,生成...

2020-03-31 12:29:35 186

原创 我是一个CPU:这个世界慢!死!了!

经常听到有人说磁盘很慢、网络很卡,这都是站在人类的感知维度去表述的,比如拷贝一个文件到硬盘需要几分钟到几十分钟,够我去吃个饭啦;而从网络下载一部电影,有时候需要几个小时,我都可以睡一觉了。最为我们熟知的关于计算机不同组件速度差异的图表,是下面这种金字塔形式:越往上速度越快,容量越小,而价格越高。这张图只是给了我们一个直观地感觉,并没有对各个速度和性能做出量化的说明和解释。而实际上,不同层级之间...

2020-03-30 14:10:26 338

原创 欢迎你能说说Spring框架中Bean的生命周期吗?

首先简单说一下(以下为一个回答的参考模板)1、实例化一个Bean--也就是我们常说的new;2、按照Spring上下文对实例化的Bean进行配置--也就是IOC注入;3、如果这个Bean已经实现了BeanNameAware接口,会调用它实现的setBeanName(String)方法,此处传递的就是Spring配置文件中Bean的id值4、如果这个Bean已经实现了BeanFactoryA...

2020-03-30 14:07:57 76

原创 拥抱函数式编程吧,用得非常爽! 几十年来我都在用面向对象的语言编程。我用过的第一个面向对象的语言是 C++,后来是 Smalltalk,最后是 .NET 和 Java。 我曾经对使用继承、封装和多态充

拥抱函数式编程吧,用得非常爽! 几十年来我都在用面向对象的语言编程。我用过的第一个面向对象的语言是 C++,后来是 Smalltalk,最后是 .NET 和 Java。 我曾经对使用继承、封装和多态充满热情。它们是范式的三大支柱。 我渴望实现重用之美,并在这个令人兴奋的新天地中享受前辈们积累的智慧。 想到将现实世界的一切映射到类中,使得整个世界都可以得到整齐的规划,我无法抑制自己的兴奋。 然而我大...

2020-03-05 12:55:00 180

原创 关于进程与线程,史上最浅显易懂的一个简单解释

!进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。2.假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候,其他车间都必须停工。背后的含义就是,单个CPU一次只能运行一个任务。3...

2020-03-04 08:20:56 88

原创 10分钟读懂进程线程、同步异步、阻塞非阻塞、并发并行

基本概念1 进程和线程进程(Process):是Windows系统中的一个基本概念,它包含着一个运行程序所需要的资源。一个正在运行的应用程序在操作系统中被视为一个进程,进程可以包括一个或多个线程。线程是操作系统分配处理器时间的基本单元,在进程中可以有多个线程同时执行代码。进程之间是相对独立的,一个进程无法访问另一个进程的数据(除非利用分布式计算方式),一个进程运行的失败也不会影响其他进程的运行...

2020-03-04 08:19:00 173

原创 泛型,有点难度,会让很多人懵逼,那是因为你没有看这篇文章!

文主要讲解泛型类型的解析,泛型算是必须要掌握的一块硬核知识,在很多地方都会用到,这块如果理解了,在阅读其他框架源码的时候会让你更容易一些,看完本文之后大家对泛型也有一个新的认识。关于泛型的解析上面,我们需要先了解一些类和接口,这些比较关键,这些都位于java.lang.reflect包中,类图如下:0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDU0NTA4OA=...

2020-03-03 10:43:19 190

原创 迄今为止最好理解的ZooKeeper入门

文章边界的产生与突破不觉间孩子已经上小学了,前段时间还参加了一次家长会,那就以学校和开会来说吧,这大家都很熟悉。如果一个班要想开班会,那随时开都行,不需要提前安排与通知,因为一个班级从内部看就是一个整体,在班级内,同学之间以及与老师之间都可以随意交流,没有任何隔阂与阻碍。一个班级从外部看就是一个独立的个体,因为班级与班级之间是完全独立的,因此一个班级的学生和老师都不会随便跑到其它班级去。这是因...

2020-03-03 10:40:46 109

原创 最强 Java Redis 客户端

为什么要在 Java 分布式应用程序中使用缓存?在提高应用程序速度和性能上,每一毫秒都很重要。根据谷歌的一项研究,假如一个网站在3秒钟或更短时间内没有加载成功,会有 53% 的手机用户会离开。缓存是让分布式应用程序加速的重要技术之一。存储的信息越接近 CPU,访问速度就越快。从 CPU 缓存中加载数据比从 RAM 中加载要快得多,比从硬盘或网络上加载要快得多得多。要存储经常访问的数据,分布式应用...

2020-03-02 09:15:05 98

原创 可以提高千倍效率的Java代码小技巧

前言代码优化 ,一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是,吃的小虾米一多之后,鲸鱼就被喂饱了。 代码优化也是一样,如果项目着眼于尽快无BUG上线,那么此时可以抓大放小,代码的细节可以不精打细磨;但是如果有足够的时间开发、维护代码,这时候就必须考虑每...

2020-03-02 09:12:56 70

原创 18个Java8日期处理的实践,太有用了!

Java 8 推出了全新的日期时间API,在教程中我们将通过一些简单的实例来学习如何使用新API。Java处理日期、日历和时间的方式一直为社区所诟病,将 java.util.Date设定为可变类型,以及SimpleDateFormat的非线程安全使其应用非常受限。新API基于ISO标准日历系统,java.time包下的所有类都是不可变类型而且线程安全。示例1:Java 8中获取今天的日期Jav...

2020-02-29 10:33:02 94

原创 目前最快的 Java 框架居然是它?

网友:没听过!如果您搜索“最佳网络框架”,您可能会偶然发现Techempower基准测试,其中排名超过300个框架,在那里你可能已经注意到Vert.x是排名最高的。Vert.x是一个多语言 Web 框架,它支持Java,Kotlin,Scala,Ruby和Javascript支持的语言之间的共同功能。无论语言如何,Vert.x都在Java虚拟机(JVM)上运行。模块化和轻量级,它面向微服务开发。...

2020-02-28 08:54:40 77

原创 17 个方面,综合对比 Kafka、RabbitMQ、RocketMQ、ActiveMQ

本文将从,Kafka、RabbitMQ、ZeroMQ、RocketMQ、ActiveMQ 17 个方面综合对比作为消息队列使用时的差异。一、资料文档Kafka:中。有kafka作者自己写的书,网上资料也有一些。rabbitmq:多。有一些不错的书,网上资料多。zeromq:少。没有专门写zeromq的书,网上的资料多是一些代码的实现和简单介绍。rocketmq:少。没有专门写rocketmq的...

2020-02-28 08:53:34 189

原创 SpringBoot+Redis分布式锁:模拟抢单

本篇内容主要讲解的是redis分布式锁,这个在各大厂面试几乎都是必备的,下面结合模拟抢单的场景来使用她;本篇不涉及到的redis环境搭建,快速搭建个人测试环境,这里建议使用docker;本篇内容节点如下:jedis的nx生成锁§ 如何删除锁§ § 模拟抢单动作(10w个人开抢)§ § jedis的nx生成锁§ 对于java中想操作redis,好的方式是使用jedis,首先pom中引入依赖:red...

2020-02-27 09:42:29 130

原创 如何停止一个正在运行的线程?

停止一个线程意味着在任务处理完任务之前停掉正在做的操作,也就是放弃当前的操作。停止一个线程可以用Thread.stop()方法,但最好不要用它。虽然它确实可以停止一个正在运行的线程,但是这个方法是不安全的,而且是已被废弃的方法。 在java中有以下3种方法可以终止正在运行的线程:· 使用退出标志,使线程正常退出,也就是当run方法完成后线程终止· 使用stop方法强行终止,但是不推荐这个方法,因为...

2020-02-26 10:11:07 2460 1

原创 SQL语句大全,所有的SQL都在这里

一、基础1、说明:创建数据库CREATE DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份sql server— 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice ‘disk’, ‘testBack’, ‘c:\mssql7backup\MyNwind_1.dat’— ...

2020-02-26 10:10:03 1296 1

原创 停止 Spring Boot 服务的几种优雅姿势!

在使用 Spring Boot 的时候,都要涉及到服务的停止和启动,当我们停止服务的时候,很多时候大家都是 kill -9 直接把程序进程杀掉,这样程序不会执行优雅的关闭。而且一些没有执行完的程序就会直接退出。我们很多时候都需要安全的将服务停止,也就是把没有处理完的工作继续处理完成。比如停止一些依赖的服务,输出一些日志,发一些信号给其他的应用系统,这个在保证系统的高可用是非常有必要的。那么咱么就...

2020-02-25 09:07:11 224

原创 单例模式有几种写法?

纠结单例模式有几种写法有用吗?有点用,面试中经常选择其中一种或几种写法作为话头,考查设计模式和coding style的同时,还很容易扩展到其他问题。这里讲解几种笔者常用的写法,但切忌生搬硬套,去记“茴香豆的写法”。编程最大的乐趣在于“know everything, control everything”。大体可分为4类,下面分别介绍他们的基本形式、变种及特点。饱汉模式饱汉是变种最多的单例模式。...

2020-02-25 09:05:41 170

空空如也

空空如也

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

TA关注的人

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