![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
自主创新
文章平均质量分 56
自主创新
cyh男
这个作者很懒,什么都没留下…
展开
-
TDengine在Apache Hive中的探索和实践
前言随着TDengine产品的名气越来越广,为了实现降本增效,公司最近将底层的时序数据库引擎由Opentsdb换成了TDengineHive对JDBC的实现Hive对TDengine的实现遇到的问题总结原创 2021-04-29 19:05:01 · 1059 阅读 · 0 评论 -
JAVA责任链设计模式在项目中的体现
项目需求项目包含如下业务逻辑1.前端界面点击“新增采集”按钮,进入后台逻辑。2.后台开始部署FileBeat实例的逻辑。部署过程包含下发、安装、启动、更新配置等操作,每个操作都是一次http接口调用。只有当前一个操作完成后,才能进行下一个操作,否则操作中断。传统设计由于“只有当前一个操作完成后,才能进行下一个操作,否则操作中断”,所以我们定义一个接口方法,方法使用如下伪代码结构:每个操作都用try-catch包裹public void deploy(FileBeatInstanceDTO fil原创 2021-03-27 17:07:24 · 121 阅读 · 0 评论 -
多个集合中分别获取元素,组成唯一性字符串
数据格式1.有多个集合,每个集合的元素为字符串,字符串内容为key=value形式。2.每个集合里的元素里的key都相同,只有value不同,比如A集合的元素为"A=A1""A=A2"“A=A3”…B集合的元素为"B=B1"“B=B2”…C集合的元素为"C=C1""C=C2"“C=C3”…需求1.依次从每个集合中获取一个元素,将获取的多个元素组装为一个字符串,字符串内容为"A=A1:B=B1:C=C1"这样的形式。2.组成的字符串具有唯一性3.列举出所有的唯一性字符串实现1.使用com原创 2021-02-01 21:47:39 · 336 阅读 · 0 评论 -
后台自定义统一任务查询框架
需求项目中有某段业务逻辑:从数据库中查询多条数据构成集合,然后遍历集合,处理每条数据,并加入新集合。为了提高处理速度,采用了多线程。同时,为了防止任务处理完方法就走到最后了,使用了CountDownLatch。核心代码如下List<OperatorProcessVO> vos = Collections.synchronizedList(new ArrayList<>());CountDownLatch latch = new CountDownLatch(operato原创 2021-02-01 21:44:50 · 145 阅读 · 0 评论 -
spring自定义作用域
1.CustomScope 类public class CustomScope implements Scope { private ThreadLocal local = new ThreadLocal(); /* * 这个方法就是自己管理bean,同一个线程里是单例 * */ @Override public Object get(String name, ObjectFactory<?> objectFactory) {原创 2021-02-01 21:43:44 · 298 阅读 · 0 评论 -
自定义百度ID生成器的springboot starter
1.从github拉取项目百度ID生成器地址2.将项目maven install到本地仓库3.创建新maven工程3.1 引入依赖 <dependency> <groupId>com.baidu.fsg</groupId> <artifactId>uid-generator</artifactId> <version>1.0.0-SNAPSHOT</version> <原创 2021-01-15 20:47:48 · 370 阅读 · 0 评论 -
将无Component注解的类加入spring容器
需求背景旧项目没有用spring,现在想将项目的类交给spring管理。但是如果每个类都加@Component比较麻烦,希望能在不加Component情况下,也能将类交给spring管理。比如如下路径的类实战1.定义注解@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)public @interface MyAnnotation { String value();}2.增加配置类,并使用该注解注解的值表示原创 2021-02-01 21:42:10 · 1312 阅读 · 0 评论 -
JAVA WEB项目中的功能权限和数据权限设计
功能权限1.介绍每个controller接口,对应权限表一条记录。项目启动时,通过springmvc提供的类,可以获取到有权限注解的方法,从而构造权限对象,插入数据库。2.代码接口注解权限初始化类@Component@Slf4jpublic class FunInitConfig implements CommandLineRunner { @Autowired private BdpFuncMapper bdpFuncMapper; @Autowired原创 2021-02-01 21:40:58 · 4004 阅读 · 0 评论 -
spring aop自定义MethodInteceptor实现类
代码案例1.自定义MethodInteceptor@Servicepublic class GirlMethodInterceptor implements MethodInterceptor { @Override public Object invoke(MethodInvocation invocation) throws Throwable { System.out.println("专门拦路拦截漂亮妹妹!!"); return invocat原创 2021-01-22 15:29:36 · 660 阅读 · 3 评论 -
spring动态数据源的配置
动态数据源只有一个动态DataSource对象和一个事务管理器对象。使用时,通过同一个事务管理器对象来操作动态DataSource里的具体数据源。而多数据源(见多数据源配置.note)是有多个DataSource对象,每个DataSource对象对应一个事务管理器对象。使用时,根据选择的事务管理器(通过@Transactional注解上指定的value,即事务管理器bean的id),获取对应的DataSource。1.动态数据源类public class DynamicDataSource exte原创 2021-01-26 21:36:56 · 302 阅读 · 0 评论 -
JAVA后台动态获取增删改的变化实体
背景项目后台有一个修改告警规则的功能,前端部分页面如下。这个页面传到后台,在后台对应的数据结构为:一个AlarmTarget里有多个AlarmCondition,同时最外层的AlarmRule可以有多个AlarmTarget。这个页面在后台对应的数据结构为:一个AlarmHandleFlow里有多个AlarmHandleRule,同时最外层的AlarmRule可以有多个AlarmHandleFlow。页面里其他地方也有类似的结构,此处就不全部展示了。页面的大部分元素都有父子关系,后台不好判断哪原创 2021-01-28 17:31:51 · 281 阅读 · 0 评论 -
spring自定义Environment中的属性值
需求背景在springboot项目中,我们可以在properties文件里配置各种属性,然后在代码里通过@Value方式获取属性值。比如properties定义user.ids=XXXXX代码中使用 @Value("${user.ids}") private String userIds;这种方式的特点是,除非重启项目,否则通过@Value方式获取的值在项目启动过程中就确定了。但现在有个需求是:在项目运行过程中改变属性的值,不能重启项目。现在我们来实现这个功能。代码1.自定义Pro原创 2021-02-01 21:34:49 · 2571 阅读 · 0 评论 -
spring自定义缓存切面
需求背景关于spring的缓存切面1.本身spring的缓存切面注解不支持手动设置缓存过期时间,例如商品缓存我想要30s过期,优惠券信息我想要50s过期。2.自定义写的缓存切面能不能实现类似nginx那样的流程,当一个线程发现缓存失效后,就加锁让别的所有线程都等待(或者只允许进入没几个线程),被放行的线程去数据库里查数据,然后把缓存存好以后,开锁,让正在等待的所有线程和后续来的线程都可以去缓存中查数据。如上功能如果使用reids的话redisson中好像提供了一个有类似加锁功能的切面,但是其还是不支原创 2021-02-02 09:20:38 · 629 阅读 · 0 评论