Java
文章平均质量分 80
在酒吧写代码
一个很懒的程序员...
展开
-
开源7天Github斩获4.5万Stars!阿里2023版高并发设计实录鲨疯了
对于身处互联网公司,后续还能参与到公司一些分布式微服务项目搭建的小伙伴来说,想要获取高并发经验,只需要跟在公司的大佬后面好好学习就行。难搞的恰恰是这类人:一直处于传统行业,接触的技术栈都太过陈旧,简历上也没什么亮眼的项目(LZ很多粉丝就是这类人群)。从现在面试个Java初级基本都会被问到分布式高并发,多线程之类的问题来看,原创 2023-04-25 18:51:35 · 277 阅读 · 0 评论 -
基于SpringBoot打造灵活稳定的管理系统源码分享(满足业务需求)
此系统旨在为小微企业提供一款可全面参考、开源、满足业务、灵活稳定的ERP管理系统原创 2022-12-12 15:43:42 · 411 阅读 · 0 评论 -
阿里高工珍藏版《亿级并发系统架构设计笔记》面面俱到,无私奉献出来
现在 Java 面试,问的是越来越底层。作为一名合格的 Java 程序员不仅要能“上天”,还要能“入地”!而什么是上天什么是入地呢?原创 2022-12-03 16:24:24 · 273 阅读 · 0 评论 -
「避坑宝典」为大家分享笔者在22 年所遇到“匪夷所思”的 Bug 趣事
无论这一年我们遇到了什么困难或者是喜事,在此时此刻,个人觉得都应该反思或者回味一下这些事情,对于好事,我们欣慰开心;坏事那我们能做到的就是极力避免它们再次发生,就如同接下来笔者要介绍的整个熟悉而陌生的名称“BUG”,接下来我主要会为大家介绍一下,发生在2022年这一年中的笔者在开发过程中所遇到的“bug”和“坑”。原创 2022-12-03 15:42:00 · 84 阅读 · 0 评论 -
翻遍GitHub,这份MySQL全面手册,受喜爱程度不输任何大厂笔记
本书还涉及了熟悉Oracle或其他数据库系统的用户和管理员所需要的基本知识。体验过MySQL的人,对熟悉的主题会找到新的视角,从而更深入洞察MySQL的世界,提高他们现有的知识和经验。在读者使用MySQL时,本书将会是一个颇有价值的资源。原创 2022-11-26 13:39:08 · 154 阅读 · 0 评论 -
2023版:Java基础知识面试题合集(22460字),建议收藏
什么是Java?Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。原创 2022-11-26 13:30:35 · 738 阅读 · 0 评论 -
偷偷内卷终于拿到大厂offer 这个你值得拥有LeetCode算法题小抄
随着互联网寒潮的到来, 越来越多的互联网公司提高了面试的难度,其中之一就是加大了面试当中手撕算法题的比例。这里说的算法题不是深度学习,机器学习这类的算法,而是排序,广度优先,动态规划这类既考核数据结构也考核编程能力的题目。刷题的网址非常的多,其中以leetcode是最为出名的。刷过的题老是忘,第二次刷的时候还是不会做刷题的速度很慢,即使花一天时间,也常常只能刷五六道坚持不下来,老是刷到一半就停滞下来了,当我第二次再来刷的时候,前面刷过的题都又忘的差不多。原创 2022-09-26 10:29:47 · 69 阅读 · 0 评论 -
还在想java怎么面试?直接看文章下一个入职的就是你
如果有,那么你就可以适当描述下项目的需求,然后说,通过读底层代码,我了解了两者的差别,而且在这个实际需求里,我就用了TreeSet,而且我还专门做了对比性试验,发现用TreeSet比HashSet要高xx个百分点。而前者,一直在重复劳动,能力也只一直停留在“会干活”的层面。哪怕你在前三点表现一般,那么至少也能超越将近一般的候选人,尤其当你在SQL优化方面表现非常好,那么你在面试高级开发时,数据库层面一定是达标的,如果你连第四点也回答非常好,那么恭喜你,你在数据库方面的能力甚至达到了初级架构的级别。原创 2022-09-21 09:56:21 · 66 阅读 · 0 评论 -
推荐一款微软出品的Java开发神器,体验不输IDEA!
推荐一款微软出品的Java开发神器,体验不输IDEA!原创 2022-08-16 10:31:30 · 712 阅读 · 0 评论 -
全网最全一篇数据库MVCC详解,不全你打我
什么是MVCC全称Multi-Version Concurrency Control,即多版本并发控制,主要是为了提高数据库的并发性能。以下文章都是围绕InnoDB引擎来讲,因为myIsam不支持事务。同一行数据平时发生读写请求时,会上锁阻塞住。但mvcc用更好的方式去处理读—写请求,做到在发生读—写请求冲突时不用加锁。这个读是指的快照读,而不是当前读,当前读是一种加锁操作,是悲观锁。那它到底是怎么做到读—写不用加锁的,快照读和当前读又是什么鬼,跟着你们的贴心老哥,继续往下看。.原创 2020-10-08 20:55:35 · 695 阅读 · 0 评论 -
ava 集合 | 红黑树 | 前置知识
一、前言为啥要学红黑树吖?因为笔者最近在赶项目的时候,不忘抽出时间来复习Java基础知识,现在准备看集合的源码啦啦。听闻,HashMap在jdk 1.8的时候,底层的数据结构发生了变化,变成了数组+链表+红黑树。很好,没了解过红黑树,所以就趁今天闲暇学习一下啦二、什么是红黑树?2.1 有啥用处?红黑树从本质上来说就是一颗二叉查找树,但是在二叉树的基础上增加了着色相关的性质,使得红黑树可以保证相对平衡,从而保证红黑树的增删改查的时间复杂度最坏也能达到O(log N)。2...原创 2020-10-07 21:54:51 · 416 阅读 · 0 评论 -
Spring Boot项目下最优雅的http客户端工具,用它就够了,太香了
大家都知道okhttp是一款由square公司开源的java版本http客户端工具。实际上,square公司还开源了基于okhttp进一步封装的retrofit工具,用来支持通过接口的方式发起http请求。如果你的项目中还在直接使用RestTemplate或者okhttp,或者基于它们封装的HttpUtils,那么你可以尝试使用Retrofit。retrofit-spring-boot-starter实现了Retrofit与spring-boot框架快速整合,并且支持了部分功能增强,从而极大的简化s.原创 2020-10-06 20:46:56 · 626 阅读 · 5 评论 -
Java反应式框架Reactor中的Mono和Flux
1. 前言最近写关于响应式编程的东西有点多,很多同学反映对Flux和Mono这两个Reactor中的概念有点懵逼。但是目前Java响应式编程中我们对这两个对象的接触又最多,诸如Spring WebFlux、RSocket、R2DBC。我开始也对这两个对象头疼,所以今天我们就简单来探讨一下它们。2. 响应流的特点要搞清楚这两个概念,必须说一下响应流规范。它是响应式编程的基石。他具有以下特点:响应流必须是无阻塞的。 响应流必须是一个数据流。 它必须可以异步执行。 并且它也应该能够处理背..原创 2020-09-29 15:04:41 · 14172 阅读 · 3 评论 -
Java安全编码指南之:异常处理
简介异常是java程序员无法避免的一个话题,我们会有JVM自己的异常也有应用程序的异常,对于不同的异常,我们的处理原则是不是一样的呢?一起来看看吧。异常简介先上个图,看一下常见的几个异常类型。所有的异常都来自于Throwable。Throwable有两个子类,Error和Exception。Error通常表示的是严重错误,这些错误是不建议被catch的。注意这里有一个例外,比如ThreadDeath也是继承自Error,但是它表示的是线程的死亡,虽然不是严重的异常,但是因为原创 2020-09-29 14:57:31 · 318 阅读 · 1 评论 -
大白话谈JVM的类加载机制
前言我们很多小伙伴平时都是做JAVA开发的,那么作为一名合格的工程师,你是否有仔细的思考过JVM的运行原理呢。如果懂得了JVM的运行原理和内存模型,像是一些JVM调优、垃圾回收机制等等的问题我们才能有一个更清晰的概念。为了走进JVM,深入了解底层,王子打算写一个JVM的专题,留下自己对JVM探索的足迹,同时也希望能帮到小伙伴们更好的理解JVM。那我们开始吧。JAVA代码的运行流程首先我们就来聊一聊JAVA代码是怎么运行起来的,这部分比较基础相信大家都知道,就当成是个复习吧。.原创 2020-09-27 20:51:54 · 425 阅读 · 0 评论 -
设计模式(4)——单例模式的学习及其六大战将
单例模式的引发的陈年回忆 记着N年以前,那时候还在上大学,有一门科目叫做软件体系结构,教我们的老师是个40岁左右的女老师,姓韩,好像是东北大学博士毕业的,之所以对她还有些印象,那是因为初恋女友Y同学是被保送到东北大学读研的,而当时韩老师和Y同学的师生关系好像还挺不错,当然也是Y同学确定保送东北大学读研的那一年,我们和平而坚决地分开了。。 我就读的大学是一所普通本科,我们学院一个年级可以保送的名额也仅仅只有三个,比起985 211那成堆的保送名额真的差的太远,Y同学是相当优秀的,大学四年,每次原创 2020-09-27 20:49:21 · 373 阅读 · 0 评论 -
虚拟机系列 | JVM运行时数据区
一、内存与线程1、内存结构内存是计算机的重要部件之一,它是外存与CPU进行沟通的桥梁,计算机中所有程序的运行都在内存中进行,内存性能的强弱影响计算机整体发挥的水平。JVM的内存结构规定Java程序在执行时内存的申请、划分、使用、回收的管理策略,通说来说JVM的内存管理指运行时数据区这一大块的管理。2、线程运行JVM中一个应用是可以有多个线程并行执行,线程被一对一映射为服务所在操作系统线程,调度在可用的CPU上执行,启动时会创建一个操作系统线程;当该线程终止时,这个操作系统线程也会被.原创 2020-09-24 19:19:31 · 251 阅读 · 0 评论 -
从零搭建Spring Boot脚手架(7):Elasticsearch应该独立服务
1. Spring Data ElasticsearchSpring Data Elasticsearch是Spring Data项目的子项目,提供了Elasticsearch与Spring的集成。实现了Spring Data Repository风格的Elasticsearch文档交互风格,让你轻松进行Elasticsearch客户端开发。2. 个人的一些看法应粉丝要求特地将Elasticsearch整合到Spring Boot中去。本来打算整合到kono脚手架中,但是转念一想这样并不是非常.原创 2020-09-24 13:26:03 · 377 阅读 · 0 评论 -
为什么一个还没毕业的大学生能够把 IO 讲的这么好?
为什么一个还没毕业的大学生能够把 IO 讲的这么好?Java IO 是一个庞大的知识体系,很多人学着学着就会学懵了,包括我在内也是如此,所以本文将会从 Java 的 BIO 开始,一步一步深入学习,引出 JDK1.4 之后出现的 NIO 技术,对比 NIO 与 BIO 的区别,然后对 NIO 中重要的三个组成部分进行讲解(缓冲区、通道、选择器),最后实现一个简易的客户端与服务器通信功能。传统的 BIOJava IO流是一个庞大的生态环境,其内部提供了很多不同的输入流和输出流,细分下去还.原创 2020-09-23 14:25:01 · 296 阅读 · 0 评论 -
虚拟机系列 | JVM类加载机制
一、类加载简介类的加载机制是指把编译后的.class类文件的二进制数据读取到内存中,并为之创建一个java.lang.Class对象,用来封装类在元数据空间的数据结构。类在JVM中的生命周期为:加载,连接,初始化,使用,卸载。不过这里只重点描述加载,连接,初始化这三个过程。二、加载过程基于一张图看类加载子系统的细节流程:1、加载阶段过程描述加载阶段需要完成以下三个过程:通过类的全限定名来获取其定义的二进制字节流; 将字节流所代表的静态存储结构转化为云数据空间的运行时原创 2020-09-22 22:07:37 · 248 阅读 · 0 评论 -
DNS解析时发现域名和IP不一致,访问了该域名会如何(大厂真题)
这是一道互联网大厂的面试真题,主要考察的就是DNS域名解析的过程是什么样的。以此为背景进而考察安全相关问题。综合性还是很强滴。本文将从案例出发开始一步一步深入。一、DNS运行原理1、为什么要DNSDNS的作用在于域名解析。每个网站通常都会有一个域名和至少一个IP地址。比如说百度的域名,112.80.248.74就是百度的IP地址。我们想要访问百度的时候只需要输入域名就可以,当然IP也可以,为什么不使用IP登录呢?看上面的数字就知道,一串复杂的数字难以记忆。我们每天要登录大量的网站可能都需要一原创 2020-09-21 21:49:00 · 2956 阅读 · 0 评论 -
微服务,Goodbye!服务器端我更愿意选择相信单体应用
专注Java技术新分享,欢迎关注学习本文翻译自Alexandra Noonan 的 Goodbye Microservices: From 100s of problem children to 1 superstar。内容是描述 Segment 的架构如何从 「单体应用」 -> 「微服务」 -> 「140+ 微服务」 -> 「单体应用」 的一个历程。翻译比较粗糙,如有疏漏,请不吝指教。注:下文说的目的地就是对应的不同的数据平台(例如Google Analytics, Opti原创 2020-09-21 20:59:13 · 349 阅读 · 0 评论 -
面试官:String字符串的最大长度是多少?
在学习和开发过程中,我们经常会讨论 short ,int 和 long 这些基本数据类型的取值范围,但是对于 String 类型我们好像很少注意它的“取值范围”。那么对于 String 类型,它到底有没有长度限制呢?其实 String 类型的对象,他们是有长度限制的, String 对象并不能“存储”无限长度的字符串。关于 String 的长度限制要从编译时限制和运行时限制两方面考虑。编译期限制有JVM虚拟机相关知识的同学肯定知道,下面定义的字符串常量“自由之路”会被放入方法区的常量池...原创 2020-09-19 20:05:43 · 985 阅读 · 0 评论 -
JAVA | Java 解决跨域问题
引言我们在开发过程中经常会遇到前后端分离而导致的跨域问题,导致无法获取返回结果。跨域就像分离前端和后端的一道鸿沟,君在这边,她在那边,两两不能往来.什么是跨域(CORS)跨域(CORS)是指不同域名之间相互访问。跨域,指的是浏览器不能执行其他网站的脚本,它是由浏览器的同源策略所造成的,是浏览器对于JavaScript所定义的安全限制策略。什么情况会跨域同一协议, 如http或https 同一IP地址, 如127.0.0.1 同一端口, 如8080以上三个条件中有一个条件不同就会产生原创 2020-09-19 19:59:35 · 785 阅读 · 0 评论 -
小白的springboot之路(十八)、i18n多语言支持(后端篇)
0-前言 在有些系统中,比如网站,往往需要支持多国语言,英文版中文版什么的,这个其实也不难; 今天我们就来介绍spring boot中用i18n在后端支持多语言; 当然,也可以直接在前端用i18n直接支持多语言,这个我们以后在前端系列中再介绍;1-实现 简单6步,轻松实现:1-1、增加多语言文件 在resources中,新增static/i18n文件夹,在里面新建新建三个文件 messages.properties(默认的多语言文件) messag原创 2020-09-19 15:19:57 · 1366 阅读 · 1 评论 -
《Java从入门到失业》第四章:类和对象(4.3):一个完整的例子带你深入类和对象
4.3一个完整的例子带你深入类和对象 到此为止,我们基本掌握了类和对象的基础知识,并且还学会了String类的基本使用,下面我想用一个实际的小例子,逐步来讨论类和对象的一些其他知识点。4.3.1需求及分析 大失叔比较喜欢打麻将,毕竟是国粹嘛,哈哈!因此我打算用一个“自动麻将桌”的小程序来探讨(我相信你们大多数也都会打,如果实在不会,自己百度科普下吧)。需求很简单,说明如下:一共136张麻将牌 西施、王昭君、貂蝉、杨贵妃4个人玩 座位东固定为庄家 程序开始运行后,...原创 2020-09-19 14:42:04 · 483 阅读 · 0 评论 -
简述Spring Boot与Spring Cloud的关系
如下文章字数大约600字,阅读时间需要15分钟左右。随着微服务架构的持续火热,以及对开发部署迭代需求越来越快速,现今,spring boot逐渐火热,越来越流行。随着spring boot 流行的还有另外一个框架 spring cloud,可能很多人不清楚两者的区别,SpringBoot先于Spring Cloud问世。SpringBoot相当于脚手架,借助他可以快速搭建房子,它本身不具备任何功能属性,值是普通房间,没有其他任何功能。什么是Spring BootSpring Bo..原创 2020-09-18 20:30:54 · 440 阅读 · 0 评论 -
太刺激了,面试官让我手写跳表,而我用两种实现方式吊打了TA
前言本文,我将通过两种方式手写跳表,并结合画图,彻底搞定跳表实现的细节。第一种方式为跳表的通用实现,第二种方式为彤哥自己发明的实现,并运用到HashMap的改写中。好了,开始今天的学习吧,Let’s Go!文末有跳表和红黑树实现的HashMap的对比,不想看代码的同学也可以直达底部。通用实现通用实现主要参考JDK中的ConcurrentSkipListMap,在其基础上,简化,并优化一些东西,学好通用实现也有助于理解JDK中的ConcurrentSkipListMa...原创 2020-09-17 22:01:51 · 900 阅读 · 0 评论 -
spring解决循环依赖
Spring内部如何解决循环依赖,一定是单默认的单例Bean中,属性互相引用的场景。比如几个Bean之间的互相引用:或者原型(Prototype)的场景是不支持循环依赖的,抛出异常。基于构造器的循环依赖,是不存在的。那么默认单例的属性注入场景,Spring是如何支持循环依赖的?Spring解决循环依赖首先,Spring内部维护了三个Map,也就是我们通常说的三级缓存。在Spring的DefaultSingletonBeanRegistry类中,类上方挂着...原创 2020-09-17 20:07:03 · 274 阅读 · 0 评论 -
Vue 3.0 全家桶正式登场
序vue-next v3.0.0-beta.1 版本发布,这意味着 Vue 3.0 全家桶正式登场,发布内容包括:vue: Beta vue-router: Alpha vuex: Alpha vue-class-component: Alpha vue-cli: Experimental support via vue-cli-plugin-vue-next eslint-plugin-vue: Alpha vue-test-utils: Alpha vue-devtools: WI原创 2020-09-16 22:41:18 · 522 阅读 · 0 评论 -
算法数据结构 | 三个步骤完成强连通分量分解的Kosaraju算法
强连通分量分解的Kosaraju算法今天是算法数据结构专题的第35篇文章,我们来聊聊图论当中的强连通分量分解的Tarjan算法。Kosaraju算法一看这个名字很奇怪就可以猜到它也是一个根据人名起的算法,它的发明人是S. Rao Kosaraju,这是一个在图论当中非常著名的算法,可以用来拆分有向图当中的强连通分量。背景知识这里有两个关键词,一个是有向图,另外一个是强连通分量。有向图是它的使用范围,我们只能使用在有向图当中。对于无向图其实也存在强连通分量这个概念,但由于无向图的连通性非常强,原创 2020-09-16 20:52:06 · 291 阅读 · 0 评论 -
算法数据结构 | 三个步骤完成强连通分量分解的Kosaraju算法
强连通分量分解的Kosaraju算法今天是算法数据结构专题的第35篇文章,我们来聊聊图论当中的强连通分量分解的Tarjan算法。Kosaraju算法一看这个名字很奇怪就可以猜到它也是一个根据人名起的算法,它的发明人是S. Rao Kosaraju,这是一个在图论当中非常著名的算法,可以用来拆分有向图当中的强连通分量。背景知识这里有两个关键词,一个是有向图,另外一个是强连通分量。有向图是它的使用范围,我们只能使用在有向图当中。对于无向图其实也存在强连通分量这个概念,但由于无向图的连通性非常强,原创 2020-09-16 17:04:05 · 342 阅读 · 0 评论 -
Netty服务端启动流程源码分析
前记哈喽,自从上篇《Netty之旅二:口口相传的高性能Netty到底是什么?》后,迟迟两周才开启今天的Netty源码系列。源码分析的第一篇文章,下一篇我会分享客户端的启动过程源码分析。通过源码的阅读,我们将会知道,Netty服务端启动的调用链是非常长的,同时肯定也会发现一些新的问题,随着我们源码阅读的不断深入,相信这些问题我们也会一一攻破。废话不多说,直接上号!一、从EchoServer示例入手示例从哪里来?任何开源框架都会有自己的示例代码,Netty源码也不例外,如模块net...原创 2020-09-15 21:26:07 · 563 阅读 · 0 评论 -
Mybatis的Mapper中的方法为什么不能重载?
前言 在初入门Mybatis的时候可能都犯过一个错误,那就是在写Mapper接口的时候都重载过其中的方法,但是运行起来总是报错,那时候真的挺郁闷的,但是自己也查不出来原因,只能默默的改了方法名,哈哈,多么卑微的操作。 今天就写一篇文章从源码角度为大家解惑为什么Mybatis中的方法不能重载? 环境配置 本篇文章讲的一切内容都是基于Mybatis3.5和SpringBoot-2.3.3.RELEASE。 错误示范 举个栗子:假设现在有两个需求,一个是根据用户的id筛选用户,原创 2020-09-15 13:52:13 · 633 阅读 · 1 评论 -
Mybatis如何执行Select语句,你真的知道吗?
前言 本篇文章是Myabtis源码分析的第三篇,前两篇分别介绍了Mybatis的重要组件和围绕着Mybatis中的重要组件教大家如何阅读源码的一些方法。 今天接上一篇,围绕Mybatis中的selectList()来看一看Mybatis底层到底做了什么,有什么高级的地方。 环境准备 本篇文章讲的一切内容都是基于Mybatis3.5和SpringBoot-2.3.3.RELEASE。 由于此篇文章是基于前两篇文章的基础之上,因此重复的内容不再详细赘述了。 撸起袖子就是干原创 2020-09-14 21:15:32 · 639 阅读 · 0 评论