2024-08-08

在HTML5中,使用<link>标签来链接外部的CSS样式表是一种常见的实现字体集合的方式。以下是一个简单的HTML5文档,它链接了一个CSS样式表,该样式表使用了Google Fonts提供的字体集合:




<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>使用Google Fonts的HTML5文档</title>
    <!-- 链接Google Fonts -->
    <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap" rel="stylesheet">
    <style>
        body {
            font-family: 'Roboto', sans-serif;
        }
    </style>
</head>
<body>
    <h1>欢迎来到我的网站</h1>
    <p>这是一个使用Google Fonts字体的段落。</p>
</body>
</html>

在这个例子中,我们使用了<link>标签来链接一个CSS样式表,该样式表引入了两种Roboto字体的权重,即Regular(400)和Bold(700)。在<style>标签中,我们将bodyfont-family设置为'Roboto', sans-serif,这意味着除非特别指定,否则页面上的文本将使用Roboto字体。这是一种简单的实现网页字体集合的方法。

2024-08-08

在Linux系统中,文件权限是一种基本的安全机制。通过设置文件权限,我们可以控制谁可以读取、写入或执行文件。然而,有时我们可能需要临时或永久地提升我们对文件的权限,以完成某些任务。

在Linux中,有两种主要的方法可以解锁文件权限:

  1. 使用chmod命令:chmod是一个改变文件或文件夹权限的命令。我们可以使用它来改变文件的权限。

例如,如果你想要给所有用户添加对文件file.txt的读权限,你可以使用以下命令:




chmod a+r file.txt
  1. 使用sudo命令:sudo命令允许用户以其他用户(默认为root用户)的身份运行程序。我们可以使用它来运行需要较高权限的命令。

例如,如果你想要删除文件file.txt,但你没有足够的权限,你可以使用以下命令:




sudo rm file.txt

这两种方法都可以帮助你解锁文件权限,从而让你的系统更安全、更高效。

2024-08-08

在Linux上,您可以使用ip命令来快速为一个网卡配置多个IP地址。以下是一个示例,展示如何为名为eth0的网卡添加两个额外的IP地址。




# 添加第一个额外IP地址
ip addr add 192.168.1.10/24 dev eth0
 
# 添加第二个额外IP地址
ip addr add 192.168.1.11/24 dev eth0

确保替换192.168.1.10/24192.168.1.11/24为您想要配置的IP地址和子网掩码,并且eth0是您的网卡接口名称。

如果您希望这些配置是持久的,即使重启后也依然存在,您需要编辑网络配置文件,例如/etc/network/interfaces(Debian/Ubuntu系统)或者/etc/sysconfig/network-scripts/ifcfg-eth0(CentOS系统),并添加相应的配置行。

Debian/Ubuntu 示例:




sudo nano /etc/network/interfaces

添加以下内容:




auto eth0
iface eth0 inet static
    address 192.168.1.10
    netmask 255.255.255.0
    up ip addr add 192.168.1.11/24 dev eth0

CentOS 示例:




sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0

添加以下内容:




BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.10
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
IPADDR2=192.168.1.11
PREFIX2=24

请注意,每个发行版的配置文件格式可能不同,请根据您的实际情况进行相应的配置。

2024-08-08

Linux开机自启动脚本可以通过以下几种方法实现:

  1. 使用crontab@reboot选项

    在终端输入crontab -e,然后添加如下行:

    
    
    
    @reboot /path/to/your/script.sh
  2. 使用systemd服务

    创建一个新的systemd服务单元文件,例如/etc/systemd/system/your-service.service,内容如下:

    
    
    
    [Unit]
    Description=My startup script
     
    [Service]
    ExecStart=/path/to/your/script.sh
     
    [Install]
    WantedBy=multi-user.target

    启用并启动服务:

    
    
    
    sudo systemctl enable your-service.service
    sudo systemctl start your-service.service
  3. 使用rc.local(在较老的系统中)

    确保rc.local文件存在于/etc/init.d/目录下,并且具有执行权限。通常在rc.local中添加执行脚本的行:

    
    
    
    /path/to/your/script.sh

    确保给rc.local文件加上执行权限:

    
    
    
    sudo chmod +x /etc/rc.d/rc.local
  4. 使用/etc/rc.local(在较新的系统中)

    如果系统使用systemd,则rc.local可能不会被调用。在这种情况下,你可以创建一个自定义的systemd服务,该服务在multi-user.target启动级别执行。

每种方法都有其优点和适用场景,选择哪种方法取决于你的具体需求和Linux发行版。

2024-08-08

要在Linux系统上离线安装Redis,你需要先从网上下载Redis的源码包,然后将其拷贝到你的Linux机器上,接着编译并安装。以下是简化的步骤和示例代码:

  1. 在有网络的机器上下载Redis源码包:



wget http://download.redis.io/releases/redis-6.2.6.tar.gz
  1. 将下载的源码包拷贝到离线的Linux机器上(可以使用USB驱动器或者其他媒介)。
  2. 在离线的Linux机器上,解压源码包:



tar xzf redis-6.2.6.tar.gz
  1. 进入解压后的Redis目录:



cd redis-6.2.6
  1. 编译Redis(确保已安装gcc):



make
  1. 安装Redis(可选,将编译好的Redis可执行文件复制到系统路径下):



sudo make install
  1. 启动Redis服务器:



src/redis-server
  1. (可选)启动Redis客户端连接服务器:



src/redis-cli

请确保你的Linux系统已安装了编译Redis所需的依赖,如make和编译器(如gcc)。如果缺少依赖,你需要先在线系统上安装它们,然后同样将它们拷贝到离线的Linux机器上。

2024-08-08

在Linux环境中搭建Nacos 2.4.0版本并修改密码的步骤如下:

  1. 下载Nacos 2.4.0:



wget https://github.com/alibaba/nacos/releases/download/2.4.0/nacos-server-2.4.0.tar.gz
  1. 解压Nacos压缩包:



tar -zxvf nacos-server-2.4.0.tar.gz
  1. 进入Nacos目录:



cd nacos
  1. 修改密码,Nacos 2.4.0版本默认使用的是内嵌数据库Derby,如果要修改密码,需要切换到外部数据库如MySQL。

首先,在nacos/conf目录下创建MySQL配置文件application.properties(如果已存在则直接编辑),添加MySQL数据源配置:




spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=nacos
db.password=your_password

确保MySQL中已创建好名为nacos_config的数据库,并且有对应的用户名和密码。

  1. 初始化Nacos的MySQL数据库,Nacos源码包中nacos/conf目录下有SQL脚本文件,可以用来初始化数据库。

执行Nacos自带的SQL脚本文件,生成必要的表和数据:




mysql -u 用户名 -p 密码 < nacos/conf/nacos-mysql.sql
  1. 启动Nacos Server:



sh nacos/bin/startup.sh -m standalone

以上命令启动了Nacos,使用的是内嵌的Derby数据库,如果你已经将Nacos配置为使用MySQL,则不需要做任何额外的步骤来修改密码,因为密码已经存储在MySQL数据库中。

要修改已存储在MySQL中的密码,可以直接登录MySQL数据库,然后更新users表中的密码:




UPDATE users SET password=PASSWORD('新密码') WHERE username='nacos';

然后重启Nacos服务,新的密码将生效。

2024-08-08

以下是一个简单的例子,展示如何在Spring Boot应用程序中使用SSE(Server-Sent Events),以及如何在Vue.js应用程序中接收和展示这些事件。

Spring Boot端:

  1. 创建一个SSE控制器:



import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
 
@RestController
public class SseController {
 
    @GetMapping(path = "/stream-sse", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
    public SseEmitter handleSse() {
        SseEmitter emitter = new SseEmitter();
 
        // 在新线程中发送事件以避免阻塞主线程
        new Thread(() -> {
            try {
                for (int i = 0; i < 5; i++) {
                    emitter.send("data:" + i + "\n\n"); // 发送事件
                    Thread.sleep(1000); // 每秒发送一次
                }
                emitter.complete(); // 完成事件流发送
            } catch (Exception e) {
                emitter.completeWithError(e); // 发送错误
            }
        }).start();
 
        return emitter;
    }
}

Vue.js端:

  1. 在Vue组件中,创建一个EventSource实例来监听来自Spring Boot应用程序的SSE:



<template>
  <div>
    <h1>SSE Events</h1>
    <ul>
      <li v-for="(event, index) in events" :key="index">{{ event.data }}</li>
    </ul>
  </div>
</template>
 
<script>
export default {
  data() {
    return {
      events: [],
      eventSource: null
    };
  },
  created() {
    this.eventSource = new EventSource('/stream-sse');
    this.eventSource.onmessage = (event) => {
      this.events.push(event);
    };
    this.eventSource.onerror = (error) => {
      console.error(error);
    };
  },
  beforeDestroy() {
    this.eventSource.close();
  }
};
</script>

在这个例子中,我们创建了一个简单的SSE服务端点,在Spring Boot应用程序中发送一个数字序列,然后在Vue.js应用程序中接收和显示这些事件。这个例子提供了一个基本的SSE实现,并且可以根据具体需求进行扩展和修改。

2024-08-08

在Linux环境下,我们可以使用GDB(GNU Debugger)来调试程序。GDB是一种强大的程序调试工具,可以用来查看和修改程序的执行过程。

以下是一些基本的GDB命令:

  1. 启动GDB:



gdb [exec file]
  1. 在GDB中运行程序:



run

或者使用快捷键 r

  1. 设置断点:



break [line number]

或者使用快捷键 b

  1. 查看源代码:



list

或者使用快捷键 l

  1. 查看断点信息:



info breakpoints

或者使用快捷键 info b

  1. 单步执行:



next

或者使用快捷键 n

  1. 步入函数内部:



step

或者使用快捷键 s

  1. 步出函数:



finish
  1. 删除断点:



delete [breakpoint number]

或者使用快捷键 d

  1. 继续执行直到下一个断点:



continue

或者使用快捷键 c

  1. 查看变量的值:



print [variable name]

或者使用快捷键 p

  1. 退出GDB:



quit

或者使用快捷键 q

下面是一个简单的示例,演示如何使用GDB调试一个简单的C程序:




// hello.c
#include <stdio.h>
 
int main() {
    int i;
    for(i=0; i<10; i++) {
        printf("Hello, World! %d\n", i);
        if(i == 5) {
            printf("i is now 5\n");
            // breakpoint here
        }
    }
    return 0;
}

编译这个程序:




gcc -g -o hello hello.c

然后使用GDB调试它:




gdb hello

在GDB中,你可以设置断点,查看变量,单步执行等等。例如:




(gdb) break 11
(gdb) run
(gdb) next
(gdb) print i
(gdb) continue

以上就是GDB的基本使用方法,通过这些命令,你可以开始调试你的程序了。

2024-08-08

在Linux环境下,可以使用ntpdate命令或timedatectl命令来自动同步网络时间。以下是两种方法的示例:

方法1:使用ntpdate

  1. 安装ntpdate工具(如果尚未安装):

    
    
    
    sudo apt-get update
    sudo apt-get install ntpdate
  2. 同步时间:

    
    
    
    sudo ntpdate pool.ntp.org

方法2:使用timedatectl(适用于使用systemd的系统)

  1. 使timedatectl可用:

    
    
    
    timedatectl set-ntp true
  2. 如果需要,可以立即手动同步时间:

    
    
    
    sudo timedatectl set-timezone <Your_Timezone>
    sudo timedatectl set-ntp true

    替换<Your_Timezone>为你的时区,例如Europe/Berlin

以上两种方法任选其一即可实现自动网络时间同步。

2024-08-08

Docker 是一个开放源代码的应用容器引擎,能够自动化部署应用封装到一个程序库打包的一部分,然后在任何所选的系统上发布。

  1. 安装 Docker



# 使用官方Docker安装脚本自动安装Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
  1. 启动 Docker 服务



# 启动Docker服务
sudo systemctl start docker
 
# 开机自启动Docker服务
sudo systemctl enable docker
  1. 构建 Docker 镜像



# 使用Dockerfile构建Docker镜像
FROM ubuntu:18.04
RUN apt-get update && apt-get install -y \
    nginx \
    && rm -rf /var/lib/apt/lists/*
CMD ["nginx", "-g", "daemon off;"]

构建镜像:




docker build -t my-nginx-image .
  1. 运行 Docker 容器



# 运行Docker容器
docker run --name my-nginx-container -p 8080:80 -d my-nginx-image
  1. 查看 Docker 容器日志



# 查看Docker容器日志
docker logs my-nginx-container
  1. 停止 Docker 容器



# 停止Docker容器
docker stop my-nginx-container
  1. 删除 Docker 容器



# 删除Docker容器
docker rm my-nginx-container
  1. 删除 Docker 镜像



# 删除Docker镜像
docker rmi my-nginx-image

防火墙 iptables 是 Linux 下的一款强大的防火墙工具,它允许用户自定义链,并且按照自己定义的规则进行数据包的过滤和转发。

  1. 查看当前的规则



# 查看当前的规则
sudo iptables -L
  1. 添加新的规则



# 添加新的规则,允许所有进入的SSH连接
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  1. 删除规则



# 删除规则,假设是INPUT链的第一条规则
sudo iptables -D INPUT 1
  1. 保存规则



# 保存规则到iptables-rules文件
sudo iptables-save > /etc/iptables/rules
 
# 或者使用iptables-persistent包(Ubuntu/Debian)
sudo apt-get install iptables-persistent
  1. 恢复规则



# 从iptables-rules文件恢复规则
sudo iptables-restore < /etc/iptables/rules

以上是 Docker 和 iptables 的基本使用方法,实际使用中可能需要根据具体需求进行复杂操作。