通用分页的详解(Java后端常用)

2023-11-09

目录

一.通用分页

1.1通用分页是什么?

1.2使用通用分页有什么好处?

1.3经常在哪使用通用分页?

二.往常的通用分页实现及代码

         三、通用分页的讲解(思路+具体实现代码)

四,JUnit框架的使用

4.1JUnit框架是什么?

4.2JUnit框架有什么优势?

4.3JUnit框架具体使用步骤:我以eclipse为例

 五,SQL中limit

5.5.1limit是什么?

 六,isNotEmpty()和isNotBlank()的用法及区别

相同点:

具体使用:


一.通用分页

1.1通用分页是什么?

JSP通用分页(JSP Universal Pagination)是指在JSP网页开发中,应用一些通用的技术实现数据分页功能

1.2使用通用分页有什么好处?

使用分页,每次就会处理一小块的数据,JSP通用分页技术可以简化数据分页功能的开发,提升开发效率,使得网站的用户交互更加友好。当我们需要在网页中展示大量的数据时,可以将数据进行分页处理,避免一次性将所有数据都展示出来,从而避免页面加载速度慢或者出现内存溢出等问题。使用JSP通用分页技术可以方便地实现数据分页功能,开发人员可以根据具体业务需求,灵活地设置每页显示的数量和页面导航条的样式,提高网站的用户体验

1.3经常在哪使用通用分页?

JSP通用分页技术可以在任何需要分页展示数据的网页中使用,比如商品列表、文章列表、用户列表等。

  1. 商品列表页面:在电商网站中,一般需要展示大量的商品信息,使用JSP通用分页可以避免一次性将所有商品信息都展示出来,提高页面加载速度,同时方便用户浏览和选择。

  2. 文章列表页面:在新闻网站或博客网站中,也需要展示大量的文章信息,使用JSP通用分页可以将文章信息进行分页处理,避免页面加载过慢或出现内存溢出等问题。

  3. 用户列表页面:在管理系统或人才招聘网站中,需要展示大量的用户信息,使用JSP通用分页也可以方便地实现数据分页展示,方便管理员或招聘方查看和管理。

  4. 其他列表页面:在各种需要展示数据的场景中,使用JSP通用分页可以方便开发人员实现数据的分页展示,提高用户体验。

需要注意的是,JSP通用分页技术通常需要与数据库进行交互,因此需要熟悉JDBC等相关技术,同时在编写JSP页面和JavaBean时也需要一定的开发经验。

二.往常的通用分页实现及代码

实现思路:先封装一个分页工具类保存页码、一页的条目、总记录数以及是否分页,然后当成参数传递到Dao层的分页方法中,再将需要查询的关键词或是类别传递即可,但是这种分页查询方式非常的冗杂,下面看一下实现的代码!!

分页工具类

package com.lya.util;

/**
 * 分页工具类
 *
 */
public class PageBean {

	private int page = 1;// 页码

	private int rows = 10;// 页大小

	private int total = 0;// 总记录数

	private boolean pagination = true;// 是否分页

	public PageBean() {
		super();
	}

	public int getPage() {
		return page;
	}

	public void setPage(int page) {
		this.page = page;
	}

	public int getRows() {
		return rows;
	}

	public void setRows(int rows) {
		this.rows = rows;
	}

	public int getTotal() {
		return total;
	}

	public void setTotal(int total) {
		this.total = total;
	}

	public void setTotal(String total) {
		this.total = Integer.parseInt(total);
	}

	public boolean isPagination() {
		return pagination;
	}

	public void setPagination(boolean pagination) {
		this.pagination = pagination;
	}

	/**
	 * 获得起始记录的下标
	 * 
	 * @return
	 */
	public int getStartIndex() {
		return (this.page - 1) * this.rows;
	}

	@Override
	public String toString() {
		return "PageBean [page=" + page + ", rows=" + rows + ", total=" + total + ", pagination=" + pagination + "]";
	}

}

Dao层

package com.lya.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import org.junit.Test;

import com.lya.entity.Book;
import com.lya.util.DBAccess;
import com.lya.util.PageBean;
import com.lya.util.StringUtils;

/**
 * S阶段写法与使用BaseDao之后的对比
 * 
 * @author :JAVA-李永安
 * @date :2023年6月27日 上午10:53:47
 */
public class BookDaoS extends BaseDao<Book> {

	/**
	 * 未使用BaseDao
	 * 
	 * @param book
	 * @param pagebeam
	 * @return
	 * @throws Exception
	 */
	public List<Book> ckbook1(Book book, PageBean pagebeam) throws Exception {
		Connection conn = DBAccess.getConnection();
		String sql = "select * from t_mvc_book where 1=1";
		String bname = book.getBname();
		// StringUtils.isNotBlank(bname)------用于判断bname是否为空
		if (StringUtils.isNotBlank(bname)) {
			sql += " and bname like '%" + bname + "%'";
		}
		PreparedStatement stmt = conn.prepareStatement(sql);
		List<Book> list = new ArrayList<Book>();
		ResultSet rs = stmt.executeQuery();
		while (rs.next()) {
			Book b = new Book();
			b.setBid(rs.getInt("bid"));
			b.setBname(rs.getString("bname"));
			b.setPrice(rs.getFloat("price"));
			list.add(b);
		}
		return list;
	}
	public static void main(String[] args) {
		BookDaoS bookDaoS = new BookDaoS();
		Book book = new Book();
		book.setBname("斗");
		PageBean pagebeam = new PageBean();
		List<Book> ckbook = null;
		try {
			ckbook = new BookDaoS().ckbook2(book, pagebeam);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		for (Book book2 : ckbook) {
			System.out.println(book2);
		}
	}

实现效果:

 

但是这种分页查询方式非常的冗杂,下面我们用一种简单的方法下实现简化它!!!

三、通用分页的讲解(思路+具体实现代码)

实现通用分页思路分析:

首先我们得知道通用分页必须要有的参数属性:是否分页,页码,页大小,总记录数

1.所有分页代码都大同小异,只有sql语句和遍历结果集的区域代码不一致,所以我们只需要将这里稍加改动,就可以变成我们的通用分页。

2.我们通用的basedao里面要判断是否分页,如果不需要分页的话就进行“原sql”查询即可,需要分页,就将模糊查询的总记录数计算出来以及回显最终展示的数据即可。其次就是遍历结果集的时候,因为我们不知道将来传递进来的是什么对象,所以可以用到反射的机制获取属性。
 

3.具体实现的代码(内有详细注解)

①编写BaseDao(通用分页)

package com.lya.dao;

import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import com.lya.entity.Book;
import com.lya.util.DBAccess;
import com.lya.util.PageBean;
import com.lya.util.StringUtils;

/**
 * 通用的增删改查(分页的显示)
 * 
 * @author :JAVA-李永安
 * @date :2023年6月27日 上午11:38:42
 */
public class BaseDao<T> {

	/**
	 * @param sql
	 *            sql语句
	 * @param cla
	 *            类对象
	 * @param pagebeam
	 *            分页工具类
	 * @return
	 * @throws Exception
	 */
	public List<T> excuteQuery(String sql, Class cla, PageBean pagebeam) throws Exception {
		Connection conn = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		List<T> list = new ArrayList<T>();

		// 这里我们考虑两种情况:
		// (一)需要使用分页,
		if (pagebeam != null && pagebeam.isPagination()) {
			// 这里定义分页的两个重要的属性:
			// countSQL(执行待条件sql后的记录数),sql参数在调用时拼写
			// pageSQl(执行待条件sql后返回的内容),sql参数在调用时拼写,pagebeam参数是传递起始参数的
			String countSQL = getCountSQL(sql);
			conn = DBAccess.getConnection();
			stmt = conn.prepareStatement(countSQL);
			rs = stmt.executeQuery();

			// 当我们查询一次countSQL后就得到单个数据---我们用if不用while
			if (rs.next()) {
				pagebeam.setTotal(rs.getObject("n").toString());
			}
			String pageSQl = getPageSQl(sql, pagebeam);
			conn = DBAccess.getConnection();
			stmt = conn.prepareStatement(pageSQl);
			rs = stmt.executeQuery();
			System.out.println(countSQL+"  "+pageSQl);
		}
		// (二)不需要使用分页
		else {
			conn = DBAccess.getConnection();
			stmt = conn.prepareStatement(sql);
			rs = stmt.executeQuery();
		}

		while (rs.next()) {
			// 使用反射(拿到类的属性值)
			T t = (T) cla.newInstance();// 实例类类
			Field[] fd = cla.getDeclaredFields();// 获取属性
			for (Field f : fd) {// 遍历fd
				f.setAccessible(true);// 打开权限
				f.set(t, rs.getObject(f.getName()));// 为T设置属性值
			}
			list.add(t);
		}
		return list;
	}

	/**
	 * 执行待条件sql后的记录数
	 * 
	 * @param sql
	 * @return
	 */
	private String getCountSQL(String sql) {
		// TODO Auto-generated method stub
		// SELECT count(*) as a FROM(SELECT * FROM`t_mvc_book` where Bname like '%圣%')t
		return "SELECT count(1) as n FROM(" + sql + ")t";
	}

	/**
	 * 执行待条件sql后返回的内容
	 * 
	 * @param sql
	 * @return
	 */
	private String getPageSQl(String sql, PageBean pagebeam) {
		// TODO Auto-generated method stub
		// SELECT * FROM `t_mvc_book` where Bname like '%圣%' limit 0,10
//		return "'" + sql + "' limit '" + pagebeam.getStartIndex() + "' , '" + pagebeam.getRows() + "'  ";
		return sql + " limit " + pagebeam.getStartIndex() + "," + pagebeam.getRows();
	}

}

②具体实现类(以book为例)

package com.lya.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import org.junit.Test;

import com.lya.entity.Book;
import com.lya.util.DBAccess;
import com.lya.util.PageBean;
import com.lya.util.StringUtils;

/**
 * S阶段写法与使用BaseDao之后的对比
 * 
 * @author :JAVA-李永安
 * @date :2023年6月27日 上午10:53:47
 */
public class BookDaoS extends BaseDao<Book> {

	/**
	 * 未使用BaseDao
	 * 
	 * @param book
	 * @param pagebeam
	 * @return
	 * @throws Exception
	 */
	public List<Book> ckbook1(Book book, PageBean pagebeam) throws Exception {
		Connection conn = DBAccess.getConnection();
		String sql = "select * from t_mvc_book where 1=1";
		String bname = book.getBname();
		// StringUtils.isNotBlank(bname)------用于判断bname是否为空
		if (StringUtils.isNotBlank(bname)) {
			sql += " and bname like '%" + bname + "%'";
		}
		PreparedStatement stmt = conn.prepareStatement(sql);
		List<Book> list = new ArrayList<Book>();
		ResultSet rs = stmt.executeQuery();
		while (rs.next()) {
			Book b = new Book();
			b.setBid(rs.getInt("bid"));
			b.setBname(rs.getString("bname"));
			b.setPrice(rs.getFloat("price"));
			list.add(b);
		}
		return list;
	}

	/**
	 * 使用BaseDao
	 * 
	 * @param book
	 * @param pagebeam
	 * @return
	 * @throws Exception
	 */
	public List<Book> ckbook2(Book book, PageBean pagebeam) throws Exception {
		String sql = "select * from t_mvc_book where 1=1";
		String bname = book.getBname();
		// StringUtils.isNotBlank(bname)------用于判断bname是否为空
		if (StringUtils.isNotBlank(bname)) {
			sql += " and bname like '%" + bname + "%'";
		}
		// super用法
		return super.excuteQuery(sql, Book.class, pagebeam);
	}

	public static void main(String[] args) {
		BookDaoS bookDaoS = new BookDaoS();
		Book book = new Book();
		book.setBname("斗");
		PageBean pagebeam = new PageBean();
		List<Book> ckbook = null;
		try {
			ckbook = new BookDaoS().ckbook2(book, pagebeam);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		for (Book book2 : ckbook) {
			System.out.println(book2);
		}
	}

	@Test
	public void test1() throws Exception {
		System.out.println("test1======");
		BookDaoS bookDaoS = new BookDaoS();
		Book book = new Book();
		book.setBname("圣");
		PageBean pagebeam = new PageBean();
		List<Book> ckbook = new BookDaoS().ckbook1(book, pagebeam);
		for (Book book2 : ckbook) {
			System.out.println(book2);
		}
	}
	
	@SuppressWarnings("unused")
	@Test
	public void test2() throws Exception {
		System.out.println("test2======");
		BookDaoS bookDaoS = new BookDaoS();
		Book book = new Book();
		book.setBname("圣");
		PageBean pagebeam = new PageBean();
		List<Book> ckbook = new BookDaoS().ckbook2(book, pagebeam);
		for (Book book2 : ckbook) {
			System.out.println(book2);
		}
	}

	@Test
	public void test3() throws Exception {
		System.out.println("test3======");
		BookDaoS bookDaoS = new BookDaoS();
		Book book = new Book();
		book.setBname("圣");
		PageBean pagebeam = new PageBean();
		List<Book> ckbook = new BookDaoS().ckbook2(book, pagebeam);
		for (Book book2 : ckbook) {
			System.out.println(book2);
		}
		System.out.println(pagebeam);
	}
}

③实现效果

以上我们就能实现通用的分页功能了,若有不明白的可以评论留言,我会及时为大家解答!

四,JUnit框架的使用

4.1JUnit框架是什么?

JUnit是一个轻量级的Java应用程序测试框架,可用于编写和运行自动化测试

4.2JUnit框架有什么优势

通过JUnit,开发人员可以在编写代码时预先编写测试逻辑并运行测试来验证代码的正确性。JUnit使用简单,它可以帮助开发人员快速编写和运行测试用例,同时提供了标准的断言和测试结果报告工具。

  1. 易于学习和使用:JUnit使用简单,开发人员只需要编写单元测试代码并运行测试即可对代码进行测试。

  2. 可用于各种项目:JUnit适用于各种Java应用程序,无论是Web应用程序,还是桌面应用程序。

  3. 提高代码的质量:通过JUnit,开发人员可以在编写代码时预先编写测试用例,从而提高代码的质量和可靠性。

  4. 快速反馈:JUnit通过执行测试用例来验证代码的正确性,可以在开发人员修改代码时快速反馈测试结果,提高开发效率。

JUnit是一个开源框架可以在任何Java开发环境中使用,如Eclipse、NetBeans、IntelliJ IDEA等。由于JUnit的广泛应用,许多Java开发工具都集成了JUnit,以便开发人员快速创建和运行测试用例。

4.3JUnit框架具体使用步骤:我以eclipse为例

4.3.1创建项目先配置JUnit框架

4.3.2到eclipse配置中进行相关操作

4.3.3到eclipse配置中进行相关操作(建议选中4的版本!)

 

4.3.3到类中进行实际操作

@test是JUnit的标准 

运行效果:

五,SQL中limit

5.5.1limit是什么?

在SQL中,LIMIT是一种用于限制查询结果集返回的行数的操作。在支持LIMIT语法的数据库中,通常将其作为查询语句的最后一部分,语法格式一般为:

select * from 数据表名 where ...like ‘%...%’ limit 从...开始 ,显示...的行数

5.5.2limit怎么使用?

以下是我以navicat 连接mysql 使用的limit查询

需要注意的是,LIMIT只是限制了返回结果的行数,并不影响数据库中原始数据的行数。LIMIT并非所有数据库都支持,不同的数据库有不同的实现方式。例如,MySQL中支持LIMIT语法,而Oracle数据库中没有LIMIT语法,而是使用ROWNUM实现类似的功能。另外,在使用LIMIT时,应考虑查询效率和性能问题,以免影响查询速度和系统的响应能力。

六,isNotEmpty()和isNotBlank()的用法及区别

相同点:

isNotEmpty()和isNotBlank() 都是Apache Commons Lang库(一个Java开源库)中StringUtils工具包下两个判断字符串是否为空的方法

方法常用于数据校验、字符串处理、表单验证等场景中,可以减轻开发人员的工作量,提高代码的可读性和健壮性。

不同点:isNotBlank()还需要判断length是否>0

具体使用:

 isNotBlank:判断某字符串是否不为空且长度不为0   如果为空返回false

这篇通用分页的分享就到这里,若有不明白的可以评论留言,我会及时为大家解答!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通用分页的详解(Java后端常用) 的相关文章

  • 用于解析和构建逻辑表达式的 Java 库

    我正在寻找一个 Java 开源库来解析和构建类似 SQL 的表达式 例如评估表达式的有效性 例如 a x or y and b z 另外我想要一个用于构建或扩展表达式的 API 就像是 Expression exp new Expressi
  • 策略模式还是命令模式?

    假设我有一个金融交易列表 我需要针对这些交易执行一系列验证规则 一个例子是我有一笔购买产品的交易 但是首先我需要验证交易中的帐户是否有足够的可用资金 产品没有售完等 由于这些规则 交易将是标记为拒绝 并应指定错误代码 当然 我正在考虑用一个
  • 将构造函数作为参数传递给方法

    我是java新手 开始研究构造函数 我看到一些构造函数作为参数传递给方法的示例 请告诉我当构造函数作为参数传递给方法时会发生什么 或者建议我一些链接 我可以在其中获得有关使用构造函数的足够知识 根据您需要传递构造函数的目的 您可以考虑传递供
  • 在 Java 中使用 Batik 检查和删除 SVG 中的属性

    这个问题基本上说明了一切 如何检查 SVG 是否具有 viewBox 属性 我正在使用蜡染库 我需要这个 因为我需要 至少 通知用户有一个 viewBox 属性 我可以删除它吗 使用 org w3c dom 类 您可以按照以下方式做一些事情
  • 在 jTextfield 中禁用“粘贴”

    我有一个用 Swing awt 编写的应用程序 我想阻止用户将值粘贴到文本字段中 有没有办法在不使用动作监听器的情况下做到这一点 您可以使用 null 参数调用 setTransferHandler 如下所示 textComponent s
  • 对象数组的数组(二维数组)JNI

    我正在努力创建自定义对象类型 ShareStruct 的二维数组 jobjectArray ret jobjectArray ins jobjectArray outs jclass myClass env gt FindClass env
  • 使用 Apache POI Excel 写入特定单元格位置

    如果我有一个未排序的参数 x y z 列表 是否有一种简单的方法将它们写入使用 POI 创建的 Excel 文档中的特定单元格 就好像前两个参数是 X 和Y 坐标 例如 我有如下行 10 4 100 是否可以在第 10 行第 4 列的单元格
  • 本地开发的 Azure Functions 扩展包版本问题

    我有一个带有队列触发器的 Java 11 Azure 函数 该函数在部署到 Azure 时按预期工作 并正确从定义的服务总线主题中提取消息 但是 运行相同的功能locally除非我回滚版本 否则不起作用Azure Functions 绑定扩
  • 以有效的方式从 Map 中删除多个键?

    我有一个Map
  • JUnit5 平台启动器 API - 如果没有至少一个测试引擎,则无法创建启动器

    我正在尝试升级我们的自动化测试套件的测试能力以接受 JUnit5 测试并遵循JUnit 平台启动器 API 说明 https junit org junit5 docs current user guide launcher api我收到错
  • 如何在 MSSQL 中获取 CURRENT_DATE?

    我正在使用 jpa 3 o 和 Hibernate 我有一个命名查询 SELECT COUNT wt id FROM WPSTransaction wt WHERE wt createdDate gt CURRENT DATE WPSTra
  • 删除 JFX 中选项卡后面的灰色背景

    So is there any way to remove the gray area behind the tab s 我尝试过用 CSS 来做到这一点 但没有找到方法 要设置 tabpane 标题的背景颜色 请在 CSS 文件中写入 t
  • 如何使用Gson仅从Json反序列化某些特定字段?

    我有以下 JSON 字符串 channel bvmt initValues data value instrumentIds TN0007250012 TN0007500010 instruments mnemonic ADWYA marc
  • Android UnityPlayerActivity 操作栏

    我正在构建一个 Android 应用程序 其中包含 Unity 3d 交互体验 我已将 Unity 项目导入 Android Studio 但启动时该 Activity 是全屏的 并且不显示 Android 操作栏 我怎样才能做到这一点 整
  • 使用 PC/SC 读卡器验证 Ultralight EV1

    我在尝试使用 Java 中的 PC SC 读卡器 特别是 ACR1222L 验证 Ultralight EV1 卡时遇到问题 我能够使用 ISO 14443 3 标签的相应 APDU 在不受保护的标签上进行写入和读取 但是 我找不到运行 P
  • 如何制作一个makefile只用于编译一些java文件?

    我有三个java文件 名为A java B java C java A将创建对象B B将创建对象C 但我以前从未构建过makefile 有谁可以帮我构建一个 makefile 来编译这三个 java 文件吗 我应该使用什么工具来制作 mak
  • spring data jpa复合键重复键记录插入导致更新

    我有一个具有复合键的实体 我试图通过使用 spring data jpa 存储库到 mysql 数据库来持久化它 如下所示 Embeddable public class MobileVerificationKey implements S
  • Java/MongoDB 按日期查询

    我将一个值作为 java util Date 存储在我的集合中 但是当我查询以获取两个特定日期之间的值时 我最终得到的值超出了范围 这是我的代码 插入 BasicDBObject object new BasicDBObject objec
  • 如何建立与 FileZilla Server 1.2.0 的 FTPS 数据连接

    使用 Apache commons net 的 Java FTPSClient 进行会话恢复是一个已知问题 会话恢复是 FTPS 服务器数据连接所需的一项安全功能 Apache FTPSClient 不支持会话恢复 并且 JDK API 使
  • mybatis:使用带有 XML 配置的映射器接口作为全局参数

    我喜欢使用 XML 表示法来指定全局参数 例如连接字符串 我也喜欢 Mapper 注释 当我尝试将两者结合起来时 我得到这个例外 https stackoverflow com questions 4263832 type interfac

随机推荐

  • 100天精通Python(基础篇)——第2天:注释

    文章目录 一 注释的作用 二 单行注释如何定义 三 多行注释 一 注释的作用 1 注释是代码中的解释型语句 用来对代码内容进行注释 2 注释不是代码 不会被程序执行 二 单行注释如何定义 通过 号定义 建议在 和注释内容之间 间隔一个空格
  • 锚点

    在制作网页时 我们常常遇到需要添加侧边导航 通过点击导航让页面自动滚动到指定位置 如 电商网站的楼层 这就涉及到 a 标签的锚点应用 把它称为 锚点标签 一 锚点 我们想要让页面跳转到的位置 就是锚点 锚点是一种超链接 只不过它是页面内部的
  • 使用Html做一个简单的登陆页面

    目录 绪论 一 新建一个html项目 二 制作整体框架 三 使用CSS进行修饰 绪论 html作为一个常用的前端语言 使用的人群范围是很大的 如果你想要成为一个前端工程师 那必不可少的就要做一个登陆页面 登录页面一般就是账号和密码 另外还需
  • 一文读懂:什么是RFID

    在物联网领域 我们经常听到 RFID 这个词 接下来讲解一下 什么是 RFID 个人技术公众号 解决方案工程师 欢迎同领域的朋友关注 相互交流 RFID 全称为 Radio Frequency Identification 中文称 射频识别
  • VRRP与DHCP

    目录 一 VRRP 1 VRRP基本概述 2 VRRP基本机构 3 设备类型 4 工作原理 5 VRRP主备备份过程 二 DHCP 1 应用场景 2 工作原理 一 VRRP 1 VRRP基本概述 VRRP 虚拟路由器冗余协议 VRRP能够在
  • 软件架构之架构视图

    软件架构设计运用RUP4 1视图方法进行设计 4 1架构视图模型是1995年Philippe kruchen在 IEEE software 上发表的题为 The 4 1 View Model of Architecture 文 主要包括的架
  • Linux shell编程(三)shell脚本中的特殊变量详解

    1 环境变量 全局变量 环境变量一般使用export内置命令导出的变量 用于定义shell运行环境 保证shell命令能够正确执行 shell通过环境变量来确定登录的用户名等信息 所有的环境变量都是系统的全局变量 环境变量可以在命令行中创建
  • JMeter快速入门知识系列(12)----JMeter集合点

    12 1 集合点的定义 在性能测试过程中 为了真实模拟多个用户同时进行操作以度量服务器的处理能力 可以考虑同步虚拟用户以便恰好在同一时刻执行操作或发送请求 通过插入集合点可以较真实模拟多个用户并发操作 注意 虽然通过加入集合点可以约束请求同
  • Oracle为用户设置读权限

    Oracle 数据库中创建表只读用户 并为其设置密码永不过期 同义词 1 创建用户 create user test identified by 123456 default tablespace db temporary tablespa
  • Maven详细入门

    Maven 一 是什么 二 干什么 1 方便的依赖管理 2 统一的项目结构 3 标准的项目构建流程 三 怎么用 1 Maven坐标 2 依赖管理 2 1 依赖配置 2 2 依赖传递 2 3 依赖范围 2 4 生命周期 2 5 依赖原则 3
  • 利用cin.get()的特性实现输入的错误处理

    cin get读取数据cin get ch cin get读取字符串cin get 字符串名 长度 当括号内无参数时 读掉缓存取的一个数据 cin clear 重置错误输入标记 接受新的输入 如若cin位于测试条件中 则将被转换为bool类
  • 矩阵求导中的分母布局与分子布局

    最近在处理一些优化问题时 我才注意到 在不同的书籍 资料中函数 f x R n
  • Kubernetes轻量级日志工具Loki安装及踩坑记录

    Loki简介 Loki是Grafana出品的一个轻量级日志系统 熟悉ELK的都知道ELK使用起来的成本 而且仅仅是日志检索使用ELK的话有点大材小用了 Loki8技术栈中使用了以下组件 Promtail 用来将容器日志发送到 Loki 或者
  • Linux进程隐藏问题————显示隐藏进程

    阿里云云监控到有两台redis服务器CPU被某进程消耗400 cpu资源 系统查看Top 情况并未找到高消耗进程X7但CPU100 ni Netstat 查找到了一些异常请求 初步判断出组件被提权入侵了 尝试查找异常进程X7关联的文件 排查
  • 解决flutter showDialog下拉框,复选框等无法及时响应的问题

    使用StatefulBuilder showDialogr showDialog context context builder BuildContext ctx return StatefulBuilder builder BuildCo
  • Web Worker API

    Web Worker API Web Worker 使得在一个独立于 Web 应用程序主执行线程的后台线程中运行脚本操作成为可能 这样做的好处是可以在独立线程中执行费时的处理任务 使主线程 通常是 UI 线程 的运行不会被阻塞 放慢 Web
  • Kali 更换源(超详细,附国内优质镜像源地址)

    1 进入管理员下的控制台 2 输入密码后点击 授权 3 在控制台内输入下面的内容 vim etc apt sources list 4 敲击回车后会进入下面的页面 5 来到这个页面后的第一部是按键盘上的 i 键 左下角出现 插入 后说明操作
  • 使用APIKey定向加密对外接口案例

    使用API Key定向加密对外接口案例 整体思路 前端通过某种方式生成一个动态字段 例如时间戳 随机数 UUID 等 前端将动态字段和其他请求参数一起发送给后端 并对请求参数进行加密 后端通过相同的加密算法 使用动态字段生成 API KEY
  • Python解析库lxml与xpath用法总结

    本文主要围绕以xpath和lxml库进行展开 一 xpath 概念 xpath节点 xpath语法 xpath轴 xpath运算符 二 lxml的安装 lxml的使用 lxml案例 一 xpath 1 xpath概念 XPath 是一门在
  • 通用分页的详解(Java后端常用)

    目录 一 通用分页 1 1通用分页是什么 1 2使用通用分页有什么好处 1 3经常在哪使用通用分页 二 往常的通用分页实现及代码 三 通用分页的讲解 思路 具体实现代码 四 JUnit框架的使用 4 1JUnit框架是什么 4 2JUnit