- 博客(103)
- 资源 (23)
- 收藏
- 关注
原创 Assert断言
百度百科解释:“在程序设计中,断言是一种放在程序中的一阶逻辑,目的是为了标示与验证程序开发者预期的结果——当年程序运行到断言的位置时,对应的断言应该为真,若断言不为真时,程序会终止运行,并给出错误消息”在debug中两个代码块的功能一直,但在release版本上assert会被直接忽略。这个特性也说明assert直接运用于开发和自测阶段,目的是为了调试代码,快速定位问题。然后,在正式环境运行代码,assert不生效;其次,assert语句仅仅在debug中才有效,在release版本中无效;
2023-04-10 21:54:10
672
1
原创 Failed to resolve org.junit.platform:junit-platform-launcher:1.x.x错误解决
在使用SpringBoot测试时如果出现Failed to resolve org.junit.platform:junit-platform-launcher:1.x.x这样的问题,最主要的问题是IntelliJ IDEA版本和junit版本不适配问题,所以。方案一:将IntelliJ IDEA的版本升级到2020以上的版本。方案二:直接在项目的pom.xml文件中添加如下依赖。reload project即可解决。实际开发过程中,运行单测报。
2023-03-16 17:17:27
4721
原创 com.alibaba.fastjson.JSONException: write javaBean error, fastjson version 1.2.83, class XXX fieldNa
问题:但是报com.alibaba.fastjson.JSONException: write javaBean error, fastjson version 1.2.83, class XXX fieldName 0 错误,通过了解是每一个entity中若是有null字段存在,就会转换异常,看报错日志以为是fastjson等错误,其实不是。在 JSONObject.toJSONString()方法加上参数SerializerFeature.IgnoreNonFieldGetter解决。
2023-03-01 18:30:12
5992
1
原创 for循环三种跳出循环的方法(retrun、continue、break)Mark
break语句只有在循环语句和switch语句中使用才是合法的,经常用来跳出循环,不会执行后续循环,但是会继续执行循环之后的。3、return:指的是跳出for循环,且不执行for循环之外的语句,直接跳出当前函数,返回return后的值。不同的是,它不是退出一个循环,而是跳出当前循环,进行下一轮循环】1、continue:指的是跳出当前循环,即不执行continue后的语句,直接进入下次循环。2、break:指的是跳出for循环本身,不再进行之后的循环,但可以执行for循环之外的语句。
2022-12-16 16:24:18
66431
原创 【线程池】线程池异步执行操作
需求:实际开发中,主线程操作执行完成之后,然后子线程继续异步执行后续操作。我们可以采用线程池的方式,简介和使用详见【线程池《一》】线程池的基本原理,看完就懂了_Little Feel的博客-CSDN博客1. 为什么要用线程池降低资源消耗。通过重复利用已创建的线程降低创建/销毁线程造成的消耗提高响应速度。当任务到达时,任务可以不需要等到线程创建就立即执行提高线程的可管理性。线程时稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配/调优和监控。2. Threa
2022-03-03 16:04:39
1703
原创 【git】由其中一个分支往另一个分支copy提交的代码
Markgit cherry-pick commitId1.git log查看需要迁移的提交的commitId,记录下来2.切换到自己放代码的分支git chekout xxx,然后执行git cherry-pick commitIdMark下。
2022-02-18 17:40:04
418
原创 【FeignClient】FeignClient调不通的直接原因
通过@FeignClient去调用其他系统的服务接口,一直返回null,调不同的原因要么是配置错误,要么是在启动类@EnableFeignClients有没有配置这个client
2021-11-24 11:38:24
2547
转载 Redis命令和RedisTemplate操作对应表Redis
在实际开发中,难免遇到使用Redis的场景,本文是转载大佬的Redis相关的操作,链接请见文章最下面,很实用,Mark。Key相关的Redis命令 RedisTemplate redisTemplate 说明 KEYS *、KEYS *key*、KEYS *key、KEYS key* redisTemplate.keys(key); 获取所有key,模糊查询key(支持通配符*) EXPIRE key 10EXPIREAT key 1293840000 redi
2021-11-18 14:53:30
897
转载 跟我学Spring之自定义bean容器提升代码可读性
转发大佬的文章Mark以便于学习链接请见:跟我学Spring之自定义bean容器提升代码可读性开发中经常有这样的场景:根据某个类型标识走不同的业务逻辑,通常我们会使用if(type.equals(xxxxx)) 或者 switch语句来进行逻辑处理。这样做当然是没什么问题的。当业务逻辑变得越来越复杂,类型标识增多之后,难免会出现if判断增加,或者switch case分支变多,这样的代码往往会过于冗长,代码重复性较大,或者说逼格不够高。本文介绍一种基于自定义Bean容器的开发方式..
2021-10-27 11:48:47
209
原创 【CAS】CAS在实际开发中的简单使用
若不太了解cas,可参考之前我总结的cas详解看下,在这篇文章中就简单讲解下cas在实际开发中的使用【CAS】解释下CAS,CAS刨析_Little Feel的博客-CSDN博客实际项目中:若是遇到状态流转的情况,过程a从1更新为2,过程b再由2更新为3,若是过程b更新调用逻辑比a先调用,这个时候就会出现状态问题,直接就会状态先变更为3,然后在变更为2,为了出现上述状况。所以这个时候就会引入CAS的原理:比较并更新。简单的实现就是update table set status=3 where
2021-09-16 15:56:03
642
转载 feignClient异常合集Mark
问题1:feignClient调用报异常cause:Content-Type cannot contain wildcard type ‘*’是因为远程调用的时候入参识别不了application/json解决办法:在方法上加上类型即可consumes = MediaType.APPLICATION_JSON_VALUE @RequestMapping(value = "/xxx/xxx/xxx/xxx/xxx/xxx/result",method = RequestMethod.GET, cons
2021-09-16 10:00:17
627
原创 【AOP】aop代码解决实际小问题,小记
背景:springboot项目下,我们的代码中有很多处调用了其他系统,但是其他系统的后期可能就不调用了。要是每个代码的地方都要写一段if代码来判断下或者去逐个删除下,既费时又不安全,所以这个时候就引用了aop面向切面编程。具体实现:@Aspect@Slf4j@Componentpublic class SystemAspect { @Value("${xxxx.xxxx.xxxx.xxxx.xxxx:true}") private Boolean sysOldSystem;
2021-07-30 19:27:42
314
原创 【mybatis的小错误】mybatis-Invalid value for getInt() - ‘id‘
错误:Error attempting to get column 'id' from result set. Cause: java.sql.SQLException: Invalid value for getInt() - 'id'原因:看错误意思就以为是mapper和实体的id类型不一致导致的,查看了一下发现是一样的,然后就仔细查看mapper中的SQL。终于发现是手敲单引号导致的——粗心大意上面是错误的,下面是正确的。(虽然上面是英文标点符号,但是还是不行,需要用特定的)...
2021-07-29 10:45:53
666
原创 【stream】jdk1.8中stream流的第n+1种用法,去除重复list集合
需求:若获取的list集合有重叠,则去除重复的集合,然后展示思考:若是判断重复对象,可以重写对象的equales方法进行判断,list集合则用.distinct()即可实现思路:先把所有的集合放在一起,然后使用stream的distinct()方法去重示例:public static List<Test1> ss() { List<Test1> instruments = new ArrayList<>(); instr
2021-05-26 21:52:28
695
原创 【stripTrailingZeros】stripTrailingZeros().toPlainString()方法
toPlainString():返回不带指数字段的此 BigDecimal 的字符串表示形式stripTrailingZeros():返回一个BigDecimal,它在数值上等于这一个,但表示形式移除所有尾部零public static String regularBigDecimalFromBigDecimal(final BigDecimal data){ return data.setScale(8, RoundingMode.FLOOR).stripTrailingZeros
2021-05-24 16:28:52
1527
原创 【BeanUtils.copyProperties】BeanUtils.copyProperties解决对象中字段太多赋值问题
需求:已知对象1中的数值和对象2中的数值,对象1中的id和对象2中的favoId是相同的,想把对象1和2数据整合到一起,我们就新建一个对象All,字段包含对象1和2,把对象1和2都放入到all对象中,可以用到BeanUtils.copyProperties进行对象赋值。若是字段很少,可以用set,get,若是很多字段,实现起来就很麻烦。BeanUtils.copyProperties(源兑现,目标对象)示例:对象1package com.c3stones.entity;impor.
2021-05-21 20:38:50
1071
1
原创 CSV实现上传下载,前后端实现代码
需求:CSV实现上传下载<Input className="upload-input" type="file" onChange={(e) => this.onFileChosen(e)} style={{width: 150, marginRight: 20}}/> {/*<span style={{color: 'red'}}>格式为.excel</span>*/} <Butt
2021-04-22 21:41:52
576
原创 实现:三个数组中分别取里面的第一个值,第二个值,第三个值重新组成数组
需求:a,b,c三个list中分别又有三个list,然后分别取a,b,c中的第一个list值,第二个list值,第三个list分别组成新的list(a,b,c中的值可能为空,最大为3个list)思路:先算出a,b,c三个当中最大的长度,然后for循环依次取a,b,c的第一个值放到list中,第二个值放list中,第三个值放list中。注:要考虑到a,b,c中值不全的情况实现SimpleProInstrumentVO类@Data@NoArgsConstructor@AllArgsCon
2021-04-22 21:10:09
969
原创 mysql常见错误 Mark
Mysql错误:【1】check the manual that corresponds to your MySQL server version for the right syntax to use near 'modify_time = '2021-03-12 18:27:51.227' 【modify_time前面少,号】check the manual that corresponds to your MySQL server version for the right...
2021-03-12 18:33:25
121
原创 【JDK1.8】JDK1.8新特性
1.Java 8 lamda Stream的Collectors.toMap参数使用toMap()函数之后,返回的就是一个Map了,自然会需要key和value。toMap()的第一个参数就是用来生成key值的,第二个参数就是用来生成value值的,第三个参数用在key值冲突的情况下,如果新元素产生的key在Map中已经出现过了,第三个参数就会定义解决的办法。List<Student> indices = getIndices(brokerId, null);Map<Str
2021-03-07 17:56:19
878
1
原创 【Git】Git基本命令总结
之前用的是Git客户端进行操作和现在有稍微的不同,现在记录下Git提交或更新的基本命令,以便于下次再忘记了。先总结几个开发中最常见的操作命令 命令 描述 git status 查看仓库的状态 git log 查看最后三次提交记录 git diff 查看仓库版本的不同 git pull 下载远程代码并合并
2021-03-07 17:04:13
214
原创 thisisunsafe的神奇之chrome浏览器打不开不安全的https网页
问题:输入网址,提示不安全的https网页,然后也不能继续访问,请教了同事解决办法:在chrome该页面上,在当前页面(也就是上图页面)注意是在当前页面打开的时候点网页任意地方,不是输入框,直接输入thisisunsafe回车,直接就打开页面了...
2021-03-03 21:06:46
41848
3
原创 Java中Map的keySet()、entrySet()详解
由于Map中存放的元素均为键值对,故每一个键值对必然存在一个映射关系。Map中采用Entry内部类来表示一个映射项,映射项包含Key和ValueMap.Entry里面包含getKey()和getValue()方法Set<Entry<T,V>> entrySet()该方法entrySet()返回值就是这个map中各个键值对映射关系的集合。可使用它对map进行遍历。Iterator<Map.Entry<Integer, Integer>> it
2021-02-22 13:19:04
2756
转载 swagger注释API :@ApiModel
API详细说明注释汇总作用范围 API 使用位置 对象属性 @ApiModelProperty 用在出入参数对象的字段上 协议集描述 @Api 用于controller类上 协议描述 @ApiOperation 用在controller的方法上 Response集 @ApiResponses 用在controller的方法上 Response @ApiResponse 用在 @ApiResponses里边
2021-02-18 18:51:26
836
原创 【JVM+GC】JVM的理解以及总结,通俗易懂
【问题一】Jvm的体系结构:Jdk 减 工具=jre,jre 减 类库=jvm方法区和堆被所有线程共享的Java栈(虚拟机栈)=白色运行时数据区线程私有线程私有,线程1份2个线程2份虚拟机栈:存储当前线程运行方法所需的数据,指令,返回地址包含main方法和所有运行的方法。方法(栈帧)中包含局部变量表(this,八大基本数据类型+引用(地址hotspot版本(句柄池)直接指针))栈帧包括操作数栈/动态链接(运行时的多态)/返回地址本地方法栈nativ...
2021-01-19 10:36:53
380
原创 【死锁】死锁编码及定位分析
死锁是什么?产生死锁的主要原因死锁是指两个或者了两个以上的进行在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力干涉那它们都将无法推进下去,如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。产生死锁的原因:1.系统资源不足;2.进程运行推进的顺序不合适;3.资源分配不当;通过一个小得脉进行分析怎么定位死锁,以及具体原因package com.neu.controller.study;import j
2021-01-19 09:37:17
226
原创 【Synchronized和Lock】Synchronized和lock有什么区别?用新的lock有什么好处?举例说说
1.原始构成Synchronized是关键字,属于jvm层面Monitorenter(底层是monitor对象来完成,其实wait/notify等方法也依赖于monitor对象只有在同步块或者方法中才能调用wait/notify等方法),主要是获取监视器锁Monitorexit主要是释放监视器锁。Lock是具体类(java.util.concurrent.locks.lock)是api层面的锁 2.使用方法Synchronized不需要用户去手动释放锁,当sych代码执...
2021-01-18 10:52:58
203
原创 【阻塞队列《二》】阻塞队列用到哪里了?
我们上一篇解释了什么是阻塞队列,队列的架构梳理和种类分析(https://blog.csdn.net/qq_30546099/article/details/112723231),那么这篇文章就谈谈阻塞队列到底用到什么地方了,并详细解释【问题一】阻塞队列用到了什么地方生产者消费者 线程池 消息中间件1.生产者消费者在使用Lock之前,我们都使用Object 的wait和notify实现同步的。举例来说,一个producer和consumer,consumer发现没有东西了,等待,prod.
2021-01-18 10:06:12
197
原创 【阻塞队列《一》】阻塞队列的深入浅出
【问题一】熟悉阻塞队列的概念队列:先到先得阻塞队列:首先它是一个队列,而一个阻塞队列在数据结构中所起的作用大致是:线程1往阻塞队列中添加元素,而线程2从阻塞队列中移除元素。1.当阻塞队列是空时,从队列中获取元素的操作将被阻塞2.当阻塞队列是满时,往队列里添加元素的操作将被阻塞试图从空的阻塞队列中获取元素的线程将会阻塞,直到其他的线程往空的队列中插入新的元素。试图往已满的阻塞队列中添加新元素的线程同样也会被阻塞,直到其他线程从队列中移除一个或多个元素或者多个元素或者完全清空队列后使队列
2021-01-18 09:00:36
164
3
原创 【锁《二》】独占锁(写锁)/共享锁(读锁)/互斥锁
【问题一】独占锁(写锁)/共享锁(读锁)/互斥锁独占锁:指该锁一次只能被一个线程所持有。对ReentranLock和Synchronized而言都是独占锁。共享锁:指该锁可被多个线程所持有。对ReentrantReadWriteLock,其读锁是共享锁,其写锁是独占锁。读锁的共享锁可保证并发读是非常高效的,读写,写读,写写的过程是互斥的。/** * 多个线程同时读一个资源类没有任何问题,所以为了满足并发量,读取共享资源应该可以同时进行。 * 但是如果有一个线程想去写共享资源类,就不应
2021-01-15 17:15:46
135
原创 【锁《一》】全面认识锁,公平锁/非公平锁/可重入锁/递归锁/自旋锁
【问题1】公平锁非公平锁是什么,区别?公平锁:是指多个线程按照申请锁的顺序来获取锁,类似排队打饭,先来后到。队列,先到先得非公平锁:是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁。在高并发的情况下,有可能会造成优先级反转或者饥饿现象。ReentranLock默认是非公平锁,synchronized也是非公平锁并发包中的ReentranLock的创建可以指定构造函数的Boolean类型来得到公平锁或非公平锁,默认是非公平锁两者区别:公平锁就是很公平,
2021-01-15 17:01:57
128
原创 【CAS】解释下CAS,CAS刨析
由上一篇volatile(https://blog.csdn.net/qq_30546099/article/details/112607448)引出的问题:volatile的其中一条特性是非原子性,解决非原子性其中一条是用juc下的AtomicInteger解决,那AtomicInteger又是什么呢,原理是什么呢?这就引出了CAS。Atomic的底层实现原理是CAS【问题一】CAS是什么?解释下大概意思,详细的描述就不说了,百度一搜一大把。CAS:比较并交换 CompareAndSet,也就是如
2021-01-15 13:55:54
391
1
原创 【volatile】volatile引出的思考?到底是什么?
ps:疑问都是用红色的字体标识出来,最后引出知识点。。。第一个疑问:volatile到底是什么?volatile是Java虚拟机提供的轻量级的同步机制。特性:能保证可见性和非原子性和禁止指令重排。 适用于:多线程环境下的单次操作(单次读或者单次写)volatile的特性又引发出来了一个疑问,volatile不能保证原子性,那如何解决volatile的原子性呢?两种方式:1.加synchronized修饰;2.使用我们juc(java.util.concurrent并发包)下的Atomic
2021-01-14 15:45:00
125
3
原创 【读写锁小总结】ReentrantReadWriteLock的Demo实现
在实际的业务场景中,线程去访问一个资源,都是需要很多线程需要共享读的,写的时候可以独占锁,所以JUC就衍生出来ReentrantReadWriteLock,读写锁。而ReentrantLock和Synchronized和lock都满足不了这个需求。独占锁:指该锁一次只能被一个线程所持有。对ReentrantLock和Synchronized而言都是独占锁。共享锁:指该锁可被多个线程所持有。对ReentrantReadWriteLock,其读锁是共享锁,其写锁是独占锁。读锁的共享锁可保证并发读是非常高
2020-12-30 22:10:34
397
4
原创 【并发修改异常】常见的java.util.ConcurrentModificationException异常
【1】ArrayList是线程不安全的,因为add方法未加锁,若是在多线程的情况下,就会导致并发修改异常List<String> list= new ArrayList<>();//newCopyOnWriteArrayList() 写时复制for(int i=1;i<=30;i++){ new Thread(()->{ list.add(UUID.randomUUID().toString().substring(0,8)); .
2020-12-28 22:34:46
231
原创 【定时任务】调度器Quartz和线程池的关系浅解
创建要被定执行的任务类 【1】这一步只需要创建一个实现了org.quartz.Job接口的类,并实现这个接口的唯一一个方法execute(JobExecutionContext arg0) throws JobExecutionException即可。如package com.fync.quartz;import java.text.SimpleDateFormat;import java.util.Date;import org.quartz.Job;import org.quar...
2020-12-16 17:00:25
2179
原创 【线程池《一》】线程池的基本原理,看完就懂了
1. 为什么要用线程池降低资源消耗。通过重复利用已创建的线程降低创建/销毁线程造成的消耗 提高响应速度。当任务到达时,任务可以不需要等到线程创建就立即执行 提高线程的可管理性。线程时稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配/调优和监控。2. ThreadPoolExecutor线程池类参数详解 参数 说明 corePoolSize 核心线程数量,线程池维护线程的.
2020-12-07 20:34:50
364
原创 【消息队列3】如何保证消息的可靠性传输(如何处理消息丢失的问题)
1.分析mq有个基本原则,就是数据不能多一条,也不能少一条。不能多,就是刚才说的重复消费和幂等性问题。不能少,就是说这数据别搞丢了。如果说你这个是用mq来传递非常核心的消息,比如说计费,扣费的一些消息,因为我以前设计和研发过一个公司非常核心的广告平台,计费系统,计费系统是很重的一个业务,操作是很耗时的。所以说广告系统整体的架构里面,实际上是将计费做成异步化的,然后中间就是加了一个MQ。2.剖析这个丢数据,mq一般分为两种,要么是mq自己弄丢了,要么是我们消费的时候弄丢了。咱们从rabbitm
2020-12-02 20:00:13
391
原创 【消息队列】消息队列深入浅出
消息队列是什么,要学习消息队列要了解的知识。(1)为什么使用消息队列啊?这个其实就是问问你消息队列都有哪些使用场景,然后你项目里具体是什么场景,说说你在这个场景里用消息队列是什么作用。先说一下消息队列的常见使用场景吧,其实场景有很多,但是比较核心的有3个:解耦、异步、削峰解耦:传统模式的缺点:不使用MQ的时候,A系统发送个数据到BCD三个系统,接口调用发送,那如果E系统也要这个数据呢?那如果C系统现在不需要了呢?公司需要给多个系统发送报文数据,需要调用多个系统接口,下游系统接口需求老修改,
2020-11-23 20:29:14
204
MySQL服务端和客户端.zip
2020-09-06
postman-win64位-6.0.10 下载地址以及教程大全
2020-09-04
Redis 64位服务端与客户端下载,亲测可用
2020-09-04
checklinux.sh
2019-10-11
TortoiseGit-2.6.0.0-64bit及中文汉化
2018-07-06
pdflm16_dll亲测可用
2018-06-14
springcloud、springboot与Dubbo的百度云视频
2018-05-11
前端唯美/服装网页模板
2018-03-25
后台网页模板《5》
2018-03-25
后台网页模板《4》
2018-03-25
后台网页模板《3》
2018-03-25
后台网页模板《2》
2018-03-25
后台网页模板《1》
2018-03-25
整理的35个后台网页模板
2018-03-24
安卓客户端与服务端交互源代码(包括安卓端和web端)
2018-03-24
基于SSM的服装设计作品在线展销系统(毕设源码)
2017-11-25
基于SSM的服装设计作品在线展销系统——在线销售管理(毕设源码)
2017-10-26
毕业设计论文:服装设计作品在线展销系统——在线销售管理
2017-10-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人