Name and path changes to help track down {CompileTimeError} issue
This commit is contained in:
parent
b947d10cbe
commit
e5071c5175
@ -1,4 +1,4 @@
|
|||||||
// arrays/Prefix1.java
|
// arrays/ParallelPrefix1.java
|
||||||
// (c)2016 MindView LLC: see Copyright.txt
|
// (c)2016 MindView LLC: see Copyright.txt
|
||||||
// We make no guarantees that this code is fit for any purpose.
|
// We make no guarantees that this code is fit for any purpose.
|
||||||
// Visit http://mindviewinc.com/Books/OnJava/ for more book information.
|
// Visit http://mindviewinc.com/Books/OnJava/ for more book information.
|
||||||
@ -6,7 +6,7 @@ import java.util.*;
|
|||||||
import onjava.*;
|
import onjava.*;
|
||||||
import static onjava.ArrayShow.*;
|
import static onjava.ArrayShow.*;
|
||||||
|
|
||||||
public class Prefix1 {
|
public class ParallelPrefix1 {
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
int[] nums = new Count.int_().array(10);
|
int[] nums = new Count.int_().array(10);
|
||||||
show(nums);
|
show(nums);
|
@ -1,4 +1,4 @@
|
|||||||
// arrays/Prefix2.java
|
// arrays/ParallelPrefix2.java
|
||||||
// (c)2016 MindView LLC: see Copyright.txt
|
// (c)2016 MindView LLC: see Copyright.txt
|
||||||
// We make no guarantees that this code is fit for any purpose.
|
// We make no guarantees that this code is fit for any purpose.
|
||||||
// Visit http://mindviewinc.com/Books/OnJava/ for more book information.
|
// Visit http://mindviewinc.com/Books/OnJava/ for more book information.
|
||||||
@ -6,7 +6,7 @@ import java.util.*;
|
|||||||
import onjava.*;
|
import onjava.*;
|
||||||
import static onjava.ArrayShow.*;
|
import static onjava.ArrayShow.*;
|
||||||
|
|
||||||
public class Prefix2 {
|
public class ParallelPrefix2 {
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
String[] strings = new Rand.String(1).array(8);
|
String[] strings = new Rand.String(1).array(8);
|
||||||
show(strings);
|
show(strings);
|
@ -1,10 +1,10 @@
|
|||||||
// arrays/ParallelPrefix.java
|
// arrays/ParallelPrefix3.java
|
||||||
// (c)2016 MindView LLC: see Copyright.txt
|
// (c)2016 MindView LLC: see Copyright.txt
|
||||||
// We make no guarantees that this code is fit for any purpose.
|
// We make no guarantees that this code is fit for any purpose.
|
||||||
// Visit http://mindviewinc.com/Books/OnJava/ for more book information.
|
// Visit http://mindviewinc.com/Books/OnJava/ for more book information.
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
public class ParallelPrefix {
|
public class ParallelPrefix3 {
|
||||||
static final int SIZE = 10_000_000;
|
static final int SIZE = 10_000_000;
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
long[] nums = new long[SIZE];
|
long[] nums = new long[SIZE];
|
@ -1,26 +0,0 @@
|
|||||||
// arrays/ParallelSort.java
|
|
||||||
// (c)2016 MindView LLC: see Copyright.txt
|
|
||||||
// We make no guarantees that this code is fit for any purpose.
|
|
||||||
// Visit http://mindviewinc.com/Books/OnJava/ for more book information.
|
|
||||||
import java.util.*;
|
|
||||||
import java.time.*;
|
|
||||||
import onjava.*;
|
|
||||||
import static onjava.TimeIt.*;
|
|
||||||
|
|
||||||
public class ParallelSort {
|
|
||||||
static final int SZ = 10_000_000;
|
|
||||||
public static void main(String[] args) {
|
|
||||||
int[] ia1 = new Rand.int_().array(SZ);
|
|
||||||
int[] ia2 = Arrays.copyOf(ia1, ia1.length);
|
|
||||||
System.out.print("sort(): ");
|
|
||||||
long millis1 = timeIt(() -> Arrays.sort(ia1));
|
|
||||||
System.out.print("parallelSort(): ");
|
|
||||||
long millis2 = timeIt(() -> Arrays.parallelSort(ia2));
|
|
||||||
System.out.println(millis1/millis2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/* Output:
|
|
||||||
sort(): 1237
|
|
||||||
parallelSort(): 344
|
|
||||||
3
|
|
||||||
*/
|
|
@ -14,7 +14,7 @@ aSlice = aList[2:4]
|
|||||||
print(aSlice) # [3, 4]
|
print(aSlice) # [3, 4]
|
||||||
|
|
||||||
class MyList(list): # Inherit from list
|
class MyList(list): # Inherit from list
|
||||||
# Define a method, 'this' pointer is explicit:
|
# Define a method; 'this' pointer is explicit:
|
||||||
def getReversed(self):
|
def getReversed(self):
|
||||||
reversed = self[:] # Copy list using slices
|
reversed = self[:] # Copy list using slices
|
||||||
reversed.reverse() # Built-in list method
|
reversed.reverse() # Built-in list method
|
||||||
|
25
arrays/jmh/ParallelSort.java
Normal file
25
arrays/jmh/ParallelSort.java
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
// arrays/jmh/ParallelSort.java
|
||||||
|
// (c)2016 MindView LLC: see Copyright.txt
|
||||||
|
// We make no guarantees that this code is fit for any purpose.
|
||||||
|
// Visit http://mindviewinc.com/Books/OnJava/ for more book information.
|
||||||
|
package arrays.jmh;
|
||||||
|
import java.util.*;
|
||||||
|
import onjava.*;
|
||||||
|
import org.openjdk.jmh.annotations.*;
|
||||||
|
|
||||||
|
@State(Scope.Thread)
|
||||||
|
public class ParallelSort {
|
||||||
|
private long[] la;
|
||||||
|
@Setup
|
||||||
|
public void setup() {
|
||||||
|
la = new Rand.long_().array(100_000);
|
||||||
|
}
|
||||||
|
@Benchmark
|
||||||
|
public void sort() {
|
||||||
|
Arrays.sort(la);
|
||||||
|
}
|
||||||
|
@Benchmark
|
||||||
|
public void parallelSort() {
|
||||||
|
Arrays.parallelSort(la);
|
||||||
|
}
|
||||||
|
}
|
@ -229,6 +229,7 @@ subprojects {
|
|||||||
|
|
||||||
// Exclude java sources that will not compile
|
// Exclude java sources that will not compile
|
||||||
if (tags.compileTimeError) {
|
if (tags.compileTimeError) {
|
||||||
|
println ">>> Excluding " + file.name
|
||||||
sourceSets.main.java.excludes.add(file.name)
|
sourceSets.main.java.excludes.add(file.name)
|
||||||
} else {
|
} else {
|
||||||
JavaExec javaTask = null
|
JavaExec javaTask = null
|
||||||
|
@ -3,16 +3,15 @@
|
|||||||
// We make no guarantees that this code is fit for any purpose.
|
// We make no guarantees that this code is fit for any purpose.
|
||||||
// Visit http://mindviewinc.com/Books/OnJava/ for more book information.
|
// Visit http://mindviewinc.com/Books/OnJava/ for more book information.
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import static onjava.TimeIt.*;
|
|
||||||
|
|
||||||
public class BadMicroBenchmark {
|
public class BadMicroBenchmark {
|
||||||
static final int SIZE = 20_000_000;
|
static final int SIZE = 20_000_000;
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
long[] la = new long[SIZE];
|
long[] la = new long[SIZE];
|
||||||
System.out.print("setAll: ");
|
System.out.print("setAll: ");
|
||||||
timeIt(() -> Arrays.setAll(la, n -> n));
|
Time.it(() -> Arrays.setAll(la, n -> n));
|
||||||
System.out.print("parallelSetAll: ");
|
System.out.print("parallelSetAll: ");
|
||||||
timeIt(() -> Arrays.parallelSetAll(la, n -> n));
|
Time.it(() -> Arrays.parallelSetAll(la, n -> n));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* Output:
|
/* Output:
|
||||||
|
@ -4,16 +4,15 @@
|
|||||||
// Visit http://mindviewinc.com/Books/OnJava/ for more book information.
|
// Visit http://mindviewinc.com/Books/OnJava/ for more book information.
|
||||||
// Reversing the test order
|
// Reversing the test order
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import static onjava.TimeIt.*;
|
|
||||||
|
|
||||||
public class BadMicroBenchmark2 {
|
public class BadMicroBenchmark2 {
|
||||||
static final int SIZE = 20_000_000;
|
static final int SIZE = 20_000_000;
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
long[] la = new long[SIZE];
|
long[] la = new long[SIZE];
|
||||||
System.out.print("parallelSetAll: ");
|
System.out.print("parallelSetAll: ");
|
||||||
timeIt(() -> Arrays.parallelSetAll(la, n -> n));
|
Time.it(() -> Arrays.parallelSetAll(la, n -> n));
|
||||||
System.out.print("setAll: ");
|
System.out.print("setAll: ");
|
||||||
timeIt(() -> Arrays.setAll(la, n -> n));
|
Time.it(() -> Arrays.setAll(la, n -> n));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* Output:
|
/* Output:
|
||||||
|
@ -4,7 +4,6 @@
|
|||||||
// Visit http://mindviewinc.com/Books/OnJava/ for more book information.
|
// Visit http://mindviewinc.com/Books/OnJava/ for more book information.
|
||||||
// Relying on a common resource
|
// Relying on a common resource
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import static onjava.TimeIt.*;
|
|
||||||
|
|
||||||
public class BadMicroBenchmark3 {
|
public class BadMicroBenchmark3 {
|
||||||
static final int SIZE = 20_000_000;
|
static final int SIZE = 20_000_000;
|
||||||
@ -12,17 +11,17 @@ public class BadMicroBenchmark3 {
|
|||||||
long[] la = new long[SIZE];
|
long[] la = new long[SIZE];
|
||||||
Random r = new Random();
|
Random r = new Random();
|
||||||
System.out.print("parallelSetAll: ");
|
System.out.print("parallelSetAll: ");
|
||||||
timeIt(() ->
|
Time.it(() ->
|
||||||
Arrays.parallelSetAll(la, n -> r.nextLong()));
|
Arrays.parallelSetAll(la, n -> r.nextLong()));
|
||||||
System.out.print("setAll: ");
|
System.out.print("setAll: ");
|
||||||
timeIt(() ->
|
Time.it(() ->
|
||||||
Arrays.setAll(la, n -> r.nextLong()));
|
Arrays.setAll(la, n -> r.nextLong()));
|
||||||
SplittableRandom sr = new SplittableRandom();
|
SplittableRandom sr = new SplittableRandom();
|
||||||
System.out.print("parallelSetAll: ");
|
System.out.print("parallelSetAll: ");
|
||||||
timeIt(() ->
|
Time.it(() ->
|
||||||
Arrays.parallelSetAll(la, n -> sr.nextLong()));
|
Arrays.parallelSetAll(la, n -> sr.nextLong()));
|
||||||
System.out.print("setAll: ");
|
System.out.print("setAll: ");
|
||||||
timeIt(() ->
|
Time.it(() ->
|
||||||
Arrays.setAll(la, n -> sr.nextLong()));
|
Arrays.setAll(la, n -> sr.nextLong()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,13 +3,8 @@
|
|||||||
// We make no guarantees that this code is fit for any purpose.
|
// We make no guarantees that this code is fit for any purpose.
|
||||||
// Visit http://mindviewinc.com/Books/OnJava/ for more book information.
|
// Visit http://mindviewinc.com/Books/OnJava/ for more book information.
|
||||||
// Demonstration of Design by Contract (DbC)
|
// Demonstration of Design by Contract (DbC)
|
||||||
// combined with white-box unit testing
|
|
||||||
package verifying;
|
package verifying;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import org.junit.Test;
|
|
||||||
import static org.junit.Assert.assertEquals;
|
|
||||||
import static org.junit.Assert.assertTrue;
|
|
||||||
import static org.junit.Assert.assertFalse;
|
|
||||||
|
|
||||||
public class Queue {
|
public class Queue {
|
||||||
private Object[] data;
|
private Object[] data;
|
||||||
@ -33,6 +28,7 @@ public class Queue {
|
|||||||
public boolean full() {
|
public boolean full() {
|
||||||
return wrapped && in == out;
|
return wrapped && in == out;
|
||||||
}
|
}
|
||||||
|
public boolean isWrapped() { return wrapped; }
|
||||||
public void put(Object item) {
|
public void put(Object item) {
|
||||||
precondition(item != null, "put() null item");
|
precondition(item != null, "put() null item");
|
||||||
precondition(!full(), "put() into full Queue");
|
precondition(!full(), "put() into full Queue");
|
||||||
@ -84,153 +80,10 @@ public class Queue {
|
|||||||
"non-null outside of queue range: " + dump());
|
"non-null outside of queue range: " + dump());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
private String dump() {
|
public String dump() {
|
||||||
return "in = " + in +
|
return "in = " + in +
|
||||||
", out = " + out +
|
", out = " + out +
|
||||||
", full() = " + full() +
|
", full() = " + full() +
|
||||||
", empty() = " + empty() +
|
", empty() = " + empty() +
|
||||||
", queue = " + Arrays.asList(data);
|
", queue = " + Arrays.asList(data);
|
||||||
}
|
}
|
||||||
// JUnit testing.
|
|
||||||
// As an inner class, this has access to privates:
|
|
||||||
public static class WhiteBoxTest {
|
|
||||||
private Queue queue = new Queue(10);
|
|
||||||
private int i = 0;
|
|
||||||
public WhiteBoxTest() {
|
|
||||||
while(i < 5) // Preload with some data
|
|
||||||
queue.put(Integer.toString(i++));
|
|
||||||
}
|
|
||||||
// Support methods:
|
|
||||||
private void showFullness() {
|
|
||||||
assertTrue(queue.full());
|
|
||||||
assertFalse(queue.empty());
|
|
||||||
// Dump is private, white-box testing allows access:
|
|
||||||
System.out.println(queue.dump());
|
|
||||||
}
|
|
||||||
private void showEmptiness() {
|
|
||||||
assertFalse(queue.full());
|
|
||||||
assertTrue(queue.empty());
|
|
||||||
System.out.println(queue.dump());
|
|
||||||
}
|
|
||||||
@Test
|
|
||||||
public void full() {
|
|
||||||
System.out.println("testFull");
|
|
||||||
System.out.println(queue.dump());
|
|
||||||
System.out.println(queue.get());
|
|
||||||
System.out.println(queue.get());
|
|
||||||
while(!queue.full())
|
|
||||||
queue.put(Integer.toString(i++));
|
|
||||||
String msg = "";
|
|
||||||
try {
|
|
||||||
queue.put("");
|
|
||||||
} catch(QueueException e) {
|
|
||||||
msg = e.getMessage();
|
|
||||||
System.out.println(msg);
|
|
||||||
}
|
|
||||||
assertEquals(msg, "put() into full Queue");
|
|
||||||
showFullness();
|
|
||||||
}
|
|
||||||
@Test
|
|
||||||
public void empty() {
|
|
||||||
System.out.println("testEmpty");
|
|
||||||
while(!queue.empty())
|
|
||||||
System.out.println(queue.get());
|
|
||||||
String msg = "";
|
|
||||||
try {
|
|
||||||
queue.get();
|
|
||||||
} catch(QueueException e) {
|
|
||||||
msg = e.getMessage();
|
|
||||||
System.out.println(msg);
|
|
||||||
}
|
|
||||||
assertEquals(msg, "get() from empty Queue");
|
|
||||||
showEmptiness();
|
|
||||||
}
|
|
||||||
@Test
|
|
||||||
public void nullPut() {
|
|
||||||
System.out.println("testNullPut");
|
|
||||||
String msg = "";
|
|
||||||
try {
|
|
||||||
queue.put(null);
|
|
||||||
} catch(QueueException e) {
|
|
||||||
msg = e.getMessage();
|
|
||||||
System.out.println(msg);
|
|
||||||
}
|
|
||||||
assertEquals(msg, "put() null item");
|
|
||||||
}
|
|
||||||
@Test
|
|
||||||
public void circularity() {
|
|
||||||
System.out.println("testCircularity");
|
|
||||||
while(!queue.full())
|
|
||||||
queue.put(Integer.toString(i++));
|
|
||||||
showFullness();
|
|
||||||
// White-box testing accesses private field:
|
|
||||||
assertTrue(queue.wrapped);
|
|
||||||
while(!queue.empty())
|
|
||||||
System.out.println(queue.get());
|
|
||||||
showEmptiness();
|
|
||||||
while(!queue.full())
|
|
||||||
queue.put(Integer.toString(i++));
|
|
||||||
showFullness();
|
|
||||||
while(!queue.empty())
|
|
||||||
System.out.println(queue.get());
|
|
||||||
showEmptiness();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public static void main(String[] args) {
|
|
||||||
org.junit.runner.JUnitCore.runClasses(
|
|
||||||
Queue.WhiteBoxTest.class);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/* Output:
|
|
||||||
testNullPut
|
|
||||||
put() null item
|
|
||||||
testCircularity
|
|
||||||
in = 0, out = 0, full() = true, empty() = false, queue =
|
|
||||||
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
|
||||||
0
|
|
||||||
1
|
|
||||||
2
|
|
||||||
3
|
|
||||||
4
|
|
||||||
5
|
|
||||||
6
|
|
||||||
7
|
|
||||||
8
|
|
||||||
9
|
|
||||||
in = 0, out = 0, full() = false, empty() = true, queue =
|
|
||||||
[null, null, null, null, null, null, null, null, null,
|
|
||||||
null]
|
|
||||||
in = 0, out = 0, full() = true, empty() = false, queue =
|
|
||||||
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
|
|
||||||
10
|
|
||||||
11
|
|
||||||
12
|
|
||||||
13
|
|
||||||
14
|
|
||||||
15
|
|
||||||
16
|
|
||||||
17
|
|
||||||
18
|
|
||||||
19
|
|
||||||
in = 0, out = 0, full() = false, empty() = true, queue =
|
|
||||||
[null, null, null, null, null, null, null, null, null,
|
|
||||||
null]
|
|
||||||
testFull
|
|
||||||
in = 5, out = 0, full() = false, empty() = false, queue =
|
|
||||||
[0, 1, 2, 3, 4, null, null, null, null, null]
|
|
||||||
0
|
|
||||||
1
|
|
||||||
put() into full Queue
|
|
||||||
in = 2, out = 2, full() = true, empty() = false, queue =
|
|
||||||
[10, 11, 2, 3, 4, 5, 6, 7, 8, 9]
|
|
||||||
testEmpty
|
|
||||||
0
|
|
||||||
1
|
|
||||||
2
|
|
||||||
3
|
|
||||||
4
|
|
||||||
get() from empty Queue
|
|
||||||
in = 5, out = 5, full() = false, empty() = true, queue =
|
|
||||||
[null, null, null, null, null, null, null, null, null,
|
|
||||||
null]
|
|
||||||
*/
|
|
||||||
|
144
verifying/QueueTest.java
Normal file
144
verifying/QueueTest.java
Normal file
@ -0,0 +1,144 @@
|
|||||||
|
// verifying/QueueTest.java
|
||||||
|
// (c)2016 MindView LLC: see Copyright.txt
|
||||||
|
// We make no guarantees that this code is fit for any purpose.
|
||||||
|
// Visit http://mindviewinc.com/Books/OnJava/ for more book information.
|
||||||
|
package verifying;
|
||||||
|
import verifying.Queue;
|
||||||
|
import org.junit.Test;
|
||||||
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
|
public class QueueTest {
|
||||||
|
private Queue queue = new Queue(10);
|
||||||
|
private int i = 0;
|
||||||
|
@Before
|
||||||
|
public void initialize() {
|
||||||
|
while(i < 5) // Preload with some data
|
||||||
|
queue.put(Integer.toString(i++));
|
||||||
|
}
|
||||||
|
// Support methods:
|
||||||
|
private void showFullness() {
|
||||||
|
assertTrue(queue.full());
|
||||||
|
assertFalse(queue.empty());
|
||||||
|
System.out.println(queue.dump());
|
||||||
|
}
|
||||||
|
private void showEmptiness() {
|
||||||
|
assertFalse(queue.full());
|
||||||
|
assertTrue(queue.empty());
|
||||||
|
System.out.println(queue.dump());
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
public void full() {
|
||||||
|
System.out.println("testFull");
|
||||||
|
System.out.println(queue.dump());
|
||||||
|
System.out.println(queue.get());
|
||||||
|
System.out.println(queue.get());
|
||||||
|
while(!queue.full())
|
||||||
|
queue.put(Integer.toString(i++));
|
||||||
|
String msg = "";
|
||||||
|
try {
|
||||||
|
queue.put("");
|
||||||
|
} catch(QueueException e) {
|
||||||
|
msg = e.getMessage();
|
||||||
|
System.out.println(msg);
|
||||||
|
}
|
||||||
|
assertEquals(msg, "put() into full Queue");
|
||||||
|
showFullness();
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
public void empty() {
|
||||||
|
System.out.println("testEmpty");
|
||||||
|
while(!queue.empty())
|
||||||
|
System.out.println(queue.get());
|
||||||
|
String msg = "";
|
||||||
|
try {
|
||||||
|
queue.get();
|
||||||
|
} catch(QueueException e) {
|
||||||
|
msg = e.getMessage();
|
||||||
|
System.out.println(msg);
|
||||||
|
}
|
||||||
|
assertEquals(msg, "get() from empty Queue");
|
||||||
|
showEmptiness();
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
public void nullPut() {
|
||||||
|
System.out.println("testNullPut");
|
||||||
|
String msg = "";
|
||||||
|
try {
|
||||||
|
queue.put(null);
|
||||||
|
} catch(QueueException e) {
|
||||||
|
msg = e.getMessage();
|
||||||
|
System.out.println(msg);
|
||||||
|
}
|
||||||
|
assertEquals(msg, "put() null item");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
public void circularity() {
|
||||||
|
System.out.println("testCircularity");
|
||||||
|
while(!queue.full())
|
||||||
|
queue.put(Integer.toString(i++));
|
||||||
|
showFullness();
|
||||||
|
assertTrue(queue.isWrapped());
|
||||||
|
while(!queue.empty())
|
||||||
|
System.out.println(queue.get());
|
||||||
|
showEmptiness();
|
||||||
|
while(!queue.full())
|
||||||
|
queue.put(Integer.toString(i++));
|
||||||
|
showFullness();
|
||||||
|
while(!queue.empty())
|
||||||
|
System.out.println(queue.get());
|
||||||
|
showEmptiness();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* Output:
|
||||||
|
testNullPut
|
||||||
|
put() null item
|
||||||
|
testCircularity
|
||||||
|
in = 0, out = 0, full() = true, empty() = false, queue =
|
||||||
|
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||||
|
0
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
5
|
||||||
|
6
|
||||||
|
7
|
||||||
|
8
|
||||||
|
9
|
||||||
|
in = 0, out = 0, full() = false, empty() = true, queue =
|
||||||
|
[null, null, null, null, null, null, null, null, null,
|
||||||
|
null]
|
||||||
|
in = 0, out = 0, full() = true, empty() = false, queue =
|
||||||
|
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
|
||||||
|
10
|
||||||
|
11
|
||||||
|
12
|
||||||
|
13
|
||||||
|
14
|
||||||
|
15
|
||||||
|
16
|
||||||
|
17
|
||||||
|
18
|
||||||
|
19
|
||||||
|
in = 0, out = 0, full() = false, empty() = true, queue =
|
||||||
|
[null, null, null, null, null, null, null, null, null,
|
||||||
|
null]
|
||||||
|
testFull
|
||||||
|
in = 5, out = 0, full() = false, empty() = false, queue =
|
||||||
|
[0, 1, 2, 3, 4, null, null, null, null, null]
|
||||||
|
0
|
||||||
|
1
|
||||||
|
put() into full Queue
|
||||||
|
in = 2, out = 2, full() = true, empty() = false, queue =
|
||||||
|
[10, 11, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||||
|
testEmpty
|
||||||
|
0
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
get() from empty Queue
|
||||||
|
in = 5, out = 5, full() = false, empty() = true, queue =
|
||||||
|
[null, null, null, null, null, null, null, null, null,
|
||||||
|
null]
|
||||||
|
*/
|
@ -5,19 +5,25 @@
|
|||||||
import org.slf4j.*;
|
import org.slf4j.*;
|
||||||
|
|
||||||
public class SLF4JLevels {
|
public class SLF4JLevels {
|
||||||
private static final Logger logger =
|
private static final Logger log =
|
||||||
LoggerFactory.getLogger(SLF4JLevels.class);
|
LoggerFactory.getLogger(SLF4JLevels.class);
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
logger.trace("level: trace");
|
log.trace("Hello");
|
||||||
logger.debug("level: debug");
|
log.debug("Logging");
|
||||||
logger.info("level: info");
|
log.info("Using");
|
||||||
logger.warn("level: warn");
|
log.warn("the SLF4J");
|
||||||
logger.error("level: error");
|
log.error("Facade");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* Output:
|
/* Output:
|
||||||
20:09:34.499 [main] DEBUG SLF4JLevels - level: debug
|
2016-08-22T14:33:01.951
|
||||||
20:09:34.502 [main] INFO SLF4JLevels - level: info
|
[main] TRACE SLF4JLevels - Hello
|
||||||
20:09:34.502 [main] WARN SLF4JLevels - level: warn
|
2016-08-22T14:33:01.954
|
||||||
20:09:34.502 [main] ERROR SLF4JLevels - level: error
|
[main] DEBUG SLF4JLevels - Logging
|
||||||
|
2016-08-22T14:33:01.954
|
||||||
|
[main] INFO SLF4JLevels - Using
|
||||||
|
2016-08-22T14:33:01.955
|
||||||
|
[main] WARN SLF4JLevels - the SLF4J
|
||||||
|
2016-08-22T14:33:01.955
|
||||||
|
[main] ERROR SLF4JLevels - Facade
|
||||||
*/
|
*/
|
||||||
|
@ -5,12 +5,13 @@
|
|||||||
import org.slf4j.*;
|
import org.slf4j.*;
|
||||||
|
|
||||||
public class SLF4JLogging {
|
public class SLF4JLogging {
|
||||||
private static final Logger logger =
|
private static final Logger log =
|
||||||
LoggerFactory.getLogger(SLF4JLogging.class);
|
LoggerFactory.getLogger(SLF4JLogging.class);
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
logger.info("hello logging");
|
log.info("hello logging");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* Output:
|
/* Output:
|
||||||
17:58:42.798 [main] INFO SLF4JLogging - hello logging
|
2016-08-22T14:42:44.177
|
||||||
|
[main] INFO SLF4JLogging - hello logging
|
||||||
*/
|
*/
|
||||||
|
@ -82,11 +82,11 @@ public class SimpleJUnit {
|
|||||||
compare(list, new String[] { "0", "1", "2",
|
compare(list, new String[] { "0", "1", "2",
|
||||||
"An", "African", "Swallow" });
|
"An", "African", "Swallow" });
|
||||||
}
|
}
|
||||||
public static void main(String[] args) {
|
/* public static void main(String[] args) {
|
||||||
// Invoke JUnit on the class:
|
// Invoke JUnit on the class:
|
||||||
org.junit.runner.JUnitCore.runClasses(
|
org.junit.runner.JUnitCore.runClasses(
|
||||||
SimpleJUnit.class);
|
SimpleJUnit.class);
|
||||||
}
|
} */
|
||||||
}
|
}
|
||||||
/* Output:
|
/* Output:
|
||||||
CountedList #0
|
CountedList #0
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// onjava/TimeIt.java
|
// verifying/Time.java
|
||||||
// (c)2016 MindView LLC: see Copyright.txt
|
// (c)2016 MindView LLC: see Copyright.txt
|
||||||
// We make no guarantees that this code is fit for any purpose.
|
// We make no guarantees that this code is fit for any purpose.
|
||||||
// Visit http://mindviewinc.com/Books/OnJava/ for more book information.
|
// Visit http://mindviewinc.com/Books/OnJava/ for more book information.
|
||||||
package onjava;
|
|
||||||
import java.util.concurrent.*;
|
import java.util.concurrent.*;
|
||||||
|
|
||||||
public interface TimeIt {
|
public interface Time {
|
||||||
static long timeIt(Runnable test) {
|
static long it(Runnable test) {
|
||||||
long start = System.nanoTime();
|
long start = System.nanoTime();
|
||||||
test.run();
|
test.run();
|
||||||
long delta = System.nanoTime() - start;
|
long delta = System.nanoTime() - start;
|
@ -1,8 +1,11 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<configuration>
|
<configuration>
|
||||||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
<appender name="STDOUT"
|
||||||
|
class="ch.qos.logback.core.ConsoleAppender">
|
||||||
<encoder>
|
<encoder>
|
||||||
<pattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n
|
<pattern>
|
||||||
|
%d{yyyy-MM-dd'T'HH:mm:ss.SSS}
|
||||||
|
[%thread] %-5level %logger - %msg%n
|
||||||
</pattern>
|
</pattern>
|
||||||
</encoder>
|
</encoder>
|
||||||
</appender>
|
</appender>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user