
Java学习
文章平均质量分 84
Java基础学习from《Java从入门到精通》第六版个人学习整理和Java自学整理
简明编程
优快云简明编程,掘金白嫖圣手fly,其他地方均不是本人,若发现他人盗用本人原创文章请联系我,各种资料均免费,需要请私信
展开
-
mongodb文档操作——查询
1. 查询所有的员工信息。1.查询语文是81分,英语成绩是88分的学生信息。使用$all相当于包含,而不是精准匹配1. 查询Java有4本的学生信息。$elemMatch表示遍历每一个元素插入两条记录。1. 查询age值为null的文档,包括age缺失的文档。$type:10就表示null你可以将游标视作迭代器2. 使用游标mycursor访问stu集合中的每个文档,并打印;查找不同的字段值查询emp集合中有哪些职位。原创 2023-04-05 19:30:29 · 723 阅读 · 0 评论 -
WebSocket——SpringBoot+Vue3+TS+SockJS+STOMP简单连接使用
在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。我们使用的ts代替了js,在ts中直接引入使用js是不能被识别的,这时候就需要有一个.d.ts的声明文件,显然原始的SockJS库中并没有这个文件,所以我们需要自己去下载一个,当然你要是厉害可以自己写一个。延迟本身不是决定因素。具有WebSocket支持的服务器返回类似于以下内容的输出,而不是通常的200状态代码。低延迟、高频率和高容量的组合,是使用WebSocket的最佳选择。原创 2022-12-12 01:34:05 · 2945 阅读 · 0 评论 -
Java版本问题解决——配置了Java11环境变量发现java -version依然是8,看看是不是和你一样
因为要弄ES,所以我自己这里配置修改了一下默认的系统里java的版本改为了11,但是发现之后还是输出为8。原创 2022-11-07 03:51:15 · 2558 阅读 · 9 评论 -
Java异步编排CompletableFuture简述
在Java8之后提供了一个类以帮助我们进行多线程的异步编排工作,这就是CompletableFuture类,该类优化了我们对于异步任务的掌控,使我们可以自由编排任务先后顺序,返回值,中间条件。原创 2022-11-06 08:09:10 · 609 阅读 · 0 评论 -
SpringBoot系列——Starter
注意点:我们需要删除starter中的,就是这段配置。原创 2022-11-05 21:07:07 · 1838 阅读 · 6 评论 -
JavaIO进阶系列——Writer类、StringWriter类
返回的流最初是打开的。当流处于打开状态时,append(char)、append(CharSequence)、append(CharSequence,int,int)、flush()、write(int)、writ(char[])和write(char[[],int,int])方法什么都不做。临时缓冲区的大小必须要大于等于1,而在Writer中默认定义为1024,而且可以看出这是不能修改的子类也无法继承。从构造方法中可以看出,该类将自己当前的实例直接赋给了lock属性,所以显而易见,lock就是当前实例。原创 2022-11-05 05:57:08 · 1010 阅读 · 0 评论 -
Hadoop系列——Google Option,LibHDFS介绍,HDFS常见的客户端day3-2
Libhdfs是用于Hadoop的分布式文件系统(HDFS)的基于.JNI的C API。它为HDFS API的一个子集提供了C API,以操作HDFS文件和文件系统。Libhdfs是Hladoop发行版的一部分,并在$Hadoop_HDFS_HOME/lib/本地/libhdfs.soLibhdfs与Windows兼容,可以通过运行MVN编译在Hadoop-HDFS-project/Hadoop-HDFS源树的目录。原创 2022-10-26 00:38:45 · 494 阅读 · 0 评论 -
Jenkins系列——Jenkins介绍day1-1
软件开发生命周期又叫做SDLC(Software Development Life Cycle),它是集合了计划、开发、测试和进化(维护改进)过程的集合。原创 2022-10-24 13:24:25 · 428 阅读 · 0 评论 -
Hadoop系列——HDFS常用和命令,Java API客户端day3-1
HDFS在生产应用中主要是Java客户端的开发,其核心步骤是从HDFS提供的API中构造一个HDFS的访问客户端对象,然后通过该客户端对象操作(增删改查)HDFS上的文件。首先设置身份,配置对象实例设置HDFS相关属性,然后使用FileSystem的。-p:保留访问和修改时间,所有权,权限信息。-p:保留访问时间、修改时间、所有权和权限。-s:表示显示指定路径文件长度的汇总摘要。我们要关注的是配置的name和value。-h:详细,以人能看懂的方式展现。-f:动态显示文件追加的内容。原创 2022-10-20 19:13:52 · 859 阅读 · 0 评论 -
Hadoop系列——企业存储系统概述,HDFS概述day2-2
HDFS(Hadoop Distributed File System ),意为:Hadoop分布式文件系统。是Apache Hadoop核心组件之一,作为大数据生态圈最底层的分布式存储服务而存在。分布式文件系统解决大数据如何存储问题。分布式意味着是横跨在多台计算机上的存储系统。HDFS是一种能够在普通硬件上运行的分布式文件系统,它是高度容错的,适应于具有大数据集的应用程序,它非常适于存储大型数据(比如TB和PB)。原创 2022-10-19 10:17:27 · 1365 阅读 · 0 评论 -
JUC系列 Monitor和synchronized优化day2-1
如果在尝试加轻量级锁的过程中,CAS操作无法成功,这时一种情况就是有其它线程为此对象加上了轻量级锁(有竞争),这时需要进行锁膨胀,将轻量级锁变为重量级锁。于是整个类的所有对象都会变为不可偏向的,新建的对象也是不可偏向的。重量级锁竞争的时候,还可以使用自旋来进行优化,如果当前线程自旋成功(即这时候持锁线程已经退出了同步块,释放了锁),这时当前线程就可以避免阻塞。如果对象虽然被多个线程访问,但没有竞争,这时偏向了线程T1的对象仍有机会重新偏向T2,重偏向会重置对象的Thread ID。原创 2022-10-18 21:38:04 · 197 阅读 · 0 评论 -
JUC系列——JConsole线程监控、线程运行、守护线程 day1-2
该状态的线程位于“可运行线程池”中,变得可运行,只等待获取CPU的使用权,即在就绪状态的进程除CPU之外,其它的运行所需资源都已全部获得。当Context Switch 发生时,需要由操作系统保存当前线程的状态,并恢复另一个线程的状态,Java中对应的概念就是程序计数器(Program Counter Register),它的作用是记住下一条jvm指令的执行地址,是线程私有的。①等待阻塞:运行的线程执行wait()方法,该线程会释放占用的所有资源,JVM会把该线程放入“等待池”中。原创 2022-10-16 14:32:30 · 733 阅读 · 1 评论 -
Hadoop系列——Hadoop练手、压测day2-2
执行完后我们在监视页(端口:8088,如:http://node1:8088/cluster)也可以看到。Hadoop本质上就是一个文件系统,所以他是有目录树的,可以分目录,主要用于对大文件进行处理。由于yarn管理程序执行的运算资源,所以MapReduce需要首先对yarn进行访问。可以发现统计的话是按照一行一行进行计算统计的。我们可以稍微修改一下word.txt再此尝试。我们将电话和传真都改成一样之后发现。然后上传到hadoop上。可以看到已经上传上去了。执行成功后我们可以看到。原创 2022-10-12 11:13:35 · 1537 阅读 · 0 评论 -
JUC系列——基础知识 day1-1
操作系统中有一个组件叫做任务调度器,将cpu的时间片(windows 下时间片最小约为15毫秒)分给不同的线程使用,只是由于cpu在线程间(时间片很短)的切换非常快,人类感觉是同时运行的。程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至CPU,数据加载至内存。进程就是用来加载指令、管理内存、管理IO的,当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。一个线程就是一个指令流,将指令流中的一条条指令以一定的顺序交给CPU执行。单核cpu下,线程实际还是串行执行的。原创 2022-10-06 17:24:48 · 828 阅读 · 0 评论 -
Nexus服务安装,Maven私服
maven私服配置原创 2022-09-26 20:43:28 · 866 阅读 · 0 评论 -
Spring5.3学习——from 官网 day1-2
本系列为系统的spring框架学习系列,源于官方文档5.3.23版本,本系列文章是我第二次对于官网内容学习,也更加细致,所有内容均为自我总结,并非复制官网内容,若有错误的地方敬请指出,本系列并不太适合新生学习,很多都是源码阅读。原创 2022-09-22 20:26:34 · 557 阅读 · 0 评论 -
Hadoop系列——Hadoop集群安装day2-1
如果多次format除了造成数据丢失外,还会导致hdfs集群主从角色之间互不识别,通过删除所有机器hadoop.tmp.dir目录重新forma解决。除了官方提供的脚本以外,我们也可以用手写自己定义脚本的方式对启动和关闭做精准控制!这里如果你是一开始在一台机子上做你可以选择直接克隆2台,再改改就行,如果不是,就直接拷贝文件夹发到其他两台机子上。在浏览器中(centos)进行访问,如果要进行window访问,你就需要配置window的网络映射。format本质上是初始化工作,进行HDFS清理和准备工作。原创 2022-09-21 16:52:38 · 1030 阅读 · 0 评论 -
Spring5.3学习——from 官网 day1-1
本系列为系统的spring框架学习系列,源于官方文档5.3.23版本,本系列文章是我第二次对于官网内容学习,也更加细致,所有内容均为自我总结,并非复制官网内容,若有错误的地方敬请指出,本系列并不太适合新生学习,很多都是源码阅读Spring是当前企业级Java应用最常用的框架支持Groovy以及Kotlin作为JVM上的代替语言JDK版本建议8+,请大家逐渐适应使用11Spring应用可以以jar包方式长时间的运行Spring是开源的。原创 2022-09-19 15:34:16 · 506 阅读 · 0 评论 -
Spring核心——SPEL Bean定义中的表达式、实例应用
我们可以使用带有基于 XML 或基于注释的配置元数据的 SpEL 表达式来定义 BeanDefinition 实例。在这两种情况下,定义表达式的语法都采用 #{ } 的形式。这里我们只研究注解形式。原创 2022-09-10 13:38:16 · 851 阅读 · 1 评论 -
Spring核心——SPEL概述
自Spring 4.1开始,包含了一个基本的表达式编译器,对于偶尔的表达式使用,这很好,但是,当被其他组件(例如 Spring Integration)使用时,性能可能非常重要,并且不需要动态。如:我们可以用来创建具有初始化实体的列表或集合,这样的集合或列表创建出来后索引位为一个真实的实体(官网上称会创建null,按照理论来说其实意思是一个空的实体,但是确实会有一定的误导)由最终的打印结果排查,数组中添加的索引位置上实际为一个真实的实体,String的实体长度为0,即不为。原创 2022-09-10 08:15:27 · 1628 阅读 · 0 评论 -
Java注解与反射系列——利用反射进行数据自动填充(代替Mybatis-plus的自动填充)
关于为什么我要写这篇文章,主要是因为在开发的时候写微服务的时候,采用的ShardingJDBC进行分库导致Mybatis-plus的自动填充功能无法正常自动调用,无奈我只能用反射机制自己写一个进行手动调用来进行createTime、updateTime的填充。原创 2022-09-02 22:57:33 · 538 阅读 · 1 评论 -
Java日志系列——规范化日志
特别详细的系统运行完成信息,业务代码中,不要使用.(除非有特殊用意,否则请使用DEBUG级别替代)当我们打印日志时我们一定要使用参数化信息的方式进行打印而不要使用字符串拼接的方式,以避免内存占用。可以填写所有的想知道的相关信息(但不代表可以随便写,debug信息要有意义,最好有相关参数)影响到程序正常运行、当前请求正常运行的异常情况。这样更加有利于问题排查。原创 2022-09-02 18:12:21 · 799 阅读 · 0 评论 -
Java日志系列——logback,log4j2使用
通过模仿logback我们自己就可以修改config我们可以找到的源码,这是默认的logback的配置,我们将其模仿自己也可以写一个//格式化处理 final PatternLayout layout = new PatternLayout();} }...我们还可以通过配置logger节点的方式,对单独的logger进行配置如下在logback.xml中配置了叫test的logger直接在控制台进行输出,当然你还可以指定到文件,流中等这些都取决于你怎么配置。原创 2022-09-02 17:18:06 · 391 阅读 · 0 评论 -
Java日志系列——日志门面,阿里日志规约,SLF4J
当我们的系统变的复杂的之后,难免会集成其他的系统,不同的系统之间可能会使用不同的日志系统。在一个系统中,我们的日志框架可能会出现多个,会出现混乱,而且随着时间的发展,可能会出现新的效率更高的日志系统,如果我们想切换代价会非常的大。原始使用log4j的api写代码,但是具体的实现给你抽离了,我们依赖了一个中间层,这个层其实是用旧的api操作slf4j,而不是操作具体的实现。日志门面就是为了解决这个问题而出现的一种技术,日志门面是规范,其他的实现按照规范实现各自的日志框架即可,我们程序员基于日志门面编程即可。.原创 2022-09-01 03:07:14 · 436 阅读 · 0 评论 -
Java日志系列——log4j(1.x版本,已停更,本文仅让大家简单使用和了解)
日志记录器:负责收集处理日志记录,实例的命名就是类XX的full quailied name(类的全限定名),Logger的名字大小写敏感,其命名有继承机制和JUL一致。Log4j中有一个特殊的logger叫做"root",他是所有logger的根,也就意味着其他所有的logger都会直接或者间接地继承自root。Appender和(JUL的Handler很像,用来指定日志输出到哪个地方,可以同时指定日志的输出目的地。Appenders指定日志的输出方式(输出到控制台、文件等)...原创 2022-09-01 02:08:09 · 362 阅读 · 0 评论 -
Java日志系列——概述,JUL
日志文件是用于记录系统操作事件的文件集合,可分为事件日志和消息日志。具有处理历史数据、诊断问题的追踪以及理解系统的活动等重要作用。在计算机中,日志文件是记录在操作系统或其他软件运行中发生的事件或在通信软件的不同用户之间的消息的文件。记录是保持日志的行为。在最简单的情况下,消息被写入单个日志文件。自定义的继承关系取决于你的名称的层级关系}...原创 2022-08-31 22:19:11 · 5473 阅读 · 1 评论 -
Java11新特性——String新增方法
isEmpty遇到含有空白占位符也会认为非空。原创 2022-08-24 04:44:52 · 610 阅读 · 0 评论 -
Java9,10新特性——String底层变更,InputStream的transferTo方法,局部变量类型推测
局部变量的显示类型声明,常常被认为是不必须的,给一个好听的名字经常可以很清楚的表达出下面应该怎样继续。原先我们知道,Java的String型使用的是char数组进行存储,然而在9以后变成了byte数组进行存储。而若使用char数组,则是UTF-8编码,单字节也需要占用双空间(一个字节占用了两个字节的空间)减少了啰嗦和形式的代码,避免了信息冗余,而且对齐了变量名,更容易阅读!原因是int无法匹配转化Integer,当然其他的基本数据类型也是这样。当然也跟着使用了byte数组进行存储。原创 2022-08-24 04:01:21 · 513 阅读 · 0 评论 -
Java9新特性——JDK目录变化,模块化系统,JShell,接口私有方法
本质上讲,模块(module)的概念,其实就是package外再裹一层,也就是说,用模块来管理各个package,通过声明某个package暴露,不声明默认就是隐藏。因此,模块化使得代码组织上更安全,因为它可以指定哪些部分可以暴露,哪些部分隐藏。在Java 9中,接口更加的灵活和强大,连方法的访问权限修饰符都可以声明为private的了,此时方法将不会成为你对外暴露的API的一部分。最明显的变化是“去除了”jre目录,实际上jre任然可以被我们手动生成,但由于目录的重新划分,使得jre并不被实质性的需要。原创 2022-08-24 03:15:12 · 294 阅读 · 0 评论 -
SpringSecurity系列——安全Http响应头day8-2(源于官网5.7.2版本)
}如果您不想添加默认值并希望明确控制应该使用的内容,则可以禁用默认值以下配置指定 Spring Security 不应再指示浏览器阻止内容} }当然我们也可以自定义一些Header,前后端分离里你需要与前后端约定好,这样以下配置将标头添加到响应中} }...原创 2022-08-12 22:00:11 · 1631 阅读 · 0 评论 -
Spring核心系列——多yaml数据读取,@Value day1-1
在自定义的注解中我们使用@Value注解进行注入,此时注解也就被注入了zhangsan这个字符串,同时我们让其@Target和@Retention注解与@Value注解保持一致即可@Target({}} }原创 2022-08-09 06:49:50 · 1159 阅读 · 0 评论 -
JavaIO进阶系列——NIO模拟群聊系统day2-1
代码】JavaIO进阶系列——NIO模拟群聊系统day2-1。原创 2022-08-03 19:14:59 · 216 阅读 · 0 评论 -
JavaIO进阶系列——NIO day1-3
Java NlO (New lO)也有人称之为java non-blocking lO是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java lO API。NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的、基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作。NIO可以理解为非阻塞IO,传统的IO的read和write只能阻塞执行,线程在读写IO期间不能干其他事情,比如调用socket.read()时,如果服务器一直没有数据传输过来,线程原创 2022-08-03 16:01:51 · 172 阅读 · 0 评论 -
JavaIO进阶系列——BIO day1-2
我们通过线程池对线程队列中的线程进行处理以及限制,将每个线程任务交由线程队列进行存储,线程池会处理定义的核心线程数的线程,例如我设置了核心线程数量为3,那么在同一时刻可以同时并发的处理三个线程的任务,最大线程数要大于等于核心线程数,当同一时刻的线程数量大于我定义的核心线程数的时候,线程池就不会处理,等待一定的时间后,线程池空闲了才会去处理。群聊的思想,广播式转发,一个客户端消息可以发送和给所有客户端接收。客户端每发起一个请求,服务端就创建一个新线程来处理这个客户端。目的是让服务端接收多个客户端的消息。...原创 2022-08-02 14:56:33 · 189 阅读 · 0 评论 -
JavaIO进阶系列——BIO,NIO,AIO系列概述day1-1
在Java的软件设计开发中,通信架构是不可避免的,我们在进行不同系统或者不同进程之间的数据交互,或者在高并发下的通信场景下都需要用到网络通信相关的技术,对于一些经验丰富的程序员来说,Java早期的网络通信架构存在一些缺陷,其中最令人恼火的是基于性能低下的同步阻塞式的I/O通信(BIO),随着互联网开发下通信性能的高要求,Java在2002年开始支持了非阻塞式的I/O通信技术(NIO)...原创 2022-08-02 09:50:37 · 178 阅读 · 0 评论 -
Gradle系列——Gradle的build.gradle文件详情,项目发布(基于Gradle文档7.5)day3-3
Project和Task都允许用户添加额外的自定义属性,要添加额外的属性,通过应用所属对象的ext属性即可实现。添加之后可以通过ext属性对自定义属性读取和设置,如果要同时添加多个自定义属性,可以通过ext代码块ext{我们使用的时候直接使用$取值即可。...原创 2022-08-02 09:22:24 · 1813 阅读 · 0 评论 -
Gradle系列——Gradle插件(基于Gradle文档7.5)day3-2
ext{注意,这只能在本项目中使用,其他项目无法使用Gradle插件打包了可重用的构建逻辑片段,可用于许多不同的项目和构建。Gradle允许您实现自己的插件,因此您可以重用您的构建逻辑,并与他人共享。你可以用任何你喜欢的语言来实现Gradle插件,只要实现最终编译为JVM字节码要创建Gradle插件,您需要编写一个实现Plugin接口的类。当插件应用于项目时,Gradle会创建插件类的实例并调用实例的Plugin.apply()方法。doLast{doFirst{...原创 2022-08-02 05:32:31 · 1793 阅读 · 0 评论 -
Gradle系列——Gradle文件操作,Gradle依赖(基于Gradle文档7.5)day3-1
通常一个项目会有很多的Jar包,我们希望把项目打包成一个WAR,ZIP或TAR包进行发布,这时我们就可以使用Zip,Tar,Jar,War和Ear任务来实现,不过它们的用法都一样,不同的地方只在修改。指定任务类型为Copy,使用from指定需要复制的目录或者文件,使用into指定拷贝的目标地址,同样我们可以使用include和exclude进行包含或排除。使用文件树可以直接获取指定目录下的树结构中的所有文件,使用include或exclude方法进行包含或排除。如下就依赖了junit5的依赖。...原创 2022-08-01 16:27:31 · 3759 阅读 · 0 评论 -
Gradle系列——Gradle测试,Gradle生命周期,settings.gradle说明,Gradle任务(基于Groovy文档4.0.4)day2-3
任务定义方式,总体分为两大类一种是通过Project中的task()方法.另一种是通过tasks对象的create()或者register()方法。register是延迟创建的,即只有被需要使用的时候才会被创建如下是自己编写的一个task任务//任务的配置在配置阶段执行println("thisisadefinetaskcalledtask1")//任务的行为在执行阶段执行doFirst{@TaskAction//表示Task要执行的方法defdoTask(){...原创 2022-08-01 09:20:17 · 584 阅读 · 0 评论 -
Gradle系列——Groovy面向对象(基于Groovy文档4.0.4)day2-2
定义类和方法时,可以使用类型参数并创建泛型类、接口、方法或构造函数。类和类成员可以具有与Java中相同的修饰符(public、protected、private、static等)泛型类和方法的使用,无论它们是否在Java中定义或Groovy,可能涉及提供类型参数。关键字,Groovy同样也不支持多重继承,可以继承类或者接口(类继承类,接口继承接口)闭包是一个开放的、匿名的代码块,它可以接受参数、也可以有返回值。关键字声明,否则认为是带有方法体的方法。关键字设置位抽象类,方法也必须用。...原创 2022-08-01 03:14:33 · 266 阅读 · 0 评论