download:Spring Boot + Vue3 前后端分离 实战wiki知识库系统 软件包com.DMS;导入Java.IO .缓冲读取器;导入日本文件;导入Java.io .文件输出流;导入Java.IO执行;输入流读取器;输入Java.io .输出串流程式...
download:Spring Boot + Vue3 前后端分离 实战wiki知识库系统
软件包com.DMS;
导入Java.IO .缓冲读取器;
导入日本文件;
导入Java.io .文件输出流;
导入Java.IO执行;
输入流读取器;
输入Java.io .输出串流程式;
import Java.io .打印机;
import Java.net .服务器插座;
导入Java.net .套接字;
导入Java.UTIL.Hashmap;
导入Java.util .列表;
汇入Java.util .地图;
导入Java.util.concurrent .块队列;
导入Java.util.concurrent .执行服务;
导入Java.util.concurrent .执行程序;
导入Java.util.concurrent .链接块队列;
导入org.Dom4j .文档;
导入Org.Dom4j.Element;
import org.dom4j.io.SAXReader;
/**
* * *用于接收来自DMS服务器端、各客户端的发送
* *将日志配对保存到本地文件
* * @自动管理员
*
*/
公共类DMS服务器{
//属性定义
//用于接收客户端连接的服务器端servlet
专用服务器套接字服务器
//管理处理客户端请求的线程的线程池
私有EXECutorservicethreadpool;
/保存所有客户端发送来的配对文件
专用文件服务器日志文件;
//消息队列
privateblockingqueuemessagequeue=newlinkedblockingqueue ();公共DMS服务器() throws执行{
特里
System.out.println ('服务器正在初始化.');
/1分析配置文件server-config.xml
地图配置=载入配置();
/2根据配置文件的内容初始化属性
init (配置);
System.out.println ('服务器端初始化完成.')
缓存(执行) {
System.out.println ('服务器端初始化失败!' 说。
旋转e;
}
}
/**
* * *在初始化构建方法的第一步,分析配置文件
* @return返回的Map包含配置文件中的
所有内容。 key:标记的名称
* value是标签的中间文本
* * @ throws执行
*/
私有地图加载配置() throws执行{ }
特里
sa xreader读取器=新的sa xreader ();
文档文档文档
=reader.read (新文件('服务器-配置. XML ' ) :
Element root=doc.getRootElement ();
地图配置
=新哈斯图();
/*
* *获取标签中的所有子标签
每个子标签的名称为key,中间的* *文本作为值存储在映射集合中
*/
列表=根.元素();
for (元素e :列表) {
字符串密钥=e.getname ();
字符串值=e.gettext trim ();
config.put (密钥、值);
}
返回配置;
缓存(执行) {
System.out.println ('解决配置文件异常!' 说。
e .打印堆栈跟踪();
旋转e;
}
}
/**
* * *构造方法初始化第二个步骤,然后根据设置项目初始化属性
* * @ param配置
* * @ throws执行
*/
私有语音初始化(地图配置)吞吐量执行{
/*
* * *配置文件初始化属性:服务器日志文件
* * *配置文件初始化属性:使用threadPool创建固定大小的线程池。 该值为线程池线程数
* * *配置文件初始化属性:服务器,在此使用服务器套接字的服务端口
*/
this.server=新服务器套接字(
integer.parseint (配置. get ('服务器端口' ) )
说。
this .服务器日志文件=新文件(
config.get ('日志文件' )说。
this.thread pool=executors.newfixedthreadpool (
integer.parseint (config.get (' threadsum ' ) )
说。
}
/**
服务端开始工作的方法
* * @ throws执行
*/
公共语音开始() throws执行{
/*
* *实现要求:
* *首先,分别启动要运行SaveLogHandler的线程
此任务的目的是保存所有配对日志
* * *然后,客户端连接后,服务器端端口开始循环
实例化客户端处理程序并将该任务传递给线程池
* *分配线程以处理与客户端的交互。
*
*/
特里
System.out.println ('服务器端开始工作.');
saveloghandlerslh=newsaveloghandler ();
新读(slh ).start ()
while (真) {
套接字套接字=服务器. accept ();
thread pool.execute (新客户端处理程序(套接字) )
}
缓存(执行) {
e .打印堆栈跟踪();
旋转e;
}
}
publicstaticvoidmain (字符串[ ]数组) {
特里DMS服务器=新的DMS服务器()
本文标题为:Spring Boot + Vue3 前后端分离 实战wiki知识库系统完结
基础教程推荐
- 关于Ajax跨域问题及解决方案详析 2023-02-23
- 使用ajax跨域调用springboot框架的api传输文件 2023-02-23
- Ajax发送和接收请求 2022-12-15
- JS滚动到顶部踩坑解决记录 2023-07-10
- 在实战中可能碰到的几种ajax请求方法详解 2023-02-01
- HTML clearfix清除浮动讲解 2022-11-20
- cocos creator游戏实现loading加载页面,游戏启动加载动画 2022-10-29
- Ajax+smarty技术实现无刷新分页 2022-12-15
- uniapp开发微信小程序自定义顶部导航栏功能实例 2022-10-21
- Javascript Bootstrap的网格系统,导航栏和轮播详解 2023-08-11