mirror of
https://github.com/Estom/notes.git
synced 2026-02-03 02:23:31 +08:00
spring-jdbc shell-find&xargs
This commit is contained in:
@@ -12,10 +12,27 @@ find
|
||||
```shell
|
||||
find(选项)(参数)
|
||||
```
|
||||
选项内容
|
||||
* 名称 -name
|
||||
* 类型 -type f/d
|
||||
* 时间 -mmin/mtime +-
|
||||
* 空间 -size
|
||||
* 权限 -perm
|
||||
* 用户 -user/group
|
||||
|
||||
|
||||
### 选项
|
||||
|
||||
```shell
|
||||
名称
|
||||
-name<范本样式>:指定字符串作为寻找文件或目录的范本样式;
|
||||
-regex<范本样式>:指定字符串作为寻找文件或目录的范本样式;
|
||||
|
||||
类型
|
||||
-type<文件类型>:只寻找符合指定的文件类型的文件;
|
||||
|
||||
|
||||
时间相关
|
||||
-amin<分钟>:查找在指定时间曾被存取过的文件或目录,单位以分钟计算;
|
||||
-anewer<参考文件或目录>:查找其存取时间较指定文件或目录的存取时间更接近现在的文件或目录;
|
||||
-atime<24小时数>:查找在指定时间曾被存取过的文件或目录,单位以24小时计算;
|
||||
@@ -23,9 +40,33 @@ find(选项)(参数)
|
||||
-cnewer<参考文件或目录>查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;
|
||||
-ctime<24小时数>:查找在指定时间之时被更改的文件或目录,单位以24小时计算;
|
||||
-daystart:从本日开始计算时间;
|
||||
-depth:从指定目录下最深层的子目录开始查找;
|
||||
-mmin<分钟>:查找在指定时间曾被更改过的文件或目录,单位以分钟计算;
|
||||
-mtime<24小时数>:查找在指定时间曾被更改过的文件或目录,单位以24小时计算;
|
||||
|
||||
|
||||
空间
|
||||
-empty:寻找文件大小为0 Byte的文件,或目录下没有任何子目录或文件的空目录;
|
||||
-size<文件大小>:查找符合指定的文件大小的文件;
|
||||
|
||||
|
||||
用户
|
||||
-gid<群组识别码>:查找符合指定之群组识别码的文件或目录;
|
||||
-group<群组名称>:查找符合指定之群组名称的文件或目录;
|
||||
-uid<用户识别码>:查找符合指定的用户识别码的文件或目录;
|
||||
-user<拥有者名称>:查找符和指定的拥有者名称的文件或目录;
|
||||
|
||||
深度
|
||||
-maxdepth<目录层级>:设置最大目录层级;
|
||||
-mindepth<目录层级>:设置最小目录层级;
|
||||
-depth:从指定目录下最深层的子目录开始查找;
|
||||
|
||||
|
||||
|
||||
针对每一个结果执行命令
|
||||
-exec<执行指令>:假设find指令的回传值为True,就执行该指令;
|
||||
|xargs 通过管道,在每一个返回True的结果后执行命令。
|
||||
| 针对所有结果同时执行命令
|
||||
|
||||
-false:将find指令的回传值皆设为False;
|
||||
-fls<列表文件>:此参数的效果和指定“-ls”参数类似,但会把结果保存为指定的列表文件;
|
||||
-follow:排除符号连接;
|
||||
@@ -33,8 +74,6 @@ find(选项)(参数)
|
||||
-fprint0<列表文件>:此参数的效果和指定“-print0”参数类似,但会把结果保存成指定的列表文件;
|
||||
-fprintf<列表文件><输出格式>:此参数的效果和指定“-printf”参数类似,但会把结果保存成指定的列表文件;
|
||||
-fstype<文件系统类型>:只寻找该文件系统类型下的文件或目录;
|
||||
-gid<群组识别码>:查找符合指定之群组识别码的文件或目录;
|
||||
-group<群组名称>:查找符合指定之群组名称的文件或目录;
|
||||
-help或--help:在线帮助;
|
||||
-ilname<范本样式>:此参数的效果和指定“-lname”参数类似,但忽略字符大小写的差别;
|
||||
-iname<范本样式>:此参数的效果和指定“-name”参数类似,但忽略字符大小写的差别;
|
||||
@@ -44,12 +83,7 @@ find(选项)(参数)
|
||||
-links<连接数目>:查找符合指定的硬连接数目的文件或目录;
|
||||
-lname<范本样式>:指定字符串作为寻找符号连接的范本样式;
|
||||
-ls:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出;
|
||||
-maxdepth<目录层级>:设置最大目录层级;
|
||||
-mindepth<目录层级>:设置最小目录层级;
|
||||
-mmin<分钟>:查找在指定时间曾被更改过的文件或目录,单位以分钟计算;
|
||||
-mount:此参数的效果和指定“-xdev”相同;
|
||||
-mtime<24小时数>:查找在指定时间曾被更改过的文件或目录,单位以24小时计算;
|
||||
-name<范本样式>:指定字符串作为寻找文件或目录的范本样式;
|
||||
-newer<参考文件或目录>:查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;
|
||||
-nogroup:找出不属于本地主机群组识别码的文件或目录;
|
||||
-noleaf:不去考虑目录至少需拥有两个硬连接存在;
|
||||
@@ -61,13 +95,11 @@ find(选项)(参数)
|
||||
-print0:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为全部的名称皆在同一行;
|
||||
-printf<输出格式>:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式可以自行指定;
|
||||
-prune:不寻找字符串作为寻找文件或目录的范本样式;
|
||||
-regex<范本样式>:指定字符串作为寻找文件或目录的范本样式;
|
||||
-size<文件大小>:查找符合指定的文件大小的文件;
|
||||
|
||||
-true:将find指令的回传值皆设为True;
|
||||
-type<文件类型>:只寻找符合指定的文件类型的文件;
|
||||
-uid<用户识别码>:查找符合指定的用户识别码的文件或目录;
|
||||
|
||||
-used<日数>:查找文件或目录被更改之后在指定时间曾被存取过的文件或目录,单位以日计算;
|
||||
-user<拥有者名称>:查找符和指定的拥有者名称的文件或目录;
|
||||
|
||||
-version或——version:显示版本信息;
|
||||
-xdev:将范围局限在先行的文件系统中;
|
||||
-xtype<文件类型>:此参数的效果和指定“-type”参数类似,差别在于它针对符号连接检查。
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
> 详情参考
|
||||
> [](../Linux工具命令/awk.md)
|
||||
> [grep命令参考手册](../Linux工具命令/grep.md)
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
> 详情参考
|
||||
> [](../Linux工具命令/awk.md)
|
||||
> [awk参考文档](../Linux工具命令/awk.md)
|
||||
> [awk常用函数](https://www.runoob.com/w3cnote/awk-built-in-functions.html)
|
||||
## 1 awk基本使用
|
||||
|
||||
### 使用格式
|
||||
|
||||
@@ -0,0 +1,118 @@
|
||||
# Data Access
|
||||
|
||||
## 简介
|
||||
### 概述
|
||||
DataAccess模块主要包括
|
||||
* JDBC
|
||||
* ORM
|
||||
* OXM
|
||||
|
||||
JDBCTemplate对JDBC进行封装,很方便的实现对数据库进行操作。
|
||||
|
||||
> 自己开发项目也应该这样做。
|
||||
> 首先进行设计,把接口、实现、属性、方法定义好。遵循从上到下的设计。
|
||||
> 然后进行开发,根据具体的业务逻辑实现方法的内容。遵循从下到上的开发。
|
||||
### 准备工作
|
||||
|
||||
1. 引入相关的jar包
|
||||
|
||||

|
||||
|
||||
2. 数据库连接池
|
||||
|
||||
```xml
|
||||
|
||||
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
|
||||
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
|
||||
<property name="url" value="jdbc:mysql://localhost:3310/user"></property>
|
||||
<property name="username" value="root"></property>
|
||||
<property name="password" value="123456"></property>
|
||||
</bean>
|
||||
```
|
||||
|
||||
3. 配置jdbcTemplate对象,注入dataSource
|
||||
|
||||
```
|
||||
<!--创建jdbctemplate对象-->
|
||||
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
|
||||
<!--注入参数-->
|
||||
<property name="dataSource" ref="dataSource"></property>
|
||||
</bean>
|
||||
```
|
||||
|
||||
|
||||
4. 创建Service和dao。在service注入dao,在dao中注入jdbcTemplate
|
||||
|
||||
```java
|
||||
@Repository
|
||||
public class UserDaoImpl implements UserDao {
|
||||
|
||||
@Autowired
|
||||
private JdbcTemplate jdbcTemplate;
|
||||
|
||||
|
||||
@Override
|
||||
public int addUser(User user) {
|
||||
System.out.println("add 方法执行了");
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public class UserService {
|
||||
@Autowired
|
||||
private UserDao userDao;
|
||||
|
||||
public void addUser(User user){
|
||||
userDao.addUser(user);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
### 编写业务逻辑
|
||||
1. 在dao中进行数据库添加操作。在jdbcTemplate对象里面update方法实现添加操作
|
||||
|
||||
```java
|
||||
@Override
|
||||
public int addUser(User user) {
|
||||
String sql = "insert into user values(?,?,?)";
|
||||
Object[] args = {user.getUserId(),user.getUsername(),user.getUserStatus()};
|
||||
|
||||
|
||||
int update = jdbcTemplate.update(sql,args);
|
||||
System.out.println(update);
|
||||
return update;
|
||||
}
|
||||
```
|
||||
2. 在service中完成业务逻辑
|
||||
|
||||
```java
|
||||
@Service
|
||||
public class UserService {
|
||||
@Autowired
|
||||
private UserDao userDao;
|
||||
|
||||
public void addUser(User user){
|
||||
userDao.addUser(user);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
3. 在test中进行测试和验证
|
||||
|
||||
```java
|
||||
@Test
|
||||
public void testJDBC(){
|
||||
ApplicationContext context = new ClassPathXmlApplicationContext("bean01.xml");
|
||||
UserService userService = context.getBean("userService",UserService.class);
|
||||
User user = new User();
|
||||
user.setUserId("123");
|
||||
user.setUsername("yinkanglong");
|
||||
user.setUserStatus("up");
|
||||
userService.addUser(user);
|
||||
}
|
||||
```
|
||||
|
||||
### 增删查改业务的实现
|
||||
BIN
Spring/Spring5/image/2022-10-10-08-50-01.png
Normal file
BIN
Spring/Spring5/image/2022-10-10-08-50-01.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 112 KiB |
@@ -1,4 +1,167 @@
|
||||
## 概念
|
||||
# Dockerfile
|
||||
|
||||
## 1 DockerFile介绍
|
||||
|
||||
dockerfile是用来构建docker镜像文件!命令参数脚本
|
||||
|
||||
构建步骤
|
||||
1. dockerfile
|
||||
2. docker build 构建一个镜像
|
||||
3. docker run 运行镜像
|
||||
4. docker push 发布一个镜像
|
||||
|
||||
dockerhub官方的镜像,会对应到github上一个仓库中的Dockerfile
|
||||
|
||||
|
||||
## 2 DockerFile构建过程
|
||||
|
||||
### 指令
|
||||
```
|
||||
FROM 基础镜像
|
||||
MAINTAINER 镜像的维护者信息
|
||||
RUN Docker镜像构建的时候需要的命令
|
||||
ADD 步骤:tomcat的镜像中,tomcat的压缩包
|
||||
WORKDIR 镜像的工作目录
|
||||
VOLUME -v挂载的目录位置
|
||||
EXPOSE -p暴露端口
|
||||
|
||||
|
||||
CMD 指定这个容器启动的时候运行的命令,只有最后一个会生效,而且可悲替代
|
||||
ENTRYPOINT 指定这个容器启动的时候运行的命令,可以追加命令
|
||||
ONBUILD 当构建一个被继承的DockerfileFile,就会影响ONBUILD指令。触发指令
|
||||
COPY 类似ADD命令,将文件COPY到镜像中。
|
||||
ENV 构建的时候设置环境变量
|
||||
```
|
||||
|
||||
1. 每个保留关键字指令都是大写字母
|
||||
2. `#`表示注释
|
||||
3. 每一个指令都会创建提交一个新的镜像层,并提交
|
||||
|
||||
### 构建过程
|
||||

|
||||
|
||||
dockerfile是面向开发的,发布项目、做镜像需要编写dockerfile。
|
||||
|
||||
* DockerFile:构建文件,定义了一切的步骤、源代码
|
||||
* DockerImages:通过DockerFile构建生成的镜像,最终发布和运行的产品
|
||||
* Docker容器:容器就是镜像运行起来,提供服务器
|
||||
|
||||
### 实践:创建自己的centos
|
||||
|
||||
> docker hub 中99%镜像都是从FROM scratch
|
||||
|
||||
1. 编写dockerfile的文件
|
||||
|
||||
```
|
||||
➜ dockerfile git:(master) ✗ cat mydockerfile
|
||||
FROM centos
|
||||
MAINTAINER yinkanglong<yinkanglong.163.com>
|
||||
|
||||
|
||||
ENV MYPATH /usr/local
|
||||
WORKDIR $MYPATH
|
||||
|
||||
RUN yum -y install vim
|
||||
RUN yum -y install net-tools
|
||||
|
||||
|
||||
EXPOSE 80
|
||||
|
||||
CMD echo $MYPATH
|
||||
CMD echo "----end----"
|
||||
|
||||
CMD /bin/bash
|
||||
```
|
||||
2. docker builid 运行镜像
|
||||
|
||||
```
|
||||
dockerfile git:(master) ✗ docker build -f mydockerfile -t mycentos:0.1 .
|
||||
[+] Building 64.0s (8/8) FINISHED
|
||||
=> [internal] load build definition from mydockerfile 0.2s
|
||||
=> => transferring dockerfile: 265B 0.1s
|
||||
=> [internal] load .dockerignore 0.1s
|
||||
=> => transferring context: 2B 0.0s
|
||||
=> [internal] load metadata for docker.io/library/centos:7 4.5s
|
||||
=> [1/4] FROM docker.io/library/centos:7@sha256:c73f515d06b0fa07bb18d8202035e739a494ce760aa73129f60f4bf2bd22b407 20.6s
|
||||
=> => resolve docker.io/library/centos:7@sha256:c73f515d06b0fa07bb18d8202035e739a494ce760aa73129f60f4bf2bd22b407 0.0s
|
||||
=> => sha256:c73f515d06b0fa07bb18d8202035e739a494ce760aa73129f60f4bf2bd22b407 1.20kB / 1.20kB 0.0s
|
||||
=> => sha256:dead07b4d8ed7e29e98de0f4504d87e8880d4347859d839686a31da35a3b532f 529B / 529B 0.0s
|
||||
=> => sha256:eeb6ee3f44bd0b5103bb561b4c16bcb82328cfe5809ab675bb17ab3a16c517c9 2.75kB / 2.75kB 0.0s
|
||||
=> => sha256:2d473b07cdd5f0912cd6f1a703352c82b512407db6b05b43f2553732b55df3bc 76.10MB / 76.10MB 15.0s
|
||||
=> => extracting sha256:2d473b07cdd5f0912cd6f1a703352c82b512407db6b05b43f2553732b55df3bc 5.3s
|
||||
=> [2/4] WORKDIR /usr/local 0.6s
|
||||
=> [3/4] RUN yum -y install vim 21.9s
|
||||
=> [4/4] RUN yum -y install net-tools 9.3s
|
||||
=> exporting to image 6.1s
|
||||
=> => exporting layers 6.1s
|
||||
=> => writing image sha256:87b7be8e41c9cc237c733930df0513f40a708fb0944f5ef48e815979e6880ee2 0.0s
|
||||
=> => naming to docker.io/library/mycentos:0.1 0.0s
|
||||
|
||||
Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them
|
||||
```
|
||||
3. 测试运行docker run,验证了 vim和ifconfig命令可行
|
||||
|
||||
```
|
||||
dockerfile git:(master) ✗ docker run -it mycentos:0.1
|
||||
[root@f318e4ba01b3 local]# pwd
|
||||
/usr/local
|
||||
[root@f318e4ba01b3 local]# ifconfig
|
||||
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
|
||||
inet 172.17.0.2 netmask 255.255.0.0 broadcast 172.17.255.255
|
||||
ether 02:42:ac:11:00:02 txqueuelen 0 (Ethernet)
|
||||
RX packets 10 bytes 876 (876.0 B)
|
||||
RX errors 0 dropped 0 overruns 0 frame 0
|
||||
TX packets 0 bytes 0 (0.0 B)
|
||||
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
|
||||
|
||||
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
|
||||
inet 127.0.0.1 netmask 255.0.0.0
|
||||
loop txqueuelen 1000 (Local Loopback)
|
||||
RX packets 0 bytes 0 (0.0 B)
|
||||
RX errors 0 dropped 0 overruns 0 frame 0
|
||||
TX packets 0 bytes 0 (0.0 B)
|
||||
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
|
||||
|
||||
[root@f318e4ba01b3 local]# vim where
|
||||
[root@f318e4ba01b3 local]# which vim
|
||||
/usr/bin/vim
|
||||
```
|
||||
|
||||
### 实践:CMD和ENTRYPOINT
|
||||
|
||||
|
||||
### 实践:制作tomcat镜像
|
||||
|
||||
|
||||
|
||||
### 发布自己的镜像
|
||||
|
||||
> DockeHub
|
||||
|
||||
1. 在https://hub.docker.com创建账号
|
||||
2. 向服务器提交自己的镜像
|
||||
3. 登录 docker login -u yinkanglong
|
||||
4. 推送 docker push yinkanglong/mycentos:01
|
||||
|
||||
|
||||
### 发布自己的镜像到阿里云
|
||||
|
||||
1. 登录阿里云
|
||||
|
||||
### docker save & docker load
|
||||
|
||||
将镜像保存压缩包
|
||||
|
||||
将压缩包加载为镜像
|
||||
|
||||
## 总结
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
### 简介
|
||||
|
||||
|
||||
17
docker/dockerfile/mydockerfile
Normal file
17
docker/dockerfile/mydockerfile
Normal file
@@ -0,0 +1,17 @@
|
||||
FROM centos:7
|
||||
MAINTAINER yinkanglong<yinkanglong.163.com>
|
||||
|
||||
|
||||
ENV MYPATH /usr/local
|
||||
WORKDIR $MYPATH
|
||||
|
||||
RUN yum -y install vim
|
||||
RUN yum -y install net-tools
|
||||
|
||||
|
||||
EXPOSE 80
|
||||
|
||||
CMD echo $MYPATH
|
||||
CMD echo "----end----"
|
||||
|
||||
CMD /bin/bash
|
||||
BIN
docker/image/2022-10-09-22-01-02.png
Normal file
BIN
docker/image/2022-10-09-22-01-02.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 258 KiB |
BIN
docker/image/2022-10-09-23-25-09.png
Normal file
BIN
docker/image/2022-10-09-23-25-09.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 425 KiB |
BIN
docker/image/image
.png
Normal file
BIN
docker/image/image
.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 258 KiB |
6
start.sh
6
start.sh
@@ -1,2 +1,8 @@
|
||||
git push -f git@github.com:Estom/notes.git
|
||||
git push git@github.com:Estom/notes.git
|
||||
|
||||
|
||||
# 统计代码的数量
|
||||
find . -name "*.java" -exec wc -l {} \;#利用exec参数
|
||||
find . -name "*.java" |xargs wc -l # 利用xargs参数
|
||||
find . -name "*.java" -exec wc -l {} \; | awk 'BEGIN{num=0} {num+=$1;print $1;}END{print num}'
|
||||
Reference in New Issue
Block a user