
java
文章平均质量分 84
有关java后端的笔记,包括java SE和后端中要用到的各种框架笔记
小机double
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java 集合框架系列(五):Queue 接口及其实现类
Queue队列,也是Collection的一个重要分支,是一个先进先出的数据结构,其一个重要的子接口为BlockingQueue(阻塞队列),阻塞队列在多线程的场景中有着广泛的应用,平时用的队列可以直接使用LinkedList来使用。...原创 2022-07-22 13:30:00 · 887 阅读 · 1 评论 -
Java 集合框架系列(四):Map 接口及其实现类
LinkedHashMap继承HashMap,可以在HashMap的基础上实现顺序的访问,其底层使用了双向链表+HashMap来实现。HashMap是JDK1.2版本之后开始增加的,在1.8版本之前其底层使用数组+链表的方式来作为哈希表的存储结构,在1.8版本及之后改成了数组+链表/红黑树的方式来作为哈希表的存储结构,当链表的长度大于8的时候会将链表转换成一颗红黑树。用于存储键值对,是一个接口,其常见的实现类有HashMap、Hashtable、TreeMap等。......原创 2022-07-22 08:54:52 · 527 阅读 · 0 评论 -
Java 集合框架系列(三):Set 接口及其实现类
否则会在编译阶段就抛出错误。使用HashMap作为底层数据结构存放数据,HashSet中将要存放的数据作为HashMap的Key,HashMap中的value为一个在HashSet中定义的所有value共享的Object对象。其实现是在HashSet的基础上多了一个总链表,将放入的元素串在一起,方便有序的遍历。Set,数学意义上的集合,指的是结构数据唯一、数据存储无序、没有跟索引相关的方法,不能用普通的for循环遍历,必须使用迭代器遍历或者增强for循环遍历的数据结构。......原创 2022-07-22 08:41:37 · 476 阅读 · 0 评论 -
Java 集合框架系列(二):List 接口及其实现类
继承Collection接口的一个接口,用来表示传统的线性表的结构,实现该接口的结构存储的数据不唯一(值不唯一,类型是唯一的),数据按照添加的顺序进行排列。其他操作和Vector差不多,主要是扩容机制不太一样,ArrayList没有扩容因子,其在一般情况都是扩容当前长度的1/2的大小。底层用数组存储,与Vector相比,ArrayList的操作不是线程安全的,其他基本与Vector相同。底层用数组存储,里面的方法都是线程安全的,现版本基本被抛弃了,锁的粒度比较大,性能低,不建议使用。...原创 2022-07-22 08:36:11 · 471 阅读 · 0 评论 -
Java 集合框架系列(一):集合框架整体概述
Java 中的集合框架帮助我们实现了很多数据结构,可以直接拿来使用,下面是常用数据结构接口的概述。原创 2022-07-03 18:04:33 · 351 阅读 · 0 评论 -
Java中的锁之synchronized关键字
Java中的锁 所谓锁是用来控制多个线程访问共享资源的方式,所以锁在Java中并不仅仅指代的就是Java中的对象,例如自旋锁用的就是指令的方式。通常的,一个锁能够防止多个线程访问共享资源(也称为临界区)。 在JDK5之前,Java中的锁是通过关键字synchronized来实现的,而在JDK5之后Lock接口的出现使得锁的使用更加的灵活。同时在JDK6开始对synchronized关键字进行了锁升级的优化,使其能够适用于更多的场景,不再是严格意义上的重量级锁。 synch原创 2022-01-16 16:11:36 · 1341 阅读 · 0 评论 -
WebSocket协议介绍与使用
WebSocket协议 WebSocket协议是一种网络通信协议,是HTML5之后提出的一种在单个TCP上进行全双工通讯的协议。可以使服务端主动的向客户端发送消息,常用于推送服务。其特点如下:HTTP协议(1.0)是单向的没有连接状态的协议,客户端浏览器为了获取服务器的动态变化信息,需要配合JavaScript和AJAX进行不断的异步轮询请求,需要不断的建立连接,非常耗费资源。WebSocket能够使任一方主动的建立起连接,并且连接只要建立一次就一原创 2022-01-08 22:29:31 · 2752 阅读 · 0 评论 -
ThreadLocal原理及使用场景
ThreadLocal ThreadLocal意为线程本地变量,用于解决多线程并发时访问共享变量的问题。 所谓的共享变量指的是在堆中的实例、静态属性和数组;对于共享数据的访问受Java的内存模型(JMM)的控制,其模型如下:【参考:《Java并发编程的艺术》P22】每个线程都会有属于自己的本地内存,在堆(也就是上图的主内存)中的变量在被线程使用的时候会被复制一个副本线程的本地内存中,当线程修改了共享变量之后就会通过JMM管理控制写会到主内存中。 很明显,在多线程的场景下,当有多个线程对共享原创 2022-01-02 19:58:43 · 72276 阅读 · 10 评论 -
redis(三)Redis的事务和锁机制
redis(三)Redis的事务和锁机制事务Redis中的事务可以用来一次执行多条指令,并且有如下两个性质:事务是一个单独隔离的操作,事务中的所有命令都会被序列化,并顺序执行,事务在执行的过程中不会被其他客户端发送过来的命令请求所打断。事务是一个原子操作,要么全部执行,要么全都不执行(不管执行成功与否)。这与mysql中的有所区别。相关命令:命令作用multi开启一个事务,并将之后的命令放到事务队列中 – 组队阶段exec执行一个事务,按照顺序执行 – 执行阶段原创 2021-05-27 15:50:42 · 255 阅读 · 1 评论 -
Redis(二)Redis6新数据类型
Redis(二)Redis6新数据类型与Spring Boot的整合新数据类型Redis6之后增加了三种新的数据类型,Bitmaps、HyperLogLog、Geographic。Bitmapsbitmaps(位图)严格上讲并不是新的一种数据类型,而是定义了字符串类型面向位的一组操作。通过在不同位上设置0或者1来存储不同的状态。创建位图对象的命令localhost:6379>setbit key offset valueoffset为偏移量,表示要将哪一位设置成0/1。获取某一原创 2021-05-27 15:47:53 · 236 阅读 · 0 评论 -
java开发利器(1)一lombok
lombok前言 封装是java语言中的三大特性之一,最常见的封装可能就是我们要将实体类中的属性使用private修饰符进行修饰,然后书写相应的公共访问器(get方法),修改器(set)方法。像这些方法的书写基本都是固定的,有的就是改一下名称啥的。 记得刚开始学的时候很快就厌烦了写这些相同的代码,之后发现了一些集成开发环境中能够通过快捷键自动生成,也减少了一定的代码量的书写。但是到了后面随着编写项目实体类的增加发现这些快捷键按多了也烦了。 &nb原创 2021-03-20 22:49:59 · 299 阅读 · 0 评论 -
RabbitMQ笔记(一)
RabbitMQ笔记(一)MQMessage Queue 消息队列,也称消息中间件,是一个以队列这种“先进先出”的基本数据结构为基础的软件。其遵守java中JMS规范,通过提供接口的方式进行不同服务之间的消息传递,其消息传递的方式大致如下: 下面简单提一下在本次笔记中可能用到的一些消息中间件概念的来源,其中很多概念都是来自JMS规范的。详情可以看博文JMS消息服务JMS规范及原理详解。JMS规范(可跳过)Java Message Service java消息服务应用程序接口,是一原创 2021-03-12 16:35:03 · 220 阅读 · 0 评论 -
IDEA Mave工程Mybatis找不到映射文件
使用mybatis时报如下异常:org.apache.ibatis.exceptions.PersistenceException: ### Error building SqlSession.### The error may exist in cn.net.smrobot.dao/UserDao.xml### Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cau原创 2020-11-11 20:22:02 · 638 阅读 · 0 评论 -
使用jackson解析json数据详讲
Java操作json数据json 简介概念 JSON:JavaScript Object Notations,即javaScript的对象表示法,是javaScript语法的一个子集,相当于javaScript中的一个对象。虽然json起源于javaScript,但是很多语言都支持json数据格式的解析与生成,是一种文本数据格式,官方的MIME类型是:application/json。 应用场景常用在使用javaScript,java,node.js原创 2020-09-30 11:51:59 · 3548 阅读 · 0 评论 -
redis数据库及java操作redis基础知识汇总
redis数据库1.Redis的安装 可以直接去中文官网中直接下载安装,进入这个网站,点击下载,下载稳定版的即可。将该tar包下载后加压到一个没有中文字符路径的空文件夹中,即可直接使用,不用进行额外的配置。本地使用方式如下:打开redis-server.exe:这是一个redis的服务器端,相当于mysql软件打开redis-cli.ext:这是一个redis的客户端,可以供我们在本地操作redis数据库,类似与图形化界面,当然这里是使用命令行的方式操作redis数据库的。原创 2020-09-12 19:51:43 · 454 阅读 · 2 评论 -
JQuery随笔(3) DOM操作和动画效果
JQuery的DOM操作和动画效果相比的原生的js的繁杂的DOM操作,JQuery的DOM操作更加简便,代码也更加简洁。JQuery本身就是对原生JS的封装,封装的目的往往就是让代码更加简洁,更加易懂。JQuery里面有封装了一些对于元素淡入淡出的操作,可以从一定程度上丰富我们的网页~DOM操作JQuery的DOM操作常用的主要用来给某个元素添加子节点或者删除子节点,可以用在JS中获取后端传递的数据,动态的生成界面,很方便。常用的文档(document)操作如下:在一个节点内部插入子节点:原创 2020-08-08 22:10:25 · 344 阅读 · 0 评论 -
JQuery(2)属性操作
属性操作JQuery中封装了一些HTML标签属性的操作,可以用来简化原生JS中对HTML标签的操作,对这些封装的方法进行分类的话,大致可以分为适用于一般属性的操作(通用的)和专门针对于类属性的操作,常用的共有下面的这些:通用属性操作attr:这种一般用于不是检查DOM状态的一些属性,比如src,CSS相关的一些属性等。JQuery对象.attr(“属性名称”, “值”): 当只有一个参数时获取属性的值,当出入value参数时设置属性的值。JQuery对象.removeAttr(“属性名原创 2020-08-01 19:39:48 · 201 阅读 · 0 评论 -
JQuery随笔(1) 选择器
JQuery选择器 选择器可以让让我们选择html元素(标签),并进行相应的操作。CSS样式中,使用选择器可以给特定的元素添加叠层样式,使得HTML元素展示出来的更加丰富多彩。而JQuery作为JavaScript的一个框架,其目的就是简化JS中的DOM操作,可以让我们写更少的代码来达到自己的目的。其对HTML元素的选择也是采用的CSS选择器的方式,JQuery1.xx版本的共有五十多个选择器。 选择器更像是一种语义的规范,可以使我们相对精准的获取到自己想要的原创 2020-07-26 13:41:28 · 177 阅读 · 0 评论 -
Java Web随笔--过滤器Filter和监听器Listener
Filter:过滤器,是Java Web技术中的三大组件之一(还有Servlet和Listener)。其对应的接口为javax.servlet.FilterFilter命名为过滤器,顾名思义,就跟我们生活中的自来水一样,可能会自来水的源头可能会来源于不同的地方,但是我们要使用的话都是要经过自家的过滤器进行一些处理,比如吸附杂质啦,去除异味啦。而在程序中体现过滤器的处理的就是对“来源”进行一些统一的处理,才能最终被"接收"。类比我们用水龙头接收自来水,服务器端就相当于接收的地方,而"水"的来源则来源于.原创 2020-07-22 22:56:21 · 195 阅读 · 0 评论 -
java私有构造器的几个用途
引言:在java中一个类的构造方法一般都是公共的public,毕竟你创建类就是为了能够让别人声明出该类的一个实例对象,如果使用private对构造方法进行修饰的话就使用者就无法通过构造方法创建该类的一个实例对象了。但是私有的构造方法仍然有其用途。具体可以使用在下面几个方面:1. 用在工具类中在java.lang.Math类中可以看到如下代码private Math() {}并且在Math类中没有其他构造方法,因此用户无法自己创建一个实例化的Math对象。从Math类的源码中可以发现里面的成员属性原创 2020-12-30 18:21:07 · 2005 阅读 · 3 评论 -
java注解
注解注解的概念 Annotation 注解 可以看成是java中的一种标记记号,用来给java中的类,成员,方法,参数等任何程序元素添加一些额外的说明信息,同时不改变程序语义。注解是用来告诉编译器一些事情,例如使用@Override注解,可以告诉编译器这个父类方法被子类方法覆盖了。 注解也称元数据,在层次上与类,接口,枚举同一层级(在这里我们可以称这些都是类型)。其声明是用@interface,类似于类用class,接口用interface, 枚举用enum原创 2020-11-12 23:34:55 · 133 阅读 · 0 评论 -
java File类的使用方式及示例
FIle类 学习IO操作之前先来看看File类,这是一个对文件操作的类,并不涉及到文件的写入和输出,就跟我们平时在UI界面中操作文件一样,新增文件,删除文件等。(文件夹也是类似的),File类中的常用操作如下:新建文件删除文件新建文件夹删除文件夹判断是否为文件夹判断是否为文件注:我们人也是要判断才能进行下一步操作的,例如是文件直接打开,是文件夹点击进入查看里面的内容。而文件是硬盘的最小单元,所以我们最终操作的都是文件。 File类即是文件原创 2020-10-28 19:12:32 · 208 阅读 · 0 评论 -
java网络编程入门之UDP协议
相关基础概念计算机网络 是指将地理位置不同,功能独立的多台计算机及其外部设备通过通信的方式连接起来,在网络操作系统,网络管理软件和网络通信协议的协调管理下,实现资源信息共享的计算机系统。通信连接的方式即可以是无线的,也可以是有线的。 网络编程三要素 所谓网络编程就是使用代码(编程语言)进行不同计算机之间的通信。一.IP地址 就是指每台计算机的唯一标识,就跟我们的手机电话号码一样,独一无二,通过IP地址,就可以原创 2020-10-27 22:23:00 · 327 阅读 · 0 评论 -
JDK1.8新特性第三弹之《stream流》
Stream流stream流是JDK1.8的另外一个新特性,前面已经介绍了lambda表达式和一些常用的函数式接口,接下来的stream流将会把这两个特性结合在一起,让我们体会到其编写代码的简洁之处。正如前面所讲到的lambda表达式体现的是一种函数式编程思想,更加关注于**“做什么”,而不是“怎么做”。而stream流是一种流式操作, 和lambda表达式一起可以更加关注于“做什么”**本身。stream流和IO流中的流没有任何关系,是两个完全不同的概念。stream流的概念可以看成工厂中的流水线生原创 2020-09-06 21:54:26 · 560 阅读 · 0 评论 -
jdk1.8新特性第二弹之《常用的函数式接口》
常用的函数式接口回顾 函数接口的概念在之前的文章《lambda表达式》中就有提到,函数接口配合Lambda表达式的使用在一些情况下可以大大简化我们java代码的书写。函数接口指的就是接口中只有一个抽象方法, 并且接口使用@FunctionalInterface注解进行修饰。JDK中帮我们定义好了一些常用的函数接口,这些函数接口配合Lambda和后面要讲的stream流进行一些过滤数据的操作,用起来非常简洁,下面就来讲常用到的函数接口有哪些。 值得一提的是函数原创 2020-09-06 10:55:02 · 279 阅读 · 0 评论 -
jdk1.8新特性第一弹之《Lambda表达式》
Lambda表达式Lambda表达式是JDK8引入的一个新特性,又名匿名函数或闭包,即可以不用创建显示的标识符(函数名,变量名,类名等~)来书写需要的代码。java作为一门面向对象的语言,对语法有着严格的要求,在java中”一切皆对象“。但是有时候随着我们写的代码多了又发现写java代码有时候会显得复杂。比如我们每次在写代码时都需创建一个类,用到该类时又要创建该类的实例。有时候我们仅仅只是需要一个功能实现我们想要的目的,而不想要去和任何对象绑定在一起。例如定义一个方法,在需要的时候直接使用该方法就行了原创 2020-09-03 21:25:15 · 224 阅读 · 0 评论 -
java多线程基础入门系列(1)
java多线程基础(1)“近期重新学了java多线程的知识,之前学过没怎么用,慢慢的也就忘得差不过了。这次就把多线程的基础知识在此记录一下~”基础概念并发与并行并发:一个CPU在同一时间段有多个程序在执行并行:同一时刻有多个程序在执行,在多核(多个CPU)的计算机中可以实现因为CPU运行的速度非常的快,所以这里的同一时间段和同一时刻都是针对于微观时间而言,我们人的感受上区别不出来这两个有什么区别。例如在单核的计算机中,我们仍然可以在同一时刻打开多个程序运行,但是其实是因为CPU快速的在多原创 2020-09-03 09:16:49 · 201 阅读 · 0 评论 -
一文记录java异常控制基础
异常控制写程序错误在所难免,对错误的控制一直是编程人员要解决的一大问题,如果有一种机制能够帮助我们在写程序的时候就规避可能发生的错误,这样就可能提高编程的效率啦。由于很难设计出一套完美的错误控制方案,许多语言干脆将问题简单地忽略掉,将其转嫁给库设计人员。对大多数错误控制方案来说,最主要的一个问题是它们严重依赖程序员的警觉性,而不是依赖语言本身的强制标准。《java编程思想》java中的异常控制是java语言的强大之处的体现之一。在很多编程语言中经常将“异常控制”模块内置到程序设计语言本身,有时甚原创 2020-08-31 12:55:45 · 283 阅读 · 0 评论