What is Spyware?

Any software that covertly gathers user information through the user's Internet connection without his or her knowledge, usually for advertising purposes. Spyware applications are typically bundled as a hidden component of freeware or shareware programs that can be downloaded from the Internet; however, it should be noted that the majority of shareware and freeware applications do not come with spyware. Once installed, the spyware monitors user activity on the Internet and transmits that information in the background to someone else. Spyware can also gather information about e-mail addresses and even passwords and credit card numbers.

Spyware is similar to a Trojan horse in that users unwittingly install the product when they install something else. A common way to become a victim of spyware is to download certain peer-to-peer file swapping products that are available today.

Aside from the questions of ethics and privacy, spyware steals from the user by using the computer's memory resources and also by eating bandwidth as it sends information back to the spyware's home base via the user's Internet connection. Because spywar

e is using memory and system resources, the applications running in the background can lead to system crashes or general system instability.

Because spyware exists as independent executable programs, they have the ability to monitor keystrokes, scan files on the hard drive, snoop other applications, such as chat programs or word processors, install other spyware programs, read cookies, change the default home page on the Web browser, consistently relaying this information back to the spyware author who will either use it for advertising/marketing purposes or sell the information to another party.

Licensing agreements that accompany software downloads sometimes warn the user that a spyware program will be installed along with the requested software, but the licensing agreements may not always be read completely because the notice of a spyware installation is often couched in obtuse, hard-to-read legal disclaimers.

..read more from the source page...http://www.webopedia.com/totd.asp

B+ - Trees

In computer science, a B+ tree is a type of tree, which represents sorted data in a way that allows for efficient insertion, retrieval and removal of records, each of which is identified by a key. It is a dynamic, multilevel index, with maximum and minimum bounds on the number of keys in each index segment (usually called a 'block' or 'node'). In a B+ tree, in contrast to a B-tree, all records are stored at the lowest level of the tree; only keys are stored in interior blocks.

The primary value of a B+ tree is in storing data for efficient retrieval in a block-oriented storage context. Given a storage system with a block size of b, a B+ tree which stores a number of keys equal to a multiple of b will be very efficient when compared to a binary search tree (the corresponding data structure for non-block-oriented storage contexts).

More about B+ here

B* - Tree

A B*-tree is a tree data structure, a variety of B-tree used in the HFS and Reiser4 file systems, which requires nonroot nodes to be at least 2/3 full instead of 1/2. To maintain this, instead of immediately splitting up a node when it gets full, its keys are shared with the node next to it. When both are full, then the two of them are split into three. It also requires the 'leftmost' key never to be used. The term is not in general use today as the implementation was never looked on positively by the computer science community-at-large; most people use "B-tree" generically to refer to all the variations and refinements of the basic data structure.

A B*-tree should not be confused with a B+ tree, which is one where the leaf nodes of the tree are chained together in the form of a linked list. That is efficient for searching at the cost of a more expensive insertion.


File Organization and Processing - Chapter 3

Relative File Organization

Within a relative file are numbered positions, called cells. These cells are of fixed equal length and are consecutively numbered from 1 to n, where 1 is the first cell, and n is the last available cell in the file. Each cell either contains a single record or is empty. Records in a relative file are accessed according to cell number. A cell number is a record's relative record number; its location relative to the beginning of the file. By specifying relative record numbers, you can directly retrieve, add, or delete records regardless of their locations. (Detecting deleted records is only available if you specified the -vms (Linux and Mac OS) or /vms (Windows) option when the program was compiled.)
***When creating a relative file, use the RECL value to determine the size of the fixed-length cells. Within the cells, you can store records of varying length, as long as their size does not exceed the cell size.

Indexed Files

Indexed files may have up to 255 keys, the keys can be alphanumeric and only the primary key must be unique. In addition, it is possible to read an Indexed file sequentially on any of its keys. An Indexed file may have multiple keys. The key upon which the data records are ordered is called the primary key. The other keys are called alternate keys.
Records in the Indexed file are sequenced on ascending primary key. Over the actual data records, the file system builds an index. When direct access is required, the file system uses this index to find, read, insert, update or delete, the required record.
An Indexed file may have multiple, alphanumeric, keys. Only the primary key must be unique. For each key specified for an Indexed file, an index will be built.

Binary Search Tree

Binary Search Trees
In computer science, a binary search tree (BST) is a binary tree data structure which has the following properties:
• each node (item in the tree) has a value;
• a total order (linear order) is defined on these values;
• the left subtree of a node contains only values less than the node's value;
• the right subtree of a node contains only values greater than or equal to the node's value.
The major advantage of binary search trees over other data structures is that the related sorting algorithms and search algorithms such as in-order traversal can be very efficient.
Binary search trees can choose to allow or disallow duplicate values, depending on the implementation.
Binary search trees are a fundamental data structure used to construct more abstract data structures such as sets, multisets, and associative arrays.
The use of bianry search tree to organize such collections of rtecords enablaes reasobale performance to be achieved both for access direclty to particular record based upon its names and for access sequentially to the entire collection in order by record’s names.
Operations on Binary Search Trees
There are four basic operation on bunary search trees: direct search, sequential search, node insertion, and node deletion.

The properties of a binary search tree simply that there is a procedure for determining whether or not a node with a given name resides in the tree and for determining whether or not a node with a given name resides in the tree and for finding that node when it exists. To find the node with name n in the binary search tree whose root node is Ri:
1. If the tree is empty, then the search terminates unsuccessfully.
2. If n= Ni, then the search terminates successfully; the sought node is R1.
3. If n < Ni, then the left subtree of Ri is searched, i.e., Ri := Left(Ri).
4. If n > Ni, then the right subtree of Ri is searched, i.e, Ri := Right(Ri).
Sequesntial search of a binary tree is accomplished by traversing the nodes of the tree in such a way that the nodes are visited in order by their names.
Inserting a new node with name n in the binary search tree rooted at Ri:
1. If the tree is empty, then the node with the name n becomes the root.
2. If n = Ni, then the insertion terminates unsuccessfully; the name is already in the tree.
3. If n < Ni, then the left subtree of Ri is searched until the appropriate position for the node is found.
4. If n > Ni, then the right subtree of Ri is searched until the appropriate position of the new node is found.

Deleting a node in the binary search tree
If the node to be deleted is a leaf, then the process is simple; the leaf is pruned nearly from the tree.
If the node to be deleted is not a leaf, then the process must do something to preserve that nodes’ subtress.

Virtual Storage Access Method

Virtual Storage Access Method - VSAM - is a data management system introduced by IBM in the 1970s as part of the OS/VS1 and OS/VS2 operating systems. It is an access method used by most major mainframe systems to implement the different kinds of file organization techniques.

Types of VSAM Files
VSAM datasets are frequently referred to as clusters. A KSDS cluster consists of two physical parts, an index component, and a data component. ESDS and RRDS clusters consist of only a single component, the data component.
KSDS Cluster Components
Each record in the data component of a KSDS cluster contains a key field, which must be the same number of characters and occur in the same relative position in each record. The records are stored in the data component in logical sequence based upon their key field value. The index component of the KSDS cluster contains the list of key values for the records in the cluster with pointers to the corresponding records in the data component. The records in a KSDS may be accessed sequentially, in order by key value, or directly, by supplying the key value of the desired record. The records of a KSDS cluster may be fixed length or variable length. Records may be added or deleted at any point within a KSDS cluster, and the affected record is inserted or removed, and the surrounding records will be reorganized as required to maintain the correct logical sequence.
ESDS Cluster Components
The records in an ESDS cluster are stored in the order in which they are entered into the dataset. Each record is referenced by its relative byte address (RBA). In an ESDS dataset of 100 byte records, the RBA of the first record is 0, the RBA of the second record is 100, the RBA of the third record is 200, etc. The records in an ESDS may be accessed sequentially, in order by RBA value, or directly, by supplying the RBA of the desired record. The records of an ESDS cluster may be fixed length or variable length. Records may not be deleted from an ESDS cluster, and they may only be added (appended) to the end of the dataset, following records previously written.
RRDS Cluster Components
The records in an RRDS cluster are stored in fixed length slots. Each record is referenced by the number of its slot, which is a number varying from 1 to the maximum number of records, which may be contained in the dataset. The records in an RRDS cluster may be accessed sequentially, in relative record number order, or directly, by supplying the relative record number of the desired record. The records of an RRDS cluster must be of fixed length. Records may be added to an RRDS cluster by writing a new record's data into an empty slot, and records may be deleted from an RRDS cluster, thereby leaving an empty slot where the record that was deleted was previously stored.