精华内容
下载资源
问答
  • 一主两副失败
    千次阅读
    2020-06-01 09:14:24

    在大漠多线程模板中,脚本副线程的作用主要是一个监控线程,可以监控游戏窗口是否存在,游戏是否卡屏,是否掉线,当然你可以用来进行游戏里的其他检测监控。

    511遇见易语言多线程大漠多线程

    大漠多线程主副线程

    .版本 2
     
    .子程序 脚本副线程, , , 监控线程
    .参数 序号, 整数型
    .局部变量 dm, dmsoft
    .局部变量 dm_ret, 整数型
    .局部变量 死循环, 逻辑型
    .局部变量 任务完成, 文本型
     
    ' 要把大漠插件接口初始化为MAT线程模型
    CoInitializeEx (0, 0)
    线程信息 [序号].线程状态 = #线程状态_正在运行
     
    多线程_异步通知UI (#通知类型_更新, 序号)
    ' 创建对象
    线程信息 [序号].dm.创建 ()
    dm = 线程信息 [序号].dm
     
    .如果真 (dm.Ver () = “”)
        日志输出 (“大漠对象创建失败”)
        设置异常 (序号, “对象创建失败”)
     
        返回 ()
    .如果真结束
     
    ' 开启全局字库
    ' dm.EnableShareDict ()
    ' 设置全局路径
    dm.SetPath (“c:\test”)
    ' 开始绑定游戏窗口,根据自己的游戏换绑定方式
    dm_ret = dm.BindWindowEx (线程信息 [序号].窗口句柄, “normal”, “normal”, “dx”, “dx.public.anti.api|dx.public.disable.window.show”, 0)
    .如果真 (dm_ret ≠ 1)
        日志输出 (“主:绑定失败,错误码:” + 到文本 (dm.GetLastError ()))
        ' 通知主线程进行结束操作(释放资源)
        设置异常 (序号, “绑定失败:副”)
        返回 ()
    .如果真结束
     
    死循环 = 真
    .判断循环首 (死循环)
        ' 可用来检测脚本的异常情况,比如,掉线,目标窗口关闭,
        检测异常 (序号)
        脚本延时 (序号, 1000)
     
    .判断循环尾 ()
     
     
    .子程序 做任务
    .参数 序号
    .局部变量 dm, dmsoft
     
    dm = 线程信息 [序号].dm
    dm.KeyPressChar (“D”)
    脚本延时 (序号, 1000)
     
     
    .子程序 脚本延时
    .参数 序号
    .参数 时间
     
    延时 (时间)

    源码:易语言多线程大漠多线程-37大漠多线程模板-7脚本主副线程

    更多相关内容
  • 桥接提示“获取IP地址失败,请检查路由器DHCP服务器是否开启”、问题介绍我司部分云路由器开启WDS无线桥接,扫描前端路由器的信号并输入密码后,无法连接成功,提示获取IP地址失败,请检查路由器DHCP服务器...

    桥接提示“获取IP地址失败,请检查主路由器DHCP服务器是否开启”

    一、问题介绍

    我司部分云路由器开启WDS无线桥接,扫描前端主路由器的信号并输入密码后,无法连接成功,提示获取IP地址失败,请检查主路由器DHCP服务器是否开启,如下图:

    033f901e4322304f383d30796420d752.png

    请参考以下排查方法。

    二、解决方法

    1、环境干扰

    周围环境存在较多干扰,如较多的无线信号,无线鼠标、无线键盘等设备,影响副路由器和主路由器之间的通信,导致副路由器无法从主路由器获取IP地址。

    解决方法:将副路由器靠近主路由器,并减少路由器附近的干扰设备,然后再重新尝试。

    2、确认主路由器的DHCP服务器开启

    云路由器设置WDS无线桥接时,副路由器的LAN口IP地址默认是从主路由器获取的,如果主路由器的DHCP服务器没有开启,会导致副路由器无法获取IP地址。

    解决方法:登录主路由器管理界面,在 路由设置 > DHCP服务器,确保DHCP服务器为启用状态(或自动状态),如下图:

    01600ffbb33b8bcb3091c691600112ff.png

    DHCP服务器选择为 自动,且当前DHCP服务器状态为:自动开启。

    展开全文
  • android主副MIC录音

    千次阅读 2020-04-25 18:07:21
    import android.content.Context; import android.media.AudioFormat;... } } } PlayRecord可以分别播放左右MIC的录音音频,在播放之后自动保存了个PCM文件在内置存储里面, 所以要记得加SD卡存储权限和录音权限

    最近在做一个项目,要求给主副MIC分别录音,然后再单独播放主副MIC录制的音频文件,再网上找了许久,没有找到合适的就自己琢磨了一下AudioRecord和AudioTrack,然后曲线救国实现了改功能,以下就是全部代码了。

    import android.content.Context;
    import android.media.AudioFormat;
    import android.media.AudioManager;
    import android.media.AudioRecord;
    import android.media.AudioTrack;
    import android.media.MediaRecorder;
    import android.os.Environment;
    import android.os.Handler;
    import android.os.Looper;
    import android.util.Log;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.OutputStream;
    
    import static java.lang.Daemons.start;
    import static java.lang.Daemons.stop;
    
    
    public class AudioRecoderUtils {
        String TAG = "AudioRecoder";
        private boolean isRecording = false;
        private boolean isPlay = false;
    
        byte[] mBuffer = new byte[10485760];
        Handler mHandler = new Handler(Looper.myLooper()) {
        };
        static int mBufferCount = 0;
        AudioRecord audioRecord;
        AudioTrack mAudioTrack;
        //16K采集率
        int frequency = 16000;
        //录音通道--立体音录音
        int channel = AudioFormat.CHANNEL_IN_STEREO;
        //16Bit
        int audioEncoding = AudioFormat.ENCODING_PCM_16BIT;
        AudioManager mAudioManager;
    
        public AudioRecoderUtils() {
    
        }
    
        public boolean getPlay(){
            return isPlay;
        }
    
    //停止录音
        public void StopRecord() {
            isRecording = false;
            if(audioRecord != null){
                audioRecord.release();
            }
        }
    
        private AudioManager.OnAudioFocusChangeListener mAudioFocusChange = new AudioManager.OnAudioFocusChangeListener() {
            @Override
            public void onAudioFocusChange(int focusChange) {
                switch (focusChange) {
                    case AudioManager.AUDIOFOCUS_LOSS:
                        break;
                    case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
                        break;
                    case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:
                        break;
                    case AudioManager.AUDIOFOCUS_GAIN:
                        start();
                        break;
                }
            }
        };
    
    //申请音频焦点
        private void beforePlay(Context context) {
            mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
            mAudioManager.requestAudioFocus(mAudioFocusChange, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN);
        }
    
    //退出释放
        public void releaseAudioManager(){
            if (audioRecord != null) {
                audioRecord.release();
            }
            if (mAudioTrack != null) {
                mAudioTrack.release();
            }
            if(mAudioManager != null){
                mAudioManager.abandonAudioFocus(mAudioFocusChange);
            }
        }
    
    //开始录音
        public void StartRecord(Context context) {
        	new Thread(new Runnable() {
            	public void run() {
            		mBufferCount = 0;
            		isPlay = false;
           		 beforePlay();
            		int bufferSize = AudioRecord.getMinBufferSize(frequency, channel, audioEncoding);
            		if (audioRecord != null) {
                		audioRecord.release();
           			 }
            		long count = 0;
           			 long start = System.currentTimeMillis();
            		audioRecord = new AudioRecord(MediaRecorder.AudioSource.DEFAULT, frequency, 			channel, audioEncoding, bufferSize);
            		isRecording = true;
            audioRecord.startRecording();
            while (isRecording) {
                int n = audioRecord.read(mBuffer, mBufferCount, 12000);
                if (n > 0) {
                    mBufferCount += n;
                    long cc = Math.round(((double) (System.currentTimeMillis() - start)) / 1000.0d);
                    if (cc != count) {
                        count = cc;
                    }
                } else if (n < 0) {
    
                }
            }
                        }
            }).start();
            new Thread(new Runnable() {
                public void run() {
                    savePCM(mBuffer, mBufferCount, "stereo.pcm");
                }
            }).start();
        }
    /**
    //播放音频 --- 在这里把主副MIC录制的数据单独提取出来,因为是用的CHANNEL_IN_STEREO,
    //注意,因为把数据区分出来了所以在new AudioTrack的时候要用CHANNEL_IN_MONO单通道播放
    //如果要播放录制的原音可以就要用CHANNEL_IN_STEREO,直接用
    //mAudioTrack.write(mBuffer, 0, mBufferCount);                         
    //  mAudioTrack.play();
    */
        public void PlayRecord(boolean isLeft) {
            if (mAudioTrack != null) {
                mAudioTrack.release();
            }
            isPlay = true;
            mAudioTrack = new AudioTrack(3, 16000, 4, 2, mBuffer.length, 0);
            if (isLeft) {
                new Thread(new Runnable() {
                    public void run() {
                        byte[] bsleft = new byte[(mBufferCount / 2)];
                        int i = 0;
                        while (i < mBufferCount - 1 && (i / 2) + 1 < mBufferCount / 2) {
                            bsleft[i / 2] = mBuffer[i];
                            bsleft[(i / 2) + 1] = mBuffer[i + 1];
                            i += 4;
                        }
                        savePCM(bsleft, bsleft.length, "left.pcm");
                        if (mAudioTrack != null) {
                            try {
                                mAudioTrack.write(bsleft, 0, bsleft.length);
                                mAudioTrack.play();
                            } catch (Exception e) {
                                isPlay = false;
                            }
                        } else {
                            isPlay = false;
                        }
                    }
                }).start();
            } else {
                new Thread(new Runnable() {
                    public void run() {
                        byte[] bsright = new byte[(mBufferCount / 2)];
                        int j = 2;
                        while (j < mBufferCount - 1 && (j / 2) + 1 < mBufferCount / 2) {
                            bsright[(j / 2) - 1] = mBuffer[j];
                            bsright[j / 2] = mBuffer[j + 1];
                            bsright[(j / 2) + 1] = 0;
                            j += 4;
                        }
                        savePCM(bsright, bsright.length, "right.pcm");
                        if (mAudioTrack != null) {
                            try {
                                mAudioTrack.write(bsright, 0, bsright.length);
                                mAudioTrack.play();
                            } catch (Exception e) {
                            }
                        } else {
                        }
                    }
                }).start();
            }
    
        }
    
    //把录制的音频以PCM的格式写入存储里面
        public String savePCM(byte[] data, int count, String name) {
            Log.d(TAG, "开始写入 count = " + count);
            String str = null;
            if (count <= 0) {
                return str;
            }
            try {
                File path = new File(Environment.getExternalStorageDirectory() + "/record/");
                if (!path.exists())
                    path.mkdirs();
                File fout = new File(Environment.getExternalStorageDirectory() + "/record/" + name);
                OutputStream out = new FileOutputStream(fout);
                out.write(data, 0, count);
                out.close();
                Log.d(TAG, "写入成功");
                return fout.getAbsolutePath();
            } catch (Exception e) {
                e.printStackTrace();
                Log.e(TAG, "写入失败");
                return str;
            }
        }
    }
    
    

    PlayRecord可以分别播放左右MIC的录音音频,在播放之后自动保存了一个PCM文件在内置存储里面,
    所以要记得加SD卡存储权限和录音权限

    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    

    一边录音一边播放

        public void StartRecord() {
            mBufferCount = 0;
            beforePlay(this);
            int bufferSize = AudioRecord.getMinBufferSize(frequency, channel, audioEncoding);
            audioRecord = new AudioRecord(MediaRecorder.AudioSource.DEFAULT, frequency, channel, audioEncoding, bufferSize);
            mAudioTrack = new AudioTrack(3, frequency, channel, audioEncoding, mBuffer.length, 0);
            isRecording = true;
            audioRecord.startRecording();
            while (isRecording) {
                int n = audioRecord.read(mBuffer, mBufferCount, 12000);
                mAudioTrack.write(mBuffer, 0, mBuffer.length);
                if (n > 0) {
                    mAudioTrack.play();
                    mBufferCount += n;
                }
            }
        }
    
    展开全文
  • Windows Server2012 主副AD域控部署

    万次阅读 多人点赞 2018-03-20 20:20:42
    部署域控和辅域控(server2012跟server2008同样能够实现) 部署额外域控制器,指的是在域中部署第二个甚至更多的域控制器,每个域控制器都拥有个 Active Directory 数据库。 使用额外域控制器的好处很多,首先是...

    介绍:

    部署主域控和辅域控(server2012跟server2008同样能够实现)
    部署额外域控制器,指的是在域中部署第二个甚至更多的域控制器,每个域控制器都拥有一个 Active Directory 数据库。
    使用额外域控制器的好处很多,首先是避免了域控制器损坏所造成的业务停滞,如果一个域控制器损坏了,只要域内其他的域控制器有一个是工作正常的,域用户就可以继续完成用户登录,访问网络资源等一系列工作,基于域的资源分配不会因此停滞。
    其次,使用额外域控制器还可以起到负载平衡的作用。
    主域控:2012DC1,ip:192.168.15.1
    辅域控:2012DC2,ip:192.168.15.2
    副域加入主机的时候提供的用户名:域名\用户名,密码

    一、主域控的部署(主域控名2012DC1,ip192.168.15.1):

    1、添加角色和功能向导

    2、基于角色或基于功能的安装

    3、从服务器池中选择服务器

    4、选择Active Directory域服务

    5、默认,下一步

    6、默认,下一步

    7、默认,点击安装

    8、点击,将此服务器提升为域控制器

    9、由于这个是第一个域控服务器,所以选择添加新林,输入公司的域控名字

    10、林功能级别选择server2012,向下兼容

    11、默认,下一步

    12、下一步

    13、选择存放路径,要选择存储空间大的磁盘,这里只是演示就默认路径

    14、确认查看无误,下一步

    15、点击安装

     

    二、副域控的部署(辅域控名2012DC2,ip192.168.15.2):

    1、添加角色和功能向导

    2、基于角色或基于功能的安装

    3、从服务器池中选择服务器

    4、副Active Directory域服务

    5、默认,下一步

    6、默认,下一步

    7、默认,安装

    8、将此服务器提升为域控制器

    9、添加到主域控制器中,输入主域控名

    10、输入密码,下一步

    11、默认,下一步

    12、从主域控复制

    13、根据需要修改存储路径

    14、默认,下一步

    15、点击安装

    三、安装完成后在2012dc2上验证:

    1、在DOS界面查看

     

    2、

    3、在2012dc2上面新建组织单位test

    4、回到2012dc1上刷新后查看

    5、在2012dc1的test组织下新建test用户

    6、回到2012dc2上面刷新后

    7、在2012dc2上删除组织test

    8、回到2012dc1上面刷新后查看

    9、由此可见:主域和辅域之间的数据会进行实时同步

     

    展开全文
  • 桥接提示“获取IP地址失败,请检查路由器DHCP服务器是否开启”、问题介绍tplink部分云路由器开启WDS无线桥接,扫描前端路由器的信号并输入密码后,无法连接成功,提示获取IP地址失败,请检查路由器DHCP...
  • 本文要说的是基于 keepalived 实现台服务器之间的备切换 。当台机器的 Java 进程异常关闭,另台机器能够自动监测到并启动本机的 Java 进程。 keepalived 的工作机制及原理不多做介绍,自行搜索了解,...
  • tplink无线桥接失败怎么办?

    千次阅读 2021-08-11 02:43:02
    不少用户向鸿哥反映,在设置tplink路由器无线桥接的时候,发现路由器桥接路由器信号失败,桥接不成功,连不上路由器的信号。所以,鸿哥特意整理了这篇文章,来详细介绍,tplink路由器无线桥接不成功的解决办法...
  • 、mongodb启动失败问题 number1 1.启动命令的路径问题导致,仔细查看启动时的命令是否正确 2.限权问题导致,例如安全认证中的没有改变0203的600的权限,再例如有次日志文件的权限是root也是报错1 number14 1.删除...
  • cout 设置主副失败" ; } } //判断特定显示器是否需要调整方向 if (deviceMode.dmDisplayOrientation != DMDO_90){ cout 需要调整横竖屏" ; deviceMode.dmDisplayOrientation = DMDO_90; if (deviceMode....
  • 备域控数据无法同步

    千次阅读 2021-08-02 02:24:14
    也就是说台域控之间没有进行数据同步了。查看事件日志,提示数据复制失败等等。然后还发现备域控上的DNS的正向和反向搜索区域信息都是空的。原本打算把备域控降域,但是在降的过程中提示无法连接操作主机!怎么办...
  • 因为经常遇到同时用到实验室配备的主机和自己的笔记本同时使用的场景,台设备需要切换套键鼠很麻烦,这里介绍个微软开发的个免费软件Microsoft Garage Mouse without Borders 可以实现,同时还可以做到跨...
  • 解决办法: ...1.先将需要降为服务器的无盘(系统虚拟盘) 服务停止 ...4.删除服务器上面的ServerConfig.xml文件,结束服务器的ControlServer进程 5.启动服务器的虚拟盘服务
  • 在数据文件中,如果只有文件就不需要写后面的次要文件,如果有次要文件,那么个括号之间的逗号不能够少。    文件的初始大小不能够小于5M,因为文件必须至少是 5MB 才能容纳 model 数据库...
  • 你知道他们说什么。假如你有个工作,意味着你只是破产了。你在用时间换钱,你在为别人工作。你读过的博客告诉你要辞职,创业才是未来的潮流。社会把工作变成了敌人。...我希望有位店员会来问我是否需要帮助,但...
  • 关于Gitlab项目主副分支的问题(master与develop)问题 问题 在创建develop分支时,应该先在gitlab上建好develop,然后按照映射关系根据网上的来建本地的develop分支仓库(主体是远程仓库,本地仓库只是远程仓库的...
  • 、检查路由器无线参数路由器在桥接路由器的无线信号时,需要输入路由器的无线密码,才能够连接上。如果在路由器中,填写路由器的无线密码不正确,那么肯定会导致无线桥接不成功的问题出现。所以,...
  • mysql外键约束失败

    千次阅读 2019-08-26 19:27:02
    创建外键的表与被约束的表。1-4条次查看一下。 我的就是由于第三条的原因。当然我的不是有记录了,是执行插入语句之前,被约束的表里没有数据导致的。这两者其实是个道理。 打个比方: 现在有个表–表...
  • 若将种覆盖结合,就会相互补充,判定/条件覆盖就是设计足够多的测试用例,使得每个判定表达式中的每个条件都取到各种可能的值,并且使每个判断语句的所有判断结果至少出现次。 (1)a=2,b=0,x=2(满足a>1,b=0,a=2,x>...
  • 今天突然想知道一下csdn博客排名第的博是谁,就百度了一下,搜到了这么个博文: 看了曾经CSDN博客排名第的大神博客,你是什么想法? gao_chun 2014-8-1 11:39:45 阅读(7115) 评论(0) 今天无聊,搜索了一下...
  • Selenium万字大题库

    千次阅读 多人点赞 2021-06-22 10:42:49
    测试最流行框架之,可以学习一下。
  • iPhone12双卡无信号是什么情况?iPhone12已经正式发售,很多小伙伴也拿到了手机...下面就跟小编起来看看吧。iPhone12无信号原因解析:1、很多iPhone12用户反应遇到了双卡突然无信号的问题,刚才还好好的,在进入...
  • 2018年7月10日,我在淘宝店“缘生缘数码驿站”购买了台索尼数码相机A7M3,2018年7月25日,我又在该店购买了块索尼原装电池,这家淘宝店是一家经营了10年,有三个皇冠的老店,出于对他的信任,我并没有怀疑产品有...
  • 之前在送书的时候做了个小调查,问题是:“你是怎么认识二哥的?” 我以为从知乎上了解的多一些,没想到,CSDN 上的最多,看来二哥还是在 CSDN 上更有影响力一些,这个结果多少让我感到有些意外,因为我最近在...
  • 1、先切换到分支master git checkout master 2、把分支代码拉到本地... 如果出现合并失败,使用以下方案? 1、git status 查看文件是否都已提交 2、git add . 或 git add ./ 把文件提交到暂存区 3、git commit
  • 位考研学长的走心经验分享

    千次阅读 多人点赞 2021-05-21 07:07:46
    考研成了我大三大四所有事情的优先选择,我放弃了部最后竞选,也不再做班干,三年的时光恍然如梦,有位老师说,几十年后,你们会发觉,人生根本没有什么选择。人都是被各种因素推着往前走,不论如何,我依然认为...
  • socket()套接字创建失败

    千次阅读 2020-04-06 00:05:20
    //高位字节存储版本号, 低位字节存储版本号 err = WSAStartup(wVersionRequested, &wsaData);//WSAStartup,即WSA(Windows Sockets Asynchronous,Windows异步套接字)的启动命令 if (err != 0) { return; } if ...
  • 禁止BGSAVE和SAVE同时执行,也就是说执行其中个就会拒绝另个,这是为了避免父进程和子进程同时执行个rdbsave,防止产生竞争条件。 载入 RDB载入工作是服务器启动时自动执行的。 自动保存 用户可以通过save...
  • 读博士学位失败率有多高

    千次阅读 2020-05-04 19:00:00
    然而因为严重的拖延症毕业论文仍然没有开始写 另个实验室是我们实验室的反面,老板太忙没时间管理实验室,实验室里团乱糟糟的,仪器除了结果哪里都响,于是半年内逼疯了个博士生,个读博第四年被坑得实在...
  • 本文由“光环国际”—中国项目管理PMP培训上市企业转载 尽管采用了新的方法和管理技术来阻止惊人的失败,但关键的技术措施仍然以惊人的...在过去,IT失败往往意味着代价高昂的失败之作,大规模的软件实施时间
  • 个中科大差生的8年程序员工作总结

    万次阅读 多人点赞 2021-01-14 15:52:01
    大概是这样的,我们部门当时有个大组,个是我们的软件研发组,个是负责系统设计的系统分析组,当时个组的工作界面是系统组下发软件任务书给软件组,软件组依照任务书开发,当时由于历史原因,软件组有不少...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 31,120
精华内容 12,448
关键字:

一主两副失败