Java内容重新整理删除过期的东西

This commit is contained in:
estom
2025-09-14 03:49:42 -04:00
parent 9b8524ff80
commit 885b795e45
413 changed files with 643 additions and 1340 deletions

View File

@@ -0,0 +1,27 @@
package cn.aofeng.demo.proxy;
/**
* 账号服务接口定义。
*
* @author <a href="mailto:aofengblog@163.com">聂勇</a>
*/
public interface AccountService {
/**
* 注册。
*
* @param username 账号名
* @return 具体含义查看{@link Result}的说明。
*/
Result register(String username);
/**
* 登录。
*
* @param username 账号名
* @param password 密码
* @return 具体含义查看{@link Result}的说明。
*/
Result login(String username, String password);
}

View File

@@ -0,0 +1,28 @@
package cn.aofeng.demo.proxy;
/**
* 代理调用示例。
*
* @author <a href="mailto:aofengblog@163.com">聂勇</a>
*/
public class AccountServiceClient {
public static void main(String[] args) {
AccountService as = new AccountServiceImpl();
// 静态代理
AccountService staticProxy = new AccountServiceStaticProxy(as);
staticProxy.register(null);
staticProxy.register("A0001");
staticProxy.login(null, null);
staticProxy.login("A0001", "PWD0001");
// 动态代理
AccountService dynamicProxy = AccountServiceDynamicProxy.newInstance(as);
dynamicProxy.register(null);
dynamicProxy.register("A0001");
dynamicProxy.login(null, null);
dynamicProxy.login("A0001", "PWD0001");
}
}

View File

@@ -0,0 +1,42 @@
package cn.aofeng.demo.proxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* 账号服务动态代理。
*
* @author <a href="mailto:aofengblog@163.com">聂勇</a>
*/
public class AccountServiceDynamicProxy implements InvocationHandler {
private final static Logger _LOGGER = LoggerFactory.getLogger(AccountServiceDynamicProxy.class);
private AccountService _accountService;
public AccountServiceDynamicProxy(AccountService accountService) {
this._accountService = accountService;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
_LOGGER.debug("execute method {}, arguments: {}", method.getName(), args);
Object result = method.invoke(_accountService, args);
_LOGGER.debug("execute method {}, result:{}", method.getName(), result);
return result;
}
public static AccountService newInstance(AccountService accountService) {
ClassLoader loader = accountService.getClass().getClassLoader();
Class<?>[] interfaces = accountService.getClass().getInterfaces();
return (AccountService) Proxy.newProxyInstance(loader,
interfaces,
new AccountServiceDynamicProxy(accountService));
}
}

View File

@@ -0,0 +1,53 @@
package cn.aofeng.demo.proxy;
import java.util.Random;
import wiremock.org.apache.commons.lang.StringUtils;
/**
*
*
* @author <a href="mailto:aofengblog@163.com">聂勇</a>
*/
public class AccountServiceImpl implements AccountService {
private final static Random NUM = new Random(System.currentTimeMillis());
@Override
public Result register(String username) {
if (StringUtils.isBlank(username)) {
return createResult(4000001, "注册失败");
}
User user = new User();
user.setUid(NUM.nextInt());
user.setNickname("用户"+user.getUid());
return createResult(2000001, "注册成功", user);
}
@Override
public Result login(String username, String password) {
if (StringUtils.isBlank(username) || StringUtils.isBlank(password)) {
return createResult(4000001, "登录失败");
}
User user = new User();
user.setUid(NUM.nextInt());
user.setNickname("用户"+user.getUid());
return createResult(2000001, "登录成功", user);
}
private Result createResult(int code, String msg) {
Result result = new Result(code, msg);
return result;
}
private Result createResult(int code, String msg, User user) {
Result result = new Result(code, msg);
result.setData(user);
return result;
}
}

View File

@@ -0,0 +1,39 @@
package cn.aofeng.demo.proxy;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* {@link AccountServiceImpl}的代理类,增加了输出入参和响应的日志。
*
* @author <a href="mailto:aofengblog@163.com">聂勇</a>
*/
public class AccountServiceStaticProxy implements AccountService {
private AccountService _delegate;
private final static Logger _LOGGER = LoggerFactory.getLogger(AccountServiceStaticProxy.class);
public AccountServiceStaticProxy(AccountService accountService) {
this._delegate = accountService;
}
@Override
public Result register(String username) {
_LOGGER.debug("execute method register, arguments: username={}", username);
Result result = _delegate.register(username);
_LOGGER.debug("execute method register, result:{}", result);
return result;
}
@Override
public Result login(String username, String password) {
_LOGGER.debug("execute method login, arguments: username={}, password={}", username, password);
Result result = _delegate.login(username, password);
_LOGGER.debug("execute method login, result:{}", result);
return result;
}
}

View File

@@ -0,0 +1,65 @@
package cn.aofeng.demo.proxy;
/**
* 账号服务操作结果。
*
* @author <a href="mailto:aofengblog@163.com">聂勇</a>
*/
public class Result {
/**
* 200xxxx 表示成功。<br/>
* 400xxxx 表示参数错误。<br/>
* 500xxxx 表示服务内部错误。
*/
private int code;
/**
* code对应的描述信息。
*/
private String msg;
/**
* 只有code为200xxxx时才有值其他情况下为null。
*/
private User data;
public Result() {
// nothing
}
public Result(int code, String msg) {
this.code = code;
this.msg = msg;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public User getData() {
return data;
}
public void setData(User data) {
this.data = data;
}
@Override
public String toString() {
return "Result [code=" + code + ", msg=" + msg + ", data=" + data + "]";
}
}

View File

@@ -0,0 +1,38 @@
/**
*
*/
package cn.aofeng.demo.proxy;
/**
* 用户信息。
*
* @author <a href="mailto:aofengblog@163.com">聂勇</a>
*/
public class User {
private long uid;
private String nickname;
public long getUid() {
return uid;
}
public void setUid(long uid) {
this.uid = uid;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
@Override
public String toString() {
return "User [uid=" + uid + ", nickname=" + nickname + "]";
}
}