自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 资源 (2)
  • 收藏
  • 关注

原创 WebFlux简单测试

响应式的web框架,不同于传统的WebMVC,WebFlux其内部使用Netty,基于异步和事件驱动,用少量Loop线程处理request、response io操作,而业务中阻塞的操作交由Work线程处理。总的来说客户端感知(响应时间)没什么差别,但是服务器端线程数能减少不少,适合网关这种io密集型服务。

2024-02-18 01:33:22 262

原创 踩坑记录:java连接ssh的问题

手里有个CS架构的老系统,服务端要用SSH的方式传文件。没想到写了两天!遇到一堆问题,于是记录下。(老系统真恶心啊!

2023-12-14 17:44:06 427

原创 踩坑记录:SpringBoot集成Dubbo和Nacos版本问题

最近在整理依赖,原本用的springcloud提供的nacos,看到老早都不更新了,而且有些包冲突,就换了ali的,用的spring-boot版本是2.3.9.RELEASE,对应spring-cloud版本是Hoxton.SR12,dubbo用的apache的2.7.11,nacos用的alibaba-cloud的2.2.6.RELEASE。

2023-12-06 11:54:07 627

原创 踩坑记录:xorm的sql()函数后无法使用FindAndCount()

懒省事想用 sql 写个有连表操作的分页查询语句,看到 xorm 中 sql 要和代码紧密纠缠在一起就不爽,所有就想用 xorm 中的 session.SQL(sql).Limit(size, offset).FindAndCount() 方法解决。不曾想。。。

2023-07-12 16:27:51 1179

原创 Linux安装IPFS

删除引导程序节点的默认条目。因为是部署私有网络,所以需要移除原有的引导程序节点,如果不删除,启动后就会同步IPFS主网的数据。第一个节点之后的节点,启动前都要添加引导程序节点,与第一个节点的id建立起联系。查看第一个节点的peer id。通过节点一上传一个txt文件。创建节点目录(单机多节点)

2022-12-08 15:01:03 1021 1

原创 Stream源码笔记(一)

Stream源码笔记:ReferencePipeline、AbstractPipeline、Sink、ReduceOps、ReducingSink

2022-04-11 14:32:07 1237 1

原创 Java多线程学习笔记(二)

一、Future接口java.util.concurrent包下,有以下方法:cancel(boolean var1):取消Callable任务,未开始或已完成返回false,boolean参数表示是否中断执行中的Callable任务isCanceled():判断Callable任务是否取消了isDone():判断是否完成get():获得Callable的返回值get(long time, TimeUnit unit):设置超时时间,防止无限时间的等待二、CompletionStage接口

2022-02-28 16:36:37 781

原创 ECDSA密钥

ECDSA密钥一、对称加密算法  指加密和解密使用相同密钥的加密算法。对称加密算法用来对敏感数据等信息进行加密,常用的算法包括DES、3DES、AES、DESX、Blowfish、、RC4、RC5、RC6。二、非对称加密算法  指加密和解密使用不同密钥的加密算法,也称为公私钥加密,公钥是公开的,私钥是私有的。   1.公钥加密,私钥解密:  当Alice给Bob写信,不希望信件被别人解读,可以使用Bob公开的公钥对信件加密。Bob收到信件后,用自己的私钥解密即可。  2.私钥签名,公钥验证:

2022-02-23 16:57:14 1437

原创 踩坑记录:spring事务和锁冲突,导致锁失效问题

一、背景前言前一段做的一个抢购秒杀的功能,用户只能限量抢到一个商品,但是后来发现有个用户抢到了两个商品?!排查问题时发现,是spring事务提交和redis锁释放的顺序,与预想中不一样导致的。二、问题描述@Transactional(rollbackFor = Exception.class)public void test() { if (!redisLock.tryLock("lock_1", "123", 5L, TimeUnit.SECONDS)) { throw new Ser

2022-01-07 15:48:08 2393

原创 踩坑记录:缓存导致事务提交报错Error committing transaction. Cause: java.lang.NullPointerException

一、问题描述@Transactional 包裹的业务代码中,先做了 select 查询,后 insert 插入数据,由于 mapper 使用了 CaffeineCache 做缓存,所以在 insert 后,更新了缓存,select 那里就报错了(具体为什么,有知道的大佬麻烦解答下困惑)二、解决方案1、select 语句不使用缓存,加 @Options(useCache = false)2、使用 redis 做缓存,redis 没有这个问题...

2022-01-06 13:44:11 1479

原创 Redis实现商品抢购秒杀

Redis 实现商品抢购秒杀一、 写在前面√\color{#FF7D00}{√}√  写出来,像是单例写法里的双重检查√\color{#FF7D00}{√}√  大佬们如果有更好的方法或建议,可以提一提,博主萌新一个二、代码// 商品列表collectionIdList = new ArrayList<>();static { collectionIdList.add(1L); collectionIdList.add(2L); collectionIdL

2022-01-05 16:57:25 1159

原创 list转tree

/** * list tree node * @Author: zilong * @Date: 2021/11/25 */@Datapublic class Node<T> { private T id; private T parentId;}/** * tree node * @Author: zilong * @Date: 2021/11/24 */@Datapublic class TreeNode<T, R extends TreeNo

2021-11-26 14:34:23 388

原创 踩坑记录:for update死锁问题

问题描述:事务1事务2begin;begin;select * from sys_test where id = ‘1’ for update;select * from sys_test where id = ‘2’ for update;insert into sys_test(id) values(1);锁等待中insert into sys_test(id) values(2);锁等待解除死锁,事务2的事务被回滚解决:r

2021-11-25 16:34:29 1347

原创 canvas学习笔记(一):弹跳的小球

<!DOCTYPE html><html><head> <meta charset="utf-8"> <title></title></head><body><canvas id="cont" width="500" height="500">您的浏览器版本过低!</canvas><script> /* 固定-start */ var canvas.

2021-09-13 16:04:14 125

原创 Seata源码学习笔记(一):重写 SPI

一、common下的loader1、SPI 扩展(EnhancedServiceLoader)1)、测试@Testpublic void testLoadByClassAndClassLoader() { // 实际就是通过反射,创建对象 Hello load = EnhancedServiceLoader.load(Hello.class, Hello.class.getClassLoader()); Assertions.assertEquals(load.say(), "Ol

2021-08-18 15:17:09 298

原创 浏览器工作原理与实践学习笔记(三):渲染流程(上)

一、HTML、CSS 和 JavaScript二、渲染流水线按照渲染的时间顺序,流水线可分为如下几个子阶段:构建 DOM 树、样式计算、布局阶段、分层、绘制、分块、光栅化和合成。开始每个子阶段都有其输入的内容;然后每个子阶段有其处理过程;最终每个子阶段会生成输出内容。三、构建 DOM 树为什么要构建 DOM 树呢?这是因为浏览器无法直接理解和使用 HTML,所以需要将 HTML 转换为浏览器能够理解的结构——DOM 树。图中的 document 就是 DOM 结构,可以看到,DOM

2021-08-18 10:30:32 78

原创 浏览器工作原理与实践学习笔记(二):从输入 URL 到页面展示

一、流程首先,浏览器进程接收到用户输入的 URL 请求,浏览器进程便将该 URL 转发给网络进程。然后,在网络进程中发起真正的 URL 请求。接着网络进程接收到了响应头数据,便解析响应头数据,并将数据转发给浏览器进程。浏览器进程接收到网络进程的响应头数据之后,发送“提交导航 (CommitNavigation)”消息到渲染进程;渲染进程接收到“提交导航”的消息之后,便开始准备接收 HTML 数据,接收数据的方式是直接和网络进程建立数据管道;最后渲染进程会向浏览器进程“确认提交”,这是告诉浏览

2021-08-17 15:49:25 105

原创 浏览器工作原理与实践学习笔记(一):Chrome 进程架构

一、单进程浏览器时代早在 2007 年之前,市面上浏览器都是单进程的。单进程浏览器的架构如下图所示:问题1:不稳定早期浏览器需要借助于插件来实现诸如 Web 视频、Web 游戏等各种强大的功能,但是插件是最容易出问题的模块,并且还运行在浏览器进程之中,所以一个插件的意外崩溃会引起整个浏览器的崩溃。除了插件之外,渲染引擎模块也是不稳定的,通常一些复杂的 JavaScript 代码就有可能引起渲染引擎模块的崩溃。和插件一样,渲染引擎的崩溃也会导致整个浏览器的崩溃。问题 2:不流畅所有页面的渲染模块

2021-08-17 15:10:36 200

转载 windows server 2012 R2 安装 vc2015 报错 0x80240017

windows server 2012 R2 安装 vc2015 报错 0x80240017   首先到这里下载文件 https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=42334 然后按照这个顺序安装 过程中有些补丁会提示重新启动,那我们就重启一下。安装结束就可以安装VC2015了 我在安装的过程中没有那么顺利,按照...

2021-07-28 14:53:50 1644

原创 踩坑记录:生成的多个excel文件,压入压缩包返回

一、代码public static void exportXlsx2Zip(String fileName, List<Workbook> workbookList, HttpServletResponse response) throws IOException { // 1、创建临时zip文件 String zipPath = ""; File zipFile = new File(zipPath + fileName + ".zip");

2021-07-27 17:21:17 218

原创 Android学习笔记(五):Flutter布局

一、Columnimport 'package:flutter/material.dart';class LayoutDemo extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("布局练习"), ), body: Container( // 容器

2021-07-22 14:11:34 102

原创 Android学习笔记(四):Flutter路由

未改造代码import 'package:flutter/material.dart';import 'navigator_demo.dart';void main() { runApp(MyApp());}class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( debugShowCheckedModeBa

2021-07-19 15:33:11 182 1

原创 Android学习笔记(三):Flutter框架

一、安装官方文档:https://flutter.cn/docs/get-started/install/windows二、问题汇总flutter doctor --android-licenses环境变量配置了 android sdk,报错:Android license status unknown.android studio 设置中这个命令行工具勾上。解决。...

2021-07-15 13:12:57 178

原创 Android学习笔记(二):实现登录

一、

2021-07-12 17:19:42 215

原创 Android学习笔记(一):安装Android Studio

一、安装 SDK下载地址:https://www.androiddevtools.cn/进入 SDK 的解压目录下,双击 “SDK Manager.exe” 打开 SDK 管理器,选择对应版本安装。二、SDK 环境配置三、官网下载 AS下载地址:https://android-studio.en.softonic.com/四、安装 ASAndroid Virtual Device,是系统自带模拟器,如果不用系统模拟器就不勾选,自己下载其他模拟器(这里选择的是勾选)没有设置可导入的

2021-07-09 16:24:41 275

原创 踩坑记录:新机器Ubuntu离线安装mysql,提示缺少libaio包,并且没有rpm命令

因为 ubuntu 不支持 rpm 命令,所以用 alien 命令替代。1、 下载 alienhttp://ftp.de.debian.org/debian/pool/main/a/alien/解压后,进入目录./Makefile.plmakemake install2、 下载 libaio 包下载页面:https://ubuntu.pkgs.org/18.04/ubuntu-main-amd64/libaio1_0.3.110-5_amd64.deb.html下载地址:http:/

2021-07-06 16:02:31 2605

原创 踩坑记录:ubuntu安装网卡驱动

2021-07-06 10:42:14 370

原创 netty学习笔记(一)

一、源码new NioEventLoopGroup(); // 点进去new NioEventLoopGroup(); 不传参数,则采用默认线程数private static final int DEFAULT_EVENT_LOOP_THREADS = Math.max(1, SystemPropertyUtil.getInt("io.netty.eventLoopThreads", NettyRuntime.availableProcessors() * 2));protected Multi

2021-06-17 17:29:03 77

转载 jdk中的Future.get()会阻塞当前主线程的运行,但不影响已经执行的其他线程

public class MyTest { public static void main(String[] args) throws Exception { ExecutorService pool = Executors.newFixedThreadPool(2); Future<Integer> f1 = pool.submit(new MyCallable(100)); Future<Integer> f2

2021-06-17 17:12:45 2144

原创 Mysql的几种索引分析

一、为什么用 B+ 树做索引而不用哈希表做索引? √\color{#FF7D00}{√}√ 哈希表是把索引字段映射成对应的哈希码然后再存放在对应的位置,这样的话,如果我们要进行模糊查找的话,显然哈希表这种结构是不支持的,只能遍历这个表。而B+树则可以通过最左前缀原则快速找到对应的数据。√\color{#FF7D00}{√}√ 如果我们要进行范围查找,例如查找ID为100 ~ 400的人,哈希表同样不支持,只能遍历全表。√\color{#FF7D00}{√}√ Hash冲突,会导致出现很长的链表,导致

2021-06-11 16:00:00 133

原创 Java多线程学习笔记(一)

一、看源码1、 java.util.concurrent 包√\color{#FF7D00}{√}√  Executor(interface):只有一个 execute ( Runnable command ) 方法,没有返回值,但是没有标注@FunctionalInterface?√\color{#FF7D00}{√}√  ExecutorService(interface)(extends Executor):在 executor 上封装了一层,提供了 Runnable(Callable

2021-06-04 09:52:05 114

原创 JavaFX学习笔记(一)

一、简介√\color{#FF7D00}{√}√  用 Java 语言开发桌面应用,官网√\color{#FF7D00}{√}√  JDK8 中自带 JavaFX 开发包,JDK11 需要手动导入二、创建一个基础应用GUIpublic class LoginWindow extends Application { public void start(Stage primaryStage) throws IOException { Parent parent = FXM

2021-05-27 23:16:54 235

原创 Redis实现Mybatis的二级缓存

一、Mybatis 缓存机制 1、一级缓存:√\color{#FF7D00}{√}√  默认开启,存在于 SqlSession 的生命周期中,Mybatis 会把执行的方法和参数通过算法生成缓存的键值对,并和查询结果存入一个 map 中,如果同一个 SqlSession 中执行的方法和参数完全一致时,通过算法生成相同的键值对,并在 map 中查找发现已存在,则会返回缓存中的对象。任何 insert、update、delete 操作都会清空一级缓存。√\color{#FF7D00}{√}√  一般的我

2021-05-20 14:45:06 446 1

原创 AOP+EhCache实现接口访问黑名单

AOP+EhCache实现接口访问黑名单一、依赖<!-- aop --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId></dependency><!-- ehcache --><dependency> &

2021-04-29 17:44:31 250

原创 Nacos学习笔记(二)

一、SpringBoot + Nacos + Dubbo1、工程结构api目录:存放消费者与提供者调用的service接口consumer目录:消费者目录 调用提供者远程提供的接口实现provider目录:提供者目录 提供给消费者接口实现2、引入依赖父模块:<!-- nacos & dubbo --> <dependency> <groupId>com.alibaba.boot</groupId&g

2021-04-24 17:17:29 140

转载 Nacos学习笔记(一)

Nacos学习笔记(一)一、安装部署1、环境:CentOS7.6dockermysql8(可以不要)2、安装git clone https://github.com/nacos-group/nacos-docker.gitcd nacos-docker单机模式 MySQL 8(本地无MySQL)docker-compose -f example/standalone-mysql-8.yaml up因为我本地有装mysql了,所以要改下yml文件和mysql配置,用本地的数据库

2021-04-24 17:14:52 441

原创 FISCO BCOS Solidity智能合约Demo

一、solidity智能合约pragma solidity ^0.4.24;pragma experimental ABIEncoderV2; //可以使用string[]// import "./Table.sol"; contract AgricultureTracingTest1{ address private _owner; modifier onlyOwner{ require(_owner == msg.sender, "Auth: only owner is

2021-04-01 18:31:30 939

原创 nginx部署及平滑升级

一、nginx部署1、安装依赖yum -y install gcc pcre-devel zlib-devel openssl openssl-devel2、下载nginx移动到/usr/local下cd /usr/local下载wget http://nginx.org/download/nginx-1.9.9.tar.gz (版本号可换)3、解压tar -xf nginx-1.9.9.tar.gz4、进入到nginx目录下cd nginx-1.9.95、配置./con

2021-03-29 22:21:00 145 1

原创 踩坑记录:Date接收yyyy-MM-dd HH:mm:ss失败

一、问题描述Date 接收 2021-03-26 13:17:11 失败2021-03-26 13:34:04.553 WARN 6744 --- [nio-8080-exec-1] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize val

2021-03-26 13:46:55 3102 1

原创 BCOS区块链节点部署(一)

一、典型示例节点组网拓扑结构一个如图所示的6节点3机构2群组的组网模式。机构B和机构C分别位于群组1和群组2中。机构A同属于群组1和群组2中。机器环境机构节点所属群组P2P地址RPC监听地址Channel监听地址机构A节点0群组1、2127.0.0.1:30300127.0.0.1:85450.0.0.0:20200节点1群组1、2127.0.0.1:30301127.0.0.1:85460.0.0.0:20201机构B节点2群组1

2021-03-24 10:29:37 1783 3

wsl_update_x64.rar

win10下docker启动报错:WSL 2 installation is incomplete

2021-07-06

《http权威指南》笔记.doc

《http权威指南》笔记

2021-06-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除