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

GDPU Android移动应用 重点习题集

目录

程序填空

ppt摘选

题目摘选


“就这两页ppt,你还背不了吗”

“。。。”

打开ppt后

“Sorry咯,还真背不了😜”

程序填空

网上摘选的大题也挺合适的,太难的帮大家过滤掉了,大家可以看一下。 

✨SharedPreferences读写

//获取一个Sharedpreferences对象 并获取Editor对象
val editor = getSharedPreferences ("data", Context.MODE_PRIVATE). edit()
//添加数据,注意put后要加数据类型
editor. putString ("name", "Tom")
editor. putInt ("age", 28)
editor. putBoolean ("married", false)
//提交
editor. apply ()
//获取一个Sharedpreferences对象 读取数据
val prefs = getSharedPreferences ("data", Context.MODE_PRIVATE)
//注意读取时要有另一个参数接收 默认值
val name = prefs. getString ("name", "")
val age = prefs. getInt ("age", 0)
val married = prefs. getBoolean ("married", false)

✨sqlite的读写

//执行SQL语句的方法

db?.execSQL("drop table if exists Book")

//写入数据

val db = dbHelper.writableDatabase
val values = ContentValues()
values. put ("price", 10.99)

//查询数据

val dbHelper = MyDatabaseHelpe r(this, "BookStore.db", 2)
val db = dbHelper. writableDatabase
val cursor = db. query ("Book", null, null, null, null, null, null)
if (cursor. moveToFirst() ) {
do {
// 遍历 Cursor 对象,取出数据并打印
val name = cursor. getString (cursor. getColumnIndex ("name"))
val author = cursor. getString (cursor.getColumnIndex("author"))
val pages = cursor. getInt (cursor.getColumnIndex("pages"))
val price = cursor. getDouble (cursor.getColumnIndex("price"))
} while (cursor. moveToNext() )
}
cursor. close ()

✨xml部分是布局与控件

记住一些常用的属性

<TextView

        android:id="@+id/textView"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:gravity="center"

        android:textColor="#00ff00"

        android:textSize="24sp"

        android:text="This is TextView"/>

✨intent传递数据

button1.setOnClickListener{            

val data = "This is MainActivity"            

val intent = Intent("com.example.yourpackagename.ACTION_START")  

 intent.putExtra("extra_data", data)            //记准单词

startActivity(intent)        

}

val extraData = intent.getStringExtra("extra_data")//接收数据,获取的时候别忘了加上所属类型,获取的是属性名

✨发送标准广播

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {

        super.onCreate(savedInstanceState)

        setContentView(R.layout.activity_main)//加载布局

        button.setOnClickListener {

            val intent = Intent("com.example.broadcasttest.MY_BROADCAST")

            intent.setPackage(packageName)

            sendBroadcast(intent)

        }

    }    

}

✨对BroadcastReceiver中设定android:priority属性来确定优先级

<receiver

            android:name=".MyBroadcastReceiver"

            android:enabled="true"

            android:exported="true">

            <intent-filter android:priority=“100”>

                <action android:name="com.example.broadcasttest.MY_BROADCAST"/>

            </intent-filter>

</receiver>

✨读取系统联系人

class MainActivity : AppCompatActivity() {

    private val contactsList = ArrayList<String>()

    private lateinit var adapter: ArrayAdapter<String>

    override fun onCreate(savedInstanceState: Bundle?) {

        super.onCreate(savedInstanceState)

        // 设置界面的布局

        setContentView(R.layout.activity_main)

        adapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, contactsList)

        contactsView.adapter = adapter

        readContacts()

    }

    private fun readContacts() {

        //查询联系人数据

        contentResolver.query(

        ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,null, null,null)?.apply {

            // 使用游标遍历查询结果

            while (moveToNext()) {

              val displayName = getString(getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME))

              val number = getString(getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER))

                contactsList.add("$displayName\n$number")

            }

            adapter.notifyDataSetChanged()

            close()

        }

    }

}

✨创建通知渠道

val channel = NotificationChannel(Channel_ID, name, importance)

val manager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager

manager.createNotificationChannel(channel)

✨调用摄像头拍照

outputImage = File(externalCacheDir, "output_image.jpg")

imageUri = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { FileProvider.getUriForFile(this, "com.example.cameraalbumtest.fileprovider", outputImage)

} else {

Uri.fromFile(outputImage)

}

startActivityForResult(intent, takephoto)

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {

super.onActivityResult(requestCode, resultCode, data)

when (requestCode) { 

takephoto-> { // 填写与启动相机时相同的请求码

if (resultCode == Activity.RESULT_OK) { // 使用返回的图片 Uri 加载图片并显示

val bitmap = BitmapFactory.decodeStream(contentResolver.openInputStream(imageUri)) imageView.setImageBitmap(bitmap) // 填写显示图片的 ImageView }

} } }

✨从相册中选择图片

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {

val intent = Intent(Intent.ACTION_OPEN_DOCUMENT) intent.addCategory(Intent.CATEGORY_OPENABLE)

intent.type = "image/*" // 设置过滤类型为图片

startActivityForResult(intent, fromAlbum) // 填写请求码变量,这里不用背,看准定义的请求码

}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) // 处理相册返回结果

when (requestCode) {

fromAlbum -> {

 if (resultCode == Activity.RESULT_OK && data != null) { // 获取图片的 Uri

data.data?.let { uri -> // 从 Uri 获取图片路径,看准是uri不是url

val bitmap = getBitmapFromUri(uri) 

imageView.setImageBitmap(bitmap) // 将获取到的 Bitmap 设置为 ImageView 的图像 

} } } } } // 从 Uri 获取图片路径 

private val getContent = registerForActivityResult(ActivityResultContracts.GetContent()) {

uri: Uri? -> 

 if (uri != null) { 

var bitmap = getBitmapFromUri(uri) 

binding.imageView.setImageBitmap(bitmap)//也可能整句都写

} }

binding.fromAlbumBtn.setOnClickListener {

getContent.launch("image/*") // 指定MIME类型为图片

}

✨WebView的用法

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)

setContentView(R.layout.activity_main)

webView = findViewById(R.id.webView)

webView.settings.setJavaScriptEnabled(true)

webView.webViewClient = WebViewClient()

webView.loadUrl("https://www.baidu.com")

}

}

✨HttpURLConnection

private fun sendRequestWithHttpURLConnection() {

//开启线程发起网络请求

thread {

var connection: HttpURLConnection? = null

try {

val response = StringBuilder()

val url = URL("https://bing.com")

connection = url.openConnection() as HttpURLConnection

connection.connectTimeout = 8000

connection.readTimeout = 8000

val input = connection.inputStream

val reader = BufferedReader(InputStreamReader(input))

reader.use {

reader.forEachLine {

response.append(it)

}

}

showResponse(response.toString())

} catch (e: Exception) {

e.printStackTrace()

} finally {

connection?.disconnect()

}

}

}

✨OkHttp

private fun sendRequestWithOkHttp(urlString: String, parseCode: Int) {

//开启线程发起网络请求

thread {

val client = OkHttpClient()

try {

val request = Request.Builder()

.url(urlString)

.build()

val response = client.newCall(request).execute()

val responseData = response.body?.string()

if (responseData != null) {

when (parseCode) {

//这里的几个方法是调用,不用硬背

0 -> showResponse(responseData)

1 -> parseXMLWithPull(responseData)

2 -> parseXMLwithSAX(responseData)

3 -> parseJSONWithJSONObject(responseData)

4 -> parseJSONWithGSON(responseData)

}

}

} catch (e: Exception) {

e.printStackTrace()

}

}

}

✨Pull解析

private fun parseXMLWithPull(xmlData: String) {

try {

val factory = XmlPullParserFactory.newInstance()

val xmlPullParser = factory.newPullParser()

xmlPullParser.setInput(StringReader(xmlData))

var eventType = xmlPullParser.eventType

var id = ""

var name = ""

var version = ""

while (eventType != XmlPullParser.END_DOCUMENT) {

val nodeName = xmlPullParser.name

when (eventType) {

XmlPullParser.START_TAG -> {

when (nodeName) {

"id" -> id = xmlPullParser.nextText()

"name" -> name = xmlPullParser.nextText()

"version" -> version = xmlPullParser.nextText()

}

}

XmlPullParser.END_TAG -> {

if ("app" == nodeName) {

Log.d(TAG, "id is $id")

Log.d(TAG, "name is $name")

Log.d(TAG, "version is $version")

}

}

}

eventType = xmlPullParser.next()

}

} catch (e: Exception) {

e.printStackTrace()

}

}

✨JSONObject解析

private fun parseJSONWithJSONObject(jsonData: String) {

try {

val jsonArray = JSONArray(jsonData)

for (i in 0 until jsonArray.length()) {

val jsonObject = jsonArray.getJSONObject(i)

val id = jsonObject.getString("id")

val name = jsonObject.getString("name")

val version = jsonObject.getString("version")

Log.d("MainActivity", "id is $id")

Log.d("MainActivity", "name is $name")

Log.d("MainActivity", "version is $version")

}

} catch (e: Exception) {

e.printStackTrace()

}

}

✨使用GSON解析

private fun parseJSONWithGSON(jsonData: String) {

val gson = Gson()

val typeOf = object : TypeToken<List<App>>() {}.type

val appList = gson.fromJson<List<App>>(jsonData, typeOf)

for (app in appList) {

Log.d("MainActivity", "id is ${app.id}")

Log.d("MainActivity", "name is ${app.name}")

Log.d("MainActivity", "version is ${app.version}")

}

}

ppt摘选

欢迎来到重量级别的重点,一个大勾注意全背了。

💕看不完的可以优先看Activity与数据存储。

Android四大组件是Activity(活动)、Service(后台任务)、BroadcastReceiver(广播接收)、ContentProvider(数据共享)。

ppt的念经概念,谁爱背谁背😤

Activity:用于展示用户界面,与用户进行交互。

Service:在后台执行长时间运行的操作,没有用户界面。

BroadcastReceiver:用于接收系统或应用发出的广播,并做出响应。

ContentProvider:实现跨应用共享数据,提供数据访问的接口。

Android系统架构有Linux内核层、系统运行库层、应用框架层、应用层。

分析app模块

java: java目录是放置我们所有Java代码的地方。

res: 项目中使用到的所有图片、布局、字符串等资源都存放在这个目录下。

AndroidManifest.xml: 这是整个Android项目的配置文件。

build.gradle: 这是app模块的gradle构建脚本。

Log.d(): 用于打印一些调试信息。

Activity是一种可以包含用户界面的组件,主要用于和用户进行交互。

Toast将一些短小的信息通知给用户。

Toast.makeText(this, "...",...).show()

创建和显示菜单需要重写 onCreateOptionsMenu()方法。

Intent 是一种用于在应用程序内部或不同应用程序之间传递消息的机制。

可以用于启动Activity,service,broadcast receiver

有显式和隐式Intent。

显式指定要启动的组件的名称。

隐式指定要执行操作和数据类型,然后系统会查找可以处理该操作和数据类型的组件,并启动它们。

Activity的生命周期

onCreate() 这个方法在Activity第一次被创建的时候调用。

onStart() 这个方法在Activity由不可见变为可见的时候调用。

onResume() 这个方法在Activity准备好和用户进行交互的时候调用。

onPause() 这个方法在系统准备去启动或者恢复另一个Activity的时候调用。

onStop() 这个方法在Activity完全不可见的时候调用。

onDestroy() 这个方法在Activity被销毁之前调用。

onRestart() 这个方法在Activity由停止状态变为运行状态之前调用,也就是Activity被重新启动了。

完整生存期(entire lifetime):onCreate() 和 onDestroy() 之前所经历的即为完整生存期

可见生存期(visible lifetime):onStart() 和 onStop() 之间所经历的即为可见生存期

前台生存期(foreground lifetime):onResume() 和 onPause() 之间所经历的就是前台生存期。

onCreate方法中适合编写什么功能的代码?为什么?

(1).初始化应用的界面(如调用setContentView())。

初始化数据(如设置视图控件的初始状态)。

启动任何需要的服务或线程、加载布局、绑定事件等。

(2).onCreate()是 Activity生命周期中的第一个回调方法,它在 Activity 第一次被创建时调用,因此适合进行初始化工作。

一个Activity启动到可以跟用户交互顺序调用哪些回调方法?在什么时候可见?

(1)onCreate()、onStart()、onResume()

(2)在onStart()时,Activity对用户是可见的,但尚未与用户交互。在onResume()时,Activity已经完全可见并且可以与用户交互。

Activity的启动模式

Standard:默认模式,每次启动都会创建一个新实例。

SingleTop:如果目标 Activity 已经在栈顶,则复用实例。

SingleTask:在任务栈中只有一个实例,如果已经存在,清除栈中其他实例。

SingleInstance:启用一个新的返回栈来管理这个活动

基本的控件:TextView、Button、EditText、RecyclerView

种基本布局

LinearLayout又称作线性布局,这个布局会将它所包含的控件在线性方向上依次排列。

RelativeLayout又称作相对布局,它可以通过相对定位的方式让控件出现在布局的任何位置。

FrameLayout又称作帧布局,这种布局没有丰富的定位方式,所有的控件都会默认摆放在布局的左上角。

ConstraintLayout又称作约束布局可以通过设置视图的约束来定义控件的相对位置,适合复杂的布局需求

GridLayout又称作网格布局将控件放置在网格中,按行和列进行排列适用于表格、按钮网格等场景。

RecyclerView用来代替ListView和GridView,并且能够实现瀑布流的布局,更高效灵活,提供更为高效的回收复用机制,同时实现管理与视图的解耦合。

RecyclerView使用的基本步骤:(其中的每一步代码看几遍)

1.添加RecyclerView依赖库

2.在布局文件中添加RecyclerView控件

3.定义实体类和子项布局

4.创建一个Adapter类

5.创建一个ViewHolder类

6.创建一个LayoutManager类并设置给RecyclerView

7.将Adapter设置给RecyclerView

Fragment是一种可以嵌入在Activity当中的UI片段,它能让程序更加合理和充分地利用大屏幕的空间,包含布局生命周期

动态添加Fragment的步骤

1.创建待添加Fragment的实例。

2.获取FragmentManager,在Activity中可以直接调用getSupportFragmentManager()方法获取。

3.开启一个事务,通过调用beginTransaction()方法开启。

4.向容器内添加或替换Fragment,一般使用replace()方法实现,需要传入容器的id和待添加的Fragment实例。

5.提交事务,调用commit()方法来完成。

Fragment在生命周期中的状态有运行状态、暂停状态、停止状态、销毁状态。

Fragment的生命周期

onAttach() 当Fragment和Activity建立关联时调用。

onCreateView() 为Fragment创建视图(加载布局)时调用。

onActivityCreated() 确保与Fragment相关联的Activity已经创建完毕时调用。

onDestroyView() 当与Fragment关联的视图被移除时调用。

onDetach() 当Fragment和Activity解除关联时调用。

Android常见的限定符

Android中的广播主要可以分为两种类型:标准广播和有序广播

标准广播是一种异步执行的广播,在广播发出之后,所有的接收者几乎同时接收到广播,没有执行顺序。有序广播是一种同步执行的广播,在广播发出之后,同一时刻只会有一个接收者能够收到这条广播消息,当这个接收者执行完毕后,广播才会继续传递。标准广播效率高但无法截断,有序广播相反。

注册BroadcastReceiver的方式一般有两种:在代码中注册和在AndroidManifest.xml中注册。其中前者也被称为动态注册,后者也被称为静态注册。

动态注册监听时间变化,静态注册实现开机启动。动态注册接收广播时间是短接收广播的优先级高。静态注册接收广播时间长,但是优先级低。

Android系统中主要提供了3种方式用于简单地实现数据持久化功能:文件存储,SharedPreferences存储,数据库存储。

文件存储是不对存储的内容进行任何格式化处理,所有数据都是原封不动地保存到文件当中的,因而它比较适合存储一些简单的文本数据或二进制数据,也适用于存储大型文件,如图片、视频等。

文件存储方式的数据写入文件代码的步骤:

1. 获取应用程序的上下文Context对象。

2. 调用Context对象的openFileOutput()方法创建一个FileOutputStream对象。

3. 通过FileOutputStream对象将数据写入文件中。

4. 关闭FileOutputStreamOutputStreamWriterBufferedWriter对象。

文件存储方式的数据读取文件代码的步骤: (写入步骤的Out改为In,Writer改为Reader,写入改为读取即可)

SharedPreferences是使用键值对的方式来存储数据的。SharedPreferences还支持多种不同的数据类型存储提供了String,SetIntLongFloatBoolean六种数据类型。

SharedPreferences对象存储数据主要可以分为4步实现。

1.获取一个SharedPreferences,并获取Editor对象:调用SharedPreferences对象的edit()方法。

2.添加数据:比如添加一个布尔型数据就使用putBoolean()方法,添加一个字符串则使用putString()方法,以此类推。

3.提交:调用apply()方法将添加的数据提交,从而完成数据存储操作。

4.读取过程:获取一个SharedPreferences对象,读取数据。

SQLite是一款轻量级的关系型数据库,它的运算速度非常快,占用资源很少,不仅支持标准的SQL语法,还遵循了数据库的ACID事务,特别适合在移动设备上使用。

getReadableDatabase() 返回一个只读的数据库实例,用于查询操作。getWritableDatabase() 返回一个可写的数据库实例,用于执行写操作。

构建的SQLiteOpenHelper的实例,只有在调用了getReadableDatabase()或getWritableDatabase()方法,才会真正的创建或打开。

onCreate():在数据库第一次创建时调用,通常用于创建数据库表、插入初始数据等。onUpgrade():在数据库版本升级时调用。

SQLiteOpenHelper升级数据库的基本流程如下:

1. SQLiteOpenHelper的子类中重写onUpgrade方法。

2. onUpgrade方法中,先判断旧版本号和新版本号是否相同,如果相同则不执行任何操作,否则执行升级操作。

3. 在升级操作中,先备份旧表,然后创建新表,最后将旧表数据导入新表中。

ContentValues 是一个类似于字典(Map)的对象,它使用键值对来存储数据,是一个用于存储数据库表中一行数据的容器类。

query的几个参数

public Cursor query(

    String table,                // 1. 表名

    String[] columns,            // 2. 查询的列

    String selection,            // 3. WHERE 子句

    String[] selectionArgs,      // 4. WHERE 子句的参数

    String groupBy,              // 5. GROUP BY 子句

    String having,               // 6. HAVING 子句

    String orderBy               // 7. ORDER BY 子句

)

query()方法返回一个Cursor对象,查询到的所有数据都将从这个对象中取出。Cursor是一个接口,它提供了访问数据库查询结果的方法。

ContentProvider(内容提供者)是 Android 的四大组件之一。 ContentProvider主要用于在不同的应用程序之间实现数据共享的功能,它提供了一套完整的机制,允许一个程序访问另一个程序中的数据,同时还能保证被访问数据的安全性。

在Android 6.0系统中新增了运行时权限功能。

ContentResolver是数据请求者,应用通过它向ContentProvider请求数据或操作数据。

基本形式:

content://<authority>.provider/<path>

内容URI最标准的格式如下:

content://com.example.app.provider/table1

内容URI的两种格式

以路径结尾的标识期望访问该表中的所有数据

content://com.example.app.provider/table1

id结尾表示期望访问该表中拥有相应id的数据

content://com.example.app.provider/table1/1

内容URI的两种通配符

* 表示匹配任意长度的任意字符

# 表示匹配任意长度的数字

MIME 类型是一种标准化的字符串,用于描述数据的格式和内容。

getType()方法是所有的ContentProvider都必须提供的一个方法,用于获取Uri对象所对应的MIME类型。

一个内容URI所对应的MIME字符串主要由3部分组成,Android对这3个部分做了如下格式规定。

1.必须以vnd开头。

2.如果内容URI以路径结尾,则后接android.cursor.dir/;如果内容URIid结尾,则后接

android.cursor.item/

3.最后接上vnd.<authority>.<path>

对于content://com.example.app.provider/table1对应的MIME类型就可以写成:

vnd.android.cursor.dir/vnd.com.example.app.provider.table1

对于content://com.example.app.provider/table1/1对应的MIME类型就可以写成:

vnd.android.cursor.item/vnd.com.example.app.provider.table1

通知渠道一旦创建之后就不能再修改了。

创建通知渠道的步骤:

1、创建一个NotificationChannel对象,为通知渠道设置名称、描述和重要性级别。

2、创建一个NotificationManager

3、使用NotificationManager.createNotificationChannel()方法将通知渠道添加到系统

中。

创建一个通知渠道NotificationChannel至少需要渠道ID、渠道名称以及重要等级这三个参数

PendingIntent 不是立即执行的而在未来的某个时间执行某个操作。

Android 中,assets 目录是专门用于保存各种外部文件的,例如多媒体文件音频、视频、图片等。 assets目录保存的文件可以打包在程序里,这些文件在运行打包的时候都会打入程序安装包中。常见的有:图像、音视频、配置文件、字体、自带数据库等。

在Android中播放音频文件一般都是使用MediaPlayer类实现的,播放视频文件使用VideoView类来实现的。

VideoView不支持直接播放assets目录下的视频资源。在res目录下,新建一个raw目录,可以放音频、视频之类的资源文件。

Service是Android系统中的四大组件之一,它可以和其他组件进行交互Service Android中一种可在后台执行长时间运行操作而不提供界面的应用组件。它非常适合执行那些不需要和用户交互而且还要求长期运行的 任务。Service的运行不依赖于任何用户界面

Android多线程编程方法有继承Thread类与实现Runnable接口。

Handler的作用是将线程中需更新UI的操作信息传递到主线程,从而实现工作线程对UI的更新处理,最终实现异步消息的处理。

Android 中 的 异 步 消 息 处 理 主 要 由 4 个 部 分 组 成 : Message Handler MessageQueueLooper

解析Handler异步消息处理机制

当创建一个Handler时,它会自动与当前线程的Looper关联。然后,您可以使用Handler将消息发送到消息队列中。当消息到达队列顶部时Looper会将其传递给与之关联的Handler。然后,Handler会处理该消息并执行相关操作。

runOnUiThread()用于从子线程中切换到主线程来执行一些需要在主线程执行的操作。这个方法是Activity类中的方法。

Service需要重写onCreate()、onStartCommand()onDestroy()3个方法

Service启动的两种方式为startService、bindService

val intent = Intent(this, MyService::class.java)

startService(intent) // 启动Service

startService:用于启动服务,让服务在后台运行直到服务自我停止。

bindService:用于绑定服务,绑定服务只在其他应用程序组件绑定到它时运行。多个组件可以绑定到服务,但是当所有组件解除绑定时,服务将被销毁。

Service的生命周期

1.onCreate():创建服务的时候回调;

2.onStartCommand():开始服务的时候回调;

3.onDestroy():销毁服务的时候回调

4.onBind():绑定服务的时候回调;

5.onUnbind():解绑服务的时候回调;

Android上发送HTTP请求的方式有HttpURLConnection、OkHttp。

解析XML格式数据

解析JSON格式数据的方法有JSONObject、GSON、Jackson、FastJSON。

JSON是一种轻量级的数据交换格式,它是JavaScript对象表示法的缩写。

题目摘选

在网上摘选了一些模拟题,可以找到对应的知识点复习。加粗的是要填的。

1.应用的基本构建块是:

A. Activity

B. Fragment

C. Service

D. Intent

2.下列哪个不是AndroidManifest.xml文件的主要用途?

A.声明应用权限

B.声明应用组件

C.定义应用的图标和名称

D.编写应用的业务逻辑

3.在Android中,用于存储持久化数据的SQLite数据库,默认存储在哪个目录

下?()

A./sdcard/

B./data/data/包名/databases/

C./res/

D./system/

4.Android中,用于实现页面间跳转和传递数据的主要机制是:

A. SharedPreferences

B. Intent

C. Bundle

D. FragmentManager

5.在Android Studio中,用于编写和测试布局文件的环境是:

A. Logcat

B. Layout Editor

C. Gradle

D. AVD Manager

6.哪个类用于处理用户的触摸事件,如点击、长按等?

A. View

B. Activity

C. Fragment

D. IntentFilter

7.Android应用中,使用哪种方式可以实现后台任务处理?

A. AsyncTask

B. Service

C. BroadcastReceiver

D. IntentService

8.如果你想在Android应用中显示一个Toast消息,你应该使用哪个类的实例?

A. Toast

B. AlertDialog

C. Dialog

D. Snackbar

9.Android中的Context是一个抽象类,它允许访问特定资源和类以及调用应用级操作,如启动活动、广播和接收意图等。在Activity中,可以通过哪个方法直接获取Context?

A. getApplicationContext()

B. getContext()

C. this(在Activity内部)

D. getBaseContext()

10.在Android开发中,用于处理用户输入的EditText组件,其输入类型设置为

密码时,应使用哪个属性?()

A. android:inputType="textPassword"

B. android:password="true"

C. android:inputType="password"

D. android:secure="true"

1.Android应用程序的四大组件是:Activity、BroadcastReceiver 、Service和ContentProvider

2.在Android中,使用 BroadcastReceiver 来监听和发送广播消息。

3.AndroidStudio中,用于构建和同步Gradle配置的按钮是Sync Project with Gradle Files 。

4.要在Android中创建一个新的线程,可以使用Java的Thread类。

5.在AndroidManifest.xml中,为应用声明网络权限的标签是<uses-permission android:name="android.permission.INTERNET" />

6.使用 LinearLayout 布局管理器,可以让子视图水平或垂直排列,并且每个子视图占据等量的空间。

7.Android中的资源文件通常放在项目的 res 目录下。

8.在Android中,使用 startActivity(Intent intent)方法可以启动一个新的Activity。

9.SharedPreferences是Android平台上一个轻量级的存储类,主要保存和读取的数据类型是 int和 String。

10.在Fragment中,当Fragment可见且用户与其交互时,Fragment会接收到 onResume()回调。

三、

  1. 简述Activity的生命周期,并说明至少三个重要的生命周期方法。

Activity的生命周期:Activity从被创建到销毁的整个过程中,会经历一系列的状态变化,这些状态变化称为Activity的生命周期。重要的生命周期方法包括:

onCreate:Activity被创建时调用,用于初始化设置。

onStart:Activity对用户可见时调用。

onResume:Activity开始与用户交互时调用。

onPause:Activity被其他Activity部分遮挡时调用。

onStop:Activity完全不可见时调用。

onDestroy:Activity被销毁时调用,通常用于清理资源。

  1. 解释Intent在Android应用中的作用,并给出一个使用Intent启动新Activity的例子。

Intent在Android应用中的作用:Intent是Android应用间交互的一种主要

方式,它用于不同组件之间的通信,如启动Activity、发送广播、启动服务等。

使用Intent启动新Activity的例子:

java

Intent intent =new Intent(this,NewActivity.class);

  1. 简述Android中Fragment的作用及其与Activity的区别。

Fragment:Fragment是Activity中的个片段,可以在一个Activity中嵌入多个Fragment,实现复杂的用户界面和逻辑。Fragment有自己的生命周期,但

依赖于Activity存在。

与Activity的区别:Activity是-个完整的屏幕,可以独立存在;而Fragment

必须嵌入到Activity中,不能独立存在。Fragment适用于在不同屏幕尺寸上创

建灵活的UI设计,提高代码复用性。

四、

1.编写一个简单的Activity,其中包含个EditText用于输入文本,-个Button

用于提交文本,以及个TextView用于显示提交的文本。要求:当点击Button

时,将EditText中的文本内容显示到TextView上。

class MainActivity : AppCompatActivity() {

lateinit var editText: EditText

lateinit var button: Button

lateinit var textView: TextView

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)

setContentView(R.layout.activity_main)

editText = findViewById(R.id.editText)

button = findViewById(R.id.button)

textView = findViewById(R.id.textView)

button.setOnClickListener {

val text = editText.text.toString()

textView.text = text

} } }


一、

10.用于在后台执行长时间运行操作且没有用户界面的组件是?

A.Activity

B.Service

C.Intent

D.ContentProvider

11.Android中用于存储轻量级、简单数据的机制是?

A. SQLite

B. SharedPreferences

C. File

D. Intent

12.在Android中,用于接收系统或应用广播的组件是?

A. Activity

B. Service

C. BroadcastReceiver

D. ContentProvider

13.哪个生命周期方法会在Activity对用户可见时调用?

A. onStartO

B. onResumeO

C. onPauseO

D. onStopO

14.哪个方法用于在Activity中处理从另一个Activity返回的结果?

A.onActivityResultO

B. onCreateO

C. onStartO

D. onNewIntentO

15.在Android中,用于控制组件间通信的类是?

A. Bundle

B. Intent

C. IntentFilter

D. PendingIntent

二、

4.SharedPreferences是Android中用于实现数据持久化的一种轻量级机制。

5.Android中,用于实现跨进程通信的组件是ContentProvider

6.Intent用于在不同组件之间传递数据

7.Android应用的主线程也被称为UI线程。

8.在Android中,用于启动服务的Intent方法通常是startService()

三、

1.简述Android应用的四大组件及其主要功能:

Activity:用于展示用户界面,与用户进行交互。

Service:在后台执行长时间运行的操作,没有用户界面。

BroadcastReceiver:用于接收系统或应用发出的广播,并做出响应。

ContentProvider:实现跨应用共享数据,提供数据访问的接口。

2.描述Activity的生命周期,并解释每个关键阶段的作用:

onCreateO:Activity被创建时调用,用于初始化设置。

onStartO:Activity对用户可见时调用。

onResumeO:Activity开始与用户交互时调用。

onPauseO:Activity不再与用户交互,但可能仍然可见时调用

onStopO:Activity不再可见时调用。

onDestroyO:Activity被销毁前调用,用于清理资源。

3.什么是Intent?它在Android中有什么作用?

Intent是Android中用于组件间通信的一种机制,它可以启动组件(如Activity、Service等),也可以在不同组件之间传递数据。Intent描述了应用想要执行的操作,包括操作的动作、数据、附加数据、类别、组件名称等。

4.简述SharedPreferences与SQLite数据库的区别及适用场景:

SharedPreferences:轻量级的数据存储方式,适合存储简单的键值对数据,如用户偏好设置。它易于使用,但不适合存储大量数据或复杂数据。

SQLite数据库:是一个完整的数据库系统,支持SQL语句,适合存储大量或复

杂的数据,如用户信息、应用数据等。它提供了更高的灵活性和查询能力,但相对于SharedPreferences来说,使用上更为复杂。

四、

  1. 编写一个Activity,其中包含一个按钮。点击按钮后,启动另一个Activity,并在第二个Activity中显示"Hello,Android!"的文本信息。

//第—个Activity(MainActivity.java)

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)

setContentView(R.layout.activity_main)

val button: Button = findViewById(R.id.myButton)

button.setOnClickListener(object : View.OnClickListener {

override fun onClick(v: View?) {

val intent = Intent(this, SecondActivity::class.java)

startActivity(intent)

}

})

} }

//第二个Activity(SecondActivity.java)

class SecondActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)

setContentView(R.layout.activity_second)

val textView: TextView = findViewById(R.id.textView)

textView.text = "Hello, Android!"

} }

  1. 创建一个简单的Android应用,该应用包含一个EditText和一个Button。用户可以在EditText中输入文本,点击Button后,应用会在Toast中显示用户输入的文本。请提供关键代码片段(包括布局文件和Activity代码)。

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical"

    android:padding="16dp">

    <!-- 输入文本的 EditText -->

    <EditText

        android:id="@+id/editText"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:hint="请输入文本"

        android:inputType="text" />

    <!-- 点击后触发显示的按钮 -->

    <Button

        android:id="@+id/button"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="显示文本" />

</LinearLayout>

public class MainActivity extends AppCompatActivity {

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        // 获取 EditText 和 Button 的引用

        EditText editText = findViewById(R.id.editText);

        Button button = findViewById(R.id.button);

        // 设置按钮的点击事件

        button.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                // 获取 EditText 中的文本

                String inputText = editText.getText().toString();

                // 显示 Toast 提示框,展示用户输入的文本

                Toast.makeText(MainActivity.this, inputText, Toast.LENGTH_SHORT).show();

            }

        });

    }

}

一、

1.在Android中,用于声明应用程序组件(如Activity、Service等)的配置文件是?()

A. AndroidManifest.xml

B. build.gradle

C. styles.xml

D. res/layout/activity_main.xml

2.哪个类用于在Android应用中处理用户界面的更新,但不直接处理用户的输入?

A. Activity

B. Service

C. AsyncTask

D. Handler

3.在Android中,用于在界面上显示文本信息的控件是?

A. TextView

B. EditText

C. ImageView

D. Button

4.AndroidStudio中,用于模拟Android设备以测试应用的工具是?

A. Android Debugger

B. Android Virtual Device (AVD)

C. Layout Inspector

D. Logcat

5.下列哪项是Android四大组件之一,但不具备用户界面?

A. Activity

B. Service

C. Broadcast Receiver

D. Content Provider

6.在Android中,用于存储简单数据的轻量级数据库是?

A. SQLite

B. MySQL

C. Realm

D. Firebase Realtime Database

7.要在Android应用中访问网络,通常需要添加哪个权限到AndroidManifest.xml?

A. <uses-permission android:name="android.permission.INTERNET" />

B.<uses-permission

android:name="android.permission.ACCESS_FINE_LOCATION" />

C.<uses-permission

android:name="android.permission.READ_EXTERNAL_STORAGE"/>

D. <uses-permission android:name="android.permission.CAMERA" />

8.Android中的Intent主要用于什么?

A.跨进程通信

B.线程间通信

C.组件间通信

D.跨应用数据传输

11.关于Android Activity生命周期,以下哪个状态表示Activity正在前台,用户可以与其交互?

A. Started

B. Resumed

C. Paused

D. Stopped

13.在Android开发中,适配器(Adapter)的主要作用是什么?

A.用于在Activity和Fragment之间传递数据

B.用于将数据源(如List)绑定到UI组件(如ListView或RecyclerView)

C.用于处理网络请求

D.用于创建和管理线程

二、

1.Android应用的入口点是MainActivity类。

3.AndroidStudio中,用于编写和测试Android应用的集成开发环境(IDE)是Android Studio

4.SQLite数据库中,用于创建表的SQL语句以CREATE TABLE关键字开始。

5.在AndroidManifest.xml中,用于声明应用所需权限的标签是<uses-permission>

6.Intent传递数据时,可以使用putExtra方法,并通过getIntent().getExtras().get...方法在接收端获取这些数据。

8.在RecyclerView中,用于定义列表项布局的XML文件通常放在res/layout录下。

10.在Android中,用于在后台执行长时间运行的操作而不影响用户界面的组件

Service

三、

3.如何在Android应用中处理网络请求并显示结果:

通常使用异步方式进行网络请求,避免阻塞UI线程。请求成功后,在主线程中

更新UI,显示结果。

4.简述Intent的作用及两种主要类型:

Intent是Android中用于不同组件之间通信的一种机制,可以启动Activity、Service或发送广播。两种主要类型:

显式Intent:明确指定目标组件的Intent。

隐式Intent:不指定具体组件,而是通过Action、Category、Data等属性由系统查找最合适的组件。

5.描述如何在Android应用中使用SharedPreferences来存储和检索数据:

SharedPreferences用于存储轻量级的数据(如用户偏好设置)。通过

getSharedPreferencesO获取SharedPreferences实例,然后使用editO获取Editor对象进行数据存储,通过SharedPreferences实例直接检索数据。

1.编写一个AndroidActivity,其中包含一个EditText用于输入用户名和一个

Button。点击按钮后,将EditText中输入的用户名通过Toast显示出来。

public class MainActivity extends AppCompatActivity{

EditText editText;

Button button;

@Override

 protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

editText=findViewById(R.id.editText);

button =findViewById(R.id.button);

button.setOnClickListener(new View.OnClickListenerO{

@Override

public void onClick(View v) {

String username = editText.getTextO.toStringO;

Toast.makeText(MainActivity.this,"用户名:"+username,

Toast.LENGTH_SHORT).showO;

}

});

}

}

2.设计一个使用RecyclerView的简单列表界面,列表项显示从网络API获取的

数据(如新闻标题)。假设API返回JSON数据,你需要解析这些数据并显示在

RecyclerView中。请简要描述实现步骤,并给出关键代码片段(如Adapter的创建和数据绑定逻辑)。

创建RecyclerView的布局和列表项布局。

创建Adapter类,用于绑定数据和视图。

在Activity或Fragment中初始化RecyclerView,设置Adapter和LayoutManager。

发起网络请求,解析JSON数据,并更新Adapter的数据集。

public class NewsAdapter extends RecyclerView.Adapter<NewsAdapter.ViewHolder> {

    private List<NewsItem> newsList;

    // 构造函数

    public NewsAdapter(List<NewsItem> newsList) {

        this.newsList = newsList;

    }

    @Override

    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        // 创建视图并返回ViewHolder

        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.news_item, parent, false);

        return new ViewHolder(view);

    }

    @Override

    public void onBindViewHolder(ViewHolder holder, int position) {

        NewsItem newsItem = newsList.get(position);

        holder.title.setText(newsItem.getTitle());

    }

    @Override

    public int getItemCount() {

        return newsList.size();

    }

    // ViewHolder类,用于保存每个项的视图

    public static class ViewHolder extends RecyclerView.ViewHolder {

        TextView title;

        public ViewHolder(View itemView) {

            super(itemView);

            title = itemView.findViewById(R.id.news_title);

        }

    }

}

五、

  1. 请完成一个用户登录界面MainActivity,界面xml文件为activity_main.xml,界面中必须包含TextView控件、EditText控件以及Button控件,当点击Button按钮时,会弹出Toast对话框显示用户名和密码。

前台界面如下

ID:etUserName

ID:etPwd

ID:btnLogin

public class MainActivity extends AppCompatActivity{

private EditText etUserName;

private EditText etPassword;

private Button btnLogin;

protected void onCreate(Bundle savedInstanceState)

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main) ;

//初始化控件

etUserName = findViewByld(R.id.etUserName);

etPassword = findViewByld(R.id.etPassword);

btnLogin = findViewByld(R.id.btnLogin);

btnLogin. setOnClickListener(new View. OnClickListenerO

@Override

public void onClick(View v){

String username=etUserName.getText().toString();

String password=etPassword.getText().toString();

Toast.makeTextthis,

"用户名:"+ userName +"\n密码:"+ password

Toast.LENGTH_SHORD).showO://Toast提示信息

);

2、请编写一个短信草稿箱的程序,要求用户在文本编辑框中输入短信内容后,点击保

存短信"按钮,将短信保存在SharedPreferences中。(每空2分)

public classMainActivity extendsAppCompatActivityimplementsView.OnClickListener

/**

*短信文本输入框

*/

private EditText mWrite;

/**

*短信读取框

*/

private EditText mRead;

/**

*存储信息按钮

*/

private Button mSaveBTN;

/**

*读取已存信息按钮

*/

private Button mReadBTN;

private SharedPreferences mSP;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

/**

*获取SharedPreferences实例对象

*/

mSP=getSharedPreferences("data",Context.MODE_PRIVATE);

mWrite = findViewById(R.id.et_write);

mRead =findViewById(R.id.et_read);

mSaveBTN =findViewById(R.id.btn_save);

mReadBTN = findViewById(R.id.btn_read);

/**

*两个按钮设置单击监听

*/

mSaveBTN.setOnClickListener(this);

mReadBTN.setOnClickListener(this);

}

@Override

public void onClick(View v)

switch (v.getId()) {

case R.id.btn_read:

getSms();//调用获取信息的方法

break;

case R.id.btn_save:

saveSms();//调用保存信息的方法

break;

}

}

/***

*保存信息

*/

private void saveSmsO

if(!TextUtils.isEmpty(mWrite.getTextO.toStringO.trimO))

SharedPreferences.Editor edit=mSP.edit();//获取编辑器

edit.putString("sms",mWrite.getText().toString().trim();//保存数据

edit.commit();//提交数据

Toast.makeText(MainActivity.this,"信息存储成功",

Toast.LENGTH_SHORT).showO;

}else {

Toast.makeText(MainActivity.this,短信内容不能为空!!!,

Toast.LENGTH_SHORT).showO;

}

}

/**

*读取信息

*/

private void getSmsO {

String sms = mSP.getString("sms", null);//获得数据

if (sms != null) {

mRead.setText(sms);//数据显示在短信读取框中

}else {

Toast.makeText(MainActivity.this,"请先保存信息",

Toast.LENGTH_SHORT).showO;

}

}

}

相关文章:

GDPU Android移动应用 重点习题集

目录 程序填空 ppt摘选 题目摘选 “就这两页ppt&#xff0c;你还背不了吗” “。。。” 打开ppt后 “Sorry咯&#xff0c;还真背不了&#x1f61c;” 程序填空 网上摘选的大题也挺合适的&#xff0c;太难的帮大家过滤掉了&#xff0c;大家可以看一下。 ✨SharedPrefere…...

软件开发为什么要用CI/CD方法

现代化业务离不开应用。事实上&#xff0c;62% 的企业认为&#xff0c;应用对其业务至关重要&#xff0c;还有 36% 的企业认为&#xff0c;通过应用提升了竞争优势2。快速可靠的应用开发是在数字世界取得成功的关键。持续集成/持续部署&#xff08;CI/ CD&#xff09;方法可帮助…...

湘潭大学人机交互复习

老师没给题型也没划重点&#xff0c;随便看看复习了 什么是人机交互 人机交互&#xff08;Human-Computer Interaction&#xff0c;HCI&#xff09;是关于设计、评价和实现供人们使用的交互式计算机系统&#xff0c;并围绕相关的主要现象进行研究的学科。 人机交互研究内容 …...

Java高频面试之SE-10

hello啊&#xff0c;各位观众姥爷们&#xff01;&#xff01;&#xff01;本牛马baby今天又来了&#xff01;哈哈哈哈哈嗝&#x1f436; equals和 的区别&#xff1f; 在 Java 中&#xff0c;equals() 方法和 运算符都是用于比较两个对象之间的相等性&#xff0c;但它们的工…...

Java 注解详解:RetentionPolicy 与 ElementType

文章目录 1. RetentionPolicy&#xff1a;注解的生命周期RetentionPolicy 的详细说明SOURCE 示例CLASS 示例RUNTIME 示例 2. ElementType&#xff1a;注解的应用范围ElementType 的详细说明ElementType 示例用于类用于方法用于局部变量 3. RetentionPolicy 与 ElementType 的结…...

javafx 将项目打包为 Windows 的可执行文件exe

要将 JavaFX 项目打包为 .exe 文件&#xff0c;你可以使用一些工具将你的应用程序封装为 Windows 可执行文件。以下是两种常用的方法&#xff1a; 方法 1&#xff1a;使用 jpackage&#xff08;适用于 JDK 14 及更高版本&#xff09; jpackage 是 JDK 内置的工具&#xff0c;…...

使用Chrome谷歌浏览器中内置翻译功能

谷歌Chrome浏览器作为全球最受欢迎的网络浏览器之一&#xff0c;提供了强大且便捷的内置翻译功能。这一功能帮助用户轻松跨越语言障碍&#xff0c;浏览试听包括音乐视频直播等网页内容了。 一、启用Chrome内置翻译功能 1、打开谷歌Chrome浏览器&#xff1a;确保你已经安装了最…...

Clojure语言的数据库编程

Clojure语言的数据库编程 引言 在当今社会&#xff0c;数据的处理和管理已经成为一个不可或缺的部分。无论是互联网应用、企业系统还是移动应用&#xff0c;都需要与数据库进行频繁的交互。因此&#xff0c;选择一种合适的编程语言和相应的库来进行数据库编程显得尤为重要。C…...

从零开始:使用VSCode搭建Python数据科学开发环境

引言 在数据科学领域&#xff0c;一个高效、稳定的开发环境是成功的关键。本文将详细介绍如何使用Visual Studio Code搭建一个完整的Python数据科学开发环境。通过本指南&#xff0c;您将学会&#xff1a; 安装和配置VSCode&#xff0c;包括基本设置和快捷键配置设置Python开…...

docker minio镜像arm64架构

minio版本为RELEASE.2021-09-03T03-56-13Z 原项目信创改造&#xff0c;服务器资源改为了arm64架构&#xff0c;统信uos docker镜像库内没有对应的minio镜像&#xff0c;当前镜像为拉取源码后&#xff0c;自编译打包镜像&#xff0c;亲测可用。 使用方式 将tar包导入到服务器…...

arcgisPro加载CGCS2000天地图后,如何转成米单位

1、导入加载的天地图影像服务&#xff0c;一开始是经纬度显示的。 2、右键地图&#xff0c;选择需要调整的投影坐标&#xff0c;这里选择坐标如下&#xff1a; 3、点击确定后&#xff0c;就可以调整成米单位的了。 4、切换后结果如下&#xff1a; 如有需要&#xff0c;可调整成…...

MySQL Binlog 监听方案

如果 EmbeddedEngine 类在 debezium-connector-mysql 中不可用&#xff0c;原因是 Debezium 的新版本移除了 EmbeddedEngine。这是因为 Debezium 的架构变更&#xff0c;它现在鼓励使用 Kafka Connect 或 Debezium Server 来处理数据变更事件。 下面是几种替代方法来实现 MySQ…...

openai swarm agent框架源码详解及应用案例实战

文章目录 简介数据类型Agent类Response类Result类Swarm类run_demo_loop交互式会话 基础应用agent-handsofffunction-callingcontext_variablestriage_agent 高阶应用通用客服机器人(support bot)构建航班服务agent 参考资料 openai 在24年10月份开源了一个教育性质的多agents协…...

Qt 5.14.2 学习记录 —— 팔 QWidget 常用控件(3)

文章目录 1、cursor2、font3、toolTip4、focusPolicy5、styleSheet 1、cursor 改变鼠标光标形状。 在Qt Designer界面中&#xff0c;拖一个按钮过来&#xff0c;右边属性面用户可以自己改cursor属性。 代码方法&#xff0c;先拖一个按钮到界面上&#xff1a; #include <Q…...

Nginx (40分钟学会,快速入门)

目录​​​​​​​ 一、什么是Nginx ? 可以做什么 &#xff1f; 二、正向代理和反向代理 三、负载均衡 四、动静分离 五、Nginx 常用命令 六、Nginx实战及总结 一、什么是Nginx ? 可以做什么 &#xff1f; Nginx 是高性能的 HTTP 和反向代理的 web 服务器&#xff0c…...

C# 中await和async的用法(一)

在 C# 中&#xff0c;await 关键字用于异步编程&#xff0c;配合 async 方法一起使用。await 允许你等待异步操作完成&#xff0c;而不会阻塞当前线程。简而言之&#xff0c;await 会暂停当前方法的执行&#xff0c;直到任务完成&#xff0c;然后继续执行。 1. await与async的关…...

前端JS中var、let、const之间的区别

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 一、var 二、let 三、const 四、区别 变量…...

【pyqt】(八)ui文件使用

ui文件使用 前面我们已经学过了简单的UI文件创建&#xff08;利用Qt Designer&#xff09;和基础控件的使用。现在我们学习如何把二者融合起来完成开发。UI文件以 XML 格式存储界面的布局和各种控件的属性&#xff0c;我们可以利用Qt Designer开发界面&#xff0c;然后利用代码…...

H2数据库在单元测试中的应用

H2数据库特征 用比较简洁的话来介绍h2数据库&#xff0c;就是一款轻量级的内存数据库&#xff0c;支持标准的SQL语法和JDBC API&#xff0c;工业领域中&#xff0c;一般会使用h2来进行单元测试。 这里贴一下h2数据库的主要特征 Very fast database engineOpen sourceWritten…...

ios越狱脚本巨魔商店安装教程

使用爱思助手安装 安装爱思助手&#xff1a;在电脑上安装 iTunes 和爱思助手&#xff0c;并使用 Apple ID 登录2。 IPA 签名&#xff1a;打开爱思助手&#xff0c;选择工具箱中的 IPA 签名。点击添加 IPA 文件&#xff0c;选择下载的 TrollInstallerX.ipa 文件。选择使用 Apple…...

Linux C编程——文件IO基础

文件IO基础 一、简单的文件 IO 示例二、文件描述符三、open 打开文件1. 函数原型2. 文件权限3. 宏定义文件权限4. 函数使用实例 四、write 写文件五、read 读文件六、close 关闭文件七、Iseek 绍 Linux 应用编程中最基础的知识&#xff0c;即文件 I/O&#xff08;Input、Outout…...

【Rust自学】10.4. trait Pt.2:trait作为参数和返回类型、trait bound

喜欢的话别忘了点赞、收藏加关注哦&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 说句题外话&#xff0c;写这篇的时间比写所有权还还花的久&#xff0c;trait是真的比较难理解的概念。 10.4.1. 把trait作为参数 继续以…...

Java 中的 getDeclaredMethod() 方法:使用与原理详解

在 Java 反射机制中&#xff0c;getDeclaredMethod() 是一个非常重要的方法&#xff0c;用于获取类中声明的特定方法&#xff08;包括公共、保护、默认和私有方法&#xff09;。与 getMethod() 不同&#xff0c;getDeclaredMethod() 可以访问类的所有方法&#xff0c;而不仅仅是…...

解决npm报错:sill idealTree buildDeps

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 报错信息 使用 npm 安装依赖时报错&#xff1a;sill idealTree buildDeps 解决方案 请按照以下步骤进行相关操作&#xff1a; 1、删除 C:\Users{账户}\ 文件夹中的 .npm…...

【游戏设计原理】55 - 风险评估

从本文讲述的内容来看&#xff0c;其实使用“游戏中的决策”作为标题更合适。 核心观点&#xff1a;玩家在游戏中不断进行决策&#xff0c;这些决策涵盖风险评估、资源分配、策略选择等多个方面&#xff0c;其核心是通过选择实现最大化回报或最小化损失。关键内容&#xff1a;…...

【AI日记】25.01.08

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】【读书与思考】 AI 参加&#xff1a;kaggle 比赛 Forecasting Sticker Sales 读书 书名&#xff1a;国家为什么会失败阅读原因&#xff1a;2024 年诺贝尔经济学奖得主的力作未删减版&#xff1a;https://boo…...

SAP BC 同服务器不同client之间的传输SCC1

源配置client不需要释放 登录目标client SCC1...

用Cline打造你的智能搜索助手:Tavily Search MCP集成指南

引言 本文将详细介绍如何在Cline编辑器中集成Tavily Search智能搜索功能。我们将从MCP&#xff08;Model Context Protocol&#xff09;协议基础开始&#xff0c;深入探讨Tavily Search MCP服务器的安装配置、使用方法&#xff0c;以及进阶的二次开发技巧。无论你是AI开发者还…...

未来商贸物流:人工智能与大数据的深度融合

未来商贸物流&#xff1a;人工智能与大数据的深度融合 在当今数字化浪潮汹涌澎湃的时代&#xff0c;商贸物流行业正站在变革的十字路口&#xff0c;而人工智能与大数据宛如一对闪耀的双子星&#xff0c;为其照亮前行的道路&#xff0c;深度融合之下&#xff0c;一个全新的未来…...

网络安全、Web安全、渗透测试之笔经面经总结(三)

本篇文章涉及的知识点有如下几方面&#xff1a; 1.什么是WebShell? 2.什么是网络钓鱼&#xff1f; 3.你获取网络安全知识途径有哪些&#xff1f; 4.什么是CC攻击&#xff1f; 5.Web服务器被入侵后&#xff0c;怎样进行排查&#xff1f; 6.dll文件是什么意思&#xff0c;有什么…...

BMS应用软件开发 — 3 电池系统的组成

目录 1 电池的基本拓扑 2 已经被淘汰的CTM 3 早已经普及的CTP 4 集成度更高的CTC 5 刚性更好的CTB 1 电池的基本拓扑 相比于燃油车&#xff0c;虽然电动车在结构空间上灵活度更高&#xff0c;空间利用率也更好&#xff0c;但现有条件下无法像燃油车一样快速补能&#xff…...

springboot 项目使用nacos注册中心配置,在windows系统下打jar包后不能启动的一个不好排查的问题

起因&#xff0c;一个项目使用的nacos注册中心配置&#xff0c;想学习运维一些知识&#xff0c;项目在本地idea&#xff0c;无论是run&#xff0c;debug模式&#xff0c;都可以正常运行。就学习如何打包&#xff0c;打包好后&#xff0c;如何运jar包&#xff0c;都启动不起来&a…...

Git撤销指定commit并更新远端仓库

Git撤销指定commit并更新远端仓库 一、撤销指定commit 1.首先执行git log 命令&#xff0c;查看git历史提交以及commit信息&#xff1a; 由于需要脱敏&#xff0c;所以截图可能看得马赛克比较多&#xff0c;需要关注的就是上面的commit后跟的id&#xff0c;以及HEAD当前指定…...

校园约拍微信小程序设计与实现ssm+论文源码调试讲解

4 系统设计 校园约拍微信小程序的设计方案比如功能框架的设计&#xff0c;比如数据库的设计的好坏也就决定了该系统在开发层面是否高效&#xff0c;以及在系统维护层面是否容易维护和升级&#xff0c;因为在系统实现阶段是需要考虑用户的所有需求&#xff0c;要是在设计阶段没…...

开源靶场1

我来为您介绍一些知名的开源漏洞靶场平台: DVWA (Damn Vulnerable Web Application) 最流行的 Web 漏洞靶场之一包含 SQL 注入、XSS、文件包含等常见漏洞基于 PHP MySQL适合 Web 安全入门学习 WebGoat OWASP 开源项目基于 Java包含大量 Web 安全漏洞练习提供详细的教程和解…...

iOS开发指南:保护服务器密码的安全存储与处理技巧

在iOS开发过程中&#xff0c;服务器密码的安全存储与处理是确保应用安全性的关键环节。不当的密码管理可能导致数据泄露、用户隐私受损&#xff0c;甚至引发更严重的安全问题。因此&#xff0c;开发者需要采取一系列措施来保护服务器密码的安全。本文将详细介绍在iOS开发中如何…...

《Spring Framework实战》9:4.1.4.依赖注入

欢迎观看《Spring Framework实战》视频教程 典型的企业应用程序不是由单个对象&#xff08;或Spring术语中的bean&#xff09;组成。即使是最简单的应用程序也有几个对象协同工作&#xff0c;以呈现最终用户所认为的连贯应用程序。下一节将解释如何从定义多个独立的bean定义到一…...

linux之自动挂载

如果想要实现自动挂载&#xff0c;应该挂在客户端&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 客户端&#xff1a; [rootlocalhost ~]# yum install nfs-utils -y &#xff08;下载软件&#xff09; [rootlocalhost ~]# systemctl start nfs-utils.servic…...

python+fpdf:创建pdf并实现表格数据写入

目录 创建pdf文件对象 新增页 添加自定义字体 设置字体 设置文字颜色和背景色 插入内容 换行 插入图片 保存pdf 完整代码 安装:pip install fpdf 创建pdf文件对象 from fpdf import FPDF, Alignpdf = FPDF() # 创建pdf文件对象 获取边距 print(pdf.l_margin, p…...

比较procfs 、 sysctl和Netlink

procfs 文件系统和 sysctl 的使用: procfs 文件系统(/proc) procfs 文件系统是 Linux 内核向用户空间暴露内核数据结构以及配置信息的一种方式。`procfs` 的挂载点是 /proc 目录,这个目录中的文件和目录呈现内核的运行状况和配置信息。通过读写这些文件,可以查看和控制内…...

第四、五章补充:线代本质合集(B站:小崔说数)

视频1&#xff1a;线性空间 原视频&#xff1a;【线性代数的本质】向量空间、基向量的几何解释_哔哩哔哩_bilibili 很多同学在学习线性代数的时候&#xff0c;会遇到一个困扰&#xff0c;就是不知道什么是线性空间。因为中文的教材往往对线性空间的定义是非常偏数学的&#x…...

Clojure语言的函数实现

Clojure语言函数实现详解 引言 Clojure是一种基于Java虚拟机的函数式编程语言&#xff0c;以其简洁和强大的数据处理能力而著称。在Clojure中&#xff0c;函数是基本的构造块&#xff0c;良好的函数设计可以提高代码的可复用性和可维护性。本文将深入探讨Clojure中的函数实现…...

Windows10环境下安装RabbitMq折腾记

最近有个老项目需要迁移到windows10环境&#xff0c;用的是比较老的rabbitmq安装包&#xff0c;如下所示。经过一番折腾&#xff0c;死活服务起不来&#xff0c;最终果断放弃老版本启用新版本。现在把折腾过程记录下&#xff1a; 一、安装erlang 安装完成后的目录结构&#xff…...

【前端,TypeScript】TypeScript速成(九):async-await 语法糖

async-await 语法糖 可以使用 async-await 来管理 Promise&#xff0c;下例重写上一节使用 Promise then 的形式计算 ( 2 3 ) ( 4 5 ) (23) \times (45) (23)(45)&#xff1a; function add(a: number, b: number): Promise<number>{return new Promise((resolve,…...

基于ADAS 与关键点特征金字塔网络融合的3D LiDAR目标检测原理与算法实现

一、概述 3D LiDAR目标检测是一种在三维空间中识别和定位感兴趣目标的技术。在自动驾驶系统和先进的空间分析中&#xff0c;目标检测方法的不断演进至关重要。3D LiDAR目标检测作为一种变革性的技术&#xff0c;在环境感知方面提供了前所未有的准确性和深度信息. 在这里&…...

STM32供电参考设计

STM32供电参考设计 ​ 在图中有VDD&#xff0c;VSS和VDDA&#xff0c;VSSA两种类型的供电引脚&#xff0c;其数据手册解释如下&#xff1a; ​ 令我不解的是&#xff1a;VDDA和VSSA必须分别连接到VDD和VSS&#xff0c;这是什么意思&#xff1f;有大佬能够解答一下吗&#xff1f…...

C/C++头文件uitility

在C中&#xff0c;<utility>头文件提供了一些通用的工具类和函数&#xff0c;这些工具类和函数在编写高效、可读性强的代码时非常有用。以下是<utility>头文件中一些常用函数和类的详细介绍及使用示例&#xff1a; std::pair&#xff1a;一个模板类&#xff0c;用于…...

Nature Electronics——近传感器计算:50 nm异构集成技术的革命

创新点&#xff1a;1.高密度互联设计&#xff1a;基于二维材料&#xff0c;开发出互连密度高达62,500 I/O每平方毫米的M3D集成结构。2.异构层堆叠&#xff1a;整合了第二层石墨烯化学传感器和第一层MoS₂记忆晶体管&#xff0c;实现功能互补。3.超短传感器与计算元件距离&#…...

腾讯云AI代码助手编程挑战赛-图片转换工具

作品简介&#xff1a; 解决了人们学习生活中的图片格式转换问题&#xff0c; 制作该脚本&#xff0c;省去了打开在线编辑器操作的时间&#xff0c; 免费为用户提供图片格式的转换的实用小工具 技术架构 python语言的tk库来完成的GUI页面设计&#xff0c; 引用PIL包转换图…...

英伟达Project Digits赋能医疗大模型:创新应用与未来展望

英伟达Project Digits赋能医疗大模型&#xff1a;创新应用与未来展望 一、引言 1.1 研究背景与意义 在当今数字化时代&#xff0c;医疗行业作为关乎国计民生的关键领域&#xff0c;正面临着前所未有的挑战与机遇。一方面&#xff0c;传统医疗模式在应对海量医疗数据的处理、复…...