publisher

Loading image from remote URL asynchronously in SwiftUI Image using combine's Publisher

人走茶凉 提交于 2021-01-28 20:03:05
问题 I was looking for good solutions for loading images asynchronously from a remote server image URL. There were many solutions online. It's a shame Apple doesn't provide one natively for something that is so common. Anyways, I found Sundell's blog really interesting and took the good bits from it to create my own ImageLoader, as shown below: import Combine class ImageLoader { private let urlSession: URLSession private let cache: NSCache<NSURL, UIImage> init(urlSession: URLSession = .shared,

How do I resume a published timer in SwiftUI after navigating to a different page?

主宰稳场 提交于 2020-08-20 11:26:45
问题 In the following Playground example, the UI updates with the current date correctly, however when navigating away from the page and coming back the timer does not resume ticking: import SwiftUI import PlaygroundSupport struct MainTabView: View { let timer = Timer.publish(every: 1, on: .main, in: .common) @State var time = Date() var body: some View { TabView { VStack { Text("\(time)").onReceive(self.timer) { self.time = $0 } } .onAppear { _ = self.timer.connect() } .tabItem { Text("Page 1") }

swift Janus can not publish video, but get remote video successful - can not know reason

╄→гoц情女王★ 提交于 2020-07-22 05:59:08
问题 im tried to use Janus to call in videoroom. the problem is the remote video success to display, but only publisher can not show in janus videoroom, after check log i see : RTCIceConnectionState didChange state 1 RTCIceConnectionState didChange state 4 /** Represents the ice connection state of the peer connection. */ typedef NS_ENUM(NSInteger, RTCIceConnectionState) { RTCIceConnectionStateNew, RTCIceConnectionStateChecking, RTCIceConnectionStateConnected, RTCIceConnectionStateCompleted,

publishOn vs subscribeOn in Project Reactor 3

久未见 提交于 2020-05-25 08:00:31
问题 I am using publishOn vs subscribeOn both on the same flux as follows: System.out.println("*********Calling Concurrency************"); List<Integer> elements = new ArrayList<>(); Flux.just(1, 2, 3, 4) .map(i -> i * 2) .log() .publishOn(Schedulers.elastic()) .subscribeOn(Schedulers.parallel()) .subscribe(elements::add); System.out.println("-------------------------------------"); Although, when i use both, nothing is printed in logs. But when i use only publishOn, i got the following info logs:

spring boot 事件发布与接收

坚强是说给别人听的谎言 提交于 2020-03-24 07:48:06
1、启动类加上@EnableAsync 2、创建发布对象 LoginEvent 3、在要发布对象的地方注入 ApplicationEventPublisher @Autowired ApplicationEventPublisher publisher; 4、发布 : 调用publisher的publishEvent(Object event)方法 publisher.publishEvent(new LoginEvent()) 5、创建事件监听Component @Component public class LoginEventHandler { Logger log = Logger.getLogger(LoginEventHandler.class); @Async @EventListener public void loginHandler(LoginEvent loginEvent){//这里不能有返回值 //处理 } } 来源: https://www.cnblogs.com/oyx305/p/5508167.html

观察者模式和发布订阅模式(下)

不想你离开。 提交于 2020-03-21 19:47:12
发布订阅模式 前一篇对观察者模式做了介绍,重点在于观察者和被观察者的对应关系,以及将被观察者的改变及时通知到相对应的观察者。 这样的模式基本上可以解决少量数据源的情景,在观察者和被观察者可能是多对多关系的情况下,强耦合的结构会让代码不够清晰,难以维护。 在《JavaScript设计模式》一书中,提到了Observer和Publish/Subscribe的区别。 Observer模式要求希望接收到主题同志的观察者(或对象)必须订阅内容改变的事件。 Publish/Subscribe模式使用了一个主题/事件通道,这个通道介于希望接收到通知(订阅者)的对象和激活事件的对象(发布者)之间。该事件系统允许代码定义应用程序的特定事件,这些事件可以传递自定义参数,自定义参数包含订阅者所需的值。其目的是避免订阅者和发布者之间产生依赖关系。 这里的关键点在于,通过一个事件中心,将发布者和订阅者的耦合关系解开,发布者和订阅者通过事件中心来产生联系。 打个比方,发布者像是发布小广告的,事件中心是一个调度站,订阅者则告诉事件中心,我关注A、B类型的广告,如果有更新,请通知我。调度站记录A,B类型下的订阅者,等到A,B广告发布时,通知到订阅者。 这个例子里,发布者不关心订阅者是谁,也不维护订阅者列表,同订阅者解耦,只将自己发布的内容提交到事件中心。而订阅者和主题的关系,交给了事件中心来维护。

Ros机器人之(四)发布Publisher消息

拥有回忆 提交于 2020-03-17 04:13:59
Ros机器人之(四)发布Publisher消息 从基础学习,发布消息Publisher 首先创建功能包,命令+名称+功能包依赖 catkin_create_pkg learning-topic roscpp rospy std_msgs geometry_msgs turtlesim src文件夹下创建一个publisher.cpp touch publisher.cpp 内容如下: /* publisher topic */ # include <ros/ros.h> # include <geometry_msgs/Twist.h> int main ( int argc , char * * argv ) { //初始节点化 ros :: init ( argc , argv , "publisher" ) ; //创建节点句柄 ros :: NodeHandle n ; //创建发布者,发布的话题及队列长度用于缓存 ros :: Publisher turtle_vel_pub = n . advertise < geometry_msgs :: Twist > ( "/turtle1/cmd_vel" , 10 ) ; //循环频率 ros :: Rate loop_rate ( 10 ) ; int count = 0 ; //循环 while ( ros :: ok

Django学习总结之五模型

家住魔仙堡 提交于 2020-03-17 02:46:53
一、MTV开发模式 M:模型(model),数据存取层,处理与数据相关的所有事务。 T:模板(Template),表现层,处理与表现相关的决定。 V:视图(views),业务逻辑层,该层包含存取模型及调取恰当模板的相关逻辑。 你可以把它看作模型与模板之间的桥梁。 二、数据库配置 打开setting.py 配置文件,找到: DATABASE_ENGINE = '' DATABASE_NAME = '' DATABASE_USER = '' DATABASE_PASSWORD = '' DATABASE_HOST = '' DATABASE_PORT = '' DATABASE_ENGINE:是数据库引擎,设置如下: 数据库引擎设置 设置 数据库 数据库引擎 postgresql PostgreSQL psycopg 1.x版, http://www.djangoproject.com/r/python-pgsql/1/ postgresql_psycopg2 PostgreSQL psycopg 2.x版, http://www.djangoproject.com/r/python-pgsql/ mysql MySQL MySQLdb , http://www.djangoproject.com/r/python-mysql/ sqlite3 SQLite 如果使用Python 2

前端学PHP之mysql扩展函数

孤者浪人 提交于 2020-03-02 17:18:00
前面的话   mysql由于其体积小、速度快、总体拥有成本低,尤其是具有开放源码这一特点,许多中小型网站为了减低网站总体拥有成本而选择了mysql作为网站数据库。而使用mysql数据库管理系统与php脚本语言相结合的数据库系统解决方案,正被越来越多的网站所采用,其中以LAMP(linux+apche+mysql+php)模式最为流行   PHP有标准的函数用来操作数据库,mysqli是PHP5中新加的,是对mysql扩展的改进。但由于历史遗留问题,好多老项目是在PHP4中使用mysql拓展开发的,如果在原有的项目上进行二次开发,都要求使用mysql拓展函数。如果是新设计的项目,推荐使用mysqli拓展或PDO技术。本文主要介绍PHP中的mysql拓展函数 总括   在PHP脚本中操作MySQL数据库的的几个步骤如下:   1、连接MySQL数据库服务器,并判断是否连接正确   2、选择数据库,并设置字符集(可选)   3、执行SQL命令   4、处理结果集   5、关闭数据库连接 连接MySQL数据库服务器,并判断是否连接正确 mysql_connect()   mysql_connect()函数用来打开一个到 MySQL 服务器的连接。如果成功则返回一个资源, 或者在失败时返回FALSE resource mysql_connect ([ string $server [,

委托事件

試著忘記壹切 提交于 2020-02-28 11:21:53
1、定义:委托(Delegate)是 一个类,它定义了方法的类型。实现了将一个方法当作另一个方法的参数来传递。 2、声明:public delegate 返回值 委托名称(参数); 例:public delegate int MyDelegate(string value) ; 3、实例化委托: MyDelegate myDelegate=new MyDelegate(WriteToFile); MyDelegate myDelegate=WriteToFile; 4、委托变量在使用时,跟方法的调用在形式上是一样的。例:int num=myDelegate(); 5、 委托的一个有趣且有用的属性是,它不知道也不关心所引用的方法的类;只关心引用的方法是否具有与委托相同的参数和返回类型。 6、 多播委托: 每个委托都只包含一个方法调用,调用委托的次数和调用方法的次数相同。如果需要调用委托的一次可以执行多个方法,这时我们就需要多播委托。 通俗来讲,多播委托就是一个包含多个方法的委托称为多播委托。 如图: 运行效果: 7、事件(Event) 基本上说是一个用户操作,如按键、点击、鼠标移动等等,或者是一些出现,如系统生成的通知。应用程序需要在事件发生时响应事件。 事件在类中声明且生成,且通过使用同一个类或其他类中的委托与事件处理程序关联。包含事件的类用于发布事件。这被称为 发布器