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

Android安卓实战项目(4)---提供给阿尔兹海默症患者的APP(源码在文末)

Android安卓实战项目(4)—提供给阿尔兹海默症患者的APP(源码在文末)

一.项目运行介绍

1.大致浏览

(1)开机界面

image-20230727113156940

(2)主界面

image-20230727113201516

(3)Read Instructions界面

image-20230727113207833

(4)Proceed for Test界面

image-20230727113211724

(5)Exercise your Memory界面

image-20230727113216593

image-20230727113223992

2.功能介绍

(1)功能一

开机动画

(2)功能二

主页面实现四个分页面的大体框架

(3)功能三

Read Instructions(阅读说明):给使用者一个使用说明

(4)功能四

Proceed for Test(测试):出一些简单的题目进行测试

(5)功能五

Exercise your Memory(记忆功能测试):

(6)功能六

只写了一个跳转网页的控件

二.具体实现

(1)功能一

开机动画

只是一个简单的跳转页面

Instructions.java
package com.example.alzheimersdetector;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;public class Instructions extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);getSupportActionBar().hide();this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);setContentView(R.layout.activity_instructions);}public void home(View view) {Intent homeIntent = new Intent(Instructions.this, Home.class);startActivity(homeIntent);}
}

(2)功能二

主页面实现四个分页面的大体框架

Home.java
package com.example.alzheimersdetector;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;public class Home extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);getSupportActionBar().hide();this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);setContentView(R.layout.activity_home);}public void inst(View view) {Intent i = new Intent(Home.this, Instructions.class);startActivity(i);}public void test(View view) {Intent i = new Intent(Home.this, Test.class);startActivity(i);}public void play(View view) {Intent i = new Intent(Home.this, Exercise.class);startActivity(i);}public void site(View view) {Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.alz.org/in/dementia-alzheimers-en.asp"));startActivity(i);}
}

(3)功能三

Read Instructions(阅读说明):给使用者一个使用说明

Test.java
package com.example.alzheimersdetector;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;public class Test extends AppCompatActivity {RadioButton rd1,rd2,rd3,rd4;RadioGroup rd;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);getSupportActionBar().hide();this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);setContentView(R.layout.activity_test);rd1 = findViewById(R.id.rd1);rd2 = findViewById(R.id.rd2);rd3 = findViewById(R.id.rd3);rd4 = findViewById(R.id.rd4);rd = findViewById(R.id.rd);rd1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(Test.this,"You`r Wrong!",Toast.LENGTH_SHORT).show();}});rd2.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(Test.this,"You`r Wrong!",Toast.LENGTH_SHORT).show();}});rd3.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(Test.this,"Correct!",Toast.LENGTH_SHORT).show();}});rd4.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(Test.this,"You`r Wrong!",Toast.LENGTH_SHORT).show();}});}public void test2(View view) {Intent homeIntent = new Intent(Test.this, Test2.class);startActivity(homeIntent);}
}

(4)功能四

Proceed for Test(测试):出一些简单的题目进行测试

Test2.java
package com.example.alzheimersdetector;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.TextView;
import android.widget.TimePicker;public class Test2 extends AppCompatActivity {TextView result1;TimePicker timePickerclock;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);getSupportActionBar().hide();this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);setContentView(R.layout.activity_test2);result1 = findViewById(R.id.settime);timePickerclock = findViewById(R.id.tp1);timePickerclock.setIs24HourView(true);timePickerclock.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {@Overridepublic void onTimeChanged(TimePicker view, int i, int i1) {result1.setText("Time: " + i + ":" + i1);}});}public void test3(View view) {Intent homeIntent = new Intent(Test2.this, Test3.class);startActivity(homeIntent);}
}

(5)功能五

Exercise your Memory(记忆功能测试):

package com.example.alzheimersdetector;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;public class Test3 extends AppCompatActivity {RadioButton rdb1,rdb2;RadioGroup rdg1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);getSupportActionBar().hide();this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);setContentView(R.layout.activity_test3);rdg1 = findViewById(R.id.rdg1);rdb1 = findViewById(R.id.rdb1);rdb2 = findViewById(R.id.rdb2);rdb1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(Test3.this,"Correct!",Toast.LENGTH_SHORT).show();}});rdb2.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(Test3.this,"You`r Wrong!",Toast.LENGTH_SHORT).show();}});}public void test4(View view) {Intent homeIntent = new Intent(Test3.this, Test4.class);startActivity(homeIntent);}
}

题目的话,另外写一个类

Exercise.java
package com.example.alzheimersdetector;import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.TextView;import java.util.Arrays;
import java.util.Collections;public class Exercise extends AppCompatActivity {TextView t1, t2;ImageView i1, i2, i3, i4, i5, i6, i7 ,i8, i9, i10, i11, i12;Integer[] cardsArray = {101, 102, 103, 104, 105, 106, 201, 202, 203, 204, 205, 206};int Aries, Taurus, Gemini, Cancer, Leo, Virgo, Libra, Scorpio, Sagittarius, Capricorn, Aquarius, Pisces;int firstCard, secondCard;int clickedFirst, clickedSecond;int cardNumber = 1;int turn = 1;int playerPoints = 0, cpuPoints = 0;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);getSupportActionBar().hide();this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);setContentView(R.layout.activity_exercise);t1 = (TextView) findViewById(R.id.t1);t2 = (TextView) findViewById(R.id.t2);i1 = (ImageView) findViewById(R.id.i1);i2 = (ImageView) findViewById(R.id.i2);i3 = (ImageView) findViewById(R.id.i3);i4 = (ImageView) findViewById(R.id.i4);i5 = (ImageView) findViewById(R.id.i5);i6 = (ImageView) findViewById(R.id.i6);i7 = (ImageView) findViewById(R.id.i7);i8 = (ImageView) findViewById(R.id.i8);i9 = (ImageView) findViewById(R.id.i9);i10 = (ImageView) findViewById(R.id.i10);i11 = (ImageView) findViewById(R.id.i11);i12 = (ImageView) findViewById(R.id.i12);i1.setTag("0");i2.setTag("1");i3.setTag("2");i4.setTag("3");i5.setTag("4");i6.setTag("5");i7.setTag("6");i8.setTag("7");i9.setTag("8");i10.setTag("9");i11.setTag("10");i12.setTag("11");frontOfCardsResources();Collections.shuffle(Arrays.asList(cardsArray));//t2.setTextColor(Color.GRAY);i1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {int theCard = Integer.parseInt((String) v.getTag());doStuff(i1, theCard);}});i2.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {int theCard = Integer.parseInt((String) v.getTag());doStuff(i2, theCard);}});i3.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {int theCard = Integer.parseInt((String) v.getTag());doStuff(i3, theCard);}});i4.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {int theCard = Integer.parseInt((String) v.getTag());doStuff(i4, theCard);}});i5.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {int theCard = Integer.parseInt((String) v.getTag());doStuff(i5, theCard);}});i6.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {int theCard = Integer.parseInt((String) v.getTag());doStuff(i6, theCard);}});i7.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {int theCard = Integer.parseInt((String) v.getTag());doStuff(i7, theCard);}});i8.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {int theCard = Integer.parseInt((String) v.getTag());doStuff(i8, theCard);}});i9.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {int theCard = Integer.parseInt((String) v.getTag());doStuff(i9, theCard);}});i10.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {int theCard = Integer.parseInt((String) v.getTag());doStuff(i10, theCard);}});i11.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {int theCard = Integer.parseInt((String) v.getTag());doStuff(i11, theCard);}});i12.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {int theCard = Integer.parseInt((String) v.getTag());doStuff(i12, theCard);}});}private void doStuff(ImageView iv, int card){if (cardsArray[card] == 101){iv.setImageResource(Aries);}else if (cardsArray[card] == 102){iv.setImageResource(Taurus);}else if (cardsArray[card] == 103){iv.setImageResource(Gemini);}else if (cardsArray[card] == 104){iv.setImageResource(Cancer);}else if (cardsArray[card] == 105){iv.setImageResource(Leo);}else if (cardsArray[card] == 106){iv.setImageResource(Virgo);}else if (cardsArray[card] == 201){iv.setImageResource(Libra);}else if (cardsArray[card] == 202){iv.setImageResource(Scorpio);}else if (cardsArray[card] == 203){iv.setImageResource(Sagittarius);}else if (cardsArray[card] == 204){iv.setImageResource(Capricorn);}else if (cardsArray[card] == 205){iv.setImageResource(Aquarius);}else if (cardsArray[card] == 206){iv.setImageResource(Pisces);}if (cardNumber == 1){firstCard = cardsArray[card];if (firstCard > 200){firstCard = firstCard - 100;}cardNumber = 2;clickedFirst = card;iv.setEnabled(false);}else if (cardNumber == 2){secondCard = cardsArray[card];if (secondCard > 200){secondCard = secondCard - 100;}cardNumber = 1;clickedSecond = card;i1.setEnabled(false);i2.setEnabled(false);i3.setEnabled(false);i4.setEnabled(false);i5.setEnabled(false);i6.setEnabled(false);i7.setEnabled(false);i8.setEnabled(false);i9.setEnabled(false);i10.setEnabled(false);i11.setEnabled(false);i12.setEnabled(false);Handler handler = new Handler();handler.postDelayed(new Runnable() {@Overridepublic void run() {calculate();}}, 1000);}}private void calculate(){if (firstCard == secondCard){if (clickedFirst == 0){i1.setVisibility(View.INVISIBLE);}else if (clickedFirst == 1){i2.setVisibility(View.INVISIBLE);}else if (clickedFirst == 2){i3.setVisibility(View.INVISIBLE);}else if (clickedFirst == 3){i4.setVisibility(View.INVISIBLE);}else if (clickedFirst == 4){i5.setVisibility(View.INVISIBLE);}else if (clickedFirst == 5){i6.setVisibility(View.INVISIBLE);}else if (clickedFirst == 6){i7.setVisibility(View.INVISIBLE);}else if (clickedFirst == 7){i8.setVisibility(View.INVISIBLE);}else if (clickedFirst == 8){i9.setVisibility(View.INVISIBLE);}else if (clickedFirst == 9){i10.setVisibility(View.INVISIBLE);}else if (clickedFirst == 10){i11.setVisibility(View.INVISIBLE);}else if (clickedFirst == 11){i12.setVisibility(View.INVISIBLE);}if (clickedSecond == 0){i1.setVisibility(View.INVISIBLE);}else if (clickedSecond == 1){i2.setVisibility(View.INVISIBLE);}else if (clickedSecond == 2){i3.setVisibility(View.INVISIBLE);}else if (clickedSecond == 3){i4.setVisibility(View.INVISIBLE);}else if (clickedSecond == 4){i5.setVisibility(View.INVISIBLE);}else if (clickedSecond == 5){i6.setVisibility(View.INVISIBLE);}else if (clickedSecond == 6){i7.setVisibility(View.INVISIBLE);}else if (clickedSecond == 7){i8.setVisibility(View.INVISIBLE);}else if (clickedSecond == 8){i9.setVisibility(View.INVISIBLE);}else if (clickedSecond == 9){i10.setVisibility(View.INVISIBLE);}else if (clickedSecond == 10){i11.setVisibility(View.INVISIBLE);}else if (clickedSecond == 11){i12.setVisibility(View.INVISIBLE);}/*if (turn == 1){playerPoints++;t1.setText("P1: " + playerPoints);}else if (turn == 2){cpuPoints++;t2.setText("P2: " + cpuPoints);}*/} else {i1.setImageResource(R.drawable.imageback);i2.setImageResource(R.drawable.imageback);i3.setImageResource(R.drawable.imageback);i4.setImageResource(R.drawable.imageback);i5.setImageResource(R.drawable.imageback);i6.setImageResource(R.drawable.imageback);i7.setImageResource(R.drawable.imageback);i8.setImageResource(R.drawable.imageback);i9.setImageResource(R.drawable.imageback);i10.setImageResource(R.drawable.imageback);i11.setImageResource(R.drawable.imageback);i12.setImageResource(R.drawable.imageback);/*if (turn == 1){turn = 2;t1.setTextColor(Color.GRAY);t2.setTextColor(Color.BLACK);}else if (turn == 2){turn = 1;t2.setTextColor(Color.GRAY);t1.setTextColor(Color.BLACK);}*/}i1.setEnabled(true);i2.setEnabled(true);i3.setEnabled(true);i4.setEnabled(true);i5.setEnabled(true);i6.setEnabled(true);i7.setEnabled(true);i8.setEnabled(true);i9.setEnabled(true);i10.setEnabled(true);i11.setEnabled(true);i12.setEnabled(true);checkEnd();}private void checkEnd(){if (i1.getVisibility() == View.INVISIBLE && i2.getVisibility() == View.INVISIBLE && i3.getVisibility() == View.INVISIBLE && i4.getVisibility() == View.INVISIBLE && i5.getVisibility() == View.INVISIBLE && i6.getVisibility() == View.INVISIBLE && i7.getVisibility() == View.INVISIBLE && i8.getVisibility() == View.INVISIBLE && i9.getVisibility() == View.INVISIBLE && i10.getVisibility() == View.INVISIBLE && i11.getVisibility() == View.INVISIBLE && i12.getVisibility() == View.INVISIBLE){AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(Exercise.this);alertDialogBuilder.setMessage("YOU PLAYED WELL !😃").setCancelable(false).setPositiveButton("PLAY AGAIN", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Intent i = new Intent(getApplicationContext(), Exercise.class);startActivity(i);finish();}}).setNegativeButton("EXIT", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {finish();}});AlertDialog alertDialog = alertDialogBuilder.create();alertDialog.show();}}private void frontOfCardsResources(){Aries = R.drawable.image101;Taurus = R.drawable.image102;Gemini = R.drawable.image103;Cancer = R.drawable.image104;Leo = R.drawable.image105;Virgo = R.drawable.image106;Libra = R.drawable.image201;Scorpio = R.drawable.image202;Sagittarius = R.drawable.image203;Capricorn = R.drawable.image204;Aquarius = R.drawable.image205;Pisces = R.drawable.image206;}
}

(6)功能六

只写了一个跳转网页的控件

Test4.java
package com.example.alzheimersdetector;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;public class Test4 extends AppCompatActivity {RadioButton rdc1,rdc2;RadioGroup rdg2;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);getSupportActionBar().hide();this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);setContentView(R.layout.activity_test4);rdg2 = findViewById(R.id.rdg2);rdc1 = findViewById(R.id.rdc1);rdc2 = findViewById(R.id.rdc2);rdc1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(Test4.this,"Correct!",Toast.LENGTH_SHORT).show();}});rdc2.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(Test4.this,"You`r Wrong!",Toast.LENGTH_SHORT).show();}});}
}

三.项目源码

记得点赞🙁!!!

链接:https://pan.baidu.com/s/1H25QMDI9PxmSi8sF00gXaA?pwd=jynl
提取码:jynl

相关文章:

Android安卓实战项目(4)---提供给阿尔兹海默症患者的APP(源码在文末)

Android安卓实战项目(4)—提供给阿尔兹海默症患者的APP(源码在文末) 一.项目运行介绍 1.大致浏览 (1)开机界面 (2)主界面 (3)Read Instructions界面 &…...

详解Mybatis之自动映射 自定义映射问题

编译软件:IntelliJ IDEA 2019.2.4 x64 操作系统:win10 x64 位 家庭版 Maven版本:apache-maven-3.6.3 Mybatis版本:3.5.6 文章目录 一、Mybatis中的自动映射是什么?二、Mybatis中的自定义映射是什么?三、为什…...

shiro的优点

shiro是一个强大的java安全框架,它的优点有以下: shiro就是权限管理:包括两部分:身份验证、授权 一、它提供了身份验证、授权、密码和会话管理等功能,可以满足各种应用程序的安全需求。 身份认证就是:验证是…...

使用分布式HTTP代理爬虫实现数据抓取与分析的案例研究

在当今信息爆炸的时代,数据已经成为企业决策和发展的核心资源。然而,要获取大规模的数据并进行有效的分析是一项艰巨的任务。为了解决这一难题,我们进行了一项案例研究,通过使用分布式HTTP代理爬虫,实现数据抓取与分析…...

Linux操作系统运维常用集合

目录 1、服务器磁盘查询、管理常见命令: 2、Centos系统挂载移动硬盘或U盘 3、Linux系统磁盘管理方式 4、Linux系统下挂载磁盘格式详解 1、服务器磁盘查询、管理常见命令: lsblk      查看分区和磁盘df -h   …...

UE4/5C++多线程插件制作(十四、MTPAbandonable)

目录 MTPAbandonable h实现 cpp实现 MTPMarco.h 首先是异步任务的宏定义部分:...

集装箱装卸作业相关的知识-Part1

1.角件 Corner Fitting of Container or called Corner Casting. there are eigth of it of one container. 国家标准|GB/T 1835-2006https://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcnoD35857F2200FA115CAA217A114F5EF12 中国的国标:GB/T 1835-2006《系列1集…...

BurpSuite超详细安装教程-功能概述-配置-使用教程---(附下载链接)

一、介绍 BurpSuite是渗透测试、漏洞挖掘以及Web应用程序测试的最佳工具之一,是一款用于攻击web 应用程序的集成攻击测试平台,可以进行抓包、重放、爆破,包含许多工具,能处理对应的HTTP消息、持久性、认证、代理、日志、警报。 二…...

不同局域网下使用Python自带HTTP服务进行文件共享「端口映射」

文章目录 1. 前言2. 视频教程3. 本地文件服务器搭建3.1 python的安装和设置3.2 cpolar的安装和注册 4. 本地文件服务器的发布4.1 Cpolar云端设置4.2 Cpolar本地设置 5. 公网访问测试6. 结语 1. 前言 数据共享作为和连接作为互联网的基础应用,不仅在商业和办公场景有…...

产业大数据应用:洞察企业全维数据,提升企业监、管、服水平

​在数字经济时代,数据已经成为重要的生产要素,数字化改革风生水起,在新一代科技革命、产业革命的背景下,产业大数据服务应运而生,为区域产业发展主导部门提供了企业洞察、监测、评估工具。能够助力区域全面了解企业经…...

【爬虫逆向案例】某名片网站 js 逆向 —— data解密

声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢! 【爬虫逆向案例】某名片网站js逆向—— data解密 1、前言2、步骤3、号外 1、前言 相信各位小伙伴在写爬虫的…...

RocketMq 事务消息原理

Rocketmq 事务消息API使用 使用TransactionMQProducer类。 实现TransactionListener 接口覆盖其方法executeLocalTransaction和checkLocalTransaction 即可。 其中executeLocalTransaction 执行本地方法和checkLocalTransaction 事务状态回查。 玩法 简历一张本地事务表&…...

day41-Verify Account Ui(短信验证码小格子输入效果)

50 天学习 50 个项目 - HTMLCSS and JavaScript day41-Verify Account Ui&#xff08;短信验证码小格子输入效果&#xff09; 效果 index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name&qu…...

C. Maximum Set

Problem - 1796C - Codeforces 思路&#xff1a;这个题在做的时候基本的思路是对的&#xff0c;但是没有想到O(1)求答案&#xff0c;枚举的然后T了&#xff0c;我们能够知道&#xff0c;假设前面的数小&#xff0c;那么每个数一定是前面的倍数&#xff0c;所以至少乘以2&#x…...

基于springboot+vue学生宿舍报修公寓管理系统

我校日常管理活动中也大部分使用信息化&#xff0c;但学生宿舍的报修管理仍停留在手工办公阶段&#xff0c;使用纸张来记录。不仅对于维修人员和后勤管理人员来说无法提高工作效率&#xff0c;也不方便学生报修。本学生宿舍报修系统主要针对三类人员。第一类是学生用户模块&…...

缓存和数据库一致性问题分析

目录 1、数据不一致的原因 1.1 并发操作 1.2 非原子操作 1.3 数据库主从同步延迟 2、数据不一致的解决方案 2.1 并发操作 2.2 非原子操作 2.3 主从同步延迟 2.4 最终方案 3、不同场景下的特殊考虑 3.1 读多写少的场景 3.2 读少写多的场景 1、数据不一致的原因 导致…...

用Rust生成Ant-Design Table Columns | 京东云技术团队

经常开发表格&#xff0c;是不是已经被手写Ant-Design Table的Columns整烦了&#xff1f; 尤其是ToB项目&#xff0c;表格经常动不动就几十列。每次照着后端给的接口文档一个个配置&#xff0c;太头疼了&#xff0c;主要是有时还会粘错就尴尬了。 那有没有办法能自动生成colu…...

java.lang.ClassNotFoundException: sun.misc.BASE64Decoder

有一个新的应用服务&#xff0c;idea启动应用应用服务时&#xff0c;突然报错java.lang.ClassNotFoundException: sun.misc.BASE64Decoder &#xff0c;然后在网上搜索&#xff0c;说是建议使用apache包&#xff0c;该类新的JRE已经废弃&#xff0c;并从rt.jar包中移除。但是该…...

Unity进阶--对象池数据场景管理器笔记

文章目录 泛型单例类泛型单例类&#xff08;不带组件版&#xff09;对象池管理器数据管理器场景管理器 泛型单例类 using System.Collections; using System.Collections.Generic;public abstract class ManagersSingle<T> where T : new() {private static T instance;…...

【Seata】微服务集成seata

文章目录 1、Seata介绍2、Seata架构3、部署TC服务4、微服务集成seata 1、Seata介绍 Seata是 2019 年 1 月份蚂蚁金服和阿里巴巴共同开源的分布式事务解决方案。 官网http://seata.io/ 2、Seata架构 Seata事务管理有三个角色&#xff1a; TC (Transaction Coordinator) - 事务…...

centos 7 部署awstats 网站访问检测

一、基础环境准备&#xff08;两种安装方式都要做&#xff09; bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点&#xff1a;传参类型必须是类对象 一、BigInteger 1. 作用&#xff1a;适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录&#xff0c;不允许匿名访问&#xff0c;kefu只能访问/data/kefu目录&#xff0c;不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践

作者&#xff1a;吴岐诗&#xff0c;杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言&#xff1a;融合数据湖与数仓的创新之路 在数字金融时代&#xff0c;数据已成为金融机构的核心竞争力。杭银消费金…...

第7篇:中间件全链路监控与 SQL 性能分析实践

7.1 章节导读 在构建数据库中间件的过程中&#xff0c;可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中&#xff0c;必须做到&#xff1a; &#x1f50d; 追踪每一条 SQL 的生命周期&#xff08;从入口到数据库执行&#xff09;&#…...

解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist

现象&#xff1a; android studio报错&#xff1a; [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决&#xff1a; 不要动CMakeLists.…...

Python训练营-Day26-函数专题1:函数定义与参数

题目1&#xff1a;计算圆的面积 任务&#xff1a; 编写一个名为 calculate_circle_area 的函数&#xff0c;该函数接收圆的半径 radius 作为参数&#xff0c;并返回圆的面积。圆的面积 π * radius (可以使用 math.pi 作为 π 的值)要求&#xff1a;函数接收一个位置参数 radi…...

前端调试HTTP状态码

1xx&#xff08;信息类状态码&#xff09; 这类状态码表示临时响应&#xff0c;需要客户端继续处理请求。 100 Continue 服务器已收到请求的初始部分&#xff0c;客户端应继续发送剩余部分。 2xx&#xff08;成功类状态码&#xff09; 表示请求已成功被服务器接收、理解并处…...