Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README-Chinese.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ AS库目录有多个版本,如果希望查询不同版本的更新日志以及
<dependency>
<groupId>io.github.BeardedManZhao</groupId>
<artifactId>algorithmStar</artifactId>
<version>1.24</version>
<version>1.25</version>
</dependency>
</dependencies>
```
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ can add it to your maven project, or you can download it from Releases and manua
<dependency>
<groupId>io.github.BeardedManZhao</groupId>
<artifactId>algorithmStar</artifactId>
<version>1.24</version>
<version>1.25</version>
</dependency>
</dependencies>
```
Expand Down
181 changes: 178 additions & 3 deletions src_code/README-Chinese.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,182 @@

### 更新日志

* 框架版本:1.23 - 1.24
* 紧急修复:针对 AS图像处理库 中的show 函数生成的窗口关闭之后会退出程序的问题进行了优化和处理,使得窗口点击关闭之后不会退出程序。
* 框架版本:1.24 - 1.25
* 更新版本号。
* 移除 RouteNet 接口中“不支持操作异常”针对外部项目的依赖,避免出现下面所列出的异常信息,此版本中无需获取“javax.ws.rs”的第三方依赖。

### Version update date : 2023-08-28
```
Exception in thread "main" java.lang.NoClassDefFoundError: javax/ws/rs/NotSupportedException
at zhao.algorithmMagic.MAIN1.main(MAIN1.java:38)
Caused by: java.lang.ClassNotFoundException: javax.ws.rs.NotSupportedException
at java.net.URLClassLoader.findClass(URLClassLoader.java:387)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
... 1 more
```

* 新增 Graphx 类,能够在基于线路网络类的前提下通过节点与边表进行图的构造,后期将会对此类新增诸多的操作函数。

```java
package zhao.algorithmMagic;

import zhao.algorithmMagic.integrator.Route2DDrawingIntegrator;
import zhao.algorithmMagic.operands.coordinate.IntegerCoordinateTwo;
import zhao.algorithmMagic.operands.coordinateNet.Graph;
import zhao.algorithmMagic.operands.table.SingletonCell;


public class MAIN1 {
public static void main(String[] args) {
// 首先创建出两个节点的坐标
final IntegerCoordinateTwo c1 = new IntegerCoordinateTwo(-10, 2);
final IntegerCoordinateTwo c2 = new IntegerCoordinateTwo(20, 20);
// 然后创建两个节点数据的表
final Graph.GraphNodeDF nodeDF = Graph.GraphNodeDF.create(
Graph.GraphNodeSeries.create(c1, SingletonCell.$("zhao"), SingletonCell.$("20")),
Graph.GraphNodeSeries.create(c2, SingletonCell.$("TY"), SingletonCell.$("22"))
);
// 然后创建出两个节点之间的边
final Graph.GraphEdgeDF edgeDF = Graph.GraphEdgeDF.create(
// C1 <- 前任 -> C2 代表 C1的前任是C2 C2的前任是C1
Graph.GraphEdgeSeries.create(c1, c2, SingletonCell.$("前任"))
);
// 最后创建图对象
final Graph parse = Graph.create(nodeDF, edgeDF);

// 开始绘制图 首先准备线路绘图器
final Route2DDrawingIntegrator draw = new Route2DDrawingIntegrator("draw", parse);
if (draw.setImageOutPath("C:\\Users\\zhao\\Desktop\\fsdownload\\res.jpg").run()) {
System.out.println("ok!!!");
}
}
}
```

* 针对 Graph 类,我们可以通过 get 函数获取到 node 和 edge 的映射表。

```java
package zhao.algorithmMagic;

import zhao.algorithmMagic.operands.coordinate.IntegerCoordinateTwo;
import zhao.algorithmMagic.operands.coordinateNet.Graph;
import zhao.algorithmMagic.operands.route.IntegerConsanguinityRoute2D;
import zhao.algorithmMagic.operands.table.SingletonCell;

import java.util.Collection;
import java.util.HashMap;

public class MAIN1 {
public static void main(String[] args) {
// 首先创建出两个节点的坐标
final IntegerCoordinateTwo c1 = new IntegerCoordinateTwo(-10, 2), c2 = new IntegerCoordinateTwo(20, 20);
// 然后创建图对象
final Graph parse = Graph.create(
// 创建两个节点数据的表
Graph.GraphNodeDF.create(
Graph.GraphNodeSeries.create(c1, SingletonCell.$("zhao"), SingletonCell.$("20")),
Graph.GraphNodeSeries.create(c2, SingletonCell.$("TY"), SingletonCell.$("22"))
),
// 创建出两个节点之间的边
Graph.GraphEdgeDF.create(
// C1 <- 前任 -> C2 代表 C1的前任是C2 C2的前任是C1
Graph.GraphEdgeSeries.create(c1, c2, SingletonCell.$("前任"))
)
);
// TODO 获取到图对象中的所有节点数据映射表
final HashMap<String, Graph.GraphNodeSeries> nodes = parse.getNodes();
// TODO 获取到图对象中的所有边数据映射表
final HashMap<String, Graph.GraphEdgeSeries> edges = parse.getEdges();
// TODO 获取到图中的所有边数据线路对象
final Collection<IntegerConsanguinityRoute2D> edgesRoute = parse.getEdgesRoute();
// 我们在这里打印其中的每个线路的信息 TODO 我们将通过线路中的数据从映射表中取出详细数据
/*
* nodes映射表中的数据
* +----------+------------+
* | key | value |
* +----------+------------+
* | (-10,2) | zhao |
* | (20,20) | TY |
* +----------+------------+
*
*
* edges映射表中的数据
* +----------------------------------+------------------------------------+
* | key | value |
* +----------------------------------+------------------------------------+
* | (-10,2)(-10,2) -> (20,20)(20,20) | series [(-10,2), (20,20), 前任] |
* +----------------------------------+------------------- ----------------+
* */
edgesRoute.forEach(edge -> {
// 通过坐标名称 从节点映射表中 获取到起始节点与终止节点的数据Series
final Graph.GraphNodeSeries start = nodes.get(edge.getStartingCoordinateName());
final Graph.GraphNodeSeries end = nodes.get(edge.getEndPointCoordinateName());
System.out.println(
"当前线路:" + edge + '\n' +
"起始点:" + edge.getStartingCoordinate() +
// 由于上面构建节点Series的时候 第一个是坐标 第二个是名字 第三个是age
// 所以在这里也是相同的格式
"\t名称:" + start.getCell(1).getValue() + '\n' +
"终止点:" + edge.getEndPointCoordinate() + "\t名称:" + end.getCell(1) + '\n' +
"两个点之间的关系: " + edges.get(edge.toString())
);
});
}
}
```

* 针对 Graphx 系列的 Series 类的构造中,如果配置项全是字符串,那么我们就可以不显式的指定 Cell 单元格构造,是的构造操作更加简洁。

```java
package zhao.algorithmMagic;

import zhao.algorithmMagic.operands.coordinate.IntegerCoordinateTwo;
import zhao.algorithmMagic.operands.coordinateNet.Graph;

public class MAIN1 {
public static void main(String[] args) {
// 首先创建出两个节点的坐标
final IntegerCoordinateTwo c1 = new IntegerCoordinateTwo(-10, 2), c2 = new IntegerCoordinateTwo(20, 20);
// 然后创建图对象
final Graph parse = Graph.create(
// 创建两个节点数据的表 TODO 在这里使用的是字符串,因此不需要使用 Cell 类的构造包装。
Graph.GraphNodeDF.create(
Graph.GraphNodeSeries.create(c1, "zhao", "20"),
Graph.GraphNodeSeries.create(c2, "TY", "22")
),
// 创建出两个节点之间的边 TODO 在这里使用的是字符串,因此不需要使用 Cell 类的构造包装。
Graph.GraphEdgeDF.create(
// C1 <- 前任 -> C2 代表 C1的前任是C2 C2的前任是C1
Graph.GraphEdgeSeries.create(c1, c2, "前任")
)
);
}
}
```

* 针对 DataFrame 以及其有关的模块,在此次更新中,将使用统一的序列化版本号来实现序列化操作数对象在不同版本的AS库被重复解析和读取的能力,拓展灵活性。

```java
package zhao.algorithmMagic;

import zhao.algorithmMagic.algorithm.OperationAlgorithmManager;
import zhao.algorithmMagic.operands.table.DataFrame;
import zhao.algorithmMagic.operands.table.FDataFrame;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;

public class MAIN1 {
public static void main(String[] args) throws IOException, ClassNotFoundException {
System.out.println(OperationAlgorithmManager.VERSION);
final ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream("path"));
final DataFrame sfDataFrame = (FDataFrame) objectInputStream.readObject();
sfDataFrame.show();
}
}
```

### Version update date : xx xx-xx-xx
Loading