安卓APP源码和设计报告——运动健身教学

news2024/11/16 7:28:48

实 验 报 告

课程名称

实验名称

指导教师

专业

班级

学号

姓名

目 录

一、设计背景31. 需求分析32. 课题研究的目的和意义3二、系统需求分析与开发环境31. 系统功能需求32.系统界面需求43.开发环境4三、系统设计4四、系统测试51.脑模拟器测试6五、总结与展望6六、重要程序71.LoginActivity72.RegisterActivity123.DatabaseHelper174.DictActivity18


  1. 设计背景
  2. 需求分析
    对于很多人来说拥有一副好身材能让自己增添不少魅力;对于爱吃而又担心自己发胖的人来说适当的运动是最好的选择。移动互联网时代,市场上“约跑”“约运动”运动指南APP软件成为新时代闺蜜朋友的互动模式,运动热潮的来临,这样让越来越多的人加入运动的行列中,大众的运动热情也刺激着更多与运动有关的产业飞速发展,尤其是与“互联网+”结合产生的智能运动运动App开发更是发展得如火如荼... 人们通过一款运动指南型App应用就可以随时随地的进行运动锻炼,可以不用去运动房锻炼也可以达到完美的身材,这样运动运动App开发给人们带来了极大的方便。所以这次做的是一款运动类的软件,为了方便用户随时随地可以运动。在配色方面使用白色和绿色非常简单的颜色能让人眼前一亮。在软件功能方面,用户首先需要注册用户名填写密码,注册成功之后,用户可以用之前注册的用户名和密码进行登录。登录成功之后进入到导航页面,其中包括会员信息和运动项目两个部分,会员信息记录了会员的姓名身高体重等一些基本信息,还可以查看用户报名的课程名称,可以增加以及删除报名项目,运动项目页面则是列举出一些项目名称来供用户选择。
  3. 课题研究的目的和意义

所以这次做的是一款运动类的软件,为了方便用户随时随地可以运动。在配色方面使用白色和绿色非常简单的颜色能让人眼前一亮。在软件功能方面,用户首先需要注册用户名填写密码,注册成功之后,用户可以用之前注册的用户名和密码进行登录。登录成功之后进入到导航页面,其中包括会员信息和运动项目两个部分,会员信息记录了会员的姓名身高体重等一些基本信息,还可以查看用户报名的课程名称,可以增加以及删除报名项目,运动项目页面则是列举出一些项目名称来供用户选择。

  1. 系统需求分析与开发环境
  2. 系统功能需求
    需要包含登入注册功能,用户名和密码储存在Sharedpreferences轻型数据类中,按钮实现页面跳转。包括数据库的增删查改功能,采用的是SQLite数据库。
  3. 系统界面需求
    简介美观,采用代表健康的绿色作为主色调,和运动的主题相符合。注册和登入的页面参考了许多app,要让页面做到简介美观,所以登入注册页面都用到了自定义按钮样式和自定义输入框样式,按钮设计出颜色渐变的样式并加入圆角看起来不生硬,输入框同样加入了圆角的设计。
  4. 开发环境

Android studio 4.0.2+JDK1.8+gradle-6.1.1-all.zip

  1. 系统设计


登入注册页面制作完后,做了一个导航页面,页面上方可以横向滑动运动馆内部的图片。然后是会员页面,用户可以通过这个页面查询自己会员信息,这个页面也加入了增删查改的功能,采用的是SQlite数据库,方便用户对课程时间的记录。页面的设计同样采用了按钮的自定义样式和输入框的自定义样式。页面上方是用户的基本信息介绍,头像部分也是设计了一个图片样式的自定义,给图片添加了一个边框,使页面看起来和谐统一美观。


最后是一个课程的展示界面,包括了运动馆开展的全部课程,方便用户查看和挑选。

  1. 系统测试
  2. 脑模拟器测试

  1. 总结与展望
    在这次移动终端开发课程设计过程中,我发现平时学习的知识与实践环节所用到的有一定的差距,往往我觉得自己掌握的很好或者自认为熟练的技术却在此次实践环节中往往出问题,书本上的知识只提供方法的借鉴,实践中自己必须摸索出适合具体工作的方法,这一切都离不开钻研精神与勤学好问的精神.在人与人相处过程中我收获更大,首先要谦虚谨慎,不能自以为是,认为自己懂得很多,而仅仅埋头苦干,而不向他人请教,工作不但是实践与应用的过程,同时也是学习的过程,我们必须加强与他人的沟通学习,以便获得与他人的交流。在这短短的时间里,让我深深的感觉到自己在实际应用中所学专业知识的匮乏。让我真真领悟到“学无止境”这句话的涵义。而老师在专业认识周中所讲的,都是课本上没有而对我们又非常实用的东西,这又给我们的实训增加了浓墨淡采的光辉。我懂得了实际生活中,专业知识是怎样应用与实践的。在这些过程中,我不仅知道了职业生涯所需具备的专业知识,而且让我深深体会到一个团队中各成员合作的重要性,要善于团队合作,善于利用别人的智慧,这才是大智慧。靠单一的力量是很难完成一个大项目的,在进行团队合作的时候,还要耐心听取每个成员的意见,使我们的组合达到更加完美。
  2. 重要程序
  3. LoginActivity
    public class LoginActivity extends AppCompatActivity {
    private TextView tv_main_title;//标题
    private TextView tv_back,tv_register,tv_find_psw;//返回键,显示的注册,找回密码
    private Button btn_login;//登录按钮
    private String userName,psw,spPsw;//获取的用户名,密码,加密密码
    private EditText et_user_name,et_psw;//编辑框
    @Override
    protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    //设置此界面为竖屏
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    init();
    }
    //获取界面控件
    private void init() {
    //从main_title_bar中获取的id
    tv_main_title=findViewById(R.id.tv_main_title);
    tv_main_title.setText("登录");
    tv_back=findViewById(R.id.tv_back);
    //从activity_login.xml中获取的
    tv_register=findViewById(R.id.tv_register);
    tv_find_psw=findViewById(R.id.tv_find_psw);
    btn_login=findViewById(R.id.btn_login);
    et_user_name=findViewById(R.id.et_user_name);
    et_psw=findViewById(R.id.et_psw);
    //返回键的点击事件
    tv_back.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    //登录界面销毁
    LoginActivity.this.finish();
    }
    });
    //立即注册控件的点击事件
    tv_register.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    //为了跳转到注册界面,并实现注册功能
    Intent intent=new Intent(LoginActivity.this,RegisterActivity.class);
    startActivityForResult(intent, 1);
    }
    });
    //找回密码控件的点击事件
    tv_find_psw.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    //跳转到找回密码界面(此页面暂未创建)
    }
    });
    //登录按钮的点击事件
    btn_login.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    //开始登录,获取用户名和密码 getText().toString().trim();
    userName=et_user_name.getText().toString().trim();
    psw=et_psw.getText().toString().trim();
    //对当前用户输入的密码进行MD5加密再进行比对判断, MD5Utils.md5( ); psw 进行加密判断是否一致
    String md5Psw= MD5Utils.md5(psw);
    // md5Psw ; spPsw 为根据从SharedPreferences中用户名读取密码
    // 定义方法 readPsw为了读取用户名,得到密码
    spPsw=readPsw(userName);
    // TextUtils.isEmpty
    if(TextUtils.isEmpty(userName)){
    Toast.makeText(LoginActivity.this, "请输入用户名", Toast.LENGTH_SHORT).show();
    return;
    }else if(TextUtils.isEmpty(psw)){
    Toast.makeText(LoginActivity.this, "请输入密码", Toast.LENGTH_SHORT).show();
    return;
    // md5Psw.equals(); 判断,输入的密码加密后,是否与保存在SharedPreferences中一致
    }else if(md5Psw.equals(spPsw)){
    //一致登录成功
    Toast.makeText(LoginActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
    //保存登录状态,在界面保存登录的用户名定义个方法 saveLoginStatus boolean 状态 , userName 用户名;
    saveLoginStatus(true, userName);
    //登录成功后关闭此页面进入主页
    Intent data=new Intent();
    //datad.putExtra( ); name , value ;
    data.putExtra("isLogin",true);
    //RESULT_OK为Activity系统常量,状态码为-1
    // 表示此页面下的内容操作成功将data返回到上一页面,如果是用back返回过去的则不存在用setResult传递data值
    setResult(RESULT_OK,data);
    //销毁登录界面
    LoginActivity.this.finish();
    //跳转到主界面,登录成功的状态传递到 MainActivity 中
    startActivity(new Intent(LoginActivity.this,Classification.class));
    return;
    }else if((spPsw!=null&&!TextUtils.isEmpty(spPsw)&&!md5Psw.equals(spPsw))){
    Toast.makeText(LoginActivity.this, "输入的用户名和密码不一致", Toast.LENGTH_SHORT).show();
    return;
    }else{
    Toast.makeText(LoginActivity.this, "此用户名不存在", Toast.LENGTH_SHORT).show();
    }
    }
    });
    }
    private String readPsw(String userName){
    //getSharedPreferences("loginInfo",MODE_PRIVATE);
    //"loginInfo",mode_private; MODE_PRIVATE表示可以继续写入
    SharedPreferences sp=getSharedPreferences("loginInfo", MODE_PRIVATE);
    //sp.getString() userName, "";
    return sp.getString(userName , "");
    }
    private void saveLoginStatus(boolean status,String userName){
    //saveLoginStatus(true, userName);
    //loginInfo表示文件名 SharedPreferences sp=getSharedPreferences("loginInfo", MODE_PRIVATE);
    SharedPreferences sp=getSharedPreferences("loginInfo", MODE_PRIVATE);
    //获取编辑器
    SharedPreferences.Editor editor=sp.edit();
    //存入boolean类型的登录状态
    editor.putBoolean("isLogin", status);
    //存入登录状态时的用户名
    editor.putString("loginUserName", userName);
    //提交修改
    editor.commit();
    }
    /**
    * 注册成功的数据返回至此
    * @param requestCode 请求码
    * @param resultCode 结果码
    * @param data 数据
    */
    @Override
    //显示数据, onActivityResult
    //startActivityForResult(intent, 1); 从注册界面中获取数据
    //int requestCode , int resultCode , Intent data
    // LoginActivity -> startActivityForResult -> onActivityResult();
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    //super.onActivityResult(requestCode, resultCode, data);
    super.onActivityResult(requestCode, resultCode, data);
    if(data!=null){
    //是获取注册界面回传过来的用户名
    // getExtra().getString("***");
    String userName=data.getStringExtra("userName");
    if(!TextUtils.isEmpty(userName)){
    //设置用户名到 et_user_name 控件
    et_user_name.setText(userName);
    //et_user_name控件的setSelection()方法来设置光标位置
    et_user_name.setSelection(userName.length());
    }
    }
    }
    }
  4. RegisterActivity
    public class RegisterActivity extends AppCompatActivity {
    private TextView tv_main_title;//标题
    private TextView tv_back;//返回按钮
    private Button btn_register;//注册按钮
    //用户名,密码,再次输入的密码的控件
    private EditText et_user_name,et_psw,et_psw_again;
    //用户名,密码,再次输入的密码的控件的获取值
    private String userName,psw,pswAgain;
    //标题布局
    private RelativeLayout rl_title_bar;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //设置页面布局 ,注册界面
    setContentView(R.layout.activity_register);
    //设置此界面为竖屏
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    init();
    }
    private void init() {
    //从main_title_bar.xml 页面布局中获取对应的UI控件
    tv_main_title=findViewById(R.id.tv_main_title);
    tv_main_title.setText("注册");
    tv_back=findViewById(R.id.tv_back);
    //布局根元素
    rl_title_bar=findViewById(R.id.title_bar);
    rl_title_bar.setBackgroundColor(Color.TRANSPARENT);
    //从activity_register.xml 页面中获取对应的UI控件
    btn_register=findViewById(R.id.btn_register);
    et_user_name=findViewById(R.id.et_user_name);
    et_psw=findViewById(R.id.et_psw);
    et_psw_again=findViewById(R.id.et_psw_again);
    tv_back.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    //返回键
    RegisterActivity.this.finish();
    }
    });
    //注册按钮
    btn_register.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    //获取输入在相应控件中的字符串
    getEditString();
    //判断输入框内容
    if(TextUtils.isEmpty(userName)){
    Toast.makeText(RegisterActivity.this, "请输入用户名", Toast.LENGTH_SHORT).show();
    return;
    }else if(TextUtils.isEmpty(psw)){
    Toast.makeText(RegisterActivity.this, "请输入密码", Toast.LENGTH_SHORT).show();
    return;
    }else if(TextUtils.isEmpty(pswAgain)){
    Toast.makeText(RegisterActivity.this, "请再次输入密码", Toast.LENGTH_SHORT).show();
    return;
    }else if(!psw.equals(pswAgain)){
    Toast.makeText(RegisterActivity.this, "输入两次的密码不一样", Toast.LENGTH_SHORT).show();
    return;
    /**
    *从SharedPreferences中读取输入的用户名,判断SharedPreferences中是否有此用户名
    */
    }else if(isExistUserName(userName)){
    Toast.makeText(RegisterActivity.this, "此账户名已经存在", Toast.LENGTH_SHORT).show();
    return;
    }else{
    Toast.makeText(RegisterActivity.this, "注册成功", Toast.LENGTH_SHORT).show();
    //把账号、密码和账号标识保存到sp里面
    /**
    * 保存账号和密码到SharedPreferences中
    */
    saveRegisterInfo(userName, psw);
    //注册成功后把账号传递到LoginActivity.java中
    // 返回值到loginActivity显示
    Intent data = new Intent();
    data.putExtra("userName", userName);
    setResult(RESULT_OK, data);
    //RESULT_OK为Activity系统常量,状态码为-1,
    // 表示此页面下的内容操作成功将data返回到上一页面,如果是用back返回过去的则不存在用setResult传递data值
    RegisterActivity.this.finish();
    }
    }
    });
    }
    /**
    * 获取控件中的字符串
    */
    private void getEditString(){
    userName=et_user_name.getText().toString().trim();
    psw=et_psw.getText().toString().trim();
    pswAgain=et_psw_again.getText().toString().trim();
    }
    /**
    * 从SharedPreferences中读取输入的用户名,判断SharedPreferences中是否有此用户名
    */
    private boolean isExistUserName(String userName){
    boolean has_userName=false;
    //mode_private SharedPreferences sp = getSharedPreferences( );
    // "loginInfo", MODE_PRIVATE
    SharedPreferences sp=getSharedPreferences("loginInfo", MODE_PRIVATE);
    //获取密码
    String spPsw=sp.getString(userName, "");//传入用户名获取密码
    //如果密码不为空则确实保存过这个用户名
    if(!TextUtils.isEmpty(spPsw)) {
    has_userName=true;
    }
    return has_userName;
    }
    private void saveRegisterInfo(String userName,String psw){
    String md5Psw = MD5Utils.md5(psw);//把密码用MD5加密
    //loginInfo表示文件名, mode_private SharedPreferences sp = getSharedPreferences( );
    SharedPreferences sp=getSharedPreferences("loginInfo", MODE_PRIVATE);
    //获取编辑器,
    SharedPreferences.Editor editor -> sp.edit();
    SharedPreferences.Editor editor=sp.edit();
    //以用户名为key,密码为value保存在SharedPreferences中
    //key,value,如键值对,editor.putString(用户名,密码);
    editor.putString(userName, md5Psw);
    //提交修改 editor.commit();
    editor.commit();
    }
    }
  5. DatabaseHelper
    public class DatabaseHelper extends SQLiteOpenHelper {
    public DatabaseHelper(Context context){super(context,"Test.db",null,1);}
    //第一个参数是上下文,第二个参数是数据库名称,
    //第三个参数是CursorFactory对象,一般设置为null,第四个参数是数据库的版本
    public void onCreate(SQLiteDatabase db) {
    db.execSQL("CREATE TABLE information(_id INTEGER PRIMARY KEY AUTOINCREMENT,name VARCHAR(20),age INTEGER)");
    }
    //创建表 表名information 表结构 自增id,字符串姓名,int年龄
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    Log.d("myDeBug","数据库版本已更新");
    }
    //数据库版本发生变化时调用
    }
  6. DictActivity

public class DictActivity extends AppCompatActivity {

private Button insertButton, updateButton, searchButton, deleteButton;

private Button btn_xl1;

private EditText name, age;

private TextView show, showAge;

final DatabaseHelper dbHelper = new DatabaseHelper(DictActivity.this);

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_dict);

btn_xl1 = findViewById(R.id.btn_xl);

btn_xl1.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

//创建Intent 对象

Intent intent = new Intent(DictActivity.this, Classification.class);

//启动Activity

startActivity(intent);

}

});

insertButton = findViewById(R.id.btn_insert);

updateButton = findViewById(R.id.btn_update);

searchButton = findViewById(R.id.btn_search);

deleteButton = findViewById(R.id.btn_delete);

name = findViewById(R.id.name);

age = findViewById(R.id.age);

show = findViewById(R.id.tv_show);

showAge = findViewById(R.id.tv_showAge);

SQLiteDatabase db = dbHelper.getReadableDatabase();

myShow();

insertButton.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

SQLiteDatabase db = dbHelper.getWritableDatabase();

ContentValues values = new ContentValues();

values.put("name", name.getText().toString());

values.put("age", age.getText().toString());

long id = db.insert("information", null, values);

Log.d("myDeBug", "insert");

myShow();

db.close();

name.setText(null);

age.setText(null);

}

});

updateButton.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

SQLiteDatabase db = dbHelper.getWritableDatabase();

ContentValues values = new ContentValues();

values.put("age", age.getText().toString());

db.update("information", values, "name=?", new String[]{name.getText().toString()});

myShow();

db.close();

Log.d("myDebug", "update");

name.setText(null);

age.setText(null);

}

});

searchButton.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

SQLiteDatabase db = dbHelper.getWritableDatabase();

String name1 = name.getText().toString();

show.setText(null);

if (name1.equals("")) {

myShow();

db.close();

} else {

show.setText("项目名称");

showAge.setText("日期");

Cursor cursor = db.rawQuery("select * from information where name = ? ", new String[]{name1});

while (cursor.moveToNext()) {

String newName = cursor.getString(cursor.getColumnIndex("name"));

int newAge = cursor.getInt(cursor.getColumnIndex("age"));

// show.setText(show.getText() + "\n" + newName + "\t" + newAge);

show.setText(show.getText() + "\n" + newName);

showAge.setText(showAge.getText() + "\n" + newAge);

}

cursor.close();

db.close();

name.setText(null);

age.setText(null);

}

}

});

deleteButton.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

SQLiteDatabase db = dbHelper.getWritableDatabase();

db.delete("information", "name=?", new String[]{name.getText().toString()});

myShow();

db.close();

Log.d("myDeBug", "DeleteSuccess");

name.setText(null);

age.setText(null);

}

});

}

public void myShow() {

SQLiteDatabase db = dbHelper.getReadableDatabase();

show.setText("项目名称");

showAge.setText("日期");

Cursor cursor = db.rawQuery("select * from information", null);

while (cursor.moveToNext()) {

String newName = cursor.getString(cursor.getColumnIndex("name"));

int newAge = cursor.getInt(cursor.getColumnIndex("age"));

show.setText(show.getText() + "\n" + newName);

showAge.setText(showAge.getText() + "\n" + newAge);

}

cursor.close();

}

}

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

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

相关文章

YoloV7目标检测(Pytorch版)【详解】

文章目录一、网络结构1、总体网络结构(backbone)2、主干网络介绍(backbone)2.1 多分支模块堆叠2.2 下采样网络结构2.3 整个backbone代码3、FPN特征金字塔二、预测结果的解码一、网络结构 1、总体网络结构(backbone&am…

【组件开发实践】云巧流程组件对接实践

1. 用户需求 假设A系统有如下员工请假审批流场景: 员工请假小于等于3天,只需主管直接审批;大于3天需要主管先审批,审批通过后再由二级主管进行审批。当员工请假审批流节后后,需要通知A系统进行业务处理(例…

Tomcat的IO模型

Tomcat支持一下几种IO模型: 支持的IO模型 特点 BIO 同步阻塞式IO,每一个请求都会创建一个线程,对性能开销大,不适合高并发场景。 NIO 同步非阻塞式IO,基于多路复用Selector监测连接状态通知线程处理,…

<C++>多态

文章目录1. 概念2. 多态的定义和实现2.1 多态的构成条件2.2 虚函数2.3 虚函数的重写2.4 虚函数重写的两个例外:2.5 C11 override和final2.6 重载、覆盖(重写)、隐藏(重定义)的对比3. 抽象类3.1 概念3.2 接口继承和实现继承3. 多态的原理3.1 虚函数表3.2 多态的原理3…

S2SH小区物业管理系统计算机专业毕业论文java毕业设计网站

💖💖更多项目资源,最下方联系我们✨✨✨✨✨✨ 目录 Java项目介绍 资料获取 Java项目介绍 《S2SH小区物业管理系统》该项目采用技术:jsp struts2springhibernatecssjs等相关技术,项目含有源码、文档、配套开发软件…

java EE初阶 — wait 和 notify

文章目录1.wait 和 notify1.1 wait()方法1.2 notify()方法1.3 notifyAll()方法1.wait 和 notify 线程最大的问题是抢占式指向,随机调度。而写代码的时候,确定的东西会比较好。 于是就有程序猿发明了一些办法,来控制线程之间的执行顺序。 虽…

火山引擎 RTC 助力抖音百万并发“云侃球”

动手点关注干货不迷路1. 背景及技术挑战从电视看直播到手机电脑看直播,直播技术的发展让观众可以随时、随地观看自己喜欢的比赛,并且在看比赛时通过发送表情、发文字进行互动。但表情、文字承载的信息量较小、沟通效率低,我们无法像线下一起看…

一大波节日来袭,App Store节日营销请注意!

11 月已经过去,在过去的 11 月里,我们经历了万圣节、双 11、世界杯、感恩节、黑色星期五等非常重要的营销节点。 在新的 12 月,我们将迎来世界杯闭幕、双12、平安夜、圣诞节等重要营销机遇。在未来,我们还会迎来新春营销的重要机…

图形API学习工程(29):解决在shader文件中使用include的问题

工程GIT地址:https://gitee.com/yaksue/yaksue-graphics 无用的前言 看了下提交记录,这个工程上次更新已经是一年以前了。最近想想,还是应该回来再继续学学,暂且不论是否对工作有帮助,我在这个工程上获得的愉悦感相比…

Excel 是您最容易被忽视的设计工具 设计师对世界排名第一的电子表格工具的看法——如何构建信息图表、仪表板、演示文稿等

人们对 Excel 有很多误解。许多人认为它不过是处理临时预算的电子表格工具。或者它非常适合处理数据,但您需要像 PowerPoint 这样的单独工具才能很好地显示它。 这些误解限制了我们使用 Excel 的方式。 但 Excel 的功能远不止于此,它所需要的只是了解一些鲜为人知的功能。我…

JAVA SCRIPT设计模式--创建型设计模式之工厂方法(3)

JAVA SCRIPT设计模式是本人根据GOF的设计模式写的博客记录。使用JAVA SCRIPT语言来实现主体功能,所以不可能像C,JAVA等面向对象语言一样严谨,大部分程序都附上了JAVA SCRIPT代码,代码只是实现了设计模式的主体功能,不代…

机器学习笔记之配分函数(三)对比散度

机器学习笔记之配分函数——对比散度引言回顾:随机最大似然求解模型参数的过程随机最大似然的缺陷吉布斯采样的缺陷与对比散度思想对比散度名称的由来从KL\mathcal K\mathcal LKL散度的角度描述极大似然估计对比散度的本质引言 上一节介绍了随机最大似然(Stochasti…

第十四届蓝桥杯集训——JavaC组第四篇——ASCII码表与Scanner扫描器

第十四届蓝桥杯集训——JavaC组第四篇——ASCII码表与Scanner扫描器 目录 第十四届蓝桥杯集训——JavaC组第四篇——ASCII码表与Scanner扫描器 ASCII码表 Scanner扫描器 1、Scanner含义 2、使用方法: next和nextLine的区别 next: nextLine&#…

微服务框架 SpringCloud微服务架构 23 搜索结果处理 23.2 分页

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构23 搜索结果处理23.2 分页23.2.1 分页23.2.2 深度分页问题23.2.3 深度分页…

Zookeeper常用命令大全之四字监控命令

文章目录四字监控命令0. 官方文档1. conf命令2. cons命令3. crst命令4. dump命令5. envi命令6. ruok命令7. stat命令8. srst命令9. wchs命令10. wchc命令(一般不用)11. wchp命令(一般不用)12. mntr命令四字监控命令 zookeeper支持某些特定的四字命令与其的交互。它们大多是查询…

自媒体短视频,如何起一个让人一看就记住的昵称?看一眼就知道你的定位

上一篇我们说了头像如何设置更吸引人,今天上午在我赢且力手小禾呈序里聊了一个好听好记的昵称应该是怎样的? 这是文字版,大家可以看一看。 昵称起名的方式无非几种: 职业加昵称,昵称加地点,昵称加领域&a…

全球数据集大全之mavenanalytics学习分析世界杯数据集

mavenanalytics数据集平台介绍 探索和下载由 Maven 讲师精心挑选的示例数据集。练习将您的数据分析和可视化技能应用于现实世界的数据,从航班延误和电影收视率到鲨鱼袭击和不明飞行物目击事件。 平台效果 是否支持下载 可以免费下载 https://www.mavenanalytics.io/data-p…

Java基于jsp大学生收支管理系统

随着计算机技术的飞速发展,计算机在系统管理中的应用越来越普及,利用计算机实现各个系统的管理显得越来越重要。随着人们消费水平的提高,消费量一直在加大 ,可是如何能够合理的管理和记录自己的消费方向是一个很大的问题&#xff…

深度学习炼丹-不平衡样本的处理

前言一,数据层面处理方法 1.1,数据扩充1.2,数据(重)采样 数据采样方法总结 1.3,类别平衡采样 二,算法(损失函数)层面处理方法 2.1,Focal Loss2.2,…

Akka 学习(三)Actor的基本使用

目录一 基本案例1.1 Java 版1.2 Scala版二 Actor的创建2.1 ActorRef2.2 Props2.3 ActorSelection三 Promise、Future和事件驱动的编程模型3.1 阻塞与事件驱动3.2 Future进行Actor响应3.2.1 Java版3.2.2 Scala 版3.2.3 总结3.3 成功处理3.4 失败处理3.5 恢复3.6 链式调用3.7 结果…