精华内容
下载资源
问答
  • Husky提供了broadcast/get_response APIs,用于广播变量给集群中所有的worker。在某些情况下,广播变量比使用send_message更加高效。Husky 还提供了request/list_reply/get_response APIs来向特定的对象发送获取...

    Husky提供了broadcast/get_response APIs,用于广播变量给集群中所有的worker。在某些情况下,广播变量比使用send_message更加高效。Husky 还提供了request/list_reply/get_response APIs来向特定的对象发送获取某些变量值的请求。

    broadcast/get_response

    以下例子使用broadcast APIs来计算任意两个点之间的距离。假设全部点的数目为num_pts,这些点存在pt_list上,和调用get_coordinates()方法将返回一个点的坐标值,表示为std::vector<double>的容器。

    worker.list_execute(pt_list, [&](Point & pt) {
         worker.broadcast(pt, pt.get_coordinates());
    });
    
    worker.list_execute(pt_list, [&](Point & pt) {
        for (int i = 0; i < num_pts; i++) {
            auto other_pt = pt.get_response<std::vector<double>>(i);
            calc_distance(t, other_pt);
        }
    });
    

    在第一个list_execute中,我们广播每一个点(及其包含的所有的内容)到每一台机器上面。广播的内容必须在每一台机上面被检索到。Husky用key来区分并检索不同的广播内容。也就是,broadcast中的第二个参数就是我们想要广播的内容,第一个参数将作为该key,为get_response使用来获取该内容。

    因此,在第二个list_execute中,利用key,我们使用get_response来获取获取所需的广播内容。

    如下是broadcast 和 get_response的函数声明:

    template<typename ObjT, typename MsgT>
    void broadcast(const ObjT& obj, const MsgT& msg);
    
    template<typename MsgT, typename KeyT>
    MsgT& get_response(KeyT const& key);
    

    request/list_reply/get_response

    下面的例子展示了如何使用request/list_reply/get_response API。实现的功能是,puller_list中的每个点,向pullee_list发出request请求。pullee_list`中的点收到请求后,会把他id发送回去。

    worker.list_execute(puller_list, [&](Puller& puller) {
        worker.request(puller.id(), pullee_list);
    });
    worker.list_reply(pullee_list, [](Pullee& pullee) {
        return pullee.id();
    });
    worker.list_execute(puller_list, [&](Puller& puller) {
        auto pullee_id = puller.get_response<int>(puller.id())));
    });
    

    在第一个list_execute中, 每一个worker对puller_id所索引的pullee_list中的对象发出请求. 接着,我们使用list_reply函数来表明在pullee_list中被请求的对象该如何做出反应。在这里,我们仅仅简单的让它返回了自己的id。在最后的list_execute中, puller就可以收到回应。

    函数request, list_reply and get_response的声明如下:

    template<typename TargetObjT>
    void request(typename TargetObjT::KeyT const& key, ObjList<TargetObjT>& obj_list);
    
    template<typename ObjT, typename ReplyT>
    void list_reply(ObjList<ObjT>& obj_list, ReplyT reply);
    
    template<typename MsgT, typename KeyT>
    MsgT& get_response(KeyT const& key);
    展开全文
  • OBS (Open Broadcast Software) Studio - 中文

    千次阅读 2019-05-15 18:46:13
    OBS (Open Broadcast Software) Studio - 中文 https://obsproject.com/ 1. Controls -> Settings 2. General -> Language 3. Apply -> OK -> Exit 重新启动 OBS。

    OBS (Open Broadcast Software) Studio - 中文

    https://obsproject.com/

    1. Controls -> Settings

    在这里插入图片描述

    2. General -> Language

    在这里插入图片描述

    3. Apply -> OK -> Exit

    重新启动 OBS。

    在这里插入图片描述

    展开全文
  • 作为Android的四大组件之一,没有理由不介绍一下BroadCast,BroadCast中文简单翻译就是广播,前阵子浙江某大学的啦啦操,广场舞的大妈,其中大妈和学生从喇叭和音响上听到的声音就是事件源,接收者就是这些大妈和...

    作为Android的四大组件之一,没有理由不介绍一下BroadCast,BroadCast中文简单翻译就是广播,前阵子浙江某大学的啦啦操,广场舞的大妈,其中大妈和学生从喇叭和音响上听到的声音就是事件源,接收者就是这些大妈和学生,程序源自实践,Android中BroadCast,有事件广播者也有事件接收者,Broadcast是一种广泛运用的在应用程序之间传输信息的机制,BroadcastReceiver是对发送出来的 Broadcast进行过滤接受并响应的一类组件,也就是接收者。讲完了基本的概念,可以开始基本的实践:

    自定义广播的两种实现方式

    两种实现方式,一种是静态,一种是动态,先看下静态的实现过程:

    定义一个BookBroadCast接收者(有几个判断添加是系统广播需要的):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    public class BookBroadCast extends BroadcastReceiver {
     
        private String tag = "BookBroadCast";
     
        @Override
        public void onReceive(Context context, Intent intent) {
            // TODO Auto-generated method stub
            String actionString = intent.getAction();
            String name = intent.getStringExtra("Name");
            if (actionString.equals(Intent.ACTION_TIME_CHANGED)) {
                Log.i(tag, "Name:" + name + "--Action:" + actionString
                        "--哥们,时间改变了~");
            else if (actionString.equals(Intent.ACTION_BATTERY_CHANGED)) {
                Log.i(tag, "Name:" + name + "--Action:" + actionString
                        "--哥们,电量变了~");
            else {
                Log.i(tag, "Name:" + name + "--Action:" + actionString);
            }
        }
     
    }

      看下App页面:

     

     

    静态广播对应第一个按钮,点击事件:

    1
    2
    3
    Intent intent = new Intent("com.google.broadcast.BookBroadCast.static");
            intent.putExtra("Name""静态广播");
            sendBroadcast(intent);

      静态广播需要在AndroidManifest.xml中注册一下:

    1
    2
    3
    4
    5
    6
    7
    <receiver android:name="com.google.broadcast.BookBroadCast">
             <intent-filter >
                 <action android:name="com.google.broadcast.BookBroadCast.static"/>
                    <action android:name="android.intent.action.TIME_SET"/>
             </intent-filter>
         </receiver>

      结果如下:

    动态调用就是不需要在AndroidManifest.xml注册,在程序中动态生成filter设置action,在activity中的onStart注册,onStop终止:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    @Override
    protected void onStop() {
        // TODO Auto-generated method stub
        super.onStop();
        unregisterReceiver(bookReceiver);
    }
     
    @Override
    protected void onStart() {
        // TODO Auto-generated method stub
        super.onStart();
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction("com.google.broadcast.BookBroadCast.dymanic");
        bookReceiver = new BookBroadCast();
        registerReceiver(bookReceiver, intentFilter);
     
    }

      动态调用事件,对应第二个按钮:

    1
    2
    3
    Intent dintent = new Intent("com.google.broadcast.BookBroadCast.dymanic");
            dintent.putExtra("Name""动态广播");
            sendBroadcast(dintent);

      结果如下:

    两种系统广播调用方式

    关于系统广播的各种事件网上一找一堆,我就没必要贴在这里了,先来实现第三个和第四个按钮的事件,第三个是系统事件的改变,第四个是电池电量的改变:

    第三个action的常量的和Intent枚举出来的名称有出入:

    1
    <action android:name="android.intent.action.TIME_SET"/>

      调用的时候是这样的:

    1
    2
    3
    Intent sintent = new Intent(Intent.ACTION_TIME_CHANGED);
            sintent.putExtra("Name""不被保护系统广播");
            sendBroadcast(sintent);

      结果如下:

    这个其实都没有什么大的问题,然后按照静态注册方式没法搞定第四个电池电量的问题,先来看第四个是如何实现的:

    1
    2
    3
    IntentFilter systemintentFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
            systembookReceiver = new BookBroadCast();
            registerReceiver(systembookReceiver, systemintentFilter);

     首先可以看出不是静态注册的,需要动态注册,然后不需要调用sendBroadcast,结果如下:

    这个问题解决都弄了一个多小时,最终的Google的API找到对应的解释:

    地址:http://developer.android.com/reference/android/content/Intent.html#ACTION_TIME_TICK

    本文转自Fly_Elephant博客园博客,原文链接:http://www.cnblogs.com/xiaofeixiang/p/4083288.html,如需转载请自行联系原作者

    展开全文
  • xau-broadcast:用于广播XAU实时价格的Web应用程序。 支持英语,中文,广东话
  • Broadcast Receiver基本使用

    千次阅读 2017-02-06 14:52:48
    Broadcast Receiver介绍Broadcast Receiver翻译成中文叫“广播接收器”,所以它的作用是用来接收发送过来的广播的。Android应用程序可以发送或接收来自Android系统和其他Android应用程序的广播消息,类似于发布订阅...

    Broadcast Receiver介绍

    Broadcast Receiver翻译成中文叫“广播接收器”,所以它的作用是用来接收发送过来的广播的。

    Android应用程序可以发送或接收来自Android系统和其他Android应用程序的广播消息,类似于发布订阅设计模式。当有兴趣的事件发生时发送这些广播。例如,Android系统在各种系统事件发生时发送广播,例如当系统启动或设备开始充电时。应用程序也可以发送自定义广播,例如,通知其他应用程序的东西,他们可能感兴趣(例如,一些新的数据已被下载)。应用程序可以注册接收特定的广播。当发送广播时,系统自动将广播路由到订阅该特定类型广播的应用程序。
    一般来说,广播可以作为跨应用程序和正常用户流之外的消息传递系统。

    动态注册广播

    动态注册广播是一种灵活的注册方式,通过代码来注册广播,销毁广播。

    首先我们新建DynamicBroadcast类,继承自BroadcastReceiver,用来接收广播,重写onReceive方法,通过intent可以获取发送广播时传入的参数。

    public class DynamicBroadcast extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent){
            String data = intent.getStringExtra("data");
            Log.i("data",data);
        }
    }

    在activity_main.xml文件中增加一个按钮

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <Button
            android:id="@+id/btn_dynamic_broadcast_send_message"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="给动态注册的广播发送消息"/>
    </LinearLayout>

    最后我们下来看MainActivity.java

    public class MainActivity extends AppCompatActivity implements View.OnClickListener{
        public static final String ACTION_DYNAMIC_BROADCAST="android.intent.action.DYNAMIC_BROADCAST";
        private DynamicBroadcast dynamicBroadcast;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            findViewById(R.id.btn_dynamic_broadcast_send_message).setOnClickListener(this);
    
            //动态注册广播
            dynamicBroadcast=new DynamicBroadcast();
            IntentFilter intentFilter=new IntentFilter(ACTION_DYNAMIC_BROADCAST);
            registerReceiver(dynamicBroadcast,intentFilter);
        }
    
        @Override
        public void onClick(View v){
            switch (v.getId()){
                case R.id.btn_dynamic_broadcast_send_message:
                    Intent intent = new Intent(ACTION_DYNAMIC_BROADCAST);
                    intent.putExtra("data","Dynamic Broadcast Parameter");//通过intent传参
                    sendBroadcast(intent);//发送广播消息
                    break;
            }
        }
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
            Log.i("MainActivity onDestroy","销毁广播");
            unregisterReceiver(dynamicBroadcast);
        }
    }

    我们在onCreate中通过registerReceiver方法注册一个广播,需要两个参数(BroadcastReceiver跟IntentFilter对象)。同时给”发送广播”按钮设置点击监听,点击之后通过sendBroadcast方法发送广播,这里需要一个Intent对象,构造Intent对象的时候传入Action,这个Action跟我们注册广播的时候Action要一致。

    我们还重写了onDestroy方法,当Activity销毁的时候同时销毁广播,所以,在本例中,广播的生命周期跟Activity一样。

    我们运行代码,点击”给动态注册的广播发送消息”按钮,Log打印如下:

    02-03 16:32:11.194 7095-7095/com.ansen.broadcastreceiver I/data: Dynamic Broadcast Parameter

    静态注册广播

    静态注册广播是在AndroidManifest.xml文件中注册的,无论这个程序是否启动,当收到广播时,都会接收的到。

    我们在动态注册广播的Demo上增加代码,新建StaticBroadcast类,继承BroadcastReceiver,实现onReceive方法,跟动态广播的接收器代码几乎一样。

    public class StaticBroadcast extends BroadcastReceiver{
        @Override
        public void onReceive(Context context, Intent intent){
            String data = intent.getStringExtra("data");
            Log.i("data",data);
        }
    }

    接下来我们需要在AndroidManifest.xml文件中注册这个广播,通过receiver标签的name属性指定这个类,再增加intent-filter标签,给action标签设置name属性值,我们发送广播的时候需要用到这个值。

    <receiver android:name=".StaticBroadcast" android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.STATIC_BROADCAST"/>
        </intent-filter>
    </receiver>

    在activity_main.xml文件中增加一个按钮,”给静态注册的广播发送消息”。

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <Button
            android:id="@+id/btn_dynamic_broadcast_send_message"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="给动态注册的广播发送消息"/>
        <Button
            android:id="@+id/btn_static_broadcast_send_message"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="给静态注册的广播发送消息"/>
    </LinearLayout>

    给按钮设置点击监听事件,在对应的onClick回掉方法中发送广播,我们看到Intent的构造方法有传入一个字符串,这个值跟我们在xml中receiver标签->intent-filter->action的name属性的值必须要一致。在广播底层源码中就是通过action来区分不同的广播接收者。

    Intent staticIntent = new Intent("android.intent.action.STATIC_BROADCAST");
    staticIntent.putExtra("data","Static Broadcast Parameter");//通过intent传参
    sendBroadcast(staticIntent);//发送广播消息

    因为没有增加很多代码,MainActivity的代码就不全部贴出来了,重新运行代码,点击“给静态注册的广播发送消息”按钮,打印的log如下:

    02-06 14:02:38.735 10749-10749/com.ansen.broadcastreceiver I/data: Static Broadcast Parameter

    广播基本总结

    动态注册广播跟静态注册广播区别

    前面我们写了Demo,也介绍了动态注册广播跟静态注册广播,这里我再来总结一下:
    - 动态注册 广播的生命周期自己灵活控制,消耗资源少。
    - 静态注册 广播一直存在,除非软件卸载。消耗资源稍微大一些。当然现在的手机硬件都跟的上了,这点资源可以忽略不计。

    广播注意事项

    我们都知道收到了广播就会执行onReceive方法,但是在这个方法里面不能做耗时超过10秒的事情,否则会弹出ANR(Application NoResponse)的对话框。如果有需要就另外启动一个Thread处理耗时操作。

    LocalBroadcastManager解决BroadcastReceiver安全问题

    LocalBroadcastManager是Android Support包提供了一个工具,是用来在同一个应用内的不同组件间发送Broadcast的
    。可以解决BroadcastReceiver的安全问题(恶意程序脚本不断的去发送你所接收的广播)。

    使用LocalBroadcastManager有以下好处:
    - 发送的广播只会在自己App内传播,不会泄露给其他App,确保隐私数据不会泄露
    - 其他App也无法向你的App发送该广播,不用担心其他App会来搞破坏
    - 比系统全局广播更加高效

    使用方法跟动态注册广播类似。首先需要获取LocalBroadcastManager对象,单例模式获取,然后调用registerReceiver方法。

    broadcastManager = LocalBroadcastManager.getInstance(this);
    localReceiver=new LocalBroadcastReceiver();
    broadcastManager.registerReceiver(localReceiver,new IntentFilter(ACTION_LOCAL_BROADCAST));

    发送广播也类似。这里一定需要调用LocalBroadcastManager对象的sendBroadcast方法发送广播哦,不然接收不到广播

    Intent localIntent=new Intent(ACTION_LOCAL_BROADCAST);
    localIntent.putExtra("data","Local Broadcast Parameter");//通过intent传参
    LocalBroadcastManager.getInstance(this).sendBroadcast(localIntent);

    顺便在onDestroy方法中取消注册。

    @Override
    protected void onDestroy(){
        super.onDestroy();
        Log.i("MainActivity onDestroy","销毁广播");
        unregisterReceiver(dynamicBroadcast);
        broadcastManager.unregisterReceiver(localReceiver);
    }

    因为跟动态注册广播类似,所以只贴出了关键代码。

    源码下载

    展开全文
  • broadcast domain - 广播域

    2016-11-29 00:14:10
    英文: Broadcast Domain 中文: 广播域 介绍: 网络中能接收任一设备发出的广播帧的所有设备集合。==所有需要接收其他广播的节点被划分为同一广播域或逻辑网段==。连接在HUB和传统交换机端口上的所有节点构成一个...
  • 语言:中文 (简体) 向豆瓣的首页广播提要添加功能 基于Chrome pageAction的扩展程序,可为豆瓣的首页广播供稿添加功能
  • ADBKeyBoard.apk adb中文输入法 完美支持中文 adb...用法 adb shell am broadcast -a ADB_INPUT_TEXT --es msg "中文输入法" 无法或乱码的来这里看解决方法 http://blog.csdn.net/u011068616/article/details/47945927
  • ADBKeyBoard.apk adb中文输入法

    热门讨论 2016-03-06 13:14:32
    ADBKeyBoard.apk adb中文输入法 完美支持中文 adb输入中文 用法 adb shell am broadcast -a ADB_INPUT_TEXT --es msg "中文输入法
  • Spark-2.x 中文文档

    万次阅读 2019-05-27 21:04:17
    Spark 概述 编程指南 快速入门 Spark 编程指南 概述 Spark 依赖 Spark 的初始化 Shell 的使用 弹性分布式数据集(RDDS) ... Broadcast Variables (广播变量) Accumulators ...
  • 配合ADBKeyBoard.apk使用,完美解决adb 中文输入 adb shell am broadcast -a ADB_INPUT_TEXT --es msg 'ADB真好玩'
  • 不支持中文输入

    2020-12-26 04:24:49
    <div><p>使用 adb shell am broadcast -a ADB_INPUT_TEXT --es msg '你好嗎? Hello?' , 无法显示, 如果是adb shell am broadcast -a ADB_INPUT_TEXT --es msg 'Hello?'就可以显示 ...
  • 完美解决adb 中文输入

    千次阅读 2018-01-09 20:27:21
    配合ADBKeyBoard.apk使用,完美解决adb 中文输入 adb shell am broadcast -a ADB_INPUT_TEXT --es msg '不错,可以学着品红酒的好工具'
  • 代码下载自github,中间自己改了下,可以完美的输出中文。...adb shell am broadcast -a ADB_INPUT_TEXT --es msg '\u8fd9\u662f\u4e00\u4e2a\u4f8b\u5b50? Hello?' 在设备上输出为:这是一个例子?Hello?
  • public static final String BROADCAST_PACKAGE_REMOVED  允许应用程序发出一个应用程序被删除的通知。  常量值: "android.permission.BROADCAST_PACKAGE_REMOVED"  public static final String CALL_PHONE ...
  • 使用 adb 在手机上进行模拟发布评论的操作时,需要在文本框中文,但是 adb shell input 中文文本 无法正常工作。 解决办法 前往 https://github.com/senzhk/ADBKeyBoard ,页面最下方有个可以下载 apk 的地址 下载...
  • CCNA 中文笔记PDF

    2009-08-15 20:38:49
    CCNA中文笔记 Chapter1 Internetworking Internetworking Basics 把1个大的网络分成几个小点的网络称之为网络分段(network segment),这些工作由routers,switches和bridges来完成 引起LAN拥塞的可能的原因是: 1.太多...
  • Android 之使用ADB命令解决输入中文

    千次阅读 2019-09-11 20:56:12
    第一步:下载并安装ADB Keyboard,是专门针对输入中文的输入法,安装好后效果如下: 第二步:设置并选择ADB Keyboard为当前输入法,效果图如下: 第三步:使用命令adb shell am broadcast -a ADB_INPUT_TEXT ...
  • Qt 下中文数据通信

    千次阅读 2009-01-06 15:08:00
    参考Qt4文档中的QUdpSocket实例QByteArray datagram=...//message(int) udpSocket->writeDatagram(datagram.data(),datagram.size(),QHostAddress::Broadcast,45454);现在我想把文本框中的输入文字写入Datagram
  • 标准EN55020对应的国标GB9383 声音和电视广播接收机及有关设备-抗扰度...Sound and television broadcast receivers and associated equipment — Immunity characteristics — Limits and methods of measurement
  • 本文主要讨论 Apache Spark 的设计与实现,重点关注其设计思想、运行原理、实现架构及性能调优,附带讨论与 Hadoop MapReduce 在设计与实现上的区别。...Broadcast 介绍 broadcast 功能 Job Scheduling
  • CCNA 中文读书笔记一

    2008-12-21 12:45:29
    Internetworking Basics 把 1 个大的网络分成几个小点的网络称之为网络分段(network segment),这些工作由routers,...太多的主机存在于 1 个广播域(broadcast domain) 2.广播风暴 3.多播(multicast) 4.带宽过低 在...
  • EMC test standard. Sound and television broadcast receivers and associated equipment - Immunity characteristics - Limits and methods of measurement
  • 【宾州中文树库CTB】数据读取

    千次阅读 2018-11-14 18:52:12
    CTB8.0 共有如下类型文件:  Newswire: [0001-0325, 0400-0454, 0500-0540, 0600-0885, 0900-0931, 4000-4050]——后缀.nw.raw  Magazine articles: [0590-0596, 1001-1151... Broadcast news:[2000-3145, 4051...
  • 站点内自动隧道寻址协议(Intra-Site Automatic Tunnel Addressing Protocol, ISATAP)连接IPv4网络上的双栈...ISATAP将IPv4网络视作IPv6的链路层,支持类似Non-Broadcast Multiple Access (NBMA)模式的自动隧道化机制。
  • Apache Spark 2.0.2 中文文档 Spark 概述 编程指南 快速入门 Spark 编程指南 概述 Spark 依赖 Spark 的初始化 Shell 的使用 弹性分布式数据集(RDDS) 并行集合 外部数据集 RDD 操作 RDD 持久化 共享...
  • Oracle9i初始化参数中文说明 Blank_trimming: 说明: 如果值为TRUE, 即使源长度比目标长度 (SQL92 兼容) 更长, 也允许分配数据。 值范围: TRUE | FALSE 默认值: FALSE serializable: 说明: 确定查询是否获取表级...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 135
精华内容 54
关键字:

broadcast中文