我是一个小石头
码龄8年
关注
提问 私信
  • 博客:91,965
    91,965
    总访问量
  • 46
    原创
  • 837,852
    排名
  • 89
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:北京市
  • 加入CSDN时间: 2016-06-06
博客简介:

qq_35238352的博客

查看详细资料
个人成就
  • 获得46次点赞
  • 内容获得19次评论
  • 获得201次收藏
创作历程
  • 8篇
    2021年
  • 45篇
    2020年
  • 20篇
    2019年
成就勋章
TA的专栏
  • 算法
    17篇
  • 软件开发
    53篇
  • Win10
    1篇
  • 深度学习
    2篇
兴趣领域 设置
  • 人工智能
    opencv语音识别计算机视觉机器学习深度学习神经网络自然语言处理tensorflowpytorch图像处理nlp数据分析
创作活动更多

HarmonyOS开发者社区有奖征文来啦!

用文字记录下您与HarmonyOS的故事。参与活动,还有机会赢奖,快来加入我们吧!

0人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

C++数组初始化与遍历

现象加括号 auto func = [](int n){ int *B=new int[n](); // 这里加了括号 for(int i=0;i<n;i++){ std::cout<<B[i]<<" "; } std::cout<<std::endl; delete[] B; }; func(5);Linux下/Mac下输出结果一致:0 0 0 0 0
原创
发布博客 2021.08.26 ·
658 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

数据总线、地址总线、控制总线

数据总线、地址总线、控制总线这三者分别对应在计算机中的有效信息的三个基本属性:内容、指向、行为。对应到这篇文章中:数据总线是CPU与内存或其他器件之间的数据传送的通道,它的宽度就是总共有多少根数据线来传数据,1根线能传1位,这个数对应字长,也就是同一时间可以处理的二进制位数,我们通常所说的多少位处理器中的多少位,就是指的数据总线宽度。CPU通过地址总线来指定存储单元,地址总线的宽度就是能寻址到的地址的位数,最小寻址单位是字节,比如32位寻址,那寻址空间就是2^32B=4GB这么大的内存空间,我们通常所
原创
发布博客 2021.07.25 ·
7952 阅读 ·
0 点赞 ·
0 评论 ·
19 收藏

const与#define的区别?

1. const的用法1.1 const可以修饰哪些变量?1.1.1 普通变量比如基本类型int、float等。const int a;float const b; // const 写前写后都可以1.1.2 指针变量这里2. #define的用法在预处理阶段,会对内容做简单替换。#define 比如上面这段内容,在经过预处理阶段后,就会变成下面这样。...
原创
发布博客 2021.07.24 ·
285 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

如何用协程解决经典并发问题(生产者消费者、读者写者等)

2.golang的协程实现的核心原理,与现有的pthread进行一些对比6.对腾讯libco协程库进行原理与架构的分析腾讯libco的架构从上到下(从高层到底层)可以分为三大部分:libco接口层系统函数hook层事件驱动层lib接口层lib接口层可以理解为暴露给用户直接使用的库函数/宏定义,主要目的是让用户在尽可能不改变原有业务逻辑的情况下实现原先基于线程的调度方案到现在基于协程调度方案的转变。从具体功能上可以将该层拆分为三个模块:协程原语、协程信号量、协程私有变量。协程原语int
原创
发布博客 2021.07.21 ·
195 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Golang GMP模型和pthread库的异同

首先需要明确的是这两者根本不是一个维度的东西。Golang的GMP是Golang从语言层级支持的协程实现模型,而pthread则是遵从POSIX接口规范的线程库。这里只是由于参加比赛的缘故,所以将这两者联系到了一起。相同点1.都需要在切换时保存相应的上下文,都有运行时栈的概念。不同点1.Golang在语言层级实现了协程,对用户隐藏的细节会更多一些,对用户来说更加易用一些,直接go一个函数,底层就会帮你实现复杂的调度逻辑,尽可能榨干CPU计算性能,而pthread的话,需要用户的多线程编程经验要多
原创
发布博客 2021.07.21 ·
255 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

对于Golang中GMP模型的理解

GMP模型1 概念介绍2 调度器策略2.1 线程复用work stealing机制hand off机制2.2 控制并行2.3 抢占原则3 调度器生命周期1 概念介绍golang协程实现的核心机制是GMP。G代表goroutine协程,M代表内核态线程,P代表处理器(不等同于CPU核心)。整个GMP模型从下往上可以按照程序空间分为两部分:运行在内核态的部分、运行在用户态的调度器。运行在内核态的部分从下往上分别为底层硬件CPU核心、OS级别调度器、多个内核线程M。M是真正运行G的实体,OS调度器负责把
原创
发布博客 2021.06.15 ·
1212 阅读 ·
0 点赞 ·
0 评论 ·
4 收藏

单工、半双工、全双工的区别?

单工是只能A->B,这个方向在任何时刻都不可能反转;半双工是任一时刻只能有一个方向的通信,也就是A->B或者B->A,这个通信的方向在不同时刻可以不一样,比如可以一会儿是A->B,一会儿是B->A;全双工是任一时刻都可以有双向同时发生的通信,也就是A->B和B->A可以在同一时刻发生,TCP是经典的全双工。...
原创
发布博客 2021.06.05 ·
311 阅读 ·
0 点赞 ·
3 评论 ·
0 收藏

大小端怎么判断?

核心在于用一字节的char去截取最高byte/最低byte。// 方法一:unsigned short v = 0x0102;unsigned char *p = (unsigned char *)&v; // 其实就是指针赋值+对内存含义解释变化(类型转换)if (*p == 0x01) printf("big
");else if (*p == 0x02) printf("small
");// 方法二:利用union的特性union U{ int i; char
原创
发布博客 2021.02.25 ·
176 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

GET和POST请求的区别?

1、get 参数通过url传递,post放在request body中。2、get请求在url中传递的参数是有长度限制的,而post没有。3、get比post更不安全,因为参数直接暴露在url中,所以不能用来传递敏感信息。4、get请求只能进行url 编码,而post支持多种编码方式。5、get请求浏览器会主动cache,而post不会(除非手动设置)。6、get请求参数会被完整保留在浏览历史记录里,而post中的参数不会被保留。7、GET产生一个TCP数据包;POST产生两个TCP数据包。对于
原创
发布博客 2020.06.21 ·
192 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

指针和引用的区别?

1.指针有自己的一块空间,而引用只是一个别名;2.使用sizeof看一个指针的大小是41,而引用则是被引用对象的大小;3.指针可以被初始化为nullptr,而引用必须被初始化且必须是一个已有对象的引用;4.作为参数传递时,指针需要被解引用(*)才可以对对象进行操作,而直接对引用的修改都会改变引用所指向的对象;5.指针存在常量指针和指针常量,而引用只存在常量引用,不存在引用常量2;6.指针在使用中可以指向其它对象,但是引用只能是一个对象的引用,不能被改变;7.指针可以有多级指针(**p),而引用只
原创
发布博客 2020.06.20 ·
1499 阅读 ·
1 点赞 ·
0 评论 ·
4 收藏

include头文件的顺序以及双引号和尖括号的区别?

Include头文件的顺序对于include的头文件来说,如果在文件a.h中声明一个在文件b.h中定义的变量,而不引用b.h。那么要在a.c文件中引用b.h文件,并且要先引用b.h,后引用a.h,否则编译器会报变量类型未声明错误。双引号""和尖括号<>的区别编译器预处理阶段查找头文件的路径不一样。双引号和尖括号都包含的是(按照查找头文件路径顺序排列):1.编译器设置的头文件路径(编译器可使用-I显式指定搜索路径)2.系统变量CPLUS_INCLUDE_PATH/C_INCLUDE_P
原创
发布博客 2020.06.19 ·
1335 阅读 ·
2 点赞 ·
0 评论 ·
3 收藏

C++字母大小写转换

1.string类可以使用#include <algorithm>里的如下方法进行大小写转换;transform(str.begin(),str.end(),str.begin(),::tolower);记得::tolower前面有::, 而且是::tolower,不是::tolower()下面是一个示例:#include <iostream>#include <algorithm> using namespace std;string s;int
转载
发布博客 2020.06.19 ·
4566 阅读 ·
6 点赞 ·
0 评论 ·
9 收藏

MySQL中一张大表可以如何拆分?

1、水平分区这种形式分区是对表的行进行分区,通过这样的方式不同分组里面的物理列分割的数据集得以组合,从而进行个体分割(单分区)或集体分割(1个或多个分区)。所有在表中定义的列在每个数据集中都能找到,所以表的特性依然得以保持。举个简单例子:一个包含十年发票记录的表可以被分区为十个不同的分区,每个分区包含的是其中一年的记录。(注:这里一定要通过某个属性列来分割,譬如这里使用的列就是年份)2、垂直分区这种分区方式一般来说是通过对表的垂直划分来减少目标表的宽度,使某些特定的列被划分到特定的分区,每个分区都包
转载
发布博客 2020.05.11 ·
1854 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

MySQL的4种隔离级别?

事务隔离级别脏读不可重复读幻读读未提交(read-uncommited)√√√不可重复读(read-commited)×√√可重复读(repeatable-read)××√串行化(serializable)×××
转载
发布博客 2020.05.11 ·
277 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

MongoDB和Redis的区别?

相同点数据都存在内存中。不同点内存管理机制Redis 数据定期写入磁盘,当内存不够时,可以选择指定的 LRU 算法删除数据。MongoDB 数据由 Linux系统 mmap 实现,当内存不够时,只将热点数据放入内存,其他数据存在磁盘。支持的数据结构Redis 支持的数据结构丰富,包括hash、set、list、string、zset。MongoDB 数据结构比较单一,但是支持丰富的数据表达、索引,类似关系型数据库,支持的查询语言非常丰富。...
原创
发布博客 2020.05.11 ·
298 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Top-K问题

1 最小堆法这是一种局部淘汰法。先读取前K个数,建立一个最小堆。然后将剩余的所有数字依次与最小堆的堆顶进行比较,如果小于或等于堆顶数据,则继续比较下一个;否则,删除堆顶元素,并将新数据插入堆中,重新调整最小堆。当遍历完全部数据后,最小堆中的数据即为最大的K个数。2 分治法将全部数据分成N份,前提是每份的数据都可以读到内存中进行处理,找到每份数据中最大的K个数。此时剩下NK个数据,如果内存不能容纳NK个数据,则再继续分治处理,分成M份,找出每份数据中最大的K个数,如果M*K个数仍然不能读到内存中,则继续
原创
发布博客 2020.05.11 ·
203 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

什么是跨域?在前后端分离情况下会出现跨域ajax请求,此时应如何处理?

首先明确为什么会出现跨域问题?跨域问题的产生是出于浏览器的同源策略。该策略是浏览器最核心最基本的安全功能。
转载
发布博客 2020.05.11 ·
368 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

服务器大量处于TIME_WAIT状态,可能是什么原因,会造成什么影响,怎么解决?CLOSE_WAIT状态呢?

1 服务器保持了大量TIME_WAIT状态1.1 原因这种情况比较常见,一些爬虫服务器或者WEB服务器(如果网管在安装的时候没有做内核参数优化的话)上经常会遇到这个问题,这个问题是怎么产生的呢?值得一说的是,对于基于TCP的HTTP协议,关闭TCP连接的是Server端,这样,Server端会进入TIME_WAIT状态,可想而知,对于访问量大的Web Server,会存在大量的TIME_WAIT状态,假如Server一秒钟接收1000个请求,那么就会积压240*1000=240000个TIME_WAI
转载
发布博客 2020.05.11 ·
4048 阅读 ·
1 点赞 ·
5 评论 ·
6 收藏

DNS解析过程?递归和迭代两种方式的区别?

基础知识1.域名系统2.域名服务器域名解析过程1.在浏览器中输入www.qq.com域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。2.如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。3.如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/IP参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如
转载
发布博客 2020.05.11 ·
6458 阅读 ·
4 点赞 ·
0 评论 ·
20 收藏

TCP四次挥手中客户端的TIME_WAIT状态存在的意义?

对于复杂的网络状态,TCP 的实现提出了多种应对措施,TIME_WAIT 状态的提出就是为了应对其中一种异常状况。为了理解 TIME_WAIT 状态的必要性,我们先来假设没有这么一种状态会导致的问题。暂以 A、B 来代指 TCP 连接的两端,A 为主动关闭的一端。四次挥手中,A 发 FIN, B 响应 ACK,B 再发 FIN,A 响应 ACK 实现连接的关闭。而如果 A 响应的 ACK 包丢失,B 会以为 A 没有收到自己的关闭请求,然后会重试向 A 再发 FIN 包。如果没有 TIME_WAIT
转载
发布博客 2020.05.11 ·
546 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多