工作心得和总结

很久没有更新博客,更新博客更是思路重新梳理的过程会加深技术的理解。工作中越来越体会中还有更多知识要去学习。目前学习的比较凌乱。先做杂记把。

1 spring动态配置数据源

   网上很多例子,都能实现,开发中存在很多疑虑和不信任,还发现了一些问题,但经过反复测试和看源码,明白了原理就不会再有疑虑,注意一下几点:

   1 ) 如果数据源动态添加写在配置文件里,启动时读取数据,改spring 配置文件读数据库连接为 属性文件java代码读取(这个是spring的功能),如果有动态添加删除的则需要另外配置一个配置文件。同时修改 动态数据源实现类 调用实现动态修改

 AbstractRoutingDataSource 的 afterPropertiesSet 方法,,最好看下AbstractRoutingDataSource的源码,里面包含很多个功能

 2 )另外一个要注意的是 采用的  ThreadLocal来安全保存当前线程的 数据源,但是只在当前线程有效,所以做数据库操作时要注意,每一个 数据库的增删改查之前都要 进行拦截器或者Aop切面实现指定数据源进行设置(DataSourceContextHolder.set('dbsource')),如果不设置的话极有可能 数据源为空或切换到了默认数据源,进而程序出错

public class DynamicDataSource extends AbstractRoutingDataSource {  
    @Override  
    protected Object determineCurrentLookupKey() {  
        return DataSourceContextHolder.getDbType();  
    }  
    @Override  
    public void setDataSourceLookup(DataSourceLookup dataSourceLookup) {  
        super.setDataSourceLookup(dataSourceLookup);  
    }  
  
    @Override  
    public void setDefaultTargetDataSource(Object defaultTargetDataSource) {  
        super.setDefaultTargetDataSource(defaultTargetDataSource);  
    }  
  
    @Override  
    public void setTargetDataSources(Map targetDataSources) {  
        super.setTargetDataSources(targetDataSources);  
        //这句是重点
        super.afterPropertiesSet();  
    }  
  
}  

然后重写父类,添加方法

	//用于动态添加新数据源
	public void addDataSource(Object key,Object dataSource){  
		this.targetDataSources.put(key, dataSource);  
        setTargetDataSources(this.targetDataSources);  
    }
	
	public void removeDataSource(Object key){
		if(null !=key&& !"".equals(key)){
			this.targetDataSources.remove(key);  
	        setTargetDataSources(this.targetDataSources); 
		}
	}

3) 涉及到多数据源事务的问题好多文章有了,有多种技术多种方法,就不说了

2 Netty 框架的使用

  最近要求用TCP进行两个程序通信,所以用来Netty来实现。通过官网介绍知道,其实高并发,无阻塞,高效、低耗的安全框架。两个看点

  1) 采用多线程机制,在建立workgroup时,参数为空则是cpu内核×2个线程,有参数则使用参数

  2) 采用ByteBuf 缓存存储字符串字节流,有两种方式,堆缓存和直接缓存

3 存在的问题:

   还用到了其他技术,但只做到了知其然但不知其所以然的境界,所以还要好好学习,好多技术例如Shiro源码,Vue源码框架,Angularjs和React, ES6,HBase,Kafka源码,element-ui等,需要去学习。

4 总结

   学习时学习别人碰到的问题和解决方法往往比 如何做对的更能快速学习,解决的思路很重要,多看源码多实践

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

静山晚风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值