技术漫谈优秀开源笔记
FANSEA优秀学习笔记
Canal:数据库实时更新通知
Canal是一款阿里的MySQL实时同步框架
数据想要实时同步?这才是最佳实践|Java|Canal|框架_哔哩哔哩_bilibili
alibaba/canal: 阿里巴巴 MySQL binlog 增量订阅&消费组件 (github.com)
Ruoyi快速入门
若依框架快速开发项目(不涉及底层逻辑,只是简单使用)-CSDN博客
创建自己的模块需要对pom的操作:
- 创建自己的模块ruoyi
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 
 | <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 <parent>
 <artifactId>ruoyi</artifactId>
 <groupId>com.ruoyi</groupId>
 <version>x.x.x</version>
 </parent>
 <modelVersion>4.0.0</modelVersion>
 
 <artifactId>ruoyi-test</artifactId>
 
 <description>
 test系统模块
 </description>
 
 <dependencies>
 
 
 <dependency>
 <groupId>com.ruoyi</groupId>
 <artifactId>ruoyi-common</artifactId>
 </dependency>
 
 </dependencies>
 
 </project>
 
 
 | 
- 在根目录的pom中加入自己的model和dependency
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 
 | <modules><module>ruoyi-test</module>
 </modules>
 
 
 <dependency>
 <groupId>com.ruoyi</groupId>
 <artifactId>ruoyi-test</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 </dependency>
 
 | 
3.在ruoyi-admin引入自己的依赖
| 12
 3
 4
 5
 6
 
 | <dependency>
 <groupId>com.ruoyi</groupId>
 <artifactId>ruoyi-test</artifactId>
 </dependency>
 
 
 | 
网关是什么?
用于连接两个协议不同的数据传输,或者是不同网络下的信息传输,实时转换满足目的系统需求。并可以提供过滤和安全功能
网关(Gateway)又称网间连接器、协议转换器。网关在传输层上以实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关的结构也和路由器类似,不同的是互连层。网关既可以用于广域网互连,也可以用于局域网互连。 网关是一种充当转换重任的计算机系统或设备。在使用不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间,网关是一个翻译器。与网桥只是简单地传达信息不同,网关对收到的信息要重新打包,以适应目的系统的需求。同时,网关也可以提供过滤和安全功能。大多数网关运行在OSI 7层协议的顶层–应用层。
什么是网关,网关的作用是什么? - 知乎 (zhihu.com)
ForkJoinPool
Java高并发编程中ForkJoinPool的使用及详细介绍-刘宇_forkjoinpool最大-CSDN博客
1、提交任务的两种方式
我们在提交任务时,一般不会直接继承ForkJoinTask,只要继承它的子类即可:
- RecursiveAction:用于没有返回结果的任务(类似Runnable)
- RecursiveTask:用于有返回结果的任务(类似Callable)
2、构造函数
- parallelism:由几个线程来拆分任务,如果不填则更具CPU核数创建线程数
- factory:创建工作线程的工厂实现
- handler:线程因未知异常而终止的回调处理
- asyncMode:是否异步,默认false
| 12
 3
 
 | ForkJoinPool()ForkJoinPool(int parallelism)
 ForkJoinPool(int parallelism, ForkJoinWorkerThreadFactory factory, UncaughtExceptionHandler handler, bool
 
 | 
ForkJoinPool又叫分而治之,通俗来讲就是帮我们把一个任务分成许多小任务给不同的线程执行,然后通过join将多个线程处理的结果进行汇总返回。
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 
 | import java.util.concurrent.ExecutionException;import java.util.concurrent.ForkJoinPool;
 import java.util.concurrent.ForkJoinTask;
 import java.util.concurrent.RecursiveTask;
 import java.util.stream.IntStream;
 
 public class ForkJoinRecurisiveTask {
 
 private static final int MAX_THRESHOLD = 5;
 public static void main(String[] args) {
 
 ForkJoinPool pool = new ForkJoinPool();
 
 ForkJoinTask<Integer> forkJoinTask = pool.submit(new CalculatedRecurisiveTask(0,100));
 try {
 
 Integer result = forkJoinTask.get();
 System.out.println("结果为:"+result);
 } catch (InterruptedException e) {
 e.printStackTrace();
 } catch (ExecutionException e) {
 e.printStackTrace();
 }
 }
 
 private static class CalculatedRecurisiveTask extends RecursiveTask<Integer>{
 private int start;
 private int end;
 public CalculatedRecurisiveTask(int start, int end) {
 this.start = start;
 this.end = end;
 }
 @Override
 protected Integer compute() {
 
 if ((end-start)<=5) {
 return IntStream.rangeClosed(start, end).sum();
 }else {
 
 int middle = (end+start)/2;
 CalculatedRecurisiveTask task1 = new CalculatedRecurisiveTask(start,middle);
 CalculatedRecurisiveTask task2 = new CalculatedRecurisiveTask(middle+1,end);
 
 task1.fork();
 task2.fork();
 
 return task1.join()+task2.join();
 }
 }
 }
 }
 
 
 | 
AIGC + 服装设计
30 秒出服装设计稿,森马用函数计算+AIGC 整“新活”! - OSCHINA - 中文开源技术交流社区
火山引擎推荐 + 搜款网
火山引擎&搜款网:服装批发背后的智慧与“荐”行 - OSCHINA - 中文开源技术交流社区
shell指令补全
https://github.com/tldr-pages/tldr