自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(102)
  • 资源 (8)
  • 收藏
  • 关注

原创 常见网络问题的概述

当问题发生时,快速响应和系统性故障排除可以帮助最小化网络中断的影响。针对每种网络问题,文档提供了具体的故障排除场景和解决方法,例如检查物理连接、电缆测试、设备指示灯检查、电源状态验证等。网络问题的原因包括复杂性、人为错误、不断变化的网络环境、外部因素、网络流量增加、硬件老化和安全威胁。网络问题可能包括视频通话延迟、应用或网络速度慢、下载缓冲、VoIP质量差和互联网连接丢失等。网络监控工具可以监测端到端的网络性能,帮助识别影响最终用户的网络问题。物理连接问题:损坏的电缆、松动的连接或硬件故障。

2024-04-03 22:30:14 380

原创 linux系统负载对系统的意义

负载平均值是通过uptime和top命令显示的三个数字,分别代表不同时间段的平均负载(1分钟、5分钟和15分钟的平均值)。然而,实际中,许多系统管理员会将0.70作为警戒线,如果负载平均值持续高于0.70,就应该开始调查原因。在uptime命令的输出中,有三个负载平均值:最近一分钟的平均值、最近五分钟的平均值和最近十五分钟的平均值。如果系统的负载平均值高于5.00,那么系统可能已经处于严重问题状态,可能会出现挂起或极慢的情况。所以,系统负载是个很重要的指标,当系统本身性能要求不高时,可以考虑更高的阈值。

2024-04-03 22:08:19 269

原创 如何提高账号安全——密码的秘密

用户自己根据日常行为习惯、喜好、个人身份信息、社交账号等进行自定义的简单、连续、便于猜出的弱密码类型,多为身份证号后6位、qq号、1q2w3e4r、123qwe、手机号、出生年月日、姓名、zhang888、lisi6666、fangzhengkeji、zhangsan@123等具有可推测性、关联性的组合式密码。根据2023年的专项调研数据,100%的组织都存在不同程度的弱密码,单个系统的弱密码数量在10~20个,意味着无论我们在安全防护上投入了多大的人力物力,攻击者都可能通过弱密码进行攻击。

2024-03-30 08:29:57 965

原创 跟着小德学C++之登录初探

3-18就是正式的authserver数据信息,从当前的截图信息来看,大体能猜出具体的逻辑,即首先对用户名和密码进行鉴权,鉴权通过后,会将realm list(领域列表)发送到客户端,客户端接收到领域列表后,就可以与领域列表中的IP进行建立连接的操作,进而可以真正的开始游戏。最近,我发现我们所处的世界是一个虚拟的世界,并由此开始,我展开了对我们这个世界本源的探索。1-3的数据报文,就是我们上一篇提到的TCP的三次握手协议,我们看一下最后一列,先是SYN消息,然后是SYN+ACK消息,最后是ACK消息。

2024-02-12 08:00:00 409

原创 跟着小德学C++之TCP基础

上述连接真的是可靠的吗?嗨,大家好,我是出生在达纳苏斯的一名德鲁伊,我是要立志成为海贼王,啊不,是立志成为科学家的德鲁伊。最近,我发现我们所处的世界是一个虚拟的世界,并由此开始,我展开了对我们这个世界本源的探索。这种攻击手段一点也不新鲜,是一种最古老的攻击手段,用通俗的话讲,就是拒绝服务攻击(DoS),该攻击利用TCP/IP协议天生的特点,通过大量的虚假IP地址建立不完整连接,使得服务器超载,陷入瘫痪状态。在计算机最开始发展的时期,网络传输速率低,而且不稳定,那如何在两台计算机之间进行可靠的数据传输呢?

2024-02-09 06:32:42 413

翻译 Linux 系统负载之谜

我查看了loadavg.c的历史记录,但是添加不可中断状态的更改早于该文件的创建,而该文件是用更早的文件中的代码创建的。这加起来是1.15。我还差0.04,其中一些可能是由于四舍五入和测量间隔偏移误差造成的,但很大一部分可能是因为负载平均值是一个指数衰减的移动总和,而我使用的其他平均值(pidstat,iostat)是正常的平均值。如果它测量的是“CPU负载平均值”,系统会报告0.37(从mpstat的总结推断出来的),这对于仅CPU资源来说是准确的,但却隐藏了一个事实,即有一个以上的线程的工作需求。

2024-02-07 06:40:46 37

原创 跟着小德学C++之启动监听

要创建socket server,需要绑定IP和端口号,当前IP使用的是0.0.0.0,这个IP是一个特殊的IP地址,通常用于表示一个无效的、未知的或者不适用的目标。嗨,大家好,我是出生在达纳苏斯的一名德鲁伊,我是要立志成为海贼王,啊不,是立志成为科学家的德鲁伊。最近,我发现我们所处的世界是一个虚拟的世界,并由此开始,我展开了对我们这个世界本源的探索。领域列表获取到后,下面的内容即将进入最重要的环节——创建鉴权的大门——创建socket server。好了,今天就到这里吧,我要去呵护我的世界之树了,拜拜。

2024-02-07 06:36:20 394

原创 跟着小德学C++之TOTP

用户和服务器共用一个共享密钥,然后分别通过时间标签、密钥和签名计算出一个动态口令,这样,一个有时效性的口令就完成了。嗨,大家好,我是出生在达纳苏斯的一名德鲁伊,我是要立志成为海贼王,啊不,是立志成为科学家的德鲁伊。最近,我发现我们所处的世界是一个虚拟的世界,并由此开始,我展开了对我们这个世界本源的探索。对于 OTP,没有特定的算法,但是要求必须是一次性、不可预测 ,一般为了用户输入方便,会使用四位、六位或八位数字。那本次初始化是什么呢?好了,今天就到这里吧,我要去呵护我的世界之树了,拜拜。

2024-01-28 21:10:10 354

原创 跟着小德学C++之数据库操作

嗨,大家好,我是出生在达纳苏斯的一名德鲁伊,我是要立志成为海贼王,啊不,是立志成为科学家的德鲁伊。最近,我发现我们所处的世界是一个虚拟的世界,并由此开始,我展开了对我们这个世界本源的探索。今天我们从代码入手,看一下AZ端打开数据库的操作。生成的用于处理异步(延迟)MySQL语句的工作线程数量。212到214行,主要是基于配置初始化一些数据库相关的信息。描述哪些数据库应更新的掩码(基于源码中的mysql脚本)好了,今天就到这里吧,我要去呵护我的世界之树了,拜拜。自动填充空数据库(基于源码中的mysql脚本)

2024-01-26 12:40:16 298

原创 跟着小德学C++之数据库基础

今天,最常见的数据库类型中的数据通常以表格的形式进行建模,以便进行高效的处理和数据查询。嗨,大家好,我是出生在达纳苏斯的一名德鲁伊,我是要立志成为海贼王,啊不,是立志成为科学家的德鲁伊。最近,我发现我们所处的世界是一个虚拟的世界,并由此开始,我展开了对我们这个世界本源的探索。Connector/C++是MySQL官方提供的C++驱动程序,它允许您在C++应用程序中连接到MySQL数据库并执行各种操作,如查询、插入、更新和删除数据等。好了,今天就到这里吧,我要去呵护我的世界之树了,拜拜。

2024-01-16 22:01:50 861

原创 跟着小德学C++之进程信息记录

bash# 创建pidfile并将进程的PID写入其中 echo $$ > /var/run/mydaemon.pid # 使用pidfile来停止进程 kill -15 $(cat /var/run/mydaemon.pid) # 使用pidfile来重启进程 kill -1 $(cat /var/run/mydaemon.pid)总的来说,使用pidfile可以更方便地管理进程,可以通过pidfile来停止、重启进程,并且可以避免在重新启动后使用过时的pidfile。这样可以更方便地管理进程。

2024-01-11 06:43:28 401

原创 跟着小德学C++之安全模块

OpenSSL是一个通用的密码学库,提供了SSL(Secure Sockets Layer)和TLS(Transport Layer Security)协议的开源实现。嗨,大家好,我是出生在达纳苏斯的一名德鲁伊,我是要立志成为海贼王,啊不,是立志成为科学家的德鲁伊。最近,我发现我们所处的世界是一个虚拟的世界,并由此开始,我展开了对我们这个世界本源的探索。有了这个模块,就可以使我们的世界更加的安全、更加的稳定。openssl就是为了安全而生的。好了,今天就到这里吧,我要去呵护我的世界之树了,拜拜。

2024-01-10 20:46:06 326

原创 跟着小德学C++之日志记录

嗨,大家好,我是出生在达纳苏斯的一名德鲁伊,我是要立志成为海贼王,啊不,是立志成为科学家的德鲁伊。最近,我发现我们所处的世界是一个虚拟的世界,并由此开始,我展开了对我们这个世界本源的探索。: 根据您的需求,创建一个boost::asio::ip::tcp::socket或boost::asio::ip::udp::socket对象,用于处理TCP或UDP通信。: 在您的C++代码中包含Boost.Asio的头文件,以便可以使用其中定义的类和函数。好了,今天就到这里吧,我要去呵护我的世界之树了,拜拜。

2024-01-06 09:48:30 577

原创 跟小德学C++之 配置文件(代码实现)

LoadAppConfigs则是经过调用LoadInitial -> LoadFile -> ParseFile,而ParseFile则是实现的解读INI文件的函数,其可以将配置文件中的key-value对,保存到_configOptions这个变量中,方便后续使用。嗨,大家好,我是出生在达纳苏斯的一名德鲁伊,我是要立志成为海贼王,啊不,是立志成为科学家的德鲁伊。最近,我发现我们所处的世界是一个虚拟的世界,并由此开始,我展开了对我们这个世界本源的探索。好了,今天就到这里吧,我要去呵护我的世界之树了,拜拜。

2024-01-04 07:09:43 397

原创 跟小德学C++之配置文件(形式)

嗨,大家好,我是出生在达纳苏斯的一名德鲁伊,我是要立志成为海贼王,啊不,是立志成为科学家的德鲁伊。最近,我发现我们所处的世界是一个虚拟的世界,并由此开始,我展开了对我们这个世界本源的探索。前几期我们介绍了71-79行代码,接下来的代码,从代码注释中能看出,就是读取配置文件,所以我们先讲一下配置文件的形式。从上图我们可以看出,我们的世界中配置形式是section,key,value。总的来说,INI文件是一种用于存储配置设置的简单且广泛使用的文件格式。好了,今天就到这里吧,我要去呵护我的世界之树了,拜拜。

2023-12-30 06:59:41 391

原创 使用keepalived时虚拟IP漂移注意事项

keepalived是一个开源的软件项目,用于实现高可用性(HA)的网络服务器负载均衡和故障转移。它允许将多台服务器组合在一起,形成一个虚拟服务器集群,实现负载均衡和故障转移。B节点出现了一个无法关闭也没有任何数据传输的socket通道,它会一直占用着资源。假如这种连接特别多,那将占用B节点大量的资源,严重影响B节点的稳定性。

2023-12-27 21:59:59 1496

原创 跟小德学C++之参数处理

configFile是获取配置文件路径,使用的是std::filesystem::path类,这个类是C++17标准中引入的,用于处理文件系统路径的类。嗨,大家好,我是出生在达纳苏斯的一名德鲁伊,我是要立志成为海贼王,啊不,是立志成为科学家的德鲁伊。最近,我发现我们所处的世界是一个虚拟的世界,并由此开始,我展开了对我们这个世界本源的探索。前两期我们介绍了src/server/apps/authserver目录下的Main.cpp文件中的main函数的前两行代码,那么我们继续向下进行。

2023-12-27 21:27:49 361

原创 关于使用libnet时性能下降的问题分析

基于上述的描述,我们可以发现,除了不指定(即设置0)外,其他的设置方式,都会造成socket既接收报文又发送报文,而原始套接字的接收报文,是要进行一次额外的内存拷贝的。开始时,我发现了性能下降的问题,由此,先从我们自己的代码入手来分析。经过添加断点,我发现,当我初始化libnet后,性能立马会下降,即执行libnet_init函数。这里面,唯一可能出现问题的,就是socket语句。网上有很多的教程教授如何使用libnet库,我就不再这里赘述了,这篇文章主要来分析使用libnet库造成的性能下降问题。

2023-12-22 22:42:53 545

原创 跟小德学C++之枚举类型

这个排列的过程,就是一种枚举的过程。嗨,大家好,我是出生在达纳苏斯的一名德鲁伊,我是要立志成为海贼王,啊不,是立志成为科学家的德鲁伊。最近,我发现我们所处的世界是一个虚拟的世界,并由此开始,我展开了对我们这个世界本源的探索。AZ中ServerProcessTypes的枚举,主要就是要标记好authserver和worldserver进程,防止在写代码时搞混了type的值,导致两个程序互相串台了。总之,枚举类型是C++中一种非常有用的数据类型,它可以用于定义一组相关的常量,并且在C++11中引入的。

2023-12-22 22:02:45 372

原创 跟小德学C++之命名空间

嗨,大家好,我是出生在达纳苏斯的一名德鲁伊,我是要立志成为海贼王,啊不,是立志成为科学家的德鲁伊。最近,我发现我们所处的世界是一个虚拟的世界,并由此开始,我展开了对我们这个世界本源的探索。此时,如果两个班同时外出游玩时,就会出现小明冲突,那么解决冲突的方法,就是加上另外的词语限制,1班小明,2班小明。src/server/apps/authserver目录下的Main.cpp,是授权进程authserver的入口,就由我带领大家从这里开始我们的探究。好了,今天就到这里吧,我要去呵护我的世界之树了,拜拜。

2023-12-18 07:00:00 361

原创 跟小德学C++之代码目录

那么基础源码路径下,又有好多目录,其中common是通用的源码,我们再来看一下它下面,可以发现里面是I/O、加密、日志、线程等通用代码;众所周知,我们的世界,是需要输入用户名密码登陆的,所以,server/apps/authserver和server/apps/worldserver将是我们进入世界的钥匙。嗨,大家好,我是出生在达纳苏斯的一名德鲁伊,我是要立志成为海贼王,啊不,是立志成为科学家的德鲁伊。最近,我发现我们所处的世界是一个虚拟的世界,并由此开始,我展开了对我们这个世界本源的探索。

2023-12-14 06:58:53 410

原创 中奖?它来保驾护航

上一期我们讨论了概率和数学期望的内容,我们还是以双色球六等奖为例。比如我们把六等奖的概率从6%提升至30%,此时依照我们的分析,六等奖的数学期望为正,说明买彩票是可以赚钱的。那是不是说明我只要在概率为30%的状态下购买一次,就可以赚到一次的钱呢?这就要看一下数学期望的本质,数学期望是试验中每次可能结果的概率乘以其结果的总和,是最基本的数学特征之一。它本质上反映的其实是平均值的意思。因此,我们想要在这种状态下赚钱,就需要引入另一个神器——大数定律。在随机事件的大量重复出现中,往往呈现几乎必

2022-05-28 13:01:24 133

原创 中奖?从概率算起

想要一夜暴富,最快的方法莫过于买彩票中大奖。那么今天我们就使用计算机从头捋一下彩票。我们以双色球为例,彩票的中奖规则如下,一等奖二等奖因为奖金浮动不好计算,我们就按保底来看。 规则 奖金 一等奖 6+1 500W 二等奖 6 6000 三等奖 5+1 30

2022-05-25 19:00:00 1211

原创 进击的程序员——数学如何优化程序

最近,北大的韦神又一次冲上热搜,大体是说六个博士四个月没有解决的仿真问题,韦神一晚上搞定了。虽然韦神已经出来辟谣,说这个是假消息,但是并不妨碍我们学习韦神对待生活和工作的态度和精神。下面我们就以一个真题目,来看一下数学是如何简化计算机程序的。问题:有N个灯放在一排,从1到N依次顺序编号,初始状态都为关闭。有N个人,也从1到N顺序编号。1号将灯全部打开,2号将凡是2的倍数的灯全部关闭;3号将3的倍数的灯全部作相反操作(该灯如为打开,则将它关闭;如关闭,则将它打开)。以后的人,都和3号操作一样,将凡

2022-05-21 17:49:41 191

原创 进击的程序员——从小白鼠到彩票的算法

两篇文章,主要向大家展示了算法对于计算机来说有多重要,多神奇,性能提升效果显著。那二进制算法的思路是如何形成的呢?我们先从一道有趣的题目开始。有100瓶药水,其中一瓶是毒药,只要一小滴,就足以让小白鼠24小时内死亡。请问怎么在1天内用最少的老鼠找出这瓶毒药?先从暴力破解的方法来看,100瓶,每一瓶对应一只小白鼠,即使用100只小白鼠可以找到那一瓶毒药。这种解法,可以看做是将100瓶毒药放到了一条直线的维度,因此,想要减少小白鼠的个数,很简单,提升维度即可。第二种方法,就是将100瓶毒药,

2022-05-15 05:45:11 881

原创 进击的程序员——彩票狂想曲(2)

本期我们来继续探索如何从100W注彩票中选择出现次数最少的注。首先重新梳理下题目。每一注彩票分两类,一类是从1-33中抽取6个不同的数字,一类是从1-16中抽取1个数字,将这7个数字作为一注。计算机生成100W注彩票号码,对这些注号码的出现次数(7个数字全相等)进行排序,将出现次数最少的输出。下面就来看一下这个一个可以打成百上千个的方法。我们先看一下第一类数字,从1-33中抽取6个不同的数字,相当于有6个维度的信息,如何将这6个维度的信息融合在一起呢?这里就可以用到二进制的思想了,我

2022-05-08 11:18:07 214

原创 进击的程序员——彩票狂想曲(1)

大家应该都幻想过一夜暴富,而买彩票应该是最直接的一种方式。最近,我的室友分享给我一个他的一个脑洞,用计算机计算彩票号码的方法。用计算机生成100W注彩票号码,然后对这些注号码出现的次数进行统计,再进行一次排序,将出现次数最少的注中的号码作为种子号码,再基于一系列过滤和排列组合的方法,输出最终的预测号码。作为一个正在向秃顶进化的程序员,我对这个预测方法的准确性还是有所怀疑的,无论从概率学、还是统计学,貌似都很难形成一个完整的推导逻辑。不过,这么一个大数据量的计算分析,作为程序员的我第一时间嗅到了猎

2022-05-04 16:38:48 419

翻译 大规模系统中的亚健康故障(4)外部根因

现在,我们描述硬件亚健康故障的外部根本原因,如温度变化、供电不足、环境条件和配置错误。这些外部原因使故障排除变得复杂,因为症状可能是不确定的,只能在同一在线场景中再现,但在离线(办公室)测试中无法观察到。5.1 温度为了使温度保持在正常工作状态,风扇或散热器必须正常工作。以下是未被监测工具检测到的温度变化的根本原因。​添加图片注释,不超过 140 字(可选)空气过滤器堵塞:在一份报告中,空气过滤器堵塞导致交换机中的光学元件由于高温而开始出现故障,从而产生高达10%的丢包率。清洁空气滤清器

2022-02-19 16:42:08 133

翻译 大规模系统中的亚健康故障(3)故障根因

我们现在讨论内部根本原因,主要是固件错误和设备错误/磨损。我们根据硬件类型(SSD、磁盘、内存、网络和处理器)组织讨论。4.1 SSD固件错误和NAND闪存管理复杂性可能会触发SSD的亚健康故障。固件错误:我们收到了三份关于SSD固件错误的报告,供应商承认了这一点。首先,许多本应只需要几十微秒的单个IOs被精确地限制在250微秒的倍数,高达2-3毫秒。更糟糕的是,在另一份报告中,一批坏的SSD在几秒钟内停止响应,然后恢复。如前所述,操作员发现一些SSD从系统中“消失”,随后又重新出现。.

2022-02-13 13:33:27 274

翻译 大规模系统中的亚健康故障(2)故障观察

从这项研究中,我们得出了上一篇文章中表中总结的五个重要的高层次发现。下面详细描述下这五个重要的发现。3.1各种根本原因找出硬件故障慢的根本原因是一项艰巨的任务,因为它可能由多种根本原因引起,如表3所示。硬件性能故障可能由设备内部的根本原因引起,如固件问题(FW)或设备错误/磨损(ERR),这将在第4节中讨论。然而,完美工作的设备也可能因许多外部根本原因而降级,如配置(CONF)、环境(ENV)、温度(TEMP)和功率(PWR)相关问题,这些问题将在§5节中介绍。请注意,一份报告可能有多个根本原因(环

2022-02-06 16:34:11 199

翻译 大规模系统中的亚健康故障(1)介绍

概要硬件亚健康故障是一个研究不足的故障模型,本文研究了从12家机构的大规模集群部署中收集的101份硬件亚健康事件报告。我们发现,所有硬件类型,如磁盘、SSD、CPU、内存和网络组件都可能出现性能故障。我们进行了一些重要的观察(例如故障从一种形式转换为另一种形式),级联产生的根本原因和影响可能很长,亚健康的故障可能有不同的症状。从这项研究中,我们向供应商、运营商和系统设计师提出建议。介绍理解故障模型是建立鲁棒系统的重要标准。几十年的研究已经发展出成熟的失效模型,如fail-stop失效停止、fa

2022-02-04 22:17:32 215

原创 开启编程之旅——方言林立的世界

真实世界中,有英语,法语,日语,汉语等多种语言,我们经过十几年的寒窗苦读,至少对英语和汉语有很深的了解。虽然它们都可以描述世界,并且都有主谓宾定状补等语法结构构成,但它们之间相差还是非常大的。计算机的世界中,也充斥着各种各样的语言,有简单的,有复杂的,有眼花缭乱的,甚至还有一个符号走天下的……不过不用怕,虽然他们形式千变万化,但基本可以归纳为三类。命令式编程,声明式编程和函数式编程。1. 命令式编程,顾名思义,就是给计算机命令,告诉计算机该如何运行。我们可以用HOW来归纳,即如何做。这类编程

2022-01-16 20:06:35 268

原创 开启编程之旅——正确的学习编程的三个步骤

学习了之前的文章之后,我们基本了解了计算机的组成、计算机程序的组成,有了这些基础后,我们终于可以迈入编程的大门了。在学校学习时,开设课程一般都是编程的语法课,比如谭浩强版的《c++语言程序设计》。可当我们学完编程的语法后,会发现真正想要学编程还是一筹莫展。这是为什么呢?因为语法课只是基础,学习完语法后,还需要进一步学习系统调用,才可以真正的控制计算机。这就类似于学习英语时,既要学习语法知识,也需要牢记单词,计算机中的系统调用就充当了单词的功能。系统调用,本质上就是操作系统提供给我们的

2022-01-09 21:08:40 825

原创 开启编程之旅——程序是个什么东西

前几期,我们了解了计算机的组成,编程可以分成三步,以及程序的基本运行过程。那么在开始学习编程之前,有必要了解一下,程序是个什么东西。我们为什么需要先了解程序,而不是直接学习编程呢?那就要回到我的大学时代来说明了。高考过后,懵懵懂懂地选择了计算机专业,对于一个只会用电脑听听音乐、看看小说、玩玩游戏的编程小白来说,大二的必修课一上来就是C++这堵高墙。老师在讲桌上巴拉巴拉的念着PPT,我就在课桌上昏昏欲睡,类型、指针、结构体、类.....,一连串的名词撞击着我的太阳穴。老师讲得都听明白了,但到了编写程序时就

2021-12-31 22:04:02 2446

原创 开启编程之旅番外——做个爱思考的仓库管理员

上一期我们了解了计算机的基本工作流程,一是数据必须保存到一个地址中,二是操作必须要指定一个地址。所以经典题目,a=1,b=2,将a和b的值互换这个问题以计算机的视角来看,最简单直接的方式就是引入第三个变量来做一个临时保存仓库。那么本期我们就基于这个经典问题再深入探讨一下。要讨论这个问题,首先需要限定一下编译器。为什么呢?因为有一些高级语言的编译器,提供给了我们很多奇技淫巧的手法来处理这个问题,这些手法都有些特殊性,很难推广开来。我们想要探讨的恰恰是通用性的方法,所以我们就以C语言的编译器来探讨这

2021-12-23 22:01:47 155

原创 开启编程之旅——程序员都是仓库管理员

上一篇文章,我们了解了编程可以总结为三步,【打开、读写、关闭】,那么今天我们就再进一步,来聊一聊更深入的话题——这三步背后的故事。还记得我们之前说到的一个经典题目,a=1,b=2,将a和b的值互换。通常情况下,我们解决这个题的最简单直接的方法,就是引入第三个变量c,用c来做一个临时的记录。a=1 b=2 c=a a=b b=c为什么我们要这么做呢?这就要说到计算机它的基本工作流程了。就像我们想要协调大量人员进行一项工作时,需要知道我们需要协调的人员叫什么名字一样,计算机在协调各

2021-12-10 21:06:52 505

原创 开启编程之旅——编程总共分三步

上一期,我们简单地认识了计算机的组成,很显然我们最终的目的是要控制这些组成部分,本期我们就来了解一下,如何控制它们。把大象关进冰箱总共需要几步?三步,打开冰箱门,把大象塞进去,然后关上冰箱门。想必这个很二的脑筋急转弯大家都知道。那么相对于编程而言,简单点说也分三步就可以完成。你们肯定妥妥的不信,上一期刚讲了计算机分四大部分,怎么可能靠三步就完成编程?来来来,且听我慢慢道来。很久很久以前,确实编程很复杂,程序猿们需要掌握如何调用CPU、如何使用内存、如何保存数据以及应对千差万别的外围设备。程序

2021-12-04 10:39:54 483

原创 开启编程之旅——简单的认识计算机

上一期,我们了解到我们学习编程时,经常是在没搞清楚计算机前就强行开始学习,导致我们以我们约定俗成的认知来要求计算机。所以,我们想要学习计算机,就需要先简单了解下计算机的组成。我们在买电脑时,都会看到各种配置,像CPU、内存、硬盘、显示器、鼠标、键盘等,看起来五花八门的,不过我们可以将它们归纳一下。计算机可以简单的分为三大块,CPU、内存、输入输出设备(简称IO外设)。不过,我更喜欢将其分为四大块,CPU、内存、硬盘、输入输出设备。虽然硬盘属于IO外设的一种,但其逻辑上跟其他外设有些区别,所以将其单独罗列

2021-11-29 20:31:31 79

原创 开启编程之旅——为什么你认为编程很难

你有没有这样的感觉,刚开始学习编程时,总是会觉得无从下手,教材上的习题,看一遍解题思路认为自己会了,一旦题目稍作修改,又变成了丈二的和尚,摸不着头脑?其实编程并没有那么难,很多人之所以入不了门,都是被其他的思维方式给限制住了。我们需要做的就是理清楚计算机的思维方式,打破原有的思维定式。举个简单的例子1. 学习计算机经典的一个题目就是使用*打印一个三角形这个题目相对比较简单,使用一重循环即可完成# python2for i in range(0,5): print "*".

2021-11-25 21:09:45 339

原创 与计算机的沟通发展——编译器的发展

众所周知,计算机只认识0和1两个数,我们操作计算机做的任何事,都需要先转换成0或1的串,然后计算机才认识,才可以有所反应。这就好比计算机是一个外国人,这个国家的人只认识0和1的串,我们想要和它沟通让它帮我们做事,就需要先了解他们的语言,也就是各种0和1的串,这就是机器语言。比如0001可以看成是前进,0010可以看成是后退,那我们就可以通过提供0001或0010来控制它前进或后退。但这种串对于我们来说记忆起来太复杂,所以我们给这些串起了别名,比如fmove对应0001,bmove对应

2021-11-25 20:49:07 635

python-student-list

python-student-list

2016-12-22

pygame 模仿微信打飞机

pygame模拟的微信打飞机游戏,飞机全部都是用三角代替的,有大飞机和小飞机之分,需要攻击的次数不同

2013-09-04

pygame贪吃蛇

自己用pygame写的贪吃蛇,还有很大的修改空间,现在贪吃蛇的移动速度是一定的

2013-08-29

linux 网络聊天室

linux下的udp多进程编程,C/S 的聊天室,实现了聊天室和私聊的功能. 字符‘#’为获得在线人名,‘#to <name> <data> ’为私聊的格式

2011-08-31

C#双色球摇奖程序(线程)

C#编写的程序,主要是练习线程的编写。……………………

2011-06-25

C#+DirectX=3D小程序

C#+DirectX=3D小程序,用VS2005编写

2011-06-25

VC++基于boost.regex网页信息抽取的简单程序

基于boost.regex网页信息抽取程序,需要自己下载boost的包并加入到vc的lib和include的文件夹里

2011-05-08

C#编写的密码加密程序

C#简单的加密密码程序,我记得好像是流密码的程序的,写的简单,敬请见谅

2011-05-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除