Skip to content

Commit 89bbb02

Browse files
committed
Merge remote-tracking branch 'origin/master'
# Conflicts: # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/directmemory/BufferTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/directmemory/BufferTest1.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/directmemory/BufferTest2.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/directmemory/MaxDirectMemorySizeTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/gc/java/CanReliveObj.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/gc/java/GCRootsTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/gc/java/HeapOOM.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/gc/java/RefCountGC.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/gc/java1/LocalVarGC.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/gc/java1/StopTheWorldDemo.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/gc/java1/SystemGCTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/gc/java2/PhantomReferenceTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/gc/java2/SoftReferenceTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/gc/java2/StrongReferenceTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/gc/java2/WeakReferenceTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/gc2/GCLogTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/gc2/GCLogTest1.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/gc2/GCUseTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/heap/java/HeapDemo.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/heap/java/HeapDemo1.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/heap/java/HeapSpaceInitial.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/heap/java/OOMTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/heap/java/SimpleHeap.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/heap/java1/EdenSurvivorTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/heap/java1/GCTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/heap/java1/HeapArgsTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/heap/java1/HeapInstanceTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/heap/java1/TLABArgsTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/heap/java1/YoungOldAreaTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/heap/java2/EscapeAnalysis.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/heap/java2/ScalarReplace.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/heap/java2/StackAllocation.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/heap/java2/SynchronizedTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/methodarea/java/MethodAreaDemo.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/methodarea/java/MethodAreaTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/methodarea/java/MethodInnerStrucTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/methodarea/java1/MethodAreaDemo.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/methodarea/java1/StaticFieldTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/methodarea/java1/StaticObjTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/methodarea/java1/test2.txt # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/nativemethod/IHaveNatives.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/newobject/Customer.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/newobject/CustomerTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/newobject/ObjectTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/register/PCRegisterTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/stack/java/SlotTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/stack/java/StackErrorTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/stack/java/StackTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/stack/java1/DynamicLinkingTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/stack/java1/LocalVariablesTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/stack/java1/OperandStackTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/stack/java1/StackFrameTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/stack/java2/AnimalTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/stack/java2/Lambda.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/stack/java2/Son.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/stack/java3/ReturnAddressTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/stack/java3/StringBuilderTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/stack/java3/VirtualMethodTable.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/stringtable/java/GenerateString.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/stringtable/java/StringExer.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/stringtable/java/StringTest1.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/stringtable/java/StringTest2.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/stringtable/java/StringTest3.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/stringtable/java1/Memory.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/stringtable/java1/StringTest4.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/stringtable/java1/StringTest5.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/stringtable/java2/StringExer1.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/stringtable/java2/StringExer2.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/stringtable/java2/StringIntern.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/stringtable/java2/StringIntern1.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/stringtable/java2/StringIntern2.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/stringtable/java2/StringNewTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp/stringtable/java3/StringGCTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp2/command/jmap/GCTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp2/command/jps/ScannerTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp2/command/jstack/AllStackTrace.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp2/command/jstack/ThreadDeadLock.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp2/command/jstack/ThreadSyncTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp2/command/jstack/TreadSleepTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp2/command/jstat/GCTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp2/command/jstat/ScannerTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp2/gclog/GCLogTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp2/gclog/GCUseTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp2/gclog/MetaspaceOOM.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp2/gui/arthas/ArthasTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp2/gui/arthas/OOMTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp2/gui/arthas/ThreadDeadLock.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp2/gui/jconsole/HeapInstanceTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp2/gui/jconsole/ThreadDeadLock.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp2/gui/jprofiler/DataKeeper.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp2/gui/jprofiler/JProfilerTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp2/gui/jprofiler/MemoryLeak.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp2/gui/jprofiler/OOMTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp2/gui/jprofiler/ThreadDeadLock.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp2/gui/jvisualvm/HeapInstanceTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp2/gui/jvisualvm/OOMTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp2/gui/jvisualvm/ThreadDeadLock.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp2/gui/mat/OOMTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp2/gui/mat/StudentTrace.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp2/gui/memoryleak/ChangeHashCode.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp2/gui/memoryleak/ChangeHashCode1.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp2/gui/memoryleak/MapTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp2/gui/memoryleak/MemoryLeak.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp2/gui/memoryleak/Stack.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp2/runparam/GCLogTest.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp2/runparam/HeapDumpInstance.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp2/runparam/MemoryMonitor.java # java-basic/jvm/src/main/java/cn/lastwhisper/jvm/tmp2/runparam/OOMTest.java
2 parents af44b2e + 3f80eb9 commit 89bbb02

196 files changed

Lines changed: 1502 additions & 5894 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

java-advance/groovy/src/main/java/cn/cunchang/PaymentRequestOrderBO.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,6 @@
22

33
import lombok.Data;
44

5-
/**
6-
* @Author: chenan
7-
* @Date: 2021/1/29 18:38
8-
*/
95
@Data
106
public class PaymentRequestOrderBO {
117

java-basic/basic/pom.xml

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,17 +43,59 @@
4343
<version>2.11.1</version>
4444
</dependency>
4545

46+
<!-- fastjson -->
4647
<dependency>
4748
<groupId>com.alibaba</groupId>
4849
<artifactId>fastjson</artifactId>
4950
<version>1.2.80</version>
5051
</dependency>
5152

53+
<!-- lombok -->
5254
<dependency>
5355
<groupId>org.projectlombok</groupId>
5456
<artifactId>lombok</artifactId>
5557
<version>1.18.22</version>
5658
</dependency>
59+
60+
<!-- guava -->
61+
<dependency>
62+
<groupId>com.google.guava</groupId>
63+
<artifactId>guava</artifactId>
64+
<version>30.1.1-jre</version>
65+
</dependency>
66+
67+
<!-- guava -->
68+
<dependency>
69+
<groupId>cn.hutool</groupId>
70+
<artifactId>hutool-all</artifactId>
71+
<version>5.8.0</version>
72+
</dependency>
73+
74+
<!-- pinyin4j -->
75+
<dependency>
76+
<groupId>com.belerweb</groupId>
77+
<artifactId>pinyin4j</artifactId>
78+
<version>2.5.0</version>
79+
</dependency>
80+
81+
82+
<dependency>
83+
<groupId>org.springframework</groupId>
84+
<artifactId>spring-expression</artifactId>
85+
<version>5.2.7.RELEASE</version>
86+
</dependency>
87+
88+
<dependency>
89+
<groupId>org.apache.commons</groupId>
90+
<artifactId>commons-lang3</artifactId>
91+
<version>3.11</version>
92+
</dependency>
93+
94+
<dependency>
95+
<groupId>commons-collections</groupId>
96+
<artifactId>commons-collections</artifactId>
97+
<version>3.2.2</version>
98+
</dependency>
5799
</dependencies>
58100

59101
<build>
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package cn.cunchang;
2+
3+
import com.alibaba.fastjson.JSON;
4+
5+
import java.util.HashMap;
6+
import java.util.Map;
7+
8+
/**
9+
* @author kaisui
10+
* @description
11+
* @date 2022/12/26
12+
*/
13+
public class Main {
14+
static Map<Integer, Integer> map = new HashMap<>();
15+
16+
/**
17+
* 判断数组中的数是否可以组成另一个数
18+
* a*n+b*m=c
19+
*/
20+
public static void main(String[] args) {
21+
// a*n+b*m=c
22+
//1、n=1、m=1 || n=0||m==0
23+
Integer[] arr = {50, 10};
24+
int c = 60;
25+
//2、n>1,m=1 || n=1,m>1
26+
// Integer[] arr = {50, 10};
27+
// int c = 110;
28+
//
29+
//3、n>1,m>1
30+
// Integer[] arr = {50, 90};
31+
// Integer[] arr = {50, 80};
32+
// int c = 260;
33+
boolean xxxx = xxxx(arr, c);
34+
if (xxxx) {
35+
System.out.println("找到了:" + JSON.toJSONString(map));
36+
} else {
37+
System.out.println("没找到");
38+
}
39+
}
40+
41+
private static boolean xxxx(Integer[] arr, int c) {
42+
if (c == 0) {
43+
return true;
44+
}
45+
if (c < 0) {
46+
return false;
47+
}
48+
for (int i = 0; i < arr.length; i++) {
49+
map.put(arr[i], map.getOrDefault(arr[i], 0) + 1);
50+
c = c - arr[i];
51+
if (xxxx(arr, c)) {
52+
return true;
53+
}
54+
// 回溯
55+
c = c + arr[i];
56+
map.put(arr[i], map.get(arr[i]) - 1);
57+
}
58+
return false;
59+
}
60+
}

java-basic/basic/src/main/java/cn/cunchang/collection/Intersection.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,41 +18,41 @@ public void test1(){
1818
}
1919

2020
public static void main(String[] args) {
21-
Set<Integer> result = new HashSet<Integer>();
22-
Set<Integer> set1 = new HashSet<Integer>() {
21+
22+
HashSet<Integer> set1 = new HashSet<Integer>() {
2323
private static final long serialVersionUID = 1L;
2424
{
2525
add(1);
26-
add(3);
27-
add(5);
26+
add(2);
2827
}};
2928

30-
Set<Integer> set2 = new HashSet<Integer>(){
29+
HashSet<Integer> set2 = new HashSet<Integer>(){
3130
private static final long serialVersionUID = 1L;
3231
{
33-
add(1);
3432
add(2);
3533
add(3);
3634
}};
3735
System.out.println("set1:"+set1);
3836
System.out.println("set2:"+set2);
39-
//交集
4037

38+
HashSet<Integer> result = new HashSet<Integer>();
39+
40+
//交集
4141
result.addAll(set1);
4242
result.retainAll(set2);
43-
System.out.println("交集:"+result);
43+
System.out.println("交集:"+result);//交集:[2]
4444

4545
//差集
4646
result.clear();
4747
result.addAll(set1);
4848
result.removeAll(set2);
49-
System.out.println("差集:"+result);
49+
System.out.println("set1-set2,差集:"+result);//差集:[1]
5050

5151
//并集
5252
result.clear();
5353
result.addAll(set1);
5454
result.addAll(set2);
55-
System.out.println("并集:"+result);
55+
System.out.println("并集:"+result);//并集:[1, 2, 3]
5656

5757
}
5858

java-basic/basic/src/main/java/cn/cunchang/decimal/BigDecimalTest.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ public class BigDecimalTest {
3838
}
3939

4040
/**
41-
*
4241
* BigDecimal.setScale()方法用于格式化小数点
4342
* setScale(1)表示保留一位小数,默认用四舍五入方式
4443
* setScale(1,BigDecimal.ROUND_DOWN)直接删除多余的小数位,如2.35会变成2.3
@@ -48,7 +47,6 @@ public class BigDecimalTest {
4847
* setScaler(1,BigDecimal.ROUND_CEILING)接近正无穷大的舍入
4948
* setScaler(1,BigDecimal.ROUND_FLOOR)接近负无穷大的舍入,数字>0和ROUND_UP作用一样,数字<0和ROUND_DOWN作用一样
5049
* setScaler(1,BigDecimal.ROUND_HALF_EVEN)向最接近的数字舍入,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。
51-
*
5250
*/
5351
@Test
5452
public void test格式化小数点() {
@@ -72,5 +70,14 @@ public class BigDecimalTest {
7270
System.out.println(new BigDecimal("1").compareTo(new BigDecimal("0")) <= 0);
7371
}
7472

73+
@Test
74+
public void test3() {
75+
BigDecimal taxAmount = new BigDecimal("0.001");
76+
BigDecimal originTaxAmount = new BigDecimal("0.001");
77+
BigDecimal exchangeRate = new BigDecimal("1");
78+
BigDecimal calOriginTaxAmount = taxAmount.divide(exchangeRate,
79+
5, BigDecimal.ROUND_HALF_UP);
80+
System.out.println(calOriginTaxAmount.compareTo(originTaxAmount) != 0);
81+
}
7582

7683
}

java-basic/basic/src/main/java/cn/cunchang/fastjson/JSONObjectTest.java

Lines changed: 0 additions & 27 deletions
This file was deleted.
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package cn.cunchang.guava.bloomfilter;
2+
3+
import com.google.common.hash.BloomFilter;
4+
import com.google.common.hash.Funnel;
5+
import com.google.common.hash.Funnels;
6+
7+
public class TestBloomFilter {
8+
9+
public static void main(String[] args) {
10+
Funnel<Integer> funnel = Funnels.integerFunnel();
11+
int size = 1000_000;
12+
double errorChance = 0.001; //错误率
13+
BloomFilter<Integer> filter = BloomFilter.create(funnel, size, errorChance);
14+
for (int i = 0; i < size; i++) {
15+
filter.put(i);
16+
}
17+
for (int i = 0; i < size; i++) {
18+
if (!filter.mightContain(i)) {
19+
System.out.println("发现不存在的数据 : " + i);
20+
}
21+
}
22+
}
23+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package cn.cunchang.guava.cache;
2+
3+
import com.google.common.cache.*;
4+
import org.junit.Test;
5+
6+
import java.util.concurrent.TimeUnit;
7+
8+
/**
9+
* Guava的Cache
10+
* @author lastwhisper
11+
* @date 2020/6/2
12+
*/
13+
public class TestCache {
14+
15+
// https://github.com/zhuzhenke/common-caches
16+
@Test
17+
public void testCacheUse() throws Exception{
18+
19+
LoadingCache<String, String> loadingCache = CacheBuilder.newBuilder()
20+
.expireAfterAccess(10, TimeUnit.SECONDS)
21+
.maximumSize(1000)
22+
.removalListener(new RemovalListener<Object, Object>() {
23+
@Override
24+
public void onRemoval(RemovalNotification<Object, Object> notification) {
25+
26+
}
27+
})
28+
.build(new CacheLoader<String, String>() {
29+
@Override
30+
public String load(String key) throws Exception {
31+
return key;
32+
}
33+
});
34+
35+
System.out.println(loadingCache.get("key"));
36+
37+
38+
}
39+
40+
}

0 commit comments

Comments
 (0)