首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Laravel5.6使用Swoole数据库查询

什么是Swoole 直接套用Swoole官网介绍:PHP异步、并行、高性能网络通信引擎,使用纯C语言编写,提供了PHP语言异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,异步Redis...Swoole提供了多线程、长连接等很多牛逼功能,把php上升到了一个新台阶,具体你可以看看入门教程,本文只限于讨论LaravelSwoole结合。...如果你Swoole业务代码是写在一个叫server.php文件,那么命令行下输入php server.php开启。...这是比较头疼事情,因为Laravel框架可不是这样运转,那如何能与Laravel结合呢?没错,自定义一条Artisan Command,就这么简单。...强烈推荐在你laravel项目中,使用 laravel-s 这个包. composer require "hhxsv5/laravel-s:~1.0" -vvv 然后,依赖 kuaiapp/db 这个包

3.7K20

EasyDSS开发Go语言for循环中使用注意事项

之前我们介绍过EasyDSS开发对野管理,有兴趣朋友可以了解一下:EasyDSS出现panic并导致程序退出,如何对野进行管理?... EasyDSS 程序开发,有时为了加快速度,会在 for 循环中采用方式进行代码编写,类似代码如下: wg := sync.WaitGroup{} wg.Add(length) for s...,因为采用方式, go func(){} 代码会新启动一个进行运行。...rtc.SubSession) { defer wg.Done() sender.WriteRtcPacket(pkt) }(s) } wg.Wait() 以上代码将前一个指针变量以传递参数方式传递到...总结以下在写时候主要注意两点: 1.保证捕获 panic 异常; 2.使用外部变量,应该以传参方式传递到

1.6K30
您找到你想要的搜索结果了吗?
是的
没有找到

使用kotlin提高app性能(译)

在上面的示例,get()仍然主线程上运行,但它在启动网络请求之前挂起协同程序。当网络请求完成,get恢复暂停,而不是使用回调来通知主线程。...CoroutineScope一个重要功能是当用户离开应用程序内容区域停止执行。 使用CoroutineScope,您可以确保正确停止任何正在运行操作。...范围传播自己,所以如果一个开始另一个协同程序,两个协同程序具有相同范围。这意味着即使其他库从您范围启动,您也可以随时取消它们。如果您在ViewModel运行协同程序,这一点尤为重要。...由于async期望某个时刻最终调用await,它会保留异常并在await调用重新抛出它们。 这意味着如果您使用await从常规函数启动新协同程序,则可能会以静默方式删除异常。...这些丢弃异常不会出现在崩溃指标,也不会出现在logcat。 并行分解 当函数返回,必须停止由挂起函数启动所有协同程序,因此您可能需要保证这些返回之前完成。

2.3K10

取消异常 | 驻留任务详解

本系列第二篇文章 取消异常 | 取消操作详解 ,我们学到,当一个任务不再被需要,正确地退出十分重要。...最佳实践 由于本文所介绍模式是其它最佳实践基础之上实现,我们可以借此机会回顾一下: 1. 将调度器注入到类 不要在创建或调用 withContext 硬编码调度器。...您可以进行单元测试或仪器测试轻松替换掉它们。 2. 应当在 ViewModel 或 Presenter 层创建 如果是仅与 UI 相关操作,则可以 UI 层执行。...✅ 好处: 调用者 (通常是 ViewModel 层) 可以控制这些层级任务执行生命周期,也可以需要时取消这些任务。...❌ ✅ 使用 NonCancellable 正如您在本系列第二篇文章 取消异常 | 取消操作详解 中看到,您可以使用 withContext(NonCancellable) 在被取消调用挂起函数

1.4K20

理解、LiveData Flow

而在 Presentation 层内部也有进一步解决方案: 让一个对象可以 Activity Fragment 被销毁、重新创建依然留存,这个对象就是架构组件 ViewModel 类。...如何启动取消协 Jetpack 组件里,我们为各个组件提供了对应 scope,比如 ViewModel 就有与之对应 viewModelScope,如果您想在这个作用域里启动使用如下代码即可...如前所述,我们使用 LiveData 连接 View ViewModel,而在 ViewModel 这里我们则使用刚刚提到 liveData 构造方法来打通 LiveData 和协,再往右就是调用...ViewModel 模式 当 ViewModel 监听 LiveData,而且没有对数据进行任何转换操作,可以直接将 dataSource LiveData 赋值给 ViewModel 暴露出来...相信看到这里,您对如何在实际应用中使用、LiveData Flow 已经有了比较系统认识。

2.1K20

从 LiveData 迁移到 Kotlin 数据流

接下来我们一起比较 LiveData Kotlin 数据流相对应写法吧: #1: 使用可变数据存储器暴露一次性操作结果 这是一个经典操作模式,其中您会使用结果来改变状态容器: △ 将一次性操作结果暴露给可变数据容器...liveData 构建器所使用方法是 添加一个 5 秒钟延迟,即如果等待 5 秒后仍然没有订阅者存在就终止。...Activity Fragment 提供了若干构建器: Activity.lifecycleScope.launch : 立即启动,并且本 Activity 销毁结束。...Fragment.lifecycleScope.launch : 立即启动,并且本 Fragment 销毁结束。...它会在 lifecycleOwner 进入 X 状态之前一直等待,又在离开 X 状态挂起。对此,需要注意对应只有它们生命周期所有者被销毁才会被取消。

1.4K20

实战 | 使用 Kotlin Flow 构建数据流 管道

△ 铺设管道 Android 应用您可以简单地每次需要请求数据,例如我们可以使用挂起函数来实现在每次视图启动ViewModel 请求数据,而后 ViewModel 又向数据层请求数据,接下来这一切又在相反方向上发生...我们使用数据流构建器来创建数据流,因为 Flow 是上下文环境运行,它以挂起代码块作为参数,这也意味着它能够调用挂起函数,我们可以代码块中使用 while(true)来循环执行我们逻辑。...示例代码,我们首先从 API 获取消息,然后使用 emit 挂起函数将结果添加到 Flow ,这将挂起直到收集器接收到数据项,最后我们将挂起一段时间。...catch 运算符还可以在有需要时候再次抛出异常或者发送新值,我们示例代码可以看到其捕获到 IllegalArgumentExceptions 将其重新抛出,并且发生其他异常发送一个空列表...我们将这种按需创建并且只有在被观察才会发送数据数据流称之为 冷流 (Cold Stream)。

1.4K10

Kotlin就几行代码? 用SharedFlow写个FlowEventBus

FlowEventBus 常用消息总线对比 image.png 设计构思 通过学习 从 LiveData 迁移到 Kotlin 数据流  得到思路: SharedFlow作为事件载体 : 优点: 依托轻松切换线程...依赖库版本 关键在于 kotlinx-coroutines > 1.4.x   lifecycle-runtime-ktx > 2.3.x API 以下示例Event均是随意定义类,只是测试为了区分事件而定义名字...fragment,StickyEvent::class.java)  removeStickyEvent(activity,StickyEvent::class.java) 原理 以上功能依托于Kotlin...viewModelScope.launch {     delay(time)     flow.emit(value) } 有序分发 Flow本身就是有序 全局单例 使用全局ViewModel,主要是因为有...ViewModelScope,可以避免使用GlobalScope,如果想要单页面内部组件通信,那就使用ActivityScopeViewModel就行了: object ApplicationScopeViewModelProvider

91310

Android 开发中使用 | 上手指南

ViewModel 启动 既然 CoroutineScope 会追踪由它启动所有,而 launch 会创建一个新,那么您应该在什么地方调用 launch 并将其放在 scope 呢...所以,当您需要将一个ViewModel 生命周期保持一致使用 viewModelScope 来从常规函数切换到。...失败发出报错信号 ,报错信号是通过抛出异常来发出,就像我们平常写函数一样。来自 suspend 函数异常将通过 resume 重新抛给调用方来处理。...还记得我一开始说结构化并发是一系列编程语言特性实践指南集合, suspend 函数引入无关联作用域违背了结构化并发规则。...下一步 本篇文章,我们探讨了如何在 Android ViewModel 启动,以及如何在代码运用结构化并发,来让我们代码更易于维护理解。

1.4K20

笔记

start() } 运行效果如下: image.png 可以看到当设置延迟加载是start()后才开始执行 说到延迟加载,总结一下启动模式 DEFAULT 模式 默认 启动模式...,才子线程执行挂起函数 ; 如果在主线程启动 , 则该模式就会直接在主线程执行 ; 如果在子线程启动 , 则该模式就会直接在子线程执行 ; 异常处理 对于不同构造器...分别介绍 launch async 情况下异常处理 Launch launch 方式启动,异常会在发生立刻抛出,使用 try catch 就可以将异常捕获。...View生命周期并不一致,需要让observer感知FragmentView生命周期而非Fragment, ViewModel使用 同样引入扩展库 implementation "androidx.lifecycle...:lifecycle-viewmodel-ktx:版本号" 引入库之后,我们就可以ViewModel用viewModelScope来使用.

79330

知识点 | ViewModel 四种集成方式

如果您不了解,这里有一系列很棒博客《 Android 开发中使用》以及 codelab: Android 应用中使用 Kotlin 以供参考。...() } 复制代码 这段示例代码只启动了一个,但我们真实使用环境下很容易创建出许多,这就难免会导致有些状态无法被跟踪。...而在 ViewModel ,我们可以使用 viewModelScope 来管理作用域。...这样一来,只要您使用ViewModel,您就可以使用 viewModelScope ViewModel 启动各种,而不用担心任务泄漏。...根据 LiveData 自动更新; ViewModel使用 Kotlin 使用 viewModelScope 来让 ViewModel 被销毁自动取消。

2.4K20

ViewModel引入

AndroidX Lifecycle v2.1.0 ViewModel 引入 viewModelScope,当 ViewModel 被销毁它会自动取消协任务,这个特性真的好用。...本文介绍 viewModelScope 使用内部实现方式,分析 ViewModel 是如何自动取消协。...ViewModel 引入 当我们 ViewModel 里面需要引入,首先要在 ViewModel 中新建一个 CoroutineScope, 用来管理所有任务,同时需要 onCleared...viewModelScope 方式 注意 lifecycle-viewmodel-ktx 版本号: 2.1.0-beta01 viewModelScope 管理方式与我们 ViewModel 引入方式一样...ViewModel 被销毁内部会执行 clear() 方法, clear() 方法遍历调用 closeWithRuntimeException 取消了 viewModelScope ,实现流程非常清晰

1.4K30

kotlin--入门

到目前为止没有一个具体定义,但很多语言都有,但每个语言又有所不同,官方说基于线程,是轻量级线程。在我看来,是一种趋势,它让我们从繁琐多线程释放出来,提高我们编写代码效率。...更像是一个管理者秘书,它让我们从复杂逻辑得到解放,只需要告诉秘书执行流程,其他都交由秘书安排 以上就是我对理解,接下来来学习如何使用kotlin 一、实现异步任务相同功能 如果说我们有一个耗时操作...三、调度器 所有的必须运行在调度器,也就是我们之前代码指定Dispatchers,即使主线程也是如此 官方提供调度器为以下三种: 调度器 四、两部分 kotlin实现分为两个层次...,我们之前使用都是业务框架层 1.基础设施层,标准库API,主要对提供了概念语义上最基本支持 2.业务框架层,上层框架支持 基础设施写法: fun main() { val...销毁,还是会运行 2.MainScope:Activity中使用,可以onDestroy取消 3.ViewModelScope:只能在ViewModel使用,绑定ViewModel生命周期

56310

(StateFlow & ShareFlow) VS (Flow & LiveData)来看业务适合哪个?

之前Flow,collect函数浅析仿Flow构建器创建数据流文章我们探索了flow简单使用及它简单原理,但是生产过程我们往往会借用这些基础api实现我们复杂逻辑处理,根据需求也推出了...接下来开始看下这几个Flow特殊之处应用场景吧~~官方推荐Flow数据流流向:数据流程数据流包含三个实体:提供方会生成添加到数据流数据。得益于,数据流还可以异步生成数据。...:跟随ViewModel生命周期变化,当ViewModel观察组件销毁调用onClear时候自动取消协,生命周期过长不采取一般在对数据进行处理时候会使用2.lifecycleScope: 此范围内启动会在...一定要注意取消这个词挂起区别,挂起其实还是有订阅关系的当flow发射还是会收到走collect上游并没有取消,但是取消就是作用域取消collect函数不会执行了。...但是我们可以使用repeatOnLifecycle,它当离开某个生命周期时候进行取消,符合时候开启一个新(也即会重新执行collect函数是新订阅者)。

54340
领券