展开
拓展 关闭
订阅号推广码
GitHub
视频
公告栏 关闭

05 2022 档案

摘要:系统变量 简介 1、系统变量 系统变量分为全局系统变量(需要添加 global 关键字)以及会话系统变量(需要添加 session 关键字),有时也把全局系统变量简称为全局变量,有时也把会话系统变量称为local变量。如果不写,默认会话级别 全局系统变量针对于所有会话(连接)有效,但 不能跨重启 在 阅读全文
posted @ 2022-05-31 23:18 DogLeftover 阅读(91) 评论(0) 推荐(0) 编辑
摘要:创建存储过程 简介 是一组经过 预先编译 的 SQL 语句的封装 存储过程预先存储在 MySQL 服务器上,需要执行的时候,客户端只需要向服务器端发出调用存储过程的命令,服务器端就可以把预先存储好的这一系列 SQL 语句全部执行 分类 1、没有参数(无参数无返回) 2、仅仅带 IN 类型(有参数无返 阅读全文
posted @ 2022-05-28 19:27 DogLeftover 阅读(79) 评论(0) 推荐(0) 编辑
摘要:常见的数据库对象 视图的作用 1、视图一方面可以帮我们使用表的一部分而不是所有的表,另一方面也可以针对不同的用户制定不同的查询视图 2、视图是一种 虚拟表 ,本身是 不具有数据 的,占用很少的内存空间,它是 SQL 中的一个重要概念 3、视图建立在已有表的基础上, 视图赖以建立的这些表称为基表 4、 阅读全文
posted @ 2022-05-28 13:30 DogLeftover 阅读(74) 评论(0) 推荐(0) 编辑
摘要:起步 数据类型 数据类型的属性 整数 代码案例 # 创建数据表,指定字段类型 CREATE TABLE test_int1( f1 TINYINT, f2 SMALLINT, f3 MEDIUMINT, f4 INTEGER, f5 BIGINT ); # 插入没有超出范围的整数,未报错 INSER 阅读全文
posted @ 2022-05-28 13:29 DogLeftover 阅读(128) 评论(0) 推荐(0) 编辑
摘要:起步 简介 1、数据完整性(Data Integrity)是指数据的精确性(Accuracy)和可靠性(Reliability)。它是防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的 2、为了保证数据的完整性,SQL规范以约束的方式对表数据进行额外的条件限 阅读全文
posted @ 2022-05-28 13:29 DogLeftover 阅读(173) 评论(0) 推荐(0) 编辑
摘要:插入数据 代码案例 # 方式1:一条一条的添加数据 # 没有指明添加的字段时,一定要按照声明的字段的先后顺序添加 INSERT INTO emp1 VALUES (1,'Tom','2000-12-21',3400); # 错误写法:没有指定添加字段,也没有按声明顺序 INSERT INTO emp 阅读全文
posted @ 2022-05-28 13:27 DogLeftover 阅读(18) 评论(0) 推荐(0) 编辑
摘要:起步 简介 子查询要包含在括号内 将子查询放在比较条件的右侧 单行操作符对应单行子查询,多行操作符对应多行子查询 分类 单行子查询:查询的结果只有1行 多行子查询:查询的结果有多行 相关(或关联)子查询:子查询中的参数需要用到主查询中的值 不相关(或非关联)子查询 单行 案例1 # 1.查询工资比A 阅读全文
posted @ 2022-05-28 13:26 DogLeftover 阅读(42) 评论(0) 推荐(0) 编辑
摘要:起步 命名规则 数据库名、表名不得超过30个字符,变量名限制为29个 必须只能包含 A–Z, a–z, 0–9, _共63个字符 数据库名、表名、字段名等对象名中间不要包含空格 同一个MySQL软件中,数据库不能同名;同一个库中,表不能重名;同一个表中,字段不能重名 必须保证你的字段没有和保留字、数 阅读全文
posted @ 2022-05-28 13:26 DogLeftover 阅读(103) 评论(0) 推荐(0) 编辑
摘要:AVG和SUM 可以对数值型数据使用AVG 和 SUM 函数 代码案例 SELECT AVG(salary), SUM(salary), AVG(salary) * 107 FROM employees; # 错误案例: # 如下的操作没有意义,因为不是数值类型 SELECT SUM(last_na 阅读全文
posted @ 2022-05-28 09:44 DogLeftover 阅读(84) 评论(0) 推荐(0) 编辑
摘要:起步 简介 操作数据对象 接受参数返回一个结果 只对一行进行变换 每行返回一个结果 可以嵌套 参数可以是一列或一个值 数值 基本函数 代码案例 # 绝对值 SELECT ABS(-123), ABS(32), SIGN(-23), SIGN(43), PI(), CEIL(32.32), CEILI 阅读全文
posted @ 2022-05-27 16:39 DogLeftover 阅读(32) 评论(0) 推荐(0) 编辑
摘要:表结构如下 基础使用 # 两个表的连接查询 SELECT employee_id, department_name FROM employees, departments WHERE employees.`department_id` = departments.department_id; # 如 阅读全文
posted @ 2022-05-27 13:38 DogLeftover 阅读(31) 评论(0) 推荐(0) 编辑
摘要:排序规则 ASC(ascend): 升序 DESC(descend):降序 ORDER BY 子句在SELECT语句的结尾 代码案例 # 按照salary从高到低的顺序显示员工信息 SELECT employee_id, last_name, salary FROM employees ORDER 阅读全文
posted @ 2022-05-27 13:26 DogLeftover 阅读(21) 评论(0) 推荐(0) 编辑
摘要:前言 视频链接 算术运算符 算术运算符主要用于数学运算,其可以连接运算符前后的两个数值或表达式,对数值或表达式进行加(+)、减(-)、乘(*)、除(/)和取模(%)运算 加减运算符 一个整数类型的值对整数进行加法和减法操作,结果还是一个整数; 一个整数类型的值对浮点数进行加法和减法操作,结果是一个浮 阅读全文
posted @ 2022-05-26 21:39 DogLeftover 阅读(81) 评论(0) 推荐(0) 编辑
摘要:视频链接 SQL 分类 SQL语言在功能上主要分为如下3大类: DDL(Data Definition Languages、数据定义语言),这些语句定义了不同的数据库、表、视图、索引等数据库对象,还可以用来创建、删除、修改数据库和数据表的结构 主要的语句关键字包括 CREATE 、 DROP 、 A 阅读全文
posted @ 2022-05-26 14:53 DogLeftover 阅读(58) 评论(0) 推荐(0) 编辑
摘要:查看所有数据库 show databases; “information_schema”是 MySQL 系统自带的数据库,主要保存 MySQL 数据库服务器的系统信息,比如数据库的名称、数据表的名称、字段名称、存取权限、数据文件 所在的文件夹和系统使用的文件夹 “performance_schema 阅读全文
posted @ 2022-05-26 14:28 DogLeftover 阅读(20) 评论(0) 推荐(0) 编辑
摘要:参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String, O 阅读全文
posted @ 2022-05-26 11:25 DogLeftover 阅读(90) 评论(0) 推荐(0) 编辑
摘要:拦截器参数 @Component //定义拦截器类,实现HandlerInterceptor接口 //注意当前类必须受Spring容器控制 public class ProjectInterceptor implements HandlerInterceptor { @Override //原始方法 阅读全文
posted @ 2022-05-25 22:32 DogLeftover 阅读(38) 评论(0) 推荐(0) 编辑
摘要:构建1个maven项目,导入依赖 <dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <sco 阅读全文
posted @ 2022-05-25 21:47 DogLeftover 阅读(38) 评论(0) 推荐(0) 编辑
摘要:将前端页面放到webapp目录下 使用springmvc放行页面 @Configuration public class SpringMvcSupport extends WebMvcConfigurationSupport { @Override protected void addResourc 阅读全文
posted @ 2022-05-25 21:46 DogLeftover 阅读(9) 评论(0) 推荐(0) 编辑
摘要:编写异常状态码 public class Code { public static final Integer SAVE_OK = 20011; public static final Integer DELETE_OK = 20021; public static final Integer UP 阅读全文
posted @ 2022-05-25 21:38 DogLeftover 阅读(22) 评论(0) 推荐(0) 编辑
摘要:返回结果集 public class Result { //描述统一格式中的数据 private Object data; //描述统一格式中的编码,用于区分操作,可以简化配置0或1表示成功失败 private Integer code; //描述统一格式中的消息,可选属性 private Stri 阅读全文
posted @ 2022-05-25 20:56 DogLeftover 阅读(22) 评论(0) 推荐(0) 编辑
摘要:编写实体类 public class Book { private Integer id; private String type; private String name; private String description; public Integer getId() { return id 阅读全文
posted @ 2022-05-25 20:53 DogLeftover 阅读(13) 评论(0) 推荐(0) 编辑
摘要:数据库的作用 1、持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,而持久化的实现过程大多通过各种关系数据库来完成 2、持久化的主要作用是将内存中的数据存储在关系型数据库中,当然也可以 阅读全文
posted @ 2022-05-24 22:26 DogLeftover 阅读(26) 评论(0) 推荐(0) 编辑
摘要:使用模板构建1个maven项目 导入依赖 <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.10.RELEASE 阅读全文
posted @ 2022-05-24 20:09 DogLeftover 阅读(18) 评论(0) 推荐(0) 编辑
摘要:github删除仓库 gitlab删除仓库 gitlab设置开源状态 github恢复已删除的仓库 setting -> repository -> Deleted repository -> restore github添加仓库成员 项目Settings -> Collaborators -> 输 阅读全文
posted @ 2022-05-24 19:36 DogLeftover 阅读(20) 评论(0) 推荐(0) 编辑
摘要:安装文档 参考 安装chocolatey # 管理员身份打开cmd Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.S 阅读全文
posted @ 2022-05-24 14:08 DogLeftover 阅读(166) 评论(0) 推荐(0) 编辑
摘要:本地新建分支 新建成功后,本地有test分支,远程没有test分支 推送本地分支到远程 子分支修改后推送到远程 切换到主分支 切换到main分支,左键点击要合并到main分支的test分支 将本地main分支推送要远程 删除本地分支 删除远程分支 阅读全文
posted @ 2022-05-24 11:59 DogLeftover 阅读(18) 评论(0) 推荐(0) 编辑
摘要:简介 1、在使用函数式编程模型操作时候,需要自己初始化服务器 2、基于函数式编程模型时候,有两个核心接口:RouterFunction(实现路由功能,请求转发给对应的 handler)和 HandlerFunction(处理请求生成响应的函数)。核心任务定义两个函数 式接口的实现并且启动需要的服务器 阅读全文
posted @ 2022-05-22 15:37 DogLeftover 阅读(193) 评论(0) 推荐(0) 编辑
摘要:新建springboot项目 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-webflux</artifactId> </dependen 阅读全文
posted @ 2022-05-22 13:21 DogLeftover 阅读(59) 评论(0) 推荐(0) 编辑
摘要:起步 1、响应式编程操作中,Reactor 是满足 Reactive 规范框架 2、Reactor 有两个核心类,Mono 和 Flux,这两个类实现接口 Publisher,提供丰富操作符。Flux 对象实现发布者,返回 N 个元素;Mono 实现发布者,返回 0 或者 1 个元素 3、Flux 阅读全文
posted @ 2022-05-22 10:28 DogLeftover 阅读(388) 评论(0) 推荐(0) 编辑
摘要:起步 Spring5 添加新的模块,用于 web 开发的,功能和 SpringMVC 类似的,Webflux 使用当前一种比较流程响应式编程出现的框架 使用传统 web 框架,比如 SpringMVC,这些基于 Servlet 容器,Webflux 是一种异步非阻塞的框架,异步非阻塞的框架在 Ser 阅读全文
posted @ 2022-05-22 09:39 DogLeftover 阅读(144) 评论(0) 推荐(0) 编辑
摘要:整合JUnit4 导入依赖 <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>5.3.0</version> <scope>test</scope> </ 阅读全文
posted @ 2022-05-21 21:38 DogLeftover 阅读(43) 评论(0) 推荐(0) 编辑
摘要:@Nullable注解 注解用在方法上面,方法返回值可以为空 @Nullable public String add(){ } 注解使用在方法参数里面,方法参数可以为空 public String add(@Nullable String id){ } 注解使用在属性上面,属性值可以为空 @Null 阅读全文
posted @ 2022-05-21 20:50 DogLeftover 阅读(226) 评论(0) 推荐(0) 编辑
摘要:导入依赖 <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.5</version> </dependency> <dependency> <groupId>org.slf 阅读全文
posted @ 2022-05-21 19:43 DogLeftover 阅读(36) 评论(0) 推荐(0) 编辑
摘要:编写配置类 @Configuration //配置类 @ComponentScan(basePackages = "org.example") //组件扫描 @EnableTransactionManagement //开启事务,相当于bean.xml中的<tx:annotation-driven 阅读全文
posted @ 2022-05-21 16:09 DogLeftover 阅读(28) 评论(0) 推荐(0) 编辑
摘要:bean.xml中配置如下 <!--1 创建事务管理器--> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <!--注入数据源--> <p 阅读全文
posted @ 2022-05-21 14:35 DogLeftover 阅读(52) 评论(0) 推荐(0) 编辑
摘要:事务传播行为 事务方法 即是对数据库进行增、删、改操作的方法 传播属性 REQUIRED行为 如果add方法有事务,update方法没有事务,add方法调用update方法时,update方法使用add方法的事务 如果add方法没有事务,update方法有事务,add方法调用update方法时,ad 阅读全文
posted @ 2022-05-21 13:45 DogLeftover 阅读(20) 评论(0) 推荐(0) 编辑
摘要:事务管理方式 编程式 声明式 声明式事务操作 public void accountMoney() { try { // 第一步 开启事务 // 第二步 进行业务操作 // 业务处理 userDao.reduceMoney(); //模拟异常 int i = 10/0; // 业务处理 userDa 阅读全文
posted @ 2022-05-21 13:01 DogLeftover 阅读(30) 评论(0) 推荐(0) 编辑
摘要:简介 事务是数据库操作最基本单元,逻辑上一组操作,要么都成功,如果有一个失败所有操作都失败 事务四个特性(ACID) 原子性 一致性 隔离性 持久性 构建maven项目,导入依赖 <dependencies> <!-- 基础 --> <dependency> <groupId>commons-log 阅读全文
posted @ 2022-05-21 09:48 DogLeftover 阅读(25) 评论(0) 推荐(0) 编辑
摘要:持久层接口 public interface BookDao { public void add(Book book); //添加图书 public void update(Book book); //修改图书 public void delete(int id); //删除图书 public in 阅读全文
posted @ 2022-05-21 09:13 DogLeftover 阅读(16) 评论(0) 推荐(0) 编辑
摘要:数据接口同步 1、业务场景:一般系统,多数会与第三方系统的数据打交道,而第三方的生产库,并不允许我们直接操作。在企业里面,一般都是通过中间表进行同步,即第三方系统将生产数据放入一张与其生产环境隔离的另一个独立的库中的独立的表,再根据接口协议,增加相应的字段。而我方需要读取该中间表中的数据,并对数据进 阅读全文
posted @ 2022-05-18 09:15 DogLeftover 阅读(20) 评论(0) 推荐(0) 编辑
摘要:jvm内存模型 硬件内存模型 处理器 --> 高速缓存 --> 缓存一致性协议 --> 主存 java内存模型 线程 <--> 工作内存 <--> save和load <--> 主存 java内存间的交互操作 (1)lock(锁定):作用于主内存的变量,把一个变量标记为一条线程独占状态 (2)unl 阅读全文
posted @ 2022-05-17 11:17 DogLeftover 阅读(18) 评论(0) 推荐(0) 编辑
摘要:案例1 public class ExecutorDemo { public static void main(String[] args) { // 方式1 ExecutorService executorService = Executors.newCachedThreadPool(); // 阅读全文
posted @ 2022-05-16 16:39 DogLeftover 阅读(22) 评论(0) 推荐(0) 编辑
摘要:简介 AbortPolicy:该策略直接抛出异常,阻止系统正常工作 CallerRunsPolicy:只要线程池没有关闭,该策略直接在调用者线程中,执行当前被丢弃的任务 DiscardPolicy:直接把任务丢弃 DiscardOldestPolicy:丢弃最老的一个请求(任务队列里面的第一个),再 阅读全文
posted @ 2022-05-16 16:20 DogLeftover 阅读(15) 评论(0) 推荐(0) 编辑
摘要:简介 corePoolSize:核心线程池大小 cSize maximumPoolSize:线程池最大容量 mSize keepAliveTime:当线程数量大于核心时,多余的空闲线程在终止之前等待新任务的最大时间 unit:时间单位 workQueue: 工作队列 nWorks ThreadFac 阅读全文
posted @ 2022-05-16 15:46 DogLeftover 阅读(41) 评论(0) 推荐(0) 编辑
摘要:简介 1、诸如 Web 服务器、数据库服务器、文件服务器或邮件服务器之类的许多服务器应用程序都面向处理来自某些远程来源的大量短小的任务。请求以某种方式到达服务器,这种方式可能是通过网络协议(例如 HTTP、FTP )、通过 JMS队列或者可能通过轮询数据库。不管请求如何到达,服务器应用程序中经常出现 阅读全文
posted @ 2022-05-16 15:34 DogLeftover 阅读(36) 评论(0) 推荐(0) 编辑
摘要:简介 1、用于交换数据 2、它提供一个同步点,在这个同步点两个线程可以交换彼此的数据。这两个线程通过exchange方法交换数据,如果第一个线程先执行exchange方法,它会一直等待第二个线程也执行exchange,当两个线程都到达同步点时,这两个线程就可以交换数据,将本线程生产出来的数据传递给对 阅读全文
posted @ 2022-05-16 12:00 DogLeftover 阅读(70) 评论(0) 推荐(0) 编辑
摘要:简介 控制并发数量 使用场景:接口限流 案例1 import java.util.concurrent.Semaphore; public class SemaphoreDemo { public static void main(String[] args) { // 指定个数 Semaphore 阅读全文
posted @ 2022-05-16 11:53 DogLeftover 阅读(22) 评论(0) 推荐(0) 编辑
摘要:简介 1、允许一组线程相互等待达到一个公共的障碍点,之后再继续执行 2、跟countDownLatch的区别 CountDownLatch一般用于某个线程等待若干个其他线程执行完任务之后,它才执行;不可重复使用 CyclicBarrier一般用于一组线程互相等待至某个状态,然后这一组线程再同时执行; 阅读全文
posted @ 2022-05-16 10:53 DogLeftover 阅读(21) 评论(0) 推荐(0) 编辑
摘要:简介 await() 进入等待的状态 countDown() 计数器减一 代码案例 import java.util.concurrent.CountDownLatch; public class CountDownLatchDemo { public static void main(String 阅读全文
posted @ 2022-05-16 10:40 DogLeftover 阅读(16) 评论(0) 推荐(0) 编辑
摘要:简介 在并发编程中,LinkedBlockingQueue使用的非常频繁。因其可以作为生产者消费者的中间商 add() 实际上调用的是offer,区别是在队列满的时候,add会报异常 offer() 对列如果满了,直接入队失败 put("111") 在队列满的时候,会进入阻塞的状态 remove() 阅读全文
posted @ 2022-05-15 22:42 DogLeftover 阅读(41) 评论(0) 推荐(0) 编辑
摘要:同步容器 Vector、HashTable: JDK提供的同步容器类 Collections.synchronizedXXX 本质是对相应的容器进行包装 同步容器类的缺点: 在单独使用里面的方法的时候,可以保证线程安全,但是,复合操作需要额外加锁来保证线程安全 使用Iterator迭代容器或使用使用 阅读全文
posted @ 2022-05-15 22:03 DogLeftover 阅读(69) 评论(0) 推荐(0) 编辑
摘要:简介 1、一度认为原子是不可分割的最小单位,故原子类可以认为其操作都是不可分割 2、对多线程访问同一个变量,我们需要加锁,而锁是比较消耗性能的,JDk1.5之后,新增的原子操作类提供了一种用法简单、性能高效、线程安全地更新一个变量的方式,这些类同样位于JUC包下的atomic包下,发展到JDk1.8 阅读全文
posted @ 2022-05-15 16:39 DogLeftover 阅读(84) 评论(0) 推荐(0) 编辑
摘要:简介 1、可以在一个锁里面,存在多种等待条件 2、主要的方法: await 挂起 signal 随机唤醒1个线程 signalAll 唤醒所有等待的线程 代码案例 /** * 生产者线程 */ public class Producer implements Runnable{ private Me 阅读全文
posted @ 2022-05-15 10:20 DogLeftover 阅读(44) 评论(0) 推荐(0) 编辑
摘要:简介 1、线程变量,是一个以ThreadLocal对象为键、任意对象为值的存储结构。为每个线程单独存放一份变量副本,也就是说一个线程可以根据一个ThreadLocal对象查询到绑定在这个线程上的一个值。只要线程处于活动状态并且ThreadLocal实例可访问,那么每个线程都拥有对其本地线程副本的隐式 阅读全文
posted @ 2022-05-15 08:46 DogLeftover 阅读(23) 评论(0) 推荐(0) 编辑
摘要:简介 1、使用场景:线程A执行到一半,需要一个数据,这个数据需要线程B去执行修改,只有B修改完成之后,A才能继续操作 2、线程A的run方法里面,调用线程B的join方法,这个时候,线程A会等待线程B运行完成之后,再接着运行 代码案例 public class Main { public stati 阅读全文
posted @ 2022-05-15 08:31 DogLeftover 阅读(26) 评论(0) 推荐(0) 编辑
摘要:简介 以内存为媒介,用于线程之间的数据传输 面向字节:PipedOutputStream、PipedInputStream 面向字符:PipedReader、PipedWriter 代码案例 public class Reader implements Runnable{ // 注入输入流 priv 阅读全文
posted @ 2022-05-15 08:19 DogLeftover 阅读(23) 评论(0) 推荐(0) 编辑
摘要:wait、notify、notifyAll 简介 1、在多线程环境下,有时候一个线程的执行,依赖于另外一个线程的某种状态的改变,这个时候,我们就可以使用wait与notify或者notifyAll 2、wait跟sleep的区别:wait会释放持有的锁,而sleep不会,sleep只是让线程在指定的 阅读全文
posted @ 2022-05-14 21:46 DogLeftover 阅读(14) 评论(0) 推荐(0) 编辑
摘要:简介 1、一般应用,都是读多写少,ReentrantReadWriteLock 因读写互斥,故读时阻塞写,因而性能上上不去。可能会使写线程饥饿 2、StampedLock的特点 所有获取锁的方法,都返回一个邮戳(Stamp),Stamp为0表示获取失败,其余都表示成功; 所有释放锁的方法,都需要一个 阅读全文
posted @ 2022-05-14 17:09 DogLeftover 阅读(94) 评论(0) 推荐(0) 编辑
摘要:简介 1、锁降级:写线程获取写入锁后可以获取读取锁,然后释放写入锁,这样就从写入锁变成了读取锁,从而实现锁降级的特性 2、锁降级之后,写锁并不会直接降级成读锁,不会随着读锁的释放而释放,因此需要显式地释放写锁 3、锁降级的应用场景:用于对数据比较敏感,需要在对数据修改之后,获取到修改后的值,并进行接 阅读全文
posted @ 2022-05-14 16:29 DogLeftover 阅读(209) 评论(0) 推荐(0) 编辑
摘要:查看案例 public void inCreate() { writeLock.lock(); try { i++; Thread.sleep(500L); j++; } catch (InterruptedException e) { e.printStackTrace(); }finally { 阅读全文
posted @ 2022-05-14 15:45 DogLeftover 阅读(28) 评论(0) 推荐(0) 编辑
摘要:查看类的关系 查看读锁方法 public void out(){ readLock.lock(); try { System.out.println(Thread.currentThread().getName()+"i的值 》"+i + "j的值 》"+j); }finally { readLoc 阅读全文
posted @ 2022-05-14 15:25 DogLeftover 阅读(21) 评论(0) 推荐(0) 编辑
摘要:查看源码 # ctrl + 点击ReentrantReadWriteLock abstract static class Sync extends AbstractQueuedSynchronizer { private static final long serialVersionUID = 63 阅读全文
posted @ 2022-05-14 14:34 DogLeftover 阅读(19) 评论(0) 推荐(0) 编辑
摘要:读写锁特性 特性:写写互斥、读写互斥、读读共享 锁降级:写线程获取写入锁后可以获取读取锁,然后释放写入锁,这样就从写入锁变成了读取锁,从而实现锁降级的特性 案例1 public class ReentrantReadWriteLockDemo { private int i = 0; private 阅读全文
posted @ 2022-05-14 13:33 DogLeftover 阅读(33) 评论(0) 推荐(0) 编辑
摘要:案例 public class ReentrantLockDebugDemo { // 变量i private int i = 0; // new1个reentrantLock private ReentrantLock reentrantLock = new ReentrantLock(); // 阅读全文
posted @ 2022-05-14 13:07 DogLeftover 阅读(24) 评论(0) 推荐(0) 编辑
摘要:公平锁与非公平锁的区别 公平锁:所有线程都老老实实排队 非公平锁:只要有机会,就先尝试抢占资源 非公平锁的弊端 可能导致后面排队等待的线程等不到相应的cpu资源,从而引起线程饥饿 源码解析 public class ReentrantLockDemo { public static void mai 阅读全文
posted @ 2022-05-14 11:53 DogLeftover 阅读(46) 评论(0) 推荐(0) 编辑
摘要:代码案例 public class ReentrantLockDemo { public static void main(String[] args) { ReentrantLock reentrantLock = new ReentrantLock(); reentrantLock.lock() 阅读全文
posted @ 2022-05-14 10:47 DogLeftover 阅读(19) 评论(0) 推荐(0) 编辑
摘要:锁的分类 1、自旋锁: 线程状态及上下文切换消耗系统资源,当访问共享资源的时间短,频繁上下文切换不值得。jvm实现,使线程在没获得锁的时候,不被挂起,转而执行空循环,循环几次之后,如果还没能获得锁,则被挂起 2、阻塞锁:阻塞锁改变了线程的运行状态,让线程进入阻塞状态进行等待,当获得相应的信号(唤醒或 阅读全文
posted @ 2022-05-13 18:46 DogLeftover 阅读(76) 评论(0) 推荐(0) 编辑
摘要:参考1 参考2 案例地址 创建远程仓库 生成token Settings->Developer settings->Personal access tokens 报错 Error creating blob: Git Repository is empty. (409) # 解决方案:远程仓库中没有 阅读全文
posted @ 2022-05-13 17:03 DogLeftover 阅读(57) 评论(0) 推荐(0) 编辑
摘要:解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 <property name="dynamic.classpath" value="true" /> # 完整如下 ... < 阅读全文
posted @ 2022-05-12 15:58 DogLeftover 阅读(59) 评论(0) 推荐(0) 编辑
摘要:参考1 参考2 参考3 参考4 导入依赖 <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>aws-sdk-java</artifactId> <version>2.14.26</version> </depende 阅读全文
posted @ 2022-05-12 15:44 DogLeftover 阅读(117) 评论(0) 推荐(0) 编辑
摘要:参考1 参考2 参考3 下载jar到本地 jave 导入本地仓库 mvn install:install-file -Dfile=jave-1.0.2.jar -DgroupId=joinery -DartifactId=jave -Dversion=1.0.2 -Dpackaging=jar 工程 阅读全文
posted @ 2022-05-12 11:02 DogLeftover 阅读(37) 评论(0) 推荐(0) 编辑
摘要:mvn install:install-file -Dfile=aliyun-java-vod-upload-1.4.14.jar -DgroupId=com.aliyun -DartifactId=aliyun-sdk-vod-upload -Dversion=1.4.14 -Dpackaging 阅读全文
posted @ 2022-05-12 09:58 DogLeftover 阅读(18) 评论(0) 推荐(0) 编辑
摘要:线程安全 当多个线程访问某个类,不管运行时环境采用何种调度方式或者这些线程如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类为线程安全的 新建线程不安全操作的案例类 public class UnSafeThread { private static 阅读全文
posted @ 2022-05-11 17:20 DogLeftover 阅读(15) 评论(0) 推荐(0) 编辑
摘要:进程与线程的区别 1、进程:是系统进行分配和管理资源的基本单位 2、线程:进程的一个执行单元,是进程内调度的实体、是CPU调度和分派的基本单位,是比进程更小的独立运行的基本单位。线程也被称为轻量级进程,线程是程序执行的最小单位 3、一个程序至少一个进程,一个进程至少一个线程 4、进程有自己的独立地址 阅读全文
posted @ 2022-05-09 14:45 DogLeftover 阅读(28) 评论(0) 推荐(0) 编辑
摘要:并发编程 计算机能运行多个程序,不同的程序在不同的单独的进程中运行 串行与并行 串行是大家排队一个一个来,并行是大家一起上 并发编程目的 摩尔定律:当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍。这一定律揭示了信息技术进步的速度。 让程序充分利用计算 阅读全文
posted @ 2022-05-08 17:51 DogLeftover 阅读(76) 评论(0) 推荐(0) 编辑
摘要:注解的定义 Annotation 是从JDK5.0开始引入的新技术 Annotation的作用 不是程序本身, 可以对程序作出解释 可以被其他程序(比如:编译器等)读取 Annotation的格式 注解是以"@注释名"在代码中存在的 还可以添加一些参数值 , 例如:@SuppressWarnings 阅读全文
posted @ 2022-05-08 17:49 DogLeftover 阅读(15) 评论(0) 推荐(0) 编辑
摘要:计算机网络 把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大,功能强的网络系统,从而使众多的计算机可以方便地互相传递信息,共享硬件,软件,数据信息等资源 tcp/ip模型 ip # 唯一的标识 internet 上的计算机 ( 通信实体 ) # 本地回环地址(hostAddre 阅读全文
posted @ 2022-05-08 13:20 DogLeftover 阅读(24) 评论(0) 推荐(0) 编辑
摘要:签名算法 # 如果小明用自己的私钥加密了一条消息,比如小明喜欢小红,然后他公开了加密消息,由于任何人都可以用小明的公钥解密,从而使得任何人都可以确认小明喜欢小红这条消息肯定是小明发出的,其他人不能伪造这个消息,小明也不能抵赖这条消息不是自己写的 # 私钥加密得到的密文实际上就是数字签名,要验证这个签 阅读全文
posted @ 2022-05-07 19:58 DogLeftover 阅读(136) 评论(0) 推荐(0) 编辑
摘要:密钥交换算法 # 如果我们把a看成甲的私钥,A看成甲的公钥,b看成乙的私钥,B看成乙的公钥 # DH算法的本质就是双方各自生成自己的私钥和公钥,私钥仅对自己可见,然后交换公钥,并根据自己的私钥和对方的公钥,生成最终的密钥secretKey # DH算法通过数学定律保证了双方各自计算出的secretK 阅读全文
posted @ 2022-05-07 19:57 DogLeftover 阅读(847) 评论(0) 推荐(0) 编辑
摘要:对称加密算法 对称加密算法就是传统的用一个密码进行加密和解密 根据算法名称/工作模式/填充模式获取Cipher实例; 根据算法名称初始化一个SecretKey实例,密钥必须是指定长度; 使用SerectKey初始化Cipher实例,并设置加密或解密模式; 传入明文或密文,获得密文或明文。 | 算法 阅读全文
posted @ 2022-05-07 19:39 DogLeftover 阅读(136) 评论(0) 推荐(0) 编辑
摘要:BouncyCastle加密 # 导入bcprov-jdk15on-xxx.jar public class Main { public static void main(String[] args) throws Exception { // 注册BouncyCastle: Security.ad 阅读全文
posted @ 2022-05-07 16:58 DogLeftover 阅读(343) 评论(0) 推荐(0) 编辑
摘要:url编码 Java标准库提供了一个URLEncoder类来对任意字符串进行URL编码 # 加密 public class Main { public static void main(String[] args) { String encoded = URLEncoder.encode("中文!" 阅读全文
posted @ 2022-05-07 14:52 DogLeftover 阅读(48) 评论(0) 推荐(0) 编辑
摘要:简介 序列化:一个对象可以被表示为一个字节序列,该字节序列包括该对象的数据、有关对象的类型的信息和存储在对象中数据的类型 反序列化:将序列化对象写入文件之后,可以从文件中读取出来,并且对它进行反序列化 序列化前提 一个类的对象要想序列化成功,必须满足两个条件: 该类必须实现 java.io.Seri 阅读全文
posted @ 2022-05-07 14:47 DogLeftover 阅读(9) 评论(0) 推荐(0) 编辑
摘要:小程序与普通网页开发的区别 运行环境不同 网页运行在浏览器环境中 小程序运行在微信环境中 开发模式不同 网页的开发模式:浏览器 + 代码编辑器 小程序标准开发模式:申请小程序开发账号、安装小程序开发者工具、创建和配置小程序项目 API 不同 由于运行环境的不同,所以小程序中,无法调用 DOM 和 B 阅读全文
posted @ 2022-05-06 13:47 DogLeftover 阅读(411) 评论(1) 推荐(0) 编辑
摘要:枚举 枚举类型是Java 5中新增特性的⼀部分,它是⼀种特殊的数据类型, 定义枚举类型时使⽤的关键字是enum,与class关键字类似,但前者是定义枚举类型,后者是定义类类型 代码案例 enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, 阅读全文
posted @ 2022-05-05 22:32 DogLeftover 阅读(46) 评论(0) 推荐(0) 编辑
摘要:Object类 Object类位于java.lang包中,java.lang包包含着Java最基础和核⼼的类,在编译时会⾃动导⼊ Object类是所有Java类的祖先,每个类都使⽤ Object 作为超类 # 常用方法 public final native Class<?> getClass() 阅读全文
posted @ 2022-05-05 22:01 DogLeftover 阅读(20) 评论(0) 推荐(0) 编辑
摘要:简介 # 时区:整个地球分为⼆⼗四时区,每个时区都有⾃⼰的本地时间。为了统⼀起⻅,使⽤⼀个统⼀的时间,称为全球标准时间(UTC, Universal Time Coordinated)。TC与格林尼治平均时(GMT, Greenwich Mean Time,也翻译成:格林威治标准时间)差不多⼀样;C 阅读全文
posted @ 2022-05-05 21:07 DogLeftover 阅读(170) 评论(0) 推荐(0) 编辑
摘要:Reader是输⼊字符流的⽗类,它是⼀个抽象类, 部分库不推荐使⽤Reader/Writer int read() ⼀个字符⼀个字符的读,只能⽤来操作⽂本(不能写图⽚ ⾳频 视频) int read(char cbuf[]) 从输⼊字符流中读取⼀定数量的字符,并将其存储在缓冲区数组cbuf中, 返回 阅读全文
posted @ 2022-05-05 15:49 DogLeftover 阅读(22) 评论(0) 推荐(0) 编辑
摘要:IO: Input / Ouput 即输⼊输出 输出流:程序(内存) >外界设备 输⼊流:外界设备 >程序(内存) 处理数据类型分类 字符流:处理字符相关,如处理⽂本数据(如txt⽂件), Reader/Writer 字节流: 处理字节相关,如声⾳或者图⽚等⼆进制,InputStream/Outpu 阅读全文
posted @ 2022-05-04 15:10 DogLeftover 阅读(38) 评论(0) 推荐(0) 编辑
摘要:计算机⽂件(File) 以计算机硬盘为载体存储在计算机上的信息集合,可以是⽂本、图⽚、视频、程序等,⽂件⼀般有拓展名,表示⽂件的类型 ⽂件⽬录 (Directory) # 即是我们⼀般称呼的⽂件夹,为了便于对⽂件进⾏存取和管理 # ⽂件⽬录是由⽂件⽬录项组成的。⽂件⽬录分为⼀级⽬录、⼆级⽬录和多级⽬ 阅读全文
posted @ 2022-05-04 14:42 DogLeftover 阅读(169) 评论(0) 推荐(0) 编辑
摘要:迭代器Iterator Iterator是java中的⼀个接⼝,核⼼作⽤就是⽤来遍历容器的元素,当容器实现了Iterator接⼝后,可以通过调⽤Iterator()⽅法获取⼀个 Iterator对象 由于容器的实现有多种,不同的容器遍历规则不⼀样,⽐如ArrayList/LinkedList/Has 阅读全文
posted @ 2022-05-02 21:20 DogLeftover 阅读(22) 评论(0) 推荐(0) 编辑
摘要:数据结构 # 数据结构(data structure)是带有结构特性的数据元素的集合,它研究的是数据的逻辑结构和数据的物理结构以及它们之间的相互关系,并对这种结构定义相适应的运算,设计出相应的算法,并确保经过这些运算以后所得到的新结构仍保持原来的结构类型 # 简述:数据结构是相互之间存在⼀种或多种特 阅读全文
posted @ 2022-05-02 19:57 DogLeftover 阅读(17) 评论(0) 推荐(0) 编辑
摘要:异常简介 错误:程序运⾏时发⽣的不被期望的事件,阻⽌了程序按照预期正常执⾏ 常⻅程序错误分三类: 编译错误:新⼿最常⻅,没遵循语法规范 运⾏时错误:程序在执⾏时 逻辑错误:程序没有按照预期的逻辑顺序执⾏ Java.lang软件包中有⼀个java.lang.Throwable类,这个类是java中所有 阅读全文
posted @ 2022-05-02 19:55 DogLeftover 阅读(57) 评论(0) 推荐(0) 编辑
摘要:类简介 就是模板,⽤来定义⼀类对象的⽅法和属性,⽐如⼈、学⽣、猫,万物都是有模板,都是可以定义为类。 (类名⾸字⺟⼤写) 对象 类的实例化,⽐如 学⽣这个类实例化,就是 XX同学 # 如下 Student student = new Student(); Cat cat1 = new Cat(); 阅读全文
posted @ 2022-05-02 16:59 DogLeftover 阅读(25) 评论(0) 推荐(0) 编辑
摘要:while 循环 //boolean表达式为true则会⼀直执⾏ while(布尔表达式){ //循环执⾏的内容 } # 如下是死循环: public static void test1(){ int i = 10; while (i<20){ System.out.println("我是循环被执行 阅读全文
posted @ 2022-05-02 16:58 DogLeftover 阅读(38) 评论(0) 推荐(0) 编辑