欢迎来到我的博客
这里会分享一些技术知识、生活感悟和阅读心得。
使用 Node.js 生成 Token
发布时间:2025 年 3 月 1 日
在 Web 开发中,Token 是一种常见的身份验证方式。下面是一个使用 Node.js 和 `jsonwebtoken` 库生成 Token 的示例代码:
const jwt = require('jsonwebtoken');
// 密钥
const secretKey = 'your_secret_key';
// 用户信息
const user = {
id: 1,
username: 'example_user'
};
// 生成 Token
const token = jwt.sign(user, secretKey, { expiresIn: '1h' });
console.log('生成的 Token:', token);
在上述代码中,我们使用 `jsonwebtoken` 库的 `sign` 方法生成了一个有效期为 1 小时的 Token。
国密算法 SM2 简单示例
发布时间:2025 年 3 月 2 日
国密算法 SM2 是一种椭圆曲线公钥密码算法,下面是一个使用 `gm-crypto` 库进行 SM2 加密和解密的简单示例:
const sm2 = require('gm-crypto').sm2;
// 生成密钥对
const keypair = sm2.generateKeyPairHex();
const publicKey = keypair.publicKey;
const privateKey = keypair.privateKey;
// 待加密的明文
const plaintext = 'Hello, SM2!';
// 加密
const ciphertext = sm2.doEncrypt(plaintext, publicKey, 1);
// 解密
const decryptedText = sm2.doDecrypt(ciphertext, privateKey, 1);
console.log('加密后的密文:', ciphertext);
console.log('解密后的明文:', decryptedText);
上述代码展示了如何使用 `gm-crypto` 库生成 SM2 密钥对,并进行加密和解密操作。
对称加密算法 AES 示例
发布时间:2025 年 3 月 3 日
AES 是一种常用的对称加密算法,下面是一个使用 Node.js 的 `crypto` 模块进行 AES 加密和解密的示例:
const crypto = require('crypto');
// 密钥和初始化向量
const key = crypto.randomBytes(32);
const iv = crypto.randomBytes(16);
// 待加密的明文
const plaintext = 'Hello, AES!';
// 创建加密器
const cipher = crypto.createCipheriv('aes-256-cbc', key, iv);
// 加密
let encrypted = cipher.update(plaintext, 'utf8', 'hex');
encrypted += cipher.final('hex');
// 创建解密器
const decipher = crypto.createDecipheriv('aes-256-cbc', key, iv);
// 解密
let decrypted = decipher.update(encrypted, 'hex', 'utf8');
decrypted += decipher.final('utf8');
console.log('加密后的密文:', encrypted);
console.log('解密后的明文:', decrypted);
此代码使用 AES-256-CBC 模式对明文进行加密和解密操作。
Docker 基础使用:运行一个简单的 Nginx 容器
发布时间:2025 年 3 月 4 日
Docker 是一种容器化技术,能够帮助我们快速部署应用。以下是使用 Docker 运行一个简单的 Nginx 容器的示例:
# 拉取 Nginx 镜像
docker pull nginx
# 运行 Nginx 容器
docker run -d -p 8080:80 nginx
上述代码中,首先使用 `docker pull` 命令拉取 Nginx 镜像,然后使用 `docker run` 命令在后台运行一个 Nginx 容器,并将容器的 80 端口映射到主机的 8080 端口。
Vue 组件化开发:创建一个简单的计数器组件
发布时间:2025 年 3 月 5 日
Vue 的组件化开发可以提高代码的可维护性和复用性。以下是一个简单的计数器组件示例:
<template>
<div>
<button @click="decrement">-</button>
<span>{{ count }}</span>
<button @click="increment">+</button>
</div>
</template>
<script>
export default {
data() {
return {
count: 0
};
},
methods: {
increment() {
this.count++;
},
decrement() {
this.count--;
}
}
};
</script>
在这个组件中,我们定义了一个 `count` 数据属性,并提供了 `increment` 和 `decrement` 方法来增加和减少计数器的值。
C# 委托和事件:实现一个简单的事件通知系统
发布时间:2025 年 3 月 6 日
在 C# 中,委托和事件是实现事件驱动编程的重要机制。以下是一个简单的事件通知系统示例:
using System;
// 定义委托
public delegate void NotificationEventHandler(string message);
// 发布者类
public class Publisher
{
public event NotificationEventHandler Notification;
public void SendNotification(string message)
{
Notification?.Invoke(message);
}
}
// 订阅者类
public class Subscriber
{
public void ReceiveNotification(string message)
{
Console.WriteLine($"Received notification: {message}");
}
}
class Program
{
static void Main()
{
Publisher publisher = new Publisher();
Subscriber subscriber = new Subscriber();
// 订阅事件
publisher.Notification += subscriber.ReceiveNotification;
// 发布通知
publisher.SendNotification("Hello, World!");
}
}
在这个示例中,我们定义了一个委托 `NotificationEventHandler`,并在 `Publisher` 类中声明了一个事件 `Notification`。`Subscriber` 类订阅了这个事件,并在事件触发时接收通知。
Python 数据分析基础:使用 Pandas 读取和处理 CSV 文件
发布时间:2025 年 3 月 7 日
Pandas 是 Python 中用于数据分析的强大库。以下是使用 Pandas 读取和处理 CSV 文件的示例:
import pandas as pd
# 读取 CSV 文件
data = pd.read_csv('data.csv')
# 查看数据基本信息
print(data.info())
# 查看数据集行数和列数
rows, columns = data.shape
if rows > 0:
# 查看数据前几行
print(data.head().to_csv(sep='\t', na_rep='nan'))
else:
print('数据为空')
在这个示例中,我们使用 `pandas` 的 `read_csv` 函数读取一个 CSV 文件,并使用 `info` 方法查看数据的基本信息,使用 `head` 方法查看数据的前几行。
Python 爬虫入门:使用 Requests 和 BeautifulSoup 抓取网页数据
发布时间:2025 年 3 月 8 日
Python 可以很方便地实现网页数据的抓取。以下是一个简单的爬虫示例,使用 `requests` 库发送 HTTP 请求,使用 `BeautifulSoup` 库解析 HTML 内容:
import requests
from bs4 import BeautifulSoup
# 发送 HTTP 请求
url = 'https://example.com'
response = requests.get(url)
# 解析 HTML 内容
soup = BeautifulSoup(response.text, 'html.parser')
# 查找所有的链接
links = soup.find_all('a')
for link in links:
print(link.get('href'))
在这个示例中,我们首先使用 `requests` 库发送一个 GET 请求获取网页内容,然后使用 `BeautifulSoup` 库将 HTML 内容解析为可操作的对象,最后查找所有的链接并打印出来。
生活随笔
生活中总有一些美好的瞬间值得记录,比如和朋友的一次聚会,一次难忘的旅行。
手工制作:纸艺花朵
发布时间:2025 年 3 月 4 日
最近尝试了用纸制作花朵,过程很有趣。首先准备好彩色纸张、剪刀、胶水和细铁丝。将纸张剪成花瓣形状,然后用胶水将花瓣一片片粘贴起来,最后将铁丝插入花芯固定。这样一朵漂亮的纸艺花朵就完成啦,摆在桌上非常美观。
手工编织:手链
发布时间:2025 年 3 月 5 日
周末闲来无事,尝试了手工编织手链。买了一些彩色的丝线和珠子,按照教程一步步编织。虽然一开始有些生疏,但慢慢就熟练起来了。最后编织出的手链很有成就感,还可以送给朋友当作礼物。
陶艺制作:小杯子
发布时间:2025 年 3 月 6 日
去陶艺工作室体验了一把陶艺制作,做了一个小杯子。揉泥、塑形、刻画,每一个步骤都充满了乐趣。看着自己亲手制作的杯子从一团泥土变成一个有模有样的杯子,真的很有满足感。等烧制完成后,就可以用它来喝茶啦。
阅读推荐
以下是我近期阅读的一些好书推荐:
- 《代码大全》 - 经典的编程书籍,涵盖了软件开发的各个方面。
- 《人类简史:从动物到上帝》 - 以全新的视角讲述人类的历史。
关于我
我是一名热爱编程和分享的开发者,希望通过这个博客记录自己的学习和成长。
日 | 一 | 二 | 三 | 四 | 五 | 六 |
---|