暂时未有相关云产品技术能力~
暂无个人介绍
前两天头条有朋友留言说使用class.forName找不到类,可以使用classloader加载。趁此机会总结一下,正好看到面试中还经常问到。
redis是一个内存数据库,数据保存在内存中,但是我们都知道内存的数据变化是很快的,也容易发生丢失。幸好Redis还为我们提供了持久化的机制,分别是RDB(Redis DataBase)和AOF(Append Only File)。 在这里假设你已经了解了redis的基础语法,某字母网站都有很好的教程,可以去看。基本使用的文章就不写了,都是一些常用的命令。 下面针对这两种方式来介绍一下。由浅入深。
这篇文章主要是对servlet的运行过程进行一个分析。涉及了一些基本的用法和常见的面试题。
文件的上传下载功能算是一个比较常用的功能
有时候在开发中经常会使用一些定时的任务,比如果整点推送,或者是每隔一段时间给客户发送一个消息等等。这篇文章主要是通过Springboot整合Schedule来实现一个定时任务,非常的简单
JDBC全称又叫做Java DataBase Connectivity,就是Java数据库连接,说白了就是用Java语言来操作数据库。这篇文章主要是对JDBC的原理进行讲解。不会专注于其使用。主要是理解其思想并对一些常见的面试题进行讲解。
之前使用Springboot整合了websocket,实现了一个后端向前端推送信息的基本小案例,这篇文章主要是增加了一个新的框架就是Netty,实现一个高性能的websocket服务器,并结合前端代码,实现一个基本的聊天功能。你可以根据自己的业务需求进行更改。 这里假设你已经了解了Netty和websocket的相关知识,仅仅是想通过Springboot来整合他们。根据之前大家的需求,代码已经上传到了github上。在文末给出。 废话不多说,直接看步骤代码。
在手机上相信都有来自服务器的推送消息,比如一些及时的新闻信息,这篇文章主要就是实现这个功能,只演示一个基本的案例。使用的是websocket技术。
去年学习的Redis,刚刚学习完就迫不及待的在实战中用了一下,走了很多坑不过幸好都填上了,需求的不断变化发现用不上Redis,一开始去掉了,后来想想加进来比较合适。这篇文章主要讲解Springboot如何整合开发Redis实现一个基本的案例。使用的是目前Springboot2.x的Lettuce版本。希望对你有帮助。
在java的多线程模块中,ThreadLocal是经常被提问到的一个知识点,提问的方式有很多种,可能是循序渐进也可能是就像我的题目那样,因此只有理解透彻了,不管怎么问,都能游刃有余。 这篇文章主要从以下几个角度来分析理解 1、ThreadLocal是什么 2、ThreadLocal怎么用 3、ThreadLocal源码分析 4、ThreadLocal内存泄漏问题 下面我们带着这些问题,一点一点揭开ThreadLocal的面纱。若有不正之处请多多谅解,并欢迎批评指正。
之前曾经写过一些计算机网络的基本知识点,还有对物理层进行了介绍,这篇文章主要是对数据链路层进行讲解,数据链路层的知识点不管是面试还是你期末考试,就开始变得比较多了。如果你之前学过正好回顾一下。
计算机网络是面试中必问的模块,由于知识点太多因此我是分开来写的,在之前曾经写过一篇计算机网络的体系概述,把一些常见的面试知识点给总结了一下。今天继续开始第一层物理层的介绍。同样也是只介绍最核心的面试常问的知识点。
这篇文章是计算机网络面试的第一篇文章,主要是对计算机网络知识体系的一个概述,当然了,本系列文章肯定不会把计算机网络这些书籍进行全面的介绍,那样太麻烦也太多了。而是针对面试相关的一个知识梳理,尽量从简单入手。
前段时间相信都被阿里的OceanBase数据库刷屏了,它击败世界头号数据库厂商Oracle,登顶全球第一。先不看新闻内容,光是看标题就足以让人耳目一新了。又是“击败”,又是“第一”,又是“打破世界纪录”。即使是IT行业的门外汉,相信也会对这个消息感到振奋。但是你知道其底层其实使用的Paxos协议吗?如果你不知道也没关系,这篇文章主要就是让你理解Paxos协议到底是个什么东西?
在之前的文章中我曾介绍了2pc协议的相关知识,这篇文章开始介绍3pc协议。理论知识往往是枯燥无味的,但是等学完了技术再回过头来重新认识的时候,你会有不一样的收获。这个点是面试常问的点,而且如果你正在对java技术或者是其他的技术进阶学习的话,这个知识点也是应该要掌握的。
这篇文章主要讲解Springboot整合Mybatis实现一个最基本的增删改查功能,整合的方式有两种一种是注解形式的,也就是没有Mapper.xml文件,还有一种是XML形式的,我推荐的是使用注解形式,为什么呢?因为更加的简介,减少不必要的错误。
java8中有两个非常有名的改进,一个是Lambda表达式,一个是Stream。如果我们了解过函数式编程的话,都知道Stream真正把函数式编程的风格引入到了java中。这篇文章由简入繁逐步介绍Stream。
在上一篇文章中曾经介绍到了java8中的Lambda表达式,这篇文章是基于Lambda表达式来叙述的。主要讲解方法引用
这几天复习了java8的一些新特性,作为一个从java5以来最具革命性的版本,一直没有来得及总结。本系列文章主要是从《java8实战》总结的。这是第一篇文章主要介绍java8的lambda。
内存溢出是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于虚拟机能提供的最大内存。这篇文章整理自《深入理解java虚拟机》。因为内存溢出问题不仅是工作中的一个重要方面,而且面试中也是经常问。
想到你应该无数次看到过这个问题了,也可能你已经看过无数篇文章了,如果你还是一头雾水或者是不理解,那试着看看这篇文章,相信你一定能看懂。
有时候在服务器处理客户端连接的时候,一个客户端我们都会创建一个线程去处理,但是我们可能会纳闷,难道有一万个客户端连接,我们也要创建一万个线程分别去处理嘛?这显然是不合理的。因此我们就用到了线程池这个概念。这篇文章就来好好的分析一下java中的四种线程池。
分布式事务专题一直是面试的重点,这篇文章主要是讨论一下分布式事务中的2pc协议。如果你之前看过CAP和BASE理论,会对这篇文章的理解有更大的帮助。
在学习数据结构的时候,老师多少会提到并查集,他的应用也是超级广泛。本文首先会通过案例来对并查集有一个介绍。然后给出并查集的java实现。
哈诺塔问题相信只要学习计算机的人都知道。这是一个古老而又伟大的问题。在这篇文章中,主要是给出递归解决汉诺塔问题的代码方法。毕竟面试的时候,HR比我们要变态很多,怎么蹂躏我们怎么玩。
java中的排序工具主要是有两个Arrays和Collections。我们一个一个来讲解。 本来写好了每一种方法的测试代码,后来又给删了,因为我觉得如果想要去了解的话,可以直接查看这些常用的即可。因为使用起来真的太简单。篇幅太长也不好。
平衡二叉树对于初学者一直是一个比较复杂的知识点,因为其里面涉及到了大量的旋转操作。把大量的同学都给转晕了。这篇文章最主要的特点就是通过动画的形式演示。确保大家都能看懂。最后是手写一个平衡二叉树。
哈弗曼树往往都会根据哈夫曼编码结合着来说,因此这篇文章,主要结合着面试问题来说明。
分布式系统中除了CAP理论,还有一个不得不说的BASE理论,这不仅是面试中常问的一个知识点,也是在学习分布式系统时候一个绕不过去的基础。
最新整理的java学习路线
这篇文章主要是认识一下mysql中的变量,本来是不准备整理的,但是发现后面的存储过程等等在实际用的时候还挺多。 mysql里面的变量你可以和java中的变量进行对比理解。主要分为两种:系统变量和自定义变量。自定义变量是重点。
这篇文章主要是从mysql数据库的逻辑架构来认识掌握mysql的原理。只要是稍微有一点计算机的相关知识相信都能看明白。
这篇文章将从以下几个角度来学习Springcloud入门的一些相关知识。 1、微服务是什么? 2、微服务和微服务架构的区别是什么? 3、微服务技术有什么? 4、微服务的优缺点是什么? 5、为什么选择Springcloud作为微服务架构? 在写本系列文章之前,我也看了很多网上的大佬那些微服务系列的文章,他们写的都非常好,别人问我关于一些微服务的技术文章时,我也都会把那些我认为写的好的文章推送给他们,但是存在一个问题,那就是刚刚接触微服务的同学,一开始觉得写的通俗易懂而且确实很简单,但是越往后看越看不懂。因此才萌生出自己写一套循序渐进的文章。
视图算是一个mysql中一个稍微比较高级一点的知识点,它本身就是一个虚拟表,这篇文章从案例出发介绍mysql中的视图
事务又叫做TCL,全称是transaction control language,意思是事务控制语言。这篇文章还是属于我的mysql基础文章,在前面我们介绍了下面这些基础知识: 1、数据库的增查改删操作 2、数据表的增查改删操作 3、数据的增查改删操作 3、数据的约束以及增查改删 5、Mysql中的内置函数 这篇文章还是基础系列的文章,主要是介绍mysql中的事务,为了保持文章的完整性,就算你没有看过之前的教程也没问题。
写好的代码越来越满足不了需求,因为需求总是在不断的变化。在技术选型时,实在是心有余而力不足。思来想去,就考虑了使用微服务架构来实现,功能模块化。今天主要讲讲为什么需要微服务架构。还是以故事的形式呈现。
日志算是java工具体系的一个知识点,但又是写代码的时候绕不过去的一个知识点,这篇文章主要是针对于小白,以故事的形式来对目前市场上常见的一些日志框架进行一个介绍和梳理。
在古代,皇帝要想办成一件事肯定不会自己亲自去动手,而是把任务细分发给下面的大臣,下面的大臣也懒呀,于是把任务继续分成几个部分,继续下发,于是到了最后最终负责的人就完成了一个小功能。上面的领导再把这些结果一层一层汇总,最终返回给皇帝。这就是分而治之的思想,也是我们今天的主题ForkJoin。
jdk1.8真的可以作为一个宝藏,随便一个新的特性都足以写一本书,今天分析一个在jdk1.8中,引入的一个新的带有邮戳的StampedLock。这篇文章主要从使用的角度来分析一下:
这篇是承接上一篇基础操作的文章的,在上一篇文章中主要介绍了以下内容: (1)数据库基本操作 (2)数据表基本操作 (3)约束相关操作 (4)函数相关操作 因此这篇文章主要是从数据的增改删查角度来分析,其中查询是数据操作中最为麻烦的一种,但是这里给出一些常见的基本操作,关于其优化等等会在今后的文章中指出。感谢各位支持。
ReentrantReadWriteLock是一把可重入读写锁,这篇文章主要是从使用的角度帮你理解,希望对你有帮助。
使用Netty主要是为了进行网络通信,而网络通信就要涉及到传输数据,数据是不能直接传递的,需要进行一系列处理。java序列化就是其中一种处理方式,但是由于各种各样的缺点,一般不会用,在这里我们介绍一个比较优秀的编码解码技术MessagePack。 这篇文章是我的《搞懂Netty》系列的第三篇,也是在前两篇文章的基础之上进行讲解的。我们使用的是Springboot整合的Netty。
在上一篇文章中主要是使用Springboot开发了一个Netty通信的基本案例,这篇文章是在上一篇文章的基础之上进行讲解的,主要是考虑传输数据如果遇到粘包问题该如何解决。 这篇文章会按照一下步骤进行讲解,希望对你有所收获: 1、什么是TCP粘包拆包 2、Netty中粘包问题的问题重现 3、Netty中粘包问题的解决方案 OK,在你心中有这么一个基本的脉络之后就可以开始今天的文章了。本系列所有的文章都会给出完整的代码,且在电脑上真实运行了一遍,确保无误。
写了很久的java并发包里面的文章,今天换一个口味。很早之前学的Netty,由于最近项目经常使用到,遇到了很多坑,因此想通过一个体系教程说一下这个高性能异步通信框架Netty,这也是netty的第一篇文章。主要是通过Springboot来整合Netty实现一个最基本的案例。
可能我们会奇怪,java中竟然给一个类起名字叫做“不安全”。慢慢看,你就会发现这个类的神奇之处,虽然功能很强大,但是的确不那么安全。
java除了使用关键字synchronized外,还可以使用ReentrantLock实现独占锁的功能。而且ReentrantLock相比synchronized而言功能更加丰富,使用起来更为灵活,也更适合复杂的并发场景。这篇文章主要是从使用的角度来分析一下ReentrantLock。
Semaphore是java并发包里面的一个工具类,我们限制可以访问某些资源的线程数目就可以使用Semaphore了。这篇文章将对Semaphore的概念和使用进行一个详解。
在很久之前我曾写过一篇一篇文章介绍线程间如何进行通信的问题,当时使用的是等待通知模型,这篇文章介绍一个java提供的用于两个线程间通信的工具类Exchanger。
之前介绍了java中另一个同步工具类CountDownLatch,这篇文章主要介绍CyclicBarrier。
这篇文章主要讲解java中一个比较常用的同步工具类CountDownLatch,不管是在工作还是面试中都比较常见。我们将通过案例来进行讲解分析。