前言
在学习计算机的过程中,我们会碰到不同的进制,如二进制、十六进制等。而这些进制之间的转换,又成为了一个问题。现在,我们来学习写一个程序,实现二~十六进制之间的进制转换。

程序设计思路
一般情况下,要解决一个算法问题,首先要在数学上解决它。进制就代表着满几进一。因此,我们在进制转换时,只需要不断地除以进制数,并将余数连起来,就是新的数了。在进制转换时,通尝使用短除法。如将256转换为十六进制数:

16 l 2 5 6

16 l 1 6············0

16 l 1············0

0············1

故256=0x100。
在真正的写程序的时候,由于十六进制中的10~15用字母A~F表示,因此我们不能直接用int相加,而应该用字符串存数据。

代码实现
以下为题目要求及代码:
202407051720140869844401.png

#include <bits/stdc++.h>
using namespace std;
int n,m,ten;//n、m为题目中原义,ten为被转换的数的十进制
char a[15],ans[15];//a存输入,ans存输出
int n_ten(int n){//n进制→十进制
  int answer=0;//answer为结果
  for(int i=0;a[i]!='\0';i++){//数学方式:十进制数=n进制数的第i位数*n^(i-1)
    if(a[i]>='0' && a[i]<='9') answer=answer*n+a[i]-48;
    if(a[i]>='A' && a[i]<='F') answer=answer*n+a[i]-55;
  }
  return answer;
}
void ten_m(int a,int m){//十进制→m进制,即上面的短除法
  int b=0,i=a;//b为计次,i为十进制数
  while(i>0){//在i除完之前循环
    if(i%m<=9) ans[b]=i%m+48;
    if(i%m>=10) ans[b]=i%m+55;
    i = (i-i%m)/m;
    b++;
  }
  return ;
}
//以上两个函数都使用了ASCLL码相关知识,请自行查表
int main(){
  scanf("%d%s%d",&n,a,&m);
  ten=n_ten(n);
  if(m!=10){
    ten_m(ten,m);
    int n=strlen(ans);//获取长度
    for(int i=n-1;i>=0;i--) printf("%c",ans[i]);
  }
  else printf("%d",ten);
  return 0;
}

结语
进制转换最主要是在数学上理解这个方法,之后就是对照数学方式写程序了。我是faryou,再见!

前言
近期我开始学习信奥了,主要编程语言就是C++。在做学校的题目的时候发现有一道题很难直接解决。参考了做出来的两名同学的做法,发现一个人是利用数组解决(那代码我都不敢看,一堆for循环也没出啥好办法来……),另一个人则是一个数据用一段代码处理,也是屎山代码……后来按照题意找到方向后,便利用自定义函数减少了许多烦琐的步骤。下面为大家介绍一下C++中自定义函数的理解与使用——

函数
要想使用自定义函数,首先就要理解C++中的函数是什么。
简单来说,函数就是一条可以帮助你完成某个特定任务,并返回一个结果值的命令。打个比方:int a;,这条命令就可以帮你完成定义一个名为a的整型变量这一个任务;再比如说if 0这一条命令,就可以判断0的布尔值,并返回一个false。
函数中有一个很重要的组成部分——参数。比如printf("Hello World!");这条代码中,"Hello World!"就是一个参数。函数通过给定的参数进行计算。参数虽然重要,但并不是必要的。
函数中还有一个必要的部分,就是返回值。C++函数中,main()函数的return 0;就是返回一个0的意思。

自定义函数的创建与调用
自定义函数与main()函数类似,下面来看看自定义函数的定义:
首先,是以函数返回值类型+函数名,例如int a(){}就定义了一个返回值为整型,名称为a的函数。
下面介绍参数设置,只需要在函数名后面的括号里用参数数据类型+参数名的格式列出即可,多个函数之间用逗号隔开,注意不要与用户名重复。
在函数的最后,不要忘记返回值,这十分重要,同时注意返回值数据类型要和开头定义的保持一致。
调用函数的时候,只需要以 函数名(参数1,参数2...); 的格式调用即可。

自定义函数的实际应用
上面说了那么多,如果不会应用,那么都是白搭。下面faryou我给大家展示一道学校的题目,以及我的答案——
202401031704291455662705.png
先放个答案,再分析——

#include <cstdio>
using namespace std;
int a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,m=0,n=0;
int pd(int a){//声明自定义函数
  if(a>0) m++;//正数
  if(a<0) n++;//负数
  return 0;
}
int main(){
 
 scanf("%d%d%d%d%d%d%d%d%d%d",&a1,&a2,&a3,&a4,&a5,&a6,&a7,&a8,&a9,&a10);
  pd(a1);
  pd(a2);
  pd(a3);
  pd(a4);
  pd(a5);
  pd(a6);
  pd(a7);
  pd(a8);
  pd(a9);
  pd(a10);
  printf("positive:%d\nnegative:%d",m,n);
  return 0;
}

这里先声明一下,本人对for循环和数组的使用还不熟悉,所以没有进一步简化~~
可以看到,我在这里使用了一个名为pd的自定义函数,且设置了一个名为a的整型变量,函数中进行了一次二分支的判断,之后的main函数中,我把10个待求数一一通过自定义函数判断正负。程序整体利用了2个计次变量,m和n。

总结
本文先介绍了函数,之后说了自定义函数的基本使用方法,最后为大家举了一个例子。希望大家对此能够有自己的理解,并加以运用到更为复杂的情景当中去。
第一次写C++的文章,有问题请不吝赐教~~
我是faryou,下次见('▽')♪

前言
虚拟主机是一个搭建好环境的网站空间,不支持ssh自定义环境,比较适合不折腾专心做内容的个人或中小型企业使用。像本博客就是使用PHP虚拟主机+Z-Blog PHP搭建。现在市面上常见的虚拟主机多为php语言,少部分为ASP。今天我带大家熟悉一下虚拟主机的基本操作,帮助大家顺利建站~

主机选择
虚拟主机和服务器一样,尽量选择大厂如腾讯、阿里等,这里不过多赘述了~

面板使用
和服务器有宝塔面板、1Panel面板一样,虚拟主机也有自己的面板。一般来说,国内主机使用EasyPanel,国外主机使用vistapanel的多。这里以EasyPanel做演示:
打开EasyPanel面板,首先可以看到虚拟主机的MySQL和FTP信息,建议先修改密码,更安全~
然后打开域名绑定,在DNS服务商处按要求添加相应的CNAME记录。打开在线文件,上传自己的网站程序,PHP一般用WordPress、Z-Blog或Emlog做博客或企业官网,Discuz或Xiuno做论坛。
访问自己的域名,按要求填写MySQL信息即可。

数据库管理
一般的虚拟主机服务商用PHPMyAdmin做数据库管理(包括国内外)。因此,此处使用PHPMyAdmin做演示:
如果专心做网站,其实数据库是不需要管理的。所以,数据库只在需要修改一些特殊数据或做调试时使用。
打开PHPMyAdmin,可以看到左侧是数据树状图,右侧是各种操作按钮。因为是图形化界面,所以我不过多赘述了,大家可以先学习一下SQL知识,之后再使用PHPMyAdmin。

总结
虚拟主机还是很推荐大家去用一用的,特别是有PHP/SQL数据库学习需求或专心做网站的人。好了,今天就到这里,下次见~

前言
如果你是一个个人开发者,而且虚拟主机无法满足你的需求,那么你或许需要一台服务器了。今天,我带领大家来学习一下Linux服务器的基本使用~

服务器挑选与操作系统
一般来说,大厂服务器(如腾讯、阿里、华为)虽价格贵些但很稳定。千万不要相信市面上一些不知明厂商的“免费挂机宝”外加10元左右公网IP,分分钟跑路……
服务器相当于一台有CPU、硬盘、内存等基本硬件的电脑,因此,服务器也需要有操作系统。
关于操作系统的选择,其实有很多,主要可分为Linux和Windows Server两大类。一般情况下,我们选择使用Linux,因为Linux舍弃了图形化界面,使它的占用更低很多。Linux中,有CentOS(适合小白)、Ubuntu(适合普通用户)、Debian(适合高手)等。此处我使用的是Ubuntu 20.04作演示,还是挺常见的。

使用SSH管理服务器
SSH(远程连接),是管理服务器最常用的手段,该方法需要你拥有一定的Linux知识,下面介绍——
首先,我们需要一个好用的SSH软件,我之前发过的JuiceSSH就是挺好用的手机SSH软件。服务器连接方式分为两种:密码连接和私钥连接。密码连接是指输入用户名和密码进行验证,而私钥则是用一个密钥文件验证。
完成验证后,进入服务器命令行界面,这时候就可以使用各类Linux命令了,此处不进行列举,自行搜索。

使用Docker部署项目
有时候,在一台服务器上需要部署多个项目,那么这时候,Docker就派上用场了。
首先安装Docher,之后新建Docker镜像。可以在Docker镜像内运行各类项目,也可以安装一个独立的操作系统。
目前许多程序都支持使用Docker安装,Docker是一个相对独立的环境,还是十分安全的。Docker也可以通过SSH管理,它对于资源分配的控制能力很强。所以,无论是建站还是跑计算项目,Docker都是一个不错的选择。

使用面板进行管理
对于新手小白来说,无论是SSH直接管理,还是Docker镜像部署,面对那个看着十分深奥难用的命令行界面,都会手忙脚乱。这时候,面板就派上了大用场。目前国内有宝塔面板、1Panel等一系列面板。此处使用宝塔面板作演示:
首先在SSH中运行宝塔一键安装脚本(上https://bt.cn/搜索)。该脚本有中文向导,还是很好用的。完成之后运行BT,启动脚本。
之后使用公网IP+端口号访问即可。
宝塔面板的功能还是很多的,像搭网站什么的完全没问题。

服务器建站常用应用
首先,一些底层软件还是必要的,它们对于网站的稳定及SEO帮助巨大——
负载均衡软件:Ngnix(最常用,功能强大)、Apache(有些落后)
语言支持:PHP(技术有些过时,但仍然很常用)
之后就是建站了。建站的应用程序还是很多的,下面给大家分类一波——
博客类:WordPress(功能强大,基于PHP,但不适合新手,占用高)、Typecho(轻量级,基于PHP)、Z-Blog(与Typecho类似,基于PHP)、Hexo(功能强大,部署不便,基于HTML+JS+CSS)
论坛类:Discuz!(功能强大,模板多,bug多,基于PHP)、Xiuno(插件多,适合老鸟,基于PHP)、Flaurm(简约,基于PHP+Go+Ruby)
官网类:WordPress、PbootCMS(轻量级,基于PHP)
网盘类:Cloudreve(功能强大,接口多)、Kodbox(适合协同办公,基于PHP)
图床类:EasyImage(轻量级,基于PHP)
运营类:Kangle+EasyPanel(功能强大)
另外顺便说一句,国内服务器搭建网站需要对服务器和域名进行备案,否则属于非法建站,所以不要忘了备案哦~

服务器维护
作为一种数码产品,对服务器进行定期维护还是很有必要的。服务器维护主要包括功能检查、木马查杀等步骤。数据备份也十分重要,毕竟服务器的硬件也不是没有损坏的时候,所以,我们可以定期将自己的网站程序、数据库等重要数据下载到本地进行备份,这样到了万不得已之时还可以进行数据恢复。
同时,为了保护服务器不被攻击,防患于未然,我们可以使用防火墙、CDN等功能。

其他
除了上面所说的这些外,服务器还可以用于CDN分发、代理搭建等领域,你甚至还可以拿自己的服务器开出更多的服务器用于运营,这些功能都是在我们掌握了Linux技术后才能深入了解的。

结语
综上所述,服务器的功能还是非常之多的,拥有一台服务器就是开启了一个新世界。当然,这并不意味着我们可以用服务器肆意妄为。网络不是法外之地,所以,不要使用云服务器去做一些违法违规的事。
我是faryou,我们下次见!

前言

    DNS服务器,又叫域名解析服务器,是网络服务中极为重要的组成部分。世界上有许多著名的DNS服务商,如国内有DNSPod、阿里云DNS,国外则有Cloudflare等。今天,我以免费的Cloudflare为例,教大家如何正确使用DNS服务。


验证域名
使用DNS的第一步就是验证域名(不然人家怎么给你提供服务)。在Cloudflare中,我们首先打开验证界面,在自己的域名提供商处添加对应的NameServer记录,随后回到Cloudflare处,验证域名所有权,完成即可。

DNS记录
DNS服务商中,DNS是最基本也是最核心的功能。DNS记录分为好多种,下面一一介绍使用:
A/AAAA记录
A(AAAA)记录是十分常用的一种记录类型,用于将域名解析向指定的IP地址(A记录是ipv4,AAAA记录是ipv6)。这种记录适用于有公网IP的服务器搭建网站。

CNAME记录
CNAME记录是又一种十分常用的记录,用于将域名解析向另一个域名。这种记录适用于虚拟主机搭建网站。

MX记录
MX记录是用于制作域名邮箱的专用记录。之后将会教大家使用MX记录制作域名邮箱~

TXT记录
TXT记录没有实际用途,常见于各大网络服务供应商验证域名用。

NS记录
NS(NameServer)记录,用于把域名转到别的DNS服务商,也常见于各类二级域名分发。
最后为大家补充几个关于DNS记录的小知识:在添加记录时,@表示使用根域名;在添加根域名时,一般还会加上www域名;制作域名邮箱一般用根域名。

CF CDN
CF CDN是站长用于保护网站不受DDOS等流量攻击的利器。Cloudflare提供免费CDN服务。Cloudflare的CDN在添加DNS记录时设置。不过,并不是所有的记录都要开启CDN,例如CDN可能会误阻挡搜索引擎的蜘蛛,导致排名。所以,具体情况具体分析~

Mail
Cloudflare提供免费邮箱服务,不过这个显然比较鸡肋,这里不再讲了,之后会详细说一下域名邮箱~

总结
本文主要向大家介绍了DNS的使用,Cloudflare免费服务商的使用。好了,今天就到这里,我是faryou,下次见!