每一次去面试就是一次对自我知识的总结和审核,如果你想拿到大厂的offer.成功的通过一面二面三面四面,那么我分享的面试学习路线你可以来参考一下(PDF文档版见如下)那么面试中最常问的小知识点不懂的透彻怕是不行了

(顺手留下GitHub链接,需要获取相关面试等内容的可以自己去找)
https://github.com/xiangjiana/Android-MS
(VX:mm14525201314)
1 、四大组件是什么
1)Activity: 用户可操作的可视化界面,为用户提供一个完成操作指令的窗口。一个 Activity通常是一个单独的屏幕,Activity通过Intent来进行通信。Android中会维持一个Activity Stack,当一个新 Activity 创建时,它就会放到栈顶,这个 Activity 就处于运行状态。
2)Service: 服务,运行在手机后台,适合执行不需和用户交互且还需长期运行的任务。
3)ContentProvider: 内容提供者,使一个应用程序的指定数据集提供给其他应用程序,其他应用可通过 ContentResolver
类从该内容提供者中获取或存入数据。它提供了一种跨进程数据共享的方式,当数据被修改后,ContentResolver
接口的 notifyChange
函数通知那些注册监控特定 URI
的 ContentObserver
对象。
如 果 ContentProvider
和 调 用 者 在 同 一 进 程 中 , ContentProvider
的 方 法(query/insert/update/delete 等)和调用者在同一线程中;如果ContentProvider
和调用者不在同一进程,ContentProvider
方法会运行在它自身进程的一个 Binder 线程中。
4)Broadcast Receiver: 广播接收者,运用在应用程序间传输信息,可以使用广播接收器来让应用对一个外部事件做出响应。
2、四大组件的生命周期和简单用法
1)Activity: onCreate()
->onStart()
->onResume()
->onPause()
->onStop()
->onDestory()
onCreate()
:为 Activity 设置布局,此时界面还不可见;onStart()
: Activity 可见但还不能与用户交互,不能获得焦点onRestart()
: 重新启动 Activity 时被回调onResume()
: Activity 可见且可与用户进行交互onPause()
: 当前 Activity 暂停,不可与用户交互,但还可见。在新 Activity 启动前被系统调用保存现有的 Activity 中的持久数据、停止动画等。onStop()
: 当 Activity 被新的 Activity 覆盖不可见时被系统调用onDestory()
: 当 Activity 被系统销毁杀掉或是由于内存不足时调用
2)Service
a) onBind 方式绑定的: onCreate
->onBind
->onUnBind
->onDestory
(不管调用 bindService
几次,onCreate
只会调用一次,onStart
不会被调用,建立连接后,service 会一直运行,直到调用unBindService
或是之前调用的 bindService
的 Context 不存在了,系统会自动停止 Service,对应的 onDestory
会被调用)
b) startService 启动的: onCreate
->onStartCommand
->onDestory
(start 多次,onCreate
只会被调用一次,onStart
会调用多次,该service会在后台运行,直至被调用stopService
或是stopSelf
)
c) 又被启动又被绑定的服务,不管如何调用 onCreate()
只被调用一次,startService
调用多少次,onStart
就会被调用多少次,而 unbindService
不会停止服务,必须调用 stopService
或是stopSelf
来停止服务。必须unbindService
和 stopService(stopSelf)
同时都调用了才会停止服务。
3)BroadcastReceiver
a) 动态注册: 存活周期是在 Context.registerReceiver
和Context.unregisterReceiver
之间,BroadcastReceiver
每次收到广播都是使用注册传入的对象处理的。
b) 静态注册: 进程在的情况下,receiver 会正常收到广播,调用 onReceive
方法;生命周期只存活在 onReceive
函数中,此方法结束BroadcastReceiver
就销毁了。onReceive()
只有十几秒存活时间,在 onReceive()
内操作超过 10S,就会报 ANR
。
进程不存在的情况,广播相应的进程会被拉活,Application.onCreate
会被调用,再调用onReceive
。
4)ContentProvider
应该和应用的生命周期一样,它属于系统应用,应用启动时,它会跟着初始化,应用关闭或被杀,它会跟着结束。
3 、Activity之间的通信方式
1)通过 Intent 方式传递参数跳转
2)通过广播方式
3)通过接口回调方式
4)借助类的静态变量或全局变量
5)借助 SharedPreference 或是外部存储,如数据库或本地文件
4 、Activity各种情况下的生命周期
1) 两 个 Activity(A->B) 切 换 (B 正 常 的 Activity) 的 生 命 周 期 :
onPause(A)
->onCreate(B)
->onStart(B)
->onResume(B)
->oStop(A)
这时如果按回退键回退到 A onPause(B)
->onRestart(A)
->onStart(A)
->onResume(A)
->oStop(B)
如果在切换到 B 后调用了 A.finish(),则会走到 onDestory(A),这时点回退键会退出应用
2) 两个 Activity(A->B)切换(B 透明主题的 Activity 或是 Dialog 风格的 Acivity)的生命周期:
onPause(A)
->onCreate(B)
->onStart(B)
->onResume(B)
这时如果回退到 A onPause(B)
->onResume(A)
->oStop(B)
->onDestory(B)
3) Activity(A) 启 动 后 点 击 Home 键 再 回 到 应 用 的 生 命 周 期 :
onPause(A)
->oStop(A)
->onRestart(A)
->onStart(A)
->onResume(A)
5 、横竖屏切换的时候,Activity各种情况下的生命周期
1) 切 换 横 屏 时 :
onSaveInstanceState
->onPause
->onStop
->onDestory
->onCreate
->onStart
->onRestoreInstanceState
->onResume
2) 切换竖屏时:会打印两次相同的 log
onSaveInstanceState
->onPause
->onStop
->onDestory
->onCreate
->onStart
->onRestoreInstanceState
->onResume
->onSaveInstanceState
->onPause
->onStop
->onDestory
->onCreate
->onStart
->onRestoreInstanceState
->onResume
3) 如 果 在 AndroidMainfest.xml 中 修 改 该 Activity 的 属 性 , 添 加android:configChanges="orientation"
横竖屏切换,打印的 log 一样,同 1)
4) 如 果 AndroidMainfest.xml
中 该 Activity 中的 android:configChanges="orientation|keyboardHidden"
,则只会打印onConfigurationChanged->
6 、Activity 与Fragment 之间生命周期比较Fragment 生 命 周 期 :
Fragment 生 命 周 期 :
onAttach
->onCreate
->onCreateView
->onActivityCreated
->onStart
->onResume
->onPause
->onStop
->onDestoryView
->onDestory
->onDetach
切 换 到 该 Fragment :
onAttach
->onCreate
->onCreateView
->onActivityCreated
->onStart
->onResume
按下 Power 键: onPause
->onSaveInstanceState
->onStop
点亮屏幕解锁: onStart
->onRestoreInstanceState
->onResume
切换到其他 Fragment: onPause
->onStop
->onDestoryView
切回到该 Fragment: onCreateView
->onActivityCreated
->onStart
->onResume
退出应用: onPause
->onStop
->onDestoryView
->onDestory
->onDetach
7 、Activity 上有 Dialog 的时候按 Home 键时的生命周期
AlertDialog
并不会影响Activity的生命周期,按Home键后才会使Activity走onPause
->onStop
,AlertDialog
只是一个组件,并不会使 Activity 进入后台。
8 、两个Activity之间跳转时必然会执行的是哪几个方法?
前一个 Activity 的 onPause
,后一个 Activity 的 onResume
9丶前台切换到后台,然后再回到前台,Activity 生命周期回调方法 。 弹出 Dialog , 生命值周期回调方法。
1) 前 台 切 换 到 后 台 , 会 执 行 onPause
->onStop
再 回 到 前 台 , 会 执 行onRestart
->onStart
->onResume
2) 弹出 Dialog,并不会影响 Activity 生命周期
10 、Activity 的四种启动模式对比
1)standard:
标准启动模式(默认),每启动一次 Activity,都会创建一个实例,即使从 ActivityAstartActivity
ActivityA
,也会再次创建 A 的实例放于栈顶,当回退时,回到上一个 ActivityA
的实例。
2) singleTop:
栈顶复用模式,每次启动 Activity,如果待启动的 Activity 位于栈顶,则不会重新 创 建 Activity 的 实 例 , 即 不 会 走 onCreate
->onStart
, 会 直 接 进 入 Activity 的onPause
->onNewIntent
->onResume
方法
3) singleInstance:
单一实例模式,整个手机操作系统里只有一个该 Activity 实例存在,没有
其他 Actvity,后续请求均不会创建新的 Activity。若 task 中存在实例,执行实例的onNewIntent()
。
应用场景: 闹钟、浏览器、电话
4) singleTask:
栈内复用,启动的 Activity 如果在指定的 taskAffinity
的 task 栈中存在相应的实例,则会把它上面的 Activity 都出栈,直到当前 Activity 实例位于栈顶,执行相应的onNewIntent()
方法。如果指定的 task 不存在,创建指定的taskAffinity
的 task,taskAffinity
的作用,进入指写 taskAffinity
的 task,如果指定的 task 存在,将 task 移到前台,如果指定的 task不存在,创建指定的 taskAffinity
的 task.
应用场景:应用的主页面
11 、Activity 状态保存于恢复
Activity 被主动回收时,如按下 Back 键,系统不会保存它的状态,只有被动回收时,虽然这个 Activity 实例已被销毁,但系统在新建一个 Activity 实例时,会带上先前被回收 Activity 的信息。在当前 Activity 被销毁前调用onSaveInstanceState
(onPause
和 onStop
之间保存),重新创建 Activity 后会在 onCreate
后调用onRestoreInstanceState
(onStart
和onResume
之间被调用),它们的参数 Bundle 用来数据保存和读取的。
保存 View 状态有两个前提:View 的子类必须实现了 onSaveInstanceState
; 必须要设定 Id,这个 ID 作为 Bundle 的 Key
12 、fragment 各种情况下的生命周期
正 常 情 况 下 的 生 命 周 期 :
onAttach
->onCreate
->onCreateView
->onActivityCreated
->onStart
->onResume
->onPause
->onStop
->onDestoryView
->onDestory
->onDetach
Fragment 在 Activity 中replace onPause(旧)
->onAttach
->onCreate
->onCreateView
->onActivityCreated
->onStart
->onResume
->onStop(旧)
->onDestoryView(旧)
如果添加到 backStack
中,调用 remove()方法 fragment 的方法会走到onDestoryView
,但不会执行 onDetach()
,即 fragment 本身的实例是存在的,成员变量也存在,但是 view 被销毁了。如果新替换的 Fragment 已在 BackStack
中,则不会执行 onAttach
->onCreate
13 、Fragment 状态保存 onSaveInstanceState 是哪个类的方法,在什么情况下使用?
在对应的 FragmentActivity.onSaveInstanceState
方法会调用FragmentController.saveAllState
,其中会对 mActive
中各个 Fragment 的实例状态和 View 状态分别进行保存.当 Activity 在做状态保存和恢复的时候, 在它其中的 fragment 自然也需要做状态保存和恢复.
14 、Fragment.startActivityForResult 是和 FragmentActivity 的 的 startActivityForResult ?
如果希望在 Fragment 的onActivityResult
接收数据,就要调用Fragment.startActivityForResult
,而 不 是 Fragment.getActivity().startActivityForResult
。Fragment.startActivityForResult
->FragmentActivitymHost.HostCallbacks.onStartActivityFromFragment
->FragmentActivity.startActivityFromFragment
。 如 果 request=-1 则 直 接 调 用FragmentActivity.startActivityForResult
,它会重新计算 requestCode
,使其大于0xfffff。
15 、如何实现 Fragment 的滑动?
ViewPager+FragmentPagerAdapter+List<Fragment>
16 、fragment 之间传递数据的方式?
1) 在相应的 fragment 中编写方法,在需要回调的 fragment 里获取对应的 Fragment 实例,调用相应的方法;
2) 采用接口回调的方式进行数据传递;
a) 在Fragment1中创建一个接口及接口对应的set方法; b) 在Fragment1中调用接口的方法;
c)在 Fragment2 中实现该接口;
3) 利用第三方开源框架 EventBus
17 、service 和 和 activity 怎么进行数据交互?
1) 通过 bindService
启动服务,可以在 ServiceConnection
的onServiceConnected
中获取到Service 的实例,这样就可以调用 service 的方法,如果 service 想调用 activity 的方法,可以在 service 中定义接口类及相应的 set 方法,在 activity 中实现相应的接口,这样 service 就可以回调接口言法;
2) 通过广播方式
18丶说说 ContentProvider 、ContentResolver 丶ContentObserver 之间的关系
ContentProvider
实现各个应用程序间数据共享,用来提供内容给别的应用操作。如联系人应用中就使用了 ContentProvider
,可以在自己应用中读取和修改联系人信息,不过需要获取相应的权限。它也只是一个中间件,真正的数据源是文件或 SQLite
等。
ContentResolver
内 容 解 析 者 , 用 于 获 取 内 容 提 供 者 提 供 的 数 据 , 通 过ContentResolver.notifyChange(uri)
发出消息
ContentObserver
内容监听者,可以监听数据的改变状态,观察特定 Uri 引起的数据库变化,继而做一些相应的处理,类似于数据库中的触发器,当 ContentObserver
所观察的 Uri 发生变化时,便会触发它。
19 、请描述一下广播 BroadcastReceiver 的理解
BroadcastReceiver
是一种全局监听器,用来实现系统中不同组件之间的通信。有时候也会用来作为传输少量而且发送频率低的数据,但是如果数据的发送频率比较高或者数量比较大就不建议用广播接收者来接收了,因为这样的效率很不好,因为 BroadcastReceiver
接收数据的开销还是比较大的。
20 、广播的分类
1 )普通广播: 完全异步的,可以在同一时刻(逻辑上)被所有接收者接收到,消息传递的效率比较高,并且无法中断广播的传播。
2 ) 有序广播: 发送有序广播后,广播接收者将按预先声明的优先级依次接收 Broadcast。优先级高的优先接收到广播,而在其 onReceiver()
执行过程中,广播不会传播到下一个接收者,此时当前的广播接收者可以abortBroadcast()
来终止广播继续向下传播,也可以将 intent 中的数据进行修改设置,然后将其传播到下一个广播接收者。sendOrderedBroadcast(intent,null);//
发送有序广播
3 )粘性广播: sendStickyBroadcast()
来发送该类型的广播信息,这种的广播的最大特点是,当粘性广播发送后,最后的一个粘性广播会滞留在操作系统中。如果在粘性广播发送后的一段时间里,如果有新的符合广播的动态注册的广播接收者注册,将会收到这个广播消息,虽然这个广播是在广播接收者注册之前发送的,另外一点,对于静态注册的广播接收者来说,这个等同于普通广播。
21丶广播使用的方式和场景
1)App 全局监听:
在 AndroidManifest
中静态注册的广播接收器,一般我们在收到该消息后,
需要做一些相应的动作,而这些动作与当前 App 的组件,比如 Activity 或者 Service 的是否运行无关,比如我们在集成第三方 Push SDK 时,一般都会添加一个静态注册的BroadcastReceiver
来监听 Push 消息,当有 Push 消息过来时,会在后台做一些网络请求或者发送通知等等。
2)组件局部监听:
这种主要是在 Activity 或者 Service 中使用 registerReceiver()
动态注册的广
播接收器,因为当我们收到一些特定的消息,比如网络连接发生变化时,我们可能需要在当前 Activity 页面给用户一些 UI 上的提示,或者将 Service 中的网络请求任务暂停。所以这种动态注册的广播接收器适合特定组件的特定消息处理。
22 、在 manifest 和代码中如何注册和使用 BroadcastReceiver?
1)mainfest 中注册:
静态注册的广播接收者就是一个常驻在系统中的全局监听器,也就是说如果你应用中配置了一个静态的 BroadcastReceiver,而且你安装了应用而无论应用是否处于运行状态,广播接收者都是已经常驻在系统中了。
<receiver android:name=".MyBroadcastReceiver">
<intent-filter>
<actionandroid:name="com.smilexie.test.intent.mybroadcastreceiver"/>
</intent-filter>
</receiver>
2) 动态注册:
动态注册的广播接收者只有执行了registerReceiver
(receiver, filter)才会开始监听广播消息,并对广播消息作为相应的处理。
IntentFilter fiter = newIntentFilter("com.smilexie.test.intent.mybroadcastreceiver");
MyBroadcastReceiver receiver = new MyBroadcastReceiver();
registerReceiver(receiver, filter);
//撤销广播接受者的动态注册unregisterReceiver(receiver);
23 、本地广播和全局广播有什么差别?
1) LocalBroadcastReceiver
仅在自己的应用内发送接收广播,也就是只有自己的应用能收到,数据更加安全。广播只在这个程序里,而且效率更高。只能动态注册,在发送和注册的时候采用 LocalBroadcastManager
的 sendBroadcast
方法和 registerReceiver
方法。
2)全局广播: 发送的广播事件可被其他应用程序获取,也能响应其他应用程序发送的广播事件(可以通过 exported–是否监听其他应用程序发送的广播 在清单文件中控制) 全局广播既可以动态注册,也可以静态注册。
24 、AlertDialog,popupWindow,Activity 区别
(1)Popupwindow
在显示之前一定要设置宽高,Dialog 无此限制。
(2)Popupwindow
默认不会响应物理键盘的 back,除非显示设置了 popup.setFocusable(true)
;而在点击 back 的时候,Dialog 会消失。
(3)Popupwindow
不会给页面其他的部分添加蒙层,而 Dialog 会。
(4) Popupwindow
没 有 标 题 , Dialog 默 认 有 标 题 , 可 以 通 过dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
取消标题
(5)二者显示的时候都要设置 Gravity。如果不设置,Dialog 默认是Gravity.CENTER。
(6) 二 者 都 有 默 认 的 背 景 , 都 可 以 通 过setBackgroundDrawable(newColorDrawable(android.R.color.transparent));
去掉。
(7)Popupwindow
弹出后,取得了用户操作的响应处理权限,使得其他 UI 控件不被触发。而 AlertDialog
弹出后,点击背景,AlertDialog
会消失。
25 、Application 和 和 Activity 的 的 Context 对象的区别
1)Application Context
是伴随应用生命周期;不可以 showDialog
, startActivity
, LayoutInflation
可以startService\BindService\sendBroadcast\registerBroadcast\load Resource values
2)Activity Context
指生命周期只与当前 Activity 有关,而 Activity Context
这些操作都可以,即凡是跟 UI 相关的,都得用 Activity 做为 Context 来处理。
一个应用 Context 的数量=Activity 数量+Service 数量+1(Application 数量)
- Android 属性动画特性
- 如何导入外部数据库?
- LinearLayout、RelativeLayout、FrameLayout 的特性及对比,并介绍使用场景。
- 谈谈对接口与回调的理解
- 回调的原理
- 写一个回调 demo
- 介绍下 SurfView
- RecycleView 的使用
- 序列化的作用,以及 Android 两种序列化的区别
- 差值器
- 实现 Interpolator 接口,设置值的变化趋势,SDK 中包含了匀速插值器、加速插值器、减速
- 插值器、先加速再减速、弹
- 估值器
- 实现 TypeEvaluatior 接口
- Android 中数据存储方式
(顺手留下GitHub链接,需要获取相关面试等内容的可以自己去找)
https://github.com/xiangjiana/Android-MS

相关推荐
面试中常问的基础知识包括: 1. Activity生命周期:从onCreate()到onDestroy(),理解各个状态及转换条件。 2. Intent的作用:用于启动Activity、Service或BroadcastReceiver,传递数据。 3. Service:后台运行的...
理解Handler、Looper、AsyncTask、Thread和Runnable的区别和使用场景是面试常考内容。 5. **数据存储**:Android提供了多种数据存储方式,如SharedPreferences、SQLite数据库、文件系统、ContentProvider和Room等。...
这份压缩包“百度Android工程师面试题.zip”可能包含了各种面试常问的问题,涉及到Android应用开发的各个方面。下面,我们将详细探讨这些领域的核心概念和技能。 1. **Android体系结构**: Android系统基于Linux...
2. **Activity生命周期**:Activity的启动、暂停、恢复、停止和销毁状态,以及如何在生命周期方法中处理保存和恢复数据,是面试常考内容。 3. **Intent和Intent Filter**:Intent用于启动组件或传递数据,Intent ...
级联H桥SVG无功补偿系统在不平衡电网中的三层控制策略:电压电流双闭环PI控制、相间与相内电压均衡管理,级联H桥SVG无功补偿系统在不平衡电网中的三层控制策略:电压电流双闭环PI控制、相间与相内电压均衡管理,不平衡电网下的svg无功补偿,级联H桥svg无功补偿statcom,采用三层控制策略。 (1)第一层采用电压电流双闭环pi控制,电压电流正负序分离,电压外环通过产生基波正序有功电流三相所有H桥模块直流侧平均电压恒定,电流内环采用前馈解耦控制; (2)第二层相间电压均衡控制,注入零序电压,控制通过注入零序电压维持相间电压平衡; (3)第三层相内电压均衡控制,使其所有子模块吸收的有功功率与其损耗补,从而保证所有H桥子模块直流侧电压值等于给定值。 有参考资料。 639,核心关键词: 1. 不平衡电网下的SVG无功补偿 2. 级联H桥SVG无功补偿STATCOM 3. 三层控制策略 4. 电压电流双闭环PI控制 5. 电压电流正负序分离 6. 直流侧平均电压恒定 7. 前馈解耦控制 8. 相间电压均衡控制 9. 零序电压注入 10. 相内电压均衡控制 以上十个关键词用分号分隔的格式为:不
GTX 1080 PCB图纸,内含图纸查看软件
内容概要:本文档详细介绍了利用 DeepSeek 进行文本润色和问答交互时提高效果的方法和技巧,涵盖了从明确需求、提供适当上下文到尝试开放式问题以及多轮对话的十个要点。每一部分内容都提供了具体的示范案例,如指定回答格式、分步骤提问等具体实例,旨在指导用户更好地理解和运用 DeepSeek 提升工作效率和交流质量。同时文中还强调了根据不同应用场景调整提示词语气和风格的重要性和方法。 适用人群:适用于希望通过优化提问技巧以获得高质量反馈的企业员工、科研人员以及一般公众。 使用场景及目标:本文针对所有期望提高 DeepSeek 使用效率的人群,帮助他们在日常工作中快速获取精准的答案或信息,特别是在撰写报告、研究材料准备和技术咨询等方面。此外还鼓励用户通过不断尝试不同形式的问题表述来进行有效沟通。 其他说明:该文档不仅关注实际操作指引,同样重视用户思维模式转变——由简单索取答案向引导 AI 辅助创造性解决问题的方向发展。
基于FPGA与W5500实现的TCP网络通信测试平台开发——Zynq扩展口Verilog编程实践,基于FPGA与W5500芯片的TCP网络通信测试及多路Socket实现基于zynq开发平台和Vivado 2019软件的扩展开发,基于FPGA和W5500的TCP网络通信 测试平台 zynq扩展口开发 软件平台 vivado2019.2,纯Verilog可移植 测试环境 压力测试 cmd命令下ping电脑ip,同时采用上位机进行10ms发包回环测试,不丢包(内部数据回环,需要时间处理) 目前实现单socket功能,多路可支持 ,基于FPGA; W5500; TCP网络通信; Zynq扩展口开发; 纯Verilog可移植; 测试平台; 压力测试; 10ms发包回环测试; 单socket功能; 多路支持。,基于FPGA与W5500的Zynq扩展口TCP通信测试:可移植Verilog实现的高效网络通信
Labview液压比例阀伺服阀试验台多功能程序:PLC通讯、液压动画模拟、手动控制与调试、传感器标定、报警及记录、自动实验、数据处理与查询存储,报表生成与打印一体化解决方案。,Labview液压比例阀伺服阀试验台多功能程序:PLC通讯、液压动画模拟、手动控制与调试、传感器标定、报警管理及实验自动化,labview液压比例阀伺服阀试验台程序:功能包括,同PLC通讯程序,液压动画,手动控制及调试,传感器标定,报警设置及报警记录,自动实验,数据处理曲线处理,数据库存储及查询,报表自动生成及打印,扫码枪扫码及信号录入等~ ,核心关键词:PLC通讯; 液压动画; 手动控制及调试; 传感器标定; 报警设置及记录; 自动实验; 数据处理及曲线处理; 数据库存储及查询; 报表生成及打印; 扫码枪扫码。,Labview驱动的智能液压阀测试系统:多功能控制与数据处理
华为、腾讯、万科员工职业发展体系建设与实践.pptx
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
电网不对称故障下VSG峰值电流限制的柔性控制策略:实现电流平衡与功率容量的优化利用,电网不对称故障下VSG峰值电流限制的柔性控制策略:兼顾平衡电流与功率控制切换的动态管理,电网不对称故障下VSG峰值电流限制的柔性不平衡控制(文章完全复现)。 提出一种在不平衡运行条件下具有峰值电流限制的可变不平衡电流控制方法,可灵活地满足不同操作需求,包括电流平衡、有功或无功恒定运行(即电流控制、有功控制或无功控制之间的相互切),注入电流保持在安全值内,以更好的利用VSG功率容量。 关键词:VSG、平衡电流控制、有功功率控制、无功功率控制。 ,VSG; 峰值电流限制; 柔性不平衡控制; 电流平衡控制; 有功功率控制; 无功功率控制。,VSG柔性控制:在电网不对称故障下的峰值电流限制与平衡管理
1、文件内容:libpinyin-tools-0.9.93-4.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/libpinyin-tools-0.9.93-4.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、更多资源/技术支持:公众号禅静编程坊
数据集是一个以经典动漫《龙珠》为主题的多维度数据集,广泛应用于数据分析、机器学习和图像识别等领域。该数据集由多个来源整合而成,涵盖了角色信息、战斗力、剧情片段、台词以及角色图像等多个方面。数据集的核心内容包括: 角色信息:包含《龙珠》系列中的主要角色及其属性,如名称、种族、所属系列(如《龙珠》《龙珠Z》《龙珠超》等)、战斗力等级等。 图像数据:提供角色的图像资源,可用于图像分类和角色识别任务。这些图像来自动画剧集、漫画和相关衍生作品。 剧情与台词:部分数据集还包含角色在不同故事中的台词和剧情片段,可用于文本分析和自然语言处理任务。 战斗数据:记录角色在不同剧情中的战斗力变化和战斗历史,为研究角色成长和剧情发展提供支持。 数据集特点 多样性:数据集整合了角色、图像、文本等多种类型的数据,适用于多种研究场景。 深度:不仅包含角色的基本信息,还涵盖了角色的成长历程、技能描述和与其他角色的互动关系。 实用性:支持多种编程语言(如Python、R)的数据处理和分析,提供了详细的文档和示例代码。
基于protues仿真的多功公交站播报系统设计(仿真图、源代码) 该设计为基于protues仿真的多功公交站播报系统,实现温度显示、时间显示、和系统公交站播报功能; 具体功能如下: 1、系统使用51单片机为核心设计; 2、时钟芯片进行时间和日期显示; 3、温度传感器进行温度读取; 4、LCD12864液晶屏进行相关显示; 5、按键设置调节时间; 6、按键设置报站; 7、仿真图、源代码; 操作说明: 1、下行控制报站:首先按下(下行设置按键),(下行指示灯)亮,然后按下(手动播报)按键控制播报下一站; 2、上行控制报站:首先按上(上行设置按键),(上行指示灯)亮,然后按下(手动播报)按键控制播报下一站; 3、按下关闭播报按键,则关闭播报功能和清除显示
采用Java后台技术和MySQL数据库,在前台界面为提升用户体验,使用Jquery、Ajax、CSS等技术进行布局。 系统包括两类用户:学生、管理员。 学生用户 学生用户只要实现了前台信息的查看,打开首页,查看网站介绍、琴房信息、在线留言、轮播图信息公告等,通过点击首页的菜单跳转到对应的功能页面菜单,包括网站首页、琴房信息、注册登录、个人中心、后台登录。 学生用户通过账户账号登录,登录后具有所有的操作权限,如果没有登录,不能在线预约。学生用户退出系统将注销个人的登录信息。 管理员通过后台的登录页面,选择管理员权限后进行登录,管理员的权限包括轮播公告管理、老师学生信息管理和信息审核管理,管理员管理后点击退出,注销登录信息。 管理员用户具有在线交流的管理,琴房信息管理、琴房预约管理。 在线交流是对前台用户留言内容进行管理,删除留言信息,查看留言信息。
MATLAB可以用于开发人脸识别考勤系统。下面是一个简单的示例流程: 1. 数据采集:首先收集员工的人脸图像作为训练数据集。可以要求员工提供多张照片以获得更好的训练效果。 2. 图像预处理:使用MATLAB的图像处理工具对采集到的人脸图像进行预处理,例如灰度化、裁剪、缩放等操作。 3. 特征提取:利用MATLAB的人脸识别工具包,如Face Recognition Toolbox,对处理后的图像提取人脸特征,常用的方法包括主成分分析(PCA)和线性判别分析(LDA)等。 4. 训练模型:使用已提取的人脸特征数据集训练人脸识别模型,可以选择支持向量机(SVM)、卷积神经网络(CNN)等算法。 5. 考勤系统:在员工打卡时,将摄像头捕获的人脸图像输入到训练好的模型中进行识别,匹配员工信息并记录考勤数据。 6. 结果反馈:根据识别结果,可以自动生成考勤报表或者实时显示员工打卡情况。 以上只是一个简单的步骤,实际开发过程中需根据具体需求和系统规模进行定制和优化。MATLAB提供了丰富的图像处理和机器学习工具,是开发人脸识别考勤系统的一个很好选择。
hjbvbnvhjhjg
HCIP、软考相关学习PPT提供下载
绿豆BOX UI8版:反编译版六个全新UI+最新后台直播管理源码 最新绿豆BOX反编译版六个UI全新绿豆盒子UI8版本 最新后台支持直播管理 作为UI6的升级版,UI8不仅修复了前一版本中存在的一些BUG,还提供了6套不同的UI界面供用户选择,该版本有以下特色功能: 在线管理TVBOX解析 在线自定义TVBOX 首页布局批量添加会员信息 并支持导出批量生成卡密 并支持导出直播列表管理功能