成功的从企业微信中收到的 Alert 消息的样子:

Oracle 日志 Alert:
配置 ZABBIX 使用企业微信发送 Alert 消息_第1张图片

网络专线 Alert:
配置 ZABBIX 使用企业微信发送 Alert 消息_第2张图片

服务器 Alert:
配置 ZABBIX 使用企业微信发送 Alert 消息_第3张图片

Linux 命令行使用方法:

./workweixin_send.php
Usage: workweixin_send.php.php   <content>
./workweixin_send.php <这里填写企业个人微信ID> hi  这是一条测试的企业微信消息</code></pre> 
  <p><strong>Windows 命令行使用方法:</strong></p> 
  <pre><code>php workweixin_send.php <这里填写企业个人微信ID> hi  这是一条测试的企业微信消息</code></pre> 
  <p><strong>测试消息发送成功的样子:</strong><br><a href="http://img.e-com-net.com/image/info3/413a4af3c8c44500984199f4b7e20a97.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info3/413a4af3c8c44500984199f4b7e20a97.jpg" alt="配置 ZABBIX 使用企业微信发送 Alert 消息" width="289" height="56"></a></p> 
  <p><strong>ZABBIX WEB前端中的配置:</strong><br><a href="http://img.e-com-net.com/image/info3/b7b5ba0a47334a8a870dd2dc43c732da.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info3/b7b5ba0a47334a8a870dd2dc43c732da.jpg" alt="配置 ZABBIX 使用企业微信发送 Alert 消息_第4张图片" width="650" height="672" style="border:1px solid black;"></a><br><a href="http://img.e-com-net.com/image/info3/723c892e8bd84b48b1e1849cd957f906.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info3/723c892e8bd84b48b1e1849cd957f906.jpg" alt="配置 ZABBIX 使用企业微信发送 Alert 消息_第5张图片" width="643" height="472" style="border:1px solid black;"></a></p> 
  <p><strong>ZABBIX 配置文件中的配置:</strong></p> 
  <blockquote> 
   <p>AlertScriptsPath=/opt/zabbix/scripts/</p> 
  </blockquote> 
  <p><strong>PHP脚本(需要安装PHP解释器和MEMCACHE,可以参照这个文章进行安装[《PHP版本5到7的源码编译安装》</strong>](https://blog.51cto.com/12641643/2484914)):</p> 
  <pre><code>#!/opt/php/bin/php -q
<?php
class Cache
{   
    /**
     * Cache instance
     * @var Cache
     */
    private static $instance;

    protected $conn;

    /**
     * 获得一个 cache 缓存实例
     * @param mixed $params
     * @return Cache
     */
    public static function getConnect($params = '') : Cache
    {
        if (! self::$instance instanceof self) {
            self::$instance = new self($params);
        }
        return self::$instance;
    }

    /**
     * 实例化一个 cache 实例
     * @param mixed $params
     * @throws \Exception
     */
    private function __construct($params)
    {
        if (! is_array($params)) {
            throw new \Exception('Invalid cache params, failed connect to cache server');
        }
        if (!isset($params['host'])) {
            throw new \Exception('Invalid cache host');
        }
        if (!isset($params['port']) or ($params['port'] < 1 and $params['port'] > 65535)) {
            throw new \Exception('Invalid cache port');
        }
        if (!isset($params['persistent'])) {
            $params['persistent'] = false;
        }
        $params['persistent'] = boolval($params['persistent']);

        $this->conn= new \Memcache();
        if ($params['persistent']) {
            $conn = $this->conn->pconnect($params['host'], $params['port']);
        } else {
            $conn = $this->conn->connect($params['host'], $params['port']);
        }
        if ($conn === false) {
            throw new \Exception('Failed connect to cache server');
        }
    }

    /**
     * 返回缓存值
     * @param string $key
     * @param mixed $default
     */
    public function get(string $key, $default = null)
    {
        if (!empty($key)) {
            $default = $this->conn->get($key);
        }
        return $default;
    }

    /**
     * 设置缓存值
     * @param string $key
     * @param mixed $value
     * @param int $ttl
     * @param bool $compress
     * @return bool
     */
    public function set(string $key, $value = null, int $ttl = null, $compress = false)
    {
        if ($ttl === null) {
            $ttl = $this->getTTL();
        }
        if ($compress) {
            return $this->conn->set($key, $value, MEMCACHE_COMPRESSED, $ttl);
        } else {
            return $this->conn->set($key, $value, 0 , $ttl);
        }
    }
}

class AccessToken
{   
    /**
     * 企业ID<p>
     * 每个企业都拥有唯一的corpid,获取此信息可在管理后台“我的企业”-“企业信息”下查看“企业ID”
     * @var string
     */
    protected $corpid;

    /**
     * secret是企业应用里面用于保障数据安全的“钥匙”,每一个应用都有一个独立的访问密钥,为了保证数据的安全,secret务必不能泄漏
     * @var string
     */
    protected $secret;

    /**
     * 获取 access token 的 url
     * @var string
     */
    protected $url;

    /**
     * 过期时间
     * @var string
     */
    protected $expire;

    /**
     * 配置 corpid 和 secret
     * @param string $corpid
     * @param string $secret
     */
    public function __construct(string $corpid, string $secret)
    {
        $this->corpid = $corpid;
        $this->secret = $secret;
    }

    /**
     * 设置获取 access token 的 url
     * @param string $url
     */
    public function setUrl(string $url) : AccessToken
    {
        $this->url = str_replace(['{corpid}', '{secret}'], [$this->corpid, $this->secret], $url);
        return $this;
    }

    /**
     * 返回 access token
     * @return string
     */
    public function getAccessToken() : string
    {
        $cache = Cache::getConnect();
        $accessToken = $cache->get('work.weixin.access.token');
        if (empty($accessToken)) {
            $accessToken = $this->getAccessTokenFromServer();
            $cache->set('work.weixin.access.token', $accessToken, $this->getExpire() - 60);
        }
        return $accessToken;
    }

    /**
     * 返回 access token 的有效时间
     * @return int
     */
    public function getExpire() : int
    {
        return $this->expire;
    }

    /**
     * 从企业微信服务器上获取 access token
     * @return string
     */
    final protected function getAccessTokenFromServer() : string
    {
        $ch = curl_init();
        $options = [
            CURLOPT_URL             => $this->url,
            CURLOPT_TIMEOUT         => 10,
            CURLOPT_RETURNTRANSFER  => 1,
            CURLOPT_SSL_VERIFYPEER  => false,
            CURLOPT_SSL_VERIFYHOST  => false
        ];
        curl_setopt_array($ch, $options);
        $response = curl_exec($ch);

        /*
         * 微信接口返回数据格式:
         * {'errcode','errmsg','access_token','expires_in'}
         */
        $data = json_decode($response, true);

        if (empty($data)) {
            throw new \Exception('Failed to access work weixin api');
        }

        // 判断是否成功取得access_token
        if ($data['errcode'] !== 0) {
            throw new \Exception('Failed to get work weixin access token from server. ' . $data['errmsg']);
        }

        $this->expire = $data['expires_in'];

        return $data['access_token'];
    }
}

class SendMessage
{

    /**
     * access token instance
     * @var AccessToken
     */
    protected $accessToken;

    /**
     * 发送消息的url
     * @var string
     */
    protected $url;

    /**
     * 成员ID列表(指定为@all时则向关注该企业应用的全部成员发送)
     * @var array
     */
    protected $toUsers = [];

    /**
     * 部门ID列表(当touser为@all时忽略本参数)
     * @var array
     */
    protected $toParties = [];

    /**
     * 标签ID列表(当touser为@all时忽略本参数)
     * @var array
     */
    protected $toTags = [];

    /**
     * 企业应用的id,整型。可在应用的设置页面查看
     * @var int
     */
    protected $agentId;

    /**
     * 消息内容
     * @var string
     */
    protected $content;

    /**
     * 保密信息(表示是否是保密消息,0表示否,1表示是,默认0)
     * @var int
     */
    protected $safe = 0;

    public function __construct(AccessToken $accessToken)
    {
        $this->accessToken = $accessToken;
    }

    /**
     * 设置成员ID
     * @param array $users
     * @return SendMessage
     */
    public function setToUsers(array $users) : SendMessage
    {
        foreach ($users as $k => $user) {
            if (is_string($user)) {
                $this->toUsers[] = $user;
            }
        }
        return $this;
    }

    /**
     * 设置部门ID
     * @param array $parties
     * @return SendMessage
     */
    public function setToParties(array $parties) : SendMessage
    {
        foreach ($parties as $k => $party) {
            if (is_string($party)) {
                $this->toParties[] = $party;
            }
        }
        return $this;
    }

    /**
     * 设置标签ID
     * @param array $tags
     * @return SendMessage
     */
    public function setToTag(array $tags) : SendMessage
    {
        foreach ($tags as $k => $tag) {
            if (is_string($tag)) {
                $this->toTags[] = $tag;
            }
        }
        return $this;
    }

    /**
     * 设置应用ID
     * @param int $id
     * @return SendMessage
     */
    public function setAgentId(int $id) : SendMessage
    {
        $this->agentId = $id;
        return $this;
    }

    /**
     * 设置消息内容(最长不超过2048个字节)
     * @param string $content
     * @return SendMessage
     */
    public function setContent(string $content) : SendMessage
    {
        if (!empty($content)) {
            $this->content = $content;
        }
        return $this;
    }

    public function setUrl(string $url) : SendMessage
    {
        $this->url = str_replace('{accessToken}', $this->accessToken->getAccessToken(), $url);
        return $this;
    }

    /**
     * 调用企业微信 api 发送消息
     * @throws \Exception
     */
    private function send(string $data)
    {
        $ch = curl_init();
        $options = [
            CURLOPT_URL             => $this->url,
            CURLOPT_HEADER          => 0,
            CURLOPT_POST            => 1,
            CURLOPT_POSTFIELDS      => $data,
            CURLOPT_RETURNTRANSFER  => 1,
            CURLOPT_TIMEOUT         => 10,
            CURLOPT_SSL_VERIFYPEER  => 0,
            CURLOPT_SSL_VERIFYHOST  => 0
        ];
        curl_setopt_array($ch, $options);
        $response = curl_exec($ch);

        $data = json_decode($response, true);

        if (empty($data)) {
            throw new \Exception('Failed to access work weixin api');
        }
        if ($data['errcode'] !== 0) {
            throw new \Exception('Failed to send WeiXin message. ' . $data['errmsg']);
        }
    }

    /**
     * 发送文本消息
     * @throws \Exception
     */
    public function sendTextMessage() {
        if (empty($this->toUsers) && empty($this->toParties) && empty($this->toTags)) {
            throw new \Exception('Invalid message recevier');
        }
        if (empty($this->agentId)) {
            throw new \Exception('Invalid app agentid');
        }
        if (empty($this->content)) {
            throw new \Exception('Empty message content');
        }
        $data = json_encode([
            'touser'    => implode('|', $this->toUsers),
            'toparty'   => implode('|', $this->toParties),
            'totag'     => implode('|', $this->toTags),
            'msgtype'   => 'text',
            'agentid'   => $this->agentId,
            'safe'      => $this->safe,
            'text'      => [
                'content'   => $this->content
            ]
        ], JSON_UNESCAPED_UNICODE);

        // 如果第一次发送失败,尝试两次发送
        try {
            $this->send($data);
        } catch (\Exception $e) {
            $this->send($data);
        }
    }

}

// -----------------------------------------------------------------------------------

$cacheParams = [
    'host' => '127.0.0.1',
    'port' => '11211'
];
// 每个企业都拥有唯一的corpid,获取此信息可在管理后台“我的企业”-“企业信息”下查看“企业ID”
$corpid = '*************';
//secret是企业应用里面用于保障数据安全的“钥匙”,每一个应用都有一个独立的访问密钥,为了保证数据的安全,secret务必不能泄漏
$secret = '*************';
// agentid 企业应用的id,整型。可在应用的设置页面查看
$agentid = 1;
$fetchAccessTokenUrl= "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={corpid}&corpsecret={secret}";
$sendMessageUrl = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={accessToken}';

// -----------------------------------------------------------------------------------

if (!isset($argv[1]) || !isset($argv[2]) || !isset($argv[3])) {
    echo 'Usage: ' . basename(__FILE__) . '.php <username> <title> <content>';
    return;
}

// -----------------------------------------------------------------------------------

try {

    Cache::getConnect($cacheParams);

    $accessToken = new AccessToken($corpid, $secret);
    $accessToken->setUrl($fetchAccessTokenUrl);

    $wwx = new SendMessage($accessToken);
    $wwx->setAgentId($agentid)
        ->setUrl($sendMessageUrl)
        ->setToUsers([$argv[1]])
        ->setContent(str_replace(' ', '', strip_tags($argv[3])))
        ->sendTextMessage();
} catch (\Exception $e) {
    echo $e->getMessage();
    file_put_contents(basename(__FILE__, '.php') . '.log', $e->getMessage());
}
</code></pre> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1248573681328836608"></div>
                    <script type="text/javascript" src="/views/front/js/chanyan.js"></script>
                    <!-- 文章页-底部 动态广告位 -->
                    <div class="youdao-fixed-ad" id="detail_ad_bottom"></div>
                </div>
                <div class="col-md-3">
                    <div class="row" id="ad">
                        <!-- 文章页-右侧1 动态广告位 -->
                        <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_1"> </div>
                        </div>
                        <!-- 文章页-右侧2 动态广告位 -->
                        <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_2"></div>
                        </div>
                        <!-- 文章页-右侧3 动态广告位 -->
                        <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_3"></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="container">
        <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(zabbix,企业微信,ALERT消息,Zabbix)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1835508130268672000.htm"
                           title="消息中间件有哪些常见类型" target="_blank">消息中间件有哪些常见类型</a>
                        <span class="text-muted">xmh-sxh-1314</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>消息中间件根据其设计理念和用途,可以大致分为以下几种常见类型:点对点消息队列(Point-to-PointMessagingQueues):在这种模型中,消息被发送到特定的队列中,消费者从队列中取出并处理消息。队列中的消息只能被一个消费者消费,消费后即被删除。常见的实现包括IBM的MQSeries、RabbitMQ的部分使用场景等。适用于任务分发、负载均衡等场景。发布/订阅消息模型(Pub/Sub</div>
                    </li>
                    <li><a href="/article/1835498547785592832.htm"
                           title="【华为OD机试真题2023B卷 JAVA&JS】We Are A Team" target="_blank">【华为OD机试真题2023B卷 JAVA&JS】We Are A Team</a>
                        <span class="text-muted">若博豆</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E5%8D%8E%E4%B8%BA/1.htm">华为</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a>
                        <div>华为OD2023(B卷)机试题库全覆盖,刷题指南点这里WeAreATeam时间限制:1秒|内存限制:32768K|语言限制:不限题目描述:总共有n个人在机房,每个人有一个标号(1<=标号<=n),他们分成了多个团队,需要你根据收到的m条消息判定指定的两个人是否在一个团队中,具体的:1、消息构成为:abc,整数a、b分别代</div>
                    </li>
                    <li><a href="/article/1835497538023682048.htm"
                           title="使用Apify加载Twitter消息以进行微调的完整指南" target="_blank">使用Apify加载Twitter消息以进行微调的完整指南</a>
                        <span class="text-muted">nseejrukjhad</span>
<a class="tag" taget="_blank" href="/search/twitter/1.htm">twitter</a><a class="tag" taget="_blank" href="/search/easyui/1.htm">easyui</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>#使用Apify加载Twitter消息以进行微调的完整指南##引言在自然语言处理领域,微调模型以适应特定任务是提升模型性能的常见方法。本文将介绍如何使用Apify从Twitter导出聊天信息,以便进一步进行微调。##主要内容###使用Apify导出推文首先,我们需要从Twitter导出推文。Apify可以帮助我们做到这一点。通过Apify的强大功能,我们可以批量抓取和导出数据,适用于各类应用场景。</div>
                    </li>
                    <li><a href="/article/1835493753083752448.htm"
                           title="Kafka 消息丢失如何处理?" target="_blank">Kafka 消息丢失如何处理?</a>
                        <span class="text-muted">架构文摘JGWZ</span>
<a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a>
                        <div>今天给大家分享一个在面试中经常遇到的问题:Kafka消息丢失该如何处理?这个问题啊,看似简单,其实里面藏着很多“套路”。来,咱们先讲一个面试的“真实”案例。面试官问:“Kafka消息丢失如何处理?”小明一听,反问:“你是怎么发现消息丢失了?”面试官顿时一愣,沉默了片刻后,可能有点不耐烦,说道:“这个你不用管,反正现在发现消息丢失了,你就说如何处理。”小明一头雾水:“问题是都不知道怎么丢的,处理起来</div>
                    </li>
                    <li><a href="/article/1835476984034062336.htm"
                           title="【六】阿伟开始搭建Kafka学习环境" target="_blank">【六】阿伟开始搭建Kafka学习环境</a>
                        <span class="text-muted">能源恒观</span>
<a class="tag" taget="_blank" href="/search/%E4%B8%AD%E9%97%B4%E4%BB%B6/1.htm">中间件</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/kafka/1.htm">kafka</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a>
                        <div>阿伟开始搭建Kafka学习环境概述上一篇文章阿伟学习了Kafka的核心概念,并且把市面上流行的消息中间件特性进行了梳理和对比,方便大家在学习过程中进行对比学习,最后梳理了一些Kafka使用中经常遇到的Kafka难题以及解决思路,经过上一篇的学习我相信大家对Kafka有了初步的认识,本篇将继续学习Kafka。一、安装和配置学习一项技术首先要搭建一套服务,而Kafka的运行主要需要部署jdk、zook</div>
                    </li>
                    <li><a href="/article/1835465516567851008.htm"
                           title="2021-09-13一切向好发展" target="_blank">2021-09-13一切向好发展</a>
                        <span class="text-muted">昀妡</span>

                        <div>今天,一位学员在群里发了一条求助信息。问题是:一个学生小男孩3年级了,学习态度不端正不认真,也不和老师家长沟通,怎么办?我正好看到了这条消息,便加了她的微信。我问她是否方便电话沟通。在征求学员的同意后,我和她电话沟通了10分钟,给了她一些建议。通过这件事,我看到了自己积极主动的一面。之前,我总说自己消极被动,但其实,问题的根源在于目标不清晰。如果知道方向,还是会突破心理障碍往前走。比如,陌生感召。</div>
                    </li>
                    <li><a href="/article/1835464504918503424.htm"
                           title="Java面试题精选:消息队列(二)" target="_blank">Java面试题精选:消息队列(二)</a>
                        <span class="text-muted">芒果不是芒</span>
<a class="tag" taget="_blank" href="/search/Java%E9%9D%A2%E8%AF%95%E9%A2%98%E7%B2%BE%E9%80%89/1.htm">Java面试题精选</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/kafka/1.htm">kafka</a>
                        <div>一、Kafka的特性1.消息持久化:消息存储在磁盘,所以消息不会丢失2.高吞吐量:可以轻松实现单机百万级别的并发3.扩展性:扩展性强,还是动态扩展4.多客户端支持:支持多种语言(Java、C、C++、GO、)5.KafkaStreams(一个天生的流处理):在双十一或者销售大屏就会用到这种流处理。使用KafkaStreams可以快速的把销售额统计出来6.安全机制:Kafka进行生产或者消费的时候会</div>
                    </li>
                    <li><a href="/article/1835455835682205696.htm"
                           title="《前夫如龙》王昊江琼(独家小说)精彩TXT阅读" target="_blank">《前夫如龙》王昊江琼(独家小说)精彩TXT阅读</a>
                        <span class="text-muted">海边书楼</span>

                        <div>《前夫如龙》王昊江琼(独家小说)精彩TXT阅读主角:王昊江琼简介:离婚那天,她视他如泥土。谁曾想,消息一出,天下震动!可关注微信公众号【风车文楼】去回个书号【203】,即可免费阅读【前夫如龙】全文!江芸并未听出华少龙声音里的冷漠,依旧一脸笑容道:“是啊,那个废物哪儿配得上我姐?这些年,我姐对他仁至义尽了。以后,华少爷可以多跟我姐接触接触,只有华少爷这样的人,才配得上我姐啊!”江琼低着头,微微有些娇</div>
                    </li>
                    <li><a href="/article/1835454795712917504.htm"
                           title="esp32开发快速入门 8 : MQTT 的快速入门,基于esp32实现MQTT通信" target="_blank">esp32开发快速入门 8 : MQTT 的快速入门,基于esp32实现MQTT通信</a>
                        <span class="text-muted">z755924843</span>
<a class="tag" taget="_blank" href="/search/ESP32%E5%BC%80%E5%8F%91%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8/1.htm">ESP32开发快速入门</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>MQTT介绍简介MQTT(MessageQueuingTelemetryTransport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联</div>
                    </li>
                    <li><a href="/article/1835447859219099648.htm"
                           title="06选课支付模块之基于消息队列发送支付通知消息" target="_blank">06选课支付模块之基于消息队列发送支付通知消息</a>
                        <span class="text-muted">echo 云清</span>
<a class="tag" taget="_blank" href="/search/%E5%AD%A6%E6%88%90%E5%9C%A8%E7%BA%BF/1.htm">学成在线</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/rabbitmq/1.htm">rabbitmq</a><a class="tag" taget="_blank" href="/search/%E6%B6%88%E6%81%AF%E9%98%9F%E5%88%97/1.htm">消息队列</a><a class="tag" taget="_blank" href="/search/%E6%94%AF%E4%BB%98%E9%80%9A%E7%9F%A5/1.htm">支付通知</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E6%88%90%E5%9C%A8%E7%BA%BF/1.htm">学成在线</a>
                        <div>消息队列发送支付通知消息需求分析订单服务作为通用服务,在订单支付成功后需要将支付结果异步通知给其他对接的微服务,微服务收到支付结果根据订单的类型去更新自己的业务数据技术方案使用消息队列进行异步通知需要保证消息的可靠性即生产端将消息成功通知到服务端:消息发送到交换机-->由交换机发送到队列-->消费者监听队列,收到消息进行处理,参考文章02-使用Docker安装RabbitMQ-CSDN博客生产者确</div>
                    </li>
                    <li><a href="/article/1835447605933469696.htm"
                           title="在RabbitMQ中四种常见的消息路由模式" target="_blank">在RabbitMQ中四种常见的消息路由模式</a>
                        <span class="text-muted">Xwzzz_</span>
<a class="tag" taget="_blank" href="/search/rabbitmq/1.htm">rabbitmq</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F/1.htm">分布式</a>
                        <div>1.Fanout模式Fanout模式的交换机是扇出交换机(FanoutExchange),它会将消息广播给所有绑定到它的队列,而不考虑消息的内容或路由键。工作原理:生产者发送消息到FanoutExchange。FanoutExchange会将消息广播给所有绑定到它的队列,所有绑定的队列都会收到这条消息。消费者监听绑定的队列,处理收到的消息。特点:没有路由键:消息不需要路由键,所有绑定的队列都会接收</div>
                    </li>
                    <li><a href="/article/1835443696431099904.htm"
                           title="笋丁网页自动回复机器人V3.0.0免授权版源码" target="_blank">笋丁网页自动回复机器人V3.0.0免授权版源码</a>
                        <span class="text-muted">希希分享</span>
<a class="tag" taget="_blank" href="/search/%E8%BD%AF%E5%B8%8C%E7%BD%9158soho_cn/1.htm">软希网58soho_cn</a><a class="tag" taget="_blank" href="/search/%E6%BA%90%E7%A0%81%E8%B5%84%E6%BA%90/1.htm">源码资源</a><a class="tag" taget="_blank" href="/search/%E7%AC%8B%E4%B8%81%E7%BD%91%E9%A1%B5%E8%87%AA%E5%8A%A8%E5%9B%9E%E5%A4%8D%E6%9C%BA%E5%99%A8%E4%BA%BA/1.htm">笋丁网页自动回复机器人</a>
                        <div>笋丁网页机器人一款可设置自动回复,默认消息,调用自定义api接口的网页机器人。此程序后端语言使用Golang,内存占用最高不超过30MB,1H1G服务器流畅运行。仅支持Linux服务器部署,不支持虚拟主机,请悉知!使用自定义api功能需要有一定的建站基础。源码下载:https://download.csdn.net/download/m0_66047725/89754250更多资源下载:关注我。安</div>
                    </li>
                    <li><a href="/article/1835440081733775360.htm"
                           title="圣诞节后的人气又回来了?好丽友、特斯拉们的生意却不好做| 每周热点汇总" target="_blank">圣诞节后的人气又回来了?好丽友、特斯拉们的生意却不好做| 每周热点汇总</a>
                        <span class="text-muted">饭Sir看天下</span>

                        <div>新的一年来了大家好,今天是2022年12月26日,星期一,农历十二月初四。这个月,相信我们很多人都遇到了身体不适的情况,饭Sir上周也因为发烧不得不停更了一周,这几天才刚刚恢复,好在这一切最后都能过去。疫情之外,一些好消息也逐渐到来,例如北京等多座大城市在年底的圣诞节期间又恢复了生机,一些迹象也在预示着久违的热闹春节要回来了。但另一方面,明年不确定的经济形势又带来一些不利的消息,不禁让人有些担心。</div>
                    </li>
                    <li><a href="/article/1835436158469894144.htm"
                           title="如果没有结婚,是不是还能好好活着。" target="_blank">如果没有结婚,是不是还能好好活着。</a>
                        <span class="text-muted">橡皮树</span>

                        <div>昨天,小区发生了一起命案。原因暂时不明。一种说法是,女人生的孩子不是男人的,所以男人一气之下把正在做月子的女人给杀死了。另一种说法是,女人与婆婆发生了口角,男人回到家,听到母亲的控诉,找女人算账,然后活活将其打死了。听到这个消息,不寒而栗。警方已将男子抓获。只是在想,这个女人如果没有结婚的话,是不是还能好好的活在这个世上。</div>
                    </li>
                    <li><a href="/article/1835428695603507200.htm"
                           title="RabbitMQ生产者重复机制与确认机制" target="_blank">RabbitMQ生产者重复机制与确认机制</a>
                        <span class="text-muted">java炒饭小能手</span>
<a class="tag" taget="_blank" href="/search/java-rabbitmq/1.htm">java-rabbitmq</a><a class="tag" taget="_blank" href="/search/rabbitmq/1.htm">rabbitmq</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>重复机制生产者发送消息时,出现了网络故障,导致与MQ的连接中断。为了解决这个问题,SpringAMQP提供的消息发送时的重试机制。即:当RabbitTemplate与MQ连接超时后,多次重试。需要修该发送端模块的application.yaml文件,添加下面的内容:spring:rabbitmq:connection-timeout:1s#设置MQ的连接超时时间template:retry:ena</div>
                    </li>
                    <li><a href="/article/1835421408121942016.htm"
                           title="三人行(六十三)" target="_blank">三人行(六十三)</a>
                        <span class="text-muted">清风不等明月</span>

                        <div>书接上文:虽然大家都认为要进密室看看,但是罗道长还是提醒各位不要轻举妄动。让灵儿这两天也不用在盯着孟琦了,罗道长想从侧面打探一下密室的消息,看看有没有办法把孟琦调走一段时间,这样就有机会进入密室查看了。机会很快就来了,因为月底孟琦要在议事堂商议各堂口的事项。所以有一天的时间他的卧室都是空的。这一天很快就到了,各堂口的负责人都聚集在议事堂,今天孟琦是主角,他当然也是不能缺席的。他们商议的无非是各堂口</div>
                    </li>
                    <li><a href="/article/1835399831535841280.htm"
                           title="python实现规则引擎_规则引擎python" target="_blank">python实现规则引擎_规则引擎python</a>
                        <span class="text-muted">weixin_39601511</span>
<a class="tag" taget="_blank" href="/search/python%E5%AE%9E%E7%8E%B0%E8%A7%84%E5%88%99%E5%BC%95%E6%93%8E/1.htm">python实现规则引擎</a>
                        <div>广告关闭回望2020,你在技术之路上,有什么收获和成长么?对于未来,你有什么期待么?云+社区年度征文,各种定制好礼等你!我正在用python编写日志收集分析应用程序,我需要编写一个“规则引擎”来匹配和处理日志消息。它需要具有以下特点:正则表达式匹配消息本身消息严重性优先级的算术比较布尔运算符我设想一个例子规则可能是这样的:(message~program:messageandseverity>=h</div>
                    </li>
                    <li><a href="/article/1835388113220890624.htm"
                           title="极度休闲的一天" target="_blank">极度休闲的一天</a>
                        <span class="text-muted">淡泊孤峰</span>

                        <div>国庆国庆,普天同庆。在家躺着看大家游山玩水,长辈走亲戚,我的微信一天没几条消息,标准结局,习惯了。哈利波特系列电影真不错,童年总幻想着像主角哈利一样,像《龙族》少年楚子航浪迹江湖,风云天下。而现在却败给华为ICT大赛题还有永无止境的代码视频,唉,真可笑!</div>
                    </li>
                    <li><a href="/article/1835374360009994240.htm"
                           title="导致格式错误的 Lambda 代理响应的原因以及如何修复它" target="_blank">导致格式错误的 Lambda 代理响应的原因以及如何修复它</a>
                        <span class="text-muted">zqhdz米时空</span>
<a class="tag" taget="_blank" href="/search/%E6%B1%87%E7%BC%96/1.htm">汇编</a>
                        <div>当人们尝试使用AWSAPIGateway和AWSLambda构建无服务器应用程序时,经常出现的一个问题是_由于配置错误而执行失败:Lambda代理响应格式错误。_没有什么比通用错误消息更糟糕的了,它们不会告诉您解决问题所需的任何内容,对吧?AWS并不是以其错误消息设计而闻名,如果甚至可以这样称呼它的话,更不用说为您提供解决问题的方法了。那么如何修复这个Lambda错误以及是什么原因造成的呢?花椒壳</div>
                    </li>
                    <li><a href="/article/1835354648068845568.htm"
                           title="app推广一手资源在哪里找?盘点2024年必备的八大app拉新渠道" target="_blank">app推广一手资源在哪里找?盘点2024年必备的八大app拉新渠道</a>
                        <span class="text-muted">U客直谈APP</span>

                        <div>在2024年即将来临之际,还是有许多小伙伴表示不知道app推广一手资源在哪里找,又要从哪里去了解各个资源渠道的不同特性。好消息来啦,本篇文章就将带大家盘点24年必备的八大app拉新渠道,全文干货,拆解分析点评一步到位,还不快快收藏起来~1.app推广一手资源来源:U客直谈U客直谈是一个资源对接平台,专注于为推广人员提供海量丰富的app拉新任务。其具有数量丰富且类型多样的app拉新任务,使得U客直谈</div>
                    </li>
                    <li><a href="/article/1835354447627251712.htm"
                           title="前端知识点" target="_blank">前端知识点</a>
                        <span class="text-muted">ZhangTao_zata</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a>
                        <div>下面是一个最基本的html代码body{font-family:Arial,sans-serif;margin:20px;}//JavaScriptfunctionthatdisplaysanalertwhencalledfunctionshowMessage(){alert("Hello!Youclickedthebutton.");}MyFirstHTMLPageWelcometoMyPage</div>
                    </li>
                    <li><a href="/article/1835317832104112128.htm"
                           title="年少时,长大后" target="_blank">年少时,长大后</a>
                        <span class="text-muted">旧路上</span>

                        <div>图片发自App年少时的恋爱:确定关系的下一秒,你就赶紧发了一条“余生,请多多指教”的朋友圈。单身多年的你,巴不得向全天下公布恋情你觉得他是那个会和你走完一辈子的人,你的全世界都是他你每天醒来第一件事,就是看他有没有给你发消息你每天都想见到他,巴不得二十四小时都黏在他身边。你甚至都开始畅想你们老了,要修一个大大的院子,一起种草养花。长大后的谈恋爱:确定关系的那晚,你很平静地睡了一觉,然后第二天和他一</div>
                    </li>
                    <li><a href="/article/1835299237026426880.htm"
                           title="#微信支付宝个人收款码不能用于经营#" target="_blank">#微信支付宝个人收款码不能用于经营#</a>
                        <span class="text-muted">蜡笔需要小新的陪伴</span>

                        <div>我中午刷头条发现一条消息,说明年3月1日起,微信,支付宝个人收款码不能用于经营收款。就是原来各商家卖东西,客户扫码收款码付钱。那就有人会问,明年是不是就要拿现金或刷卡买菜就不能用支付宝或者是微信?其实微信,支付宝的商户号还是可以正常使用的。但是说如果小商贩给你他的个人收款码,就不要再刷了,因为法律上已经明确规定了,个人收款码不能用于经营活动。2022年3月1日起,“个人收款码禁用于经营性服务”及“</div>
                    </li>
                    <li><a href="/article/1835290216055795712.htm"
                           title="“2020”马云最新消息,亿万人暴富火热生意,穷人翻身时代来了!" target="_blank">“2020”马云最新消息,亿万人暴富火热生意,穷人翻身时代来了!</a>
                        <span class="text-muted">阿兰_5751</span>

                        <div>马云说:这次疫情的到来,导致传统生意越来越难做,越来越艰难,大家都知道,现在的购物都是在马桶,枕边,沙发上和各种APP上面去了,街上的人越来越少,营业员比逛超市的人还要多,互联网如果一旦能实现全部快速送达服务,那么传统实体经济真的剩不了几家了,如何响应国家号召共度难关,让所有人能够走出困境!分享经济那么什么是分享经济呢?分享一般就是说,遇到好的东西,不自觉地想推荐出去。这里先决条件一定是,在自己觉</div>
                    </li>
                    <li><a href="/article/1835274724960202752.htm"
                           title="Kafka 基础与架构理解" target="_blank">Kafka 基础与架构理解</a>
                        <span class="text-muted">StaticKing</span>
<a class="tag" taget="_blank" href="/search/KAFKA/1.htm">KAFKA</a><a class="tag" taget="_blank" href="/search/kafka/1.htm">kafka</a>
                        <div>目录前言Kafka基础概念消息队列简介:Kafka与传统消息队列(如RabbitMQ、ActiveMQ)的对比Kafka的组件Kafka的工作原理:消息的生产、分发、消费流程Kafka系统架构Kafka的分布式架构设计Leader-Follower机制与数据复制Log-basedStorage和持久化Broker间通信协议Zookeeper在Kafka中的角色总结前言Kafka是一个分布式的消息系</div>
                    </li>
                    <li><a href="/article/1835261082281799680.htm"
                           title="深圳疫情最新情况—龙岗坂田全员核酸检测" target="_blank">深圳疫情最新情况—龙岗坂田全员核酸检测</a>
                        <span class="text-muted">苌疏</span>

                        <div>一早上就看到群消息关于疫情的事,我工作的附近出现了一起病历,消息一出来,工作群都炸了,都在议论纷纷,没过多久,又出现了坂田地区全员核酸检测的消息。一时之间,人心惶惶,居家隔离的隔离,在辖区上班的我也开始一出小区门口就带上了口罩。像往常一样去上班坐地铁,依旧拥挤,没有异常,但是在小区路过时,看见排着的长队,突然意识到疫情离我这么近,有点慌,他就像一只蟑螂,突然就出现你面前,让你猝不及防。发此文没有别</div>
                    </li>
                    <li><a href="/article/1835256693479534592.htm"
                           title="JS的输出语句" target="_blank">JS的输出语句</a>
                        <span class="text-muted">3259392566</span>
<a class="tag" taget="_blank" href="/search/java%E6%80%BB%E7%BB%93%E7%AC%94%E8%AE%B0/1.htm">java总结笔记</a><a class="tag" taget="_blank" href="/search/java%E7%9A%84%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B/1.htm">java的数据类型</a><a class="tag" taget="_blank" href="/search/%E5%9F%BA%E7%A1%80%E6%80%BB%E7%BB%93/1.htm">基础总结</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>1.//1.提示浏览器弹出一个警示框alert('你好呀!!!2109秋')//2.让计算机在页面输出一个内容//document.write()向body里面输出一个内容document.write('你好呀!!!金科')//3.向控制台输出一个内容console.log('你猜我在哪里?');2.JS的代码编写的位置①我们可以将js的代码编写道标签onclick属性中,当我们点击代码时,js代</div>
                    </li>
                    <li><a href="/article/1835254223202250752.htm"
                           title="uniapp实现IM即时通讯仿微信聊天功能" target="_blank">uniapp实现IM即时通讯仿微信聊天功能</a>
                        <span class="text-muted">即构开发者</span>

                        <div>本文介绍如何基于UNIAPP使用即时通讯SDKZIMSDK快速实现基本的消息收发功能。1uniappim即时通讯功能方案介绍即时通讯SDKZIMSDK提供了如下接入方案:image.png在此方案中,您需要通过您自己的业务系统实现以下业务逻辑:搭建客户端的用户管理逻辑,并下发用户ID用于客户端登录。鉴权Token,建议由您的业务后台自行实现,保证鉴权数据安全。uni-appSDK是一个基于原生iO</div>
                    </li>
                    <li><a href="/article/1835237788761550848.htm"
                           title="基于flask做大模型SSE输出" target="_blank">基于flask做大模型SSE输出</a>
                        <span class="text-muted">Mark_Aussie</span>
<a class="tag" taget="_blank" href="/search/nlp/1.htm">nlp</a><a class="tag" taget="_blank" href="/search/flask/1.htm">flask</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a>
                        <div>默认情况下,Fask以多线程模式运行,每个请求都落在一个新线程上。SSE:基于HTTP的协议,用于实现服务器向客户端推送实时数据。使用长轮询机制,客户端通过HTTP连接向服务器发送请求,并保持该连接打开,服务器可以随时向客户端推送新的数据。SSE协议使用简单的文本格式,数据通过纯文本的消息流进行传输,每个消息以"data:"开头,以两个换行符"\n\n"结尾,如果传递的数据中有字典要使用变量传递。</div>
                    </li>
                    <li><a href="/article/1835229719801458688.htm"
                           title="【仿RabbitMQ消息队列项目day2】使用muduo库中基于protobuf的应用层协议进行通信" target="_blank">【仿RabbitMQ消息队列项目day2】使用muduo库中基于protobuf的应用层协议进行通信</a>
                        <span class="text-muted">月夜星辉雪</span>
<a class="tag" taget="_blank" href="/search/rabbitmq/1.htm">rabbitmq</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F/1.htm">分布式</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                        <div>一.什么是muduo?muduo库是⼀个基于非阻塞IO和事件驱动的C++高并发TCP网络编程库。简单来理解,它就是对原生的TCP套接字的封装,是一个比socket编程接口更好用的编程库。二.使用muduo库完成一个英译汉翻译服务TranslateServer.hpp:#pragmaonce#include#include#include#include#include"muduo/net/TcpC</div>
                    </li>
                                <li><a href="/article/22.htm"
                                       title="redis学习笔记——不仅仅是存取数据" target="_blank">redis学习笔记——不仅仅是存取数据</a>
                                    <span class="text-muted">Everyday都不同</span>
<a class="tag" taget="_blank" href="/search/returnSource/1.htm">returnSource</a><a class="tag" taget="_blank" href="/search/expire%2Fdel/1.htm">expire/del</a><a class="tag" taget="_blank" href="/search/incr%2Flpush/1.htm">incr/lpush</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93%E5%88%86%E5%8C%BA/1.htm">数据库分区</a><a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a>
                                    <div>最近项目中用到比较多redis,感觉之前对它一直局限于get/set数据的层面。其实作为一个强大的NoSql数据库产品,如果好好利用它,会带来很多意想不到的效果。(因为我搞java,所以就从jedis的角度来补充一点东西吧。PS:不一定全,只是个人理解,不喜勿喷) 
  
1、关于JedisPool.returnSource(Jedis jeids) 
  
这个方法是从red</div>
                                </li>
                                <li><a href="/article/149.htm"
                                       title="SQL性能优化-持续更新中。。。。。。" target="_blank">SQL性能优化-持续更新中。。。。。。</a>
                                    <span class="text-muted">atongyeye</span>
<a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a>
                                    <div>1 通过ROWID访问表--索引 
你可以采用基于ROWID的访问方式情况,提高访问表的效率, , ROWID包含了表中记录的物理位置信息..ORACLE采用索引(INDEX)实现了数据和存放数据的物理位置(ROWID)之间的联系. 通常索引提供了快速访问ROWID的方法,因此那些基于索引列的查询就可以得到性能上的提高. 
 
2 共享SQL语句--相同的sql放入缓存 
 
3 选择最有效率的表</div>
                                </li>
                                <li><a href="/article/276.htm"
                                       title="[JAVA语言]JAVA虚拟机对底层硬件的操控还不完善" target="_blank">[JAVA语言]JAVA虚拟机对底层硬件的操控还不完善</a>
                                    <span class="text-muted">comsci</span>
<a class="tag" taget="_blank" href="/search/JAVA%E8%99%9A%E6%8B%9F%E6%9C%BA/1.htm">JAVA虚拟机</a>
                                    <div> 
     如果我们用汇编语言编写一个直接读写CPU寄存器的代码段,然后利用这个代码段去控制被操作系统屏蔽的硬件资源,这对于JVM虚拟机显然是不合法的,对操作系统来讲,这样也是不合法的,但是如果是一个工程项目的确需要这样做,合同已经签了,我们又不能够这样做,怎么办呢? 那么一个精通汇编语言的那种X客,是否在这个时候就会发生某种至关重要的作用呢? 
 
&n</div>
                                </li>
                                <li><a href="/article/403.htm"
                                       title="lvs- real" target="_blank">lvs- real</a>
                                    <span class="text-muted">男人50</span>
<a class="tag" taget="_blank" href="/search/LVS/1.htm">LVS</a>
                                    <div>#!/bin/bash 
# 
# Script to start LVS DR real server. 
# description: LVS DR real server 
# 
#.  /etc/rc.d/init.d/functions 
 
VIP=10.10.6.252 
host='/bin/hostname' 
 
case "$1" in 
sta</div>
                                </li>
                                <li><a href="/article/530.htm"
                                       title="生成公钥和私钥" target="_blank">生成公钥和私钥</a>
                                    <span class="text-muted">oloz</span>
<a class="tag" taget="_blank" href="/search/DSA/1.htm">DSA</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8%E5%8A%A0%E5%AF%86/1.htm">安全加密</a>
                                    <div>package com.msserver.core.util;

import java.security.KeyPair;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.SecureRandom;

public class SecurityUtil {
</div>
                                </li>
                                <li><a href="/article/657.htm"
                                       title="UIView 中加入的cocos2d,背景透明" target="_blank">UIView 中加入的cocos2d,背景透明</a>
                                    <span class="text-muted">374016526</span>
<a class="tag" taget="_blank" href="/search/cocos2d/1.htm">cocos2d</a><a class="tag" taget="_blank" href="/search/glClearColor/1.htm">glClearColor</a>
                                    <div>要点是首先pixelFormat:kEAGLColorFormatRGBA8,必须有alpha层才能透明。然后view设置为透明glView.opaque = NO;[director setOpenGLView:glView];[self.viewController.view setBackgroundColor:[UIColor clearColor]];[self.viewControll</div>
                                </li>
                                <li><a href="/article/784.htm"
                                       title="mysql常用命令" target="_blank">mysql常用命令</a>
                                    <span class="text-muted">香水浓</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                                    <div>连接数据库 
mysql -u troy -ptroy 
 
备份表 
mysqldump -u troy -ptroy mm_database mm_user_tbl > user.sql 
 
恢复表(与恢复数据库命令相同) 
mysql -u troy -ptroy mm_database < user.sql 
 
备份数据库 
mysqldump -u troy -ptroy</div>
                                </li>
                                <li><a href="/article/911.htm"
                                       title="我的架构经验系列文章 - 后端架构 - 系统层面" target="_blank">我的架构经验系列文章 - 后端架构 - 系统层面</a>
                                    <span class="text-muted">agevs</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a>
                                    <div>系统层面:
高可用性

所谓高可用性也就是通过避免单独故障加上快速故障转移实现一旦某台物理服务器出现故障能实现故障快速恢复。一般来说,可以采用两种方式,如果可以做业务可以做负载均衡则通过负载均衡实现集群,然后针对每一台服务器进行监控,一旦发生故障则从集群中移除;如果业务只能有单点入口那么可以通过实现Standby机加上虚拟IP机制,实现Active机在出现故障之后虚拟IP转移到Standby的快速</div>
                                </li>
                                <li><a href="/article/1038.htm"
                                       title="利用ant进行远程tomcat部署" target="_blank">利用ant进行远程tomcat部署</a>
                                    <span class="text-muted">aijuans</span>
<a class="tag" taget="_blank" href="/search/tomcat/1.htm">tomcat</a>
                                    <div>在javaEE项目中,需要将工程部署到远程服务器上,如果部署的频率比较高,手动部署的方式就比较麻烦,可以利用Ant工具实现快捷的部署。这篇博文详细介绍了ant配置的步骤(http://www.cnblogs.com/GloriousOnion/archive/2012/12/18/2822817.html),但是在tomcat7以上不适用,需要修改配置,具体如下: 
1.配置tomcat的用户角色</div>
                                </li>
                                <li><a href="/article/1165.htm"
                                       title="获取复利总收入" target="_blank">获取复利总收入</a>
                                    <span class="text-muted">baalwolf</span>
<a class="tag" taget="_blank" href="/search/%E8%8E%B7%E5%8F%96/1.htm">获取</a>
                                    <div>       public static void main(String args[]){ 
        int money=200; 
        int year=1; 
        double rate=0.1; 
&</div>
                                </li>
                                <li><a href="/article/1292.htm"
                                       title="eclipse.ini解释" target="_blank">eclipse.ini解释</a>
                                    <span class="text-muted">BigBird2012</span>
<a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a>
                                    <div>大多数java开发者使用的都是eclipse,今天感兴趣去eclipse官网搜了一下eclipse.ini的配置,供大家参考,我会把关键的部分给大家用中文解释一下。还是推荐有问题不会直接搜谷歌,看官方文档,这样我们会知道问题的真面目是什么,对问题也有一个全面清晰的认识。 
Overview 
1、Eclipse.ini的作用 
Eclipse startup is controlled by th</div>
                                </li>
                                <li><a href="/article/1419.htm"
                                       title="AngularJS实现分页功能" target="_blank">AngularJS实现分页功能</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/AngularJS/1.htm">AngularJS</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E9%A1%B5/1.htm">分页</a>
                                    <div>        对于大多数web应用来说显示项目列表是一种很常见的任务。通常情况下,我们的数据会比较多,无法很好地显示在单个页面中。在这种情况下,我们需要把数据以页的方式来展示,同时带有转到上一页和下一页的功能。既然在整个应用中这是一种很常见的需求,那么把这一功能抽象成一个通用的、可复用的分页(Paginator)服务是很有意义的。 
  &nbs</div>
                                </li>
                                <li><a href="/article/1546.htm"
                                       title="[Maven学习笔记三]Maven archetype" target="_blank">[Maven学习笔记三]Maven archetype</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/ArcheType/1.htm">ArcheType</a>
                                    <div>archetype的英文意思是原型,Maven archetype表示创建Maven模块的模版,比如创建web项目,创建Spring项目等等. 
  
mvn archetype提供了一种命令行交互式创建Maven项目或者模块的方式, 
  
mvn archetype 
  
1.在LearnMaven-ch03目录下,执行命令mvn archetype:gener</div>
                                </li>
                                <li><a href="/article/1673.htm"
                                       title="【Java命令三】jps" target="_blank">【Java命令三】jps</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/Java%E5%91%BD%E4%BB%A4/1.htm">Java命令</a>
                                    <div>jps很简单,用于显示当前运行的Java进程,也可以连接到远程服务器去查看 
  
[hadoop@hadoop bin]$ jps -help
usage: jps [-help]
       jps [-q] [-mlvV] [<hostid>]

Definitions:
    <hostid>:      <hostname>[:</div>
                                </li>
                                <li><a href="/article/1800.htm"
                                       title="ZABBIX2.2 2.4 等各版本之间的兼容性" target="_blank">ZABBIX2.2 2.4 等各版本之间的兼容性</a>
                                    <span class="text-muted">ronin47</span>

                                    <div>zabbix更新很快,从2009年到现在已经更新多个版本,为了使用更多zabbix的新特性,随之而来的便是升级版本,zabbix版本兼容性是必须优先考虑的一点 客户端AGENT兼容 
zabbix1.x到zabbix2.x的所有agent都兼容zabbix server2.4:如果你升级zabbix server,客户端是可以不做任何改变,除非你想使用agent的一些新特性。 Zabbix代理(p</div>
                                </li>
                                <li><a href="/article/1927.htm"
                                       title="unity 3d还是cocos2dx哪个适合游戏?" target="_blank">unity 3d还是cocos2dx哪个适合游戏?</a>
                                    <span class="text-muted">brotherlamp</span>
<a class="tag" taget="_blank" href="/search/unity%E8%87%AA%E5%AD%A6/1.htm">unity自学</a><a class="tag" taget="_blank" href="/search/unity%E6%95%99%E7%A8%8B/1.htm">unity教程</a><a class="tag" taget="_blank" href="/search/unity%E8%A7%86%E9%A2%91/1.htm">unity视频</a><a class="tag" taget="_blank" href="/search/unity%E8%B5%84%E6%96%99/1.htm">unity资料</a><a class="tag" taget="_blank" href="/search/unity/1.htm">unity</a>
                                    <div>unity 3d还是cocos2dx哪个适合游戏? 
问:unity 3d还是cocos2dx哪个适合游戏? 
答:首先目前来看unity视频教程因为是3d引擎,目前对2d支持并不完善,unity 3d 目前做2d普遍两种思路,一种是正交相机,3d画面2d视角,另一种是通过一些插件,动态创建mesh来绘制图形单元目前用的较多的是2d toolkit,ex2d,smooth moves,sm2, 
</div>
                                </li>
                                <li><a href="/article/2054.htm"
                                       title="百度笔试题:一个已经排序好的很大的数组,现在给它划分成m段,每段长度不定,段长最长为k,然后段内打乱顺序,请设计一个算法对其进行重新排序" target="_blank">百度笔试题:一个已经排序好的很大的数组,现在给它划分成m段,每段长度不定,段长最长为k,然后段内打乱顺序,请设计一个算法对其进行重新排序</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E7%99%BE%E5%BA%A6/1.htm">百度</a><a class="tag" taget="_blank" href="/search/%E6%8B%9B%E8%81%98/1.htm">招聘</a>
                                    <div>

import java.util.Arrays;

/**
 * 最早是在陈利人老师的微博看到这道题:
 * #面试题#An array with n elements which is K most sorted,就是每个element的初始位置和它最终的排序后的位置的距离不超过常数K
 * 设计一个排序算法。It should be faster than O(n*lgn)。</div>
                                </li>
                                <li><a href="/article/2181.htm"
                                       title="获取checkbox复选框的值" target="_blank">获取checkbox复选框的值</a>
                                    <span class="text-muted">chiangfai</span>
<a class="tag" taget="_blank" href="/search/checkbox/1.htm">checkbox</a>
                                    <div><title>CheckBox</title>
  <script type = "text/javascript">
	doGetVal: function  doGetVal()
	{
		//var fruitName = document.getElementById("apple").value;//根据</div>
                                </li>
                                <li><a href="/article/2308.htm"
                                       title="MySQLdb用户指南" target="_blank">MySQLdb用户指南</a>
                                    <span class="text-muted">chenchao051</span>
<a class="tag" taget="_blank" href="/search/mysqldb/1.htm">mysqldb</a>
                                    <div>原网页被墙,放这里备用。  MySQLdb User's Guide  
Contents 
 
 Introduction 
 Installation 
  _mysql 
   
   MySQL C API translation 
   MySQL C API function mapping 
   Some _mysql examples 
    
  MySQLdb 
   
 </div>
                                </li>
                                <li><a href="/article/2435.htm"
                                       title="HIVE 窗口及分析函数" target="_blank">HIVE 窗口及分析函数</a>
                                    <span class="text-muted">daizj</span>
<a class="tag" taget="_blank" href="/search/hive/1.htm">hive</a><a class="tag" taget="_blank" href="/search/%E7%AA%97%E5%8F%A3%E5%87%BD%E6%95%B0/1.htm">窗口函数</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E6%9E%90%E5%87%BD%E6%95%B0/1.htm">分析函数</a>
                                    <div>窗口函数应用场景: 
(1)用于分区排序 
(2)动态Group By 
(3)Top N 
(4)累计计算 
(5)层次查询 
 
一、分析函数 
用于等级、百分点、n分片等。 
函数             说明 
RANK()     &nbs</div>
                                </li>
                                <li><a href="/article/2562.htm"
                                       title="PHP ZipArchive 实现压缩解压Zip文件" target="_blank">PHP ZipArchive 实现压缩解压Zip文件</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/zip/1.htm">zip</a>
                                    <div>  
PHP ZipArchive 是PHP自带的扩展类,可以轻松实现ZIP文件的压缩和解压,使用前首先要确保PHP ZIP 扩展已经开启,具体开启方法就不说了,不同的平台开启PHP扩增的方法网上都有,如有疑问欢迎交流。这里整理一下常用的示例供参考。 
一、解压缩zip文件        01   02   03   04   05   06   07   08   09   10   11   </div>
                                </li>
                                <li><a href="/article/2689.htm"
                                       title="精彩英语贺词" target="_blank">精彩英语贺词</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/%E8%8B%B1%E8%AF%AD/1.htm">英语</a>
                                    <div>I'm always here  
            我会一直在这里支持你  
              &nb</div>
                                </li>
                                <li><a href="/article/2816.htm"
                                       title="基于Java注解的Spring的IoC功能" target="_blank">基于Java注解的Spring的IoC功能</a>
                                    <span class="text-muted">e200702084</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/bean/1.htm">bean</a><a class="tag" taget="_blank" href="/search/IOC/1.htm">IOC</a><a class="tag" taget="_blank" href="/search/Office/1.htm">Office</a>
                                    <div>                                
  </div>
                                </li>
                                <li><a href="/article/2943.htm"
                                       title="java模拟post请求" target="_blank">java模拟post请求</a>
                                    <span class="text-muted">geeksun</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>一般API接收客户端(比如网页、APP或其他应用服务)的请求,但在测试时需要模拟来自外界的请求,经探索,使用HttpComponentshttpClient可模拟Post提交请求。  此处用HttpComponents的httpclient来完成使命。   
import org.apache.http.HttpEntity ;
import org.apache.http.HttpRespon</div>
                                </li>
                                <li><a href="/article/3070.htm"
                                       title="Swift语法之 ---- ?和!区别" target="_blank">Swift语法之 ---- ?和!区别</a>
                                    <span class="text-muted">hongtoushizi</span>
<a class="tag" taget="_blank" href="/search/%3F/1.htm">?</a><a class="tag" taget="_blank" href="/search/swift/1.htm">swift</a><a class="tag" taget="_blank" href="/search/%21/1.htm">!</a>
                                    <div>转载自: http://blog.sina.com.cn/s/blog_71715bf80102ux3v.html 
  
Swift语言使用var定义变量,但和别的语言不同,Swift里不会自动给变量赋初始值,也就是说变量不会有默认值,所以要求使用变量之前必须要对其初始化。如果在使用变量之前不进行初始化就会报错:  
var stringValue : String 
//</div>
                                </li>
                                <li><a href="/article/3197.htm"
                                       title="centos7安装jdk1.7" target="_blank">centos7安装jdk1.7</a>
                                    <span class="text-muted">jisonami</span>
<a class="tag" taget="_blank" href="/search/jdk/1.htm">jdk</a><a class="tag" taget="_blank" href="/search/centos/1.htm">centos</a>
                                    <div>安装JDK1.7 
步骤1、解压tar包在当前目录 
[root@localhost usr]#tar -xzvf jdk-7u75-linux-x64.tar.gz 
步骤2:配置环境变量 
在etc/profile文件下添加 
export JAVA_HOME=/usr/java/jdk1.7.0_75 
export CLASSPATH=/usr/java/jdk1.7.0_75/lib 
</div>
                                </li>
                                <li><a href="/article/3324.htm"
                                       title="数据源架构模式之数据映射器" target="_blank">数据源架构模式之数据映射器</a>
                                    <span class="text-muted">home198979</span>
<a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E6%98%A0%E5%B0%84%E5%99%A8/1.htm">数据映射器</a><a class="tag" taget="_blank" href="/search/datamapper/1.htm">datamapper</a>
                                    <div>前面分别介绍了数据源架构模式之表数据入口、数据源架构模式之行和数据入口数据源架构模式之活动记录,相较于这三种数据源架构模式,数据映射器显得更加“高大上”。 
  
一、概念 
数据映射器(Data Mapper):在保持对象和数据库(以及映射器本身)彼此独立的情况下,在二者之间移动数据的一个映射器层。概念永远都是抽象的,简单的说,数据映射器就是一个负责将数据映射到对象的类数据。 
&nb</div>
                                </li>
                                <li><a href="/article/3451.htm"
                                       title="在Python中使用MYSQL" target="_blank">在Python中使用MYSQL</a>
                                    <span class="text-muted">pda158</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                                    <div>缘由     近期在折腾一个小东西须要抓取网上的页面。然后进行解析。将结果放到 
数据库中。     了解到 
Python在这方面有优势,便选用之。     由于我有台 
server上面安装有 
mysql,自然使用之。在进行数据库的这个操作过程中遇到了不少问题,这里 
记录一下,大家共勉。      
python中mysql的调用      
百度之后能够通过MySQLdb进行数据库操作。</div>
                                </li>
                                <li><a href="/article/3578.htm"
                                       title="单例模式" target="_blank">单例模式</a>
                                    <span class="text-muted">hxl1988_0311</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E4%BE%8B/1.htm">单例</a><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E4%BB%B6/1.htm">单件</a>
                                    <div>package com.sosop.designpattern.singleton;

/*
 * 单件模式:保证一个类必须只有一个实例,并提供全局的访问点
 * 
 * 所以单例模式必须有私有的构造器,没有私有构造器根本不用谈单件
 * 
 * 必须考虑到并发情况下创建了多个实例对象
 * */

/**
 * 虽然有锁,但是只在第一次创建对象的时候加锁,并发时不会存在效率</div>
                                </li>
                                <li><a href="/article/3705.htm"
                                       title="27种迹象显示你应该辞掉程序员的工作" target="_blank">27种迹象显示你应该辞掉程序员的工作</a>
                                    <span class="text-muted">vipshichg</span>
<a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a>
                                    <div>1、你仍然在等待老板在2010年答应的要提拔你的暗示。 2、你的上级近10年没有开发过任何代码。 3、老板假装懂你说的这些技术,但实际上他完全不知道你在说什么。 4、你干完的项目6个月后才部署到现场服务器上。 5、时不时的,老板在检查你刚刚完成的工作时,要求按新想法重新开发。 6、而最终这个软件只有12个用户。 7、时间全浪费在办公室政治中,而不是用在开发好的软件上。 8、部署前5分钟才开始测试。</div>
                                </li>
                </ul>
            </div>
        </div>
    </div>

<div>
    <div class="container">
        <div class="indexes">
            <strong>按字母分类:</strong>
            <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a
                href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a
                href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a
                href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a
                href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a
                href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a
                href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a
                href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a
                href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a>
        </div>
    </div>
</div>
<footer id="footer" class="mb30 mt30">
    <div class="container">
        <div class="footBglm">
            <a target="_blank" href="/">首页</a> -
            <a target="_blank" href="/custom/about.htm">关于我们</a> -
            <a target="_blank" href="/search/Java/1.htm">站内搜索</a> -
            <a target="_blank" href="/sitemap.txt">Sitemap</a> -
            <a target="_blank" href="/custom/delete.htm">侵权投诉</a>
        </div>
        <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved.
<!--            <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>-->
        </div>
    </div>
</footer>
<!-- 代码高亮 -->
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script>
<link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/>
<script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script>





</body>

</html>