常用的位运算技巧及其意义
位运算在计算机科学中非常常见,因其高效性和灵活性而被广泛使用。以下是一些常用的位运算技巧及其意义: 1. 按位与(AND) 操作符:& 含义:对两个操作数的每一位执行与操作。如果两个相应的位都为1,则结果为1;否则为0。 应用: 提取状态位:在一个位掩码中提取特定的状态位。 清除位:通过与一个掩码进行与操作来清除某些位。例如,x & ~mask 可以清除 x 中 mask 指定的位置为1的位。 检查标志:检查一个位掩码中的某些标志是否被设置。 2. 按位或(OR) 操作符:| 含义:对两个操作数的每一位执行或操作。如果两个相应的位中至少有一个为1,则结果为1;否则为0。 应用: 设置标志:通过与一个掩码进行或操作来设置某些标志。例如,x | mask 可以设置 x 中 mask 指定的位置为1的位。 合并状态:合并多个位掩码的状态。 3. 按位异或(XOR) 操作符:^ 含义:对两个操作数的每一位执行异或操作。如果两个相应的位不同,则结果为1;否则为0。 应用: 切换标志:通过异或操作来切换某些标志。例如,x ^ mask 可以切换 x 中 mask...
操作系统概论 进程调度算法
在操作系统中,进程调度算法用于决定哪个进程应该在何时获得CPU的使用权。不同的调度算法有不同的目标和适用场景。以下是一些常见的进程调度算法: 先来先服务调度算法(FCFS)描述:按照进程到达就绪队列的顺序分配CPU,选择最先到达的进程。 优点:简单、公平,适合长进程。 缺点:短进程等待时间可能过长,不利于提高系统吞吐量。 短进程优先调度算法(SPF)描述:优先选择预计运行时间最短的进程。 优点:降低平均等待时间,提高吞吐量。 缺点:长进程可能“饥饿”,无法保证紧急任务的及时处理。 优先权调度算法分类: 非抢占式:高优先级进程需等待当前进程主动释放CPU。 抢占式:允许高优先级进程抢占正在运行的进程。 问题:低优先级进程可能无限期等待,需通过“老化技术”调整优先级。 时间片轮转调度算法(RR)描述:将CPU时间划分为固定时间片,进程按队列轮流执行一个时间片。 特点: 公平且响应时间快。 时间片大小需权衡响应时间和系统开销(如过大退化为FCFS,过小增加切换开销)。...
操作系统概论 操作系统的主要特征
操作系统的主要特征包括以下几个方面: 并发(Concurrency)并发是指在操作系统中,多个事件或任务可以在同一时间段内发生。这些事件或任务可以是进程、线程或中断服务例程。并发性使得系统能够更有效地利用资源,提高系统的吞吐量和响应时间。 共享(Sharing)共享是指系统中的资源(如处理器、内存、设备等)可以被多个并发执行的进程共同使用。资源共享可以通过互斥共享和同时共享两种方式进行。互斥共享是指资源在同一时间只能被一个进程使用,而同时共享则允许多个进程同时访问资源。 虚拟(Virtualization)虚拟化是指通过某种技术将一个物理实体(如处理器、内存、设备等)变成多个逻辑上的对应物。操作系统通过虚拟化技术,为用户提供比实际物理资源更多的资源,从而提高资源的利用率和系统的灵活性。 异步性(Asynchrony)异步性是指进程的执行不是按照固定的顺序进行的,而是以不可预知的速度向前推进。这种特性使得系统能够更好地应对不确定的外部环境和内部事件,提高系统的适应性和鲁棒性。
微信小程序 常用的 WXSS、CSS 样式及组合
以下是一些微信小程序中常用的 WXSS、CSS 样式及常用组合,帮助你快速开发界面: 一、常用布局样式1. Flex 布局(最常用).container { display: flex; flex-direction: row; /* 横向排列(默认) */ justify-content: space-between; /* 两端对齐 */ align-items: center; /* 垂直居中 */ } /* 垂直方向布局 */ .vertical-container { display: flex; flex-direction: column; align-items: center; } /* 自动填充剩余空间 */ .flex-item { flex: 1; } 2. Grid 布局.grid-container { display: grid; grid-template-columns: repeat(3, 1fr); /* 三列等宽 */ ...
Python PyJWT介绍
PyJWT 是一个用于生成和验证 JSON Web Tokens (JWT) 的 Python 库。它支持多种加密算法,并且易于使用。以下是 PyJWT 的一些主要功能和使用示例。 安装 PyJWT你可以使用 pip 安装 PyJWT: pip install pyjwt 生成 JWT使用 PyJWT 生成 JWT 非常简单。以下是一个使用对称加密算法(HS256)生成 JWT 的示例: import jwt import datetime def generate_jwt(user_id): payload = { 'user_id': user_id, 'exp': datetime.datetime.now(datetime.timezone.utc) + datetime.timedelta(hours=1) } token = jwt.encode(payload, 'secret_key', algorithm='HS256') return token #...
Django CSRF Exempt 理解与应用
Django CSRF Exempt 理解与应用在使用 Django 框架进行 Web 开发时,跨站请求伪造(CSRF, Cross-Site Request Forgery)是一个常见的安全问题。Django 提供了内置的 CSRF 保护机制,以防止恶意网站通过用户的浏览器向你的网站发送未经授权的请求。然而,在某些情况下,我们可能需要禁用 CSRF 保护,以便 API 或特定的视图能够正常工作。本文将深入讲解如何使用 csrf_exempt 装饰器来禁用 CSRF 保护,并讨论其合理应用场景。 什么是 CSRF?跨站请求伪造是一种攻击技术,攻击者通过诱导用户访问一个恶意网站,利用用户的 cookies、session 或其他身份验证信息,在用户不知情的情况下,向另一个网站发送请求。这种攻击通常发生在用户已经登录了目标网站,而攻击者利用这一点向目标网站发送伪造请求。 Django 的 CSRF 保护机制Django 默认启用了 CSRF 保护机制,通过在每个 POST 请求中插入一个 CSRF token,确保只有从同一网站发起的请求能够修改数据。 在 Django...
Django 接入 MySQL
Django 接入 MySQL 教程本文将详细介绍如何在 Django 项目中接入 MySQL 数据库,跳过 Django 的基础介绍,直接进入主题。 1. 安装 MySQL 数据库驱动首先,确保已安装 MySQL 数据库驱动。Django 官方推荐使用 mysqlclient,可以通过以下命令安装: pip install mysqlclient 如果安装 mysqlclient 遇到问题,可以改用 pymysql: pip install pymysql 并在项目的 __init__.py 中添加以下代码: import pymysql pymysql.install_as_MySQLdb() 2. 配置 MySQL 数据库连接在 Django 项目的 settings.py 文件中,找到 DATABASES 配置项,修改为以下内容: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME':...
Django 介绍
Django 介绍Django 是一个高级 Python Web 框架,旨在帮助开发者快速构建复杂且安全的 Web 应用程序。它遵循“不要重复自己”(DRY)原则,提供了许多内置功能,如用户认证、数据库管理、模板引擎等。 Django 的核心功能 ORM(对象关系映射):允许开发者使用 Python 代码操作数据库,而无需直接编写 SQL。 模板引擎:用于生成动态 HTML 页面。 用户认证:内置的用户认证系统,支持注册、登录、权限管理等功能。 管理后台:自动生成的管理界面,方便管理数据库内容。 Django REST framework 介绍Django REST framework(DRF)是 Django 的一个扩展库,专门用于构建 Web API。它提供了强大的序列化、视图、路由和认证功能,使得构建 RESTful API 变得更加简单。 DRF 的核心功能 序列化:将复杂的数据类型(如模型实例)转换为 JSON 或其他格式。 视图和视图集:简化 API 视图的编写,支持 CRUD 操作。 认证和权限:支持多种认证方式(如 Token、Session...
Python inspect介绍
简介inspect模块提供了许多有用的函数来帮助我们获取活动对象的信息,如模块、类、方法、函数、回溯等。它对于调试、元编程以及需要动态分析代码的场景非常有用。 核心功能获取源代码信息import inspect def my_function(): pass print(inspect.getsource(my_function)) 获取类或函数的参数信息import inspect def greet(name, greeting="Hello"): return f"{greeting}, {name}" signature = inspect.signature(greet) print(signature) 获取调用栈信息import inspect def foo(): caller_frame = inspect.currentframe().f_back print(f"Caller: {caller_frame.f_code.co_name}") def...
Git 初学指南
学习 git 记录官方地址:https://learngitbranching.js.org/?locale=zh_CN 介绍 Git 网络传输从 SSH 到 HTTP 防止数据丢失:分布式版本控制系统(DVCS),客户端每一次克隆操作,实际上都是一次对代码仓库的完整备份 特点 直接记录快照,而非比较差异 近乎所有操作都是本地执行,历史信息 保证完整性,计算校验和 SHA-1 散列(hash,哈希),保存的信息以文件内容的哈希值来索引 一般只添加数据 三种状态 已提交(committed) 表示数据已经安全地保存在本地数据库中 已修改(modified) 表示修改了文件,但还没保存到数据库中 已暂存(staged) 表示一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中 三个阶段 工作区(working directory) 是对某个版本独立提取出来的内容,存放磁盘 暂存区(staging area) 是一个文件,保存了下次将要提交的文件列表信息,也叫索引 Git 目录(.git directory(repository)) Git...
Cocos Creator 绘制多边形属性图
具体代码如下:import { _decorator, Color, Component, Graphics, Vec2 } from 'cc'; const { ccclass, property } = _decorator; export interface RadarData { values: number[]; lineWidth?: number; lineColor?: Color; fillColor?: Color; joinColor?: Color; } @ccclass('RadarMap') export class RadarMap extends Component { private _graphics: Graphics; @property offsetAngle: number = 90; @property ...
Cocos Creator 自定义扩展实现创建文件夹及文件
cocos版本:Cocos Creator 3.7.2自定义扩展创建流程请参考官方文档 -> 跳转 package.json 配置里加入代码生成菜单按钮 "contributions": { "menu": [ { "path": "tools/test", "label": "测试", "message": "test_click" } ], "messages": { "test_click": { "methods": ["test_click"] } } }, main.ts 中增加点击执行的函数 export const methods: { [key: string]: (...any: any) => any } = { openPanel()...







