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

【Java 动态数据统计图】动态X轴二级数据统计图思路Demo(动态,排序,动态数组(重点推荐:难)九(131)

需求

1.有一组数据集合,数据集合中的数据为动态;
举例如下:
[{province=陕西省, city=西安市}, {province=陕西省, city=咸阳市}, {province=陕西省, city=宝鸡市}, {province=陕西省, city=延安市}, {province=陕西省, city=汉中市}, {province=四川省, city=成都市}, {province=四川省, city=成都市}, {province=四川省, city=广元市}, {province=四川省, city=绵阳市}, {province=陕西省, city=西安市}, {province=陕西省, city=西安市}, {province=陕西省, city=宝鸡市}, {province=江苏省, city=南京市}, {province=江苏省, city=南京市}, {province=江苏省, city=扬州市}, {province=河北省, city=石家庄市}, {province=山东省, city=济南市}, {province=山东省, city=青岛市}, {province=山东省, city=烟台市}, {province=山东省, city=潍坊市}]
2.通过计算得出统计的数据;省按照大小排序,动态展示,城市按照大小排序,动态展示;

最终绘制如下
在这里插入图片描述

备注:以下看到的函数名称大多是自定义封装的。

当前案例代码中需要用到的知识技能:

1.Set集合去重:Set hashSet = new HashSet<>();
2.Set集合转数组:String[] provinceArr = hashSet.toArray(new String[hashSet.size()]);
3.一维双数组排序:BubblSortUtils.bubbleSortDescMultiple(provinceSort,provinceArr);
4.创建集合数组(数组里面的元素为set集合):Set[] setArr = new Set[provinceArr.length];
5.创建二维数组(set集合数组转二维数组):String[][] stringArr = new String[provinceArr.length][];
6.二维数组,双数组根据第二维度排序:BubblSortUtils.bubbleSortDescMultiple2(countArr,stringArr);
7.String,Int数组间的互相转化;
8.百分比计算函数封装;
9.一维数组和二维数组组合:计算一维数组在二维中的中间位置;
10.返回数据封装:二维数组转一维数组;

Demo案例:代码逻辑比较复杂,需耐心看!

import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;public class day24 {public static void main(String[] args) {List<Map<String,Object>> list = new ArrayList<>();Map<String,Object> map1 = new HashMap<>();map1.put("province","陕西省");map1.put("city","西安市");Map<String,Object> map2 = new HashMap<>();map2.put("province","陕西省");map2.put("city","咸阳市");Map<String,Object> map3 = new HashMap<>();map3.put("province","陕西省");map3.put("city","宝鸡市");Map<String,Object> map4 = new HashMap<>();map4.put("province","陕西省");map4.put("city","延安市");Map<String,Object> map5 = new HashMap<>();map5.put("province","陕西省");map5.put("city","汉中市");Map<String,Object> map6 = new HashMap<>();map6.put("province","四川省");map6.put("city","成都市");Map<String,Object> map7 = new HashMap<>();map7.put("province","四川省");map7.put("city","成都市");Map<String,Object> map8 = new HashMap<>();map8.put("province","四川省");map8.put("city","广元市");Map<String,Object> map9 = new HashMap<>();map9.put("province","四川省");map9.put("city","绵阳市");Map<String,Object> map10 = new HashMap<>();map10.put("province","陕西省");map10.put("city","西安市");Map<String,Object> map11 = new HashMap<>();map11.put("province","陕西省");map11.put("city","西安市");Map<String,Object> map12 = new HashMap<>();map12.put("province","陕西省");map12.put("city","宝鸡市");Map<String,Object> map13 = new HashMap<>();map13.put("province","江苏省");map13.put("city","南京市");Map<String,Object> map14 = new HashMap<>();map14.put("province","江苏省");map14.put("city","南京市");Map<String,Object> map15 = new HashMap<>();map15.put("province","江苏省");map15.put("city","扬州市");Map<String,Object> map16 = new HashMap<>();map16.put("province","河北省");map16.put("city","石家庄市");Map<String,Object> map17 = new HashMap<>();map17.put("province","山东省");map17.put("city","济南市");Map<String,Object> map18 = new HashMap<>();map18.put("province","山东省");map18.put("city","青岛市");Map<String,Object> map19 = new HashMap<>();map19.put("province","山东省");map19.put("city","烟台市");Map<String,Object> map20 = new HashMap<>();map20.put("province","山东省");map20.put("city","潍坊市");list.add(map1);list.add(map2);list.add(map3);list.add(map4);list.add(map5);list.add(map6);list.add(map7);list.add(map8);list.add(map9);list.add(map10);list.add(map11);list.add(map12);list.add(map13);list.add(map14);list.add(map15);list.add(map16);list.add(map17);list.add(map18);list.add(map19);list.add(map20);System.out.println("入参数据:"+list);// 一:获取一级维度:// 创建Set集合:获取一级维度数据的数据集:去重Set<String> hashSet = new HashSet<>();for (int i = 0; i < list.size(); i++) {String province = String.valueOf(list.get(i).get("province"));hashSet.add(province);}// 创建一级维度省份数组:String[] provinceArr = new String[hashSet.size()];// 创建一级维度省份数量数组:int[] provinceSort = new int[hashSet.size()];// Set转数组if(list.size() > 0){provinceArr = hashSet.toArray(new String[hashSet.size()]);}// 根据一级维度省份数组:计算一级维度省份数量数组;for (int i = 0; i < provinceArr.length; i++) {for (int j = 0; j < list.size(); j++) {if(provinceArr[i].equals(String.valueOf(list.get(j).get("province")))){provinceSort[i] = provinceSort[i] + 1;}}}// 排序:一级维度省份数组;BubblSortUtils.bubbleSortDescMultiple(provinceSort,provinceArr); // 封装集合测试输出:System.out.println("--------------------");List<Map<String,Object>> listFinal= new ArrayList<>();for (int i = 0; i < provinceArr.length; i++) {Map<String,Object> map = new HashMap<>();map.put("title",provinceArr[i]);map.put("value",provinceSort[i]);listFinal.add(map);}System.out.println("一级维度省份类型和数量:"+listFinal);// 二:获取二级维度:// 创建集合数组(数组里面的元素为set集合)Set[] setArr = new Set[provinceArr.length];// 创建二维数组(set集合数组转二维数组)String[][] stringArr = new String[provinceArr.length][];// 集合数组:获取二级维度城市类型数据的数据集:去重for (int i = 0; i < provinceArr.length; i++) {Set<String> hashSet2 = new HashSet<>();// 获取城市数组;for (int j = 0; j < list.size(); j++) {if(provinceArr[i].equals(String.valueOf(list.get(j).get("province")))){hashSet2.add(String.valueOf(list.get(j).get("city")));}}setArr[i] = hashSet2;}// 二维数组:set集合城市数组转二维城市数组;for (int i = 0; i < setArr.length; i++) {Set<String> hashSet2 = setArr[i];String[] provinceArr2 = new String[hashSet2.size()];if(list.size() > 0){provinceArr2 = hashSet2.toArray(new String[hashSet2.size()]);}stringArr[i] = provinceArr2;}// 创建城市数量二维数组;String[][] countArr = new String[provinceArr.length][];// 二维数组:根据二维城市类型数组计算:二维城市数量数组;for (int i = 0; i < stringArr.length; i++) {String [] s = stringArr[i];String[] temp = new String[s.length];for (int j = 0; j < s.length; j++) {for (int k = 0; k < list.size(); k++) {if(s[j].equals(String.valueOf(list.get(k).get("city")))) {if(String.valueOf(temp[j]).equals("null")) {temp[j] = "1";}else {temp[j] = String.valueOf(Integer.valueOf(temp[j]) + 1);}}}}countArr[i] = temp;}// 数组排序:城市数组和数量数组排序;BubblSortUtils.bubbleSortDescMultiple2(countArr,stringArr);// 三:百分比二维数组:计算百分比String[][] percentageArr = new String[provinceArr.length][];int sum = list.size();for (int i = 0; i < countArr.length; i++) {String [] s = countArr[i];String[] temp = new String[s.length];for (int j = 0; j < s.length; j++) {if(list.size() > 0) {temp[j] = percentageConversion(Integer.valueOf(s[j]),sum);}}percentageArr[i] = temp;}System.out.println("------------------:");// 四:数据封装返回:/** 分析:当前得到了四个数组;* 一维数组:provinceArr* 二维数组:stringArr,countArr,percentageArr* * 需要将一维数组:provinceArr也转成二维数组并且将数据放在中间位置;* */// 将省份添加到每个二维城市数组的末位;用临时二维数组stringArrTemp接收;String[][] stringArrTemp = new String[provinceArr.length][];for (int i = 0; i < stringArr.length; i++) {String[] s = stringArr[i];String[] temp = new String[s.length+1];for (int j = 0; j < s.length; j++) {temp[j] = s[j];temp[s.length] = provinceArr[i];}stringArrTemp[i] = temp;}// 计算一维数组在二维中的中间位置;        String[][] provinceNewArr = new String[provinceArr.length][];for (int i = 0; i < stringArrTemp.length; i++) {String[] s = stringArrTemp[i];String[] temp = new String[s.length-1];int num = s.length-1;for (int j = 0; j < s.length-1; j++) {if(j == num/2) {  // 找数组中间位置if(num % 2 ==0) {  // 中间位置为偶数if(j>0) {  // 首位判断>0temp[j-1] = s[s.length-1];  // 数据向左偏temp[j] = "#";  // 数据左偏完后下个数据需修正;}}else {  // 中间位置为奇数temp[j] = s[s.length-1];}}else {temp[j] = "#";}}provinceNewArr[i] = temp;}// 返回方式一:// 最终得到四个二维数组:provinceNewArr,stringArr,countArr,percentageArr// 二维数组封装Map返回;Map<String,Object> mapResult1 = new HashMap<>();mapResult1.put("province", provinceNewArr);mapResult1.put("cityType", stringArr);mapResult1.put("cityCount", countArr);mapResult1.put("cityPercentage", percentageArr);System.out.println("返回方式一:最终MAP"+mapResult1);// 最终:测试输出:for (int i = 0; i < stringArr.length; i++) {System.out.println(i+":"+stringArr[i]);String[] s1 = stringArr[i];String[] s2 = countArr[i];String[] s3 = percentageArr[i];String[] s4 = provinceNewArr[i];for (int j = 0; j < s1.length; j++) {System.out.println("二级维度城市类型和数量:"+s1[j]+"--"+s2[j]+"--"+s3[j]+"--"+s4[j]);}}// 返回方式二:// 前端要求:所有的数据把二维数组拼接成一维数组返回;List<String> listArr1 = new ArrayList<>();List<String> listArr2 = new ArrayList<>();List<String> listArr3 = new ArrayList<>();List<String> listArr4 = new ArrayList<>();for (int i = 0; i < provinceNewArr.length; i++) {String[] s1 = provinceNewArr[i];String[] s2 = stringArr[i];String[] s3 = countArr[i];String[] s4 = percentageArr[i];for (int j = 0; j < s1.length; j++) {listArr1.add(s1[j]);listArr2.add(s2[j]);listArr3.add(s3[j]);listArr4.add(s4[j]);}}String[] provinceNewArr2 = new String[listArr1.size()];String[] stringArr2 = new String[listArr2.size()];String[] countArr2 = new String[listArr3.size()];String[] percentageArr2 = new String[listArr4.size()];for (int i = 0; i < listArr1.size(); i++) {provinceNewArr2[i] = listArr1.get(i);stringArr2[i] = listArr2.get(i);countArr2[i] = listArr3.get(i);percentageArr2[i] = listArr4.get(i);}Map<String,Object> mapResult2 = new HashMap<>();mapResult2.put("province", provinceNewArr2);mapResult2.put("cityType", stringArr2);mapResult2.put("cityCount", countArr2);mapResult2.put("cityPercentage", percentageArr2);System.out.println("返回方式二:最终MAP"+mapResult2);}public static String percentageConversion(long divisor, long dividend) {String percentage = "";// 接受百分比的值double y = divisor * 1.0;double z = dividend * 1.0;if (y == 0 || z == 0) {return "0.00%";}double result = y / z;DecimalFormat decimalFormat = new DecimalFormat("##.00%"); // ##.00%percentage = decimalFormat.format(result);// ##.00% 使用这种转换方式,整数位如果是0 则会被删除  即0.35% 会出现 .35%的情况char c = percentage.charAt(0);if (String.valueOf(c).equals(".")) {StringBuffer sb = new StringBuffer();sb.append("0").append(percentage);return String.valueOf(sb);}return percentage;}
}

测试输出

入参数据:[{province=陕西省, city=西安市}, {province=陕西省, city=咸阳市}, {province=陕西省, city=宝鸡市}, {province=陕西省, city=延安市}, {province=陕西省, city=汉中市}, {province=四川省, city=成都市}, {province=四川省, city=成都市}, {province=四川省, city=广元市}, {province=四川省, city=绵阳市}, {province=陕西省, city=西安市}, {province=陕西省, city=西安市}, {province=陕西省, city=宝鸡市}, {province=江苏省, city=南京市}, {province=江苏省, city=南京市}, {province=江苏省, city=扬州市}, {province=河北省, city=石家庄市}, {province=山东省, city=济南市}, {province=山东省, city=青岛市}, {province=山东省, city=烟台市}, {province=山东省, city=潍坊市}]
--------------------
一级维度省份类型和数量:[{title=陕西省, value=8}, {title=四川省, value=4}, {title=山东省, value=4}, {title=江苏省, value=3}, {title=河北省, value=1}]
------------------:
返回方式一:最终MAP{cityType=[[Ljava.lang.String;@506e6d5e, province=[[Ljava.lang.String;@96532d6, cityCount=[[Ljava.lang.String;@3796751b, cityPercentage=[[Ljava.lang.String;@67b64c45}
0:[Ljava.lang.String;@4411d970
二级维度城市类型和数量:西安市--3--15.00%--#
二级维度城市类型和数量:宝鸡市--2--10.00%--#
二级维度城市类型和数量:延安市--1--5.00%--陕西省
二级维度城市类型和数量:咸阳市--1--5.00%--#
二级维度城市类型和数量:汉中市--1--5.00%--#
1:[Ljava.lang.String;@6442b0a6
二级维度城市类型和数量:成都市--2--10.00%--#
二级维度城市类型和数量:绵阳市--1--5.00%--四川省
二级维度城市类型和数量:广元市--1--5.00%--#
2:[Ljava.lang.String;@60f82f98
二级维度城市类型和数量:青岛市--1--5.00%--#
二级维度城市类型和数量:济南市--1--5.00%--山东省
二级维度城市类型和数量:烟台市--1--5.00%--#
二级维度城市类型和数量:潍坊市--1--5.00%--#
3:[Ljava.lang.String;@35f983a6
二级维度城市类型和数量:南京市--2--10.00%--江苏省
二级维度城市类型和数量:扬州市--1--5.00%--#
4:[Ljava.lang.String;@7f690630
二级维度城市类型和数量:石家庄市--1--5.00%--河北省
返回方式二:最终MAP{cityType=[Ljava.lang.String;@edf4efb, province=[Ljava.lang.String;@2f7a2457, cityCount=[Ljava.lang.String;@566776ad, cityPercentage=[Ljava.lang.String;@6108b2d7}

相关文章:

【Java 动态数据统计图】动态X轴二级数据统计图思路Demo(动态,排序,动态数组(重点推荐:难)九(131)

需求&#xff1a; 1.有一组数据集合&#xff0c;数据集合中的数据为动态&#xff1b; 举例如下&#xff1a; [{province陕西省, city西安市}, {province陕西省, city咸阳市}, {province陕西省, city宝鸡市}, {province陕西省, city延安市}, {province陕西省, city汉中市}, {pr…...

C#将text文本中的单双行分开单独保存

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 文本的分割1.设定text文件的名称为02.文本导出 文本的分割 1.设定text文件的名称为0 代码如下&#xff1a; using System; using System.Collections.Generic; us…...

深入理解 Go 语言中的 iota

iota是go语言的常量计数器&#xff0c;只能在常量表达式中使用&#xff0c;iota在const关键字出现时将被重置为0&#xff0c;const中每新增一行常量声明将使iota计数一次&#xff0c;可理解为const语句块中的行索引。它会自动递增&#xff0c;从0开始。 修改步长 尽管默认步长…...

【力扣】55、跳跃游戏

var canJump function(nums){let cover 0;for(let i0;i<nums.length;i){if(i<cover){cover Math.max(nums[i]i,cover);if(cover >nums.length-1){return true;}}}}...

个人与公司合作,怎么代开发票?有哪些优惠政策?

《梅梅谈税》专注于企业税务筹划&#xff01;助力企业合理、合规、合法进行节税税收筹划&#xff01; 当下越来越多的个人与公司直接发生业务往来&#xff0c;例如个人给企业提供技术服务&#xff0c;做宣传推广等&#xff0c;业务完成公司给个人支付了相关费用后&#xff0c;…...

什么是计算机视觉,计算机视觉的主要任务及应用

目录 1. 什么是计算机视觉 2. 计算机视觉的主要任务及应用 2.1 图像分类 2.1.1 图像分类的主要流程 2.2 目标检测 2.2.1 目标检测的主要流程 2.3 图像分割 2.3.1 图像分割的主要流程 2.4 人脸识别 2.4.1 人脸识别的主要流程 对于我们人类来说&#xff0c;要想认出身边…...

网易24届内推

【网易】2024届网易互联网秋季校园招聘内推开始啦&#xff01;给你分享我的专属内推邀请函&#xff1a;https://bole.campus.163.com/campus/home?projectId55&type99&isShare1&boleId7b842acc7c2b42db&boleType2&signatured5f2a3dc23bed70777a8be1a14b49…...

redis 应用 4: HyperLogLog

我们先思考一个常见的业务问题&#xff1a;如果你负责开发维护一个大型的网站&#xff0c;有一天老板找产品经理要网站每个网页每天的 UV 数据&#xff0c;然后让你来开发这个统计模块&#xff0c;你会如何实现&#xff1f; img 如果统计 PV 那非常好办&#xff0c;给每个网页一…...

进程的挂起状态

进程的挂起状态详解 当我们谈论操作系统和进程管理时&#xff0c;我们经常听到进程的各种状态&#xff0c;如“就绪”、“运行”和“阻塞”。但其中一个不那么常被提及&#xff0c;但同样重要的状态是“挂起”状态。本文将深入探讨挂起状态&#xff0c;以及为什么和在何时进程…...

idea 链接mysql连不上

打开文件 C:\Program Files\JetBrains\IntelliJ IDEA 2023.2.1\jbr\conf\security\java.security修改内容 搜索&#xff1a;jdk.tls.disabledAlgorithms 修改 链接地址 在链接后面添加 ?useSSLfalse jdbc:mysql://127.0.0.1:3306/db_admin3?useSSLfalse...

Ubuntu 启动出现grub rescue

​ 一&#xff0c;原因 原因&#xff1a;出现 “grub rescue” 错误通常表示您的计算机无法正常引导到操作系统&#xff0c;而是进入了 GRUB&#xff08;Grand Unified Bootloader&#xff09;紧急模式。这可能是由于引导加载程序配置错误、硬盘驱动器损坏或其他引导问题引起…...

go中runtime包里面的mutex是什么?runtime.mutex解析

其实在看go源码的时候&#xff0c;发现除了sync包里有个mutex以外&#xff0c;runtime包里也有一个mutex&#xff0c;这个mutex在runtime很多地方都在用。 这个runtime包里面的mutex的结构如下&#xff1a; 目录: /runtime/runtime2.go 代码&#xff1a; type mutex struct …...

VScode 调试python程序,debug状态闪断问题的解决方法

0. Few words 之前一直在VSCode中debug C和Python的程序没出过闪断的问题&#xff0c;但是最近在另一台电脑上debug&#xff0c;同样的方法&#xff0c;设置launch.json和CMakeList加debug状态等等操作&#xff0c;如我另一篇blog写的一样&#xff0c;可以点这里查看。 但是&a…...

飞桨中的李宏毅课程中的第一个项目——PM2.5的预测

所谓的激活函数&#xff0c;就是李宏毅老师讲到的sigmoid函数 和 hard sigmoid函数 &#xff0c;ReLU函数那些 现在一点点慢慢探索&#xff0c;会成为日后想都做不到的经历&#xff0c;当你啥也不会的时候&#xff0c;才是慢慢享受探索的过程。 有一说一&#xff0c;用chatGP…...

Qt---对话框 事件处理 如何发布自己写的软件

目录 一、对话框 1.1 消息对话框&#xff08;QMessageBox&#xff09; 1> 消息对话框提供了一个模态的对话框&#xff0c;用来提示用户信息&#xff0c;或者询问用户问题并得到回答 2> 基于属性版本的API 3> 基于静态成员函数版本 4> 对话框案例 1、ui界面 …...

【C++】C++ 引用详解 ⑩ ( 常量引用案例 )

文章目录 一、常量引用语法1、语法简介2、常引用语法示例 二、常量引用语法1、int 类型常量引用示例2、结构体类型常量引用示例 在 C 语言中 , 常量引用 是 引用类型 的一种 ; 借助 常量引用 , 可以将一个变量引用 作为实参 传递给一个函数形参 , 同时保证该值不会在函数内部被…...

React原理 - React Reconciliation-下

目录 Fiber Reconciler 【react v16.13.1】 React Fiber需要解决的问题 React Fiber的数据结构 时间分片 Fiber Reconciler 的调度 双缓冲 池概念 小节 练习 Fiber Reconciler 【react v16.13.1】 Fiber 协调 优化了栈协调的事务性弊端引起的卡顿 React Fiber需要解决…...

YOLOv8超参数调优教程! 使用Ray Tune进行高效的超参数调优!

原创文章为博主个人所有,未经授权不得转载、摘编、倒卖、洗稿或利用其它方式使用上述作品。违反上述声明者,本站将追求其相关法律责任。 这篇博文带大家玩点新的东西,也是一直以来困扰大家最大的问题—超参数调优! 之前的 YOLOv5 我使用遗传算法做过很多次调优,实验一跑就…...

JVM运行时数据区

文章目录 JVM内存结构图1、运行时数据区域JDK 1.7JDK 1.81. 线程栈&#xff08;虚拟机栈&#xff09;2. 本地方法栈3. 程序计数器4. 方法区&#xff08;元空间&#xff09;5. 堆6、运行时常量池&#xff08;Runtime Constant Pool&#xff09;7、直接内存&#xff08;Direct Me…...

第七章,相似矩阵及其应用,3-二次型、合同矩阵与合同变换

第七章&#xff0c;相似矩阵及其应用&#xff0c;3-二次型、合同矩阵与合同变换 二次型相关概念二次型二次型的标准形和规范形表示形式 合同矩阵与合同变换定义 合同合同矩阵的性质等价、相似、合同三种关系的对比等价相似合同 玩转线性代数(38)二次型概念、合同矩阵与合同变换…...

css学习7(盒子模型)

1、盒子模型图&#xff1a; Margin(外边距) - 清除边框外的区域&#xff0c;外边距是透明的。Border(边框) - 围绕在内边距和内容外的边框。Padding(内边距) - 清除内容周围的区域&#xff0c;内边距是透明的。Content(内容) - 盒子的内容&#xff0c;显示文本和图像。 <!DO…...

C++笔记之临时变量与临时对象与匿名对象

C笔记之临时变量与临时对象与匿名对象 code review! 文章目录 C笔记之临时变量与临时对象与匿名对象1.C中的临时变量指的是什么&#xff1f;2.C中的临时对象指的是什么&#xff1f;3.C中临时对象的作用是什么&#xff1f;什么时候要用到临时对象?4.给我列举具体的例子说明临…...

缓存技术(缓存穿透,缓存雪崩,缓存击穿)

大家好 , 我是苏麟 , 今天聊一聊缓存 . 这里需要一些Redis基础 (可以看相关文章等) 本文章资料来自于 : 黑马程序员 如果想要了解更详细的资料去黑马官网查看 前言:什么是缓存? 缓存,就是数据交换的 缓冲区 (称作Cache [ kʃ ] ),俗称的缓存就是缓冲区内的数据,是存贮数据的…...

实操教程 | 触发器实现 Apache DolphinScheduler 失败钉钉自动告警

作者 | sqlboy-yuzhenc 背景介绍 在实际应用中&#xff0c;我们经常需要将特定的任务通知给特定的人&#xff0c;虽然 Apache DolphinScheduler 在安全中心提供了告警组和告警实例&#xff0c;但是配置起来相对复杂&#xff0c;并且还需要在定时调度时指定告警组。通过这篇文…...

以“迅”防“汛”!5G视频快线筑牢防汛“安全堤”

近期&#xff0c;西安多地突发山洪泥石流灾害。防洪救灾刻不容缓&#xff0c;为进一步做好防汛工作&#xff0c;加强防洪调度监管&#xff0c;切实保障群众的生命财产安全&#xff0c;当地政府管理部门亟需拓展智能化技术&#xff0c;通过人防技防双保障提升防灾救灾应急处置能…...

jmeter 性能测试工具的使用(Web性能测试)

1、下载 该软件不用安装&#xff0c;直接解压打开即可使用。 2、使用 这里就在win下进行&#xff0c;图形界面较为方便   在目录apache-jmeter-2.13\bin 下可以见到一个jmeter.bat文件&#xff0c;双击此文件&#xff0c;即看到JMeter控制面板。主界面如下&#xff1a; 3、创…...

springboot整合第三方技术邮件系统

springboot整合第三方技术邮件系统&#xff0c;发邮件是java程序的基本操作&#xff0c;springboot整合javamail其实就是简化开发。不熟悉邮件的小伙伴可以先学习完javamail的基础操作&#xff0c;再来看这一部分内容才能感触到springboot整合javamail究竟简化了哪些操作。简化…...

Python入门学习——Day2-变量和数据类型

一、Python 变量 在Python中&#xff0c;变量用于保存数据&#xff0c;方便程序对数据的处理和操作。下面是关于Python变量的一些重要概念&#xff1a; 变量命名规则&#xff1a; 变量名由字母、数字和下划线组成。变量名可以以字母或下划线开头&#xff0c;但不能以数字开头…...

Graylog 更改显示的时区(Display timezone)

每个 Graylog 用户都可以配置他们的显示时区。 这会更改用于查看日志消息的时区&#xff0c;但不会更改日志消息的原始时区。 默认情况下&#xff0c;Graylog 显示 UTC 格式的所有时间戳&#xff08;也就是 0:00&#xff09;。就像是下面这样 非Admin账户要更改时区&#xff1…...

【网络安全防护】上海道宁与Bitdefender帮助您构建弹性网络并降低安全运营成本

在网络的世界中 风险变得更加常见与复杂 企业需要从网络安全转向网络弹性 复杂的网络攻击已非常普遍 在面临攻击时 企业如何保持业务连续性&#xff1f; Bitdefender GravityZone将 风险分析、安全加固、威胁预防 检测和响应功能相结合 帮助您构建弹性网络 并降低安全…...