- Alma linux部署gitlab
罗sir 99
devopslinuxgitlab运维
前提条件操作系统:AlmaLinux8(或相似版本)内存:至少4GBRAM硬盘:至少20GB硬盘空间(建议更多)sudo权限:你需要在系统上具有root权限,或者是可以使用sudo的用户。步骤1:更新系统首先,更新系统包以确保系统处于最新状态:sudodnfupdate-y步骤2:安装依赖包安装一些必要的依赖包:sudodnfinstall-ycurlpolicycoreutilsopenssh-
- linux总线设备驱动模型,Linux 总线设备驱动模型
欧阳洋葱
linux总线设备驱动模型
1、总线设备驱动模型2、实现一个平台总线设备驱动(也称虚拟总线)1)demo_dev#include#include#include#include#include#include#include/*分配/设置/注册一个platform_device*/staticstructresourcedemo_resource[]={[0]={.start=0xffffffee,.end=0xffffff
- 【C++】【网络】【Linux系统编程】单例模式,加锁封装TCP/IP协议套接字
东洛的克莱斯韦克
C++linux网络网络tcp/ip网络协议C++Linux系统编程
目录引言获取套接字绑定套接字表明允许监听单例模式设计完整代码示例个人主页:东洛的克莱斯韦克-CSDN博客引言有关套接字编程的细节和更多的系统调用课参考《UNIX环境高级编程》一书,可以在如下网站搜索电子版,该书在第16章详细的介绍了各种接口。JiumoSearch鸠摩搜索-文档搜索引擎(jiumodiary.com)而在实际的编程中,总是用系统调用的接口难免会有些繁琐。我们可以根据自己的需求,用面
- idea隐藏无关文件
fengdongnan
intellij-ideajavaide
idea隐藏无关文件如果你想隐藏某些特定类型的文件(例如.log文件或.tmp文件),可以通过以下步骤设置:打开设置在菜单栏中选择File>Settings(Windows/Linux)或IntelliJIDEA>Preferences(macOS)。进入文件类型设置在设置窗口中,导航到Editor>FileTypes。添加文件类型在右侧的FileTypes列表中,找到Ignorefilesand
- 使用arduino玩基于esp8266的nodemcu开发板
一个小网管
Arduinoarduinoesp8266nodemcu
一、简介中秋节到图书馆看书,看到了arduino方面的书籍,里面有提到ESP8266模块。让我想起我抽屉里吃灰很久了的基于esp8266的nodemcu开发板。于是把书借回家研究了一下。这里做个记录。二、我目前在使用的云服务器推荐学Linux不搞个云服务器始终感觉不爽!要稳定性、安全性、不差钱的可以使用阿里、腾讯等大厂的云服务器。本人穷屌丝一枚,所以我用的是免费的“三丰云”,同时提供"免费虚拟主机
- rocketmq集群启动和下线
小虾米 ~
RocketMQrocketmq
启动nameservernohupshbin/mqnamesrv&tail-f~/logs/rocketmqlogs/namesrv.log启动brokernohupshbin/mqbroker-nlocalhost:9876&tail-f~/logs/rocketmqlogs/broker.log-n:nameserver生产/消费测试消息shbin/tools.shorg.apache.roc
- 首版Git源码初探——Linux之父在malloc之后也忘了free啦?
LinusTorvalds无疑是开源软件界最具影响力的人物之一。作为Linux内核的创始人,他因技术贡献赢得了尊敬,但也常因口无遮拦的言辞引发争议。Linus对代码质量的要求极其严苛,也许正是因为自信能够写出完美的代码,才让他有底气挖苦和讽刺其他开发者吧。Linus写出的代码到底能有多么精简、多么高深、多么优雅、多么健壮……?可能很多程序员都对此充满好奇。Linux内核的代码显然过于复杂,不适合“
- Linux网络通信基础API
挣扎的泽
Linuxlinux服务器网络
这篇文章只有Linux网络通信基础API大参数信息,和返回值,这篇文章并没有这些基础API的参数类型介绍。accept的第二个参数可以查看客户端信息。创建socket#include/*SeeNOTES*/#includeintsocket(intdomain,inttype,intprotocol);该函数可以创建一个socket;参数:domain:告诉系统使用那个底层协议。对TCP/IP协议
- ffmpeg 硬件解码 264 265 各个平台
爱学习的大牛123
音视频ffmpeg
一.命令行介绍FFmpeg支持多种平台的硬件解码,包括H.264(AVC)和H.265(HEVC)编解码器。以下是在不同平台上使用FFmpeg进行硬件解码的概述:1.NVIDIAGPU(NVDEC)适用于Windows、Linux和macOS(较旧的Mac设备)。-H.264:`-c:vh264_cuvid`-H.265:`-c:vhevc_cuvid`示例:```ffmpeg-hwaccelcu
- freerdp 解压安装_Windows环境下编译FreeRDP
weixin_39966130
freerdp解压安装
关于在Linux下如何编译FreeRDP,在github的wiki上面已经说的很明白了,而且相当简单,具体细节参考网址:FreeRDP构建说明。大抵就是make,makeinstall之类的,并且之前需要安装几个依赖库的。今天在Windows下尝试使用VS2008编译,遇到了几个问题,遂记录下来,希望可以帮助到后来人~如下便是细节:一、工具准备VirtualStudio2008,这个是必须要保证有
- 物联网下的RTOS开发(四)——数据存储
别拍我后脑勺
RTOS物联网设计模型
文章目录数据存储一、存储介质二、物联网场景三、模型设计直接存储可靠性直接存储文件系统应用数据存储在window或者linux下开发程序,程序员往往不会关心文件存储的介质。因为操作系统已经为我们封装好了操作硬件(磁盘)的可能会用的绝大部分接口。只要我们调用一下相关IO接口就能完成对磁盘的操作。而目前IOT设备资源很限,用于存储的可以是ram或者flash,ram的容量往往是几K字节到几百K字节,fl
- inux学习日志前传_基础命令
stevenux
Linux入门-自学Linux
Linux学习日志_基础命令Linux哲学:测试shell脚本是否有语法错误bash单步执行脚本hwclock(一般使用:hwclock-r读取硬件时间)文件系统:rm:删除cp:copy(默认只复制文件)mv:moveinstall:(复制后有执行权限)cut:文本排序:sort(不影响源文件,只影响显示)文本统计:wc(wordcount)字符处理:tr转换或删除字符bash及其特性:练习:用
- find命令学习
Miqiuha
学习
转自:https://wangchujiang.com/linux-command/c/find.html1.-type参数find.-type类型参数f普通文件l符号连接d目录c字符设备b块设备s套接字pFifo2.按时间UNIX/Linux文件系统每个文件都有三种时间戳:访问时间(-atime/天,-amin/分钟):用户最近一次访问时间。修改时间(-mtime/天,-mmin/分钟):文件最
- Linux内核源码:ext4 extent详解
深度Linux
C/C++全栈开发Linux文件系统linuxC/C++文件系统ext4
在Linux系统的庞大体系中,文件系统就像是一个井然有序的图书馆,而ext4文件系统则是这座图书馆中极为重要的“藏书室”,它负责高效管理和存储数据。在ext4众多的奥秘中,ext4extent犹如一颗璀璨的明珠,起着关键作用。接下来,我将带大家深入到Linux内核源码的世界,详细解读ext4extent。在这趟旅程中,我们会剖析它的诞生背景、核心数据结构,以及它在文件操作里的运行机制,让你对Lin
- 什么是LILO?思维导图 代码示例(java 架构)
用心去追梦
java架构python
什么是LILO?LILO(LinuxLoader)是早期Linux系统中常用的引导加载程序之一,用于启动操作系统。它在计算机启动时运行,负责将内核加载到内存中,并初始化系统以开始操作系统的执行。尽管现在许多系统已经转向使用GRUB或GRUB2作为默认的引导加载程序,但在某些老旧系统或特定场景下,LILO仍然被使用。LILO的特点历史与地位是最早的Linux引导加载程序之一。曾经广泛应用于各种Lin
- 60款顶级大数据开源工具
La victoria
大数据
一、Hadoop相关工具1.HadoopApache的Hadoop项目已几乎与大数据划上了等号。它不断壮大起来,已成为一个完整的生态系统,众多开源工具面向高度扩展的分布式计算。支持的操作系统:Windows、Linux和OSX。相关链接:http://hadoop.apache.org2.Ambari作为Hadoop生态系统的一部分,这个Apache项目提供了基于Web的直观界面,可用于配置、管理
- UOS等Linux系统可以用的快捷启动程序的sh脚本
weixin_43985754
linux运维bash
这是一个写给普通用户使用的sh脚本,功能就是双击启动,就可以自动运行相同目录下的可执行文件(存在多个可执行程序时,可以按一定规则优先运行某个程序,也可以列出当前目录下的可执行程序清单,输入对应序号回车,自行对应程序),包含但不限于Python代码、其他SH脚本等,具体看代码注释即可。1、如果是UOS系统,第一次启动时,右键单击sh脚本,属性里面授予可执行程序权限。后续就可以直接双击启动-选择“在终
- 资产管理软件 GLPI的安装(转)
weixin_34223655
数据库phpjson
资产管理系统GLPI的安装2010-07-0516:20:31标签:休闲资产管理系统GLPI职场原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。否则将追究法律责任。http://hx100.blog.51cto.com/44326/344181GLPI资产管理系统系统:Linux5.5(32bit)IP:10.80.11.205撰写人:hx10日期:2010/7/5
- Linux系统扩容根 (/) 文件系统空间
JunLan~
Linuxlinux运维
[root@localhost~]#df-Th/#查看当前根文件系统使用情况[root@localhost~]#lsblk#查看设备的挂载情况[root@localhost~]#lvdisplay#查看逻辑卷使用情况#操作磁盘分区表[root@localhost~]#fdisk/dev/nvme0n1欢迎使用fdisk(util-linux2.37.4)。更改将停留在内存中,直到您决定将更改写入磁
- 分享2025年黑客最常用的10款软件工具(包含编程密码破译漏洞扫描等),学会它你也可以成为黑客高手!
程序员晓晓
web安全黑客技术网络安全渗透测试内网渗透计算机工具分享
前言以下所有这些工具都是捆绑在一起的Linux发行版,如KaliLinux或BackBox,建议安装一个合适的Linux黑客系统,尤其是因为这些黑客工具可以(自动)更新。1、Metasploit(渗透测试软件,免费与付费)漏洞利用工具MetasploitFramework(MSF)是一款开源安全漏洞检测工具,附带数千个已知的软件漏洞,并保持持续更新。Metasploit可以用来信息收集、漏洞探测、
- Wayland为什么将会在中国发展壮大?
夕月风
DisplayWayland显示技术
Wayland是一个现代的显示服务器协议,旨在替代传统的XWindowSystem。它提供了更好的性能、更低的延迟和更简单的架构,因此在Linux桌面环境中越来越受欢迎。以下是Wayland生态在中国发展壮大的几个可能原因和趋势:1.技术优势性能提升:Wayland在图形渲染和输入处理方面比X11更高效,尤其是在高分辨率和高刷新率的显示器上。安全性:Wayland的设计更注重安全性,减少了潜在的安
- linux存储小记
秋月霜风
linux运维服务器
linux存储小记TrueNASTrueNAS是一个流行的开源存储平台,主要有以下版本:TrueNAS基本信息版本特点TrueNASCORE•基于FreeBSD系统•以稳定性和成熟度著称•基础NAS操作性能更好•使用IOCage进行容器管理•功能完整,持续获得维护更新•适合注重稳定性和数据完整性的用户TrueNASSCALE•基于Linux系统•提供原生Docker容器支持•更好的硬件兼容性•专为
- linux磁盘知识学习
秋月霜风
运维知识linux学习单片机
文章目录linux磁盘阵列知识积累配置RAID方案在Linux中配置RAID在其他设备上配置RAID确认是什么RAID级别cat/proc/mdstat输出示例mdadm--detail/dev/md0输出示例如何确认设备是否做了RAID其他方式fdisklsblkpartedlshwlsscsismartctlblkid不同命令使用场景1.fdisk2.mdadm3.lsblk4.parted5
- 基于 Linux 系统 ARM 架构的身份证识别插件技术解析与应用示例
zrgkcard2024
linux架构运维经验分享
基于Linux系统ARM架构的身份证识别插件技术解析与应用示例一、引言在当今数字化信息管理的时代背景下,身份证识别技术在众多领域发挥着关键作用。本文聚焦于一款专为Linux系统ARM架构设计的身份证识别插件,详细阐述其技术原理、功能特性、应用场景以及开发接口等方面内容,旨在为相关技术人员提供全面且深入的技术参考。二、技术原理与优势该身份证识别插件采用先进的射频识别(RFID)技术,有效规避了传统光
- 【裸机装机系列】17.kali(ubuntu)-linux连接蓝牙键盘
读书,代码与猫
裸机装机系列linuxubuntulinux连接蓝牙ubuntu连接蓝牙ubuntu连接蓝牙键盘linux连接蓝牙键盘kali连接蓝牙键盘
推荐阅读:1.kali(ubuntu)-为什么弃用ubuntu,而选择基于debian的kali操作系统电脑作为生产力工具,键盘是必不可少的。而大部分的自带键盘可能使用起来没那么舒服,这时候就需要外置键盘来协作。现在很多人都用蓝牙键盘了。我自己是有“有线键盘”和“蓝牙键盘”两种,这里介绍一下蓝牙键盘怎么连接linux——以我的罗技k380为例1>在键盘上进行操作(罗技k380,其他键盘可以忽略)如
- Bashrc 和 Profile 配置文件详解
vortex5
LInux基础linuxshellbash运维运维开发
在Linux系统中,Bash(BourneAgainShell)是一个常用的命令行shell。为了更好地配置和定制化shell环境,Bash提供了几个配置文件,其中bashrc和profile是最常见和重要的两个文件。这些文件允许用户和系统管理员设置环境变量、别名、函数等内容,以影响shell的行为和功能。配置文件加载的本质当我们启动一个shell时,Bash会加载一系列配置文件,并在当前shel
- (王道考研计算机网络)第四章网络层-第三节1:IP数据报格式及分片
快乐江湖
tcp/ip网络网络协议
指导获取:密码7281专栏目录首页:【专栏必读】王道考研408计算机网络+湖科大教书匠计算机网络+网络编程万字笔记、题目题型总结、注意事项、目录导航和思维导图王道考研408计算机组成原理万字笔记王道考研408数据结构+计算机算法设计与分析万字笔记王道考研408操作系统+Linux系统编程万字笔记文章目录一:IP数据报格式二:IP数据报分片一
- Linux神器——make/Makefile
发烧的CPU
Linux操作系统Makefile自动化编译依赖关系项目清理构建工具
目录一、背景二、案例三、依赖关系四、依赖方法五、原理六、项目清理一、背景会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作makefile带来的好处就是——“自动化编译”,一旦写
- 【Linux】解决 apt-key 弃用问题:GPG 直接管理密钥代替 apt-key
丶2136
运维#linuxlinux运维服务器
引言在Linux系统,尤其是Debian和Ubuntu中,APT(AdvancedPackageTool)是广泛使用的包管理工具,负责安装、更新和管理系统软件包。历史上,apt-key命令一直被用来管理GPG密钥,验证软件包的合法性和完整性。然而,随着Linux系统的安全性需求提升,apt-key已被标记为弃用,并且将逐步被替换为更加现代和安全的密钥管理方式。新的方法推荐直接使用GPG来管理密钥,
- Maven安装与配置国内源
疯狂的键盘侠
springbootjavamavenmavenjava
Maven安装与配置国内源mac、linux、windows安装maven方式一样,解压就可以用。现在配置maven国内源与本地仓库。安装目录/usr/local/Cellar/maven-3.8.5本地仓库地址/usr/local/Cellar/maven-3.8.5/localRepository在maven文件目录下,创建一个文件夹,比如“localRepository”,然后在conf文件
- java封装继承多态等
麦田的设计者
javaeclipsejvmcencapsulatopn
最近一段时间看了很多的视频却忘记总结了,现在只能想到什么写什么了,希望能起到一个回忆巩固的作用。
1、final关键字
译为:最终的
&
- F5与集群的区别
bijian1013
weblogic集群F5
http请求配置不是通过集群,而是F5;集群是weblogic容器的,如果是ejb接口是通过集群。
F5同集群的差别,主要还是会话复制的问题,F5一把是分发http请求用的,因为http都是无状态的服务,无需关注会话问题,类似
- LeetCode[Math] - #7 Reverse Integer
Cwind
java题解MathLeetCodeAlgorithm
原题链接:#7 Reverse Integer
要求:
按位反转输入的数字
例1: 输入 x = 123, 返回 321
例2: 输入 x = -123, 返回 -321
难度:简单
分析:
对于一般情况,首先保存输入数字的符号,然后每次取输入的末位(x%10)作为输出的高位(result = result*10 + x%10)即可。但
- BufferedOutputStream
周凡杨
首先说一下这个大批量,是指有上千万的数据量。
例子:
有一张短信历史表,其数据有上千万条数据,要进行数据备份到文本文件,就是执行如下SQL然后将结果集写入到文件中!
select t.msisd
- linux下模拟按键输入和鼠标
被触发
linux
查看/dev/input/eventX是什么类型的事件, cat /proc/bus/input/devices
设备有着自己特殊的按键键码,我需要将一些标准的按键,比如0-9,X-Z等模拟成标准按键,比如KEY_0,KEY-Z等,所以需要用到按键 模拟,具体方法就是操作/dev/input/event1文件,向它写入个input_event结构体就可以模拟按键的输入了。
linux/in
- ContentProvider初体验
肆无忌惮_
ContentProvider
ContentProvider在安卓开发中非常重要。与Activity,Service,BroadcastReceiver并称安卓组件四大天王。
在android中的作用是用来对外共享数据。因为安卓程序的数据库文件存放在data/data/packagename里面,这里面的文件默认都是私有的,别的程序无法访问。
如果QQ游戏想访问手机QQ的帐号信息一键登录,那么就需要使用内容提供者COnte
- 关于Spring MVC项目(maven)中通过fileupload上传文件
843977358
mybatisspring mvc修改头像上传文件upload
Spring MVC 中通过fileupload上传文件,其中项目使用maven管理。
1.上传文件首先需要的是导入相关支持jar包:commons-fileupload.jar,commons-io.jar
因为我是用的maven管理项目,所以要在pom文件中配置(每个人的jar包位置根据实际情况定)
<!-- 文件上传 start by zhangyd-c --&g
- 使用svnkit api,纯java操作svn,实现svn提交,更新等操作
aigo
svnkit
原文:http://blog.csdn.net/hardwin/article/details/7963318
import java.io.File;
import org.apache.log4j.Logger;
import org.tmatesoft.svn.core.SVNCommitInfo;
import org.tmateso
- 对比浏览器,casperjs,httpclient的Header信息
alleni123
爬虫crawlerheader
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
{
String type=req.getParameter("type");
Enumeration es=re
- java.io操作 DataInputStream和DataOutputStream基本数据流
百合不是茶
java流
1,java中如果不保存整个对象,只保存类中的属性,那么我们可以使用本篇文章中的方法,如果要保存整个对象 先将类实例化 后面的文章将详细写到
2,DataInputStream 是java.io包中一个数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型。应用程序可以使用数据输出流写入稍后由数据输入流读取的数据。
- 车辆保险理赔案例
bijian1013
车险
理赔案例:
一货运车,运输公司为车辆购买了机动车商业险和交强险,也买了安全生产责任险,运输一车烟花爆竹,在行驶途中发生爆炸,出现车毁、货损、司机亡、炸死一路人、炸毁一间民宅等惨剧,针对这几种情况,该如何赔付。
赔付建议和方案:
客户所买交强险在这里不起作用,因为交强险的赔付前提是:“机动车发生道路交通意外事故”;
如果是交通意外事故引发的爆炸,则优先适用交强险条款进行赔付,不足的部分由商业
- 学习Spring必学的Java基础知识(5)—注解
bijian1013
javaspring
文章来源:http://www.iteye.com/topic/1123823,整理在我的博客有两个目的:一个是原文确实很不错,通俗易懂,督促自已将博主的这一系列关于Spring文章都学完;另一个原因是为免原文被博主删除,在此记录,方便以后查找阅读。
有必要对
- 【Struts2一】Struts2 Hello World
bit1129
Hello world
Struts2 Hello World应用的基本步骤
创建Struts2的Hello World应用,包括如下几步:
1.配置web.xml
2.创建Action
3.创建struts.xml,配置Action
4.启动web server,通过浏览器访问
配置web.xml
<?xml version="1.0" encoding="
- 【Avro二】Avro RPC框架
bit1129
rpc
1. Avro RPC简介 1.1. RPC
RPC逻辑上分为二层,一是传输层,负责网络通信;二是协议层,将数据按照一定协议格式打包和解包
从序列化方式来看,Apache Thrift 和Google的Protocol Buffers和Avro应该是属于同一个级别的框架,都能跨语言,性能优秀,数据精简,但是Avro的动态模式(不用生成代码,而且性能很好)这个特点让人非常喜欢,比较适合R
- lua set get cookie
ronin47
lua cookie
lua:
local access_token = ngx.var.cookie_SGAccessToken
if access_token then
ngx.header["Set-Cookie"] = "SGAccessToken="..access_token.."; path=/;Max-Age=3000"
end
- java-打印不大于N的质数
bylijinnan
java
public class PrimeNumber {
/**
* 寻找不大于N的质数
*/
public static void main(String[] args) {
int n=100;
PrimeNumber pn=new PrimeNumber();
pn.printPrimeNumber(n);
System.out.print
- Spring源码学习-PropertyPlaceholderHelper
bylijinnan
javaspring
今天在看Spring 3.0.0.RELEASE的源码,发现PropertyPlaceholderHelper的一个bug
当时觉得奇怪,上网一搜,果然是个bug,不过早就有人发现了,且已经修复:
详见:
http://forum.spring.io/forum/spring-projects/container/88107-propertyplaceholderhelper-bug
- [逻辑与拓扑]布尔逻辑与拓扑结构的结合会产生什么?
comsci
拓扑
如果我们已经在一个工作流的节点中嵌入了可以进行逻辑推理的代码,那么成百上千个这样的节点如果组成一个拓扑网络,而这个网络是可以自动遍历的,非线性的拓扑计算模型和节点内部的布尔逻辑处理的结合,会产生什么样的结果呢?
是否可以形成一种新的模糊语言识别和处理模型呢? 大家有兴趣可以试试,用软件搞这些有个好处,就是花钱比较少,就算不成
- ITEYE 都换百度推广了
cuisuqiang
GoogleAdSense百度推广广告外快
以前ITEYE的广告都是谷歌的Google AdSense,现在都换成百度推广了。
为什么个人博客设置里面还是Google AdSense呢?
都知道Google AdSense不好申请,这在ITEYE上也不是讨论了一两天了,强烈建议ITEYE换掉Google AdSense。至少,用一个好申请的吧。
什么时候能从ITEYE上来点外快,哪怕少点
- 新浪微博技术架构分析
dalan_123
新浪微博架构
新浪微博在短短一年时间内从零发展到五千万用户,我们的基层架构也发展了几个版本。第一版就是是非常快的,我们可以非常快的实现我们的模块。我们看一下技术特点,微博这个产品从架构上来分析,它需要解决的是发表和订阅的问题。我们第一版采用的是推的消息模式,假如说我们一个明星用户他有10万个粉丝,那就是说用户发表一条微博的时候,我们把这个微博消息攒成10万份,这样就是很简单了,第一版的架构实际上就是这两行字。第
- 玩转ARP攻击
dcj3sjt126com
r
我写这片文章只是想让你明白深刻理解某一协议的好处。高手免看。如果有人利用这片文章所做的一切事情,盖不负责。 网上关于ARP的资料已经很多了,就不用我都说了。 用某一位高手的话来说,“我们能做的事情很多,唯一受限制的是我们的创造力和想象力”。 ARP也是如此。 以下讨论的机子有 一个要攻击的机子:10.5.4.178 硬件地址:52:54:4C:98
- PHP编码规范
dcj3sjt126com
编码规范
一、文件格式
1. 对于只含有 php 代码的文件,我们将在文件结尾处忽略掉 "?>" 。这是为了防止多余的空格或者其它字符影响到代码。例如:<?php$foo = 'foo';2. 缩进应该能够反映出代码的逻辑结果,尽量使用四个空格,禁止使用制表符TAB,因为这样能够保证有跨客户端编程器软件的灵活性。例