当前位置: 首页 > news >正文

9.12日常记录

1.extern关键字

1)诞生动机:在一个C语言项目中,需要再多个文件中使用同一全局变量或是函数,那么就需要在这些文件中再声明一遍

2)用于声明在其他地方定义的一个变量或是函数,在当前位置只是声明,告诉编译器在链接阶段去其他地方找。 

 2.strcpy的缺陷

1.没有长度检查。

2.不返回有用的错误信息。

3.安全性问题。

2.1如何避免

1.可以使用strncpy函数,这个函数允许指定要复制的最大字符数,从而可以避免缓冲区溢出。

注意事项:如果源字符串的长度大于 n,那么目标字符串可能不会以空字符结尾。所以在使用 strncpy 后,可能需要手动确保目标字符串以空字符结尾,以避免后续字符串操作出现问题。

2.可以使用strlcpy函数,这个函数保证strlcpy 函数在复制字符串时会确保目标字符串以空字符结尾,并且最多复制指定的长度减一的字符数,以留出空间给空字符。

 3.重载,重写,覆盖,隐藏的区别

重载:在一个类中,函数名相同,参数列表不同。

重写:在派生类中,有和基类虚函数同名,同参数列表,同返回类型的函数,用于改变基类虚函数的行为。

覆盖:在C++中覆盖和重写同义

隐藏:在派生类中有与基类中非虚函数同名的函数,可以导致在派生类作用域中基类函数被隐藏。

4.踩内存

“踩内存”(memory corruption)通常是指程序错误地访问或修改了不属于它应该访问的内存区域。

4.1产生原因:

缓冲区溢出

野指针

数组越界访问

5.水平触发和边缘触发

 

6.select/poll和epoll

        select 和 poll 并没有本质区别,它们内部都是使用「线性结构」来存储进程关注的 Socket 集合。 在使用的时候,首先需要把关注的 Socket 集合通过 select/poll 系统调用从用户态拷贝到内核态,然后由内核检测事件,当有网络事件产生时,内核需要遍历进程关注 Socket 集合,找到对应的 Socket,并设置其状态为可读/可写,然后把整个 Socket 集合从内核态拷贝到用户态,用户态还要继续遍历整个 Socket 集合找到可读/可写的 Socket,然后对其处理。

        很明显发现,select 和 poll 的缺陷在于,当客户端越多,也就是 Socket 集合越大,Socket 集合的遍历和拷贝会带来很大的开销,因此也很难应对 C10K。

        epoll 在内核里使用「红黑树」来关注进程所有待检测的 Socket,红黑树是个高效的数据结构,增删改一般时间复杂度是 O(logn),通过对这棵黑红树的管理,不需要像 select/poll 在每次操作时都传入整个 Socket 集合,减少了内核和用户空间大量的数据拷贝和内存分配。         epoll 使用事件驱动的机制,内核里维护了一个「链表」来记录就绪事件,只将有事件发生的 Socket 集合传递给应用程序,不需要像 select/poll 那样轮询扫描整个集合(包含有和无事件的 Socket ),大大提高了检测的效率。

相关文章:

9.12日常记录

1.extern关键字 1)诞生动机:在一个C语言项目中,需要再多个文件中使用同一全局变量或是函数,那么就需要在这些文件中再声明一遍 2)用于声明在其他地方定义的一个变量或是函数,在当前位置只是声明,告诉编译器…...

光纤的两种模式

光纤主要分为两种模式:‌‌单模光纤(Single-Mode Fiber, SMF)‌和‌‌多模光纤(Multi-Mode Fiber, MMF)‌。这两种光纤在传输特性、应用场景以及传输距离上存在显著差异。‌12 单模光纤 ‌定义‌:单模光纤…...

SpringMVC的初理解

1. SpringMVC是对表述层(Controller)解决方案 主要是 1.简化前端参数接收( 形参列表 ) 2.简化后端数据响应(返回值) 1.数据的接受 1.路径的匹配 使用RequestMapping(可以在类上或在方法上),支持模糊查询,在内部有method附带…...

Python 基本库用法:数学建模

文章目录 前言数据预处理——sklearn.preprocessing数据标准化数据归一化另一种数据预处理数据二值化异常值处理 numpy 相关用法跳过 nan 值的方法——nansum和nanmean展开多维数组(变成类似list列表的形状)重复一个数组——np.tile 分组聚集——pandas.…...

Android Greendao的数据库复制到设备指定位置

方法如下: private void export() {// 确保您已经请求并获得了WRITE_EXTERNAL_STORAGE权限// 获取要储存的设备路径String picturesDirPath Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath();// 在公共目录下创建…...

Ajax 揭秘:异步 Web 交互的艺术

Ajax 揭秘:异步 Web 交互的艺术 一 . Ajax 的概述1.1 什么是 Ajax ?1.2 同步和异步的区别1.3 Ajax 的应用场景1.3.1 注册表单的用户名异步校验1.3.2 内容自动补全 二 . Ajax 的交互模型和传统交互模型的区别三 . Ajax 异步请求 axios3.1 axios 介绍3.1.1 使用步骤3…...

TitleBar:打造高效Android标题栏的新选择

在Android应用开发中,标题栏是用户界面的重要组成部分。一个好的标题栏不仅能够提升应用的专业感,还能增强用户体验。然而,传统的标题栏实现方式往往存在代码冗余、样式不统一、性能开销大等问题。今天,我们将介绍一个名为TitleBa…...

Lua协同程序Coroutine

Lua 协同程序(Coroutine) 定义 Lua 协同程序(Coroutine)与线程类似:拥有独立的堆栈、局部变量、指令指针,同时又与其它协同程序共享全局变量和其它大部分东西。 协同程序可以理解为一种特殊的线程,可以暂停和恢复其执行,从而允…...

【vue+帆软】帆软升级,从版本9升级到版本11,记录升级过程

帆软要升级,记录下过程 1、帆软官网地址必不可少,戳这里,跳转帆软官网 点击前端开发指南 点击JS API 跳转过来就是版本11 一直往下翻,在最底部有个2.2 在Web中使用,圈起来的就是要引入到index.html中的脚本 在项…...

linux从0到1 基础完整知识

1. Linux系统概述 Linux是一种开源操作系统,与Windows或macOS等操作系统不同,Linux允许用户自由地查看、修改和分发其源代码。以下是Linux系统的一些显著的优势。 稳定性和可靠性: 内核以其稳定性而闻名,能够持续运行数月甚至数…...

“人大金仓”正式更名为“电科金仓”; TDSQL-C支持回收站/并行DDL等功能; BigQuery支持直接查询AlloyDB

重要更新 1. “人大金仓”正式更名为“电科金仓”,完整名称“中电科金仓(北京)科技股份有限公司”,突出金仓是中国电子科技集团有限公司在基础软件领域产品( [1] ) 。据悉人大金仓在上半年营收入为9056万元,净利润约21…...

大模型微调 - 用PEFT来配置和应用 LoRA 微调

大模型微调 - 用PEFT来配置和应用 LoRA 微调 flyfish PEFT(Parameter-Efficient Fine-Tuning)是一种参数高效微调库,旨在减少微调大型预训练模型时需要更新的参数量,而不影响最终模型的性能。它支持几种不同的微调方法&#xff…...

Ubuntu构建只读文件系统

本文介绍Ubuntu构建只读文件系统。 嵌入式系统使用过程中,有时会涉及到非法关机(比如直接关机,或意外断电),这可能造成文件系统损坏,为了提高系统的可靠性,通常将根文件系统设置为只读&#xf…...

【黑金系】金融UI/UX体验设计师面试作品集 Figma源文件分享

在数字金融时代,UI/UX体验设计师扮演着至关重要的角色。他们不仅塑造着产品的界面,更引领着用户的使用体验。我们的面试作品集,正是这样一部展现金融UI/UX设计魅力的宝典。 这套作品集汇聚了众多经典案例,每一处设计都经过精心雕…...

Golang | Leetcode Golang题解之第392题判断子序列

题目&#xff1a; 题解&#xff1a; func isSubsequence(s string, t string) bool {n, m : len(s), len(t)f : make([][26]int, m 1)for i : 0; i < 26; i {f[m][i] m}for i : m - 1; i > 0; i-- {for j : 0; j < 26; j {if t[i] byte(j a) {f[i][j] i} else {…...

Liunx常用指令

1. 文件和目录管理 ls 用法&#xff1a;ls [选项] [文件/目录]示例&#xff1a;ls -l&#xff08;以长列表格式显示&#xff09;&#xff0c;ls -a&#xff08;显示所有文件&#xff0c;包括隐藏文件&#xff09;。 cd 用法&#xff1a;cd [目录]示例&#xff1a;cd ..&#xf…...

CSS基础:浮动(float)如何使用清楚以及代替方法

浮动元素在 CSS 中主要通过 float 属性来控制&#xff0c;影响元素的排列方式。浮动用于创建流式布局&#xff0c;常用于实现图文混排、布局列等效果。以下是浮动元素的相关属性和使用方法&#xff1a; 1. 基本浮动属性 float: 控制元素的浮动方向&#xff0c;可以设置为 left…...

margin重叠该怎么解决?

在CSS中&#xff0c;当两个或多个垂直相邻的块级元素&#xff08;如<div>&#xff09;的margin相遇时&#xff0c;它们不会叠加成两个margin的和&#xff0c;而是会取两个margin中的较大值&#xff0c;这种现象被称为“margin重叠”&#xff08;margin collapsing&#x…...

Linux学习笔记(黑马程序员,前四章节)

第一章 快照 虚拟机快照&#xff1a; 通俗来说&#xff0c;在学习阶段我们无法避免的可能损坏Linux操作系统&#xff0c;如果损坏的话&#xff0c;重新安装一个Linux操作系统就会十分麻烦。VMware虚拟机支持为虚拟机制作快照。通过快照将当前虚拟机的状态保存下来&#xff0c;…...

tekton pipeline resources

PipelineResource 代表着一系列的资源&#xff0c;主要承担作为 Task 的输入或者输出的作用。它有以下几种类型&#xff1a; git&#xff1a;代表一个 git 仓库&#xff0c;包含了需要被构建的源代码。将 git 资源作为 Task 的 Input&#xff0c;会自动 clone 此 git 仓库。pu…...

专业无人机日志分析工具:UAV Log Viewer 让飞行数据分析更简单高效

专业无人机日志分析工具&#xff1a;UAV Log Viewer 让飞行数据分析更简单高效 【免费下载链接】UAVLogViewer An online viewer for UAV log files 项目地址: https://gitcode.com/gh_mirrors/ua/UAVLogViewer 无人机飞行日志分析是每个飞手和专业团队必须掌握的技能&a…...

Threadline MCP:基于消息协议的线程管理与任务编排框架解析

1. 项目概述&#xff1a;从“Threadline MCP”看现代应用架构的线程管理革新最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“vidursharma202-del/threadline-mcp”。光看这个名字&#xff0c;可能有点摸不着头脑&#xff0c;但拆解一下&#xff0c;“threadline”直译是…...

workout-cool项目实战:构建自动化运动数据流,打通健康管理与效率工具

1. 项目概述与核心价值 最近在健身圈和开发者社区里&#xff0c;一个叫“workout-cool”的项目热度悄然攀升。乍一看这个标题&#xff0c;你可能会觉得它只是一个简单的健身记录工具&#xff0c;但当你真正深入进去&#xff0c;会发现它远不止于此。作为一个长期在健康科技和效…...

3D打印操作辅助工具:自制安全高效的“过来放大器”

1. 项目概述&#xff1a;当3D打印遇上“过来”放大器在3D打印这个行当里折腾了这么多年&#xff0c;我见过各种稀奇古怪的“魔改”和“土法炼钢”&#xff0c;但最近一个朋友工作室里出现的一个小玩意儿&#xff0c;还是让我眼前一亮。他管它叫“3D打印设备专用过来放大器”。初…...

Python 开发者五分钟接入 Taotoken 调用 GPT 与 Claude 模型

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Python 开发者五分钟接入 Taotoken 调用 GPT 与 Claude 模型 对于需要在项目中集成大语言模型的 Python 开发者而言&#xff0c;逐…...

多线程渲染与路径算法重构:HiveWE如何革新魔兽争霸III地图编辑

多线程渲染与路径算法重构&#xff1a;HiveWE如何革新魔兽争霸III地图编辑 【免费下载链接】HiveWE A Warcraft III world editor. 项目地址: https://gitcode.com/gh_mirrors/hi/HiveWE 技术痛点&#xff1a;二十年技术债务下的地图创作瓶颈 魔兽争霸III地图编辑器自2…...

别再死记硬背真值表了!用Verilog手搓半减器/全减器,从波形图反推逻辑门设计

从波形图反推逻辑门&#xff1a;Verilog减法器的逆向工程实践 数字电路初学者常陷入"真值表→逻辑表达式→电路实现"的传统学习路径&#xff0c;却难以理解信号流动的本质。本文将以波形图逆向分析为核心&#xff0c;带您用Verilog实现半减器与全减器&#xff0c;掌握…...

基于Go与Croc构建Telegram文件传输机器人:原理、部署与优化

1. 项目概述&#xff1a;一个基于Go的轻量级文件传输机器人 如果你经常需要在不同的设备、服务器或者聊天群组之间快速分享文件&#xff0c;并且对安全性、速度和便捷性有一定要求&#xff0c;那么你很可能已经厌倦了那些需要注册账号、上传到第三方服务器、或者操作繁琐的命令…...

构建企业级金融数据采集系统:AKShare进阶实战指南

构建企业级金融数据采集系统&#xff1a;AKShare进阶实战指南 【免费下载链接】akshare AKShare is an elegant and simple financial data interface library for Python, built for human beings! 开源财经数据接口库 项目地址: https://gitcode.com/gh_mirrors/aks/akshar…...

别再死记硬背节点了!用UE5蓝图系统,像搭积木一样做出你的第一个会动的潜艇

用UE5蓝图系统零代码实现潜艇动画&#xff1a;可视化编程的积木式入门指南 当第一次打开虚幻引擎5的蓝图编辑器时&#xff0c;许多初学者会被密密麻麻的节点和连线吓退。但想象一下&#xff0c;如果这些节点不是晦涩的代码符号&#xff0c;而是乐高积木般的可视化指令块——这就…...