自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 资源 (2)
  • 收藏
  • 关注

原创 Mysql事务隔离级别测试

一、概念说明以下几个概念是事务隔离级别要实际解决的问题,所以需要搞清楚都是什么意思。脏读脏读指的是读到了其他事务未提交的数据,未提交意味着这些数据可能会回滚,也就是可能最终不会存到数据库中,也就是不存在的数据。读到了并一定最终存在的数据,这就是脏读。可重复读可重复读指的是在一个事务内,最开始读到的数据和事务结束前的任意时刻读到的同一批数据都是一致的。通常针对数据更新(UPDATE)操作。不可重复读对比可重复读,不可重复读指的是在同一事务内,不同的时刻读到的同一批数据可能是不一样的

2022-01-29 11:20:16 1569

原创 @Transactional传播属性

required有则有无则创建(默认)说明: 如果当前已经存在事务,那么加入该事务,如果不存在事务,创建一个事务,这是默认的传播属性值。@Servicepublic class RequireMethodService { @Autowired UserService userService; @Transactional(propagation = Propagation.REQUIRED) public void methodSon1() { User user = new

2022-01-25 15:50:14 2837 1

原创 @Transactional 失效案例

1、同一个类中调用因为它们发生了自身调用,就调该类自己的方法,而没有经过 Spring 的代理类,默认只有在外部调用事务才会生效。错误案例:/** * * 在同一个类中调用 * */@RestControllerpublic class InSameClass { @Autowired UserService userService; @GetMapping("methodA") public void methodA() { methodB();

2022-01-25 12:04:25 245

原创 Kafka安装

一、前提条件1、部署zookeeper,请参照链接。2、部署kafka集群搭建需要服务器至少3台,奇数台。192.168.1.21 9092 192.168.1.22 9092 192.168.1.23 9092

2022-01-14 16:50:54 145

原创 zookeeper集群安装

1、Apache官网下载zookeeper安装包Index of /dist/zookeeperhttp://archive.apache.org/dist/zookeeper/这里说明一下,使用新版本在启动时会报错Starting zookeeper … FAILED TO START原因:版本:3.6.1,实际上只要 >= 3.5.5 版本都会出现这种问题。# 上传安装包cd /opt# 解压压缩包tar -zxvf zookeeper-3.4.14.tar.gz2、修

2022-01-14 10:42:17 86

原创 Docker mysql主从同步

1、整体环境此次使用虚拟机,每台虚拟机上安装docker,每个docker又安装了mysql5.7宿主机系统centos7master: 192.168.0.103:3306slave: 192.168.0.105:33062、安装mysqldocker run --dns 8.8.8.8 --dns 8.8.4.4 --name mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123 -d mysql:5.7注意点:mysql...

2021-11-10 13:56:50 1817

原创 Tx-manager配置走过的经验--不支持redis的sentinel模式

前提:redis集群部署,通过sentinel哨兵来监控。redis、sentinel共三台服务redis1 192.168.0.222 6379redis2 192.168.0.223 6379redis3 192.168.0.224 6379sentinel1192.168.0.222 26379sentinel2192.168.0.223 26379sentinel3 192.168.0.224 26379tx-manager-4.1...

2021-08-06 17:54:08 753

原创 Tx-manager配置走过的经验--服务超时

最过遇到一个对我来说很懵逼的问题,让我紧急解决。现象:一个流程审批节点提交后,不能正常流转到下一节点。调查:通过日志没查到任何异常,从很长的LOG内仔细的看到一句话,这句话真的起了很大作用。lcn start transaction over, res -> groupId:xxxxx and state is rollback.既然是事务引起的回滚,那我第一反应是肯定有地方报错,但还没有异常,难道是哪位大侠的代码捕获异常时不抛出,还打印这么友好的log?花费半天找代码,心想大

2021-08-06 16:21:47 836

原创 挂载nfs的客户端目录只读文件系统

一、现象:最近刚部署了nfs服务器,在客户端也成功挂载,但客户端的挂载目录却成了只读。二、解决办法:本人试了很方案没有解决掉,也花费了很大工夫,下面整理以下相关的解决地方。1、先卸载挂载目录,查看本地读写是否正常查看挂载中的目录mount卸载挂载umount /home/document保证本地目录的权限可有读写。2、查看nfs服务当前状态在nfs服务端执行命令service nfs status能看到rpc.mountd、nfsd及rpc.rquotad

2021-07-27 15:51:02 3965 1

原创 分布式事务(2)--2PC和3PC原理

首先按照下图来学习。事务是什么、为什么需要这里就不多啰嗦了。分布式事物基本理论:基本遵循CPA理论,采用柔性事物特征,软状态或者最终一致性特点保证分布式事物一致性问题。分布式事物常见解决方案:2PC两段提交协议3PC三段提交协议(弥补两端提交协议缺点)TCC或者GTS(阿里)消息中间件最终一致性使用LCN解决分布式事物,理念“LCN并不生产事务,LCN只是本地事务的搬运工”。一、两阶段提交(2PC)两阶段提交又称2PC,2PC是一个非常经典的强一致、中心化的原子提交协议。这里所说

2021-07-16 14:58:04 123

原创 分布式事务(1)--CAP和BASE理论

先说明一下:我参考、借鉴了很多相关文章,就是为了让更多人简单的明白知识,如有复用希望大家理解。理解CAPCAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),下面是阮一峰老师的解释,真的很易懂,来一个一个看看。一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)举例来说,某条记录是 v0,用户向 G1 发起一个写

2021-07-16 14:57:07 219

原创 服务消费端与注册中心交互模型是 push 还是 pull

今天看了小富老师发的文章Nacos配置中心交互模型是 push 还是 pull ?,文章中描述Nacos在做配置中心的时候,配置数据的交互模式是服务端推过来还是客户端主动拉的?突然间觉得对注册中心服务是不是都应该记录下呢?Nacos那肯定时客户端主动拉的!而且是长轮询,什么时长轮询,没听过吧,好好看下面。推与拉模型客户端与配置中心的数据交互方式其实无非就两种,要么推push,要么拉pull。推模型客户端与服务端建立TCP长连接,当服务端配置数据有变动,立刻通过建立的长连接将数据推送给客户端。优

2021-07-09 11:02:32 865 1

原创 10、Docker Swarm

1、 理解swarm大家可以参照下图理解一下,之前,我们执行docker命令由对应的机器去执行,而现在多台机器组成swarm后,将多台docker服务器组成 了swarm,最后命令由swarm manager去执行。这里再解释下:swarm 集群由管理节点(manager)和工作节点(work node)构成。swarm mananger:负责整个集群的管理工作包括集群配置、服务管理等所有跟集群有关的工作。work node:即图中的 available node,主要负责运行相应的服务来执行任

2021-06-29 09:00:18 147

原创 9、Docker Compose

前面学习过了Dockerfile文件,使用 docker build、docker run 等命令操作容器。今天学习了Docker Compose,理解上它是管理容器的工具。为什么这么说呢,首先Docker Compose 将所管理的容器分为三层,分别是工程(project)、服务(service)、容器(container)。Docker Compose 运行目录下的所有文件(docker-compose.yml)组成一个工程,一个工程包含多个服务,一个服务可包括多个容器实例。实例这里简单对同一

2021-06-23 17:28:56 96

转载 8、dockerFile解析

Dockerfile作用官网上说Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。再说的明白点就是配置依赖下载镜像、配置环境变量和执行脚本的封装。构建三步骤docker file:就是描述需要哪些依赖、哪些环境变量、要执行哪些操作等内容。docker 镜像 :就是通过docker build命令,根据Dockerfile的内容构建镜像。docker 容器:将打包完的镜像作为image交给docker运行。常用指令FROM 指定父镜.

2021-06-23 10:28:55 116

原创 6、Docker 容器数据卷(挂载)

  docker 容器数据卷是容器在运行过程中持久化数据的一种方式,卷是目录或文件,存在于一个或多个容器中,由docker 挂载到容器,但不属于联合文件系统,因此能够绕过Union File System 提供一些用于持续存储或共享数据的特性;卷的设计目的就是数据持久化,完全独立于容器的生命周期,因此docker不会在容器删除时,删除其挂载的数据卷。特点:数据卷可在容器之间共享或重用数据。 卷中的更改可以直接生效。 数据卷中的更改,不会包含在镜像中的更新。 数据卷的生命周期一直持续到没有容器.

2021-06-16 14:49:57 486

原创 7、docker commit

把现有容器打包成镜像,供docker直接运行。语法docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]OPTIONS说明: -a :提交的镜像作者; -c :使用Dockerfile指令来创建镜像; -m :提交时的说明文字; -p :在commit时,将容器暂停。 实例查看现有容器[root@localhost ~]# docker psCONTAINER ID IMAGE .

2021-06-16 11:34:55 142

转载 1、容器 VS 虚拟机

两者对比图传统虚拟机技术(VMware)是虚拟出一套硬件后,在其上安装、运行一个完整操作系统,在该系统上再运行所需应用进程;一个虚拟机就像是一个主机。而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。容器是一个应用层抽象,用于将代码和依赖资源打包在一起。 多个容器可以在同一台机器上运行,共享操作系统内核,但各自作为独立的进程在用户空间中运行 。与虚拟机相比, 容器占用的空间较少(容器镜像大小通常只有几十兆),瞬间就能完成启动

2021-06-16 11:06:45 750

原创 3、docker run常见问题

接上一篇docker run

2021-06-16 11:03:16 623

原创 2、docker run

docker run :创建一个新的容器并运行一个命令语法docker run [OPTIONS] IMAGE [COMMAND] [ARG...]OPTIONS说明: -a stdin:指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项; -d:后台运行容器,并返回容器ID; -i:以交互模式运行容器,通常与 -t 同时使用; -P:随机端口映射,容器内部端口随机映射到主机的端口 -p:指定端口映射,格式为:主...

2021-06-16 11:02:34 100

原创 5、docker 容器的IP隔离

我们同一模板运行两次,分别是mytomcat、mytomcat2[root@localhost ~]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESbfe0ad01bbea tomcat:latest "catalina.sh run" 10 s.

2021-06-16 11:01:50 291

转载 4、Docker 上安装Tomcat 404问题

首先我是在云服务器上(Centos系统)安装的Docker,我们需要在https://hub.docker.com/ 上查找Tomcat镜像。docker pull tomcat拉取完官方的Tomcat的镜像后,我们可以在本地镜像列表里查到 REPOSITORY 为 tomcat 的镜像,[root@localhost ~]# docker images|grep tomcattomcat latest c43a65faae57 4

2021-06-15 15:53:36 84

转载 分布式定时任务

目录1.xxl-job2.elastic-job1.xxl-jobxxl-job 是大众点评(许雪里)开发的一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。xxl-job 框架对 quartz 进行了扩展,使用 mysql 数据库存储数据,并且内置jetty作为 RPC服务调用。主要特点如下:有界面维护定时任务和触发规则,非常容易管理。能动态启动或停止任务支持弹性扩容缩容支持任务失败报警支持动

2021-06-10 14:26:11 1120

转载 JAVA常用定时任务

定时任务的选择还是挺多的,在不用的业务场景下要用不同的定时任务。这个还是根据业务来选择,抛开一切业务谈技术还是纸上谈兵。一. linux自带的定时任务crontab为了减小对线上环境的影响,我们一般会选择在凌晨1-2点 ,趁用户量少的时候,执行程序。这种情况用哪种定时任务更合适呢?答案是: linux 系统的 crontab 。0 2 * * * /usr/local/java/jdk1.8/bin/java -jar /data/app/tool.jar > /logs/too

2021-06-10 13:41:49 367

转载 缓存与数据库数据一致性问题

目录谈谈一致性三个经典的缓存模式Cache-Aside读流程Cache-Aside 写流程操作缓存的时候,到底是删除缓存呢,还是更新缓存?双写的情况下,先操作数据库还是先操作缓存?3种方案保证数据库与缓存的一致性缓存延时双删删除缓存重试机制谈谈一致性一致性就是数据保持一致,在分布式系统中,可以理解为多个节点中数据的值是一致的。 强一致性:这种一致性级别是最符合用户直觉的,它要求系统写入什么,读出来的也会是什么,用户体验好,但实现起来往往对系统的性能影响大.

2021-06-09 16:08:40 107

转载 location匹配规则

location语法location [=|~|~*|^~] /uri/ { … }= 开头表示精确匹配^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。~ 开头表示区分大小写的正则匹配~* 开头表示不区分大小写的正则匹配!~和!~*分别为区分大小写不匹配及不区分大小写不匹配 的正则/ 通用匹配,任何请求都会匹配到。1、精准.

2021-05-26 15:25:06 332

转载 location规则与proxy_pass关系

启动nginx时会报以下错误,原因是在给nginx配置正则表达式的时候proxy_pass是不可以有uri的。nginx: [emerg] "proxy_pass" cannot have URI part in location given by regular expression, or inside named location, or inside "if" statement, or insid我的nginx配置如下:location~*\.(jsp|do)$ {...

2021-05-26 13:57:22 560

转载 Nginx配置location规则

nginx location proxy_pass 后面的url 加与不加/的区别在nginx中配置proxy_pass时,当在后面的url加上了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走;如果没有/,则会把匹配的路径部分也给代理走。首先是location进行的是模糊匹配1)没有“/”时,location /abc/def可以匹配/abc/defghi请求,也可以匹配/abc/def/ghi等2)而有“/”时,location /abc/def/不能匹

2021-05-26 10:07:34 370

转载 Keepalived+Nginx 高可用集群(双主模式)

Keepalived+Nginx 高可用集群(双主模式)1.集群架构图:说明:还是按照上面的环境继续做实验,只是修改LB节点上面的keepalived服务的配置文件即可。此时LB-01节点即为Keepalived的主节点也为备节点,LB-02节点同样即为Keepalived的主节点也为备节点。LB-01节点默认的主节点VIP(192.168.1.110),LB-02节点默认的主节点VIP(192.168.1.210)1)实验环境准备(此处都是使用的centos7系统)# cat /et

2021-05-24 17:47:46 2407

转载 Keepalived+Nginx 高可用集群(主从模式)

Keepalived+Nginx 高可用集群(主从模式)1.集群架构图说明:Keepalived机器同样是nginx负载均衡器。1)实验环境准备(此处都是使用的centos7系统)# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core)在所有节点上面进行配置#关闭防火墙systemctl stop firewalld #关闭selinux,重启生效sed -i 's/^SELINU

2021-05-24 17:37:11 225

转载 Oracle用户密码过期策略

用户密码过期策略1.查询数据库用户何时过期登陆数据库PL/SQL工具,输入以下sql语句:select username,expiry_date from dba_users where username in ('TFDS','SYSTEM');由以上sql查询得到system用户到2019/7/12过期,tfds用户到2020/1/31过期。2.查询oracle数据库的密码过期策略查询用户的密码策略使用的哪个参数文件select username,profile..

2021-05-24 14:55:09 414

转载 oracle数据库密码复杂度配置

1.密码复杂度配置--登录oracle服务器$ su - oracle$ sqlplus /nologsql> conn / as sysdba--修改resource_limit参数 alter system set resource_limit = true;-- 设置密码复杂度@ $ORACLE_HOME/rdbms/admin/utlpwdmg.sql → [verify_function|verify_function_11G]--修改参数 a

2021-05-24 14:41:07 3915

转载 (转)Linux下 Redis集群搭建详解(主从+哨兵)

redis开始安装 下载所需要的redis安装包redis-3.2.9.tar.gz 将redis-3.2.9.tar.gz上传 安装gcc yum -y install gcc cd /usr/local/software 解压redis包 tar -zxvf /usr/local/software/redis-3.2.11.tar.gz -C /usr/local/ 进入解压后的redis cd /usr/local/redis-3.2.9/ 编译 ma.

2021-05-24 13:32:16 208

转载 JS使用POST方式提交请求的方法

functionpost(url,params){vartemp=document.createElement("form");temp.action=url;temp.method="post";temp.style.display="none";for(varxinparams){varopt=document.createElement("input");opt.name=...

2021-01-06 14:10:58 1116

转载 实现重试最优雅的姿势

实现重试最优雅的姿势了!使用场景在日常开发中,我们经常会遇到需要调用外部服务和接口的场景。外部服务对于调用者来说一般都是不可靠的,尤其是在网络环境比较差的情况下,网络抖动很容易导致请求超时等异常情况,这时候就需要使用失败重试策略重新调用 API 接口来获取。代码示例以下会简单列出 guava-retrying 的使用方式:出现异常则执行重试,每次重试失败,打印日志,记录重试次数和异常原因;import java.util.concurrent.ExecutionException;

2021-01-05 10:06:11 312

转载 垃圾回收的执行流程

java的垃圾回收分为三个区域新生代 老年代 永久代Eden区:当一个实例被创建了,首先会被存储在堆内存年轻代的 Eden 区中。Survivor 区(S0 和 S1):作为年轻代 GC(Minor GC)周期的一部分,存活的对象(仍然被引用的)从 Eden 区被移动到 Survivor 区的 S0 中。类似的,垃圾回收器会扫描 S0 然后将存活的实例移动到 S1 中。老年代: 老年代(Old o...

2018-03-26 16:49:07 3297

转载 函数式接口

函数式接口其实本质上还是一个接口,但是它是一种特殊的接口:SAM类型的接口(Single Abstract Method)。定义了这种类型的接口,使得以其为参数的方法,可以在调用时,使用一个lambda表达式作为参数。从另一个方面说,一旦我们调用某方法,可以传入lambda表达式作为参数,则这个方法的参数类型,必定是一个函数式的接口,这个类型必定会使用@FunctionalInterface进行修...

2018-03-26 15:15:11 183

转载 方法引用

    方法引用分为4类,常用的是前三种。方法引用也受到访问控制权限的限制,可以通过在引用位置是否能够调用被引用方法来判断。具体分类信息如下:    1、引用静态方法     ContainingClass::staticMethodName     例子: String::valueOf,对应的Lambda:(s) -> String.valueOf(s)     比较容易理解,和静态方法...

2018-03-26 15:15:01 1322

原创 openstack请求的url

正在做一个类似dashboard的二次开发,我们使用openstack4j作为开发API,首先描述一下环境部属,假如工程部属服务器192.168.10.1,openstack服务器192.168.30.1,因为192.168.10.1不能PING通192.168.30.1,所以中间加了一层代理映射ip是192.168.20.1;工程代码里openstack认证的url应该写

2016-11-16 13:30:05 1648 1

原创 虚拟机个数与物理主机的硬件

做openstack可能都会有个疑问,一台物理服务器能创建多少个云主机?运行多少个云主机最合适?我也找了好多资料,总结一下。创建云主机时,对物理机d

2016-10-28 13:12:41 4450

JXLS导入导出示例

1、利用JXLS导入导出。 2、包含导入导出共通方法; 3、包含示例调用方法;

2021-01-08

本地/FTP上传下载

目标:实现文件上传/下载功能,支持本地/FTP上传下载。 方法:直接调用入口类Upload_Action.java即可。

2021-01-08

空空如也

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

TA关注的人

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