From fc4d35fd3f6aba0c4339a1ae2fe2542cb4f6c52c Mon Sep 17 00:00:00 2001 From: xking Date: Thu, 7 Sep 2023 17:25:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- git/git基本操作.md | 9 +- hive/hive表删除数据的几种方式.md | 54 +++++++ java/Jsr303校验.md | 177 +++++++++++++++++++++ linux/fdisk磁盘分区.md | 127 +++++++++++++++ oracle/oracle.md | 60 +++++++ 5 files changed, 424 insertions(+), 3 deletions(-) create mode 100644 hive/hive表删除数据的几种方式.md create mode 100644 java/Jsr303校验.md create mode 100644 linux/fdisk磁盘分区.md create mode 100644 oracle/oracle.md diff --git a/git/git基本操作.md b/git/git基本操作.md index 83eddef..6d76665 100644 --- a/git/git基本操作.md +++ b/git/git基本操作.md @@ -1,10 +1,13 @@ ## 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 git update-git-for-windows diff --git a/hive/hive表删除数据的几种方式.md b/hive/hive表删除数据的几种方式.md new file mode 100644 index 0000000..ad20c99 --- /dev/null +++ b/hive/hive表删除数据的几种方式.md @@ -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; + +``` \ No newline at end of file diff --git a/java/Jsr303校验.md b/java/Jsr303校验.md new file mode 100644 index 0000000..ffd64ba --- /dev/null +++ b/java/Jsr303校验.md @@ -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. 添加相关依赖 + + org.hibernate + hibernate-validator + 6.0.7.Final + + 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标签显示消息 + + + + 显示表单所有错误 + 显示特定表单对象属性的错误 + + 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}) diff --git a/linux/fdisk磁盘分区.md b/linux/fdisk磁盘分区.md new file mode 100644 index 0000000..23633cc --- /dev/null +++ b/linux/fdisk磁盘分区.md @@ -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 +``` + + + + + diff --git a/oracle/oracle.md b/oracle/oracle.md new file mode 100644 index 0000000..653d12a --- /dev/null +++ b/oracle/oracle.md @@ -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; +``` +