移动应用开发大作业报告

1 基本信息

1.1 系统名称

中华字典

1.2 开发运行环境

开发环境:Windows 10 专业版,JDK 1.8,AndroidStudio

运行环境:Java SE Runtime Environment (JRE) 8

1.3 使用的核心技术

JFrame:作为实现界面的窗体类,用于创建图形用户界面。

Random:用来产生随机数,为系统提供随机性支持。

Swing:用于构建丰富的图形用户界面组件。

JDBC:Java Database Connectivity,用于Java程序与数据库之间的连接。

SQL:结构化查询语言,用于管理和查询数据库。

2 系统功能设计

2.1 系统总体功能

中华字典是一款基于Java开发的字典查询系统。该系统旨在为用户提供便捷、准确的汉字、词语查询服务,支持拼音查询、部首查询等多种查询方式。同时,系统还提供了详细的词语解释、例句、同义词、反义词等扩展信息,帮助用户更深入地理解词语的含义和用法。

2.2 系统模块详细设计

2.2.1 拼音查询功能模块

用户通过输入拼音来查询对应的汉字或词语。系统根据输入的拼音在数据库中检索,并返回相关结果。结果页面将展示匹配的汉字或词语列表,并提供详细的解释、例句、同义词、反义词等信息。

2.2.2 部首查询模块功能模块

用户通过选择部首来查询含有该部首的汉字。系统根据选择的部首在数据库中检索,并返回相关结果。用户可进一步筛选查询结果,以便快速定位到所需汉字。

2.2.3 成语查询功能模块

用户通过输入成语或成语的关键词来查询相关的成语信息。系统根据输入的关键词在数据库中检索,并返回相关成语列表。用户可查看成语的解释、出处、用法示例等信息。

2.2.4 成语接龙小游戏功能模块

用户可参与成语接龙小游戏,通过输入成语的最后一个字来寻找下一个成语的开头字,以完成接龙。

3 系统实现

3.1 拼音查询功能实现

3.1.1 功能描述

用户输入拼音后,系统通过调用后端接口进行数据库查询,并将查询结果返回给前端页面进行展示。前端页面提供输入框供用户输入拼音,同时展示查询结果列表和相关解释信息。

3.1.2 核心代码

package com.example.dict;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import android.text.TextUtils;import android.view.View;import android.widget.ExpandableListView;import com.example.dict.adapter.SearchLeftAdapter;import com.example.dict.bean.PinBuBean;import com.example.dict.bean.PinBuWordBean;import com.example.dict.db.DBManager;import com.example.dict.utils.AssetsUtils;import com.example.dict.utils.CommonUtils;import com.example.dict.utils.URLUtils;import com.google.gson.Gson;import com.handmark.pulltorefresh.library.PullToRefreshGridView;import java.util.ArrayList;import java.util.List;public class SearchPinyinActivity extends BaseSearchActivity {String url;   //获取指定拼音对应的网址@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//加载文件数据initData(CommonUtils.FILE_PINYIN,CommonUtils.TYPE_PINYIN);setExLvListener(CommonUtils.TYPE_PINYIN);exLv.expandGroup(0);   //默认展开第一组word = "a";     //默认进去时获取的是第一个 aurl = URLUtils.getPinyinurl(word,page,pagesize);// 加载网络数据loadData(url);setGVListener(CommonUtils.TYPE_PINYIN);}/*** 网络获取失败时会调用的接口* 因为拼音查询和部首查询使用的获取数据的方法不一样,所以需要分开写。* 所以就把onError的方法写入到子类当中* */@Overridepublic void onError(Throwable ex, boolean isOnCallback) {List<PinBuWordBean.ResultBean.ListBean> list = DBManager.queryPyWordFromPywordtb(word, page, pagesize);refreshDataByGV(list);}}

3.1.3 运行截图

3.2 部首查询模块功能实现

3.2.1 功能描述

用户通过选择部首来查询含有该部首的汉字。系统根据选择的部首在数据库中检索,并返回相关结果。用户可进一步筛选查询结果,以便快速定位到所需汉字。

3.2.2 核心代码

package com.example.dict;import android.os.Bundle;import com.example.dict.bean.PinBuWordBean;import com.example.dict.db.DBManager;import com.example.dict.utils.CommonUtils;import com.example.dict.utils.URLUtils;import java.util.List;public class SearchBuShouActivity extends BaseSearchActivity {String url;   //获取指定部首对应的网址@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 页面跳转,Title也要一起改变titleTv.setText(R.string.main_tv_bushou);//加载文件数据initData(CommonUtils.FILE_BUSHOU,CommonUtils.TYPE_BUSHOU);//开启部首的监听事件setExLvListener(CommonUtils.TYPE_BUSHOU);exLv.expandGroup(0);   //默认展开第一组word = "丨";     //默认进去时获取的是第一个url = URLUtils.getBushouurl(word,page,pagesize);// 加载网络数据loadData(url);setGVListener(CommonUtils.TYPE_BUSHOU);}@Overridepublic void onError(Throwable ex, boolean isOnCallback) {List<PinBuWordBean.ResultBean.ListBean> list = DBManager.queryBsWordFromPywordtb(word, page, pagesize);refreshDataByGV(list);}}

3.2.3 运行截图

3.3 成语查询模块功能实现

3.3.1 功能描述

3.3.2 核心代码

package com.example.dict;import android.content.Intent;import android.os.Bundle;import android.text.TextUtils;import android.view.View;import android.widget.ArrayAdapter;import android.widget.ImageView;import android.widget.TextView;import android.widget.Toast;import com.example.dict.bean.ChengyuBean;import com.example.dict.db.DBManager;import com.example.dict.utils.MyGridView;import com.example.dict.utils.URLUtils;import com.google.gson.Gson;import java.util.ArrayList;import java.util.List;public class ChengyuInfoActivity extends BaseActivity {// 页面中的是个textViewTextView ziTv1,ziTv2,ziTv3,ziTv4,pyTv,jsTv,fromTv,exampleTv,yufaTv,yinzhengTv,yinghangTv;MyGridView tyGv,fyGv;ImageView collectIv;private String chengyu;List<String> tongyiList,fanyinList;    //GridView的数据源ArrayAdapter<String> tyAdapter,fyAdapter;//    设置标志位,表示汉字是否被收藏boolean isCollect = false;boolean isExist = false;    //判断这个汉字是否已经存在@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_chengyu_info);initView();initAdapter();//        获取上一个页面传递的数据Intent intent = getIntent();chengyu = intent.getStringExtra("chengyu");String url = URLUtils.getChengyuurl(chengyu);loadData(url);isExist = DBManager.isExistCyuInCollcyutb(chengyu);isCollect = isExist;setCollectIvStyle();}/* 根据收藏的状态,改变星星的颜色*/private void setCollectIvStyle() {if (isCollect) {collectIv.setImageResource(R.mipmap.ic_collection_fs);}else{collectIv.setImageResource(R.mipmap.ic_collection);}}/***  为GridView设置加载数据的适配器和数据源*/private void initAdapter() {tongyiList = new ArrayList<>();fanyinList = new ArrayList<>();tyAdapter = new ArrayAdapter<>(this, R.layout.item_word_jslv, R.id.item_wordlv_tv, tongyiList);fyAdapter = new ArrayAdapter<>(this, R.layout.item_word_jslv, R.id.item_wordlv_tv, fanyinList);tyGv.setAdapter(tyAdapter);fyGv.setAdapter(fyAdapter);}/** 网络数据加载成功时回调用的方法*/@Overridepublic void onSuccess(String result) {// 使用Gson反序列化映射成为javaBeanChengyuBean bean = new Gson().fromJson(result, ChengyuBean.class);ChengyuBean.ResultBean cyBean = bean.getResult();if (cyBean!=null) {//        因数据源当中不包括成语本身,但是后期要插入数据库,所以需要保存这个成语cyBean.setChengyu(chengyu);// 插入到数据库当中DBManager.insertCyToCyutb(cyBean);// 显示数据showDataToView(cyBean);}else{Toast.makeText(this,"此成语无法查到,请重新查询!",Toast.LENGTH_SHORT).show();}}/* 网络加载数据失败时,会调用的方法*/@Overridepublic void onError(Throwable ex, boolean isOnCallback) {//        获取数据库当中缓存的数据ChengyuBean.ResultBean bean = DBManager.queryCyFromCyutb(chengyu);if (bean!=null) {showDataToView(bean);}}/*** 将获取到的数据显示在View上* */private void showDataToView(ChengyuBean.ResultBean cyBean) {String chengyu = cyBean.getChengyu();ziTv1.setText(String.valueOf(chengyu.charAt(0)));ziTv2.setText(String.valueOf(chengyu.charAt(1)));ziTv3.setText(String.valueOf(chengyu.charAt(2)));ziTv4.setText(String.valueOf(chengyu.charAt(3)));pyTv.setText("拼音 : "+cyBean.getPinyin());jsTv.setText(cyBean.getChengyujs());fromTv.setText(cyBean.getFrom_());exampleTv.setText(cyBean.getExample());yufaTv.setText(cyBean.getYufa());yinzhengTv.setText(cyBean.getYinzhengjs());String ciyujs = cyBean.getCiyujs();if (!TextUtils.isEmpty(ciyujs)) {ciyujs = ciyujs.replace("]", "\n").replace("[", "").replace(":", "");yinghangTv.setText(ciyujs);}List<String> tList = cyBean.getTongyi();//        判断是否有同义词if (tList!=null&&tList.size()!=0) {tongyiList.addAll(tList);tyAdapter.notifyDataSetChanged();}List<String> fList = cyBean.getFanyi();if (fList!=null&&fList.size()!=0) {fanyinList.addAll(fList);fyAdapter.notifyDataSetChanged();}}/*** 查找控件的方法* */private void initView() {ziTv1 = findViewById(R.id.cyinfo_tv_zi1);ziTv2 = findViewById(R.id.cyinfo_tv_zi2);ziTv3 = findViewById(R.id.cyinfo_tv_zi3);ziTv4 = findViewById(R.id.cyinfo_tv_zi4);pyTv = findViewById(R.id.cyinfo_tv_py);jsTv = findViewById(R.id.cyinfo_tv_js);fromTv = findViewById(R.id.cyinfo_tv_from);exampleTv = findViewById(R.id.cyinfo_tv_example);yufaTv = findViewById(R.id.cyinfo_tv_yufa);yinzhengTv = findViewById(R.id.cyinfo_tv_yinzheng);yinghangTv = findViewById(R.id.cyinfo_tv_yinghan);tyGv = findViewById(R.id.cyinfo_gv_tongyi);fyGv = findViewById(R.id.cyinfo_gv_fanyi);collectIv = findViewById(R.id.cyinfo_iv_collection);}public void onClick(View view) {switch (view.getId()) {case R.id.cyinfo_iv_back:finish();break;case R.id.cyinfo_iv_collection:isCollect = !isCollect;setCollectIvStyle();break;}}protected void onDestroy() {super.onDestroy();if (isExist&&!isCollect) {DBManager.deleteCyuToCollcyutb(chengyu);}if (!isExist&&isCollect) {DBManager.insertCyuToCollcyutb(chengyu);}}}

3.3.3 运行截图

3.4 成语接龙小游戏功能实现

3.4.1 功能描述

用户可参与成语接龙小游戏,通过输入成语的最后一个字来寻找下一个成语的开头字,以完成接龙。

3.4.2 核心代码

package com.example.dict;import androidx.annotation.Nullable;import androidx.appcompat.app.AlertDialog;import androidx.appcompat.app.AppCompatActivity;import android.content.DialogInterface;import android.content.Intent;import android.os.Bundle;import android.os.CountDownTimer;import android.util.Log;import android.view.Gravity;import android.view.LayoutInflater;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.TextView;import android.widget.Toast;import com.example.dict.BaseActivity;import com.google.gson.Gson;import com.example.dict.bean.ChengYuJieLongBean;import com.example.dict.bean.ChengyuBean;import com.example.dict.bean.WordBean;import com.example.dict.db.DBManager;import com.example.dict.filter.LimitInputTextWatcher;import com.example.dict.utils.URLUtils;public class ChengYuJieLongActivity  extends BaseActivity {EditText chengyu_et;Button sure;TextView word1,word2,word3,word4,word5,word6,word7,word8,timeout,level;ImageView back;LinearLayout chengjiebg;char myChar[],newChar[];String str,chengyu="";int i=1;Intent intent;CountDownTimer timer;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_cheng_yu_jie_long);inital();chengyu_et.addTextChangedListener(new LimitInputTextWatcher(chengyu_et));intent = getIntent();i = intent.getIntExtra("level",1);chengyu=intent.getStringExtra("accchengyu");if(chengyu!=""){String url = URLUtils.getChengyujielongurl(chengyu);loadData(url);}chengjiebg.setBackgroundResource(getResources().getIdentifier("gufeng"+i, "drawable", getApplicationInfo().packageName));level.setText("关卡:"+i);String url = URLUtils.getChengyujielongurl(str);loadData(url);//        设置倒计时timer = new CountDownTimer(300000, 1000) {public void onTick(long millisUntilFinished) {timeout.setText(String.valueOf(millisUntilFinished / 1000));}public void onFinish() {showEndingNormalDialog();}};//调用 CountDownTimer 对象的 start() 方法开始倒计时,也不涉及到线程处理timer.start();}public void inital(){chengyu_et=findViewById(R.id.chengyu_et);sure=findViewById(R.id.sure);back=findViewById(R.id.chengyujielong_iv_back);word1=findViewById(R.id.word_1);word2=findViewById(R.id.word_2);word3=findViewById(R.id.word_3);word4=findViewById(R.id.word_4);word5=findViewById(R.id.word_5);word6=findViewById(R.id.word_6);word7=findViewById(R.id.word_7);word8=findViewById(R.id.word_8);timeout=findViewById(R.id.timeout);level=findViewById(R.id.level);chengjiebg=findViewById(R.id.chengjiebg);}public void onClick(View view) {switch (view.getId()){case R.id.chengyujielong_iv_back:Intent intent3 = new Intent(ChengYuJieLongActivity.this, MainActivity.class);startActivity(intent3);break;case R.id.sure:str=chengyu_et.getText().toString();if(str.length()!=4){//                    Toast.makeText(getApplicationContext(), "您需要输入四个汉字",//                            Toast.LENGTH_SHORT).show();Toast toast=new Toast(ChengYuJieLongActivity.this);//创建一个填充物,用于填充ToastLayoutInflater inflater = LayoutInflater.from(ChengYuJieLongActivity.this);//填充物来自的xml文件,在这个改成一个view//实现xml到view的转变哦View view2 =inflater.inflate(R.layout.toast,null);//不一定需要,找到xml里面的组件,设置组件里面的具体内容ImageView imageView1=view2.findViewById(R.id.iv_toast);TextView textView1=view2.findViewById(R.id.tv_toast);imageView1.setImageResource(R.drawable.input);textView1.setText("您需要输入四个汉字");//把填充物放进toasttoast.setView(view2);toast.setDuration(Toast.LENGTH_SHORT);//                    toast位置居中toast.setGravity(Gravity.CENTER,0,0);//展示toasttoast.show();}else {myChar = str.toCharArray();word5.setText(Character.toString(myChar[0]));word6.setText(Character.toString(myChar[1]));word7.setText(Character.toString(myChar[2]));word8.setText(Character.toString(myChar[3]));Intent intent = new Intent(ChengYuJieLongActivity.this, IsChengYuActivity.class);intent.putExtra("chengyu", str);startActivityForResult(intent, 3);break;}}}/* 网络数据加载成功时回调用的方法*/public void onSuccess(String json) {ChengYuJieLongBean cyjlBean = new Gson().fromJson(json, ChengYuJieLongBean.class);ChengYuJieLongBean.ResultBean resultBean = cyjlBean.getResult();String mychengyu=resultBean.getData().get(0);newChar = mychengyu.toCharArray();word1.setText(Character.toString(newChar[0]));word2.setText(Character.toString(newChar[1]));word3.setText(Character.toString(newChar[2]));word4.setText(Character.toString(newChar[3]));}@Overrideprotected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {super.onActivityResult(requestCode, resultCode, data);if (requestCode == 3 && resultCode == RESULT_OK) {String chengyuvalue = data.getStringExtra("chengyu");if (chengyuvalue.equals("否")) {Toast.makeText(getApplicationContext(), "您输入的不是成语!",Toast.LENGTH_SHORT).show();} else {if(Character.toString(myChar[0]).equals(word4.getText()) && chengyuvalue.equals("是")){//                    String url = URLUtils.getChengyujielongurl(str);//                    loadData(url);//                    Toast.makeText(getApplicationContext(), "您回答正确!",  Toast.LENGTH_SHORT).show();word5.setBackground(getResources().getDrawable(R.drawable.tianzige));word6.setBackground(getResources().getDrawable(R.drawable.tianzige));word7.setBackground(getResources().getDrawable(R.drawable.tianzige));word8.setBackground(getResources().getDrawable(R.drawable.tianzige));showNormalDialog();}else {if (Integer.parseInt(timeout.getText().toString()) > 150) {//                    Toast.makeText(getApplicationContext(), "您输入的成语不正确哦!还有时间哦加油加油",Toast.LENGTH_SHORT).show();Toast toast = new Toast(getApplicationContext());LayoutInflater inflater = LayoutInflater.from(ChengYuJieLongActivity.this);View view2 = inflater.inflate(R.layout.toast, null);ImageView imageView1 = view2.findViewById(R.id.iv_toast);TextView textView1 = view2.findViewById(R.id.tv_toast);imageView1.setImageResource(R.drawable.fighting);textView1.setText("您输入的成语不正确哦!还有时间哦加油加油!");toast.setView(view2);toast.setDuration(Toast.LENGTH_SHORT);toast.setGravity(Gravity.CENTER, 0, 0);toast.show();} else{//                    Toast.makeText(getApplicationContext(), "您输入的成语不正确哦!",Toast.LENGTH_SHORT).show();Toast toast = new Toast(ChengYuJieLongActivity.this);LayoutInflater inflater = LayoutInflater.from(ChengYuJieLongActivity.this);View view2 = inflater.inflate(R.layout.toast, null);ImageView imageView1 = view2.findViewById(R.id.iv_toast);TextView textView1 = view2.findViewById(R.id.tv_toast);imageView1.setImageResource(R.drawable.wrong);textView1.setText("您输入的成语不正确哦");toast.setView(view2);toast.setDuration(Toast.LENGTH_SHORT);toast.setGravity(Gravity.CENTER, 0, 0);toast.show();}}}}}private void showNormalDialog(){/* @setIcon 设置对话框图标* @setTitle 设置对话框标题* @setMessage 设置对话框消息提示* setXXX方法返回Dialog对象,因此可以链式设置属性*/timer.cancel();final AlertDialog.Builder normalDialog =new AlertDialog.Builder(ChengYuJieLongActivity.this);normalDialog.setIcon(R.drawable.like);normalDialog.setTitle("恭喜您通过本关");String s=String.valueOf(300-Integer.parseInt(timeout.getText().toString()));normalDialog.setMessage("仅用了"+s+"秒");normalDialog.setPositiveButton("下一关",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Intent intent = new Intent(ChengYuJieLongActivity.this, ChengYuJieLongActivity.class);i++;intent.putExtra("level", i);intent.putExtra("accchengyu", str);startActivity(intent);}});normalDialog.setNegativeButton("退出游戏",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Intent intent = newprivate void showEndingNormalDialog(){final AlertDialog.Builder normalDialog =new AlertDialog.Builder(ChengYuJieLongActivity.this);normalDialog.setIcon(R.drawable.heartbroken);normalDialog.setTitle("游戏结束啦,恭喜您通关到第"+i+"关");normalDialog.setPositiveButton("重玩",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Intent intent = new Intent(ChengYuJieLongActivity.this, ChengYuJieLongActivity.class);startActivity(intent);}});normalDialog.setNegativeButton("退出游戏",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Intent intent = new Intent(ChengYuJieLongActivity.this, MainActivity.class);startActivity(intent);}});// 显示normalDialog.show();}}

3.4.3 运行截图

4 总结体会

在开发中华字典系统的过程中,我深刻体会到了Java编程的魅力和挑战性。通过设计并实现拼音查询、部首查询、成语查询等多个功能模块,我不仅提升了自己的编程能力,还加深了对数据库操作、前后端交互等技术的理解。同时,成语接龙小游戏的加入为系统增加了趣味性,也提升了用户的参与度和满意度。整个开发过程虽然充满了挑战,但收获颇丰,让我更加坚定了继续深入学习Java编程的决心。

5 附录

 

源码文件清单

Java代码、Layout布局

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

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

相关文章

【数据结构与算法】最小生成树

文章目录 最小生成树&#xff08;MST&#xff09;定义 构造最小生成树Prim算法Kruskal算法 最小生成树&#xff08;MST&#xff09; 连通图的生成树包含图的所有顶点&#xff0c;并且只含有尽可能少的边。对于生成树来说&#xff0c;若砍去它的一条边&#xff0c;则会使生成树…

练习时长 1 年 2 个月的 Java 菜鸡练习生最近面经,期望25K

面经哥只做互联网社招面试经历分享&#xff0c;关注我&#xff0c;每日推送精选面经&#xff0c;面试前&#xff0c;先找面经哥 自我介绍&#xff1a;本人是练习时长 1 年 2 个月的 Java 后端菜鸡练习生。下面是我最近面试的面经&#xff1a; 百度 一面 约1h时间&#xff1a;2…

MySQL常见面试题自测

文章目录 MySQL基础架构一、说说 MySQL 的架构&#xff1f;二、一条 SQL语句在MySQL中的执行过程 MySQL存储引擎一、MySQL 提供了哪些存储引擎&#xff1f;二、MySQL 存储引擎架构了解吗&#xff1f;三、MyISAM 和 InnoDB 的区别&#xff1f; MySQL 事务一、何谓事务&#xff1…

Python类的优势及应用场景深度分析(代码封装与组织、继承与代码复用、多态与接口、状态管理与行为封装)(python class)

文章目录 Python 类的优势及应用场景深度分析1. 代码封装与组织1.1 封装性示例代码&#xff1a;用户账户管理 1.2 组织性 2. 继承与代码复用2.1 继承性示例代码&#xff1a;员工管理系统 3. 多态与接口3.1 多态性示例代码&#xff1a;图形渲染 4. 状态管理与行为的封装4.1 状态…

黄仁勋加州理工毕业典礼演讲:人工智能是我们这个时代最重要的技术

英伟达公司首席执行官黄仁勋周五&#xff08;6月14日&#xff09;在加州理工学院&#xff08;Caltech&#xff09;毕业典礼上发表演讲&#xff0c;鼓励毕业生在逆境中努力&#xff0c;不断寻求新的机遇。 黄说&#xff0c;加州理工学院因其毕业生受人尊敬而闻名&#xff0c;如…

【耐水好】强耐水UV胶水主要重视什么?

【耐水好】强耐水UV胶水主要重视什么&#xff1f; 应用性方面&#xff1a; 强耐水UV胶水主要重视以下几个方面&#xff1a; 耐水性&#xff1a;强耐水UV胶水经过精心调配和改良&#xff0c;以提供出色的耐水性能。这种胶水能够形成防水层&#xff0c;有效防止水分渗入并保护被…

ISCC2024 WriteUpReverse 迷失之门

Reverse 迷失之门 迷失之门 writeup解题思路 打开题目是一个压缩包解压后是一个.exe程序 按照做题顺序第一步查壳发现并没有壳将其拖入ida中进行查看 使用shiftF12进行字符串查看 发现flag字符了我们双击它 将光标移动到yes哪里右击空白地方打开交叉索引并按F5进行反汇编发现…

6月18日(周二)A股行总结:A股震荡收涨,车路云概念全日强势,10年、30年国债期货齐创新高

车路云概念股发力上涨&#xff0c;中海达、华铭智能等多股20CM涨停。半导体板块走强&#xff0c;中芯国际港股上涨近&#xff13;% 。白酒板块下跌&#xff0c;贵州茅台跌1.3% 。30年期及10年期国债期货主力合约均创上市以来新高。 周二&#xff0c;A股全日窄幅震荡 沪指收涨0…

IEEE 期刊、会议论文模板下载网站(TNNLS)

这是网址&#xff1a;IEEE-Template Selector. 1 现在TNNLS匿名 需要专用模板&#xff0c;如果不用会退回 2 选会刊&#xff08;trans&#xff09;&#xff0c;期刊&#xff08;journal&#xff09;&#xff0c;快报&#xff08;letters&#xff09;会议&#xff08;conferenc…

封装分发安装教程

【安装环境】 Linux伪静态 PHP7.1mysql5.6 SSL 证书 &#xff08;使用宝塔&#xff09; 1、在宝塔上面新建站点&#xff0c;把压缩包上传到根目录&#xff0c;解压出来&#xff0c;然后导入 sql 数据库文件&#xff0c;再 然后修改数据库配置 source\system\db_config.php 2、…

一图看懂华为云CodeArts API 7大特性,带你玩转一站式API

华为云CodeArts API是API全生命周期一体化协作平台 &#xff0c;支持开发者高效实现API设计、API开发、API测试、API托管、API运维、API变现的一站式体验。以API契约为锚点&#xff0c;CodeArts API保证了API各阶段数据高度一致&#xff0c;为开发者提供友好易用的API全流程端到…

基于Matlab的细胞计数图像处理系统(GUI界面有报告) 【含Matlab源码 MX_003期】

简介&#xff1a; 本文旨在解决生物血细胞数目统计的挑战&#xff0c;提出了基于图像处理的综合方案。通过MATLAB平台&#xff0c;我们设计并实现了一套完整的细胞图像处理与分析流程。在预处理阶段&#xff0c;采用图像增强和阈值分割等方法&#xff0c;有效地提高了细胞图像的…

SQL学习,大厂面试真题(1):观看各个视频的平均完播率

各个视频的平均完播率 1、视频信息表 IDAuthorNameCategoryAgeStart Time1张三影视302024-01-01 7:00:002李四美食602024-01-01 7:00:003王麻子旅游902024-01-01 7:00:00 &#xff08;video_id-视频ID, AuthorName-创作者, tag-类别标签, duration-视频时长&#xff08;秒&…

六、在Qt下通过PCL在VTK9.3.0下显示自己的pcd点云文件

前几天刚整理好VTK8.2.0&#xff0c;发现我们的项目使用的PCL自带的VTK是9.3.0的&#xff0c;脸黑了快 VTK8.2.0可参考该篇博文&#xff1a;五、在Qt下加载QVTKWidget控件&#xff08;VTK8.2.0&#xff09;&#xff0c;生成Visual Studio项目&#xff0c;显示点云&#xff08;C…

玩转nRF52840-DK开发套件 (5) RTT打印调试日志

一、两种日志信息的输出方式 日志信息输出可以方便调试者观察程序运行状态&#xff0c;通常用串口 printf 来输出日志。nRF52840-DK也可以用仿真器 JLink 的 RTT Viewer 输出方式。 二、SDK_config.h配置 勾选相关项&#xff1a; 三、SDK_config.h配置 在主函数 main 中&#x…

Ubuntu,Centos,Linux服务器安装Mellanox MCX653105A IB网卡HCA卡驱动

Mellanox 官方驱动下载地址 https://network.nvidia.com/products/infiniband-drivers/linux/mlnx_ofed/ 选择对应操作系统 官方链接速度比较慢&#xff0c;推荐个友商的下载地址 https://support.xfusion.com/support/#/zh/rack-servers/2288h-v5-pid-21872244/software …

R语言数据分析案例31-运用差分整合移动平均自回归模型对世界主要国家(俄罗斯)的污染物排放量进行研究预测

一、研究背景与意义 空气污染导致的环境恶化已经成为世界各国许多国家和地区发展受限的重要原因。空气污染物是由气态物质、挥发性物质、半挥发性物质和颗粒物质的混合物造成的&#xff0c;其中典型 的空气污染物就是人们生活中经常使用到的高频词汇雾霾。本文主要对其中的污染…

AI发展面临的问题? —— AI对创造的重新定义

一、AI的问题描述 AI与数据安全问题&#xff1a;随着AI技术的发展和应用&#xff0c;数据安全问题日益突出。AI模型训练依赖于大量数据&#xff0c;而这些数据中可能包含个人隐私、商业秘密等敏感信息。如果数据在采集、存储、使用过程中处理不当&#xff0c;可能导致数据泄露或…

Vue3 状态管理 - Pinia,超详细讲解!

前言&#xff1a; 哈喽&#xff0c;大家好&#xff0c;我是前端菜鸟的自我修养&#xff01;今天给大家分享【Vue3 状态管理 - Pinia】&#xff0c;超详细讲解&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;原创不易&#xff0c;如果能帮助到带大…

Spring Security——添加验证码

目录 项目总结 新建一个SpringBoot项目 VerifyCode&#xff08;生成验证码的工具类&#xff09; WebSecurityController控制器 VerifyCodeFilter&#xff08;自定义过滤器&#xff09; WebSecurityConfig配置类 login.html登录页面 项目测试 本项目是以上一篇文章的项目…