【boa源码分析】【weixin导航源码】【apk源码 编译】algo源码

时间:2024-11-23 13:34:43 来源:商城静态页面源码 分类:焦点

1.完整的源码boa源码分析C++库函数源代码哪里有?
2.STL 源码剖析:sort
3.php-beast 解密与加密 操作过程(详细)
4.UE 打包引擎源码
5.jedis 和 strpin-data-redis 哪一个好

algo源码

完整的C++库函数源代码哪里有?

       去官网吧

       blogs.com/KisonDu/p/1... iOS和tvOS开发要求 打包插件必须安装vs ? github.com/EpicGames/Un...

jedis 和 strpin-data-redis 哪一个好

       ä¹‹å‰ä¸€ç›´æ²¡ä»”细看过ShardedJedis的代码,最近遇到了shard后集群扩容后的数据迁移问题。

       ä»Šå¤©åœ¨çœ‹ShardedJedis源码的时候,发现ShardedJedis并没有使用节点的Ip和port做hash,而是用的instance的顺序或者name,太赞了。

       private void initialize(List<S> shards) {

        nodes = new TreeMap<Long, S>();

       for (int i = 0; i != shards.size(); ++i) {

        final S shardInfo = shards.get(i);

        if (shardInfo.getName() == null)

        for (int n = 0; n < * shardInfo.getWeight(); n++) {

        nodes.put(this.algo.hash("SHARD-" + i + "-NODE-" + n),

        shardInfo);

        }

        else

        for (int n = 0; n < * shardInfo.getWeight(); n++) {

        nodes.put(

        this.algo.hash(shardInfo.getName() + "*"

        + shardInfo.getWeight() + n), shardInfo);

        }

        resources.put(shardInfo, shardInfo.createResource());

        }

        }

       é…ç½®çš„时候也非常简单:

       <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">

        <property name="maxTotal" value=""/>

        <property name="maxIdle" value=""/>

        <property name="minIdle" value="1"/>

        <property name="maxWaitMillis" value=""/>

        <property name="testOnBorrow" value="true"/>

        <property name="testOnReturn" value="true"/>

        <property name="testWhileIdle" value="true"/>

        </bean>

        <bean id="shardedJedisPool" class="redis.clients.jedis.ShardedJedisPool" destroy-method="destroy">

        <constructor-arg ref="jedisPoolConfig"/>

        <constructor-arg>

        <list>

        <bean class="redis.clients.jedis.JedisShardInfo">

        <constructor-arg value=".0.0.1"/>

        <constructor-arg type="int" value=""/>

        <constructor-arg value="instance:"/>

        </bean>

        <bean class="redis.clients.jedis.JedisShardInfo">

        <constructor-arg value=".0.0.1"/>

        <constructor-arg type="int" value=""/>

        <constructor-arg value="instance:"/>

        </bean>

        <bean class="redis.clients.jedis.JedisShardInfo">

        <constructor-arg value=".0.0.1"/>

        <constructor-arg type="int" value=""/>

        <constructor-arg value="instance:"/>

        </bean>

        </list>

        </constructor-arg>

        </bean>

       ä¸€å¼€å§‹ä½ å¯ä»¥è®¾ç½®è¶³å¤Ÿå¤šçš„instance,数据扩容的时候,只需要将几个instance的数据copy到别的机器上。

       ç„¶åŽä¿®æ”¹é…ç½®æ–‡ä»¶çš„ip和端口即可。很方便吧?

       å¦å¤–,Jedis还提供了对jedis sentinel pool的封装,所以发生主从切换的时候,web server都不需要重新配置和deploy。高可用性的极佳体现啊。

       @Autowired private JedisSentinelPool pool;

       public void mymethod() {

        Jedis jedis = null;

        try {

        jedis = pool.getResource();

        jedis.hset(....

        } catch (JedisException je) {

        throw je;

        } finally {

        if (jedis != null) pool.returnResource(jedis);

        }

        }

       spring bean的配置:

       <bean id="redisSentinel" class="redis.clients.jedis.JedisSentinelPool">

        <constructor-arg index="0" value="mymaster" />

        <constructor-arg index="1">

        <set>

        <value>hostofsentinel:</value>

        </set>

        </constructor-arg>

        <constructor-arg index="2" ref="jedisPoolConfig" />

        </bean>