当前位置:  互联网>综合
本页文章导读:
    ▪[Oracle] RAC 之 - 负载均衡      负载均衡是指把负载平均分配到集群中的各个节点,从而提高整体性能。Oracle RAC提供两种方式实现负载均衡,第一种是纯技术手段,即在用户连接时,根据系统当前的负载情况决定由哪个节.........
    ▪contiki学习笔记 clock部分      1.前言     contiki是一款小型开源,易于移植的多任务操作系统,专门为无线传感网设计,适合内存受限制的网络系统。国内的研究和应用还处于初级阶段,甚至还不知道这个contiki如何.........
    ▪wordpress setup_postdata 后 get_post() 失效的问题。      setup_postdata($post) 的作用把某个 post 声明成全局的 post, 这样可以方便的用 get_permalink() 等模板函数,在我做的项目中,发现这个函数不起作用:setup_postdata($item); var_dump(get_the_ID());// 这里是n.........

[1][Oracle] RAC 之 - 负载均衡
    来源: 互联网  发布时间: 2013-10-25

负载均衡是指把负载平均分配到集群中的各个节点,从而提高整体性能。Oracle RAC提供两种方式实现负载均衡,第一种是纯技术手段,即在用户连接时,根据系统当前的负载情况决定由哪个节点处理用户请求;第二种是面向业务,人为的把应用切分成很多service,通过某个service过来的连接请求都由某个节点处理。下面来具体看看这两种手段:


纯技术手段 (面向连接的负载均衡)

1. 客户端负载均衡

配置方法是在客户端tnsnames.ora文件中设置LOAD_BALANCE=YES,当客户端发起连接时,会从地址列表中随机选取一个,把连接请求随机分散给各个实例。
这个技术的最大缺点在于不能根据各个实例的真实负载情况来分散请求,太过粗糙,因此很少使用。

2. 服务器端负载均衡

服务器端负载均衡依赖于Listener收集的负载信息,在数据库运行过程中,pmon进程会收集系统的负载信息,定期更新至Listener中。如果你配置了Remote_listener参数,pmon进程不但能把负载信息注册到本地Listener,也可以注册到其它实例的Listener。这样有了pmon自动注册机制后,集群的每个节点的Listener都掌握了所有节点的负载信息,当收到客户端请求时,会把连接分配给负载最小的实例。

面向业务手段 (利用Service负载均衡)

上面介绍了纯技术手段进行的负载均衡,看起来很美好,但在实际使用中,可能会带来非常大的性能问题。大家都知道,RAC由于其share-disk的架构,它的性能很大程度上依赖于内存融合(Cache Fusion),纯技术手段无法知道业务的具体情况,因此它可能把同一个业务的连接分散到各个实例中,导致大量的内存融合,性能急剧下降。
如果我们换一种思路,把同一种应用程序的连接分到同一个实例上,比如A应用程序的连接都连在A实例,B应用程序的连接都连在B实例上,这样就能够有效地减少内存融合。
对应用的划分可以通过service实现,这需要DBA和开放人员合作,在了解业务特点的情况下配置service

作者:u010415792 发表于2013-6-14 14:57:48 原文链接
阅读:77 评论:0 查看评论

    
[2]contiki学习笔记 clock部分
    来源: 互联网  发布时间: 2013-10-25
1.前言
    contiki是一款小型开源,易于移植的多任务操作系统,专门为无线传感网设计,适合内存受限制的网络系统。国内的研究和应用还处于初级阶段,甚至还不知道这个contiki如何发音,也没有那么响亮的中文名称。如果还没有中文名称的话,就干脆叫它“康提基”(来自wifi百科)。
    本文先详细描述clock部分,clock部分是contiki运行的基础,和任务调度、网络协议都有关系。从clock部分的分析也可获得移植contiki的一般方法。
    平台说明
    硬件平台:CC2530    
    软件平台:IAR EW8051
2.相关文件
    contiki的组织结构应该是清晰的,但是由于开发者众多便出现了若干矛盾的地方。最严重的便是同名文件,出现最多的地方便是 contiki/cpu/中的某个CPU文件夹和contiki/platform/某个平台文件夹。其实两个文件夹中的文件放在任何一个文件夹中都可以,也可以实现相同的功能,关键是把功能看懂熟悉。
    2.1 clock.h
    clock.h位于contiki/core/sys。该文件为内核文件,定义了clock模块实现的接口和必要条件。最好保持不变。
    2.2 clcok.c文件
    有clock.h必有clock.c,该文件可以位于contiki/cpu/cc253x,也可以位于contiki/platform/cc2530dk。
    2.3 contiki-conf.h
    该文件中有非常多的定义,其中和clock模块有关的定义有两个
    /* Time type. */
    typedef unsigned short clock_time_t;

    /* Defines tick counts for a second. */
    #define CLOCK_CONF_SECOND		128

     clock_time_t被定义为无符号16位整数,在IAR平台int和short同为16位长度。CLOCK_CONF_SECOND为clock经历一秒的嘀嗒总数。选择128是因为clcok模块的参考时钟源为32768Hz。
3.clock模块的实现
    clock模块实现需要4个步骤。初始化函数clock_init(),获得时钟时间clock_time(),更新时钟中断函数,简单的软件延时函数clock_delay()。
    3.1 clock_init()函数
    在CC2530这个平台上,zigbee和contiki不约而同的选择睡眠定时器,睡眠定时器有一个计数寄存器和一个捕获寄存器组成,值得说明的是计数寄存器和捕获寄存器均由三个8位寄存器组成。在clcok_init()函数中初始化了CC2530的时钟,该部分对系统运行和rtimer模块都非常重要。
    具体代码如下:
void
clock_init(void)
{
  /* Make sure we know where we stand */
  CLKCONCMD = CLKCONCMD_OSC32K | CLKCONCMD_OSC;

  /* Stay with 32 KHz RC OSC, Chance System Clock to 32 MHz */
  CLKCONCMD &= ~CLKCONCMD_OSC;
  while(CLKCONSTA & CLKCONCMD_OSC);

  /* Tickspeed 500 kHz for timers[1-4] */
  CLKCONCMD |= CLKCONCMD_TICKSPD2 | CLKCONCMD_TICKSPD1;
  while(CLKCONSTA != CLKCONCMD);

  /*Initialize tick value*/
  timer_value = ST0;
  timer_value += ((unsigned long int) ST1) << 8;
  timer_value += ((unsigned long int) ST2) << 16;
  timer_value += TICK_VAL;
  ST2 = (unsigned char) (timer_value >> 16);
  ST1 = (unsigned char) (timer_value >> 8);
  ST0 = (unsigned char) timer_value;
  
  STIE = 1;		/* IEN0.STIE interrupt enable */
}

    几点说明
    1.32K时钟源选择片内RC。
    2.系统时钟源选择片外OSC,32MHz
    3.定时器时钟选择500K,和之后的rtimer有关
    4.系统运行时钟选择32M。
    5.休眠定时器的累加值为256。和时钟源23768有关。
    6.使能休眠定时器中断,勿忘其他函数中应启动全局中断。
CLKCONCMD寄存器配置可以查看下图。

    3.2 clock_timer()函数
    非常简单,返回一个counter即可。该counter应在睡眠定时器中不断增加。
CCIF clock_time_t
clock_time(void)
{
  return count;
}

    3.3睡眠定时器中断
    睡眠定时器中断主要做三件事情
    1.更新睡眠定时器捕获寄存器
    2.更新etimer模块(以后会详细分析etimer和rtimer)
    3.若经历一个整数秒,增累加second
    4.最后清除中断标志位。
    请查看代码:
  #pragma vector=ST_VECTOR
  __near_func __interrupt void clock_isr(void)
{
  DISABLE_INTERRUPTS();
  ENERGEST_ON(ENERGEST_TYPE_IRQ);

  timer_value = ST0;
  timer_value += ((unsigned long int) ST1) << 8;
  timer_value += ((unsigned long int) ST2) << 16;
  timer_value += TICK_VAL;
  ST2 = (unsigned char) (timer_value >> 16);
  ST1 = (unsigned char) (timer_value >> 8);
  ST0 = (unsigned char) timer_value;
  
  ++count;
  
  if(count % CLOCK_CONF_SECOND == 0) {
    ++seconds;
  }
  
  if(etimer_pending()
      && (etimer_next_expiration_time() - count - 1) > MAX_TICKS) {
    etimer_request_poll();
  }
  
  STIF = 0; /* IRCON.STIF */
  ENERGEST_OFF(ENERGEST_TYPE_IRQ);
  ENABLE_INTERRUPTS();
}

    3.4辅助部分clock_delay()和clock_seconds()

    
[3]wordpress setup_postdata 后 get_post() 失效的问题。
    来源: 互联网  发布时间: 2013-10-25
setup_postdata($post) 的作用把某个 post 声明成全局的 post, 这样可以方便的用 get_permalink() 等模板函数,在我做的项目中,发现这个函数不起作用:
setup_postdata($item);
var_dump(get_the_ID());// 这里是null或者是其他的id

不知到我的用法是不是不对。通过对函数的查看,我找到了临时的解决办法:
$globalpost = $GLOBALS['post'];
$GLOBALS['post'] = $item;
setup_postdata($item);
var_dump(get_the_ID());//这里就正常输出了。
$GLOBALS['post'] = $globalpost;

问题出在setup_postdata() 并没有对 $GLOBALS['post']赋值,所以我不知道是用法不对还是其他的问题。有明白的大佬帮忙解释一下,谢谢。
作者:wang350 发表于2013-6-17 11:00:42 原文链接
阅读:47 评论:0 查看评论

    
最新技术文章:
▪用户及权限基础 2---- Linux权限    ▪用户及权限基础 3---- Linux扩展权限    ▪git 简明教程(1) --创建及提交
▪背包 代码    ▪json对象的封装与解析    ▪01背包,完全背包,多重背包 ,模板代码
▪apache安装详解    ▪HDU 4668 Finding string (解析字符串 + KMP)    ▪《TCP-IP详解 卷1:协议》学习笔记(二)
▪《TCP-IP详解 卷1:协议》学习笔记(持续更新...    ▪windows下使用swig    ▪gensim试用
▪Linux Shell脚本编程--nc命令使用详解    ▪solr对跨服务器表联合查询的配置    ▪递归和非递归实现链表反转
▪Linux磁盘及文件系统管理 1---- 磁盘基本概念    ▪Cholesky Decomposition    ▪HTTP协议学习
▪用C语言写CGI入门教程    ▪用hdfs存储海量的视频数据的设计思路    ▪java多线程下载的实现示例
▪【原创】eAccelerator 一个锁bug问题跟踪    ▪hadoop学习之ZooKeeper    ▪使用cuzysdk web API 实现购物导航类网站
▪二维数组中的最长递减子序列    ▪内嵌W5100的网络模块WIZ812MJ--数据手册    ▪xss 跨站脚本攻击
▪RobotFramework+Selenium2环境搭建与入门实例    ▪什么是API    ▪用PersonalRank实现基于图的推荐算法
▪Logtype    ▪关于端口号你知道多少!    ▪Linux基本操作 1-----命令行BASH的基本操作
▪CI8.7--硬币组合问题    ▪Ruby on Rails 学习(五)    ▪如何使用W5300实现ADSL连接(二)
▪不允许启动新事务,因为有其他线程正在该会...    ▪getting start with storm 翻译 第六章 part-3    ▪递归求排列和组合(无重复和有重复)
▪工具类之二:RegexpUtils    ▪Coding Interview 8.2    ▪Coding Interview 8.5
▪素因子分解 Prime factorization    ▪C# DllImport的用法    ▪图的相关算法
▪Softmax算法:逻辑回归的扩展    ▪最小生成树---Kruskal算法---挑战程序设计竞赛...    ▪J2EE struts2 登录验证
▪任意两点间的最短路径---floyd_warshall算法    ▪Sqoop实现关系型数据库到hive的数据传输    ▪FFMPEG采集摄像头数据并切片为iPhone的HTTP Stream...
▪Ubuntu 13.04 – Install Jetty 9    ▪TCP/IP笔记之多播与广播    ▪keytool+tomcat配置HTTPS双向证书认证
编程技术其它 iis7站长之家
▪sre_constants.error: unbalanced parenthesis    ▪http headers    ▪Google MapReduce中文版
▪The TCP three-way handshake (connect)/four wave (closed)    ▪网站反爬虫    ▪Log4j实现对Java日志的配置全攻略
▪Bit Map解析    ▪Notepad 快捷键 大全    ▪Eclipse 快捷键技巧 + 重构
▪win7 打开防火墙端口    ▪Linux Shell脚本入门--awk命令详解    ▪Linux Shell脚本入门--Uniq命令
▪Linux(Android NDK)如何避免僵死进程    ▪http Content-Type一览表    ▪Redis实战之征服 Redis + Jedis + Spring (二)
▪Tomcat7.0.40 基于DataSourceRealm的和JDBCRealm的资源...    ▪利用SQOOP将ORACLE到HDFS    ▪django输出 hello world
▪python re    ▪unity3D与网页的交互    ▪内存共享基本演示
▪python join    ▪不再为无限级树结构烦恼,且看此篇    ▪python实现变参
▪打开文件数限制功能不断地制造问题    ▪Arduino Due, Maple and Teensy3.0 的 W5200性能测试    ▪Selenium实例----12306网站测试
▪基于协同过滤的推荐引擎    ▪C4.5决策树    ▪C#HTTP代理的实现之注册表实现
▪nosql和关系型数据库比较?    ▪如何快速比较这两个字符串是否相等?    ▪hdoj 1863 畅通工程 最小生成树---prime算法
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3