update at 2021-08-12 23:15:14 by ehlxr
This commit is contained in:
@@ -26,9 +26,9 @@ package io.github.ehlxr.http;
|
|||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.net.http.HttpClient;
|
// import java.net.http.HttpClient;
|
||||||
import java.net.http.HttpRequest;
|
// import java.net.http.HttpRequest;
|
||||||
import java.net.http.HttpResponse;
|
// import java.net.http.HttpResponse;
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -38,34 +38,34 @@ import java.time.Duration;
|
|||||||
public class Main {
|
public class Main {
|
||||||
public static void main(String[] args) throws IOException, InterruptedException {
|
public static void main(String[] args) throws IOException, InterruptedException {
|
||||||
|
|
||||||
HttpClient client = HttpClient.newBuilder()
|
// HttpClient client = HttpClient.newBuilder()
|
||||||
.version(HttpClient.Version.HTTP_1_1)
|
// .version(HttpClient.Version.HTTP_1_1)
|
||||||
.followRedirects(HttpClient.Redirect.NORMAL)
|
// .followRedirects(HttpClient.Redirect.NORMAL)
|
||||||
.connectTimeout(Duration.ofSeconds(20))
|
// .connectTimeout(Duration.ofSeconds(20))
|
||||||
// .proxy(ProxySelector.of(new InetSocketAddress("proxy.example.com", 80)))
|
// // .proxy(ProxySelector.of(new InetSocketAddress("proxy.example.com", 80)))
|
||||||
// .authenticator(Authenticator.getDefault())
|
// // .authenticator(Authenticator.getDefault())
|
||||||
.build();
|
// .build();
|
||||||
|
//
|
||||||
HttpRequest request = HttpRequest.newBuilder()
|
// HttpRequest request = HttpRequest.newBuilder()
|
||||||
.uri(URI.create("https://ehlxr.me/"))
|
// .uri(URI.create("https://ehlxr.me/"))
|
||||||
.timeout(Duration.ofMinutes(2))
|
// .timeout(Duration.ofMinutes(2))
|
||||||
.header("Content-Type", "application/json")
|
// .header("Content-Type", "application/json")
|
||||||
.GET()
|
// .GET()
|
||||||
// .POST(HttpRequest.BodyPublishers.ofFile(Paths.get("file.json")))
|
// // .POST(HttpRequest.BodyPublishers.ofFile(Paths.get("file.json")))
|
||||||
.build();
|
// .build();
|
||||||
|
//
|
||||||
// Synchronous Example
|
// // Synchronous Example
|
||||||
// HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
|
// // HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
|
||||||
// System.out.println(response.statusCode());
|
// // System.out.println(response.statusCode());
|
||||||
// System.out.println(response.body());
|
// // System.out.println(response.body());
|
||||||
|
//
|
||||||
|
//
|
||||||
// Asynchronous Example
|
// // Asynchronous Example
|
||||||
|
//
|
||||||
client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
|
// client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
|
||||||
.thenApply(HttpResponse::body)
|
// .thenApply(HttpResponse::body)
|
||||||
.thenAccept(body -> System.out.println("response body is:\n" + body))
|
// .thenAccept(body -> System.out.println("response body is:\n" + body))
|
||||||
.join();
|
// .join();
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
56
src/main/java/io/github/ehlxr/test/OOMTest.java
Normal file
56
src/main/java/io/github/ehlxr/test/OOMTest.java
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
/*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright © 2021 xrv <xrg@live.com>
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package io.github.ehlxr.test;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* -Xms600m -Xmx600m -XX:SurvivorRatio=8 -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/Users/ehlxr/Downloads/hprof/1.hprof
|
||||||
|
*
|
||||||
|
* @author ehlxr
|
||||||
|
* @since 2021-08-08 21:26.
|
||||||
|
*/
|
||||||
|
public class OOMTest {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
ArrayList<Picture> list = new ArrayList<>();
|
||||||
|
while (true) {
|
||||||
|
try {
|
||||||
|
Thread.sleep(5);
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
list.add(new Picture(new Random().nextInt(100 * 50)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Picture {
|
||||||
|
private byte[] pixels;
|
||||||
|
|
||||||
|
public Picture(int length) {
|
||||||
|
this.pixels = new byte[length];
|
||||||
|
}
|
||||||
|
}
|
111
src/main/java/io/github/ehlxr/test/StudentTrace.java
Normal file
111
src/main/java/io/github/ehlxr/test/StudentTrace.java
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
package io.github.ehlxr.test;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 有一个学生浏览网页的记录程序,它将记录 每个学生访问过的网站地址。
|
||||||
|
* 它由三个部分组成:Student、WebPage和StudentTrace三个类
|
||||||
|
* <p>
|
||||||
|
* -XX:+HeapDumpBeforeFullGC -XX:HeapDumpPath=/Users/ehlxr/Downloads/hprof/student.hprof
|
||||||
|
*
|
||||||
|
* @author shkstart
|
||||||
|
* @create 16:11
|
||||||
|
*/
|
||||||
|
public class StudentTrace {
|
||||||
|
static List<WebPage> webpages = new ArrayList<WebPage>();
|
||||||
|
|
||||||
|
|
||||||
|
public static void createWebPages() {
|
||||||
|
for (int i = 0; i < 100; i++) {
|
||||||
|
WebPage wp = new WebPage();
|
||||||
|
wp.setUrl("http://www." + Integer.toString(i) + ".com");
|
||||||
|
wp.setContent(Integer.toString(i));
|
||||||
|
webpages.add(wp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
createWebPages();//创建了100个网页
|
||||||
|
//创建3个学生对象
|
||||||
|
Student st3 = new Student(3, "Tom");
|
||||||
|
Student st5 = new Student(5, "Jerry");
|
||||||
|
Student st7 = new Student(7, "Lily");
|
||||||
|
|
||||||
|
for (int i = 0; i < webpages.size(); i++) {
|
||||||
|
if (i % st3.getId() == 0)
|
||||||
|
st3.visit(webpages.get(i));
|
||||||
|
if (i % st5.getId() == 0)
|
||||||
|
st5.visit(webpages.get(i));
|
||||||
|
if (i % st7.getId() == 0)
|
||||||
|
st7.visit(webpages.get(i));
|
||||||
|
}
|
||||||
|
webpages.clear();
|
||||||
|
System.gc();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Student {
|
||||||
|
private int id;
|
||||||
|
private String name;
|
||||||
|
private List<WebPage> history = new ArrayList<>();
|
||||||
|
|
||||||
|
public Student(int id, String name) {
|
||||||
|
super();
|
||||||
|
this.id = id;
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(int id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<WebPage> getHistory() {
|
||||||
|
return history;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHistory(List<WebPage> history) {
|
||||||
|
this.history = history;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void visit(WebPage wp) {
|
||||||
|
if (wp != null) {
|
||||||
|
history.add(wp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class WebPage {
|
||||||
|
private String url;
|
||||||
|
private String content;
|
||||||
|
|
||||||
|
public String getUrl() {
|
||||||
|
return url;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUrl(String url) {
|
||||||
|
this.url = url;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getContent() {
|
||||||
|
return content;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setContent(String content) {
|
||||||
|
this.content = content;
|
||||||
|
}
|
||||||
|
}
|
@@ -24,6 +24,7 @@
|
|||||||
|
|
||||||
package io.github.ehlxr.test;
|
package io.github.ehlxr.test;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -34,7 +35,7 @@ import java.util.stream.Collectors;
|
|||||||
* Created by ehlxr on 2016/12/15.
|
* Created by ehlxr on 2016/12/15.
|
||||||
*/
|
*/
|
||||||
public class Test {
|
public class Test {
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) throws IOException {
|
||||||
// String s0 = "kvill";
|
// String s0 = "kvill";
|
||||||
// String s1 = "kvill";
|
// String s1 = "kvill";
|
||||||
// String s2 = "kvill";
|
// String s2 = "kvill";
|
||||||
@@ -84,5 +85,7 @@ public class Test {
|
|||||||
System.out.println(s1 == s2);
|
System.out.println(s1 == s2);
|
||||||
System.out.println(s == t); // false
|
System.out.println(s == t); // false
|
||||||
System.out.println(s.intern() == t.intern()); // true
|
System.out.println(s.intern() == t.intern()); // true
|
||||||
|
|
||||||
|
System.in.read();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user