首页 文章 精选 留言 我的

精选列表

搜索[基础搭建],共10000篇文章
优秀的个人博客,低调大师

使用.NET Core搭建分布式音频效果处理服务(六)让Middleware自动Invoke

为何要用中间件来实现音频处理的监听服务 当然也可以使用Startup来进行服务的自启动,或者也可以使用quartz定时调度任务来启动音频服务,大家随意。 笔者认为使用中间件的目的,是为了分离应用和服务,也是一种解耦手段。 我们知道,在NETCORE中的中间件,有点类似像AOP的一种实现形式,他的调用方式是通过Request=>Middleware=>next=>custom logic=>Response。我们可以用来做日志记录、权限验证、事物处理,多个中间件形成一个处理管道,甚至可以实现自定义的MVC和依赖注入。 创建一个中间件 为了便于区分,我们扩展一个名为“MediaHandlers”的IApplicationBuilder 1 public static class MediaHandlers 2 { 3 public static IApplicationBuilder UseMediaAudioHandlerMiddleware(this IApplicationBuilder builder, 4 MediaAudioOptions options) 5 { 6 if (builder == null) 7 throw new ArgumentNullException(nameof(builder)); 8 9 return builder.UseMiddleware<MediaAudioMiddleware>(options); 10 } 11 } 再创建一个名为“MediaAudioMiddleware”的中间件,其实就是一个实现类,但需要传递对象RequestDelegate做请求代理。 并且,我们将在中间件中实现依赖注入,而中间件的依赖注入却无法通过构造函数的方式进行注入,需要通过Invoke来实现依赖注入,完整代码如下: 1 public async Task Invoke(HttpContext context, 2 IDataOpService iDataOpService, 3 ICacheAsyncService iCacheAsyncService, 4 IMsgBusService imsgBusService, 5 IHostingEnvironment iHostingEnvironment) 6 { 7 _dataOpService = iDataOpService; 8 _iMsgBusService = imsgBusService; 9 _iCacheAsyncService = iCacheAsyncService; 10 _ihostingEnvironment = iHostingEnvironment; 11 12 await _next(context); 13 } 跟之前的控制器注入的内容类型是一样的。然后我们再来看看构造函数中需要实现的一些事情: public MediaAudioMiddleware(RequestDelegate next, MediaAudioOptions options) { _next = next; Task.Factory.StartNew(() => { Thread.Sleep(3 * 1000); //...需要自定义启动的方法 }); } 构造函数中默认必须传递RequestDelegate类型参数,用于委托执行Request之后Response之前的代理。 将需要启动的服务已子任务(子线程)的方式交给Task工厂进行自行管理,再次分离了主管道请求应用。 但是,默认这个中间件是不会自动启动的。。。因为没有建立一个请求管道。 强制建立一个请求管道 笔者的思路是,通过httpclient请求主管道中的一个任意的API接口(比如你自定义实现的服务器信息接口),从而强制实现该请求管道的所有事情,比如循环,比如监听等等。参考如下: 1 using (var httpClient = new HttpClient()) 2 { 3 httpClient.BaseAddress = new Uri($"{General.LocalHostUrl}/Info"); 4 var r = httpClient.GetAsync(httpClient.BaseAddress).Result; 5 if (!r.ToString().Contains("200")) return; 6 Console.WriteLine("MediaAudioMiddleware Running"); 7 var mediaHandler = new AudioHandlerWorkUnit(iDataOpService: _dataOpService, 8 iCacheAsyncService: _iCacheAsyncService, 9 imsgBusService: _iMsgBusService, 10 iHostingEnvironment: _ihostingEnvironment, 11 millsSeconds: options.MillsSeconds 12 ); 13 mediaHandler.DoStart(); 14 } 当然,需要在命令参数中(或前置参数中约束该管道只建立一次),也许笔者的实现方式欠妥,如果你有更好的方法,欢迎交流。 感谢阅读

优秀的个人博客,低调大师

搭建HBase的本地模式、伪分布式、全分布式和HA模式

一、安装HBase: 我这里选择的是hbase-1.3.1-bin.tar.gz版本解压HBase: tar -zxvf hbase-1.3.1-bin.tar.gz -C ~/training 配置HBase的环境变量: export HBASE_HOME=/root/training/hbase-1.3.1 ​ export PATH=$HBASE_HOME/bin:$PATH 生效环境变量: source ~/.bash_profile 二、HBase的安装模式: 1、本地模式: 特点:只有HMaster ,没有Hregionserver 修改两个配置文件: 1)hbase-env.sh export JAVA_HOME=/root/training/jdk1.8.0_144 2)hbase-site.xml <configuration> <!--配置HBase在本地磁盘中数据存放路径--> <property> <name>hbase.rootdir</name> <value>file:///root/training/hbase-1.3.1/data</value> </property> </configuration> 2、伪分布式模式: 特点:具备HBase的所有功能 修改两个配置文件: 1)hbase-env.sh 添加java环境变量: export JAVA_HOME=/root/training/jdk1.8.0_144 配置HBase管理Zookeeper的方式: HBASE_MANAGES_ZK=true 注:默认使用HBase自带的一个zookeeper 2)hbase-site.xml <property> <name>hbase.rootdir</name> <value>hdfs://bigdata11:9000/hbase</value> </property> ​ <!--配置HBase在HDFS中数据备份的个数--> <property> <name>dfs.replication</name> <value>1</value> </property> ​ <!--配置HBase集群分布式模式--> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> ​ <!--配置HBase的zookeeper地址--> <property> <name>hbase.zookeeper.quorum</name> <value>localhost</value> ​ <!--配置HBase的zookeeper数据存放路径--> <property> <name>hbase.zookeeper.property.dataDir</name> <value>/home/zk</value> </property> 3、全分布式模式: 特点:至少三台机器以上 原因:主从架构 修改三个配置文件: 1)hbase-env.sh 添加java环境变量: export JAVA_HOME=/root/training/jdk1.8.0_144 配置HBase管理Zookeeper的方式: HBASE_MANAGES_ZK=true 注:默认使用HBase自带的一个zookeeper 2)hbase-site.xml <!--配置HBase在HDFS中数据存放路径--> <property> <name>hbase.rootdir</name> <value>hdfs://bigdata12:9000/hbase</value> </property> ​ <!--配置HBase在HDFS中数据备份的个数--> <property> <name>dfs.replication</name> <value>2</value> </property> ​ <!--配置HBase集群分布式模式--> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> ​ <!--配置HBase的zookeeper地址--> <property> <name>hbase.zookeeper.quorum</name> <value>bigdata12</value> </property> ​ <!--配置HBase主节点最大时钟偏离--> <property> <name>hbase.master.maxclockskew</name> <value>180000</value> </property> 3)slaves:配置从节点的地址 bigdata13 bigdata14 4、HA模式: 特点:添加一个新的HMaster HA的思想:多几个主节点 在HBase的全分布式模式安装完成以后,再在某一个从节点上:bigdata13/bigdata14手动启动一个Hmaster hbase-daemon.sh start master 三、操作HBase: hbase shell:Hbase的命令行工具:一种客户端 创建HBase表: create 'students','info','grade' 添加数据: put 'students','stu001','info:name','Tom' put 'students','stu001','info:age','18' put 'students','stu001','info:gender','M' put 'students','stu002','info:name','Mary' put 'students','stu002','info:boy friend','Peter' 查看stu001的所有信息: get 'students','stu001' 版权声明:本文为博主原创文章,未经博主允许不得转载。http://www.cnblogs.com/lijinze-tsinghua/

优秀的个人博客,低调大师

手把手教你搭建一个基于Java的分布式爬虫系统

在不用爬虫框架的情况下,我经过多方学习,尝试实现了一个分布式爬虫系统,并且可以将数据保存到不同地方,类似 MySQL、HBase 等。 因为此系统基于面向接口的编码思想来开发,所以具有一定的扩展性,有兴趣的朋友直接看一下代码,就能理解其设计思想。 虽然代码目前来说很多地方还是比较紧耦合,但只要花些时间和精力,很多都是可抽取出来并且可配置化的。 因为时间的关系,我只写了京东和苏宁易购两个网站的爬虫,但是完全可以实现不同网站爬虫的随机调度,基于其代码结构,再写国美、天猫等的商品爬取,难度不大,但是估计需要花些时间和精力。 因为在解析网页的数据时,比如我在爬取苏宁易购商品的价格时,价格是异步获取的,并且其 API 是一长串的数字组合,我花了几个小时的时间才发现其规律,当然也承认,我的经验不足。 这个系统的设计,除了基本的数据爬取以外,更关注以下几

优秀的个人博客,低调大师

一小时完成基于阿里云流计算的实时计算系统搭建

目前,实时计算越来越被广泛应用,比如 实时ETL、实时报表、实时大屏展示等一些监控预警和在线系统的场景。企业对计算速度和消息更新速度要求越来越高。开源框架中,Storm,Sparks,Flink等在企业生产中大量投入使用,但是开发相对复杂,需要对接各种框架api、sdk等,另外人力成本相对较高。那么有没有一种高效的实时计算平台,只要会写SQL并且可视化的操作就可以快速完成实时计算的业务开发呢 阿里云目前推出产品 阿里云流计算(公测中,预计18年3月份商业化)(StreamCompute)传送门:https://help.aliyun.com/document_detail/62437.html?spm=a2c4g.11186623.6.544.Ed7XzG 阿里云流计算全链路示意图可以简单快速的实现仅用SQL就完成流计算的业务链路,下

优秀的个人博客,低调大师

002 Ubuntu16.04上基于docker搭建以太坊go-ethereum客户端

一、运行环境 Ubuntu16.04、go1.9.2、docker17.12.0-ce 二、安装go 最新的docker17.12.0-ce 需要go1.9.2支持,参考之前文章进行安装地址: http://blog.csdn.net/zxs9999/article/details/78874807 三、安装docker docker官方安装教程地址: https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/#upgrade-docker-ce 1、卸载历史版本docker $ sudo apt-get remove docker docker-engine docker.io 2、安装docker $ sudo apt-get update $ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ software-properties-common $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - $ sudo apt-key fingerprint 0EBFCD88 $ sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" 2.1安装最新稳定版本docker $ sudo apt-get update $ sudo apt-get install docker-ce 2.2安装指定版本docker $ apt-cache madison docker-ce docker-ce | 17.12.0~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages docker-ce | 17.09.1~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages docker-ce | 17.09.0~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages docker-ce | 17.06.2~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages docker-ce | 17.06.1~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages docker-ce | 17.06.0~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages docker-ce | 17.03.2~ce-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages docker-ce | 17.03.1~ce-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages docker-ce | 17.03.0~ce-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages 选择需要的版本,例如: 17.12.0~ce-0~ubuntu 执行以下语句 $ sudo apt-get install docker-ce=‘17.12.0~ce-0~ubuntu’3、校验安装是否成功(下载docker镜像文件hello-world) $ sudo docker run hello-world 显示以下信息为成功 Hello from Docker! This message shows that your installation appears to be working correctly. 四、以太坊客户端安装 $ sudo docker version 1、启动镜像 $sudo service docker start 2、本地安装镜像文件 查看 $ sudo docker images 3、安装以太坊客户端镜像文件 $ sudo docker pull ethereum/client-go $ sudo docker images 显示结果: REPOSITORY TAG IMAGE ID CREATED SIZE ethereum/client-go latest f13c73d098d8 16 hours ago 43MB hello-world latest f2a91732366c 5 weeks ago 1.85kB 4、启动节点 4.1、控制台交互式启动 以下命令启动节点可以使用javascript控制台进行交互操作。 $ sudo docker run -it -p 30303:30303 ethereum/client-go console 4.2、普通启动 $ sudo docker run -it -p 30303:30303 ethereum/client-go 4.3 可远程交互式启动 $ sudo docker run -it -p 8545:8545 -p 30303:30303 ethereum/client-go --rpc --rpcaddr "0.0.0.0" “0.0.0.0”参数会在8545接口上接收所有主机发送的请求,公共网络慎用! 4.4、指定存储位置启动 $ sudo docker run -it -p 30303:30303 -v /path/on/host:/root/.ethereum ethereum/client-go

优秀的个人博客,低调大师

搭建基于asp.net的wcf服务,ios客户端调用的实现记录

一、写wcf 问题: 1.特定的格式 2.数据绑定 3.加密解密 二、发布到iis 问题: 1.访问权限问题,添加everyone权限 访问网站时:http://localhost/WebbUploadSample/ZipUpload.aspx “/WebbUploadSample”应用程序中的服务器错误。 -------------------------------------------------------------------------------- 访问被拒绝。 说明:访问服务此请求所需的资源时出错。您可能没有查看所请求的资源的权限。 错误消息401.3:您无权使用您提供的凭据查看此目录或页(由于访问控制列表而导致访问被拒绝)。请让Web服务器的管理员授予您访问权限。 解决方法:添加Everyone权限 2.防火墙关闭,或者添加端口 3.无主项的时候要开目录浏览 4. 应用程序“WCF”中的服务器错误 InternetInformationServices7.5 解决方法: iis重新注册.netframework4.0 %windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe-i cmd.exe管理员身份运行 三、调用接口 问题:无返回值 问题:本地可以测试接口,远程不行 在web.config的<system.web></system.web>中间加入如下配置节内容 <webServices> <protocols> <addname="HttpSoap"/> <addname="HttpPost"/> <addname="HttpGet"/> <addname="Documentation"/> </protocols> </webServices> 分类: ASP.NET, WCF 本文转自左正博客园博客,原文链接:http://www.cnblogs.com/soundcode/p/3795479.html ,如需转载请自行联系原作者

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册