备忘录APP源码和设计报告

news2024/11/24 4:23:34

摘 要

【关键词】备忘录APP;SQLite数据库;Java语言;Android Studio,Activity,Intent,BaseAdapter

本项目是通过Android Studio开发的一款备忘录手机app,有欢迎页面,登录页面,注册页面,添加备忘录,修改备忘录以及删除备忘录等,还有设置页面,有获取当前登录的用户名的信息,弹框,分享等功能。

目录

第1章 绪 论1

1.1 研究背景1

1.2 研究现状1

1.3 目标及意义1

第2章 系统相关技术基础2

2.1 相关技术综述2

2.2 技术12

2.3 技术22

2.4 技术32

第3章 系统分析3

3.1 可行性分析3

3.1.1 经济可行性3

3.1.2 技术可行性3

3.1.3 性能可行性3

3.2 需求分析3

3.2.1 功能模块需求3

第4章 概要设计4

4.1 系统开发环境4

4.1.1. 硬件平台:4

4.1.2. 软件平台:4

4.2 系统功能架构图4

4.3 数据库设计4

4.3.1 创建数据库5

第5章 系统详细设计6

5.1 系统功能设计6

5.1.1 功能一设计——欢迎页面带有倒计时6

5.1.2 功能二设计——注册功能8

5.1.3 功能三设计——登录功能10

5.1.4 功能四设计——查看备忘录列表12

5.1.5 功能五设计——添加或修改备忘录14

5.1.6 功能六设计——删除功能17

5.1.7 功能七设计——登录信息接收功能18

5.1.8 功能八设计——弹框及分享功能19

5.1.9 功能九设计——数据库主要代码20

第6章 系统的不足及改进23

6.1 系统的不足之处23

6.1.1没有明显的特色23

6.1.2支持的形式太少23

6.2可以改进的功能23

第7章 总结与展望24

参考文献25

第1章 绪 论

1.1 研究背景

随着生活节奏的加快, 在工作和生活的压迫下,如何避免忘记工作和生活中的诸多事情而造成不良的后果,就显得非常重要。为此,我开发了一款基于Android系统的备忘录,它能够便携并且简单的记录人们在生活和工作中遇到的诸多事情,从而帮助人们有条理的进行时间管理。

1.2 研究现状

经过对社会上的人的研究调查,目前由于生活及工作的压力越来越大,使得大部分人的记忆力有着明显的下降,从而造成了许多困扰,造成了许多麻烦。

1.3 目标及意义

本项目用于记录人们的遇到的诸多事情,于是我开发这个项目要立志于帮助人们方便快捷的记录自己的事情,手机备忘录对于人们的意义,已不仅仅像一般记事簿一样简单记录,而是向着更个性化人性化的方向发展。备忘录在生活和工作也日益凸显出它的重要性,它能更好地帮助人们更好地管理自己的工作和生活,防止因为忘记而造成的不良后果,极大的方便了人们的生活。


第2章 系统相关技术基础

本系统采用Android Studio作为开发工具,SQLite作为数据库存储系统数据,使用SQLiteStudio管理数据库(参考)。

2.1 相关技术综述

为了方便项目开发,我学习了SQLiteStudio图形化工具的使用方法,在课堂上又学习了Android Studio的使用方法以及Android的开发方法。

2.2 技术1

备忘录查看界面主要用到了ListView列表视图,并定义了一个自定义适配器继承BaseAdapter去对ListView列表视图进行数据适配。

2.3 技术2

本项目主要语言为Java,因此学习Android项目开发前应该有一定的Java基础,否则对于Android者是一种比较大的挑战。

2.4 技术3

数据库使用到了SQLite轻型数据库,可方便的嵌入Android系统进行应用。


第3章 系统分析

3.1 可行性分析

系统可行性包括经济可行性、技术可行性和性能可行性,下面就这两方面进行一下该项目可行性的分析。

3.1.1 经济可行性

本系统经济成本较低,无需大量资金,即可完成相应的系统功能设定。

3.1.2 技术可行性

本系统技术较简单,零基础进行简单的学习后也可独立开发类似软件,对于刚开始学习Android的人来说是个不错的学习案例,可以仔细认真的去学习完成,会有很大的收获。

综上所述,本系统设计与开发在技术和硬件设备等方面条件都满足需求,因此开发是可行的。

3.1.3 性能可行性

本系统性能良好,操作简单,依靠Android Studio的开发,SQLite数据库的支撑,使得本项目有着不错的运行能力以及在开发性。

综上所述,根据多方面的研究和分析后,该项目的开发从整体来说是可行的。

3.2 需求分析

通过对该系统进行相关调查,大部分的人都会存在一定的忘事现象又不能随手携带笔记本记录,所以一款手机备忘录app是非常可行的,用户范围也是非常广的。

3.2.1 功能模块需求

根据市场的实际需求,本系统划分为学生年龄段的需求以及上班族的需求,每个阶段的需求是不同的,所以我们也针对这做了相应的需求改变。

第4章 概要设计

4.1 系统开发环境

本系统开发环境主要是计算机的硬件、软件平台。

  1. 硬件平台:
    处理器:Intel Core2 DUO 2.0GHz
    内存:4G以上
  2. 软件平台:

操作系统:Windows 7/Windows 10

数据库:SQLiteStudio

开发环境:Java 1.8

开发工具:Android Studio 4.0

开发语言:Java

API版本:Android API 14及以上

4.2 系统功能架构图

本系统的主要功能模块有:欢迎页面带有倒计时,登录功能,注册功能,添加功能,修改功能,删除功能,设置页面的接收登录信息,弹框及分享功能。主要系统功能架构图如图所示。

4.3 数据库设计

本系统运用了Android Studio的内置数据库SQLite,并使用SQLiteStudio图形化工具进行信息管理等。

4.3.1 创建数据库

Note(备忘录)表:

其中id是设置为主键并自增,content为备忘录中保存或修改的内容,date为备忘录保存或者修改的时间。

User(用户)表:

其中id是设置为主键并自增,username为用户的用户名,password为用户密码,用来注册和登录使用的。


第5章 系统详细设计

5.1 系统功能设计

在该项目系统中有多个功能,包括欢迎页面倒计时,登录注册,备忘录的增删改查以及登录信息的接收等功能,下面一一介绍。

5.1.1 功能一设计——欢迎页面带有倒计时

打开项目后会直接打开一个欢迎页面,就犹如手机上的今日头条等APP会带有几秒的倒计时,可点击跳过,也可以等倒计时结束后自动进入。

主要代码:

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_welcome);
initView();
timer.schedule(task, 1000, 1000);//等待时间一秒,停顿时间一秒
/**
* 正常情况下不点击跳过
*/
handler new Handler();
handler.postDelayed(runnable new Runnable() {
@Override
public void run() {
//从闪屏界面跳转到首界面
Intent intent = new Intent(WelcomeActivity.this, LoginActivity.class);
startActivity(intent);
finish();
}
}, 5000);//延迟5S后发送handler信息
}

private void initView() {
tv = findViewById(R.id.tv);//跳过
tv.setOnClickListener(this);//跳过监听
}
TimerTask task new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
recLen--;
tv.setText("跳过 " recLen);
if (recLen < 0) {
timer.cancel();
tv.setVisibility(View.GONE);//倒计时到0隐藏字体
}
}
});
}
};
/**
* 点击跳过
*/
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.tv:
//从广告界面跳转到首界面
Intent intent = new Intent(WelcomeActivity.this, LoginActivity.class);
startActivity(intent);
finish();
if (runnable != null) {
handler.removeCallbacks(runnable);
}
break;
default:
break;
}
}

5.1.2 功能二设计——注册功能

打开登录页面后点击点我注册的字样会打开注册页面,在此页面可进行用户的信息注册。在注册页面会有密码和确认密码是否一致的判断。

主要代码:

private void initView() {
sqLiteHelper=new SQLiteHelper(this);
tv_back = findViewById(R.id.tv_back);
tv_back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(RegisterActivity.this,LoginActivity.class);
startActivity(intent);
finish();
}
});
etName = findViewById(R.id.et_name);
etPwd = findViewById(R.id.et_pwd);
etRepwd = findViewById(R.id.et_repwd);
bt_register = findViewById(R.id.bt_register);
bt_register.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name = etName.getText().toString().trim();
String pwd = etPwd.getText().toString().trim();
String repwd = etRepwd.getText().toString().trim();
if (!TextUtils.isEmpty(name) && !TextUtils.isEmpty(pwd) && !TextUtils.isEmpty(repwd)){
if (pwd.equals(repwd)){
sqLiteHelper.insertUser(name,pwd);
Intent intent = new Intent(getApplicationContext(),LoginActivity.class);
intent.putExtra("name",name);
startActivity(intent);
finish();
Toast.makeText(getApplicationContext(),"注册成功",Toast.LENGTH_SHORT).show();
}else if (!pwd.equals(repwd)){
Toast.makeText(getApplicationContext(),"两次密码输入不一致,请重新输入",Toast.LENGTH_SHORT).show();
etName.setText("");
etPwd.setText("");
etRepwd.setText("");
}
}
}
});
}

5.1.3 功能三设计——登录功能

项目启动后经过欢迎页面会进入登录页面,该页面可进行用户登录,并且有记住密码的功能。

主要代码:

final boolean isRemember = preferences.getBoolean("remember_password",false);
if (isRemember){
String account = preferences.getString("account","");
String pass = preferences.getString("pass","");
username.setText(account);
password.setText(pass);
ck_rememer.setChecked(true);
}

tv_back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(LoginActivity.this, MainActivity.class);
startActivity(intent);
finish();
}
});

mBtRegister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(LoginActivity.this, RegisterActivity.class);
startActivity(intent);
finish();
}
});

mBtLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String user = username.getText().toString().trim();
String passwd = password.getText().toString().trim();
if (login(user,passwd)) {
editor preferences.edit();
if (ck_rememer.isChecked()){
editor.putBoolean("remember_password",true);
editor.putString("account",user);
editor.putString("pass",passwd);
}else {
editor.clear();
}
editor.apply();
Toast.makeText(getApplicationContext(), "登录成功", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(LoginActivity.this,MainActivity.class);
intent.putExtra("name",user);
startActivity(intent);
finish();
}
else {
username.setText("");
password.setText("");
Toast.makeText(getApplicationContext(), "用户名或密码错误,登录失败", Toast.LENGTH_SHORT).show();
}
}

});
}
public boolean login(String username,String password) {
SQLiteDatabase db = sqLiteHelper.getWritableDatabase();
String sql = "select * from User where username=? and password=?";
Cursor cursor = db.rawQuery(sql, new String[] {username, password});
if (cursor.moveToFirst()) {
cursor.close();
return true;
}
return false;
}

5.1.4 功能四设计——查看备忘录列表

点击登录后,会来到备忘录信息查看页面,在这个页面可以查看备忘录列表。该页面主要运用到了一个自定义的数据适配器去继承BaseAdapter去适配备忘录数据。

主要代码:

适配器代码:

public class NoteAdapter extends BaseAdapter {
private LayoutInflater layoutInflater;//这个对象用于加载item的布局文件
private List<Note>list;//list集合是列表中需要显示的集合
public NoteAdapter(Context context, List<Note>list){
layoutInflater=LayoutInflater.from(context);
this.list=list;
}
@Override
public int getCount() {
return list==null?0:list.size();
}//获取集合长度
@Override
public Object getItem(int position) {
return list.get(position);
}//返回集合的内容
@Override
public long getItemId(int position) {
return position;
}//返回位置信息
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if (convertView==null){
convertView=layoutInflater.inflate(R.layout.note_item,null);
viewHolder=new ViewHolder(convertView);
convertView.setTag(viewHolder);
}else {
viewHolder=(ViewHolder) convertView.getTag();
}
Note note =(Note)getItem(position);
viewHolder.tvNotepadContent.setText(note.getContent());
viewHolder.tvNotepadTime.setText(note.getDate());
return convertView;
}
class ViewHolder{
TextView tvNotepadContent;
TextView tvNotepadTime;
public ViewHolder(View view){
tvNotepadContent=view.findViewById(R.id.item_content);//记录的内容
tvNotepadTime=view.findViewById(R.id.item_time);//保存记录的时间
}
}
}

主页面代码:

public void initData(){
mSQLiteHelper=new SQLiteHelper(this);
showQueryData();
listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?>parent,View view,int position,long id ){
Note note =list.get(position);
Intent intent=new Intent(MainActivity.this,RecordActivity.class);
intent.putExtra("id", note.getId());
intent.putExtra("content", note.getContent());
intent.putExtra("date", note.getDate());
MainActivity.this.startActivityForResult(intent,1);
}
});

}
private void showQueryData(){
if(list!=null){
list.clear();
}
list=mSQLiteHelper.query();
adapter=new NoteAdapter(this,list);
listView.setAdapter(adapter);
}
@Override
protected void onActivityResult(int requestCode,int resultCode,Intent data){
super.onActivityResult(requestCode,resultCode,data);
if (requestCode==1&&resultCode==2){
showQueryData();
}
}

5.1.5 功能五设计——添加或修改备忘录

在查看页面点击右下角的加号,可以跳转到添加页面,在添加页面可以进行信息的添加。

主要代码:

public void initData(){
mSQLiteHelper=new SQLiteHelper(this);
noteName.setText("添加");
Intent intent=getIntent();
if(intent!=null){
id=intent.getStringExtra("id");
if(id!=null){
noteName.setText("修改");
content.setText(intent.getStringExtra("content"));
note_time.setText(intent.getStringExtra("time"));
note_time.setVisibility(View.VISIBLE);
}
}
}
@Override
public void onClick(View v){
switch (v.getId()){
case R.id.note_back:
finish();
break;
case R.id.delete:
content.setText(" ");
break;
case R.id.note_save:
String noteContent =content.getText().toString().trim();
if(id!=null){
//修改记录的功能
if(noteContent.length()>0){
if (mSQLiteHelper.updateData(id,noteContent,DateUtils.getTime())){
showToast("修改成功");
setResult(2);
finish();
}else{
showToast("修改失败");
}
else{
showToast("修改的记录内容不能为空");
}
}else{
//添加记录的功能
if(noteContent.length()>0){
if (mSQLiteHelper.insertData(noteContent,DateUtils.getTime())){
showToast("保存成功");
setResult(2);
finish();
}else{
showToast("保存失败");
}
else{
showToast("保存的记录内容不能为空");
}
}
break;
}
}
public void showToast(String message){
Toast.makeText(RecordActivity.this,message,Toast.LENGTH_LONG).show();
}

5.1.6 功能六设计——删除功能

在查看备忘录列表页面,长按某一条记录会弹框提示是否要删除,点击确定便会删除该条信息。

主要代码:

listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id) {
AlertDialog dialog;
AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this)
.setMessage("是否删除此记录?")
.setPositiveButton("确定"new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Note note =list.get(position);
if(mSQLiteHelper.deleteData(note.getId())){
list.remove(position);
adapter.notifyDataSetChanged();
Toast.makeText(MainActivity.this,"删除成功",Toast.LENGTH_LONG).show();
}

}
})
.setNegativeButton("取消"new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
dialog=builder.create();
dialog.show();
return true;
}
});

5.1.7 功能七设计——登录信息接收功能

在备忘录信息列表查看页面,点击右上角的3个圆点便会跳转到设置页面,在该页面会有当前用户登录的用户名信息,该功能主要是利用Intent实现的。

主要代码:

传值页面:

Intent intent = new Intent(LoginActivity.this,MainActivity.class);
intent.putExtra("name",user);
startActivity(intent);
finish();

接收页面:

tv_userName = findViewById(R.id.user_name);
Intent intent = getIntent();
String name = intent.getStringExtra("name");
tv_userName.setText(name);

5.1.8 功能八设计——弹框及分享功能

弹框功能:

tv_help.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new AlertDialog.Builder(SettingActivity.this)
.setIcon(android.R.drawable.ic_dialog_alert)
.setTitle("帮助")
.setMessage("如果有问题,请咨询管理员!")
.setPositiveButton("确定"new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.dismiss();

}
}).create().show();
}
});

分享功能:

tv_share.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
String msg= "快来一起记录美好时光吧";
intent.putExtra(Intent.EXTRA_TEXT,msg);
startActivity(Intent.createChooser(intent,"备忘录分享"));
}
});

5.1.9 功能九设计——数据库主要代码

public class SQLiteHelper extends SQLiteOpenHelper{
private SQLiteDatabase sqLiteDatabase;
public static final String sql "CREATE TABLE Note ("
+"id INTEGER PRIMARY KEY AUTOINCREMENT,"
+"content text,"
+"date text);";
public static final String tab_user "CREATE TABLE User ("
+"id INTEGER PRIMARY KEY AUTOINCREMENT,"
+"username text,"
+"password text);";
//创建数据库
public SQLiteHelper(Context context){
super(context, "NotePad.db",null,2);
sqLiteDatabase=this.getWritableDatabase();
}
//创建表
@Override
public void onCreate(SQLiteDatabase db){
db.execSQL(sql);
db.execSQL(tab_user);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("drop table if exists Note");
db.execSQL("drop table if exists User");
onCreate(db);
}
//添加数据
public boolean insertData(String userContent,String userTime){
ContentValues contentValues=new ContentValues();
contentValues.put("content",userContent);
contentValues.put("date",userTime);
return sqLiteDatabase.insert("Note",null,contentValues)>0;
}
public boolean insertUser(String username,String password){
ContentValues contentValues=new ContentValues();
contentValues.put("username",username);
contentValues.put("password",password);
return sqLiteDatabase.insert("User",null,contentValues)>0;
}
//删除数据
public boolean deleteData(String id){
String sql="id=?";
//连接字符串,易错点!
String[] contentValuesArray=new String[]{String.valueOf(id)};
return sqLiteDatabase.delete("Note",sql,contentValuesArray)>0;
}
//修改数据
public boolean updateData(String id,String content,String userYear){
ContentValues contentValues=new ContentValues();
contentValues.put("content",content);
contentValues.put("date",userYear);
String sql="id=?";
String[] strings=new String[]{id};
return sqLiteDatabase.update("Note",contentValues,sql,strings)>0;
}
//查询数据
public List<Note> query(){
List<Note>list=new ArrayList<Note>();
Cursor cursor=sqLiteDatabase.query("Note",null,null,
null,null,null,"id desc");
if (cursor!=null){
while (cursor.moveToNext()){
Note note=new Note();
String id=String.valueOf(cursor.getInt(cursor.getColumnIndex("id")));
String content=cursor.getString(cursor.getColumnIndex("content"));
String date=cursor.getString(cursor.getColumnIndex("date"));
note.setId(id);
note.setContent(content);
note.setDate(date);
list.add(note);
}
cursor.close();
}
return list;
}
}


第6章 系统的不足及改进

在该应用中还有很多不足需要不断完善,也有很多想要实现但由于现能力有限没有达到的效果。

6.1 系统的不足之处

6.1.1没有明显的特色

与手机自带的备忘录应用相比较没有突出的特色,没有吸引用户来使用的亮点,希望可以更新颖,实现更多功能。

6.1.2支持的形式太少

该应用不支持图片、音频、视频等格式的记录,内容太过单调,不能记录下文字不能表达的事件。

6.2可以改进的功能

6.2.1 可以实现备忘录提醒

备忘录的主要功能就是帮助人们记录重要事件,防止忘记,但该应用必须让用户定时查阅才能知道所记录的事情,比较不方便,希望可以通过一些技术实现提醒功能,可以设定提醒时间,到时自动提醒用户,这样用户就不用担心错过重要的事情造成不良后果。

第7章 总结与展望

经过一周左右的课程设计的研究和开发,我学习到了许多书本上没有的东西。通过这个项目的研发,我终于认识到理论跟实际还是有很大的不同的。对安卓的基本知识进行了锻炼,对相关知识也有了更深层次的理解与掌握,这也激发了我对安卓开发的巨大兴趣。

通过此次设计过程我会到了许多知识,这也是在第一次比较完整的完成一个Android小项目,虽然过程中遇到了许多困难,在同学和老师的帮助下一一克服了。

本项目仍然有许多不足和可以改进的地方,比如说不同用户登录后备忘录是不同的,备忘录提醒等功能。

在完成课程设计的过程中,得到了进一步的锻炼,操作更加熟练,对以后的毕业设计和论文等都有了一定了解。在这学期学习的内容中还有一些技术没有用到该应用中,我还会继续学习继续努力,希望能够把老师所教的技术都熟练掌握,并将自己做的应用不断完善。我也知道了学习就是通过不断的发现问题,总结问题和解决问题的过程,这也使我在此次课程设计中获益匪浅,并且得到了宝贵的经验。在此感谢老师这一学期为我们的付出,你的尽职尽责我们都有目共睹,平时不论是课堂学习还是课下空闲时间 ,你都严格要求我们,在每次小案例的练习中我都会有不一样的收获,得到了好的成果才懂得你的良苦用心。感谢老师让我在期末做了这样的课程设计,让我为今后的项目开发有了一定的了解,虽然第一次做这些还有很多不足,但我会不断完善,不辜负老师苦心,争取早日成为一名优秀的程序员。

参考文献

  1. 第一行代码——Android(第2版) 郭霖
  2. Android程序设计及实践(第二版)

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

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

相关文章

MybatisPlus的CRUD接口

create、read、update、delete一、insert 1、插入操作 注意&#xff1a;数据库插入id值默认为&#xff1a;全局唯一id 2、主键策略 &#xff08;1&#xff09;ID_WORKER MyBatis-Plus默认的主键策略是&#xff1a;ID_WORKER 全局唯一ID &#xff08;2&#xff09;自增策略 要想…

git分支详解——记住这些指令能帮助你解决大部分git的分支问题

Github 之 分支 branch 操作之 查看分支/创建分支/切换分支/提交分支/删除分支/合并分支 等操作 一、简单介绍 二、查看分支 1、查看本地所有分支&#xff1a;git branch 2、查看远程有哪些分支&#xff1a;git branch -r 3、查看所有分支&#xff08;本地和远程的&#xff09;…

Egg 1. 快速开始 Quick Start 1.3 一步步 Step by Step 1.3.3 添加静态资源 1.3.4 添加渲染模板

Egg Egg 本文仅用于学习记录&#xff0c;不存在任何商业用途&#xff0c;如侵删 文章目录Egg1. 快速开始 Quick Start1.3 一步步 Step by Step1.3.3 添加静态资源1.3.4 添加渲染模板1. 快速开始 Quick Start 1.3 一步步 Step by Step 1.3.3 添加静态资源 Egg 有一个名为stat…

【K8S系列】第十讲:kubectl 命令大全

目录 序言 1.基本介绍 1.1 命令格式介绍 2 基础命令 2.1 create 2.2 delete 2.2.1 根据yaml删除资源 2.2.1 根据名称删除资源 2.3 get 2.3.1查看pod列表 2.3.2 查看node 2.3.3 查看svc 2.3.4 查看all 2.3.5 查看ns 2.3.4 查看deploy 2.3 run 2.4 explain 2.…

基于PHP+MySQL珠宝销售网站的设计与开发

大多数时候珠宝是一种身份和高贵的象征,一个价值不菲的珠宝会给人一种高贵的感觉,同时珠光宝气也是人们非常喜欢的一种氛围,尤其是对女生来说,那种金光闪闪的东西总是会在无形中吸引她们的注意力,但是很多时候人们只能到商场或者专卖店购买珠宝,这种珠宝一方面鱼龙混杂,以次充好…

tinymce富文本编辑器的使用

tinymce富文本编辑器的使用 1、基本介绍 tinymce富文本官网&#xff1a;https://www.tiny.cloud/ 中文文档&#xff1a;http://tinymce.ax-z.cn/ tinymce-npm地址&#xff1a;https://www.npmjs.com/package/tinymce tinymce英文文档-示例地址&#xff1a;https://www.tin…

沟通管理风险管理采购管理@相关方管理

沟通管理目录概述需求&#xff1a;设计思路实现思路分析1.沟通管理绩效报告提供资源2.管理沟通3.监督沟通风险管理规划风险管理识别风险定性风险分析&#xff1a;定量分析风险规划风险应对实施分享应对监督风险采购管理&#xff1a;12.1 规划采购的管理12.2 实施采购控制采购相…

Bugku CTF杂项0和1的故事——01字符串生成二维码

个人说明 备赛半月后&#xff0c;因大多都是Web方向&#xff0c;于是自己将主要目标放在Misc和CryPto上&#xff0c;因为较之逆向和二进制更容易上手。 题目链接 1和0的故事 - Bugku CTF 题目简介如上&#xff0c;打开后是25X25的01字符串&#xff0c;先讲解正确高效做法&a…

SpringBoot 自动装配原理

什么是自动装配 springboot 定义一套接口规范&#xff0c;这套规范规定&#xff1a;springboot 在启动时会扫描外部引用 jar 包中的 META-INF/spring.factories 文件&#xff0c;将文件中配置的类型信息加载到 spring 容器&#xff0c;并执行类中定义的各种操作对于外部 jar 来…

Java并发编程—java内存模型1

文章目录Java内存模型的基础并发编程模型的两个关键性问题1、线程之间如何通信&#xff1f;(问题1)2、进程之间如何通信&#xff1f;(问题2)线程间通信机制&#xff1a;共享内存、消息传递1、共享内存2、消息传递java内存模型抽象结构指令重排序并发编程模型的分类happens-befo…

资料库的webrtc文件传输

一、一个看似简单的事情往往不简单 一个简单的事情往往会倾注你的心血&#xff0c;也许你看到很简单往往其实没那么简单&#xff1b;其实想想今年业余时间的大把代码&#xff0c;真正能成品的好像并不多。 马上年底了&#xff0c;写下这篇文章。每一行程序就像写小说一样&…

Egg 1. 快速开始 Quick Start 1.3 一步步 Step by Step 1.3.1 初始化 1.3.2 创建控制器

Egg Egg 本文仅用于学习记录&#xff0c;不存在任何商业用途&#xff0c;如侵删 文章目录Egg1. 快速开始 Quick Start1.3 一步步 Step by Step1.3.1 初始化1.3.2 创建控制器1. 快速开始 Quick Start 1.3 一步步 Step by Step 之前我们直接使用 npm init egg&#xff0c;选择了…

# 智慧社区管理系统-基础管理-04业主管理

一后端 1entity package com.woniu.community.entity;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;Data AllArgsConstructor NoArgsConstructor public class Owner {private int id;private String userName;private String …

Linux I2C驱动框架, 调试神奇I2C-Tools介绍

1. IIC协议 2. Linux的I2C体系结构分为3个组成部分&#xff1a; I2C核心( i2c-core.c )&#xff1a;   I2C核心提供了I2C总线驱动和设备驱动的注册、注销方法、I2C通信方法(”algorithm”)、与具体适配器无关的代码、探测设备、检测设备地址的上层代码等。 …

在线PDF查看器和PDF编辑器:GrapeCity Documents PDF (GcPdf)

跨平台 JavaScript PDF 查看器 使用我们的 JavaScript PDF 查看器在网络上阅读和编辑 PDF。跨浏览器和框架打开和打印。GrapeCity Documents PDF (GcPdf) 全功能的 JavaScript PDF 查看器和 PDF 编辑器 适用于所有现代浏览器和框架&#xff0c;包括 Edge、Chrome、Firefox、Op…

UML类图中 前缀符号 + - # ~ 的含义

UML类图中有各种符号&#xff0c;新手看着一脸懵逼&#xff0c;今天我就来讲一下各个符号到底是啥意思。 其实这些符号都是在描述类属性的可见性&#xff1a; UML中&#xff0c;可见性分为4级 1、public public 公用的用 前缀表示 &#xff0c;该属性对所有类可见 2、prote…

算法篇-----回溯1

文章目录什么是回溯呢&#xff1f;力扣690-----员工的重要性&#xff08;中等&#xff09;力扣733-----图像渲染&#xff08;简单&#xff09;力扣463-----岛屿的周长&#xff08;简单)力扣130------被围绕的区域&#xff08;中等&#xff09;力扣17--------电话号码的组合 &am…

kafka-consumer-offset位移

目录 1 offset的默认维护位置 1.1 消费offset案例 2 自动提交offset 3 手动提交offset 3.1 原理 3.2 代码示例 3.2.1 同步提交 3.2.2 异步提交(生产常用) 4 指定offset消费 5 指定时间消费 6 漏消费和重复消费分析 6.1 重复消费 6.2 漏消费 6.3 消费者事务 7 数据…

高通开发系列 - ALSA声卡驱动中tinymix返回时间过慢

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录 问题背景问题分析验证第一个猜测验证第二个猜测问题原因解决方案问题背景 我们一个高通平台上出现一个问题: tingmix命令需要几秒钟…

一文带你深入理解Linux端口重用这一特性

【好文推荐】 需要多久才能看完linux内核源码&#xff1f; 概述Linux内核驱动之GPIO子系统API接口 一篇长文叙述Linux内核虚拟地址空间的基本概括 轻松学会Linux下查看内存频率,内核函数,cpu频率 大家好&#xff0c;我是Linux吴彦祖&#xff01; 开篇我先考大家一个小问题&…