- 博客(276)
- 收藏
- 关注
原创 【项目托管git】本地项目托管到 Gitee
注: 此操作会将 Gitee 对应连接仓库的文件下拉到本地,但并不会导致本地文件丢失,这步非常重要,其实就是把远程仓库的文件都同步下来,使得本地仓库与远程仓库具备一定的历史版本,先pull,然后再push。这样就完成本地项目托管到远程仓库上。这里的 origin master 表示从远程的 master 主分支上 pull 项目当本地,注意你所要 pull 的分支是否也叫 master,不是改为相应的分支名即可, 如果本地是dev分支开发,也可以pull下来,6.1 将远程仓库中的文件推送至本地仓库中。
2024-05-24 10:29:12 30
原创 idea 快捷键
4、Ctrl+Left/Right 移动光标到前一个/后一个单词处,加Shift键,产生选中效果;6、Ctrl+W 按语法选中代码,连续按会有其他效果,加Shift键,产生反向选中效果;8、Ctrl+”+/-“ 当前方法展开/折叠,加Shift键,全部方法展开/折叠;1、Ctrl+Alt+Left/Right 光标定位到上一个/下一个浏览位置处;5、Ctrl+[/] 移动光标到前/后代码块,加Shift键,产生选中效果;7、F2 快速定位到下一个错误和警告处,加Shift键,定位到上一个错误处;
2024-05-11 12:09:08 112
原创 Redis: windows安装使用、本地启动、客户端RDM
https://www.cnblogs.com/xiaoniandexigua/p/17419288.htmlhttps://www.cnblogs.com/lal520/p/17981824
2024-05-08 09:29:25 83
原创 【Java 泛型】java泛型‘T‘与‘?‘区别
可以表示成占位符,它自己也不知道list集合中会存放多少种类型的数据,所以这样就表明我们的list中存放N种数据类型也是可以的。因为这个时候除了元素的类型不确定,其他的部分是确定的,例如关于这个元素如何保存,如何管理等是确定的,因此此时把元素的类型设计成一个参数,这个类型参数叫做泛型。示例:可以看到show1方法中我们使用了T,大家都知道这是泛型的常见写法,那么这里的T指的是某一类具体的对象,list集合里只能存放同一类型数据,如果插入不同类型数据则会报错。结论:'T'指的是某一类具体的对象,'?
2024-04-29 15:03:32 240 1
原创 【业务功能篇153】解决Maven编译项目报错:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:co
默认编译环境是JAVA 1.5 ,所以我们需要在pom.xml指定编译插件版本号,这样就可以保证更新Maven project版本不变。结论: 一般就是JDK的问题,需要确保我们编译的版本和我们本地ide配置的版本一致,比如目前用的是1.8。解决方式: 添加指定的版本,这样就不会走默认的1.5.
2024-04-29 09:30:49 838
原创 【业务功能篇152】Maven:Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:2.7:resources
springboot项目中,本地运行程序,报错maven,大多数是版本兼容问题,也就是本地环境的maven配置的版本,与pom文件中的maven的插件依赖版本有差距,那么可以尝试,调整版本一致,或者可以添加maven-filtering 1.3: 依赖。
2024-04-29 09:15:01 191
原创 【业务功能篇151】Springboot中接口传递时间格式问题 @JsonFormat与@DateTimeFormat注解的使用
我这里就只贴这两个属性了,这里我两个注解都同时使用了,因为我既需要取数据到前台,也需要前台数据传到后台,都需要进行时间格式的转换,可以同时使用。3.完成上面两步之后,我们用对应的实体类来接收数据库查询出来的结果时就完成了时间格式的转换,再返回给前端时就是一个符合我们设置的时间格式了。提示:@JsonFormat注解可以在属性的上方,同样可以在属性对应的get方法上,两种方式没有区别。2.在你需要查询出来的时间的数据库字段对应的实体类的属性上添加@JsonFormat。1.注解@JsonFormat。
2024-04-25 11:09:12 1093
原创 【git仓问题】idea中处理 fork远端仓代码提交及更新
其实就是平常我们需要开发中,当要push代码时,是需要先进行pull获取当前项目的最新状态的,一般就是自己本地开发个人分支,然后推送到dev分支,团队中都是推送到dev分支上,所以多人协作时,就需要在push之前,要pull下来当前的最新代码,有新增代码本地就会合并,再进行push。项目中,一般我们都是直接在git远程仓库A上直接创建分支进行开发,还有另外一种模式,就是通过fork方式,将项目远程仓库A fork到自己的远程代码仓B中上,然后这个代码仓B才是作为我们的远端仓。
2024-04-23 15:02:59 418
原创 【jvm】young gc full gc
何时触发YoungGC或FullGCYoungGC的触发时常在发生,当新生代的Eden区满了之后就会触发YoungGC。FullGC在多个情况下都会被触发:1、发生Young GC之前进行检查,如果“老年代可用的连续内存空间” < “新生代历次Young GC后升入老年代的对象总和的平均大小”,说明本次Young GC后可能升入老年代的对象大小,可能超过了老年代当前可用内存空间,此时会触发FullGC2、当老年代没有足够空间存放对象时,会触发一次FullGC。
2024-03-24 11:20:58 556
原创 【业务功能篇 150】Java8 Time时间优化 解决线程不安全
比如多线程任务执行业务逻辑中存在时间字段的格式处理,出错的概率低,这个主要是因为业务并发量问题,大多数并发小,一旦大起来,那就会导致当前线程取得时间,是其他线程设置了的时间,时间覆盖错乱,因为其底层是final修饰,共享变量且没有做线程安全控制锁之类的;但这样的方式终究不是最好的,所以我们使用 ThreadLocal ,来优化这段代码。优化方式二:(Java8里的 java.time.format.DateTimeFormatter是线程安全的, time里的DateTimeFormat也是线程安全的)。
2024-03-16 21:30:24 588
原创 对比 MyBatis 和 MyBatis-Plus 批量插入、批量更新的性能和区别
https://www.cnblogs.com/SihanLin/p/17681811.html
2024-03-16 16:32:07 534
原创 AtomicInteger 使用
为什么AtomicInteger 对象在 Stream 中被视为不可变的最终变量_stream atomic的作用-CSDN博客AtomicInteger详解-CSDN博客
2024-03-16 15:40:20 265
原创 关于java 锁失效问题
2.事务模式,众所周知,加上transactional注解时,会在方法前置开启事务,那假如两个请求同时进入,一个请求获取到了锁,减掉了库存,但是还没提交事务,数据库此时还是原来的库存数,这个时候释放了锁,b获取到了锁,还是读到了原来的数据,这样还是出现了并发的问题。3.集群模式,在集群模式下,多个请求进入不同的服务,同时访问共享资源,因为锁的只是服务的当前实例,每个服务都有不同的实例,就会出现并发问题。
2024-03-16 15:12:29 232
原创 【业务功能篇 147】OOM场景示例、解决方案、ArrayList内存溢出、软引用
【业务功能篇136】MAT(Memory Analyzer Tool),找出导致OOM的代码-CSDN博客为什么我使用【ArrayList】存储数据报错【OOM】_"arraylist login=(arraylist)session.getattribute(\-CSDN博客 Java内存溢出如何解决,Java oom排查方法,10个定位解决办法_javaoom怎么解决-CSDN博客
2024-03-16 01:53:54 277
原创 【业务功能篇145】Spring项目中线程池实战应用各种场景ThreadPoolTaskExecutor
【业务功能篇 142】多线程池+Semaphore信号量 数据并行处理-CSDN博客 【业务功能篇135】多线程+countDownLatch执行大数据量定时任务_countdownlantch 实现多个线程开始执行任务的最大并行性-CSDN博客 线程池ThreadPoolTaskExecutor实战-CSDN博客springboot线程池ThreadPoolTaskExecutor使用_threadpooltaskexecutor springboot-CSDN博客
2024-03-15 11:38:17 481
原创 Java多线程之Executor、ExecutorService、Executors、Callable、Future与FutureTask
解述Java多线程之Executor、ExecutorService、Executors、Callable、Future与FutureTask_taskexecutor.submit futuretask-CSDN博客
2024-03-15 11:03:23 497
原创 Java中的Object、T(泛型)、?区别
这个可能在用到反射需要获取Class类型时用到,它的解释就是:接收一个不确定的类型,有点和Object一样。"有比Object稍微“高级”有点的用法,就是它能缩小一个不确定的范围,利用类似"?这个要怎么来理解呢?我的理解是,可以抛开这个为了创造容器类这个,而是回到泛型的目的是。List本身是个泛型类,现在我们指定它接收Object类型的参数,此时就可以放置任意类型的参数进去,而在取出来是就必须得进行强制类型转换成具体的类型。这点给我们带来的启示是,在编写类似List类的时候,一定要注意是否用泛型。
2024-03-15 10:35:10 364
原创 【业务功能篇 143】Spring容器中的ThreadPoolTaskExecutor多线程,LinkedBlockingQueue问题
【代码】【业务功能篇 143】Spring容器中的ThreadPoolTaskExecutor多线程,LinkedBlockingQueue问题。
2024-03-14 16:51:47 198
原创 【业务功能篇 142】多线程池+Semaphore信号量 数据并行处理
信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施, 它负责协调各个线程, 以保证它们能够正确、合理的使用公共资源。一个计数信号量。从概念上讲,信号量维护了一个许可集。如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可。每个 release() 添加一个许可,从而可能释放一个正在阻塞的获取者。但是,不使用实际的许可对象,Semaphore 只对可用许可的号码进行计数,并采取相应的行动。拿到信号量的线程可以进入代码,否则就等待。
2024-03-14 16:11:19 819
原创 【业务功能篇】多环境配置、多数据源切换失效@DS解决方式
3.什么情况下@DS会失效?在同一个实现类中,一个非DS注解的常规方法里调用@DS注解的方法,同样存在@DS失效的情况,原因同2,是由spring的aop机制导致的,如果确有这种业务需要,可以将该DS注解方法定义在不同的类中,通过bean注入的方式调用,就不会出现这个问题。在事务方法内调用@DS注解的方法,@DS注解同样不生效,原因是spring只能拦截到最外层方法的@Transactional注解,此时加载该事务的数据源,在事务方法内即使调用了@DS注解的方法,获取的是外层事务的数据源,导致@DS失效。
2024-03-14 11:00:47 817
原创 【业务功能篇140】ConcurrentHashMap缓存用户信息
ConcurrentHashMap的简要总结:1、public V get(Object key)不涉及到锁,也就是说获得对象时没有使用锁;2、put、remove方法要使用锁,但并不一定有锁争用,原因在于ConcurrentHashMap将缓存的变量分到多个Segment,每个Segment上有一个锁,只要多个线程访问的不是一个Segment就没有锁争用,就没有堵塞,各线程用各自的锁,ConcurrentHashMap缺省情况下生成16个Segment,也就是允许16个线程并发的更新而尽量没有锁争用。
2024-03-12 09:48:43 433
原创 Spring中什么样的Bean存在线程安全问题-有状态bean
在Spring容器中,除了很多Spring内置的Bean以外,其他的Bean都是我们自己通过Spring配置来声明的,然后,由Spring容器统一加载。基于对以上Spring Bean作用域的理解,下面,我们来分析一下在Spring容器中,什么样的Bean会存在线程安全问题。(是否延时加载)等。所以,可想而知,无状态的单例Bean是不存在线程安全问题的。但是,在多线程操作中如果需要对Bean中的成员变量进行数据更新操作,这样的Bean称之为有状态Bean,所以,有状态的单例Bean就可能存在线程安全问题。
2024-03-11 16:18:01 358
原创 git IDEA的分支合并时的冲突问题总结,merge和rebase的区别
git IDEA的分支合并时的冲突问题总结,merge和rebase的区别_the merge branch should be-CSDN博客
2024-03-11 12:26:50 351
原创 synchronized 锁的升级
从无锁到重量级锁,锁的粒度在不断加大,而且锁的升级过程是不可逆的。有大量的线程此时都要获取锁,由于锁的竞争非常激烈,如果还是不断通过自旋的方式的话,CPU会出现空转的情况,会大量消耗性能,所以轻量级锁就会升级为重量级锁,此时就是操作系统层面来操作了,通过Mutex Lock互斥量,来决定哪个线程获取到锁。线程进入同步方法获取到偏向锁后,此时又有别的线程也要进来,他们通过自旋的方式,来回获取锁然后执行,此时趋于一种相对平稳的状态,就升级为了轻量级锁,他们不会被阻塞,而是通过自旋的方式去不断获取并执行。
2024-03-11 01:11:09 208
原创 【业务功能篇138】SpringBoot中的事务传播属性运用REQUIRED、REQUIRES_NEW、NESTED 只读属性运用readOnly
假如当前正要运行的事务不在另外一个事务里,那么就起一个新的事务 比方说,ServiceB.methodB的事务级别定义PROPAGATION_REQUIRED, 那么因为执行ServiceA.methodA的时候,ServiceA.methodA已经起了事务。此外,只读事务不能保证数据的一致性,因为在只读事务中,数据可能已经被其他事务修改了,因此在使用只读事务时需要注意这一点。此外,只读事务不能保证数据的一致性,因为在只读事务中,数据可能已经被其他事务修改了,因此在使用只读事务时需要注意这一点。
2024-03-10 11:52:30 722
原创 【业务功能篇137】Java8特性:Optional
实际开发中会遇到一个大对象,链式的处理数据,并且还不确定是否为空,如果是简单的对象嵌套判断可以直接就 == null, 但是如果还有一系列的逻辑处理,那么新特性Optional一定能更优雅简洁的实现。
2024-03-09 12:20:38 860
原创 【jvm】java对象占用内存问题深入解析
一个Java对象占用多大内存-CSDN博客关于Object o = new Object()追魂九连问(个人学习笔记) - 知乎
2024-03-07 16:51:34 381
原创 【业务功能篇136】MAT(Memory Analyzer Tool),找出导致OOM的代码
(2)-XX:HeapDumpPath=目 录 参 数 表 示 生 成 D U M P 文 件 的 路 径 , 也 可 以 指 定 文 件 名 称 , 例 如 : − X X : H e a p D u m p P a t h = {目录}参数表示生成DUMP文件的路径,也可以指定文件名称,例如:-XX:HeapDumpPath=目录参数表示生成DUMP文件的路径,也可以指定文件名称,例如:−XX:HeapDumpPath={目录}/java_heapdump.hprof。
2024-02-27 16:43:20 725
原创 【业务功能篇135】多线程+countDownLatch执行大数据量定时任务
构建线程池,通过线程池来分配多个线程,执行多批数据任务定义线程类SyncCallable 实现Callable 重写call方法,具体的数据同步逻辑就是写在callList封装SyncCallable 多批任务线程池执行每个任务 executor.execute(task)
2024-02-19 12:30:57 1083
原创 【业务功能篇134】Mysql 连接池HikariCP配置
其中,connection-timeout是连接超时时间,idle-timeout是空闲连接池的超时时间,pool-size是连接池的大小,minimum-idle是连接池中最小的空闲连接数,maximum-pool-size是连接池中最大的连接数,transaction-isolation是事务隔离级别。这意味着在同一时间点,最多可以有10个连接可供使用。其中,url是数据库连接的URL,username和password是登录数据库的用户名和密码,driver-class-name是数据库驱动的类名。
2024-01-24 20:10:03 725
【中间件篇-Redis缓存数据库】Redis高级特性和应用(慢查询、Pipeline、事务、Lua)
2023-11-09
微服务部署前中间件部署Mysql,Redis,ES,Kibana,Nacos,RockerMQ,Sentinel,Skywalk
2023-09-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人