- 博客(17)
- 收藏
- 关注
原创 在正确的时候使用多线程的探究
今天在使用OpenMP与C++进行多线程编程的初次尝试时,出现了一个与预想相悖的现象:在对一个for循环使用多线程运行时,随着线程数的增加,程序的运行时间反而在增加。虽然可能老手一听这个说法就知道问题出在哪里,但是对于我这个刚接触多线程编程的菜鸟来说,我花费了许多的时间在思考和解决这个疑惑上,最终找到了问题所在。因此我在这里总结一下自己的思路。今天的这个问题让我记住了,在编写并行程序时,一定要注意操作是否能够并行,尽量不要让多个线程同时访问相同的内存。
2024-03-26 00:01:19
300
原创 ssh服务器客户端和服务端配置密钥验证的问题与注意要点
这段时间在学习ssh远程控制,并且尝试着配置无需密码的密钥验证方式,但是在将公钥发送过去并配置好相关配置,但是在客户端对服务器进行访问的时候仍然是需要密码的,在翻阅了无数的博客和教程并调试之后,才最终解决这个问题,因此我决定在这里对整个配置流程进行一个总结分析,以便于自己今后回顾,也给各位和我一样的ssh小白一个少走弯路的机会。
2024-03-12 19:01:50
743
1
原创 对多态的探究:原因,原理,以及实现
C++中的第三大特性就是多态。如果要打个比方什么是多态:有一群人要买票,于是我们抽象构建了一个基本对象Human,并定义了买票方法BuyTicket为原价买票;但是对于人群中之的某些特殊人群,比如小孩、军人、又或者老人,他们应该半价买票,于是我们应该抽象构建Human的派生类SpecialHuman,并重定义买票方法BuyTicket为半价买票。然后我们还应该有一个函数实现:面对基类与派生类,能自动识别是什么类并调用相应的方法。对这一过程的实现,就是多态。多态有两种:静态多态和动态多态静态多态:
2021-09-22 19:00:56
121
原创 菱形继承问题探究
在类的继承时,会出现这样的一种可能性:菱形继承我打个比方什么是菱形继承:一个品牌A下有两个小品牌B和C,然后B和C又一起共同研发了D,这就是一个菱形继承,如果用代码实现的话,就是这样的class A {...};class B : public A {...};class C : public A {...};class D : public B, public C {...};那么这就会出现一个问题,D会拥有两份来自A的某种数据,这两份数据分别继承自B和C。但是D并不需要两份数据,这时
2021-09-21 19:13:33
111
原创 c++语言学习:深浅拷贝的探究
对于拷贝构造函数,也有深拷贝与浅拷贝两种:那么深浅拷贝到底有什么不同呢首先来看看我的理解:浅拷贝:对对象的值进行复制,无论是值或指针都进行复制,可能导致在析构时重复释放同一片空间深拷贝:将对象的内容进行复制,值复制,若是指针,则重新申请空间复制指针指向的内容,防止重复释放的发生那么,他们在代码上的区别呢?我们先定义一个类Temp:class Temp{public: Temp(); ~Temp(); Temp(const Temp& T); private: int* _
2021-09-16 17:50:46
91
原创 c语言学习-----代码的编译与链接(对obj重定义报错的探究
将写好的源文件(.cpp)通过编译器的处理生成可执行文件(.exe)的过程称之为翻译,其中包括编译和链接两个过程。其中编译是将项目中的所有源文件(.cpp)通过编译器都分别单独生成一个目标文件(.obj)(不理解这个会产生一个重大的错误),随后,连接器会将项目中的所有目标文件链接起来,成为一个可执行文件。这就是翻译的过程。这里说一下我曾经很喜欢犯的一个错误,这个错误就和编译的过程有关。曾经我很喜欢在头文件中定义一个变量,总觉得这个变量是头文件中对实现头文件中的函数功能很有用,然后在编译的时候,经常出
2021-09-01 00:46:36
395
原创 错误调试分析——自学日常(内存访问错误
先上错误代码#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>int main(){ int i = 0; int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; for (i = 0; i <= 12; i++) { arr[i] = 0; printf("%d ", i); } return 0;}这个代码的在debug模式下运行会不断地重复输出0~11。首先这个代码有个很明显
2021-08-26 13:01:09
82
原创 计算机原理学习-----2.逻辑与计算
逻辑开关基础:布尔代数,一种讨论类的代数,基础运算有:并集(+),交集(*)真与假:0(假)、1(真)用0与1来表达是否符合类的条件门与门:或门:非门:
2021-08-24 00:12:59
460
原创 格式化输出----个人学习笔记
格式化输出共有三种:printf, sprintf, snprintf它们的函数原型如下:printf: int printf(const char *format, ...);怎么用大家都知道sprintf: int sprintf(char *str, const char *format, ...);把输出保存到str中snprintf: int snprintf(char *str, size_t size, const char *format, ...);把输出的前size个保存
2021-08-22 22:10:55
43
原创 计算机原理学习---1.计算机编码
知识总结:二进制1)二进制能表示信息(1、0开关,鼓声传信)2)二进制能表示无限多的信息(摩尔斯编码、盲文,指数爆炸)3)每个二进制数表示一种符号(ASCII)4)10->2 除二得余; 2->10 二的N个次方之和...
2021-08-21 23:53:28
146
原创 哈夫曼编码
数据压缩之-----哈夫曼编码哈夫曼编码是一种常见的数据压缩算法,相较于最基础的行程编码,哈夫曼编码在绝大多数条件下,都能成功的压缩文件大小。哈夫曼算法的压缩原理是用少于一个字节的大小去表示一个字符,从而达到压缩的目的要完成一个哈夫曼编码的算法如下:将数据文件中的字符进行统计,并将不同字符按从多到少的数量排序将这个降序序列最小的两个字符的个数相加,得到新的个数(如果有三个及以上相同的个数,就随便选两个相加)重复步骤2,直到最终只剩下一个数字。在这个循环的过程中,生成了一棵二叉树,在这个树上,
2021-08-21 19:13:12
250
原创 计算机内,二进制小数的表示方法
我们都知道,十进制的小数可以用科学计数法表示成如下样子那么二进制的小数如何用科学计数法呢?首先,依葫芦画瓢:(计算机中的小数分为单精度float和双精度double)指数的范围如下最重要的就是尾数部分:综上,二进制小数的表示方法就完成了举个栗子:1101.1011 = 1.1011011 * 23...
2021-08-20 17:01:07
1801
原创 今日份试错警告
今天在试着写小游戏的时候,VS给我报了这样的一个错:LNK2005 "bool ( Boom_m)[9]" (?Boom_m@@3PAY08_NA) 已经在 game.obj 中定义*一开始我并不知道这是什么样的错,把头文件里的函数名变量名改了个遍,还是没有发现是哪里出了问题。随后,我就去求助了一个比我强“亿点点”的朋友。我就直接上结论吧:我将变量定义在了头文件中,导致每一个调用这个头文件的源文件,在编译时都在全局区重新定义了一遍,导致了重复定义至于解决方法嘛,不要把变量定义在头文件里了,直接
2021-07-25 23:35:47
92
原创 c语言基础:关于数组中arr与arr[0]的同异的思考
在敲代码的时候,我发现了这样的一件事:int arr[16] = { 0 };printf("%d", sizeof(arr));而这个程序的结果也很正常64这就是整个数组的大小但是在这里,我就有一个疑问了:在arr作为数组的头指针时,它的地址和arr[0]相同,并且内容也相同,同时arr还能通过++,–,等操作,去访问其他的数组空间;所以,arr不应该是代表单一的一个数组内的空间,就和arr[0],arr[1]…一样吗。于是,如下我做了这样的尝试:printf("%p %p\n", a
2021-07-15 17:32:05
3144
3
原创 c语言基础:关于调用外部全局变量的作用域的探究
在学习c语言的基础时,我看见了这样一句话:全局变量的作用域是整个工程,且在调用外部全局变量时,需要使用extern声明该变量为外部全局变量。于是我产生了这样的一个疑问:使用extern调用外部全局变量时,他的作用域是整个源文件,还是一个代码块。为此,我做了下面的实验:在工程中建立一个data.c的源文件,并写下如下代码:int num = 10;之后我在另一个源文件中进行测试。第一次:#include<stdio.h>int main(){ { extern int n
2021-07-14 16:42:25
423
原创 最大子数组(线性时间算法)
最大子数组(线性时间算法思路)从头系统学习算法个人随想习题来源:算法导论4.1-5在题干中写道,已知[1…j]的最大子数组,则[1…j+1]的最大子数组或者来源于[1…j]的最大子数组,或者来源于[i…j+1]的最大子数组(1<=i<=j+1)。一开始,我对这段话的第一反应是动态规划,f(i,j)表示[i…j]之间的最大子数组,但是想了很久,没有想出来一个正常的状态转移方程(可能有吧,我太菜了)。后来,看了大佬对这种算法的解释,我就如醍醐灌顶一般,明白了线性算法的思路。先放代码,再解释
2021-05-22 16:48:30
389
原创 python学习日记:splinter库中的browser.windows操作
python学习日记:splinter库中的browser.windows操作在长达2个小时的挣扎与尝试之后,作为小白的我终于搞明白了在python的splinter库中如何操作浏览器窗口。在这里,我把我自己的感悟写下来,希望能给和我一样的小白同学一点帮助QAQ。这里的Windows操作,只是写了几行代码,为了搞清楚这些操作都有什么用我进行了一遍又一遍的尝试,最后总结出了如下结论。首先对于前几行browser.windows # all open windowsbrows
2021-01-14 20:51:26
806
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人