蓝桥杯专题-真题版含答案-【扑克牌排列】【放麦子】【纵横放火柴游戏】【顺时针螺旋填入】

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总
游戏脚本-辅助自动化Android控件全解手册再战Android系列
Scratch编程案例软考全系列Unity3D学习专栏
蓝桥系列ChatGPT和AIGC

👉关于作者

专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)
有什么需要欢迎底部卡片私我,获取更多支持,交流让学习不再孤单

CSDN-芝麻粒儿

👉实践过程

😜扑克牌排列

下面代码模拟了一套扑克牌(初始排序A~K,共13张)的操作过程。
操作过程是:
手里拿着这套扑克牌,从前面拿一张放在后面,再从前面拿一张放桌子上,再从前面拿一张放在后面,…
如此循环操作,直到剩下最后一张牌也放在桌子上。
下面代码的目的就是为了求出最后桌上的牌的顺序。
初始的排列如果是A,2,3…K,则最后桌上的顺序为:
[2, 4, 6, 8, 10, Q, A, 5, 9, K, 7, 3, J]
请分析代码逻辑,并推测划线处的代码。

package Question1_9;
import java.util.Arrays;
import java.util.List;
import java.util.Vector;
public class Question7 {public static List moveCard(List src) {if (src == null)return null;List dst = new Vector();for (;;) {if (src.size()==0)break;      // 填空src.add(src.remove(0));dst.add(src.remove(0));                // 填空}return dst;}
public static void main(String[] args) {List a = new Vector();a.addAll(Arrays.asList("A", "2", "3", "4", "5", "6", "7", "8", "9","10", "J", "Q", "K"));System.out.println(moveCard(a));}
}
运行结果:
[2, 4, 6, 8, 10, Q, A, 5, 9, K, 7, 3, J]
import java.util.ArrayList;
public class Squeezer {public static void main(String args[]){ArrayList<String> list=new ArrayList();list.add("K");list.add("Q");list.add("J");list.add("10");list.add("9");list.add("8");list.add("7");list.add("6");list.add("5");list.add("4");list.add("3");list.add("2");list.add("A");ArrayList<String> out=new ArrayList<String>();out.add(list.get(0));list.remove(0);while(list.size()>0){out.add(list.get(0));list.remove(0);out.add(out.get(0));out.remove(0);}int i=out.size()-1;while(i>0){System.out.print(out.get(i--)+",");}System.out.print(out.get(0));}
}

😜放麦子

你一定听说过这个故事。国王对发明国际象棋的大臣很佩服,
问他要什么报酬,大臣说:请在第1个棋盘格放1粒麦子,
在第2个棋盘格放2粒麦子,在第3个棋盘格放4粒麦子,
在第4个棋盘格放8粒麦子,…后一格的数字是前一格的两倍,
直到放完所有棋盘格(国际象棋共有64格)。
国王以为他只是想要一袋麦子而已,哈哈大笑。
当时的条件下无法准确计算,但估算结果令人吃惊:即使全世界都铺满麦子也不够用!
请你借助计算机准确地计算,到底需要多少粒麦子。

package Question1_9;
import java.math.BigInteger;
publicclass Question9 {publicstaticvoid main(String[] args) {BigInteger total=new BigInteger("0"); BigInteger base=new BigInteger("2");for (int i = 0; i < 64; i++) {total=total.add(base.pow(i));//System.out.println(total);}System.out.println(total);System.out.println(base.pow(64).add(new BigInteger("-1")));}
}
运行结果:
18446744073709551614
import java.math.BigInteger;  
public class Demo03 {  public static void main(String[] args) {  BigInteger bi = new BigInteger("0");  for(int i=0;i<64;i++){  bi = bi.add(BigInteger.valueOf((long)(Math.pow(2, i))));  }  System.out.println(bi);  }  
} 

😜纵横放火柴游戏

这是一个纵横火柴棒游戏。如图[1.jpg],在3x4的格子中,游戏的双方轮流放置火柴棒。其规则是:

  1. 不能放置在已经放置火柴棒的地方(即只能在空格中放置)。
  2. 火柴棒的方向只能是竖直或水平放置。
  3. 火柴棒不能与其它格子中的火柴“连通”。所谓连通是指两根火柴棒可以连成一条直线,
    且中间没有其它不同方向的火柴“阻拦”。
    例如:图[1.jpg]所示的局面下,可以在C2位置竖直放置(为了方便描述格子位置,图中左、下都添加了标记),
    但不能水平放置,因为会与A2连通。同样道理,B2,B3,D2此时两种方向都不可以放置。但如果C2竖直放置后,
    D2就可以水平放置了,因为不再会与A2连通(受到了C2的阻挡)。
    在这里插入图片描述
  4. 游戏双方轮流放置火柴,不可以弃权,也不可以放多根。直到某一方无法继续放置,则该方为负(输的一方)。
    游戏开始时可能已经放置了多根火柴。
    你的任务是:编写程序,读入初始状态,计算出对自己最有利的放置方法并输出。
    如图[1.jpg]的局面表示为:
    00-1
    -000
    0100
    即用“0”表示空闲位置,用“1”表示竖直放置,用“-”表示水平放置。
    【输入、输出格式要求】
    用户先输入整数 n(n<100), 表示接下来将输入 n 种初始局面,每种局面占3行(多个局面间没有空白行)。
    程序则输出:每种初始局面情况下计算得出的最佳放置法(行号+列号+放置方式)。
    例如:用户输入:
    2
    0111
    -000
    -000
    1111
    0010
    则程序可以输出:
    00-
    211
    不难猜出,输出结果的含义为:
    对第一个局面,在第0行第0列水平放置
    对第二个局面,在第2行第1列垂直放置
    注意:
    行号、列号都是从0开始计数的。
    对每种局面可能有多个最佳放置方法(解不唯一),只输出一种即可。
    例如,对第一个局面,001 也是正解;最第二个局面,201也是正解。
package Question10_19;
import java.util.Scanner;
publicclass Question13 {publicstaticboolean isOk(char[][] state, int i, int j) {if (state[i][j] == '-') {for (int j2 = j + 1; j2 < 4; j2++) {if (state[i][j2] == '-') {returnfalse;} elseif (state[i][j2] == '1') {returntrue;}}for (int j2 = j - 1; j2 >= 0; j2--) {if (state[i][j2] == '-') {returnfalse;} elseif (state[i][j2] == '1') {returntrue;}}} elseif (state[i][j] == '1') {for (int i2 = i + 1; i2 < 3; i2++) {if (state[i2][j] == '1') {returnfalse;} elseif (state[i2][j] == '-') {returntrue;}}for (int i2 = i - 1; i2 >= 0; i2--) {if (state[i2][j] == '1') {returnfalse;} elseif (state[i2][j] == '-') {returntrue;}}}returntrue;}privatestaticvoid jasdklf(char[][] state) {for (int i = 0; i < 3; i++) {for (int j = 0; j < 4; j++) {if (state[i][j] == '0') {state[i][j] = '-';if (isOk(state, i, j)) {System.out.println(i + "" + j + '-');return;}state[i][j] = '0';state[i][j] = '1';if (isOk(state, i, j)) {System.out.println(i + "" + j + '1');return;}state[i][j] = '0';}}}}publicstaticvoid main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();scanner.nextLine();char[][] state = newchar[3][4];String s;while ((n--) > 0) {for (int i = 0; i < 3; i++) {s = scanner.nextLine();for (int j = 0; j < 4; j++) {state[i][j] = s.charAt(j);}}jasdklf(state);}}
}
import java.util.Scanner;  
import java.util.List;  
import java.util.ArrayList;  
public class Demo05 {  static boolean flag = false;    // 用来标记是否连通   static boolean flag2 = false;   // 用来标记是否没有结果, 如果没有结果输出"空";   // 初始化数组   public static void init(List<char[][]> lis,String[] s,int n){  for(int i=0;i<n;i++){  for(int j=i*3;j<i*3+3;j++){  lis.get(i)[j%3] = s[j].toCharArray();  }  }  }  // 创建n个数组  初始化,并存入lis   public static void input(List<char[][]> lis,int n){  Scanner scan = new Scanner(System.in);  for(int i=1;i<=n;i++){       // 创建数组   lis.add(new char[3][4]);  }  String[] s = new String[n*3];  for(int i=0;i<n*3;i++){  // 行到输入的数据   s[i] = scan.nextLine();  }  init(lis,s,n);  // 用输入的数据 初始化每个数组   }  // c='1' 检查列上侧是否连通    public static boolean colU(char[][] m,int i,int j,char c){  if(i<0){  flag = true;    // 都不连通   return flag;  }  if(m[i][j]=='0'){  return colU(m,i-1,j,c);  }else if(m[i][j]=='1'){  flag = false;   // 有一个 '1' 则连通   return flag;  }else if(m[i][j]=='-'){  flag = true;    // 有一个 '-' 则不连通   return flag;  }  return flag;  }  // c='1' 检查列下侧是否连通    public static boolean colD(char[][] m,int i,int j,char c){  if(i>=m.length){  flag = true;    // 都不连通   return flag;  }  if(m[i][j]=='0'){  return colD(m,i+1,j,c);  }else if(m[i][j]=='1'){  flag = false;   // 有一个 '1' 则连通   return flag;  }else if(m[i][j]=='-'){  flag = true;    // 有一个 '-' 则不连通   return flag;  }  return flag;  }  // c='-' 检查行左侧是否连通   public static boolean rowL(char[][] m,int i,int j,char c){  if(j<0){  flag = true;    // 都不连通   return flag;  }  if(m[i][j]=='0'){  return rowL(m,i,j-1,c);  }else if(m[i][j]=='1'){  flag = true;    // 有一个 '1' 则不连通   return flag;  }else if(m[i][j]=='-'){  flag = false;   // 有一个 '-' 则连通   return flag;  }  return flag;  }  // c='-' 检查行右侧是否连通   public static boolean rowR(char[][] m,int i,int j,char c){  if(j>=m[i].length){  flag = true;    // 都不连通   return flag;  }  if(m[i][j]=='0'){  return rowR(m,i,j+1,c);  }else if(m[i][j]=='1'){  flag = true;    // 有一个 '1' 则不连通   return flag;  }else if(m[i][j]=='-'){  flag = false;   // 有一个 '-' 则连通   return flag;  }  return flag;  }  // 当c='1'时 检查是否连通1111111111111111111   public static boolean check1(char[][] m, int i, int j, char c) {  if(colU(m,i,j,c)&&colD(m,i,j,c)){   // 是 '1' 时 检查(上下)是否连通   flag = true;  }else{  return false;  }  return flag;  }  // 当c='-'时 检查是否连通-------------------   public static boolean check2(char[][] m, int i, int j, char c) {  if(rowL(m,i,j,c)&&rowR(m,i,j,c)){   // 是 '-' 时 检查(左右)是否连通   flag = true;  }else{  return false;  }  return flag;  }  // 检测并添加元素   public static void calc2(char[][] m,int i,int j){  if(check1(m, i, j, '1')){   // 等于'1'时,行列都不连通   m[i][j] = '1';  // 则添加元素   }else if(check2(m, i, j, '-')){// 等于'-'时,行列都不连通   m[i][j] = '-';// 则添加元素   }else{  flag2 = true;   // 表示无结果   }  }  // 计算函数的入口   public static void calc(char[][] m){  for(int i=0;i<m.length;i++){  for(int j=0;j<m[i].length;j++){  if(m[i][j]=='0'){  calc2(m,i,j);   // 进入检测函数   }  if(flag){  String temp = i+""+j+""+m[i][j];  System.out.println(temp);  flag2 = false;  // 如果有元素添加,那么就不为空!下边的就不必输出"空"值   break; // 如果添加过元素,则退出循环   }  }  if(flag){ // 如果添加过元素,则退出循环   flag = false;  break;  }  }  if(flag2){  // 如果无结果,则添加空   System.out.println("空");      flag2 = false;  // 修改标记位   }  }  // 主函数   public static void main(String[] args){  Scanner scan = new Scanner(System.in);  List<char[][]> lis = new ArrayList<char[][]>(); // 存放每个数组   System.out.print("输入整数 n(n<100):");  // 创建n个数组  初始化,并存入lis   input(lis,scan.nextInt());    // 计算函数的入口, 单独去每个数组去测试   for(int i=0;i<lis.size();i++){  calc(lis.get(i));     }  }  
}

😜顺时针螺旋填入

从键盘输入一个整数(1~20)
则以该数字为矩阵的大小,把1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中。例如:
输入数字2,则程序输出:
1 2
4 3
输入数字3,则程序输出:
1 2 3
8 9 4
7 6 5
输入数字4,则程序输出:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7

package Question20_29;
import java.util.Scanner;
publicclass Question25 {publicstaticvoid print(int[][] array) {for (int i = 0; i < array.length; i++) {for (int j = 0; j < array.length; j++) {System.out.printf("%4d",array[i][j]);}System.out.println();}}publicstaticvoid main(String[] args) {Scanner scanner=new Scanner(System.in);int n=scanner.nextInt();int array[][]=newint[n][n];int startIndex=0,endIndex=n-1,count=1,e=0;while (e<=n/2) {for (int i = startIndex; i <= endIndex; i++) {array[e][i]=count++;}for (int i = startIndex+1; i <= endIndex; i++) {array[i][n-1-e]=count++;}for (int i = endIndex-1; i>=startIndex; i--) {array[n-1-e][i]=count++;}for (int i = endIndex-1; i>startIndex; i--) {array[i][e]=count++;}startIndex++;endIndex--;e++;}print(array);}
}
运行结果:
输入一个整数:4
1	2	3	4	
12	13	14	5	
11	16	15	6	
10	9	8	7	
import java.util.Scanner;  
public class Demo08 {  public static void show(int[][] m) {  for(int[] x:m){  for(int y:x){  System.out.print(y+"\t");  }  System.out.println("");  }  }  // 顺时针螺旋   public static int[][] helix(int n) {  int[][] m = new int[n][n];  // 产生空矩阵   int t = n*n;    // 填充矩阵从1到n*n个数   int i = 0;      // 填充数字的位置(行下标)    int j = 0;      // 填充数字的位置(列下标)    int start = 0;  // 每填充一圈时用的边界(左上)   int end = n;    // 每填充一圈时用的边界(右下)   int x = 0;      // 填充左侧一竖列数字时用的起始位置(行下标)   int y = 0;      // 填充左侧一竖列数字时用的起始位置(列下标)   int count = 0;  // 标记那段程序执行,那段程序不执行   for(int s=1;s<=t;s++){  if(i==start&&j<end){ // 如果是第一行   m[i][j++] = s;      // 填充第一行   }else if(i<end-1&&count<1){   // count==0时处理   j = end-1;  // 列设置为右边界   i++;    // 行下标 下移   }  if(i>start&&i<end){  if(j>start){  if(i==end-1){   // 到下边界了   m[i][j--] = s;  // 填充下边界   }else{  m[i][j] = s;    // 填充右侧一竖列数字   }  }else if(count==0){ // 只当count==0 时执行一次   m[i][j] = s;    // 填充到了左下角的元素   i--;        // 开始从下向上填充左侧元素(行坐标上移)   x = i;      // 用新的下标x来填充左侧 (行下标)   y = j;      // 用新的下标y来填充左侧 (列下标)   count++;  }else if(x>start&&y<end){  m[x--][y] = s;  // 填充左侧   }else if(x==start){ // 如果外圈填充完毕   s--;    // 接下来填充的数字放到下一的内圈里(抵消循环的s++)   start++;    // 左上角边界向内收缩 1   end = --n;  // 右下角边界向内收缩 1   i = start;  // 按边界的位置开始填充内圈(行下标)   j = start;  // 按边界的位置开始填充内圈(列下标)   x = i;  // 填充左侧一竖列数字时用的起始位置(行下标)   y = j;  // 填充左侧一竖列数字时用的起始位置(列下标)   count = 0;  // 恢复执行程序段的标记   }  }  }  return m;   // 返回矩阵   }  public static void main(String[] args){  Scanner scan = new Scanner(System.in);  System.out.print("输入一个整数:");  int n = scan.nextInt(); // 输入 n    int[][] m = helix(n);   // 矩阵大小为n*n   show(m);    // 输出矩阵   }  
}  

👉其他

📢作者:小空和小芝中的小空
📢转载说明-务必注明来源:https://zhima.blog.csdn.net/
📢这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!!!旁边有点赞👍收藏🌟今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。

温馨提示点击下方卡片获取更多意想不到的资源。
空名先生

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/225122.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python Pandas 如何给DataFrame增加一行/多行 数据(第6讲)

Python Pandas 如何给DataFrame增加一行/多行 数据(第6讲)         🍹博主 侯小啾 感谢您的支持与信赖。☀️ 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ…

GZ015 机器人系统集成应用技术样题2-学生赛

2023年全国职业院校技能大赛 高职组“机器人系统集成应用技术”赛项 竞赛任务书&#xff08;学生赛&#xff09; 样题2 选手须知&#xff1a; 本任务书共 25页&#xff0c;如出现任务书缺页、字迹不清等问题&#xff0c;请及时向裁判示意&#xff0c;并进行任务书的更换。参赛队…

QT-坦克大战游戏

QT-坦克大战游戏 一、演示效果二、关键程序三、下载链接 一、演示效果 二、关键程序 #include "score.h" Score::Score(){health30; maxHealthhealth;QLabel *label1 new QLabel(this);label1->setFrameStyle(QFrame::Plain | QFrame::Box);label1->setStyle…

将 Github token 添加至远程仓库

将 Github token 添加至远程仓库后便于每次 push 重复输入的麻烦 首先,将已生成的 token 记录(注:生成后的 token 确认后便无法查看只能重新生成)并找到对应的项目 git 本地文件路径下 其次,将其与项目所关联,按如下格式配置即可 token 格式类似于 ghp_CAxxxxxxxxxxxxxxxxxGx5j…

竞赛保研 python+深度学习+opencv实现植物识别算法系统

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于深度学习的植物识别算法研究与实现 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;4分工作量&#xff1a;4分创新点&#xff1a;4分 &#x1f9ff; 更多…

AI人工智能在建筑智能化工程设计的应用

AI人工智能在建筑智能化工程设计的应用 相关政策&#xff1a; 建筑智能化工程设计资质是为了合理设计各种智能化系统&#xff0c;让它们有机地结合成为有效的整体作用。在工程设计标准中&#xff0c;智能化资质设计全称为建筑智能化系统专项设计资质。企业一旦具备智能化设计资…

vue 使用 Echarts做地图及飞线效果

前言&#xff1a; 效果图 一. 项目中安装以及引入Echarts 1.1 npm 命令安装echarts库 npm install echarts --save 1.2 yarn命令安装echarts库 yarn add echarts 1.3 引用 a. 在使用页面上引入 在Vue组件的script标签中引入echarts库 使用 echarts import * as echarts f…

动态面板简介以及ERP原型图案列

动态面板简介以及ERP原型图案列 1.Axure动态面板简介2.使用Axure制作ERP登录界面3.使用Asure完成左侧菜单栏4.使用Axuer完成公告栏5.使用Axuer完成左边侧边栏 1.Axure动态面板简介 在Axure RP中&#xff0c;动态面板是一种强大的交互设计工具&#xff0c;它允许你创建可交互的…

mysql数据库损坏后重装,数据库备份

重装 先卸载 sudo apt-get remove --purge mysql-server mysql-client mysql-common sudo apt-get autoremove sudo apt-get autoclean 然后重新安装MySQL: sudo apt-get install mysql-server mysql-client 首先要先使用无密码登录数据库一定要使用 sudo mysql -uroo…

C#Winform菜鸟驿站管理系统-快递信息管理界面多条件查询实现方法

1&#xff0c;具体的页面设计如下&#xff0c; 2&#xff0c; 关于下拉框数据填充实现&#xff0c;站点选择代码实现如下&#xff0c;因为站点加载在很多界面需要用到&#xff0c;所以把加载站点的方法独立出来如下&#xff1b; /// <summary>/// 加载站点下拉框/// <…

SaaS行业分析

文章目录 什么是SaaS ?SaaS的标准定义什么是软件即服务&#xff1f;SaaS与传统软件的区别 &#xff1f; SaaS行业分析你知道最赚钱的行业是什么&#xff1f;互联网带给企业的变化 SaaS与PaaS、IaaS的区别&#xff1f;IaaS&#xff08;Infrastructure as a Service&#xff09;…

配置VRRP负载分担示例

一、组网需求&#xff1a; HostA和HostC通过Switch双归属到SwitchA和SwitchB。为减轻SwitchA上数据流量的承载压力&#xff0c;HostA以SwitchA为默认网关接入Internet&#xff0c;SwitchB作为备份网关&#xff1b;HostC以SwitchB为默认网关接入Internet&#xff0c;SwitchA作为…

基于YOLOv8深度学习的高精度车辆行人检测与计数系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

介绍一款低代码数据可视化平台

一、前言 随着企业数字化拉开序幕&#xff0c;低代码( Low Code Development)开发的概念开始火起来&#xff0c;即用少量的代码就能开发复杂的业务系统。然后更进一步&#xff0c;由此又催生出一个新的概念&#xff1a;无代码开发( No Code Development)。 低代码和无代码开发平…

Docker单点部署 Elasticsearch + Kibana [8.11.3]

文章目录 一、Elasticsearch二、Kibana三、访问四、其他 Elasticsearch 和 Kibana 版本一般需要保持一致才能一起使用&#xff0c;但是从 8.x.x开始&#xff0c;安全验证不断加强&#xff0c;甚至8.x.x之间的版本安全验证方法都不一样&#xff0c;真的很恼火。 这里记录一次成…

娱乐新拐点:TikTok如何改变我们的日常生活?

在数字时代的浪潮中&#xff0c;社交媒体平台不断涌现&#xff0c;其中TikTok以其独特的短视频内容在全球范围内掀起了一场娱乐革命。本文将深入探讨TikTok如何改变我们的日常生活&#xff0c;从社交互动、文化传播到个人创意表达&#xff0c;逐步改写了娱乐的新篇章。 短视频潮…

idea2023解决右键没有Servlet的问题

复制Servlet Class.java中的文件。 回到文件&#xff0c;然后点击小加号 然后输入刚刚复制的东西&#xff1a; 3. 此时右键有servlet。 4. 然后他让你输入下面两个框&#xff1a; JAVAEE TYPE中输入Servlet Class Name 表示你要创建的Servlet类的名称是什么。自己起名字。然后…

手动添加Git Bash Here到右键菜单(超详细)

通过WindowsR快捷键可以打开“运行窗口”&#xff0c;在“窗口”中输入“regedit”&#xff0c;点击“确定”打开注册表。 依次进入HKEY_CLASSES_ROOT —-》 Directory —-》Background —-》 shell 路径为Computer\HKEY_CLASSES_ROOT\Directory\Background\shell 3.在“s…

状态的一致性和FlinkSQL

状态一致性 一致性其实就是结果的正确性。精确一次是指数据有可能被处理多次&#xff0c;但是结果只有一个。 三个级别&#xff1a; 最多一次&#xff1a;1次或0次&#xff0c;有可能丢数据至少一次&#xff1a;1次或n次&#xff0c;出错可能会重试 输入端只要可以做到数据重…

[每周一更]-(第27期):HTTP压测工具之wrk

[补充完善往期内容] wrk是一款简单的HTTP压测工具,托管在Github上,https://github.com/wg/wrkwrk 的一个很好的特性就是能用很少的线程压出很大的并发量. 原因是它使用了一些操作系统特定的高性能 io 机制, 比如 select, epoll, kqueue 等. 其实它是复用了 redis 的 ae 异步事…