ziggle

Hail Hydra


  • Home

  • Archives

  • Search

gradle-task

Posted on 2020-02-13

概述
Gradle 中的每一个 Project 都是由一个或者多个 Task 来构成的, 它是 gradle 构建脚本的最小运行单元, 一个 Task 代表一些更加细化的构建, 可能是编译一些 classes 、创建一个 Jar、生成 javadoc、或者生成某个目录的压缩文件.
Task 有一些重要的功能: 任务动作(task action)和任务依赖(task dependency). task action定义了任务执行时最小的工作单元, 比如 doFirst 和doLast. task dependency定义了 task 之间的依赖关系, 例如在某个 task 运行之前要运行另外一个 task, 尤其是需要另一个 task 的输出作为输入的时候.

Task 相关命令

./gradlew tasks: 列出当前工程的所有 Task
./gradlew [-q] <task name>: 单独执行某个 task, -q 代表 quite 模式, 它不会生成 Gradle 的日志信息 (log messages), 所以用户只能看到 tasks 的输出.
创建任务
默认情况下, 我们创建的每一个 Task 都是 org.gradle.api.DefaultTask 类型, 这是一个通用的 Task 类型. 另外 Gradle 还提供了具有一些特定功能的 Task, 比如 Copy 和 Delete 等, 我们需要时直接继承即可. 另外, 我们还可以创建自己的 Task 类型, 并且可以自行定义我们创建的 Task 类型.
Task 的定义和构造方式也是多种多样的, Gradle 提供了多种方法来定义 Task. 另外 Task 既可以在 build.gradle 文件中直接创建, 也可以由不同的 Plugin 引入.

Task 构造方法

可以通过下面几个方法来构造 Task:

  • task myTask: 用 task 关键字构造
  • task(): 用 project 的 task 方法构造
  • tasks.create: 用 TaskContainer 的 create 方法构造
  • myTask extends DefaultTask
Read more »

Linux 磁盘占用

Posted on 2020-01-16

查看文件夹文件大小

1
du -h --max-depth=1 /var/log

或者

1
2
cd /
du -sh *
  • 当前目录的磁盘占用
1
du -sh ./*

处理文件删除问题

应该是删除了这些文件,但是空间没有释放,当然重启可以解决目的,但是会造成服务器上所有业务中断,可使用下面命令查看删除文件占用情况:

1
[root@ziggle]# lsof |grep delete

磁盘扩容

@see https://help.aliyun.com/knowledge_detail/111738.html

  • 运行fdisk -l命令查看现有云盘大小。以下示例返回云盘(/dev/vda)容量是100GiB。
1
fdisk -l
  • 运行df -h命令查看云盘分区大小。以下示例返回分区(/dev/vda1)容量是20GiB。
1
df -h
  • 运行growpart <DeviceName> <PartionNumber>命令调用growpart为需要扩容的云盘和对应的第几个分区扩容。示例命令表示为系统盘的第一个分区扩容。 若运行命令后报以下错误,您可以运行LANG=en_US.UTF-8切换ECS实例的字符编码类型。
1
2
3
4
growpart /dev/vda 1

---
# LANG=en_US.UTF-8
  • 运行resize2fs 命令调用resize2fs扩容文件系统。示例命令表示为扩容系统盘的/dev/vda1分区文件系统。
1
resize2fs /dev/vda1
1
2
3
4

df -h #整个磁盘空间
du -h --max-depth=1 #看当前目录各子目录占用空间
du -h -d 1 #同上,适用于mac系统

sqlserver 配置

Posted on 2020-01-10
1
2
3
4
use master
go
-- 读取配置
EXEC sp_configure @configname='remote query timeout';
1
2
name    minimum	maximum config_value    run_value
remote query timeout (s) 0 2147483647 600 600
1
2
3
4
-- 配置
EXEC sp_configure 'remote query timeout', 300 ;
GO
RECONFIGURE ;

https://docs.microsoft.com/zh-cn/sql/relational-databases/system-stored-procedures/sp-configure-transact-sql?view=sql-server-ver15

sql-join

Posted on 2019-12-01

ref >> https://blog.csdn.net/yu849893679/article/details/86487628
对于SQL的Join,在学习起来可能是比较乱的。我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚。Coding Horror上有一篇文章,通过韦恩图(Venn diagram,可用来表示多个集合之间的逻辑关系)。解释了SQL的Join。我觉得清楚易懂,转过来。

假设我们有两张表。Table A 是左边的表。Table B 是右边的表。其各有四条记录,其中有两条记录name是相同的,如下所示:让我们看看不同JOIN的不同

A表
id name
1 Pirate
2 Monkey
3 Ninja
4 Spaghetti
B表
id name
1 Rutabaga
2 Pirate
3 Darth Vade
4 Ninja
1.INNER JOIN

SELECT * FROM TableA INNER JOIN TableB ON TableA.name = TableB.name

结果集
(TableA.) (TableB.)
id name id name
1 Pirate 2 Pirate
3 Ninja 4 Ninja

Inner join 产生的结果集中,是A和B的交集。

Read more »

spring-security

Posted on 2019-11-26

WebSecurityConfigurerAdapter

org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 * spring security filter chain
*
* (1)// UsernamePasswordAuthenticationFilter
*
* @link {org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter}
* 登陆请求 检查参数
* (2) // BasicAuthenticationFilter
* @link {org.springframework.security.web.authentication.www.BasicAuthenticationFilter}
* 检查请求头Basic
* ... ....
* (3) org.springframework.security.web.access.ExceptionTranslationFilter
* 异常转换 (必定会有 位置在FilterSecurityInterceptor)
*
* (4) @link {org.springframework.security.web.access.intercept.FilterSecurityInterceptor}
* // 最终决定是否通过
*/

@Override
protected void configure(HttpSecurity http) throws Exception {
// http.formLogin()
http.httpBasic()
.and()
.authorizeRequests()
.anyRequest()
.authenticated();
}

要想实现短信验证码登录流程,我们可以借鉴已有的用户名密码登录流程,分析有哪些组件是需要我们自己来实现的:

首先我们需要一个SmsAuthenticationFilter拦截短信登录请求进行认证,
期间它会将登录信息封装成一个Authentication请求AuthenticationManager 进行认证AuthenticationManager会遍历所有的AuthenticationProvider
找到其中支持认证该Authentication 并调用authenticate进行实际的认证,

因此我们需要实现自己的Authentication(SmsAuthenticationToken)和认证该Authentication的AuthenticationProvider(SmsAuthenticationProvider),并将SmsAuthenticationProvider添加到SpringSecurty的AuthenticationProvider集合中,以使AuthenticationManager 遍历该集合时能找到我们自定义的SmsAuthenticationProvider``SmsAuthenticationProvider在进行认证时,需要调用UserDetailsService根据手机号查询存储的用户信息loadUserByUsername,

因此我们还需要自定义的SmsUserDetailsService
下面我们来一一实现下(其实就是依葫芦画瓢,把对应用户名密码登录流程对应组件的代码COPY过来改一改)

UsernamePasswordAuthenticationFilter 从请求中拿到 username password
生成UsernamePasswordAuthenticationToken (未认证) AuthenticationManager 用token
从众多 DaoAuthenticationProvider
选择合适的 org.springframework.security.authentication.AuthenticationProvider
(根据 org.springframework.security.authentication.AuthenticationProvider#supports )

1…567…22
ziggle

ziggle

Hail Hydra !

110 posts
45 tags
RSS
GitHub
© 2021 ziggle
Powered by Hexo
|
Hail Hydra—