shell 实现进度条
实现拷大文件的时候,如果没有一个进度条,也不知道文件拷贝情况,所以搞一个进度条,时实查看进度。
12345678910#!/bin/bashmark=''for ((ratio=0;${ratio}<=100;ratio+=5))do sleep 0.2 printf "progress:[%-40s]%d%%\r" "${mark}" "${ratio}" mark="##${mark}"doneecho
springboot中的@ConfigurationProperties注解的使用
ConfigurationProperties 注解的使用将配置文件中的配置,以属性的形式自动注入到 实体中。要特别说明的一个注属性ignoreUnknownFields = false这个超好用,自动检查配置文件中的属性是否存在,不存在则在启动时就报错。locations 这个注解属性,不知道为什么不可以使用。用来指定其他配置文件名。
1.application.properties 配置
12345#自动配置设置service.properties.name=my-test-nameservice.properties.ip=192.168.1.1service.user=kayleservice.port=8080
2.对应实体Properties 就是对应的配置文件中的 properties,注意也要给 get/set也就是说,配置文件中的前缀是什么, prefix 中就使用什么。成员变量就是对应的配置文件的第二级属性名。
12345678910111213141516171819202122232425262728293031323 ...
springboot @Import注解
简述Import注解在4.2之前只支持导入配置类在4.2,@Import注解支持导入普通的java类,并将其声明成一个bean。在 spring boot 的配置类中的使用比较多。
测试@Import 的自动导入功能
1.一个配置类
123456@Configuration@Import(ImportDemo.class)public class ImportConfig {}
2.一个普通没有加任何注解的类
12345public class ImportDemo { public void doSomething () { System.out.println("ImportDemo.doSomething()"); }}
3.测试类
12345678910public class TestMain { public static void main(String[] args) { AnnotationConfigApplica ...
springboot03 非parent方式搭建
简述项目中通过maven集成 springboot 有两种方式:
继承parent 方式
非继承 parent 方式
上一篇文章已经介绍过通过直接继承springboot项目座标的方式继承,这次说明如何通过非直接继承的方式构建springboot项目。
非parent 方式推荐使用这种方式。这样就可以使子项目使用 parent 标签了。
这种方式也比较直观,这里需要两个项目进行搭建测试
parent 项目,需要被继承
childen 项目,即需要继承 parent 项目,又需要springboot项目座标构建项目。
parent 项目配置添加一个 spring boot 依赖,dependencyManagement 中的 springboot 就是核心,是springboot 官方提供的依赖,它是一组springboot的完整依赖座标,根据需要进行引用。type 是 pom,scope 是 import,这种类型的 dependency 只能在 dependencyManagement 标签中声明。
12345678910111213141516171819202122232 ...
shell 保持gc.log文件个数
摘要使用JDK8的老项目,开启了gc log用于排查问题,但是每次重启总是会覆盖之前的gc log,所以写了一个脚本保存gc log。如果是JDK11直接使用xlog,就可以配置很详细的日志策略。能起到一个什么效果,就是控制文件的个数。
脚本说明:maxFile: 允许最大文件个数currentDirCount: 当前目录包含多少日志文件oldFileSize: 需要清理的老文件数量ls -1: 升序排序,排时间较早的文件排列
123456789101112131415161718192021222324252627#!/bin/bashmaxFile=5gcLogDir=logs/gc_logs/echo 'backup gc.log'if [ ! -d "$gcLogDir" ];then mkdir -p 'logs/gc_logs'fiif [ -f 'gc.log' ]; then dateformat=`date "+%Y-%m-%d_%H-%M-%S"` tar -c ...
springboot02-搭建parent方式
spring boot 的搭建相当简单,简化了大量的xml配置,只需要关键配置即可开箱使用。
搭建什么是 parent 方式?使用 pom.xml 中的 parent 标签。官方示例中,都是让我们继承一个 spring 的 spring-boot-starter-parent 这个parent就是:
123456789101112<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.1.RELEASE</version></parent><dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring ...
竞态条件 racing condition
前言多个线程读时,线程是安全的。当两个线程竞争同一资源时,如果对资源的访问顺序敏感,就称存在竞态条件。我的理解,竞态条件就是一种情况。
代码实现假设有 A、B 两个线程,调用 add 方法分别传入 1 和 2,理想条件下结果应该是 3。现在出现了不安全的情况,有可能结果不对。add方法就是临界区count 就是同一资源。
12345678public class Counter { protected long count = 0; // 临界区 public void add(long value) { // 被竞争的资源 this.count = this.count + value; } }
其实这样一看,说白了,就是要严格控制线程的执行顺序,假设是按A、B的顺序执行来讲,B依赖于A先执行完成,B再执行结果才是正确的,中间不能出现问题,否则如果,中间交叉执行,就有可能发生了竞态条件。
总结如果某个资源会被多个线程竞争,要保证安全性的情况下,可以加上一些必要的同步措施 ...
springboot01 概述
概述Spring Boot 是 Spring 社区发布的一个开源项目,旨在帮助开发者快速并且更简单的构建项目。大多数Spring Boot项目只需要很少的配置文件。
Spring Boot特性
创建独立的Spring项目
直接嵌入Tomcat、Jetty或Undertow(不需要部署WAR文件)
提供有自动的 "启动器 "依赖,以简化你的构建配置
提供了一系列大型项目中常见的非功能性特性,如安全、指标,健康检测、外部配置等
完全没有代码生成和xml配置文件
Spring Boot运行环境最低 Java6 官方推荐 Java8
内置 Servlet 容器Tomcat 7 8Jetty 8 9
Spring Boot 支持哪些应用普通 Java 项目和 web 项目
vim-调用awk对列求和
单列求和调用awk进行求和,下面这段可以看做是:
%: 表示全文
!: 感叹号是执行命令
awk: 最简单的awk操作
平时用awk也要注意,可以不写BEGIN,但是要写END。
1:%!awk '{print; sum+=$1}END{print sum}'
jstat统计JVM信息
重要参数是要看 FGC 执行了多少次。
JVM Statistics Monitoring Tool用于监控虚拟机各种运行状态信息的命令行工具,查看虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据。
统计垃圾回收堆的行为
jstat -gc pid
显示格式:
列说明
123456789101112131415S0C: survivor0区的总容量S1C: survivor1区的总容量S0U: survivor0区已使用的容量S1U: survivor1区已使用的容量EC: Eden区的总容量EU: Eden区已使用的容量OC: Old区的总容量OU: Old区已使用的容量PC: 当前perm的容量 (KB)PU: perm的使用 (KB)YGC: 新生代垃圾回收次数YGCT: 新生代垃圾回收时间FGC: 老年代垃圾回收次数FGCT: 老年代垃圾回收时间GCT: 垃圾回收总消耗时间
单位时间内显示次数
jstat -gc pid 秒 次数这个命令意思就是每隔2000ms输出gc情况,一共输出20次。