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

数独游戏app制作拆解(之三)——数字候选区实现

所谓的数据候选区就是这个:

数字候选区功能及实现:

说明:这部分其实也是textview.

本区功能:

一、实现数字显示到显示区。点击显示区选定某个格子后,再点击这里的数字,会在格子内显示相应的数字。在编辑题目的时候textview的text字体为黑色,解题的时候是红色,在解题的时候直接就是红色字体。如图:

逻辑:其实就是选择的textview的text等于候选数字区的textview的text.只不过在不同的状态下显示不同的颜色,没什么难的。

代码实现(这里面包括其他功能,看后面拆解。):

 // 遍历设置每个数字(1,2,3,,,)的textview功能for (TextView viewnum : anniushuzi) {viewnum.setOnTouchListener(new View.OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {switch (event.getAction()) {case MotionEvent.ACTION_DOWN:// 当按下时的处理//如果是空的才能修改if (mytextview.getText().toString() == "") {mytextview.setText(viewnum.getText());//修改选定的textvie的text等于点击的数字。//stopSound();mediaplayer.start();//播放声音}paichong(mytextview);//行列宫排重out.println("标志为:"+biaozhi);if (biaozhi==false){//biaozhi==false表示未出错,才保存,最后一步出错不保存。save();}showsamenum(mytextview, viewnum);//找相同的数字并设置背景灰色,//通过计数空值判断是否全部填写完成,空值为0完成,弹窗。int i=0;for (TextView textView : textViews) {if (textView.getText().toString() == "") {i++;}}if(i==0&&biaozhi==false){AlertDialog.Builder builder1 = new AlertDialog.Builder(MainActivity.this);builder1.setTitle("恭喜完成!");builder1.setMessage("今年发大财!!!");builder1.setPositiveButton("确定", new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int which) {//点击确定后操作}});AlertDialog dialog = builder1.create();dialog.show();}}return false; // 返回true表示已消费事件,不再传递}});}

其实实现显示数字就一条就够了:

mytextview.setText(viewnum.getText());

这里面的mytextview就是上篇我提到的一个public变量,表示的是当前点击的格子。但有多个条件限制这个功能实现。比如:只有当这个格子为空的情况下才可以填写,不然就会覆盖。下面判断代码实现:

if (mytextview.getText().toString() == "") {mytextview.setText(viewnum.getText());//修改选定的textvie的text等于点击的数字。//stopSound();mediaplayer.start();//播放声音
}

这里面用到了tostring(),因为textview的text不是字符型数据,必须转化为字符才能和“”进行比较。

(播放声音后面说明 。)

上面代码的anniushuzi是1-9这几个数字textview组成的数组:

anniushuzi = new TextView[]{textview1, textview2, textview3, textview4, textview5, textview6, textview7, textview8, textview9};

通过循环实现单个数字的点击功能也是挺巧妙的,之前我一个数字写一个,没把我累死,出错了,改也麻烦,整个代码臃肿无比,后来也不知道脑子咋想的代码就成一块了,很好。

二、排重。无论是在题目编辑还是在解题的时候,由于操作错误还是思考错误“行,列,宫”内都可以出现重复数字,这是违反规则的,所以必须要显示出来。这个功能实现是先排重再弹窗提示。

1、排重。(函数:paichong())这个功能的实现就是通过对每行,每列,每宫的数字进行轮循比较,实现只要行内、列内,宫内有两个数字相同就属于重复。

代码:

public void paichong(TextView view) {//view为点击的textview,即mytextview.通过点击赋值,每次点击都会变。//行内重复判定,列宫的判定方法相同。biaozhi=false;for (int i = 0; i < 9; i++) {//遍历textviewhang数组for (int j = 0; j < 9; j++) {//遍历textviewhang内每行数组内的元素,即每行的textview。if (textViewshang[i][j] == view) {//定位点击的textview所在行,如果相等则textviewshang[i]即为mytextview所在行。int k = 0;//计数初始化for (TextView viewhang : textViewshang[i]) {//遍历行if (viewhang.getText().toString().equals(view.getText().toString())) {//找到与输入的数值(1,2,3..。)相等的textview并计数。转下行。。k++;//计数+1,与k+=1相同                                          //==比较的是地址,可能不相同,equals()比较的是值,此处只能用equals(),否则排重出错。};if (viewhang.getText().toString().equals(view.getText().toString()) && k == 2) {//如果值(1,2,3..)相同并且计数等于2(重复)则背景改为红色biaozhi=true;//如果填写重复数字(两个数字相同)的标志//弹窗AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);builder.setTitle("二货!");builder.setMessage("行内输入重复!!!");builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {//点击确定后操作//view1.setBackgroundColor(Color.GRAY);view.setBackgroundColor(Color.GRAY);//颜色改为灰view.setText("");//清空输入的重复值}});AlertDialog dialog = builder.create();dialog.show();break;}}}}}//列内重复判定for (int i = 0; i < 9; i++) {for (int j = 0; j < 9; j++) {if (textViewslie[i][j] == view) {int k = 0;for (TextView viewlie : textViewslie[i]) {if (viewlie.getText().toString().equals(view.getText().toString())) {k++;};if (viewlie.getText().toString().equals(view.getText().toString()) && k == 2) {view.setBackgroundColor(Color.RED);biaozhi=true;AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);builder.setTitle("二货!");builder.setMessage("列内输入重复!!!");builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {//view1.setBackgroundColor(Color.GRAY);view.setBackgroundColor(Color.GRAY);view.setText("");}});AlertDialog dialog = builder.create();dialog.show();break;}}}}}//宫内重复判定for (int i = 0; i < 9; i++) {for (int j = 0; j < 9; j++) {if (textViewsgong[i][j] == view) {int k = 0;for (TextView viewgong : textViewsgong[i]) {if (viewgong.getText().toString().equals(view.getText().toString())) {k++;};if (viewgong.getText().toString().equals(view.getText().toString()) && k == 2) {//view.setBackgroundColor(Color.RED);biaozhi=true;AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);builder.setTitle("二货!");builder.setMessage("宫内输入重复!!!");builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {//view1.setBackgroundColor(Color.GRAY);view.setBackgroundColor(Color.GRAY);view.setText("");}});AlertDialog dialog = builder.create();dialog.show();break;}}}}}}

(其实代码应该还可以简化,懒得改,看,之前显示区的81个格子就是这样的代码,好恐怖。)

textViewshang[i][j] 是个二维数组。textViewslie[i][j],textViewsgong[i][j]也一样,就是行列宫都使用二级数组,在这里很好用。
        textViewshang = new TextView[][]{textViewshang1, textViewshang2, textViewshang3, textViewshang4, textViewshang5, textViewshang6, textViewshang7, textViewshang8, textViewshang9};textViewslie = new TextView[][]{textViewslie1, textViewslie2, textViewslie3, textViewslie4, textViewslie5, textViewslie6, textViewslie7, textViewslie8, textViewslie9};textViewsgong = new TextView[][]{textviewgonh1, textviewgonh2, textviewgonh3, textviewgonh4, textviewgonh5, textviewgonh6, textviewgonh7, textviewgonh8, textviewgonh9};

而里面的每个元素又是一个一维数组,看看有多恐怖:

         //行textViewshang1 = new TextView[]{textview11, textview12, textview13, textview14, textview15, textview16, textview17, textview18, textview19};textViewshang2 = new TextView[]{textview21, textview22, textview23, textview24, textview25, textview26, textview27, textview28, textview29};textViewshang3 = new TextView[]{textview31, textview32, textview33, textview34, textview35, textview36, textview37, textview38, textview39};textViewshang4 = new TextView[]{textview41, textview42, textview43, textview44, textview45, textview46, textview47, textview48, textview49};textViewshang5 = new TextView[]{textview51, textview52, textview53, textview54, textview55, textview56, textview57, textview58, textview59};textViewshang6 = new TextView[]{textview61, textview62, textview63, textview64, textview65, textview66, textview67, textview68, textview69};textViewshang7 = new TextView[]{textview71, textview72, textview73, textview74, textview75, textview76, textview77, textview78, textview79};textViewshang8 = new TextView[]{textview81, textview82, textview83, textview84, textview85, textview86, textview87, textview88, textview89};textViewshang9 = new TextView[]{textview91, textview92, textview93, textview94, textview95, textview96, textview97, textview98, textview99};//列textViewslie1 = new TextView[]{textview11, textview21, textview31, textview41, textview51, textview61, textview71, textview81, textview91};textViewslie2 = new TextView[]{textview12, textview22, textview32, textview42, textview52, textview62, textview72, textview82, textview92};textViewslie3 = new TextView[]{textview13, textview23, textview33, textview43, textview53, textview63, textview73, textview83, textview93};textViewslie4 = new TextView[]{textview14, textview24, textview34, textview44, textview54, textview64, textview74, textview84, textview94};textViewslie5 = new TextView[]{textview15, textview25, textview35, textview45, textview55, textview65, textview75, textview85, textview95};textViewslie6 = new TextView[]{textview16, textview26, textview36, textview46, textview56, textview66, textview76, textview86, textview96};textViewslie7 = new TextView[]{textview17, textview27, textview37, textview47, textview57, textview67, textview77, textview87, textview97};textViewslie8 = new TextView[]{textview18, textview28, textview38, textview48, textview58, textview68, textview78, textview88, textview98};textViewslie9 = new TextView[]{textview19, textview29, textview39, textview49, textview59, textview69, textview79, textview89, textview99};//宫textviewgonh1 = new TextView[]{textview11, textview12, textview13, textview21, textview22, textview23, textview31, textview32, textview33};textviewgonh2 = new TextView[]{textview14, textview15, textview16, textview24, textview25, textview26, textview34, textview35, textview36};textviewgonh3 = new TextView[]{textview17, textview18, textview19, textview27, textview28, textview29, textview37, textview38, textview39};textviewgonh4 = new TextView[]{textview41, textview42, textview43, textview51, textview52, textview53, textview61, textview62, textview63};textviewgonh5 = new TextView[]{textview44, textview45, textview46, textview54, textview55, textview56, textview64, textview65, textview66};textviewgonh6 = new TextView[]{textview47, textview48, textview49, textview57, textview58, textview59, textview67, textview68, textview69};textviewgonh7 = new TextView[]{textview71, textview72, textview73, textview81, textview82, textview83, textview91, textview92, textview93};textviewgonh8 = new TextView[]{textview74, textview75, textview76, textview84, textview85, textview86, textview94, textview95, textview96};textviewgonh9 = new TextView[]{textview77, textview78, textview79, textview87, textview88, textview89, textview97, textview98, textview99};

个人觉得这里的思路也挺牛逼的,我——挺牛逼:)。其实逻辑简单,实现比较麻烦。view为点击的textview,即mytextview.通过点击赋值,每次点击都会变。然后轮循81个格子,发现一样的就弹窗警告重复。但这里实际不是只重复了81次,是三个81次,因为行,列,宫各81次,也就是说每填写一个数字都进行三个81次的轮循。当然有重复的不会循环这么多次,但没有重复一定都会轮循完成。

biaozhi=false;

这是一个标志,给别的地方用的,就是有重复的情况下为true,否则为false.暂时不讲。

计数和弹窗:

if (viewhang.getText().toString().equals(view.getText().toString())) {//找到与输入的数值(1,2,3..。)相等的textview并计数。转下行。。k++;//计数+1,与k+=1相同                                          //==比较的是地址,可能不相同,equals()比较的是值,此处只能用equals(),否则排重出错。};if (viewhang.getText().toString().equals(view.getText().toString()) && k == 2) {//如果值(1,2,3..)相同并且计数等于2(重复)则背景改为红色biaozhi=true;//如果填写重复数字(两个数字相同)的标志//弹窗AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);builder.setTitle("二货!");builder.setMessage("行内输入重复!!!");builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {//点击确定后操作//view1.setBackgroundColor(Color.GRAY);view.setBackgroundColor(Color.GRAY);//颜色改为灰view.setText("");//清空输入的重复值}});AlertDialog dialog = builder.create();dialog.show();break;
if (viewhang.getText().toString().equals(view.getText().toString())) {(k++;
};

上面代码,有相同计数加1。后面:

if (viewhang.getText().toString().equals(view.getText().toString()) && k == 2) {}

如果”行内“某个格子与点击的格子的text相同,并且值为2,则为重复。(个人感觉不用这么麻烦,但现在懒得想,懒得改,反正正常能跑。

弹窗不说了,正常的警告窗口,上个图吧。

三、显示复制数字。这个跟显示区功能相同,填写完成后也需要显示所有相同数字。

四、保存当前题目完成度。其实每填写一个数字都会保存,防止玩半截退出再打开的时候进度不一样。save()函数。

代码:

public void save() {File file = new File(getFilesDir(), "1000.txt");try (PrintWriter out = new PrintWriter(new FileWriter(file))) {for (TextView textView : textViews) {String strings = textView.getText().toString();out.print(strings);out.print(",");}} catch (IOException e) {e.printStackTrace();}}

(关于文件保存读取看之前的博客)

文件路径:/data/data/包名/files/1000.txt

这里面要讲的是保存的文件格式。以”,“为分隔的字符串。看图:

这就是81个格子的信息,读写都按这个格式。

保存到文件的地方app还插多,反正方式都一样,调用函数就行了。

五、完成所有数字填写后弹窗。

代码:

if(i==0&&biaozhi==false){AlertDialog.Builder builder1 = new AlertDialog.Builder(MainActivity.this);builder1.setTitle("恭喜完成!");builder1.setMessage("今年发大财!!!");builder1.setPositiveButton("确定", new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int which) {//点击确定后操作}});AlertDialog dialog = builder1.create();dialog.show();}

这里面用到了两个判定标准,1、所有格子都填完了;2、没有出错。如果出错不保存,如果出错了也保存了,还退出了,再打开 的时候显示的就是错的。只有两个条件都成立才保存。

这部分也就这样了,app的关键功能都完成了,下一篇是其他几个功能按键,可能的话一起说完。

相关文章:

数独游戏app制作拆解(之三)——数字候选区实现

所谓的数据候选区就是这个&#xff1a; 数字候选区功能及实现&#xff1a; 说明&#xff1a;这部分其实也是textview. 本区功能&#xff1a; 一、实现数字显示到显示区。点击显示区选定某个格子后&#xff0c;再点击这里的数字&#xff0c;会在格子内显示相应的数字。在编辑…...

数据结构——排序

*排序属于数据的运算 1、定义:将一组杂乱无章的数据按一定规律顺次排列一起,即将无序序列排成一个有序序列的运算。 (如果参加排序的数据结构包含多个数据域,那么排序往往是针对其中某个域而言) 2、排序的应用十分广泛:程序中间接应用(二分查找、最短路径、最小生成树…...

制造业4.0:AI与机器人如何重塑生产线

引言&#xff1a;从传统到未来的转型 在轰鸣的生产线上&#xff0c;传统制造业曾以规模化生产和成本效益为核心竞争力&#xff0c;推动了全球工业化进程。然而&#xff0c;面对现代市场的多样化需求和激烈竞争&#xff0c;这种模式正暴露出越来越多的局限性&#xff1a;产能过剩…...

Fastdfs V6.12.1集群部署(arm/x86均可用)

文章目录 一、 Fastdfs 介绍二、部署 信息三、步骤tracker/storage 机器的 compose 内容storage 机器的 composetracker 与 storage 启动目录层级与配置文件测试测试集群扩容与缩减注意事项 一、 Fastdfs 介绍 FastDFS 是一款高性能的分布式文件系统&#xff0c;特别适合用于存…...

【学习笔记】深入浅出详解Pytorch中的View, reshape, unfold,flatten等方法。

文章目录 一、写在前面二、Reshape&#xff08;一&#xff09;用法&#xff08;二&#xff09;代码展示 三、Unfold&#xff08;一&#xff09;torch.unfold 的基本概念&#xff08;二&#xff09;torch.unfold 的工作原理&#xff08;三&#xff09; 示例代码&#xff08;四&a…...

解决Presto dirver timestamp时区问题

#bigdata/metabase 一、背景介绍 1、Presto版本 使用阿里云集群的版本 EMR-5.4.2&#xff0c;Presto的版本为338&#xff1b; Facebook后续不再维护&#xff0c;Trino 351为首个版本 2、Metabase版本 历史版本为0.38.4&#xff0c;新版本为0.51.5 3、0.38.4 cast to time…...

【优选算法】Prefix-Kage:前缀和的算法影(上)

文章目录 1.概念解析2.代码实现2.1【模版】前缀和&#xff08;一维&#xff09;2.1.1 原理2.1.2 代码实现 2.2【模版】前缀和&#xff08;二维&#xff09;2.2.1 原理2.2.2 代码实现 希望读者们多多三连支持小编会继续更新你们的鼓励就是我前进的动力&#xff01; 本篇是优选算…...

中阳科技:量化交易模型的技术革新与实践应用

在金融市场日益复杂化的今天&#xff0c;量化交易作为数据驱动的现代化交易方式&#xff0c;已成为金融领域发展的关键方向。中阳科技凭借深厚的技术积累与创新能力&#xff0c;积极探索量化交易模型的优化与应用&#xff0c;开辟了智能金融新局面。 量化交易的优势与市场前景…...

golang 判断一个点是否在一个多边形内

我有一需求为&#xff1a;判断一个点&#xff08;经纬度范围&#xff09;是否在一个多边形范围内&#xff08;多个经纬度点&#xff09; 这里我借助几何库&#xff08; github.com/paulmach/orb&#xff09;来处理地理空间数据 可以通过在线获取经纬度来确认代码正确性 packa…...

图论笔记1

1.1邻接矩阵储存法 //创建:二维数组vector<vector<int>> graph(n,vector<int>(n,0));//储存for(int i0;i<m;i){int x1,x2;cin>>x1>>x2;graph[x1-1][x2-1]1;}1.2邻接表储存法 补充&#xff1a;c中的list是链表 链接 //创建&#xff1a;数组…...

大模型QLoRA微调——基于Qwen2-7B的自动化病历摘要生成系统

01 项目简介 &#xff08;1&#xff09;项目背景 医疗文档中包含大量的诊疗信息&#xff0c;例如疾病诊断、手术名称、解剖部位、药物使用以及影像和实验室检查结果。这些信息是医疗数据分析的核心&#xff0c;但由于医疗文本内容复杂、格式多样&#xff0c;提取这些关键内容…...

CTFHub-ssrf

技能树--Web--SSRF 内网访问 开启题目 尝试访问位于127.0.0.1的flag.php吧 进入环境 根据提示输入即可 127.0.0.1/flag.php 伪协议读取文件 开启题目 尝试去读取一下Web目录下的flag.php吧 进入环境&#xff0c;根据提示输入 file:///var/www/html/flag.php 鼠标右键查看…...

使用ElasticSearch实现全文检索

文章目录 全文检索任务描述技术难点任务目标实现过程1. java读取Json文件&#xff0c;并导入MySQL数据库中2. 利用Logstah完成MySQL到ES的数据同步3. 开始编写功能接口3.1 全文检索接口3.2 查询详情 4. 前端调用 全文检索 任务描述 在获取到数据之后如何在ES中进行数据建模&a…...

【docker】容器编排之docker swarm

Docker Swarm容器编排详细讲解 Docker Swarm是Docker的原生容器编排工具&#xff0c;它通过将多个Docker引擎组合成一个集群来实现高效的容器部署和管理。 Swarm提供了服务发现、负载均衡、扩展、自动恢复等功能&#xff0c;能够让开发者和运维人员以更简便的方式管理容器化应…...

微信小程序苹果手机自带的数字键盘老是弹出收起,影响用户体验,100%解决

文章目录 1、index.wxml2、index.js3、index.wxss1、index.wxml <!--index.wxml--> <view class="container"><view class="code-input-container"><view class="code-input-boxes"><!-- <block wx:for="{{…...

SCAU期末笔记 - Linux系统应用与开发教程样卷解析(2024版)

我真的不理解奥&#xff0c;为什么会有给样卷不自带解析的&#xff0c;对答案都没得对&#xff0c;故整理一篇 样卷1 一、选择题 1、为了遍历shell脚本调用时传入的参数&#xff0c;需要在shell脚本中使用_____。 A.$#表示参数的个数B.S表示所有参数C.$0表示脚本名D.$1表示…...

2024 年贵州技能大赛暨全省第二届数字技术应用职业技能竞赛“信息通信网络运行管理员”赛项--linux安全题

Linux操作系统渗透测试 Nmap -sS -p- ip 扫描 这题有俩种做法&#xff0c;一种用3306端口&#xff0c;另一种用48119端口 用48119端口是最简单的做法 nc 连接这个端口如何修改root密码 ssh连接 这样我们就成功的拿到root权限 1.通过本地PC中渗透测试平台Kali对服务器场景进…...

CTFshow-php特性(Web125-150)

CTFshow-php特性(Web125-150) Web125 <?php error_reporting(0); highlight_file(__FILE__); include("flag.php"); $a$_SERVER[argv]; $c$_POST[fun]; if(isset($_POST[CTF_SHOW])&&isset($_POST[CTF_SHOW.COM])&&!isset($_GET[fl0g])){if(!p…...

机器学习一点基础

人工智能&#xff08;Artificial Intelligence, AI&#xff09;和机器学习&#xff08;Machine Learning, ML&#xff09;是当今最热门的技术领域之一。然而&#xff0c;初学者往往面对大量的术语和技术细节&#xff0c;不知道从何入手。本文将以通俗易懂的方式介绍机器学习的基…...

【C++】 While循环高级分析与实践扩展

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;While 循环基础知识1.1 基本语法形式1.2 if 与 while 的区别1.3 循环结构比较 &#x1f4af;While 循环实例分析2.1 执行结果2.2 计算流程分析 &#x1f4af;While 循环注意…...

React Native状态管理器Redux、MobX、Context API、useState

Redux、MobX、Context API、useState都是React中用于状态管理的工具&#xff0c;但它们各自有不同的特点和使用场景。 Redux 介绍&#xff1a; Redux是一个JavaScript状态管理库&#xff0c;最初由Dan Abramov和Andrew Clark于2015年开发。它基于Flux架构&#xff0c;强调状态…...

【AI系列】Paddle Speech安装指南

文章目录 环境依赖1. 安装Python1.1 下载Python安装包1.2 安装gcc1.3 安装依赖库1.4 编译和安装Python1.5 配置环境变量 2. 安装PaddlePaddle3. 安装PaddleSpeech4. 运行PaddleSpeech5. 解决常见问题5.1 错误&#xff1a;libssl.so.1.1解决方法&#xff1a; 5.2 错误&#xff1…...

【学习笔记总结】华为云:应用上云后的安全规划及设计

一、背景和问题 数字化时代&#xff0c;随着信息技术的飞速发展&#xff0c;企业和各类组织纷纷将自身的应用程序迁移至云端。云计算凭借其诸多优势&#xff0c;如成本效益、可扩展性、灵活性以及便捷的资源共享等&#xff0c;已然成为了现代业务运营的重要支撑。 今年&#xf…...

数据可视化-2. 条形图

目录 1. 条形图适用场景分析 1.1 比较不同类别的数据 1.2 展示数据分布 1.3 强调特定数据点 1.4 展示时间序列数据的对比 1.5 数据可视化教育 1.6 特定领域的应用 2. 条形图局限性 3. 条形图图代码实现 3.1 Python 源代码 3.2 条形图效果&#xff08;网页显示&#…...

设置Qt程序开机自启动(windows版本)

前言 本文展示在windows环境下&#xff0c;通过代码实现更改系统注册表的方式来实现程序的开机自动启动。 一、注册表 需要更改的系统注册表为: HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run 二、代码演示 1.头文件 头文件autorun.h #ifndef …...

LeetCode hot100-80

https://leetcode.cn/problems/partition-labels/description/?envTypestudy-plan-v2&envIdtop-100-liked 763. 划分字母区间 已解答 中等 相关标签 相关企业 提示 给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段&#xff0c;同一字母最多出现在一个片段中。…...

Ubuntu批量修改文件名

文章目录 批量重命名文件&#xff1a;Ubuntu下使用find命令结合sed和mv参考 批量重命名文件&#xff1a;Ubuntu下使用find命令结合sed和mv 在日常开发和文件管理中&#xff0c;有时我们需要批量重命名一批文件&#xff0c;比如将文件名中的某个特定字符串替换为另一个字符串。…...

CVMJ 2024 | StyleDiffusion: 基于Prompt嵌入的真实图像反演和文本编辑

论文&#xff1a;《StyleDiffusion: Prompt-Embedding Inversion for Text-Based Editing》 代码&#xff1a;https://github.com/sen-mao/StyleDiffusion​https://github.com/sen-mao/StyleDiffusion​ 问题背景 已有一些工作利用预训练扩散模型进行真实图像的编辑。这些方…...

UE5 帧数优化思路

A、思路 1、直接在GM的事件beginplay中改可延展性相对质量级别&#xff0c; 改为1或2&#xff0c;最简单粗暴的方式&#xff0c;而效果明显&#xff0c;帧数提高一倍&#xff0c;GPU占用率与显存占用直接下降一大截。在物体密集的地方卡顿会缓解很多&#xff0c;物体少的地方…...

【Java】正则表达式基础题+场景题练习

基础语法可以看我另一篇博客&#xff1a;正则表达式【规则】【实例】【技巧】_正则规则-CSDN博客 输出结果全是true public class StringRegexTest {public static void main(String[] args) {System.out.println(matchSingleNum("1"));System.out.println(matchMul…...

qq资料修改/空间操作

此工具仅支持 空间ck导入操作 发布说说 转发别人的动态分享 支持修改头像 修改昵称 空间权限获取 说说内容自定义 说放置说说图片 同样也支持多ck操作 详细支持如下 发布说说 转发分享 修改头像 修改昵称 允许空间 发送分享 设置访客权限 问题空间 清空相册 删除说说 封存三天…...

数据结构—图

目录 一、图的定义 二、图的基本概念和术语 2.1有向图 2.2无向图 2.3简单图 2.4多重图 2.5完全图 2.6子图 2.7连通、连通图和连通分量 2.8强连通图、强联通分量 2.9生成树&#xff0c;生成森林 2.10顶点的度、入度和出度 2.11边的权和网 2.12稠密图、稀疏图 2.1…...

【Prompt Engineering】2.迭代优化

一、环境配置 配置使用zhipuai API 的环境。安装 zhipuai 库&#xff0c;并设置 API_KEY。封装 zhipuai 接口的函数&#xff0c;参数为 Prompt&#xff0c;返回对应结果。 from zhipuai import ZhipuAI zhipu_client ZhipuAI(api_key"") # 一个封装 OpenAI 接口…...

每日十题八股-2024年12月16日

1.垃圾回收算法哪些阶段会stop the world? 2.minorGC、majorGC、fullGC的区别&#xff0c;什么场景触发full GC 3.垃圾回收器 CMS 和 G1的区别&#xff1f; 4.什么情况下使用CMS&#xff0c;什么情况使用G1? 5.G1回收器的特色是什么&#xff1f; 6.GC只会对堆进行GC吗&#x…...

使用 imageio 库轻松处理图像与视频

使用 imageio 库轻松处理图像与视频 imageio 是一个 Python 库&#xff0c;用于读取和写入多种图像和视频格式。它功能强大、易于使用&#xff0c;广泛应用于图像处理、视频编辑和数据可视化等领域。本篇文章将介绍 imageio 的基础功能、常见用法以及高级操作。 一、安装 imag…...

MR30分布式IO模块:驱动物流传输机高效升级

在日新月异的物流行业中&#xff0c;效率与智能化已成为推动企业转型升级的关键驱动力。随着物联网、大数据、云计算等技术的深度融合&#xff0c;传统物流传输机正逐步向智能化、自动化迈进。在这场技术革命中&#xff0c;明达技术MR30分布式IO模块以其独特的优势&#xff0c;…...

【开源免费】基于SpringBoot+Vue.JS在线竞拍系统(JAVA毕业设计)

本文项目编号 T 013 &#xff0c;文末自助获取源码 \color{red}{T013&#xff0c;文末自助获取源码} T013&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…...

Docker

文章目录 仓库容器核心组件网络模式挂载方式Docker常用指令Compose常用指令代码 仓库 国内镜像仓库地址 修改方法见&#xff1a; https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 科大镜像&#xff1a;https://docker.mirrors.ustc.edu.cn/网易&#xff1a;ht…...

上海艾一公司-运维工程师知识点备战

1.AD域控&#xff08;ActionDirectory活动目录&#xff09; ad域的作用&#xff1a;批量管理主机和用户&#xff08;所以数量要多用这个才合适&#xff09; 前置1&#xff1a;VM安装Windows镜像 2.IT资产管理 3.会议室管理...

程序员实用工具之推荐(Recommendations for Practical Tools for Programmers)

11款程序员实用工具&#xff0c;老少皆宜 优秀程序员之所以优秀的原因并不一定是他写代码的速度比所有人都快&#xff0c;但他解决事情的效率一定是比很多人都要高的&#xff0c;提升工作效率的方法并不需要我们十八般武艺样样精通&#xff0c;有时候使用好的工具就能帮助我们大…...

win服务器的架设、windows server 2012 R2 系统的下载与安装使用

文章目录 windows server 2012 R2 系统的下载与安装使用1 windows server 2012 的下载2 打开 VMware 虚拟机软件&#xff08;1&#xff09;新建虚拟机&#xff08;2&#xff09;设置虚拟机&#xff08;3&#xff09;打开虚拟机 windows server 2012&#xff08;4&#xff09;进…...

当服务器数据包丢失该怎样进行解决?

当企业面对服务器数据包丢失的情况&#xff0c;都有哪些解决策略呢&#xff1f; 首先对于数据丢失&#xff0c;最直接的方法就是尝试进行数据恢复&#xff0c;数据恢复过程通常包括使用数据恢复软件扫描丢失数据的磁盘驱动器&#xff0c;以此来尝试找回丢失的文件&#xff0c;在…...

go语言 爬虫 钉钉群机器人

第一步&#xff1a;钉钉新建一个群机器人 钉钉创建群机器人文档&#xff1a;https://open.dingtalk.com/document/orgapp/custom-robot-access 安全设置选择签名 签名设置文档&#xff1a;https://open.dingtalk.com/document/robots/customize-robot-security-settings 第二步…...

14篇--模板匹配

原理 模板匹配就是用模板图&#xff08;通常是一个小图&#xff09;在目标图像&#xff08;通常是一个比模板图大的图片&#xff09;中不断的滑动比较&#xff0c;通过某种比较方法来判断是否匹配成功。 匹配方法 1. 平方差匹配TM_SQDIFF 以模板图与目标图所对应的像素值使用…...

Cadence学习笔记 5 四路HDMI原理图绘制

基于Cadence 17.4&#xff0c;四层板4路HDMI电路 更多Cadence学习笔记&#xff1a;Cadence学习笔记 1 原理图库绘制Cadence学习笔记 2 PCB封装绘制Cadence学习笔记 3 MCU主控原理图绘制Cadence学习笔记 4 单片机原理图绘制 目录 5、四路HDMI原理图绘制 快捷键总结&#xff1a;…...

一文详解“分治—归并“在算法中的应用

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a; 优选算法专题 这里的归并与我们在数据结构中学习的归并排序是一样的&#xff0c;我们可以先来复习一下归并排序。用一道题来帮助我们回想起归…...

哪些视频媒体平台可给企业直播间做分发拉流转播宣传?提升流量数据!

【本篇由 言同数字媒体直播分发 原创】在如今信息爆炸的时代&#xff0c;直播已成为企业进行品牌传播、产品推广和与消费者互动的重要渠道。为了最大化直播效果&#xff0c;企业通常需要选择合适的视频平台进行直播分发和拉流宣传。以下是一些热门的视频平台&#xff0c;它们为…...

软硬件漏洞有哪些

关于网络软件安全漏洞与硬件安全漏洞&#xff0c;这是一个涉及到信息安全领域的重要问题。在当前信息化快速发展的背景下&#xff0c;无论是软件还是硬件的安全问题都可能成为安全隐患&#xff0c;因此了解这两方面的安全漏洞对于提升整体系统的安全性至关重要。 ### 网络软件…...

ElasticSearch系列:索引分片调整

一、前言 ElasticSearch版本&#xff1a;8.11.1 操作环境&#xff1a;机器数5&#xff0c;规格为16核32 GB 索引名称&#xff1a;test 索引大小&#xff1a;1.5G 索引分片&#xff1a;1主1副 测试环境将test索引调整为2主2副。计划采用如下两种方案&#xff1a; 方式耗时…...

KeyFormer:使用注意力分数压缩KV缓存

Keyformer: KV Cache Reduction through Key Tokens Selection for Efficient Generative Inference 202403&#xff0c;发表在Mlsys Introduction 优化KV cache的策略&#xff0c;主要是集中在系统级别的优化上&#xff0c;比如FlashAttention、PagedAttention&#xff0c;它…...