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

字符串思维题练习 DAY6 (CF 245H , CF 559B , CF 1731C , CF1109B)

字符串思维题练习 DAY6 (CF 245H , CF 559B , CF 1731C , CF1109B)

CF 245 H. Queries for Number of Palindromes(字符串 + dp)

Problem - H - Codeforces

大意:给出一个字符串S (|S| ≤ 5000) , 给出 Q 次询问 , 每次询问 S 的一个区间 [l , r] , 求区间字符串的回文子串个数。

思路:一开始考虑了 马拉车 ,求出每个位置作为回文中心的最大回文半径 , 但是这样的话每次询问都要遍历区间[l , r] 去更新每一个回文中心所对应的回文半径 , 复杂度

O ( ∑ i = 1 Q ( r i − l i ) ) O(\sum_{i=1}^{Q}(r_i-l_i) ) O(i=1Q(rili))

显然是不能接受的 , 考虑 O(N^2) 预处理 , O(1) 回答询问

a n s [ i ] [ j ] 为 [ l , r ] 的答案 ans[i][j] ~为[l , r]的答案 ans[i][j] [l,r]的答案

考虑转移

a n s [ l ] [ r ] = a n s [ l ] [ r − 1 ] + p r e [ l ] [ r ] ans[l][r]=ans[l][r-1]+pre[l][r] ans[l][r]=ans[l][r1]+pre[l][r]

pre[l][r] 是右边界为 r , 左边界 ≥ l 所有字符串中回文串的个数

p r e [ l ] [ r ] = p r e [ l ] [ r − 1 ] + d p [ l ] [ r ] pre[l][r] = pre[l][r-1]+dp[l][r] pre[l][r]=pre[l][r1]+dp[l][r]

dp[l][r] 为 [l , r] 这个区间的字符串是否为回文串

所以显而易见问题就变成了就 dp[l][r] , 有两种求法

第一种 : 区间dp

不难看出我们要求的是一个个区间 , 且区间之间存在转移关系 , 所以可以使用区间 dp 进行转移。

初始化:初始化奇回文和偶回文 , 显然所有长度为一的区间都为回文区间 , 长度为二的区间判断是否回文即可。

转移方程: d p [ l ] [ r ] ∣ = ( d p [ l + 1 ] [ r − 1 ] & & ( s [ l ] = = s [ r ] ) ) 转移方程:dp[l][r] |= (dp[l + 1][r - 1] ~~\&\&~~ (s[l] == s[r])) 转移方程:dp[l][r]=(dp[l+1][r1]  &&  (s[l]==s[r]))

#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define IOS std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
//#define int long long
const int INF = 9e18;
const int N = 5e3 + 10;
const int mod = 1e9 + 7;
typedef pair<int,int>PII;int ans[N][N] , pre[N][N];
bool dp[N][N];
int n , q;
string s;signed main(){IOScin >> s;n = s.size();s = '?' + s;for(int i = 1 ; i <= n ; i ++) dp[i][i] = 1;for(int i = 1 ; i < n ; i ++) dp[i][i + 1] = (s[i] == s[i + 1]);for(int len = 3 ; len <= n ; len ++) {for(int l = 1 ; l <= n ; l ++) {int r = l + len - 1;dp[l][r] |= (dp[l + 1][r - 1] && (s[l] == s[r]));}}for(int r = 1 ; r <= n ; r ++) {for(int l = r ; l >= 1 ; l --){pre[l][r] = pre[l + 1][r] + dp[l][r];}}for(int l = 1 ; l <= n ; l ++) {for(int r = l ; r <= n ; r ++) {ans[l][r] = ans[l][r - 1] + pre[l][r];}}cin >> q;while(q --) {int l , r;cin >> l >> r;cout << ans[l][r] << "\n";}return 0;
}
//freopen("文件名.in","r",stdin);
//freopen("文件名.out","w",stdout);

第二种:马拉车

马拉车的思路比较直接 , 求出每个回文中心对应的回文半径的长度 , 以当前回文中心更新即可。

#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define IOS std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
//#define int long long
//const int INF = 9e18;
const int N = 5e3 + 10;
const int mod = 1e9 + 7;
typedef pair<int,int>PII;int ans[N][N] , pre[N][N];
bool dp[N][N];
int n , q , m;
string s , t;int d[N * 2 + 1];
//给出一个字符串求d[i]数组并返回马拉车串
string manacher(string s){string now = "#$";int n = s.size();for(int i = 0 ; i < n ; i ++) now += s[i] , now += '$';n = now.size();d[1] = 1;for(int i = 2 , l , r = 1; i < n ; i ++){if(i <= r) d[i] = min(d[r - i + l] , r - i + 1);else d[i] = 1;while(now[i - d[i]] == now[i + d[i]]) d[i] += 1;if(i + d[i] - 1 > r) l = i - d[i] + 1 , r = i + d[i] - 1; }return now;	
}void watch(string s){int n = s.size();for(int i = 0 ; i < n ; i ++) cout << s[i] << " ";cout << "\n"; for(int i = 0 ; i < n ; i ++) cout << d[i] << " ";cout << "\n";
}signed main(){IOScin >> s;n = s.size();t = manacher(s);m = t.size();
//	watch(s);	int len = 0 , l = 0 , r = 0;for(int i = 1 ; i <= m ; i ++) {if(i & 1) {//偶回文中心len = (d[i] - 1) / 2;l = (i - 1) / 2;r = (i + 1) / 2;} else {len = d[i] / 2;l = r = i / 2;}for(int i = 1 ; i <= len ; i ++ , l -= 1 , r += 1) {dp[l][r] = 1;}}for(int r = 1 ; r <= n ; r ++) {for(int l = r ; l >= 1 ; l --){pre[l][r] = pre[l + 1][r] + dp[l][r];}}for(int l = 1 ; l <= n ; l ++) {for(int r = l ; r <= n ; r ++) {ans[l][r] = ans[l][r - 1] + pre[l][r];}}cin >> q;while(q --) {int l , r;cin >> l >> r;cout << ans[l][r] << "\n";}return 0;
}
//freopen("文件名.in","r",stdin);
//freopen("文件名.out","w",stdout);

CF 559 B. Equivalent Strings(哈希+搜索剪枝)

Problem - B - Codeforces

大意:两个等长的字符串 a , b(条件相等)需要满足以下两个条件其一:

1 : 两个字符串相等

2: 字符串 a 可以分为等长的 a1 , a2 , 字符串 b 可以分为等长的 b1 b2 。满足 a1 与 b1(条件相等)a2 与 b2(条件相等)或者 a1 与 b2 (条件相等) a2 与 b1 (条件相等)。

给出两个登场字符串判断是否条件相等。

思路:不难看出这个条件相等是一个递归的定义 , 考虑递归搜索,哈希比较区间字符串。不妨计算一下递归搜索的复杂度。

首先考虑搜索的深度 , 由于每次往下走一层区间的长度减半 , 所以最多搜索 log(2e5) = 18 层 , 每次搜索 , 每个状态会分裂为四个状态即比较(a1 , b1) (a2 , b2) (a1 , b2) (a2 , b1) , 比较的次数为 4^18 = 6e15 , 非常恐怖的复杂度。

考虑搜索剪枝:

剪枝1 : 两个条件相等的区间字符的种类数和每种的个数相等 , 考虑前缀和处理 , O(1) 查询区间的字符个数 , 每次搜索之前判断一下是否相等。

剪枝2:对于每一层 , 满足两个条件其中一个当前区间的字符串即为条件相等 , 不用再去搜另外一颗子树。

加上两个剪枝后实测能跑 900ms , 时限 2s

#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define IOS std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
#define int long long
const int INF = 9e18;
const int N = 2e6 + 10;
const int mod = 1e9 + 7;
typedef pair<int,int>PII;#define ull unsigned long long
const int Base = 131;
ull base[N] , hx[N] , hy[N];
string x , y;
int n;
int cntx[N][2] , cnty[N][2];
//-------------------------------------------------------------
//求[l , r) 的散列值 (从 0 开始) 
inline ull get_x(int l,int r){return hx[r] - hx[l] * base[r - l];
}
inline ull get_y(int l,int r){return hy[r] - hy[l] * base[r - l];
}bool ask(int lx , int rx , int ly , int ry) {lx += 1;ly += 1;rx += 1;ry += 1;return (cntx[rx][0] - cntx[lx - 1][0] != cnty[ry][0] - cnty[ly - 1][0]) || (cntx[rx][1] - cntx[lx - 1][1] != cnty[ry][1] - cnty[ly - 1][1]);
}/*
哈希 + 递归搜索剪枝
两次剪枝
*/bool judge(int lx , int rx , int ly , int ry) {if(get_x(lx , rx + 1) == get_y(ly , ry + 1)) return 1;else {int len = rx - lx + 1;if(len & 1) {return 0;} else {int mid = len / 2;bool tag1 = 0 ,  tag2 = 0;if(ask(lx , lx + mid - 1 , ly , ly + mid - 1) || ask(lx + mid , rx , ly + mid , ry)) tag1 = 0;else tag1 = (judge(lx , lx + mid - 1 , ly , ly + mid - 1) && judge(lx + mid , rx , ly + mid , ry));if(tag1) return 1;if(ask(lx , lx + mid - 1 , ly + mid , ry) || ask(lx + mid , rx , ly , ly + mid - 1)) tag2 = 0;else tag2 = (judge(lx , lx + mid - 1 , ly + mid , ry) && judge(lx + mid , rx , ly , ly + mid - 1));if(tag2) return 1;return 0;}}
}signed main(){cin >> x >> y;n = x.size();base[0] = 1;for(int i = 1 ; i <= n ; i ++) base[i] = base[i - 1] * Base;hx[0] = 0;for(int i = 1 ; i <= n ; i ++) {hx[i] = hx[i - 1] * Base + x[i - 1];cntx[i][0] = cntx[i - 1][0] + (x[i - 1] == 'a');cntx[i][1] = cntx[i - 1][1] + (x[i - 1] == 'b');}hy[0] = 0;for(int i = 1 ; i <= n ; i ++) {hy[i] = hy[i - 1] * Base + y[i - 1];cnty[i][0] = cnty[i - 1][0] + (y[i - 1] == 'a');cnty[i][1] = cnty[i - 1][1] + (y[i - 1] == 'b');}if(judge(0 , n - 1 , 0 , n - 1)) {cout << "YES\n";} else {cout << "NO\n";}return 0;
}
//freopen("文件名.in","r",stdin);
//freopen("文件名.out","w",stdout);

CF 1731 C. Even Subarrays(枚举剪枝)

Problem - C - Codeforces

大意:给出一个序列 , 求有多少个子区间异或和不为平方数。

转化问题 , 原题 = 总子区间个数 - 异或和为平方数的子区间个数 , 所以要求异或和为平方数的子区间个数。

思路:显然区间异或和能组成的平方数是有限的 , 最多有 根号个的 , 所以我们不妨对于每一个右边界记录合法的左边界的个数 , 合法的左边界即枚举每一个可能组成的平方数 ,根据 pre[l - 1] = pre[r] ^ x , 求出合法的左边界的前缀状态 , 计数即可。

复杂度 O ( n n ) 复杂度O(n\sqrt n) 复杂度O(nn )

注意:坑点在于异或和能表示的范围和状态记录的范围数组开的大小 , 要注意。

#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define IOS std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
#define int long long
const int INF = 9e18;
const int N = 2e5 + 10;
const int mod = 1e9 + 7;
typedef pair<int,int>PII;/*
ans = all - 区间异或值为平方数的区间个数
*/int n , t , a[N];
int v[N] , cnt;signed main(){IOScin >> t;while(t --) {cin >> n;for(int i = 1 ; i <= n ; i ++) {cin >> a[i];}cnt = 0;v[++cnt] = 0;for(int i = 1 ; i * i <= 2 * n ; i ++) v[++cnt] = i * i;//注意思考这里的空间为什么开四倍vector<int>pre(4 * n + 1);int res = 0 , ans = (n + 1) * n / 2 , now = 0;pre[0] = 1;for(int i = 1 ; i <= n ; i ++) {now ^= a[i];for(int j = 1 ; j <= cnt ; j ++) {res += pre[now ^ v[j]];}			pre[now] += 1;}cout << ans - res << "\n";}return 0;
}
//freopen("文件名.in","r",stdin);
//freopen("文件名.out","w",stdout);

CF 1109 B. Sasha and One More Name(思维)

Problem - B - Codeforces

大意:给出一个回文字符串 , 求最小的分割次数 k , 将当前回文串分割为 k + 1 部分 , 然后重排这 k + 1 部分 , 能得到一个新的回文字符串。

思路:考虑当前字符串是否存在的一个长度 ≤ len / 2 的前缀位置不是当前字符串的border , 如果存在 , 显然 k = 2 的花费就能解决 , 如果不存在 , 手模一下发现不可能存在答案。

对于比 k = 2 更优的答案即 k = 1 的情况 , 考虑暴力枚举分割位置 , 检验方案是否合理 , 复杂度O(n^2);

#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define IOS std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
#define int long long
const int INF = 9e18;
const int N = 2e6 + 10;
const int mod = 1e9 + 7;
typedef pair<int,int>PII;int nex[N];void init(string s){int len = s.size();nex[1] = 0;for(int i = 2 ; i <= len ; i ++){nex[i] = nex[i-1];while(nex[i] && s[nex[i]] != s[i-1]) nex[i] = nex[nex[i]];nex[i] += (s[i-1] == s[nex[i]]);}
}string s;
int n;signed main(){cin >> s;n = s.size();init(s);bool ok = 0;int ans = -1;vector<bool>tag(n + 1);int now = nex[n];while(now) {tag[now] = 1;now = nex[now];}string now_s , now_k;for(int i = 1 ; i < n ; i ++) {now_s = s.substr(i) + s.substr(0 , i);if(now_s == s) continue;now_k = now_s;reverse(now_k.begin() , now_k.end());if(now_s != now_k) continue;ok = 1; }if(ok == 1) {ans = 1;} else {for(int i = 1 ; i <= n / 2 ; i ++) if(!tag[i]) ans = 2;}if(ans == -1) {cout << "Impossible\n";} else {cout << ans << "\n";}return 0;
}
//freopen("文件名.in","r",stdin);
//freopen("文件名.out","w",stdout);

相关文章:

字符串思维题练习 DAY6 (CF 245H , CF 559B , CF 1731C , CF1109B)

字符串思维题练习 DAY6 (CF 245H , CF 559B , CF 1731C &#xff0c; CF1109B) CF 245 H. Queries for Number of Palindromes&#xff08;字符串 dp&#xff09; Problem - H - Codeforces 大意&#xff1a;给出一个字符串S (|S| ≤ 5000) , 给出 Q 次询问 &#xff0c; 每…...

Linux:Mac VMware Fusion13以及CentOS7安装包

Linux&#xff1a;Mac VMware Fusion13以及CentOS7安装包 1. Mac VMware Fusion132. CentOS7安装包3. 安装 1. Mac VMware Fusion13 下载官网地址&#xff1a;https:www.vmware.com/products/fusion/fusion-evaluation.html 2. CentOS7安装包 注意是m芯片需要使用arm架构的i…...

【微服务部署】十、使用Docker Compose搭建高可用Redis集群

现如今&#xff0c;业务系统对于缓存Redis的依赖似乎是必不可少的&#xff0c;我们可以在各种各样的系统中看到Redis的身影。考虑到系统运行的稳定性&#xff0c;Redis的应用和MySQL数据库一样需要做到高可用部署。 一、Redis 的多种高可用方案 常见的Redis的高可用方案有以下…...

【数据结构】树状数组C++详解

文章目录 引入树状数组定义什么是单点修改和区间查询工作原理区间查询代码实现单点修改实现代码242. 一个简单的整数问题AC代码如下:练习:AC代码如下:引入 242. 一个简单的整数问题 给定长度为 N的数列 A A A<...

机器人制作开源方案 | 扫地机器人

1. 功能描述 扫地机器人是现代家庭清洁的得力助手&#xff0c;能够自主规划清扫路径&#xff0c;避开障碍物&#xff0c;有效覆盖整个清洁区域。扫地机器人的出现极大地减轻了家庭清洁的负担&#xff0c;节省了时间和精力&#xff0c;它可以定期清理地面&#xff0c;确保家居环…...

10.2手动推导linux中file, cdev, inode之间的关系

是时候可以手动推导一下linux里面基类父类和子类的关系了 代码放最后把 简单说明版 详细流程 第一步注册驱动 cdev结构体能看做是一个基类,那么链表里面都是字符设备驱动的cdev连载一起,啥串口,lcd的,通过cdev->list_head连接 那cdev结构体里有主次设备号 第一步 使用r…...

JavaScript基础知识13——运算符:一元运算符,二元运算符

哈喽&#xff0c;大家好&#xff0c;我是雷工。 JavaScript的运算符可以根据所需表达式的个数&#xff0c;分为一元运算符、二元运算符、三元运算符。 一、一元运算符 1、一元运算符&#xff1a;只需要一个表达式就可以运算的运算符。 示例&#xff1a;正负号 一元运算符有两…...

异步使用langchain

文章目录 一.先利用langchain官方文档的AI功能问问二.langchain async api三.串行&#xff0c;异步速度比较 一.先利用langchain官方文档的AI功能问问 然后看他给的 Verified Sources 这个页面里面虽然有些函数是异步函数&#xff0c;但是并非专门讲解异步的 二.langchain asy…...

抖音开放平台第三方代小程序开发,授权事件、消息与事件通知总结

大家好&#xff0c;我是小悟 关于抖音开放平台第三方代小程序开发的两个事件接收推送通知&#xff0c;是开放平台代小程序实现业务的重要功能。 授权事件推送和消息与事件推送类型都以Event的值判断。 授权事件推送通知 授权事件推送包括&#xff1a;推送票据、授权成功、授…...

华为9.20笔试 复现

第一题 丢失报文的位置 思路&#xff1a;从数组最小索引开始遍历 #include <iostream> #include <vector> using namespace std; // 求最小索引值 int getMinIdx(vector<int> &arr) {int minidx 0;for (int i 0; i < arr.size(); i){if (arr[i] …...

二十五、【色调调整基础】

文章目录 1、亮度/对比度a、亮度b、对比度 2、曝光度3、阈值4、色阶5、反相6、黑白7、渐变映射 1、亮度/对比度 a、亮度 亮度是指画面的明亮程度 b、对比度 对比度指的是一幅图像中&#xff0c;明暗区域最亮和最暗之间不同亮度层级的测量&#xff0c;如下图所示&#xff0…...

Android Studio SDK manager加载packages不全

打开Android Studio里的SDK manager&#xff0c;发现除了已安装的&#xff0c;其他的都不显示。 解决方法&#xff1a; 设置代理&#xff1a; 方便复制> http://mirrors.neusoft.edu.cn/ 重启Android Studio...

[esp32-wroom]基础开发

1、点亮LED灯 int led_pin2; void setup() {// put your setup code here, to run once:pinMode(led_pin,OUTPUT);}void loop() {// put your main code here, to run repeatedly:digitalWrite(led_pin,HIGH);delay(1000);digitalWrite(led_pin,LOW);delay(1000); } 2、LED流…...

利用Docker 实现 MiniOB环境搭建

官方文档有,但是感觉写的跟shift一样(或者是我的阅读理解跟shift一样 下面是自己的理解 一.下载docker 这个去官网下载安装,没什么说的 Docker: Accelerated Container Application Development 二.用docker下载MiniOB环境 1.打开powershell ( win r ,然后输入powershell…...

【DB2】—— 数据库表查询一直查不出来数据

问题描述 近日&#xff0c;数据库的测试环境中有一个打印日志表&#xff0c;一共有将近50w的数据&#xff0c;Java程序在查询的时候一直超时。 在DBvisualizer中查询数据无论是使用select * 还是 select count(*)查询的时候都是一直在执行&#xff0c;就是查询不到结果。 排查…...

【教程】使用vuepress构建静态文档网站,并部署到github上

官网 快速上手 | VuePress (vuejs.org) 构建项目 我们跟着官网的教程先构建一个demo 这里我把 vuepress-starter 这个项目名称换成了 howtolive 创建并进入一个新目录 mkdir howtolive && cd howtolive使用你喜欢的包管理器进行初始化 yarn init 这里的问题可以一…...

python 机器视觉 车牌识别 - opencv 深度学习 机器学习 计算机竞赛

1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于python 机器视觉 的车牌识别系统 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;3分创新点&#xff1a;3分 &#x1f9ff; 更多资…...

Hadoop3教程(十二):MapReduce中Shuffle机制的概述

文章目录 &#xff08;95&#xff09; Shuffle机制什么是shuffle&#xff1f;Map阶段Reduce阶段 参考文献 &#xff08;95&#xff09; Shuffle机制 面试的重点 什么是shuffle&#xff1f; Map方法之后&#xff0c;Reduce方法之前的这段数据处理过程&#xff0c;就叫做shuff…...

MySQL为什么用b+树

索引是一种数据结构&#xff0c;用于帮助我们在大量数据中快速定位到我们想要查找的数据。 索引最形象的比喻就是图书的目录了。注意这里的大量&#xff0c;数据量大了索引才显得有意义&#xff0c;如果我想要在[1,2,3,4]中找到4这个数据&#xff0c;直接对全数据检索也很快&am…...

浅谈机器学习中的概率模型

浅谈机器学习中的概率模型 其实&#xff0c;当牵扯到概率的时候&#xff0c;一切问题都会变的及其复杂&#xff0c;比如我们监督学习任务中&#xff0c;对于一个分类任务&#xff0c;我们经常是在解决这样一个问题&#xff0c;比如对于一个n维的样本 X [ x 1 , x 2 , . . . .…...

MySQL 函数 索引 事务 管理

目录 一. 字符串相关的函数 二.数学相关函数 ​编辑 三.时间日期相关函数 date.sql 四.流程控制函数 centrol.sql 分页查询 使用分组函数和分组字句 group by 数据分组的总结 多表查询 自连接 子查询 subquery.sql 五.表的复制 六.合并查询 七.表的外连接 …...

Flink如何基于事件时间消费分区数比算子并行度大的kafka主题

背景 使用flink消费kafka的主题的情况我们经常遇到&#xff0c;通常我们都是不需要感知数据源算子的并行度和kafka主题的并行度之间的关系的&#xff0c;但是其实在kafka的主题分区数大于数据源算子的并行度时&#xff0c;是有一些注意事项的&#xff0c;本文就来讲解下这些注…...

总结:JavaEE的Servlet中HttpServletRequest请求对象调用各种API方法结果示例

总结&#xff1a;JavaEE的Servlet中HttpServletRequest请求对象调用各种API方法结果示例 一方法调用顺序是按照英文字母顺序从A-Z二该示例可以用作servlet中request的API参考&#xff0c;从而知道该如何获取哪些路径参数等等三Servlet的API版本5.0.0、JSP的API版本&#xff1a;…...

ChatGPT AIGC 完成Excel跨多表查找操作vlookup+indirect

VLOOKUP和INDIRECT的组合在Excel中用于跨表查询,其中VLOOKUP函数用于在另一张表中查找数据,INDIRECT函数则用于根据文本字符串引用不同的工作表。具体操作如下: 1.假设在工作表1中,A列有你要查找的值,B列是你希望查询的工作表名称。 2.在工作表1的C列输入以下公式:=VLO…...

Linux系统conda虚拟环境离线迁移移植

本人创建的conda虚拟环境名为yys&#xff08;每个人的虚拟环境名不一样&#xff0c;替换下就行&#xff09; 以下为迁移步骤&#xff1a; 1.安装打包工具将虚拟环境打包&#xff1a; conda install conda-pack conda pack -n yys -o yys.tar.gz 2.将yys.tar.gz上传到服务器&…...

Vue16 绑定css样式 style样式

绑定样式&#xff1a; 1. class样式写法:class"xxx" xxx可以是字符串、对象、数组。字符串写法适用于&#xff1a;类名不确定&#xff0c;要动态获取。对象写法适用于&#xff1a;要绑定多个样式&#xff0c;个数不确定&#xff0c;名字也不确定。数组写法适用于&…...

[Spring] SpringMVC 简介(三)

目录 九、SpringMVC 中的 AJAX 请求 1、简单示例 2、RequestBody&#xff08;重点关注“赋值形式”&#xff09; 3、ResponseBody&#xff08;经常用&#xff09; 4、为什么不用手动接收 JSON 字符串、转换 JSON 字符串 5、RestController 十、文件上传与下载 1、Respo…...

kettle应用-从数据库抽取数据到excel

本文介绍使用kettle从postgresql数据库中抽取数据到excel中。 首先&#xff0c;启动kettle 如果kettle部署在windows系统&#xff0c;双击运行spoon.bat或者在命令行运行spoon.bat 如果kettle部署在linux系统&#xff0c;需要执行如下命令启动 chmod x spoon.sh nohup ./sp…...

Git Commit Message规范

概述 Git commit message规范是一种良好的实践&#xff0c;可以帮助开发团队更好地理解和维护代码库的历史记录。它可以提高代码质量、可读性和可维护性。下面是一种常见的Git commit message规范&#xff0c;通常被称为"Conventional Commits"规范&#xff1a; 一…...

Linux网络编程系列之UDP广播

Linux网络编程系列 &#xff08;够吃&#xff0c;管饱&#xff09; 1、Linux网络编程系列之网络编程基础 2、Linux网络编程系列之TCP协议编程 3、Linux网络编程系列之UDP协议编程 4、Linux网络编程系列之UDP广播 5、Linux网络编程系列之UDP组播 6、Linux网络编程系列之服务器编…...

淘客怎么做网站推广/今日新闻头条

Java中User Thread和Daemon Thread的区别 Java将线程分为User线程和Daemon线程两种。通常Daemon线程用来为User线程提供某些服务。程序的main()方法线程是一个User进程。User进程创建的进程为User进程。当所有的User线程结束后&#xff0c;JVM才会结束。 通过在一个线程对象上…...

建筑设计师专业网站/百度引流怎么推广

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼该程序用于实现linux系统中wc命令的最简单模式wc 命令用于统计文件中字符信息。[xxlocalhost 1.5]$ wc 01.c 02.c 03.c15 23 131 01.c13 18 127 02.c14 20 128 03.c42 61 386 总用量使用c语言写出这种小程序。/** Name: count.c* T…...

behance设计网站图片/十大新媒体平台有哪些

SeismicPro是一个地震剖面显示软件&#xff0c;可从标准SEGY地震数据体中抽取纵测线和横测线的二维剖面&#xff0c;并以波形、变面积和变密度等多种方式进行专业化显示&#xff0c;可进行一键式显示方式切换&#xff0c;并可进行定制开发叠加井轨迹与测井曲线等。 我感觉最人性…...

wordpress 中文/店铺推广引流的方法

一般情况下下拉选择框的默认值都是第一个&#xff0c;比如下面这个代码的默认值肯定是“红色”&#xff1a; <select> <option value"红色">红色</option> <option value"绿色">绿色</option> <option value"蓝色&q…...

盐山网站建设/seo排名优化工具推荐

澄清P问题、NP问题、NPC问题的概念 作者:matrix67 日期:2006-08-28 字体大小: 小 中 大这或许是众多OIer最大的误区之一。你会经常看到网上出现“这怎么做&#xff0c;这不是NP问题吗”、“这个只有搜了&#xff0c;这已经被证明是NP问题了”之类的话。你要知道&#xff0c;大…...

wordpress自动添加动态内容/关键词搜索热度查询

Fiddler中的inspector的意思是“检查器”的意思&#xff0c;用来显示界面左侧抓取到的数据列表中选定数据的请求和响应。 1 打开inspector 可以使用两种方法来打开Fiddler的inspector&#xff0c;一种是在数据列表中双击某个数据就可以打开右侧面板&#xff0c;在右侧面板中选…...