# chess
**Repository Path**: beikebase/chess
## Basic Information
- **Project Name**: chess
- **Description**: 棋牌游戏
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2018-01-03
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
### Comom——公共模块
#### config
- application-dev.yml——开发环境;
application-test.yml——测试环境;
application-prod.yml——生产环境;
application.yml——通用配置,与环境无关
启动参数添加spring.profiles.active=xxx,加载特定环境的配置;
- Spring 可以加载Jar外的配置文件,部署项目后修改配置文件重新启动项目即可应用;
- 配置文件使用
1. 配置文件新增配置项(yaml格式)
```yaml
chess:
buss:
key: value
```
2. 对应到配置类Chess.java中
```java
//每个接口对应一层
@Config
public interface Chess {
interface Buss{
String key=null;
}
}
```
3. 配置使用,直接作为接口属性读取
- 注意事项
- 新增配置文件对应的接口类,加上@Config即可
- 配置项分层,取接口全小写或者字段名
如interface Chess对应chess
field Key 对应Key
- @Config(name="key_name")可自定义名称
#### cache
#### lock
- 锁排序原理
对象锁对象
排序顺序说明:
1.非实体在前,实体{@link AbstractEntity}在后
2.不同类型的锁对象,用完整类名做字符串排序
3.类型相同时,根据排序依据进行排序
4.排序依据对于非实体而言,为System.identityHashCode(instance)
5.排序依据对于实体而言,为{@link AbstractEntity#getId()};
- 项目使用
```java
static class TestLockThread extends Thread {
List list;
public TestLockThread(List list) {
this.list = list;
}
@Override
public void run() {
ChainLock chainLock = LockUtils.getLock(list);
chainLock.lock();
try {
int count = 0;
for (TestEntity entity : list) {
for (int i = 0; i < 10000 * 3000; ++i) {
entity.doTask();
++count;
}
}
System.out.println("结束:" + count);
} finally {
chainLock.unlock();
}
}
}
```
#### gameconfig
- 游戏服配置格式
*参考chess/config目录的测试配置表.xlsx
- 项目使用
```java
public class TestConfig {
public static void main(String[] args) {
try {
ConfigUtils.loadAllConfig("config", "com.three.gameconfig");
} catch (GameException e) {
System.out.println(e.getErrorMsg());
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
### DB模块使用
- 数据库新增
- 配置文件新增(区分是否分片数据库)
- 新增com.three.db.annotation内的注解,JPA配置XXXXJpaConfig
- 数据库使用
- 继承JpaRepository,需要标注注解使用哪一个数据库,现有@ChessDbRepo默认数据库,@BussDbRepo业务数据库
- 分表分库在实体上使用Sharding注解,参考TimePO
- 表结构变更,实体变动自动更新表结构
### Commom-web——web公共模块
### SSO——用户模块