ts编译速度
‘壹’ 为什么DSP芯片采用第电压啊
德州仪器公司
众所周知,美国德州仪器(Texas Instruments,TI)是世界上最知名的DSP芯片生产厂商,其产品应用也最广泛,TI公司生产的丁MS320系列 DSP芯片广泛应用于各个领域。TI公司在1982年成功推出了其第一代DSP芯片TMS32010,这是DSP应用历史上的一个里程碑,从此,DSP芯片开始得到真正的广泛应用。由于TMS320系列DSP芯片具有价格低廉、简单易用功能强大等特点,所以逐渐成为目前最有影响、最为成功的DSP系列处理器。
目前,TI公司在市场上主要有三大系列产品:
(1)面向数字控制、运动控制的TMS320C2000系列,主要包括 TMS320C24x/F24x、TMS320LC240x/LF240x、TMS320C24xA/LF240xA、TMS320C28xx等。
(2)面向低功耗、手持设备、无线终端应用的TMS320C5000系列,主要包括TMS320C54x, TMS320C54xx,TMS320C55x等。
(3)面向高性能、多功能、复杂应用领域的TMS320C6000系列,主要包括TMS320C62xx、TMS320C64xx、TMS320C67xx等。
美国模拟器件公司
ADI公司在DSP芯片市场上也占有一定的份额,相继推出了一系列具有自己特点的DSP芯片,其定点DSP芯片有ADSP2101/2103/2105、ADSP2111/2115、ADSP2126/2162/2164、ADSP2127/2181、ADSP-BF532以及Blackfin系列,浮点DSP芯片有ADSP21000/21020、ADSP21060/21062,以及虎鲨TS101、TS201S。
Motorola公司
Motorola公司推出的DSP芯片比较晚。1986年该公司推出了定点DSP处理器MC56001;1990年,又推出了与IEEE浮点格式兼容的的浮点DSP芯片MC96002。
还有DSP53611、16位DSP56800、24位的DSP563XX和MSC8101等产品。
杰尔公司
杰尔公司的SC-1000和SC2000两大系列的嵌入式DSP内核,主要面向电信基础设施、移动通信、多媒体服务器及其它新兴应用。
DSP芯片的选型参数
根据应用场合和设计目标的不同,选择DSP芯片的侧重点也各不相同,其主要参数包括以下几个方面:
(1)运算速度:首先我们要确定数字信号处理的算法,算法确定以后其运算量和完成时间也就大体确定了,根据运算量.及其时间要求就可以估算DSP芯片运算速度的下限。在选择DSP芯片时,各个芯片运算速度的衡量标准主要有:
?MIPS (Millions of InstructionsPer Second),百万条指令/秒,一般DSP为20-100M IPS,使用超长指令字的TMS320B2XX为2400M IPS 。必须指出的是这是定点DSP芯片运算速度的衡量指标,应注意的是,厂家提供的该指标一般是指峰值指标,因此,系统设计时应留有一定的裕量。
?MOPS(Millions of OperationsPer Second),每秒执行百万操作。这个指标的问题是什么是一次操作,通常操作包括CPU操作外,还包括地址计算、DMA访问数据传输、I/0操作等。一般说MOPS越高意味着乘积一累加和运算速度越快。MOPS可以对DSP芯片的性能进行综合描述。
?MFLOPS(Million Floating PointOperations Per Second),百万次浮点操作/秒,这是衡量浮点DSP芯片的重.要指标。例如TMS320C31在主频为40MHz时,处理能力为40MFLOPS,TMS320C6701在指令周期为6ns时,单精度运算可达1GFLOPS .浮点操作包括浮点乘法、加法、减法、存储等操作。应注意的是,厂家提供的该指标一般是指峰值指标,因此,系统设计时应注意留有一定的裕量。
?MBPS(Million Bit Per Second),它是对总线和I/0口数据吞吐率的度量,也就是某个总线或I/0的带宽。例如对TMS320C6XXX, 200MHz时钟、32bit总线时,总线数据吞吐率则为800Mbyte/s或6400MBPS。
?ACS(Multiply-AccumulatesPer Second),例如TMS320C6XXX乘加速度达300MMACS-600MMACS。
?指令周期,即执行一条指令所需的时间,通常以ns(纳秒)为单位,如TMS320LC549-80在主频为80MHz是的指令周期为12.5ns.
?MAC时间,执行一次乘法和加法运算所花费的时间:大多数DSP芯片可以在一个指令周期内完成一次MAC运算。
?FFT/FIR执行时间,运行一个N点FFT或N 点FIR程序的运算时间。由于FFT运算/FIR运算是数字信号处理的一个典型算法,因此,该指标可以作为衡量芯片性能的综合指标。
表1是基于上述某些参数对一些DSP芯片所作的比较。
(2)运算精度:一般情况下,浮点DSP芯片的运算精度要高于定点DSP芯片的运算精度,但是功耗和价格也随之上升。一般定点DSP芯片的字长为16位、24位或者32位,浮点芯片的字长为32位。累加器一般都为32位或40位。定点DSP的特点是主频高、速度快、成本低、功耗小,主要用于计算复杂度不高的控制、通信、语音/图像、消费电子产品等领域。通常可以用定点器件解决的问题,尽量用定点器件,因为它经济、速度快、成本低,功耗小。但是在编程时要关注信号的动态范围,在代码中增加限制信号动态范围的定标运算,虽然我们可以通过改进算法来提高运算精度,但是这样做会相应增加程序的复杂度和运算量。浮点DSP的速度一般比定点DSP处理速度低,其成本和功耗都比定点DSP高,但是由于其采用了浮点数据格式,因而处理精度,动态范围都远高于定点DSP,适合于运算复杂度高,精度要求高的应用场合;即使是一般的应用,在对浮点DSP进行编程时,不必考虑数据溢出和精度不够的问题,因而编程要比定点DSP方便、容易。因此说,运算精度要求是一个折衷的问题,需要根据经验等来确定一个最佳的结合点。
(3)字长的选择:一般浮点DSP芯片都用32位的数据字,大多数定点DSP芯片是16位数据字。而Motorola公司定点芯片用24位数据字,以便在定点和浮点精度之间取得折衷。字长大小是影响成本的重要因素,它影响芯片的大小、引脚数以及存储器的大小,设计时在满足性能指标的条件下,尽可能选用最小的数据字。
(4)存储器等片内硬件资源安排:包括存储器的大小,片内存储器的数量,总线寻址空间等。片内存储器的大小决定了芯片运行速度和成本,例如TI公司同一系列的DSP芯片,不同种类芯片存储器的配置等硬件资源各不相同。通过对算法程序和应用目标的仔细分析可以大体判定对DSP芯片片内资源的要求。几个重要的考虑因素是片内RAM和ROM的数量、可否外扩存储器、总线接口/中断/串行口等是否够用、是否具有A/D转换等。
(5)开发调试工具:完善、方便的的开发工具和相关支持软件是开发大型、复杂DSP系统的必备条件,对缩短产品的开发周期有很重要的作用。开发工具包括软件和硬件两部分。软件开发工具主要包括:C编译器、汇编器、链接器、程序库、软件仿真器等,在确定DSP算法后,编写的程序代码通过软件仿真器进行仿真运行,来确定必要的性能指标。硬件开发工具包括在线硬件仿真器和系统开发板。在线硬件仿真器通常是JTAG周边扫描接口板,可以对设计的硬件进行在线调试;在硬件系统完成之前,不同功能的开发板上实时运行设计的DSP软件,可以提高开发效率。甚至在有的数量小的产品中,直接将开发板当作最终产品。
(6)功耗与电源管理:一般来说个人数字产品、便携设备和户外设备等对功耗有特殊要求,因此这也是一个该考虑的问题。它通常包括供电电压的选择和电源的管理功能。供电电压一般取得比较低,实施芯片的低电压供电,通常有3.3V,25V,I8V, 0.9V等,在同样的时钟频率下,它们的功耗将远远低于5V供电电压的芯片。加强了对电源的管理后,通常用休眠、等待模式等方式节省功率消耗。例如TI公司提供了详细的、功能随指令类型和处理器配置而改变的应用说明。
(7)价格及厂家的售后服务因素:价格包括DSP芯片的价格和开发.工具的价格。如果采用昂贵的DSP芯片,即使性能再高,其应用范围也肯定受到一定的限制。但低价位的芯片必然是功能较少、片内存储器少、性能上差一些的,这就带给编程一定的困难。因此,要根据实际系统的应用情况,确定一个价格适中的DSP芯片。还要充分考虑厂家提供的的售后服务等因素,良好的售后技术支持也是开发过程中重要资源
(8)其他因素:包括DSP芯片的封装形式、环境要求、供货周期、生命周期等。
DSP应用选型型举例
面向数字控制、运动控制的DSP系统开发的DSP芯片选型
面向数字控制、运动控制主.要有磁盘驱动控制、引擎控制、激光打印机控制、喷绘机控制、马达控制、电力系统控制、机器人控制、高精度伺服系统控制、数控机床等。当然这些主要是针对数字运动控制系统设计的应用,在这些系统的控制中,不仅要求有专门用于数字控制系统的外设电路,而且要求芯片具有数字信号处理器的一般特征。
例如在控制直流无刷电动机的DSP控制系统中,直流无刷电机运行过程要进行两种控制,一种是转速控制,也即控制提供给定子线圈的电流;另一种是换相控制,在转子到达指定位置改变定子导通相,实现定子磁场改变,这种控制实际上实现了物理电刷的机制。因此这种电机需要有位置反馈机制,比如霍尔元件、光电码盘,或者利用梯形反电动势特点进行反电动势过零检测等。电机速度控制也是根据位置反馈信号,计算出转子速度,再利用PI或PID等控制方法,实时调整PWM占空比等来实现定子电流调节。因此,控制芯片要进行较多的计算过程。当然也有专门的直流无刷电机控制芯片;但一般来说,在大多数应用中,除了电机控制,总还需要做一些其他的控制和通信等事情,所以,选用带尸WIVI ,同时又有较强数学运算功能的芯片也是一种很好的选择。
Motorola的数字信号处理器DSP568xx系列整合了通用数字信号
处理器快速运算功能和单片机外围丰富的特点,使得该系列特别适合于那些要求有较强的数据处理能力,同时又要有较多控制功能的应用中,对直流无刷电机的控制就是这一系列DSP的典型应用之一。
除此之外,数字运动控领域还有TI公司的丁M S320C24x系列,TMS320Lx240xx系列,特别是TMS320LF2407A在控制方面得到了非常广泛的应用,TMS320LF2407A作为一款专门面向数字控制系统进行优化的通用可编程微处理器,不仅具有低功耗和代码保密的特点,而且它集成了极强的数字信号处理能力,又集成了数字控制系统所必需的输入、输出、A/D转换、事件捕捉等外设,其时钟频率为40MHz,指令周期小于50ns,采用改进的哈佛结构和流水线技术,在一个指令周期内可以执行几条指令。
从运行速度,精度角度来讲上述两款芯片相差无几,但是TMS320LF2407A的调试开发环境CCCS)更加成熟,可参考的资料也更丰富,这样无疑会减少开发周期。
面向低功耗、手持设备、无线终 端应用的DSP芯片选型
C54X, C54XX, C55X相比其它一系列的主要特点是低功耗,所以最适合个人与便携式上网以及无线通信应用,如手机、PDA、GPS等应用。处理速度在80---400M IPS之间。C54XX和C55XX一般只具有McBSP同步串口、HPI并行接口、定时器、DMA等外设。值得注意的是C55XX提供了EMIF外部存储器扩展接口,可以直接使用SDRAM,而C54XX则不能直接使用。
‘贰’ 初学java什么编译器比较好啊
现在JAVA最流行的IDE应该算是Eclipse了,可以到http://www.eclipse.org/downloads/download.php?file=/eclipse/downloads/drops/R-3.2.1-200609210945/eclipse-SDK-3.2.1-win32.zip下载eclipse3.2版本
另外还需要JDK可以到https://sdlc1b.sun.com/ECom/EComActionServlet;jsessionid=下载JDK1.4.2
‘叁’ 2020年前端最火的技术是什么
我认为的2020年前端开发者最应该掌握的一些比较火爆的技术与知识点。
1,前端框架和语言层面
9月份 Vue3.0 发布,声称对 TypeScript 有着更好的开发体验,通过从不同框架级别 TS 支持上,我们可以看出社区的整个风向从2019年的大家都去学习应用 TS,变成了大家如何把 TS 用的更好这个方向上来了。
所以我认为今年 TypeScript 的火热程度还是应该排名很靠前的,我今年也使用 TypeScript 重构了 Daruk 的服务框架推出了2.0版本,让 TS 开发者拥有更好的 TS 开发体验。
接下来就是两大重磅框架的更新历程对比,Vue3 前面说了一句。而 React 也在十月也发布了 React 17 的 release 版本。这两大主流框架的频繁更新,也说明了社区和作者都在一同演化。
在 Vue 3中除了更好的支持 TS 外,还更新了Composition API。而 React 17 主要是集中精力在升级体验上,虽然没有新的 Feature 但是提升了和解决了很多之前版本潜在的问题。
要说哪个最火还是要看个人实际的使用场景和喜好,但是2020年来看还没有别的框架可以与之一战。
2019年前大家都疯狂吐槽面试刷 medium 题目没用,而2020年后大家开始默认面试某些公司都至少要刷到medium程度的题目。这对很多前端来说是一个心智和素质的提升与转变,大家在接触新技术的同时,也慢慢发现,前端整个职业环境的变化,越来越多的公司对人的整体综合素质要求变高了。
‘肆’ 舞台灯光使用技巧
舞台灯光艺术是综合艺术,有导演的编排,演员的表演,有美术、音乐、灯光、音响等各部门的创作,各个部门必须互相配合。舞台布景、人物造型、环境气氛等。在很大程度上要配合灯光加以展现,人物的内在思想感情也要借助灯光加以延伸。灯光是观众的视觉所在,观众借助灯光欣赏各种艺术节目;在舞台演出中由于充分运用光和色。从而突出了主题、展开了情节、刻划了人物、烘托了气氛。
剧场照明设计是否成功,是以舞台灯光的处理是否得当为标志。舞台灯光不仅要照亮演员,让观众看清面部表情、神态和动作,更重要的是充分运用照明技术,调动灯光操作等手段来强化艺术效果,使观众有身临其境之感。舞台灯光的安装部位、功能及灯具配置舞台灯光按其使用功能主要分为两种:可调光的调光回路;不可调光的直放回路。
舞台照明方式
a.一般照明:指顶光和伸出式舞台作为部分顶光的吊点灯环,以及葡萄架上、天桥上的照明。
b.重点照明:指面光、耳光、柱光、侧光、脚光、流动光和伸出式舞台的低角度面光、内(外)侧光、转台流动光以及乐池内设置的供接乐谱灯的低压插座。
c.装饰照明:指天排光、地排光和舞台上使用的激光效果器、追光、流动音乐喷泉以及各式电脑灯。
舞台灯光控制系统结构模块
人机界面模块 人机界面模块的功能主要是接收控制人员的控制指令,一般可以用简单的工控面板实现。该模块接收到指令以后不作指令的翻译,直接通过RS485总线传输按键信息到主控机模块。
主控机模块 主控机是整个布光控制系统的核心部分,负责上层控制界面和底层硬件控制模块的联系。主控机在收到控制模块发来的按键信息后经过翻译, 形成二进制的控制的指令; 然后主控机依据收的指令和相关的控制模块地址组成一帧完整的数据,并通过RS485总线传输到下行总线上,各底层控制模块再按地址匹配获取属于自己的数据。
底层控制模块 底层控制模块是直接控制舞台灯光动作的硬件设备。由于舞台灯光的数目一般比较多,因此控制模块的数量一般也在10~ 20之间, 所有的控制模块都挂靠在同一总线上,相互之间独立编程。当主控机向总线上发送数据时, 所有控制模块都接收到数据信息,并根据帧结构所包含的地址信息解析出属于自己的指令并执行之。
三大模块相互间利用RS485总线通讯,以固定的波特率传输数据。舞台灯光控制系统控制模块其主要的功能有2方面:一是和主控机的通讯, 接收来自上层的指令。二是根据指令控制硬件电路实现对灯光动作的控制。下面分别就这两个模块进行介绍。 舞台灯光接收通讯模块
1.通讯方式选择 由于控制信号相对简单,这里采用的是串行通讯方式。这种方式运用起来比较方便, 对外围器件要求不高, 半/全双功方式可自由选择。在异步方法中最重要的是波特率的设置。太高, 会增加单片机的负担,甚至不可实现;太低,会影响整个操作的响应速度。
2.传输标准选择 目前各种传输标准很多,但各有优缺点。由于布光系统作于演播厅,各种音响,电器的干扰会很多,因此,所选的传输方式应是抗干扰比较强的。由此考虑,在通讯距离为几十米到上千米时,选用RS485总线传输是比较理想的。485总线利用两条传输线,采取平衡发送和差分接收,因此具有抑制共模干扰的能力,加上接收器具有高的灵敏度,能检测低达200mV 的电压, 因此可以大大增强传输时的抗干扰能力,传输信号在千米以外可得到恢复。 RS485总线使用方便,用一对双绞线即可实现多站联网构成分布式系统。它设备简单,价格低廉,能进行长距离通信,故在工程项目中获得了广泛的应用。
3.收发器选择及使用 在485总线上传输的是485电平,而单片机和主控微机只能识别TTL电平。这样,在两者间就必须有专用芯片设计转换电路,这就是收发器。收发器的种类很多,可根据需要转换不同的电平,在应用中,为减少通讯电路与其他电路间的干扰,必须要有隔离级。虽然可以直接使用较高档的带隔离级的485收发器,但从价格考虑,还是自行设计隔离电路更好。 这里运用光电耦合器件,单独电源供给等手段实现隔离。在使用M ax483是要注意使能端的控制。收发器处于接收状态只有在/RE =0, 并且可移植性,避免了不必要的重复工作。中的模块功能管理层和硬件驱动和基本功能函数接口层同属于Opentv中间件。模块功能管理层是为方便编写用户应用程序,按照一定的中间件函数接口标准编写的有关于音频、视频和频道操作管理和控制的函数。 驱动与基本函数接口层是OpenTV 中间件的底层部分。这一层次的软件编写要根据具体的硬件驱动来进行相应的改动,目的是提供给模块功能管理层统一的驱动接口函数。
4.操作系统和硬件驱动层 本系统所采用的操作系统是pSOS;硬件驱动层主要针对各硬件模块,提供相应的驱动程序。主要的驱动包括:Kernel模块,主要负责提供对进程的操作,诸如进程的创建和删除等;接口模块,包括I C接口操作控制,RS一232 串口通信,智能卡的控制等;音频模块;视频模块;OSD 模块;解复用模块;解码模块;Flash 驱动模块;TUNER 驱动模块。
最后一步是机顶盒系统的调试:本系统的软件是在pSOS编译器的基础上编译完成的。整个测试框图如图3所示。系统利用了一个TS 码流发生器作为机顶盒的调试TS 源。
TS流通过QAM 调制器调制到信道中,QAM 信号送到机顶盒的前端进行QAM 解调, 再送入系统板中进行信源解码。TS流也可以直接通过系统板中的接口送入以对信源解码进行单独调试。系统个人电脑的测试是在PC + WINDOWS2000平台上进行的。而系统运行软件则在pSOS 实时操作系统环境下执行。
编译好的可执行文件通过仿真RoM 从串口下装到硬件平台上的RAM 中, 然后系统将从RAM 中的某一固定地址读出并执行程序。由于本硬件平台没有提供网口,所以pSOS 自带的在线调试功能并不能实现,调试信息只能通过执行程序过程中的输出信息得到。
‘伍’ 谁能帮助我这是什么意思吗MXL文件
编辑词条 编程语言 计算机语言的种类非常的多,总的来说可以分成机器语言,汇编语言,高级语言三大类。
如果按语种分,可以分为英文符号语言和汉语符号语言两类。(典型的如:易语言、易语言.飞扬)
电脑每做的一次动作,一个步骤,都是按照以经用计算机语言编好的程序来执行的,程序是计算机要执行的指令的集合,而程序全部都是用我们所掌握的语言来编写的。所以人们要控制计算机一定要通过计算机语言向计算机发出命令。
计算机所能识别的语言只有机器语言,即由0和1构成的代码。但通常人们编程时,不采用机器语言,因为它非常难于记忆和识别。
目前通用的编程语言有两种形式:汇编语言和高级语言。
汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。它同样需要编程者将每一步具体的操作用命令的形式写出来。汇编程序通常由三部分组成:指令、伪指令和宏指令。汇编程序的每一句指令只能对应实际操作过程中的一个很细微的动作,例如移动、自增,因此汇编源程序一般比较冗长、复杂、容易出错,而且使用汇编语言编程需要有更多的计算机专业知识,但汇编语言的优点也是显而易见的,用汇编语言所能完成的操作不是一般高级语言所能实现的,而且源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快。
高级语言是目前绝大多数编程者的选择。和汇编语言相比,它不但将许多相关的机器指令合成为单条指令,并且去掉了与具体操作有关但与完成工作无关的细节,例如使用堆栈、寄存器等,这样就大大简化了程序中的指令。同时,由于省略了很多细节,编程者也就不需要有太多的专业知识。
高级语言主要是相对于汇编语言而言,它并不是特指某一种具体的语言,而是包括了很多编程语言,如目前流行的VB、VC、FoxPro、Delphi等,这些语言的语法、命令格式都各不相同。 像最简单的编程语言PASCAL语言也属于高级语言.
高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行,按转换方式可将它们分为两类:
解释类:执行方式类似于我们日常生活中的“同声翻译”,应用程序源代码一边由相应语言的解释器“翻译”成目标代码(机器语言),一边执行,因此效率比较低,而且不能生成可独立执行的可执行文件,应用程序不能脱离其解释器,但这种方式比较灵活,可以动态地调整、修改应用程序。
编译类:编译是指在应用源程序执行之前,就将程序源代码“翻译”成目标代码(机器语言),因此其目标程序可以脱离其语言环境独立执行,使用比较方便、效率较高。但应用程序一旦需要修改,必须先修改源代码,再重新编译生成新的目标文件(* .OBJ)才能执行,只有目标文件而没有源代码,修改很不方便。现在大多数的编程语言都是编译型的,例如Visual C++、Visual Foxpro、Delphi等。
学习编程,从何入手
如果您想学习编程,却又不知从何入手,那么您不妨看看下面的几种学习方案,可能会给您一些启示吧!
==============================================
VB方案一 Basic语言 & Visual Basic
优点
(1)Basic 简单易学,很容易上手。
(2)Visual Basic 提供了强大的可视化编程能力,可以让你轻松地做出漂亮的程序。
(3)众多的控件让编程变得象垒积木一样简单。
(4)Visual Basic 的全部汉化让我们这些见了English就头大的人喜不自禁。
缺点
(1)Visual Basic 不是真正的面向对象的开发文具。
(2)Visual Basic 的数据类型太少,而且不支持指针,这使得它的表达能力很有限。
(3)Visual Basic 不是真正的编译型语言,它产生的最终代码不是可执行的,是一种伪代码。它需要一个动态链接库去解释执行,这使得Visual Basic 的编译速度大大变慢。 (Visual Basic 5以及以前的版本产生的代码是伪代码,Visual Basic 6 编译出来的代码是真正的可执行代码。)
综述:方案一适合初涉编程的朋友,它对学习者的要求不高,几乎每个人都可以在一个比较短的时间里学会vB编程,并用VB 做出自己的作品。对于那些把编程当做游戏的朋友来说,VB 是您最佳的选择。
Basic/Visual Basic简介
==============================================
Delphi方案二 Pascal语言 & Delphi
优点
(1)Pascal语言结构严谨,可以很好地培养一个人的编程思想。
(2)Delphi是一门真正的面向对象的开发工具,并且是完全的可视化。
(3)Delphi使用了真编译,可以让你的代码编译成为可执行的文件,而且编译速度非常快。
(4)Delphi具有强大的数据库开发能力,可以让你轻松地开发数据库。
缺点
Delphi几乎可以说是完美的,只是Pascal语言的过于严谨让人感觉有点烦。
综述: 方案二比较适合那些具有一定编程基础并且学过Pascal语言的朋友。
Pascal语言简介
Delphi简介
==============================================
方案三 C语言 & Visual C++
优点
(1)C语言灵活性好,效率高,可以接触到软件开发比较底层的东西。
(2)微软的MFC库博大精深,学会它可以让随心所欲地进行编程。
(3)VC是微软制作的产品,与操作系统的结合更加紧密。
缺点
对使用者的要求比较高,既要具备丰富的C语言编程经验,又要具有一定的WINDOWS编程基础,它的过于专业使得一般的编程爱好者学习起来会有不小的困难。
综述: VC是程序员用的东西。如果你是一个永不满足的人,而且可以在编程上投入很大的精力和时间,那么学习VC你一定不会后悔的。
C语言简介
==============================================
C++方案四 C++语言 & C++ Builder
优点
(1)C++语言的优点全部得以继承。
(2)完全的可视化。
(3)极强的兼容性,支持OWL、VCL和MFC三大类库。
(4)编译速度非常快。
缺点
由于推出的时间太短,关于它的各种资料还不太多。
综述:我认为C++ Builder 是最好的编程工具。它既保持了C++语言编程的优点,又做到了完全的可视化。
C语言简介
==============================================
方案五 sql语言 & Power Builder
对于一些传统的数据开发人员来说,Foxpro系列也许让他们感到更加熟悉。但是对于初学者来说,PowerBuilder也许是最好的数据库开发工具。各种各样的控件,功能强大的PowerBuilder语言都会帮助你开发出自己的数据库应用程序。
[NextPage]
JSP简介
JAVA语言在Sun正式发布JSP(Java Server Pages)之后,这种新的Web应用开发技术很快引起了人们的关注。JSP为创建高度动态的Web应用提供了一个独特的开发环境。按照 Sun 的说法,JSP能够适应市场上包括Apache WebServer 、IIS4.0在内的85%的服务器产品。
JSP与ASP的简单比较
JSP与Microsoft的ASP技术非常相似。两者都提供在HTML代码中混合某种程序代码、由语言引擎解释执行程序代码的能力。在ASP或JSP环境下,HTML代码主要负责描述信息的显示样式,而程序代码则用来描述处理逻辑。普通的HTML页面只依赖于Web服务器,而ASP和JSP页面需要附加的语言引擎分析和执行程序代码。程序代码的执行结果被重新嵌入到HTML代码中,然后一起发送给浏览器。ASP和JSP都是面向Web服务器的技术,客户端浏览器不需要任何附加的软件支持。
ASP的编程语言是VBScript之类的脚本语言,JSP使用的是Java,这是两者最明显的区别。
此外,ASP与JSP还有一个更为本质的区别:两种语言引擎用完全不同的方式处理页面中嵌入的程序代码。在ASP下,VBScript代码被ASP引擎解释执行;在JSP下,代码被编译成Servlet并由Java虚拟机执行,这种编译操作仅在对JSP页面的第一次请求时发生。
运行环境
执行 JSP 代码需要在服务器上安装 JSP 引擎。此处我们使用的是 Sun 的 JavaServer Web Development Kit ( JSWDK )。为便于学习,这个软件包提供了大量可供修改的示例。安装 JSWDK 之后,只需执行 startserver 命令即可启动服务器。在默认配置下服务器在端口 8080 监听,使用 http://localhost:8080 即可打开缺省页面。
在运行 JSP 示例页面之前,请注意一下安装 JSWDK 的目录,特别是" work "子目录下的内容。执行示例页面时,可以在这里看到 JSP 页面如何被转换成 Java 源文件,然后又被编译成 class 文件(即 Servlet )。 JSWDK 软件包中的示例页面分为两类,它们或者是 JSP 文件,或者是包含一个表单的 HTML 文件,这些表单均由 JSP 代码处理。与 ASP 一样, JSP 中的 Java 代码均在服务器端执行。因此,在浏览器中使用"查看源文件"菜单是无法看到 JSP 源代码的,只能看到结果 HTML 代码。所有示例的源代码均通过一个单独的" examples "页面提供。
Java Servlet是一种开发Web应用的理想构架。 JSP以Servlet技术为基础,又在许多方面作了改进。JSP页面看起来象普通HTML页面,但它允许嵌入执行代码,在这一点上,它和ASP技术非常相似。利用跨平台运行的JavaBean 组件,JSP为分离处理逻辑与显示样式提供了卓越的解决方案。JSP必将成为ASP技术的有力竞争者。
[NextPage]
SQL语言简介
SQL全称是“结构化查询语言(Structured Query Language)”,最早的是IBM的圣约瑟研究实验室为其关系数据库管理系统SYSTEM R开发的一种查询语言,它的前身是SQUARE语言。SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来,SQL语言,得到了广泛的应用。如今无论是像Oracle ,Sybase,Informix,SQL server这些大型的数据库管理系统,还是像Visual Foxporo,PowerBuilder这些微机上常用的数据库开发系统,都支持SQL语言作为查询语言。
Structured Query Language包含4个部分:
数据查询语言DQL-Data Query Language SELECT
数据操纵语言DQL-Data Manipulation Language INSERT, UPDATE, DELETE
数据定义语言DQL-Data Definition Language CREATE, ALTER, DROP
数据控制语言DQL-Data Control Language COMMIT WORK, ROLLBACK WORK
SQL的历史
在70年代初,E.E.Codd首先提出了关系模型。70年代中期,IBM公司在研制 SYSTEM R关系数据库管理系统中研制了SQL语言,最早的SQL语言(叫SEQUEL2)是在1976 年 11 月的IBM Journal of R&D上公布的。
1979年ORACLE公司首先提供商用的SQL,IBM公司在DB2 和SQL/DS数据库系统中也实现了SQL。
1986年10月,美国ANSI采用SQL作为关系数据库管理系统的标准语言(ANSI X3. 135-1986),后为国际标准化组织(ISO)采纳为国际标准。
1989年,美国ANSI采纳在ANSI X3.135-1989报告中定义的关系数据库管理系统的SQL标准语言,称为ANSI SQL 89, 该标准替代ANSI X3.135-1986版本。该标准为下列组织所采纳:
● 国际标准化组织(ISO),为ISO 9075-1989报告“Database Language SQL With Integrity Enhancement”
● 美国联邦政府,发布在The Federal Information Processing Standard Publication(FIPS PUB)127
目前,所有主要的关系数据库管理系统支持某些形式的SQL语言, 大部分数据库打算遵守ANSI SQL89标准。
SQL的优点
SQL广泛地被采用正说明了它的优点。它使全部用户,包括应用程序员、DBA管理员和终端用户受益匪浅。
(1) 非过程化语言
SQL是一个非过程化的语言,因为它一次处理一个记录,对数据提供自动导航。SQL允许用户在高层的数据结构上工作,而不对单个记录进行操作,可操作记录集。所有SQL 语句接受集合作为输入,返回集合作为输出。SQL的集合特性允许一条SQL语句的结果作为另一条SQL语句的输入。 SQL不要求用户指定对数据的存放方法。 这种特性使用户更易集中精力于要得到的结果。所有SQL语句使用查询优化器,它是RDBMS的一部分,由它决定对指定数据存取的最快速度的手段。查询优化器知道存在什么索引,哪儿使用合适,而用户从不需要知道表是否有索引,表有什么类型的索引。
(2) 统一的语言
SQL可用于所有用户的DB活动模型,包括系统管理员、数据库管理员、 应用程序员、决策支持系统人员及许多其它类型的终端用户。基本的SQL 命令只需很少时间就能学会,最高级的命令在几天内便可掌握。 SQL为许多任务提供了命令,包括:
● 查询数据
● 在表中插入、修改和删除记录
● 建立、修改和删除数据对象
● 控制对数据和数据对象的存取
● 保证数据库一致性和完整性
以前的数据库管理系统为上述各类操作提供单独的语言,而SQL 将全部任务统一在一种语言中。
(3) 是所有关系数据库的公共语言
由于所有主要的关系数据库管理系统都支持SQL语言,用户可将使用SQL的技能从一个RDBMS转到另一个。所有用SQL编写的程序都是可以移植的。
[NextPage]
Java语言简介
一. Java的由来
当1995年SUN推出Java语言之后,全世界的目光都被这个神奇的语言所吸引。那么Java到底有何神奇之处呢?
Java语言其实最是诞生于1991年,起初被称为OAK语言,是SUN公司为一些消费性电子产品而设计的一个通用环境。他们最初的目的只是为了开发一种独立于平台的软件技术,而且在网络出现之前,OAK可以说是默默无闻,甚至差点夭折。但是,网络的出现改变了OAK的命运。
在Java出现以前。Internet上的信息内容都是一些乏味死板的HTML文档。这对于那些迷恋于WEB浏览的人们来说简直不可容忍。他们迫切希望能在WEN中看到一些交互式的内容,开发人员也极希望能够在WEB上创建一类无需考虑软硬件平台就可以执行的应用程序,当然这些程序还要有极大的安全保障。对于用户的这种要求,传统的编程语言显得无能为力,面SUN的工程师敏锐地察觉到了这一点,从1994年起,他们开始将OAK技术应用于WEB上,并且开发出了HotJava的第一个版本。当SUN公司1995年正式以Java这个名字推出的时候,几乎所有的WEB开发人员都想到:噢,这正是我想要的。于是Java成了一颗耀眼的明星,丑小鸭一下了变成了白天鹅。
二. Java的定义
Java是一种简单的,面象对象的,分布式的,解释的,健壮的安全的,结构的中立的,可移植的,性能很优异的多线程的,动态的语言。
Java的开发环境有不同的版本,如sun公司的Java Developers Kit, 简称 JDK。后来微软公司推出了支持Java规范的Microsoft Visual J++ Java开发环境,简称 VJ++。
三. Java的特点
1. 平台无关性
平台无关性是指Java能运行于不同的平台。Java引进虚拟机 原理,并运行于虚拟机,实现不同平台的Java接口之间。使 用Java编写的程序能在世界范围内共享。Java的数据类型与 机器无关,Java虚拟机(Java Virtual Machine)是建立在 硬件和操作系统之上,实现Java二进制代码的解释执行功能, 提供于不同平台的接口的。
2. 安全性
Java的编程类似C++,学习过C++的读者将很快掌握Java的精 髓。Java舍弃了C++的指针对存储器地址的直接操作,程序 运行时,内存由操作系统分配,这样可以避免病毒通过指 针侵入系统。Java对程序提供了安全管理器,防止程序的 非法访问。
3. 面向对象
Java 吸取了C++面向对象的概念,将数据封装于类中,利用类 的优点,实现了程序的简洁性和便于维护性。类的封装性、 继承性等有关对象的特性,使程序代码只需一次编译,然后 通过上述特性反复利用。程序员只需把主要精力用在类和接 口的设计和应用上。Java 提供了众多的一般对象的类,通 过继承即可使用父类的方法。在 Java 中,类的继承关系是单一的非多重的,一个子类 只有一个父类,子类的父类又有一个父类。Java 提供的 Object 类及其子类的继承关系如同一棵倒立的树形,根类 为 Object 类, Object 类功能强大,经常会使用到它及其 它派生的子类。
4. 分布式
Java建立在扩展TCP/IP网络平台上。库函数提供了用HTTP和FTP协议传送和接受信息的方法。这使得程序员使用网络上的文件和使用本机文件一样容易。
5. 键壮性
Java致力于检查程序在编译和运行时的错误。类型检查帮助检查出许多开发早期出现的错误。Java自己操纵内存减少了内存出错的可能性。Java还实现了真数组,避免了覆盖数据的可能。这些功能特征大大提高了开发Java应用程序的周期。Java提供: Null指针检测、 数组边界检测、 异常出口、 Byte code校验。
四. Java与C/C++语言
Java提供了一个功能强大语言的所有功能,但几乎没有一点含混特征。C++安全性不好,但C和C++被大家接受,所以Java设计成C++形式,让大家很容易学习。
Java去掉了C++语言的许多功能,让Java的语言功能很精炼,并增加了一些很有用的功能,如自动收集碎片。
Java去掉了以下几个C和C++功能:
指针运算
结构
typedefs
#define
需要释放内存
这将减少了平常出错的50%。而且,Java很小,整个解释器只需215K的RAM。
面象对象:Java实现了C++的基本面象对象技术并有一些增强,(为了语言简单,删除了一些功能)。Java处理数据方式和用对象接口处理对象数据方式一样。
五. Java与Internet
我们知道,早先的 www 仅可以传送文本和图片,Java的出现实现了互动的页面,是一次伟大的革命。
Java并不是为 Internet,WWW而设计的,它也可以用来编写独立的应用程序。Java 是一种面向对象语言。Java 语言类似于 C++ 语言,所以已熟练掌握 C++语言的编程人员,再学习 Java 语言就容易得多!Java 程序需要编译。实际上有两种 Java 程序:一种 Java 应用程序是一个完整的程序,如 Web 浏览器。一种 Java 小应用程序是运行于 Web 浏览器中的一个程序.
Java程序和它的浏览器HotJava,提供了可让你的浏览器运行程序的方法。你能从你的浏览器里直接播放声音。你还能播放页面里的动画。Java还能告诉你的浏览器怎样处理新的类型文件。当我们能在2400 baud线上传输视频图象时,HotJava将能显示这些视频。
当今Internet的一大发展趋势是电子商务,而Internet的安全问题是必须解决的问题,通常大的部门应设置防火墙,阻止非法侵入。
电子商务是当今的热门话题,然而传统的编程语言难以胜任电子商务系统,电子商务要求程序代码具有基本的要求:安全、可靠、同时要求能 与运行于不同平台的机器的全世界客户开展业务。Java以其强安全性、平台无关性、硬件结构无关性、语言简洁同时面向对象,在网络编程语言中占据无可比拟的优势,成为实现电子商务系统的首选语言。
Java程序被放置在Internet服务器上,当用户访问服务器时,Java程序被下载到本地的用户机上,由浏览器解释运行。
[NextPage]
PowerBuilder简介
PowerBuilder的产生
PowerBuilder是美国着名的数据库应用开发工具生产厂商PowerSoft推出的成功产品,其第一版于1991年6月正式投入市场。它是完全按照客户/服务器体系结构研制设计的,采用面向对象技术,图形化的应用开发环境,是数据库的前端开发工具。
PowerBuilder的特点
它支持应用系统同时访问多种数据库,其中既包括Oracle,Sybase之类的大型数据库,又包括FOXPRO之类支持ODBC接口的小型数据库,PowerBuilder是完全可视化的数据库开发工具,它提供了大量的控件,大大加快了项目的开发速度,也使开发者更容易掌握数据库的开发。
它使用的编程语言叫做工PowerScripr,它也是一种高级的,结构化的编程语言。PowerScript提供了一套完整的嵌入式SQL语句,开发人员可以像使用其它语句一样自由地使用SQL语言,这样就大大增强了程序操纵和访问数据库的能力。可以说PowerBuilder既适合初学者快速学习数据库的开发,又可以让有经验的开发人员开发出功能强大的数据库,是一种适用面非常广的开发工具。
PowerBuilder是一个用来进行客户/服务器开发的完全的可视化开发环境。使用PowerBuilder,你可以用一种可视的直观的方式来创建应用程序的用户界面和数据库接口。这是一个总的概念,实际上是开发人员使用PowerBuilder去开发应用程序,由于所开发的各种应用程序充分利用了图形用户接口(GUI)的优点,所以PowerBuilder被认为是一个图形工具。
在客户/服务器结构的应用中,PowerBuilder具有描述多个数据库连接与检索的能力。特别是PowerBuilder能从大多数流行的RDBMS中存取数据,且不管数据存放在什么地方;另外,各种应用程序又可以独立于RDBMS,因为PowerBuilder可以使用数据库的标准操作语言SQL(结构化查询语言)进行。
使用PowerBuilder,可以很容易地开发出功能强大的图形界面的访问服务器数据库的应用程序,PowerBuilder提供了建立符合工业标准的应用程序(例如订单登记、会计及制造系统)所需的所有工具。
PowerBuilder应用程序由窗口组成,这些窗口包含用户与之交互的控件。开发人员可以使用所有标准空间(如按钮、复选框、下拉式列表框或编辑框)以及PowerBuilder提供的特殊的使应用程序更易于开发和使用的控件。
通常人们把PowerBuilder看成是一种开发工具,实际上它比其他工具强得多,是一种强有力的开发环境。开发人员不仅能用它来开发用户容易使用的各种应用程序还可以通过PowerBuilder修改数据库,利用400多个内部定义函数,可以开发能和其他应用程序进行的各种应用程序。
PowerBuilder正在成为客户/服务器应用开发的标准。相对于其他任何客户/服务器开发环境,PowerBuilder使开发人员的工作更快、成本更低、质量更高、功能更强。
PowerBuilder为应用开发提供了全面综合性的支持,可以分别概括为如下几点:
事件驱动的应用程序
功能强大的编程语言与函数
面向对象的编程
跨平台开发
开放的数据库连结系统
PowerBuilder开发环境
PowerBuilder开发环境由一系列集成的图形画板(Painter)组成,应用开发人员通过简单的鼠标操作即可设计、建立、交互检验和测试客户/服务器应用程序。
[NextPage]
Delphi简介
Delphi这个名字源于古希腊的城市名。它集中了第三代语言
‘陆’ 如何分析为什么oracle速度慢
Oracle查询速度慢的原因总结
查询速度慢的原因很多,常见如下几种:
1,没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)
2,I/O吞吐量小,形成了瓶颈效应.
3,没有创建计算列导致查询不优化.
4,内存不足
5,网络速度慢
6,查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)
7,锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)
8,sp_lock,sp_who,活动的用户查看,原因是读写竞争资源.
9,返回了不必要的行和列
10,查询语句不好,没有优化
可以通过如下方法来优化查询 :
1,把数据,日志,索引放到不同的I/O设备上,增加读取速度,以前可以将Tempdb应放在RAID0上,SQL2000不在支持.数据量(尺寸)越大,提高I/O越重要.
2,纵向,横向分割表,减少表的尺寸(sp_spaceuse)
3,升级硬件
4,根据查询条件,建立索引,优化索引,优化访问方式,限制结果集的数据量.注意填充因子要适当(最好是使用默认值0).索引应该尽量小,使用字节数小的列建索引好(参照索引的创建),不要对有限的几个值的字段建单一索引如性别字段
5,提高网速;
6,扩大服务器的内存,Windows 2000和SQL server 2000能支持4-8G的内存.配置虚拟内存:虚拟内存大小应基于计算机上并发运行的服务进行配置.运行 Microsoft SQL Server? 2000 时,可考虑将虚拟内存大小设置为计算机中安装的物理内存的 1.5 倍.如果另外安装了全文检索功能,并打算运行 Microsoft 搜索服务以便执行全文索引和查询,可考虑:将虚拟内存大小配置为至少是计算机中安装的物理内存的 3 倍.将 SQL Server max server memory 服务器配置选项配置为物理内存的 1.5 倍(虚拟内存大小设置的一半).
7,增加服务器 CPU个数;但是必须明白并行处理串行处理更需要资源例如内存.使用并行还是串行程是MsSQL自动评估选择的.单个任务分解成多个任务,就可以在处理器上运行.例如耽搁查询的排序,连接,扫描和GROUP BY字句同时执行,SQL SERVER根据系统的负载情况决定最优的并行等级,复杂的需要消耗大量的CPU的查询最适合并行处理.但是更新操作Update,Insert, Delete还不能并行处理.
8,如果是使用like进行查询的话,简单的使用index是不行的,但是全文索引,耗空间. like 'a%' 使用索引 like '%a' 不使用索引用 like '%a%' 查询时,查询耗时和字段值总长度成正比,所以不能用CHAR类型,而是VARCHAR.对于字段的值很长的建全文索引.
9,DB Server 和APPLication Server 分离;OLTP和OLAP分离
10,分布式分区视图可用于实现数据库服务器联合体.联合体是一组分开管理的服务器,但它们相互协作分担系统的处理负荷.这种通过分区数据形成数据库服务器联合体的机制能够扩大一组服务器,以支持大型的多层 Web 站点的处理需要.有关更多信息,参见设计联合数据库服务器.(参照SQL帮助文件'分区视图')
a,在实现分区视图之前,必须先水平分区表
b,在创建成员表后,在每个成员服务器上定义一个分布式分区视图,并且每个视图具有相同的名称.这样,引用分布式分区视图名的查询可以在任何一个成员服务器上运行.系统操作如同每个成员服务器上都有一个原始表的复本一样,但其实每个服务器上只有一个成员表和一个分布式分区视图.数据的位置对应用程序是透明的.
11,重建索引 DBCC REINDEX ,DBCC INDEXDEFRAG,收缩数据和日志 DBCC SHRINKDB,DBCC SHRINKFILE. 设置自动收缩日志.对于大的数据库不要设置数据库自动增长,它会降低服务器的性能.在T-sql的写法上有很大的讲究,下面列出常见的要点:首先, DBMS处理查询计划的过程是这样的:
1, 查询语句的词法,语法检查
2, 将语句提交给DBMS的查询优化器
3, 优化器做代数优化和存取路径的优化
4, 由预编译模块生成查询规划
5, 然后在合适的时间提交给系统处理执行
6, 最后将执行结果返回给用户其次,看一下SQL SERVER的数据存放的结构:一个页面的大小为8K(8060)字节,8个页面为一个盘区,按照B树存放.
12,Commit和rollback的区别 Rollback:回滚所有的事物. Commit:提交当前的事物. 没有必要在动态SQL里写事物,如果要写请写在外面如: begin tran exec(@s) commit trans 或者将动态SQL 写成函数或者存储过程.
13,在查询Select语句中用Where字句限制返回的行数,避免表扫描,如果返回不必要的数据,浪费了服务器的I/O资源,加重了网络的负担降低性能.如果表很大,在表扫描的期间将表锁住,禁止其他的联接访问表,后果严重.
14,SQL的注释申明对执行没有任何影响15,尽可能不使用光标,它占用大量的资源.如果需要row-by-row地执行,尽量采用非光标技术,如:在客户端循环,用临时表,Table变量,用子查询,用Case语句等等.游标可以按照它所支持的提取选项进行分类: 只进 必须按照从第一行到最后一行的顺序提取行.FETCH NEXT 是唯一允许的提取操作,也是默认方式.可滚动性可以在游标中任何地方随机提取任意行.游标的技术在SQL2000下变得功能很强大,他的目的是支持循环.有四个并发选项 READ_ONLY:不允许通过游标定位更新(Update),且在组成结果集的行中没有锁. OPTIMISTIC WITH valueS:乐观并发控制是事务控制理论的一个标准部分.乐观并发控制用于这样的情形,即在打开游标及更新行的间隔中,只有很小的机会让第二个用户更新某一行.当某个游标以此选项打开时,没有锁控制其中的行,这将有助于最大化其处理能力.如果用户试图修改某一行,则此行的当前值会与最后一次提取此行时获取的值进行比较.如果任何值发生改变,则服务器就会知道其他人已更新了此行,并会返回一个错误.如果值是一样的,服务器就执行修改.选择这个并发选项OPTIMISTIC WITH ROW VERSIONING:此乐观并发控制选项基于行版本控制.使用行版本控制,其中的表必须具有某种版本标识符,服务器可用它来确定该行在读入游标后是否有所更改.在 SQL Server 中,这个性能由 timestamp 数据类型提供,它是一个二进制数字,表示数据库中更改的相对顺序.每个数据库都有一个全局当前时间戳值:@@DBTS.每次以任何方式更改带有 timestamp 列的行时,SQL Server 先在时间戳列中存储当前的 @@DBTS 值,然后增加 @@DBTS 的值.如果某 个表具有 timestamp 列,则时间戳会被记到行级.服务器就可以比较某行的当前时间戳值和上次提取时所存储的时间戳值,从而确定该行是否已更新.服务器不必比较所有列的值,只需比较 timestamp 列即可.如果应用程序对没有 timestamp 列的表要求基于行版本控制的乐观并发,则游标默认为基于数值的乐观并发控制. SCROLL LOCKS 这个选项实现悲观并发控制.在悲观并发控制中,在把数据库的行读入游标结果集时,应用程序将试图锁定数据库行.在使用服务器游标时,将行读入游标时会在其上放置一个更新锁.如果在事务内打开游标,则该事务更新锁将一直保持到事务被提交或回滚;当提取下一行时,将除去游标锁.如果在事务外打开游标,则提取下一行时,锁就被丢弃.因此,每当用户需要完全的悲观并发控制时,游标都应在事务内打开.更新锁将阻止任何其它任务获取更新锁或排它锁,从而阻止其它任务更新该行.然而,更新锁并不阻止共享锁,所以它不会阻止其它任务读取行,除非第二个任务也在要求带更新锁的读取.滚动锁根据在游标定义的 Select 语句中指定的锁提示,这些游标并发选项可以生成滚动锁.滚动锁在提取时在每行上获取,并保持到下次提取或者游标关闭,以先发生者为准.下次提取时,服务器为新提取中的行获取滚动锁,并释放上次提取中行的滚动锁.滚动锁独立于事务锁,并可以保持到一个提交或回滚操作之后.如果提交时关闭游标的选项为关,则 COMMIT 语句并不关闭任何打开的游标,而且滚动锁被保留到提交之后,以维护对所提取数据的隔离.所获取滚动锁的类型取决于游标并发选项和游标 Select 语句中的锁提示.锁提示 只读 乐观数值 乐观行版本控制 锁定无提示 未锁定 未锁定 未锁定 更新 NOLOCK 未锁定未锁定未锁定 未锁定 HOLDLOCK 共享 共享 共享 更新 UPDLOCK 错误 更新 更新 更新 TABLOCKX 错误 未锁定未锁定更新其它 未锁定 未锁定 未锁定 更新 *指定 NOLOCK 提示将使指定了该提示的表在游标内是只读的.
16,用Profiler来跟踪查询,得到查询所需的时间,找出SQL的问题所在;用索引优化器优化索引
17,注意UNion和UNion all 的区别.UNION all好
18,注意使用DISTINCT,在没有必要时不要用,它同UNION一样会使查询变慢.重复的记录在查询里是没有问题的
19,查询时不要返回不需要的行,列
20,用sp_configure 'query governor cost limit'或者SET QUERY_GOVERNOR_COST_LIMIT来限制查询消耗的资源.当评估查询消耗的资源超出限制时,服务器自动取消查询,在查询之前就扼杀掉. SET LOCKTIME设置锁的时间.
21,用select top 100 / 10 Percent 来限制用户返回的行数或者SET ROWCOUNT来限制操作的行
22,在SQL2000以前,一般不要用如下的字句: "IS NULL", "<>", "!=", "!>", "!<", "NOT", "NOT EXISTS", "NOT IN", "NOT LIKE", and "LIKE '%500'",因为他们不走索引全是表扫描.也不要在Where字句中的列名加函数,如Convert,substring等,如果必须用函数的时候,创建计算列再创建索引来替代.还可以变通写法:Where SUBSTRING(firstname,1,1) = 'm'改为Where firstname like 'm%'(索引扫描),一定要将函数和列名分开.并且索引不能建得太多和太大.NOT IN会多次扫描表,使用EXISTS,NOT EXISTS ,IN , LEFT OUTER JOIN 来替代,特别是左连接,而Exists比IN更快,最慢的是NOT操作.如果列的值含有空,以前它的索引不起作用,现在2000的优化器能够处理了.相同的是IS NULL,"NOT", "NOT EXISTS", "NOT IN"能优化她,而"<>"等还是不能优化,用不到索引.
23,使用Query Analyzer,查看SQL语句的查询计划和评估分析是否是优化的SQL.一般的20%的代码占据了80%的资源,我们优化的重点是这些慢的地方.
24,如果使用了IN或者OR等时发现查询没有走索引,使用显示申明指定索引: Select * FROM PersonMember (INDEX = IX_Title) Where processid IN ('男','女')
25,将需要查询的结果预先计算好放在表中,查询的时候再Select.这在SQL7.0以前是最重要的手段.例如医院的住院费计算.
26,MIN() 和 MAX()能使用到合适的索引.
27,数据库有一个原则是代码离数据越近越好,所以优先选择Default,依次为Rules,Triggers, Constraint(约束如外健主健CheckUNIQUE……,数据类型的最大长度等等都是约束),Procere.这样不仅维护工作小,编写程序质量高,并且执行的速度快.
28,如果要插入大的二进制值到Image列,使用存储过程,千万不要用内嵌Insert来插入 (不知JAVA是否).因为这样应用程序首先将二进制值转换成字符串(尺寸是它的两倍),服务器受到字符后又将他转换成二进制值.存储过程就没有这些动作: 方法:Create procere p_insert as insert into table(Fimage) values (@image), 在前台调用这个存储过程传入二进制参数,这样处理速度明显改善.
29,Between在某些时候比IN 速度更快,Between能够更快地根据索引找到范围.用查询优化器可见到差别. select * from chineseresume where title in ('男','女') Select * from chineseresume where between '男' and '女' 是一样的.由于in会在比较多次,所以有时会慢些.
30,在必要是对全局或者局部临时表创建索引,有时能够提高速度,但不是一定会这样,因为索引也耗费大量的资源.他的创建同是实际表一样.
31,不要建没有作用的事物例如产生报表时,浪费资源.只有在必要使用事物时使用它.
32,用OR的字句可以分解成多个查询,并且通过UNION 连接多个查询.他们的速度只同是否使用索引有关,如果查询需要用到联合索引,用UNION all执行的效率更高.多个OR的字句没有用到索引,改写成UNION的形式再试图与索引匹配.一个关键的问题是否用到索引.
33,尽量少用视图,它的效率低.对视图操作比直接对表操作慢,可以用stored procere来代替她.特别的是不要用视图嵌套,嵌套视图增加了寻找原始资料的难度.我们看视图的本质:它是存放在服务器上的被优化好了的已经产生了查询规划的SQL.对单个表检索数据时,不要使用指向多个表的视图,直接从表检索或者仅仅包含这个表的视图上读,否则增加了不必要的开销,查询受到干扰.为了加快视图的查询,MsSQL增加了视图索引的功能.
34,没有必要时不要用DISTINCT和ORDER BY,这些动作可以改在客户端执行.它们增加了额外的开销.这同UNION 和UNION ALL一样的道理.
select top 20 ad.companyname,comid,position,ad.referenceid,worklocation, convert(varchar(10),ad.postDate,120) as postDate1,workyear,degreedescription FROM jobcn_query.dbo.COMPANYAD_query ad where referenceID in('JCNAD00329667','JCNAD132168','JCNAD00337748','JCNAD00338345','JCNAD00333138','JCNAD00303570','JCNAD00303569','JCNAD00303568','JCNAD00306698',
'JCNAD00231935','JCNAD00231933','JCNAD00254567','JCNAD00254585','JCNAD00254608','JCNAD00254607','JCNAD00258524',
'JCNAD00332133','JCNAD00268618','JCNAD00279196','JCNAD00268613') order by postdate desc
35,在IN后面值的列表中,将出现最频繁的值放在最前面,出现得最少的放在最后面,减少判断的次数.
36,当用Select INTO时,它会锁住系统表(sysobjects,sysindexes等等),阻塞其他的连接的存取.创建临时表时用显示申明语句,而不是 select INTO. drop table t_lxh begin tran select * into t_lxh from chineseresume where ——commit 在另一个连接中Select * from sysobjects可以看到 Select INTO 会锁住系统表,Create table 也会锁系统表(不管是临时表还是系统表).所以千万不要在事物内使用它!!!这样的话如果是经常要用的临时表请使用实表,或者临时表变量.
37,一般在GROUP BY 个HAVING字句之前就能剔除多余的行,所以尽量不要用它们来做剔除行的工作.他们的执行顺序应该如下最优:select 的Where字句选择所有合适的行,Group By用来分组个统计行,Having字句用来剔除多余的分组.这样Group By 个Having的开销小,查询快.对于大的数据行进行分组和Having十分消耗资源.如果Group BY的目的不包括计算,只是分组,那么用Distinct更快
38,一次更新多条记录比分多次更新每次一条快,就是说批处理好
39,少用临时表,尽量用结果集和Table类性的变量来代替它,Table 类型的变量比临时表好
40,在SQL2000下,计算字段是可以索引的,需要满足的条件如下:
a,计算字段的表达是确定的
b,不能用在TEXT,Ntext,Image数据类型
c,必须配制如下选项 ANSI_NULLS = ON, ANSI_PADDINGS = ON, …….
41,尽量将数据的处理工作放在服务器上,减少网络的开销,如使用存储过程.存储过程是编译好,优化过,并且被组织到一个执行规划里,且存储在数据库中的SQL语句,是控制流语言的集合,速度当然快.反复执行的动态SQL,可以使用临时存储过程,该过程(临时表)被放在Tempdb中.以前由于SQL SERVER对复杂的数学计算不支持,所以不得不将这个工作放在其他的层上而增加网络的开销.SQL2000支持UDFs,现在支持复杂的数学计算,函数的返回值不要太大,这样的开销很大.用户自定义函数象光标一样执行的消耗大量的资源,如果返回大的结果采用存储过程
42,不要在一句话里再三的使用相同的函数,浪费资源,将结果放在变量里再调用更快
43,Select COUNT(*)的效率教低,尽量变通他的写法,而EXISTS快.同时请注意区别: select count(Field of null) from Table 和 select count(Field of NOT null) from Table 的返回值是不同的!!!
44,当服务器的内存够多时,配制线程数量 = 最大连接数+5,这样能发挥最大的效率;否则使用 配制线程数量<最大连接数启用SQL SERVER的线程池来解决,如果还是数量 = 最大连接数+5,严重的损害服务器的性能.
45,按照一定的次序来访问你的表.如果你先锁住表A,再锁住表B,那么在所有的存储过程中都要按照这个顺序来锁定它们.如果你(不经意的)某个存储过程中先锁定表B,再锁定表A,这可能就会导致一个死锁.如果锁定顺序没有被预先详细的设计好,死锁很难被发现
46,通过SQL Server Performance Monitor监视相应硬件的负载 Memory: Page Faults / sec计数器如果该值偶尔走高,表明当时有线程竞争内存.如果持续很高,则内存可能是瓶颈.
Process:
1,% DPC Time 指在范例间隔期间处理器用在缓延程序调用(DPC)接收和提供服务的百分比.(DPC 正在运行的为比标准间隔优先权低的间隔). 由于 DPC 是以特权模式执行的,DPC 时间的百分比为特权时间百分比的一部分.这些时间单独计算并且不属于间隔计算总数的一部 分.这个总数显示了作为实例时间百分比的平均忙时.
2,%Processor Time计数器如果该参数值持续超过95%,表明瓶颈是CPU.可以考虑增加一个处理器或换一个更快的处理器.
3,% Privileged Time 指非闲置处理器时间用于特权模式的百分比.(特权模式是为操作系统组件和操纵硬件驱动程序而设计的一种处理模式.它允许直接访问硬件和所有内存.另一种模式为用户模式,它是一种为应用程序,环境分系统和整数分系统设计的一种有限处理模式.操作系统将应用程序线程转换成特权模式以访问操作系统服务).特权时间的 % 包括为间断和 DPC 提供服务的时间.特权时间比率高可能是由于失败设备产生的大数量的间隔而引起的.这个计数器将平均忙时作为样本时间的一部分显示.
4,% User Time表示耗费CPU的数据库操作,如排序,执行aggregate functions等.如果该值很高,可考虑增加索引,尽量使用简单的表联接,水平分割大表格等方法来降低该值. Physical Disk: Curretn Disk Queue Length计数器该值应不超过磁盘数的1.5~2倍.要提高性能,可增加磁盘. SQLServer:Cache Hit Ratio计数器该值越高越好.如果持续低于80%,应考虑增加内存. 注意该参数值是从SQL Server启动后,就一直累加记数,所以运行经过一段时间后,该值将不能反映系统当前值.
47,分析select emp_name form employee where salary > 3000 在此语句中若salary是Float类型的,则优化器对其进行优化为Convert(float,3000),因为3000是个整数,我们应在编程时使用3000.0而不要等运行时让DBMS进行转化.同样字符和整型数据的转换.
48,查询的关联同写的顺序
select a.personMemberID, * from chineseresume a,personmember b where personMemberID = b.referenceid and a.personMemberID = 'JCNPRH39681' (A = B ,B = '号码')
select a.personMemberID, * from chineseresume a,personmember b where a.personMemberID = b.referenceid and a.personMemberID = 'JCNPRH39681' and b.referenceid = 'JCNPRH39681' (A = B ,B = '号码', A = '号码')
select a.personMemberID, * from chineseresume a,personmember b where b.referenceid = 'JCNPRH39681' and a.personMemberID = 'JCNPRH39681' (B = '号码', A = '号码')
‘柒’ TS格式的视频文件怎么转换成mp4文件。
1、首先你要安装好一款用于ts格式转换的转换器软件(视频转换器不收费),然后用ts格式视频添加到软件中去,图下为例:
(7)ts编译速度扩展阅读:
ts是日本高清摄像机拍摄下进行的封装格式,全称为MPEG2-TS。ts即"Transport Stream"的缩写。MPEG2-TS格式的特点就是要求从视频流的任一片段开始都是可以独立解码的。
ts格式转换器,也就是将ts这种格式进行编码或解码的格式转换器,ts格式是一种新兴的高清封装格式,对ts格式解码,即将ts格式解码再编码成其他格式,国内常用的ts格式转换器狸窝全能视频转换器常见的转换模式有:ts转rmvb,ts转mp4、ts转avi、ts转wmv;对ts格式编码,即指将其他格式转换成ts格式。
‘捌’ 大前端和前端不一样吗有什么区别啊
简单来说,大前端就是所有前端的统称,比如Android、iOS、web、Watch等,最接近用户的那一层也就是UI层,然后将其统一起来,就是大前端。大前端最大的特点在于一次开发,同时适用于所有平台,开发者不用为一个APP需要做Android和iOS两种模式而担心。大前端是web统一的时代,利用web不仅能开发出网站,更可以开发手机端web应用和移动端应用程序。
为什么出现大前端的概念?
由于node的出现,前端工程师不需要依赖于后端程序而直接运行,从而前后端分离起来。所以当开发一个新产品的时候服务只需要写一次,但是面向用户的产品可能有很多,例如网站、Android客户端、iOS客户端和微信小程序等。由于各个平台使用的技术栈都不一样,代码无法复用,非常浪费人力、物力。那么有没有什么技术能前端要学好必须每天坚持学习。为了方便大家的交流学习,也是创建了一个群每天都有分享学习方法和专业老师直播前端课程,这个扣裙首先是132 中间是667 最后是127 前端学习零基础想要学习的同学欢迎加入,如果只是凑热闹就不要来了!!!够解决这一痛点呢?大前端应运而生,其实大前端的主要核心就是跨平台技术,有了跨平台技术,各个平台的差异性就抹平了,开发者只需要一套技术栈就可以开发出适用于多个平台的客户端。
现在的前端都需要有多重开发技能,随着微信公众号、小程序的火热发展,这两个领域成为了前端开发的必备技能,更多的还有配合着打包技术的混合应用开发技术、一些桌面APP、甚至有些人认为基于node.js的后台开发都属于大前端的范围。
大前端的发展趋势
大前端不仅会成为移动开发与Web前端的发展趋势,也将会是未来的显示设备终端的开发技术趋势。大前端将做更多的终端开发、工程化等工作,而不仅仅只是开发Web页面。大前端工程师将能搞定所有端上的开发。与充满争议的全栈工程师相比,它更具可操作性。
但同时对开发者而言,要会更多的技术栈,比如原生开发者要学习html、css、js等前端知识,前端开发人员也要学习Android或iOS的原生开发技术,然后了解一下常见的跨平台技术,只有这样才能更好的融入到大前端的这个大家庭中。