We have already seen several functions that are built into the SQL language. In this section, we show how developers can write their own functions and procedures, store them in the database, and then invoke them from SQL statements. 继续阅读“Relational Databases ~ Advanced SQL II”
Relational Databases ~ Advanced SQL I
In previous series, we provided detailed coverage of the basic structure of SQL. In this series, we cover some of the the more advanced features of SQL. We address the issue of how to access SQL from a general-purpose programming language, which is very important for building applications that use a database to store database, either by extending the SQL language to support procedural actions, or by allowing functions defined in procedural languages to be executed within the database. We describe triggers, which can be used to specify actions that are to be carried out automatically on certain events such as insertion, deletion, or update of tuples in a specified relation. We discuss recursive queries and advanced aggregation features supported by SQL. Finally, we describe online analytic processing (OLAP) systems, which support interactive analysis of very large datasets. 继续阅读“Relational Databases ~ Advanced SQL I”
Relational Databases ~ Intermediate SQL III
In previous series, we covered a number of built-in data types supported in SQL, such as integer types, real types, and character types. There are additional built-in data types supported by SQL, which we describe below. We also describe how to create basic user-defined types in SQL. 继续阅读“Relational Databases ~ Intermediate SQL III”
Abstract Data Types~ Application-Based ADT Example
As a final example in ADT series, we consider in this section an application-specific ADT that is representative of the relationship between applications domains and the algorithms and data structures of the type that we consider in this series. 继续阅读“Abstract Data Types~ Application-Based ADT Example”
Abstract Data Types~ First-Class ADTs
Our interfaces and implementations of stack and FIFO queue ADTs in Abstract Data Types~Stack ADT and Abstract Data Types~Queues and Unique Items provide clients with the capability to use a single instance of a particular generalized stack or queue, and to achieve the important objective of hiding from the client the particular data structure used in the implementation. Such ADTs are widely useful, and will serve as the basis for many of the implementations that we consider in this series. 继续阅读“Abstract Data Types~ First-Class ADTs”
Abstract Data Types~Queues and Unique Items
Abstract Data Types~Stack ADT present a complete example of C code that captures one of our most important abstractions: the pushdown stack. The interface defines the basic operations; client programs can use those operations without dependence on how the operations are implemented; and implementations provide the necessary concrete representation and program code to realize the abstraction. 继续阅读“Abstract Data Types~Queues and Unique Items”
PCB设计中的过孔
过孔(Via)是多层 PCB 的重要组成部分之一,从作用上看,过孔可分成两类:一是用作各层间的电气连接;二是用作器件的固定或定位。从工艺制程上来说,过孔又分为:盲孔(Blind Via)、埋孔(Buried Via)和通孔(Through Via)。盲孔位于印刷线路板的顶层和底层表面,具有一定深度,用于表层线路和下面的内层线路的连接,孔的深度通常不超过一定的比率(孔径)。埋孔是指位于印刷线路板内层的连接孔,其不会延伸到线路板的表面,上述两类孔都位于线路板的内层,层压前利用通孔成型工艺完成,在过孔形成过程中可能还会重叠做好几个内层。通孔贯穿整个线路板,可用于实现内部互连或作为元件的安装定位孔。文中所述过孔,无特殊说明,均作为通孔考虑。 继续阅读“PCB设计中的过孔”
信号完整性小记 ~ 差分对及差分阻抗
差分对是指一对存在耦合的传输线,采用两条信号线,让差分信号以差分对为载体进行传输。关于差分阻抗的详细定义请参考文末文献。 继续阅读“信号完整性小记 ~ 差分对及差分阻抗”
电源完整性小记
电源完整性(Power Integrity)简称 PI,是确认电源来源及目的端的电压及电流是否符合需求。电源完整性在现如今的电子产品中相当重要。电源完整性囊括以下层面:芯片层面、芯片封装层面、电路板层面及系统层面。在电路板层面的电源完整性需达到以下三个需求:
- 使芯片引脚的电压纹波比规格要小一些(如电压和 1V 之间的误差小于±50mV);
- 控制接地反弹(亦称之为同步切换噪声 SSN、同步切换输出 SSO);
- 降低电磁干扰(EMI)并且维持电磁兼容性(EMC):电源分布网络(PDN)是电路板上最大型的导体,故亦为最易发射及接收噪声的天线。