java
混子~
主要研究Spring Boot、Spring Cloud及微服务架构方向
展开
-
一周内咸鱼疯转2.4W次,最终被所有大厂封杀
(含答案)所有面试资料及技术好文精选文档都整理到网盘了。imageJava面试官手册需要加我Java圈子免费领取我已经把这些面试题和架构视频,放在我的Java架构技术qunzi里,群里会各种PDF书籍,也有资深HR可以推荐工作,大牛相互交流技术,捣乱和发广告的勿加。...原创 2020-07-17 14:50:21 · 971 阅读 · 0 评论 -
在小公司做开发太难了!面试面到我心态爆炸...
不得不说,最近这段时间,收到的简历实在是堆积如山!之前HR都是单个文件发送过来,现在都是发送直接压缩包!!!我精挑细选之后,终于找出简历比较符合岗位要求的候选人,于是开始了电话面试。本着现在找工作也不容易,加上网上很多吐槽,说面试造火箭的,于是这次面试我就把提问的主动权交给候选人,让他挑自己擅长的知识点来自问自答。有这么一位程序员印象最深,他也选择了几个熟悉的技术点,例如Dubbo,Redis,MySQL,MQ等。但是在面试中依然停留在表面的概念,对于一些优化和...原创 2020-05-19 16:17:21 · 2256 阅读 · 0 评论 -
面试了一个5年的Java,问什么都说不会!
最近看了很多简历,很多候选人年限不小,但是做的都是一些非常传统的项目,想着也不能通过简历就直接否定一个人,何况现在大环境越来 越难,大家找工作也不容易,于是就打算见一见。在沟通中发现,由于年限不小,他们的定位基本都是高级及以上,毕竟,年限摆在那里,面个中级也不体面。面试时我打算聊点基础的,先打开一下话题,结果发现对于一些开发中很基本的问题,比如:Git的分支你们是怎么...原创 2020-03-17 21:52:05 · 2073 阅读 · 0 评论 -
架构选型,究竟啥时候选redis?
架构选型,究竟啥时候选redis?redis是互联网分层架构中,最常用的KV缓存,但不少同学仍然不知道,为啥要选择redis。画外音:与之对比最多的,是memcache。一、复杂数据结构,选择redis更合适value是哈希,列表,集合,有序集合这类复杂的数据结构时,会选择redis,因为mc无法满足这些需求。最典型的场景,用户订单列表,用户消息,帖子评论列表等。二、持...原创 2020-01-14 20:49:17 · 1584 阅读 · 0 评论 -
揭秘:“死锁”四个必要条件的合理解释
《“死锁”四个必要条件的合理解释》分为三个部分:【1】“死锁”的含义【2】“死锁”的原因及四个必要条件的合理解释【3】“死锁”的预防和解除1.“死锁”的含义所谓死锁:是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。2...原创 2019-12-23 21:28:51 · 1569 阅读 · 1 评论 -
资深架构师带你深入认识,Sentinel
Sentinel分布式系统的流量哨兵,以流量为切入点,对比 Redis 的哨兵模式可以得出 Sentinel 在微服务中的作用是对流量进行监控与管理,例如流量的控制,熔断降级,系统负载保护等。Github:https://github.com/alibaba/SentinelSentinel 的主要特性:Sentinel 的开源生态:Sentinel 分为两个部分:...原创 2019-12-21 21:52:53 · 1317 阅读 · 0 评论 -
2020年BAT面试题必问汇总:JVM+微服务+多线程+锁+高并发性能
1.jpg一、Redis 面试题1、什么是 Redis?.2、Redis 的数据类型?3、使用 Redis 有哪些好处?4、Redis 相比 Memcached 有哪些优势?5、Memcache 与 Redis 的区别都有哪些?6、Redis 是单进程单线程的?7、一个字符串类型的值能存储最大容量是多少?8、Redis 的持久化机制是什么?各自的优缺点?9、Redis ...原创 2019-12-19 21:57:37 · 1382 阅读 · 1 评论 -
面试了一个10年的老Java,竟然连幂等性都不会
最近看了很多简历,很多候选人年限不小,但是做的都是一些非常传统的项目,想着也不能通过简历就直接否定一个人,何况现在大环境越来 越难,大家找工作也不容易,于是就打算见一见。在沟通中发现,由于年限不小,他们的定位基本都是高级及以上,毕竟,年限摆在那里,面个中级也不体面。面试时我打算聊点基础的,先打开一下话题,结果发现对于一些开发中很基本的问题,比如:Git的分支你们是...原创 2019-12-16 20:40:07 · 2225 阅读 · 1 评论 -
Java程序员修炼之路:如何不接私活也能月薪20K
金九银十的招聘季结束了,相信无论是应届毕业生还是在工作岗位拼搏了几年的老鸟程序员,都对今年的就业形势有了了解。跳槽,对于已经就业的程序员来说绝对不是一个陌生的词汇,在工作的前4年,小渡鼓励大家跳槽,建议经历2-3家公司。因为每个公司对技术的侧重点都不同,对开发流程控制都不一样,所需要的技术性人才自然不一样。比如外包公司,要的是一个代码狂人,高效率工作是核心要素;规模较小的公司,...原创 2019-12-05 15:41:16 · 1500 阅读 · 0 评论 -
精心整理常见的18个Dubbo面试题,需要的收藏
dubbo是什么dubbo是一个分布式框架,远程服务调用的分布式框架,其核心部分包含:集群容错:提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。远程通讯:提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。自动发现:基于注册中心目录服务,使服务消费方能动态的查找服务提供方...原创 2019-11-27 21:12:08 · 2185 阅读 · 0 评论 -
准备两个月,路上2小时,面试五分钟?我太难了...
如果你参加过一些大厂面试,肯定会遇到一些类似下面的开放性问题:1、 写一段程序,让其运行时的表现为触发了5次Young GC、3次Full GC、然后3次Young GC;2、 如果一个Java进程突然消失了,你会怎么去排查这种问题?3、 给了一段Spring加载Bean的代码片段,阐述一下具体的执行流程?是不是看上去很难,是不是和自己准备的“题库”中的问题不一样?不...原创 2019-11-27 21:08:25 · 2408 阅读 · 0 评论 -
Java程序员修炼之路:如何不接私活也能月薪20K
金九银十的招聘季结束了,相信无论是应届毕业生还是在工作岗位拼搏了几年的老鸟程序员,都对今年的就业形势有了了解。跳槽,对于已经就业的程序员来说绝对不是一个陌生的词汇,在工作的前4年,小渡鼓励大家跳槽,建议经历2-3家公司。因为每个公司对技术的侧重点都不同,对开发流程控制都不一样,所需要的技术性人才自然不一样。比如外包公司,要的是一个代码狂人,高效率工作是核心要素;规模较小的公司,...原创 2019-11-25 22:06:33 · 1403 阅读 · 0 评论 -
阿里资深架构师带你认识,MetaQ 消息中间件
MetaQMetaQ 是一款分布式、队列模型的消息中间件。分为 Topic 与 Queue 两种模式,Push 和 Pull 两种方式消费,支持严格的消息顺序,亿级别的堆积能力,支持消息回溯和多个维度的消息查询。Java学习圈子MetaQ发展历史2007年,淘宝实施了“五彩石”项目,将交易系统由单机交易升级到了分布式,这个过程中产生了 Notify。 2010年,阿里巴巴 B2B 部门基...原创 2019-11-20 19:29:38 · 1659 阅读 · 0 评论 -
记一位程序员从码农到大牛的成长之路
我16年毕业于普通的二本学校,非计算机专业出身,只因为对软件开发感兴趣,所以找工作的时候就一直投IT行业的职位。刚踏入这个行业时,以为突击一下东拼西凑的面试材料,就能有个很好的收获。结果却是,别说大公司了,就是很多看不上的小公司的笔试题都过不去。Java学习圈子焦躁阶段后来我去了本地的一个小公司去做服务端的开发。虽然叫服务端开发,但其实就是做系统指标监控功能,从DB中读取一些指标数据,通过...原创 2019-11-17 19:37:28 · 1510 阅读 · 0 评论 -
P8架构师教你如何认识,Mina
认识 MinaApache Mina Server 是一个网络通信应用框架,与 Netty 出自同一作者,Netty 借鉴了部分 Mina 的设计思路。Mina 主要是对基于 TCP/IP、UDP/IP 协议栈的通信框架,Mina 可以帮助我们快速开发高性能、高扩展性的网络通信应用,Mina 提供了事件驱动、异步操作的编程模型,Mina 的异步 IO 默认使用的是 JAVA NI...原创 2019-11-15 19:23:28 · 1261 阅读 · 0 评论 -
IT行业,“三年工作经验”意味着什么?
每个程序员的简历都有一些共同的特性,比如,爱好是打篮球,目标是成为架构师。但是刚毕业的时候,什么都不懂,盲目的投简历,发现都要工作经验。愿意校招的公司,往往看重学历。普普通通的学历,加上没有工作经验,你所感受到的社会竟是如此残酷!虽然我们都知道,不给工作机会哪来的工作经验,但是社会的生存法则,并不是我们所能改变。Java架构社区不好意思问家里要钱,没办法,先找份工作谋生。...原创 2019-11-15 16:09:02 · 2004 阅读 · 0 评论 -
微服务的数据库设计
单独的数据库:微服务设计的一个关键是数据库设计,基本原则是每个服务都有自己单独的数据库,而且只有微服务本身可以访问这个数据库。它是基于下面三个原因。优化服务接口:微服务之间的接口越小越好,最好只有服务调用接口(RPC或消息),没有其他接口。如果微服务不能独享自己的数据库,那么数据库也变成了接口的一部分,这大大拓展了接口范围。 错误诊断:生产环境中的错误大部分都是和数据库有关的,...原创 2019-10-21 17:48:08 · 1915 阅读 · 0 评论 -
揭秘:程序员在外企4年,重回互联网行业靠这些涨薪一倍
前言在Java程序员界流行着一种默认的说法叫“黄金5年”,意思是说,一个Java程序员从入职的时候算起,从入职到高级开发这个过程叫做黄金五年,因为这五年直接影响你的职业生涯与薪资走向。注:那么在这黄金5年里,Java程序员如何做才能实现自我突破呢?我在这里主要把五年分为3个阶段,每个阶段技术水平与薪资都不一样,我们一起来看一下吧!对初学者的建议首先,对尚未进入职场工作的在校生以及准...原创 2019-10-17 17:35:07 · 1367 阅读 · 0 评论 -
阿里架构师带你8分钟深入浅出搞懂BIO、NIO、AIO
在高性能的IO体系设计中,BIO、NIO、AIO的概念,常常会让我们感到困惑不解。在Java面试中,我们也经常会被问到这个问题。譬如:BIO、NIO、AIO 的概念 同步/异步、阻塞/非阻塞的区别 NIO 如何实现多路复用功能 AIO、BIO、NIO的适用场景 NIO的核心概念、应用和框架等等这块内容本身比较复杂,很难用三言两语说明白,而书上的定义不太容易理解。本篇内容按照我的理解,...原创 2019-10-14 15:00:43 · 1396 阅读 · 0 评论 -
JVM中初始和最大堆大小无效 - 如何修复
今天遇到一个这样的问题在启动JVM时提示“ 无效的初始堆大小:-Xms = 1024M ”,甚至在将最大堆大小从1024 m更改为512M之后,它仍然崩溃,提示的错误是“无效的初始堆大小:-Xms = 512M,无法创建的Java虚拟机“。我检查了几乎所有的东西,从检查我的机器有多少物理内存到JVM参数中的任何类型的错误,结果发现我把MB放进去了,而不是M.。爪哇同时接受小的案和用于基洛,米...转载 2019-03-05 14:12:51 · 2392 阅读 · 0 评论 -
Java开发人员可以从Spring框架中学到编程技巧
毫无疑问,Spring Framework是最受欢迎的Java框架之一,通过提供依赖注入和控制反转等特性,可以轻松创建真实的企业级Java应用程序。但是,Spring不仅是一个DI和IOC框架。通过提供有用的抽象层,它可以简化许多Java API,例如JDBC,JMS,Java Mail等。使用Spring的JdbcTempalte和其他实用程序类使用JDBC要容易得多。它们删除了大多数与开发SQ...转载 2019-03-05 17:37:33 · 517 阅读 · 0 评论 -
java——微服务核心架构梳理
Hello,Microservices什么是微服务微服务Microservices之父,马丁.福勒,对微服务大概的概述如下:就目前而言,对于微服务业界并没有一个统一的、标准的定义(While there is no precise definition of this architectural style ) 。但通在其常而言,微服务架构是一种架构模式或者说是一种架构风格,它提倡将单一应用...转载 2019-03-05 19:31:29 · 695 阅读 · 0 评论 -
Java中的素数生成算法- Eratosthenes的筛选实例
良好的数据结构和算法知识是成为一个更好的程序员的第一步。为了延续这个传统,今天我将分享一个有趣的算法,Eratosthenes算法的Sieve,它可以用来生成质数直到给定的数字。在很多情况下,你需要生成指定整数的所有素数,而最常用于生成素数的算法是Eratosthenes算法的 Sieve。但是很少有开发人员知道这个算法,特别是Java程序员,这主要是因为没有进行足够的竞争性编程。Eratost...转载 2019-03-05 22:00:56 · 669 阅读 · 0 评论 -
Java开发人员应该学习的10个工具
Java世界中存在许多工具,从着名的IDE(如Eclipse,NetBeans和IntelliJ IDEA)到JVM分析和监视工具(如JConsole,VisualVM,Eclipse Memory Analyzer等)。在本文中,我将重点介绍适用于各种Java开发人员的通用工具,例如核心Java和Web开发人员。其中一个工具是JIRA,对于经验丰富的开发人员来说,这是必须要知道的,特别是如果你...翻译 2019-03-03 15:12:18 · 383 阅读 · 0 评论 -
如何在Java 8中创建线程安全的ConcurrentHashSet
在JDK 8之前,无法在Java中创建大型,线程安全的ConcurrentHashSet。该java.util.concurrent包没有一个叫做ConcurrentHashSet的类,但是从JDK 8开始,可以使用新添加的keySet(默认值)和newKeySet()方法在Java中创建一个由ConcurrentHashMap支持的ConcurrentHashSet。这比旧的解决方案更好。key...翻译 2019-03-08 17:11:24 · 8564 阅读 · 0 评论 -
BATJ技术招聘总结:搞定这3步 Offer成功率100%
目录一、 前言二、 如何写一份漂亮的简历?三、 如何高效的准备面试?四、 怎样要薪酬最科学?五、 结束语一、前言自2018互联网进入寒冬期后,一场裁员大风让不少人卷入其中,美曰其名提前回家过年,那现在也该到年后“算账”的时候了,重新选择什么行业?什么样的公司平台?想必对未来很焦虑。而那些未被裁掉的“幸存者”,舒服的日子似乎一去不复返,奖金也不多,得失却看清了,开始蠢蠢欲动,想借着跳...转载 2019-03-06 15:16:25 · 563 阅读 · 0 评论 -
备战金三银四:京东JAVA研发4面面试宝典
备战金三银四:京东JAVA研发4面面试宝典一面:(约五十分钟)1 自我介绍,讲一下项目中的多线程实现2 Java的线程池的参数,拒绝策略,阻塞队列等实现和使用3 fixethreadpool使用的是什么阻塞队列,如果使用arrayblockingqueue或者linkedblockingqueue会有什么问题。4 ArrayList和linkedlist有什么区别,扩容呢5 hash...转载 2019-03-06 15:26:56 · 443 阅读 · 0 评论 -
Java高级架构之系统学习线路图
架构师是什么?要想往架构师的方向发展首先要知道架构师是什么?架构师是一个既需要掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导型人物。一个架构师得需要足够的想像力,能把各种目标需求进行不同维度的扩展,为目标客户提供更为全面的需求清单。架构师在软件开发的整个过程中起着很重要的作用。说的详细一些,架构师就是确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并澄清技术细...原创 2019-03-08 21:02:12 · 1420 阅读 · 0 评论 -
【干货】Kafka实现淘宝亿万级数据统计(上)
在ActiveMQ、RabbitMQ、RocketMQ、Kafka消息中间件之间,我们为什么要选择Kafka?下面详细介绍一下,2012年9月份我在支付宝做余额宝研发,2013年6月支付宝正式推出余额宝,2013年8月担任支付宝淘宝彩票项目经理带领兄弟们一起做研发,期间需要与淘宝和500万对接竞彩接口数据。通过业余时间与淘宝同事沟通,了解到天猫在电商节如何处理大数据?技术架构上采用了哪些策略?...转载 2019-03-08 21:19:39 · 424 阅读 · 0 评论 -
【干货】Kafka实现淘宝亿万级数据统计(下)
Kafka能帮我们解决什么问题?什么场景下使用?消息订阅和发布吗,好像redis也支持,功能是否有重叠?1、消息队列假设你意气风发,要开发新一代的互联网应用,以期在互联网事业中一展宏图。借助云计算,很容易开发出如下原型系统:Web应用:部署在云服务器上,为个人电脑或者移动用户提供的访问体验。SQL数据库:为Web应用提供数据持久化以及数据查询。这套架构简洁而高效,很快能够部署到百度云...转载 2019-03-08 21:24:05 · 494 阅读 · 0 评论 -
【干货】RabbitMQ延时消息的实现(上)
我们在实际业务中有一些需要延时发送消息的场景,例如:1、 家里有一台智能热水器,需要在30分钟后启动2、 未付款的订单,15分钟后关闭注意这里的场景是延时,不是定时。当然,解决了延时,定时就很简单了(定时=当前时刻+间隔时间)。由于RabbitMQ本身不支持延时队列(延时消息),所以要通过其他方式来实现。总的来说有三种:1、 先存储到数据库,用定时任务扫描,登记时刻+延时时间,就是需要投...转载 2019-03-08 21:27:53 · 1221 阅读 · 0 评论 -
【干货】RabbitMQ 延时消息的实现(下)
在RabbitMQ 3.5.7及以后的版本提供了一个插件(rabbitmq-delayed-message-exchange)来实现延时队列功能。同时插件依赖Erlang/OPT 18.0及以上。插件源码地址:https://github.com/rabbitmq/rabbitmq-delayed-message-exchange插件下载地址:https://bintray.com/rab...转载 2019-03-08 21:30:26 · 605 阅读 · 0 评论 -
如何在Java中创建Immutable类?
Immutable类意味着一旦创建了一个对象,我们就无法改变它的内容。在Java的中,所有包装类(如字符串,布尔值,字节,短)和字符串类都是不可变的。我们也可以创建自己的不可变类。以下是要求:•必须将类声明为最终(因此无法创建子类)•必须将类中的数据成员声明为最终(因此在创建对象后我们无法更改它的值)•参数化构造函数•其中所有变量的吸气方法•无二传手(无法更改实例变量的值)创建不可变...翻译 2019-03-13 22:27:55 · 835 阅读 · 0 评论 -
2019年高级Java开发人员可以追求的五大就业职业
如果你是一位经验丰富的Java程序员,完成过大量的编码和开发,且有超过5到8年工作经验的人,作为高级Java开发人员或技术主管工作,并想知道如何发展到更高级别,那么你来对了地方。在本文中,我将分享5项开发人员的就业选择,这可以选择将你的职业提升到一个新的层次。5大Java开发人员的职业选择DevOps工程师对于有经验的开发人员来说,这是另一个新的机会。成为DevOps工程师没有正式的职业...转载 2019-03-06 19:27:13 · 499 阅读 · 0 评论 -
Java程序员该怎么更好的提升自己
让我们看看今年Java程序员的5个目标:学习JVM内部原理和Java性能调优每天写代码每月分析一次Java应用程序参与编程挑战学习Java中的套接字编程现在,让我们详细了解它们这些解决方案,希望能帮助你们成为更好的开发人员。1)学习JVM内部原理和Java性能调优我跟多名高级Java开发人员了解到,他们其中一项技能就是缺乏JVM内部原理、GC行为和Java性能调优方面的知识和理解。...原创 2019-03-06 19:30:41 · 3068 阅读 · 0 评论 -
线程、代码和数据——多线程Java程序的实际运行方式
你肯定听说过线程、如何启动线程、如何停止线程、诸如独立执行路径之类的定义,以及处理线程间通信的所有时髦的库,但是在调试多线程Java程序时,你会遇到困难。至少我可以从我的个人经历中这么说。调试在我看来是真正的培训师,只有通过调试,你才能学习到一个微妙的概念,并形成一种持久的理解。在本文中,我将讨论关于任何程序执行的三件重要的事情,而不仅仅是Java、线程、代码和数据。一旦你很好地理解了这三者...转载 2019-03-04 14:55:14 · 369 阅读 · 0 评论 -
常见的14个Spring MVC面试真题和答案,快快收藏涨涨知识!
Spring MVC框架是用于开发Web应用程序的最流行的Java框架之一。如果你一直在使用Java和开发基于Web的应用程序,那么你很可能已经在项目中使用了Spring MVC。在过去十年中,它已成为开发Java Web应用程序的框架。Spring MVC是基于经典的MVC(模型 - 视图 - 控制器)设计模式。由于其广泛的普及性和实用性,大多数Java开发工作需要对Spring和Spring ...翻译 2019-03-14 14:24:37 · 1081 阅读 · 0 评论 -
Java面试问题,如何避免Java线程中的死锁?
如何避免Java中的死锁?是流行的Java面试问题之一,也是多线程的流行话题之一。尽管问题看起来很简单,但是一旦深入,大多数Java开发人员就会陷入困境。面试问题以“什么是死锁?”当两个或多个线程正在等待彼此释放所需资源(锁定)并陷入无限时间的阻塞时,这种情况称为死锁,它只会在多任务或多线程的情况下发生。如何检测Java中的死锁?虽然这可能有很多答案,但我的版本是,如果我看到嵌套的同步块,或...翻译 2019-03-07 15:15:48 · 724 阅读 · 0 评论 -
Spring经典的面试题,你值得拥有!!
一、什么是Spring框架?Spring框架有哪些主要模块?Spring框架是一个为Java应用程序的开发提供了综合、广泛的基础性支持的Java平台。Spring帮助开发者解决了开发中基础性的问题,使得开发人员可以专注于应用程序的开发。Spring框架本身亦是按照设计模式精心打造,这使得我们可以在开发环境中安心的集成Spring框架,不必担心Spring是如何在后台进行工作的。Spring框...转载 2019-03-10 19:30:16 · 302 阅读 · 0 评论 -
在Java中如何将float转换为long或int数据类型?
在Java中,有三种方法可以将float转换为long或int,但我们只关注long数据类型部分。将float数据类型转换为long值的第一种方法是将auto-box float原语转换为float对象并调用longValue()方法。这是一种更结构化的方法,因为其他方法只是简单地将float转换为long或int以去掉小数点。也可以按照以下提示编写Java程序,通过将long方法替换为对应...翻译 2019-03-07 15:23:07 · 31829 阅读 · 2 评论