近期开发记录

137 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第22天,点击查看活动详情

MySQL分页查询的5种方法

select * from table order by id limit m, n;

该语句的意思就是查询 m+n 条记录,去掉前 m 条,返回后 n 条。无疑该查询能够实现分页,但m越大,查询性能就越低,因为 MySQL 需要扫描全部 m+n 条记录。

select * from table where id > #max_id# order by id limit n;

该查询同样会返回后n条记录,却无需像方式1扫描前m条记录,但必须在每次查询时拿到上一次查询(上一页)的最大id(或最小id),是比较常用的方式。

当然该查询的问题也在于我们不一定能拿到这个id,比如当前在第3页,需要查询第5页的数据,就不行了。

select * from table where id > #max_id# order by id limit 10, 10;

为了避免方式2不能实现的跨页查询,就需要结合方式1。

性能需要,m 得尽量小。比如当前在第3页,需要查询第5页,每页10条数据,且当前第3页的最大 id 为#max_id#,则如上。

该方式就部分解决了方式2的问题,但如果当前在第2页,要查第1000页,性能仍然较差。

select * from table as a inner join (select id from table order by id limit m, n) 
as b on a.id = b.id order by a.id;

该查询同方式1一样,m的值可能很大,但由于内部的子查询只扫描了id字段,而非全表,所以性能要强于方式1,并且能够解决跨页查询问题。

select * from table where id > (select id from table order by id limit m, 1) limit n;

该查询同样是通过子查询扫描字段id,效果同方式4。但方式5的性能会略好于方式4,因为它不需要进行表的关联,而是一个简单的比较,在不知道上一页最大id的情况下,是比较推荐的用法。

Spring 注解

为了把程序中零零散散的配置信息变得容易维护,我们会把这些信息写进配置文件,后通过 @Value@ConfigurationProperties 读取。

@Value注解作用

@Value注解作用 是将我们配置文件的属性通过前缀匹配的方式读出来,有 @Value(“${}”)@Value(“#{}”) 两种方式。

@Value(“${}”)与@Value(“#{}”)区别

① ${ property : default_value }

② #{ obj.property? :default_value }

第一个注入的是外部配置文件对应的 property,第二个则是 SpEL 表达式对应的内容。default_value 是前面的值为空时的默认值。注意二者的不同,#{}里面那个 obj 代表对象

@ConfigurationProperties注解使用

把配置文件中的属性绑定到我们的 java 对象中

Java 时间

Date date = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//格式化时间
String date_time1 = formatter.format(date);
System.out.println("获取系统当前String类型时间:" + date_time1);

//输出结果
获取系统当前String类型时间:2021-09-15 14:27:20

blog.csdn.net/YR_112233/a… blog.csdn.net/qq_52713178… blog.csdn.net/Hudas/artic…

Java 数组

关于二维数组

int[][] a=new int[10][10];
String[][] b=new String[10][10];

int[][] a={{1,2,3,4},{4,5,6,7},{8,9,10,11}};

ArrayList转二维数组的方法

方法1:

List<int[]> list = new ArrayList<>();
list.toArray(new int[0][]);

方法2:

List<int[]> res = new ArrayList<int[]>();

Java二维数组根据某一列进行排序

//重写Arrays.sort()方法
Arrays.sort(intervals, new Comparator<int[]>() {
    @Override
    public int compare(int[] o1, int[] o2) {
      //这里根据第一列进行排序
        return o1[0] - o2[0];
    }
});

Java数组常用操作

blog.csdn.net/Lilip_/arti…

git 命令

git修改提交的用户名

# 查看本地相关配置:
git config --local --list  

# 查看本地提交的用户名
git config user.name  

# 查看本地提交的邮箱
git config user.email

全局修改

git config --global user.name 你的用户名  
git config --global user.email 你的邮箱名

当前项目修改

git config user.name 你的用户名  
git config user.email 你的邮箱名

ClickHouse

alter table table_name delete [where ......]

参考:

blog.csdn.net/qq_44708990… blog.csdn.net/llx_2000/ar… blog.csdn.net/wwd0501/art…

blog.csdn.net/u012111465/…

huaweicloud.csdn.net/633560fed3e…

nginx

进入到安装的目录里面 whereis nginx
进入该路径:cd   /usr/local/nginx/sbin
启动nginx 命令:  ./nginx

查看nginx 的状态 ps -ef | grep nginx
停止 nginx 命令: ./nginx -s stop

下载:nginx.org/en/download…

若依前后端分离版本部署

blog.csdn.net/u014627231/…

blog.csdn.net/peter__xu/a…

blog.csdn.net/qq_42702382…

若依前后端分离版本 nginx 配置

官方文档:doc.ruoyi.vip/ruoyi-vue/

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;
		charset utf-8;

		location / {
            root   /home/ruoyi/projects/ruoyi-ui;
			try_files $uri $uri/ /index.html;
            index  index.html index.htm;
        }
		
		location /prod-api/ {
			proxy_set_header Host $http_host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header REMOTE-HOST $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_pass http://localhost:8080/;
		}

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

redis

blog.csdn.net/qq_40606397…

blog.csdn.net/weixin_4492…

blog.csdn.net/weixin_6242…

blog.csdn.net/weixin_4365…

安装: blog.csdn.net/m0_63270506…

参考

MySQL分页查询的5种方法

gitlab+jenkins自动化部署vue项目

Linux 下 GitLab 安装教程

Java中ArrayList转二维数组的方法

clickhouse操作(表,列,数据删除等)

git修改提交的用户名

以下待整理

Servlet--HttpServletRequest获取请求信息(请求头、请求行、参数)详解

blog.csdn.net/qq_34666857…

blog.csdn.net/Wing_kin666…

www.javashuo.com/article/p-w…

SpringBoot 全局异常处理ExceptionHandler