Java知音
专栏分享Java相关内容,同步部分Java知音微信公众号内容,Java知音专注于Java、分享Java相关技术文章。第一时间获取Java优质技术文章?请关注微信公众号“Java知音”,更有海量学习资源。祝大家好运!!!
Java笔记虾
欢迎微信搜索【Java笔记虾】关注我的公众号,号内回复“后端面试”,送你一份精心准备的Java面试题(提纲+解析),后端技术精选每天定时推送优质Java技术博客,可以琐碎时间学点儿东西
展开
-
来讨论一下这些常见的 Redis 面试题
Redis应该算面试中必问的一个知识点,但是发现很多童鞋并不熟悉这块,这篇就常见的一些问题做一些整理,有不对的地方欢迎留言指正!1.Redis支持的数据类型?String(字符串)格式:set key valuestring类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。string类型是Redis最基本的数据类型,一个键...原创 2020-04-05 10:36:28 · 1901 阅读 · 0 评论 -
索引很难么?带你从头到尾捋一遍MySQL索引结构,不信你学不会!
前言Hello我又来了,快年底了,作为一个有抱负的码农,我想给自己攒一个年终总结。自上上篇写了手动搭建Redis集群和MySQL主从同步(非Docker)和上篇写了动手实现MySQL读写分离and故障转移之后,索性这次把数据库中最核心的也是最难搞懂的内容,也就是索引,分享给大家。这篇博客我会谈谈对于索引结构我自己的看法,以及分享如何从零开始一层一层向上最终理解索引结构。从一个简单的表开...原创 2019-12-10 14:35:16 · 912 阅读 · 0 评论 -
从入门到入土:Lambda完整学习指南,包教包会!
什么是Lambda表达式Lambda表达式是Java SE 8中一个重要的新特性。lambda表达式允许你通过表达式来代替功能接口。lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式或一个代码块)。Lambda表达式还增强了集合库。Java Lambda表达式的一个重要用法是简化某些匿名内部类(Anonymous Classes)...原创 2019-12-09 10:20:34 · 5547 阅读 · 5 评论 -
手把手教你实现MySQL读写分离+故障转移,不信你学不会!
上一篇发了手动搭建Redis集群和MySQL主从同步(非Docker)之后,很多同学对文中主从结构提到的读写分离感兴趣,本打算在双十一期间直接把读写分离分享给大家,奈何工作一直没停下,所以这周抽空把这些分享出来。原创 2019-12-06 22:59:46 · 1493 阅读 · 3 评论 -
【29期】Java集合框架 10 连问,你有被问过吗?
首先要说一下,本文对这些Java集合框架的面试题只做了一个总结式的回答,对每一道题目,都值得深入去了解一下(什么是扎实基本功,这些就是基本功~~),后续可能对每一道题目拆开独立篇章来深入讲解一下。大家看到这些总结,有疑惑的,就赶紧去查一查深入了解一下,当然也欢迎指出文中错误之处。以下是大纲: HashMap和HashTable的区别? 说一下 HashMap 的底层结构?...原创 2019-12-04 10:46:26 · 3963 阅读 · 1 评论 -
实战:彻底搞定 SpringBoot 整合 Kafka(spring-kafka深入探秘)
前言kafka是一个消息队列产品,基于Topic partitions的设计,能达到非常高的消息发送处理性能。Spring创建了一个项目Spring-kafka,封装了Apache 的Kafka-client,用于在Spring项目里快速集成kafka。除了简单的收发消息外,Spring-kafka还提供了很多高级功能,下面我们就来一一探秘这些用法。项目地址:https://gith...转载 2019-11-27 19:04:49 · 3211 阅读 · 0 评论 -
经验:MySQL 百万级数据量分页查询如何优化?
方法1: 直接使用数据库提供的SQL语句语句样式:MySQL中,可用如下方法:SELECT*FROM表名称LIMITM,N适应场景:适用于数据量较少的情况(元组百/千级)原因/缺点:全表扫描,速度会很慢 且 有的数据库结果集返回不稳定(如某次返回1,2,3,另外的一次返回2,1,3). Limit限制的是从结果集的M位置处取出N条输出,其余抛弃.方法2: 建...转载 2019-11-27 19:03:28 · 1549 阅读 · 0 评论 -
SpringBoot 常用注解和原理都在这儿了!
一、启动注解 @SpringBootApplication@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan(excludeFilters={...转载 2019-11-27 19:02:32 · 1302 阅读 · 0 评论 -
Docker从入门到掉坑(三):容器太多,操作好麻烦
前边的两篇文章里面,我们讲解了基于docker来部署基础的SpringBoot容器,如果阅读本文之前没有相关基础的话,可以回看之前的教程。Docker 从入门到掉坑Docker从入门到掉坑(二):基于Docker构建SpringBoot微服务不知道大家在初次使用docker的时候是否有遇到这种场景,每次部署微服务都是需要执行docker run xxx,docker kill xxx ...原创 2019-11-25 10:22:02 · 1876 阅读 · 2 评论 -
MySQL:数据库优化,看这篇就够了
前言数据库优化一方面是找出系统的瓶颈,提高MySQL数据库的整体性能,而另一方面需要合理的结构设计和参数调整,以提高用户的相应速度,同时还要尽可能的节约系统资源,以便让系统提供更大的负荷.1. 优化一览图2. 优化笔者将优化分为了两大类,软优化和硬优化,软优化一般是操作数据库即可,而硬优化则是操作服务器硬件及参数设置.2.1 软优化2.1.1 查询语句优化1.首先我...转载 2019-11-18 10:21:16 · 741 阅读 · 0 评论 -
Java:由浅入深揭开 AOP 实现原理
概述:最近在开发中遇到了一个刚好可以用AOP实现的例子,就顺便研究了AOP的实现原理,把学习到的东西进行一个总结。文章中用到的编程语言为kotlin,需要的可以在IDEA中直接转为java。这篇文章将会按照如下目录展开: AOP简介 代码中实现举例 AOP实现原理 部分源码解析 1. AOP简介相信大家或多或少的了解过AOP,都知道它是面向...转载 2019-11-18 10:18:53 · 938 阅读 · 0 评论 -
这次一定要教会你搭建Redis集群和MySQL主从同步(非Docker)
前言一直都想自己动手搭建一个Redis集群和MySQL的主从同步,当然不是依靠Docker的一键部署(虽然现在企业开发用的最多的是这种方式),所以本文就算是一个教程类文章吧,但在动手搭建之前,会先聊聊理论的东西,以便于大家有一个集群和主从同步的概念,如果有同学不了解Redis和MySQL,可以看一下我之前的两篇文章。Redis由浅入深深深深深剖析从入门到入土:令人脱发的数据库底层设计...原创 2019-11-08 10:14:01 · 1492 阅读 · 1 评论 -
Java开发神器:Lombok 学习指南
一、Lombok 简介Lombok 是一款 Java 开发插件,使得 Java 开发者可以通过其定义的一些注解来消除业务工程中冗长和繁琐的代码,尤其对于简单的 Java 模型对象(POJO)。在开发环境中使用 Lombok 插件后,Java 开发人员可以节省出重复构建,诸如 hashCode 和 equals 这样的方法以及各种业务对象模型的 accessor 和 toString 等方法...转载 2019-11-06 10:00:53 · 1066 阅读 · 0 评论 -
“12306”的架构到底有多牛逼?
每到节假日期间,一二线城市返乡、外出游玩的人们几乎都面临着一个问题:抢火车票!虽然现在大多数情况下都能订到票,但是放票瞬间即无票的场景,相信大家都深有体会。尤其是春节期间,大家不仅使用12306,还会考虑“智行”和其他的抢票软件,全国上下几亿人在这段时间都在抢票。“12306服务”承受着这个世界上任何秒杀系统都无法超越的QPS,上百万的并发再正常不过了!笔者专门研究了一下“12306”的服...转载 2019-10-31 17:33:00 · 1315 阅读 · 0 评论 -
超实用:阅读跟踪 Java 源码的几个小技巧!
今天介跟大家分享一下我平时阅读源码的几个小技巧,对于阅读java中间件如Spring、Dubbo等框架源码的同学有一定帮助。本文基于Eclipse IDE,我们每天都使用的IDE其实提供了很多强大的功能,掌握它们,往往能够事半功倍。1、Quick Type Hierarchy 快速查看类继承体系。快捷键:Ctrl + T查看类很多人可能都知道,可源码阅读的时候更多用来查看方法体...转载 2019-10-28 15:42:07 · 865 阅读 · 0 评论 -
细数 Spring 那些最常见的面试问题
1. 一般问题 1.1. 不同版本的 Spring Framework 有哪些主要功能? 1.2. 什么是 Spring Framework? 1.3. 列举 Spring Framework 的优点。 1.4. Spring Framework 有哪些不同的功能? 1.5. Spring Framework 中有多少个...转载 2019-10-28 15:40:31 · 707 阅读 · 0 评论 -
关于 Git 提交这些规范,你都遵守了吗?
git是现在市面上最流行的版本控制工具,书写良好的commit message能大大提高代码维护的效率。但是在日常开发中由于缺少对commit message的约束,导致填写内容随意、质量参差不齐,可读性低亦难以维护。在项目中引入commit message规范已是迫在眉睫。 用什么规范? Quick Start 1. 全局安装commitizen &...转载 2019-10-27 11:40:59 · 1204 阅读 · 0 评论 -
框架开发之Java注解的妙用
PS:如果你还不会使用注解,你肯定不好意思对别人说你学过Spring,你学过Mybatis,因为它们用了大量的注解。可见注解在开发领域已经使用的非常广泛了。注解的好处:1.能够读懂别人写的代码,特别是框架相关的代码。2.本来可能需要很多配置文件,需要很多逻辑才能实现的内容,就可以使用一个或者多个注解来替代,这样就使得编程更加简洁,代码更加清晰。3.(重点)刮目相看。(但是怎么样才能...转载 2019-10-25 13:20:33 · 791 阅读 · 0 评论 -
如何自己手写一个热加载(附源码)
热加载:在不停止程序运行的情况下,对类(对象)的动态替换Java ClassLoader 简述Java中的类从被加载到内存中到卸载出内存为止,一共经历了七个阶段:加载、验证、准备、解析、初始化、使用、卸载。接下来我们重点讲解加载和初始化这两步加载在加载的阶段,虚拟机需要完成以下三件事: 通过一个类的全限定名来获取定义此类的二进制字节流 将这个字节流所代表的...转载 2019-10-25 13:19:38 · 849 阅读 · 0 评论 -
数据的异构实战(二)手写迷你版同步工程
上一期讲到了通过canal订阅mysql的binlog日志并且转换为对象,那么这一次我们将订阅来的对象通过RocketMQ发送消息,接收方接受消息之后同时存储到其他类型的数据源当中,完成一个简单的数据异构的过程。什么是Java消息服务?两个应用程序之间进行异步通信的API,它为标准消息协议和消息服务提供了一组通用接口,包括创建、发送、读取消息等,用于支持JAVA应用程序开发。...原创 2019-10-25 13:14:06 · 741 阅读 · 1 评论 -
从实践角度重新理解BIO和NIO
前言这段时间自己在看一些Java中BIO和NIO之类的东西,看了很多博客,发现各种关于NIO的概念说的天花乱坠头头是道,可以说是非常的完整,但是整个看下来之后,自己对NIO还是一知半解的状态,所以这篇文章不会提到很多的概念,而是站在一个实践的角度,写一些我自己关于NIO的见解,站在实践过后的高度下再回去看概念,应该对概念会有一个更好的理解。实现一个简易单线程服务器要讲明白BIO和NIO...原创 2019-10-22 12:41:56 · 1939 阅读 · 1 评论 -
Java8-Stream集合操作快速上手
目录 Stream简介 为什么要使用Stream 实例数据源 Filter Map FlatMap Reduce Collect Optional 并发 调试 Stream简介 Java 8引入了全新的Stream API。这里的Stream和I/O流不同,它更像具有Iterable...转载 2019-10-21 11:19:18 · 681 阅读 · 0 评论 -
后端实践:Nginx日志配置(超详细)
前言Nginx日志对于统计、系统服务排错很有用。Nginx日志主要分为两种:access_log(访问日志)和error_log(错误日志)。通过访问日志我们可以得到用户的IP地址、浏览器的信息,请求的处理时间等信息。错误日志记录了访问出错的信息,可以帮助我们定位错误的原因。本文将详细描述一下如何配置Nginx日志。设置access_log访问日志主要记录客户端的请求。客户端向...转载 2019-10-21 11:17:21 · 7981 阅读 · 0 评论 -
面试再问ThreadLocal,别说你不会
ThreadLocal是什么以前面试的时候问到ThreadLocal总是一脸懵逼,只知道有这个哥们,不了解他是用来做什么的,更不清楚他的原理了。表面上看他是和多线程,线程同步有关的一个工具类,但其实他与线程同步机制无关。线程同步机制是多个线程共享同一个变量,而ThreadLocal是为每个线程创建一个单独的变量副本,每个线程都可以改变自己的变量副本而不影响其它线程所对应的副本。官方AP...转载 2019-10-16 13:39:07 · 735 阅读 · 0 评论 -
多线程基础体系知识清单
前言本文会介绍Java中多线程与并发的基础,适合初学者食用。线程与进程的区别在计算机发展初期,每台计算机是串行地执行任务的,如果碰上需要IO的地方,还需要等待长时间的用户IO,后来经过一段时间有了批处理计算机,其可以批量串行地处理用户指令,但本质还是串行,还是不能并发执行。如何解决并发执行的问题呢?于是引入了进程的概念,每个进程独占一份内存空间,进程是内存分配的最小单位,相互间运行...原创 2019-10-13 13:29:34 · 2016 阅读 · 2 评论 -
感受lambda之美,推荐收藏,需要时查阅
一、引言java8最大的特性就是引入Lambda表达式,即函数式编程,可以将行为进行传递。总结就是:使用不可变值与函数,函数对不可变值进行处理,映射成另一个值。二、java重要的函数式接口1、什么是函数式接口函数接口是只有一个抽象方法的接口,用作 Lambda 表达式的类型。使用@FunctionalInterface注解修饰的类,编译器会检测该类是否只有一个抽象方法或接口,否则,...转载 2019-10-12 10:39:21 · 634 阅读 · 0 评论 -
什么才是java的基础知识?
作者:晓风出处:https://xwjie.github.io 关于资源视频下载的说明常用设计模式完整系列篇【强化编程功底】算法文摘近日里,很多人邀请我回答各种j2ee开发的初级问题,我无一都强调java初学者要先扎实自己的基础知识,那什么才是java的基础知识?又怎么样才算掌握了java的基础知识呢?这个问题还真值得仔细思考。我做j2ee开发已经超过十载,作为过来人,心路历程估计和大家差不多。编...转载 2018-05-19 20:05:37 · 999 阅读 · 1 评论 -
MyBatis系列文章
深入底层,仿MyBatis自己写框架 MyBatis教程(1):初识MyBatis MyBatis教程(2):Mapper.xml详解 MyBatis教程(3):逆向工程 MyBatis教程(4):延迟加载 MyBatis教程(5):缓存 MyBatis教程(6):动态SQL...转载 2018-07-30 19:30:21 · 930 阅读 · 0 评论 -
Java面试题大全
经典Java面试题汇总及答案解析https://www.javazhiyin.com/826.html Java 面试题:百度前200页都在这里了https://www.javazhiyin.com/838.html Java中高级面试题【第一部分】https://www.javazhiyin.com/337.html Java中高级面试题【第二部分】htt...原创 2018-07-24 16:53:01 · 2217 阅读 · 0 评论 -
拿到年终奖后马上辞职,厚道吗?
点击上方“Java知音”,选择“置顶公众号”技术文章第一时间送达!知音专栏:JavaWeb练手项目源码下载常用的设计模式完整总结篇近几年的java面试题总结汇总这里引自知乎上的一个话题:“拿到年终奖后马上辞职,厚道吗?”,以下是疯死沃的回答,个人感觉对此时的我们可能很具有参考价值,平台经作者授权发布,转载请自行联系原作者,欢迎大家点击阅读原文。以下是正文:我以前也遇到过你这种萌新。当时出差,公司塞...转载 2018-02-26 18:13:18 · 1376 阅读 · 0 评论 -
关于Java的二十篇技术热文
点击上方“Java知音”,选择“置顶公众号”技术文章第一时间送达!到周末了,小编给大家整理了二十篇评价不错的Java技术文章,方便学习回顾,值得收藏。题外话1、公众号开通了号内搜索,欢迎点击下方菜单栏【知音专栏】,搜你需要的文章。2、相信不少朋友都有自己的博客,如果希望自己的文章被更多人看到,欢迎联系小编,小编会推荐给很多正在学习的小伙伴们。当然,如果愿意投稿到公众号,更是非常欢迎。3、如果有需要...转载 2018-03-06 13:13:09 · 1180 阅读 · 0 评论 -
【Linux入门学习之】vi/vim编辑器必知必会
推荐阅读 微服务:springboot系列教程学习 源码:Javaweb练手项目源码下载 调优:十五篇好文回顾 面试笔试:面试笔试整理系列一、我们为什么要学习vim编辑器?Linux的命令行界面下面有非常多的文本编辑器。比如经常听说的就有Emacs、pico、nano、joe与vim等。vim可以看做是vi的高级版。我们为什么一定要学习vim呢?有以下几个原因:(1)所有的...转载 2018-02-08 13:43:45 · 1400 阅读 · 1 评论 -
20条最最常用的Linux命令讲解
推荐阅读 微服务:springboot系列教程学习 源码:Javaweb练手项目源码下载 调优:十五篇好文回顾 面试笔试:面试笔试整理系列玩过Linux的人都会知道,Linux中的命令的确是非常多,但是玩过Linux的人也从来不会因为Linux的命令如此之多而烦恼,因为我们只需要掌握我们最常用的命令就可以了。当然你也可以在使用时去找一下man,他会帮你解决不少的问题。然而每...转载 2018-02-08 13:53:49 · 1039 阅读 · 0 评论 -
Java反射最佳实践
点击上方“Java知音”,选择“置顶公众号”技术文章第一时间送达!本文的作者是:@天之界线2010,欢迎点击阅读原文概要:最简单优雅的使用反射。本文的例子都可以在示例代码中看到并下载,如果喜欢请star,如果觉得有纰漏请提交issue,如果你有更好的点子可以提交pull request。本文的示例代码主要是基于jOOR行编写的,如果想转载 2018-02-07 13:12:24 · 737 阅读 · 0 评论 -
详解java类的生命周期
点击上方“Java知音”,选择“置顶公众号”技术文章第一时间送达!点击这里,加入微信技术学习群,共同学习!本文的作者是:愤怒的韭菜引言 最近有位细心的朋友在阅读笔者的文章时,对java类的生命周期问题有一些疑惑,笔者打开百度搜了一下相关的问题,看到网上的资料很少有把这个问题讲明白的,主要是因为目前国内java方面的教材大转载 2018-02-07 13:17:49 · 791 阅读 · 0 评论 -
Java 如何有效地避免OOM:善于利用软引用和弱引用
点击上方“Java知音”,选择“置顶公众号”技术文章第一时间送达!想必很多朋友对OOM(OutOfMemory)这个错误不会陌生,而当遇到这种错误如何有效地解决这个问题呢?今天我们就来说一下如何利用软引用和弱引用来有效地解决程序中出现的OOM问题。下面是本文的目录大纲: 一.了解 强引用、软引用、弱引用、虚引用的概念 二.进一步理解软引用和弱引用转载 2018-02-07 13:20:25 · 702 阅读 · 0 评论 -
Java:类与继承
点击上方“Java知音”,选择“置顶公众号”技术文章第一时间送达!对于面向对象的程序设计语言来说,类毫无疑问是其最重要的基础。抽象、封装、继承、多态这四大特性都离不开类,只有存在类,才能体现面向对象编程的特点,今天我们就来了解一些类与继承的相关知识。首先,我们讲述一下与类的初始化相关的东西,然后再从几个方面阐述继承这一大特性。以下是本文的目录大纲: 一.你了解转载 2018-02-07 13:34:48 · 714 阅读 · 0 评论 -
java字节流与字符流的区别
点击上方“Java知音”,选择“置顶公众号”技术文章第一时间送达!字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢?实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作文件。下面以两个写文件的操作为主进行比较,但是在操作时字节流和字符转载 2018-02-07 13:37:27 · 727 阅读 · 0 评论 -
Java垃圾回收机制
点击上方“Java知音”,选择“置顶公众号”技术文章第一时间送达!说到垃圾回收(Garbage Collection,GC),很多人就会自然而然地把它和Java联系起来。在Java中,程序员不需要去关心内存动态分配和垃圾回收的问题,这一切都交给了JVM来处理。顾名思义,垃圾回收就是释放垃圾占用的空间,那么在Java中,什么样的对象会被认定为“垃圾”?那么当一些对转载 2018-02-07 13:43:31 · 737 阅读 · 0 评论 -
浅谈Java中的hashcode方法
点击上方“Java知音”,选择“置顶公众号”技术文章第一时间送达! 哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率。在Java的Object类中有一个方法:public native int hashCode(); 根据这个方法的声明可知,该方法返回一个int类型的数值,并且是转载 2018-02-07 13:45:33 · 693 阅读 · 0 评论