android外卖点餐界面(期末作业)

效果展示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

AndroidMainFest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"><applicationandroid:allowBackup="true"android:dataExtractionRules="@xml/data_extraction_rules"android:fullBackupContent="@xml/backup_rules"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/Theme.EndActivity"tools:targetApi="31"><activityandroid:name=".MainActivity"android:exported="true"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activityandroid:name=".Register"android:exported="true"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activityandroid:name=".Login"android:exported="true"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>

FoodItem.java

package com.lzcu.endactivity;public class FoodItem {private String name;        // 食品名称private double price;       // 食品价格private boolean isVegetarian;  // 是否素食public FoodItem(String name, double price) {this.name = name;this.price = price;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}
}

Login.java

package com.lzcu.endactivity;import androidx.appcompat.app.AppCompatActivity;import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;public class Login extends AppCompatActivity {Button login_but,register_but;TextView touchScreen;EditText Account_2,pwd;MyDatabaseHelper myDatabaseHelper;@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//按钮组件login_but = findViewById(R.id.login);register_but = findViewById(R.id.register);//编辑框Account_2 = findViewById(R.id.UserName);pwd =findViewById(R.id.Pwd);//数据库myDatabaseHelper = new MyDatabaseHelper(this);myDatabaseHelper.getWritableDatabase();//只读//登录login_but.setOnClickListener(new View.OnClickListener(){@Overridepublic void onClick(View v){String acc = Account_2.getText().toString();String pwd1 =pwd.getText().toString();//获取数据库数据,判断用户名是否在库Cursor result = myDatabaseHelper.find();int a=0;int b=0;for (result.moveToFirst();!result.isAfterLast();result.moveToNext()){@SuppressLint("Range") String account_1=result.getString(result.getColumnIndex("Account"));@SuppressLint("Range") String pwd_1=result.getString(result.getColumnIndex("Password"));if (Account_2.getText().toString().equals(account_1) && pwd.getText().toString().equals(pwd_1))a=1;if (Account_2.getText().toString().equals(account_1))b=1;}if (b==1){if (!Account_2.getText().toString().equals("") && !pwd.getText().toString().equals("")){if(a==1){Intent intent = new Intent(Login.this, MainActivity.class);startActivity(intent);finish();Toast.makeText(Login.this, "登入成功", Toast.LENGTH_SHORT).show();}elseToast.makeText(getApplicationContext(),"密码错误!", Toast.LENGTH_SHORT).show();}elseToast.makeText(getApplicationContext(),"用户名或密码不能为空!", Toast.LENGTH_SHORT).show();}elseToast.makeText(Login.this, "账号不存在,请注册!", Toast.LENGTH_SHORT).show();//关闭游标result.close();}});//注册register_but.setOnClickListener(new View.OnClickListener(){@Overridepublic void onClick(View v){//显示注册界面Intent intent = new Intent(Login.this, Register.class);//启动显示修改界面startActivity(intent);finish();}});}
}

MainActivity.java

package com.lzcu.endactivity;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;public class MainActivity extends AppCompatActivity {public TextView txtCartItems;public Button btnCheckout;public ArrayList<FoodItem> cartItems = new ArrayList<>();public double totalPrice = 0;private ListView menu_list;private List<String> mDataList;private ArrayAdapter<String> mAdapter;private EditText mEditText;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);txtCartItems = findViewById(R.id.txt_cart_items);btnCheckout = findViewById(R.id.btn_checkout);//初始化// 初始化 ListView 和 数据源menu_list = findViewById(R.id.menu_list);mDataList = new ArrayList<>();// 添加测试数据mDataList.add("汉堡 22.5");mDataList.add("薯条 12.0");mDataList.add("热干面 8.0");mDataList.add("麻辣香锅 59.0");mDataList.add("鱼香肉丝 38.0");mDataList.add("大盘鸡 48.0");mDataList.add("炒粉丝 11.0");mDataList.add("毛血旺 58.0");// 创建适配器mAdapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1, mDataList);// 设置适配器menu_list.setAdapter(mAdapter);// 设置列表项点击事件menu_list.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {Toast.makeText(MainActivity.this, "你选择了" + mDataList.get(i),Toast.LENGTH_SHORT).show();// 获取 editText 控件mEditText = findViewById(R.id.editText);mEditText.append(mDataList.get(i));
//                mEditText.setText("你选择了"+mDataList.get(i)+"吗?");// 加入购物车的逻辑FoodItem item1 = new FoodItem("汉堡", 22.5);FoodItem item2 = new FoodItem("薯条", 12.0);addToCart(item1);addToCart(item2);}});// 更新购物车信息updateCart();// 结算按钮的点击事件btnCheckout.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {checkout();}});}// 添加商品到购物车private void addToCart(FoodItem item) {cartItems.add(item);totalPrice += item.getPrice();}// 更新购物车信息private void updateCart() {String cartText = "购物车(" + cartItems.size() + "): ¥" + totalPrice;txtCartItems.setText(cartText);}// 结算private void checkout() {// 将购物车中的商品生成订单,进行结算等操作Toast.makeText(this, "订单已提交,感谢您的惠顾!", Toast.LENGTH_SHORT).show();cartItems.clear();totalPrice = 0;updateCart();}
}

MyDatabaseHelper.java

package com.lzcu.endactivity;import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import androidx.annotation.Nullable;public class MyDatabaseHelper extends SQLiteOpenHelper
{//声明数据库的名字和表名private static final String DATABASENAME = "Practical.db" ;	// 数据库名称private static final int DATABASEVERSION = 1 ;private static final String TABLE_USERNAME = "User" ;	// 用户表名称public MyDatabaseHelper(@Nullable Context context){super(context, DATABASENAME, null, DATABASEVERSION);}@Overridepublic void onCreate(SQLiteDatabase db){//创建数据库用户表,并添加三个字段id,Account,PasswordString sqlString="create table "+ TABLE_USERNAME+"( id integer primary key autoincrement,Account varchar(255),Password varchar(255))";db.execSQL(sqlString);}//注册public  void Register(String Account,String Password){SQLiteDatabase db=super.getWritableDatabase();String sqlString="insert into "+TABLE_USERNAME+"(Account,Password) values (?,?)";//构造占位符的参数数组Object args[]=new Object[]{Account,Password};db.execSQL(sqlString,args);//此方法执行的sql语句主要有创建、插入、修改、删除等db.close();}//查询账号的方法public Cursor find(){SQLiteDatabase db=super.getWritableDatabase();String sqlString="select * from User;";//执行查询,返回数据给游标Cursor result =db.rawQuery(sqlString,null);return result;}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}
}

Register.java

package com.lzcu.endactivity;import androidx.appcompat.app.AppCompatActivity;import android.annotation.SuppressLint;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;import java.util.ArrayList;
import java.util.Timer;
import java.util.TimerTask;public class Register extends AppCompatActivity {Button register_lj,back;TextView touchScreen;EditText Account,Pwd1,Pwd2;MyDatabaseHelper myDatabaseHelper;ArrayList<User> data = new ArrayList<User>();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.register);//数据库myDatabaseHelper = new MyDatabaseHelper(this);//按钮组件register_lj =findViewById(R.id.register_but);back =findViewById(R.id.back);//编辑框Account = findViewById(R.id.register_name);Pwd1 = findViewById(R.id.register_pwd);Pwd2 = findViewById(R.id.register_pwd2);//立即注册register_lj.setOnClickListener(new View.OnClickListener(){@Overridepublic void onClick(View v){//获取输入的用户名和密码String name = Account.getText().toString().trim();String password = Pwd1.getText().toString().trim();//获取数据库数据,判断用户名是否已存在Cursor result = myDatabaseHelper.find();int a=0;if (!Account.getText().toString().equals("")){if (Account.getText().toString().length()<6)Toast.makeText(Register.this, "账号创建不能少于6位", Toast.LENGTH_SHORT).show();else if (Pwd1.getText().toString().length()<6)Toast.makeText(Register.this, "密码设置不能少于6位", Toast.LENGTH_SHORT).show();else{for (result.moveToFirst();!result.isAfterLast();result.moveToNext()){//判断数据库是否存在此对象@SuppressLint("Range") String account_1 = result.getString(result.getColumnIndex("Account"));if(Account.getText().toString().equals(account_1)){a=1;}}//关闭游标result.close();if(!Pwd1.getText().toString().equals("") && !Pwd2.getText().toString().equals("")){if ((Pwd1.getText().toString().equals(Pwd2.getText().toString()) && a==0)){myDatabaseHelper.Register(name,password);Intent intent = new Intent(Register.this, Login.class);startActivity(intent);finish();Toast.makeText(Register.this, "注册成功", Toast.LENGTH_SHORT).show();}else if (a==1)Toast.makeText(getApplicationContext(),"账号已存在,请重新输入账号",Toast.LENGTH_SHORT).show();elseToast.makeText(getApplicationContext(),"两次密码输入不一致",Toast.LENGTH_SHORT).show();} elseToast.makeText(getApplicationContext(),"密码不能为空!",Toast.LENGTH_SHORT).show();}} elseToast.makeText(getApplicationContext(),"账号不能为空!",Toast.LENGTH_SHORT).show();}});//返回back.setOnClickListener(new View.OnClickListener(){@Overridepublic void onClick(View v){//显示注册界面Intent intent = new Intent(Register.this, Login.class);//启动显示修改界面startActivity(intent);finish();}})}
}

User.java

package com.lzcu.endactivity;public class User
{private int id;private String account;private String password;public User( ) {}public User(int id, String account, String password) {this.id = id;this.account = account;this.password = password;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getAccount() {return account;}public void setAccount(String account) {this.account = account;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"android:background="@drawable/img"><TextViewandroid:id="@+id/text_top"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="100dp"android:text="外卖点餐"android:textColor="@color/black"android:textSize="30dp"android:textStyle="italic"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"/><EditTextandroid:id="@+id/UserName"android:layout_width="300dp"android:layout_height="wrap_content"android:layout_marginTop="60dp"android:hint="请输入用户名"android:padding="15dp"android:singleLine="true"android:textSize="24dp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/text_top" /><EditTextandroid:id="@+id/Pwd"android:layout_width="300dp"android:layout_height="wrap_content"android:layout_marginTop="20dp"android:hint="请输入用户密码"android:inputType="textPassword"android:maxLength="16"android:padding="15dp"android:singleLine="true"android:textSize="24dp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/UserName" /><Buttonandroid:id="@+id/login"android:layout_width="120dp"android:layout_height="60dp"android:layout_marginTop="30dp"android:text="登录"android:textStyle="bold"app:layout_constraintEnd_toStartOf="@+id/register"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/Pwd" /><Buttonandroid:id="@+id/register"android:layout_width="120dp"android:layout_height="60dp"android:layout_marginTop="30dp"android:text="注册"android:textStyle="bold"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toEndOf="@+id/login"app:layout_constraintTop_toBottomOf="@+id/Pwd" /></androidx.constraintlayout.widget.ConstraintLayout>

main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/img"><!-- 标题栏 --><RelativeLayoutandroid:id="@+id/title_layout"android:layout_width="match_parent"android:layout_height="wrap_content"><TextViewandroid:id="@+id/title_text"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:text="外卖点餐系统"android:textSize="22sp"android:textColor="#ffffff" /></RelativeLayout><!-- 菜单列表 --><!-- 购物车和结算按钮 --><ListViewandroid:id="@+id/menu_list"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1" /><RelativeLayoutandroid:id="@+id/cart_layout"android:layout_width="match_parent"android:layout_height="70dp"android:layout_marginTop="10dp"android:background="#ffffff"android:padding="0dp"><TextViewandroid:id="@+id/txt_cart_items"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="购物车(0): ¥0"android:textColor="#000000"android:textSize="18sp" /><Buttonandroid:id="@+id/btn_checkout"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentRight="true"android:text="结算"android:textColor="#ffffff"android:textSize="18sp" /></RelativeLayout><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="70dp"android:layout_marginTop="10dp"android:background="#ffffff"android:padding="0dp"><EditTextandroid:id="@+id/editText"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_marginBottom="25dp"android:gravity="bottom"/></RelativeLayout>
</LinearLayout>

register.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".Login"android:background="@drawable/img"tools:ignore="MissingDefaultResource"><TextViewandroid:id="@+id/text_top"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="90dp"android:text="注册界面"android:textColor="#141414"android:textSize="30dp"android:textStyle="italic"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /><EditTextandroid:id="@+id/register_name"android:layout_width="300dp"android:layout_height="wrap_content"android:layout_marginTop="50dp"android:hint="请输入用户名"android:padding="15dp"android:singleLine="true"android:textSize="24dp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/text_top" /><EditTextandroid:id="@+id/register_pwd"android:layout_width="300dp"android:layout_height="wrap_content"android:layout_marginTop="20dp"android:hint="请输入用户密码"android:inputType="textPassword"android:maxLength="16"android:padding="15dp"android:singleLine="true"android:textSize="24dp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/register_name" /><EditTextandroid:id="@+id/register_pwd2"android:layout_width="300dp"android:layout_height="wrap_content"android:layout_marginTop="20dp"android:hint="请确认密码"android:inputType="textPassword"android:maxLength="16"android:padding="15dp"android:singleLine="true"android:textSize="24dp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.504"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/register_pwd" /><Buttonandroid:id="@+id/register_but"android:layout_width="120dp"android:layout_height="60dp"android:layout_marginTop="30dp"android:text="立即注册"android:textStyle="bold"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintEnd_toStartOf="@+id/back"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/register_pwd2" /><Buttonandroid:id="@+id/back"android:layout_width="120dp"android:layout_height="60dp"android:layout_marginTop="30dp"android:text="返回登录"android:textStyle="bold"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toEndOf="@+id/register_but"app:layout_constraintTop_toBottomOf="@+id/register_pwd2" />
</androidx.constraintlayout.widget.ConstraintLayout>

xiao效果展示

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

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

相关文章

Hystrix: Dashboard流监控

接上两张服务熔断 开始搭建Dashboard流监控 pom依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocat…

OpenGL —— 2.5、绘制第一个三角形(附源码,glfw+glad)(更新:纹理贴图)

源码效果 C源码 纹理图片 需下载stb_image.h这个解码图片的库&#xff0c;该库只有一个头文件。 具体代码&#xff1a; vertexShader.glsl #version 330 corelayout(location 0) in vec3 aPos; layout(location 1) in vec3 aColor; layout(location 2) in vec2 aUV;out ve…

pnpm安装包管理工具

pnpm安装包管理工具 pnpm代表performant npm&#xff08;高性能的npm&#xff09;&#xff0c;同npm和Yarn&#xff0c;都属于Javascript包管理安装工具&#xff0c;它较npm和Yarn在性能上得到很大提升&#xff0c;被称为快速的&#xff0c;节省磁盘空间的包管理工具。 pnpm…

计算机视觉:深层卷积神经网络的构建

本文重点 上一节课程中我们学习了单卷积层的前向传播,本次课程我们构建一个具有三个卷积层的卷积神经网络,然后从输入(39*39*3)开始进行三次卷积操作,我们来看一下每次卷积的输入和输出维度的变化。 第一层 第一层使用3*3*3的过滤器来提取特征,那么f[1]=3,然后步长s[…

电脑视频编辑软件前十名 电脑视频编辑器怎么剪辑视频

对于大多数创作者而言&#xff0c;视频后期工作基本都是在剪辑软件上进行的。一款适合自己的视频剪辑软件&#xff0c;能够节省出大量的时间和金钱成本&#xff0c;让剪辑师省钱又省心。那么有关电脑视频编辑软件前十名&#xff0c;电脑视频编辑器怎么剪辑视频的相关问题&#…

9.阿里Sentinel哨兵

1.Sentinel Sentinel&#xff08;哨兵&#xff09;是由阿里开源的一款流量控制和熔断降级框架&#xff0c;用于保护分布式系统中的应用免受流量涌入、超载和故障的影响。它可以作为微服务架构中的一部分&#xff0c;用于保护服务不被异常流量冲垮&#xff0c;从而提高系统的稳定…

uview ui 1.x ActonSheet项太多,设置滚动

问题&#xff1a;ActionSheet滚动不了。 使用uview ui &#xff1a;u-action-sheet, 但是item太多&#xff0c;超出屏幕了&#xff0c; 查了一下文档&#xff0c;并没有设置滚动的地方。 官方文档&#xff1a;ActionSheet 操作菜单 | uView - 多平台快速开发的UI框架 - uni-a…

Zebec Protocol:模块化 L3 链 Nautilus Chain,深度拓展流支付体系

过去三十年间&#xff0c;全球金融科技领域已经成熟并迅速增长&#xff0c;主要归功于不同的数字支付媒介的出现。然而&#xff0c;由于交易延迟、高额转账费用等问题愈发突出&#xff0c;更高效、更安全、更易访问的支付系统成为新的刚需。 此前&#xff0c;咨询巨头麦肯锡的一…

机器学习算法示例的收集;MetaAI编码工具Code Llama;“天工AI搜索”首发实测

&#x1f989; AI新闻 &#x1f680; Meta推出新一代AI编码工具Code Llama&#xff0c;助力程序员提高开发效率 摘要&#xff1a;Meta推出Code Llama&#xff0c;这是一个基于Llama 2语言模型打造的AI编码工具&#xff0c;能够生成新的代码并调试人类编写的工作。Code Llama可…

解决MASM32代码汇编出错: error A2181: initializer must be a string or single item

最近用MASM32编程更新SysInfo&#xff0c;增加对IPv6连接信息的收集&#xff0c;使用到了 typedef struct _MIB_TCP6ROW_OWNER_MODULE {UCHAR ucLocalAddr[16];DWORD dwLocalScopeId;DWORD dwLocalPort;UCHAR ucRemoteAddr[16];DWORD …

java 高级面试题整理(薄弱技术-2023)

session 和cookie的区别和联系 session1.什么是session Session是另一种记录客户状态的机制&#xff0c;不同的是Cookie保存在客户端浏览器中&#xff0c;而Session保存在服务器上。客户端浏览器访问服务器的时候&#xff0c;服务器把客户端信息以某种形式记录在服务器上。这就…

【golang】go语句执行规则(goroutine)(上)

Don’t communicate by sharing memory;share memory by communicating. 从Go语言编程的角度解释&#xff0c;这句话的意思就是&#xff1a;不要通过共享数据来通讯&#xff0c;恰恰相反&#xff0c;要以通讯的方式共享数据。 进程和线程 进程&#xff0c;描述的就是程序的执…

数据结构队列的实现

本章介绍数据结构队列的内容&#xff0c;我们会从队列的定义以及使用和OJ题来了解队列&#xff0c;话不多说&#xff0c;我们来实现吧 队列 1。队列的概念及结构 队列&#xff1a;只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表&#xff0c;…

代码随想录打卡—day42—【DP】— 8.27 01背包基础

1 01背包基础 背包概述&#xff1a; 1.1 01背包是什么 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品只能用一次&#xff0c;求解将哪些物品装入背包里物品价值总和最大。 1.2 01背包二维数组 二维数组还…

HLS实现CORDIC算法计算正余弦并上板验证

硬件&#xff1a;ZYNQ7010 软件&#xff1a;MATLAB 2019b、Vivado 2017.4、HLS 2017.4、System Generator 2017.4 1、CORDIC算法计算正余弦 CORDIC算法详细分析网上有很多资料&#xff0c;它的原理是用一系列旋转去逼近目标角度&#xff0c;这一系列旋转的角度为 θ a r c t…

React入门 组件学习笔记

项目页面以组件形式层层搭起来&#xff0c;组件提高复用性&#xff0c;可维护性 目录 一、函数组件 二、类组件 三、 组件的事件绑定 四、获取事件对象 五、事件绑定传递额外参数 六、组件状态 初始化状态 读取状态 修改状态 七、组件-状态修改counter案例 八、this问…

枫叶时代:《超能一家人》喜剧电影引发观众无限笑点

近期&#xff0c;由浙江开心麻花影业有限公司、中国电影股份有限公司和上海阿里巴巴影业有限公司三家公司联合出品的喜剧电影《超能一家人》引起了观众们的热烈关注。这部影片由宋阳导演执导&#xff0c;他曾执导过备受好评的作品《羞羞的铁拳》。时长108分钟的《超能一家人》以…

Linux环境下远程访问SVN服务:SVN内网穿透的详细配置与操作指南

文章目录 前言1. Ubuntu安装SVN服务2. 修改配置文件2.1 修改svnserve.conf文件2.2 修改passwd文件2.3 修改authz文件 3. 启动svn服务4. 内网穿透4.1 安装cpolar内网穿透4.2 创建隧道映射本地端口 5. 测试公网访问6. 配置固定公网TCP端口地址6.1 保留一个固定的公网TCP端口地址6…

Linux: 使用 ssh 连接其他服务器

通过ifconfig 查看要连接的服务器地址&#xff1a; ubuntuubuntu1804-0172:/media/sangfor/vdc$ ssh ubuntu192.168.11.49 输入要连接的服务器密码: ubuntua192.168.1149 s password: 连接服务器成功&#xff1a;

【⑮MySQL | 视图】概述 | 创建 | 查看 | 更新 | 修改 | 删除

前言 ✨欢迎来到小K的MySQL专栏&#xff0c;本节将为大家带来MySQL视图概述 | 创建 | 查看 | 更新 | 修改 | 删除的分享✨ 目录 前言1.视图概述2.创建视图3.查看视图4.更新视图数据5.修改视图6.删除视图总结 1.视图概述 1.1 为什么使用视图&#xff1f; 视图一方面可以帮我们使…