自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

转载 在同一个类中调用spring事务注解@Transactional问题

在同一个类中调用spring事务注解@Transactional问题

2022-09-26 14:40:29 2619 1

原创 java中使用ZipOutputStream流压缩文件或者文件夹

工作中用到了文件压缩,在这里记录一下

2022-07-01 16:22:19 1351

原创 记一次javax.persistence.RollbackException: Transaction marked as rollbackOnly异常

对于一个方法中多次操作数据库时,只有在每一个子方法没有报错,并且整个方法执行完后,事务才一起提交,如果某个子方法有异常,spring将该事务标志为rollback only,在被标记后和将该异常抛出前,想去执行数据库的话是不允许的。此时即使没有将异常抛出,但是如果继续去操作数据库的话,一样是会报Transaction rolled back because it has been marked as rollback-only的异常,倘若就是想将该异常记录到数据库该怎么...

2022-04-11 15:13:56 1394 1

转载 Java8 Stream流使用包括集合的筛选、归约、分组、聚合

Java8 stream流各种操作集合

2022-03-23 14:41:08 2664

原创 Semaphore(计数信号量) ~java并发编程

1、Semaphore含义Semaphore称为计数信号量,它允许n个任务同时访问某个资源,可以将信号量看做是在向外分发使用资源的许可证,只有成功获取许可证,才能使用资源。

2022-02-11 10:59:42 341

转载 CountDownLatch-Java并发编程

Java并发编程中CountDownLatch的基本理解和使用

2022-02-09 16:02:21 86

转载 Spring事务失效的12种场景

转载:spring事务失效的12种场景《spring:我是如何解决循环依赖的?》《@Autowired的这些骚操作,你都知道吗?》对于从事java开发工作的同学来说,spring的事务肯定再熟悉不过了。在某些业务场景下,如果一个请求中,需要同时写入多张表的数据。为了保证操作的原子性(要么同时成功,要么同时失败),避免数据不一致的情况,我们一般都会用到spring事务。确实,spring事务用起来贼爽,就用一个简单的注解:@Transactional,就能轻...

2021-11-30 09:23:11 78

原创 springboot整合poi解析excel

1、poi的maven引入 <!-- poi导入导出 --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.2</version> </dependency> <dependency> <group

2021-11-29 14:49:09 820 1

原创 实现一个容器,提供两个方法,add,size * 写两个线程,线程1添加10个元素到容器中,线程2实现监控元素的个数,当个数到5个时,线程2给出提示并结束

1、使用传统方式package com.example.demo.jucpool;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.ThreadFactory;import java.util.concurrent.ThreadPoolExecutor;import java.util.concurrent.TimeUnit;import com.google.common.util.co

2021-11-19 11:32:33 443 1

原创 spring 文件上传功能

上传到本地1、配置文件properties#文件上传# 开启上传功能spring.servlet.multipart.enabled=true#文件写入磁盘的阈值,默认是0spring.servlet.multipart.file-size-threshold=2KB#单个文件的最大值2MBspring.servlet.multipart.max-file-size=20MB#多个文件上传时的总大小 值,默认是10MBspring.servlet.multipart.max-r

2021-11-16 10:06:45 912

转载 2021-01-28

springMVC注解引用自:https://www.cnblogs.com/xiaoxi/p/5718894.html

2021-01-28 19:46:21 67

转载 Lombok的注解说明

1、@Data:在JavaBean中使用,注解包含包含getter、setter、NoArgsConstructor注解  @Value注解和@Data类似,区别在于它会把所有成员变量默认定义为private final修饰,并且不会生成set方法2、@getter:在JavaBean中使用,注解会生成对应的getter方法3、@setter:在JavaBean中使用,注解会生成对应的setter方法4、@NoArgsConstructor:在JavaBean中使用,注解会生成对应的无参构造

2021-01-26 20:06:30 90

原创 Linux命令使用和学习小结

Linux阶段性学习Linux中vi和vim编辑器Linux下开机、重启和用户登录注销Linux下用户的管理(用户添加,删除,查询,切换等)

2020-12-11 21:21:23 68

原创 mybatis中bean和数据库字段名字不一致解决方式

1、使用内置ConfigurationCustomizer编写配置类,修改Configuration中的mapUnderscoreToCamelCase属性为 true此时数据库字段和实体类字段不一致问题可以解决@Configurationpublic class MybatisConfig { @Bean public ConfigurationCustomizer customizer(){ return new ConfigurationCust..

2020-12-11 21:19:54 664

原创 mybatis常用的注解大全(持续更新)

mybatis常用的注解大全1、增删改查类的注解@Select@Delete@Insert@Update:@Options:能够设置缓存时间,能够为对象生成自增的key。第一种用法,用于插入数据:创建一个表CREATE TABLE person ( `pid` INT(20) NOT NULL AUTO_INCREMENT, `pname` VARCHAR(50) DEFAULT NULL, `addr` VARCHAR(50) DEFAULT NULL,

2020-12-03 22:10:03 7261

原创 Linux常用的指令(切换运行级别,帮助指令,文件目录指令,时间日期类指令,搜索查找指令,压缩和解压指令)

Linux常用的指令Linux中的指令非常多,在这只是总结一下常用的指令,具体的所有指令可以参照帮助文档。Linux运行级别和切换Linux运行级别0 :关机1 :单用户【找回丢失密码】2:多用户状态没有网络服务3:多用户状态有网络服务4:系统未使用保留给用户5:图形界面6:系统重启常用运行级别是 3 和 5 ,要修改默认的运行级别可改文件 /etc/inittab 的 id:5:initdefault: 这一行中的数字切换运行级别vim /etc/inittab : 进

2020-11-15 23:10:12 346

原创 Linux下用户的管理(用户添加,删除,查询,切换等)

Linux下用户的管理组和家Linux下的用户都处于组中,每个用户处于一个或者多个组中,一个组包含多个用户。在 ***/home/***目录下有用户对应的家目录,用户登录会自动进入到自己的家目录下。比如当创建一个用户 user1 时,就会加入一个组,并且在 /home/ 目录下有一个 /user1/ 的文件夹。创建用户useradd [ 可选项] 用户名 :创建一个用户当创建用户成功后,会自动的创建和用户同名的家目录useradd -d 指定目录 用户名 : 给创建的新用户指定

2020-11-12 23:34:56 239

原创 Linux下开机、重启和用户登录注销

Linux下开机、重启和用户登录注销关机&重启命令shutdownshutdown -h now : 表示立即关机。shutdown -h 1 : 表示 1 分钟后关机shutdown -r now: 立即重启halt就是直接使用,效果等价于关机reboot* 就是重启系统。sync把内存的数据同步到磁盘当我们关机或者重启时,都应该先执行以下 sync 指令,把内存的数据写入磁盘,防止数据丢失用户登录和注销登录时尽量

2020-11-12 21:05:32 102

原创 Linux中vi和vim编辑器

Linux中vi和vim编辑器vi 的三种命令模式;Command(命令)模式,用于输入命令;Insert(插入)模式,用于插入文本;Visual(可视)模式,用于视化的的高亮并选定正文;编辑文本 vi,vim在命令模式下,使用vi XXX 或者 vim XXX进入编辑器中,默认文件名为该命令后边的参数XXX文件在这个模式中, 你可以使用『上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来处理档案内容, 也可以使用『复制、贴上』来处理你的文件数据。点击enter键

2020-11-12 20:19:49 106

原创 Java设计模式,单例模式详解,包括单例模式的各种方式的实现

Java单例模式详解,包括各种方式的实现单例对象(Singleton)是一种常用的设计模式。在 Java 应用中,单例对象能保证在一个 JVM中,该对象只有一个实例存在。这样的模式有几个好处:某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。省去了 new 操作符,降低了系统内存的使用频率,减轻 GC 压力。有些类如交易所的核心交易引擎,控制着交易流程,如果该类可以创建多个的话,系统完全乱了。(比如一个军队出现了多个司令员同时指挥,肯定会乱成一团),所以只有使用单例模式,才能保证核心

2020-11-10 22:18:53 215

原创 Java中的stream流以及相关的操作

Java中的stream流以及相关的操作流(Stream)到底是什么呢?是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列。“集合讲的是数据,流讲的是计算!注意:①Stream自己不会存储元素。②Stream 不会改变源对象。相反,他们会返回一个持有结果的新Stream。③Stream操作是延迟执行的。这意味着他们会等到需要结果的时候才执行。stream的三个操作创建Stream一个数据源(如:集合、数组),获取一个流中间操作一个中间操作链,对数据源的数据进行处理终

2020-11-09 22:11:09 343

原创 Lambda表达式的运用以及函数式接口

Lambda表达式的运用lambda表达式所运用的场景实际上是基于函数式接口。1、无参数,无返回值 @Test public void test1() { new Thread(()->{ System.out.println(Thread.currentThread().getName() + "启动"); },"A").start(); }如果在当前类中有一个变量,在lambda中想要获取该变量的值,需要将该变量声明为final例如: @Test public v

2020-11-09 14:06:04 127

原创 Java创建线程池,查看当前cpu的核心数

Java线程池的创建和使用首先,查看当前cpu核的数量的代码System.out.println(Runtime.getRuntime().availableProcessors());创建线程池首先想到的是使用工具类Executors中的三中方式第一种//创建一个单例的线程池,池中只有一个线程ExecutorService newSingleThreadExecutor = Executors.newSingleThreadExecutor();JDK底层的源码为public stat

2020-11-08 23:38:46 1381

原创 Java二叉树的遍历(非递归)

二叉树的遍历(非递归)前序遍历遵从 根左右 遍历,结果为:GDAFEMHZ二叉树前序非递归遍历使用到的是栈,先加入右节点,再加入左节点。public List<Node> preorderTraversal(TreeNode root) { if(root == null) return new ArrayList(); List list = new ArrayList(); LinkedList stack = new LinkedL

2020-10-30 22:19:45 76

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除