日常开发注意问题

1.​​Java中占位符and字符串拼接问题。

第一种:

public static final String xxx = "redis:rocky:";

String key = Main.xxx + "yyy"+":"+"zzz";

第二种:

public static final String xxx = "redis:rocky:{0}:{1}";

String key = MessageFormat.format(Main.xxx,"yyy","zzz");

----------------------------------------------------------------------------------------------------------------------------------------------------------------

2.CountDownLatch latch = new CountDownLatch(xxx);在开发中的应用

----------------------------------------------------------------------------------------------------------------------------------------------------------------

3.redis的序列化问题。Java打印一个hashmap,结果是这样的{map1=1,map2=2,map3=3},因为将数据存入到redis里面和从redis里面取数据时的序列化方式不一样,导致取出来的格式是这样的{"map1"=1,"map2"=2,"map3"=3},将序列化格式统一以后,数据格式就完美了。

----------------------------------------------------------------------------------------------------------------------------------------------------------------

4.业务开发中对redis做了复习,以下是在网上找到的学习资源:

----------------------------------------------------------------------------------------------------------------------------------------------------------------

(1)【转】RedisTemplate使用说明-opsForValue(一),https://blog.csdn.net/qq_39071667/article/details/88866038

(2)【转】RedisTemplate常用集合使用说明-opsForValue(二),https://blog.csdn.net/qq_39071667/article/details/88866059

(3)【转】RedisTemplate常用集合使用说明-opsForList(三),https://blog.csdn.net/qq_39071667/article/details/88866092

(4)【转】RedisTemplate常用集合使用说明-opsForHash(四),https://blog.csdn.net/qq_39071667/article/details/88867639

(5)【转】RedisTemplate常用集合使用说明-opsForSet(五),https://blog.csdn.net/qq_39071667/article/details/88867655

(6)【转】RedisTemplate常用集合使用说明-opsForZSet(六),https://blog.csdn.net/qq_39071667/article/details/88867677

(7)【转】RedisTemplate常用集合使用说明-boundHashOps(七),https://blog.csdn.net/qq_39071667/article/details/88871269

(8)【转】RedisTemplate常用集合使用说明-boundListOps(八),https://blog.csdn.net/qq_39071667/article/details/88871283

(9)【转】RedisTemplate常用集合使用说明-boundSetOps(九),https://blog.csdn.net/qq_39071667/article/details/88871306

(10)【转】RedisTemplate常用集合使用说明-boundValueOps(十),https://blog.csdn.net/qq_39071667/article/details/88871331

(11)【转】RedisTemplate常用集合使用说明-boundZSetOps(十一),https://blog.csdn.net/qq_39071667/article/details/88871353

----------------------------------------------------------------------------------------------------------------------------------------------------------------

(1)【转】RedisTemplate访问Redis数据结构(前言),https://blog.csdn.net/weixin_37490221/article/details/78134105

(2)【转】RedisTemplate访问Redis数据结构(一)——String,https://blog.csdn.net/weixin_37490221/article/details/78134521

(3)【转】RedisTemplate访问Redis数据结构(二)——List,https://blog.csdn.net/weixin_37490221/article/details/78134748

(4)【转】RedisTemplate访问Redis数据结构(二)——Hash,https://blog.csdn.net/weixin_37490221/article/details/78135036

(5)【转】RedisTemplate访问Redis数据结构(四)——Set,https://blog.csdn.net/weixin_37490221/article/details/78135202

(6)【转】RedisTemplate访问Redis数据结构(四)——Zset,https://blog.csdn.net/weixin_37490221/article/details/78135815

(7)【转】Redis——事务详解,https://blog.csdn.net/weixin_37490221/article/details/78197613

----------------------------------------------------------------------------------------------------------------------------------------------------------------

5.【转】RedisTemplate和StringRedisTemplate区别,https://blog.csdn.net/Abysscarry/article/details/80557347

----------------------------------------------------------------------------------------------------------------------------------------------------------------

6.【转】git merge和git rebase区别,https://blog.csdn.net/liuxiaoheng1992/article/details/79108233(还在消化中)

----------------------------------------------------------------------------------------------------------------------------------------------------------------

7.【转】对future.cancle();方法的理解,https://blog.csdn.net/z69183787/article/details/87932452

----------------------------------------------------------------------------------------------------------------------------------------------------------------

8.git commit --amend,应用场景,git commit提交到本地,但是发现注释写的不好,想重新写,使用该命令,进入到vim环境,进行编写即可。

----------------------------------------------------------------------------------------------------------------------------------------------------------------

9.对在阿里云上面打数据埋点的理解。例如:

public class RockyLog extends LogItem{

        private String actionMsg;

        public String getActionMsg(){

                 return actionMsg;

        }

        public void setActionMsg(String actionMsg){

                 this.PushBack("action_msg",actionMsg);

                 this.actionMsg = actionMsg;

        }

}

在后面做数据埋点的时候,有actionMsg属性的时候,直接rockyLog.setActionMsg(actionMsg);即可,打点别的属性是RockyLog类中没有的,直接rockyLog.PushBack("actionCode","actionCode");即可。

----------------------------------------------------------------------------------------------------------------------------------------------------------------

11.埋点数据的时候,因为不同的业务会有一些公有的字段值,而这些公有字段一般会在封装好的方法里面set的,所以在数据埋点的时候,一定要把公有的字段避开,以免打点的字段出现两次的问题。数据埋点很重要。

----------------------------------------------------------------------------------------------------------------------------------------------------------------

10.在springboot项目中,在feign里面调用多个服务的接口,如果想对某个单独服务的接口设置响应超时时间,例如:

xx-xxx-xxxx:

   ribbon:

       ReadTimeout: 2000

       ConnectTimeout: 2000

----------------------------------------------------------------------------------------------------------------------------------------------------------------

11.在接触kafka的时候注意到了一个注解,就是@KafkaListener(topics="xxx"),这个起到一个监听的作用,去监听同一个topic下有没有生产者生产消息,所以在测试用例的时候,就会显示成生产一个消费一个这样的现象。去掉这个注解,则就是一直生产而不去消费。

----------------------------------------------------------------------------------------------------------------------------------------------------------------

12.SpringBoot中mongodb的MongoTemplate的应用

<1>.查询,Query query = new Query();

       query.addCriteria(Criteria.where("id").is(id)); 

       return mongoTemplate.find(query,Entity.class);

<2>.插入,mongoTemplate.insert(list,Entity.class);

<3>.更新,Query query = new Query();

                  query.addCriteria(Criteria.where("id").is(id)); 

                  Update update = new Update();

                  update.set("name","rocky1996");

                  mongoTemplate.updateFirst(query,update,Entity.class);

<4>.删除,Query query = new Query();

                  query.addCriteria(Criteria.where("id").is(id)); 

                  mongoTemplate.remove(query,Entity.class);

----------------------------------------------------------------------------------------------------------------------------------------------------------------

13.StringUtils的isEmpty()和isBlank()方法的区别

isEmpty()方法:判断为空的标准是str==null或者str.length()==0,但是isEmpty()没有忽略空格参数

StringUtils.isEmpty("rocky1996") = false;

StringUtils.isEmpty("") = true;

StringUtils.isEmpty("     ") = false;

isBlank()方法:isBlank()方法是在isEmpty()方法的基础上进行了为空的判断,有对空格进行判断,更为常用

StringUtils.isBlank("rocky1996") = false;

StringUtils.isBlank("") = true;

StringUtils.isBlank("     ") = true;

----------------------------------------------------------------------------------------------------------------------------------------------------------------

你可能感兴趣的:(日常开发注意问题)