
java
文章平均质量分 81
普通网友
这个作者很懒,什么都没留下…
展开
-
14种经典Java算法详解,面试官随便问
又是新的一年,去年“金九银十”没赶上,问到算法一脸懵逼,吞吞吐吐。今年重振旗鼓,记住下面这些算法,手撕面试官!今年“金九银十”我必上的首班车!二分查找又叫折半查找,要求待查找的序列有序。每次取中间位置的值与待查关键字比较,如果中间位置的值比待查关键字大,则在前半部分循环这个查找的过程,如果中间位置的值比待查关键字小,则在后半部分循环这个查找的过程。直到查找到了为止,否则序列中没有待查的关键字。public static int biSearch(int []array,int.原创 2020-09-22 16:53:17 · 908 阅读 · 0 评论 -
年前面试了最后一个 46 岁程序员,思绪万千,分享下!!!1
人事推给了我一份简历,职位是算法工程师,年龄是 46 岁,我揉了揉眼睛后再看看,确实是 46 岁。抱着忐忑的心,我电话面试一番后,还是不觉得他和我们的团队很适合。人都会有同理心,尤其是这么大岁数的程序员还是为了生计来找工作,心还是会隐隐触痛。年龄是多数程序员的天敌,之前没有概念因为生活中样本较少,现在来了一个鲜明的例子,并且还需要自己亲手关闭一扇门,总会有一个世道轮回的后怕。...原创 2020-02-03 20:48:30 · 508 阅读 · 0 评论 -
史上更全面的数据库分库分表、数据一致性、主键分配思路!
一. 数据切分关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。此时就要考虑对其进行切分了,切分的目的就在于减少数据库的负担,缩短查询时间。数据库分布式核心内容无非就是数据切分(Sharding),以及切分后对数据的定位、整合。数据切分就是将数...原创 2020-01-18 20:23:23 · 1697 阅读 · 1 评论 -
摸不到Java的顶峰,咱就转战大数据,绝不在一棵树上吊死
这篇文章的目的是带那些对大数据不了解又有兴趣的人入门。如果你是老手可以忽略,或者想看看有没有不一样的东西也行。我们学习一个新知识,第一步应该是给它个明确的定义。这样才能知道你学的是什么,哪些该学,哪些又可以先不用管。然而,大数据虽然很火,但其实是个概念没那么清晰的东西,不同的人可能有不同的理解。这次我们不去纠结具体的定义,也忽略那些 4 个 V、6 个 C 之类传统说教的东西,甚至不想...原创 2020-01-18 20:13:01 · 642 阅读 · 0 评论 -
阿里集团中间件4面:J.U.C并发框架+RocketMQ +MyCat+锁机制+架构
这是一位同学想要阿里中间件的面试题,来了~需要各互联网公司面试题的,可以到文章留言区,告诉你们想要的面试题,小编会持续更新给到大家~中间件一面自我介绍 擅长哪方面的技术? Java有哪些锁种类?(乐观锁&悲观锁、可重入锁&Synchronize等) 比较重要的数据结构,如链表,队列,栈的基本理解及大致实现 J.U.C下的常见类的使用。 ThreadPool...原创 2020-01-18 16:56:07 · 486 阅读 · 0 评论 -
这可能是迄今为止HashMap详解写的最全的一篇文章
什么是 HashMap?HashMap 是基于哈希表的 Map 接口的非同步实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。HashMap 的数据结构 在 Java 编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMap 也...原创 2020-01-18 15:17:55 · 1163 阅读 · 0 评论 -
你真的了解Tomcat吗之简单搭建一个Tomcat
一、Tomcat主要的作用:接受来自客户端的请求并根据请求流中的信息生成相应的Request对象和用于返回的Response对象;(如请求所使用的协议,HTTP?AJP?;请求资源的URL?等信息放到Request对象中) 调用容器中与URL相对应的处理程序处理该请求; 通过Response对象将服务器处理的结果返回至客户端。二、架构发展过程:2.1 原始的刀耕...原创 2020-01-17 16:33:49 · 492 阅读 · 0 评论 -
Spring Boot基于Spring Integration 实现MQTT客户端简单订阅功能
1 简介Spring Integration 提供入站(inbound)和出站(outbound)通道适配器,以支持MQTT消息协议。使用这两适配器,需要加入依赖:<!-- Maven --> <dependency> <groupId>org.springframework.integration</groupId> <artifa...原创 2020-01-17 16:31:54 · 1922 阅读 · 0 评论 -
19年阿里P6面试题汇总:吃透这些题,助你砍下高薪offer
阿里巴巴Java虚拟机面试题介绍下 Java 内存区域 Java 对象的创建过程 对象的访问定位有几种 String、StringBuilder、StringBuffer 有什么不同? 什么是双亲委派模型 说说你对类加载器的理解 类加载的过程 运行时数据区中哪些区域是线程共享的?哪些是独享的? Java中的数组是存储在堆上还是栈上的? Java中的对象创建有多少种方式? 如...原创 2020-01-16 21:41:32 · 3881 阅读 · 9 评论 -
2020年大厂面试必备:分布式+设计模式+Redis+JVM性能优化
前言面对即将到来的金九银十,作为一个开发人员,你是否面上了自己理想的公司,薪资达到心中理想的高度?面试:如果不准备充分的面试,完全是浪费时间,更是对自己的不负责。今天给大家分享下我整理的Java架构面试专题及答案,其中大部分都是大企业面试常问的面试题,可以对照这查漏补缺,当然了,这里所列的肯定不可能覆盖全部方式,不过也希望能对即将找工作的朋友起到一些帮助!Java面试的重...原创 2020-01-16 21:39:11 · 1030 阅读 · 0 评论 -
redis精进 - sortset&延时队列
最近精进学习Redis,边学边写先赞后读,养成习惯一、SortSet类型使用说明zset 可能是 Redis 提供的最为特色的数据结构,它也是在面试中面试官最爱问的数据结构。一方面它是set,保证 value 的唯一性, 一方面它可以给每个 value 一个 score,代表排序权重。它的内部实现用的是一种叫做「跳跃列表」的数据结构。二、SortSet常用命令...原创 2019-12-27 15:12:22 · 1222 阅读 · 0 评论 -
从0到1一文带你了解分析分布式事务
目录什么是事务? 换个角度看事务 Java 中的事务 什么是分布式事务? 分布式事务的几种实现思路 总结前言在分布式、微服务大行其道的今天,相信大家对这些名词都不会陌生。而说到使用分布式,或者拆分微服务的好处,你肯定能想到一大堆。比如每个人只需要维护自己单独的服务,没有了以前的各种代码冲突。自己想测试、想发布、想升级,只需要 care 自己写的代码就 OK 了,很方便很贴心...原创 2019-12-26 15:56:36 · 466 阅读 · 0 评论 -
Redis异常问题解决方案:缓存雪崩、预热、穿透、击穿、降解方案分析
不管你在工作中还是面试中,Redis异常问题的解决方案都是不得不去学习了解的,下面来细品一下!一、缓存雪崩1、什么是缓存雪崩?如果缓存集中在一段时间内失效,发生大量的缓存穿透,所有的查询都落在数据库上,造成了缓存雪崩由于原有缓存失效,新缓存未到期间所有原本应该访问缓存的请求都去查询数据库了,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机。举例来说, 我们在准备一项抢...原创 2019-12-26 15:38:15 · 2931 阅读 · 1 评论 -
数据库读写分离的坑,你已经在坑了
目录背景 知识储备 问题现象 解决方案 问题总结背景Springboot集成mybatis使用HikariCP连接MySQL,进行读写分离。知识储备在上篇文章中,我们实现了数据源的读写分离,也实现了我们想要的效果. 但是存在一个小小的瑕疵。接下来,我需要介绍一下稍微深入的知识。在我们配置动态数据源的时候,继承了一个类 AbstractRoutingDataSource...原创 2019-12-26 14:53:50 · 1208 阅读 · 0 评论 -
看了这篇你还不懂JVM中的类加载机制?
开门见山首先引入一道面试题class Single { private static Single single = new Single(); public static int count1; public static int count2 = 0; private Single() { count1++; cou...原创 2019-12-26 14:27:09 · 452 阅读 · 0 评论 -
玩烂JVM这五大知识点,面试官一定觉得你很NB(干货 | 建议珍藏)
前言作为 Java 的从业者,在找工作的时候,一定会被问及关于 JVM 相关的知识。 JVM 知识的掌握程度,在很多面试官眼里是候选人技术深度的一个重要评判标准。而大多数人可能没有对 JVM 的实际开发和使用经验,接下来这一系列文章将带你深入了解 JVM 需要掌握的各个知识点。这也将帮助你完成从初级程序员到高级程序员的转变,不想看大纲的话可以直接关注+私信小编“JVM”获取。今天分享一份平...原创 2019-12-25 19:58:06 · 440 阅读 · 0 评论 -
Redis 数据结构+线程模型+持久化+内存淘汰+分布式
简介Redis 是一个开源的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询等。 Redis 内置了 复制(r...原创 2019-12-24 21:36:28 · 521 阅读 · 0 评论 -
仅用 5 步,即可从 0-1 构建大数据知识体系!
很多人都看过不同类型的书,也接触过很多有关大数据方面的文章,但都是很零散不成系统,对自己也没有起到多大的作用,所以作者第一时间,带大家从整体体系思路上,了解大数据产品设计架构和技术策略。大数据产品,从系统性和体系思路上来做,主要分为五步:第一步, 针对前端不同渠道进行数据埋点,然后根据不同渠道的采集多维数据,没有全量数据,何谈大数据分析;第二步,基于采集回来的多维度数据,采用ETL对其...原创 2019-12-24 21:23:07 · 625 阅读 · 0 评论 -
安装 Docker 后服务器 ping 不通了?
背景这两天遇到一个奇怪的问题:开开心心连上服务器,准备跑上自己的服务。为了方便部署,当然是先安装 Docker 了。开开心心的安装,写 Dockerfile,写完了跑起来!访问,懵逼了,无法访问,直接 ping 不通了。因为是突然发现这个问题,没有太怀疑 Docker 的问题,只是把 Docker 关了后发现依旧不行,就排除 Docker 了。现象出问题后可以 ssh 登陆服务器,但是...原创 2019-12-24 16:38:41 · 4697 阅读 · 2 评论 -
闲来无事给大家总结几个程序员实用工具网站(不喜勿喷哈)
程序员开发需要具备良好的信息检索。能力,为了备忘(收藏夹真是满了),将开发过程中常用的网站进行整理,有好的工具也可以评论在下方哦。1、搜索引擎1.1、秘迹搜索 mijisou.com一款无敌有良心、无敌安全的搜索引擎,不会收集私人信息,保护私隐,没有Cookie,并且秘迹搜索聚合了百度、360、Bing、搜狗等搜索结果。1.2、小白盘 www.xiaobaip...转载 2019-12-24 14:00:54 · 1788 阅读 · 0 评论 -
Idea万能快捷键,你不知道的17个实用技巧
说明IDEA里有一个万能快捷键(alt enter),功能非常强大,同一个快捷键,可以根据不同的语境提示你不同的操作, 很多人可能还不了解这些功能,在处理代码的时候还手动处理,了解这些技巧之后,你编码也是一种享受。万能快捷键(alt enter)可以帮你做很多事情,我大概总结了17点:转换lambda表达式 equals的翻转 自动导包 异常捕获 SimpleDateForma...原创 2019-12-21 16:43:57 · 439 阅读 · 0 评论 -
身为一个后端开发程序员不知道压力测试怎么能行
压力测试必知必会压力测试是后端程序员的必备技能,很多工作场景都需要用到这项技能,如果你还不会,那就现在马上学习实践起来,以便不时之需。五分钟上手压测1.安装压测工具:四分钟提前安装好一个趁手的压测工具,Wrk 是现代的压测工具,小巧实用。Wrk 是 C 语言写就的压测工具,所以编译安装需要花些时间,你懂的。(只能在类 Unix 操作系统安装)安装成功的话会显示 Wrk ...原创 2019-12-21 15:26:42 · 880 阅读 · 0 评论 -
没想到,JVM内存结构的面试题竟然可以问的这么难
在我的博客中,之前有很多文章介绍过JVM内存结构,相信很多看多我文章的朋友对这部分知识都有一定的了解了。那么,请大家尝试着回答一下以下问题:1、JVM管理的内存结构是怎样的?2、不同的虚拟机在实现运行时内存的时候有什么区别?3、运行时数据区中哪些区域是线程共享的?哪些是独享的?4、除了JVM运行时内存以外,还有什么区域可以用吗?5、堆和栈的区别是什么?6、Java中的数...原创 2019-12-21 15:09:58 · 362 阅读 · 0 评论 -
阿里架构师带你10分钟快速掌握Docker必备基础知识
Docker是时下热门的容器技术,相信作为一名开发人员,你一定听说过或者使用过,很多人会把Docker理解为一个轻量级虚拟机,但其实Docker与虚拟机(VM)是两种不同的计算机虚拟化技术,也有很多人会觉得,有了虚拟机,那为什么还要使用Docker呢?带着心里的一点点疑问,让我们一起来学习Docker吧。没有虚拟化技术的原始年代我们仔细想想,在没有计算虚拟化技术的“远古”年代,如果我们...原创 2019-12-20 17:08:14 · 453 阅读 · 0 评论 -
日均5亿查询量的京东订单中心,为什么舍弃MySQL用ES?
京东到家订单中心系统业务中,无论是外部商家的订单生产,或是内部上下游系统的依赖,订单查询的调用量都非常大,造成了订单数据读多写少的情况。我们把订单数据存储在MySQL中,但显然只通过DB来支撑大量的查询是不可取的。同时对于一些复杂的查询,MySQL支持得不够友好,所以订单中心系统使用了Elasticsearch来承载订单查询的主要压力。Elasticsearch作为一款功能强大的分布式...原创 2019-12-20 16:47:14 · 529 阅读 · 0 评论 -
8年程序带你了解哪些实用到爆的 Java 代码技巧?
导语自从毕业后,今年已经是我工作的第 8 个年头了,我甚至都快忘记了到底是那年毕业的。从出来本人一直在做 Java 相关的工作,现在终于有时间坐下来,写一篇关于 Java 写法的一篇文章,来探讨一下如果你真的是一个 Java 程序员,那你真的会写 Java 吗?笔者是一个务实的程序员,故本文绝非扯淡文章,文中内容都是干货,望读者看后,能有所收获。本文不是一个吹嘘的文章,不会讲很多高深的...原创 2019-12-20 16:42:23 · 437 阅读 · 0 评论 -
嘿,别翻了,一文彻底解析Java 中的弱引用!拿去不谢
概览本文会通过对弱引用的定义讲起,然后通过案例的使用一步一步的深入源码进行分析其原理,从而让读者深刻的理解什么是弱引用,如何使用弱引用,什么场景下会使用弱引用,弱引用可以解决什么样的问题,以及它的源码实现是怎样的,其中会涉及的内存溢出,垃圾回收原理作用:jdk 官网解释:弱引用主要应用在不阻止它的key或者value 被回收的mapping。直接贴英文吧,翻译水平有限(weak r...原创 2019-12-20 16:23:26 · 441 阅读 · 0 评论 -
MySQL的COUNT语句,竟然都能被面试官虐的这么惨?
数据库查询相信很多人都不陌生,所有经常有人调侃程序员就是CRUD专员,这所谓的CRUD指的就是数据库的增删改查。在数据库的增删改查操作中,使用最频繁的就是查询操作。而在所有查询操作中,统计数量操作更是经常被用到。关于数据库中行数统计,无论是MySQL还是Oracle,都有一个函数可以使用,那就是COUNT但是,就是这个常用的COUNT函数,却暗藏着很多玄机,尤其是在面试的时候,一不小心...原创 2019-12-20 16:18:39 · 450 阅读 · 0 评论 -
小米技术分享:Mysql数据实时同步实践
背景MySQL由于自身简单、高效、可靠的特点,成为小米内部使用最广泛的数据库,但是当数据量达到千万/亿级别的时候,MySQL的相关操作会变的非常迟缓;如果这时还有实时BI展示的需求,对于mysql来说是一种灾难。为了解决sql查询慢,查不了的业务痛点,我们探索出一套完整的实时同步,即席查询的解决方案,本文主要从实时同步的角度介绍相关工作。早期业务借助Sqoop将Mysql中的数据同步到...原创 2019-12-20 16:14:10 · 456 阅读 · 0 评论 -
图解redis五种数据结构底层实现(动图版)
redis有五种基本数据结构:字符串、hash、set、zset、list。但是你知道构成这五种结构的底层数据结构是怎样的吗?今天我们来花费五分钟的时间了解一下。(目前redis版本为3.0.6)动态字符串SDSSDS是"simple dynamic string"的缩写。redis中所有场景中出现的字符串,基本都是由SDS来实现的所有非数字的key。例如 setmsg"hello w...原创 2019-12-20 16:10:51 · 4226 阅读 · 0 评论 -
生产事故!线上四台机器同一时间全部 OOM
案发现场昨天晚上突然短信收到 APM (即 Application Performance Management 的简称),我们内部自己搭建了这样一套系统来对应用的性能、可靠性进行线上的监控和预警的一种机制)大量告警 画外音: 监控是一种非常重要的发现问题的手段,没有的话一定要及时建立哦紧接着运维打来电话告知线上部署的四台机器全部 OOM (out of memory, 内存不足...原创 2019-12-20 16:08:17 · 406 阅读 · 0 评论 -
太不容易了,终于有人把 Docker 讲清楚了,泪奔了
一、简介1、了解Docker的前生LXCLXC为Linux Container的简写。可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。相当于C++中的NameSpace。容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。与传统虚拟化技术相比,它的优势在于:(1)与宿主机使用同一个...原创 2019-12-20 14:26:05 · 934 阅读 · 0 评论 -
京东到家大数据平台架构演进实战
达达-京东到家大数据平台是根据公司业务持续快速成长,而规划建设的一个可持续发展的平台。在建设过程中我们借鉴了很多公司实施大数据平台的经验,并因地制宜构建了我们自己的实施策略,确保在大方向上不会走偏,并且每一年都会有重大变化和质的成长。建设回顾图1 大数据平台建设历程2016年——DRP平台建设这个阶段数据仓库还是Mysql,所有工作几乎都是围绕着短、平、快实现重要核心报表而开展...原创 2019-12-17 16:07:25 · 649 阅读 · 0 评论 -
面试官:100万个成员的数组取第一个和最后一个有性能差距吗?
数组几乎可以是所有软件工程师最常用到的数据结构,正是因为如此,很多开发者对其不够重视.而面试中经常有这样一类问题: 「100万个成员的数组取第一个和最后一个有性能差距吗?为什么?」除此之外,我们在平时的业务开发中会经常出现数组一把梭的情况,大多数情况下我们都会用数组的形式进行操作,而有读源码习惯的开发者可能会发现,在一些底层库中,我们可能平时用数组的地方,底层库却选择了另外的数据结构,这又...原创 2019-12-17 16:03:41 · 714 阅读 · 0 评论 -
超燃!高效 MacBook 工作环境配置,超实用!
预计阅读时间:28分钟工欲善其事,必先利其器,工具永远都是用来解决问题的,没必要为了工具而工具,一切工具都是为了能快速准确的完成工作和学习任务而服务。本文记录 MacBook 整个配置过程,供新入手MacBook和觉得MacBook比较难用的同学参考。1. 硬件提升笔记本电脑的特点是携带方便,缺点是屏幕太小,因此你首先需要再申请领用一个外接显示器,多一个屏幕会大大减少你切换应用程序...原创 2019-12-17 16:01:43 · 569 阅读 · 0 评论 -
解析年度开发者报告,程序员你真的了解自己的行业么?
Stack Overflow作为全球最大的程序设计领域的问答网站,每年都会出据一份开发者调查报告。近日,Stack Overflow公布了其第9次年度开发者调查报告(https://insights.stackoverflow.com/survey/2019),这份报告基于对9万Stack Overflow用户的调查。涉及众多领域,今天,挑其中和广大开发者最息息相关的几个重点调查结果给大家介绍一下...原创 2019-12-17 15:55:40 · 509 阅读 · 0 评论 -
计算机网络太难了?了解这一篇就够了
计算机网络、计算机操作系统这两个“兄弟”是所有开发岗位都需要“结拜”的,不管你是 Java、C++还是测试。对于后端开发的童鞋来说,计算机网络的重要性不亚于语言基础,毕竟平时开发经常会和网络打交道,比如:抓个包等等。所以对这一块知识点的准备还是要抱着敬畏之心,不要放过任何一个漏网之题。下面分享下我的学习过程:1. 看书:对于计算机比较基础的模块,我都是比较推荐找一本经典的书籍来好好学习下,不可...原创 2019-12-17 15:53:16 · 1492 阅读 · 0 评论 -
开发技巧:如何能一个字段表示八个状态?
一、惊现问题有一天,突然来了一个需求,问小明提交了哪些课程的作业?A:语文 B:数学 C:英语 D:物理 E:化学 F:生物 G:历史 H:地理 .....这么多课程.....我要8个字段? 万一还有课程呢?我还要再加字段? 我肯定不慌啊,我一个字段搞定。二、解决之道通过一个 int或者long 字段,来添加多个 标志或者状态. 一个int或者long字段,能够管理多个标...原创 2019-12-17 15:51:19 · 719 阅读 · 0 评论 -
吃透源码的每一个细节和设计原理--ThreadLocal
引言ThreadLocal 是面试过程中非常高频的一个类,这类的复杂程度绝对是可以带出一系列连环炮的面试轰炸。biu biu biu ~~~~.一直觉得自己对这个类很了解了,但是直到去看源码,接二连三的技术浮出水面(弱引用,避免内存溢出的操作,开放地址法解决hash 冲突,各种内部类的复杂的关系),看到你怀疑人生,直到根据代码一步一步的画图才最终理解(所以本篇文章会有大量的图)。 这里也给...原创 2019-12-17 15:33:54 · 607 阅读 · 1 评论 -
new一个对象的时候发生了什么?
一、引言如你所知,Java是一门面向对象的编程语言。我们平常在写代码的时候也是在不停的操作各种对象,那么当你在写出User user = new User();这样一行代码的时候,JVM都做了些什么呢?二、了解对象1、内存布局在Hotspot虚拟机中一个对象的内存布局分为三个部分:对象头、实例数据、对齐填充。对象头又有两部分的信息,第一部分是用于存储对象自身的运行数据(Hash...转载 2019-12-17 15:32:14 · 430 阅读 · 0 评论