【移动计算技术(Android)】期末复习

news2024/11/24 9:56:13

目录

选择题

选择题知识点汇总

Activity

Intent

Broadcast

BroadcastReceiver

如何自定义Receiver

如何注册接收器

Service

SharedPreferences

三种访问模式

如何创建

如何存储/修改

如何读取

内部存储

openFileOutput

openFileInput

SD卡

资源文件

SQLite

SQLiteOpenHelper(创建数据库)

SQLiteDatabase(进行具体操作)

ContentProvider

URI

如何自定义

ContentResolver

如何创建

如何增删改查

HttpURLConnection

get和post请求的区别

基本操作

MediaPlayer

简答题

简述Android体系结构

*简述Android的四大组件及其功能

简述Android系统特点

*简述Activity的生命周期

简述Activity栈的工作流程

简述Activity生命周期的事件回调函数

简述Android架构的MVC模式

简述如何设置View的宽度

*简述6种常见的页面布局(分别有什么特点)

简述Intent和Bundle的作用

*简述Intent启动Activity的两种启动方式

简述Intent双向传递数据的原理

简述消息广播标识串的用途

*简述Service的类型(两种启动方式的不同)

简述Service的生命周期

简述SharedPreferences及其三种访问模式

简述访问其他应用程序的SharedPreferences必须满足的三个条件

简述Android文件存储的方式

列举一些系统ContentProvider

进程的基本概念

简述Handler消息处理机制

简述TCP/IP网络层次结构

简述什么是socket

简述端口号的作用

简述HttpURLConnection的基本工作流程

简述什么是Fragment及其优点

简述传感器的分类

编程题

补充:toast的使用

基本控件的属性(View)

如何新建菜单

***双向传递数据的核心代码框架

双向传递数据示例(求和)

***双向传递数据+自定义广播示例

系统广播示例(监听拨打电话)

选择题

刷题

【Android】期末选择题和判断题_android判断题_Lotay_天天的博客-CSDN博客

Android期末复习篇_传智课后习题以及答案(选择、填空、判断、简答、编码题)_2、请编写一个数据传递的小程序,要求在第一个界面输入用户名和工作岗位,第二个界_scl、的博客-CSDN博客

Android基础最全题库_android题库_没有谁可以给你想要的生活的博客-CSDN博客

https://www.cnblogs.com/shuzijunofficial/p/14775323.html

Android笔试题大全(持续更新中),android实战项目健身_android笔试题及答案_m0_66264324的博客-CSDN博客

附一份安卓选择题汇总:

链接:https://pan.baidu.com/s/1BinNvd7N_dmKI913sIx4AA?pwd=WHY6 

选择题知识点汇总

Activity

  • 创建菜单的代码:getMenuInflater().inflate(R.menu.main_menu,menu);
  • onCreate()方法在Activity生命周期中只调用一次
  • 七个回调函数:
    • onCreate() Activity启动后第一个被调用的函数,常用来进行Activity的初始化,例如创建View、绑定 数据或恢复信息等。
    • onStart() 当Activity显示在屏幕上时(此刻用户尚不能交互),该函数被调用。
    • onResume() 当用户可以与Activity交互时(此时Activity成为前台程序),被调用。
    • onPause() 当Activity进入暂停状态时(部分遮挡),该函数被调用。主要用来释放CPU资源、保存持久 数据、关闭动画等。
    • onStop() 当Activity对用户不可见后,该函数被调用,Activity进入停止状态。
    • onRestart() 当Activity从停止stop状态进入start状态前,调用该函数。
    • onDestroy() 在Activity被终止前,即进入非活动状态前,该函数被调用。 有两种情况该函数会被调用:(1)当程序主动调用finish()函数;(2)程序被Android系统终结。
  • Log方法示例:Log.d(myTAG, "创建"); (输出调试信息)

Intent

  • 如何创建并启动Intent(显示):
  • 创建:Intent intent = new Intent(A_Activity.this, B_Activity.class);
  • 启动:startActivity(intent);
  • 如何创建并启动Intent(隐示):
  • 创建:Intent intent = new Intent( Intent.ACTION_VIEW,Uri.parse("http://www.163.com") ) (参数:Intent动作,Intent数据)
  • 也可通过setAction添加动作,通过setData添加数据:

        

  • 启动:startActivity(intent);

  • bubble如何存放/获取序列化对象:

  • 双向传递数据时:
  • 如何启动Activity:startActivityForResult ( Intent intent , int requestCode )
    • requestCode的作用:一般是自设的正整数,主要目的用于区别是谁回传的数据
    • 如何回传数据:setResult ( int resultCode, Intent intent )
    • 系统提供了RESULT_OK (-1)、RESULT_CANCELED (0)等常量值作 为resultCode ,没有特殊情况可以直接用RESULT_OK
  • 如何对回传的数据进行处理:onActivityResult

Broadcast

广播发送端,主要进行intent的定义和广播发送

主要步骤:

①创建intent:ntent intent=new Intent("wust.zz.mybroadcast");(自定义广播标识串)

②通过bubble添加数据

③发送广播:sendBroadcast(intent)

BroadcastReceiver

广播接收端,通过receiver和广播过滤接受广播

主要步骤:

①自定义Receiver

②注册接收器

③判断是否接受到了相应的广播,进行处理:

判断逻辑:if(intent.getAction().equals("wust.zz.mybroadcast"))(自定义广播标识)

如何自定义Receiver

  • 自定义MyReceiver,首先继承BroadcastReceiver方法public class MyReceiver extends BroadcastReceiver
  • 重写onReceive方法:public void onReceive(Context context, Intent intent);当Receiver接收到相应的广播时,会触发onReceive事件

如何注册接收器

静态注册

AndroidManifest.xml文件中添加注册信息,用Intent过滤器来设置接收哪种广播

工作流程:当系统广播消息后,所有已经注册的BroadcastReceiver会检查注册时的IntentFilter是否有与发送的广播消息(Intent)相匹配,若匹配则会调用BroadcastReceiver的onReceive()方法

示例中的广播是系统广播

也可以自定义广播:<action android:name="wust.zz.mybroadcast" />;这里就是自定义了广播的标识串

这个标识有三个地方能用到:

①发送广播时:用于创建Intent对象,Intent intent = new Intent("广播标识串");

②manifest中注册时用:作为BroadcastReceiver的intent-filter的action name值

③处理消息时:在onReceive()方法中作为消息类型的判断用

动态注册

IntentFilter filter = new IntentFilter();

filter.addAction("wust.zz.mybroadcast");

动态注册涉及到一个问题,如何将注册的广播添加到BroadcastReceiver中?

BroadcastReceiver receiver = new MyReceiver();

registerReceiver( receiver , filter);

如果需要注销某个广播:

unregisterReceiver(receiver);

Service

自定义Service:public class MyService extends Service

  • onCreate:由startService()触发
  • onStartCommand:服务的主要代码写在onStartCommand()中,不推荐使用onStart()
  • onDestroy:由stopService()或stopSelf()触发
  • 绑定服务:public IBinder onBind(Intent intent)

如何启动/关闭service:

  • startService(intent)
  • stopService(intent)

SharedPreferences

SharedPreferences用于数据的存储和读取

三种访问模式

私有(MODE_PRIVATE):仅有创建程序有权限对其进行读取或写入

全局读(MODE_WORLD_READABLE):不仅创建程序可以对其进行读取或写入,其他应用程序也读取操作的权限,但没有写入操作的权限

全局写(MODE_WORLD_WRITEABLE):创建程序和其他程序都可以对其进行写入操作,但没有读取的权限

可以设置混合访问模式:

public static int MODE = Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE;

全局读+全局写

如何创建

通过getSharedPreferences方法创建

SharedPreferences sharedPreferences = getSharedPreferences(PREFERENCE_NAME, MODE);

如何存储/修改

通过SharedPreferences.Editor类对SharedPreferences进行修改;通过commit()函数保存修改的内容:


数据存储目录:SharedPreferences文件保存在/data/data/<package name>/shared_prefs目录下

如何读取

内部存储

文件保存的路径:/data/data/<package name>/files目录下

openFileOutput:写文件

openFileInput:读文件

openFileOutput

openFileOutput()函数为写入数据做准备而打开的应用程序文件,如果指定的文件不存在,则创建一个新的文件

四种文件操作模式:

模式

说明

MODE_PRIVATE

私有模式,缺陷模式,文件仅能够被文件创建程序访问,或具有相同UID的程序访问。

MODE_APPEND

追加模式,如果文件已经存在,则在文件的结尾处添加新数据。

MODE_WORLD_READABLE

全局读模式,允许任何程序读取私有文件。

MODE_WORLD_WRITEABLE

全局写模式,允许任何程序写入私有文件。

示例:

第1行代码定义了建立文件的名称fileDemo.txt

第2行代码使用openFileOutput()函数以私有模式建立文件

第4行代码调用write()函数将数据写入文件

第5行代码调用flush()函数将所有剩余的数据写入文件

第6行代码调用close()函数关闭FileOutputStream

为了提高文件系统的性能,一般调用write()函数时,如果写入的数据量较小,系统会把数据保存在数据缓冲区中,等数据量累积到一定程度时再一次性的写入文件中;由上可知,在调用close()函数关闭文件前,务必要调用flush()函数,将缓冲区内所有的数据写入文件

openFileInput

openFileInput()函数为读取数据做准备而打开应用程序私文件

SD卡

文件存储在/sdcard目录下

资源文件

  • 原始格式文件可以是任何格式的文件,例如视频格式文件、音频格式文件、图像文件和数据文件等等,存放在/res/raw目录下;
  • 读取原始格式文件,首先需要调用getResource()函数获得资源对象,然后通过调用资源对象的openRawResource()函数,以二进制流的形式打开指定的原始格式文件。在读取文件结束后,调用close()函数关闭文件流
  • XML文件,一般用来保存格式化的数据,存放在/res/xml目录下
  • 读取XML格式文件,首先通过调用资源对象的getXml()函数,获取到XML解析器XmlPullParser

SQLite

SQLiteOpenHelper(创建数据库)

常用方法:

  1. 创建 or 打开 可读/写的数据库(通过 返回的SQLiteDatabase对象 进行操作)getWritableDatabase()
  2. 创建 or 打开 可读的数据库(通过 返回的SQLiteDatabase对象 进行操作)getReadableDatabase()
  3. 数据库第1次创建时 则会调用,即 第1次调用 getWritableDatabase() / getReadableDatabase()时调用(在继承 SQLiteOpenHelper类的子类中复写)onCreate(SQLiteDatabase db)
  4. 数据库升级时自动调用(在继承SQLiteOpenHelper类的子类中复写)
    onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
  5. 关闭数据库 close()

SQLiteDatabase(进行具体操作)

SQLiteDatabase db

  1. db.execSQL():执行具体的sql语句
  2. db.close():关闭数据库

静态方法:

  1. SQLiteDatabase.openOrCreateDatabase():打开或创建数据库
  2. SQLiteDatabase.deleteDatabase():删除数据库

ContentProvider

ContentProvider和ContentResolver之间是一对多的关系,一个ContentProvider可以提供多个数据集,可为多个ContentResolver服务

URI

统一资源标识符,用于标识资源的位置;

URI的格式:

需要记住,URI的固定前缀,是content://

如何自定义

ContentResolver

如何创建

ContentResolver resolver = getContentResolver();

如何增删改查

resolver.query()、insert()、update()、delete()

HttpURLConnection

get和post请求的区别

get的数据是在HTTP的头部传送的,而post的数据则是在HTTP请求的内容里传送。

简单的说:post传输数据时,不需要在URL中显示出来,而get方 法要在URL中显示

基本操作

  • 创建url对象:URL url = new URL(httpUrl);(httpUrl是自定义的网址)
  • 创建HttpURLConnection对象:HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
  • 设置请求方式(默认get):httpURLConnection.setRequestMethod("GET");
  • 建立连接:httpURLConnection.connect();
  • 获取请求状态码: httpURLConnection.getResponseCode();

MediaPlayer

prepare():完成视频播放前的准备工作

setDataSource():设置多媒体数据来源

如何创建:

MediaPlayer mediaPlayer = new MediaPlayer();

MediaPlayer mediaPlayer = MediaPlayer.create();

简答题

简述Android体系结构

  • 应用程序层:包括各类与用户直接交互的应用程序,或由java语言编写的运行于后台的服务程序;例如:SMS短信,电话拨号,图片浏览器,日历,游戏, 地图,web浏览器等程序,以及开发人员开发的其他应用 程序
  • 应用程序框架层:

  • 系统运行库层:
    • 程序库:C库、媒体库、Surface Manager、WebKit、SGL、3Dlibraries、FreeType、SSL、SQLite
    • Android 运行库:每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例

关于JVM和Dalvik VM:

JVM:执行class文件(字节码 )

Dalvik VM:执行dex文件(Dalvik Executes缩写)

Dalvik最大的好处在于可以根据硬件实现更大的优化,这更适合移动设备

  • Linux 内核层:Android的核心系统服务依赖于Linux内核,如安全性,内存管理,进程管理,网络协议栈和驱动模型

*简述Android的四大组件及其功能

①Activity:用于界面展示与用户交互

②Service:Service是Android系统四大组件之一,它是一种长生命周期的,没有可视化界面,运行于后台的一种服务程序,用于执行后台任务

③BroadcastReceiver:对发送出来的Broadcast进行过滤并响应,用于传递/通知某种事件

④ContentProvider:提供了应用程序之间共享数据的方法,一个应用程序可以通过ContentProvider将自己的数据暴露出去;应用程序通过ContentProvider访问数据而不需要关心数据具体的存储及访问过程,这样既提高了数据的访问效率,同时也保护了数据

简述Android系统特点

在内存和进程管理方面,Android有自己的运行时和虚拟机;

Android将界面设计与程序逻辑分离,界面布局使用XML文件,有利于界面的修改和维护;

Android提供轻量级的进程间通讯机制Intent,使跨进程组件通信和发送系统广播成为可能

Android提供Service作为无用户界面、长时间后台运行组件;

支持快速、高效的数据存储

为了跨进程共享数据,Android提供ContentProvider接口

可以无需了解数据源、路径的情况下,对共享数据进行查询、添加、删除和更新等操作

*简述Activity的生命周期

答案1:Activity生命周期指Activity从启动到销毁的过程

Activity表现为四种状态:

  1. 活动状态Active:Activity在用户界面中处于最上层,完全能被用户看到,能够与用户进行交互。
  2. 暂停状态Pause:Activity在界面上被部分遮挡,不再处于用户界面的最上层,且不能够与用户进行交互。(如弹出选择框时)
  3. 停止状态Stop:Activity被其他Activity全部遮挡,界面完全不能被用户看到。(如玩游戏时来电了)
  4. 非活动状态Dead:Activity没有启动或者被finish()。

答案2:

onCreate():创建活动,做一些数据初始化的操作

onStart():由不可见变为可见

onResume():可以与用户进行交互,位于栈顶

onPause():暂停,启动或恢复另一个活动时调用

onStop():停止,变为不可见

onRestart():由停止状态变为运行状态

onDestroy():销毁

简述Activity栈的工作流程

  1. Activity栈后进先出
  2. 新的Activity启动之后入栈,处于活动状态,如果按了返回键或者Activity被finish,则该Activity出栈,位于非活动状态;
  3. 位于栈底的暂停状态或者停止状态的Activity被系统强制终止后也会出栈,变为非活动状态

简述Activity生命周期的事件回调函数

简述Android架构的MVC模式

MVC目的:M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式,C可确保M和V的同步,一旦M改变,V能同步更新

简述如何设置View的宽度

①通过wrap_content设置:自适应内容,表示和自身内容一样的长度

②通过match_parent(fill_parent)设置,表示和父组件一样的长度

③设置具体的宽度:android:layout_width="xxdp"

④在代码中通过setLayoutParams来设置

*简述6种常见的页面布局(分别有什么特点)

RelativeLayout

相对布局是一种非常灵活的布局方式;

通过指定界面元素与其他元素的相对位置关系,来确定界面中所有元素的布局位置;

优点:能够最大程度保证在各种屏幕尺寸的手机上正确显示界面布局


常用布局:

居中:

margin(设置组件与父容器的间距):

padding(设置组件内部元素间的间距):

*LinearLayout

线性布局是常用的一种布局方式,支持横向和纵向排列子视图

通过设置android:orientation来确定是垂直还是水平布局

android:orientation="vertical" 垂直布局(垂直布局时:每行仅包含一个界面元素)

android:orientation="horizontal" 水平布局 (默认)(水平布局时:所有界面元素都在一行)

FrameLayout

FrameLayout中所有界面对象都是从屏幕的左上角(0,0)开始布局,不能指定位置;

多个组件层叠排列,上一层的会覆盖下一层的控件;

第一个添加的组件放到最底层,最后添加的显示在最上面

TableLayout

表格布局以行列的形式管理子元素,每一行是一个TableRow布局对象,当然也可以是普通的View对象;TableRow表现为一个水平LinearLayout,里面的元素会水平排列

GridLayout

Android4.0新支持的布局

网格布局将用户界面划分为网格,可以方便地实现等分、不等分的布局;界面元素可随意摆放在网格中,网格布局比表格布局更灵活;

在网格布局中界面元素可以占用多个网格

AbsoluteLayout

绝对布局能通过指定界面元素的坐标位置,来确定用户界面的整体布局。已经不推荐使用

绝对布局不能够根据不同屏幕对界面元素进行位置调整

简述Intent和Bundle的作用

Intent是一种组件之间消息传递机制,它是一个动作的完整描述:包含了动作产生组件、接收组件和传递的数据信息;Intent主要用途有启动Activity、Service,在Android系统上发布Broadcast消息

Bundle类是一个存储和管理key-value值对的类,多应用于Activity之间相互传递值

*简述Intent启动Activity的两种启动方式

显示启动

在Intent中指明要启动的Activity类

代码示例:

隐式启动

无需指明具体启动哪一个Activity,而由Android系统根据Intent的动作和数据来决定启动哪一个Activity

代码示例:

简述Intent双向传递数据的原理

简述消息广播标识串的用途

  1. 发送广播时:用于创建Intent对象,Intent intent = new Intent("广播标识串");
  2. manifest中注册时用:作为BroadcastReceiver的intent-filter的action name值
  3. 处理消息时:在onReceive()方法中作为消息类型的判断用

*简述Service的类型(两种启动方式的不同)

简述Service的生命周期

在服务未被创建时,系统会先调用服务的onCreate()方法,接着调用 onStartCommand()方法。如果调用startService()方法前服务已经被创建,多次调startService() 方法并不会导致多次创建服务,但会导致多次调onStartCommand() 方法。

如果调用方法前服务已经被绑定,多次调用bindService()并不会导致多次创建服务及绑定(也就是 onCreate()和onBind()方法并不会被多次调用)。

简述SharedPreferences及其三种访问模式

SharedPreferences是一种轻量级的数据保存方式

通过SharedPreferences可以将NVP(Name/Value Pair,名称/值对)保存在Android的文件系统中,而且SharedPreferences完全屏蔽对文件系统的操作过程;SharedPreferences不仅能够保存数据,还能够实现不同应用程序间的数据共享

SharedPreferences支持三种访问模式

  1. 私有(MODE_PRIVATE):仅有创建程序有权限对其进行读取或写入。
  2. 全局读(MODE_WORLD_READABLE):不仅创建程序可以对其进行读取或写入,其他应用程序也读取操作的权限,但没有写入操作的权限。
  3. 全局写(MODE_WORLD_WRITEABLE):创建程序和其他程序都可以对其进行写入操作,但没有读取的权限。

简述访问其他应用程序的SharedPreferences必须满足的三个条件

  1. 共享者需要将SharedPreferences的访问模式设置为全局读或全局写
  2. 访问者需要知道共享者的包名称和SharedPreferences的名称,以通过Context获得SharedPreferences对象
  3. 访问者需要确切知道每个数据的名称和数据类型,用以正确读取数据

简述Android文件存储的方式

Android使用的是基于Linux的文件系统

  1. 内部存储:在内部存储器上进行文件写入和读取
  2. 外部存储:在SD卡上进行存储;SD卡使用的是FAT(File Allocation Table)的文件系统,不支持访问模式和权限控制,但可以通过Linux文件系统的文件访问权限的控制保证文件的私密性
  3. 资源文件:程序开发人员可以将程序开发阶段已经准备好的原始格式文件和XML文件分别存放在/res/raw和/res/xml目录下,供应用程序在运行时进行访问

原始格式文件可以是任何格式的文件,例如视频格式文件、音频格式文件、图像文件和数据文件等等,在应用程序编译和打包时,/res/raw目录下的所有文件都会保留原有格式不变

/res/xml目录下的XML文件,一般用来保存格式化的数据,在应用程序编译和打包时会将XML文件转换为高效的二进制格式,应用程序运行时会以特殊的方式进行访问

列举一些系统ContentProvider

进程的基本概念

简述Handler消息处理机制

  1. 不直接在子线程中进行 UI 操作,子线程通过 Handler 将Message 传送出去
  2. 主线程中的Handler接收这个Message,然后进行 UI 等相关操作

简述TCP/IP网络层次结构

简述什么是socket

网络上的两个应用程序之间的通信是分层进行的,socket是应用程序进行网络通信的接口

简述端口号的作用

如果要发起网络连接,不仅需要知道远程机器的地址或名字。而且,还需要一个端口号。客户端和服务器必须事先约定所使用的端口,如果系统两部分所使用的端口不一致,那就不能进行通信

简述HttpURLConnection的基本工作流程

get:

post:

简述什么是Fragment及其优点

Fragment(碎片)是一种可以嵌入在Activity中的 UI 片段,它能让程序更加合理和充分地利用屏幕空间

优点:

Fragment可以轻松地创建动态灵活的UI设计,可以适应不同的屏幕尺寸,从手机到平板电脑

Fragment可将Activity分离成多个可重用的组件,每个都有它自己的生命周期和UI

Fragment是一个独立的模块,紧紧地与Activity绑定在一起。可以在运行中动态地移除、加入、替换等。

Fragment 替代TabActivity做导航,性能更好

Fragment 在4.2版本中新增嵌套fragment方法,能够生成更好的界面 效果

Fragment做局部内容更新更方便,原来为了到达这一点要把多个布局 放到一个Activity里面,现在可以用多个Fragment来代替,只有在需要的时候才加载Fragment,提高性能

简述传感器的分类

编程题

补充:toast的使用

Toast 在应用程序上浮动显示少量信息给用户,它永远不会获得焦点,不影响用户的输入等操作

基本用法:

Toast toast=Toast.makeText( 参数1,参数2,参数3 );

toast.show();

参数1:当前的上下文环境;getApplicationContext()或者是某个Activity.this

参数2:要显示的字符串

参数3:显示时间的长短:Toast.LENGTH_SHORT或 Toast.LENGTH_LONG

基本控件的属性(View)

(有可能就是给出一个页面,填写如何设置控件的属性来实现这个页面)

如何新建菜单

菜单资源示例:

这里的名称和创建时的名称对应,上面是main.xml,这里就得是R.menu.main

同样,这里的R.id.menu_item1应该为R.id.menu1(我是从不同的代码拼接的,注意区分)

***双向传递数据的核心代码框架

A端收到回传的数据:

双向传递数据示例(求和)

***双向传递数据+自定义广播示例

系统广播示例(监听拨打电话)

(如何添加广播的代码要会)

(这一部分代码也要会,记住如何startActivity)

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

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

相关文章

【学习笔记】Unity基础(七)【uGUI基础、利用render Texture实现小地图功能】

目录 一 Canvas1.1 三种Render Space渲染空间 screen1.2 canvas scaler画布缩放器1.3sprite1.4 sprite packer1.5 unity目录1.6 RuleTile Tilemap1.7 sprite packer1.8 sorting layer 二 rect transform2.1 pivot 中轴 中心点2.2 anchor 锚点2.3 uGUI源代码 三 EventSystem3.1 …

【paddlecls】多机多卡-linux

1. 安装docker&#xff08;引擎&#xff09;&#xff1a; &#xff08;https://docs.docker.com/engine/install/ubuntu/&#xff09; Install Docker Engine on Ubuntu To get started with Docker Engine on Ubuntu, make sure you meet the prerequisites, and then follo…

助力工业物联网,工业大数据之工业大数据之油站维度设计【十四】

文章目录 01&#xff1a;油站维度设计02&#xff1a;油站维度构建 01&#xff1a;油站维度设计 目标&#xff1a;掌握油站维度的需求与设计 路径 step1&#xff1a;需求step2&#xff1a;设计 实施 需求&#xff1a;构建油站维度表&#xff0c;得到油站id、油站名称、油站所属…

北美机器人市场迎来销售放缓,未来路在何方?

原创 | 文 BFT机器人 引言 Introduction 北美机器人销售在2022年创下了历史记录&#xff0c;但在2023年第一季度放缓。据推进自动化协会&#xff08;A3&#xff09;提供的数据显示&#xff0c;2023年第一季度&#xff0c;北美公司仅订购了9,168台机器人&#xff0c;较2022年同…

C++进阶 —— map

目录 一&#xff0c;map介绍 类pair 函数模板make_pair 二&#xff0c;map使用 一&#xff0c;map介绍 map是关联容器&#xff0c;按照特定的次序存储元素&#xff08;由键key和值value组合而成的&#xff09;&#xff1b;键key通常用于排序及唯一标识元素&#xff0c;而值…

不愧是华为出来的大佬,实在是太强了.....

前段时间公司缺人&#xff0c;也面了许多测试&#xff0c;一开始瞄准的就是中级水准&#xff0c;当然也没指望能来大牛&#xff0c;提供的薪资在15-20k这个范围&#xff0c;来面试的人有很多&#xff0c;但是平均水平真的让人很失望。看了简历很多上面都是写有4年工作经验&…

Pillow(PIL)入门教程(非常详细)以及python实现jpg,png、ico、bmp格式互转大全

概述 Pillow库的特点&#xff1a; python3安装pillow&#xff1a; ​Pillow是什么 Pillow创建Image对象&#xff1a; jpg,png&#xff1a; jpg与png格式互转代码&#xff1a; 概述 Pillow 库&#xff08;有时也称 PIL 库&#xff09; 是 Python 图像处理的基础库&#xf…

计划学习网络安全,需要学习哪些知识,应该怎么学习?

虽然现在的网络安全大都是指渗透测试&#xff0c;但是并不代表只有渗透测试这一个方向&#xff0c;除此之外还有二进制逆向这个方向。以下会对这两个方向分别对您进行详解。 渗透测试方向 1、学习编程语言 &#xff08;1&#xff09;网站如何搭建的&#xff1f;HTML、CSS、J…

SpingBoot+LayUI 实现酒店管理系统编写

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

晚上12点接到面试邀约电话,待业一个月的我却拒绝了....

前言 一位测试朋友最近一直在找工作&#xff0c;前两天刚拒绝了一个面试。那天晚上12点多&#xff0c;他接到一个HR的面试电话&#xff0c;让他第二天早上10点去公司面试。朋友和HR聊了两句&#xff0c;了解到这位HR经常加班&#xff0c;于是果断拒绝了这个面试。 我还为他可惜…

AHB-to-APB Bridge——06testbench、env、base_test、scb

框架&#xff1a; testbench&#xff1a; HCLK_PCLK_RATIO&#xff1a;随机定义hclk pclk比率&#xff1b;各个接口clk、rst连接&#xff1b;生成满足相应比率的pclk&#xff1b;与DUT的连接&#xff1b;将vif set到agt中去&#xff1b;agt在set到底层 关于rest_if&#xff…

如何保证三个线程按顺序执行?不会我教你

&#x1f468;‍&#x1f393;作者&#xff1a;bug菌 ✏️博客&#xff1a;CSDN、掘金、infoQ、51CTO等 &#x1f389;简介&#xff1a;CSDN|阿里云|华为云|51CTO等社区博客专家&#xff0c;历届博客之星Top30&#xff0c;掘金年度人气作者Top40&#xff0c;51CTO年度博主Top12…

仪表板展示 | DataEase看世界:数据呈现世界油价变化

背景介绍 最近几个月&#xff0c;全球能源市场一直处于动荡不安的状态&#xff0c;与石油相关的新闻也非常频繁。2023年2月10日&#xff0c;面对西方多轮限价举措&#xff0c;俄罗斯副总理亚历山大诺瓦克宣布&#xff0c;俄罗斯将在3月把每日原油产量下调50万桶。目前&#xf…

FOFA-攻防挑战

记录一下中途短暂的辉煌时刻 辉煌一刻谁都有,别拿一刻当永久 在昨天初尝战果之后&#xff0c;今天又习惯性的打开 https://vulfocus.cn/ 发现今天还有挑战赛&#xff0c;按捺不住躁动的心&#xff0c;又开始了学习。今天主要拿下的是这四个镜像&#xff0c;同时我也会对我了解…

前端SKU一站式解决方案 - Geek-SKU

因为业务需要且市场上的UI框架与插件市场内没有简易的用法并且不够全面萌生便了自己写一个SKU组件的想法&#xff0c;于是Geek-SKU便应运而生。 现在的SKU组件已支持vue、uniapp&#xff0c;支持带图SKU、主题色设置、自动选择低价SKU、自动展示价格区间等&#xff0c;让您更便…

浏览器自动填充但是数据为空的问题

问题背景 公司项目中登录页为了方便&#xff0c;需要允许浏览器自动填充账号密码。这个在很多项目都很常见&#xff0c;但是测试中出现了这样一个问题&#xff1a;视觉上已经自动填充账号密码&#xff0c; 但是当点击密码的小眼睛或者点击登录时&#xff0c;会清空掉填充的数据…

火爆全网,性能测试-全链路压测实战总结,从需求到实战...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 流程导图 梳理阶段…

SpringBoot+Vue 的家政服务管理平台+数据库(附源码)

文章目录 1. 背景2.主要技术3. 可行性分析4.系统设计5系统的详细设计与实现5.1前台模块设计5.2后台功能模块 源码下载地址 1. 背景 本系统主要是设计出家政服务管理平台&#xff0c;基于B/S构架&#xff0c;后台数据库采用了Mysql&#xff0c;可以使数据的查询和存储变得更加有…

Linux函数库管理

文章目录 Linux函数库管理动态与静态函数库静态函数库动态函数库 ldconfig与 /etc/ld.so.confldconfig使用案例 程序的动态函数库解析&#xff1a;lddldd使用案例 校验软件的正确性常见的校验软件有哪些&#xff1f;使用案例 Linux函数库管理 在 Linux 操作系统中&#xff0c;…

【算法竞赛进阶指南】141.周期 题解 KMP 最小循环节

题目描述 一个字符串的前缀是从第一个字符开始的连续若干个字符&#xff0c;例如 abaab 共有 5 5 5 个前缀&#xff0c;分别是 a&#xff0c;ab&#xff0c;aba&#xff0c;abaa&#xff0c;abaab。 我们希望知道一个 N N N 位字符串 S S S 的前缀是否具有循环节。 换言之…