# 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——用户模块