- Siêu lớp và danh mục iOS/Objective-C
- object-c - -1001 lỗi khi NSURLSession vượt qua httpproxy và /etc/hosts
- java - Nhận địa chỉ url bằng lớp mạng
- ios - Âm thanh không phát trong thông báo đẩy
Cập nhật: Câu hỏi này ít nhất đã được thông qua -XX:+UseCountedLoopSafepoints
Sự kết hợp của phiên bản JVM bằng hoặc cao hơn JDK 1.8.0_92 (đã thử nghiệm với _161) gần như giải quyết được vấn đề.
Bản gốc: Chứa mẫu chạy JDK 1.8.0, nhưng nó cũng xảy ra trên JDK 9.0.4.
Tôi đang xử lý một lỗi lạ dường như tự biểu hiện khi JVM dừng tất cả các luồng theo cách rất nhất quán với việc tạm dừng điểm an toàn. Các hoạt động của VM đôi khi được liệt kê là "các hoạt động không có VM". BẰNG -XX
đầu ra tùy chọn và jvisualVM
Như đã xác nhận, GC không liên quan đến sự chậm lại.
Tất cả đều nằm trong lớp 100 dòng bên dưới. Tôi đã dựa trên sự đơn giản boolean
Đặt mã ghép nối đáng kể để hiển thị vấn đề. đang tìm kiếm MAKE_THE_JVM_PAUSE_UNEXPECTEDLY
boolean
.
Tôi đang tạo 5000x5000 boolean
array và truy cập ngẫu nhiên 10 hàng đầu tiên ở cột 66. Mã thực tế gây ra vấn đề tương tự.
Bản thân thuật toán trong ví dụ này là vô nghĩa. đây chỉ là mộtcaoVí dụ ghép nối.
Các tùy chọn để chạy nó nằm trong phần bình luận tiêu đề.
đường dẫn trọn gói;
/**
* Chạy cái này với các tùy chọn java VM sau:
*
* -verbosegc
* -XX:+PrintGCApplicationStoppedTime
* -XX:+Thống kê PrintSafepoint
* -XX:PrintSafepointStatisticsCount=1
* -XX:+PrintGChi tiết
* -XX:+PerfDisableSharedMem
*/
lớp công cộng Conway
{
public static void main(String[] args)
{
//----------------------[THIM TIM]---------------------- -
Chủ đề mới(() ->
{
startTime dài = System.currentTimeMillis();
thời gian cuối cùng dài = thời gian bắt đầu;
cho (int count=0;; count++)
{
// Dấu thời gian....
lâu rồi = System.currentTimeMillis();
System.out.printf("%d-->Thời gian delta từ đầu[%dms], từ cuối[%dms]\n",
đếm, bây giờ-thời gian bắt đầu, bây giờ-thời gian cuối cùng);
System.out.flush();
Lần cuối cùng = bây giờ;
// Lãng phí thời gian mà không ngủ...
for (bắt đầu dài = System.currentTimeMillis();
System.currentTimeMillis() - bắt đầu < 200;);
}
}).bắt đầu();
//--------------[PHẦN TÍNH]------------- -
một = boolean mới[5000][5000];
boolean MAKE_THE_JVM_PAUSE_UNEXPECTEDLY = đúng;
vì (;;)
{
nếu (MAKE_THE_JVM_PAUSE_UNEXPECTEDLY)
{
/**
* CUỘC GỌI quét() sẽ khiến tất cả các chủ đề tạm dừng theo định kỳ...
*/
quét();
}
khác
{
/**
* NÀY CHẠY TUYỆT VỜI. Nội dung giống hệt như trong scanner() bên dưới...
*/
cho (int y=0; y<5000; y++)
{
cho (int x=0; x<5000; x++)
{
int Living=0;
vì (int yy=y-1; yy <= y+1; yy++)
cho (int xx=x-1; xx <= x+1; xx++)
{
if (một[randomInt(0, 10)][66])
sống++;
}
} // cho(x...)
} // cho(y...)
}
} // vì(;;)
}
quét khoảng trống tĩnh công cộng()
{
cho (int y=0; y<5000; y++)
{
cho (int x=0; x<5000; x++)
{
int Living=0;
vì (int yy=y-1; yy <= y+1; yy++)
cho (int xx=x-1; xx <= x+1; xx++)
{
if (một[randomInt(0,10)][66])
sống++;
}
} // cho(x...)
} // cho(y...)
}
public static int RandomInt(int đầu tiên, int cuối cùng)
{
return (int)(((last-first+1)*Math.random())+first);
}
boolean tĩnh công khai[][] một;
}
bây giờ khi tôi MAKE_THE_JVM_PAUSE_UNEXPECTEDLY
boolean
设置为 ĐÚNG VẬY
Nó gây ra sự chậm lại kỳ lạ khi chạy thứ này.
Lưu ý rằng vấn đề xảy ra đầu tiên giữa nhịp tim 49 và 50. Nhịp tim xuất phát từ luồng đầu tiên (bắt đầu ẩn danh) trong mã, bản thân thuật toán sử dụng luồng lớp chính và xác định luồng này bằng một dòng tương tự như:
11-->Thời gian delta từ lúc bắt đầu[2210ms], từ lần cuối[200ms]
Tôi đã tự mình kết thúc cuộc chạy.
[GC (Lỗi phân bổ) [PSYoungGen: 512K->384K(1024K)] 512K->384K(523776K), 0,0004807 giây] [Thời gian: người dùng=0,00 sys=0,00, real=0,00 giây]
vmop [chủ đề: tổng số ban đầu_running wait_to_block] [thời gian: dọn dẹp đồng bộ hóa khối quay vmop] page_trap_count
0,053: ParallelGFailedAllocation [ 5 0 0 ] [ 0 0 0 0 0 ] 0
Tổng thời gian mà các luồng ứng dụng bị dừng: 0,0005755 giây
[GC (Lỗi phân bổ) [PSYoungGen: 896K->480K(1024K)] 896K->488K(523776K), 0,0003818 giây] [Thời gian: người dùng=0,00 sys=0,00, real=0,00 giây]
vmop [chủ đề: tổng số ban đầu_running wait_to_block] [thời gian: dọn dẹp đồng bộ hóa khối quay vmop] page_trap_count
0,063: ParallelGFailedAllocation [ 5 0 0 ] [ 0 0 0 0 0 ] 0
Tổng thời gian mà các luồng ứng dụng bị dừng: 0,0004564 giây
[GC (Lỗi phân bổ) [PSYoungGen: 992K->496K(1024K)] 1000K->536K(523776K), 0,0004566 giây] [Thời gian: người dùng=0,00 sys=0,00, real=0,00 giây]
vmop [chủ đề: tổng số ban đầu_running wait_to_block] [thời gian: dọn dẹp đồng bộ hóa khối quay vmop] page_trap_count
0,072: ParallelGFailedAllocation [ 10 1 1 ] [ 0 0 0 0 0 ] 0
Tổng thời gian mà các luồng ứng dụng bị dừng: 0,0007704 giây
[GC (Lỗi phân bổ) [PSYoungGen: 1008K->480K(1536K)] 1048K->660K(524288K), 0,0009025 giây] [Thời gian: người dùng=0,00 sys=0,00, real=0,00 giây]
vmop [chủ đề: tổng số ban đầu_running wait_to_block] [thời gian: dọn dẹp đồng bộ hóa khối quay vmop] page_trap_count
0,082: ParallelGFailedAllocation [ 10 0 0 ] [ 0 0 0 0 0 ] 0
Tổng thời gian mà các luồng ứng dụng bị dừng: 0,0009905 giây
[GC (Lỗi phân bổ) [PSYoungGen: 1499K->499K(1536K)] 1679K->1006K(524288K), 0,0006638 giây] [Thời gian: người dùng=0,00 sys=0,00, real=0,00 giây]
vmop [chủ đề: tổng số ban đầu_running wait_to_block] [thời gian: dọn dẹp đồng bộ hóa khối quay vmop] page_trap_count
0.102: ParallelGFailedAllocation [ 11 1 1 ] [ 0 0 0 0 0 ] 0
Tổng thời gian mà các luồng ứng dụng bị dừng: 0,0009292 giây
[GC (Lỗi phân bổ) [PSYoungGen: 1518K->992K(2560K)] 2025K->2018K(525312K), 0,0007172 giây] [Thời gian: người dùng=0,00 sys=0,00, real=0,00 giây]
vmop [chủ đề: tổng số ban đầu_running wait_to_block] [thời gian: dọn dẹp đồng bộ hóa khối quay vmop] page_trap_count
0.103: ParallelGFailedAllocation [ 11 0 1 ] [ 0 0 0 0 0 ] 0
Tổng thời gian mà các luồng ứng dụng bị dừng: 0,0007980 giây
[GC (Lỗi phân bổ) [PSYoungGen: 2526K->1507K(3072K)] 3552K->3515K(525824K), 0,0009654 giây] [Thời gian: người dùng=0,00 sys=0,00, real=0,00 giây]
vmop [chủ đề: tổng số ban đầu_running wait_to_block] [thời gian: dọn dẹp đồng bộ hóa khối quay vmop] page_trap_count
0.107: ParallelGFailedAllocation [ 11 0 1 ] [ 0 0 0 0 1 ] 0
Tổng thời gian mà các luồng ứng dụng bị dừng: 0,0010672 giây
[GC (Lỗi phân bổ) [PSYoungGen: 3041K->2547K(5120K)] 5049K->5128K(527872K), 0,0010321 giây] [Thời gian: người dùng=0,00 sys=0,00, real=0,00 giây]
vmop [chủ đề: tổng số ban đầu_running wait_to_block] [thời gian: dọn dẹp đồng bộ hóa khối quay vmop] page_trap_count
0.108: ParallelGFailedAllocation [ 11 0 2 ] [ 0 0 0 0 1 ] 0
Tổng thời gian mà các luồng ứng dụng bị dừng: 0,0011153 giây
[GC (Lỗi phân bổ) [PSYoungGen: 5102K->3072K(5632K)] 7684K->7718K(528384K), 0,0012587 giây] [Thời gian: người dùng=0,00 sys=0,00, real=0,00 giây]
vmop [chủ đề: tổng số ban đầu_running wait_to_block] [thời gian: dọn dẹp đồng bộ hóa khối quay vmop] page_trap_count
0.109: ParallelGFailedAllocation [ 11 0 1 ] [ 0 0 0 0 1 ] 0
Tổng thời gian mà các luồng ứng dụng bị dừng: 0,0013348 giây
[GC (Lỗi phân bổ) [PSYoungGen: 5630K->4608K(7680K)] 10276K->10382K(530432K), 0,0016113 giây] [Thời gian: người dùng=0,03 sys=0,00, real=0,00 giây]
vmop [chủ đề: tổng số ban đầu_running wait_to_block] [thời gian: dọn dẹp đồng bộ hóa khối quay vmop] page_trap_count
0.111: ParallelGFailedAllocation [ 11 0 1 ] [ 0 0 0 0 1 ] 0
Tổng thời gian mà các luồng ứng dụng bị dừng: 0,0016921 giây
0-->Thời gian delta từ lúc bắt đầu[0ms], từ lần cuối[0ms]
[GC (Lỗi phân bổ) [PSYoungGen: 7678K->3328K(8704K)] 13452K->13341K(531456K), 0,0013899 giây] [Thời gian: người dùng=0,00 sys=0,00, real=0,00 giây]
vmop [chủ đề: tổng số ban đầu_running wait_to_block] [thời gian: dọn dẹp đồng bộ hóa khối quay vmop] page_trap_count
0.113: ParallelGFailedAllocation [ 11 0 1 ] [ 0 0 1 0 1 ] 0
Tổng thời gian mà các luồng ứng dụng bị dừng: 0,0024590 giây
[GC (Lỗi phân bổ) [PSYoungGen: 6399K->3360K(11264K)] 16412K->16419K(534016K), 0,0011903 giây] [Thời gian: người dùng=0,00 sys=0,00, real=0,00 giây]
vmop [chủ đề: tổng số ban đầu_running wait_to_block] [thời gian: dọn dẹp đồng bộ hóa khối quay vmop] page_trap_count
0.115: ParallelGFailedAllocation [ 11 1 2 ] [ 0 0 0 0 1 ] 0
Tổng thời gian mà các luồng ứng dụng bị dừng: 0,0013046 giây
[GC (Lỗi phân bổ) [PSYoungGen: 8477K->5536K(11264K)] 21537K->21642K(534016K), 0,0020710 giây] [Thời gian: người dùng=0,00 sys=0,00, real=0,00 giây]
vmop [chủ đề: tổng số ban đầu_running wait_to_block] [thời gian: dọn dẹp đồng bộ hóa khối quay vmop] page_trap_count
0.117: ParallelGFailedAllocation [ 11 0 1 ] [ 0 0 0 0 2 ] 0
Tổng thời gian mà các luồng ứng dụng bị dừng: 0,0021520 giây
1-->Thời gian delta từ lúc bắt đầu[210ms], từ lần cuối[210ms]
2-->Thời gian delta từ lúc bắt đầu[410ms], từ lần cuối[200ms]
3-->Thời gian delta từ lúc bắt đầu[610ms], từ lần cuối[200ms]
4->Thời gian delta từ lúc bắt đầu [810 mili giây], từ lần cuối [200 mili giây]
5-->Thời gian delta từ lúc bắt đầu[1010ms], từ lần cuối[200ms]
vmop [chủ đề: tổng số ban đầu_running wait_to_block] [thời gian: dọn dẹp đồng bộ hóa khối quay vmop] page_trap_count
1.119: không hoạt động vm [ 11 2 2 ] [ 0 0 0 0 0 ] 2
Tổng thời gian mà các luồng ứng dụng bị dừng: 0,0001547 giây
6-->Thời gian delta từ lúc bắt đầu[1210ms], từ lần cuối[200ms]
7-->Thời gian delta từ lúc bắt đầu[1410ms], từ lần cuối[200ms]
8-->Thời gian delta từ lúc bắt đầu[1610ms], từ lần cuối[200ms]
9-->Thời gian delta từ lúc bắt đầu[1810ms], từ lần cuối[200ms]
10-->Thời gian delta từ lúc bắt đầu[2010ms], từ lần cuối[200ms]
11-->Thời gian delta từ lúc bắt đầu[2210ms], từ lần cuối[200ms]
12-->Thời gian delta từ lúc bắt đầu[2410ms], từ lần cuối[200ms]
13-->Thời gian delta từ lúc bắt đầu[2610ms], từ lần cuối[200ms]
14-->Thời gian delta từ lúc bắt đầu[2810ms], từ lần cuối[200ms]
15-->Thời gian delta từ lúc bắt đầu[3010ms], từ lần cuối[200ms]
vmop [chủ đề: tổng số ban đầu_running wait_to_block] [thời gian: dọn dẹp đồng bộ hóa khối quay vmop] page_trap_count
3.120: không hoạt động vm [ 11 2 2 ] [ 0 0 0 0 0 ] 2
Tổng thời gian mà các luồng ứng dụng bị dừng: 0,0000670 giây
16-->Thời gian delta từ lúc bắt đầu[3210ms], từ lần cuối[200ms]
17-->Thời gian delta từ lúc bắt đầu[3410ms], từ lần cuối[200ms]
18-->Thời gian delta từ lúc bắt đầu[3610ms], từ lần cuối[200ms]
19-->Thời gian delta từ lúc bắt đầu[3810ms], từ lần cuối[200ms]
vmop [chủ đề: tổng số ban đầu_running wait_to_block] [thời gian: dọn dẹp đồng bộ hóa khối quay vmop] page_trap_count
4.084: EnableBiasedLocking [ 11 2 2 ] [ 0 0 0 0 0 ] 2
Tổng thời gian mà các luồng ứng dụng bị dừng: 0,0000737 giây
20-->Thời gian delta từ lúc bắt đầu[4010ms], từ lần cuối[200ms]
21-->Thời gian delta từ lúc bắt đầu[4210ms], từ lần cuối[200ms]
22-->Thời gian delta từ lúc bắt đầu[4410ms], từ lần cuối[200ms]
23-->Thời gian delta từ lúc bắt đầu[4610ms], từ lần cuối[200ms]
24-->Thời gian delta từ lúc bắt đầu[4810ms], từ lần cuối[200ms]
25-->Thời gian delta từ lúc bắt đầu[5010ms], từ lần cuối[200ms]
26-->Thời gian delta từ lúc bắt đầu[5210ms], từ lần cuối[200ms]
27-->Thời gian delta từ lúc bắt đầu[5410ms], từ lần cuối[200ms]
28-->Thời gian delta từ lúc bắt đầu[5610ms], từ lần cuối[200ms]
29-->Thời gian delta từ lúc bắt đầu[5810ms], từ lần cuối[200ms]
vmop [chủ đề: tổng số ban đầu_running wait_to_block] [thời gian: dọn dẹp đồng bộ hóa khối quay vmop] page_trap_count
6.084: không có hoạt động vm [ 11 2 2 ] [ 0 0 0 0 0 ] 2
Tổng thời gian mà các luồng ứng dụng bị dừng: 0,0000621 giây
30-->Thời gian delta từ lúc bắt đầu[6010ms], từ lần cuối[200ms]
31-->Thời gian delta từ lúc bắt đầu[6210ms], từ lần cuối[200ms]
32-->Thời gian delta từ lúc bắt đầu[6410ms], từ lần cuối[200ms]
33-->Thời gian delta từ lúc bắt đầu[6610ms], từ lần cuối[200ms]
34-->Thời gian delta từ lúc bắt đầu[6810ms], từ lần cuối[200ms]
vmop [chủ đề: tổng số ban đầu_running wait_to_block] [thời gian: dọn dẹp đồng bộ hóa khối quay vmop] page_trap_count
7.085: không có hoạt động vm [ 11 2 2 ] [ 0 0 0 0 0 ] 2
Tổng thời gian mà các luồng ứng dụng bị dừng: 0,0000605 giây
35-->Thời gian delta từ lúc bắt đầu[7010ms], từ lần cuối[200ms]
36-->Thời gian delta từ lúc bắt đầu[7210ms], từ lần cuối[200ms]
37-->Thời gian delta từ lúc bắt đầu[7410ms], từ lần cuối[200ms]
38-->Thời gian delta từ lúc bắt đầu[7610ms], từ lần cuối[200ms]
39-->Thời gian delta từ lúc bắt đầu[7810ms], từ lần cuối[200ms]
40-->Thời gian delta từ lúc bắt đầu[8010ms], từ lần cuối[200ms]
41-->Thời gian delta từ lúc bắt đầu[8210ms], từ lần cuối[200ms]
42-->Thời gian delta từ lúc bắt đầu[8410ms], từ lần cuối[200ms]
43-->Thời gian delta từ lúc bắt đầu[8610ms], từ lần cuối[200ms]
44-->Thời gian delta từ lúc bắt đầu[8810ms], từ lần cuối[200ms]
45-->Thời gian delta từ lúc bắt đầu[9010ms], từ lần cuối[200ms]
46-->Thời gian delta từ lúc bắt đầu[9210ms], từ lần cuối[200ms]
47-->Thời gian delta từ lúc bắt đầu[9410ms], từ lần cuối[200ms]
48-->Thời gian delta từ lúc bắt đầu[9610ms], từ lần cuối[200ms]
49-->Thời gian delta từ lúc bắt đầu[9810ms], từ lần cuối[200ms]
vmop [chủ đề: tổng số ban đầu_running wait_to_block] [thời gian: dọn dẹp đồng bộ hóa khối quay vmop] page_trap_count
10.087: không hoạt động vm [ 11 2 2 ] [ 3009 0 3009 0 0 ] 2
Tổng thời gian mà các luồng ứng dụng bị dừng: 3,0091028 giây
50-->Thời gian delta từ đầu [12994 mili giây], từ cuối [3184 mili giây]
51-->Thời gian delta từ lúc bắt đầu[13194ms], từ lần cuối[200ms]
52-->Thời gian delta từ lúc bắt đầu[13394ms], từ lần cuối[200ms]
53-->Thời gian delta từ lúc bắt đầu[13594ms], từ lần cuối[200ms]
54-->Thời gian delta từ lúc bắt đầu[13794ms], từ lần cuối[200ms]
55-->Thời gian delta từ lúc bắt đầu[13994ms], từ lần cuối[200ms]
56-->Thời gian delta từ lúc bắt đầu[14194ms], từ lần cuối[200ms]
57-->Thời gian delta từ lúc bắt đầu[14394ms], từ lần cuối[200ms]
58-->Thời gian delta từ lúc bắt đầu[14594ms], từ lần cuối[200ms]
59-->Thời gian delta từ lúc bắt đầu[14794ms], từ lần cuối[200ms]
60-->Thời gian delta từ lúc bắt đầu[14994ms], từ lần cuối[200ms]
61-->Thời gian delta từ lúc bắt đầu[15194ms], từ lần cuối[200ms]
62-->Thời gian delta từ lúc bắt đầu[15394ms], từ lần cuối[200ms]
63-->Thời gian delta từ lúc bắt đầu[15594ms], từ lần cuối[200ms]
64-->Thời gian delta từ lúc bắt đầu[15794ms], từ lần cuối[200ms]
65-->Thời gian delta từ lúc bắt đầu[15994ms], từ lần cuối[200ms]
vmop [chủ đề: tổng số ban đầu_running wait_to_block] [thời gian: dọn dẹp đồng bộ hóa khối quay vmop] page_trap_count
16.098: không hoạt động vm [ 11 2 2 ] [ 1221 0 1221 0 0 ] 2
Tổng thời gian các luồng ứng dụng bị dừng: 1,2213130 giây
66-->Thời gian delta từ lúc bắt đầu[17217ms], từ lần cuối[1223ms]
67-->Thời gian delta từ lúc bắt đầu[17417ms], từ lần cuối[200ms]
68-->Thời gian delta từ lúc bắt đầu[17617ms], từ lần cuối[200ms]
69-->Thời gian delta từ lúc bắt đầu[17817ms], từ lần cuối[200ms]
70-->Thời gian delta từ lúc bắt đầu[18017ms], từ lần cuối[200ms]
71-->Thời gian delta từ lúc bắt đầu[18217ms], từ lần cuối[200ms]
72-->Thời gian delta từ lúc bắt đầu[18417ms], từ lần cuối[200ms]
73-->Thời gian delta từ lúc bắt đầu[18617ms], từ lần cuối[200ms]
74-->Thời gian delta từ lúc bắt đầu[18817ms], từ lần cuối[200ms]
75-->Thời gian delta từ lúc bắt đầu[19017ms], từ lần cuối[200ms]
76-->Thời gian delta từ lúc bắt đầu[19217ms], từ lần cuối[200ms]
77-->Thời gian delta từ lúc bắt đầu[19417ms], từ lần cuối[200ms]
78-->Thời gian delta từ lúc bắt đầu[19617ms], từ lần cuối[200ms]
79-->Thời gian delta từ lúc bắt đầu[19817ms], từ lần cuối[200ms]
80-->Thời gian delta từ lúc bắt đầu[20017ms], từ lần cuối[200ms]
Quá trình kết thúc với mã thoát 1
bây giờ khi tôi MAKE_THE_JVM_PAUSE_UNEXPECTEDLY
boolean
设置为 SAI
Khi chạy thứ này, nó không gây ra bất kỳ sự chậm lại nào ở điểm an toàn.
Tại sao việc đặt mã này vào một phương thức lại gây ra điều này?
câu trả lời hay nhất
Vì điểm an toàn xảy ra xấp xỉ một lần mỗi giây nên có thể Khoảng thời gian được đảm bảoSafepoint
đang hoạt động, tức là nó được kích hoạt bởi bộ đếm thời gian.
Tôi chưa kiểm tra mã của bạn, nhưng một khi nó được kích hoạt, rất có thể sẽ mất nhiều thời gian để đạt đến điểm an toàn, vì có một sự tối ưu hóa giúp loại bỏ việc thăm dò điểm an toàn trong các vòng lặp mà JIT biết sẽ mất một khoảng thời gian giới hạn. Chấm dứt hoặc gọi các phương thức khác sẽ thăm dò điểm an toàn trong cơ thể của họ. Vấn đề là đối với các vòng lặp tính toán thuần túy sử dụng nhiều CPU, "thời gian hữu hạn" vẫn có thể lớn, gây ra tình trạng dừng điểm an toàn. Trong Java 8 và 9, điều này có thể được thực hiện thông qua -XX:+UseCountedLoopSafepoints
Bị vô hiệu hóa với hình phạt hiệu suất nhẹ. Java 10 sẽ giới thiệu các tính năng tối ưu hóa cho các vòng lặp hữu hạn và thăm dò ý kiến mỗi vòng lặp (JDK-8186027) để đạt được sự cân bằng giữa độ trễ điểm an toàn.
Về việc tạm dừng điểm an toàn java - JVM, nhưng chỉ khi mã nằm trong một phương thức chứ không liên quan đến GC, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/48627532/
Tôi đang học bảo mật Spring nhưng tôi không hiểu về tính linh hoạt của nó.. Tôi biết rằng tôi có thể bảo vệ url bằng cách xác định các quy tắc trong thẻ và sau đó tôi thấy rằng có chú thích @secure để bảo vệ các phương thức. Sau đó là các chú thích khác để bảo vệ miền (hoặc POJO)
Giả sử có khóa mã hóa khóa trong bộ nhớ và không được ghi vào tệp hoặc cơ sở dữ liệu... byte[] kek = new byte[32];
Tôi gặp sự cố với Spring Security 3.2.0 RC1. Tôi đang sử dụng thẻ để kết nối phương thức của mình có nội dung "method 'setF
Tôi đang tạo một ứng dụng Flutter bằng API máy chủ Node Js. Để ủy quyền, tôi quyết định sử dụng JWT với khóa riêng/chung. Giao tiếp giữa máy chủ và máy khách di động sử dụng HTTPS. ứng dụng rung
Trong vài năm qua, tôi đã sử dụng các thư viện javascript từ Raphael.js. Đến D3, tôi đã thao tác các hình ảnh động từ khắp nơi trên web cho mục đích học tập của mình. Tôi đã tải xuống các tập lệnh js từ nhiều kho git khác nhau, chẳng hạn như s
Cách tốt để triển khai xác thực trong python là gì? Những gì đã tồn tại cũng tốt. Tôi cần nó để xác thực qua kết nối mạng không đáng tin cậy. Nó không cần quá cao cấp, chỉ cần đủ an toàn để lấy được mật khẩu thông dụng. Tôi nhìn vào mô-đun ssl. Nhưng mô-đun đó cho phép tôi
Tôi đang cố gắng tìm hiểu "Cách triển khai Kerberos trong Hadoop?" Tôi đã xem tài liệu này https://issues.apache.org/jira/browse/HADOOP-4487 và tôi cũng đã học được những điều cơ bản
Tôi có một máy chủ sản xuất với Apache2, php, mysql. Tôi hiện chỉ có một trang web (mysite.com) làm máy chủ ảo. Tôi muốn đặt phpmyadmin, webalizer và webmin ở đó
Tôi thấy phần mềm tường lửa OPNsense trên Internet cách đây vài ngày và bắt đầu quan tâm đến nó. Tôi đã viết một phần mềm trước đó, M0n0wall (khoảng m0n0wa).
Tôi đã viết phần phụ trợ còn lại trên Spring Boot và oauth2 (do Google cung cấp), với tính năng chuyển hướng tự động trên "/đăng nhập". Ngoài web oauth, tôi còn muốn làm Fire trên phần phụ trợ di động
Tôi muốn gọi lớp Foo có lớp trừu tượng Base trong hàm tạo của nó. Tôi muốn có thể gọi Foo từ Derived bắt nguồn từ Base và sử dụng các phương thức ghi đè của Derived thay vì các phương thức của Base. Tôi chỉ có thể sử dụng ngón tay thô theo hướng dẫn
Làm thế nào để cải thiện bảo mật phiên? $this->session->userdata('userid') Tôi đã sử dụng thứ nigga nhỏ này cho các cuộc gọi ajax của mình. Có những tình huống mà tôi không làm vậy. Sau đó tôi nghĩ, hãy sử dụng
Tôi hiện đang cung cấp dịch vụ biên dịch lắp ráp cho một số người. Họ có thể nhập mã hợp ngữ vào trình soạn thảo trực tuyến và biên dịch nó. Sau đó, khi được biên dịch, mã sẽ được gửi đến máy chủ của tôi thông qua yêu cầu ajax, yêu cầu này sẽ biên dịch và trả về kết quả đầu ra của chương trình. Tuy nhiên, tôi muốn biết tôi có thể làm gì để ngăn dịch vụ này bị
Như hiện tại, câu hỏi này không phù hợp với định dạng Hỏi & Đáp của chúng tôi. Chúng tôi mong đợi câu trả lời sẽ được hỗ trợ bởi các sự kiện, trích dẫn hoặc kiến thức chuyên môn, nhưng câu hỏi có thể gây ra tranh luận, tranh luận, bỏ phiếu hoặc thảo luận mở rộng. Nếu bạn cảm thấy vấn đề này có thể được cải thiện và có thể mở lại, hãy truy cập trang
Hiện tại, tôi xác thực các phiên của người dùng bằng cách khớp khóa trong phiên với cùng một khóa trong cơ sở dữ liệu MySQl. Tôi tạo lại phiên bằng số ngẫu nhiên bị ảnh hưởng bởi MD5 mỗi lần tải trang
Nhóm Mô hình và Thực tiễn của Microsoft cung cấp một bản PDF tuyệt vời có tên: "Xây dựng các ứng dụng ASP.NET an toàn". Microsoft pdf hiện đã hơi cũ vì nó được viết cho .Net 1.0. Có ai biết không
Trong Lua, người ta thường sử dụng math.random để tạo ra các giá trị và/hoặc chuỗi ngẫu nhiên. & math.randomseed , trong đó os.time được sử dụng cho math.randomseed .
Như hiện tại, câu hỏi này không phù hợp với định dạng Hỏi & Đáp của chúng tôi. Chúng tôi hy vọng câu trả lời sẽ được hỗ trợ bởi các sự kiện, trích dẫn hoặc chuyên môn, nhưng câu hỏi có thể gây ra tranh luận, tranh luận, bỏ phiếu hoặc thảo luận mở rộng. Nếu bạn cảm thấy vấn đề này có thể được cải thiện và có thể mở lại, hãy truy cập
Chúng tôi có một ứng dụng dựa chủ yếu vào Ajax. Cách tốt nhất để đảm bảo rằng các yêu cầu đối với tập lệnh phía máy chủ không đi qua một chương trình độc lập mà thông qua một người dùng thực sự đang ngồi trên trình duyệt? Câu trả lời tốt nhất thực sự là không có ai. Mọi yêu cầu được gửi qua trình duyệt đều có thể bị giả mạo bởi một chương trình độc lập. trở lại
Tôi đang tìm cách triển khai ứng dụng web (góc) và iPhone bằng WebSockets để liên lạc với máy chủ của chúng tôi. Khi sử dụng các yêu cầu HTTP trước đây, chúng tôi đã sử dụng hàm băm của dữ liệu yêu cầu, url, dấu thời gian, v.v. để xác minh và
Tôi là một lập trình viên xuất sắc, rất giỏi!