- 博客(68)
- 资源 (1)
- 问答 (6)
- 收藏
- 关注
原创 《Effective C++》第四章:接口的设计
C++中有大量的接口,比如函数接口、类接口、模板接口。如何设计清晰易用、不易出错的接口非常重要。
2023-02-09 23:48:20
815
1
原创 《Effective C++》 第三章: 资源管理
auto_ptr 和tr1::shared_ptr功能比较有局限性,很多时候我们需要创建自己的资源管理类。以互斥锁为例。如果不借助类,互斥锁应当这样实现:lock→临界代码区→unlock如果借助资源管理类的实现如下所示:public :Mutex m;//定义互斥量 . . . {//加锁 . . . //临界区 }
2023-01-31 22:25:40
1363
1
原创 《Effective C++》 第二章: 构造、析构以及赋值函数
本文为《Effective C++》第三章的简要概括。目录的序号对应着原书中的item编号。本章节包括item 5 ~item 12。
2023-01-30 20:24:39
595
原创 《Effective C++》 第一章:适应C++的思考方式
c语言中#define非常好用。但是在C++中几乎没有任何场景应该使用define。首先,define有诸多问题。很难debug。define定义的量不会出现在变量表中,debugger无法对其进行追踪。有时会增加目标代码的量。尤其是定义长字符串,有可能替换之后程序代码中字面量特别多。无法对宏定义进行封装、继承。(没办法控制宏的命名空间、访问权限,没办法继承)对于宏函数,结果更是难以预料。比如:(a) :(b))(a) :(b))(a) :(b))(a) :(b))f。
2023-01-28 14:51:51
847
3
转载 c++ extern的用法【转载】
现代编译器一般采用按文件编译的方式,因此在编译时,各个文件中定义的全局变量是互相透明的,也就是说,在编译时,全局变量的可见域限制在文件内部。下面举一个简单的例子。这两个文件极为简单,在A.cpp中我们定义了一个全局变量i,在B中我们也定义了一个全局变量i。这就是说,在编译阶段,各个文件中定义的全局变量相互是透明的,编译A时觉察不到B中也定义了i,同样,编译B时觉察不到A中也定义了i。
2023-01-25 16:32:20
699
原创 #ifdef和#if defined的差别【转载】
ifdef 和 #if defined 效果是一样的,但是当你要判断复杂的条件时,只能用 #if defined。#ifdef 和 #if defined 的区别在于,后者可以组成复杂的预编译条件,比如。注意两者都有个define的作用,区别在于使用方式上。而#ifdef 就不能用上面的用法,也就是说,当你要判断单个宏是否定义时。只能在两者中选择是否有定义。可以在多个中选择是否有定义.
2023-01-17 19:10:24
952
1
原创 51单片机的特殊功能寄存器(SFR)
阅读前提醒: 文中提到的8051指的是8051微控制器,即51单片机在上一篇文章中,提到8051微控制器的RAM被划分为通用寄存器、按位寻址寄存器、寄存器组、以及特殊功能寄存器。这里讲一下特殊功能寄存器(SFR)。8051的特殊功能寄存器用于控制各种外围硬件设备,包括定时器、串行端口、I/O端口。也可以用于更改和获取微处理器的运行模式。
2023-01-14 18:29:22
8701
1
原创 51单片机存储结构
之前概要介绍了8151微控制器的结构(也就是51单片机)。相比微处理器,微控制器的区别之一是在一个芯片上有程序存储器(RAM)和数据存储器(RAM)。存储区是微控制器非常重要的内容。本文就介绍一下8051的存储结构。包括存储器的组织、处理器对存储的访问、微控制器访问外部存储的方法。在介绍存储结构之前,先介绍一下计算机结构。
2023-01-13 23:36:09
2723
原创 51单片机特性概览
微控制器包括: CPU+其他组件(可能包括RAM,ROM,I/O端口,定时器、计数器、通信端口),而微处理器只包含CPU。一开始只有微处理器,但是微处理器需要额外配备很多组件才能运行,成本比较高。所以微控制器应运而生。
2023-01-13 15:48:13
653
原创 Makefile介绍
简而言之, Makefile是一个自动化编译软件的工具。以redis为例:它可以在主目录通过make命令安装。make会自动执行Makefile文件中的命令Makefile文件中的内容如下:可以看到需要打开src文件夹执行MAKE命令而src文件夹下也有一个Makefile文件,make会执行src/Makefile的内容。
2022-10-12 19:04:17
364
原创 C/C++ 静态库制作和使用
目标: 将已有代码封装成库并使用2. 把程序做成obj文件(未经过链接的二进制文件)得到add.o, sub.o文件注意:libxxx.a, 其中xxx是库的名字比如libhello.a, 库的名字是hello当前目录结构如下:其中libcalc.a是需要使用的库,head.h是它对应的头文件输入命令:参数说明:-I: 指定搜索头文件的路径-L: 指定搜索库文件的路径-l: 库名,注意文件名libcalc.a对应的库名是calc这样
2022-10-05 21:35:58
897
原创 YOLOv5 最详细的源码逐行解读(二: 网络结构)
Yolov5中,网络模型的配置放在yaml文件中,而yolov5s放置在文件中其中一层网络的参数是用列表实现的,比如四个参数的含义分别是-1输入来自上一层,如果是正数i则代表第i层1使用一个网络模块Conv该层的网络层名字是ConvConv层的四个参数yaml文件可以被yaml库解析为字典对象。...
2022-07-21 11:45:42
5789
1
原创 YOLOv1: 从0开始 (一) 数据集加载
本文使用平台: kaggle使用数据集: car object detection一.加载数据集1.查看数据集结构感觉testing_images和sample_submission.csv没什么卵用.import numpy as npimport pandas as pdimport osdf = pd.read_csv("/kaggle/input/car-object-detection/data/train_solution_bounding_boxes (1).csv")df
2022-05-22 20:01:25
743
原创 步骤超详细: 在Kaggle上做手写数字识别
本实验完整代码在kaggle: LeNet with pytorch 所使用数据集:MNIST Original | Kaggle数据集:MNIST Original | Kaggle一. 加载并封装数据集解析mat格式数据import numpy as npfrom scipy.io import loadmat #加载mat格式数据from torch.utils.data import Dataset, DataLoaderimport matplotlib.pyplot as
2022-05-16 16:02:27
1181
原创 jupyter notebook 404 用户权限配置问题
环境: Linux我在/root/hello/目录下执行jupyter-notebook, 结果浏览器登录发现: 404原因是: 当前用户没有访问root目录的权限.给当前用户赋予一下执行权限就好了.sudo chmod a+x /rootsudo chmod a+x /root/hello
2022-05-04 21:35:01
1393
1
原创 TensorBoard Segmentation fault socket
TensorBoard发生段错误, 更改端口后问题解决.具体表现是: 运行时不报错,一旦尝试用浏览器查看时就报错并且发现出错的地方涉及到socket,所以考虑更换端口.tensorboard --logdir runs --port=6007这样访问6007端口,而不是6006.问题解决但究竟是为什么报错的呢?不是很理解....
2022-04-30 16:08:22
289
原创 Filezilla 读取目录列表失败
Status: Connecting to 121.4.142.72:21... Status: Connection established, waiting for welcome message... Status: Plain FTP is insecure. Please switch to FTP over TLS. Status: Logged in Status: Retrieving directory listing... Command: PWD Response: 25.
2022-01-12 20:38:13
2903
原创 db2 查看属性的数据类型 小数位 null约束
describe table 表名效果: 数据类型 列 列名 模式 数据类型名称 长 小数位 NULL ------------------------------- --------- ------------------- ---------- ----- ------ EMPNO
2021-12-25 23:27:05
477
2
原创 python 使用迭代来创建集合
!我是不是最后一个知道这种用法的-_-|| ?In [1]: arr = [1,2,3,4,5]In [2]: {i: i*2 for i in arr}Out[2]: {1: 2, 2: 4, 3: 6, 4: 8, 5: 10}
2021-12-16 16:10:10
462
原创 python numpy pandas四舍五入不正确的问题
用pandas处理数据偶然发现s = pd.Series([-1, 1.2345, 100, -50])s.round(3)结果是0 -1.0001 1.2342 100.0003 -50.000dtype: float64发现1.2345四舍五入后的结果是1.234.理论上应该是1.235才对后来测试发现,1.23451四舍五入后就是1.235猜测是浮点数精度问题.python并不能精确地知道这一位是4还是5详细解释见这篇文章:如何使用Pytho
2021-12-15 10:52:40
1465
原创 循环冗余校验 使用及记忆方法
CRC(循环冗余校验)入正题之前,先确定自己知道校验的基本原则.发送端任务:根据源数据,生成校验码,并将源数据和校验码一同发送接收端任务: 根据源数据和校验码,按照一定的规则来校验是否发生了错误.设定:数据分为三部分:D: 需要发送的数据(Data)R: 校验码(CRC中的校验码是运算的余数,即Remainder)G: 生成多项式(Generator)这里需要注意: 和其他校验方式类似,发送方和接收方传输的数据只有D和R, 而生成多项式(G)则是根据链路层协议确定的.将生成多项式转为
2021-11-25 14:25:11
427
翻译 问题记录:既然MAC能唯一标识一台设备,那为什么我们还需要IP呢?
以下内容节选自Quora,回答者Pankaj Kedia问题既然每个设备的MAC地址是唯一的,那为什么我们还需要引入IP来唯一地标识网络中的一个系统呢?回答者的答案让我用类比的方法来简单地回答这个问题:假设你的名字‘A’,显然世界上其他人可能和你重名,所以这不能唯一地辨识你的身份。现在我们把你父亲的名字也加上(假设你父亲的名字是B),那么可以用B-A来标识你。但显然,这也未必能唯一地标识你的身份。但是,我们再加上你爷爷的名字、你爷爷的父亲的名字——‘A’, ‘B.A’, ‘C.B.A’, ‘D.
2021-11-24 15:45:49
250
原创 计算机网络-自顶向下方法(7th) 第五章 Problems 英文题目1-15+中文答案
P1.Looking at Figure 5.3 , enumerate the paths from y to u that do not contain any loops.(y,x,u)(y,w,x,u)(y,z,w,x,u)(y,x,v,u)(y,w,v,u)(y,x,w,v,u)(y,z,w,v,u)(y,w,u)(y,z,w,u)(y,x,w,u)(y,x,v,w,u)(不太知道怎么列举,我是根据后缀列举的,比如前面的分别是以x,u/v,u/w,u…)P2.Rep
2021-11-22 19:23:11
12488
4
原创 计算机网络-自顶向下方法 7th 5.4 BGP协议总结
不得不说国内陈鸣的译本把这部分翻译得像坨*****这篇是我根据英文原书的理解。阅读前需要了解:什么是AS(自治区域)AS中的子网转发表1、BGP的任务前面已经讲到了AS内的路由协议,比如OSPF,那么假如两个路由器不在同一个AS内呢?这就要用到BGP。BGP的一个重要任务是不同AS间的路由,不过BGP也可以进行AS内的路由(后面也会提到)。2、BGP中的前缀BGP中的分组不会被路由到特定的IP,而是会路由到CIDR化的前缀(prefix)。这个前缀代表了一个或者一组子网。CIDR:将子
2021-11-21 19:18:35
2504
原创 POJ 3684 Physics Experiment
Physics ExperimentTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 5009 Accepted: 1786 Special JudgeDescriptionSimon is doing a physics experiment with N identical balls with the same radius of R centimeters. Before the experiment, all N ba
2021-11-19 20:12:07
819
原创 python or 运算符 用作判断两变量的真假
举例:>>> 2 or 32>>> 5 or 0.05>>> [] or 33>>> 0 or {}{}用法:or左边的变量or右边的变量结果xy假如x为true,结果为x,否则为yLeft Object Right Object Result of x or yx y x, if it evaluates to true, otherwise y.注意:可以用bool函数判断一
2021-11-14 22:10:33
841
原创 计算机网络-自顶向下方法(7th) 第四章 Problems 英文题目+部分中文答案
P1. Consider the network below.a. Show the forwarding table in router A, such that all traffic destined to host H3 is forwarded through interface 3.b. Can you write down a forwarding table in router A, such that all traffic from H1 destined to host H3
2021-11-04 14:22:53
27812
1
原创 计算机网络-自顶向下方法(7th) 第四章 Review Questions 英文题目
SECTION 4.1R1.Let’s review some of the terminology used in this textbook. Recall that the name of a transport-layer packet is segment and that the name of a link-layer packet is frame. What is the name of a network-layer packet? Recall that both routers
2021-11-03 20:58:41
3427
原创 计算机网络-自顶向下方法(7th) 第三章 Problems 英文题目+中文答案
P1.Suppose Client A initiates a Telnet session with Server S. At about the same time, Client B also initiates a Telnet session with Server S. Provide possible source and destination port numbers fora. The segments sent from A to S.b. The segments sent
2021-10-27 14:32:12
21435
9
原创 PAT甲级 1017 Queueing at Bank
原题传送门 >>>几个注意点:1、凡是在17:00:00之前(包括17:00:00)到的顾客,银行都必须把它们完全服务完成。(也就是说,在这之前银行不下班)。这个设定也太迷惑了吧???2、17:00:01之后到的顾客,不计入总人数,也没有排队时间。参考代码:#include<cstdio>#include<map>#include<cstring>#include<algorithm>using namespace std
2021-10-25 10:02:06
65
抽象工厂模式是否符合接口隔离原则?
2021-10-11
网页端向邮件服务器提交邮件,使用HTTP还是SMTP协议?
2021-10-07
ListIterator,previous的返回值到底是什么
2021-09-08
java LinkedList 如何优雅地逆序遍历
2021-09-08
LinkedList中,利用iterator遍历,究竟是哪里出错了呢
2021-09-06
this、super 究竟是什么
2021-09-04
java 究竟为什么引入接口(interface)?
2021-09-03
TA创建的收藏夹 TA关注的收藏夹
TA关注的人