项目-代码-经验整理
文章平均质量分 60
有项目经验,代码经验等
我爱写bug77
这个作者很懒,什么都没留下…
展开
-
代码经验---java获取cpu个数-docker
拿到cpu个数,和docker是否冲突原创 2022-05-26 14:23:33 · 1785 阅读 · 1 评论 -
代码经验---Hutool(糊涂)全面的java工具类库
Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅原创 2022-05-10 20:23:57 · 1290 阅读 · 0 评论 -
Could not HEAD ‘XXX.jar‘. Received status code 401 from server: Unauthorized
今天在部署服务的时候,一个包引用不到编译出问题了,报错如下: > Could not download JwtPermission.jar (com.github.whvcse:JwtPermission:1.0.9) > Could not get resource 'https://jitpack.io/com/github/whvcse/JwtPermission/1.0.9/JwtPermission-1.0.9.jar'. > Could ...原创 2021-10-20 19:46:39 · 2104 阅读 · 0 评论 -
Java8-Function-Consumer-Predicate
函数式接口概念:针对函数式编程接口,一般可以定义为:Consumer c = (o) -> { System.out.println(o);}; // 函数式编程接口都只有一个抽象方法,因此在采用这种写法时,编译器会将这段函数编译后当作该抽象方法的实现// 如果接口有多个抽象方法,编译器就不知道这段函数应该是实现哪个方法的了。// 因此,=后面的函数体我们就可以看成是accept函数的实现。输入:->前面的部分,即被()包围的部分。此处只有一个输入参数,实际原创 2021-08-16 15:30:57 · 229 阅读 · 0 评论 -
java中对于静态方法的理解
今天看到一个web项目,所有的serviceImpl实现类中定义的方法都是static修饰的;跟以前接触过的项目都不一样,以前我们是实例方法,没有用static修饰的,一般用static的场景:要么是一些工具类,要么是一些通用的方法(不想每次用的时候都new对象或者注入对象);既然这个项目这么用,我这边也整理下这种用法的区别:静态方法和非静态方法的区别静态方法(类方法)非静态方法(普通方法/实例方法/成员方法)静态方法,是使用static关键字修饰的方法,又叫类方法。.原创 2021-06-17 10:53:21 · 915 阅读 · 0 评论 -
你还在new对象吗?lombok的Builder了解一下?
前言我们写代码如果要创建一个对象一般会使用new的方式,若是对象有属性,则使用set方法进行复制,例如:Student student = new Student();student.setName("zhangsan");student.setAge(18);...这种是可以的,但是如果我们对象的属性值有很多呢?你想想,就这些复制的代码就会有很多,100个属性,就要写100行...原创 2020-03-11 11:53:08 · 3237 阅读 · 1 评论 -
Java8-stream理解
今天突然看到一个人他对流的一句话,感觉非常便于理解流,如何使用流:流的使用将分为【终端操作】和【中间操作】;1.中间操作 当数据源中的数据上了流水线后,这个过程对数据进行的所有操作都称为“中间操作”。 中间操作仍然会返回一个流对象,因此多个中间操作可以串连起来形成一个流水线。2.终端操作 当所有的中间操作完成后,若要将数据从流水线上拿下来,则需要执行终端操作。 终端操作将返回一个执行结果,这就是你想要的数据。这句话真精辟,一下子就理解了大半了;流的特点1.只能遍历一次 ..原创 2021-06-01 20:11:55 · 112 阅读 · 0 评论 -
怎么理解常说的QPS-TPS-吞吐量
QPS:(Queries Per Second)每秒查询率 ,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准, 即每秒的响应请求数,也即是最大吞吐能力。TPS(Transactions Per Second)是事务数/秒。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。QPS和TPS的区别Tps即每秒处理事务数,包括了...原创 2021-05-25 10:53:44 · 639 阅读 · 0 评论 -
代码经验---mapStruct代替BeanUtils进行类之间的属性拷贝
目录前言:1:如何使用:1:引入mapStruct和lombok依赖2:增加转换器(@Mapper)3:写一个转换方法4:获取对象INSTANCE并使用2:几个使用的关键点:@Mapper@Mappings和@Mapping(指定属性之间的映射关系)@AfterMapping和 @MappingTarget (属性的自定义映射处理)@BeanMapping(ignoreByDefault忽略mapstruct默认的映射行为)@InheritConfi...原创 2021-05-20 20:37:00 · 1811 阅读 · 0 评论 -
Java8-stream使用-reduce
reduce:原文减少,这里的意思是:根据一定的规则将Stream中的元素进行计算后返回一个唯一的值举例:元素求和:以前我们是这样算的:Int sum = 0;for (int x : numbers)Sum += x;通过反复使用加法,你把一个数字列表归约成了一个数字;要是还能把所有的数字相乘,而不必去复制粘贴这段代码,岂不是很好?这正是reduce操作的用武之地,它对这种重复应用的模式做了抽象。你可以像下面这样对流中所有的元素求和:Int sum = nu.原创 2021-05-08 10:24:18 · 1912 阅读 · 0 评论 -
Java8-stream使用-flatMap合并List
可以实现对嵌套list的操作(将多维嵌套列表转换为单维列表)上例子:[ { "groupCode": "221", "groupName": "测试组一" "groupType": 1 "taskList": [ { "taskCode": "221", "taskName": "任务一", "tas原创 2021-04-25 19:37:24 · 2982 阅读 · 0 评论 -
代码经验---feign调用实现url和接口路径的动态配置化
前言:在微服务盛行的今天,做接口开发请求第三方服务的接口,大概率会用feign做请求,而feign也是最常用的一种rpc框架;这里主要是说明在进行feign请求的时候,第三方服务的url和接口也是可以通过读取配置文件的配置,来进行请求的;至于为什么要把接口和url写在配置中呢,其实也是看需求了;若是该接口是作为基础服务可能会请求多个第三方使用(我们就是不同分支的代码作为独立项目部署,请求不同的客户接口),不同客户的接口地址可能不同,此时就需要做成配置方式;若是不常改动,其实也没必要做成配置了;常原创 2021-04-21 22:38:48 · 48383 阅读 · 5 评论 -
swagger-ui页面设置接口请求头head参数
有时候我们http请求需要设置请求头信息,那么当我们用swagger调试接口的时候怎么传head参数呢?有两种方式:1:设置全局的请求头,对所有接口都适用在swagger配置类中增加:@Bean public Docket createRestApi() { ParameterBuilder tokenPar = new ParameterBuilder(); List<Parameter> pars = new ArrayList<>原创 2021-04-16 18:27:28 · 7589 阅读 · 1 评论 -
java调用webservice接口方法整理
这几天在调试webservice接口,记录下调试过程以及遇到的问题;1: 首先列出几种请求webservice:AXIS调用远程的webserviceSOAP调用远程的webservicewsdl2java把WSDL文件转成本地类,然后像本地类一样使用URL Connection方式当然http方式也有很多,原生httpconnectin,httpclient,okhttp等都可以,springboot也有支持的,封装了上面几个的,具体用哪种方式都可以;2: We原创 2021-04-16 17:21:18 · 5129 阅读 · 1 评论 -
设计模式--策略模式
一:策略模式说明1:为什么要用策略模式?简单理解就是为了代替if else if else;在一个业务中,有多个实现方式,多个算法,这个时候我们一般可以采用if else的方式进行判断,但是条件越来越多的时候,过多的if else造成代码耦合太高,若是有新的需求进来,又需要改动代码,不好拓展,结果代码既复杂又难以维护;2:什么是策略模式?策略模式通常就是解决这种有很多ifelse处理逻辑,从而提高代码的可维护性、可扩展性和可读性。3:策略模式的基本组成策略模式(Strategy),定义了一组原创 2021-03-16 22:38:06 · 502 阅读 · 0 评论 -
代码经验---@Autowired自动注入map
前言: spring是支持基于接口实现类的直接注入的; 支持注入map,list等集合中,不用做其他的配置,直接注入;为什么要用这种方式注入bean呢?使用场景: 适用于一个接口有多个实现类,然后根据不同的参数选择执行不同的实现类, 其实就是策略模式;Spring 会在启动时,自动查找实现了该接口的 bean,放到这个Map中去。key为bean的名字,value为 实现了该接口的所有的 bean。注意:这里只有在map的key为s...原创 2021-03-15 20:16:48 · 7670 阅读 · 1 评论 -
代码经验---Java枚举类高阶用法
枚举类一般作为常亮定义,或者类似于map存储结构,枚举类中定义方法或者抽象方法:如果枚举类中定义了方法,那么可以实现,也可以不实现,如果枚举类中定义了抽象方法,那么枚举类中的所有全部实例必须实现抽象方法。 枚举类中可以有方法,实例可实现,也可以不实现改方法。 枚举类中可以有抽象方法,实例必须实现;// 场景:根据不同的参数,返回不同的对象实现// 类似于if,else,if,else的判断public enum TaskSequenceStrategyEnum i...原创 2021-03-15 17:46:54 · 524 阅读 · 0 评论 -
代码经验---springboot自定义注解如何使用
业务场景:自定义注解其实也有特定的用处,比如说我们现在要统计一些api接口调用的日志,核心思想就是利用aop拦截就可以做到,或者利用过滤器拦截器等都可以实现,那么我们如果只是想统计部分接口(灵活性更高),这样就可以用自定义注解来实现,在需要的接口上,添加我们写的注解就可以了,那么这个接口的日志就被保存了下来;当然还有其它场景,比如说登录拦截等;开发1:引入切面支持(springboot使用自定义注解也是利用aop代理)<!-- 引入aop切面支持 --><dependenc原创 2021-03-11 10:39:16 · 283 阅读 · 1 评论 -
idea回滚代码
idea 回滚步骤:如果你要回滚到这一次提交ctrl shift k 提交选force push那么你的代码就回滚到你所想要的这次提交记录了注意:什么时候需要使用 force push?当您运行 push 时,如果远程仓库中有您所缺少的更改,并且要使用本地存储库副本进行覆盖,Git将拒绝完成操作。通常情况下,您需要执行pull操作才能与远程进行同步,然后使用更改进行更新。该 --force push 命令将禁用此检查,并允许您覆盖远程仓库,...原创 2021-03-10 16:10:23 · 6043 阅读 · 0 评论 -
kafka一些常用命令,以及如何查看消息被谁消费了
环境说明: 我们的kafka版本是:查看kafka版本,进入kafka容器:find / -name \*kafka_\* | head -1 | grep -o '\kafka[^\n]*' kafka_2.11-2.2.1 前面为scala版本,后面为kafka版本。 样例说明:2.11为scala版本,2.2.1为kafka版本。 我的kafka容器名是kafka;注意: 不同kafka版本的命令有些不一样,有的还用z...原创 2021-03-10 10:27:22 · 11987 阅读 · 2 评论 -
logback-区分多环境
有时候我们项目需要不同环境打印不同格式的日志,这个时候就要区分,不同环境引用不同的日志文件;将logback.xml文件拆分为logback-prod.xml,logback-dev.xml两个文件准备不同的日志文件:不同环境的yml中配置:引入不同的logback文件:生产环境yml引入:###logbacklogging: config: classpath:logback-prod.xmltest环境yml引入:###logbackloggi..原创 2021-02-25 20:25:21 · 1341 阅读 · 0 评论 -
logback设置打印日志为json串
logback可以设置打印日志为制定格式,通常我们可以在logback.xml里面进行设置;通用的设置为:<?xml version="1.0" encoding="UTF-8"?><configuration scan="true" scanPeriod="5 seconds" debug="false"> <property name="LOG_HOME" value="/data/logs/vvic-coupon-service" />原创 2021-02-07 10:49:21 · 4683 阅读 · 0 评论 -
代码经验---Java本地缓存解决方案01:用Google的CacheBuilder实现
原创:https://www.cnblogs.com/andychou/p/8342007.html为什么是本地缓存,而不是分布式的集群缓存? 目前的数据,大多是业务无关的小数据缓存,没有必要搞分布式的集群缓存,目前涉及到订单和商品的数据,会直接走DB进行请求,再加上分布式缓存的构建,集群维护成本比较高,不太适合紧急的业务项目。本地缓存在那个区域? 目前考虑的是占用了JVM的heap区域,再细化一点的就是heap中的old区,目前的数据量来看...原创 2021-02-04 17:39:26 · 603 阅读 · 0 评论