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

通用查询类接口数据更新的另类实现

文章目录

  • 一、简要概述
  • 二、java工程实现
    • 1. 定义main方法
    • 2. 测试运行
    • 3. 源码放送

一、简要概述

我们在通用查询类接口开发的另类思路中,关于接口数据的更新,提出了两种方案:

  1. 文件监听
监听目录
解析变动文件
写入结果文件

2.定时任务

接口获取数据
处理数据
写入结果文件

以上方案,虽然实现了数据更新写入结果文件,但在结果文件的指定上稍麻烦

联想到lunix下有如下命令,可实现将结果输出到指定的文件中:

echo 'hello world!' > 1.txt

试着执行:

echo "{\"_index\":\"book_shop\",\"_type\":\"it_book\",\"_id\":\"1\",\"_score\":1.0, \"_source\":{\"name\": \"Java编程思想(第4版)\",\"author\": \"[美] Bruce Eckel\",\"category\": \"编程语言\", \"price\": 109.0,\"publisher\": \"机械工业出版社\",\"date\": \"2007-06-01\",\"tags\": [ \"Java\", \"编程语言\" ]}}" > /work/2.txt

发现可以把json字符串写入指定文件,> 后面的路径,如上面的1.txt、/work/2.txt可以为相对路径绝对路径

二、java工程实现

我们只需要实现:在main方法中将结果的json字符串输出

注意点: 需要避免将日志打印到console,具体解决办法为日志使用slf4j,并引入slf4j-simple或slf4j-nop

1. 定义main方法


import java.io.IOException;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;import com.fly.json.entity.Article;
import com.fly.json.entity.BlogData;
import com.fly.json.entity.Record;
import com.fly.json.utils.JsonBeanUtils;
import com.fly.json.utils.ShellExecutor;import lombok.extern.slf4j.Slf4j;/*** 使用slf4j-simple(或slf4j-nop)规避log4j-slf4j-impl将日志打印到console<br>* slf4j-simple默认情況下只输出info以上(包含info)级別的日志, 且仅把日志输入到System.err* */
@Slf4j
public class JsonDataPrint
{/*** 验证: syso输出内容,jar运行可写入文件<br>* 运行:java -jar easy-json-0.0.1.jar > /work/1.txt* * @param args* @throws IOException*/public static void main(String[] args)throws IOException{// windows下Jar运行返回值中文乱码,unix下Jar运行返回值正常List<Article> articles = IntStream.rangeClosed(1, 2).mapToObj(i -> String.format("curl -e \"blog.csdn.net\" \"https://blog.csdn.net/community/home-api/v1/get-business-list?page=%s&size=10&businessType=blog&username=qq_16127313\"", i)).map(cmd -> ShellExecutor.execute(cmd)).map(json -> parseToBlogData(json)).filter(blog -> blog != null).map(blog -> blog.getData().getList()).flatMap(List::stream).collect(Collectors.toList());// 构造对象BlogData blogData = new BlogData().setData(new Record().setList(articles));String jsonData = JsonBeanUtils.beanToJson(blogData, true);System.out.println(jsonData);}/*** 解析json为BlogData* * @param json* @return*/private static BlogData parseToBlogData(String json){try{return JsonBeanUtils.jsonToBean(json, BlogData.class, true);}catch (IOException e){log.error(e.getMessage(), e);return null;}}
}

2. 测试运行

在项目根目录执行mvn clean package 会生成jar和docker镜像文件,注意需要在安装了java、maven、docker环境执行。

然后按下面的方式运行,便可实现随时灵活指定输出文件位置的功能。

java -jar easy-json-0.0.1.jar > /work/data.jsondocker run registry.cn-shanghai.aliyuncs.com/00fly/easy-json:0.0.1 > data.json

3. 源码放送

https://gitcode.com/00fly/easy-json


有任何问题和建议,都可以向我提问讨论,大家一起进步,谢谢!

-over-

相关文章:

通用查询类接口数据更新的另类实现

文章目录 一、简要概述二、java工程实现1. 定义main方法2. 测试运行3. 源码放送 一、简要概述 我们在通用查询类接口开发的另类思路中&#xff0c;关于接口数据的更新&#xff0c;提出了两种方案&#xff1a; 文件监听 #mermaid-svg-oJQjD6jQ8T19XlHA {font-family:"tre…...

sentinel详细使用教学

sentinel源码地址&#xff1a; https://github.com/alibaba/Sentinel/wiki/%E4%BB%8B%E7%BB%8D sentinel官方文档&#xff1a; https://sentinelguard.io/zh-cn/docs/introduction.html Sprong Cloud alibaba Sentinel文档【小例子】 : https://github.com/alibaba/spring-cl…...

python django

官网地址 https://www.djangoproject.com/ 安装 控制台输入命令 pip install django 或者可以指定版本号 pip install django3.2.4 创建项目 在控制台找个目录存放生成好的项目&#xff0c;输入命令 django-admin startproject demo_django 然后用pycharm打开项目可以…...

SuperMap iClient3D for WebGL 影像数据可视范围控制

在共享同一影像底图的服务场景中&#xff0c;如何基于用户权限体系实现差异化的数据可视范围控制&#xff1f;SuperMap iClient3D for WebGL提供了自定义区域影像裁剪的方法。让我们一起看看吧&#xff01; 一、数据制作 对于上述视频中的地图制作&#xff0c;此处不做讲述&am…...

HTML元素,标签到底指的哪块部分?单双标签何时使用?

1. 标签&#xff08;Tag&#xff09; vs 元素&#xff08;Element&#xff09; 标签&#xff08;Tag&#xff09; 标签是 HTML 中用于定义元素的符号&#xff0c;用尖括号 < > 包裹。例如 <img> 是标签。元素&#xff08;Element&#xff09; 元素是由 标签 内容…...

OpenHarmony4.1-轻量与小型系统ubuntu开发环境

因OpenHarmony官网提供包含轻量、小型与标准系统的全量代码非常宠大&#xff0c;解包后大概需要70G以上硬盘空间&#xff0c;如要编译标准系统则需要140G以上空间。 如硬盘空间有限与只使用轻量/小型OpenHarmony系统&#xff0c;则可以下载并直接使用本人裁剪源码过的ubuntu硬盘…...

秒杀系统的常用架构是什么?怎么设计?

架构 秒杀系统需要单独部署&#xff0c;如果说放在订单服务里面&#xff0c;秒杀的系统压力太大了就会影响正常的用户下单。 常用架构&#xff1a; Redis 数据倾斜问题 第一步扣减库存时 假设现在有 10 个商品需要秒杀&#xff0c;正常情况下&#xff0c;这 10 个商品应该均…...

LabVIEW中三种PSD分析VI的区别与应用

在LabVIEW的声音与振动分析工具包中&#xff0c;SVFA Power Spectral Density VI、SVFA Power Spectral Density Subset VI 和 SVFA Zoom Power Spectral Density VI 均用于信号频域分析&#xff0c;但它们在功能、适用场景和操作逻辑上存在显著差异。以下从区别、应用场合、注…...

Python 如何实现 Markdown 记账记录转 Excel 存储

文章精选推荐 1 JetBrains Ai assistant 编程工具让你的工作效率翻倍 2 Extra Icons&#xff1a;JetBrains IDE的图标增强神器 3 IDEA插件推荐-SequenceDiagram&#xff0c;自动生成时序图 4 BashSupport Pro 这个ides插件主要是用来干嘛的 &#xff1f; 5 IDEA必装的插件&…...

蓝桥杯备考:动态规划入门题目之下楼梯问题

按照动态规划解题顺序&#xff0c;首先&#xff0c;我们要定义状态表示&#xff0c;这里根据题意f[i]就应该表示有i个台阶方案总数 第二步就是 确认状态转移方程&#xff0c;画图分析 所以实际上f[i] 也就是说i个台阶的方案数实际上就是第i-1个格子的方案数第i-2个格子的方案数…...

【树莓派学习】树莓派3B+的安装和环境配置

【树莓派学习】树莓派3B的安装和环境配置 文章目录 【树莓派学习】树莓派3B的安装和环境配置一、搭建Raspberry Pi树莓派运行环境1、下载树莓派镜像下载器2、配置wifi及ssh3、SSH访问树莓派1&#xff09;命令行登录2&#xff09;远程桌面登录3&#xff09;VNC登录&#xff08;推…...

算法题(83):寄包柜

审题&#xff1a; 需要我们对模拟柜子的数组进行插入数据和打印数据的操作 思路&#xff1a; 首先我们观察题目&#xff0c;发现可以用一个数组表示一个柜子&#xff0c;而数组中每个索引的位置可以看成是一个个格子。但是柜子的数据量是1e5&#xff0c;且格子的数据量是1e5.如…...

深入浅出MySQL:概述与体系结构解析

目录 1. 初识MySQL 1.1. 数据库 1.1.1. OLTP&#xff08;联机事务处理&#xff09;1.1.2. OLAP&#xff08;联机分析处理&#xff09; 2. SQL 2.1. 定义2.2. DQL&#xff08;数据查询语言&#xff09;2.3. DML&#xff08;数据操纵语言&#xff09;2.4. DDL&#xff08;数据定…...

tin这个单词怎么记

英语单词 tin&#xff0c;一般用作名词&#xff0c;意为“罐头&#xff1b;锡”&#xff1a; tin n.锡&#xff1b;罐头&#xff1b;罐&#xff1b;罐头盒&#xff1b;(盛涂料、胶水等的)马口铁罐&#xff0c;白铁桶&#xff1b;罐装物&#xff1b;金属食品盒&#xff1b;烘焙…...

【0005】Python变量详解

如果你觉得我的文章写的不错&#xff0c;请关注我哟&#xff0c;请点赞、评论&#xff0c;收藏此文章&#xff0c;谢谢&#xff01; 本文内容体系结构如下&#xff1a; 任何一个语言编写的程序或者项目&#xff0c;都需要数据的支持&#xff0c;没有数据的项目不能称之为一个…...

yolov8_pose模型,使用rknn在安卓RK3568上使用

最近在使用rknn的一些功能,看了看文档以及自己做的一些jni,使用上yolov8_pose的模型. 1.我们先下载一下rknn的模型功能代码,rk有自己做的一套demo 地址:GitHub - airockchip/rknn_model_zooContribute to airockchip/rknn_model_zoo development by creating an account on G…...

HTTP 协议的发展历程:从 HTTP/1.0 到 HTTP/2.0

HTTP 协议的发展历程&#xff1a;从 HTTP/1.0 到 HTTP/2.0 HTTP&#xff08;HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff09;是 Web 的基础协议&#xff0c;用于客户端和服务器之间的通信。从 HTTP/1.0 到 HTTP/2.0&#xff0c;HTTP 协议经历了多次重大改…...

PartitionFinder2 安装与使用-bioinfomatics tools 051

1. 引言 PartitionFinder2 是目前针对大中型数据集&#xff08;核苷酸、氨基酸、形态数据&#xff09;最理想的分区检测和进化模型选择工具。其推演的最优进化模型结果与 jModelTest2&#xff08;核苷酸&#xff09;和 ProTest3&#xff08;氨基酸&#xff09;的结果较为接近。…...

MCP与RAG:增强大型语言模型的两种路径

引言 近年来&#xff0c;大型语言模型&#xff08;LLM&#xff09;在自然语言处理任务中展现了令人印象深刻的能力。然而&#xff0c;这些模型的局限性&#xff0c;如知识过时、生成幻觉&#xff08;hallucination&#xff09;等问题&#xff0c;促使研究人员开发了多种增强技…...

ARM 架构下 cache 一致性问题整理

本篇文章主要整理 ARM 架构下&#xff0c;和 Cache 一致性相关的一些知识。 本文假设读者具备一定的计算机体系结构和 Cache 相关基础知识&#xff0c;适合有相关背景的读者阅读 1、引言 简单介绍一下 Cache 和内存之间的关系 在使能 Cache 的情况下&#xff0c;CPU 每次获取数…...

GB28181未来发展趋势,如何借助于EasyGBS国标GB28181平台+EasyGBD国标GB28181设备端抓住大机会

GB28181规范目前已经迎来了2022版&#xff0c;随着规范行业影响力和应用范围越来越大&#xff0c;相信还会有类似2028、2030等迭代版本出来&#xff0c;我们预测的GB28181发展趋势可能会是以下几个方面&#xff0c;感兴趣的也可以跟我单独探讨&#xff1a; 技术标准持续优化&a…...

代数结构—笔记

线性空间 如果满足以下性质&#xff0c;则域 K K K上定义了二元运算&#xff08;加法&#xff09;与二元函数&#xff08;数乘&#xff09;的非空集合 X X X称为线性空间。 1、加法封闭性&#xff1a;对任意 u , v ∈ X u, v \in X u,v∈X&#xff0c;存在 u v ∈ X uv\in X …...

tcc编译器教程1 配置tcc编译器环境

TinyCC&#xff08;又名TCC&#xff09;是一款开源小型但超快速的C编译器。下面介绍在windows下使用 1软件下载 tcc编译器官网为 https://www.bellard.org/tcc/ 下载地址为 http://download.savannah.gnu.org/releases/tinycc/ 选择其中tcc-0.9.27-win64-bin.zip进行下载 htt…...

安全模块设计:token服务、校验注解(开启token校验、开启签名校验、允许处理API日志)、获取当前用户信息的辅助类

文章目录 引言pom.xmlI 校验注解ApiValidationII token服务TokenService获取当前用户信息的辅助类III 域登录接口响应数据登陆用户信息引言 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/PO…...

机器学习:线性回归,梯度下降,多元线性回归

线性回归模型 (Linear Regression Model) 梯度下降算法 (Gradient Descent Algorithm) 的数学公式 多元线性回归&#xff08;Multiple Linear Regression&#xff09;...

报错The default superclass, “jakarta.servlet.http.HttpServlet“(已经配置好tomcat)

报错报错DescriptionResourcePathLocationType The default superclass,“jakarta.servlet.http.HttpServlet”, according to the project’s Dynamic Web Module facet version (5.0), was not found on the Java Build Path. 解决办法&#xff1a; 根据错误信息&#xff0…...

【人工智能】数据挖掘与应用题库(1-100)

1、涉及变化快慢的问题可以考虑使用导数来分析。 答案:对 2、导数的几何意义是曲线在某点处切线的斜率。 答案:对 3、函数在某点的左导数存在,则导数就存在。 答案:错 4、关于梯度下降算法,下列说法错误的是( ) 错误:梯度下降算法能找到函数精确的最小值。 5、正…...

C#委托(delegate)的常用方式

C# 中委托的常用方式&#xff0c;包括委托的定义、实例化、不同的赋值方式以及匿名委托的使用。 委托的定义 // 委托的核心是跟委托的函数结构一样 public delegate string SayHello(string c);public delegate string SayHello(string c);&#xff1a;定义了一个公共委托类型 …...

【弹性计算】弹性裸金属服务器和神龙虚拟化(一):功能特点

弹性裸金属服务器和神龙虚拟化&#xff08;一&#xff09;&#xff1a;功能特点 特征一&#xff1a;分钟级交付特征二&#xff1a;兼容 VPC、SLB、RDS 等云平台全业务特征三&#xff1a;兼容虚拟机镜像特征四&#xff1a;云盘启动和数据云盘动态热插拔特征五&#xff1a;虚拟机…...

小结:BGP 的自动聚合与手动聚合

BGP 的自动聚合与手动聚合 BGP 在大规模网络中&#xff0c;通常会进行路由聚合&#xff08;Route Aggregation&#xff09;&#xff0c;即将多个更具体&#xff08;更小&#xff09;的路由前缀合并成一个更大&#xff08;更粗略&#xff09;的前缀&#xff0c;以减少 BGP 路由…...