首页 文章 精选 留言 我的

精选列表

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

JAVA开发者看好了,教你如何使用eclipse搭建python开发环境

前言有很多的IDE,今天为大家介绍一个eclipse+Pydev的组合,记录自己的配置。**一、前提准备** eclipse下载:http://www.eclipse.org/downloads/ PyDev下载:http://www.pydev.org/download.html Python下载:https://www.python.org/downloads/ jdk下载 :http://www.oracle.com/technetwork/java/javase/downloads/index.html 二、配置 废话不多说,说重点 安装JDK。安装路径我设置为C:javajdk1.7.0_51,之后的jre也放在C:java目录下 path变量的设置: ;C:jdk1.7.0_51bin; (记得前后都加上分号。简单地设置path就可以用了,关于JAVA_HOME和CLASSPATH的配置见:http://my.oschina.net/cqslpxzzp/blog/363433) 安装Python(为了学习方便,同时安装3.4和2.7) 解压eclipse和PyDev,将PyDev中plugins和features中内容复制到eclipse的对应目录中,即可启动eclipse 配置Pyhton解释器: 编码改为UTF-8: Windows -> Preferences -> General -> Editors -> Text Editors -> Spelling -> encoding : utf-8 Windows -> Preferences -> General -> Workspace -> Text file encoding : utf-8 模板: Windows -> Preferences -> PyDev -> Editor -> Templates -> <Empty> 第一行写入: #coding=utf-8 (这句主要是为了照顾python 2.x,在3.x中默认使用utf-8。以后新建.py文件时eclipse会自动在文件前加上模板的内容) 修改字体:中文默认采用西欧字符,中文太小 Windows -> Preferences -> General -> Appearance -> Colors and Fonts -> Basic -> Text font -> 脚本:中欧字符 修改注释颜色:默认的浅绿色实在看不太清 Windows -> Preferences -> PyDev -> Editor -> Apprearances color options -> Comments 显示行号: Windows -> Preferences -> General -> Editors -> Text Editors -> Show line numbers 定义快捷键 : 我使用esc来执行程序 Windows -> Preferences -> General -> Editors -> Keys **小编推荐一个学python的学习qun 740322234无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!** 最后是布局,右边有3个console,一个显示运行结果,另两个分别是Python 3 和Python 2的shell,方便测试 设置步骤: 最后一定记得钉住,不然一运行代码,Python console又会变成java Stack Trace console 修改布局后记得保存下来(不过这样改了console后,虽然下次打开布局依旧,可是还得重新设置console内容,不过为了学习方便也值得) 然后就可以看到新的布局

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

从云服务到行业云,看可信云如何搭建云计算的健全标准?

【大咖・来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》 1月25日,中国信息通信研究院在京召开了可信云第十一次新闻发布会,对可信云总体进展和一批评估结果进行了完整披露。 最新的可信云评估体系主要分为基础服务类、软件类、混合云、行业类、专项能力、开发运维类、安全类等七大类评估业务。 基础云服务类持续完善,覆盖IaaS/PaaS/SaaS,截至2018年下半年,来自18个云服务商的24个云服务成功通过了可信云第十一批评估。 除了基础云服务评估,可信云还开展了虚拟化管理、容器、多云管理、云网融合、DevOps、SD-WAN、金牌运维等多项评估。 可信云基础服务评估累计共有155家云服务商的314个云服务通过评估。 软件类评估体系不断完善,首发微服务、SD-WAN评估,软件类评估测试累计共有46家云服务商的83个解决方案通过评估。 基于评估结果和对云服务商能力的持续跟踪和监测,可信云认为,我国云计算市场逐步成熟,基础云服务增长持续稳定,虚拟化管理软件在行业应用中加速渗透,容器技术广泛应用。目前,云计算已进入多云混合时代,云管、云网成为多云混合的关键,行业云也进入高度适配行业特色、面向细分领域差异化发展的新阶段。同时,行业应用平台面临挑战,亟需开放的云服务能力。对于云服务企业而言,云计算运维、云计算风险管理、信用管理、数据安全等方面亟待提升。 中国信息通信研究院云计算部副主任栗蔚在会上表示,作为我国云计算领域信任体系唯一的权威评估,可信云自2013年推出以来,从包括IaaS、PaaS、企业级SaaS、虚拟化产品等在内的基础服务和产品评估,到以运维、混合云、多云为代表的专项能力评估,再到聚焦云服务“事中”的可用性监测以及“事后”的云保险,以及如今的云网融合,可信云紧跟中国云计算发展脉络,评估范围已经覆盖云计算全产业,其权威性得到云计算行业的高度共识。 以下为可信云总体进展及最新评估结果,分别从六个章节进行具体介绍: 一、云服务和云软件评估种类持续扩充 二、深耕混合云,积极拓展云管云网领域 三、持续推进云运维和DevOps转型 四、首个开源治理能力评价标准发布 五、云安全与风险管理标准同步提升 六、行业云助推传统行业上云步伐 章节一:云服务和云软件评估种类持续扩充 可信云在标准制定方面始终具有前瞻性和指导性,今年可信云在云服务和云软件方面新增两类评估标准,即微服务平台和FPGA云主机标准。 首个微服务平台评估标准发布 由中国信息通信研究院牵头,腾讯、华为、阿里云、灵雀云、博纳讯动、烽火、石化盈科、中国电信和云栈科技等单位共同参与的《分布式应用架构评估标准:第一部分:微服务平台》标准目前已完成制定工作。 该标准面向以微服务架构为基础的公有云服务及私有云平台的技术规范,包含了微服务平台架构技术参考模型、微服务框架能力要求及微服务平台能力要求等内容,对微服务平台进行全面的考量,更好的引导和帮助企业进行新应用微服务化开发及传统应用微服务改造选型。 同时,中国信息通信研究院已于本月对腾讯TARS和华为ServiceComb两个微服务平台进行评估测试,试评估结果将在今年4月云原生产业大会上正式公布,敬请关注。 FPGA云主机标准助力AI技术高效落地 FPGA云主机标准于去年9月份立项,从企业基本信息和业务基本信息披露、云服务指标的完备性和规范性、云计算服务指标的真实性能力要求等三大方面对FPGA云主机进行考核,具体指标包括了数据存储持久性、可销毁性、可迁移性、私密性、服务可审查性、服务功能、服务可用性、服务资源调配能力、故障恢复能力等十七个项目。 此次可信云FPGA云主机评估的推进,不仅进一步扩充了可信云家族的评估标准,有助于推进我国云计算厂商云主机能力的增强,更可以助力我国人工智能等信息化技术能够高效地落地和应用。 章节二:深耕混合云,积极拓展云管云网领域 可信云不断丰富混合云领域的评估标准,评估范围从之前针对混合云解决方案的评估,扩展到了多云管理平台评估、云网融合以及SD-WAN等当前热点领域。截止到2019年1月,共有18家厂商通过混合云解决方案评估。 值得一提的是,中国信息通信研究院联合阿里云、腾讯云、华为、中国电信、中国联通、中国移动、华云数据、浪潮、中兴、金山云等知名云计算厂商和电信运营商,共同成立了混合云产业推进联盟,旨在构建混合云生态体系,实现混合云厂商间的协同发展。 多云管理平台评估成果出炉 在混合云解决方案基础上,可信云团队制定了国内首个多云管理平台评估方法。该评估标准主要针对多云管理平台软件,而不是服务商进行评估。 截止2019年1月,共有中国联通、新华三、Fit2cloud、云星科技、骞云科技等14家厂商通过多云管理平台评估。基于可信云严格的评测体系,多云管理平台评估已成为业界衡量企业多云管理平台产品能力的标准之一。 紧跟行业趋势发布云网融合评估标准 面对云网融合趋势的到来,云网融合解决方案评估方法正式发布,包括云专网和云专线两个部分。 云专网主要衡量网络资源调配能力、可靠性、运维系统功能、计量计费准确性、安全防护能力、网络性能,其中特别突出云资源池的扩展能力;云专线则侧重于多点互联能力,包括本地数据中心与多个云资源池的能力、云资源池与多个本地数据中心的互联能力等方面。 截止2019年1月,中国电信的云专网和云专线、中国联通的云专网分别通过云网融合解决方案评估。 首个SD-WAN解决方案评估结果正式发布 2018年下半年,中国信息通信研究院联合产业界各方共同制定了国内首个针对SD-WAN解决方案的评估标准。标准涉及三个方面:企业信息真实性披露、SD-WAN解决方案质量评价、服务指标的完备性和规范性。 在今年1月的2019云管和云网大会上,可信云正式发布SD-WAN解决方案评估结果,互联港湾、zenlayer、深信服、青云、白山云等5家厂商首批通过。 章节三:持续推进云运维和DevOps转型 在云计算时代,保障业务健康运行的运维系统同样至关重要,每一次IT系统的转型,运维系统和业务保障都是最艰难的部分。因此,可信云推出金牌运维专项评估标准和DevOps能力成熟度模型,以推动云计算运维的快速发展。 可信云金牌运维为IT运维转型保驾护航 针对企业云计算运维能力,可信云正式推出金牌运维专项评估标准。该评估共涵盖213项审查指标,审查内容主要包括云服务运维管理系统的流程指导、云服务运维管理系统功能的完备性以及云服务运维管理系统的自动化管理三方面内容,综合考核云服务提供商的整体运维管理水平,旨在引导云服务商建立完善、健全的运维管理体系。 此项评估从2015年底开始至2018年12月,已完成了5个批次的评估,分别是:华为、浪潮、腾讯云、中国移动、中国电信、迅达云成、中国联通、阿里云等,同时新增通过紫光云、网宿科技、浪潮云等厂商。 DevOps能力成熟度模型树立国际新标杆 中国信息通信研究院牵头制定DevOps标准《研发运营一体化(DevOps)能力成熟度模型》,并在国际电信联盟(联合国ITU-T)立项成功,成为国际标准。 该系列标准包括总体架构、敏捷开发管理、持续交付、技术运营、应用设计、安全及风险管理、评估方法、系统和工具技术要求等部分,以实现敏捷开发、持续交付和应用运营的无缝集成,在保证稳定的同时,快速交付高质量的软件及服务。 至今,已有中国移动浙江公司、中国银行软件中心、腾讯IEG、招商银行(4个项目)、中国移动广东公司、中国移动北京公司6家企业的9个项目通过此项能力评估。 章节四:首个开源治理能力评价标准发布 基于开源软件的广泛应用,可信云首个开源治理能力评价方法相关标准正式发布,这是国内首个从流程规范角度提出的开源治理标准。 据了解,首批试评估将于2019年上半年正式启动报名。该评估体系分为三个部分,分别面向开源发起企业、开源产品企业和开源使用企业进行评估。 其中,开源发起企业采用了组织机制、项目审批、项目发布、平台建设、社区管理等9大项27小项指标进行评估,提升企业的开源治理能力。另一方面,从安全和合规角度对企业的开源治理能力提出了更高的要求。开源用户企业方面的评价标准,则从软件选型、风险管理、使用规范、持续跟踪等9大项33小项指标进行评估,打造开源用户企业的开源治理能力评价机制,引导企业建立规范完备的开源治理体系。 章节五:云安全与风险管理标准同步提升 随着业务数字化的迅速发展,企业业务变得越来越开放和复杂,这意味着云安全与风险管理的标准必须与时俱进。 云计算风险管理评估标准全新升级 依据《云计算风险管理框架》行业标准,可信云开展“云计算风险管理能力评估”,评估将云计算风险管理能力划分为三级,即基础级、增强级、先进级。截至目前,共有15家厂商通过评估。 通过总结本次评估结果,结合产业发展现状,信通院对评估要求进行了修订升级,在原有的八大类评估指标的基础上新增云计算业务连续性风险管理能力和科技外包风险管理能力两大类要求,57项二级指标增加至63项,116项三级指标增加至122项。 持续完善云计算安全系列标准 2019年,中国信息通信研究院将持续完善和推动云计算安全相关标准的发布和评估,以云用户安全需求为中心,围绕云平台安全、云安全解决方案两方面,建设云用户、云服务商、安全厂商三者之间的安全可信。 在提升云平台安全能力方面,中国信息通信研究院将基于云计算的安全运营及管理技术规范制定多项标准。 针对云安全发展趋势,中国信息通信研究院将统筹监管机构、科研院所、安全厂家、云服务商、用户等多方资源,合法合规开展云计算安全相关工作,建立多方资源之间互动。 在云用户安全需求方面,关注云服务商和安全厂商所提供的安全解决方案能力,发布基于云服务的业务安全解决方案技术要求等系列标准,并对安全解决方案的安全防护效果进行评估。 同时,中国信息通信研究院还将积极筹备云安全从业人员能力培训、云安全服务资质评定、云安全竞赛等,建立用户推动企业、市场推动安全的新局面。 云保险推动云计算产业健康发展 近些年,云风险事故频发,安全问题成为企业上云的主要顾虑。保险机制能够为云服务商和云客户提供切实的经济保障,在事故后将损失有效转嫁。国家和政府在推动企业上云的同时,也鼓励通过保险手段构建安全可控云计算产业体系。 云保险包括云计算责任保险(云保险1.0)和信息技术应用服务保险(云保险2.0)两大类。云保险1.0主要面向云服务提供商,在提供商提供云计算服务时,保障因故障责任、误操作责任、第三方责任等造成的服务中断和数据丢失所带来的损失。云保险2.0主要面向使用云计算服务的客户,在云客户使用云计算服务时,保障因误操作、设备原因、系统程序缺陷、第三方因素等造成的服务中断和数据丢失所带来的损失。 章节六:行业云助推传统行业上云步伐 当前企业上云依然面临诸多挑战,可信云率先制定出云计算在金融、保险、政务领域的行业评估标准,并发起评选十佳上云案例活动,从而为企业上云提供更具实践性和参考性的案例范本。 可信金融云助推传统金融的加速上云 为帮助银行类金融机构更好地选型和应用云服务,同时规范银行类云服务提供方提供更加规范和可信的云服务,中国信息通信研究院研究制定《可信金融云服务(银行类)能力要求参考指南》(以下称“指南”)和《可信金融云服务(银行类)能力要求》 (以下称“要求”)。 指南从企业属性、服务协议、技术能力、服务保障、风险管理五个方面要求云计算服务提供方达到能力透明、能力真实、能力达标三大可信要求。 要求中的测试内容,则是保障银行业云服务提供方提供云计算服务时,能够根据银行业金融机构实际情况,切实满足其基本云服务产品的服务能力和风险管理能力等关键需求,助力银行业金融机构稳步提升信息化水平。 为保障金融行业云计算服务水平,同时帮助金融机构选择可信、安全、合规的行业云服务,中国信息通信研究院还将在非银行类金融云服务以及银行类云计算解决方案两方面进行研究,制定相关标准,并进行相应的评估测试。 可信政务云全面驱动政务信息化建设 针对政务云建设和服务能力,中国信息通信研究院制定出面向案例的政务云综合水平和面向服务商的可信政务云两项评估。 作为国内首项针对政务云综合水平的评估机制,该项评估从政策落实、应用成效,平台能力及安全保障能力四个维度,共计20项审查指标出发,全面、真实的考察政务云建设水平。 可信政务云评估则面向云服务商,主要考察云服务商资质、政务云平台服务能力以及安全保障能力,旨在为政务云建设交付、验收、招投标等工作提供参考。 在政务云综合水平和可信政务云评估的基础上,中国信通院还将开展2019年“十佳政务云”案例评选活动,评选结果将于2019年可信云大会公布。同时,可信云大会上还将推选“2019可信云政务云用户奖”和“2019可信云政务云服务奖”。 十佳上云案例评选引导企业深度上云 为贯彻落实工信部《推动企业上云实施指南(2018-2020年)》,中国信通院牵头制定《企业上云效果成熟度评估方法》,旨在从企业用云量、上云程度、上云效益、上云典型性与可推广性四个维度考察企业上云效果成熟度,衡量上云效果。 同时,中国信通院将积极推动地方“十佳上云”和行业“十佳上云”两个系列的案例征集与评选活动。 地方“十佳上云”系列活动,主要在各地信息化主管部门支持指导下,由中国信通院联合地方科研检测机构展开。目前,初步以重庆和浙江为试点,在试点地区工作取得一定进展后适时向其他地方推广。该评估结果将于2019年可信云大会上公布。 行业“十佳上云”系列活动,由中国信通院主要组织推动,按照金融、交通、能源、工业、信息服务业等行业领域,征集并评选各行业领域“十佳上云”优秀案例。2019年可信云大会上,将从各行业“十佳上云”案例中优中再推优,推选可信云行业用户奖。同时,针对每行业推选1到2家可信云行业云服务奖。 首个保险行业云计算评估拉开帷幕 继政务、电信等标准发布之后,由中国信息通信研究院牵头的“保险行业云计算系列标准”于去年6月正式立项。依托于系列标准,信通院拟开展保险行业云计算评估工作,主要包括三大评估:云服务提供方能力评估、容器云平台成熟度评估、微服务架构成熟度评估。 保险云云服务提供方能力评估从企业资质和服务能力两大方面考察保险行业云服务提供方(须与用户同为保险属性)的服务水平。保险行业容器云平台成熟度评估将从三个级别衡量保险企业容器技术发展水平。保险行业微服务架构成熟度评估从落实程度、应用成效、架构技术能力和安全保障四大方面衡量保险企业微服务技术发展水平。 梳理过去一年可信云的发展不难发现,犹如一棵不断蔓延生长的标准之树,不仅深深扎根专业云标准,相继制定出云服务和云软件、混合云、多云管理等评估方法,同时还瞄准传统行业的数字化转型以及最新的云计算发展趋势,不断丰富行业云标准,持续完善云安全和风险管理标准,成为当下中国云计算领域业务覆盖范围最广、能力评估标准最全、行业认可度最高的标准体系。

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

为自己搭建一个分布式 IM 系统二【从查找算法聊起】

前言 最近这段时间确实有点忙,这篇的目录还是在飞机上敲出来了的。 言归正传,上周更新了 cim 第一版;没想到反响热烈,最高时上了 GitHub Trending Java 版块的首位,一天收到了 300+ 的 star。 现在总共也有 1.3K+ 的 star,有几十个朋友参加了测试,非常感谢大家的支持。 在这过程中也收到一些 bug 反馈,feature 建议;因此这段时间我把一些影响较大的 bug 以及需求比较迫切的 feature 调整了,本次更新的 v1.0.1 版本: 客户端超时自动下线。 新增 AI 模式。 聊天记录查询。 在线用户前缀模糊匹配。 下面谈下几个比较重点的功能。 客户端超时自动下线 这个功能涉及到客户端和服务端的心跳设计,比较有意思,也踩了几个坑;所以准备留到下次单独来聊。 AI 模式 大家应该还记得这个之前刷爆朋友圈的 估值两个一个亿的 AI 核心代码。 和我这里的场景再合适不过了。 于是我新增了一个命令用于一键开启 AI 模式,使用情况大概如下。 欢迎大家更新源码体验,融资的请私聊我🤣。 聊天记录 聊天记录也是一个比较迫切的功能。 使用命令 :q 关键字 即可查询与个人相关的聊天记录。 这个功能其实比较简单,只需要在消息发送及接收消息时保存即可。 但要考虑的一点是,这个保存消息是 IO 操作,不可避免的会有耗时;需要尽量避免对消息发送、接收产生影响。 异步写入消息 因此我把消息写入的过程异步完成,可以不影响真正的业务。 实现起来也挺简单,就是一个典型的生产者消费者模式。 主线程收到消息之后直接写入队列,另外再有一个线程一直源源不断的从队列中取出数据后保存聊天记录。 大概的代码如下: 写入消息的同时会把消费消息的线程打开: 而最终存放消息记录的策略,考虑后还是以最简单的方式存放在客户端,可以降低复杂度。 简单来说就是根据当前日期+用户名写入到磁盘里。 当客户端关闭时利用线程中断的方式停止了消费队列的线程。 这点的设计其实和 logback 写日志的方式比较类似,感兴趣的可以去翻翻 logback 的源码,更加详细。 回调接口 至于收到其他客户端发来的消息时则是利用之前预留的消息回调接口来写入日志。 收到消息后会执行自定义的回调接口。 于是在这个回调方法中实现写入逻辑即可,当后续还有其他的消息处理逻辑时也能在这里直接添加。 当处理逻辑增多时最好是改为责任链模式,更加清晰易维护。 查找算法 接下来是本文着重要讨论的一个查找算法,准确的说是一个前缀模糊匹配的算法。 实现的效果如下: 使用命令 :qu prefix 可以按照前缀的方式搜索用户信息。 当然在命令行中其实意义不大,但是在移动端中确是比较有用的。类似于微信按照用户名匹配: 因为后期打算出一个移动端 APP,所以就先把这个功能实现了。 从效果也看得出来:就是按照输入的前缀匹配字符串(目前只支持英文)。 在没有任何限制的条件下最快、最简单的实现方式可以直接把所有的字符串存放在一个容器中 (List、Set),查询时则挨个遍历;利用 String.startsWith("prefix") 进行匹配。 但这样会有几个问题: 存储资源比较浪费,不管是 list 还是 Set 都会有额外的损耗。 查询效率较低,需要遍历集合后再遍历字符串的 char 数组(String.startsWith 的实现方式)。 字典树 基于以上的问题我们可以考虑下: 假设我需要存放 java,javascript,jsp,php 这些字符串时在 ArrayList 中会怎么存放? 很明显,会是这样完整的存放在一个数组中;同时这个数组还可能存在浪费,没有全部使用完。 但其实仔细观察这些数据会发现有一些共同特点,比如 java,javascript 有共同的前缀 java;和 jsp 有共同的前缀 j。 那是否可以把这些前缀利用起来呢?这样就可以少存储一份。 比如写入 java,javascript 这两个字符串时存放的结构如下: 当再存入一个 jsp 时: 最后再存入 jsf 时: 相信大家应该已经看明白了,按照这样的存储方式可以节省很多内存,同时查询效率也比较高。 比如查询以 jav 开头的数据,只需要从头结点 j 开始往下查询,最后会查询到 ava 以及 script 这两个个结点,所以整个查询路径所经历的字符拼起来就是查询到的结果java+javascript。 如果以 b 开头进行查询,那第一步就会直接返回,这样比在 list 中的效率高很多。 但这个图还不完善,因为不知道查询到啥时候算是匹配到了一个之前写入的字符串。 比如在上图中怎么知道 j+ava 是一个我们之前写入的 java 这个字符呢。 因此我们需要对这种是一个完整字符串的数据打上一个标记: 比如这样,我们将 ava、script、p、f 这几个节点都换一个颜色表示。表明查询到这个字符时就算是匹配到了一个结果。 而查到 s 这个字符颜色不对,代表还需要继续往下查。 比如输入关键字 js 进行匹配时,当它的查询路径走到 s 这里时判断到 s 的颜色不对,所以不会把 js 作为一个匹配结果。而是继续往下查,发现有两个子节点 p、f 颜色都正确,于是把查询的路径 jsp 和 jsf 都作为一个匹配结果。 而只输入 j,则会把下面所有有色的字符拼起来作为结果集合。 这其实就一个典型的字典树。 具体实现 下面则是具体的代码实现,其实算法不像是实现一个业务功能这样好用文字分析;具体还是看源码多调试就明白了。 谈下几个重点的地方吧: 字典树的节点实现,其中的 isEnd 相当于图中的上色。 利用一个 Node[] children 来存放子节点。 为了可以区分大小写查询,所以子节点的长度相当于是 26*2。 写入数据 这里以一个单测为例,写入了三个字符串,那最终形成的数据结构如下: 图中有与上图有几点不同: 每个节点都是一个字符,这样树的高度最高为52。 每个节点的子节点都是长度为 52 的数组;所以可以利用数组的下标表示他代表的字符值。比如 0 就是大 A,26 则是小 a,以此类推。 有点类似于之前提到的布隆过滤器,可以节省内存。 debug 时也能看出符合上图的数据结构: 所以真正的写入步骤如下: 把字符串拆分为 char 数组,并判断大小写计算它所存放在数组中的位置 index。 将当前节点的子节点数组的 index 处新增一个节点。 如果是最后一个字符就将新增的节点置为最后一个节点,也就是上文的改变节点颜色。 最后将当前节点指向下一个节点方便继续写入。 查询总的来说要麻烦一些,其实就是对树进行深度遍历;最终的思想看图就能明白。 所以在 cim 中进行模糊匹配时就用到了这个结构。 字典树的源码在此处: https://github.com/crossoverJie/cim/blob/master/cim-common/src/main/java/com/crossoverjie/cim/common/data/construct/TrieTree.java 其实利用这个结构还能实现判断某个前缀的单词是否在某堆数据里、某个前缀的单词出现的次数等。 总结 目前 cim 还在火热内测中(虽然群里只有20几人),感兴趣的朋友可以私聊我拉你入伙☺️ 再没有新的 BUG 产生前会着重把这些功能完成了,不出意外下周更新 cim 的心跳重连等机制。 完整源码: https://github.com/crossoverJie/cim 如果这篇对你有所帮助还请不吝转发。

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

技本功丨甲方大人来了之运维数据分析平台搭建实战

袋鼠云日志团队时常遇到各种各样的甲方大人,毕竟我们是一个非常优秀的企业服务公司(自信满满),当然面对甲方大人的时候要做到处变不惊,临危不乱,镇定自若的接受需求…… 甲方大人的常用台词一定要记住:我们很忙,有好几套监控系统,能不能再不砍掉监控系统的情况下,帮助我们搞定日运维需求呢?这样的需求每天通过项目经理→产品经理→研发经理→浣熊(我)。 But,这个需求有点麻烦呀~ 我捋过我日渐稀疏的发,只能加油干啦! 先说下甲方大人的需求和痛点,甲方大人说平日的系统运维工作主要围绕应用、主机、数据库和业务四个方面。 (1)应用发布平台是IBM的WebSphereApplicationServer(简称WAS),应用的性能监控基于WAS自带监控模块 (2)主机监控基于IBMTivoliMonitoringSystem,业务监控则通过分析应用日志的方式实现 (3)数据库监控依赖一个古老的oracle性能监控工具 (4)应用日志需要登陆到AIX业务机器上查看 “每当出现一个问题,先登陆was看下业务进程性能趋势,再登陆Tivoli查看主机性能趋势,然后登陆数据库监控查看数据库性能趋势,再然后登陆AIX主机查看日志。一套下来肚子就饿了,到食堂发现好吃的饭菜已经被别人抢光了,希望你们能帮我们改善改善伙食“。嗯,听上去影响蛮大的,不过他们怎么知道我烧菜的手艺的,上周末做的清蒸鲈鱼味道还不错... 四个字,赶紧干活。在了解了甲方大人的需求和痛点后,经过一番苦思冥想,设计了下面的看上去有点复杂的架构图。大道至简,借鉴老子的一段话附和一下这张图,“人法地、地法天、天法道、道法自然”,老子用了十三个字,将天、地、人乃至整个宇宙的生命规律精辟涵括、阐述出来。 菜谱准备好了,小葱拌豆腐,开始下锅。 数据采集上,针对WAS、Tivoli、Oracle和AIX应用主机的采集需求,需要coding了(没有什么需求是一坨代码解决不了的,如果有那就两坨),前方高能,请做好笔记: (1)开发一个WAS进程性能采集器,参考https://github.com/alexivkin/WebSphere-Performance-Monitor,万能的python,哦no,这个是Jython,看起来跟python一样嘛,无非就是python里面用java,java里面跑python。由于是三年前的版本,加上没有IBM WAS的测试环境,花掉一个上午时间脑补调试,什么是脑补调试法,答按行过目代码、眼睛输入,大脑跑跑(非专业人士请勿模仿); (2)开发一个Tivoli数据收集器,又花掉一个晚上,Tivoli支持Soap方式拉取新能数据,我不会告诉你可以用一个CURL拉取所有主机性能所有数据的,想知道的留言处扣666; (3)开发一个Oracle数据库性能采集器,还好elastic 大佬开源了beats(https://github.com/elastic/beats),坑爹的是竟然不支持oracle,莫非oracle大佬的开发人员都休眠了么;花了两个晚上捣鼓捣鼓,支持个tps、qps、物理读、逻辑度、吞吐量还是可以的,小算一下支持200多个指标吧,oracle采集beat依赖oracleclient不是一般的麻烦; https://www.oracle.com/technetwork/topics/intel-macsoft-096467.html (4)开发一个AIX日志文件采集器,袋鼠云有技术大牛开发了一个,拿过来直接集成; https://github.com/DTStack/jfilebeat 数据接收和解析组件,袋鼠云自研了java版本的logstash,参考: https://github.com/DTStack/jlogstash 日志接收和解析性能是ruby版本性能5倍以上,关键是配置简单,分钟内上手 数据存储方面,最近一周的日志数据全部投递到elasticsearch里,以防哪天甲方大人心血来潮想搜个日志啥的;结构化的应用进程数据、主机性能数据、数据库性能数据和业务日志数据投递到clickhouse里,通过clickhouse强大的聚合计算能力(多表数据关联,sum/avg等聚合计算),计算出同一时间线上的业务和进程、主机以及数据库性能的关联趋势图。 一句话总结下ck吧,在sql里计算我只服ck! 链接: https://clickhouse-docs.readthedocs.io/en/latest/functions/ 源码请见: https://github.com/yandex/ClickHouse 坚持看到这里就是真爱了,贴上一张系统架构图,图中左方是数据采集层,easymanager是公司自研的自动部署神器(不用想了,没有开源),右边是数据展示端,把应用、主机、数据库、日志数据统一展示在一张大屏上,废话不说了,上菜!

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

搭建JEESZ分布式架构1--CentOs下安装jdk7(环境准备)

声明:因为运行环境是基于Linux系统的,在做此框架之前需要做一些前期的环境准备工作CentOs下安装jdk7网上很多实例,因为博客后期作为框架的原生教程,故这边做详细的安装记录 首 先在CentOs下下载jdk7解压文件,tar包安装(目前Oracle官方上,对于文件的下载,加了Cookie验证机制,所以直接下载文件包,会出 现找不到的错误,最老土的办法,本地下载,使用FTP上传服务器),我这边已经下载好了,通过ssh已经上传到指定的目录,这里直接讲解安装的过程。 一、准备工作卸载OpenJDK1.查找需要卸载的OpenJDK[root@cloud/]rpm -qa |grep openjdk | grep -v grepJava-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64java-1.6.0-openjdk-devel-1.6.0.34-1.13.6.1.el7_0.x86_64java-1.7.0-openjdk-headless-1.7.0.75-2.5.4.2.el7_0.x86_64java-1.6.0-openjdk-1.6.0.34-1.13.6.1.el7_0.x86_64 java-1.7.0-openjdk-devel-1.7.0.75-2.5.4.2.el7_0.x86_64 2.依次卸载 [root@cloud/]rpm -e --nodepsjava-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64[root@cloud/]rpm -e–nodeps java-1.6.0-openjdk-devel-1.6.0.34-1.13.6.1.el7_0.x86_64[root@cloud/]rpm -e–nodeps java-1.7.0-openjdk-headless-1.7.0.75-2.5.4.2.el7_0.x86_64[root@cloud/]rpm -e–nodeps java-1.6.0-openjdk-1.6.0.34-1.13.6.1.el7_0.x86_64[root@cloud /]rpm -e –nodepsjava-1.7.0-openjdk-devel-1.7.0.75-2.5.4.2.el7_0.x86_64注:权限不足,请使用su root权限 二、安装配置JDK7 1.解压安装jdk文件 [root@cloud /]tar-zxvf jdk-7u75-linux-x64.tar.gz./jdk1.7.0_45/jre/lib/management/snmp.acl.template./jdk1.7.0_45/jre/lib/logging.properties........../jdk1.7.0_45/db/LICENSE./jdk1.7.0_45/db/NOTICE./jdk1.7.0_45/db/3RDPARTY./jdk1.7.0_45/db/README-JDK.html[root@cloud tools]#lsjdk1.7.0_45jdk1.7.0_45.tar.gz[root@cloud tools]#mkdir /usr/java[root@cloud tools]#mv jdk1.7.0_45/ /home/java/jdk1.7[root@cloud tools]#rm -rf . jdk1.7.0_45 2.配置JDK7编辑/etc/profile文件[root@cloud jdk1.7]#vi /etc/profile在/etc/profile文件尾部添加export JAVA_HOME=/usr/java/1.7.0_45exportCLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport PATH=$PATH:$JAVA_HOME/bin使用source /etc/profile命令重新加载/etc/profile文件,使修改的内容在当前shell窗口中生效 三、测试[root@cloud ~]#java -versionJavaversion "1.7.0_45"Java(TM) SE Runtime Environment (build 1.7.0_45-b18)Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode) 表示已经安装成功~~~

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

使用.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 是一长串的数字组合,我花了几个小时的时间才发现其规律,当然也承认,我的经验不足。 这个系统的设计,除了基本的数据爬取以外,更关注以下几

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario

Mario

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

腾讯云软件源

腾讯云软件源

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

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册