centos7 开启端口

要在CentOS操作系统中开启端口,可以按照以下步骤操作:

使用命令firewall-cmd --zone=public --add-port=端口号/协议来开启指定端口。例如,要开启端口80的TCP协议,可以使用如下命令:
sudo firewall-cmd --zone=public --add-port=80/tcp
然后需要重新加载防火墙规则,以使更改生效。可以使用命令firewall-cmd --reload来重新加载规则:
sudo firewall-cmd --reload
可以使用命令firewall-cmd --list-ports来查看当前开启的端口列表:
sudo firewall-cmd --list-ports
通过以上步骤,您可以在CentOS系统中成功开启指定的端口。

mysql 中 使用order by进行排序,排序的字段是字符串加数字的形式

mysql 中 使用order by进行排序,但排序的字段是 字符串加数字的形式,如何排序?

如果字符串和数字的长度都是不确定的,可以通过更复杂的 SQL 语句来处理。这通常涉及将字符串和数字部分分开,然后进行排序。下面是一个处理这种情况的示例。

假设有一个表 your_table,字段名为 mixed_column

CREATE TABLE your_table (
    mixed_column VARCHAR(255)
);

INSERT INTO your_table (mixed_column) VALUES
('A1'), ('A2'), ('A10'), ('B1'), ('B2'), ('B10'), ('AA1'), ('AA2'), ('AA10');

可以使用以下查询来对字段进行排序:

SELECT * 
FROM your_table
ORDER BY
  -- 提取字符串部分
  SUBSTRING_INDEX(mixed_column, (SELECT SUBSTRING_INDEX(mixed_column, '', -1) FROM your_table WHERE mixed_column REGEXP '[0-9]' LIMIT 1), 1),
  -- 提取数字部分并填充到10位
  LPAD(
    IFNULL(
      SUBSTRING(mixed_column FROM LENGTH(SUBSTRING_INDEX(mixed_column, (SELECT SUBSTRING_INDEX(mixed_column, '', -1) FROM your_table WHERE mixed_column REGEXP '[0-9]' LIMIT 1), 1)) + 1), 
      '0'
    ),
    10, '0'
  );

解释:

  1. 提取字符串部分SUBSTRING_INDEX(mixed_column, (SELECT SUBSTRING_INDEX(mixed_column, '', -1) FROM your_table WHERE mixed_column REGEXP '[0-9]' LIMIT 1), 1) 通过正则表达式找出包含数字的子字符串的位置,并用 SUBSTRING_INDEX 提取字符串部分。

  2. 提取数字部分并填充到10位LPAD(...) 用前导零填充数字部分以确保数字按数值排序。IFNULL(SUBSTRING(...), '0') 用于处理没有数字部分的情况。

这个查询考虑了字符串和数字部分长度不确定的情况,并确保按照数值顺序排序。你可以根据实际情况进一步调整查询。如果数据库的字段和内容有更多的变化,还需要进一步调整正则表达式和字符串处理函数的参数。

Java 调用方法 方法名是个变量

在Java中,你可以使用反射来动态地调用方法,其中方法名是一个变量。以下是一个简单的示例:

import java.lang.reflect.Method;

public class Main {
    public static void main(String[] args) {
        try {
            // 创建一个包含方法名的字符串变量
            String methodName = "printMessage";

            // 获取类Main的Class对象
            Class<?> c = Main.class;

            // 使用Class对象和方法名获取Method对象
            Method method = c.getDeclaredMethod(methodName, String.class);

            // 创建一个实例对象
            Main mainInstance = new Main();

            // 使用Method对象和实例对象调用方法
            method.invoke(mainInstance, "Hello, World!");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void printMessage(String message) {
        System.out.println(message);
    }
}

在这个示例中,我们创建了一个名为methodName的字符串变量,它包含我们想要调用的方法的名称。然后,我们使用这个变量和getDeclaredMethod方法从Main类的Class对象获取Method对象。接下来,我们创建一个Main类的实例,并使用Method对象和实例调用方法。注意,我们需要传递一个参数类型给getDeclaredMethod方法,这告诉Java我们调用的方法需要一个什么样的参数。在这个例子中,我们假设方法需要一个String类型的参数。

需要注意的是,反射应该谨慎使用,因为它可能会破坏封装性并可能影响性能。你应该只在没有其他选择的情况下使用它,比如在编写框架、插件或其他需要在运行时动态加载和调用方法的代码时。

js 二维数组 的key 按照指定顺序排序

要按照指定顺序对 JavaScript 二维数组中的 key 进行排序,可以使用 Array.sort() 方法和传递一个自定义的排序函数。

例如,假设有以下二维数组:

const arr = [
  { name: 'Alice', age: 28 },
  { name: 'Bob', age: 21 },
  { name: 'Charlie', age: 35 },
  { name: 'David', age: 18 }
];

要按照 name 属性的特定顺序进行排序,可以按照以下方式调用 Array.sort() 方法:

const order = ['Charlie', 'Bob', 'David', 'Alice'];
arr.sort((a, b) => order.indexOf(a.name) - order.indexOf(b.name));

这将按照 ['Charlie', 'Bob', 'David', 'Alice'] 数组中指定的顺序对二维数组进行排序。

设置 Axios 请求类型为 form-data

const instance = axios.create({
    baseURL: "https://api.test.com",
    //设置axios为form-data
    headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
    transformRequest: [function (data) {
        let ret = ''
        for (let it in data) {
            ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
        }
        return ret
    }]
})