当前位置: 首页 > news >正文

数据型网站珠海网站建设尚古道策略

数据型网站,珠海网站建设尚古道策略,龙泉公路建设投资有限公司网站,购物网站开发所用技术文章目录 一、需求概述二、开发方式1、传统开发方式2、将接口视为资源文件1.#xff09;springmvc工程2.#xff09;springboot工程3.#xff09;nginx代理 三、接口数据如何更新1、原始数据文件生成接口数据1.#xff09;定义启动类2.#xff09;启动监听3.#xff09;文… 文章目录 一、需求概述二、开发方式1、传统开发方式2、将接口视为资源文件1.springmvc工程2.springboot工程3.nginx代理 三、接口数据如何更新1、原始数据文件生成接口数据1.定义启动类2.启动监听3.文件处理4. 完整代码 2、借助crontab定时执行 一、需求概述 通用查询类接口的需求在开发过程中是比较常见的一类需求一般具有以下的特点 数据更新频率较低无强制鉴权需求短时间内数据内容固定 二、开发方式 1、传统开发方式 传统的开发方式偏向于遵循MVC 模式使用RestController注解来定义restful接口来进行后续开发。此开发模式大部分开发人员已经司空见惯驾轻就熟不再详细阐述。 2、将接口视为资源文件 具体做法分为以下几种情况 1.springmvc工程 springmvc工程配置文件一般为spring-mvc.xml在此文件添加如下配置指向外部文件目录 mvc:resources mapping/pics/** locationfile:C:\Users\DELL\Pictures\ /注意需要以file绝对文件路径 方式配置 参考项目https://gitee.com/00fly/java-code-frame/blob/master/springmvc-dbutils/ 2.springboot工程 springboot工程一般以javaCofig代码方式定义资源文件映射 Slf4j Configuration ConditionalOnWebApplication public class WebMvcConfig implements WebMvcConfigurer {....../*** 加载静态资源文件或文件映射br* 映射路径优先级顺序为META-INF/resources resources static public*/Overridepublic void addResourceHandlers(final ResourceHandlerRegistry registry){try{registry.addResourceHandler(/pics/**).addResourceLocations(classpath:/data/pic/);registry.addResourceHandler(/upload/**).addResourceLocations(file: new File(./upload/).getCanonicalPath() /);}catch (IOException e){log.error(e.getMessage(), e);}}参考项目https://gitcode.com/00fly/springboot-hello/ 示例https://00fly.online/upload/data.json 3.nginx代理 nginx代理更方便只需要在nginx根目录添加文件即可 典型的nginx配置文件如下 default.conf server {listen 80;server_name localhost;#access_log /var/log/nginx/host.access.log main;location / {root /usr/share/nginx/html;index index.html index.htm;} }我们只需在目录 /usr/share/nginx/html 放入资源文件即可。 示例http://124.71.129.204/data.json 三、接口数据如何更新 上部分我们已经解决了接口发布和访问的问题不要忘了通用查询类接口仍然有数据更新的需求我们如何来解决这个需求呢 1、原始数据文件生成接口数据 具体概括为监听原始数据文件当数据发生变化时生成接口数据文件适用于数据不定期更新 原始数据点击获取 1.定义启动类 import java.io.File; import java.io.IOException; import java.net.URL; import java.util.stream.Collectors; import java.util.stream.Stream;import org.apache.commons.lang3.StringUtils;import lombok.extern.slf4j.Slf4j;Slf4j public class MainRun {/*** 文件监听程序一直运行* * param args* throws IOException*/public static void main(String[] args)throws IOException{// 默认监听项目当前目录String path new File().getCanonicalPath();URL url MainRun.class.getProtectionDomain().getCodeSource().getLocation();if (url.getPath().endsWith(.jar)){log.info(please start jar like: java -jar files-listener-0.0.1.jar --path/work/test);path Stream.of(args).filter(arg - arg.contains(--path)).map(arg - StringUtils.substringAfter(arg, )).collect(Collectors.joining());if (StringUtils.isBlank(path) || !new File(path).exists() || !new File(path).isDirectory()){log.error(please check path is a exist directory!);return;}}FileMonitor.initJsonFilesMonitor(path);} } 2.启动监听 import java.io.File; import java.util.concurrent.TimeUnit;import org.apache.commons.io.filefilter.FileFilterUtils; import org.apache.commons.io.monitor.FileAlterationListenerAdaptor; import org.apache.commons.io.monitor.FileAlterationMonitor; import org.apache.commons.io.monitor.FileAlterationObserver;import com.fly.simple.service.JsonDataService;import lombok.extern.slf4j.Slf4j;/*** 监听文件变化*/ Slf4j public class FileMonitor {/*** 初始化文件监听器*/public static void initJsonFilesMonitor(String path){try{log.info(start monitor {} ......, path);FileAlterationObserver observer new FileAlterationObserver(path, FileFilterUtils.suffixFileFilter(.json));File dir new File(path);observer.addListener(new FileAlterationListenerAdaptor(){Overridepublic void onFileCreate(File file){log.info(★★★★★★★★ {} created., file.getName());JsonDataService.parseDir(dir);}Overridepublic void onFileChange(File file){log.info(★★★★★★★★ {} changed., file.getName());JsonDataService.parseDir(dir);}Overridepublic void onFileDelete(File file){log.info(★★★★★★★★ {} deleted., file.getName());JsonDataService.parseDir(dir);}});// 开始监听new FileAlterationMonitor(TimeUnit.SECONDS.toMillis(10), observer).start();}catch (Exception e){log.error(e.getMessage(), e.getCause());}} } 3.文件处理 import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.ResourceBundle; import java.util.stream.Collectors;import org.apache.commons.io.FileUtils;import com.fly.simple.entity.Article; import com.fly.simple.entity.BlogData; import com.fly.simple.utils.JsonBeanUtils;import lombok.extern.slf4j.Slf4j;/*** JsonData服务类*/ Slf4j public class JsonDataService {private static File dir new File(ResourceBundle.getBundle(config).getString(out));public static void parseDir(File directory){try{// 遍历目录下json文件CollectionFile files FileUtils.listFiles(directory, new String[] {json}, false);ListArticle data files.stream().map(f - parseToArticles(f)).flatMap(List::stream).distinct().collect(Collectors.toList());FileUtils.writeStringToFile(dir, JsonBeanUtils.beanToJson(data, true), StandardCharsets.UTF_8, false);log.info(articles length : {}, data.size());}catch (IOException e){log.error(e.getMessage(), e);}}/*** 解析File为List* * param resource* return*/private static ListArticle parseToArticles(File file){try{String jsonData FileUtils.readFileToString(file, StandardCharsets.UTF_8);return JsonBeanUtils.jsonToBean(jsonData, BlogData.class, true).getData().getList();}catch (IOException e){log.error(e.getMessage(), e);return Collections.emptyList();}} }4. 完整代码 https://gitee.com/00fly/effict-side/tree/master/files-listener 2、借助crontab定时执行 具体概括为按照设定时间点生成接口数据文件适用于数据固定周期更新 files-listener项目根目录执行打包 mvn clean package -f pom-json.xml执行后会在target文件目录生成files-listener-0.0.1.jar将jar上传到服务器目录如/work/files-listener-0.0.1.jar后 命令行执行 #查看定时任务 crontab -l#编辑定时任务 crontab -e编辑时输入以下内容 0 */12 * * * java -jar /work/files-listener-0.0.1.jar此命令实现每12小时执行一次Jar 不再详细阐述实现思路具体请查阅文章服务器docker应用一览 有任何问题和建议都可以向我提问讨论,大家一起进步谢谢! -over-
http://www.w-s-a.com/news/283719/

相关文章:

  • 公司主页的网站格式wordpress自动推送给百度
  • 网站建设辶金手指排名十二wordpress 当数据库
  • 无锡手机网站建设服务苏州展厅设计企业
  • 无锡网站制作需要多少钱北京二次感染最新消息
  • 网站开发视频播放无画面杭州房产信息网官网
  • 网站开发 改进如何创建公众号平台
  • wordpress网站响应很慢只有asp网站代码可以重新编译吗
  • 哪个网站教做饭做的好wordpress热点文章
  • 可以做推广东西的网站重庆网站建设 重庆网站制作
  • 珠海网站建设培训学校wordpress去版权 合法
  • 建设食品商购网站学校网站设计实验报告
  • 建个网站多少钱沭阳奥体小区做网站的
  • 广州视频网站建站公司php网页设计作业代码
  • 成都公司网站设计如何制作网址最简单的方法
  • 温州 做网站福建住房城乡建设部网站
  • 网站自动化采集成都网站设计费用
  • 广东专业网站定制建设淘宝网站的人员组织结构
  • 网站改版seo无锡有多少家公司
  • h5美食制作网站模板下载wordpress大学百度云
  • 零陵做网站建立网站的公司平台
  • 某企业电子商务网站建设网站开发实验结论
  • 自己做的网站突然打不开杭州哪些做网站公司好
  • 株洲专业建设网站免费cms内容管理系统
  • 网上建立网站赚钱网站建设方案书纯文字
  • 专业网站设计哪家好it外包合同模板
  • 个人网站备案都需要什么中小企业服务网
  • 佛山网站建设哪个在公司网站投简历该怎么做
  • 八戒网站做推广老域名全部失效请拿笔记好
  • iss服务器网站建设甘肃建设厅网站执业注册中心
  • 域名访问网站 过程网站 免费 托管运营