XMPP客户端库Smack 4.0.6版开发之二 三、Smack库的特征 1、极度简单易用,API功能强大 发送一条文本消息给某个用户只需几行代码: AbstractXMPPConnection connection = new XMPPTCPConnection("mtucker", "password", "jabber.org"); connection.connect(); connection.login(); Chat chat = ChatManager.getInstanceFor(con
我有个办法,不过不是用LR,是用super-smack,如果只对数据库进行抗压力测试,应该管用。 Super-smack 现在是1.3版,源码下载地址如下: http://vegan.net/tony/supersmack/super-smack-1.3.tar.gz 以下是在linux下的安装及使用方法: Super smack是一个基准套件。Super-smack是它的一个脚本工具。 可以用来测试myisam和innodb 还有ndb。 安装:用root用户 ./configure—with-mysql=/usr/local/mysql5 Make Make install 使用:(复制到哪都行) cp –r /src/smacks /home 修改用户名、密码、数据库名(上下总共两个地方) 测试: # super-smack -d mysql select-key.smack 10 1000 或者 # super-smack -d mysql update-select.smack 10 1000 作者只提供了select-key.smack和update-select.smack这两个测试包。 执行: # super-smack -d mysql select-key.smack 10 1000 结果: Query Barrel Report for client smacker1 connect: max=156ms min=0ms avg= 21ms from 10 clients Query_type num_queries max_time min_time q_per_s select_index 20000 0 0 16299.96 这里10是连接客户的数目。每个客户有100次轮询。 这表示super-smack运行了10个客户,客户连接最长时间为156毫秒,最短的则没有延迟,平均时间是21毫秒。super-smack总共执行了20000此查询,每个查询所花时间都小于1毫秒。整个测试期间,服务器端平均每秒执行了16299.96次select_index型查询。 /////////修改用户名、密码、数据库名 #vi select-key.smack或者#vi update-select.smack 第一行下面 client "admin" { user "root"; host "localhost"; db "test"; pass ""; socket "/tmp/mysql.sock"; // this only applies to MySQL and is // ignored for PostgreSQL } // ensure the table exists and meets the conditions table "http_auth" 中间靠下: client "smacker1" { user "test"; // connect as this user pass ""; // use this password host "localhost"; // connect to this host db "test"; // switch to this database socket "/tmp/mysql.sock"; // this only applies to MySQL and is // ignored for PostgreSQL query_barrel "2 select_by_username"; // on each round, // run select_by_username query 2 times }
测试在进行一次性能测试的时候发现并发300个请求时出现了下面的异常: HTTP Status 500 - Handler processing failed; nested exception is java.lang.OutOfMemoryError: unable to create new native thread 看到这个异常有点发慌,毕竟并发程序写的少,突然来这么一个确实有点找不着背。但不管怎么样还是先搜索一下是啥原因吧。 这个错误是因为无法再创建新线程导致的,原因可能是没有更多的空间用于
OpenFire 是采用Java开发的基于XMPP(Jabber)协议,开源实时协作(RTC)服务器。
版权声明:本文为[他叫自己Mr.张]的原创文章,转载请注明出处,否则禁止转载。 https://micro.blog.csdn.net/article/details/48951589
在我们日常的测试工作中,不可避免的要对mysql的性能进行测试,对于大部分测试人员而言,工具的选择可能就是第一道门槛。
http://blog.csdn.net/shimiso/article/details/8816558
在即时通信这个领域目前只找到一个XMPP协议,在其协议基础上还是有许多成熟的产品,而且是开源的。所以还是想在这个领域多多了解一下。 XMPP协议:具体的概念我就不写了,毕竟这东西网上到处是。简单的说就是基于XML的一种协议。其解决了什么问题呢?就是给即时通讯制定了标准,大家只要遵守标准就可以完成即时通信的功能。有了标准的好处就是可以有各种不同的实现,大家在这个标准上发展自己的特长。而且还给即时通信提供了互联互通的基础。XMPP协议据网上说还是比较优秀的,表现就是google等大公司都在自己的即时通讯产品上。
Connection.DEBUG_ENABLED = true;//首先激活调试模式
我猜,你读这篇文章,说明你已经对Linux安全模块(LSM)有所了解。如果你使用过SELinux或AppArmor,其实就已经用过LSM了。甚至,在你使用的Linux发行版本或Android系统之上,也使用了LSM。
1.登陆IM Connection.DEBUG_ENABLED = true;//首先激活调试模式 1.1建立连接 首先,在启动DSM Message时,客户端通过XMPPConnection与服务器建立连接。建立连接的方式有两种: 1.直接连到服务器 Connection conn = new XMPPConnection("localhost");//创建连接 //其中“localhost”是服务器地址,由于我用的是本机,所以是“localhost”。 conn.connect();//接通连接 2.根
所以我基本上分为三篇文章来介绍此类软件的开发: 第一篇是关于XMPP 协议是啥,IM 是啥以及一个比较有名的开源实现,该开源实现包括三个部分(Spark、Smack和Openfire); 第二篇讲如何开发基于Spark 的客户端IM 插件部分; 第三篇讲如何开发基于Openfire 服务器端的插件部分。 好了,进入正题吧。 什么是XMPP? Extensible Messaging and Presence Protocol,简单的来讲,它就是一个发送接收处理消息的协议,但是这个协议发送的消息,既不是二进
【新智元导读】多位精英CIO、CTO和技术高管组成的福布斯杂志的常设部门Forbes Technology Council 撰文指出,随着市场对针对机器学习优化的计算资源的需求急剧增长,新的进入者有机会提供可与如今的老牌云服务提供商(亚马逊AWS、微软Azure和谷歌云)一较高下的解决方案。 AI World 2017 世界人工智能大会(11月8日,国家会议中心)特设 AI Cloud 分论坛,多位大咖讲者亲临会场,详见文末议程及嘉宾介绍。大会限时 8 折票最后一天!扫描文末二维码,马上参会! 过去这几年涌
Spark首先进入的是org.jivesoftware.launcher.Startup类的main方法。
从3月开始研究Openfire,其实就是要做一套IM系统,也正是这个原因才了解到Openfire。之前还真没想过有这么多的开源产品可以做IM,而且也没想到XMPP这个协议竟然如何强大。看来还是标准为先,好的标准可以推动产业发展啊。 Openfire的搭建与简单的demo之前写过篇《技术笔记:XMPP之openfire+spark+smack》,当时主要关注的怎么让这套体系跑起来吧,只不过现在还是在这个阶段,只是多学了点东西留下点笔记吧。 1、对于XMPP的学习很重要 最开始觉得搭建一套Openfire+sp
即时聊天的解决方案 socket: xmpp:xmpp+openfire+asmack 环信 常见协议 比较安全,tcp上还加了俩层 简单聊一下socket socket:套接字,连接需要ip和端口,
// 设置常见的参数 config.setDebuggerEnabled(true);// 开启调试模式,可以看到传输的xml config.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);//明文传输
苦恼中寻找方法 在开始做即时通信时就知道了消息回执这个概念,目的是解决通讯消息因为各种原因未送达对方而提供的一种保障机制。产生这个问题的原因主要是网络不稳定、服务器或者客户端一些异常导致没有接收到消息。 因为产品中使用的是openfire和spark的组合,所以一直就想在这个范围内找一个现成的方案,只不过通过阅读一些开发者的总结提到说openfire没有消息回执的方案。于是也看到了别人的方案: 发送者发送消息给服务端 服务端接收到消息后发送回执给发送者 发送者确认收到则结束,如果未收到就重发 服务端将消息记
比如设定权限为 700,表示其他用户对新创建的目录没有读(显示目录列表)、写(创建文件)和执行(进入目录)的权限。
推送系统 说是推送系统有点大,其实就是一个消息广播功能吧。作用其实也就是由服务端接收到消息然后推送到订阅的客户端。 思路 对于推送最关键的是服务端向客户端发送数据,客户端向服务端订阅自己想要的消息。这样的好处就是有消息后才向客户端推送,相比于拉取数据不会产生许多无效的查询,实时性也高。 xmpp这种即时通信协议基于TCP长连接还是比较符合这种场景的。只需要在服务端增加一个模块用于接收用户订阅与数据的推送就完成了主体功能。 在xmpp协议里可以扩展组件,这样我们写一个组件,然后连接到xmpp服务器,这样就可以
Docker Container Capabilities 在docker run命令中,我们可以通过--cap-add和--cap-drop来给容器添加linux Capabilities。下面表格中的列出的Capabilities是docker默认给容器添加的,用户可以通过--cap-drop去除其中一个或者多个。 Docker’s capabilitiesLinux capabilitiesCapability Description SETPCAPCAP_SETPCAPModify pro
Bootstrapping: Kickstart、Cobbler、rpmbuild/xen、kvm、lxc、Openstack、 Cloudstack、Opennebula、Eucalyplus、RHEV
官网已经有了相关的教程http://docs.celeryproject.org/en/latest/userguide/daemonizing.html#usage-systemd, 但是在实际操作的时候发现按照教程来配置无法正常启动。会报错,于是把服务简化了一下,把配置和服务信息写到了一起。如果你也遇到这个问题可以尝试下面的简化脚本:
运维精简工具箱 Bootstrapping: Kickstart、Cobbler、rpmbuild/xen、kvm、lxc、 Openstack、 Cloudstack、Opennebula、Eucalyplus、RHEV 配置类工具: Capistrano、Chef、puppet、func、salstack、Ansible、 rundeck、CFengine、Rudder 自动化构建和测试: Ant、Maven、Selenium、PyUnit、QUnit、JMeter、Gradle、 PHPUni
Intel SGX采用基于应键的内存加密技术来保护独立应用程序逻辑和敏感数据。要使用这种基于硬件的安全机制,需要严格的内存使用编程模型,开发者需要应用谨慎的编程实践来确保程序的安全。
看到一篇挺好玩的文章,哈哈,翻译过来你们感受一下这geekstyle的魔性。 我一基友,在俄罗斯bash.org上po了一个帖子,贼6!所以我决定转一下,po到我的博客。 基友: 好了,我要开始讲了,配啊碳醒普利死哈!事情的真相是这样的,我这一coder已经跳槽了,但是,不得不说,这人简直就是从终端窗口弹出来的猴纸!他们喜欢vim,用dot输出直接做图,用mk编辑维基的介绍页等等;对了,如果有什么事占用他私人时间超过90秒,他就会为此写个自动化脚本,贼6! 基友: 辣莫我们就一起来围观一下他的“遗产库”
网上的关于uwsgi的自启动的方法还是挺多的,具体搜索一下就知道了,这里简单的写一下官方推荐的方法,通过systemd启动服务。如果用这个方法需要首先确定systemd的版本大于211。
比较 Docker-Swarm、Kubernetes 和 Mesos 容器技术,虽然所有这三种技术都使得使用容器来部署、管理和伸缩应用成为可能,但实际上它们各自解决了不同的问题,并且根植于迥异的上下文环境中,事实上这三种被广泛采用的工具链都是有差别的;
作者 | Michael Redlich 译者 | 张卫滨 策划 | 丁晓昀 最近,Java 社区相对比较平静,本期的新闻包括 JDK 19、JDK 20、Spring Cloud 2020.0.6、Quarkus 2.10.1、Payara 平台企业版 5.40.0、JReleaser 1.1.0、Hibernate ORM 6.1.1、Apache Beam 2.40.0 和 Apache Camel 3.14.4。 JDK 19 JDK 19 早期访问构建版本的 Build 29 发布,
当“云“逐渐成为越来越多企业和开发者的默认计算环境,“让云落地”取代了“认识价值”,成为我们面对云计算时着重考虑的方向,而利用云计算解决应用开发问题又是“让云落地”的第一要务。 说到应用开发,经历过传统应用开发的程序员,对于”脚手架“概念一定不会陌生,基础框架、代码结构、测试工具、构建流程……利用“脚手架”给出的成熟模版,我们可以节省精力、复用已有最佳实践、高效完成产品和项目的研发。 那么问题来了:云时代的“脚手架”应该是什么样的? 学习路径 云计算推动了很多技术的发展,例如微服务架构、大数据、机器学习、区
一转眼发现博客里积累了不少文章,特别是这两年开始发现写博客也是一种提升自己技术能力的方法。这就和写代码一样,因为会让大脑思考,时间长了就会留下记忆。所以很多的高手都是通过这样的不断的重复训练来的。 也就是为什么一些快速成长的公司更容易产生大牛,因为如果初始的员工本身不够牛,业务很难大发展。底子在那里,加上各种实战自然就成长的快,时间长了不牛才怪。当然大牛的人还要会沉淀、思考、修正、分享,这或许是写博客的一个意义所在吧。 java开发相关 Tomcat shutdown执行后无法退出进程问题排查及解决 记一次
GitHub 上的开源项目不胜枚举,越来越多的开源项目正在迁移到GitHub平台上。基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要。利用这些项目,有时能够让你达到事半功倍的效果。
前段时间出去休了半个月假,公众号文章史无前例的断了一周,不过不要紧,我这不是又回来了嘛。
Most choices in life have tradeoffs. If you want to renovate your house, you might find a superb general contractor who is expensive or a meh general contractor who’s cheap, but how often can you find a general contractor who does both excellent work and
书接上文,上回书说到如何快速上手「大数据处理框架SMACK」,由于其强大的处理性能和复杂的技术架构,洋洋洒洒复制粘贴了近三千字依然难表其貌,更多详情移步原文地址。 本节云框架将用“两学一做”思想,帮助大家清晰明了理解「基于区块链的智能合约技术」。 1、学习区块链的核心思想 先给大家讲一个发生在象牙山故事,带大家认识认识我们屯里的人.... 特点1:去中心化 传统谢大脚在记账的时候,刘能经常来捣乱说“谢谢谢大脚,你别乱给我加钱,我我我昨天压根就没来买鸡爪子”。 大脚仔细一想发现事情并不简单,之前也遇到过屯里人
书接上文,上回书说到如何快速上手「大数据处理框架SMACK」,由于其强大的处理性能和复杂的技术架构,洋洋洒洒复制粘贴了近三千字依然难表其貌,更多详情移步原文地址。
近期在尝试 office 文档在线编辑和预览的一些解决方案, 目前在使用Collabora Office, 但是Collabora的docker镜像在OpenShift中运行不起来, 一直提示Operation not permitted.
跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制。
systemd 是在Linux上运行服务的新方式。 systemd 有一个被替代的 sysvinit 。 systemd 为Linux带来更快的启动时间,现在是管理Linux服务的标准方式。虽然稳定, systemd 仍在不断发展。
shutdown命令可以安全的关闭或者重启系统,并广播关机或者重启的消息给全部的终端
假设你已经了解了LSM内核安全模块,也知道如何使用它们加固系统的安全。但是,你还知道了另一种工具seccomp(Linux安全计算)。你可能非常想知道,LSM和Seccomp有什么区别?为什么不能将Seccomp设计为LSM模块?什么时候使用Seccomp?接下来,且听我娓娓道来。
目前有各种智能家居的自动化解决方案,但其中大多数缺乏将已存在的家庭环境和安全无缝整合的潜力。为了弥合消费者和技术之间的差距,同时允许在不对建筑进行改造的情况下融入任何现有的家庭环境,需要一个具有无缝集成潜力的模块化和灵活的智能家居自动化解决方案。
0x00、业务需求 国内133家地方商业银行作为商业领域国外IT厂商和商家必争之地,无论是IT基础设施建设、容灾备份系统建设、还是信息安全建设等,各家银行都做的如火如荼,当然,目前只针对企业级市场,很少有银行愿意接受安全众测,原因很简单,测试过程不可控。 但是IT环境变化的加速度在不断的增快,面临目前严重的安全态势,希望银行也能接受众测这种商业模式,或者由众测小伙伴把自己的测试经验写成PoC代码的形式share给厂商。 测试对象:133家商业银行 0x01、测试流程方法 针对银行的业务接口,为了适应目前移动
方案1、使用GCM服务(Google Cloud Messaging) 简介:Google推出的云消息服务,即第二代的C2DM。 优点:Google提供的服务、原生、简单,无需实现和部署服务端。 缺点:Android版本限制(必须大于2.2版本),该服务在国内不够稳定、需要用户绑定Google帐号,受限于Google。 方案2、使用XMPP协议(Openfire + Spark + Smack) 简介:基于XML协议的通讯协议,前身是Jabber,目前已由IETF国际标准化组织完成了标准化工作。 优点:协议
该论文是康奈尔大学和亚马逊工程师合作编写的,本文主要介绍开源的 Kani Rust verifier[2] 验证工具如何使用 MIR 表示的语义trait信息进行验证。该团队在调研 500 个下载次数最多的 Rust 库中发现,有 37% 使用表示动态调用的 dyn 关键字,而动态调度隐式调用达到70%(rustc编译时至少有70%包含一个vtable)。Kani 是第一个用于 Rust 的符号建模检查工具,提供了用于动态 trait 对象的开源验证方法。
命名管道时进程间通信的一种,那么原理也就是类似的:先让不同的进程看到同一份(操作系统)资源(“一段内存”)。
使系统快速运行的最重要因素是其基本设计。您还必须知道系统正在执行哪种处理以及其瓶颈是什么。在大多数情况下,系统瓶颈来自以下来源:
一、前言 Unix和类Unix操作系统提供的ptrace系统调用支持一个进程控制另一个进程,常被用于程序调试、分析和监测工具,例如gdb、strace等。通过ptrace可以查看和修改被控制进程的内部状态,因此渗透攻击在注入shellcode时也会使用ptrace。本文介绍一种Linux下使用ptrace隐藏注入shellcode的技术和防御方法。 二、背景 不同版本操作系统有各自实现ptrace系统调用的方式,本文只关注Linux环境,因此先简单说明Linux下ptrace系统调用的用法。首先定义控
领取专属 10元无门槛券
手把手带您无忧上云