项目中杂拾

杂拾

1、top,free -h 分析linux服务器性能
2、pg_stat_activity 查看pg数据库连接
3、每个线程需要大约1MB内存
4、使用(psql 数据库 用户名)然后输入密码进入数据库,再使用(\d)查看数据库的表
5、ShardingMasterSlaveRouter 类中的route方法进行主库还是从库判断
@RequiredArgsConstructor
public final class ShardingMasterSlaveRouter {
    
    private final Collection<MasterSlaveRule> masterSlaveRules;
    
    /**
     * Route Master slave after sharding.
     * 
     * @param sqlRouteResult SQL route result
     * @return route result
     */
    public SQLRouteResult route(final SQLRouteResult sqlRouteResult) {
        for (MasterSlaveRule each : masterSlaveRules) {
            route(each, sqlRouteResult);
        }
        return sqlRouteResult;
    }
    
    private void route(final MasterSlaveRule masterSlaveRule, final SQLRouteResult sqlRouteResult) {
        Collection<TableUnit> toBeRemoved = new LinkedList<>();
        Collection<TableUnit> toBeAdded = new LinkedList<>();
        for (TableUnit each : sqlRouteResult.getRoutingResult().getTableUnits().getTableUnits()) {
            if (!masterSlaveRule.getName().equalsIgnoreCase(each.getDataSourceName())) {
                continue;
            }
            toBeRemoved.add(each);
            String actualDataSourceName;
            if (isMasterRoute(sqlRouteResult.getSqlStatement().getType())) {
                MasterVisitedManager.setMasterVisited();
                actualDataSourceName = masterSlaveRule.getMasterDataSourceName();
            } else {
                actualDataSourceName = masterSlaveRule.getLoadBalanceAlgorithm().getDataSource(
                        masterSlaveRule.getName(), masterSlaveRule.getMasterDataSourceName(), new ArrayList<>(masterSlaveRule.getSlaveDataSourceNames()));
            }
            toBeAdded.add(createNewTableUnit(actualDataSourceName, each));
        }
        sqlRouteResult.getRoutingResult().getTableUnits().getTableUnits().removeAll(toBeRemoved);
        sqlRouteResult.getRoutingResult().getTableUnits().getTableUnits().addAll(toBeAdded);
    }
    
    private boolean isMasterRoute(final SQLType sqlType) {
        return SQLType.DQL != sqlType || MasterVisitedManager.isMasterVisited() || HintManager.isMasterRouteOnly();
    }
    
    private TableUnit createNewTableUnit(final String actualDataSourceName, final TableUnit originalTableUnit) {
        TableUnit result = new TableUnit(actualDataSourceName, originalTableUnit.getDataSourceName());
        result.getRoutingTables().addAll(originalTableUnit.getRoutingTables());
        return result;
    }
}

可以使用MasterVisitedManager.setMasterVisited()强制走主库,也可以使用

HintManager hintManager = HintManager.getInstance();
hintManager.setMasterRouteOnly();
//使用如上方式强制路由到主库时。记得进行关闭
hintManager.close();
6、获取properties配置文件中某个(名字为code)字段的内容
String propertyValue = PropertiesHelper.getInstance.getProperty("code");

7. @Order(100)标明执行顺序,值越小,越早执行
8.ThreadLocal可当作本线程的Map使用,与其它线程隔离,其中的ThreadLocal.withInitial(Stack::new)提供了一种使用lamdba的方法进行初始化
9.Java Stack继承可变数组Vetor,Stack的peek查看栈顶元素但不删除它
10.Shardingjdbc的广播表,每个分库中都会有此表,并且数据一样,一般数据量较少,如字典表。当新增数据时,每个分库都会新增同样的数据,查询时会随机路由到一个库
11.gunzip 解压 后缀名为gz的压缩文件
12、使用RedisTemplate来操作redis
13、在linux中的app.log文件中查找“今天天气很好”内容的命令为grep '今天天气很好' app.log
14、 在linux中的压缩文件app.log.gz中查找“今天天气很好”内容的命令为gzip -dc app.log.gz | grep '今天天气很好'
15、数据库新增字段,当数据库中存在数据不能直接新增not null字段,因为新增字段本身是null的,所以会报错
ALTER TABLE t_test ADD COLUMN t1 VARCHAR(10) not null;(当数据库本身存在数据时,此sql会报错)
**16、可以通过serial关键字给数据库新增自增字段。
**17、关于linux中的环境变量说明
全局环境变量设置文件:/etc/profile、/etc/bashrc。
用户环境变量设置文件:/.bash_profile、/.bashrc。
读取顺序:① /etc/profile、② ~/.bash_profile、③ ~/.bashrc、④ /etc/bashrc。
① /etc/profile:此文件为系统的每个用户设置环境信息,系统中每个用户登录时都要执行这个脚本,如果系统管理员希望 某个设置对所有用户都生效,可以写在这个脚本里,该文件也会从/etc/profile.d目录中的配置文件中搜集shell的设置。
② ~/.bash_profile:每个用户都可使用该文件设置专用于自己的shell信息,当用户登录时,该文件仅执行一次。默认情况 下,他设置一些环境变量,执行用户的.bashrc文件。
③ ~/.bashrc:该文件包含专用于自己的shell信息,当登录时以及每次打开新shell时,该文件被读取。
④ /etc/bashrc:为每一个运行bash shell的用户执行此文件,当bash shell被打开时,该文件被读取。
18、使用maven的appassembler插件可以将java项目打成zip包,可以更优雅的通过start、stop优雅的启停。
参考
19、查看java日志报错,主要关注cause by…语句
20、linux中的隐藏文件看不见,可以通过ll -a查看,或者通过cd .ssh进入。
21、netstat -tunlp | grep 8080 查看端口状态
22、du -h --max-depth=1 只展示一级目录所占内存

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值