??xml version="1.0" encoding="utf-8" standalone="yes"?>日本中文字幕在线一区,福利视频一区二区三区,精品99在线http://www.aygfsteel.com/gdufo/zh-cnSun, 18 May 2025 21:39:10 GMTSun, 18 May 2025 21:39:10 GMT60 Mondrian 使用教程 http://www.aygfsteel.com/gdufo/archive/2016/02/06/429302.htmlgdufogdufoSat, 06 Feb 2016 10:18:00 GMThttp://www.aygfsteel.com/gdufo/archive/2016/02/06/429302.html

http://blog.csdn.net/evangel_z/article/details/29585571

通过本教E,(zhn)将了解C么是Mondiran,及如何将mondrian支持d到?zhn)的Java Web目中?/p>

在阅L教程之前Q?zhn)可能需要掌握以下概念:(x)

OLAP(联机分析处理On-Line Analytical Processing)Q?zhn)可以通过阅读ROLAP的概?pptx来了解OLAP

MDX多维表达式,(zhn)可以通过阅读MDX的基本语法及概念.pptx来了解MDX


1. Mondrian是什么?

Mondrian是一个开源项目。一个用Java写成的OLAP引擎。它用MDX语言实现查询Q从关系数据?RDBMS)中读取数据。然后经qJava API以多l的方式对结果进行展C?/p>

Mondrian的用方式同JDBC驱动cM。可以非常方便的与现有的Web目集成

1.1 Mondrian的体pȝ?Architecture)

Mondrian OLAP pȝ由四个层l成; 从最l用户到数据中心, 序? 
1.1.1 表现?the presentation layer)
1.1.2 l度?the dimensional layer)
1.1.3 集合?the star layer)
1.1.4 存储?the storage layer)
l构囑֦?


1.1.1 表现?the presentation layer)

表现层决定了最l用户将在他们的昄器上看到什? 及他们如何同pȝ产生交互?/p>

有许多方法可以用来向用户昄多维数据? ?pivot ?(一U交互式的表), pie, line 和图?bar charts)。它们可以用Swing ?JSP来实现?/p>

表现层以多维"文法(grammar)(l、度量、单?”的Ş式发出查询,然后OLAP服务器返回结果?/p>

1.1.1.1 Jpivot表现?br />

JPivot 是Mondrian的表现层TagLibQ一直保持着良好的开发进度?

(zhn)可以通过讉Kjpivot的官方网?a target="_blank" >http://jpivot.sourceforge.net/以获得更多的帮助及支?/p>

jpivot使用XML/ XSLT渲染OLAP报表:

JPivot 使用 WCF (Web Component Framework)  Q基于XML/XSLT来渲染Web UIlg。这使它昑־十分另类。不q,OLAP报表q种非常复杂但又有规律可循的东西Q最适合使用XSLT来渲染?br />

jpivot完全ZJSP+TagLibQ?br />

JPivot另外一个可能Z惯的地方是它完全Ztaglib而不是大家熟(zhn)的MVC模式?/p>

但它可以很方便的多l数据展C给最l用P如下表格Q?br />


jpivot其实是一个自定义jsp的标{ֺ。它ZXML/XSLT配置来生成相应的html。所q的是,我们q不需要了解太多关于这斚w的内容,我们只要掌握相应jsp标签的用即可?/p>

在本教程的实例中Q我们将?x)对一些常用到的jpivot标签q行讲解?/p>

(zhn)还可以通过汉化WEB-INF/jpivot下的xml文g来完成对jpivot的汉化工?/p>

1.1.2 l度?the dimensional layer)

l度层用来解析、验证和执行MDX查询要求?/p>

一个MDX查询要通过几个阶段来完成:(x)首先是计坐标uQaxesQ,再者计坐标uaxes 中cell的倹{?/p>

 Z提高效率Q维度层把要求查询的单元成批发送到集合层,查询转换器接受操作现有查询的hQ而不是对每个h都徏立一个MDX 声明?br />

1.1.3 集合?the star layer)

集合层负责维护和创徏集合~存Q一个集合是在内存中~存一l单元| q些单元值由一l维的值来定?/p>

l度层对q些单元发出查询hQ如果所查询的单元g在缓存中Q则集合理?aggregation manager)?x)向存储层发出查询请?br />

1.1.4 存储?the storage layer)

存储层是一个关pd数据?RDBMS)。它负责创徏集合的单元数据,和提供维表的成员?br />

1.2 API

Mondrian 为客L(fng)提供一个用于查询的API

因ؓ(f)到目前ؓ(f)?q没有一个通用的用于OLAP查询的API,因此Mondrian提供了它U有的API.

管如此,一个常使用JDBC的h同样发现它很熟(zhn)?不同之处仅在于它使用的是MDX查询语言,而非SQL

下面的java片段展示了如何连接到Mondrian,然后执行一个查?最后打印结?

  1. import mondrian.olap.*;  
  2.     import java.io.PrintWriter;  
  3.     Connection connection = DriverManager.getConnection("Provider=mondrian;"   
  4.             +"Jdbc=jdbc:odbc:MondrianFoodMart;"   
  5.             +"Catalog=/WEB-INF/FoodMart.xml;",null,false);  
  6.     Query query = connection.parseQuery("SELECT {[Measures].[Unit Sales], [Measures].[Store Sales]} on columns,"   
  7.             +" {[Product].children} on rows "   
  8.             +"FROM [Sales] " +"WHERE ([Time].[1997].[Q1], [Store].[CA].[San Francisco])");  
  9.     Result result = connection.execute(query);  
  10.     result.print(new PrintWriter(System.out));  

与JDBCcM,一个Connection由DriverManager创徏,Query 对象cM于JDBC 的Statement,它通过传递一个MDX语句来创?Result对象cM于JDBC的ResultSet,只不q它里面保存的是多维数据

(zhn)可以通过查看Mondrian帮助文档里的javadoc来获取更多关于Mondrian API的资?br />

通过上面的介l,(zhn)应该对mondrian的体pL一个基本的了解?/p>

下面我们通过一个简单的例子来加深?zhn)的理解?br />


2. 一个简单的Mondrian例子

现在让我们用一个简单的例子来说明将Mondrian支持d到?zhn)java web的具体步骤?br />

2.1 准备开发工具及环境

本测试需要的环境Q?br /> 操作pȝQWindows 2000;
Web服务器:(x)tomcat6.0Q?br /> 关系数据库:(x)sql server 2000Q?br /> 开发工P(x)eclipse + myeclipse;
      JDBC驱动Qjtds-1.2.2;

         (zhn)可以在http://tomcat.apache.org/上下载到tomcat的最新版本及帮助Q?br />       (zhn)可以在http://www.myeclipseide.com/上下载到myeclipse的最新版本及相应的eclipse开发^台版?br />

2.2 准备Mondrian资源Q?/h2>

?a target="_blank" >http://sourceforge.net/projects/mondrian/下蝲Mondrian的最新版?目前版本?.0Q大U有50MQ大??br />


2.3 创徏目

启动eclipse?/p>

在eclipse中新创徏一个web目Q名为Tezz。注意需要加入JSTL支持?/p>

具体步骤如下Q?/p>

2.3.1  打开新徏web目对话?/h3>



一个新目Tezz的文件结构如?


2.4 d必须的文?/h2>

下载的压羃包进行解压。完成后Q进入文件夹可以看到如下目录l构。双击进入lib文g夏V?br />


Lib文gҎ(gu)如下内容Q注意到q里的mondrian.war文g是一个可直接布v的项目,我们需要将它解压,然后从中取出我们所需要的文g?其扩展名改成zipQ然后直接右键解?


q入解压后的文g夹,选中jpivot、wcf二个文g夹及busy.jsp、error.jsp、testpage.jsp三个文gQ我们需要将q些资源复制到我们测试项目的WebRoot文g夹中。按ctrl+C键复制?br />


注:(x)jpivot、wcfq两个文件夹包含mondrian使用的图像和css文g。Busy.jsp昄{待面、error.jsp昄出错面、testpage.jspq文件的用处在后面介绍?/p>

切换到eclipse界面Q在我们的Tezz目的WebRoot文g夹处叛_鼠标Q在弹出的菜单中选择Paste(_脓(chung))卛_


_脓(chung)完成后的目l构如下


注意Q因为我们还未将所有资料复制到目中,因此eclipse?x)显C错误图?br />

最后进入WEB-INF文g?在上面步骤中解压的项目文件mondrian.war?Q选中jpivot、lib、wcfq三个文件夹Q同样需要复制它们到试目的WEB-INF文g夹中?br />


Jpivot、wcfq两个文件夹包含jpivot和wcf用于生成用户界面的配|文?*.xml?.xsl)及标{文?*.tld)的定义。Lib文g夹包含的是mondrian所要用的java包?br />

切换到eclipse界面Q在我们的Tezz目的WebRoot文g夹处叛_鼠标Q在弹出的菜单中选择Paste(_脓(chung))


xMondrian的支持添加完毕,下面我们配|web.xmlQ让我们的项目能够用到mondrian的功能?br />

2.5 配置web.xml

用eclipse打开我们在上面解压的布v目的WEB-INF/web.xml文g


qo?filter)

复制如下所C的xml代码到我们测试项目Tezz的web.xml文g中?/p>

作用Q这个过滤器在访?testpage.jsp前被调用。它被设计成jpivot的前端控制器Q用于判断ƈ用L(fng)h发送到某个面?/p>

注:(x)在实际项目中可以使用(zhn)自己定义的servlet或用其他技术来替代它以提供更多的功?br />

  1.  <filter>  
  2.     <filter-name>JPivotController</filter-name>  
  3.     <filter-class>com.tonbeller.wcf.controller.RequestFilter</filter-class>  
  4.     <init-param>  
  5.       <param-name>indexJSP</param-name>  
  6.       <param-value>/index.html</param-value>  
  7.       <description>如果q是一个新的会(x)话,则{到此面</description>  
  8.     </init-param>  
  9.     <init-param>  
  10.       <param-name>errorJSP</param-name>  
  11.       <param-value>/error.jsp</param-value>  
  12.       <description>出错时显C的面</description>  
  13.     </init-param>  
  14.     <init-param>  
  15.       <param-name>busyJSP</param-name>  
  16.       <param-value>/busy.jsp</param-value>  
  17.       <description>q个面用于当用L(fng)M个查询时Q在q个查询q未结果还回给用户时所昄的界?lt;/description>  
  18.     </init-param>  
  19. </filter>  
  20.   
  21.   <filter-mapping>  
  22.     <filter-name>JPivotController</filter-name>  
  23.     <url-pattern>/testpage.jsp</url-pattern>  
  24.   </filter-mapping>  
复制下面的listener到我们的web.xml文g?用于初始化一些资?
  1. <listener>  
  2.     <listener-class>mondrian.web.taglib.Listener</listener-class>  
  3.   </listener>  
  4.   
  5.   <!– 资源初始?->  
  6.   <listener>  
  7.     <listener-class>com.tonbeller.tbutils.res.ResourcesFactoryContextListener</listener-class>  
  8.   </listener>  
Print  servlet,该servlet用于数据生成Excel文g或pdf文gq返回给用户Q如果?zhn)需要用到该功能Q则需要将其copy到?zhn)目的web.xml文g?
  1. <servlet>  
  2.     <servlet-name>Print</servlet-name>  
  3.     <display-name>Print</display-name>  
  4.     <description>Default configuration created for servlet.</description>  
  5.     <servlet-class>com.tonbeller.jpivot.print.PrintServlet</servlet-class>  
  6.   </servlet>  
  7.  <servlet-mapping>  
  8.     <servlet-name>Print</servlet-name>  
  9.     <url-pattern>/Print</url-pattern>  
  10.   </servlet-mapping>  
MDXQueryServlet用于接受q执行一个MDX查询Q然后将该查询以Html表格的Ş式返回。其中的参数connectString用于指定q接到数据库的字W串Q例如用jtds驱动q接到sql server 2000的字W串如下Q?

Provider=mondrian;Jdbc=jdbc:jtds:sqlserver://localhost/Tezz;user=sa;password=123456;Catalog=/WEB-INF/queries/tezz.xml;JdbcDrivers=net.sourceforge.jtds.jdbc.Driver; 

如果(zhn)需要用到该功能Q则需要将其copy到?zhn)目的web.xml文g中?/p>

  1. <servlet>  
  2.     <servlet-name>MDXQueryServlet</servlet-name>  
  3.     <servlet-class>mondrian.web.servlet.MDXQueryServlet</servlet-class>  
  4.     <init-param>  
  5.       <param-name>connectString</param-name>  
  6.       <param-value>@mondrian.webapp.connectString@</param-value>  
  7.     </init-param>  
  8.   </servlet>  
  9.  <servlet-mapping>  
  10.     <servlet-name>MDXQueryServlet</servlet-name>  
  11.     <url-pattern>/mdxquery</url-pattern>  
  12.   </servlet-mapping>  
DisplayChart 和GetChart q两个Servlet 用于生成图表和将其显C给最l用P如果(zhn)需要用到该功能Q则需要将其copy到?zhn)目的web.xml文g中?
  1. <!-- jfreechart provided servlet -->  
  2.   <servlet>  
  3.     <servlet-name>DisplayChart</servlet-name>  
  4.     <servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>  
  5.   </servlet>  
  6.   <!-- jfreechart provided servlet -->  
  7.   <servlet>  
  8.     <servlet-name>GetChart</servlet-name>  
  9.     <display-name>GetChart</display-name>  
  10.     <description>Default configuration created for servlet.</description>  
  11.     <servlet-class>com.tonbeller.jpivot.chart.GetChart</servlet-class>  
  12.   </servlet>  
  13. <servlet-mapping>  
  14.     <servlet-name>DisplayChart</servlet-name>  
  15.     <url-pattern>/DisplayChart</url-pattern>  
  16.   </servlet-mapping>  
  17. <servlet-mapping>  
  18.     <servlet-name>GetChart</servlet-name>  
  19.     <url-pattern>/GetChart</url-pattern>  
  20.   </servlet-mapping>  
它们用于向用L(fng)成和昄如下所C的各种图表Q?

最后添加以下标{ֺ到我们的web.xml目中即?/p>

  1. <taglib>  
  2.    <taglib-uri>http://www.tonbeller.com/wcf</taglib-uri>  
  3.    <taglib-location>/WEB-INF/wcf/wcf-tags.tld</taglib-location>  
  4.  </taglib>  
  5.   
  6.  <taglib>  
  7.    <taglib-uri>http://www.tonbeller.com/jpivot</taglib-uri>  
  8.    <taglib-location>/WEB-INF/jpivot/jpivot-tags.tld</taglib-location>  
  9.  </taglib>  
到这里,(zhn)应该对mondrian在web.xml的配|有一定的了解Qƈ可按需要添加相应的功能?

接下来我们将要创建本例子所要用到的表格及数据?/p>

2.6 准备试用表

本例使用的表l构如下所C:(x)


Sale是事实表Q它有两个维Q客?customer)l和׃个表l成的?Product)l?/p>

表格的创建很单,(zhn)只需要将下面的sql语句导入数据库即?/p>

2.6.1 使用以下sql语句创徏?/h3>
  1. /**销售表*/  
  2. create table Sale (  
  3.     saleId int not null,  
  4.     proId int null,  
  5.     cusId int null,   
  6.     unitPrice float null,    --单h(hun)  
  7.     number int null,     --数量  
  8.     constraint PK_SALE primary key (saleId)  
  9. )  
  10.     /**用户?/  
  11. create table Customer (  
  12.     cusId int not null,  
  13.     gender char(1) null,    --性别  
  14.     constraint PK_CUSTOMER primary key (cusId)  
  15. )  
  16. /**产品?/  
  17. create table Product (  
  18.     proId int not null,  
  19.     proTypeId int null,  
  20.     proName varchar(32) null,  
  21.     constraint PK_PRODUCT primary key (proId)  
  22. )  
  23. /**产品cd?/  
  24. create table ProductType (  
  25.     proTypeId int not null,  
  26.     proTypeName varchar(32) null,  
  27.     constraint PK_PRODUCTTYPE primary key (proTypeId)  
  28. )  

2.6.2 使用以下sql语句导入数据

  1. insert into Customer(cusId,gender) values(1,'F')  
  2. insert into Customer(cusId,gender) values(2,'M')  
  3. insert into Customer(cusId,gender) values(3,'M')  
  4. insert into Customer(cusId,gender) values(4,'F')  
  5. insert into producttype(proTypeId,proTypeName) values(1,'?sh)?)  
  6. insert into producttype(proTypeId,proTypeName) values(2,'数码')  
  7. insert into producttype(proTypeId,proTypeName) values(3,'家具')  
  8. insert into product(proId,proTypeId,proName) values(1,1,'z衣?)  
  9. insert into product(proId,proTypeId,proName) values(2,1,'?sh)视?)  
  10. insert into product(proId,proTypeId,proName) values(3,2,'mp3')  
  11. insert into product(proId,proTypeId,proName) values(4,2,'mp4')  
  12. insert into product(proId,proTypeId,proName) values(5,2,'数码相机')  
  13. insert into product(proId,proTypeId,proName) values(6,3,'椅子')  
  14. insert into product(proId,proTypeId,proName) values(7,3,'桌子')  
  15. insert into sale(saleId,proId,cusId,unitPrice,number) values(1,1,1,340.34,2)  
  16. insert into sale(saleId,proId,cusId,unitPrice,number) values(2,1,2,140.34,1)  
  17. insert into sale(saleId,proId,cusId,unitPrice,number) values(3,2,3,240.34,3)  
  18. insert into sale(saleId,proId,cusId,unitPrice,number) values(4,3,4,540.34,4)  
  19. insert into sale(saleId,proId,cusId,unitPrice,number) values(5,4,1,80.34,5)  
  20. insert into sale(saleId,proId,cusId,unitPrice,number) values(6,5,2,90.34,26)  
  21. insert into sale(saleId,proId,cusId,unitPrice,number) values(7,6,3,140.34,7)  
  22. insert into sale(saleId,proId,cusId,unitPrice,number) values(8,7,4,640.34,28)  
  23. insert into sale(saleId,proId,cusId,unitPrice,number) values(9,6,1,140.34,29)  
  24. insert into sale(saleId,proId,cusId,unitPrice,number) values(10,7,2,740.34,29)  
  25. insert into sale(saleId,proId,cusId,unitPrice,number) values(11,5,3,30.34,28)  
  26. insert into sale(saleId,proId,cusId,unitPrice,number) values(12,4,4,1240.34,72)  
  27. insert into sale(saleId,proId,cusId,unitPrice,number) values(13,3,1,314.34,27)  
  28. insert into sale(saleId,proId,cusId,unitPrice,number) values(14,3,2,45.34,27)  

2.7 建立模式(schema)文g

一个模式定义了一个多l数据库. 它包含一个逻辑模型(logical model)、一l数据立?consisting of cubes)、层?hierarchies)、和成员(members), q映到物理模型(关系数据?上?/p>

单的_配置一个模式就是配|一个关pL据结构到多维数据l构的映?/p>

注:(x)关于mondrian的模式及模式的配|,(zhn)可以通过阅读mondrian的基本模?pptx来了解。这里我们只对其q行了简单介l?/p>

2.7.1 创徏模式文gQ?/h3>

模式文g的创建很单。首先在WEB-INF下新Z个queries的文件夹Q然后在该文件夹下创Z个名为tezz.xml的文件。再按下面的步骤xml元素d入即可?/p>


2.7.2 配置模式文gQ?/h3>

2.7.2.1 d数据立方Sales:


2.7.2.2 d数据立方Sales的维:


d产品l?因ؓ(f)产品l由两个表连接而成Q因此比客户l复杂些)Q?br />


d度量(共有三个度量:数量、^均单价和总销售额)Q?br />


最后生成的tezz.xml文g内容如下Q?br />

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <Schema name="tezz">  
  3. <Cube name="Sales">  
  4.     <!-- 事实?fact table) -->  
  5.     <Table name="sale" />  
  6.     <!-- 客户l?nbsp;-->  
  7.     <Dimension name="客户性别" foreignKey="cusId">  
  8.         <Hierarchy hasAll="true" allMemberName="所有性别" primaryKey="cusId">  
  9.             <Table name="Customer"></Table>  
  10.             <Level name="gender" column="gender"></Level>  
  11.         </Hierarchy>  
  12.     </Dimension>  
  13.     <!-- 产品cdl?nbsp;-->  
  14.     <Dimension name="产品cd" foreignKey="proId">  
  15.         <Hierarchy hasAll="true" allMemberName="所有? primaryKey="proId" primaryKeyTable="product">  
  16.             <join leftKey="proTypeId" rightKey="proTypeId">  
  17.                 <Table name="product" />  
  18.                 <Table name="producttype"></Table>  
  19.             </join>  
  20.             <Level name="proTypeId" column="proTypeId"  
  21.                 nameColumn="proTypeName" uniqueMembers="true" table="producttype" />  
  22.             <Level name="proId" column="proId" nameColumn="proName"  
  23.                 uniqueMembers="true" table="product" />  
  24.         </Hierarchy>  
  25.     </Dimension>  
  26.     <Measure name="数量" column="number" aggregator="sum" datatype="Numeric" />  
  27.     <Measure name="总销售额" aggregator="sum" formatString="K?,##0.00">  
  28.         <!-- unitPrice*number所得值的?nbsp;-->  
  29.         <MeasureExpression>  
  30.             <SQL dialect="generic">(unitPrice*number)</SQL>  
  31.         </MeasureExpression>  
  32.     </Measure>  
  33.     <CalculatedMember name="q_单h(hun)" dimension="Measures">  
  34.         <Formula>[Measures].[总销售额] / [Measures].[数量]</Formula>  
  35.         <CalculatedMemberProperty name="FORMAT_STRING" value="K?,##0.00" />  
  36.     </CalculatedMember>  
  37. </Cube>  
  38. </Schema>  

2.8 ~写MDX查询语句

在模式文件定义完成之后,我们可以根据它来编写相应MDX查询语句了?/p>

本例所用的MDX语句如下Q?br />

2.9 创徏查询文g

现在我们创Z个jsp文gQ该jsp使用jpivot的mondrianQuery标签来完成查询?/p>

该文件最后将被testpage.jsp使用?/p>

?WEB-INF/queries文g夹下面创Z名ؓ(f)tezz的jsp文g。该jsp包含如下内容Q?br />


2.10 布v目

x我们已经全部配置完成Q文件结构如下:(x)


布v目Q启动TomcatQ在览器上输入http://localhost:8080/Tezz/testpage.jsp?query=tezz卛_看到如下l果:


?testpage.jsp?query=tezzQ这里的tezz卛_我们创徏的用于查询jsp文g名称


3.  testpage.jsp的流E?/h1>

testpage.jsp文g用于发出查询及将l果转换成html格式。它使用一ljsp标签来完成这些复杂的工作?/p>

在本教程的最后一章里Q我们对testpage.jsp的流E及用到的主要标{进行简单介l?/p>

3.1 wcf:include标签Q?/h2>


3.2 jp:table标签Q?/h2>

<jp:table id="table01" query="#{query01}"/>

jp:tableҎ(gu)query01中保存的l果Q领域数据)准备昄OLAP表格所需的数据(昄数据Q?br />

<wcf:render ref="table01" xslUri="/WEB-INF/jpivot/table/mdxtable.xsl"/>

Ҏ(gu)table01的结果,使用mdxtable.xsl中的配置Q渲染出OLAP表格?br />

3.3 其他jp、wcf标签

同样Q其他jp标签Q如<jp:chart id=“chart01“ ---/>{标{և备待渲染的数据,再由相应?lt;wcf:render ref=“chart01” ---/>标签它们渲染成html格式?/p>

q样Q用户将在浏览器上看到最l的l果?/p>

xQ一个完整的mondrian查询l束?/p>




gdufo 2016-02-06 18:18 发表评论
]]>
Java调用MQ队列 http://www.aygfsteel.com/gdufo/archive/2015/08/26/426990.htmlgdufogdufoWed, 26 Aug 2015 04:07:00 GMThttp://www.aygfsteel.com/gdufo/archive/2015/08/26/426990.htmlhttp://blog.csdn.net/ozwarld/article/details/7735915

IBM MQ 6.0中设|两个队列,Q远E队列、通道之类都不讄Q?/p>

队列理器是XIR_QM_1502

队列名称是ESBREQ

IP地址?0.23.117.134Q远E的一台电(sh)脑,跟我的电(sh)脑不在一个局域网内)

端口1414

CCSID 1208


MQ配置可以参考这个,有配?a >http://wenku.baidu.com/view/06d108d0360cba1aa811daa3.html

E序如下Q发送线E两个,接收U程一个。接收完毕后q束?/p>


  1. /* 
  2.  * 创徏日期 2012-7-10 
  3.  * 
  4.  * TODO 要更Ҏ(gu)生成的文件的模板Q请转至 
  5.  * H口 Q?nbsp;首选项 Q?nbsp;Java Q?nbsp;代码样式 Q?nbsp;代码模板 
  6.  */  
  7. package yerasel;  
  8.   
  9. /** 
  10.  * @author Fenglb E-mail:56553655@163.com 
  11.  * @version 创徏旉Q?009-4-30 下午04:13:38 c说?nbsp;
  12.  */  
  13.   
  14. import java.io.IOException;  
  15. import com.ibm.mq.MQC;  
  16. import com.ibm.mq.MQEnvironment;  
  17. import com.ibm.mq.MQException;  
  18. import com.ibm.mq.MQGetMessageOptions;  
  19. import com.ibm.mq.MQMessage;  
  20. import com.ibm.mq.MQPutMessageOptions;  
  21. import com.ibm.mq.MQQueue;  
  22. import com.ibm.mq.MQQueueManager;  
  23.   
  24. interface SomeConstants {  
  25.     String qManager = "XIR_QM_1502";//"XIR_QM"; //QueueManager name  
  26.     String qName = "ESBREQ";// Queue Name  
  27.     String strIP = "10.23.117.134";//"10.24.28.139";//"10.24.28.102";  
  28.     int iPort = 1502;//1414;  
  29.     String strChl = "SYSTEM.DEF.SVRCONN";// Server-Connection Channel  
  30.     int iCCSID = 1208;  
  31. }  
  32.   
  33. class Sender implements Runnable, SomeConstants {  
  34.     public void run() {  
  35.         sendMessage();  
  36.     }  
  37.   
  38.     public void sendMessage() {  
  39.   
  40.         String name = Thread.currentThread().getName();  
  41.         System.out.println("q入U程" + name);  
  42.   
  43.         MQQueueManager qMgr = null;  
  44.         // configure connection parameters  
  45.   
  46.         MQEnvironment.hostname = strIP;  
  47.         // Server name or IP  
  48.         MQEnvironment.port = iPort;  
  49.         MQEnvironment.channel = strChl;  
  50.         MQEnvironment.CCSID = iCCSID;  
  51.   
  52.         // javaE序q接mq的方式有两种Q一是客h方式Q一是绑定方式,  
  53.         // 默认是客h方式Q当mq部v在本地的时候,需要用l定方式  
  54.         // 本机IP?0.24.28.139q接10.23.117.134的时候不需要下?nbsp; 
  55.         //MQEnvironment.properties.put(MQC.TRANSPORT_PROPERTY,  
  56.         //MQC.TRANSPORT_MQSERIES_BINDINGS);  
  57.   
  58.         // Create a connection to the QueueManager  
  59.         System.out.println(name + " Connecting to queue manager: " + qManager);  
  60.         try {  
  61.             qMgr = new MQQueueManager(qManager);  
  62.             // Set up the options on the queue we wish to open  
  63.             int openOptions = MQC.MQMT_REQUEST | MQC.MQPMO_NEW_MSG_ID  
  64.                     | MQC.MQOO_OUTPUT | MQC.MQOO_FAIL_IF_QUIESCING  
  65.                     | MQC.MQOO_INPUT_AS_Q_DEF;  
  66.             // Now specify the queue that we wish to open and the open options  
  67.             System.out.println(name + " Accessing queue: " + qName);  
  68.             MQQueue queue = qMgr.accessQueue(qName, openOptions);  
  69.             // Define a simple WebSphere MQ Message ...  
  70.   
  71.             // Specify the default put message options  
  72.             MQPutMessageOptions pmo = new MQPutMessageOptions();  
  73.   
  74.             // Put the message to the queue  
  75.             System.out.println(name + " Sending a message...");  
  76.   
  77.             MQMessage msg = new MQMessage();  
  78.             msg.messageId = "MSGID".getBytes();  
  79.             msg.messageType = MQC.MQMT_REQUEST;  
  80.             msg.replyToQueueName = "ESBREQ";  
  81.   
  82.             // 在此试一?nbsp;mq 的传输次?nbsp; 
  83.             for (int j = 1; j < 5; j++) {  
  84.                 msg.messageSequenceNumber = j;  
  85.                 // write some text in UTF8 format  
  86.                 try {  
  87.                     String str = "Salemetsizbe Yerasel";  
  88.                     str = str + " " + j;  
  89.                     msg.writeUTF(str);  
  90.                     queue.put(msg, pmo);  
  91.                     msg.clearMessage();  
  92.                     System.out.println(name + " putting the message... " + j);  
  93.                 } catch (MQException mqe) {  
  94.                     mqe.printStackTrace();  
  95.                     break;  
  96.                 } catch (IOException e1) {  
  97.                     e1.printStackTrace();  
  98.                 }  
  99.             }  
  100.             qMgr.commit();  
  101.             System.out.println(name + " Done!");  
  102.             System.out.println("==========");  
  103.             System.out.println("");  
  104.         } catch (MQException e) {  
  105.             e.printStackTrace();  
  106.         }  
  107.     }  
  108. }  
  109.   
  110. class Receiver implements Runnable, SomeConstants {  
  111.   
  112.     public void run() {  
  113.         recvMessage();  
  114.     }  
  115.   
  116.     public void recvMessage() {  
  117.   
  118.         String name = Thread.currentThread().getName();  
  119.           
  120.         try {  
  121.             Thread.sleep(1000);  
  122.             MQQueueManager qMgr = null;  
  123.   
  124.               
  125.             System.out.println("q入U程" + name);  
  126.   
  127.             System.out.println(name + " Connecting to queue manager: "  
  128.                     + qManager);  
  129.             qMgr = new MQQueueManager(qManager);  
  130.             // 讄要q接的队列属?nbsp; 
  131.             // Note. The MQC interface defines all the constants used by the  
  132.             // WebSphere MQ Java programming interface  
  133.             // (except for completion code constants and error code constants).  
  134.             // MQOO_INPUT_AS_Q_DEF:Open the queue to get messages using the  
  135.             // queue-defined default.  
  136.             // MQOO_OUTPUT:Open the queue to put messages.  
  137.             int openOptions = MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_OUTPUT  
  138.                     | MQC.MQOO_INQUIRE;  
  139.   
  140.             // Now get the message back again. First define a WebSphere MQ  
  141.             // message to receive the data  
  142.             MQMessage rcvMessage = new MQMessage();  
  143.   
  144.             // Specify default get message options  
  145.             MQGetMessageOptions gmo = new MQGetMessageOptions();  
  146.             gmo.options = gmo.options + MQC.MQGMO_SYNCPOINT;// Get messages  
  147.                                                             // under sync point  
  148.                                                             // controlQ在同步Ҏ(gu)制下获取消息Q?nbsp; 
  149.             gmo.options = gmo.options + MQC.MQGMO_WAIT; // Wait if no messages  
  150.                                                         // on the  
  151.                                                         // QueueQ如果在队列上没有消息则{待Q?nbsp; 
  152.             gmo.options = gmo.options + MQC.MQGMO_FAIL_IF_QUIESCING;// Fail if  
  153.                                                                     // Qeue  
  154.                                                                     // Manager  
  155.                                                                     // QuiescingQ如果队列管理器停顿则失败)  
  156.             gmo.waitInterval = 1000; // Sets the time limit for the  
  157.                                         // wait.Q设|等待的毫秒旉限制Q?nbsp; 
  158.   
  159.             System.out.println(name + " Accessing queue: " + qName);  
  160.             MQQueue queue = qMgr.accessQueue(qName, openOptions);  
  161.             int depth = 0;  
  162.   
  163.             // Get the message off the queue.  
  164.             System.out.println("... " + name + " getting the message back again");  
  165.             for (;;) {  
  166.                 try {  
  167.                     queue.get(rcvMessage, gmo);  
  168.                     System.out.println(" ID: "  
  169.                             + (new String(rcvMessage.messageId)).trim()  
  170.                             + " Num: " + rcvMessage.messageSequenceNumber  
  171.                             + " Type: " + rcvMessage.messageType + " Flag: "  
  172.                             + rcvMessage.messageFlags);  
  173.                     // And display the message text...  
  174.                     String msgText = rcvMessage.readUTF();  
  175.                     System.out.println("The message is: " + msgText);  
  176.                     rcvMessage.clearMessage();  
  177.   
  178.                     // Break if no MSG left in queue  
  179.                     depth = queue.getCurrentDepth();  
  180.                     if (depth == 0)  
  181.                         break;  
  182.   
  183.                 } catch (MQException mqe) {  
  184.                     mqe.printStackTrace();  
  185.                     break;  
  186.                     // null;  
  187.                 } catch (IOException e) {  
  188.                     e.printStackTrace();  
  189.                 }  
  190.             }  
  191.             // Close the queue  
  192.             System.out.println(name + " Closing the queue");  
  193.             queue.close();  
  194.             // Disconnect from the QueueManager  
  195.             System.out.println(name + " Disconnecting from the Queue Manager");  
  196.             qMgr.disconnect();  
  197.             System.out.println(name + " Done!");  
  198.             System.out.println("==========");  
  199.             System.out.println("");  
  200.         } catch (MQException ex) {  
  201.             System.out  
  202.                     .println("A WebSphere MQ Error occured : Completion Code "  
  203.                             + ex.completionCode + " Reason Code "  
  204.                             + ex.reasonCode + ex.getMessage());  
  205.         } catch (InterruptedException e1) {  
  206.             e1.printStackTrace();  
  207.         }  
  208.     }  
  209. }  
  210.   
  211. public class MQTest {  
  212.   
  213.     public static void main(String args[]) {  
  214.   
  215.         /* 
  216.          * MQTest first = new MQTest(); first.sendMessage(); 
  217.          * first.recvMessage(); 
  218.          */  
  219.         Sender sender = new Sender();  
  220.         Thread senderThread = new Thread(sender);  
  221.         senderThread.start();  
  222.         senderThread.setName("Sender");  
  223.           
  224.         Thread senderThread2 = new Thread(sender);  
  225.         senderThread2.start();  
  226.         senderThread2.setName("Sender2");  
  227.           
  228.         Receiver recv = new Receiver();  
  229.         Thread recvThread = new Thread(recv);  
  230.         recvThread.start();  
  231.         recvThread.setName("Receiver");  
  232.   
  233.         // Receiver recv = new Receiver();  
  234.         // new Thread(recv).start();  
  235.   
  236.     }  
  237.   
  238. }  


q行l果如下Q?/p> q入U程Sender2
q入U程Sender
Sender2 Connecting to queue manager: XIR_QM_1502
Sender Connecting to queue manager: XIR_QM_1502
Sender2 Accessing queue: ESBREQ
Sender2 Sending a message...
Sender Accessing queue: ESBREQ
Sender Sending a message...
Sender2 putting the message... 1
Sender putting the message... 1
Sender2 putting the message... 2
Sender putting the message... 2
Sender2 putting the message... 3
Sender putting the message... 3
Sender2 putting the message... 4
Sender putting the message... 4
Sender2 Done!
==========


Sender Done!
==========


q入U程Receiver
Receiver Connecting to queue manager: XIR_QM_1502
Receiver Accessing queue: ESBREQ
... Receiver getting the message back again
 ID: MSGID Num: 1 Type: 1 Flag: 0
The message is: Salemetsizbe Yerasel 1
 ID: MSGID Num: 1 Type: 1 Flag: 0
The message is: Salemetsizbe Yerasel 1
 ID: MSGID Num: 1 Type: 1 Flag: 0
The message is: Salemetsizbe Yerasel 2
 ID: MSGID Num: 1 Type: 1 Flag: 0
The message is: Salemetsizbe Yerasel 2
 ID: MSGID Num: 1 Type: 1 Flag: 0
The message is: Salemetsizbe Yerasel 3
 ID: MSGID Num: 1 Type: 1 Flag: 0
The message is: Salemetsizbe Yerasel 3
 ID: MSGID Num: 1 Type: 1 Flag: 0
The message is: Salemetsizbe Yerasel 4
 ID: MSGID Num: 1 Type: 1 Flag: 0
The message is: Salemetsizbe Yerasel 4
Receiver Closing the queue
Receiver Disconnecting from the Queue Manager
Receiver Done!



gdufo 2015-08-26 12:07 发表评论
]]>
Linux ?安装 PHP ?PDO_MYSQL 扩展http://www.aygfsteel.com/gdufo/archive/2015/03/19/423613.htmlgdufogdufoThu, 19 Mar 2015 02:30:00 GMThttp://www.aygfsteel.com/gdufo/archive/2015/03/19/423613.html

Linux ?安装 PHP ?PDO_MYSQL 扩展

2013 q?3 ?11 ?– 09:41 | 2,420 views | Favorite收藏
1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)

PDO_MYSQL以下操作都在Linux pȝ下操?/p>

1、下?文g 或?q入 在PHP源码包中q入ext/pdo_mysql

http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz

2、解压文?br /> tar zxvf PDO_MYSQL-1.0.2.tgz

3、配|和~译文g
#cd PDO_MYSQL-1.0.2
#/usr/local/php5/bin/phpize
#./configure –with-php-config=/usr/local/php5/bin/php-config –with-pdo-mysql=/usr/local/mysql
#make
#make install

注:(x) 我的PHP安装?Q?/usr/local/php5/ mysql 安装?Q?/usr/local/mysql ~译的时候注意你自己的安装目录在哪里
3、安装到PHP配置?/p>

把这个记住,然后打开 php.ini文gQ?br /> q添加一?/p>

extension=pdo_mysql.so

q将上面~译产生的so复制?php.ini文g中extension_dir指定的目录中

重新启动Q?br />



gdufo 2015-03-19 10:30 发表评论
]]>
Linux下php安装mcrypt扩展http://www.aygfsteel.com/gdufo/archive/2015/03/19/423612.htmlgdufogdufoThu, 19 Mar 2015 02:20:00 GMThttp://www.aygfsteel.com/gdufo/archive/2015/03/19/423612.html

说明Q?/strong>

操作pȝQCentOS 5.x 64?/span>

已安装php版本Qphp-5.4.4

已安装php路径Q?usr/local/php

实现目的Q?/strong>

在不影响|站讉K的情况下Q重新编译phpQ增加对mcrypt扩展的支?/span>

具体操作Q?/strong>

一、下载Y件包

1、下载phpQ?span style="color: #0000ff;">版本要与pȝ安装的一?/span>Q?/p>

http://museum.php.net/php5/php-5.4.4.tar.gz

2、下载libmcryptQ?span style="color: #0000ff;">安装mcrypt需要此软g?/span>Q?/p>

http://nchc.dl.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz

3、下载mhashQ?span style="color: #0000ff;">安装mcrypt需要此软g?/span>Q?/p>

https://acelnmp.googlecode.com/files/mhash-0.9.9.9.tar.gz

4、下载mcrypt

https://lcmp.googlecode.com/files/mcrypt-2.6.8.tar.gz

以上软g包下载之后,上传?usr/local/src目录

二、安装Y件包

1、安装libmcrypt

cd /usr/local/src  #q入软g包存攄?/span>

tar zxvf libmcrypt-2.5.8.tar.gz  #解压

cd libmcrypt-2.5.8  #q入安装目录

./configure  #配置

make  #~译

make install  #安装

2、安装mhash

cd /usr/local/src

tar zxvf mhash-0.9.9.9.tar.gz

cd mhash-0.9.9.9

./configure

make

make install

3、安装mcrypt

cd /usr/local/src

tar zxvf mcrypt-2.6.8.tar.gz

cd mcrypt-2.6.8

ln -s   /usr/local/bin/libmcrypt_config   /usr/bin/libmcrypt_config  #d软连?/span>

export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH  #d环境变量

./configure

make

make install

三、重新编译php

1、查看系l之前安装的php~译参数

pȝq维  www.osyunwei.com  温馨提醒Qqihang01原创内容 版权所?转蝲h明出处及原文链接

/usr/local/php/bin/php -i |grep configure  #查看php~译参数Q记录下~译参数Q后面会(x)用到

2、安装php

cd /usr/local/src

tar zxvf php-5.4.4.tar.gz

cd php-5.4.4

'./configure' '--prefix=/usr/local/php' '--enable-mbstring=all' '--with-config-file-path=/usr/local/php/etc' '--with-zlib' '--with-mysql=/usr/local/mysql-5.1.38/' '--with-gd' '--with-mysqli=/usr/local/mysql-5.1.38/bin/mysql_config' '--with-jpeg-dir=/usr' '--with-png-dir=/usr' '--enable-fpm' '--enable-soap' '--with-freetype-dir=/usr/lib64' '--with-iconv=/usr/local' '--with-curl' '--with-mcrypt'

#在之前的~译参数后面增加'--with-mcrypt' 回R

make  #~译

make install  #安装

/usr/local/src/php-5.4.4/sapi/fpm/init.d.php-fpm  reload  #重新加蝲php-fpm

四、测试mcrypt扩展是否已安装成?/span>

在网站目录下新徏一?span style="color: #ff0000;">info.php试面Q写上下面代码,保存

<?php

phpinfo();

?>

在浏览器中打开info.php ?x)看到如下的信?/p>

说明mcrypt扩展已经安装成功

xQLinux下php安装mcrypt扩展完成?/strong>



gdufo 2015-03-19 10:20 发表评论
]]>
OutLook中看不到囄http://www.aygfsteel.com/gdufo/archive/2015/01/23/422377.htmlgdufogdufoFri, 23 Jan 2015 00:23:00 GMThttp://www.aygfsteel.com/gdufo/archive/2015/01/23/422377.htmlhttp://www.aygfsteel.com/gdufo/comments/422377.htmlhttp://www.aygfsteel.com/gdufo/archive/2015/01/23/422377.html#Feedback0http://www.aygfsteel.com/gdufo/comments/commentRss/422377.htmlhttp://www.aygfsteel.com/gdufo/services/trackbacks/422377.html
HK_CURRENT_USER\software\microsoft\Office\11.0\Outlook\Security\OutlookSecureTempFolder
查看键?OutlookSecureTempFolder
C:\Documents and Settings\li.shi\Local Settings\Temporary Internet Files\OLK11\

删除临时目录下文件即?/div>

gdufo 2015-01-23 08:23 发表评论
]]>RedHat Linux6.0安装Oracle 11g单机http://www.aygfsteel.com/gdufo/archive/2014/03/19/411213.htmlgdufogdufoWed, 19 Mar 2014 02:41:00 GMThttp://www.aygfsteel.com/gdufo/archive/2014/03/19/411213.htmlhttp://www.aygfsteel.com/gdufo/comments/411213.htmlhttp://www.aygfsteel.com/gdufo/archive/2014/03/19/411213.html#Feedback0http://www.aygfsteel.com/gdufo/comments/commentRss/411213.htmlhttp://www.aygfsteel.com/gdufo/services/trackbacks/411213.htmlRedHat Linux6.0安装Oracle 11g单机

 

Ø W一步配|YUM仓库

1?nbsp;挂蝲光盘

mount /dev/cdrom /media

2?nbsp;复制光盘里头的rpm包到rpm包源目录

cp rf  /media/Packages  /mnt Q也可以直接通过桌面COPYQ?/span>

Q这里可以取消挂在了 umount /dev/cdromQ顺便删除media目录 rm rf /mediaQ?/span>

 

3?nbsp;q入你自己创建的YUM仓库Qƈ安装createrepo工具

cd /mnt/Packages

rpm ivh createrepo-0.4.11-3.e15.noarch.rpm(可以在桌面手动双d?

4?nbsp;重徏仓库信息配置文g

createrepo  /mnt  Q这个配|文件在 /mnt/repodata/下)

 

5?nbsp;创徏YUM配置文g

cd  /etc/yum.repos.d/

touch yumredhat.repo

vim yumredhat.repo

d如下信息Q?/span>

[rhel6]

name=Red Hat Enterprise Linux6

baseurl=file:///mnt

enabled=1

gpgcheck=0

gpgfile=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

 

6、测?/span>

yum list

yum clear all

 

Ø W二步Oracle安装前系l参数的配置以及包的安装

 

Q安装Oracle必须关闭掉防火墙以及selinuxQ?/span>

service iptables stop      

vim /etc/selinux/config

SELINUX=disabled

 

========================

惛_法把下面2个文件传q?nbsp;Linux 操作pȝ里面?/span>

linux_11gR2_database_1of2.zip

linux_11gR2_database_2of2.zip

要借助一个Y?nbsp;FileZilla_3.3.3_win32-setup.exe  

上传完毕后, 使用 unzip 命o解压刚才上传?个文Ӟ 命o格式如下Q?/span>

unzip 文g?/span>

 

======================================

查相关的开发工具和一些包

查命令格式如下:(x)

rpm -qa | grep 名字

 

binutils-2.17.50.0.6

compat-libstdc++-33-3.2.3

elfutils-libelf-0.125

elfutils-libelf-devel-0.125

#elfutils-libelf-devel-static-0.125 (RedHat Linux6.0中无此包QCentOS中有)

gcc-4.1.2

gcc-c++-4.1.2

glibc-2.5-24

glibc-common-2.5

glibc-devel-2.5

glibc-headers-2.5

kernel-headers-2.6.18

ksh-20060214

libaio-0.3.106 

libaio-devel-0.3.106

libgcc-4.1.2

libgomp-4.1.2

libstdc++-4.1.2

libstdc++-devel-4.1.2

make-3.81  

numactl-devel-0.9.8.i386  

sysstat-7.0.2

unixODBC-2.2.11 

unixODBC-devel-2.2.11

======================================

利用配置好的YUM仓库安装?/span>

yum install (包名).rpm

创徏用户以及修改配置参数

groupadd oinstall

groupadd dba

mkdir -p /u01/oracle     //路径可修改,看实际的生环节

 

d一个oracle用户Q?nbsp;根目录是 /u01/oracleQ?nbsp;ȝl是 oinstall 副的l是dba

useradd -g oinstall -G dba -d /u01/oracle oracle

cp /etc/skel/.bash_profile /u01/oracle

cp /etc/skel/.bashrc /u01/oracle

cp /etc/skel/.bash_logout /u01/oracle

 

为oracle用户讄密码 123456   /111111

passwd oracle

/]#ls -l

/]#chown -R oracle:oinstall u01

/]#ls -l

 

?nbsp;nobody 是否存在 Q?nbsp; id nobody

~省存在的。如果不存在 # /usr/sbin/useradd -g nobody

========================================

vi /etc/sysctl.conf

fs.aio-max-nr = 1048576

fs.file-max = 6815744

kernel.shmall = 2097152

kernel.shmmax = 536870912

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

net.ipv4.ip_local_port_range = 9000 65500

net.core.rmem_default = 262144

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048586

-------------

vi /etc/security/limits.conf

 

oracle           soft    nproc   2047

oracle           hard    nproc   16384

oracle           soft    nofile  1024

oracle           hard    nofile  65536

------------

vi /etc/pam.d/login 

session    required     pam_limits.so

=================================================

讄oracle 用户环境变量

su - oracle

pwd

ls -la

---------------

vi .bash_profile

 

ORACLE_BASE=/u01

ORACLE_HOME=$ORACLE_BASE/oracle

ORACLE_SID=ORCLTEST

PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin

 

export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH

===================================

mv database /u01/

cd /u01

ls -l

 chown -R oracle:oinstall database/

===========

 

Ø W三步正式开始安?Oracle.11g.r2(囑Ş界面安装)

 

使用oracle账号 登陆囑Ş界面 q行安装

q行l端 Terminal

cd /u01/database

./runInstaller

q行./runInstaller?/span>INS-06101?/span>IP address of localhost could not be determined 

Are you sure you want to continue?

q里需要指定一个IP与localhost

Vi /etc/hosts

#127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

10.110.12.132 ORCLDEV  ORCLDEV.ELLINGTON

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

 

q行./runInstaller出现中文汉字为方?/span>

在运行runinstaller之前Q?/span>

export LANG=C

export LC_ALL=C

 

Installation Optiong

install database software only

 

Grid Options

Single instance database installation

 

Product Languages

English

 

Database Edition

Enterprise Edition (3.95)

 

Installation Location

Oracle Base: /u01

Software Loacation: /u01/oracle

 

提示Q?nbsp;yes

 

Create Inventory

mkdir /oraInventory

 

chown -R oracle:oinstall oraInventory

 

Operating System Groups

Next 

 

Prerequis ite Checks

Ignore All

 

Summary

Finish

 

Install Product

安装完毕Q?nbsp;提示执行 2个脚?/span>

//root用户执行

/oraInventory/orainstRoot.sh

/u01/oracle/root.sh

直接按回车, ~省值就可以

 

Finish

The installation of Oracle Database was successful

====================================

上面只是安装了YӞ 数据库没有创建, q有配置 监听?nbsp;Listener

netca

一直默认下一?nbsp;Q?nbsp;呵呵Q?nbsp;最?nbsp;Finish

 

ps -ef 可以查看Listener是否配置成功

 

-----------

dbca

一?nbsp;Next, Global Database Name ?nbsp;SID 都是输入 wilson

 

选择 User the Same.....All Accounts

 

密码: 123456

选择 Sample Schemas

 

Memory 内存分配Q默认就可以?/span>

Character Sets 选择 中文GBK  Use Unicode(AL32UTF8)

 

然后一?nbsp;Next Q?nbsp;到最?nbsp;Finish

 

弹出一?nbsp;Confirmation , 点击 OK 可以了Q?nbsp;然后自动q行安装

 

安装到目?nbsp;/u01/oradata/wilson

   /u01/{等。。?nbsp;?x)发现多了很多文件?/span>

 

[oracle@localhost ~]$ sqlplus /nolog

 

//中文字符昄Q号解决Ҏ(gu)

~辑q运?bash_profile

 

export NLS_LANG=AMERICAN_AMERICA.UTF8

Q如果是GBK     

export NLS_LANG=american_america.ZHS16GBKQ?/span>

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

注销后生?/span>

q样再重新进入sqlplus

已经不会(x)是ؕ码?/span>

 

SQL*Plus: Release 11.2.0.1.0 Production on Fri Jun 25 15:05:54 2010

 

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

 

SQL> conn / as sysdba

Connected to an idle instance.

出现错误 

 

SQL> startup

 

查看当前用户的表?/span>

SQL> select table_name from user_tables;

 

SQL> create table testUser( id integer,name char(10));

 

Table created.

 

SQL> insert into testUser values(0,'Jack');

 

1 row created.

 

SQL> commit;

 

Commit complete.

 

SQL> select * from testUser;

 

        ID NAME

---------- ----------

         0 Jack

 

关闭数据?/span>

SQL>  shutdown immediate

 

SQL>  quit

 



gdufo 2014-03-19 10:41 发表评论
]]>
SQL-Server查询失效索引http://www.aygfsteel.com/gdufo/archive/2014/02/27/410359.htmlgdufogdufoThu, 27 Feb 2014 00:53:00 GMThttp://www.aygfsteel.com/gdufo/archive/2014/02/27/410359.htmlhttp://www.aygfsteel.com/gdufo/comments/410359.htmlhttp://www.aygfsteel.com/gdufo/archive/2014/02/27/410359.html#Feedback0http://www.aygfsteel.com/gdufo/comments/commentRss/410359.htmlhttp://www.aygfsteel.com/gdufo/services/trackbacks/410359.htmlSELECT  TOP 10
        [Total Cost]  = ROUND(avg_total_user_cost * avg_user_impact * (user_seeks + user_scans),0)
        , avg_user_impact
        , TableName = statement
        , [EqualityUsage] = equality_columns
        , [InequalityUsage] = inequality_columns
        , [Include Cloumns] = included_columns
FROM        sys.dm_db_missing_index_groups g
INNER JOIN    sys.dm_db_missing_index_group_stats s
       ON s.group_handle = g.index_group_handle
INNER JOIN    sys.dm_db_missing_index_details d
       ON d.index_handle = g.index_handle
ORDER BY [Total Cost] DESC;
================================
CREATE NONCLUSTERED INDEX IX_Kq_RecordQk_QKRMan
     ON Kq_RecordQk ([QKRMan])
     include([COMP_CODE], [QKREMPID], [ApStatus])


gdufo 2014-02-27 08:53 发表评论
]]>
mysql配置参数性能优化选项:Max_connectionsҎ(gu)和配置优化http://www.aygfsteel.com/gdufo/archive/2014/01/27/409383.htmlgdufogdufoMon, 27 Jan 2014 07:12:00 GMThttp://www.aygfsteel.com/gdufo/archive/2014/01/27/409383.htmlhttp://www.aygfsteel.com/gdufo/comments/409383.htmlhttp://www.aygfsteel.com/gdufo/archive/2014/01/27/409383.html#Feedback1http://www.aygfsteel.com/gdufo/comments/commentRss/409383.htmlhttp://www.aygfsteel.com/gdufo/services/trackbacks/409383.htmlhttp://www.itokit.com/2012/1018/74794.html
MySQL的max_connections参数用来讄最大连接(用户Q数。每个连?strong>MySQL的用户均作一个连接,max_connections的默认gؓ(f)100。本文将讲解此参数的详细作用与性能影响?
max_connections配置参数的相关的Ҏ(gu)?/strong>
1、MySQL无论如何都会(x)保留一个用于管理员QSUPERQ登陆的q接Q用于管理员q接数据库进行维护操作,即当前q接数已l达Cmax_connections。因此MySQL的实际最大可q接Cؓ(f)max_connections+1Q?/div>
2、这个参数实际v作用的最大|实际最大可q接敎ͼ?6384Q即该参数最大g能超q?6384Q即使超q也?6384为准Q?/div>
3、增加max_connections参数的|不会(x)占用太多pȝ资源。系l资源(CPU、内存)的占用主要取决于查询的密度、效率等Q?/div>
4、该参数讄q小的最明显特征是出?#8220;Too many connections”错误Q?/div>
 
如何去调整max_connections参数的?/strong>Q?span style="color: #0000ff; ">有以下三个方法可调整Q?/div>
调整此参数的Ҏ(gu)有几U,既可以在~译的时候设|,也可以在MySQL配置文g my.cnf 中设|,也可以直接用命令调整ƈ立即生效?br />  
1、在~译的时候设|默认最大连接数
打开MySQL的源码,q入sql目录Q修改mysqld.cc文gQ?/div>
C/C++ Code复制内容到剪贴板
  1. {“max_connections”, OPT_MAX_CONNECTIONS,  
  2. “The number of simultaneous clients allowed.”, (gptr*) &max_connections,  
  3. (gptr*) &max_connections, 0, GET_ULONG, REQUIRED_ARG, 100, 1, 16384, 0, 1,  
  4. 0},  
U色?#8220;100”即ؓ(f)该参数的默认|修改为想要的数|存盘退出。然后执?/div>
C/C++ Code复制内容到剪贴板
  1. ./configure;make;make install  
 
重新~译安装MySQLQ注意,׃~译安装且修改了MySQL源码Q此操作最好在安装MySQL之前q行Q?/div>

2、在配置文gmy.cnf中设|max_connections的?/strong>
打开MySQL配置文gmy.cnf
  1. [root@www ~]# vi /etc/my.cnf  
 
扑ֈmax_connections一行,修改为(如果没有Q则自己dQ,
max_connections = 1000
上面?000卌参数的倹{?br />  
3、实Ӟ临时Q修Ҏ(gu)参数的?/strong>
首先登陆mysqlQ执行如下命令:(x)
C/C++ Code复制内容到剪贴板
  1. [root@www ~]# mysql -uroot -p  
 
然后输入MySQL Root的密码?/div>
查看当前的Max_connections参数|(x)
  1. mysql> SELECT @@MAX_CONNECTIONS AS 'Max Connections';  
 
讄该参数的|(x)
  1. mysql> set GLOBAL max_connections=1000;  
Q注意上面命令的大小写)
修改完成后实时生效,无需重启MySQL?br />
mysql的max_connections的ȝ
M来说Q该参数在服务器资源够用的情况下应该量讄大,以满_个客L(fng)同时q接的需求。否则将?x)出现类?#8220;Too many connections”的错误?/div>


gdufo 2014-01-27 15:12 发表评论
]]>SPComm的一点小诀H?spcomm的问题导致数据丢? http://www.aygfsteel.com/gdufo/archive/2013/11/15/406364.htmlgdufogdufoFri, 15 Nov 2013 03:13:00 GMThttp://www.aygfsteel.com/gdufo/archive/2013/11/15/406364.htmlhttp://www.aygfsteel.com/gdufo/comments/406364.htmlhttp://www.aygfsteel.com/gdufo/archive/2013/11/15/406364.html#Feedback0http://www.aygfsteel.com/gdufo/comments/commentRss/406364.htmlhttp://www.aygfsteel.com/gdufo/services/trackbacks/406364.html

SPComm的一点小诀H?spcomm的问题导致数据丢?nbsp; 

2010-01-08 09:50:51|  分类Q? 串口 |字号 订阅

最q几天完成了BiasDAC的程序编写。调试的q程q算比较利Q除了几个有点bt的小问题。其中一个困C我两三天的时_今天上午l于其解决?/p>

׃BiasDAC是用RS232 Serial Port通信的,延用之前的程序,使用了Delphi的SPComm控g。在之前的用中QSPComm控g一直工作正常,使用的是一般的stringq行消息的传递?/p>

而BiasDAC׃通信协议的限Ӟ消息的发送用的是hex方式Q会(x)用到?x00?xFF所有的q些字符。在调试中发玎ͼ发?x11?x13之后QSPComm的工作就?x)不正常?/p>

首先?x11发送之后,q回?x11消息?x)被忽略Q其?x13发送之后,只能q回很有限的消息Q而且gSerial Port此关闭Q如果再发送消息,׃(x)造成Serial Port失去响应Q只能通过重新启动计算机才能恢复?/p>

后来上网上查询,原来不能正常处理0x11?x13的问题早存在,原因是SPCommI间中两个属性的存在?/p>

OutX_XonXOffFlow/InX_XonXoffFlowQ这个属性是指进行发?接收时的软g握手标志Q两个握手信号之间的数据被认为是通讯数据Q收到握手信号后Q通讯׃止了?/p>

FOutx_XonXoffFlow := True;
FInx_XonXoffFlow := True;

默认的初始化中,q两个属性是默认开启的?

XOffChar/XOnCharQ这是指握手的字节,默认的初始中Q有

FXonChar := chr($11);
FXoffChar := chr($13);

xQ真相大白?x11Q?x13被占用ؓ(f)通讯握手信号Q自然不?x)得到正的处理?

问题扑ֈ了,解决也很Ҏ(gu)。只需要在Comm的初始化中,自己定义

Comm.Inx_XonXoffFlow:=False;
Comm.Outx_XonXoffFlow:=False;

关闭软g握手功能卛_。在一般通讯中,g已经具备了握手功能,所以也不会(x)影响到正常的Comm通讯?/p>



gdufo 2013-11-15 11:13 发表评论
]]>通达OA中,“数据选择控g”中增加W三方的数据来源http://www.aygfsteel.com/gdufo/archive/2013/10/30/405786.htmlgdufogdufoWed, 30 Oct 2013 03:03:00 GMThttp://www.aygfsteel.com/gdufo/archive/2013/10/30/405786.htmlhttp://www.aygfsteel.com/gdufo/comments/405786.htmlhttp://www.aygfsteel.com/gdufo/archive/2013/10/30/405786.html#Feedback0http://www.aygfsteel.com/gdufo/comments/commentRss/405786.htmlhttp://www.aygfsteel.com/gdufo/services/trackbacks/405786.html
现增加第三方的数据来源,以增强其功能?br />
一?a href="file://\\10.110.2.210\d$\MYOA\webroot\general\system\workflow\flow_form\cool_form\data\config.php">MYOA\webroot\general\system\workflow\flow_form\cool_form\data\config.php
在Config.php 增加
'TX_USERS' => array("NAME" => "同npȝ用户" , "CONTENT" => array("EMP_NAME" => "工号姓名",
   "DEPT_NAME" => "部门","ZHIWEI" => "职位","ZHIWU" => "职务","ZHIJI" => "职"))
二?a href="file://\\10.110.2.210\d$\MYOA\webroot\general\workflow\list\input_form">MYOA\webroot\general\workflow\list\input_form

增加q接MSSQL-SERVER的输?br />if ($dataSrc == 'TX_USERS') {
if($act=="count")
   $query = "select count(*) from OA_Employee_View where 1=1";
else
   $query = "select top 10 $dataField from OA_Employee_View where 1=1";

if(strstr($dataQuery,"1,"))
{
  $array1 = explode(",",$dataQuery);
  $array2 = explode(",",$dataField);
  $array3 = explode(",",$dataFieldName);

  foreach($array1 as $k => $v)
  {
   if($v==1)
   {
    $name = $array2[$k];
    $value = $$name;
    if($value!="")
       $query .= " and $name like '%$value%'";
   }
  }
}
  $txconn=mssql_connect($MSSQL_TX_SERVER,$MSSQL_TX_USER,$MSSQL_TX_PASS);
  mssql_select_db($MSSQL_TX_DB,$txconn);
  if($act=="count")
  {
  $cursor = mssql_query($query);
 if($ROW=mssql_fetch_array($cursor))
    $COUNT=$ROW[0];
 echo $COUNT;
 exit;
}

$cursor = mssql_query($query);
$COUNT=0;
$dataField_arr = explode(",",$dataField);
$dataFieldName_arr = explode(",",$dataFieldName);
while($ROW=mssql_fetch_array($cursor))
{
  $COUNT++;
   if($COUNT%2==1)
      $TableLine="TableLine1";
   else
      $TableLine="TableLine2"; 
   foreach($dataField_arr as $k=> $v)
   {
     if($v=="") continue;
     if($COUNT==1)
     {
       if($k==0)
          $thead.='<table class="TableList" align="center" width="90%"><tr class="TableHeader">';
       $thead.='<td nowrap align="center">'.$dataFieldName_arr[$k].'</td>';
     }
     if($k==0)
       $tbody.='<tr class="'.$TableLine.'">';
     $tbody.='<td nowrap align="center">'.$ROW[$v].'</td>';
   }
  
   if($COUNT==1) $thead.='<td nowrap align="center">操作</td></tr>';
   $tbody.='<td nowrap align="center"> <a href="#" class="orgAdd" onclick="addData(this)">d</a></td></tr>';
}
$tbody.="</table>";
echo $thead.$tbody;



gdufo 2013-10-30 11:03 发表评论
]]>
վ֩ģ壺 | ̶| | | ʯ| ˳| üɽ| ԭ| | ɽ| | ׸| | ³ƶ| ̫ԭ| | ԭ| | | | Դ| | | | ɽ| ذ| ɽ| | | | | Ƶ| | ʯȪ| | | | ֺ| | | |