Java
文章平均质量分 80
Java 语言是一门随时代快速发展的计算机语言程序,其深刻展示了程序编写的精髓,加上其简明严谨的结构及简洁的语法编写为其将来的发展及维护提供了保障。
千锋教育官方
千锋立足于职业教育培训领域多年,现有教研讲师团队300余人。与国内20000余家IT相关企业建立人才输送合作关系,十年间累计培养超20余万泛IT人才,累计向互联网输出学科视频880余套,累积播放量超上亿次。
展开
-
快速熟悉Lambda表达式
在Java基础课程中有一个工具非常好用,但不常用就很容易忘记。大家一定已经猜到,它就是Lambda表达式,一个会者不难的工具。今天我们就来快速熟悉下Lambda表达式。原创 2023-12-28 14:21:04 · 1777 阅读 · 0 评论 -
使用RocketMQ实现消息顺序消费
Broker部署相对复杂,Broker分为Master与Slave,一个Master可以对应多个Slave,但是一个Slave只能对应一个Master,Master与Slave 的对应关系通过指定相同的BrokerName,不同的BrokerId 来定义,BrokerId为0表示Master,非0表示Slave。但如果把问题定位在整个队列中时,不同的消息在不同的队列中,又不能保证消息的有序性,不如消息A到了队列2,消息B到了队列1,消费者先消费了队列1再消费队列2,就不能保证有序性。原创 2023-12-19 12:03:54 · 3720 阅读 · 0 评论 -
TIOBE 9月编程语言榜出炉!这个语言强势而出,Java地位不保?搞笑!
一、用自己的语言描述get、post、Accept、Referer、User-Agent、host、cookie、X_Forwarded_for、Location各请求头的含义1. GEThttp请求方法,从浏览器获取一个资源2. POST提交数据、账号密码等,加密传输3. Accept支持的语言程序、接收的文件类型等等…4. Referer起过渡作用,从一个页面转到另一个页面5. User-Agent显示浏览器的指纹信息6. host主机7. cookie记录并原创 2023-09-12 16:48:18 · 5991 阅读 · 0 评论 -
面向对象这么久了,还没找到对象?
这两个实体虽然都是矩形类型的,但很容易分辨,一个是100*200的矩形r1,另一个是6*6正方形的特殊矩形r2,对象就这样产生了,这两个实体就是对象,创建的过程叫做实例化。这是一个很常见的创建数组的方式,使用一个内置构造函数(类)Array ,通过 new的方式我们创建出来了一个实例对象,我们叫他arr,这个arr有很多方法,比如push、pop、shift、unshift等,这些是数组独有的方法。你可以通过创建不同的类的实例,将它们组合成更大的对象,形成复杂的数据结构,从而实现更复杂的功能。原创 2023-09-11 14:15:11 · 4021 阅读 · 0 评论 -
SpringBoot2.x系列教程70--SpringBoot中实现注册用户发送激活邮件功能
在上一章节中,我带大家学习了SpringBoot中如何发送各种类型的邮件,接下来我再带大家实现一下,在实际开发中的邮件发送功能。需求分析:很多网站注册时,都会给我们的注册邮箱发送一封激活邮件,里面是一串连接,点击链接激活之后才可以登录,今天咱们就实现这个功能。一. 发送激活邮件实现步骤1. 创建web项目我们按照之前的经验,创建一个web程序,并将之改造成Spring Boot项目,具体过程略。2. 添加依赖包<dependency> <原创 2020-06-18 16:31:00 · 995 阅读 · 2 评论 -
SpringBoot2.x系列教程71--分布式缓存Hazelcast详解及原理探究
分区是一些内存段,根据系统内存容量的不同,每个这样的内存段都包含了几百到几千项数据条目,默认情况下,Hazelcast会把数据划分为271个分区,并且每个分区都有一个备份副本。对于一个给定的键,在经过序列化、哈希并对分区总数取模之后能得到此键对应的分区号,所有的分区等量的分布与集群中所有的节点中,每个分区对应的备份也同样分布在集群中。Hazelcast 没有任何中心节点(每个节点都是可以运行在任意服务器的独立JVM),在运行的过程中,它自己选定集群中的某个节点作为中心点来管理所有的节点。原创 2020-06-18 16:31:10 · 263 阅读 · 1 评论 -
SpringBoot2.x系列教程75--整合JPA、Redis实现分布式的Session共享
一.SpringBoot整合JPA、Redis实现分布式的Session共享1. 创建web项目我们按照之前的经验,创建一个web程序,并将之改造成Spring Boot项目,具体过程略。2.添加依赖包<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jp原创 2020-06-22 10:59:17 · 1016 阅读 · 0 评论 -
SpringBoot2.x系列教程73--Web开发中的Session详解及原理分析
Cookie翻译成中文是甜饼的意思,其实就是一个小型的文本文件,用来保存一些简单的信息(浏览器对Cookie的内存大小是有限制的)。Cookie由服务器端生成,并且会发送给 User-Agent (一般是浏览器),服务器一般会告诉浏览器设置一下Cookie,然后浏览器会自动将该 Cookie 以。原创 2020-06-22 10:59:46 · 963 阅读 · 0 评论 -
SpringBoot2.x系列教程72--SpringBoot整合Hazelcast实现分布式缓存
说明在Hazelcast中只要在一个服务器节点上存储了数据,就可以自动实现从其他集群节点中获取到另一个节点中存储的数据。hazelcast其实提供了一个管理中心程序,可以帮助我们查看hazelcast中缓存的数据,当然这个管理中心可以不用安装,它只是帮我们查看缓存状态的一个工具而已。此时在控制台,会发现Members数量变成了2个,意味着一个新的Hazelcast实例加入到了集群中。我们先在8081端口上进行启动,在控制台会发现此时Members数量只有1,个,Hazelcast运行在5701端口上。原创 2020-06-22 11:00:04 · 995 阅读 · 0 评论 -
Servlet+自定义注解实现对象创建
伟哥:当然可以啦!这样就不用每次自己手动去new对象了。那么该怎么实现呢?接下来就看伟哥带你实现一下吧。原创 2023-08-29 13:39:25 · 2212 阅读 · 0 评论 -
List、Set、Map集合的简单使用
List继承于Collection接口,是一个有序的Collection。List中允许有重复的元素,实现List接口的常用类有 LinkedList、ArrayList、Vector等。//向集合中添加数据listTest.add("千锋北京");listTest.add("千锋成都");listTest.add("千锋武汉");listTest.add(1, "千锋杭州");Set也实现自Collection接口,Set中的值不能重复。原创 2023-08-28 17:03:50 · 5482 阅读 · 0 评论 -
RabbitMQ的Publish/Subscribe发布订阅模式详解
需要说明的是,使用@RabbitListener注解监听队列消息后,一旦服务启动且监听到指定的队列中有消息存在(目前两个队列中各有一条相同的消息),对应注解的方法就会立即接收并消费队列中的消息。而测试类中发送的是User实体类对象消息,所以发生异常。按照消息服务整合实现步骤,完成消息组件的定制后,还需要编写消息发送者和消息消费者,而在基于API的方式中已经实现了消息发送者和消息消费者,并且基于配置类方式定制的消息组件名称,和之前测试用的消息发送和消息消费组件名称都是一致的,所以这里我们可以直接重复使用。原创 2023-08-24 15:42:43 · 6445 阅读 · 0 评论 -
凯哥带你从零学大数据系列之Java篇---第十七章:集合(List)
链表, 其实是一种比较常见的数据结构。增删效率比较高, 查询效率比较低。数据在链表中存储, 是以节点为单位进行存储的。节点之间在内存上是不连续的。双向链表中的每一个节点, 除了记录了当前节点存储的元素之外, 还记录了上一个节点和下一个节点的地址。原创 2020-06-24 11:23:17 · 980 阅读 · 0 评论 -
算法从入门到精通6之插入排序
上一节我们说过排序是算法中的一部分。所以我们学习排序也是算法的入门,为了能让大家感受到排序是算法的一部分,我举个例子证明一下:比如麻将游戏,发完牌之后需要对手上的牌进行排序,大家想想,麻将排序如何排呢?它有什么特点呢?而且在摸牌打牌的过程中,我们要不断的排序,如何排序呢?选择什么排序算法最快呢?以上这种情况我们就可以分析选择哪种排序算法更高效。原创 2020-06-24 11:23:29 · 1018 阅读 · 0 评论 -
SpringBoot2.x系列教程76--Java测试详解
但是我们在利用SpringBoot进行开发的时候,一般只需要引用spring-boot-starter-test-starter依赖包就可以了,它涵盖了以上两大模块,既为我们提供了Spring Boot测试模块的依赖,也提供了JUnit,AssertJ,Hamcrest等很多有用的依赖。但是,当我们使用了Mock来进行模拟对象后,我们就可以把这种依赖解耦,只关心A本身的测试,它所依赖的B和C,全部使用Mock出来的对象,并且给MockB和MockC指定一个明确的行为。这就导致了,A的单元测试很难得进行。原创 2020-06-24 11:23:47 · 981 阅读 · 0 评论 -
10分钟带你探寻Spring4到Spring6的技术蜕变
让我们来看一个实际的例子,如何在Spring6中使用注解来构建一个完整的Web应用:。在这趟旅程中,我将为你们揭开三个版本的面纱,通过详细的对比和实例,解析它们的差异和变革,以及为何Spring 6是未来的理想之选。让我们再来看一个完整的案例,如何在Spring6中构建一个响应式的Web应用:。让我们看一个完整的例子,如何在Spring4中进行依赖注入:。同时,在依赖注入方面,构造函数注入的方式取代了繁琐的setter方法,代码更加优雅:。原创 2023-08-23 16:47:16 · 5766 阅读 · 0 评论 -
Zookeeper集群搭建实战
今天袁老师主要是带大家搭建了Zookeeper集群开发环境,以及集群环境下命令行的相关操作。然后我们又学习了Zookeeper的常用API,主要学习了通过API来创建节点、查询节点、修改节点、删除节点、获取子节点、监听子节点等相关的内容。今天的内容就给大家介绍到这里了,现在你学会了吗?原创 2023-08-22 17:46:21 · 3485 阅读 · 0 评论 -
解密!Vue路由守卫的使用
/ 在渲染该组件的对应路由被 confirm 前调用// 不!能!获取组件实例 `this`// 因为当守卫执行前,组件实例还没被创建},// 在当前路由改变,但是该组件被复用时调用// 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候,// 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。// 可以访问组件实例 `this`},// 导航离开该组件的对应路由时调用。原创 2023-08-21 10:45:00 · 6276 阅读 · 0 评论 -
关于SpringMVC的异常处理,这些细节你知道吗?
对用户来说,这样是非常不友好的,所以我们必须对应用抛出的异常信息进行处理,今天文哥就给大家讲解SpringMVC处理异常的方式有哪些。对于异常的处理方式,文哥给大家分两种,一种是SpringMVC默认的异常处理方式,还有一种是SpringMVC支持的其他异常处理方式。通过本篇文章的学习,小伙伴们应该发现了在SpringMVC中,SpringMVC给我们提供了很多种异常处理的方式,每一种异常处理方式在SpringMVC底层都有对应的异常处理器做支撑的,对于0基础的小伙伴来说,我们首先做到学会运用即可。原创 2023-08-20 10:00:00 · 6051 阅读 · 0 评论 -
小白也能看懂的MYSQL基础知识文章!
数据库查询语言(DQL):Query Language(简称DQL),就是用来对数据库中的数据进行查询的语句语法。我们知道,数据库技术是Java开发中必不可少的重要内容,本系列教程会由浅入深,全面讲解数据库体系,非常适合零基础的小伙伴来学习。如果我们想给学生表中所有学生的年龄增加100岁, 当列中的字段是数值类型时是可以计算的。*的方式需转换成全列名,效率低,可读性差。1.DQL是对表数据进行查询的语句语法,也是最为重要并且也是最为复杂的;如果我们查询列名时,绝对列名不太好看,则可以给列名起别名。原创 2023-08-19 09:45:00 · 7392 阅读 · 0 评论 -
RabbitMQ 和 Kafka的区别比较
关于Rabbitmq和kafka的特点比较,可以说这是一道老生常谈的面试题了,今天耀哥也来回答一下。废话少说,我们直接来看RabbitMQ和Kafka各自的特点及区别到底有哪些。原创 2023-08-18 11:44:44 · 1562 阅读 · 0 评论 -
javaSE中的==和equals的联系与区别
那么,在所有没有重写equals()方法的类中,调用equals()方法其实和使用"=="号的效果一样,也是比较的对象地址值,然而,Java提供的所有类中,绝大多数类都重写了equals()方法,重写后的equals()方法一般都是比较两个对象的值,比如String类,Date类,基本数据类型的包装类等。因为Object类是所有类的直接或间接父类,也就是说所有的类中的equals()方法都继承自Object类,而通过源码我们发现,Object类中equals()方法底层实现其实就是是"=="号。原创 2020-07-01 17:22:44 · 929 阅读 · 0 评论 -
SQL查询so easy!轻松学会排序查询和分页查询
可以每页只查询10条,20条或者某个具体数量的数据,当用户点击下一页的时候再查询后面的10条,20条。排序就是让查询结果根据某个字段进行按照升序或者降序排列,后面ASC是升序排序,在后面跟DESC关键字是降序排序。分页查询有两个参数第一个是起始查询条数,MySQL默认是从第0条开始计数的,第二个参数则是每页查询条数,例如:每页想要显示10条数据那么第二个参数就写10以此类推。上面不加分页一共是16条数据,如果在企业真实情况下数据量可能是几十万,几百万甚至更多的数据。查询teacher教师表中姓王的讲师。原创 2023-08-17 13:25:54 · 1878 阅读 · 0 评论 -
你知道图数据库-Neo4j是咋回事吗?来看看
图数据库(Graph Database)是基于图论实现的一种NoSQL数据库。在图论中,图的基本元素为节点和边,在图数据库中对应的就是节点和关系。在图数据库中,数据与数据之间的关系通过节点和关系构成一个图结构,并在此结构上实现数据库的所有特性(CRUD),还有事务处理等能力。官网:Neo4j是由Java实现的开源NoSQL图数据库。2003年研发,2007年正式发布第一版。原创 2023-08-16 14:32:46 · 1917 阅读 · 0 评论 -
什么是Spring的IoC,依赖注入又该怎么实现?
在Spring中,BeanFactory是IOC容器的核心接口,它的职责包括实例化、定位、配置应用程序中的对象及建立这些对象间的依赖等。所谓的控制反转(Inversion of Control),缩写为IoC,其实就是把对象的创建和对象之间的依赖关系处理,交给 Spring容器来管理,不用程序员自己创建和维护的一种技术。为了让大家更好地理解IoC的工作原理,接下来我们自己简单模拟一下Spring IoC的底层实现原理。通过提供的getBean方法,获取工厂中创建好的bean对象。原创 2023-08-15 10:45:49 · 2516 阅读 · 0 评论 -
nginx实现动静分离
小白:伟哥,我最近在自学nginx,但动静分离这一块不是很懂,你能给我讲讲吗?伟哥:没问题,今天我就给你设计一个简单的案例,让你学习一下。如果我们想配置静态资源,可以按如下步骤进行实现:我们首先要登录192.168.241.5服务器上,然后执行cd /home/ 命令,切换到home目录。接着执行 mkdir /home/static/hmtl 命令,创建一个静态资源页面目录,我们就在该目录中上传一个sr.html页面到 /home/static/hmtl中。原创 2023-08-14 15:23:17 · 2594 阅读 · 0 评论 -
浅谈Redis缓存处理,在项目中如何实现
缓存击穿是指当缓存中某个热点数据过期了,在该热点数据重新载入缓存之前,有大量的查询请求穿过缓存,直接查询数据库。第一种方法比较好理解,就是当数据库中查不到数据的时候,我缓存一个空对象,然后给这个空对象的缓存设置一个过期时间,这样下次再查询该数据的时候,就可以直接从缓存中拿到,从而达到了减小数据库压力的目的。缓存雪崩是指当缓存中有大量的key在同一时刻过期,或者Redis直接宕机了,导致大量的查询请求全部到达数据库,造成数据库查询压力骤增,甚至直接挂掉。第二种方案是使用布隆过滤器,这也是比较推荐的方法。原创 2023-08-10 11:40:21 · 1894 阅读 · 0 评论 -
数据库主键到底是用自增长好还是UUID好
各位同学好,今天给大家讲一下MySQL数据库在设计主键时,应该使用哪种数据类型。我们知道,咱们在设计数据库时,主键是必须设置的。一般情况下,咱们都会选择使用主键自增或者UUID这两种主键策略。那么这两个哪种更好呢?我们应该使用哪一种呢,今天就请大家跟老徐来一起来学习一下吧。原创 2023-08-09 15:36:37 · 3663 阅读 · 1 评论 -
XXL-Job:提升任务调度效率的开源利器
XXL-Job是由知名技术公司XXL-Tech团队开发和维护的,经过多年的发展和应用实践,已在众多企业和项目中获得广泛认可。它的特性和功能旨在简化任务调度的管理和执行,提高开发效率。在本文中,我们将探讨XXL-Job的关键特点,包括其分布式任务调度能力、任务监控和管理功能以及灵活的调度策略。我们将深入了解如何利用XXL-Job解放开发人员的任务调度烦恼,提高项目的整体效率和稳定性。原创 2023-08-08 09:17:42 · 2086 阅读 · 0 评论 -
集群部署项目时,Spring Task的坑大家一定要注意
我们要在下面的代码中,实现每5秒钟执行一个打印信息的任务。原创 2023-08-07 13:33:39 · 1815 阅读 · 0 评论 -
数据库主键到底是用自增长好还是UUID好
各位同学好,今天给大家讲一下MySQL数据库在设计主键时,应该使用哪种数据类型。我们知道,咱们在设计数据库时,主键是必须设置的。一般情况下,咱们都会选择使用主键自增或者UUID这两种主键策略。那么这两个哪种更好呢?我们应该使用哪一种呢,今天就请大家跟老徐来一起来学习一下吧。原创 2023-08-06 09:00:00 · 2516 阅读 · 0 评论 -
ArrayList、LinkedList、Vector的区别
最近有小伙伴找到波哥,问波哥能不能把List集合细讲一下!尤其是在面试阶段,List集合被问到的概率还是很大的。既然小伙伴有需要,波哥就必须给大家安排,走起来!原创 2023-08-05 09:00:00 · 1337 阅读 · 0 评论 -
ShardingSphere-Proxy数据库代理入门使用
Sharding-Proxy是一个分布式数据库中间件,定位为透明化的数据库代理端。作为开发人员可以完全把它当成数据库,而它具体的分片规则在Sharding-Proxy中配置。目前提供 MySQL 和 PostgreSQL(兼容 openGauss 等基于 PostgreSQL 的数据库)版本,它可以使用任何兼容 MySQL/PostgreSQL 协议的访问客户端(如:MySQL Command Client, MySQL Workbench, Navicat 等)操作数据,对 DBA 更加友好。原创 2023-08-04 09:14:46 · 1843 阅读 · 0 评论 -
Java线程池使用详细讲解
而提高服务程序效率的一个手段,就是尽可能减少创建和销毁对象的次数,特别是一些很耗资源的对象创建和销毁过程,这就是”池化资源”技术产生的原因。线程池的存在,减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务。而线程池,顾名思义就是事先创建若干个可执行的线程放入一个池(容器)中,我们需要的时候直接从池中获取线程不用自行创建,使用完毕不需要销毁线程而是放回池中,从而减少创建和销毁线程对象的开销。创建一个可缓存的线程池,若线程数超过处理所需,缓存一段时间后会回收,若线程数不够,则新建线程。原创 2023-08-02 16:35:01 · 1575 阅读 · 0 评论 -
为什么要使用foreach循环?有哪些优点和局限性
综上所述,使用foreach循环可以让代码更加简洁易读,并提高遍历集合的效率,但在某些情况下也存在局限性。其中,元素类型是数组或集合中元素的数据类型,元素变量是一个变量,每次循环时都代表数组或集合中的一个元素。在Java中,foreach循环是一种语法糖,用于简化对数组或集合的迭代。原创 2023-08-02 16:26:37 · 1746 阅读 · 0 评论 -
Java常见Bug解决方案
刚开始学习Java语言的小伙伴, 很可能被各种各样的程序bug搞得焦头烂额, 甚至被劝退。看错误日志, 虽然都是英文的, 可能有些小伙伴看不懂, 但是建议通读一遍, 看看是否有提示错误出现在第几行, 很多简单的问题, 日志上已经指定了哪个类, 第几行的错误。原因是他的返回值是字符串并且包含中文, 我们强制转换类型为Integer, 结果抛出了类型转换异常。程序出Bug的时候, 我们最直接的感受是, 程序报错了.......断点不可以打在接口上, 只能使用在类上,断点不可以打在空行, 注释行。原创 2023-07-31 15:50:04 · 1785 阅读 · 0 评论 -
什么是抽象类?使用abstract格式修饰抽象方法
在Java中,抽象类是一种不能实例化的类,它用于被其他类继承。抽象类可以包含抽象方法、普通方法、属性等,但是抽象类不能被实例化,只能被子类继承并实现其抽象方法。抽象方法是没有实现的方法,需要在子类中进行实现。抽象方法必须在抽象类中声明,而且不能有方法体。在这个例子中,Shape是一个抽象类,它包含了一个抽象方法draw(),这个方法需要在子类中进行实现。在使用抽象类时,通常会将它定义成一个父类,让子类继承并实现其抽象方法。这样,可以在父类中定义一些通用的属性和方法,让子类共享这些属性和方法。原创 2023-07-27 11:01:33 · 1259 阅读 · 0 评论 -
IDEA安装、配置及使用教程
最近建哥在带新班的过程中,发现IDEA的安装对于很多准备开启JAVA学习之旅的学员,特别是之前没有软件安装经验的同学来说并不是一件很轻松的事情。如果我们想要安装IDEA,首先就需要获取到它的安装包,建哥这里要特别提醒一下各位初学者,我们应该养成尊重知识产权的意识,请从正规渠道的官网去下载对应的软件安装文件【请不要做一个伸手党,这对我们后期的学习和工作都是非常被动滴】。好了,到此为止,建哥就带各位小伙伴把IDEA的下载、安装及配置都了解完毕,现在你知道该怎么使用IDEA了吗?原创 2023-07-25 13:19:05 · 2260 阅读 · 0 评论 -
MySQL间隙锁是什么
当下各行各业都卷到飞起,IT行业更是如此。对很多程序员来说,面试的难度、深度、广度,都让你承受着 "你这个年纪不该承受的一切"。以MySQL为例,我大学刚毕业那会,面试时也就问一下 "MySQL查询怎么去重?"、"MySQL组函数有哪些?而现在刚毕业的学生去面试,上来就是 "聊聊MySQL的架构吧"、"你看过MySQL的源码没有?现在想想还真是庆幸自己毕业的早,以那时大学毕业的水平拿到现在找工作,估计得饿死。原创 2023-07-25 11:50:23 · 1511 阅读 · 0 评论 -
集群部署项目时,Spring Task的坑
Day85Application2这个实例,在17:38:15.008时对任务加锁并且执行,任务很快执行完毕。实际开发中,我们的项目经常会进行集群部署,但是,如果我们通过Spring Task来执行定时任务,只需要一个实例执行任务即可。通过上面的分析,我们会发现,如果任务执行时间很短,在一秒内多个实例可以多次加锁并执行任务,于是就出现了在同一秒内,任务“同时”执行的现象。通过上图的执行结果,我们发现,虽然使用了分布式锁,但在某些时间点,比如“17:38:15”,两个实例还是“同时”执行了相同的任务。原创 2023-07-21 10:04:22 · 5094 阅读 · 0 评论