xumaojun_个人页

个人头像照片 xumaojun
1078
95
0

个人介绍

乐于学习与分析

擅长的技术

获得更多能力
通用技术能力:

暂时未有相关通用技术能力~

云产品技术能力:

暂时未有相关云产品技术能力~

阿里云技能认证

详细说明
暂无更多信息
  • 发表了文章 2018-05-06

    记一次redis挂机导致的服务雪崩事故,哦不对,是故事~

  • 发表了文章 2018-05-06

    微服务架构

  • 发表了文章 2018-05-06

    Nginx在windows环境下的安装与简单配置

  • 发表了文章 2018-05-06

    消息中间件选型分析——从Kafka与RabbitMQ的对比来看全局

  • 发表了文章 2018-05-06

    分布式架构(一)

  • 发表了文章 2018-05-06

    ActiveMQ笔记:一个高稳定,可扩展的的部署方案

  • 发表了文章 2018-05-06

    通过实例理解 RabbitMQ 的基本概念

  • 发表了文章 2018-05-06

    解决SQL Server 2008无法连接127.0.0.1的问题

  • 发表了文章 2018-05-06

    rabbitMQ、activeMQ、zeroMQ、Kafka、Redis 比较

  • 发表了文章 2018-05-05

    C/C++的内存泄漏检测工具Valgrind memcheck的使用经历

  • 发表了文章 2018-05-05

    推荐几本学习MySQL的好书

  • 发表了文章 2018-05-05

    记一次内存溢出的分析经历——使用thrift

  • 发表了文章 2018-05-05

    三种方法实现调用Restful接口

  • 发表了文章 2018-05-05

    在Visual Studio Code中配置GO开发环境

  • 发表了文章 2018-05-05

    解决linux删除文件后空间没有释放问题

  • 发表了文章 2018-05-04

    MySQL server has gone away报错原因分析

  • 发表了文章 2018-05-04

    理解MySQL——复制(Replication)

  • 发表了文章 2018-05-04

    shared_ptr 的使用及注意事项

  • 发表了文章 2018-05-04

    Windows 任务管理器中的几个内存概念

  • 发表了文章 2018-05-04

    高并发场景之RabbitMQ篇

正在加载, 请稍后...
滑动查看更多
  • 回答了问题 2019-07-17

    excel表格如何实现自动排序

    1、数据;
    2、排序;
    3、选择关键字;
    image

    踩0 评论0
  • 回答了问题 2019-07-17

    请问C语言中位运算有什么用啊,一般都在哪些项目会使用到?

    节省内存,单片机中使用较多

    踩0 评论0
  • 回答了问题 2019-07-17

    九九乘法表c语言程序代码怎么写?

    2层循环就可以了

    踩0 评论0
  • 回答了问题 2019-07-17

    怎样把c语言学好?

    使用国外的c语言程序设计教程,多做习题,多多上机测试验证

    踩0 评论0
  • 回答了问题 2019-07-17

    idea开发python怎么样

    很好的一款IDE工具

    踩0 评论0
  • 回答了问题 2019-07-17

    python能找什么工作吗

    大数据分析,人工智能算法之类

    踩0 评论0
  • 回答了问题 2019-07-17

    Rabbitmq怎么用java代码控制对列大小

    RabbitMQ有两种对队列长度的限制方式

    对队列中消息的条数进行限制 x-max-length
    对队列中消息的总量进行限制 x-max-length-bytes
    对消息总条数进行限制(总条数包括未被消费的消息+被消费但未被确认的消息):

    public class QueueLengthLimit {

    private static final String QUEUE_NAME = "queueLengthLimit";
    
    public static void main(String[] argv) throws Exception {
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("127.0.0.1");
        factory.setPort(5672);
        factory.setUsername("guest");
        factory.setPassword("guest");
        Connection connection = factory.newConnection();
        Channel senderChannel = connection.createChannel();
        Channel consumerChannel = connection.createChannel();
    
        // 设置队列最大消息数量为5
        Map<String, Object> args = new HashMap<String, Object>();
        args.put("x-max-length", 5);
        args.put("x-dead-letter-exchange","normal_exchange");
        args.put("x-dead-letter-routing-key","normal");
        senderChannel.queueDeclare(QUEUE_NAME, false, false, true, args);
        // 发布6个消息
        for (int i = 0; i < 6;) {
            String message = "NO. " + ++i;
            senderChannel.basicPublish("", QUEUE_NAME, null, message.getBytes("UTF-8"));
        }
    
        // 获取的消息为 NO. 2,说明队列头部第一条消息被抛弃
        Thread.sleep(1000);
        GetResponse resp = consumerChannel.basicGet(QUEUE_NAME, false);
        String message = new String(resp.getBody(), "UTF-8");
        System.out.printf("consume: %s\n", message);
        System.out.printf("queue size: %d\n", resp.getMessageCount());
    
        // 现在队列中有4个 Ready消息,1个 Unacked消息。此时再发布两条消息,应该只有 NO. 3 被抛弃。
        senderChannel.basicPublish("", QUEUE_NAME, null, "NO. 7".getBytes("UTF-8"));
        senderChannel.basicPublish("", QUEUE_NAME, null, "NO. 8".getBytes("UTF-8"));
        Thread.sleep(100);
        GetResponse resp2 = consumerChannel.basicGet(QUEUE_NAME, false);
        message = new String(resp2.getBody(), "UTF-8");
        System.out.printf("consume: %s\n\n", message);
    
        // 现在队列中有4个 Ready消息,2个 Unacked消息。
        // 此时Nack,消息2、4取消退回队列头导致队列消息数量超过设定值,谁能留下?
        consumerChannel.basicNack(resp2.getEnvelope().getDeliveryTag(), true, true);
        Thread.sleep(5000);
        System.out.println("======================================");
        while (true) {
            resp = consumerChannel.basicGet(QUEUE_NAME, true);
            if (resp == null) {
                break;
            } else {
                message = new String(resp.getBody(), "UTF-8");
                System.out.printf("consume: %s\n", message);
            }
        }
    }

    }
    GetResponse resp.getMessageCount() 队列中未被消费的消息的数量,其中不包含被消费未确认的消息。

    当队列中的消息要超过队列限制时,将失效队首元素,

    这是接收死信的队列,可知被失效的消息是NO.1(队首) 试验验证结果真是上面结论。

    第二种是对队列中消息总字节数进行限制:

    Map args = new HashMap();
    args.put("x-max-length-bytes ", 1000);
    senderChannel.queueDeclare(QUEUE_NAME, false, false, true, args);
    只计算消息体的字节数,不算消息投,消息属性等字节数。

    RabbitMQ可以设置队列的最大优先级,也可以设置消息的优先级,优先级高的队列中的消息具有更高的被优先消费的权限。

    可以通过如下参数:

    队列的最大优先级:x-max-priority
    消息的优先级:priority
    队列优先级设置方式:

    也可以通过代码去实现:

    Map queueParam = new HashMap<>();
    queueParam.put("x-max-priority",10);
    channel.queueDeclare("queue_priority",true,false,false,queueParam);
    配置了队列优先级之后,会在管理后台界面看到如下Pri的标记:

    上面我们设置了队列的最大优先级,之后我们发送消息的时候便可以设置消息自身的优先级别,来调整消息被消费的优先级顺序。

    AMQP.BasicProperties.Builder builder = new AMQP.BasicProperties.Builder();
    builder.priority(5);
    AMQP.BasicProperties build = builder.build();
    channel.basicPublish("exchange_priority","rk_priority",build,("message-"+i).getBytes());
    接下来我们看一个实现;

    public class PriorityQueue {

    public static void main(String[] args) throws Exception {
    
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("127.0.0.1");
        factory.setPort(5672);
        factory.setUsername("guest");
        factory.setPassword("guest");
    
        Connection connection = factory.newConnection();
        Channel channel = connection.createChannel();
    
        channel.exchangeDeclare("exchange_priority","direct",true);
    
        Map<String,Object> queueParam = new HashMap<>();
        queueParam.put("x-max-priority",10);
        channel.queueDeclare("queue_priority",true,false,false,queueParam);
        channel.queueBind("queue_priority","exchange_priority","rk_priority");
    
        for(int i = 0 ; i < 10 ; i++){
            AMQP.BasicProperties.Builder builder = new AMQP.BasicProperties.Builder();
            if(i % 2 == 0){
                builder.priority(5);
            }
            AMQP.BasicProperties build = builder.build();
            channel.basicPublish("exchange_priority","rk_priority",build,("message-"+i).getBytes());
        }
    
        channel.close();
        connection.close();
    
    }

    }
    消费者代码:

    public class PriorityConsumer {

    public static void main(String[] args) throws Exception{
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("127.0.0.1");
        factory.setPort(5672);
        factory.setUsername("guest");
        factory.setPassword("guest");
    
        Connection connection = factory.newConnection();
        Channel channel = connection.createChannel();
    
        while(true) {
            GetResponse response = channel.basicGet("queue_priority", false);
            System.out.println(new String(response.getBody()));
            channel.basicAck(response.getEnvelope().getDeliveryTag(),false);
            TimeUnit.MILLISECONDS.sleep(1000);
        }
    }

    }
    ==》

    message-0
    message-2
    message-4
    message-6
    message-8
    message-1
    message-3
    message-5
    message-7
    message-9

    踩0 评论0
  • 回答了问题 2019-07-17

    2018杭州云栖大会的视频或PPT资料在哪儿下载?

    阿里云首页可以看到,或者到优酷上看

    踩0 评论0
  • 回答了问题 2019-07-17

    手机卡被封

    被人举报,或者被识别为发送大量垃圾短信就被封了

    踩0 评论0
  • 回答了问题 2019-07-17

    安骑士离线怎么安装?

    手动安装(支持非阿里云服务器)
    注意: 如果您已在服务器上安装了安全软件(如安全狗、云锁等),可能会导致安骑士 Agent 插件无法正常安装。建议您在安装安骑士 Agent 插件前确认您的服务器上是否存在这类安全软件,如果存在建议您先关闭、或卸载该安全软件之后,再安装安骑士 Agent 插件。

    注意: 安装前请确认您安装安骑士服务器的环境:

    服务器在阿里云上,直接安装即可
    服务器不在阿里云上,服务器与阿里云通信走internet通信,安装后如果出现离线情况请参考:离线排查
    服务器不在阿里云上,服务器与阿里云通过专线连接走内网通信,需要修改您的DNS配置,指定安骑士服务端DNS 解析地址:

    106.11.68.13 jsrv.aegis.aliyun.com

    106.11.250.224 update.aegis.aliyun.com

    登录 云盾服务器安全(安骑士)管理控制台,单击 设置。

    单击 安装安骑士 进入安装安骑士 Agent 页面。

    安装安骑士Agent页面

    根据您的服务器操作系统选择安装步骤,获取最新版本安骑士 Agent 插件。

    Windows 系统

    在安装安骑士 Agent 页面,单击 点击下载 下载最新版本安骑士 Agent 插件安装文件到本地计算机。

    将安装文件上传至您的 Windows 服务器,例如通过 FTP 工具将安装文件上传到服务器。

    在您的 Windows 服务器上以管理员权限运行安骑士 Agent 插件安装程序,完成安装。

    注意:安骑士 Agent 插件安装过程中可能会提示您输入安装验证 Key。该安装验证 Key 将用于关联您的阿里云账号,在云盾服务器安全(安骑士)管理控制台登录您的阿里云账号即可保护您的服务器安全。

    您可在云盾安装安骑士页面找到您的安装验证 Key。

    安骑士Agent安装验证Key

    Linux 系统

    根据您的实际情况,在安装安骑士 Agent 页面选择 阿里云服务器 或 非阿里云服务器。

    以管理员身份登录您的 Linux 服务器。

    根据您的服务器,选择32位或64位的安装命令并复制至您的 Linux 服务器上。

    执行安装命令即可完成安骑士Agent插件的下载及安装。

    注意:该安装命令包含从阿里云站点下载最新的安骑士 Agent 插件,请确认您的服务器已连接公网。

    安骑士 Agent 插件安装完成约五分钟后,您即可在云盾服务器安全(安骑士)管理控制台中查看您服务器的在线情况:

    阿里云服务器将会从离线变成在线。
    非阿里云服务器将会被添加至您的服务器列表中。
    验证 Agent 安装
    在您成功安装安骑士 Agent 后,建议您参考以下步骤进行验证:

    检查您的服务器上安骑士 Agent 的 AliYunDun 和 AliYunDunUpdate 这两个进程是否正常运行。关于安骑士 Agent 进程说明,请参考 Agent说明。
    在您的服务器上,执行以下 telnet 命令检查您的服务器是否能正常连通安骑士服务器。

    注意: 确保以下 jsrv 和 update 两类服务器域名各至少有一个服务器能连通。

    telnet jsrv.aegis.aliyun.com 80
    telnet jsrv2.aegis.aliyun.com 80
    telnet jsrv3.aegis.aliyun.com 80
    telnet update.aegis.aliyun.com 80
    telnet update2.aegis.aliyun.com 80
    telnet update3.aegis.aliyun.com 80
    如果安骑士 Agent 安装验证失败,请参考 Agent 离线排查。

    注意事项
    非阿里云服务器必须通过安装程序(Windows)或脚本命令(Linux)方式安装安骑士 Agent 插件。

    如果您的非阿里云服务器通过以下方式安装安骑士 Agent 插件,需要删除安骑士 Agent 插件目录后,按照上述手动安装步骤重新安装安骑士 Agent 插件。

    通过已安装安骑士 Agent 插件的镜像批量安装服务器。
    从已安装安骑士 Agent 插件的服务器上直接复制安骑士 Agent 插件文件。
    安骑士 Agent 插件文件目录

    Windows: C:Program Files (x86)AlibabaAegis
    Linux: /usr/local/aegis

    踩0 评论0
  • 回答了问题 2019-07-17

    安骑士怎么关闭

    如果您决定不再使用云盾服务器安全(安骑士)服务的所有功能,您可以选择以下方式进行卸载安骑士 Agent。

    注意: 安骑士 Agent 卸载后,控制台中该主机资产的保护状态将变更为离线状态,您可以使用解绑功能删除处于离线状态的主机资产的记录。

    自动卸载安骑士 Agent
    您可以通过以下方式在云盾服务器安全(安骑士)管理控制台中自动卸载安骑士 Agent:

    注意: 通过该种方式卸载指定主机安骑士,请务必确保当前机器安骑士处于在线状态,否则无法接收到卸载指令。如果卸载后重新安装安骑士,请手工进行安装,忽略期间的报错,重复操作3次以上(安骑士卸载会有一段保护期24小时或重复执行3次以上安装命令)。

    登录 云盾服务器安全(安骑士)管理控制台,单击 设置。

    单击 安装安骑士, 进入安装安骑士 Agent 页面。

    单击页面右上方的 卸载安骑士。

    卸载安骑士

    在弹出的 卸载提示 对话框中,选择您决定卸载安骑士 Agent 的服务器,单击 确认卸载。

    卸载提示

    系统将自动卸载您选择的服务器上的安骑士 Agent。

    手动卸载安骑士 Agent
    您也可以参考以下步骤手动卸载您服务器上的安骑士 Agent。

    Linux 系统服务器
    登录您的 Linux 系统服务器。
    执行以下命令下载安骑士 Agent 卸载脚本。

    wget http://update.aegis.aliyun.com/download/uninstall.sh

    依次执行以下命令卸载安骑士 Agent。

    chmod +x uninstall.sh
    ./uninstall.sh
    Windows系统服务器
    登录您的 Windows 系统服务器。

    在您的服务器上下载 安骑士 Agent 卸载脚本。

    注意: 您也可以将安骑士 Agent 卸载脚本文件下载至本地计算机后,通过 FTP 文件传输工具将脚本文件上传至您的服务器后执行卸载。

    双击 uninstall.bat 文件执行脚本卸载安骑士 Agent。

    踩0 评论0
  • 回答了问题 2019-07-17

    安骑士购买之后服务器需要做设置吗?

    服务器安全(安骑士)Agent 插件已集成于公共镜像中。如果您在购买 ECS 实例时选择公共镜像并选择启用 安全加固 选项的话,安骑士 Agent 插件一般都已经默认安装在镜像中。

    公共镜像安全加固选项

    您可以登录 云盾服务器安全(安骑士)管理控制台 - 资产管理 页面,查看您所有服务器的安骑士 Agent 在线状态。

    若您的服务器安骑士 Agent 显示离线状态,请按照以下方式手动下载并安装安骑士 Agent 插件。

    手动安装(支持非阿里云服务器)
    注意: 如果您已在服务器上安装了安全软件(如安全狗、云锁等),可能会导致安骑士 Agent 插件无法正常安装。建议您在安装安骑士 Agent 插件前确认您的服务器上是否存在这类安全软件,如果存在建议您先关闭、或卸载该安全软件之后,再安装安骑士 Agent 插件。

    注意: 安装前请确认您安装安骑士服务器的环境:

    服务器在阿里云上,直接安装即可
    服务器不在阿里云上,服务器与阿里云通信走internet通信,安装后如果出现离线情况请参考:离线排查
    服务器不在阿里云上,服务器与阿里云通过专线连接走内网通信,需要修改您的DNS配置,指定安骑士服务端DNS 解析地址:

    106.11.68.13 jsrv.aegis.aliyun.com

    106.11.250.224 update.aegis.aliyun.com

    登录 云盾服务器安全(安骑士)管理控制台,单击 设置。

    单击 安装安骑士 进入安装安骑士 Agent 页面。

    安装安骑士Agent页面

    根据您的服务器操作系统选择安装步骤,获取最新版本安骑士 Agent 插件。

    Windows 系统

    在安装安骑士 Agent 页面,单击 点击下载 下载最新版本安骑士 Agent 插件安装文件到本地计算机。

    将安装文件上传至您的 Windows 服务器,例如通过 FTP 工具将安装文件上传到服务器。

    在您的 Windows 服务器上以管理员权限运行安骑士 Agent 插件安装程序,完成安装。

    注意:安骑士 Agent 插件安装过程中可能会提示您输入安装验证 Key。该安装验证 Key 将用于关联您的阿里云账号,在云盾服务器安全(安骑士)管理控制台登录您的阿里云账号即可保护您的服务器安全。

    您可在云盾安装安骑士页面找到您的安装验证 Key。

    安骑士Agent安装验证Key

    Linux 系统

    根据您的实际情况,在安装安骑士 Agent 页面选择 阿里云服务器 或 非阿里云服务器。

    以管理员身份登录您的 Linux 服务器。

    根据您的服务器,选择32位或64位的安装命令并复制至您的 Linux 服务器上。

    执行安装命令即可完成安骑士Agent插件的下载及安装。

    注意:该安装命令包含从阿里云站点下载最新的安骑士 Agent 插件,请确认您的服务器已连接公网。

    安骑士 Agent 插件安装完成约五分钟后,您即可在云盾服务器安全(安骑士)管理控制台中查看您服务器的在线情况:

    阿里云服务器将会从离线变成在线。
    非阿里云服务器将会被添加至您的服务器列表中。
    验证 Agent 安装
    在您成功安装安骑士 Agent 后,建议您参考以下步骤进行验证:

    检查您的服务器上安骑士 Agent 的 AliYunDun 和 AliYunDunUpdate 这两个进程是否正常运行。关于安骑士 Agent 进程说明,请参考 Agent说明。
    在您的服务器上,执行以下 telnet 命令检查您的服务器是否能正常连通安骑士服务器。

    注意: 确保以下 jsrv 和 update 两类服务器域名各至少有一个服务器能连通。

    telnet jsrv.aegis.aliyun.com 80
    telnet jsrv2.aegis.aliyun.com 80
    telnet jsrv3.aegis.aliyun.com 80
    telnet update.aegis.aliyun.com 80
    telnet update2.aegis.aliyun.com 80
    telnet update3.aegis.aliyun.com 80
    如果安骑士 Agent 安装验证失败,请参考 Agent 离线排查。

    注意事项
    非阿里云服务器必须通过安装程序(Windows)或脚本命令(Linux)方式安装安骑士 Agent 插件。

    如果您的非阿里云服务器通过以下方式安装安骑士 Agent 插件,需要删除安骑士 Agent 插件目录后,按照上述手动安装步骤重新安装安骑士 Agent 插件。

    通过已安装安骑士 Agent 插件的镜像批量安装服务器。
    从已安装安骑士 Agent 插件的服务器上直接复制安骑士 Agent 插件文件。
    安骑士 Agent 插件文件目录

    Windows: C:Program Files (x86)AlibabaAegis
    Linux: /usr/local/aegis

    踩0 评论0
  • 回答了问题 2019-07-17

    安骑士如何修改服务器名称

    ECS本身可以直接修改服务器名称

    踩0 评论0
  • 回答了问题 2019-07-17

    安骑士外网服务器可以用吗

    当然可以使用

    踩0 评论0
  • 回答了问题 2019-07-17

    非阿里云服务器,能否成功安装安骑士

    目前阿里云的安骑士支持安装在非阿里云的服务器上

    踩0 评论0
  • 回答了问题 2019-07-17

    在Word中如何快速选择多页 详细??

    1、按住“Ctrl"键,滚动鼠标中间的滚轮,把文档多页显示。差不多能显示65页内容。
    2、然后在光标停在需要选中的前边,按住Shift键,在结束的地方点一下,就能把中间全部选中了。

    踩0 评论0
  • 回答了问题 2019-07-17

    error LNK2001: 无法解析的外部符号 "char const * const OSS_CONTENT_TYPE" (?OSS_CONTENT_TYPE@@3QBDB)

    头文件是否添加了,另外比较一下使用的函数拼写与头文件,库文件中定义声明的是否一致,包括大小写

    踩0 评论0
  • 回答了问题 2019-07-17

    问答7日激励计划及积分兑奖计划——第一期活动结束

    奖品丰富啊,怎么是小米音响不是,天猫精灵


    问答7日激励计划的奖品能不能换一样啊,已经有这个奖品了


    已完成7天活动

    踩0 评论0
  • 回答了问题 2019-07-17

    两个阿里云账号下,云数据库Redis实例之间迁移

    去年阿里云运行大会的redis专场有同学讲了redis迁移的你可以去找找那个资料,现在有点忘记具体的操作流程了

    踩2 评论0
  • 回答了问题 2019-07-17

    服务器被锁定

    提交工单吧

    踩0 评论0
正在加载, 请稍后...
滑动查看更多
正在加载, 请稍后...
暂无更多信息