更新
This commit is contained in:
parent
074b2d3453
commit
fc4d35fd3f
@ -1,10 +1,13 @@
|
|||||||
## git 基本操作
|
## git 基本操作
|
||||||
|
|
||||||
|
|
||||||
|
#### 配置代理
|
||||||
|
```bash
|
||||||
|
git config --global http.proxy http://127.0.0.1:7890
|
||||||
|
git config --global https.proxy ttp://127.0.0.1:7890
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 更新git
|
||||||
|
|
||||||
### 更新git
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git update-git-for-windows
|
git update-git-for-windows
|
||||||
|
54
hive/hive表删除数据的几种方式.md
Normal file
54
hive/hive表删除数据的几种方式.md
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
## hive 删除数据
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### 删除表
|
||||||
|
|
||||||
|
```sql
|
||||||
|
-- hive删除表:
|
||||||
|
drop table table_name;
|
||||||
|
-- 永久性删除,不能恢复:
|
||||||
|
drop table table_name purge;
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### 清空数据
|
||||||
|
|
||||||
|
```sql
|
||||||
|
-- hive删除表中数据:
|
||||||
|
truncate table table_name;
|
||||||
|
|
||||||
|
-- hive按分区删除数据:
|
||||||
|
alter table table_name drop partition (partition_name='分区名')
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### 重写数据
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
与删除条件相反,如删除 date=0528 的数据
|
||||||
|
|
||||||
|
那么 重写数 的条件为 date!=0528
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**分区表**
|
||||||
|
|
||||||
|
```
|
||||||
|
删除具体partition的部分数据
|
||||||
|
INSERT OVERWRITE TABLE table_name PARTITION(year='2021')
|
||||||
|
SELECT * FROM table_name WHERE year='2021' and xx;
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**非分区表**
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
INSERT OVERWRITE TABLE table_name SELECT * FROM table_name WHERE xx;
|
||||||
|
|
||||||
|
```
|
177
java/Jsr303校验.md
Normal file
177
java/Jsr303校验.md
Normal file
@ -0,0 +1,177 @@
|
|||||||
|
# JSR303数据校验
|
||||||
|
|
||||||
|
JSR303是Java为Bean数据合法性校验提供给的标准框架,已经包含在 JavaEE6.0 中、JSR303通过在Bean 属性中标注类似 @NotNull @Max 等标准的注解指定校验规则并通过标准的验证接口对 Bean进行验证
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### 注解
|
||||||
|
|
||||||
|
### JSR303中含有的注解
|
||||||
|
|
||||||
|
```
|
||||||
|
@Null 被注释的元素必须为 null
|
||||||
|
@NotNull 被注释的元素必须不为 null
|
||||||
|
@AssertTrue 被注释的元素必须为 true
|
||||||
|
@AssertFalse 被注释的元素必须为 false
|
||||||
|
@Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
|
||||||
|
@Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
|
||||||
|
@DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
|
||||||
|
@DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
|
||||||
|
@Size(max=, min=) 被注释的元素的大小必须在指定的范围内
|
||||||
|
@Digits (integer, fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内
|
||||||
|
@Past 被注释的元素必须是一个过去的日期
|
||||||
|
@Future 被注释的元素必须是一个将来的日期
|
||||||
|
@Pattern(regex=,flag=) 被注释的元素必须符合指定的正则表达式
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Hibernate Validator 附加的注解
|
||||||
|
|
||||||
|
```
|
||||||
|
@NotBlank(message =) 验证字符串非null,且长度必须大于0
|
||||||
|
@Email 被注释的元素必须是电子邮箱地址
|
||||||
|
@Length(min=,max=) 被注释的字符串的大小必须在指定的范围内
|
||||||
|
@NotEmpty 被注释的字符串的必须非空
|
||||||
|
@Range(min=,max=,message=) 被注释的元素必须在合适的范围内
|
||||||
|
|
||||||
|
注:HIbernate Validator是JSR303的一个参考实现,除了支持所有标准的校验注解外,另外HIbernate Validator还有JSR-380的实现
|
||||||
|
```
|
||||||
|
|
||||||
|
### SpringMVC中使用JSR303进行服务器端验证
|
||||||
|
|
||||||
|
|
||||||
|
a. 添加相关依赖
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.hibernate</groupId>
|
||||||
|
<artifactId>hibernate-validator</artifactId>
|
||||||
|
<version>6.0.7.Final</version>
|
||||||
|
</dependency>
|
||||||
|
b. 给校验对象的指定属性添加校验规则
|
||||||
|
public class User {
|
||||||
|
private Long userId;
|
||||||
|
|
||||||
|
@NotBlank(message = "用户名不能为空")
|
||||||
|
private String userName;
|
||||||
|
|
||||||
|
@NotBlank(message = "密码不能为空")
|
||||||
|
private String userPwd;
|
||||||
|
|
||||||
|
............
|
||||||
|
|
||||||
|
}
|
||||||
|
c. 在请求处理方法中,使用@Validated或@Valid注解要验证的对象,并根据BindingResult判断校验是否通过 另外,验证参数后必须紧跟BindingResult参数,否则spring会在校验不通过时直接抛出异常
|
||||||
|
|
||||||
|
public String login(@Validated @ModelAttribute User user,
|
||||||
|
BindingResult bindingResult){
|
||||||
|
// 服务器端校验不通过
|
||||||
|
if (bindingResult.hasErrors()) {
|
||||||
|
return "login";
|
||||||
|
}
|
||||||
|
....
|
||||||
|
}
|
||||||
|
|
||||||
|
注1:@Valid和Validated的区别,随便使用哪个都行
|
||||||
|
@Valid是使用hibernate validation的时候使用
|
||||||
|
@Validated 是只用spring Validator校验机制使用
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### 在JSP页面上通过form标签显示消息
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<form:errors path="*" /> 显示表单所有错误
|
||||||
|
<form:errors path="user* /> 显示所有以user为前缀的属性对应的错误
|
||||||
|
<form:errors path="username"/> 显示特定表单对象属性的错误
|
||||||
|
|
||||||
|
delimiter:如果一个属性有多个错误,错误信息的分隔符。默认是换行
|
||||||
|
注1:errors标签要放到form标签中才能显示错误消息
|
||||||
|
注2:如果使用form:errors标签不显示错误消息,请检查Model中是否已经添加了命令对象,没有是不会显示错误消息的
|
||||||
|
注3:注意命名规范,Book-->book
|
||||||
|
@ModelAttribute
|
||||||
|
public void init(Model model) {
|
||||||
|
System.out.println("init...");
|
||||||
|
model.addAttribute("user", new User());
|
||||||
|
}
|
||||||
|
|
||||||
|
### 通过BindingResult和form:errors标签在JSP页面显示非验证消息
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public String login(@Valid @ModelAttribute Yh yh, BindingResult bindingResult, Model model){
|
||||||
|
bindingResult.rejectValue("yhzh", null, "帐号错误");
|
||||||
|
...
|
||||||
|
}
|
||||||
|
bindingResult.rejectValue("email", "validate.email.empty", "邮箱不能为空");//这个函数有好几个重载的变体
|
||||||
|
它们是可以支持国际化的。 比如,上面这个例子表示, 错误的字段(filed)是“email”, errorCode是“validate.email.empty”, 与资源文件对应, 第三个是defaultMessage
|
||||||
|
|
||||||
|
作业1:从BindingResult对象获得错误消息,生成基于json字符串返回到客户端
|
||||||
|
|
||||||
|
如何实现分组校验
|
||||||
|
2.1 通过接口定义若干个分组
|
||||||
|
2.2 给校验对象的指定属性添加校验规则,并指定校验组
|
||||||
|
2.3 在请求处理方法中,使用@Validated标记要验证的对象,并指定校验组
|
||||||
|
|
||||||
|
还可以对验证进行分组(@Validated)
|
||||||
|
public class Book {
|
||||||
|
// 书本验证分组
|
||||||
|
public static interface ValidateGroups {
|
||||||
|
// 新增/修改
|
||||||
|
public static interface AddEdit {
|
||||||
|
}
|
||||||
|
|
||||||
|
// 上架/下架
|
||||||
|
public static interface DeployUndeploy {
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新封面
|
||||||
|
public static interface UpdateBookImage {
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private Long bookId;
|
||||||
|
|
||||||
|
@NotBlank(message = "书名不能为空", groups = { AddEdit.class })
|
||||||
|
private String bookName;
|
||||||
|
|
||||||
|
private String bookNamePinyin;
|
||||||
|
|
||||||
|
@NotNull(message = "类别不能为空", groups = { AddEdit.class })
|
||||||
|
private Long bookCategoryId;
|
||||||
|
|
||||||
|
@NotBlank(message = "作者不能为空", groups = { AddEdit.class })
|
||||||
|
private String bookAuthor;
|
||||||
|
|
||||||
|
@NotNull(message = "价格不能为空", groups = { AddEdit.class })
|
||||||
|
@Min(value = 1, message = "价格不能为负")
|
||||||
|
private Double bookPrice;
|
||||||
|
|
||||||
|
private Long bookImage;
|
||||||
|
|
||||||
|
@NotBlank(message = "出版社不能为空", groups = { AddEdit.class })
|
||||||
|
private String publishing;
|
||||||
|
|
||||||
|
@NotBlank(message = "简介不能为空", groups = { AddEdit.class })
|
||||||
|
private String bookDesc;
|
||||||
|
|
||||||
|
private Integer bookState;
|
||||||
|
|
||||||
|
private Date deployDatetime;
|
||||||
|
|
||||||
|
private Integer salesVolume;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping("/add")
|
||||||
|
public String add(
|
||||||
|
@Validated(value = Book.BookGroups.Add.class) @ModelAttribute Book book,
|
||||||
|
BindingResult bindingResult) {
|
||||||
|
if (bindingResult.hasErrors()) {
|
||||||
|
return "admin/addBook";
|
||||||
|
}
|
||||||
|
return "admin/addBook";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
3. 通过分组来指定顺序
|
||||||
|
@GroupSequence({First.class, Second.class, User.class})
|
127
linux/fdisk磁盘分区.md
Normal file
127
linux/fdisk磁盘分区.md
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
# fdisk磁盘分区
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Fdisk 命令
|
||||||
|
|
||||||
|
```
|
||||||
|
fdisk [必要参数][选择参数]
|
||||||
|
```
|
||||||
|
|
||||||
|
必要参数
|
||||||
|
|
||||||
|
- -l 列出素所有分区表
|
||||||
|
- -u 与 **-l** 搭配使用,显示分区数目
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
选择参数
|
||||||
|
|
||||||
|
- -s<分区编号> 指定分区
|
||||||
|
- -v 版本信息
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
菜单操作说明
|
||||||
|
|
||||||
|
- m :显示菜单和帮助信息
|
||||||
|
- a :活动分区标记/引导分区
|
||||||
|
- d :删除分区
|
||||||
|
- l :显示分区类型
|
||||||
|
- n :新建分区
|
||||||
|
- p :显示分区信息
|
||||||
|
- q :退出不保存
|
||||||
|
- t :设置分区号
|
||||||
|
- v :进行分区检查
|
||||||
|
- w :保存修改
|
||||||
|
- x :扩展应用,高级功能
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
实例
|
||||||
|
|
||||||
|
```
|
||||||
|
# fdisk -l
|
||||||
|
|
||||||
|
Disk /dev/sda: 10.7 GB, 10737418240 bytes
|
||||||
|
255 heads, 63 sectors/track, 1305 cylinders
|
||||||
|
Units = cylinders of 16065 * 512 = 8225280 bytes
|
||||||
|
|
||||||
|
Device Boot Start End Blocks Id System
|
||||||
|
/dev/sda1 * 1 13 104391 83 Linux
|
||||||
|
/dev/sda2 14 1305 10377990 8e Linux LVM
|
||||||
|
|
||||||
|
Disk /dev/sdb: 5368 MB, 5368709120 bytes
|
||||||
|
255 heads, 63 sectors/track, 652 cylinders
|
||||||
|
Units = cylinders of 16065 * 512 = 8225280 bytes
|
||||||
|
|
||||||
|
Disk /dev/sdb doesn't contain a valid partition table
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
新建分区
|
||||||
|
|
||||||
|
```
|
||||||
|
fdisk /dev/sdb
|
||||||
|
|
||||||
|
输入 n
|
||||||
|
按提示操作
|
||||||
|
|
||||||
|
最后输入W 保存
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
格式化分区
|
||||||
|
|
||||||
|
```
|
||||||
|
mkfs.ext3 /dev/sdb1
|
||||||
|
```
|
||||||
|
|
||||||
|
格式化磁盘
|
||||||
|
|
||||||
|
```
|
||||||
|
mkfs.ext3 /dev/sdb
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
挂载分区
|
||||||
|
|
||||||
|
```bash
|
||||||
|
/dev/sdb1 /opt ext4 defaults 0 0
|
||||||
|
```
|
||||||
|
|
||||||
|
临时挂载
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mount /dev/sdb1 /Public2
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### lsblk 命令
|
||||||
|
|
||||||
|
查看硬盘信息
|
||||||
|
|
||||||
|
```
|
||||||
|
[root@worker ~]# lsblk
|
||||||
|
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
|
||||||
|
sda 8:0 0 30G 0 disk
|
||||||
|
├─sda1 8:1 0 200M 0 part /boot/efi
|
||||||
|
├─sda2 8:2 0 1G 0 part /boot
|
||||||
|
└─sda3 8:3 0 28.8G 0 part
|
||||||
|
├─centos-root 253:0 0 27G 0 lvm /
|
||||||
|
└─centos-swap 253:1 0 1.8G 0 lvm [SWAP]
|
||||||
|
sdb 8:16 0 1T 0 disk
|
||||||
|
└─sdb1 8:17 0 1024G 0 part /opt
|
||||||
|
sr0 11:0 1 1024M 0 rom
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
60
oracle/oracle.md
Normal file
60
oracle/oracle.md
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
### oracle 数据库 job 操作
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**停止job** `force => TRUE` 不检查任务是否正在运行强制停止
|
||||||
|
|
||||||
|
```sql
|
||||||
|
BEGIN
|
||||||
|
DBMS_SCHEDULER.STOP_JOB(job_name => 'TEST_JOB', force => TRUE);
|
||||||
|
END;
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**删除job** `force => TRUE` 不检查任务是否正在运行强制删除
|
||||||
|
|
||||||
|
```sql
|
||||||
|
BEGIN
|
||||||
|
DBMS_SCHEDULER.DROP_JOB(job_name => 'TEST_JOB');
|
||||||
|
END;
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**创建job**
|
||||||
|
|
||||||
|
```
|
||||||
|
BEGIN
|
||||||
|
DBMS_SCHEDULER.CREATE_JOB (
|
||||||
|
job_name => 'MC_CH_ISSUE_INFO_CLEAN_NEW',
|
||||||
|
job_type => 'PLSQL_BLOCK',
|
||||||
|
job_action => 'BEGIN MC_CH_ISSUE_INFO_CLEAN_EVD; END;',
|
||||||
|
start_date => SYSTIMESTAMP,
|
||||||
|
repeat_interval => 'FREQ=DAILY; BYHOUR=8; BYMINUTE=25;',
|
||||||
|
enabled => TRUE
|
||||||
|
);
|
||||||
|
END;
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
停止执行计划
|
||||||
|
|
||||||
|
```
|
||||||
|
BEGIN
|
||||||
|
DBMS_SCHEDULER.DISABLE('MC_CH_ISSUE_INFO_CLEAN');
|
||||||
|
END;
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
运行一个计划
|
||||||
|
|
||||||
|
```
|
||||||
|
BEGIN
|
||||||
|
DBMS_SCHEDULER.RUN_JOB('test_job');
|
||||||
|
END;
|
||||||
|
```
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user