- 博客(74)
- 资源 (8)
- 收藏
- 关注
原创 # Windows环境下VSCode + Jupyter + Conda的AI学习环境配置指南
确保已安装`ipykernel`,可以通过运行`conda install ipykernel`来安装。3. 安装完成后,打开命令提示符(CMD),输入`conda --version`确认安装成功。:尝试使用`pip install [包名]`替代`conda install [包名]`。Jupyter已经包含在Anaconda安装中,但我们需要在VSCode中进行一些配置。4. 在VSCode中,打开一个新的终端(Ctrl+`),确保它使用的是你刚创建的环境。
2024-09-24 11:26:21 1497 1
原创 How Blink Works
在 Blink 上开发绝非易事。对于新接触 Blink的开发者来说,要实现一个高效的渲染引擎,需要了解大量Blink特有的概念和编码约定。对于经验丰富的开发者来说亦非易事,因为 Blink 非常庞大,对性能、内存和安全性极为敏感。关于Blink开发的更多内容, 参考这里。
2024-05-24 16:53:15 819
原创 Linux 操作系统管理命令(全)
jobs 命令执行的结果中,加号(+)表示是一个当前的任务,减号(一)表示是一个当前任务之后的任务。如果后台的任务号有2个,当第[1]个后台任务顺利执行完毕,第[2]个后台任务还在执行中时,当前任务便会自动变成后台任务号码[2]的后台任务,即当前任务是动态变化的。LInux操作系统的用户和组信息保存在系统的配置文件中 ,其中的用户信息保存在/passwd和etc/shadow文件中,组信息保存在/etc/group和/etc/gshadow文件中,这些文件都是文本文件,文件格式类似。
2022-12-12 20:01:42 28196 8
原创 函数调用的过程分析
局部变量占用的内存是在程序执行过程中”动态”地建立和释放的。这种”动态”是通过栈由系统自动管理进行的。当任何一个函数调用发生时,系统都要作以下工作:通过如下代码进行“一”的分析: 首先进入主函数,系统为主函数开辟一个栈帧,依次入栈 x=10(占4字节),y=20(占4字节),res=0(占4字节),执行到z=fun(x,y);调用子函数fun(),开辟子函数fun的栈帧,先将y的值赋值给b,b=20入栈,然后将x的值赋值给a,a=10入栈,然后将主函数的栈底指针入栈,然后将主函数z=fun(x,y);后的指
2022-12-04 21:36:03 1653 1
原创 std::shared_ptr(基础、仿写、安全性)
调用适当的构造函数初始化对象;shared_ptr 作为unordered_map的key如果把sharedp_tr放到unordered_set中,或者用于unordered_map 的key,那么要小心hash table 退化为链表。对于shared_ ptr 在拷贝和赋值时的行为是,每个shared _ptr 都有一个关联的计数值, 通常称为引用计数。例如,当用一个shared_ptr 初始化另一个 shred_ptr,或将它当做参数传递给一个函数以及作为函数的返回值时,它所关联的计数器就会递增。
2022-11-26 20:08:33 1571
原创 std::weak_ptr(分析、仿写)
weak ptr是为了配合shared _ptr 而引入的一种智能指针,它指向一个由shared_ptr 管理的对象而不影响所指对象的生命周期,也就是将一个weak_ptr 绑定到一个shared_ptr不会改变shared_ptr 的引用计数。当我们创建一个weak_ptr 时,需要用一个shared_ptr实例来初始化weak_ptr,由于是弱共享, weak_ ptr的创建并不会影响shared_ptr 的引用计数值。为了解决类似这样的问题,C++11 引入了weak_ptr,来打破这种循环引用。
2022-11-26 20:07:31 1887
转载 c++ 左值、右值
注:有移动对象先调动移动构造来构架将亡值对象,而不调用普通的拷贝构造,如果没有移动构造,就会调用普通拷贝构造来构造将亡值对象。由于将亡值是一个不具名的对象,所以不能用左值引用,只能用右值引用,并且通过右值引用,也增长了将亡值的生存周期。左值引用:需要引用一个有名字的变量,不能引用不具名的对象。对堆内存构建了一次,如果没有移动构建,就会构建三次。右值引用:只能引用字面常量,不具有名字。右值:不可以取它的地址。左值:可以取它的地址。
2022-11-25 17:06:23 627
原创 std::Auto_Ptr(仿写)
因为auto_ptr析构的时候肯定会删除他所拥有的那个对象,所以我们就要注意了,一个萝卜一个坑,两个auto_ptr 不能同时拥有同一个对象。2、因为auto_ptr 的析构函数中删除指针用的是delete,而不是delete [],所以我们不应该用auto_ ptr 来管理一个数组指针。4、因为auto_ ptr不具有值语义(value semantics),所以auto_ ptr不能被用在stl标准容器中。因为ap1与ap2都认为指针p是归它管的,在析构时都试图删除p,两次删除同一个对象的行为在。
2022-11-25 00:00:00 626
原创 explicit 说明符
explicit指定构造函数或转换函数 (C++11 起)或(C++17 起)为显式,即它不能用于和explicit (
2022-11-24 10:32:58 920
原创 Python(1)——基础
可以使用:\来进行转义name = "我是谁" # 双引号namel = """我是谁""" #三引号name = '我是谁' #单引号。
2022-11-23 16:03:11 559
原创 letcode 739 每日温度
由于温度范围在 [30, 100] 之内,因此可以维护一个数组 next 记录每个温度第一次出现的下标。数组 next 中的元素初始化为无穷大,在遍历温度列表的过程中更新 next 的值。对于温度列表中的每个元素 temperatures[i],需要找到最小的下标 j,使得 i < j 且 temperatures[i] < temperatures[j]。天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用。返回的是当天温度后第一次温度上升的天数;,表示每天的温度,返回一个数组。
2022-10-17 23:23:21 579
原创 c++复习——名字粉碎
如果返回类型,函数名,参数类型都相同,但是参数个数不同也未必能够进行重载,如果没有缺 省值或者默认值的情况下可以重载,如果有默认值则不能确定。所以调用的时候无法确定哪个函数因此要注意二义性问题。
2022-09-19 23:44:10 816
原创 C++复习 ——内联函数
1)内联函数的处理方式是在函数的调用点直接代码展开。在计算机系统下,假如频繁的调用,就会造成较大的时间开销(这里时间开销指的是:现场保护和现场恢复,栈帧的开辟和清除栈帧的开销)。2)在release版本内联函数才会起作用,才会将代码直接展开成一条条指令,在debug版本不起作用,仍然会按照函数的方式进行。答:只能对非常小的函数加inline,如果函数内部有循环、if语句等,加上inline,系统会报错。为了消除函数调用的时空开销,C++ 提供一种提高效率的方法,②没有if语句、循环语句。
2022-09-19 23:26:49 790
原创 Redis(12)Bitmap
统计用户信息,活跃,不活跃!两个状态的,都可以使用 Bitmaps!127.0.0.1:6379> bitcount sign # 统计这周的打卡记录,就可以看到是否有全勤!使用bitmap 来记录 周一到周日的打卡!周一:1 周二:0 周三:0 周四:1 ......Bitmap 位图,数据结构!都是操作二进制位来进行记录,就只有0 和 1 两个状态!365 天 = 365 bit 1字节 = 8bit 46 个字节左右!统计操作,统计 打卡的天数!查看某一天是否有打卡!
2022-08-22 00:27:19 596 1
原创 Redis(11)Hyperloglog
A {1,3,5,7,8,7} B{1,3,5,7,8} 基数(不重复的元素) = 5,可以接受误差!Redis 2.8.9 版本就更新了 Hyperloglog 数据结构!Redis Hyperloglog 基数统计的算法!优点:占用的内存是固定,2^64 不同的元素的基数,只需要废 12KB内存!如果要从内存角度来比较的 话 Hyperloglog 首选!网页的 UV (一个人访问一个网站多次,但是还是算作一个人!)
2022-08-22 00:23:52 491
原创 Redis(10)Geospatial 地理位置
(获得所有附近的人的地址,定位!获得指定数量的人,200 所有数据应该都录入:china:city ,才会让结果更加请求!找出位于指定元素周围的其他元素!获得当前定位:一定是一个坐标值!km 表示单位为千米。mi 表示单位为英里。ft 表示单位为英尺。
2022-08-22 00:21:42 537
原创 Redis(9)五大数据类型 ——Zset(有序集合)
在set的基础上,增加了一个值set k1 v1 zset k1 score1 v12、排序从小到大排列值:从大到小排列值:按条件显示值的所有信息:3、移除 移除元素: 获取zset的元素的个数:4、获取指定区间元素个数 获取指定区间的成员数量的个数:...
2022-08-18 22:40:31 606
原创 Redis(8)五大数据类型——Hash(哈希)
hash变更的数据 user name age,尤其是是用户信息之类的,经常变动的信息!hash 更适合于对象的 存储String更加适合字符串存储!
2022-08-18 22:34:10 1653
原创 Redis(7)五大数据类型——Set(集合)
微博,A用户将所有关注的人放在一个set集合中!将它的粉丝也放在一个集合中!共同关注,共同爱好,二度好友,推荐好友!
2022-08-18 22:22:31 548
原创 Redis(6)五大数据类型——List(列表)
他实际上是一个链表,before Node after , left,right 都可以插入值如果key 不存在,创建新的链表如果key存在,新增内容如果移除了所有值,空链表,也代表不存在!在两边插入或者改动值,效率最高!中间元素,相对来说效率会低一点~...
2022-08-18 22:10:01 1296
原创 Redis(3)Redis为什么这么快
核心:redis 是将所有的数据全部放在内存中的,所以说使用单线程去操作效率就是最高的,多线程(CPU上下文会切换:耗时的操作!多次读写都是在一个CPU上的,在内存情况下,这个就是最佳的方案!官方表示,Redis是基于内存操作,CPU不是Redis性能瓶颈,Redis的瓶颈是根据机器的内存和网络带宽,既然可以使用单线程来实现,就使用单线程了!所有就使用了单线程了!Redis 是C 语言写的,官方提供的数据为 100000+ 的QPS,完全不比同样是使用 key-vale的Memecache差!.......
2022-08-17 22:41:01 214
原创 Redis(2)基础命令
5.查询数据库 所有的 key值。2.Redis 默认数据库数量。4.set / get 命令。7.清除全部数据库的内容。
2022-08-17 17:34:01 201
原创 Redis(1)安装redis
4.查看redis 配置文件 位置。2.安装redis-server。3.查看 redis 安装。默认 :no 后台运行。
2022-08-17 17:10:20 241
原创 207.数组序号转换
给你一个整数数组arr,请你将数组中的每个元素替换为它们排序后的序号。一个元素越大,那么序号越大。如果两个元素相等,那么它们的序号相同。序号代表了一个元素有多大。每个数字的序号都应该尽可能地小。序号从1开始编号。......
2022-07-28 11:43:29 168
原创 面向对象——继承(c++)
继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础,上进行扩展,增加功能。这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构。体现了由简单到复杂的认识过程。百度百科(继承)通过继承(inheritance)的机制可对类(class)分层,提供类型/子类型的关系。C++通过类派生(classderivation)的机制来支持继承。被继承的类称为基类(baseclass)或超类(superclass),新产生的类为。......
2022-07-26 23:06:24 2913 1
原创 设计模式(1)——设计模式的七大原则及三大模式
一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。模块应该尽量在不修改原代码的情况下进行扩展。在软件周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给代码引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。当软件需求变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有代码来实现变化。开放封闭原则是面向对象设计的核心所在,遵循这个原则可以带来面向对象技术所声称的巨大好处,也就是可维护、可扩展、可复用、灵活性好。...
2022-07-25 17:18:33 631
转载 I/O复用——epoll(全)
Epoll 很重要,但是 Epoll 与 Select 的区别是什么呢?Epoll 高效的原因是什么?网上虽然也有不少讲解 Epoll 的文章,但要么是过于浅显,或者陷入源码解析,很少能有通俗易懂的。笔者于是决定编写此文,让缺乏专业背景知识的读者也能够明白 Epoll 的原理。本文核心思想是:要让读者清晰明白 Epoll 为什么性能好。文章会从网卡接收数据的流程讲起,串联起 CPU 中断、操作系统进程调度等知识;再一步步分析阻塞接收数据、Select 到 Epoll 的进化过程;最后探究 Epoll 的实现
2022-07-10 10:39:18 569 1
原创 I/O复用——poll
目录poll APIpoll 编程poll 总结poll系统调用 和 select类似,也是在指定时间内轮询一定数量的文件描述符,以测试其中是否有就绪事件。 poll的原型如下:头文件:#include fds参数:pollfd结构类型的数组,它指定所有我们感兴趣的文件描述上发生的可读、可写和异常等事件。pollfd结构体的定义如下: 成员fd:指定文件描述符; 成员events:告诉poll监听fd上的那些事件,它是一系列事件的按位或; 成员revents:由内核修改,通...
2022-07-09 11:00:02 643 1
原创 I/O复用——select(全)
select系统调用的原型如下:头文件 #include返回值 :select成功时返回就绪(可读、可写和异常)文件描述符的总数。如果在超时时间内没有任何文件描述符就绪,select将返回0。select失败时返回-1。如果在select等待期间,程序接收到信号,则select立即返回-1,并设置errno为EINTR。maxfd:参数指定的被监听的文件描述符的总数。它通常被设置为 select 监听的所有文件描述符中的最大值+1,因为描述符是从0开始计数的。readfd......
2022-07-08 13:50:35 2599 2
原创 一篇文章搞懂TCP协议及TCP编程
目录运输层端口号、多路复用、多路分解1.1运输层端口号端口号的基本概念TCP/IP体系的应用层常用协议所使用的熟知端口号1.2运输层的多路复用与多路分解面向连接的运输:TCP2.1TCP连接2.2TCP协议与UDP协议对比2.3TCP报文段格式2.4TCP三次握手(建立连接)2.4.1TCP为了保证连接的可靠性,每次都会通过进行三次握手来建立可靠的连接2.4.2使用tcpdump命令抓包查看建立过程2.5两次握手是否可以?(面试题)2.5TCP四次挥手(释放连接)2.5.1TCP使用四次挥手进行断开连接;
2022-06-16 15:49:58 4683 31
原创 DNS和SMTP
因特网的电子邮件基本原理首先我们要明白不管DNS还是SMTP都是运行在应用层的,所以我们理解他们并不能超过应用层;下图给出了因特网电子邮件系统的总体情况。从该图中我们可以看到它有3个主要组成部分:用户代理(user agent)、邮件服务器( mail server)和简单邮件传输协议( Simple Mail Transfer Protocol, SMTP)。用户代理:允许用户阅读、回复、转发、保存和撰写报文。微软的Outlook和Apple Mail是电子邮件用户代理的例子。例子
2022-05-23 17:47:12 5820 1
原创 设计B+树(B+Tree)
定义B+树是一种树数据结构,通常用于数据库和的文件系统中。B+树的特点是能够保持数据稳定有序,其插入与修改拥有较稳定的对数时间复杂度。B+树元素自底向上插入,这与二叉树恰好相反。...
2022-05-20 20:18:59 1324 1
原创 Web和HTTP
目录HTTP概况Web术语HTTP基本HTTP是无状态协议HTTP连接方式非持续连接HTTP例子花费时间持续连接的HTTP非持续的缺点;HTTP报文格式请求报文HTTP请求报文的通用格式及GET、POST、HEAD等常用方法HTTP响应报文格式HTTP响应报文通用格式及状态码HTTP概况Web的应用层协议是超文本传输协议,它是Web的核心,在[RFC 1945]和[RFC 2616]中进行了定义。HTTP有两个程序实现:客户端——服务端..
2022-05-19 19:30:44 2733 7
原创 数据结构——B-树(c++)
简介 在计算机科学中,B树(英语:B-tree)是一种自平衡的树,能够保持数据有序。这种数据结构能够让查找数据、顺序访问、插入数据及删除的动作,都在对数时间内完成。B树,概括来说是一个一般化的二叉查找树(binary search tree),可以拥有多于2个子节点。与自平衡二叉查找树不同,B树为系统大块数据的读写操作做了优化。B树减少定位记录时所经历的中间过程,从而加快存取速度。B树这种数据结构可以用来描述外部存储。这种数据结构常被应用在数据库和文件系统的实现上。定义一颗m阶B-T...
2022-05-18 19:34:34 3097 3
Qt5下使用c++实现的局域网聊天系统
2022-07-16
局域网聊天系统Qt实现
2022-07-16
局域网聊天软件 qt5、c++、window
2022-07-16
window环境下Qt5 基于C++ 语言编写的局域网聊天系统
2022-07-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人