Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

NOT allowed to change anything outside GasStationSimulation 1. Introduction We want to write a program to simulate the behavior of a self-serve gas station. The

NOT allowed to change anything outside GasStationSimulation

1. Introduction

We want to write a program to simulate the behavior of a self-serve gas station.

The goal of this simulation is to collect statistical information of the gas

stations cars and gas pumps. A gas station consists of several pumps and a car

waiting line (i.e. a car queue). In each time unit, at most one new car arrives

at the gas station. If the car waiting line is too long, the car leaves without

getting gas; otherwise, the car gets into the waiting line. If all pumps are busy,

cars in the waiting lines must wait for a gas pump. If a pump is free and cars are

waiting, the first car in the waiting line gets the pump and begins pumping gas

immediately. When a car finishes using a pump, the car departs and the pump

becomes free. We will run the simulation through many units of time. At the end of

each time unit, your program should print out a "snap-shot" of queues, cars and

pumps. At the end of the program, your program should print out statistics and

conclude simulation.

2. Assumptions and Requirements

2.1. Assumptions

- At most one car arrival per time unit

- All numbers are positive integer numbers (>=0), except average values

should be displayed to two decimal places

- No time lost in between events:

a car arriving and entering waiting line

a car arriving and leaving without pumping gas

a car completing service and departing

a car leaving the waiting line, advancing to a pump and

beginning service

2.2. The limits of simulations parameters

- Maximum number of pumps 10

- Maximum simulation length 10000

- Maximum service duration 500

- Maximum car queue limit 50

- Probability of a new car 1% - 100%

2.3. Input parameters and car (random/file) data

- The following data are read at the beginning of the simulation:

int numGasPumps; // number of gas pumps.

int simulationTime; // time to run simulation

int carQSizeLimit; // car queue size limit

int chancesOfArrival; // probability of a new car (1 - 100)

int maxDuration; // maximum service (or pumping gas) duration per car

int dataSource; // data source: from file or random

- Sample input layout :

$ java PJ3.GasStationSimulation

*** Get Simulation Parameters ***

Enter simulation time (positive integer) : 10

Enter the number of gas pumps : 3

Enter maximum service time of cars : 5

Enter chances (0% < & <= 100%) of new car : 75

Enter car queue size limit : 2

Enter 1/0 to get data from file/rand() : 1 <-- see more details below

Enter filename : DataFile <-- for input 1 above

- In each time unit of simulation, your program will need two positive integers

numbers to compute (i) boolean anyNewArrival & (ii) int serviceDuration.

A user should have two options (1 or 0) to specify the source of those numbers:

For user input 1, numbers are read from a file. A filename should be provided

at the beginning of simulation. Each line in a datafile should contain two

positive numbers (> 0). A datafile should contain sufficient data for

simulationTime. In each time unit, anyNewArrival & serviceDuration are computed

in getCarData() as follows :

read data1 and data2 from the file;

anyNewArrival = (((data1%100)+1)<= chancesOfArrival);

serviceDuration= (data2%maxDuration)+1;

For user input 0, numbers are generated by method nextInt() in a Random

object, dataRandom, which should be constructed at the beginning of

simulation. In each time unit, anyNewArrival & serviceDuration are computed

in getCarData() as follows :

anyNewArrival = ((dataRandom.nextInt(100)+1) <= chancesOfArrival);

serviceDuration = dataRandom.nextInt(maxDuration)+1;

2.4. Input/Output information

- At the end of each time unit, you program should print out "snap-shot" of

simulation. At the end of simulation, you program need to print out end

of simulation report

- Sample run is provided at the end of Readme file.

2.5. Data structures and simulation algorithm

- I have defined package PJ3 with the Car, GasPump and GasStation classes,

you need to implement their methods. I also provide an outline of a

simulation program GasStationSimulation.java.

3. Compile and run program

- You need to download PJ3.zip file (with sample datafie) from ilearn.

- Compile programs (you are in directory containing Readme file):

javac PJ3/*.java

- Run programs (you are in directory containing Readme file):

// Run simulation

java PJ3.GasStationSimulation

4. Due Date

- 11:59:59PM, Sunday, November 26, 2017

- To submit your project, you need to zip all source files (*.java) into PJ3.zip

and upload PJ3.zip file to ilearn.

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

SAMPLE RUN

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

$ ls

DataFile PJ3 Readme

$ javac PJ3/*.java

$ java PJ3.Car

Car Info:CarID=1:ServiceDuration=30:ArrivalTime=40

$ java PJ3.GasPump

CarID=1:ServiceDuration=5:ArrivalTime=15

GasPumpID:5:startIntervalTime=0:endIntervalTime=0:total free time=0:total service time=0:Car:null

Start service car:

GasPumpID:5:startIntervalTime=20:endIntervalTime=25:total free time=20:total service time=0:Car:CarID=1:ServiceDuration=5:ArrivalTime=15

End service car:

GasPumpID:5:startIntervalTime=25:endIntervalTime=25:total free time=20:total service time=5:Car:CarID=1:ServiceDuration=5:ArrivalTime=15

Gas pump statistics data:

GasPump ID : 5

Total free time : 20

Total service time : 5

Total # of cars : 1

Average service time : 5.00

$ java PJ3.GasStation

[CarID=1:ServiceDuration=18:ArrivalTime=10, CarID=2:ServiceDuration=33:ArrivalTime=11, CarID=3:ServiceDuration=21:ArrivalTime=12, CarID=3:ServiceDuration=37:ArrivalTime=13]

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

Remove car:CarID=1:ServiceDuration=18:ArrivalTime=10

Remove car:CarID=2:ServiceDuration=33:ArrivalTime=11

Remove car:CarID=3:ServiceDuration=21:ArrivalTime=12

Remove car:CarID=3:ServiceDuration=37:ArrivalTime=13

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

freeGasPumpQ:[GasPumpID:1:startIntervalTime=0:endIntervalTime=0:total free time=0:total service time=0:Car:null, GasPumpID:2:startIntervalTime=0:endIntervalTime=0:total free time=0:total service time=0:Car:null, GasPumpID:3:startIntervalTime=0:endIntervalTime=0:total free time=0:total service time=0:Car:null, GasPumpID:4:startIntervalTime=0:endIntervalTime=0:total free time=0:total service time=0:Car:null]

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

Remove free gas pump:GasPumpID:1:startIntervalTime=0:endIntervalTime=0:total free time=0:total service time=0:Car:null

Remove free gas pump:GasPumpID:2:startIntervalTime=0:endIntervalTime=0:total free time=0:total service time=0:Car:null

Remove free gas pump:GasPumpID:3:startIntervalTime=0:endIntervalTime=0:total free time=0:total service time=0:Car:null

Remove free gas pump:GasPumpID:4:startIntervalTime=0:endIntervalTime=0:total free time=0:total service time=0:Car:null

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

freeGasPumpQ:[]

busyGasPumpQ:[]

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

Assign cars to gas pumps

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

Insert busy gas pumps to busy Q

busyGasPumpQ:[GasPumpID:1:startIntervalTime=13:endIntervalTime=31:total free time=13:total service time=0:Car:CarID=1:ServiceDuration=18:ArrivalTime=10, GasPumpID:2:startIntervalTime=13:endIntervalTime=46:total free time=13:total service time=0:Car:CarID=2:ServiceDuration=33:ArrivalTime=11, GasPumpID:3:startIntervalTime=13:endIntervalTime=34:total free time=13:total service time=0:Car:CarID=3:ServiceDuration=21:ArrivalTime=12, GasPumpID:4:startIntervalTime=13:endIntervalTime=50:total free time=13:total service time=0:Car:CarID=3:ServiceDuration=37:ArrivalTime=13]

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

Remove busy gas pumps from busy Q

Remove busy gas pump:GasPumpID:1:startIntervalTime=31:endIntervalTime=31:total free time=13:total service time=18:Car:CarID=1:ServiceDuration=18:ArrivalTime=10

Remove busy gas pump:GasPumpID:3:startIntervalTime=34:endIntervalTime=34:total free time=13:total service time=21:Car:CarID=3:ServiceDuration=21:ArrivalTime=12

Remove busy gas pump:GasPumpID:2:startIntervalTime=46:endIntervalTime=46:total free time=13:total service time=33:Car:CarID=2:ServiceDuration=33:ArrivalTime=11

Remove busy gas pump:GasPumpID:4:startIntervalTime=50:endIntervalTime=50:total free time=13:total service time=37:Car:CarID=3:ServiceDuration=37:ArrivalTime=13

$ java PJ3.GasStationSimulation

*** Get Simulation Parameters ***

Enter simulation time (positive integer) : 10

Enter the number of gas pumps : 3

Enter chances (0% < & <= 100%) of new car : 75

Enter maximum service time of cars : 5

Enter car queue size limit : 2

Enter 0/1 to get data from Random/file : 1

Enter filename : DataFile

*** Start Simulation ***

Gas Pump #1 to #3 are ready...

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

Time : 0

car #1 arrives with duration 5 units

car #1 wait in the car queue

car #1 gets a pump

pump #1 starts serving car #1 for 5 units

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

Time : 1

car #2 arrives with duration 2 units

car #2 wait in the car queue

car #2 gets a pump

pump #2 starts serving car #2 for 2 units

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

Time : 2

car #3 arrives with duration 5 units

car #3 wait in the car queue

car #3 gets a pump

pump #3 starts serving car #3 for 5 units

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

Time : 3

No new car!

car #2 is done

pump #2 is free

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

Time : 4

car #4 arrives with duration 3 units

car #4 wait in the car queue

car #4 gets a pump

pump #2 starts serving car #4 for 3 units

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

Time : 5

No new car!

car #1 is done

pump #1 is free

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

Time : 6

car #5 arrives with duration 3 units

car #5 wait in the car queue

car #5 gets a pump

pump #1 starts serving car #5 for 3 units

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

Time : 7

car #6 arrives with duration 5 units

car #6 wait in the car queue

car #4 is done

pump #2 is free

car #3 is done

pump #3 is free

car #6 gets a pump

pump #2 starts serving car #6 for 5 units

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

Time : 8

No new car!

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

Time : 9

No new car!

car #5 is done

pump #1 is free

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

End of simulation report

# total arrival cars : 6

# cars gone-away : 0

# cars served : 6

*** Current GasPumps Info. ***

# waiting cars : 0

# busy gas pumps : 1

# free gas pumps : 2

Total waiting time : 0

Average waiting time : 0.00

Busy GasPumps Info. :

GasPump ID : 2

Total free time : 2

Total service time : 8

Total # of cars : 3

Average service time : 2.67

Free GasPumps Info. :

GasPump ID : 3

Total free time : 5

Total service time : 5

Total # of cars : 1

Average service time : 5.00

GasPump ID : 1

Total free time : 2

Total service time : 8

Total # of cars : 2

Average service time : 4.00

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

package PJ3;

import java.util.*;

import java.io.*;

// You may add new functions or data in this class

// You may modify any functions or data members here

// You must use Car, GasPump and GasStation classes

// to implement your simulator

class GasStationSimulation {

// input parameters

private int numGasPumps, carQSizeLimit;

private int simulationTime, dataSource;

private int chancesOfArrival, maxDuration;

// statistical data

private int numGoAway, numServed, totalWaitingTime;

// internal data

private int carIdCounter; // car ID counter

private GasStation gasStationObj; // Gas station object

private Scanner dataFile; // get car data from file

private Random dataRandom; // get car data using random function

// most recent car arrival info, see getCarData()

private boolean anyNewArrival;

private int serviceDuration;

// initialize data fields

private GasStationSimulation()

{

// add statements

}

private void getUserParameters()

{

// read input parameters

// setup dataFile or dataRandom

// add statements

}

// Refer to step 1 in doSimulation

// this method is called for each unit simulation time

private void getCarData()

{

// get next car data : from file or random number generator

// set anyNewArrival and serviceDuration

// add statements

}

private void doSimulation()

{

// add statements

// Initialize GasStation

// Time driver simulation loop

for (int currentTime = 0; currentTime < simulationTime; currentTime++) {

// Step 1: any new car enters the gas station?

getCarData();

if (anyNewArrival) {

// Step 1.1: setup car data

// Step 1.2: check car waiting queue too long?

// if it is too long, update numGoaway

// else enter car queue

} else {

System.out.println("\tNo new car!");

}

// Step 2: free busy pumps that are done at currentTime, add to free pumpQ

// Step 3: get free pumps to serve waiting cars

} // end simulation loop

// clean-up - close scanner

}

private void printStatistics()

{

// add statements into this method!

// print out simulation results

// see the given example in project statement

// you need to display all free and busy gas pumps

// need to free up all cars in Car queue to get extra waiting time.

// need to free up all gas pumps in free/busy queues to get extra free & busy time

}

// *** main method to run simulation ****

public static void main(String[] args) {

GasStationSimulation gas_station_simulator=new GasStationSimulation();

gas_station_simulator.getUserParameters();

gas_station_simulator.doSimulation();

gas_station_simulator.printStatistics();

}

}

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

// DO NOT ADD NEW METHODS OR NEW DATA FIELDS!

// DO NOT MODIFY METHODS OR NEW DATA FIELDS!

package PJ3;

import java.util.*;

//--------------------------------------------------------------------------

//

// Define simulation queues in a gas station. Queues hold references to Car &

// GasPump objects

//

// Car (FIFO) queue is used to hold waiting cars. If the queue is too long

// (i.e. > carQSizeLimit), car goes away without entering car queue

//

// There are several gas pumps in a gas station. Use PriorityQueue to

// hold BUSY gas pumps and FIFO queue to hold FREE gas pumps,

// i.e. a pump that is FREE for the longest time should start be used first.

//

// To handle gasPump in PriorityQueue, we need to define comparator

// for comparing 2 gasPump objects. Here is a constructor from Java API:

//

// PriorityQueue(int initialCapacity, Comparator comparator)

//

// For priority queue, the default compare function is "natural ordering"

// i.e. for numbers, minimum value is returned first

//

// User can define own comparator class for PriorityQueue.

// For GasPump objects, we like to have smallest end busy interval time first.

//

// The following class define compare() for two busy gas pumps :

class BusyGasPumpComparator implements Comparator{

// overide compare() method

public int compare(GasPump o1, GasPump o2) {

return o1.getEndIntervalTime() - o2.getEndIntervalTime();

}

}

class GasStation {

// Private data fields:

// define one priority queue

private PriorityQueue busyGasPumpQ;

// define two FIFO queues

private Queue carQ;

private Queue freeGasPumpQ;

// define car queue size limit

private int carQSizeLimit;

// Constructor

public GasStation()

{

// add statements

}

// Constructor

public GasStation(int numGasPumps, int carQlimit)

{

// add additional statements

// use ArrayDeque to construct FIFO queue objects

// construct PriorityQueue object

// overide compare() in Comparator to compare busy GasPump objects

busyGasPumpQ= new PriorityQueue( numGasPumps,

new BusyGasPumpComparator());

// initialize carQlimit

// Construct GasPump objects and insert into FreeGasPumpQ

// assign gas pump ID from 1, 2,..., numGasPumps

}

// -------------------------------------------------

// freeGasPumpQ methods: remove, insert, empty, size

// -------------------------------------------------

public GasPump removeFreeGasPumpQ()

{

// remove and return a free gasPump

// Add statetments

return null;

}

public void insertFreeGasPumpQ(GasPump gasPump)

{

// insert a free gasPump

// Add statetments

}

public boolean emptyFreeGasPumpQ()

{

// is freeGasPumpQ empty?

// Add statetments

return false;

}

public int numFreeGasPumps()

{

// get number of free gasPumps

// Add statetments

return 0;

}

// --------------------------------------------------------

// busyGasPumpQ methods: remove, insert, empty, size, peek

// --------------------------------------------------------

public GasPump removeBusyGasPumpQ()

{

// remove and return a busy gasPump

// Add statetments

return null;

}

public void insertBusyGasPumpQ(GasPump gasPump)

{

// insert a busy gasPump

// Add statetments

}

public boolean emptyBusyGasPumpQ()

{

// is busyGasPumpQ empty?

// Add statetments

return busyGasPumpQ.isEmpty();

}

public int numBusyGasPumps()

{

// get number of busy gasPumps

// Add statetments

return 0;

}

public GasPump getFrontBusyGasPumpQ()

{

// get front of busy gasPumps

// "retrieve" but not "remove"

// Add statetments

return null;

}

// --------------------------------------------------------

// carQ methods: remove, insert, empty, size

// and check isCarQTooLong()

// --------------------------------------------------------

public Car removeCarQ()

{

// remove and return a car

// Add statetments

return null;

}

public void insertCarQ(Car car)

{

// insert a car

// Add statetments

}

public boolean emptyCarQ()

{

// is carQ empty?

// Add statetments

return false;

}

public int numWaitingCars()

{

// get number of cars

// Add statetments

return 0;

}

public boolean isCarQTooLong()

{

// is carQ too long?

// Add statetments

return false;

}

public void printStatistics()

{

System.out.println("\t# waiting cars : "+numWaitingCars());

System.out.println("\t# busy gas pumps : "+numBusyGasPumps());

System.out.println("\t# free gas pumps : "+numFreeGasPumps());

}

public static void main(String[] args) {

// quick check

GasStation sc = new GasStation(4, 5);

Car c1 = new Car(1,18,10);

Car c2 = new Car(2,33,11);

Car c3 = new Car(3,21,12);

Car c4 = new Car(3,37,13);

// insert cars into carQ

sc.insertCarQ(c1);

sc.insertCarQ(c2);

sc.insertCarQ(c3);

sc.insertCarQ(c4);

System.out.println(""+sc.carQ);

System.out.println("===============================================");

System.out.println("Remove car:"+sc.removeCarQ());

System.out.println("Remove car:"+sc.removeCarQ());

System.out.println("Remove car:"+sc.removeCarQ());

System.out.println("Remove car:"+sc.removeCarQ());

System.out.println("===============================================");

// remove gasPumps from freeGasPumpQ

System.out.println("freeGasPumpQ:"+sc.freeGasPumpQ);

System.out.println("===============================================");

GasPump p1=sc.removeFreeGasPumpQ();

GasPump p2=sc.removeFreeGasPumpQ();

GasPump p3=sc.removeFreeGasPumpQ();

GasPump p4=sc.removeFreeGasPumpQ();

System.out.println("Remove free gas pump:"+p1);

System.out.println("Remove free gas pump:"+p2);

System.out.println("Remove free gas pump:"+p3);

System.out.println("Remove free gas pump:"+p4);

System.out.println("===============================================");

System.out.println("freeGasPumpQ:"+sc.freeGasPumpQ);

System.out.println("busyGasPumpQ:"+sc.busyGasPumpQ);

System.out.println("===============================================");

// insert car to gas pumps

p1.switchFreeToBusy (c1, 13);

p2.switchFreeToBusy (c2, 13);

p3.switchFreeToBusy (c3, 13);

p4.switchFreeToBusy (c4, 13);

System.out.println("Assign cars to gas pumps");

// insert gas pumps into busyGasPumpQ

System.out.println("===============================================");

System.out.println("Insert busy gas pumps to busy Q");

sc.insertBusyGasPumpQ(p1);

sc.insertBusyGasPumpQ(p2);

sc.insertBusyGasPumpQ(p3);

sc.insertBusyGasPumpQ(p4);

System.out.println("busyGasPumpQ:"+sc.busyGasPumpQ);

System.out.println("===============================================");

// remove gas pumps from busyGasPumpQ

System.out.println("Remove busy gas pumps from busy Q");

p1=sc.removeBusyGasPumpQ();

p2=sc.removeBusyGasPumpQ();

p3=sc.removeBusyGasPumpQ();

p4=sc.removeBusyGasPumpQ();

p1.switchBusyToFree();

p2.switchBusyToFree();

p3.switchBusyToFree();

p4.switchBusyToFree();

System.out.println("Remove busy gas pump:"+p1);

System.out.println("Remove busy gas pump:"+p2);

System.out.println("Remove busy gas pump:"+p3);

System.out.println("Remove busy gas pump:"+p4);

}

};

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

// DO NOT ADD NEW METHODS OR DATA FIELDS!

// DO NOT MODIFY METHODS OR DATA FIELDS!

package PJ3;

class GasPump {

// pump id and current car which is served by this gas pump

private int pumpId;

private Car currentCar;

// start time and end time of current interval

private int startIntervalTime;

private int endIntervalTime;

// for keeping statistical data

private int totalFreeTime;

private int totalBusyTime;

private int totalCars;

// Constructor

GasPump()

{

this(-1);

}

// Constructor with gas pump id

GasPump(int gasPumpId)

{

// add statements

}

//--------------------------------

// accessor methods

//--------------------------------

int getPumpId ()

{

return pumpId;

}

Car getCurrentCar()

{

return currentCar;

}

int getEndIntervalTime()

{

return endIntervalTime;

}

//---------------------------------

// GasPump State Transition methods

//---------------------------------

// State transition : FREE interval -> BUSY interval:

void switchFreeToBusy (Car currentCar, int currentTime)

{

// Main goal : switch from free interval to busy interval

//

// steps : end Free interval - set endIntervalTime, update totalFreeTime

// start Busy interval - set startIntervalTime , endIntervalTime, currentCar,

// update totalCars

// add statements

}

// State transition : BUSY interval -> FREE interval:

Car switchBusyToFree ()

{

// Main goal : switch from busy interval to free interval

//

// steps : end Busy interval - update totalBusyTime

// start Free interval - set startIntervalTime

// return currentCar (just done with service)

// add statements

return null;

}

//-------------------------------------------------------------------

// Update totalBusyTime and totalFreeTime at the end of simulation

//

// use these method at the end of simulation to update gas pump

// totalFreeTime or totalBusyTime data in free and busy queues

//------------------------------------------------------------------

void updateTotalFreeTimeEndSimulationTime(int endsimulationtime)

{

// add statements

}

void updateTotalBusyTimeEndSimulationTime(int endsimulationtime)

{

// add statements

}

//--------------------------------

// Print statistical data

//--------------------------------

void printStatistics ()

{

// print gasPump statistics, see project statement

System.out.println("\t\tGasPump ID : "+pumpId);

System.out.println("\t\tTotal free time : "+totalFreeTime);

System.out.println("\t\tTotal service time : "+totalBusyTime);

System.out.println("\t\tTotal # of cars : "+totalCars);

if (totalCars > 0)

System.out.format("\t\tAverage service time : %.2f%n ",(totalBusyTime*1.0)/totalCars);

}

public String toString()

{

return "GasPumpID:"+pumpId+

":startIntervalTime="+startIntervalTime+

":endIntervalTime="+endIntervalTime+

":total free time="+totalFreeTime+

":total service time="+totalBusyTime+

":Car:"+currentCar;

}

public static void main(String[] args) {

Car mycar = new Car(1,5,15);

System.out.println(mycar);

GasPump mypump = new GasPump(5);

System.out.println(mypump);

System.out.println(" Start service car:");

mypump.switchFreeToBusy (mycar, 20);

System.out.println(mypump);

System.out.println(" End service car:");

mypump.switchBusyToFree();

System.out.println(mypump);

System.out.println(" Gas pump statistics data:");

mypump.printStatistics();

}

};

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

// DO NOT ADD NEW METHODS OR DATA FIELDS!

// DO NOT MODIFY METHODS OR DATA FIELDS!

package PJ3;

class Car

{

private int carId;

private int serviceDuration;

private int arrivalTime;

// default constructor

Car()

{

carId = -1;

serviceDuration = -1;

arrivalTime = 0;

}

// constructor to set carId, serviceDuration,

// and arrivalTime

Car(int CID, int serviceTime, int arriveTime)

{

carId = CID;

serviceDuration = serviceTime;

arrivalTime = arriveTime;

}

int getServiceDuration()

{

return serviceDuration;

}

int getArrivalTime()

{

return arrivalTime;

}

int getCarId()

{

return carId;

}

public String toString()

{

return "CarID="+carId+":ServiceDuration="+serviceDuration+":ArrivalTime="+arrivalTime;

}

public static void main(String[] args) {

// quick check!

Car mycar = new Car(1,30,40);

System.out.println("Car Info:"+mycar);

}

}

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Datacasting How To Stream Databases Over The Internet

Authors: Jessica Keyes

1st Edition

007034678X, 978-0070346789

More Books

Students also viewed these Databases questions

Question

2. What process will you put in place to address conflicts?

Answered: 1 week ago

Question

What is the basis for Security Concerns in Cloud Computing?

Answered: 1 week ago

Question

Describe the three main Cloud Computing Environments.

Answered: 1 week ago