java解析json复杂数据的第四种思路

发布时间:2024年01月16日

一、概述

接前篇
java解析json复杂数据的两种思路
java解析json复杂数据的第三种思路

我们已经有了解析json数据的几种思路,下面介绍的方法是最少依赖情况下的字符串解析, 流程如图:

接口API获取JSON
JSON数据换行处理
解析行数据

二、数据预览

1. 接口json数据

https://blog.csdn.net/community/home-api/v1/get-business-list?page=1&size=5&businessType=blog&username=qq_16127313

{"code":200,"message":"success","traceId":"338267ed-b95d-4445-8aa3-124b37bc19f6","data":{"list":[{"articleId":135576948,"title":"记csv、parquet数据预览一个bug的解决","description":"工作中遇到通过sparksession解析csv、parquet文件并预览top100的需求。","url":"https://blog.csdn.net/qq_16127313/article/details/135576948","type":1,"top":false,"forcePlan":false,"viewCount":1206,"commentCount":0,"editUrl":"https://editor.csdn.net/md?articleId=135576948","postTime":"2024-01-13 23:22:17","diggCount":20,"formatTime":"2024.01.13","picList":["https://img-blog.csdnimg.cn/direct/02ca1a8caa824fd38996545d092792c9.jpeg"],"collectCount":15},{"articleId":135506426,"title":"基于jackson封装的json字符串与javaBean对象转换工具","description":"带有API接口交互的web项目开发过程中,json字符串与javaBean对象之间的相互转换是比较常见的需求,基于jackson ObjectMapper 实现的工具类较好的满足了此需求。","url":"https://blog.csdn.net/qq_16127313/article/details/135506426","type":1,"top":false,"forcePlan":false,"viewCount":868,"commentCount":0,"editUrl":"https://editor.csdn.net/md?articleId=135506426","postTime":"2024-01-10 17:48:42","diggCount":8,"formatTime":"2024.01.10","picList":["https://img-blog.csdnimg.cn/direct/dee917c9ca45448f902b433f8210ca43.png"],"collectCount":9},{"articleId":135481476,"title":"基于Jackson封装的JSON、Properties、XML、YAML 相互转换的通用方法","description":"我们在yaml转换成JSON、MAP、Properties通过引入实现了JSON、Properties、XML、YAML文件的相互转换,具体封装的类、方法如下:上面的实现,定义了多个类、多个方法,使用不太方便,迫切需要精简逻辑。","url":"https://blog.csdn.net/qq_16127313/article/details/135481476","type":1,"top":false,"forcePlan":false,"viewCount":1692,"commentCount":0,"editUrl":"https://editor.csdn.net/md?articleId=135481476","postTime":"2024-01-09 17:43:30","diggCount":31,"formatTime":"2024.01.09","picList":["https://img-blog.csdnimg.cn/direct/3f266e9d43b44592aa0e0c9417dada6f.png"],"collectCount":17},{"articleId":135469157,"title":"java解析json复杂数据的第三种思路","description":"接上篇java解析json复杂数据的两种思路我们已经通过解析返回json字符串得到数据,现在改变思路,通过按照如下流程获取:fill:#333;color:#333;color:#333;fill:none;接口API获取JSONJSON转XMLdom4j使用XPath解析xml。","url":"https://blog.csdn.net/qq_16127313/article/details/135469157","type":1,"top":false,"forcePlan":false,"viewCount":1498,"commentCount":0,"editUrl":"https://editor.csdn.net/md?articleId=135469157","postTime":"2024-01-09 08:34:07","diggCount":18,"formatTime":"2024.01.09","picList":["https://img-blog.csdnimg.cn/direct/ccd618b9e5194ed9a2f5848a8f3b8734.png"],"collectCount":19},{"articleId":135418954,"title":"java解析json复杂数据的两种思路","description":"萌新小明最近新开了CSDN博客,蠢蠢欲动,迫不及待的发表了几篇工作中积累下来的解决问题的涂鸦之作,看着访问量慢慢涨起来,心中暗暗窃喜。现在小明想每天23点记录一下每篇文章的访问量。。。","url":"https://blog.csdn.net/qq_16127313/article/details/135418954","type":1,"top":false,"forcePlan":false,"viewCount":1605,"commentCount":0,"editUrl":"https://editor.csdn.net/md?articleId=135418954","postTime":"2024-01-06 14:11:40","diggCount":18,"formatTime":"2024.01.06","picList":["https://img-blog.csdnimg.cn/direct/a409a0f4555c459fa05c00fd9ee0ea8c.png"],"collectCount":25}],"total":76}}

观察接口返回数据,我们看到json是经过压缩的,下面我们通过关键字符串替换方式将json节点数据转换成一行行数据。

三、代码实现

关键字符串主要有{ } ,
注意:因为是全文替换,有可能会存在内容替换导致的获取到的数据,并非需要的情况

例如:上面的title、description节点数据有可能存在符合特征的字符串被替换,需要在实际调试中小心尽量避免。

1. 核心代码

 /**
     * 获取urls
     */
    private void printUrls()
    {
        try
        {
            String jsonBody = webClient.get()
                .uri("https://blog.csdn.net/community/home-api/v1/get-business-list?page=1&size=200&businessType=blog&username=qq_16127313")
                .acceptCharset(StandardCharsets.UTF_8)
                .accept(MediaType.APPLICATION_JSON)
                .retrieve()
                .bodyToMono(String.class)
                .block()
                .replace("{", "{\n")
                .replace("}", "}\n")
                .replace(",", ",\n");
            try (InputStream is = new ByteArrayInputStream(jsonBody.getBytes(StandardCharsets.UTF_8)))
            {
                List<String> urls = IOUtils.readLines(is, StandardCharsets.UTF_8).stream().filter(line -> StringUtils.contains(line, "\"url\":")).map(n -> StringUtils.substringBetween(n, ":\"", "\",")).collect(Collectors.toList());
                urls.stream().forEach(log::info);
            }
        }
        catch (IOException e)
        {
            log.error(e.getMessage(), e);
        }
    }    

2. 字符串替换结果

{
"code":200,
"message":"success",
"traceId":"a212ea3c-f72b-4315-b620-22b8df2d3ce7",
"data":{
"list":[{
"articleId":135576948,
"title":"记csv、parquet数据预览一个bug的解决",
"description":"工作中遇到通过sparksession解析csv、parquet文件并预览top100的需求。",
"url":"https://blog.csdn.net/qq_16127313/article/details/135576948",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":1206,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=135576948",
"postTime":"2024-01-13 23:22:17",
"diggCount":20,
"formatTime":"2024.01.13",
"picList":["https://img-blog.csdnimg.cn/direct/02ca1a8caa824fd38996545d092792c9.jpeg"],
"collectCount":15}
,
{
"articleId":135506426,
"title":"基于jackson封装的json字符串与javaBean对象转换工具",
"description":"带有API接口交互的web项目开发过程中,json字符串与javaBean对象之间的相互转换是比较常见的需求,基于jackson ObjectMapper 实现的工具类较好的满足了此需求。",
"url":"https://blog.csdn.net/qq_16127313/article/details/135506426",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":870,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=135506426",
"postTime":"2024-01-10 17:48:42",
"diggCount":8,
"formatTime":"2024.01.10",
"picList":["https://img-blog.csdnimg.cn/direct/dee917c9ca45448f902b433f8210ca43.png"],
"collectCount":9}
,
{
"articleId":135481476,
"title":"基于Jackson封装的JSON、Properties、XML、YAML 相互转换的通用方法",
"description":"我们在yaml转换成JSON、MAP、Properties通过引入实现了JSON、Properties、XML、YAML文件的相互转换,具体封装的类、方法如下:上面的实现,定义了多个类、多个方法,使用不太方便,迫切需要精简逻辑。",
"url":"https://blog.csdn.net/qq_16127313/article/details/135481476",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":1692,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=135481476",
"postTime":"2024-01-09 17:43:30",
"diggCount":31,
"formatTime":"2024.01.09",
"picList":["https://img-blog.csdnimg.cn/direct/3f266e9d43b44592aa0e0c9417dada6f.png"],
"collectCount":17}
,
{
"articleId":135469157,
"title":"java解析json复杂数据的第三种思路",
"description":"接上篇java解析json复杂数据的两种思路我们已经通过解析返回json字符串得到数据,
现在改变思路,
通过按照如下流程获取:fill:#333;color:#333;color:#333;fill:none;接口API获取JSONJSON转XMLdom4j使用XPath解析xml。",
"url":"https://blog.csdn.net/qq_16127313/article/details/135469157",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":1501,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=135469157",
"postTime":"2024-01-09 08:34:07",
"diggCount":18,
"formatTime":"2024.01.09",
"picList":["https://img-blog.csdnimg.cn/direct/ccd618b9e5194ed9a2f5848a8f3b8734.png"],
"collectCount":19}
,
{
"articleId":135418954,
"title":"java解析json复杂数据的两种思路",
"description":"萌新小明最近新开了CSDN博客,蠢蠢欲动,迫不及待的发表了几篇工作中积累下来的解决问题的涂鸦之作,看着访问量慢慢涨起来,心中暗暗窃喜。现在小明想每天23点记录一下每篇文章的访问量。。。",
"url":"https://blog.csdn.net/qq_16127313/article/details/135418954",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":1607,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=135418954",
"postTime":"2024-01-06 14:11:40",
"diggCount":18,
"formatTime":"2024.01.06",
"picList":["https://img-blog.csdnimg.cn/direct/a409a0f4555c459fa05c00fd9ee0ea8c.png"],
"collectCount":25}
,
{
"articleId":135244727,
"title":"java lambda表达式训练题一",
"description":"Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。使用 Lambda 表达式可以使代码变的更加简洁紧凑。",
"url":"https://blog.csdn.net/qq_16127313/article/details/135244727",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":1734,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=135244727",
"postTime":"2023-12-27 18:07:30",
"diggCount":7,
"formatTime":"2023.12.27",
"picList":["https://img-blog.csdnimg.cn/direct/d59c68b950754e879914b5319cd1b53f.png"],
"collectCount":8}
,
{
"articleId":135173565,
"title":"二维码初体验 com.google.zxing 实现续 - web api封装",
"description":"在 二维码初体验 com.google.zxing 实现 我们实现了二维码的生成,但是大部分情况下,二维码的相关功能是作为API接口来提供服务的。我们下面便演示在springboot、Knife4j下封装api接口来实现二维码生成功能。如何使用下面的备份文件恢复成原始的项目代码,请移步查阅:神奇代码恢复工具-over-",
"url":"https://blog.csdn.net/qq_16127313/article/details/135173565",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":2396,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=135173565",
"postTime":"2023-12-23 20:17:11",
"diggCount":23,
"formatTime":"2023.12.23",
"picList":["https://img-blog.csdnimg.cn/direct/f0c994ca789a495a8c8c03d86d626f24.jpeg"],
"collectCount":23}
,
{
"articleId":135167613,
"title":"二维码初体验 com.google.zxing 实现",
"description":"Java 操作二维码的开源项目很多,如 SwetakeQRCode、BarCode4j、Zxing 等,这边以Zxing 为例进行介绍。选择需要生成QR原始文件,支持 “清除空白行及空格” 以减少二维码图片大小。支持输入文本内容,直接生成二维码代码结构QrCodeUI: 完整版本代码SimpleQrCodeUI:简化版本代码如何使用下面的备份文件恢复成原始的项目代码,请移步查阅:神奇代码恢复工具-over-",
"url":"https://blog.csdn.net/qq_16127313/article/details/135167613",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":1779,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=135167613",
"postTime":"2023-12-23 13:52:23",
"diggCount":6,
"formatTime":"2023.12.23",
"picList":["https://img-blog.csdnimg.cn/direct/d3eeac85857543869dce8967c570bdc4.jpeg"],
"collectCount":11}
,
{
"articleId":135135799,
"title":"【随笔】MD5加密字符串、文件apache、springframework实现",
"description":"【代码】【随笔】MD5加密字符串、文件commons-codec、springframework实现。",
"url":"https://blog.csdn.net/qq_16127313/article/details/135135799",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":2205,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=135135799",
"postTime":"2023-12-21 17:29:54",
"diggCount":9,
"formatTime":"2023.12.21",
"picList":["https://img-blog.csdnimg.cn/direct/dc26b7f1c731494f80c8c3b3badfa95d.jpeg"],
"collectCount":9}
,
{
"articleId":135087188,
"title":"【随笔】java工程中JSON 字符串格式化输出",
"description":"json字符串格式化输出fastjson、gson、jackson实现。",
"url":"https://blog.csdn.net/qq_16127313/article/details/135087188",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":1935,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=135087188",
"postTime":"2023-12-19 17:07:40",
"diggCount":8,
"formatTime":"2023.12.19",
"picList":["https://img-blog.csdnimg.cn/direct/058249a1749e4ff5b62e1fcabf516c37.png"],
"collectCount":6}
,
{
"articleId":134502740,
"title":"【备忘录】Docker容器、镜像删除与资源清理命令",
"description":"【代码】【备忘录】Docker容器删除与资源清理命令。",
"url":"https://blog.csdn.net/qq_16127313/article/details/134502740",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":9017,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=134502740",
"postTime":"2023-11-20 18:02:20",
"diggCount":0,
"formatTime":"2023.11.20",
"picList":["https://img-blog.csdnimg.cn/cf2b74076d334a419f2d02f98298b1f4.jpeg"],
"collectCount":0}
,
{
"articleId":134482704,
"title":"如何解决swagger-editor在线接口调试时的跨域问题",
"description":"实现监听8081端口,将请求转发到 http://175.24.127.215:8080,重点是标红的这段,实现添加允许跨域信息header。文章中,我们简单了解了如何在docker运行应用,接下来我们实际操作的时候,便可能遇到接口调试不通的问题。现在服务器B安装nginx服务,客户端A直接将请求发送到服务器B某端口,由nginx将请求转发给接口C。C返回结果后,由nginx主动添加header信息,返回A。具体思路就是客户端A需要访问接口C,因跨域无法直接访问。发现接口报错,跨域调用被拒绝。",
"url":"https://blog.csdn.net/qq_16127313/article/details/134482704",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":10384,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=134482704",
"postTime":"2023-11-18 21:30:41",
"diggCount":0,
"formatTime":"2023.11.18",
"picList":["https://img-blog.csdnimg.cn/e4632ffd035f4329b498c12d4b711db7.png"],
"collectCount":1}
,
{
"articleId":134352661,
"title":"最简WebClient 同步、异步调用示例",
"description":"WebClient是Spring WebFlux模块提供的一个非阻塞的基于响应式编程的进行Http请求的客户端工具,从Spring5.0开始WebClient作为RestTemplete的替代品,有更好的响应式能力,支持异步调用,可以在Springboot项目中实现网络请求。",
"url":"https://blog.csdn.net/qq_16127313/article/details/134352661",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12968,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=134352661",
"postTime":"2023-11-11 20:03:41",
"diggCount":0,
"formatTime":"2023.11.11",
"picList":["https://img-blog.csdnimg.cn/d9bc94f250394fbb8d2ad91ed576a103.jpeg"],
"collectCount":1}
,
{
"articleId":134278293,
"title":"【springboot配置项动态刷新】与【yaml文件转换为java对象】",
"description":"springboot 配置文件一般以yaml方式保存,除了系统配置项如spring、server等外,还有我们自定义的配置项,方便系统启动时自动注入。自定义的配置项一般是动态配置项,在系统运行过程中,可能需要在线修改,来实现自定义的配置项不停服更新,也就是类似于spring-cloud-starter-config的动态刷新。由于系统不重启,无法通过自动注入的方式自动更新自定义配置,
 这儿便需要我们手动加载yaml文件,
转换为java对象,
将变化赋值到spring管理的对象中我们准备采用最常见的snakey",
"url":"https://blog.csdn.net/qq_16127313/article/details/134278293",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12925,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=134278293",
"postTime":"2023-11-08 17:47:12",
"diggCount":0,
"formatTime":"2023.11.08",
"picList":["https://img-blog.csdnimg.cn/0619b786fb574792acabe9cde207623c.png"],
"collectCount":1}
,
{
"articleId":134199137,
"title":"Springboot JSP项目如何以war、jar方式运行",
"description":"Spring Boot 官方不推荐使用JSP来作为视图,但是仍有部分项目使用了JSP视图,Springboot JSP项目运行方式有war、Jar两种方式。如何使用下面的备份文件恢复成原始的项目代码,请移步查阅:神奇代码恢复工具三,准备工作1. pom.xml 引入组件2. application.yml 指定jsp配置application.yml四,war方式运行1. 修改pom.xml文件2. mvn执行打包执行后会在target目录生成war包,拷贝出来后运行浏览器访问: h",
"url":"https://blog.csdn.net/qq_16127313/article/details/134199137",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12827,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=134199137",
"postTime":"2023-11-03 12:36:01",
"diggCount":0,
"formatTime":"2023.11.03",
"picList":["https://img-blog.csdnimg.cn/b01be69e6ff64de29573d371fdda41e3.png"],
"collectCount":0}
,
{
"articleId":134168716,
"title":"Spring RestTemplate 各种打开方式集锦",
"description":"RestTemplate是一个执行HTTP请求的同步阻塞式工具类,它仅仅只是在 HTTP 客户端库(例如 JDK HttpURLConnection,Apache HttpComponents,okHttp 等)基础上,封装了更加简单易用的模板方法 API,方便程序员利用已提供的模板方法发起网络请求和处理,能很大程度上提升我们的开发效率。其实Spring已经为我们提供了一种简单便捷的模板类来进行操作,它就是RestTemplate。现如今的 IT 项目,由服务端向外发起网络请求的场景,基本上处处可见!",
"url":"https://blog.csdn.net/qq_16127313/article/details/134168716",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12687,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=134168716",
"postTime":"2023-11-01 20:23:20",
"diggCount":0,
"formatTime":"2023.11.01",
"picList":["https://img-blog.csdnimg.cn/4b29abc22a70482ea03a6f9a1fbe4894.jpeg"],
"collectCount":1}
,
{
"articleId":134129653,
"title":"Docker 运行swagger-editor实现在线接口文档维护与调试",
"description":"在Swagger Editor中,我们可以基于YAML等语法定义我们的RESTful API,然后它会自动生成一篇排版优美的API文档,并且提供实时预览。因工作需要,需要搭建python运行环境,项目中python基于flask实现了swagger在线文档以及接口测试,前后端对接开发时需要使用。项目比较庞大,完全部署的话,只使用swagger在线文档功能的话,太浪费资源了。这么看来swagger-editor可以基于swagger yaml文件实现在线接口文档生成,完全符合我们的需求。",
"url":"https://blog.csdn.net/qq_16127313/article/details/134129653",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12795,
"commentCount":2,
"editUrl":"https://editor.csdn.net/md?articleId=134129653",
"postTime":"2023-10-31 13:00:00",
"diggCount":1,
"formatTime":"2023.10.31",
"picList":["https://img-blog.csdnimg.cn/8dbc787249d74c29a6274e292f867afc.png"],
"collectCount":0}
,
{
"articleId":134099991,
"title":"SpringBoot工程启动时自动创建数据库、数据表",
"description":"DML是数据操作语言,主要用来对数据库里的数据进行操作,涉及具体数据,一般保存在data.sql。我们知道,springboot工程配置数据源一般采用yaml或properties文件的方式。DDL是数据定义语言,主要用来对数据库表结构进行操作,不涉及具体数据,一般保存在。注意这里配置的druid.username一定要有。之前版本,springboot2.5.0之后版本。这里yaml文件引用了properties文件。,
否则数据库不存在的前提下,会创建失败。注意以上说明,是针对。",
"url":"https://blog.csdn.net/qq_16127313/article/details/134099991",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":13353,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=134099991",
"postTime":"2023-10-29 10:38:52",
"diggCount":0,
"formatTime":"2023.10.29",
"picList":["https://img-blog.csdnimg.cn/a7b7e5475fde4591928da1687b8b67dc.png"],
"collectCount":1}
,
{
"articleId":134050713,
"title":"【求教】老菜鸟遇到新问题,双bug欢迎有緣人答疑",
"description":"俗话说:但行好事,
莫问前程,
心之所向,
无问西东编程亦然,coding多了,就会遇到各种各样奇怪的问题,真是让人欢喜让人忧啊!这不,小C最近实现了一个使用mysql数据库来保存日志的功能,不幸的是,遇到两个难解的问题,现拿出来,希望各位见多识广的大佬能帮忙分析,小可不胜感激!",
"url":"https://blog.csdn.net/qq_16127313/article/details/134050713",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12589,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=134050713",
"postTime":"2023-10-26 17:25:12",
"diggCount":0,
"formatTime":"2023.10.26",
"picList":["https://img-blog.csdnimg.cn/593bba46a58c4253baa495fad69c1359.jpeg"],
"collectCount":0}
,
{
"articleId":134019416,
"title":"服务器之日常整活",
"description":"言归正传,自从不小心踏足程序猿这个职业,便大部分时间与Code为伴,除了日常完成工作任务外,自己也研究过不少新奇的idea,积累了一些代码。这些代码大部分需要服务器资源来运行,下面简单将服务器用法做一些小小总结,给大家参考。等等,什么叫假如你有一台服务器,假如只有一台,肯定我想搞第二台,顺便第三台啊,哈哈哈!",
"url":"https://blog.csdn.net/qq_16127313/article/details/134019416",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12665,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=134019416",
"postTime":"2023-10-24 20:20:45",
"diggCount":0,
"formatTime":"2023.10.24",
"picList":["https://img-blog.csdnimg.cn/a245ebdfeed94a7db79deeacc0a87aed.png"],
"collectCount":1}
,
{
"articleId":134010951,
"title":"神奇代码备份恢复工具逸事与操作指南",
"description":"软件行业流传着一幅漫画:开发软件就像制造小轿车,不是一开始就有设计图,也不是将轮子、车身、车门、发动机按部就班安装上去就可以的,而是大概先出现独轮车,接着出现自行车,然后是滑板车,之后是三轮自行车,继而是两轮摩托车··……如此反复迭代,最后才得到成型的小轿车。这幅漫画讽刺的是开发新系统时“想当然”的做法,反映的是真实的探索过程。其实,不仅开发系统是这样,即使是开发一个小工具,也遵循类似的原则,毕竟大部分软件被开发出来,是需要去解决实际中遇到的难题的。n年前,小C曾入职一家软件公司,公司信息安全管理比较严格,",
"url":"https://blog.csdn.net/qq_16127313/article/details/134010951",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12646,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=134010951",
"postTime":"2023-10-24 14:07:07",
"diggCount":0,
"formatTime":"2023.10.24",
"picList":["https://img-blog.csdnimg.cn/02b296f99e1e431bb8c97d0f50fc074c.png"],
"collectCount":0}
,
{
"articleId":133792839,
"title":"神奇代码恢复工具",
"description":"小C是一名程序猿,他有好多新奇的点子,也乐于把这些变成文字分享给大家。这些分享大部分都与代码相关,在文章里面把这些代码全部按本来的结构展示出来也不是一件容易的事!这不,最近开发了一个小工具,界面介绍如下:procode-simple-0.0.1.jar在输入框里面输入待恢复的代码,点击\"开始恢复代码\" 便生成原来代码结构的代码。大家可以下载jar,拷贝附件代码尝试运行!代码恢复数据框输入的内容为:",
"url":"https://blog.csdn.net/qq_16127313/article/details/133792839",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12661,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=133792839",
"postTime":"2023-10-12 17:33:53",
"diggCount":0,
"formatTime":"2023.10.12",
"picList":["https://img-blog.csdnimg.cn/d148a23a7ee243cda4664aa4006beec2.png"],
"collectCount":0}
,
{
"articleId":133763881,
"title":"巧用h2-database.jar连接数据库",
"description":"H2 Database是一个开源的嵌入式数据库引擎,采用java语言编写,不受平台的限制,同时H2 Database提供了一个十分方便的web控制台用于操作和管理数据库内容。H2 Database还提供兼容模式,可以兼容一些主流的数据库,因此采用H2 Database作为开发期的数据库非常方便。",
"url":"https://blog.csdn.net/qq_16127313/article/details/133763881",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12663,
"commentCount":1,
"editUrl":"https://editor.csdn.net/md?articleId=133763881",
"postTime":"2023-10-11 17:38:45",
"diggCount":0,
"formatTime":"2023.10.11",
"picList":["https://img-blog.csdnimg.cn/06d4140489c342d0b531bb404e8be09b.png"],
"collectCount":0}
,
{
"articleId":133707738,
"title":"【Code】4种常用Java线程锁的特点,性能比较、使用场景",
"description":"本文是对相关主题文章的代码功能展示,主要通过代码形式来验证和演示功能,以加深对知识点的理解。如有遗漏或理解不正确的地方,欢迎大家拍砖!",
"url":"https://blog.csdn.net/qq_16127313/article/details/133707738",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12605,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=133707738",
"postTime":"2023-10-09 17:18:25",
"diggCount":0,
"formatTime":"2023.10.09",
"picList":["https://img-blog.csdnimg.cn/fabe30e269c34069b1c0d64e24923ebf.jpeg"],
"collectCount":0}
,
{
"articleId":82924432,
"title":"问答雕虫1",
"description":"问题:现在有如下表假设按时间顺序,记录中连续出现0.2 0.3 0.5 0.7四条记录记为一次有效数据组,统计一段时间范围内,有效数据组出现的次数,最终计算有效数据组在整个时间范围内的记录的占比。用mysql语句或者函数如何实现?解答:数据库增加辅助字段 sign, varchar 4位思路分4步走:按时间顺序筛选出 0.2 开始的记录取随后的3条记录,依次判断是否为0.3,
0...",
"url":"https://blog.csdn.net/qq_16127313/article/details/82924432",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12648,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=82924432",
"postTime":"2023-10-04 09:33:19",
"diggCount":0,
"formatTime":"2023.10.04",
"picList":["https://img-blog.csdnimg.cn/f644a1c8699e4e37a44426afbd21d11b.jpeg"],
"collectCount":0}
,
{
"articleId":133519731,
"title":"备忘录:Docker基础操作与常用命令",
"description":"简而言之,docker-compose适用于开发和测试。Docker Stack 则适用于大规模场景和生产环境。Docker Stack 和 Docker Compose 的一个区别是Stack 不支持构建。这意味着在部署 Stack 之前,所有镜像必须提前构建完成。",
"url":"https://blog.csdn.net/qq_16127313/article/details/133519731",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12631,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=133519731",
"postTime":"2023-10-03 15:43:01",
"diggCount":0,
"formatTime":"2023.10.03",
"picList":["https://img-blog.csdnimg.cn/45c5a3aa63624714a8b81a4007c52105.png"],
"collectCount":0}
,
{
"articleId":133500980,
"title":"springmvc项目部署包独立jar方式运行",
"description":"小A向其余2人抱怨说,咱们公司开发小组维护的那个历史比较悠久的B项目,在测试服务上部署太麻烦了,每次更新都需要先停Tomcat服务器,再删掉旧的war和目录,然后上传war包,最后再重启服务。小B说,据我所知,那个B项目是springmvc框架开发的,历史悠久,想把他转换为springboot框架Jar运行,基本上不太可能,除非大动。小A、小B、小C都在一家初创公司工作,小A是系统运维,小B和小C都是后台开发,他们都是能力卓越的IT工程狮。** 各位大佬,快来帮帮他,提供思路来解决他的难处!",
"url":"https://blog.csdn.net/qq_16127313/article/details/133500980",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12823,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=133500980",
"postTime":"2023-10-02 22:21:36",
"diggCount":4,
"formatTime":"2023.10.02",
"picList":["https://img-blog.csdnimg.cn/dbc7886b4d574e4ab3464bdf97558868.jpeg"],
"collectCount":1}
,
{
"articleId":133382490,
"title":"通过java向jar写入新文件",
"description":"test.jar在运行过程中是无法改变自身内容的,但是可以创建内容与test.jar一致的test2.jar。借助 commons-compress 来操作Jar。使用JDK API实现。",
"url":"https://blog.csdn.net/qq_16127313/article/details/133382490",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12903,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=133382490",
"postTime":"2023-09-28 14:51:35",
"diggCount":1,
"formatTime":"2023.09.28",
"picList":["https://img-blog.csdnimg.cn/82ff49f1115a4067b7ea252e651034f8.png"],
"collectCount":0}
,
{
"articleId":132943342,
"title":"SpringBoot工程web模式与非web模式和谐共处运行",
"description":"Spring Boot 是 Pivotal 团队在 Spring 的基础上提供的一套全新的开源框架,其目的是为了简化 Spring 应用的搭建和开发过程。Spring Boot 去除了大量的 XML 配置文件,简化了复杂的依赖管理。Spring Boot 具有 Spring 一切优秀特性,Spring 能做的事,Spring Boot 都可以做,而且使用更加简单,功能更加丰富,性能更加稳定而健壮。随着近些年来微服务技术的流行,Spring Boot 也成了时下炙手可热的技术。",
"url":"https://blog.csdn.net/qq_16127313/article/details/132943342",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12677,
"commentCount":1,
"editUrl":"https://editor.csdn.net/md?articleId=132943342",
"postTime":"2023-09-17 16:00:23",
"diggCount":0,
"formatTime":"2023.09.17",
"picList":["https://img-blog.csdnimg.cn/8f537f64d64f479391468a3d71bd5ea4.png"],
"collectCount":0}
,
{
"articleId":132926518,
"title":"SpringMVC工程之非web部分代码复用,并独立运行",
"description":"springMVC是位于spring web端的一个框架,是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦。下面我们以如何复用此SpringMVC工程的非web部分代码,
并脱离web环境使之独立运行。",
"url":"https://blog.csdn.net/qq_16127313/article/details/132926518",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12597,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=132926518",
"postTime":"2023-09-16 23:06:39",
"diggCount":0,
"formatTime":"2023.09.16",
"picList":["https://img-blog.csdnimg.cn/6e5d1b4c3c14433784f594e9e2db66d5.png"],
"collectCount":0}
,
{
"articleId":132917498,
"title":"log4j2 日志保存至数据库",
"description":"Apache Log4j 2是对Log4j的升级,它比其前身Log4j 1.x提供了重大改进,并提供了Logback中可用的许多改进,同时修复了Logback架构中的一些问题。是目前最优秀的Java日志框架,没有之一。官方Appenders提供了日志的多种输出方式实现。下面我们以 JDBCAppender 为例来说明如何在项目中实现系统日志保存到数据库。/*** 日志数据库数据源* @version [版本号,
 2023年3月27日]* @see [相关类/方法]",
"url":"https://blog.csdn.net/qq_16127313/article/details/132917498",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12771,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=132917498",
"postTime":"2023-09-16 15:02:40",
"diggCount":0,
"formatTime":"2023.09.16",
"picList":["https://img-blog.csdnimg.cn/4844639927bc4c3c80b0b422fcc861e6.png"],
"collectCount":2}
,
{
"articleId":132640453,
"title":"分布式锁实现二. memcached分布式锁",
"description":"add和set的区别在于:如果多线程并发set,则每个set都会成功,但最后存储的值以最后的set的线程为准。而add的话则相反,add会添加第一个到达的值,并返回true,后续的添加则都会返回false。(1)memcached采用列入LRU置换策略,所以如果内存不够,可能导致缓存中的锁信息丢失。为方便起见,已经将memcached服务器端程序上传到下面的目录,使用时只需要双击运行就好!memcached带有add函数,利用add函数的特性即可实现分布式锁。利用该点即可很轻松地实现分布式锁。",
"url":"https://blog.csdn.net/qq_16127313/article/details/132640453",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12660,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=132640453",
"postTime":"2023-09-02 17:40:14",
"diggCount":0,
"formatTime":"2023.09.02",
"picList":["https://img-blog.csdnimg.cn/7461e0a96eba4a3eae502137a7d83770.png"],
"collectCount":0}
,
{
"articleId":132612861,
"title":"分布式锁实现一. 利用Mysql数据库update锁",
"description":"分布式锁,即分布式系统中的锁。在单体应用中我们通过锁解决的是控制共享资源访问的问题,而分布式锁,就是解决了分布式系统中控制共享资源访问的问题。与单体应用不同的是,分布式系统中竞争共享资源的最小粒度从线程升级成了进程。",
"url":"https://blog.csdn.net/qq_16127313/article/details/132612861",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12648,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=132612861",
"postTime":"2023-08-31 22:56:25",
"diggCount":0,
"formatTime":"2023.08.31",
"picList":["https://img-blog.csdnimg.cn/5d3419cf76c64a7492120887a0ba7b09.png"],
"collectCount":0}
,
{
"articleId":132523351,
"title":"k3s初体验",
"description":"是轻量级的 Kubernetes。K3s 易于安装,仅需要 Kubernetes 内存的一半,所有组件都在一个小于 100 MB 的二进制文件中。K3s 是 rancher 公司开发维护的一套 K8s 发行版。目的是轻量化 K8s,并将其应用于 IoT 设备(比如树莓派)。简单来说,K3s 就是精简版 K8s,消耗资源极少。适用于以下场景:1、边缘计算-Edge2、物联网-IoT3、CI:持续集成4、开发5、ARM 6、嵌入 K8s。",
"url":"https://blog.csdn.net/qq_16127313/article/details/132523351",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12602,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=132523351",
"postTime":"2023-08-27 15:08:09",
"diggCount":0,
"formatTime":"2023.08.27",
"picList":["https://img-blog.csdnimg.cn/ebf6df88468340bcb2ddd5d7c0229799.png"],
"collectCount":0}
,
{
"articleId":132512424,
"title":"容器镜像生成记",
"description":"容器docker/k8s发布已有一段时间,不少小伙伴开始上手实践。下面以一个简单的应用为例。来说明如何生成镜像并推送至镜像仓库。",
"url":"https://blog.csdn.net/qq_16127313/article/details/132512424",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12634,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=132512424",
"postTime":"2023-08-26 17:00:05",
"diggCount":0,
"formatTime":"2023.08.26",
"picList":["https://img-blog.csdnimg.cn/ae6f00b7ea9e46c4bd2966cf2386717e.png"],
"collectCount":0}
,
{
"articleId":130374351,
"title":"【原创】yaml转换成JSON、MAP、Properties",
"description":"yaml读取和解析太麻烦,转换成properties文件处理就方便很多!",
"url":"https://blog.csdn.net/qq_16127313/article/details/130374351",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12959,
"commentCount":2,
"editUrl":"https://editor.csdn.net/md?articleId=130374351",
"postTime":"2023-04-25 21:28:27",
"diggCount":1,
"formatTime":"2023.04.25",
"picList":["https://img-blog.csdnimg.cn/direct/862003928aea4ad7876425b45496b1ff.png"],
"collectCount":2}
,
{
"articleId":128268341,
"title":"springboot工程运行时动态改变logj4j2日志级别",
"description":"springboot工程运行时动态改变logj4j2日志级别。",
"url":"https://blog.csdn.net/qq_16127313/article/details/128268341",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12681,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=128268341",
"postTime":"2022-12-10 19:57:36",
"diggCount":0,
"formatTime":"2022.12.10",
"picList":["https://img-blog.csdnimg.cn/6ab02b85a94a4a25bcc11f499c8d23f5.png"],
"collectCount":1}
,
{
"articleId":128066577,
"title":"spring 应用URL探测",
"description":"当发现指定  baseUrl + “:” + port + “/” + path 可以访问时,自动打开该地址。此代码无强依赖,springmvc,springboot工程均可用。从配置文件读取基础url信息,端口起始信息,访问路径列表。",
"url":"https://blog.csdn.net/qq_16127313/article/details/128066577",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12638,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=128066577",
"postTime":"2022-11-27 17:14:16",
"diggCount":0,
"formatTime":"2022.11.27",
"picList":["https://img-blog.csdnimg.cn/4603b6056a4b4b209efd4d21deb1aaff.png"],
"collectCount":0}
,
{
"articleId":127971139,
"title":"Docker 服务端口一览",
"description":"最近,研究微服务,使用Docker来进行部署,说实话docker是个好东西,只要编写号dockfile文件和docker-compose.yml文件,能快速启动相关服务。咱们变发挥技术人的优势,能用程序搞定的绝不手动,找了一通,发现这个命令可以查看应用名称和端口的对应关系。便想到通过调用shell脚本的方式来获取内容,传送到前端页面进行展示!调试项目的时候必须输入一堆的ip和端口来,让人有点不爽。调试过程查看服务可以使用。",
"url":"https://blog.csdn.net/qq_16127313/article/details/127971139",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12851,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=127971139",
"postTime":"2022-11-21 19:58:13",
"diggCount":0,
"formatTime":"2022.11.21",
"picList":["https://img-blog.csdnimg.cn/ff77a19f08c543f6aff3ef0e42aff8ae.png"],
"collectCount":2}
,
{
"articleId":124761422,
"title":"备忘录:shell 脚本",
"description":"查询 springboot-hello.war 进程,并自动终止ps -ef|grep springboot-hello.warps -ef | grep java | grep springboot-hello.war | cut -c 9-17ps -ef | grep java | grep springboot-hello.war | cut -c 9-17 | xargs kill -9执行结果:",
"url":"https://blog.csdn.net/qq_16127313/article/details/124761422",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12607,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=124761422",
"postTime":"2022-05-13 22:50:05",
"diggCount":0,
"formatTime":"2022.05.13",
"picList":["https://img-blog.csdnimg.cn/239d831a7a7145c28b38c8b7009254ba.jpeg"],
"collectCount":0}
,
{
"articleId":124140533,
"title":"Docker 微服务部署入门到实践",
"description":"文章目录前言一、docker安装二、创建微服务项目三、运行前准备1. 服务器安装maven2.上传源码到服务器3. 编译源码并打包镜像四、Docker-compose运行微服务五、Docker swarm运行微服务总结前言本文重点关注docker相关实践,不再详细阐述理论知识一、docker安装下面的阐述以centos7系统为例说明,为什么是centos7,原因是centos8官方已经不维护了yum源已经失效,安装组件不方便#2个yum源选用#官方yum源,适合国外主机sudo yum-co",
"url":"https://blog.csdn.net/qq_16127313/article/details/124140533",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12835,
"commentCount":2,
"editUrl":"https://editor.csdn.net/md?articleId=124140533",
"postTime":"2022-04-13 14:50:53",
"diggCount":1,
"formatTime":"2022.04.13",
"picList":["https://img-blog.csdnimg.cn/4606fe48b5b84db8adcb0c2af9da07a4.png"],
"collectCount":6}
,
{
"articleId":123818392,
"title":"SonarQube配置前端工程代码检测",
"description":"sonarqube:7.8-community 是 sonar 对 jdk1.8 的最后一个版本,从 7.9 以后 sonar 最低支持版本为 jdk 1.11,为了兼顾java项目,我们这边安装此版本。首先,编写docker-compose.yml文件version: '3.8'services: sonarqube:   image: sonarqube:7.8-community   container_name: sonarqube   deploy:     resources:",
"url":"https://blog.csdn.net/qq_16127313/article/details/123818392",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12773,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=123818392",
"postTime":"2022-03-29 12:43:17",
"diggCount":0,
"formatTime":"2022.03.29",
"picList":["https://img-blog.csdnimg.cn/b7be8058998b4fdbae9dd2bf32a2414e.png"],
"collectCount":1}
,
{
"articleId":123673585,
"title":"docker 容器修改后保存转移",
"description":"nginx:alpine 镜像运行为容器后,本人做了域名、ssl等配置,如何保存并转移到别的服务器使用!容器名:nginx 容器 id:df04beccb7921.容器保存为镜像docker commit df04beccb792 my-nginxdocker commit nginx my-nginx2.镜像保存为tardocker save my-nginx > nginx.tardocker save my-nginx:latest > nginx.tar3.tar恢复为镜",
"url":"https://blog.csdn.net/qq_16127313/article/details/123673585",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12812,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=123673585",
"postTime":"2022-03-22 22:29:34",
"diggCount":1,
"formatTime":"2022.03.22",
"picList":["https://img-blog.csdnimg.cn/9cdcba3cea7d404490931a3a3ee6580c.png"],
"collectCount":2}
,
{
"articleId":123440340,
"title":"程序猿Git项目代码自动提交神器",
"description":"文章目录前言使用步骤1.下载jar 或源码编译打包2.启动jar3. 设置git提交参数4. 测试提交功能总结主要涉及技术点待优化功能前言这年头,程序猿没事谁不会整几个假的开源项目,假装勤奋呢!但是,一看提交记录和贡献次数,会相当尴尬。。。自己的别人的怎么办呢?咱们只能剑走偏锋,用战术上的勤奋掩盖战略上的懒惰,能写代码自动执行绝不手动,谁让咱是程序猿呢!本着懒人精神开发了此工具,分享出来给大家!使用步骤1.下载jar 或源码编译打包标准springboot工程 Jar下载地址源码传",
"url":"https://blog.csdn.net/qq_16127313/article/details/123440340",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":16233,
"commentCount":2,
"editUrl":"https://editor.csdn.net/md?articleId=123440340",
"postTime":"2022-03-12 12:08:55",
"diggCount":2,
"formatTime":"2022.03.12",
"picList":["https://img-blog.csdnimg.cn/28a1424cc9184cff897804f516b1eae1.png"],
"collectCount":2}
,
{
"articleId":122268919,
"title":"docker容器应用的水平拓展和负载均衡",
"description":"docker 的水平拓展和负载均衡docker 在开发人员日常开发中已经得到普遍使用,下面我们以nignx+tomcat为例来进行说明,如何在不同的系统环境中来快速将单节点应用做水平拓展",
"url":"https://blog.csdn.net/qq_16127313/article/details/122268919",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12989,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=122268919",
"postTime":"2022-01-01 23:13:00",
"diggCount":0,
"formatTime":"2022.01.01",
"picList":["https://img-blog.csdnimg.cn/7aecba3b4ddc4d128f1397411091f7f5.png"],
"collectCount":1}
,
{
"articleId":121866379,
"title":"Apache Log4j2 远程代码执行漏洞处理",
"description":"漏洞详情Apache Log4j2是Apache的一个开源项目,它允许开发者以任意间隔输出日志信息;可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等。该漏洞是由于Apache Log4j2某些功能存在递归解析功能,攻击者可直接构造恶意请求,触发远程代码执行漏洞。漏洞利用无需特殊配置Apache Struts2、Apache Solr、Apache Druid、Apache Flink等均受影响。风险等级严重影响范围Lo",
"url":"https://blog.csdn.net/qq_16127313/article/details/121866379",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12653,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=121866379",
"postTime":"2021-12-10 22:46:31",
"diggCount":1,
"formatTime":"2021.12.10",
"picList":["https://img-blog.csdnimg.cn/f04aa7ad7320437fb16dd80c342beff1.jpeg"],
"collectCount":0}
,
{
"articleId":118279009,
"title":"如何保护你的云主机",
"description":"自从买了某x云主机,每隔一段时间,就有通知发过来,说疑似受到木马攻击。 ssh连不上或者能连上,但是服务器cpu占用吓人,没法子只能重装系统。虽然可以做镜像来回滚系统。但镜像有容量限制,也不是长久之计啊。。。灵机一动,我们新开的主机一般都是root账号22端口,默认情况下很少有人去禁用。这样我们就有2种做法:禁用默认端口22vi /etc/ssh/sshd_config#找到Port 22处修改新端口#重启ssh服务systemctl restart sshd禁用root用户远程登录",
"url":"https://blog.csdn.net/qq_16127313/article/details/118279009",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12618,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=118279009",
"postTime":"2021-06-27 20:25:33",
"diggCount":1,
"formatTime":"2021.06.27",
"picList":["https://img-blog.csdnimg.cn/ec06783cc1ec4a158f2fd4bb34d01c8a.png"],
"collectCount":0}
,
{
"articleId":110558232,
"title":"树莓派4B之奇怪技能",
"description":"树莓派官方操作系统Raspberry Pi,最好用的远程桌面工具是Remmina,它支持RDP,VNC,SPICE ,NX,XDMCP,SSH和EXEC。要安装Remmina,请返回到终端并输入:sudo apt install remmina安装完成后,可以从Internet菜单中启动这边输入windows机器的ip地址输入用户名、密码后便可以连接到windows远程桌面。...",
"url":"https://blog.csdn.net/qq_16127313/article/details/110558232",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12671,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=110558232",
"postTime":"2020-12-04 13:09:32",
"diggCount":0,
"formatTime":"2020.12.04",
"picList":["https://img-blog.csdnimg.cn/b054673d020a44ae939404f915d5c0c1.jpeg"],
"collectCount":0}
,
{
"articleId":110632694,
"title":"树莓派系统备忘录",
"description":"树莓派4b截图截图工具 scrot  , 快捷键 Ctrl + Alt + Tsudo apt-get install scrot截全屏(或者按PrtScr键)scrot区域截图scrot -s延时5秒截图scrot -d 5",
"url":"https://blog.csdn.net/qq_16127313/article/details/110632694",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12594,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=110632694",
"postTime":"2020-12-04 12:12:11",
"diggCount":0,
"formatTime":"2020.12.04",
"picList":["https://img-blog.csdnimg.cn/0b7dc748d90445c291952fe926e07130.jpeg"],
"collectCount":1}
,
{
"articleId":110451928,
"title":"Docker 单个容器运行多个war、jar",
"description":"方法一:DockerfileRUN echo -e \\\"#!/bin/sh\\n\"\\\"nohup java -jar /app.war --server.port=8085 &\\n\"\\\"nohup java -jar /app.war --server.port=8086 &\"\\>> /usr/bin/start.shRUN chmod +x /usr/bin/start.shCMD nohup sh -c \"start.sh\"方法二Dockerfi.",
"url":"https://blog.csdn.net/qq_16127313/article/details/110451928",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12946,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=110451928",
"postTime":"2020-12-01 20:59:16",
"diggCount":4,
"formatTime":"2020.12.01",
"picList":["https://img-blog.csdnimg.cn/a1da82359f604a03aa6a40af4ebabb0a.png"],
"collectCount":16}
,
{
"articleId":110366543,
"title":"Jenkins持续集成之实践总结",
"description":"jenkins 系列文章,包含效果演示(2021-01-25 10:10:25 效果演示到期,轻量应用服务器只申请了试用2个月时间)以及实现说明已经初步完成:jenkins实现 windows server 2012环境下自动部署warjenkins实现Centos 7 下自动部署warjenkins 实现gitbook项目(电子书)的自动发布jenkins 实现源码到docker镜像的自动部署运行下面结合自己的实践,提供一些建议和技巧:...",
"url":"https://blog.csdn.net/qq_16127313/article/details/110366543",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12597,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=110366543",
"postTime":"2020-11-30 08:57:33",
"diggCount":0,
"formatTime":"2020.11.30",
"picList":["https://img-blog.csdnimg.cn/c6549016cfb74987a3761d3fc52fe763.jpeg"],
"collectCount":0}
,
{
"articleId":110287461,
"title":"jenkins 实现源码到docker镜像的自动部署运行",
"description":"看过这3篇文章:jenkins实现 windows server 2012环境下自动部署warjenkins实现Centos 7 下自动部署warjenkins 实现gitbook项目(电子书)的自动发布大家应该对java工程jenkins里的打包流程非常熟悉了!现在来动手实现Centos7 系统下源码到docker镜像的自动部署运行,其实问题已经简化成:jenkins调用远程网站服务器脚本实现docker镜像的重新生成jenkins调用远程网站服务器脚本实现docker镜像的重新启动问",
"url":"https://blog.csdn.net/qq_16127313/article/details/110287461",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12665,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=110287461",
"postTime":"2020-11-28 17:41:37",
"diggCount":0,
"formatTime":"2020.11.28",
"picList":["https://img-blog.csdnimg.cn/530a2f180fc54ad3a669c17fe335d15a.jpeg"],
"collectCount":2}
,
{
"articleId":110246396,
"title":"jenkins 实现gitbook项目(电子书)的自动发布",
"description":"接上一篇  jenkins实现Centos 7 下自动部署war现在来动手实现Centos7 系统下gitbook项目的自动发布。老规矩,先看效果,再来谈实现!控制台地址1:  https://jks.00fly.online/job/gitbook-docker/控制台地址2:  https://jks.00fly.online/job/gitbook-nginx/项目源码: https://gitee.com/00fly/gitbook项目地址: https://book.001fly.to",
"url":"https://blog.csdn.net/qq_16127313/article/details/110246396",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12760,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=110246396",
"postTime":"2020-11-27 21:03:40",
"diggCount":0,
"formatTime":"2020.11.27",
"picList":["https://img-blog.csdnimg.cn/f69b8c3f7bf6422a9c43a9fc4d12d3d0.jpeg"],
"collectCount":1}
,
{
"articleId":110202131,
"title":"jenkins实现Centos 7 下自动部署war",
"description":"接上一篇  jenkins实现 windows server 2012环境下自动部署war这次采取先看后详细说明的方式!首先,我们来看一下效果jenkins 控制台地址:  https://jks.00fly.online/job/demo/项目源码: https://gitee.com/00fly/demo项目地址 : https://test.001fly.top/user/单击左边最上方的#1496,选择控制台输出下拉到最后,会看到打包发布成功。下面到发布的网站验证,注意看最下面",
"url":"https://blog.csdn.net/qq_16127313/article/details/110202131",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12769,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=110202131",
"postTime":"2020-11-26 20:09:39",
"diggCount":0,
"formatTime":"2020.11.26",
"picList":["https://img-blog.csdnimg.cn/da7efb68046f48929d68d477cbfc8a57.jpeg"],
"collectCount":3}
,
{
"articleId":103747502,
"title":"代码备忘录",
"description":"public static void main(String[] args)    {
        List<String> list = new ArrayList<String>();        while (RandomUtils.nextInt() > 9999999)        {
            list.add(Ran...",
"url":"https://blog.csdn.net/qq_16127313/article/details/103747502",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12618,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=103747502",
"postTime":"2019-12-28 19:02:26",
"diggCount":0,
"formatTime":"2019.12.28",
"picList":["https://img-blog.csdnimg.cn/d832cf966b414385b3a38f478f469a8b.jpeg"],
"collectCount":0}
,
{
"articleId":101111358,
"title":"云主机一键测试网速",
"description":"wget https://raw.githubusercontent.com/oooldking/script/master/superspeed.shchmod +x superspeed.sh./superspeed.sh",
"url":"https://blog.csdn.net/qq_16127313/article/details/101111358",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12759,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=101111358",
"postTime":"2019-09-21 17:08:13",
"diggCount":0,
"formatTime":"2019.09.21",
"picList":["https://img-blog.csdnimg.cn/fd8dd42427f24274836a2585c95a9166.jpeg"],
"collectCount":1}
,
{
"articleId":97410157,
"title":"jenkins实现 windows server 2012环境下自动部署war",
"description":"最近琢磨jenkins,实现了window server环境下的springboot工程的自动部署、停止与重启,现详细记录如下。服务器配置如下,使用的腾讯云15天免费体验服务器,安装软件为jenkins 、nginx、jdk。具体端口配置为jenkins 8080端口nginx 80端口,同时绑定域名 https://test.00fly.online应用服务器1:8081端口应用服务...",
"url":"https://blog.csdn.net/qq_16127313/article/details/97410157",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12731,
"commentCount":1,
"editUrl":"https://editor.csdn.net/md?articleId=97410157",
"postTime":"2019-07-26 20:08:13",
"diggCount":0,
"formatTime":"2019.07.26",
"picList":["https://img-blog.csdnimg.cn/e22dba18fb184a30b380a1ce52044191.jpeg"],
"collectCount":1}
,
{
"articleId":96505440,
"title":"CAS  源码打包以及安装、运行",
"description":"下载Cas支持Gradle和Maven两种方式部署,使用SpringBoot构建下载Maven地址:https://github.com/apereo/cas-overlay-templateGradle地址:https://github.com/apereo/cas-gradle-overlay-template构建构建切换版本 输入  mvn clean package...",
"url":"https://blog.csdn.net/qq_16127313/article/details/96505440",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12718,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=96505440",
"postTime":"2019-07-19 22:04:53",
"diggCount":0,
"formatTime":"2019.07.19",
"picList":[],
"collectCount":1}
,
{
"articleId":94648576,
"title":"如何使用FreeSSL申请免费证书?",
"description":"https://blog.freessl.cn/how-to-use-freessl-issue-free-certificates/nginx ssl 配置文件https://ssl-config.mozilla.org/",
"url":"https://blog.csdn.net/qq_16127313/article/details/94648576",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12745,
"commentCount":0,
"editUrl":"https://mp.csdn.net/console/editor/html/94648576",
"postTime":"2019-07-04 19:54:02",
"diggCount":0,
"formatTime":"2019.07.04",
"picList":[],
"collectCount":1}
,
{
"articleId":86537978,
"title":"云服务器配置小记",
"description":"   心血来潮,在[阿里云](https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=xxhrr2kf)买了个域名,顺便搞了台服务器自己玩!   以下记录按时间顺序记录在域名申请和服务器配置方面遇到的问题。   2019-01-15  注册了00fly.online域名的10年使用权。   2019-01-16  购买...",
"url":"https://blog.csdn.net/qq_16127313/article/details/86537978",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12630,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=86537978",
"postTime":"2019-01-18 13:46:08",
"diggCount":1,
"formatTime":"2019.01.18",
"picList":[],
"collectCount":1}
,
{
"articleId":86181092,
"title":"SSL HTTPS证书 Tomcat、SpringBoot、Nginx配置实录",
"description":"&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;随着安全意识的提升,越来越多的网站使用HTTPS来部署我们的应用系统。专业的更高安全级别的证书需要花钱购买,我们这里采用阿里 ssl免费证书来演示。具体做法为:注册阿里云账号,登录进去之后,选择产品-》安全-》数据安全-》SSL证书点击立即购买按钮,选择如",
"url":"https://blog.csdn.net/qq_16127313/article/details/86181092",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12626,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=86181092",
"postTime":"2019-01-09 22:42:41",
"diggCount":0,
"formatTime":"2019.01.09",
"picList":["https://img-blog.csdnimg.cn/20190109214413607.png"],
"collectCount":0}
,
{
"articleId":85013639,
"title":"阿里巴巴Java开发手册.pdf",
"description":"https://github.com/alibaba/p3c/blob/master/阿里巴巴Java开发手册(详尽版).pdf",
"url":"https://blog.csdn.net/qq_16127313/article/details/85013639",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12891,
"commentCount":3,
"editUrl":"https://editor.csdn.net/md?articleId=85013639",
"postTime":"2018-12-15 13:44:08",
"diggCount":0,
"formatTime":"2018.12.15",
"picList":["https://img-blog.csdnimg.cn/294691a6b11b4439925c04c3879a5159.jpeg"],
"collectCount":8}
,
{
"articleId":84947751,
"title":"AOP模拟第三方接口调用返回",
"description":"系统开发时,与第三方系统对接时常见的需求,当我们兴冲冲按照接口文档开发好代码的时候,第三方系统却未准备好,而我们编写的业务代码散落与业务模块的各个地方。为了不影响我们系统的运行,必须暂时屏蔽这部分代码调用。怎么办?方法一: 注释掉这些代码不就行了吗,确实,大部分情况下我们可能就是这样做的。方法二: 配置开关项,接口未准备好的时候设为0或false,启用时设置为1或true,这好像是我...",
"url":"https://blog.csdn.net/qq_16127313/article/details/84947751",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12708,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=84947751",
"postTime":"2018-12-10 22:53:19",
"diggCount":0,
"formatTime":"2018.12.10",
"picList":["https://img-blog.csdnimg.cn/6c316030547140c7af39186a04fcc138.jpeg"],
"collectCount":2}
,
{
"articleId":84936770,
"title":"NamedParameterJdbcTemplate传参的n种写法",
"description":"没啥技术含量,烂笔头记下来备查!数据库    /**     * NamedParameterJdbcTemplate     *      * @see [类、类#方法、类#成员]     */    @Test    public void testNamedTemplate()    {
        String sql;        List&amp;lt;Map&amp;lt...",
"url":"https://blog.csdn.net/qq_16127313/article/details/84936770",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12878,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=84936770",
"postTime":"2018-12-10 11:16:34",
"diggCount":0,
"formatTime":"2018.12.10",
"picList":["https://img-blog.csdnimg.cn/b2200315bddb4cf59eece121d919913e.jpeg"],
"collectCount":10}
,
{
"articleId":84880339,
"title":"java代码格式之一统",
"description":"作为有严重代码洁癖的码农,决不能容忍代码中出现不一样的风格代码。怎么来强制统一代码格式呢?我们知道eclipse我们选中工程或源码目录右键source-》format 或者在代码中ctrl+shift+f可以格式化代码,但那是按默认的配置给我们格式化的,未必符合我们的要求。幸好我们可以把格式化规范以xml文件的方式导入导出,下面我给出一个我使用的格式化模板Eclipse_CodeFormatt...",
"url":"https://blog.csdn.net/qq_16127313/article/details/84880339",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12669,
"commentCount":1,
"editUrl":"https://editor.csdn.net/md?articleId=84880339",
"postTime":"2018-12-07 17:50:31",
"diggCount":2,
"formatTime":"2018.12.07",
"picList":[],
"collectCount":0}
,
{
"articleId":84786346,
"title":"spring mvc 代码测试那些事儿",
"description":"spring、springmvc 是java开发中的万能胶水粘合剂,不像之前普通java工程,写完代码要测试。简单,来个main 方法加 System.out.println 。于是乎,spring项目的单元测试就没人重视了,基本上测试功能都需要部署或tomcat或jetty。。。有没方法来方便我们进行测试呢,
 答案是肯定的。下面我们假设N种场景,来指出怎么快速接入测试。开发环境,我们...",
"url":"https://blog.csdn.net/qq_16127313/article/details/84786346",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12609,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=84786346",
"postTime":"2018-12-04 13:03:01",
"diggCount":0,
"formatTime":"2018.12.04",
"picList":[],
"collectCount":0}
,
{
"articleId":84335618,
"title":"Spring RestTemplate 调用https",
"description":"Spring RestTemplate 调用REST API  给我们的开发工作带来了极大的方便,默认的SimpleClientHttpRequestFactory 并不支持https的调用,我们可以通过引入Apache HttpClient实现对https的调用支持。第一步,注册package com.fly.config;import org.apache.http...",
"url":"https://blog.csdn.net/qq_16127313/article/details/84335618",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":13526,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=84335618",
"postTime":"2018-11-22 10:59:27",
"diggCount":3,
"formatTime":"2018.11.22",
"picList":["https://img-blog.csdnimg.cn/img_convert/1f20816e15694cf3b56262c1f87e2a14.png"],
"collectCount":12}
,
{
"articleId":84196206,
"title":"OsCache缓存监控刷新工具",
"description":"   OSCache是一套用Java编写的缓存框架(或者说解决方案),它主要用于页面缓存,Servlet缓存,或者其它任意的对象,
且支持集群。   但是居然没有OsCache的监控工具,所以只能用反射机制暴力破解了!OsCacheUtil.javapackage com.fly.core;import java.lang.reflect.Field;import java.util.H...",
"url":"https://blog.csdn.net/qq_16127313/article/details/84196206",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12652,
"commentCount":1,
"editUrl":"https://editor.csdn.net/md?articleId=84196206",
"postTime":"2018-11-18 10:09:00",
"diggCount":0,
"formatTime":"2018.11.18",
"picList":[],
"collectCount":0}
,
{
"articleId":84105620,
"title":"Reflect 机制获取Class 的属性和方法信息",
"description":"反射机制获取类的属性和方法信息import java.lang.reflect.Field;import java.lang.reflect.Method;import java.lang.reflect.Modifier;import org.junit.jupiter.api.Test;public class Reflect{
     /**     * 获取属性信息 ...",
"url":"https://blog.csdn.net/qq_16127313/article/details/84105620",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12641,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=84105620",
"postTime":"2018-11-15 15:52:49",
"diggCount":0,
"formatTime":"2018.11.15",
"picList":[],
"collectCount":0}
,
{
"articleId":83928760,
"title":"利用spring改造传统jdbc使其支持命名参数形式的SQL",
"description":"传统JDBC SQL调用形式一般为   update customer set customerName=?,
 email=? where id=?   insert into customer (customerName,
 email ) values(?,
 ?)这种由于?与参数关系的不直观,带来的修改bug以及维护麻烦折磨着后续程序猿。那么,有没有可能通过对代码的改造,实现类似于命名参...",
"url":"https://blog.csdn.net/qq_16127313/article/details/83928760",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12674,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=83928760",
"postTime":"2018-11-10 13:35:59",
"diggCount":0,
"formatTime":"2018.11.10",
"picList":["https://img-blog.csdnimg.cn/bca87b4e845c4524bebdd60d6da4116f.jpeg"],
"collectCount":0}
,
{
"articleId":83859307,
"title":"JAVA工程启动时自动创建数据库、数据表",
"description":"很多时候,我们会有这样的需求: 1. 系统首次部署时,自动创建数据库、表2. 执行单元测试时,数据库、表维持初始化状态方便测试。",
"url":"https://blog.csdn.net/qq_16127313/article/details/83859307",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":13299,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=83859307",
"postTime":"2018-11-08 12:38:10",
"diggCount":3,
"formatTime":"2018.11.08",
"picList":["https://img-blog.csdnimg.cn/b1d538c2792942efa65da6932fb889e0.jpeg"],
"collectCount":17}
,
{
"articleId":83789396,
"title":"SpringMVC工程Controller、Service单元测试代码",
"description":"applicationContext.xml 为spring配置文件spring-mvc.xml 为springmvc配置文件junit4 单元测试代码import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;import static org.springframework....",
"url":"https://blog.csdn.net/qq_16127313/article/details/83789396",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12680,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=83789396",
"postTime":"2018-11-06 16:23:35",
"diggCount":0,
"formatTime":"2018.11.06",
"picList":[],
"collectCount":1}
,
{
"articleId":83006524,
"title":"Spring Web工程最快转Spring Boot工程方法",
"description":"删除web.xml导入springboot  pom.xml添加springboot 启动代码(举例)import java.io.IOException;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.boot.CommandLineRunner;import ...",
"url":"https://blog.csdn.net/qq_16127313/article/details/83006524",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12847,
"commentCount":0,
"editUrl":"https://editor.csdn.net/md?articleId=83006524",
"postTime":"2018-10-11 09:04:50",
"diggCount":0,
"formatTime":"2018.10.11",
"picList":["https://img-blog.csdnimg.cn/1d252022aa0e467ba761039c715d6c50.png"],
"collectCount":2}
,
{
"articleId":82920560,
"title":"普通Java工程 jar 包内文件的遍历以及文件的拷贝",
"description":"【代码】普通Java工程 jar 包内文件的遍历以及文件的拷贝。",
"url":"https://blog.csdn.net/qq_16127313/article/details/82920560",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12737,
"commentCount":0,
"editUrl":"https://mp.csdn.net/console/editor/html/82920560",
"postTime":"2017-05-05 22:04:00",
"diggCount":0,
"formatTime":"2017.05.05",
"picList":["https://img-blog.csdnimg.cn/img_convert/1f20816e15694cf3b56262c1f87e2a14.png"],
"collectCount":2}
,
{
"articleId":82920550,
"title":"利用Apache PropertiesConfiguration实现spring 定时任务配置的及时刷新",
"description":"import java.util.Date;import o...",
"url":"https://blog.csdn.net/qq_16127313/article/details/82920550",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12695,
"commentCount":0,
"editUrl":"https://mp.csdn.net/console/editor/html/82920550",
"postTime":"2017-05-05 21:44:00",
"diggCount":0,
"formatTime":"2017.05.05",
"picList":["https://img-blog.csdnimg.cn/img_convert/1f20816e15694cf3b56262c1f87e2a14.png"],
"collectCount":1}
,
{
"articleId":82920553,
"title":"Springmvc工程main方法中运行spring 管理的类方法",
"description":"import org.apache.commons.lang3.R...",
"url":"https://blog.csdn.net/qq_16127313/article/details/82920553",
"type":1,
"top":false,
"forcePlan":false,
"viewCount":12673,
"commentCount":0,
"editUrl":"https://mp.csdn.net/console/editor/html/82920553",
"postTime":"2017-05-05 21:06:00",
"diggCount":0,
"formatTime":"2017.05.05",
"picList":["https://img-blog.csdnimg.cn/img_convert/1f20816e15694cf3b56262c1f87e2a14.png"],
"collectCount":1}
],
"total":76}
}


3. 运行结果

2024-01-16 12:25:07.597  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/135576948
2024-01-16 12:25:07.599  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/135506426
2024-01-16 12:25:07.599  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/135481476
2024-01-16 12:25:07.599  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/135469157
2024-01-16 12:25:07.599  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/135418954
2024-01-16 12:25:07.599  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/135244727
2024-01-16 12:25:07.600  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/135173565
2024-01-16 12:25:07.600  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/135167613
2024-01-16 12:25:07.600  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/135135799
2024-01-16 12:25:07.600  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/135087188
2024-01-16 12:25:07.600  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/134502740
2024-01-16 12:25:07.600  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/134482704
2024-01-16 12:25:07.600  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/134352661
2024-01-16 12:25:07.600  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/134278293
2024-01-16 12:25:07.600  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/134199137
2024-01-16 12:25:07.601  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/134168716
2024-01-16 12:25:07.601  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/134129653
2024-01-16 12:25:07.601  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/134099991
2024-01-16 12:25:07.601  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/134050713
2024-01-16 12:25:07.601  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/134019416
2024-01-16 12:25:07.602  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/134010951
2024-01-16 12:25:07.602  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/133792839
2024-01-16 12:25:07.602  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/133763881
2024-01-16 12:25:07.602  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/133707738
2024-01-16 12:25:07.602  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/82924432
2024-01-16 12:25:07.602  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/133519731
2024-01-16 12:25:07.602  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/133500980
2024-01-16 12:25:07.602  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/133382490
2024-01-16 12:25:07.602  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/132943342
2024-01-16 12:25:07.602  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/132926518
2024-01-16 12:25:07.602  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/132917498
2024-01-16 12:25:07.602  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/132640453
2024-01-16 12:25:07.602  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/132612861
2024-01-16 12:25:07.602  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/132523351
2024-01-16 12:25:07.602  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/132512424
2024-01-16 12:25:07.602  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/130374351
2024-01-16 12:25:07.602  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/128268341
2024-01-16 12:25:07.602  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/128066577
2024-01-16 12:25:07.602  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/127971139
2024-01-16 12:25:07.603  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/124761422
2024-01-16 12:25:07.603  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/124140533
2024-01-16 12:25:07.603  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/123818392
2024-01-16 12:25:07.603  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/123673585
2024-01-16 12:25:07.603  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/123440340
2024-01-16 12:25:07.603  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/122268919
2024-01-16 12:25:07.603  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/121866379
2024-01-16 12:25:07.603  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/118279009
2024-01-16 12:25:07.603  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/110558232
2024-01-16 12:25:07.603  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/110632694
2024-01-16 12:25:07.603  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/110451928
2024-01-16 12:25:07.603  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/110366543
2024-01-16 12:25:07.603  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/110287461
2024-01-16 12:25:07.603  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/110246396
2024-01-16 12:25:07.603  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/110202131
2024-01-16 12:25:07.603  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/103747502
2024-01-16 12:25:07.603  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/101111358
2024-01-16 12:25:07.603  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/97410157
2024-01-16 12:25:07.603  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/96505440
2024-01-16 12:25:07.604  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/94648576
2024-01-16 12:25:07.604  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/86537978
2024-01-16 12:25:07.604  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/86181092
2024-01-16 12:25:07.604  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/85013639
2024-01-16 12:25:07.604  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/84947751
2024-01-16 12:25:07.604  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/84936770
2024-01-16 12:25:07.604  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/84880339
2024-01-16 12:25:07.604  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/84786346
2024-01-16 12:25:07.604  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/84335618
2024-01-16 12:25:07.604  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/84196206
2024-01-16 12:25:07.604  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/84105620
2024-01-16 12:25:07.604  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/83928760
2024-01-16 12:25:07.604  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/83859307
2024-01-16 12:25:07.604  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/83789396
2024-01-16 12:25:07.604  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/83006524
2024-01-16 12:25:07.604  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/82920560
2024-01-16 12:25:07.604  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/82920550
2024-01-16 12:25:07.604  INFO 15060 --- [main] c.f.h.FluxWebClient            : https://blog.csdn.net/qq_16127313/article/details/82920553


大家可以根据需要选择方案,有任何问题和建议,都可以向我提问讨论,大家一起进步,谢谢!

-over-

文章来源:https://blog.csdn.net/qq_16127313/article/details/135617684
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。