![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java进阶
文章平均质量分 79
社畜阿藏405
这个作者很懒,什么都没留下…
展开
-
策略模式 + 工厂模式
该模式定义了一些里而算法, 并将每个算法封装起来, 是他们可以互相替换, 且算法的变化不会影响使用算法的客户. 策略模式属于对象行为模式, 它通过对算法进行封装, 把使用该算法的责任和算法的实现分割开来, 并委派给不同的对象对这些算法进行管理优点策略类之间可以自由切换 – 由于策略类都是先同一个接口, 所以使他们之间可以自由切换易于扩展 – 增加一个新的策略只需要添加一个具体的策略类即可, 基本不需要改变原有的代码, 符合"开闭原则"某特定场景下相对。原创 2023-01-29 23:44:52 · 6791 阅读 · 2 评论 -
JUC进阶-NO.3 说说Java锁
公平锁保证了排队的公平性,等待锁的线程不会饿死。缺点是整体吞吐效率相对非公平锁要低,等待队列中除第一个线程以外的所有线程都会阻塞,CPU唤醒阻塞线程的开销比非公平锁大,非公平锁霸气的忽略了这个规则,所以就有可能导致排队的长时间在排队,也没有机会获取到锁,这就是传说中的"锁饥饿"死锁是指两个或两个以上的线程在执行过程中,引争夺资源而造成的一种相互等待的现象,若无外力干涉那他们都无法推进下去,如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能就很低,否则就会因争夺有限的资源而陷入死锁。原创 2022-09-21 23:29:27 · 685 阅读 · 0 评论 -
JUC进阶-NO.2 CompletableFuture
因为get方法不管是否计算完成都被阻塞,这样就不能算是异步操作了try {});System . out . println("我在继续");//不见不散,只要出现get方法,不管是否计算完成都阻塞等待结果出来再运行 System . out . println(futureTask . get());}而高并发时需要克服阻塞,尽量少加锁不要加锁,以及思考什么可以替代锁什么是CompletableFuture -> 是 Future++原创 2022-09-21 23:27:59 · 354 阅读 · 0 评论 -
真· 使用注解通过AOP实现JSR303且不仅限于JSR303
前言, 首先JSR303是一种校验, 如果只是对于参数校验进行处理的话, 那么JSR是提供了放发扩展的, 所以只需要去继承它对应的类来做就好了。下方代码例子实现的业务就是如果controller中传参包含的String对象字符串前后用空格的话,则根据注解参数进行对应处理。那么下方的代码能做的是不仅限于JSR303校验的事情还可以对于特定的参数或者对象属性进行操作。这里写代码的时候使用的是ruoyi的框架, 所以有一些包名需要根据你项目情况进行一下更改。StringTrim注解的三种常量。原创 2022-09-13 14:46:19 · 106 阅读 · 0 评论 -
JUC进阶-NO.1 线程基础知识复习
高内聚低耦合前提下,封装思想判断,干活,通知防止虚假唤醒,wait方法要注意注意标志位flag,可能是volatile的。原创 2022-07-17 23:14:58 · 168 阅读 · 0 评论 -
使用Maven编译错误-解决方案
警告目标发行版1.8(也可能是其他版本号)与默认的源发行版17冲突(也可能是其他版本号)错误无效的目标发行版1.17(也可能是其他版本号)原创 2022-07-17 17:27:04 · 10303 阅读 · 0 评论 -
Maven进阶
Maven的完整性项目管理功能的具体表现下面是spring-boot-starter的POM文件, 可以看到: 除了我们熟悉的坐标标签, dependenices标签, 还有description, url, organization, licenses, developers, scm, issueManagement等这些描述项目信息的标签description标签: 当前jar包的介绍organization标签: 组织, 子标签name: 组织名, 子标签url: 官网地址licenses标签: 类原创 2022-07-12 22:42:26 · 622 阅读 · 0 评论 -
Maven入门
Maven笔记应用场景:开发过程: 管理jar自动部署私有仓库一.概要maven是一个依赖管理工具maven是一个构建管理工具1. Maven是一个依赖管理工具jar包的规模随着我们使用越来越多的框架,或者框架封装成都越来越高,项目中使用的jar包也越来越多.项目中,一个模块里面用到三百个jar包是非常正常的jar包的来源这个jar包所属的技术的官网.https://mvnrepository.com/jar包之间的依赖关系框架中使用的原创 2022-05-23 23:39:45 · 225 阅读 · 0 评论 -
Mac/linux使用vim查看字节码文件/.class文件方式
Mac/linux查看字节码文件/.class文件方式这里使用的是.class文件举例首先要有一个.class文件我这里随便找了一个.class文件然后打开终端或者iTermvim '你的文件路径'回车进入然后使用 :!xxd 将文件转换成16进制现实源文件使用vim 命令:%!xxd完成当我们保存退出之后尝试cat➜ ~ cat /Users/zangzihe/Desktop/GitHub/Son.class00000000: cafe babe 00原创 2022-03-16 23:43:43 · 2448 阅读 · 0 评论 -
Mac安装多jdk环境
Mac m1等arm芯片安装多jdk环境我这里分别使用的还是2. 配置环境变量安装完成后,需要配置 JAVA_HOME切换 JDK版本。Mac M1 2020 版默认使用的是配置文件路径:~/.zshrc若不存在该文件,直接新建就行;存在则把JAVA_HOME加在末尾。编辑vim ~/.zshrc1写入......原创 2022-02-20 21:36:01 · 2281 阅读 · 0 评论 -
JUC基础(三): 线程间通信
线程间通信线程间通信的模型有两种:共享内存和消息传递,以下方式都是基本这两种模型来实现的。我们来基本一道面试常见的题目来分析场景—两个线程,一个线程对当前数值加1,另一个线程对当前数值减1,要求用线程间通信代码原型// 下方代码中开了两个线程(不包含主线程,分别调用加减方法以此来观察wait方法和notifyAll之间的互相通知)package com.example.test;/* 第一步创建资源类,在资源类中创建属性和方法 */class SyncShare { /**原创 2021-10-08 23:59:09 · 99 阅读 · 0 评论 -
JUC基础(二): Synchronized和Lock接口
Lock接口SynchronizedSynchronized关键词回顾synchronied是Java中的关键字,是一个同步锁.他修饰的对象有以下几种:修饰一个代码块,被修饰的代码块成为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象;修饰一个方法,被修饰的方法成为同步方法,起作用的范围是整个方法,作用的对象是调用这个方法的对象;虽然可以使用synchronized来定义方法,但是synchronized并不属于方法定义的一部分,因此,synchronize原创 2021-10-06 23:35:14 · 132 阅读 · 0 评论 -
JUC基础(一): 什么是JUC(JUC概述)
什么是JUCJUC简介在Java中,线程部分是一个重点,本篇文章说的JUC也是关于线程的. JUC就是java.util.concurrent工具包的简称. 这是一个处理线程的工具包, JDK1.5开始出现的.进程和线程进程(process)是计算机中的程序关于某数据集合三的一次运行或动, 是系统进行资源分配和调度的基本单位, 是操作系统接口的基础. 在当代面向线程设计的计算机结构中, 进程是线程的容器. 程序是指令, 数据及其组织形式的描述, 进程是程序的实体. 是计算机中的程序关于某数据集合上原创 2021-10-05 19:06:09 · 3489 阅读 · 0 评论