Java基础学习笔记 一. 泛型(1) 泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数,这个类型形参将在声明变量、创建对象、调用方法时动态指定。即传入实际的类型参数(也叫传入类型实参)。传入的类型实参的类型必须是引用类型。比如一个求数组最大值的方法,这个方法针对的数据类型可以是任何实现了 Comparable 接口的数据类型, 并且返回值类型就是传入的数据类型,这里返回类型是可变的,就可...
跨域和options请求 前后端分离的项目中,前端和后端单独部署,使用不同的域名,前端代码在浏览器端访问后端的时候就会有跨域问题。之前帮前端调试活动页面的时候,chrome调试工具上总是看到一个请求会重复发两次,后端加了锁,并做了数据校验,所以前端不管怎么搞都不会有问题,也没在意,一直以为是前端代码的问题。后来研究跨域的时候,发现前端发的两个请求中,第一个是 options请求,第二个才是正常的 get/post...
postman请求参数的格式 postman中 http请求参数常用的格式有三种1. form-data2. x-www-form-urlencoded3. row1. form-data使用form-data格式时, Content-Type 为multipart/form-data; boundary=------WebKitFormBoundaryxapCX9v3I390PUpXbo...
Redis常用配置 1.redis安装wget http://download.redis.io/releases/redis-5.0.3.tar.gztar -xvfredis-5.0.3.tar.gzcdredis-5.0.3/srcmake //编译安装redisvim /etc/profile 末尾追加export PATH=$PATH:[这里写redis-5.0.3的路...
Redis搭建集群 前几周就在学习搭建redis集群,照着网上的教程操作了一波,总是遇到各种各样的问题,很难受,最后还是没有搭建成功,像这种情况,我一般先放一放,等一段时间再来试试,今天又来操作了一波,终于成功搭建起了集群。一.下载安装rediswget http://download.redis.io/releases/redis-5.0.3.tar.gztar -xvf redis-5.0.3.tar...
Spring事务管理报错:Transaction rolled back because it has been marked as rollback-only 之前经常报"Transaction rolled back because it has been marked as rollback-only"这个异常字面意思是"事务回滚了,因为它被标记了必须回滚",最开始完全不懂事务的嵌套,每次出现这个错误都想知道为什么,但是总是不能重现,后面反复折腾终于弄明白了怎么回事。之前不能重现的一个重要原因是:同一个类,内部方法调用不走代理,spring基...
MySQL(三)利用binlog日志恢复数据 1.开启binlog安装了mysql后,binlog默认是关闭的show variables like '%log_bin%'vim /etc/mysql/my.cnf 添加[mysqld]log-bin=mysql-binserver-id=1添加完后重启 sudo service mysql restart重启完成后在 /var/lib/mysql/...
Git(二) merge squash rebase 创建如上图所示的测试环境,创建master_tag和branchA_tag是为了方便反复测试1. mergegit checkout mastergit merge branchA显然 newFile1,newFile2两个文件存在冲突,解决冲突,再次提交后,提交历史如下:git log查看提交记录合并分支后,提交记录是按照时间先后顺序排列的,bran...
MySQL(二)事务隔离级别 创建测试数据SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for tb_student-- ----------------------------DROP TABLE IF EXISTS `tb_student`;CREATE TABLE `tb_student` ( ...
MySQL(一)共享锁 排它锁 意向锁 记录锁 间隙锁 1.共享锁和排它锁共享锁(shared lock): 又叫读锁,一个事务获取了一行的共享锁后,其它事务可以再获取这一行的共享锁,不能获取这行的排它锁加锁: select * from tb_student where id = 1 lock in share mode释放: commit / rollback排它锁(excusive lock): 又叫写锁,一个...
动态代理和Spring Aop 1.动态代理在静态代理中,每个被代理的类都需要单独定义一个代理类,当业务庞大时,代理类的代码也会很庞大,造成重复代码很多,不好扩展和维护。相对于静态代理而言,动态代理可以将代理类的代码集中起来,让同一个类的不同方法,不同类的方法汇集在一起,方便对一些业务逻辑进行集中处理。例如:https://www.zhihu.com/question/20794107/answer/75164285...
Git(一)操作总结 cd ~/桌面/ 切到家目录的桌面文件夹下mkdir test_project 创建一个test_project的空文件夹cd test_project 切到test_project目录下git init 将当前目录初始化为一个git仓库ll 查看当前test_project下目录下的文件ll .g...
activiti6.0(二)节点处理人 1. 候选人和处理人候选人:candidateUser 处理人,指派人:assignee一个task可以有多个候选人,但是只能有一个处理人activiti6.0的数据库表结构中 ,identityLink表保存用户和task之间一对多的候选关系。处理人assignee直接是task表中的一个字段通常情况下,系统根据流程的定义,自动为一个task指定候选人。比如...
activiti6.0(一)环境搭建 现在所在的项目中用到了activiti工作流框架,之前一直在已经搭建好的流程中修修补补,所以没有对它做更深入的了解,不清楚它的原来和具体用法,后面由于工作需要才开始深入学习activiti框架。下面介绍在springboot中搭建activiti6.0环境一 官方案例(一)下载首先需要有一个画模型的地方,eclipse和idea都可以安装activiti画图的插件,我平时工作和学...
mybatis(二) 查询流程 本文在spring和mybatis整合的环境下,使用mapper接口查询,以如下方法为入口探究mybatis整个查询流程Student studentSelect = new Student();studentSelect.setStudentId(new Long(1));List<Student> students = studentMapper.selectWithCo...
mybatis(一) sqlSessionFactory和sqlSession的创建 最近想深入学习一下mybatis,想通过看mybatis的源码,了解mybatis的整个工作流程,熟悉mybatis的各种细节。使用mybatis的方式不同,sqlSessionFactory的创建方法也不同,具体可以看SqlSessionFactoryBuilder的源代码,里面有很多重载的build方法。本文是在SpringBoot环境下,基于mapper接口使用mybatis,在启动项目...
JavaMail发送邮件 添加maven依赖<dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.7</version></dependency>利用JavaMa
maven多环境配置 在实际开发过程中通常有多个环境,比如本地环境(local),开发环境(dev),测试环境(uat),生产环境(prod)不同环境的配置可能不同,比如数据库的配置,redis,activeMQ的配置,当和其它平台对接的时候,一般不同的环境也有不同的接口。在代码中需要用到这些配置信息,有时候还需要用这些配置信息做逻辑判断,比如系统涉及到支付的时候,开发和测试环境只需要支付0.01即可,走一个支付流...