<?xml version="1.0" encoding="UTF-8"?>
  <feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html"><![CDATA[北大青鸟Aptech]]></title>
  <subtitle type="html"><![CDATA[北京北大公学授权培训中心]]></subtitle>
  <id>http://www.jb-accp/Blog1/</id>
  <link rel="alternate" type="text/html" href="http://www.jb-accp/Blog1/" /> 
  <link rel="self" type="application/atom+xml" href="http://www.jb-accp/Blog1/atom.asp" /> 
  <generator uri="http://www.pjhome.net/" version="2.8">PJBlog3</generator> 
  <updated>2008-11-29T18:40:20+08:00</updated>

  <entry>
	  <title type="html"><![CDATA[Oracle诊断案例Job任务停止执行]]></title>
	  <author>
		 <name>accp</name>
		 <uri>http://www.jb-accp/Blog1/</uri>
		 <email>Nolan8@VIP.QQ.com</email>
	  </author>
	  <category term="" scheme="http://www.jb-accp/Blog1/default.asp?cateID=17" label="学习资料" /> 
	  <updated>2008-11-29T18:40:20+08:00</updated>
	  <published>2008-11-29T18:40:20+08:00</published>
		  <summary type="html"><![CDATA[<div>摘要: <br />
<br />
　　 本文通过一次Oracle Job任务异常案例诊断，分析其原因及解决过程，从内部揭示Oracle Job任务调度及内部计时机制。 <br />
<br />
　　 问题及环境 <br />
<br />
　　 接到研发人员报告，数据库定时任务未正常执行，导致某些操作失败。 <br />
<br />
　　 开始介入处理该事故. <br />
<br />
　　 系统环境: <br />
<br />
<code>SunOS DB 5.8 Generic_108528-21 sun4u sparc SUNW,Ultra-4 <br />
oracle9i Enterprise Edition Release 9.2.0.3.0 - Production </code><br />
　　 解决过程 <br />
<br />
　　 首先介入检查数据库任务 <br />
<br />
<code>$ sqlplus &quot;/ as sysdba&quot; <br />
SQL*Plus: Release 9.2.0.3.0 - Production on Wed Nov 17 20:23:53 2004 <br />
Copyright (c) 1982, 2002, oracle Corporation. All rights reserved. <br />
Connected to: <br />
oracle9i Enterprise Edition Release 9.2.0.3.0 - Production <br />
With the Partitioning, OLAP and oracle Data Mining options <br />
JServer Release 9.2.0.3.0 - Production <br />
SQL&gt; select job,last_date,last_sec,next_date,next_sec,broken,failures from <br />
dba_jobs; <br />
JOB LAST_DATE LAST_SEC NEXT_DATE NEXT_SEC B FAILURES <br />
INTERVAL <br />
---------- --------- ---------------- --------- ---------------- - ---------- <br />
---------------------------- <br />
31 16-NOV-04 01:00:02 17-NOV-04 01:00:00 N 0 <br />
trunc(sysdate+1)+1/24 <br />
27 16-NOV-04 00:00:04 17-NOV-04 00:00:00 N 0 <br />
TRUNC(SYSDATE) + 1 <br />
35 16-NOV-04 01:00:02 17-NOV-04 01:00:00 N 0 <br />
trunc(sysdate+1)+1/24 <br />
29 16-NOV-04 00:00:04 17-NOV-04 00:00:00 N 0 <br />
TRUNC(SYSDATE) + 1 <br />
30 01-NOV-04 06:00:01 01-DEC-04 06:00:00 N 0 <br />
trunc(add_months(sysdate,1),&rsquo;MM&rsquo;)+6/24 <br />
65 16-NOV-04 04:00:03 17-NOV-04 04:00:00 N 0 <br />
trunc(sysdate+1)+4/24 <br />
46 16-NOV-04 02:14:27 17-NOV-04 02:14:27 N 0 <br />
sysdate+1 <br />
66 16-NOV-04 03:00:02 17-NOV-04 18:14:49 N 0 <br />
trunc(sysdate+1)+3/24 <br />
8 rows selected. </code><br />
　　 发现JOB任务是都没有正常执行，最早一个应该在17-NOV-04 01:00:00执行。但是没有执行。 <br />
<br />
　　 建立测试JOB <br />
<br />
<code>create or replace PROCEDURE pining <br />
<br />
IS <br />
BEGIN <br />
NULL; <br />
END; <br />
/ <br />
variable jobno number; <br />
variable instno number; <br />
begin <br />
select instance_number into :instno from v$instance; <br />
dbms_job.submit(:jobno, &rsquo;pining;&rsquo;, trunc(sysdate+1/288,&rsquo;MI&rsquo;), <br />
&rsquo;trunc(SYSDATE+1/288,&rsquo;&rsquo;MI&rsquo;&rsquo;)&rsquo;, TRUE, :instno); <br />
end; <br />
/ </code><br />
　　 发现同样的，不执行。 <br />
<br />
　　 但是通过dbms_job.run(&lt;job&gt;)执行没有任何问题。 <br />
<br />
　　 进行恢复尝试 <br />
<br />
　　 怀疑是CJQ0进程失效，首先设置JOB_QUEUE_PROCESSES为0，Oracle会杀掉CJQ0及相应job进程<br />
<br />
<code>SQL&gt; Alter SYSTEM SET JOB_QUEUE_PROCESSES = 0; </code><br />
　　 等2~3分钟，重新设置 <br />
<br />
<code>SQL&gt; Alter SYSTEM SET JOB_QUEUE_PROCESSES = 5; </code><br />
　　 此时PMON会重起CJQ0进程 <br />
<br />
<code>Thu Nov 18 11:59:50 2004 <br />
<br />
Alter SYSTEM SET job_queue_processes=0 SCOPE=MEMORY; <br />
Thu Nov 18 12:01:30 2004 <br />
Alter SYSTEM SET job_queue_processes=10 SCOPE=MEMORY; <br />
Thu Nov 18 12:01:30 2004 <br />
Restarting dead background process CJQ0 <br />
CJQ0 started with pid=8 <br />
但是Job仍然不执行，而且在再次修改的时候，CJQ0直接死掉了。 <br />
Thu Nov 18 13:52:05 2004 <br />
Alter SYSTEM SET job_queue_processes=0 SCOPE=MEMORY; <br />
Thu Nov 18 14:09:30 2004 <br />
Alter SYSTEM SET job_queue_processes=10 SCOPE=MEMORY; <br />
Thu Nov 18 14:10:27 2004 <br />
Alter SYSTEM SET job_queue_processes=0 SCOPE=MEMORY; <br />
Thu Nov 18 14:10:42 2004 <br />
Alter SYSTEM SET job_queue_processes=10 SCOPE=MEMORY; <br />
Thu Nov 18 14:31:07 2004 <br />
Alter SYSTEM SET job_queue_processes=0 SCOPE=MEMORY; <br />
Thu Nov 18 14:40:14 2004 <br />
Alter SYSTEM SET job_queue_processes=10 SCOPE=MEMORY; <br />
Thu Nov 18 14:40:28 2004 <br />
Alter SYSTEM SET job_queue_processes=0 SCOPE=MEMORY; <br />
Thu Nov 18 14:40:33 2004 <br />
Alter SYSTEM SET job_queue_processes=1 SCOPE=MEMORY; <br />
Thu Nov 18 14:40:40 2004 <br />
Alter SYSTEM SET job_queue_processes=10 SCOPE=MEMORY; <br />
Thu Nov 18 15:00:42 2004 <br />
Alter SYSTEM SET job_queue_processes=0 SCOPE=MEMORY; <br />
<br />
Thu Nov 18 15:01:36 2004 <br />
Alter SYSTEM SET job_queue_processes=15 SCOPE=MEMORY; </code><br />
　　 尝试重起数据库，这个必须在晚上进行：<br />
<br />
<code>PMON started with pid=2 <br />
DBW0 started with pid=3 <br />
LGWR started with pid=4 <br />
CKPT started with pid=5 <br />
SMON started with pid=6 <br />
RECO started with pid=7 <br />
CJQ0 started with pid=8 <br />
QMN0 started with pid=9 <br />
.... </code><br />
　　 CJQ0正常启动，但是Job仍然不执行。 <br />
<br />
　　 没办法了... <br />
<br />
　　 继续研究...居然发现Oralce有这样一个bug <br />
<br />
<code>1. Clear description of the problem encountered: <br />
slgcsf() / slgcs() on Solaris will stop incrementing after <br />
497 days 2 hrs 28 mins (approx) machine uptime. <br />
<br />
2. Pertinent configuration information <br />
No special configuration other than long machine uptime. . <br />
3. Indication of the frequency and predictability of the problem <br />
100% but only after 497 days. <br />
4. Sequence of events leading to the problem <br />
If the gethrtime() OS call returns a value &gt; 42949672950000000 <br />
nanoseconds then slgcs() stays at 0xffffffff. This can <br />
cause some problems in parts of the code which rely on <br />
slgcs() to keep moving. <br />
eg: In kkjssrh() does &quot;now = slgcs(&amp;se)&quot; and compares that <br />
to a previous timestamp. After 497 days uptime slgcs() <br />
keeps returning 0xffffffff so &quot;now - kkjlsrt&quot; will <br />
always return 0. . <br />
5. Technical impact on the customer. Include persistent after effects. <br />
In this case DBMS JOBS stopped running after 497 days uptime. <br />
Other symptoms could occur in various places in the code. </code><br />
　　 好么，原来是计时器溢出了，一检查我的主机: <br />
<br />
<code>bash-2.03$ uptime <br />
10:00pm up 500 day(s), 14:57, 1 user, load average: 1.31, 1.09, 1.08 <br />
bash-2.03$ date <br />
Fri Nov 19 22:00:14 CST 2004 </code><br />
　　 刚好到事发时是497天多一点.ft. <br />
<br />
　　 安排重起主机系统.. <br />
<br />
　　 这个问题够郁闷的，NND，谁曾想Oracle这都成... <br />
<br />
　　 oracle最后声称: <br />
<br />
fix made it into 9.2.0.6 patchset <br />
<br />
　　 在Solaris上的9206尚未发布...晕. <br />
<br />
　　 好了，就当是个经历吧，如果有问题非常不可思议的话，那么大胆怀疑Oracle吧，是Bug，可能就是Bug。 <br />
<br />
　　 重起以后问题解决，状态如下: <br />
<br />
<code>$ sqlplus &quot;/ as sysdba&quot; <br />
SQL*Plus: Release 9.2.0.3.0 - Production on Fri Nov 26 09:21:21 2004 <br />
Copyright (c) 1982, 2002, oracle Corporation. All rights reserved. <br />
Connected to: <br />
oracle9i Enterprise Edition Release 9.2.0.3.0 - Production <br />
With the Partitioning, OLAP and oracle Data Mining options <br />
JServer Release 9.2.0.3.0 - Production <br />
SQL&gt; select job,last_date,last_sec,next_date,next_sec from user_jobs; <br />
<br />
JOB LAST_DATE LAST_SEC NEXT_DATE NEXT_SEC <br />
---------- --------- ---------------- --------- ---------------- <br />
70 26-NOV-04 09:21:04 26-NOV-04 09:26:00 <br />
SQL&gt; / <br />
JOB LAST_DATE LAST_SEC NEXT_DATE NEXT_SEC <br />
---------- --------- ---------------- --------- ---------------- <br />
70 26-NOV-04 09:26:01 26-NOV-04 09:31:00 <br />
SQL&gt; <br />
SQL&gt; select * from v$timer; <br />
HSECS <br />
---------- <br />
3388153 <br />
SQL&gt; select * from v$timer; <br />
HSECS <br />
---------- <br />
3388319 <br />
SQL&gt; <br />
FAQ </code></div>
<p><br />
&nbsp;</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.jb-accp/Blog1/article.asp?id=173" /> 
	  <id>http://www.jb-accp/Blog1/default.asp?id=173</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[详尽分析 o&#114;acle的SOA五步走方案]]></title>
	  <author>
		 <name>accp</name>
		 <uri>http://www.jb-accp/Blog1/</uri>
		 <email>Nolan8@VIP.QQ.com</email>
	  </author>
	  <category term="" scheme="http://www.jb-accp/Blog1/default.asp?cateID=17" label="学习资料" /> 
	  <updated>2008-11-26T18:14:24+08:00</updated>
	  <published>2008-11-26T18:14:24+08:00</published>
		  <summary type="html"><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 现在很少有企业拥有完整的方法论将SOA变成现实，这多少让正在或正想实施SOA的中国企业有点疑虑。8月4日，甲骨文公司正式发布了其&ldquo;SOA五步走&rdquo;方案，能够使企业消除疑虑。</p>
<p>第一步：试点。这是部署SOA的第一步，即:确定简单且迅速实施的单个SOA项目，以其为试点，为企业提供信息，使他们快速体会到SOA的益处。这是最简单的SOA的实现。</p>
<p>第二步：集成。包括数据集成和应用集成。这阶段只是战术级的应用，对业务系统没有任何影响，只是体现IT的美妙无穷，起数据交换平台的功能。</p>
<p>第三步：部门业务流程自动化。即在单个部门实施SOA的项目,使SOA在部门里使用，使部门业务进入业务自动化。</p>
<p>第四步：企业架构。当部门间的SOA集成完成时，SOA可以跨部门实施，从而可以在企业里共享，成为企业架构，管理部门间业务，并提供良好的业务敏捷性，能够对变更快速和有效地进行响应、并且利用变更来得到竞争优势的能力。</p>
<p>第五步：行业/工业标准化应用。当企业内部业务需求达到正常状态时，就进入了行业或工作标准化的应用阶段。这阶段企业的SOA系统开始作用与上下游供应商与合作伙伴，并对自身的发展环境进行自动适应，成为一个生态系统。</p>
<p>甲骨文大中华区SOA技术推广经理周有衡解释，&ldquo;SOA五步走&rdquo;的方法论对任何导入SOA的企业具有通用性，但甲骨文实施&ldquo;SOA五步走&rdquo;的方法论并不是循规蹈矩，一成不变的，即并不是每个企业在实施SOA的时候都必须遵循从第一步到第二步、第三步&hellip;&hellip;第五步。而是，根据企业自身的信息化特点和现实需求，有选择的决定企业实施SOA的具体步聚。</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.jb-accp/Blog1/article.asp?id=172" /> 
	  <id>http://www.jb-accp/Blog1/default.asp?id=172</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[foxpro维护源表]]></title>
	  <author>
		 <name>accp</name>
		 <uri>http://www.jb-accp/Blog1/</uri>
		 <email>Nolan8@VIP.QQ.com</email>
	  </author>
	  <category term="" scheme="http://www.jb-accp/Blog1/default.asp?cateID=17" label="学习资料" /> 
	  <updated>2008-11-25T19:56:59+08:00</updated>
	  <published>2008-11-25T19:56:59+08:00</published>
		  <summary type="html"><![CDATA[<p>　　如果你有一个应用程序必须不停止的工作或表太大以致于应用程序不能在为它建立索引是停止下来，你将面临这样的问题：如果工作站或服务器崩溃，索引被破坏并要求重建时，应该怎么办？</p>
<p>　　有一个好的理由让你的表单和报表是基于视图的而不是基于表的。你可以让一个视图离线，并在用户继续查询或数据输入时重建索引。一但索引完成，从离线视图把数据更新到源表。仅需要短暂的中断来让视图离线后更新源表并重新让视图联线。事实上，如果你需要进行常规的重建索引，你可以考虑使用离线视图，并周期性的短时联线时间进行重建索引工作。</p>
<p>　　一个小的复杂的地方是，如何关闭各工作站上的视图足够长的时间来使视图离线(以及连线) 而不需要打电话告诉各个用户告诉他们关闭数据输入表单一会？我使用的方法是一种&ldquo;旗语&rdquo;方案：各数据输入表单监视一个需要维护的信号。当接收到该信号时，表单关闭,然后应用程序等待第二个视图状态已改变的信号(离线或联线)，然后数据输入可以继续下去。在收到第二个信息前，用户不能访问数据输入表单或任何使用视图的报表。</p>
<p>　　监视信号的基础是计时器对象。在该方案中居然使用了三个有关的计时器：</p>
<ul>
    <li>重索引表单中的计时器用于执行重建索引时的等待,直到所有用户关闭了视图。然后让视图离线或联线(这要看是否重建索引是开始了或已经完成) 并传送信号到应用程序级的计时器。</li>
    <li>在数据输入表单中的计时器等待一个信号时,视图必须改变状态。当接收到该信号时，表单关闭且一个应用程序级的计时器开始工作。</li>
    <li>应用程序级的计时器，它仅在等待视图的修改状态时被启用，监视来自重索引表单中的视图状态改变信号,这样数据输入和查询可以继续。</li>
</ul>
<p>当你解压本文所附的源代码（在第二节）时，会在REINDEX 目录中生成一些文件。以下是这些文件中的一部分：</p>
<ul>
    <li>SYSINFO.DBF 是一个包含一个逻辑字段CHNGSTATE 的表(ChangeState的缩写)。该字段在通常情况下的值为.F.,当它的值被设置为.T.时，它反映了视图中所有的该状态的块必须修改。该表在应用程序运行过程中始终是打开的。</li>
    <li>应用程序菜单中的所有功能都需要一个Skip For SYSINFO.CHNGSTATE 。因此当视图的该状态被修改时，用户不能访问该功能。</li>
    <li>任何使用视图的数据输入表单都有一个计时器对象，在其Timer() 事件中的代码关闭表单并启用一个应用程序级的计时器，如果 SYSINFO.CHNGSTATE 变为.T。以下是CUSTOMER 表单中的计时器对象中的代码 (在该代码中，oTimer 是应用程序级的计时器)：</li>
</ul>
<pre>
if SYSINFO.CHNGSTATE

  messagebox('Closing form to perform maintenance。' + ;

    'The form will automatically reopen in just a ' + ;

    'moment.'，48)

  oTimer.Enabled = .T.

  Thisform.Release()

endif SYSINFO.CHNGSTATE</pre>
<ul>
    <li>在应用程序启动时，一个计时器对象被实例化但是被废止的(disabled)。该计时器 仅在表单因视图处于修改状态而被强制关闭时启用,在它的Timer() 事件event 代码中搜索SYSINFO.CHNGSTATE 是否为.F.因此它可以重新打开任何因视图处于修改状态而被强制关闭的表单。以下是其代码在(在类库MYAPP.VCX 中的MyApp计时器类)中：</li>
</ul>
<pre>
if not SYSINFO.CHNGSTATE

  This.Enabled = .F.

  do form CUSTOMER

endif not SYSINFO.CHNGSTATE</pre>
<ul>
    <li>当然，这些代码是硬编码来打开CUSTOMER 表单，因为它是本例中指定的表单。在一个真正的应用程序中，你可以用一个管理对象在关闭表单将它注册到应用程序的INI文件中，管理器对象负责再次启动各个表单的备份。</li>
    <li>一个用于重建索引的表单，当用户开始重索引时或已完成时设置SYSINFO.CHNGSTATE 为 .T. 并启动计时器。正象我们已看到的那样，设置SYSINFO.CHNGSTATE 通知所有工作站上的所有打开的表单,它需要启动应用程序范围的计时器然后关闭它自己。重索引表单计时器使用试着以独占方式打开视图的方法来定期检查所有用户已经关闭视图。一但可以以独占方式打开视图，视图离线或联线 (首先更新源表),并且 SYSINFO.CHNGSTATE 设置回.F.(通知应用程序级计时器数据输入可以继续)。以下是REINDEX 表单的计时器对象的Timer() 事件的代码：</li>
</ul>
<pre>
with Thisform



* Disable 计时器(因此当我们执行这此代码时它不会激活)

* 并看我们是否可以以独占方式打开该视图。



  This.Enabled = .F.

  .CloseTables()

  select 0

  use LV_CUSTOMER exclusive

  do case
</pre>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.jb-accp/Blog1/article.asp?id=171" /> 
	  <id>http://www.jb-accp/Blog1/default.asp?id=171</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[在POWER BUILDER中使用WINSOCK控件]]></title>
	  <author>
		 <name>accp</name>
		 <uri>http://www.jb-accp/Blog1/</uri>
		 <email>Nolan8@VIP.QQ.com</email>
	  </author>
	  <category term="" scheme="http://www.jb-accp/Blog1/default.asp?cateID=17" label="学习资料" /> 
	  <updated>2008-11-21T17:52:44+08:00</updated>
	  <published>2008-11-21T17:52:44+08:00</published>
		  <summary type="html"><![CDATA[<div>---- 随着资源共享和实时通讯的需要，很多计算机应用程序早已甩开单兵作战的模式，转入联合行动。 <br />
<br />
---- 网络在计算机世界里，越来越发挥着举足轻重的作用。在WINDOWS应用程序中，处理实时通讯最常用到的还是MICROSOFT公司提供的WINSOCK控件。许多资料都细述了WINSOCK在VB中的使用方法，就连WINDOWS本身提供的hlp文件也是针对VB而写的。笔者因为实际应用的需要，琢磨出了WINSOCK控件在PB中的应用方法。好东西不敢独自享用，拿出来与大家共享。 <br />
<br />
---- 下面以一个简单程序为例，说明WINSOCK控件在PB中的使用： <br />
<br />
---- 一、在窗口中添加WINSOCK控件： <br />
<br />
---- 在应用中新开一个窗口，在窗口画板中点击controls--&gt;OLE菜单项，弹出Insert object窗口，单击Insert control标签，从列表框中双击选定Microsoft Winsock control，将winsock的图标贴在窗口上。 <br />
<br />
---- 在程序中该控件名称定为winsock_a（甲方）和winsock_b（乙方）。 <br />
<br />
---- 二、设置信息输入输出文本框： <br />
<br />
---- 在窗口中增加一个按钮cb_1,两个单行文本框sle_1,sle_2，分别用于输入要发送的字符串和接受对方发送的字符串。 <br />
<br />
---- 三、设置通讯协议： <br />
<br />
---- WINSOCK控件允许用户以UDP和TCP两种协议中任选一种进行通讯。 <br />
<br />
---- 1.UDP协议设置：UDP协议是一种无连接的通讯协议，在通讯之前，需要绑定remotehost和remoteport属性，如果需要双向通讯，还要设置localport属性。 <br />
<br />
---- 在甲方（本机地址为：134.1.1.1)窗口的Open事件中加入如下语句： <br />
<br />
winsock_a.object.protocol=1 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//winsock通讯协议设为UDP协议 <br />
winsock_a.object.remotehost=&quot;134.1.1.2&quot; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//对方的ip地址 <br />
winsock_a.object.remoteport=6000 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//对方的winsock通讯端口号 <br />
winsock_a.object.localport=6001 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//本机的winsock通讯端口号 <br />
winsock_a.object.bind&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//绑定通讯协议 <br />
<br />
---- 在乙方（本机地址为：134.1.1.2)窗口的Open事件中加入如下语句： <br />
<br />
winsock_b.object.protocol=1 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//winsock通讯协议设为UDP协议 <br />
winsock_b.object.remotehost=&quot;134.1.1.1&quot; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//对方的ip地址 <br />
winsock_b.object.remoteport=6001 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//对方的winsock通讯端口号 <br />
winsock_b.object.localport=6000 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//本机的winsock通讯端口号 <br />
winsock_b.object.bin <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//绑定通讯协议&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<br />
---- 2.TCP协议设置：TCP协议在通讯前需要进行连接。 <br />
<br />
---- 在甲方（作为服务器端）窗口的Open事件中加入如下语句： <br />
<br />
winsock_a.object.protocol=0 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//winsock通讯协议设为TCP协议 <br />
winsock_a.object.localport=6001 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//本机的winsock通讯端口号 <br />
winsock_a.listen() <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//启动监听 <br />
<br />
---- 在甲方winsock_a控件的Connectionrequest事件中加入如下语句： <br />
<br />
//接受到对方的连接请求后 <br />
if winsock_a.object.state&lt; &gt;0 then <br />
winsock_a.close() <br />
end if <br />
winsock_a.accept(requestID) <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//建立直接连接 <br />
//requestID是Connectionrequest事件自己的参数 <br />
<br />
---- 在乙方（作为客户端）窗口的Open事件中加入如下语句： <br />
<br />
winsock_b.object.protocol=0 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//winsock通讯协议设为TCP协议 <br />
winsock_b.object.remotehost=&quot;134.1.1.2&quot; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//对方的ip地址 <br />
winsock_b.object.remoteport=6000 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//对方的winsock通讯端口号 <br />
winsock_b.connect()&nbsp;&nbsp;//发出连接请求 <br />
<br />
---- 3.无论采用哪种协议，都要在窗口的Close事件中加入如下语句： <br />
<br />
if winsock_a/*或winsock_b*/.object.state&lt; &gt;0 then <br />
winsock_a.close() <br />
end if <br />
<br />
---- 否则可能第二次使用时发生异常问题 <br />
<br />
---- 三、开始通讯 <br />
<br />
---- 在按钮cb_1（caption属性设为&lsquo;发送&rsquo;）的click事件中加入如下语句： <br />
<br />
winsock_a/*或winsock_b*/.object.send (sle_1.text) <br />
<br />
---- 在winsock_a/*或winsock_b*/控件的dataarrival事件中加入如下语句： <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;//接受到对方数据后 <br />
&nbsp;&nbsp;&nbsp;&nbsp;string datastr1 <br />
&nbsp;&nbsp;&nbsp;&nbsp;winsock_a/*或winsock_b*/.object.getdata (def datastr1) <br />
&nbsp;&nbsp;&nbsp;&nbsp;sle_2.text=datastr1&nbsp;&nbsp;//将数据字符串显示在文本框中 <br />
<br />
---- 以上程序实际上体现了聊天器的底层工作原理，稍加修改扩充就可以做成一个很好的聊天软件。</div>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.jb-accp/Blog1/article.asp?id=170" /> 
	  <id>http://www.jb-accp/Blog1/default.asp?id=170</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[限制应用程序只运行一次]]></title>
	  <author>
		 <name>accp</name>
		 <uri>http://www.jb-accp/Blog1/</uri>
		 <email>Nolan8@VIP.QQ.com</email>
	  </author>
	  <category term="" scheme="http://www.jb-accp/Blog1/default.asp?cateID=17" label="学习资料" /> 
	  <updated>2008-11-21T17:52:44+08:00</updated>
	  <published>2008-11-21T17:52:44+08:00</published>
		  <summary type="html"><![CDATA[<div>32位操作系统中，可以用两种方法实现： <br />
　　1．首先在global external functions声明外部函数如下: <br />
　　FUNCTION long FindWindowA( ulong Winhandle, string wintitle ) Library &Prime;user32&Prime; <br />
　　然后在application的 Open 事件中加入如下代码: <br />
　　ulong l_handle, lu_class <br />
　　string ls_name <br />
　　ls_name = &Prime;我的系统&Prime; ／／ 此处ls_name为系统主窗口的标题Title <br />
　　l_handle = FindWindowA(lu_class, ls_name) <br />
　　if l_handle &gt; 0 then <br />
　　MessageBox(&Prime;提示信息&Prime;, &Prime;应用程序&Prime; ＋ This.AppName ＋ &Prime;已经运行,不能多次启动！&Prime;) <br />
　　Halt Close <br />
　　else <br />
　　open(w_main) ／／ 此处为系统主窗口 <br />
　　end if <br />
　　这种方法是PowerBuilder联机帮助中的一个例子，是以系统主窗口的标题Title作为判别依据，若有其它与此Title同名应用程序在运行，再想启动此程序也会报应用程序已经运行。你可以将Title设为&ldquo;计算器&rdquo;，然后启动Windows附件中计算器程序，再运行你的PB应用程序试试。 <br />
<br />
<br />
　　2．声明外部函数： <br />
　　function ulong CreateMutexA (ulong lpMutexAttributes, int bInitialOwner, ref string lpName) library &Prime;kernel32.dll&Prime; <br />
　　function ulong GetLastError () library &Prime;kernel32.dll&Prime; <br />
　　然后在application的 Open 事件中加入如下代码: <br />
　　ulong ll_mutex, ll_err <br />
　　string ls_mutex_name <br />
　　if handle (GetApplication (), false) &lt;&gt; 0 then <br />
　　ls_mutex_name = this.AppName ＋ char (0) <br />
　　ll_mutex = CreateMutexA (0, 0, ls_mutex_name) <br />
　　ll_err = GetLastError () <br />
　　if ll_err = 183 then <br />
　　／／ 程序已经运行 <br />
　　MessageBox (&Prime;提示信息&Prime;, &Prime;程序已经运行了！&Prime;) <br />
　　Halt close <br />
　　else <br />
　　／／ 程序未运行 <br />
　　open(w_main) <br />
　　end if <br />
　　else ／／开发模式 <br />
　　open(w_main) <br />
　　end if <br />
&nbsp;&nbsp;&nbsp;&nbsp;这种方法必须在应用程序编译成可执行文件.exe后才有效.</div>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.jb-accp/Blog1/article.asp?id=169" /> 
	  <id>http://www.jb-accp/Blog1/default.asp?id=169</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[TurboLinux 下的SYBASE安装]]></title>
	  <author>
		 <name>accp</name>
		 <uri>http://www.jb-accp/Blog1/</uri>
		 <email>Nolan8@VIP.QQ.com</email>
	  </author>
	  <category term="" scheme="http://www.jb-accp/Blog1/default.asp?cateID=17" label="学习资料" /> 
	  <updated>2008-11-18T20:35:56+08:00</updated>
	  <published>2008-11-18T20:35:56+08:00</published>
		  <summary type="html"><![CDATA[<p>配置Turbo&nbsp;Linux&nbsp;+&nbsp;ASE&nbsp;12.5&nbsp;数据库服务器 <br />
<br />
一、Turbo&nbsp;Linux&nbsp;安装过程： <br />
将Turbo&nbsp;Linux&nbsp;安装插入光驱，CMOS设置为光驱启动，启动计算机，键入回车，进入Turbo&nbsp;&nbsp;Linux的默认的图形模式的安装过程，各选项设置如下： <br />
键盘：默认 <br />
鼠标：默认 <br />
磁盘分区：TFDisk图形化磁盘分区 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;分区类型 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Boot区：&nbsp;&nbsp;　&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;64Ｍ　　&nbsp;&nbsp;&nbsp;　Linux&nbsp;ext2 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Root区：　　&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5120M&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Linux&nbsp;ext3 <br />
　　　　　Dos&nbsp;Extent分区： <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Swap区：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4个512M&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Swap <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Home区：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3072M&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Linux&nbsp;ext3 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Home1区：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;20480M&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Linux&nbsp;ext3 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Home2区：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;剩余空间&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Linux&nbsp;ext3 <br />
安装LILO：安装位置&nbsp;&nbsp;&nbsp;硬盘的主引导区 <br />
设置网络：不使用DHCP动态分配IP地址，静态设置本机的IP，网关，广播等信息 <br />
设置时区：PRC <br />
设置帐号：设置ROOT的口令 <br />
安装类型：全部&nbsp;&nbsp; <br />
配置显示器：显示模式为65536色，分辨率为：1024*768&nbsp;窗口管理器：KDE <br />
测试X配置，如能正常显示，按Y确认，否则按N，重新选择色彩和分辨率 <br />
直至能正常显示窗口。 <br />
确认设置：确认您的设置是否正确，一旦开始安装，这个过程不能停顿。 <br />
设置安全级：中级 <br />
完成安装。 <br />
<br />
二、ASE&nbsp;12.5的安装过程： <br />
1：键入startx&nbsp;进入KDE窗口管理器，插入SYBASE安装盘，将盘中的压缩文件拷入某目录下。 <br />
&nbsp;&nbsp;&nbsp;执行：tar&nbsp;zxvf&nbsp;EBF10431.tgz <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cd&nbsp;ebf10431/RPMS <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rpm&nbsp;&ndash;hiv&nbsp;sybase-common* <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rpm&nbsp;&ndash;hiv&nbsp;sybase-ase* <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rpm&nbsp;&ndash;hiv&nbsp;Sybase-chinese* <br />
2:&nbsp;chown&nbsp;sybase&nbsp;/home* <br />
&nbsp;&nbsp;chgrp&nbsp;sybase&nbsp;/home* <br />
&nbsp;&nbsp;chmod&nbsp;+777&nbsp;/opt/sybase-12.5/locales/locales.dat <br />
3:&nbsp;xhost&nbsp;+&nbsp; <br />
&nbsp;&nbsp;su&nbsp;&ndash;&nbsp;sybase <br />
&nbsp;&nbsp;cd&nbsp;/home <br />
&nbsp;&nbsp;mkdir&nbsp;sybase <br />
export&nbsp;DISPLAY=IP:0.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IP为欲安装机器的IP地址 <br />
&nbsp;&nbsp;asecfg&nbsp;进入图形化的SYBASE配置界面： <br />
4：配置SYBASE <br />
&nbsp;&nbsp;&nbsp;选择configure&nbsp;a&nbsp;news&nbsp;server&nbsp;&nbsp; <br />
a)将Adaptive&nbsp;Server&nbsp;的名字改为SYBASE(大写) <br />
&nbsp;&nbsp;Backup&nbsp;Server&nbsp;的名字改这SYBASE_backup <br />
&nbsp;&nbsp;Master&nbsp;device&nbsp;path:&nbsp;&nbsp;&nbsp;&nbsp;/home/sybase/master.dat <br />
&nbsp;&nbsp;Master&nbsp;database&nbsp;size:&nbsp;&nbsp;&nbsp;20 <br />
&nbsp;&nbsp;Sybsystemprocs&nbsp;device&nbsp;path:&nbsp;&nbsp;&nbsp;/home/sybase/sysprocs.dat <br />
&nbsp;&nbsp;Error&nbsp;log&nbsp;path:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/home/sybase/SYBASE.log <br />
&nbsp;&nbsp;Host&nbsp;name:&nbsp;&nbsp;IP&nbsp; <br />
&nbsp;&nbsp;Port&nbsp;number:&nbsp;770* <br />
b)选择Edit&nbsp;Adanced&nbsp;Adaptive&nbsp;Server&nbsp;Attibutes进入Server&nbsp;Attribute&nbsp;Editor: <br />
&nbsp;&nbsp;SYBASE: <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Configuration&nbsp;file&nbsp;path:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/home/sybase/SYBASE.cfg <br />
&nbsp;&nbsp;SYBASE_backup <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Error&nbsp;log&nbsp;path:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/home/sybase/SYBASE_backup.log <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Host&nbsp;name:&nbsp;IP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Port&nbsp;number:770*&nbsp;&nbsp;（注意不能与SYBASE的端口号重复） <br />
选择Buile&nbsp;Server <br />
c)创建完系统库后,在本地化服务器中设置语言为English,字符集(charset)为Code&nbsp;Page&nbsp;850 <br />
排序规则为binary&nbsp;ordering&nbsp;,for&nbsp;use&nbsp;with&nbsp;Code&nbsp;page&nbsp;850,&nbsp;Backup&nbsp;Server不用设置本地化。 <br />
<br />
三、ASE12.5的参数配置. <br />
以2G内存为例： <br />
1、 修改LINUX的共享内存参数： <br />
其中nnn为系统的实际内存（以字节为单位nnn=2147483647） <br />
修改文件：/etc/rc.local&nbsp;加入一行： <br />
&nbsp;&nbsp;&nbsp;echo&nbsp;nnn&nbsp;&gt;;&nbsp;/proc/sys/kernel/shmmax <br />
&nbsp;&nbsp;&nbsp;启动后生效 <br />
2、 isql&nbsp;&ndash;Usa <br />
a) 配置内存&nbsp;&nbsp;&nbsp;&nbsp; <br />
sp_configure&nbsp;&lsquo;max&nbsp;memory&rsquo;,mmm&nbsp;(单位为2K&nbsp;&nbsp;mmm=786432) <br />
go <br />
sp_configure&nbsp;&lsquo;allocate&nbsp;max&nbsp;shared&nbsp;mem&rsquo;,1 <br />
go <br />
上面的命令配置sybase使用mmm*2K的内存，通常配置为系统内存的60-70%，重起生效。如SYBASE无法正常启动，请调整SYBASE.cfg文件将max&nbsp;memory参数调小。 <br />
b) 上述参数生效后，配置data&nbsp;cache&nbsp;和&nbsp;procedure&nbsp;cache: <br />
sp_cacheconfig&nbsp;&lsquo;default&nbsp;data&nbsp;cache&rsquo;,&rsquo;xxxM&rsquo;&nbsp;&nbsp;&nbsp;(xxx=768) <br />
go <br />
通常配置为max&nbsp;memory的50%，以M为单位,重起生效 <br />
sp_configure&nbsp;&lsquo;procedure&nbsp;cache&nbsp;size&rsquo;,xxx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(xxx=157286) <br />
go <br />
通常配置为max&nbsp;memory的20%，以2K为单位 <br />
sp_configure&nbsp;&lsquo;allocate&nbsp;max&nbsp;shared&nbsp;mem&rsquo;,0 <br />
go <br />
c) number&nbsp;of&nbsp;devices(40),&nbsp;open&nbsp;databases(20),&nbsp;number&nbsp;of&nbsp;locks(20000), <br />
number&nbsp;of&nbsp;user&nbsp;connections(50),open&nbsp;objects(5000)参数可在中石化帐套设置中调整参数。 <br />
d) 调整bcp&nbsp;配置 <br />
1.调整扩展分配 <br />
sp_configure&nbsp;&lsquo;number&nbsp;of&nbsp;pre-allocated&nbsp;extent&rsquo;,20 <br />
go <br />
&nbsp;&nbsp;&nbsp;2．配置I/O的缓冲池 <br />
sp_poolconfig&nbsp;&lsquo;default&nbsp;data&nbsp;cache&rsquo;,&rsquo;256M&rsquo;,&rsquo;16K&rsquo; <br />
e) 调整改开的索引数量 <br />
sp_configure&nbsp;&lsquo;number&nbsp;of&nbsp;open&nbsp;indexes&rsquo;,&nbsp;4000 <br />
<br />
四、配置TELNET&nbsp;服务： <br />
1、 改/etc/xinetd.d/telnet文件： <br />
将disable选项改为no <br />
修改/etc/hosts.allow文件,增加一行ALL:&nbsp;Ip.*.* <br />
2、 开放root&nbsp;登录，修改/etc/pam.d/login文件，将第二行加#注释 <br />
3、 启动telnet服务 <br />
cd&nbsp;/etc/rc.d/init.d <br />
./xinetd&nbsp;start <br />
用netstat&nbsp;&ndash;tl&nbsp;看是否激活服务 <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;五、启动FTP服务： <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cd&nbsp;/usr/sbin <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;./proftpd&nbsp;restart <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
六、如何修改本地BACKUP&nbsp;SERVER的名称 <br />
1、 修改interfaces文件，将backup&nbsp;server的名称换成新名称 <br />
2、 进入isql&nbsp;工具 <br />
sp_configure&nbsp;&lsquo;allow&nbsp;updates&rsquo;,1 <br />
update&nbsp;sysservers&nbsp;set&nbsp;&nbsp;where <br />
sp_configure&nbsp;&lsquo;allow&nbsp;updatses&rsquo;,0 <br />
<br />
七、如何实现SYBASE的远程备份（通过本地的BACKUP&nbsp;SERVRE服务连接到远程的BACKUP&nbsp;SERVER服务，将远程的数据库备份到远程机器上。） <br />
在本地机器上： <br />
　　　　１、修改interfaces文件,添加远程机器上Backup&nbsp;Server的条目(Backup&nbsp;Server的名称,地址,端口号)&nbsp; <br />
２、在sysservers系统表中添加远程Backup&nbsp;Server名 <br />
　　1&gt;;sp_addserver　REMOTE_BACKUP_SERVER_NAME&nbsp;,null <br />
　　　　　　2&gt;;go <br />
　　　　３、使用sp_helpserver查看至少存在以下3个条目: <br />
　　　　　　&mdash;&mdash;本地ASE名称 <br />
　　　　　　&mdash;&mdash;本地Backup&nbsp;Server名称 <br />
&mdash;&mdash;远程Backup&nbsp;Server名称 <br />
４、在本地机器上实现远程备份： <br />
1&gt;;dump&nbsp;database&nbsp;Database_Name&nbsp;to&nbsp;&quot;remote_machine_path/...&quot;&nbsp;at&nbsp;Remote_Backupserver_Name <br />
2&gt;;&nbsp;go <br />
在本地机器上恢复备份: <br />
1&gt;;load&nbsp;database&nbsp;Database_Name&nbsp;from&nbsp;&quot;remote_machine_path/...&quot;&nbsp;at&nbsp;Remote_Backupserver_Name <br />
2&gt;;&nbsp;go <br />
注意：１、如果要实现远程的双向备份,请在远程机器上做与本地机器相同的配置. <br />
　　２、本地的Backup&nbsp;Server的名称要求与远程的Backup&nbsp;Server的名称不一样 <br />
<br />
八、如何实现将SYBASE的远程数据库备份到本地 <br />
　　１、修改interfaces文件，添加一个新条目，目的是通过此条目连接到到远程机器的SERVER(名称,远程SERVER的ＩＰ地址,远程SERVER服务的端口号)&nbsp; <br />
　　２、通过ASECFG配置一个新的BACKUP&nbsp;SERVER,在related&nbsp;server&nbsp;name项中选择刚才在interfaces文件中添加的条目名称。 <br />
３、在sysservers系统表中添加本地新Backup&nbsp;Server名称 <br />
　　1&gt;;sp_addserver　NewBackup_Server_Name&nbsp;,null <br />
　　　　　　2&gt;;go <br />
４、在本地机器上实现远程备份： <br />
1&gt;;dump&nbsp;database&nbsp;Remote_Database_Name&nbsp;to&nbsp;&quot;Local_machine_path/...&quot;&nbsp;at&nbsp;NewBackupserver_Name <br />
2&gt;;&nbsp;go <br />
在本地机器上恢复备份: <br />
1&gt;;load&nbsp;database&nbsp;Remote_Database_Name&nbsp;from&nbsp;&quot;local_machine_path/...&quot;&nbsp;at&nbsp;NewBackupserver_Name <br />
2&gt;;&nbsp;go <br />
5、&nbsp;启动新配的Backup&nbsp;Server服务 <br />
startserver&nbsp;&ndash;f&nbsp;&nbsp;RUN_NewBackupName_back <br />
关闭服务 <br />
１&gt;; shutdown&nbsp;NewBackup_Server_Name <br />
２&gt;; go <br />
<br />
九、如何备份数据量大于2G的数据库 <br />
１&gt;; dump&nbsp;database&nbsp;pubs2&nbsp;to&nbsp;&ldquo;/Path/pubs2_dump.1&rdquo; <br />
２&gt;; stripe&nbsp;on&nbsp;&ldquo;/Path/pubs2_dump.2&rdquo; <br />
３&gt;; stripe&nbsp;on&nbsp;&ldquo;/Path/pubs2_dump.3&rdquo; <br />
４&gt;; go <br />
这种方法还可以提高后备及恢复的速度，但注意恢复也必须用相应多的设备。例如： <br />
1&gt;;load&nbsp;database&nbsp;pubs2&nbsp;from&nbsp;&quot;/Path/pubs2_dump.1&quot; <br />
2&gt;;stripe&nbsp;on&nbsp;&quot;/Path/pubs2_dump.2&quot; <br />
3&gt;;stripe&nbsp;on&nbsp;&quot;/Path/pubs2_dump.3&quot; <br />
4&gt;;go <br />
<br />
十、常用命令 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1、查LINUX的版本: <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uname&nbsp;&ndash;a <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2、如何在LINUX下使用新增加的硬盘 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LINUX采用下面的形式定义一个IDE硬盘 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/dev/hd[drive][partition] <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;每个IDE驱动器从字母a开始标记。所以在第一个链上的主（master）硬盘为a,从（slave）硬盘为b，第二个链上的主硬盘为c,等等，每个硬盘上的分区用数字来标识。每个SCSI硬盘使用相同的方式来标识，只是把/dev/hd换成/dev/sd <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;用fdisk对硬盘进行分区&nbsp;fdisk&nbsp;/dev/fdb(/dev/sdb) <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在分区上创建相应的文件系统&nbsp;mke3fs&nbsp;/dev/hdb1(/dev/sdb1) <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mount相应的分区到指定的目录&nbsp;&nbsp;mount&nbsp;/dev/hdb1(dev/sdb1)&nbsp;&nbsp;Directory <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;修改/etc/fstab表，加入相应的分区，以便在系统启动时自动加载相应的文件系统。 <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3、LINUX的dd命令语法 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dd&nbsp;if=/home1/cwbase1.dat&nbsp;of=/home2/cw.dat <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4、rpm&nbsp;命令用法 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rpm&nbsp;&ndash;Uiv&nbsp;Sybase-common*&nbsp;--nodeps&nbsp;&ndash;force <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(--relocate&nbsp;重新指定安装目录&nbsp;&nbsp;--nodeps&nbsp;非关联&nbsp;&ndash;force&nbsp;强制) <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5、查SYBASE的版本: <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;select&nbsp;@@version <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6、修改设备的动态属性 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sp_deviceattr&nbsp;DeviceName,&rsquo;dsync&rsquo;,false <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7、拷贝空的表结构: <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;select&nbsp;*&nbsp;into&nbsp;NewTableName&nbsp;where&nbsp;1=2 <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8、BCP操作 <br />
bcp&nbsp;cwbase1.dbo.ASHSJE&nbsp;out&nbsp;ashsje.bcp&nbsp;&ndash;c&nbsp;&ndash;Usa&nbsp;&ndash;P&nbsp;[&ndash;S(Connectname)] <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bcp&nbsp;cwbase1.dbo.ASHSJE&nbsp;in&nbsp;ashsje.bcp&nbsp;&ndash;c&nbsp;[&ndash;F(起始行)]&nbsp;[&ndash;L(中止行)]&nbsp;&ndash;Usa&nbsp;&ndash;P&nbsp;[&ndash;S(Connectname)] <br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9、启动备份服务及关闭相应的服务 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;starterver&nbsp;&ndash;f&nbsp;RUN_SYBASE_backup <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shutdown&nbsp;SYB_BACKUP<br />
&nbsp;</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.jb-accp/Blog1/article.asp?id=168" /> 
	  <id>http://www.jb-accp/Blog1/default.asp?id=168</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[ 表单与特殊对象]]></title>
	  <author>
		 <name>accp</name>
		 <uri>http://www.jb-accp/Blog1/</uri>
		 <email>Nolan8@VIP.QQ.com</email>
	  </author>
	  <category term="" scheme="http://www.jb-accp/Blog1/default.asp?cateID=17" label="学习资料" /> 
	  <updated>2008-11-14T18:22:39+08:00</updated>
	  <published>2008-11-14T18:22:39+08:00</published>
		  <summary type="html"><![CDATA[<div id="Content">
<p align="left">5.1 创建表单</p>
<p align="left">5.1.1 什么是表单</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;表单是用于实现网页浏览者与服务器（或者说网页所有者）之间交互的一种页面元素，在WWW上它被广泛用于各种信息的搜集和反馈。</p>
<p align="left">5.1.2 表单控件的类型</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;表单通常由两类元素构成：一是普通的页面元素；二是用于接收信息的特定页面元素，也就是所谓的表单控件。</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;控件是表单中用于接收用户输入或处理的元素，典型的控件有：</p>
<ul>
    <li>
    <div align="left">文本框</div>
    </li>
    <li>
    <div align="left">密码框</div>
    </li>
    <li>
    <div align="left">多行文本框（文本区域）</div>
    </li>
    <li>
    <div align="left">复选框</div>
    </li>
    <li>
    <div align="left">单选框</div>
    </li>
    <li>
    <div align="left">选项（下拉）菜单</div>
    </li>
    <li>
    <div align="left">按钮</div>
    <ul>
        <li>
        <div align="left">提交按钮</div>
        </li>
        <li>
        <div align="left">重置按钮</div>
        </li>
        <li>
        <div align="left">普通按钮</div>
        </li>
    </ul>
    </li>
    <li>
    <div align="left">文件选择框</div>
    </li>
    <li>
    <div align="left">隐藏控件</div>
    </li>
    <li>
    <div align="left">对象控件</div>
    </li>
</ul>
<p align="left">&nbsp;&nbsp;&nbsp;对于每个控件，都有一个名称（由控件的name属性指定），该名称的有效范围是所在的表单。对于每个控件，都有一个初始值和一个当前值，这两个值都是字符串。控件的初始值是预先指定的，而当前值则根据用户的交互操作确定。</p>
<p align="left">5.1.3 FORM 标记符</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;FORM标记符的基本语法是：</p>
<p align="left">&lt;FORM action=服务器端程序的URL method=get|post [enctype=编码类型]&gt;</p>
<p align="left">&lt;!-- 此处是各种表单控件 --&gt;</p>
<p align="left">&lt;/FORM&gt;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;FORM标记符作为包含控件的容器，其内部不能再嵌入FORM标记符（即表单不能嵌套）。</p>
<p align="left">5.2 创建表单控件</p>
<p align="left">5.2.1 文本框与口令（密码）框</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;创建单行文本框的基本语法是：</p>
<p align="left">&lt;INPUT type=text name=&ldquo;控件名&rdquo; value=&ldquo;初始值&rdquo; size=nn maxlength=mm&gt;</p>
<p align="left">其中：type属性用于设置控件的类型，name属性用于指定控件的名称，value用于接收用户填写的数据，name与value属性都是后台程序处理表单数据时需要使用的，size属设置文本框的宽度，maxlength属性设置文本框的最大输入长度。</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;创建口令（密码）框的基本语法是：</p>
<p align="left">&lt;INPUT type=&ldquo;password&rdquo; name<br />
=&ldquo;控件名&rdquo; value=&ldquo;&rdquo; size=nn&gt;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;除type属性说明该控件是一个口令框（输入的字符以*号回显在输入框中）外，其它属性都同文本的对应属性。</p>
<p align="left">5.2.2 复选框与单选框</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;复选框和单选框都是允许用户进行选择的控件，常用于选择多种选项或选择互斥的选项。</p>
<p align="left">创建复选框的语法如下：</p>
<p align="left">&lt;INPUT type=&quot;checkbox&quot; name=控件名 value=控件值 [checked]&gt;选项文本</p>
<p align="left">创建单选框的语法如下：</p>
<p align="left">&lt;INPUT type=&quot;radio&quot; name=控件名 value=控件值 [checked]&gt;选项文本</p>
<p align="left">5.2.3 文件选择框</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;当需要用户在表单中选择文件，然后将选中文件的内容发送到服务器，则可以使用&ldquo;文件选择框&rdquo;控件。其语法是：</p>
<p align="left">提示文本：&lt;INPUT type=&quot;file&quot; <br />
name=控件名 size=nn&gt;</p>
<p align="left">5.2.4 按钮</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;当用户完成了表单的填写，可是单击表单中的提交按钮，将数据提交给服务器；如果想重新填写，可单击重置按钮，使用表单恢复到填写前的状态；另外，还可以在表单中使用自定义按钮，以便响应特定的事件。</p>
<p align="left">创建提交按钮的语法是：</p>
<p align="left">&lt;INPUT type=submit name=... value=...&gt;</p>
<p align="left">创建重置按钮的语法是：</p>
<p align="left">&lt;INPUT type=reset name=... value=...&gt;</p>
<p align="left">创建自定义按钮的语法是：</p>
<p align="left">&lt;INPUT type=button name=... value=...&gt;</p>
<p align="left">5.2.5 多行文本框</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;创建多行文本行的语法格式如下：</p>
<p align="left">&lt;TEXTAREA name=控件名 rows=xx cols=yy&gt;</p>
<p align="left">[默认文本]</p>
<p align="left">&lt;/TEXTAREA&gt;</p>
<p align="left">5.2.6 选项（下拉）菜单</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;可以使用选项菜单来让浏览者进行单项或多项选择。创建选项菜单的语法如下：</p>
<p align="left"><font face="Arial, Helvetica, sans-serif" size="5">&lt;Select name=... [[size=n] multiple]&gt;</font></p>
<p align="left"><font face="Arial, Helvetica, sans-serif" size="5">&nbsp;&nbsp;&lt;OPTION [label=..] value=.. [selected]&gt;选项1[&lt;/OPTION&gt;]</font></p>
<p align="left"><font face="Arial, Helvetica, sans-serif" size="5">&lt;OPTION [label=..] value=.. [selected]&gt;选项2</font></p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;...</p>
<p align="left"><font face="Arial, Helvetica, sans-serif" size="5">&lt;/Select&gt;</font></p>
<p align="left">5.3 设置控件的标签</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;为了使浏览者能更方便地选择或定位输入点，在网页设计时应该使浏览者在单击与某个控件相关的文本时，即选中该控件。实现此功能是通过LABLE标记符实现的。其语法格式如下：</p>
<div align="left">
<table width="94%" align="center">
    <tbody>
        <tr>
            <td><font face="Arial, Helvetica, sans-serif" size="5">&lt;LABEL for=&ldquo;control_ID&rdquo;&gt;标签文本&lt;/LABEL&gt;<br />
            &lt;INPUT id=&ldquo;control_ID&rdquo;&gt;</font></td>
        </tr>
    </tbody>
</table>
</div>
<p align="left">5.4 网页中的特殊对象</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;随着网络宽的不断加大，在网页中使用多媒体对象越来越普遍，如Flash动画等。</p>
<p align="left">5.4.1 OBJECT标记符和PARAM标记符</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;如果要将多媒体对象嵌入到网页中，应使用OBJECT标记符，它包括以下常用属性：</p>
<ul>
    <li>
    <div align="left">classid=URL 用于指定对象实现的位置</div>
    </li>
    <li>
    <div align="left">codebase=URL 用于指定由classid、data和archive属性指定相对路径的基准路径。</div>
    </li>
    <li>
    <div align="left">codetype=content-type 指定下载由classid所指定的对象时使用的数据类型。</div>
    </li>
    <li>
    <div align="left">data=URL 指定对象数据的位置</div>
    </li>
    <li>
    <div align="left">type=content-type 指定对象数据的内容类型。</div>
    </li>
    <li>
    <div align="left">archive=URL列表 此属性指定了一个由空格分隔的存档文件列表这此存档文件中可能包含由classid和data属性所指定的资源。</div>
    </li>
    <li>
    <div align="left">declare 将当前的OBJECT定义成为一个声明，而在后面引用此声明的OBJECT定义中实现该对象。</div>
    </li>
    <li>
    <div align="left">standby=text 用于指定装载对象数据时显示的简短说明。</div>
    </li>
    <li>
    <div align="left">align、border、width、height、hspace、vspace等 这些属性与在IMG标记符中使用方法相同。</div>
    </li>
</ul>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;在插入对象的同时，还需要使用PARAM标记符指定对象相关的参数。该标记符的常用属性如下：</p>
<ul>
    <li>
    <div align="left">name 定义了一个运行时参数的名称，此名称必须由所插入的对象识别。</div>
    </li>
    <li>
    <div align="left">value 定义了一个运行时参数的确值。</div>
    </li>
    <li>
    <div align="left">valuetype 指定了value属性的类型，可能的取值为：</div>
    <ul>
        <li>
        <div align="left">data 表示value属性指定的值作为一个字符串传递给对象，默认值。</div>
        </li>
        <li>
        <div align="left">ref 表示value属性指定的值是和个URL</div>
        </li>
        <li>
        <div align="left">object 表示value属性指定的值是一个指向同一文档中一个OBJECT声明的标识符，该标识符的值必须是声明的OBJECT标记的id属性值。</div>
        </li>
    </ul>
    </li>
    <li align="Left">
    <div align="left">type=content-type 当valuetype属性的值为ref时，此属性指定了URL所代表资源的内容类型。</div>
    </li>
</ul>
</div>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.jb-accp/Blog1/article.asp?id=167" /> 
	  <id>http://www.jb-accp/Blog1/default.asp?id=167</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[HSRP路由热备协议简介]]></title>
	  <author>
		 <name>accp</name>
		 <uri>http://www.jb-accp/Blog1/</uri>
		 <email>Nolan8@VIP.QQ.com</email>
	  </author>
	  <category term="" scheme="http://www.jb-accp/Blog1/default.asp?cateID=17" label="学习资料" /> 
	  <updated>2008-11-12T18:02:39+08:00</updated>
	  <published>2008-11-12T18:02:39+08:00</published>
		  <summary type="html"><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 所谓的热备份路由协议（HSRP）主要是向我们提供了这样一种机制，它的设计目的主要在于支持IP传输失败情况下的不中断服务。具体说，就是本协议用于在源主机无法动态地学习到首跳路由器IP地址的情况下防止首跳路由的失败。它主要用于多接入，多播和广播局域网（例如以太网）。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 当然HSRP并不是有意要取代现有的动态路由发现机制，而这些现有的路由协议仍可以继续使用只不过不是在任何可能的情况下。以前的大部分主机都不支持动态路由发现协议，他们是通过配置缺省路由来进行工作的。而HSRP却为它们提供了一种失败服务机制在HSRP中所涉及到的所有路由器都被假设为已经配好了合适的IP路由协议，并且也已经存在了若干条路由。 <br />
<br />
&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;热备份路由协议（HSRP）的目的在于使主机看上去只使用了一个路由器，并且即使在它当前所使用的首跳路由器失败的情况下仍能够保持路由的连通性。此协议中所涉及到的多路由器都映射为一个虚拟的路由器。本协议保证同时有且只有一个路由器在代表虚拟路由器进行包的发送。而终端则是把数据包发向该虚拟路由器。这个转发包的路由器被成为活路由器。如果这个活路由器在某个时候由于某种原因而无法工作的话，则那个备份的路由器将被选择来代替原来的活路由器。本协议为活路由器和备份路由器的定义提供了一种机制。在协议所设计到的路由器上使用IP地址，如果这个活路由器失效的话则那个备份路由器马上代替活路由器工作而不会在对主机的连通性上产生大的中断。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 在使用HSRP时，一组路由器的工作将一致的表现为局域网上通往主机的一个虚拟路由器的工作。这组路由器就称为一个 HSRP组，或备份组。这个组中将选出一个路由器来负责转发由主机发给虚拟路由器的数据包。这个路由器就是所谓的活路由器。另一台路由器将被选为备份路由器。在活路由器失效的情况下，备份路由器将承担活路由器的包的转发功能。即使你可以任意制定运行HSRP的路由器的数量，但只有活路由器才能转发发送给虚拟路由器的数据包。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 为了把网络阻塞降到最底限度，网络中只有活路由器和备份路由器可以在完成HSRP协议选择过程后发送一次HSRP消息包。如果活路由器失效，则备份路由器将取代它作为新的活路由器工作。而当备份路由器失效或者它变成了活路由器时，另外一个路由器将被选为备份路由器。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在某个局域网里，多个热备组可以共存和重叠。每个备份组都仿效一个虚拟路由器。对于每个备份组来说都有一个为别人所知的MAC地址，以及一个IP地址。而这个IP地址应该是这个局域网中第一个子网中的地址，但必须不同于设置在所有路由器端口上的地址和局域网中主机的地址，甚至包括为其他HSRP组设的地址。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果在一个局域网中设置了多个HSRP组，那么分配主机给不同的备份组就会使网络产生负载爆炸</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.jb-accp/Blog1/article.asp?id=166" /> 
	  <id>http://www.jb-accp/Blog1/default.asp?id=166</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[IT人才需求紧迫]]></title>
	  <author>
		 <name>accp</name>
		 <uri>http://www.jb-accp/Blog1/</uri>
		 <email>Nolan8@VIP.QQ.com</email>
	  </author>
	  <category term="" scheme="http://www.jb-accp/Blog1/default.asp?cateID=17" label="学习资料" /> 
	  <updated>2008-11-09T17:54:06+08:00</updated>
	  <published>2008-11-09T17:54:06+08:00</published>
		  <summary type="html"><![CDATA[<p>&nbsp;</p>
<p>　　由于Internet和IT技术的发展速度惊人。信息时代的知识成爆炸式的趋势扩展，人们刚刚掌握的资讯，很快地便过时了。IT技术膨胀的更新，自然会不断需求掌握崭新IT技能的人才操作；<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; 　一直以来，我国各类IT人才培养都由高校承担，这种单一的人才教育体制已经成为制约人才培养和产业发展的瓶颈。因为新理论和新技术一旦产生，往往由专家们著书写作，从教材编写、出版印刷、学校面授到学生毕业出校，往往滞后了几年，也就是说，学院的课程设置体系及教学内容流程很难与IT产品和技术同步更新。势必造成了学生在学院学习的IT知识和技能与毕业后实际的应用远远落后的状况。&ldquo;学非所用、用非所学&rdquo;确是学院传统教育的通病。<br />
&nbsp;&nbsp; <br />
&nbsp; 　&nbsp; 另外，学生在校往往是理论和知识有余，而实际动手能力和实践经验均不足，出校后他们不能马上适应企、事业工作的实际需要。如今，IT职场需要与世界接轨，IT认证培训的应运而生，是IT业发展的必然结果。近来，伴随着企、事业单位对IT人才需求量的不断增长，IT培训业已经迅速崛起并呈现逐日攀升的势头。</p>
<p>&nbsp;紧迫需求IT人才</p>
<p>1、 国外需求IT人才 <br />
&nbsp;&nbsp;&nbsp; 　美国经济发达，可谓领军全球；世界的名牌高校多达100余所，美国占了20所，然而仍然满足不了其IT市场对人才的需求。2002年北美的IT职位约有130万人员空缺：全球范围内，IT人才短缺也依然严重。</p>
<p>2、 中国渴求IT人才 <br />
&nbsp; 　 发达国家需要IT人才，中国呢？更为迫切！根据国家计委最新公布的数字，我国软件人才目前的数量是32万人，而国务院要求2005年达到80万。在未来3年内，每年至少存在20万软件人才的缺口。据最近结束的第六界软博会软件人才论坛会议提供的信息：软件企业的健康快速发展需要3类人才。第一类是既懂技术创新又懂管理的软件高级人才&mdash;&mdash;金领；第二类是系统分析及设计人员&mdash;&mdash;软件工程师，白领；第三类是熟练程序员&mdash;&mdash;软件蓝领。其中，一高一低两头的人才急缺。业内软件蓝领的需求将有15万人的空缺。另据国家教委有关信息提供：中国IT界共缺人才2000万人，如果以目前全国高校每年培训培养20万毕业生的规模计算，再需用100年也跟不上世界先进国家的规模和速度！</p>
<p>3、 企业急需IT人才 <br />
&nbsp;&nbsp;&nbsp; 　据有关信息显示，在未来5年里，中国对IT领域的人才需求是极为旺盛的。以中国的硅谷&mdash;&mdash;中关村为例：据不完全统计，中关村地区的高校包括北大、清华，每年有80的学生要求到国外深造，尤其是一些世界上尖端技术领域的IT人才。截然相反，在中关村的IT业内，人才的成长速度远远落后于IT业的发展，许多IT企业都面临着人才匮乏的窘境。请参阅下述5条信息： <br />
（1） 国家劳动和社会保障部近期公布的有关就业信息，中国十大城市紧迫需求的专业人才中，均有计算机信息和网络人员。 <br />
（2） 国家人事部近日公布的2002年第三季度人才市场供求信息表明：在北京等中国四十个主要城市的人才需求中，占第二位的则是计算机专业，达11.5万人。 <br />
（3） 据有关数据显示，香港地区的IT人才需求量为5万名，在京、沪、粤三地人才总需求中，网络人才占55，仅就广东省而言，该地区IT产业的腾飞至少也需要25万名以上的IT专业人才。 <br />
（4） 据《中国贸易报》2002年12月报道：北京最缺四种人才，在新世纪前五年，不包括党政国家机关，北京人才需要量位居前十五位的专业中，始终包括计算机软件、电子信息工程、IT工程与应及软件工程师方面。 <br />
（5） 据《中华英才网》发布的最新热门行业排位，目前计算机待业职位供应量在各行业中，仍居绝对优势。这一霸主的地位对今未能得到自其它行业的有力挑战。</p>
<p>&nbsp;</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.jb-accp/Blog1/article.asp?id=165" /> 
	  <id>http://www.jb-accp/Blog1/default.asp?id=165</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[直接报读北大公学中心第二期的九大理由 ]]></title>
	  <author>
		 <name>accp</name>
		 <uri>http://www.jb-accp/Blog1/</uri>
		 <email>Nolan8@VIP.QQ.com</email>
	  </author>
	  <category term="" scheme="http://www.jb-accp/Blog1/default.asp?cateID=17" label="学习资料" /> 
	  <updated>2008-11-08T18:09:22+08:00</updated>
	  <published>2008-11-08T18:09:22+08:00</published>
		  <summary type="html"><![CDATA[<p><br />
&nbsp;&nbsp; <br />
理由一：IT氛围为职业发展提供更广阔的空间</p>
<p>&nbsp;&nbsp; 职场上人们都在追求好的薪酬回报，都在试图改变自己的生存环境，在职场上跳来跳去，寻求最好的职业发展空间。就业环境较好、发展潜力大、跳槽选择空间广、薪酬水平较高的IT行业自然对求职者来说极具吸引力。<br />
&nbsp;&nbsp; 北京IT行业代表着中国IT行业发展的最高水平。北京IT企业云集，中关村、中关园、亦庄软件园等聚集着几千家IT企业，IT行业的发展已经成为北京乃至全国重点发展的支柱性行业，它是突破传统劳动密集型行业、凸现技术型人才、科技含量相对较高的朝阳行业，行业的发展急需专业性IT职业化人才，企业间的激烈竞争越来越转变为IT人才的竞争。<br />
&nbsp;&nbsp; 2008年，中华英才网公布的相关职位需求数据显示：北京IT职位需求占全部职位需求的31.4% ，IT从业人员的薪水平均在4500&mdash;5700之间，超出在职人员平均月薪的21.7%，有关数据显示，由于众多知名IT企业对实战经验丰富的IT人才求贤若渴、高薪诚聘。另一方面，因此带来的IT从业人员的跳槽也变得络绎不绝。职位选择的空间相当大，也就成为IT职场一道独特的亮丽的独特风景线。</p>
<p>&nbsp;&nbsp; 有关专家指出：IT行业人才的紧缺现象将会持续相当长一段时间，IT从业人员只要具备两年以上的项目开发经验、 月薪一般都在5000元以上。<br />
&nbsp;&nbsp; 据北大青鸟北大公学中心毕业学员毕业状况显示：学员毕业两年的薪水一般都比试用期薪水高出一倍，甚至更多。北京IT氛围好已经成为IT行业发展的突出代表，也为IT从业人员的发展和提供更广阔的空间。</p>
<p>理由二：三大评测系统为学员升学就业提供依据</p>
<p>&nbsp;&nbsp; 北大青鸟北大公学中心依托北大百年教育资源，沿袭国际著名品牌APTECH的方法，在教学过程中总结出多模式教学方法，针对学员开展入学测评、升学评测、就业评测。<br />
&nbsp;&nbsp; 针对直接报读北大青鸟北大公学中心二期学员，北大青鸟北大公学中心针对学员兴趣、学习能力、接受能力、性格特点，对入学二期学员进行升学测评，根据成绩评测一学期的掌握的专业技能、项目经验、职业素质是否达到课程目标，并结合企业需求，结合学员自身条件和学习成果，为学员就业测评顺利通过提供依据和前提。<br />
&nbsp;&nbsp; 科学测评旨在尽力确保学员利益。职业教育是很多有志青年改变命运的唯一途径！投资教育的成本不止学费，更有时间和热情，甚至影响其一生。三大测评带给学员的利益是：避免盲目选择教育，避免不切实际的升学，避免进入不适合的企业。</p>
<p>理由三：项目化教学保障学员积累真实项目经验</p>
<p>应届毕业生求职难已经成为目前市场上的一大特点。</p>
<p>&nbsp;&nbsp; 究其原因：专业技能、职业素质不过硬，缺乏相关的工作经验，使很多企业把应届毕业生拒之门外的重要原因。企业尤其看重相关工作经验的具备，市场经济下，企业不再像以前那样，为员工进行委培和外派培养，企业招聘的前提是员工能直接为企业创造价值。</p>
<p>具备相关的工作经验成为在企业面前面试成功的重要砝码。</p>
<p>&nbsp;&nbsp; 北大青鸟北大公学中心自成立以来，学员就业率始终保持在96%以上，究其原因，与中心坚持项目化教学是分不开的。中心通过剖析时下主流企业的真实项目，通过阶段项目、项目案例、项目答辩等多种教学途径，确保学员学习过程中全方位接触到企业的真实项目，在学习的过程中具备丰富的项目开发经验，在学习专业技能的同时，积累大量丰富的工作经验。学员在毕业之后，不但拿到国际APTECH认证、国家劳动和社会保障部的职业资格认证，还具备两年的真实项目开发经验，为学员顺利融入企业、直接为企业创造价值提供全面保障。<br />
&nbsp;&nbsp; 学员毕业不仅具备专业的职业技能、良好的职业素职，最重要的具备丰富的真实项目开发经验。完全可以成为专业IT企业抢手的职业化软件、网络工程师人才，在企业的项目开发过程中成为中坚力量。</p>
<p><br />
理由四：专职班主任全程跟踪确保学员学习质量</p>
<p>北大青鸟有体系内资历最老的专职班主任团队。</p>
<p>&nbsp;&nbsp; 专职班主任全部拥有三年以上学员管理经验，通过开学典礼帮助学员树立职业发展目标，通过对日常出勤、考试、COT职业素质的跟踪指导，凭借大班委补课、家长会沟通等手段对学员进行严格的学习监督和全面管理。</p>
<p>&nbsp;&nbsp; 针对直接报读北大青鸟北大公学二期的学员，中心班主任通过职业素质导向和全程电子跟踪管理系统，确保学员听得懂、学得会，与此同时，针对学员专业技能掌握情况，及时予以访谈，并給与及时解决，确保学员不掉队。</p>
<p>&nbsp;&nbsp; 班主任每天跟班巡视是北大青鸟北大公学中心教学过程中的一大特色，办主任对管辖班级学员采取全程跟踪、每天同学员一起，解决学员学习过程中出现的各种学习、生活问题。确保学员全身心投入专业知识技能的学习、职业素质的全面提升、真实项目经验的积累等个人就业竞争力的提升上来。</p>
<p>&nbsp;&nbsp; 班主任控制和确保学员在学习过程中的学习质量是提升就业质量的重要手段，也是学员顺利进入企业实现顺利高薪就业的重要保障。</p>
<p>理由五：项目开发经验丰富的项目经理亲临执教</p>
<p>&nbsp;&nbsp;&nbsp; 北大青鸟北大公学中心教员全部拥有三年以上项目开发经验、两年以上教学经验职业化精英IT人才执教。在中心30余名软件、网络工程师的教员中超过30%在就职过程中担任过项目经理。86%以上的教员多次从事过国家级项目开发和组建工作。例如：中国联通165带外网管网、鲁能泰山ERP系统、石家庄车辆厂的车辆MIS系统的分析设计、用友U8－ERP预算管理等。</p>
<p>&nbsp;&nbsp; 中心教员通过严格的选拔、通过总部专业资格、教师双项认证才能上岗，教学过程中，北大青鸟北大公学中心教员采用多模式教学方法，确保学员听得懂、学得会，并能动手实际进行项目的开发和管理。</p>
<p>&nbsp;&nbsp; 与此同时，北大青鸟北大公学中心长期与总部学术部专家保持联系，并多次聘请总部学术部专家亲临中心，为学员进行新技术专业知识的讲解和答疑，全面解决学员专业技能的熟练度、主流性和前卫性，全面提升学员就业竞争力。</p>
<p><br />
理由六：全程电子跟踪管理系统为教学保驾护航</p>
<p><br />
2007年，北大青鸟北大公学中心全面启动学员全程电子跟踪管理系统。</p>
<p>&nbsp;&nbsp;&nbsp; 学员全程电子跟踪管理系统是北大青鸟北大公学中心独有的学员在校学习、出勤、考试、项目答辩等一系列在校状况的综合跟踪管理系统。是班主任对学员进行管理的重要手段之一。通过全程跟踪管理系统，学员的在校学习等表现情况能阶段性展现在班主任面前，有利于班主任对学员进行及时辅导和访谈。</p>
<p>&nbsp;&nbsp; 全程电子跟踪管理系统，是学员学得会不掉队的有力保障，也是学员掌握专业的实用技能、具备丰富的实战经验和良好的职业素质，顺利实现高质就业的重要保障，更是学员就业率始终保持96%以上的重要手段。</p>
<p>理由七：就业部专职就业老师全程就业指导跟踪</p>
<p>&nbsp;&nbsp; 北大青鸟北大公学中心在COT职业素质训练的基础上，中心专职就业指导老师为学员提升简历撰写、面试能力和技巧，就业部专职就业指导老师针对自己特点，分阶段进行就业指导、简历指导和面试技巧的培训，专门邀请合作企业人力资源部专家亲临中心为我们进行面试技巧的讲解和点评。全面提升学员面试应变能力，提升学员就业竞争力。</p>
<p>&nbsp;&nbsp; 通过就业指导和模拟面试，确保学员掌握面试中需要关注的关键环节和应对技巧，这在自己最后的面试中起到了关键性的作用。学员在面试中充分展现自身专业技能和良好的心理素质、以及职业素质。</p>
<p>&nbsp;&nbsp; 就业部专职就业老师根据每一个即将毕业的班级学员状况，与不同的企业需求进行沟通和磋商人才输出事宜，企业到中心对学员进行集中企业招聘会，在中心招聘会上所表现出的对人才的紧缺与招聘会上呈现出的求职艰难形成的强烈对比。这也是中心学员就业好的有力见证。</p>
<p>理由八：全程专家级就业指导推荐</p>
<p>&nbsp;&nbsp; <br />
&middot;就业空间选择大：依托强大的总部就业网络，丰富的就业资源供您选择；</p>
<p><br />
&middot;就业企业名气高：国内外知名企业与就业基地保持长期人才合作，做到就业进名企；</p>
<p><br />
&middot;就业薪资水平高：总部资深专家全程推荐，薪水有保障；</p>
<p><br />
&middot;就业保障力度强：强大的三重就业网络，让您就业无忧！</p>
<p><br />
&nbsp;&nbsp;&nbsp; 北大青鸟总部就业专家长期在中心办公，为中心学员提供全面的就业跟踪和就业推荐，全面保障学员优质就业。</p>
<p>理由九：合作企业与中心共同保障学员优质就业</p>
<p>&nbsp;&nbsp;&nbsp; 企业评定：我们看中他们的不仅仅是对专业技能的熟练掌握，更看重他的良好职业素质、团队协作、项目沟通和抗压、学习能力，相信他会在我们这里得到一个长足的发展，在此也感谢北大青鸟北大公学中心为我们培养这样的优秀人才&hellip;&hellip;<br />
&nbsp; 北大青鸟北大公学中心与京城400余家签约合作企业为学员的就业全力保障，北大青鸟北大公学凭借出色的教学质量、严格的学员管理和完善的就业体系，保障学员掌握专业的职业技能、丰富的实战经验和良好的职业素质。为学员直接进入企业实现高薪就业提供支持。<br />
&nbsp; 中心自2000年成立以来，先后培养软件、网络工程师人才近万人，先后与京城数百家知名IT企业合作，成为京城拥有良好的教学、就业口碑的知名培训机构。</p>
<p>&nbsp;<br />
&nbsp;更多信息登陆：北大青鸟（北大公学）授权培训中心<a href="http://www.jb-accp.com">http://www.jb-accp.com</a></p>
<p><br />
理由一：IT氛围为职业发展提供更广阔的空间<br />
&nbsp;&nbsp; 职场上人们都在追求好的薪酬回报，都在试图改变自己的生存环境，在职场上跳来跳去，寻求最好的职业发展空间。就业环境较好、发展潜力大、跳槽选择空间广、薪酬水平较高的IT行业自然对求职者来说极具吸引力。<br />
&nbsp;&nbsp; 北京IT行业代表着中国IT行业发展的最高水平。北京IT企业云集，中关村、中关园、亦庄软件园等聚集着几千家IT企业，IT行业的发展已经成为北京乃至全国重点发展的支柱性行业，它是突破传统劳动密集型行业、凸现技术型人才、科技含量相对较高的朝阳行业，行业的发展急需专业性IT职业化人才，企业间的激烈竞争越来越转变为IT人才的竞争。<br />
&nbsp;&nbsp; 2008年，中华英才网公布的相关职位需求数据显示：北京IT职位需求占全部职位需求的31.4% ，IT从业人员的薪水平均在4500&mdash;5700之间，超出在职人员平均月薪的21.7%，有关数据显示，由于众多知名IT企业对实战经验丰富的IT人才求贤若渴、高薪诚聘。另一方面，因此带来的IT从业人员的跳槽也变得络绎不绝。职位选择的空间相当大，也就成为IT职场一道独特的亮丽的独特风景线。<br />
&nbsp;&nbsp; 有关专家指出：IT行业人才的紧缺现象将会持续相当长一段时间，IT从业人员只要具备两年以上的项目开发经验、 月薪一般都在5000元以上。<br />
&nbsp;&nbsp; 据北大青鸟北大公学中心毕业学员毕业状况显示：学员毕业两年的薪水一般都比试用期薪水高出一倍，甚至更多。北京IT氛围好已经成为IT行业发展的突出代表，也为IT从业人员的发展和提供更广阔的空间。<br />
理由二：三大评测系统为学员升学就业提供依据<br />
&nbsp;&nbsp; 北大青鸟北大公学中心依托北大百年教育资源，沿袭国际著名品牌APTECH的方法，在教学过程中总结出多模式教学方法，针对学员开展入学测评、升学评测、就业评测。<br />
&nbsp;&nbsp; 针对直接报读北大青鸟北大公学中心二期学员，北大青鸟北大公学中心针对学员兴趣、学习能力、接受能力、性格特点，对入学二期学员进行升学测评，根据成绩评测一学期的掌握的专业技能、项目经验、职业素质是否达到课程目标，并结合企业需求，结合学员自身条件和学习成果，为学员就业测评顺利通过提供依据和前提。<br />
&nbsp;&nbsp; 科学测评旨在尽力确保学员利益。职业教育是很多有志青年改变命运的唯一途径！投资教育的成本不止学费，更有时间和热情，甚至影响其一生。三大测评带给学员的利益是：避免盲目选择教育，避免不切实际的升学，避免进入不适合的企业。<br />
理由三：项目化教学保障学员积累真实项目经验<br />
应届毕业生求职难已经成为目前市场上的一大特点。<br />
&nbsp;&nbsp; 究其原因：专业技能、职业素质不过硬，缺乏相关的工作经验，使很多企业把应届毕业生拒之门外的重要原因。企业尤其看重相关工作经验的具备，市场经济下，企业不再像以前那样，为员工进行委培和外派培养，企业招聘的前提是员工能直接为企业创造价值。<br />
具备相关的工作经验成为在企业面前面试成功的重要砝码。<br />
&nbsp; 北大青鸟北大公学中心自成立以来，学员就业率始终保持在96%以上，究其原因，与中心坚持项目化教学是分不开的。中心通过剖析时下主流企业的真实项目，通过阶段项目、项目案例、项目答辩等多种教学途径，确保学员学习过程中全方位接触到企业的真实项目，在学习的过程中具备丰富的项目开发经验，在学习专业技能的同时，积累大量丰富的工作经验。学员在毕业之后，不但拿到国际APTECH认证、国家劳动和社会保障部的职业资格认证，还具备两年的真实项目开发经验，为学员顺利融入企业、直接为企业创造价值提供全面保障。<br />
&nbsp;&nbsp; 学员毕业不仅具备专业的职业技能、良好的职业素职，最重要的具备丰富的真实项目开发经验。完全可以成为专业IT企业抢手的职业化软件、网络工程师人才，在企业的项目开发过程中成为中坚力量。<br />
理由四：专职班主任全程跟踪确保学员学习质量<br />
北大青鸟有体系内资历最老的专职班主任团队。<br />
&nbsp;&nbsp; 专职班主任全部拥有三年以上学员管理经验，通过开学典礼帮助学员树立职业发展目标，通过对日常出勤、考试、COT职业素质的跟踪指导，凭借大班委补课、家长会沟通等手段对学员进行严格的学习监督和全面管理。<br />
&nbsp;&nbsp; 针对直接报读北大青鸟北大公学二期的学员，中心班主任通过职业素质导向和全程电子跟踪管理系统，确保学员听得懂、学得会，与此同时，针对学员专业技能掌握情况，及时予以访谈，并給与及时解决，确保学员不掉队。<br />
&nbsp;&nbsp; 班主任每天跟班巡视是北大青鸟北大公学中心教学过程中的一大特色，办主任对管辖班级学员采取全程跟踪、每天同学员一起，解决学员学习过程中出现的各种学习、生活问题。确保学员全身心投入专业知识技能的学习、职业素质的全面提升、真实项目经验的积累等个人就业竞争力的提升上来。<br />
&nbsp;&nbsp; 班主任控制和确保学员在学习过程中的学习质量是提升就业质量的重要手段，也是学员顺利进入企业实现顺利高薪就业的重要保障。<br />
理由五：项目开发经验丰富的项目经理亲临执教<br />
&nbsp;&nbsp;&nbsp; 北大青鸟北大公学中心教员全部拥有三年以上项目开发经验、两年以上教学经验职业化精英IT人才执教。在中心30余名软件、网络工程师的教员中超过30%在就职过程中担任过项目经理。86%以上的教员多次从事过国家级项目开发和组建工作。例如：中国联通165带外网管网、鲁能泰山ERP系统、石家庄车辆厂的车辆MIS系统的分析设计、用友U8－ERP预算管理等。</p>
<p>&nbsp;&nbsp; 中心教员通过严格的选拔、通过总部专业资格、教师双项认证才能上岗，教学过程中，北大青鸟北大公学中心教员采用多模式教学方法，确保学员听得懂、学得会，并能动手实际进行项目的开发和管理。</p>
<p>&nbsp;&nbsp; 与此同时，北大青鸟北大公学中心长期与总部学术部专家保持联系，并多次聘请总部学术部专家亲临中心，为学员进行新技术专业知识的讲解和答疑，全面解决学员专业技能的熟练度、主流性和前卫性，全面提升学员就业竞争力。<br />
理由六：全程电子跟踪管理系统为教学保驾护航<br />
2007年，北大青鸟北大公学中心全面启动学员全程电子跟踪管理系统。<br />
&nbsp;&nbsp;&nbsp; 学员全程电子跟踪管理系统是北大青鸟北大公学中心独有的学员在校学习、出勤、考试、项目答辩等一系列在校状况的综合跟踪管理系统。是班主任对学员进行管理的重要手段之一。通过全程跟踪管理系统，学员的在校学习等表现情况能阶段性展现在班主任面前，有利于班主任对学员进行及时辅导和访谈。</p>
<p>&nbsp;&nbsp; 全程电子跟踪管理系统，是学员学得会不掉队的有力保障，也是学员掌握专业的实用技能、具备丰富的实战经验和良好的职业素质，顺利实现高质就业的重要保障，更是学员就业率始终保持96%以上的重要手段。<br />
理由七：就业部专职就业老师全程就业指导跟踪<br />
&nbsp; 北大青鸟北大公学中心在COT职业素质训练的基础上，中心专职就业指导老师为学员提升简历撰写、面试能力和技巧，就业部专职就业指导老师针对自己特点，分阶段进行就业指导、简历指导和面试技巧的培训，专门邀请合作企业人力资源部专家亲临中心为我们进行面试技巧的讲解和点评。全面提升学员面试应变能力，提升学员就业竞争力。</p>
<p>&nbsp;&nbsp; 通过就业指导和模拟面试，确保学员掌握面试中需要关注的关键环节和应对技巧，这在自己最后的面试中起到了关键性的作用。学员在面试中充分展现自身专业技能和良好的心理素质、以及职业素质。</p>
<p>&nbsp;&nbsp; 就业部专职就业老师根据每一个即将毕业的班级学员状况，与不同的企业需求进行沟通和磋商人才输出事宜，企业到中心对学员进行集中企业招聘会，在中心招聘会上所表现出的对人才的紧缺与招聘会上呈现出的求职艰难形成的强烈对比。这也是中心学员就业好的有力见证。 <br />
理由八：全程专家级就业指导推荐<br />
&middot;就业空间选择大：依托强大的总部就业网络，丰富的就业资源供您选择；<br />
&middot;就业企业名气高：国内外知名企业与就业基地保持长期人才合作，做到就业进名企；<br />
&middot;就业薪资水平高：总部资深专家全程推荐，薪水有保障；<br />
&middot;就业保障力度强：强大的三重就业网络，让您就业无忧！<br />
&nbsp;&nbsp;&nbsp; 北大青鸟总部就业专家长期在中心办公，为中心学员提供全面的就业跟踪和就业推荐，全面保障学员优质就业。<br />
理由九：合作企业与中心共同保障学员优质就业<br />
&nbsp;&nbsp;&nbsp; 企业评定：我们看中他们的不仅仅是对专业技能的熟练掌握，更看重他的良好职业素质、团队协作、项目沟通和抗压、学习能力，相信他会在我们这里得到一个长足的发展，在此也感谢北大青鸟北大公学中心为我们培养这样的优秀人才&hellip;&hellip;<br />
&nbsp; 北大青鸟北大公学中心与京城400余家签约合作企业为学员的就业全力保障，北大青鸟北大公学凭借出色的教学质量、严格的学员管理和完善的就业体系，保障学员掌握专业的职业技能、丰富的实战经验和良好的职业素质。为学员直接进入企业实现高薪就业提供支持。<br />
&nbsp; 中心自2000年成立以来，先后培养软件、网络工程师人才近万人，先后与京城数百家知名IT企业合作，成为京城拥有良好的教学、就业口碑的知名培训机构。<br />
更多信息登陆：北大青鸟（北大公学）授权培训中心<a href="http://www.jb-accp.com">http://www.jb-accp.com</a></p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.jb-accp/Blog1/article.asp?id=161" /> 
	  <id>http://www.jb-accp/Blog1/default.asp?id=161</id>
  </entry>	
		
</feed>
