使用C编写类sort命令功能的程序

sort命令是linux系统中常用的命令,它的功能是给标准输入中的行进行排序,默认是通过字典序进行排序的。今天,展示如果通过C语言编写一个类似功能的程序。 # sort <<eof > Hello Paul. > How are you going? > Very well. What about you? > I'm good. > eof Hello Paul. How …

ArrayList源码分析

以前,我刚开始学习JavaSe时,还不知道有ArrayList类。刚开始存多个元素时,都是使用数组。但感觉使用数组,不是那么方便。因为Java和php不一样(但和C一样),数组从定义起,其长度就被确定了,不能再被修改了。如果给数组长度定的太大,那么多余的空间浪费感觉挺可惜,但如果给小了,程序就会出问题。 等学习到了集合时,知道了有ArrayList,使用它时,我们不用费心思考虑到底给多个的容量,每…

使用getchar、putchar函数完成cat以及wc命令功能

C语言中的getchar以及putchar函数配合使用,可以完成许多非常有用的功能。比如今天要说的类似于linux命令cat、wc功能。 getchar函数用于从标准输入中读取一个字符,每读取一个字符后,指针向下移动。如果遇到了字符为EOF则表示标准输入流里字符已全部读取完毕。 putchar函数用于向标准输出中输入一个字符 cat 实现该功能比较简单,每次使用getchar读取一个字符后,就使用…

详解Java中的相等测试equals与继承

Object中有一个equals方法,用来测试两个对象是否相等。该方法判断两个对象相等的条件是,两个对象的引用是否相等。如果两个对象的引用相等的话,那么毋庸置疑这两个对象一定相等。 但是,我们经常需要对对象的字段进行比较,如果两个对象具有相同的字段值,就认为这两个对象相等。比如,有两个员工姓名、年龄以及薪水相等的话,就认为他们相等。 下面我们来重写父类的equals方法,不再比较引用,而是比较几个…

Java中方法参数按值传递

php中的函数、方法中参数有两种传递方法,按值传递以及按引用地址传递。对于普通变量,php采用按值传递,而对于对象,则默认使用按引用地址传递。 但在java中,方法的参数总是按照值传递的。也就是说,方法得到的是所有参数值的一个副本。若函数中没有使用return将此副本返回给调用者,该副本在方法调用结束后便会自动被销毁。 下面,通过几个案例来看看 基本类型参数 package com.studyja…

网站文件及数据库文件的备份

文件备份的重要性不言而喻,定期备份是个好习惯,不管是网站文件还是日常生活的照片、视频等。不然等到数据丢失了,你就能体会数据找不回来的那种绝望了。笔者亲身经历过几次,最严重的一次是个人博客7个多月的数据全部丢失,那真是种欲哭无泪的感觉。 今天和大家来讲下如何在服务器端编写备份网站目录及数据库文件的脚本。首先需要先补充几个知识: tar命令,文件的压缩打包 find命令,查找文件 bzip2,文件压缩…

shell编程实战之执行多个目录下的php程序

去年自己参与的一个项目中,有这样的一个需求:在多个目录下都有php脚本,需要去执行这行目录下的所有php脚本。 拿个这个需求,我的考虑是,将目录作为参数传递给shell脚本而不是写死在程序中。这里需要补充个知识点:shell脚本程序的预定义变量 /path/to/scriptname opt1 opt2 opt3 opt4 $0 $1 $2 $3 $4 $0表示脚本文件名,$1表示第一个参数,依次…

shell编程实战之内存检查超过设定值杀死php-fpm进程

公司之前购买过一个源码,写这个源码的工程师当时没有考虑全面,设计数据库表结构有点问题,当公司的数据达到几十万级别的时候,该网站基本就跑不动了。原因是查询的时候没有使用索引,造成了大量的数据库慢查询,服务器同时存在许多php-fpm进程运行。几乎耗尽了服务器cpu和内存。 当定位到问题后,重新设计了表结构,给对应的几个字段加上了索引。加上索引之后,还是偶尔会出现cpu、内存快耗尽的情况。对于这种情况…

shell编程实战之监控网卡流量

最近客户的网站出现卡慢现象,通过检查,出问题是原因是因为带宽吃紧,所以让客户将服务器带宽从原本的2M增加到4M的带宽,网站速度一下就提升了。那么如何监控网卡流量情况,linux有许多命令可以查看。比如iftop,sar等等。 这里,我想写一个监控网卡流量情况的脚本。统计每一分钟的网卡流量情况,输入到指定文件中。可以使用sar -n DEV 1 59查看一分钟内网卡平均流量。 此脚本的核心是获取1分…