diff --git a/Java/Java源代码/jdk21demo/VirtualThreadTest.java b/Java/Java源代码/jdk21demo/VirtualThreadTest.java new file mode 100644 index 00000000..7465129b --- /dev/null +++ b/Java/Java源代码/jdk21demo/VirtualThreadTest.java @@ -0,0 +1,25 @@ +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +public class VirtualThreadTest { + public static void main(String[] args) { + // long start = System.currentTimeMillis(); + // try (ExecutorService executor = Executors.newVirtualThreadPerTaskExecutor()) { + try (ExecutorService executor = Executors.newFixedThreadPool(10)) { + for (int i = 0; i < 1000; i++) { + final int index = i; + executor.submit(() -> { + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + Thread.sleep(1000); + System.out.println(Thread.currentThread().getName() + ": " + index + " is running"); + }); + } + } + // long end = System.currentTimeMillis(); + // System.out.println("Total time: " + (end - start) + " ms"); + } +} diff --git a/JavaDemo/JdkDemo/DynamicProxy/pom.xml b/JavaDemo/jdk-demo/DynamicProxy/pom.xml similarity index 100% rename from JavaDemo/JdkDemo/DynamicProxy/pom.xml rename to JavaDemo/jdk-demo/DynamicProxy/pom.xml diff --git a/JavaDemo/JdkDemo/DynamicProxy/src/main/java/com/ykl/proxy/CglibDynamicProxy.java b/JavaDemo/jdk-demo/DynamicProxy/src/main/java/com/ykl/proxy/CglibDynamicProxy.java similarity index 100% rename from JavaDemo/JdkDemo/DynamicProxy/src/main/java/com/ykl/proxy/CglibDynamicProxy.java rename to JavaDemo/jdk-demo/DynamicProxy/src/main/java/com/ykl/proxy/CglibDynamicProxy.java diff --git a/JavaDemo/JdkDemo/DynamicProxy/src/main/java/com/ykl/proxy/DynamicProxy.java b/JavaDemo/jdk-demo/DynamicProxy/src/main/java/com/ykl/proxy/DynamicProxy.java similarity index 100% rename from JavaDemo/JdkDemo/DynamicProxy/src/main/java/com/ykl/proxy/DynamicProxy.java rename to JavaDemo/jdk-demo/DynamicProxy/src/main/java/com/ykl/proxy/DynamicProxy.java diff --git a/JavaDemo/JdkDemo/DynamicProxy/src/main/java/com/ykl/proxy/handler/LogHandler.java b/JavaDemo/jdk-demo/DynamicProxy/src/main/java/com/ykl/proxy/handler/LogHandler.java similarity index 100% rename from JavaDemo/JdkDemo/DynamicProxy/src/main/java/com/ykl/proxy/handler/LogHandler.java rename to JavaDemo/jdk-demo/DynamicProxy/src/main/java/com/ykl/proxy/handler/LogHandler.java diff --git a/JavaDemo/JdkDemo/DynamicProxy/src/main/java/com/ykl/proxy/handler/LogInterceptor.java b/JavaDemo/jdk-demo/DynamicProxy/src/main/java/com/ykl/proxy/handler/LogInterceptor.java similarity index 100% rename from JavaDemo/JdkDemo/DynamicProxy/src/main/java/com/ykl/proxy/handler/LogInterceptor.java rename to JavaDemo/jdk-demo/DynamicProxy/src/main/java/com/ykl/proxy/handler/LogInterceptor.java diff --git a/JavaDemo/JdkDemo/DynamicProxy/src/main/java/com/ykl/proxy/service/UserService.java b/JavaDemo/jdk-demo/DynamicProxy/src/main/java/com/ykl/proxy/service/UserService.java similarity index 100% rename from JavaDemo/JdkDemo/DynamicProxy/src/main/java/com/ykl/proxy/service/UserService.java rename to JavaDemo/jdk-demo/DynamicProxy/src/main/java/com/ykl/proxy/service/UserService.java diff --git a/JavaDemo/JdkDemo/DynamicProxy/src/main/java/com/ykl/proxy/service/UserServiceImpl.java b/JavaDemo/jdk-demo/DynamicProxy/src/main/java/com/ykl/proxy/service/UserServiceImpl.java similarity index 100% rename from JavaDemo/JdkDemo/DynamicProxy/src/main/java/com/ykl/proxy/service/UserServiceImpl.java rename to JavaDemo/jdk-demo/DynamicProxy/src/main/java/com/ykl/proxy/service/UserServiceImpl.java diff --git a/JavaDemo/JdkDemo/DynamicProxy/src/test/java/org/example/AppTest.java b/JavaDemo/jdk-demo/DynamicProxy/src/test/java/org/example/AppTest.java similarity index 100% rename from JavaDemo/JdkDemo/DynamicProxy/src/test/java/org/example/AppTest.java rename to JavaDemo/jdk-demo/DynamicProxy/src/test/java/org/example/AppTest.java diff --git a/JavaDemo/JdkDemo/pom.xml b/JavaDemo/jdk-demo/pom.xml similarity index 100% rename from JavaDemo/JdkDemo/pom.xml rename to JavaDemo/jdk-demo/pom.xml diff --git a/JavaDemo/JdkDemo/src/main/java/org/example/App.java b/JavaDemo/jdk-demo/src/main/java/org/example/App.java similarity index 100% rename from JavaDemo/JdkDemo/src/main/java/org/example/App.java rename to JavaDemo/jdk-demo/src/main/java/org/example/App.java diff --git a/JavaDemo/JdkDemo/src/test/java/org/example/AppTest.java b/JavaDemo/jdk-demo/src/test/java/org/example/AppTest.java similarity index 100% rename from JavaDemo/JdkDemo/src/test/java/org/example/AppTest.java rename to JavaDemo/jdk-demo/src/test/java/org/example/AppTest.java diff --git a/JavaDemo/multiclass-demo/Makefile b/JavaDemo/multiclass-demo/Makefile new file mode 100644 index 00000000..84677c64 --- /dev/null +++ b/JavaDemo/multiclass-demo/Makefile @@ -0,0 +1,54 @@ +# Makefile for multiclass-demo Java project + +# Java compiler and options +JAVAC = javac +JAVA = java +JFLAGS = -g + +# Source and build directories +SRC_DIR = src +BUILD_DIR = build + +# Find all Java source files +SOURCES = $(shell find $(SRC_DIR) -name "*.java") +CLASSES = $(SOURCES:$(SRC_DIR)/%.java=$(BUILD_DIR)/%.class) + +# Main class +MAIN_CLASS = com.example.Application + +# Default target +.PHONY: all +all: compile + +# Compile all Java source files +.PHONY: compile +compile: + @mkdir -p $(BUILD_DIR) + $(JAVAC) $(JFLAGS) -sourcepath $(SRC_DIR) -d $(BUILD_DIR) $(SOURCES) + @echo "Compilation completed successfully!" + +# Run the application +.PHONY: run +run: compile + $(JAVA) -cp $(BUILD_DIR) $(MAIN_CLASS) + +# Clean compiled classes +.PHONY: clean +clean: + rm -rf $(BUILD_DIR)/* + @echo "Clean completed!" + +# Rebuild the project +.PHONY: rebuild +rebuild: clean compile + +# Help target +.PHONY: help +help: + @echo "Available targets:" + @echo " all - Compile all source files (default)" + @echo " compile - Compile all source files" + @echo " run - Compile and run the application" + @echo " clean - Remove all compiled classes" + @echo " rebuild - Clean and compile all source files" + @echo " help - Display this help message" \ No newline at end of file diff --git a/JavaDemo/multiclass-demo/src/com/example/Application.java b/JavaDemo/multiclass-demo/src/com/example/Application.java new file mode 100644 index 00000000..fd55c916 --- /dev/null +++ b/JavaDemo/multiclass-demo/src/com/example/Application.java @@ -0,0 +1,29 @@ +package com.example; + +public class Application { + public static void main(String[] args) { + // 创建PersonService实例 + PersonService service = new PersonService(); + + // 添加一些Person对象,注意名字的大小写会被自动规范化 + service.addPerson(new Person("alice", 25)); + service.addPerson(new Person("BOB", 30)); + service.addPerson(new Person("cHaRlIe", 35)); + + // 显示所有人员 + System.out.println("All persons (with names properly capitalized):"); + for (Person person : service.getAllPersons()) { + System.out.println(person); + } + + // 查找特定人员 + Person found = service.findPersonByName("Bob"); + System.out.println("\nFound person: " + found); + + // 测试修改人员名字 + if (found != null) { + found.setName("david"); + System.out.println("After name change: " + found); + } + } +} \ No newline at end of file diff --git a/JavaDemo/multiclass-demo/src/com/example/Person.java b/JavaDemo/multiclass-demo/src/com/example/Person.java new file mode 100644 index 00000000..1f0fc046 --- /dev/null +++ b/JavaDemo/multiclass-demo/src/com/example/Person.java @@ -0,0 +1,35 @@ +package com.example; + +import com.example.util.StringUtils; + +public class Person { + private String name; + private int age; + + public Person(String name, int age) { + // 使用工具类方法 + this.name = StringUtils.capitalize(name); + this.age = age; + } + + public String getName() { + return name; + } + + public int getAge() { + return age; + } + + public void setName(String name) { + this.name = StringUtils.capitalize(name); + } + + public void setAge(int age) { + this.age = age; + } + + @Override + public String toString() { + return "Person{name='" + name + "', age=" + age + "}"; + } +} \ No newline at end of file diff --git a/JavaDemo/multiclass-demo/src/com/example/PersonService.java b/JavaDemo/multiclass-demo/src/com/example/PersonService.java new file mode 100644 index 00000000..009e8cf2 --- /dev/null +++ b/JavaDemo/multiclass-demo/src/com/example/PersonService.java @@ -0,0 +1,27 @@ +package com.example; + +import java.util.ArrayList; +import java.util.List; + +public class PersonService { + private List persons; + + public PersonService() { + this.persons = new ArrayList<>(); + } + + public void addPerson(Person person) { + persons.add(person); + } + + public List getAllPersons() { + return new ArrayList<>(persons); + } + + public Person findPersonByName(String name) { + return persons.stream() + .filter(p -> p.getName().equals(name)) + .findFirst() + .orElse(null); + } +} \ No newline at end of file diff --git a/JavaDemo/multiclass-demo/src/com/example/util/StringUtils.java b/JavaDemo/multiclass-demo/src/com/example/util/StringUtils.java new file mode 100644 index 00000000..6dac1ee7 --- /dev/null +++ b/JavaDemo/multiclass-demo/src/com/example/util/StringUtils.java @@ -0,0 +1,14 @@ +package com.example.util; + +public class StringUtils { + public static boolean isEmpty(String str) { + return str == null || str.length() == 0; + } + + public static String capitalize(String str) { + if (isEmpty(str)) { + return str; + } + return str.substring(0, 1).toUpperCase() + str.substring(1).toLowerCase(); + } +} \ No newline at end of file diff --git a/算法/A类:基本算法/3.9 位运算算法.md b/算法/A类:基本算法/3.9 位运算算法.md index f26b844c..656495a4 100644 --- a/算法/A类:基本算法/3.9 位运算算法.md +++ b/算法/A类:基本算法/3.9 位运算算法.md @@ -39,7 +39,8 @@ double myPow(double x, int n) { double result=1; double temp=x; while(N!=0){ - if( N & 1)result=result*temp; + if( N & 1) + result=result*temp; temp *=temp; N= N>>1; }