一个 maven 插件打包问题的排查
最近研究 sofa-ark 的插件机制时,发现当执行完 maven clean install -DskipTests
时,打在 target 目录下的 xxx.jar
与安装到本地仓库的 xxx.jar
大小不一致。
最近研究 sofa-ark 的插件机制时,发现当执行完 maven clean install -DskipTests
时,打在 target 目录下的 xxx.jar
与安装到本地仓库的 xxx.jar
大小不一致。
在 JAVA 语言这个圈子里面摸爬滚打,除了对于语言层面和框架层面的学习之外,有一些东西它一直存在,但是确没有对它们有足够的重视,因为都觉得它是理所当然,比如 JAR 是个什么?
提到 JAR,最先可能想到的就是依赖,比如 fastjson.jar ,它可以作为依赖在项目中来引用,但是不能通过 java -jar 来执行,这种就是非可执行的 JAR。另外一种,比如我们项目打包之后生成的 JAR (当然也可能是 war),我们可以通过 java -jar 来运行程序,我们把它称之为可执行的 JAR。
近期的一个项目,需要使用 MySQL 5.7,但是甲方所提供的机器是不能访问外网环境的,所以只能通过离线安装的方式来搞,这里大概记录一下,备忘。
选择 Linux - Generic
-> Compressed TAR Archive:(mysql-5.7.18-linux-glibc2.12-x86_64.tar.gz)
,版本按需下载即可;下面是具体的安装过程。
目前 Curator 有 2.x.x 和 3.x.x 两个系列的版本,支持不同版本的 Zookeeper。其中 Curator 2.x.x 兼容 Zookeeper的 3.4.x 和 3.5.x。而 Curator 3.x.x 只兼容 Zookeeper 3.5.x。
Curator 2.x.x - compatible with both ZooKeeper 3.4.x and ZooKeeper 3.5.x
Curator 3.x.x - compatible only with ZooKeeper 3.5.x and includes support for new
CAS的全称是Compare And Swap ,即比较交换。CAS 中一般会设计到3个参数:
当且仅当预期值 A 和内存值 V 相同时,将内存值V修改为 B,否则什么都不做。
这里关于 CPU 指令对于 CAS 的支持不深入研究,有兴趣的可以自行了解。
OPTION | 解释 |
---|---|
[-a file] | 如果file存在则为真 ,也可以表示为 and: 条件与 if [ -z “condition1” -a -z “condition2” ] |
[-b file] | 如果file存在且是一个块特殊文件则为真 |
[-c file] | 如果file存在且是一个字特殊文件则为真 |
[-d file] | 如果 file 文件存在且是一个目录则为真,d前的!是逻辑非 #表示目录不存在,则执行后面的 then 操作 if [ ! -d lcd_path/par_date ] |
[-e file] | 如果 file文件存在则为真 |
[-f file] | 如果 file 存在且是一个普通文件则为真 |
[-g file] | 如果 file 存在且已经设置了SGID则为真(SUID 是 Set User ID, SGID 是 Set Group ID的意思) |
[-h file] | 如果 file 存在且是一个符号连接则为真 |
[-k file] | 如果 file 存在且已经设置粘制位则为真 |
[-p file] | 如果file存在且是一个名字管道(F如果O)则为真。管道是linux里面进程间通信的一种方式, 其他的还有像信号(signal)、信号量、消息队列、共享内存、套接字(socket)等 |
[-r file] | 如果file存在且是可读的则为真 |
[-s file] | 如果file存在且大小不为0则为真 |
[-t FD] | 如果文件描述符FD打开且指向一个终端则为真 |
[-u file] | 如果file存在且设置了SUID(set userID)则为真 |
[-w file | 如果file存在且是可写的则为真 |
[-x file] | 如果file存在且是可执行的则为真 |
[-O file] | 如果file存在且属有效用户ID则为真 |
[-G file] | 如果file存在且属有效用户组则为真 |
[-L file] | 如果file存在且是一个符号连接则为真 |
[-N file] | 如果file存在and has been mod如果ied since it was last read则为真 |
[-S file] | 如果file存在且是一个套接字则为真 |
[-o optionname] | 如果shell选项“optionname”开启则为真 |
[-z string] | “string”的长度为零则为真 |
[-n string] or [string] | “string”的长度为非零non-zero则为真 |
ZooKeeper 是一个分布式的、开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现。它是集群的管理者,监视着集群中各个节点的状态,根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
Curator 是 Netflix 公司开源的一套 Zookeeper 客户端框架,解决了很多 Zookeeper 客户端非常底层的细节开发工作,包括连接重连、反复注册 Watcher 和 NodeExistsException 异常等等。
在这篇文章中聊一聊 Spring 中的扩展机制(一)中对Spring
中的事件机制进行了分析。那么对于 SpringBoot
来说,它在 Spring
的基础上又做了哪些拓展呢?本篇将来聊一聊 SpringBoot
中的事件。
近期在做 SOFA 与 SpringCloud 的集成,希望通过一系列的 DEMO 工程去帮助大家更好的使用 SOFA 和 SpringCloud;同时也希望大家一起来参与共建和 star。
GitHub传送门:spring-cloud-sofastack-samples
本系列基于Spring Cloud **Finchley SR2 & SOFABoot 3.0.0
Spring Cloud 为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、leader选举、分布式session、集群状态)。分布式系统的协调导致了样板模式, 使用 Spring Cloud 开发人员可以快速地支持实现这些模式的服务和应用程序。它们可以在任何分布式环境中很好地工作,包括开发人员自己的笔记本电脑,裸机数据中心,以及Cloud Foundry等托管平台。