- 博客(134)
- 资源 (9)
- 收藏
- 关注
原创 JUC 之 CompletableFuture
至此引出 CompletableFuture,以声明式的方式优雅处理这些需求,Future 能干的,CompletableFuture 都能干。简单的业务场景使用 Future 完全 OK。
2023-02-25 15:43:31
543
原创 JUC 之 线程阻塞工具 LockSupport
每个线程对象中都有一个中断标识位,用于表示线程是否被中断;通过调用线程对象的 interrupt 方法将该线程的标识位设为 true,可以在别的线程中调用,也可以在自己的线程中调用。中断只是一种协作协商机制,Java 没有给中断增加任何语法,中断的过程完全需要程序员自己实现。若要中断一个线程,你需要手动调用该线程的 interrupt 方法,接着你需要自己写代码不断地检测当前线程的标识位,如果为 true,表示别的线程请求这条线程中断,此时该做什么需要你自己写代码实现。以上两个对象使用的限制条件。
2023-02-25 15:42:37
393
原创 JUC 之 比较交换 CAS
没有 CAS 之前,多线程环境下不使用原子类保证线程安全 i++,只能通过 synchronized 加锁的方式,高并发多写情况下,性能影响很大;使用 CAS 之后,可以使用原子类(通过版本号戳记流水原子引用(AtomicStampedReference)可解决 ABA 问题。)保证线程安全,类似于。
2023-02-25 15:39:46
522
原创 JUC 之 Synchronized 与 锁升级
Java 5 以前,只有 Synchronized,这是操作系统级别的重量级操作(需要用户态和内核态之间的切换为什么每个对象都可以成为一个锁?Java 对象是天生的 Monitor,每一个 Java 对象都有成为 Monitor 的潜质,因为在 Java 的设计中,每一个 Java 对象都自带一把内部锁 或者 Monitor 锁Monitor 的本质是依赖底层操作系统 Mutex Lock 实现,操作系统实现线程之间的切换需要从用户态到内核态的转换,成本极高。
2023-02-25 15:38:38
221
原创 JUC 体系的基石——AQS
抽象队列同步器;volatile + cas 机制实现的锁模板,保证了代码的同步性和可见性,而 AQS 封装了线程阻塞等待挂起,解锁唤醒其他线程的逻辑。AQS 子类只需要根据状态变量,判断是否可获取锁,是否释放锁,使用 LockSupport 挂起、唤醒线程即可定义:是用来实现锁或者其他同步器组件的公共基础部分的抽象实现,是重量级基础框架及整个 JUC 体系的基石,主要用于解决锁分配的问题官网:为实现阻塞锁和相关的同步器提供一个框架,依赖于先进先出的一个等待;
2023-02-25 15:34:04
308
原创 JUC 之 Java 内存模型 JMM
读屏障(Load Memory Barrier):在读指令之前插入读屏障,让工作内存或 CPU 高速缓存中的缓存数据失效,重新回到主内存中获取最新数据;处理器在读屏障之后的读操作,都是在读屏障之后执行,保证 Load 屏障指令之后的读取数据指令一定能够读到最新数据。写屏障(Store Memory Barrier): 在写指令之后插入写屏障,强制把写缓冲区的数据刷回到主内存中,告诉处理器在写屏障之前将所有存储在缓存中的数据同步到主内存。保证可见性和有序性(禁重排)
2022-12-08 18:32:13
332
原创 TiDB 基本概念 + 实操
官方文档:https://docs.pingcap.com/zh/tidb/stable/overview新一代数据技术:1. ORDBMS:面向对象数据库技术(PostGreSQL)2. NoSQL:非结构化数据库技术- 键值存储数据库:Redis- 列式储存数据库:HBase- 文档型数据库:MongoDB- 图形数据库:Neo4J3. NewSQL:这类数据库不仅具有NoSQL对海量数据的存储管理能力,还保持传统数据库支持ACID和SQL等特性。如:TiDB、OceanBase、Sp
2022-05-27 15:52:09
712
原创 ShardingSphere 基本概念+实操
官方文档:https://shardingsphere.apache.org/document/5.1.0/cn/overview/#shardingsphere-sidecartodo—— ShardingSphere 简介是一套开源的分布式数据库中间件的解决方案三个产品:Sharding-JDBC、Sharding-Proxy、Sharding-Sidecar定位为关系型数据库中间件,合理在分布式环境下使用关系型数据库操作—— 分库分表数据库数据量不可控,随着时间和业务发展,造成表里面
2022-05-22 11:33:39
4980
原创 大数据之 Hive 理论概念知识
——Hive 基本概念什么是HiveHive:由 Facebook 开源用于解决海量结构化日志的数据统计(目前交由 Apache 基金会)Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能本质:将 HQL 转换为成 MapReduce 程序Hive 处理的数据存储在 HDFSHive 分析数据底层的默认实现 是 MapReduce执行程序运行在 Yarn 上优缺点优点操作接口采用类 SQL 语法,提供快速开发的能力
2022-04-24 15:21:14
280
原创 大数据之 HBase 理论知识
——HBase 简介定义HBase 是一种 分布式、可扩展、支持海量数据存储的 NoSQL 数据库数据模型逻辑上,HBase 的数据模型同关系型数据库很类似,数据存储在一张表中,有行有列。但从底层物理存储结构(K-V)来看,HBase 更像是一个 multi-dimensional-map(多维 map)逻辑结构物理存储结构- 名词解释Name Space:命名空间,类似于关系型数据库的 database 概念,每个命名空间下有多个表。HBase 有两个自带的命名空间,分别是 hbas
2022-04-17 11:14:32
384
原创 大数据之 Hadoop 基本概念
——大数据技术生态体系Sqoop:Sqoop 主要用户在 Hadoop、Hive 与传统的数据库(MySQL)间进行数据的传递,可以将一个关系型数据库中的数据导进到 Hadoop 的 HDFS 中,也可以将 HDFS 的数据导进到关系型数据库中Flume :Flume 是一个高可用的、高可靠的、分布式的海量日志采集、聚合和传输的系统,Flume 支持在日志系统中订制各类数据发送方,用于收集数据Kafka:Kafka 是一种高吞吐量的分布式发布订阅消息系统Spark:Spark 是当前最流行的开源
2022-03-24 15:27:06
7748
3
原创 SpringMVC注解路径Ant通配符和Servlet注解路径Ant通配符用法
SpringMVC相关注解@GetMapping 为例? 任意一个字符* 任意多个字符** 匹配多层路径Servlet注解@WebServlet(urlPatterns = “/test/*”)* 任意多个字符
2022-02-25 13:44:56
340
2
原创 cannot spawn .git/hooks/commit-msg: No such file or directory
问题描述:IDEA 提交代码时报错:cannot spawn .git/hooks/commit-msg: No such file or directory解决办法:删除项目文件夹下 .git/hooks/commit-msg 文件
2022-02-23 18:42:48
7419
原创 Java 防止XSS攻击(Spring boot & Spring 方式)
——SpringBootapplication.properties 开启xss配置# XSS配置xss.enabled=true# 不过滤路径, 以逗号分割xss.excludes=/open/*# 过滤路径, 逗号分割xss.urlPatterns=/*过滤器配置package com.xlj.tools.config;import cn.hutool.core.util.StrUtil;import com.fasterxml.jackson.databind.Obj
2022-02-17 16:58:00
1708
原创 Java ThreadPoolExecutor线程池具体参数设置
——重要参数corePoolSize:核心线程数核心线程数会一直存活,即使没有任务执行当线程数小于核心线程数,即使有线程空闲,线程池也会有限创建新线程处理设置 allowCoreThreadTimeout = true (默认为false) 时,核心线程会超时关闭queueCapacity:任务队列容量(阻塞队列)当核心线程数达到最大时,新任务会放在队列中排队等待执行maxPoolSize:最大线程数当线程数>=corePoolSize,且任务队列已满时,线程池会
2022-01-25 11:22:50
644
原创 java Oauth2微博开放平台登录授权接入
——前期准备微博开放平台登录账号,地址:https://open.weibo.com/提交身份认证(个人真实姓名、身份证号、身份证照片)审核需要3天左右注册应用填写应用名(选择网页应用)注册成功后会有相关信息(App Key、App Secret 为关键)——整合到项目中相关文档参考:https://open.weibo.com/wiki/%E6%8E%88%E6%9D%83%E6%9C%BA%E5%88%B6%E8%AF%B4%E6%98%8E引导需要授权的用户到如下地址:htt
2022-01-24 09:59:38
923
1
原创 SpringBoot 整合阿里云存储OSS
此次整合采用 ali-OSS 提供的服务端签名后直传的方案——原理用户发送上传 Policy 请求到应用服务器应用服务器返回上传 Policy 和签名给用户用户直接上传数据到 OSS——整合pom.xml <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-al.
2022-01-14 14:23:02
667
原创 密码学的基本理论
——古典密码学替换法移位法凯撒密码(凯撒加密):把26个字母进行左或者右的位移,最多只能移动25位破解:频率分析法(概率论)——近代密码学恩尼格玛密码机:核心使用的是 移位法和替换法破解:人工智能之父 图灵——现代密码学散列函数(哈希函数)MD5,SHA-1,SHA-256对称加密:使用相同的加密密钥和解密密钥流加密:一个一个一次加密块加密 :分组分块加密特点:加密速度快密文不可逆,密钥不能泄露ASCII 找不到对应字符,会出现乱码通常结合 ba
2022-01-04 15:29:52
12117
原创 MySQL-this is incompatible with sql_mode=only_full_group_by解决方法
——直接上手解决办法windows系统修改《my.ini》 配置文件,加上以下配置sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTIONLinux系统修改《my.cnf》 配置文件(在etc文件夹下),加上以下配置sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_
2021-12-23 15:08:44
123
原创 Springboot集成支付宝沙箱支付
——环境 & 工具密钥工具:https://miniu.alipay.com/keytool/create沙箱环境:https://open.alipay.com/platform/developerIndex.htm(没有账号需注册)登录进入《开发工具推荐》下的沙箱:https://open.alipay.com/platform/appDaily.htm注意点:APPID应用公钥 & 私钥支付宝公钥沙箱钱包沙箱账号(买家 & 卖家)内网穿透工具:
2021-12-20 16:23:30
198
原创 Windows10彻底关闭自动更新
——windows + R:输入 gpedit.msc,回车本地组策略器——》管理模板——》windows组件——》windows更新找到“配置自动更新”,右键禁用——此电脑——》右键——》管理“服务和应用程序”——》服务——》windows update——》右键禁用windows update 属性——》恢复——》第一、二次失败——》无操作——系统设置——》更新安全——》高级选项——关闭自动下载更新传递优化——》高级选项——》上传和下载都拉到最低...
2021-11-06 10:50:46
107
原创 浏览器源代码下载图片原图,手把手教学
浏览器打开网页:https://www.behance.net/gallery/127832793/MESSA-BOUTIQUE-ALMATY?tracking_source=curated_galleries_architecture按F12出现以下界面点击选中箭头点击后再点击所想下载的图片,出现以下界面展开元素标签,出现以下界面复制以上选中的链接,浏览器打开新窗口访问即可完成下载...
2021-10-19 16:21:33
12398
原创 Sublime 仅中文字符乱码解决(其他方法已测试,没能解决个人问题)
问题:输入中文符号 “,” 乱码解决方法首选项——》设置修改为一下内容{"font_face":"微软雅黑","font_size": 11,"ignored_packages":["Vintage"],"save_on_focus_lost": false}
2021-10-16 21:53:01
123
原创 Windows搭建Redis哨兵模式
——简介为了保证高可用,通常采用一主二从三哨兵,共6个节点;此次为了方便简洁,只实现的一主一从二哨兵进行搭建哨兵模式(主备模式)是在主从复制基础上实现自动切换,有点类似于zookeeper中的选举主从模式需要手动实现切换 SLAVEOF no one,且master重新加入时,与当前master无关系哨兵模式实现自动切换,当上一个master重新加入时,成为现master的slave——搭建目录Redis-masterRedis-slaveRedis-sentinel1Redis-
2021-09-24 13:43:16
669
1
原创 Docker 基本理论知识
docker 官网:https://www.docker.com/docker 中文官网:https://www.docker-cn.com/Docker Hub 官网:https://hub.docker.com/——简介基于 Go 语言实现的云开源项目目标:Build、Ship and Run Any App,Anywhere将应用运行在 Docker 容器上,Docker 容器在任何操作系统都是一致的,实现跨平台、跨服务器通过对应用组件的封装、分发、部署、运行等管理,使APP、web应
2021-09-22 15:57:29
140
原创 mysql常见查询操作sql脚本练习(附建表sql)
-- 建表语句CREATE TABLE `student`( `id` int(10) DEFAULT NULL COMMENT '学号', `name` varchar(10) DEFAULT NULL COMMENT '姓名', `date` date DEFAULT NULL COMMENT '出生日期', `sex` varchar(2) DEFAULT NULL COMMENT '性别') ENGINE = InnoDB DE
2021-09-14 09:04:07
424
原创 MySQL数据库高级 & SQL优化
标识列(自增长列)可以不用手动插入值,系统提供默认的序列值标识列不是必须和主键搭配的,但要求是个key(主键、唯一索引、外键)一个表至多有一个标识列标识列的数据类型只能是数值型主键和唯一索引的区别保证唯一性是否允许为空一个表可以有多少个是否可组合主键√×至多有一个√唯一√√(但只允许一个为null)可以有多个√存储过程和函数类似 Java 中的方法,一组预先编译好的SQL语句,批处理语句提高代码的重用性简化操作减少了编译次数并且
2021-09-09 15:05:08
102
原创 windows下查找端口并杀死进程(cmd命令)
根据端口号查找进程netstat -aon|findstr "8080"根据PID杀死进程taskkill /F /PID 13152附根据PID查看对应具体的进程tasklist|findstr "13152"注,本人已踩坑RabbitMQ刚安装完成,第一次启动遇到端口被占用,需要反复杀死端口对应的进程...
2021-08-20 16:36:54
240
原创 常见SQL操作语句(包含建表、插入数据)
https://blog.csdn.net/u010565545/article/details/100785261/-- 建表语句CREATE TABLE `student`( `id` int(10) DEFAULT NULL COMMENT '学号', `name` varchar(10) DEFAULT NULL COMMENT '姓名', `date` date DEFAULT NULL COMMENT '出生日期', `sex`
2021-08-13 20:08:31
1072
原创 Java经典高频面试问题
Java基础https://mp.weixin.qq.com/s/-xFSHf7Gz3FUcafTJUIGWQ1. 线程和进程的区别进程:是系统进行资源分配和调度的基本单位作用是使程序能够并发执行提高资源利用率和吞吐率;创建、销毁、切换会产生大量的时间和空间的开销,数量不能太多;线程:是进程的一个实体,使操作系统有更高的并发性一个进程中至少有一个线程2. synchronized 的原理Java提供的原子性内置锁(监视器锁),排他锁使用synchronized之后,会在编译
2021-08-07 16:46:25
144
原创 sql查询部门下的所有子部门(mybatis用法)
select @pids := 6 6 为所要查询部门的idselect id, department_namefrom ( select t1.id, t1.department_name, if(find_in_set(parent_department_id, @pids) > 0, @pids := concat(@pids, ',', id),
2021-08-03 15:51:08
4144
JUC2019.6V1.5.zip
2020-10-29
阿里巴巴代码规范.zip
2020-10-17
springcloud学习笔记.zip
2020-09-17
Erlang+RabbitMQ.zip
2020-09-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人