2023年2月15日17:08:06

master
zhangmeng 2023-02-15 17:08:22 +08:00
commit b5658b1409
15 changed files with 1204 additions and 0 deletions

39
.gitignore vendored Normal file
View File

@ -0,0 +1,39 @@
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
.mvn
mvnw.cmd
mystyle-java-fx-tools.iml
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/
### VS Code ###
.vscode/
/logs/

557
pom.xml Normal file
View File

@ -0,0 +1,557 @@
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.zhangmeng</groupId>
<artifactId>mystyle-java-fx-tools</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>mystyle-java-fx-tools</name>
<description>mystyle-java-fx-tools</description>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<netty.version>4.1.48.Final</netty.version>
<fastjson.version>1.2.75</fastjson.version>
<jwt.version>0.9.1</jwt.version>
<druid.version>1.2.5</druid.version>
<swagger.version>2.8.0</swagger.version>
<knife4j.version>2.0.8</knife4j.version>
<captcha.version>1.6.2</captcha.version>
<apache.xmlgraphics.version>1.13</apache.xmlgraphics.version>
<dynamic.verion>3.2.1</dynamic.verion>
<oshi.version>3.9.1</oshi.version>
<velocity.version>1.7</velocity.version>
<poi.version>3.17</poi.version>
<tk.mybatis.version>2.1.5</tk.mybatis.version>
<pagehelper.version>1.3.0</pagehelper.version>
<hutool.version>5.5.7</hutool.version>
<gson-version>2.8.5</gson-version>
<commons-io.version>2.8.0</commons-io.version>
<commons-lang3.version>3.11</commons-lang3.version>
<commons-codec.version>1.15</commons-codec.version>
<commons-collections.version>3.2.2</commons-collections.version>
<commons-fileupload.version>1.4</commons-fileupload.version>
<commons-pool2.version>2.9.0</commons-pool2.version>
<commons-beanutils.version>1.9.4</commons-beanutils.version>
<fastdfs-client-java.version>1.27.0.0</fastdfs-client-java.version>
<flexmark.version>0.62.2</flexmark.version>
<joda-time.version>2.5</joda-time.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<dependency>
<groupId>com.github.whvcse</groupId>
<artifactId>easy-captcha</artifactId>
<version>${captcha.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>${tk.mybatis.version}</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>${pagehelper.version}</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>${hutool.version}</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons-io.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${commons-lang3.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>${commons-codec.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-collections/commons-collections -->
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>${commons-collections.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>${commons-fileupload.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-pool2 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>${commons-pool2.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-beanutils/commons-beanutils -->
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>${commons-beanutils.version}</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>${netty.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson.version}</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>${jwt.version}</version>
</dependency>
<dependency>
<groupId>net.oschina.zcx7878</groupId>
<artifactId>fastdfs-client-java</artifactId>
<version>${fastdfs-client-java.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${swagger.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-bean-validators</artifactId>
<version>${swagger.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${swagger.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.github.xiaoymin/knife4j-spring-boot-starter -->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>${knife4j.version}</version>
</dependency>
<dependency>
<groupId>it.sauronsoftware</groupId>
<artifactId>jave</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.3.5</version>
<scope>compile</scope>
</dependency>
<!--javacv 开始-->
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacpp</artifactId>
<version>1.5.2</version>
</dependency>
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacv</artifactId>
<version>1.5.2</version>
</dependency>
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>opencv-platform</artifactId>
<version>4.1.2-1.5.2</version>
</dependency>
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>ffmpeg-platform</artifactId>
<version>4.2.1-1.5.2</version>
</dependency>
<!--javacv 结束-->
<!--druid连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid.version}</version>
</dependency>
<!--图片扩展信息-->
<!-- https://mvnrepository.com/artifact/com.drewnoakes/metadata-extractor -->
<dependency>
<groupId>com.drewnoakes</groupId>
<artifactId>metadata-extractor</artifactId>
<version>2.16.0</version>
</dependency>
<dependency>
<groupId>org.apache.xmlgraphics</groupId>
<artifactId>batik-codec</artifactId>
<version>${apache.xmlgraphics.version}</version>
</dependency>
<dependency>
<groupId>org.apache.xmlgraphics</groupId>
<artifactId>batik-css</artifactId>
<version>${apache.xmlgraphics.version}</version>
</dependency>
<dependency>
<groupId>org.apache.xmlgraphics</groupId>
<artifactId>batik-svg-dom</artifactId>
<version>${apache.xmlgraphics.version}</version>
</dependency>
<dependency>
<groupId>org.apache.xmlgraphics</groupId>
<artifactId>batik-svggen</artifactId>
<version>${apache.xmlgraphics.version}</version>
</dependency>
<!-- 动 态 数 据 源 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>${dynamic.verion}</version>
</dependency>
<!-- 系 统 资 源 获 取 -->
<dependency>
<groupId>com.github.oshi</groupId>
<artifactId>oshi-core</artifactId>
<version>${oshi.version}</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>${poi.version}</version>
</dependency>
<!--解决Java8时间API与数据库类型不匹配问题-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-typehandlers-jsr310</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.9.7</version>
</dependency>
<!--引入FTP 依赖-->
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.6</version>
</dependency>
<!--引入二维码依赖-->
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.3.3</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.3.3</version>
</dependency>
<!-- Gson json转化工具 -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>${gson-version}</version>
</dependency>
<!-- end Gson -->
<!-- ZIP 压缩工具 -->
<!-- https://mvnrepository.com/artifact/org.zeroturnaround/zt-zip -->
<dependency>
<groupId>org.zeroturnaround</groupId>
<artifactId>zt-zip</artifactId>
<version>1.14</version>
</dependency>
<!-- end ZIP -->
<!-- Thumbnailator图片压缩工具 -->
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.13</version>
</dependency>
<!-- end Thumbnailator -->
<!-- 图片格式处理 -->
<!-- https://mvnrepository.com/artifact/com.twelvemonkeys.imageio/imageio-jpeg -->
<dependency>
<groupId>com.twelvemonkeys.imageio</groupId>
<artifactId>imageio-jpeg</artifactId>
<version>3.7.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.twelvemonkeys.imageio/imageio-tiff -->
<dependency>
<groupId>com.twelvemonkeys.imageio</groupId>
<artifactId>imageio-tiff</artifactId>
<version>3.7.0</version>
</dependency>
<!-- end 图片处理 -->
<!-- txt/word/ppt转PDF处理工具整合资源 -->
<!-- https://mvnrepository.com/artifact/com.lowagie/itext -->
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<version>4.2.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/fr.opensagres.xdocreport/org.apache.poi.xwpf.converter.pdf -->
<dependency>
<groupId>fr.opensagres.xdocreport</groupId>
<artifactId>org.apache.poi.xwpf.converter.pdf</artifactId>
<version>1.0.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/net.sourceforge.jchardet/jchardet -->
<dependency>
<groupId>net.sourceforge.jchardet</groupId>
<artifactId>jchardet</artifactId>
<version>1.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-scratchpad -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-scratchpad</artifactId>
<version>5.0.0</version>
</dependency>
<!-- end txt/word/ppt -->
<!-- JAVE 多媒体解析器(全平台) -->
<dependency>
<groupId>ws.schild</groupId>
<artifactId>jave-all-deps</artifactId>
<version>3.1.1</version>
</dependency>
<!-- end JAVE -->
<!-- Markdown 文本解析器 -->
<!-- https://mvnrepository.com/artifact/com.vladsch.flexmark/flexmark -->
<dependency>
<groupId>com.vladsch.flexmark</groupId>
<artifactId>flexmark</artifactId>
<version>${flexmark.version}</version>
</dependency>
<!-- end Markdown解析器 -->
<dependency>
<groupId>us.codecraft</groupId>
<artifactId>webmagic-core</artifactId>
<version>0.7.5</version>
</dependency>
<dependency>
<groupId>us.codecraft</groupId>
<artifactId>webmagic-extension</artifactId>
<version>0.7.5</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.arcsoft.face</groupId>
<artifactId>arcsoft-sdk-face</artifactId>
<version>3.0.0.0</version>
</dependency>
<!-- common markdown -->
<dependency>
<groupId>com.atlassian.commonmark</groupId>
<artifactId>commonmark</artifactId>
<version>0.15.2</version>
</dependency>
<dependency>
<groupId>com.atlassian.commonmark</groupId>
<artifactId>commonmark-ext-heading-anchor</artifactId>
<version>0.15.2</version>
</dependency>
<dependency>
<groupId>com.atlassian.commonmark</groupId>
<artifactId>commonmark-ext-gfm-tables</artifactId>
<version>0.15.2</version>
</dependency>
<dependency>
<groupId>fr.brouillard.oss</groupId>
<artifactId>commonmark-ext-notifications</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>4.1.0</version>
</dependency>
<!--openoffice-->
<dependency>
<groupId>com.artofsolving</groupId>
<artifactId>jodconverter</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/com.aliyun/aliyun-java-sdk-core -->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.6.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.aliyun/aliyun-java-sdk-dysmsapi -->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-dysmsapi</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>net.sourceforge.tess4j</groupId>
<artifactId>tess4j</artifactId>
<version>3.4.0</version>
<exclusions>
<exclusion>
<groupId>com.sun.jna</groupId>
<artifactId>jna</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- https://mvnrepository.com/artifact/io.minio/minio -->
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.3.7</version>
<exclusions>
<exclusion>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.8.1</version>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>${joda-time.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.openjfx/javafx-controls -->
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>17.0.1</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-base</artifactId>
<version>17.0.1</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-graphics</artifactId>
<version>17.0.1</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>17.0.1</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-web</artifactId>
<version>17.0.1</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-media</artifactId>
<version>17.0.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,16 @@
package com.zhangmeng.tools;
import com.zhangmeng.tools.views.HomeView;
import javafx.application.Application;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class JavaFxToolsApplication {
public static void main(String[] args) {
// SpringApplication.run(JavaFxToolsApplication.class, args);
Application.launch(HomeView.class);
}
}

View File

@ -0,0 +1,107 @@
package com.zhangmeng.tools.controller;
import com.zhangmeng.tools.utils.ResourcesUtils;
import javafx.beans.property.SimpleDoubleProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Node;
import javafx.scene.control.Button;
import javafx.scene.control.ListView;
import javafx.scene.control.SplitPane;
import javafx.scene.control.TextField;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.BorderPane;
import java.io.IOException;
import java.io.Serializable;
import java.util.Arrays;
public class HomeController implements Serializable {
private SimpleObjectProperty<ResourcesUtils.Menu> menus = new SimpleObjectProperty<>();
private SimpleDoubleProperty width = new SimpleDoubleProperty(0.0);
private SimpleDoubleProperty height = new SimpleDoubleProperty(0.0);
private AnchorPane root;
@FXML
private ListView<ResourcesUtils.Menu> listView;
@FXML
private SplitPane splitPane;
@FXML
public void initialize() {
init();
listView.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> {
if (newValue != null) {
if (newValue.getIndex() == 0 ){
md5();
}
if (newValue.getIndex() == 1 ){
spring();
}
}
});
}
public void init() {
ResourcesUtils.Menu[] values = ResourcesUtils.Menu.values();
ObservableList<ResourcesUtils.Menu> list = FXCollections.observableArrayList();
list.addAll(Arrays.asList(values));
listView.setItems(list);
md5();
}
private void spring(){
try {
root = FXMLLoader.load(ResourcesUtils.getResource("spring-security"));
} catch (IOException e) {
e.printStackTrace();
}
common_method();
}
private void common_method(){
splitPane.getItems().remove(1);
splitPane.getItems().add(1, root);
root.widthProperty().addListener((observable, oldValue, newValue) -> {
if (newValue != null) {
double width = splitPane.getWidth();
HomeController.this.width.set(width);
}
});
root.heightProperty().addListener((observable, oldValue, newValue) -> {
if (newValue != null) {
double height = splitPane.getHeight();
HomeController.this.height.set(height);
}
});
this.width.addListener((observable, oldValue, newValue) -> {
HomeController.this.root.setPrefWidth(newValue.doubleValue() - listView.getWidth());
});
this.height.addListener((observable, oldValue, newValue) -> {
HomeController.this.root.setPrefHeight(newValue.doubleValue() - listView.getHeight());
});
}
private void md5(){
//默认选择第一个
listView.getSelectionModel().select(0);
try {
root = FXMLLoader.load(ResourcesUtils.getResource("md5"));
} catch (IOException e) {
e.printStackTrace();
}
common_method();
}
}

View File

@ -0,0 +1,42 @@
package com.zhangmeng.tools.controller;
import com.zhangmeng.tools.utils.EncryptUtils;
import javafx.fxml.FXML;
import javafx.scene.control.*;
import javafx.stage.Modality;
public class Md5Controller {
@FXML
private Button button;
@FXML
private TextField text_filed;
@FXML
private TextArea md5_32;
@FXML
private TextArea md5_16;
@FXML
public void initialize() {
button.setOnAction(event -> {
String text = text_filed.getText();
if (text.length() == 0){
alert();
return;
}
md5_32.setText(EncryptUtils.md5(text));
md5_16.setText(EncryptUtils.md5_16(text));
});
}
private void alert(){
Alert alert = new Alert(Alert.AlertType.WARNING);
alert.initModality(Modality.APPLICATION_MODAL);
alert.setContentText("请输入将要加密的字符!");
alert.setHeaderText(null);
alert.show();
}
}

View File

@ -0,0 +1,41 @@
package com.zhangmeng.tools.controller;
import com.zhangmeng.tools.utils.EncryptUtils;
import javafx.fxml.FXML;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.stage.Modality;
public class SpringSecurityController {
@FXML
private Button button;
@FXML
private TextField text_filed;
@FXML
private TextArea textArea;
@FXML
public void initialize() {
button.setOnAction(event -> {
String text = text_filed.getText();
if (text.length() == 0){
alert();
return;
}
textArea.setText(EncryptUtils.spring_security(text));
});
}
private void alert(){
Alert alert = new Alert(Alert.AlertType.WARNING);
alert.initModality(Modality.APPLICATION_MODAL);
alert.setContentText("请输入将要加密的字符!");
alert.setHeaderText(null);
alert.show();
}
}

View File

@ -0,0 +1,24 @@
package com.zhangmeng.tools.utils;
import cn.hutool.crypto.digest.DigestUtil;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
public class EncryptUtils {
public static String md5(String text){
return DigestUtil.md5Hex(text);
}
public static String md5_16(String text){
return DigestUtil.md5Hex16(text);
}
public static String spring_security(String text){
return new BCryptPasswordEncoder().encode(text);
}
public static void main(String[] args) {
String text = "123456";
System.out.println(md5(text));
System.out.println(md5_16(text));
}
}

View File

@ -0,0 +1,43 @@
package com.zhangmeng.tools.utils;
import java.net.URL;
public class ResourcesUtils {
public static final String base_fxml = "/fxml/";
public static URL getResource(String name){
String path = base_fxml + name + ".fxml";
return ResourcesUtils.class.getResource(path);
}
public enum Menu{
Md5("md5加密",0),
SpringSecurity("spring加密",1);
Menu(String title, int index) {
this.title = title;
this.index = index;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
private String title;
private int index;
}
}

View File

@ -0,0 +1,20 @@
package com.zhangmeng.tools.views;
import com.zhangmeng.tools.utils.ResourcesUtils;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;
public class HomeView extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
AnchorPane fx = FXMLLoader.load(ResourcesUtils.getResource("home"));
Scene scene = new Scene(fx);
primaryStage.setScene(scene);
primaryStage.setTitle("java-fx 工具");
primaryStage.show();
}
}

View File

@ -0,0 +1,135 @@
server:
port: 8083
# max-http-header-size: 1000MB
spring:
main:
allow-bean-definition-overriding: true
autoconfigure:
exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
session:
timeout: 120m
datasource:
druid:
stat-view-servlet:
loginUsername:
loginPassword:
dynamic:
druid:
initial-size: 5
min-idle: 5
maxActive: 20
maxWait: 60000
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20
filters: stat,wall,slf4j
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
primary: master #??????????????,?????master
strict: false #??????,??false???. ????????????????????,???????????.
datasource:
# ? ? ? ?
master:
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://127.0.0.1:3306/mystyle-blog?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true
username: root
password: root
jpa:
database: mysql
hibernate:
ddl-auto: update
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
show-sql: true
properties:
hibernate:
dialect: org.hibernate.dialect.MySQL5Dialect
quartz:
properties:
org:
quartz:
scheduler:
instanceName: DefaultQuartzScheduler
instanceId: AUTO
jobStore:
class: org.quartz.impl.jdbcjobstore.JobStoreTX
driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
tablePrefix: QRTZ_
isClustered: false
clusterCheckinInterval: 10000
useProperties: false
threadPool:
class: org.quartz.simpl.SimpleThreadPool
threadCount: 10
threadPriority: 5
threadsInheritContextClassLoaderOfInitializingThread: true
job-store-type: jdbc
jdbc:
initialize-schema: never
freemarker:
suffix: .ftl
check-template-location: true
content-type: text/html
charset: UTF-8
template-loader-path: classpath:/templates/
cache: false
enabled: true
request-context-attribute: request
mail:
default-encoding: UTF-8
port: 465
username: zhang1334717033@foxmail.com
password: gymxczptynubfgih
test-connection: false
host: smtp.qq.com
protocol: smtps
properties:
mail:
smtp:
auth: true
starttls:
enable: true
required: true
rabbitmq:
host: localhost
port: 5672
username: guest
password: guest
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
servlet:
multipart:
max-file-size: 1000MB
max-request-size: 1000MB
pagehelper:
row-bounds-with-count: true
offset-as-page-num: true
page-size-zero: true
reasonable: false
support-methods-arguments: false
params: count=countSql
helper-dialect: mysql
mybatis:
type-aliases-package: com.zhangmeng.modules
configuration:
mapUnderscoreToCamelCase: true
default-enum-type-handler: org.apache.ibatis.type.EnumOrdinalTypeHandler
mapper:
style: normal
enum-as-simple-type: true
identity: MYSQL
check-example-entity-class: true
logging:
config: classpath:logback-spring.xml
log:
level:
root: info
my: info
file-path: logs/admin-server.log
max-size: 30MB

View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.ListView?>
<?import javafx.scene.control.Menu?>
<?import javafx.scene.control.MenuBar?>
<?import javafx.scene.control.MenuItem?>
<?import javafx.scene.control.SplitPane?>
<?import javafx.scene.layout.AnchorPane?>
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="800.0" prefWidth="1661.0" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.zhangmeng.tools.controller.HomeController">
<children>
<MenuBar layoutX="14.0" layoutY="27.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<menus>
<Menu mnemonicParsing="false" text="File">
<items>
<MenuItem mnemonicParsing="false" text="Close" />
</items>
</Menu>
<Menu mnemonicParsing="false" text="Edit">
<items>
<MenuItem mnemonicParsing="false" text="Delete" />
</items>
</Menu>
<Menu mnemonicParsing="false" text="Help">
<items>
<MenuItem mnemonicParsing="false" text="About" />
</items>
</Menu>
</menus>
</MenuBar>
<SplitPane fx:id="splitPane" dividerPositions="0.5" layoutY="25.0" prefHeight="575.0" prefWidth="1200.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="25.0">
<items>
<ListView fx:id="listView" maxWidth="300.0" minWidth="200.0" prefHeight="200.0" prefWidth="200.0" />
<AnchorPane prefHeight="200.0" prefWidth="200.0" />
</items>
</SplitPane>
</children>
</AnchorPane>

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TextArea?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?>
<AnchorPane fx:id="root" prefHeight="649.0" prefWidth="1200.0" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.zhangmeng.tools.controller.Md5Controller">
<children>
<Label layoutX="169.0" layoutY="102.0" text="将要加密的字符:" AnchorPane.leftAnchor="169.0" />
<TextField fx:id="text_filed" layoutX="300.0" layoutY="98.0" prefHeight="25.0" prefWidth="619.0" AnchorPane.leftAnchor="300.0" AnchorPane.rightAnchor="281.0" AnchorPane.topAnchor="98.0" />
<Button fx:id="button" layoutX="934.0" layoutY="98.0" mnemonicParsing="false" text="加密" AnchorPane.rightAnchor="226.0" />
<Label layoutX="169.0" layoutY="160.0" text="加密后的字符 32位:" />
<TextArea fx:id="md5_32" layoutX="300.0" layoutY="160.0" prefHeight="200.0" prefWidth="619.0" AnchorPane.leftAnchor="300.0" AnchorPane.rightAnchor="281.0" AnchorPane.topAnchor="160.0" />
<Label layoutX="169.0" layoutY="377.0" text="将要加密的字符 16位:" />
<TextArea fx:id="md5_16" layoutX="300.0" layoutY="377.0" prefHeight="215.0" prefWidth="619.0" AnchorPane.leftAnchor="300.0" AnchorPane.rightAnchor="281.0" AnchorPane.topAnchor="377.0" />
</children>
</AnchorPane>

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TextArea?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?>
<AnchorPane fx:id="root" prefHeight="649.0" prefWidth="1200.0" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.zhangmeng.tools.controller.SpringSecurityController">
<children>
<Label layoutX="169.0" layoutY="102.0" text="将要加密的字符:" AnchorPane.leftAnchor="169.0" />
<TextField fx:id="text_filed" layoutX="300.0" layoutY="98.0" prefHeight="25.0" prefWidth="619.0" AnchorPane.leftAnchor="300.0" AnchorPane.rightAnchor="281.0" AnchorPane.topAnchor="98.0" />
<Button fx:id="button" layoutX="934.0" layoutY="98.0" mnemonicParsing="false" text="加密" AnchorPane.rightAnchor="226.0" />
<Label layoutX="169.0" layoutY="160.0" text="加密后的字符 :" />
<TextArea fx:id="textArea" layoutX="300.0" layoutY="160.0" prefHeight="200.0" prefWidth="619.0" AnchorPane.leftAnchor="300.0" AnchorPane.rightAnchor="281.0" AnchorPane.topAnchor="160.0" />
</children>
</AnchorPane>

View File

@ -0,0 +1,93 @@
<?xml version='1.0' encoding='UTF-8'?>
<configuration>
<springProperty name="logFile" source="log.file-path" />
<springProperty name="rootlevel" source="log.level.root" />
<springProperty name="mylevel" source="log.level.my" />
<springProperty name="maxFileSize" source="log.max-size" />
<!-- 彩色日志 -->
<!-- 彩色日志依赖的渲染类 -->
<conversionRule
conversionWord="clr"
converterClass="org.springframework.boot.logging.logback.ColorConverter" />
<conversionRule
conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
<!-- 彩色日志格式 -->
<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!-- <pattern>%d [%thread] %-5level %logger{50} -[%file:%line]- %msg%n-->
<!-- </pattern>-->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<appender name="adminLog"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${logFile}</file>
<encoder>
<pattern>%d [%thread] %-5level -[%file:%line]- %msg%n
</pattern>
<charset>UTF-8</charset>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${logFile}.%d{yyyy-MM-dd}.%i</fileNamePattern>
<maxFileSize>${maxFileSize}</maxFileSize>
</rollingPolicy>
</appender>
<appender name="errorLog"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${logFile}.error</file>
<encoder>
<pattern>%d [%thread] %-5level %logger{36} -[%file:%line]- %msg%n
</pattern>
<charset>UTF-8</charset>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${logFile}.error.%d{yyyy-MM-dd}.%i</fileNamePattern>
<maxFileSize>${maxFileSize}</maxFileSize>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>error</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<appender name="sqlLog"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${logFile}.sql</file>
<encoder>
<pattern>%d [%thread] %msg%n
</pattern>
<charset>UTF-8</charset>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${logFile}.sql.%d{yyyy-MM-dd}.%i</fileNamePattern>
<maxFileSize>${maxFileSize}</maxFileSize>
</rollingPolicy>
</appender>
<logger name="adminLogger" level="${mylevel}" additivity="true">
<appender-ref ref="adminLog" />
</logger>
<logger name="com.zhangmeng" level="DEBUG" additivity="true">
<appender-ref ref="sqlLog" />
</logger>
<logger name="org.springframework.scheduling.quartz" level="error" additivity="true">
<appender-ref ref="adminLog" />
</logger>
<root level="${rootlevel}">
<appender-ref ref="STDOUT" />
<appender-ref ref="adminLog" />
<appender-ref ref="errorLog" />
</root>
</configuration>

View File

@ -0,0 +1,13 @@
package com.zhangmeng.tools;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class JavaFxToolsApplicationTests {
@Test
void contextLoads() {
}
}