从前端到后端:如何在 URL 参数中传递 JSON 数据
引言
在 Web 开发中,我们经常需要将数据作为 URL 参数进行传递。当我们需要传递复杂的数据结构时,如何在前端将其转换为字符串,并在后端正确地解析它呢?本文将介绍如何在前端将 JSON 数据进行 URL 编码,并在后端将其解析为相应的数据类型,同时提供 Java 语言的示例代码。
在前端使用 URL 参数传递 JSON 数据
有时候我们需要在前端将 JSON 数据传递给后端,例如通过 AJAX 请求或者页面跳转。URL 参数是一种常见的传递数据的方式,但是由于 URL 参数只支持字符串类型的数据,而 JSON 数据是一种复杂的数据类型,因此需要进行编码和解码操作。
在 JavaScript 中,我们可以使用 JSON.stringify() 方法将 JSON 对象转换为字符串,然后使用 encodeURIComponent() 方法对字符串进行 URL 编码。以下是一个将 JSON 数据作为 URL 参数发送 AJAX 请求的示例:
const data = { name: 'John', age: 30 };
const encode ...
选择哪种Web服务器?WebLogic vs Undertow vs Tomcat vs Nginx对比分析!
前言
WebLogic、Undertow、Tomcat和Nginx是常用的Web服务器和应用程序服务器。它们具有不同的功能、应用场景、优缺点等方面的特点,本文将对它们进行详细的比较。
功能比较
WebLogic是一个完整的JavaEE应用程序服务器,它具有强大的功能和灵活的配置。WebLogic支持分布式应用程序部署、负载均衡、高可用性、安全性等特性,适用于大型企业级Java应用程序。
Undertow是一个轻量级的Web服务器和应用程序服务器,它具有高性能和可扩展性的特点。Undertow支持HTTP、HTTPS、AJAX、WebSockets等协议,适用于构建高性能、低延迟的Web应用程序。
Tomcat是一个轻量级的Web服务器和应用程序服务器,它具有简单易用的特点。Tomcat支持Servlet、JSP等Java Web开发技术,适用于中小型Web应用程序。
Nginx是一个高性能的Web服务器和反向代理服务器,它具有高并发能力、低延迟和高可靠性的特点。Nginx支持负载均衡、反向代理、HTTP缓存等特性,适用于构建高性能、高并发、低延迟的Web应用程序。
应用场景比较
Web ...
Firewall vs iptables:什么是最好的Linux防火墙工具?
前言
作为一名Linux管理员,保护服务器免受网络攻击是最重要的任务之一。Linux操作系统提供了许多防火墙工具,其中最常用的是iptables和Firewall。本文将比较Firewall和iptables之间的不同之处,并探讨哪个防火墙工具更适合您的需求。
Firewall和iptables是什么?
iptables是一个Linux防火墙工具,它通过对网络数据包进行过滤和修改来控制网络访问。Firewall是新一代的Linux动态防火墙,它基于D-Bus消息系统,采用了Zone和Service的概念来管理网络访问。
iptables使用命令
查看当前的iptables规则:iptables -L
清除当前的iptables规则:iptables -F
允许指定端口的流量通过:iptables -A INPUT -p tcp --dport [端口号] -j ACCEPT
阻止指定端口的流量通过:iptables -A INPUT -p tcp --dport [端口号] -j DROP
允许某个IP地址的流量通过:iptables -A INPUT -s [IP地址] -j AC ...
Nacos:1.0 vs. 2.0,你需要选择哪个版本来管理你的微服务?
引言
Nacos是一个开源的分布式配置中心和服务发现平台,它可以帮助开发者轻松管理微服务架构中的配置和服务注册。在Nacos的不断发展中,1.0版本和2.0版本都是非常重要的版本,本篇博客将对这两个版本进行介绍和比较。
一、Nacos 1.0版本
Nacos 1.0版本于2019年3月发布,它是Nacos的第一个正式版本,也是经过多次测试和优化后的稳定版本。相较于之前的beta版本,Nacos 1.0版本有了很大的改进和优化,主要包括以下几个方面:
1. 功能完善
Nacos 1.0版本在功能上相对完善,包括了配置中心、服务注册与发现、命名空间、健康检查等核心功能。此外,Nacos 1.0版本还增加了可插拔的扩展能力,可以方便地扩展各种插件,例如自定义的服务发现协议。
2. 性能提升
Nacos 1.0版本在性能上也有很大的提升,通过优化网络通信协议和数据存储方式,大大提高了系统的并发处理能力和吞吐量,可以满足更高的性能需求。
3. 稳定性改进
Nacos 1.0版本在稳定性方面也进行了不少改进,通过增加监控和自动修复机制,可以更快地检测和修复系统故障,从而提高了系统的稳定性和可靠性。 ...
当数据遇上响应式编程:Java应用中如何使用R2DBC访问关系型数据库?
在当今的大数据时代,关系型数据库仍然是最常用的数据存储方式之一。Java是一种广泛使用的编程语言,也是访问关系型数据库的主要语言之一。在Java应用程序中,通常使用JDBC(Java Database Connectivity)API来访问数据库。但是,JDBC使用的同步/阻塞模型在处理高并发和大数据量的情况下可能会成为瓶颈,因此R2DBC(Reactive Relational Database Connectivity)在此时显得更加合适。
R2DBC是Java应用程序访问关系型数据库的一种新方式,它采用了响应式编程的思想,提供了异步、非阻塞的API,能够提高Java应用程序在高并发场景下的性能和可伸缩性。
在本文中,我们将介绍R2DBC的基本概念和原理,并提供一些使用R2DBC的示例。
R2DBC的基本概念和原理
R2DBC(Reactive Relational Database Connectivity)是一种基于异步、响应式编程模型的标准化关系型数据库连接API。R2DBC允许您使用响应式编程模型访问关系型数据库,这种编程模型通常用于处理大量并发请求、高吞吐量和低延迟场景。 ...
当分布式遇上一致性:Raft、SofaJRaft和Distro协议大比拼
前言
今天,我学习nacos的源码,看到了distro协议,于是本篇博客就由此而来了,通过网上查找的资料我大体整理了下,下面是整理后的结果。
引言
分布式系统是由多个计算机节点组成的系统,这些节点通过网络相互连接,并协同工作来实现一个共同的目标。在分布式系统中,数据的一致性是一个非常重要的问题。分布式一致性算法可以帮助我们解决这个问题。本文将介绍三种分布式一致性算法:distro协议、sofajraft协议、raft协议,并讨论它们的适用场景和特点。
Raft协议
Raft是一种分布式一致性算法,由Stanford大学的Diego Ongaro和John Ousterhout于2013年提出。Raft算法的主要目标是提供一种易于理解和实现的分布式一致性算法。Raft算法具有良好的可读性和易于理解的特点,使得它容易被人们理解和实现。Raft算法通过领导选举、日志复制、一致性检查点等基础功能,保证了分布式系统中数据的一致性。
SofaJRaft协议
SofaJRaft是一种基于Raft协议的改进版本。SofaJRaft在Raft协议的基础上增加了一些特性,例如动态配置、快照等,以适应更加复 ...
详细的Python Flask的操作
本篇文章是Python Flask 建站框架入门课程_编程实战微课_w3cschool微课的学习笔记,根据课程整理而来,本人使用版本如下:
Python
3.10.0
Flask
2.2.2
简介
Flask是一个轻量级的可定制的web框架
Flask 可以很好地结合MVC模式进行开发
Flask还有很强的很强的扩展性和兼容性
核心函数库
Flask主要包括Werkzeug和Jinja2两个核心函数库,它们分别负责业务处理和安全方面的功能,这些基础函数为web项目开发过程提供了丰富的基础组件。
Werkzeug
Werkzeug库十分强大,功能比较完善,支持URL路由请求集成,一次可以响应多个用户的访问请求;
支持Cookie和会话管理,通过身份缓存数据建立长久连接关系,并提高用户访问速度;支持交互式Javascript调试,提高用户体验;
可以处理HTTP基本事务,快速响应客户端推送过来的访问请求。
Jinja2
Jinja2库支持自动HTML转移功能,能够很好控制外部黑客的脚本攻击;
系统运行速度很快,页面加载过程会将源码进行编译形成python ...
凡人神将传游戏攻略
合服活动
注:普通召唤券往后4000给100,5000给100,6000给150,7000给150,至此封顶
注:幻神神魄使用情况,目前不全,欢迎留言补充
零氪黄道神武
摘星楼、秘境、龙珠神将出现顺序
摘星楼:2金灵圣女、4火神祝融、6水神共工、8敖烈、10万圣公主、12北财神赵公明、14地神后土、16龙吉公主
秘境:1吕玲绮、5孙尚香、9马超、13大乔
龙珠:3蔡文姬、7小乔、11司马懿、15黄月英
炼妖嘉年华
九星秘宝
500,500,1000,1500,1500,5000,7500,后面还有两个不知道
抽卡嘉年华
九星秘宝
500,500,1000,1500,,1500,5000,7500,后面还有两个不知道
归墟
财神宝轮
根据以往经验来看,到一定次数必出对应东西,具体如下:
40 :一万玉
80 :百分之2
250:1星龙装
290:百分之2
370:2星龙装或福运至宝
390:5万玉
410:百分之5
690:3星龙装
推荐是到410次抽一回
docker镜像构建以及宿主机和容器间的相互拷贝
前言
主要学习docker的相关操作,构建镜像、docker容器运行、从容器内往外拷贝文件,向容器内拷贝文件,进入容器
docker构建镜像
编写Dockerfile文件:
vi Dockerfile
文件内输入
from nginx
在同目录执行构建命令:
docker build -t my-nginx .
docker容器运行
执行命令:
# 运行命令
docker run --name my-nginx -d -p 40080:80 my-nginx
# 查看所有容器信息
docker ps -a
浏览器输入IP:40080,显示默认nginx页面
从容器内往外拷贝文件
执行命令:
# 拷贝文件
docker cp my-nginx:/usr/share/nginx/html/index.html index.html
# 查看文件内容
cat index.html
# 修改文件内容
vi index.html
# 查看文件内容
cat index.html
向容器内拷贝文件
执行命令:
# 拷贝文件
docker c ...
免费HTTPS证书部署
前言
由于腾讯云限制了免费证书的使用个数,而我之前因为免费就随意了很多,现在,一个正在使用的证书过期了,没法继续使用,这样就导致了在浏览器中不能一步到位的打开网站
网站介绍
使用的是FreeSSL.cn网站,该网站提供免费的HTTPS证书申请,下面是网站首页
安装acme.sh
我们需要先在服务器上安装acme.sh,建议使用root用户安装
curl https://get.acme.sh | sh -s email=my@example.com
ACME 域名配置
在首页中输入想要申请证书的域名,点击后面的按钮
点击下一步
根据内容,去你的域名管理处添加信息,添加后回来点击按钮
出现下面的页面,可以先直接点击完成
部署证书
acme.sh 部署命令,这个就是上面图中的内容
acme.sh --issue -d blog.huangge1199.cn --dns dns_dp --server [专属 ACME 地址]
生成证书,注意生成证书的路径根据自己的情况修改
acme.sh --install-cert -d blog.huan ...
群晖安装PostgreSQL
确认套件中心有PostgreSQL
我这边在套件中心中搜索到PostgreSQL了,要安装就先要确认有它,我这边的环境的spk7d 系统版本
我在套件中心设置的套件来源有2个
https://packages.synocommunity.com/
https://spk7.imnks.com/
安装
这步就简单了,直接在套件中心安装套件即可,安装过程中,需要设置用户名、密码和端口号,端口号不能重复的
TDengine安装使用
引言
近期,听说了时序数据库TDengine,本人的好奇心又出来了,同是时序数据库的InfluxDB不也挺好的嘛?通过一些网上的资料以及些简单的实际操作,本人得出的结论是:
数据量少时,InfluxDB的性能好些
当数据量越来越大之后,TDengine就更适合你使用了
内容介绍
本文将会围绕TGengine进行简单的介绍,当然我也是初次使用,这份文档也只是初步的学习记录,如果有朋友在实际中使用了TGengine并且觉得这篇文章有什么问题,还请在下方留言,我会根据实际情况对文章进行修改,这样也是为了防止给别人留坑
对TGengine做下简单介绍(摘抄自官方文档)
安装TGengine服务端的过程
TDengine 数据建模
DataGrip如何查看数据
使用java语言进行REST连接测试
另外,我这边服务端是使用TDengine-server-2.6.0.30-Linux-x64.tar.gz进行安装的
介绍
注:本段内容摘自官方文档
TDengine 是一款高性能、分布式、支持 SQL 的时序数据库 (Database),其核心代码,包括集群功 ...
群晖nas上部署gitea后修改IP地址
事件
今天,我在nas的套件中心中发现了Gitea这个套件,想到自己的代码都是保存在GitHub或者Gitee上面的,
于是乎我边在nas上面装了这个套件,装备将代码在nas里面也备份一份
我的nas所在网络没有公网IP,用内网穿透形式弄的,但是在用穿透后的IP:端口进入时,就报了下面的警告
看介绍,是说地址不一样了,绿框中的地址分别是我本地地址和穿透后的公网地址,为了方便,我就想把地址换成
公网的地址,这样以后复制地址什么的也方便
换IP
有两种方法:
每次都将本地IP改为穿透的公网ip
修改配置文件conf.ini
第一种方法需要每一次都改,太麻烦了,我这里使用的是第二种方法
群晖的gitea的配置文件是在安装目录下的/var下面,我安装在/var/packages里
打开conf.ini文件,注意这地方需要root权限,因此执行命令
sudo vi conf.ini
将12行这地方改成穿透后的公网IP
重启gitea套件
在套件中心中找到gitea,然后停用
启动gitea
完成验证
为了确保成功,完成后再通过穿透后的公网进入,页面的红框消失
vue下el-popover组件实现滚轴跟随功能
描述
使用的是点击触发弹出内容,目标是在弹出内容的情况下,上下来回滚动鼠标,弹出内容和点击按钮不分离
通过监听页面滚动来实现功能,当监听到页面有滚动时,通过组件的updatePopper()方法来更新组件的位置
代码
<el-popover
ref="popover"
placement="right"
width="400"
trigger="click"
style="position: relative">
<el-table :data="gridData">
<el-table-column width="150" property="date" label="日期"></el-table-colu ...
力扣2415. 反转二叉树的奇数层
311周赛第三题
原题链接:2415. 反转二叉树的奇数层
题目
给你一棵 完美 二叉树的根节点 root ,请你反转这棵树中每个 奇数 层的节点值。
例如,假设第 3 层的节点值是 [2,1,3,4,7,11,29,18] ,那么反转后它应该变成 [18,29,11,7,4,3,1,2] 。
反转后,返回树的根节点。
完美 二叉树需满足:二叉树的所有父节点都有两个子节点,且所有叶子节点都在同一层。
节点的 层数 等于该节点到根节点之间的边数。
示例 1:
输入:root = [2,3,5,8,13,21,34]
输出:[2,5,3,8,13,21,34]
解释:
这棵树只有一个奇数层。
在第 1 层的节点分别是 3、5 ,反转后为 5、3 。
示例 2:
输入:root = [7,13,11]
输出:[7,11,13]
解释:
在第 1 层的节点分别是 13、11 ,反转后为 11、13 。
示例 3:
输入:root = [0,1,2,0,0,0,0,1,1,1,1,2,2,2,2]
输出:[0,2,1,0,0,0,0,2,2,2, ...







