• PHP多态性实例

    什么是多态性

    多态性是继数据库抽象和继承后,面向对象语言的第三个特征。多态即多种形态,具有表现多种形态的能力特征。在面向对象中表示根据对象的类型以不同方式处理。多态性允许每个对象以适合自身的方式去响应共同的消息。多态性增强了软件的灵活性和重用性。

    如我们创建一个doing()方法,如果是学生则打印上课,如是公司职员则打印上班。

    普通做法

    使用if判断

    /**
     * PHP多态性
     * 琼台博客 www.qttc.net
     */
     
    // 定义学生类
    class student{
      public function cla(){
        echo "学生工正在上课!<br />";
      }
    }
     
    // 定义职员类
    class office{                              
      public function Wor(){
        echo "职员正在上班!<br />";
      }
    }
     
    // 判断对象类型方法
    function doing($obj){ 
      if($obj instanceof student){ 
        $obj->cla();
      }elseif($obj instanceof office){
        $obj->wor();
      }else{
        echo "没有这个对象!";
      }
    }
     
    doing(new student()); // 学生正在上课
    doing(new office());  // 职员正在上班
    

    ...

    READ ALL

  • JavaScript计算两点之间的距离

    计算两点之间的距离假如不是平行或者垂直的两点话就需要用到三角形原理来计算了

    full

    公式也特别简单,假如你知道了两个点的xy坐标,那么就可以利用以下公式算出来两点之间的距离

    var a = x1 - x2;
    var b = y1 - y2;
    
    var c = Math.sqrt(a * a + b * b);
    
    // c is the distance
    

    根据三角形公式,两个直角边平方的总和在根除一下就是斜边的距离,而斜边的距离就是两点之间的距离

    ...

    READ ALL

  • 180M小内存VPS体会

    目前几乎所有VPS提供商都限定最小内存为512M,如我之前使用的Linode,它们最小内存就是512M。但Linux是一个优越的服务器系统,占用内存小。因此有不少VPS提供商还在销售128M的VPS,甚至64M的也不奇怪。当然,这种小内存的VPS服务器自然是Linux了。小内存的VPS价格便宜实惠,又不浪费。

    我也购买了一个180M的小内存VPS试试一下效果怎样。经过挑选,最终选定DiaHosting这家。

    配置信息,支持支付宝付款,但汇率按1:7算。有优惠码可以打折,优惠码网上搜就有。我的优惠码九折,打折后9刀,实际付款63RMB。

    full

    ...

    READ ALL

  • SecureCRT中文乱码解决

    有时时候SSH工具登录远程Linux服务器操作时,中文部分显示乱码,而英文部分显示正常不影响

    SecureCRT默认情况下显示中文字符都是乱码,需要设置为UTF8字符集以后才可以正常显示中文字符

    菜单栏选项 > 会话选项

    full

    左侧选择外观,右侧字符编码下拉菜单选择UTF-8。点击确定保存退出即可。

    full

    ...

    READ ALL

  • Linux踢出已登录用户

    这个做法有点坏,不过有时候是为了安全

    要踢掉别人,首先得用root账户登录,然后使用w命令查看哪些用户登录了

    [root@pmv01 ~]# w
     23:25:05 up 56 days, 59 min,  4 users,  load average: 0.00, 0.00, 0.00
    USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
    root     pts/0    192.168.1.48     23:25    0.00s  0.04s  0.03s w
    root     pts/1    192.168.10.35    Wed17    5days  0.02s  0.02s -bash
    root     pts/2    192.168.10.35    18:55    2:00m 28.29s  0.10s -bash
    root     tty1     :0               06Mar18 56days  6:02   6:02  /usr/bin/Xorg :0 -nr -verbose -audit 4 -auth /var/run/gdm/auth-for-gdm-rt8RMd/database -nolisten tcp vt1
    

    ...

    READ ALL

  • 如何使用SSH工具管理Linux服务器

    现在VPS已经成为虚拟主机的替代品,不少童鞋买VPS的时候商家会说此SSH不支持XXX只支持SSH,那么SSH是什么呢?

    SSH为Secure Shell的缩写,由IETF的网络工作小组(Network Working Group)所制定;SSH 为建立在应用层和传输层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。支持所有UNIX平台,所以Linux自然也支持。

    使用SSH管理UNIX平台服务器已经是所有管理员首选,那么常用的SSH管理工具有哪些呢?Xshell、Putty、SecureCRT比较常用。

    ...

    READ ALL

  • 买个Burst的VPS折腾了大半天还是没买好

    有几个垃圾站,放国内机房要备案繁琐,所以就想着到国外随便买个便宜稳定的VPS跑跑就好。一番对比后选了84(Burst),感觉它有自己的机房,队伍壮大不会差哪去?

    网页经常打不开

    刚开始注册登录的时候,网页经常打不开,以为自己的网络原因。知道第二天到公司发现情况还是照旧。

    full

    重新回车一下,才能打开

    信用卡扣款但账单依旧未支付

    一番填写资料后,填写信用卡信息提交账单。很快就收到交行发来短信说消费7.15美元,可Burst订单状态还是未支付

    ...

    READ ALL

  • CentOS配置vi高亮设置

    CentOS里的vi只默认安装了vim-minimal-7.x,所以syntax高亮不起作用。需要用yum安装另外两个组件vim-common-7.xvim-enhanced-7.x

    直接在命令状态下输入以下命令安装:

    yum -y install vim-enhanced
    

    此时使用vim命令打开文件就是高亮显示了

    如果要修改色彩方案,可以自行在配置文件里制定颜色方案,vi默认带了大约十多种颜色方案,如果都不满意还可以从网上下载。

    颜色方案下载地址 www.vim.org

    配置文件地址 /etc/vimrc

    ...

    READ ALL

  • C写的一个连线游戏

    初学C语言,经过写完这个游戏发现与众多语言有很大差别的,虽说语法都差不多,但不能直接return数组这种让我觉得写C是一项体力活啊

    这个游戏规则为呈现一个九宫格,电脑和人两个玩家对玩,只要有任意一方优先连成一条直线(3个)就算赢

    算下来赢法一共就有8种,横线3条竖线3条对角线2条

    以下是代码

    #include <stdio.h>
    #include <stdbool.h>
    #include <stdlib.h>
    #include <time.h>
    
    bool isDone (int arr[9], char a) {
      int len = 9;
      int len1 = 3;
      int correct = 0;
      bool isWin = false;
    
      for (unsigned int i = 0; i < len; i++) {
        if (arr[i] == a) {
          correct++;
        }
        
        if ((i + 1) % len1 == 0) {
          if (correct == len1) {
            isWin = true;
            break;
          } else {
            correct = 0;
          }
        }
      }
    
      for (unsigned int i = 0; i < len1; i++) {
        correct = 0;
    
        for (unsigned int j = i; j < len; j+=len1) {
          if (arr[j] == a) {
            correct++;
          }
        }
    
        if (correct == 3) {
          isWin = true;
          printf("\n Here 2");
          break;
        }    
      }
    
      if (arr[0] == a && arr[4] == a && arr[8] == a) {
        isWin = true;
      } else if (arr[2] == a && arr[4] == a && arr[6] == a) {
        isWin = true;
      }
    
      return isWin;
    }
    
    int showGrid (int arr[9]) {
      // int len = sizeof(arr) / sizeof(arr[0]);
      int len = 9;
    
      printf("\n");
      for (unsigned int i = 0; i < len; i++) {
        if (arr[i] != 0) {
          printf(" %c ", arr[i]);
        } else {
          printf(" %d ", i + 1);      
        }
    
        if ((i + 1) % 3 == 0) {
          printf("\n");
        }
      }
    
      printf("\n");
      return 0;
    }
    
    int avalible (int arr[9]) {
      // int arrLen = sizeof(arr) / sizeof(arr[0]);
      int arrLen = 9;
      int av = 0;
      for (unsigned int i = 0; i < arrLen; i++) {
        if (arr[i] == 0) {
          av++;
        }
      }
      return av;
    }
    
    int clear (int arr[9]) {
      int len = 9;
      for (unsigned int i = 0; i < len; i++) {
        arr[i] = 0;
      }
    
      return 0;
    }
    
    int random1 (int min, int max) {
      srand(time(NULL));
      return rand()%((max+1)-min) + min;
    }
    
    int main (void) {
      int grid[9] = {0};
      int gridCount = sizeof(grid) / sizeof(grid[0]);
      int times = 0;
      int enter = 0;
      int enterTimes = 0;
      int av = 0;
      bool done = false;
      char a = 65;
      char b = 68;
      char restart = 0;
      showGrid(grid);
    
      printf(" %d", 1 % 3);
      do {
        times++;
        enterTimes = 0;
        enter = 0;
    
        if (times % 2 == 0) {
          enter = random1(1, 9);
          while (grid[enter - 1] != 0) {
            if (enter >= gridCount) {
              enter = 0;
            }
            
            enter++;
          }
    
          printf("\n Computer enter the number : %d", enter);
        } else {
          printf("\n User enter the number : ");
          do {
            scanf(" %d", &enter);        
            
            ++enterTimes;
            if (grid[enter - 1] > 0) {
              printf("\n Error: cannot enter this number. You can enter below number. \n ");
              avalible(grid);
              for (unsigned int i = 0; i < gridCount; i++) {
                if (grid[i] == 0) {
                  printf(" %d ", i + 1);
                }
              }
              printf("\n Re-enter number please \n ");
            }
          } while (grid[enter - 1] > 0);
        }
    
        if (times % 2 == 0) {
          grid[enter - 1] = a;
        } else {
          grid[enter - 1] = b;
        }
    
        showGrid(grid);
        av = avalible(grid);
    
        if (av >= 1) {
          if (times % 2 == 0) {
            done = isDone(grid, a);
          } else {
            done = isDone(grid, b);
          }
    
          if (done) {
            if (times % 2 == 0) { 
              printf("\n Computer win! ");
            } else {
              printf("\n User win! ");
            }
    
            printf("\n Do you wanna restart? (Y/n) ");
            scanf(" %c", &restart);
    
            while (restart != 'y' && restart != 'n') {
              printf("\n Please input y or n ");
              scanf(" %c", &restart);
            }
    
            if (restart == 'y') {
              clear(grid);
              showGrid(grid);
              times = 0;
              done = false;
            } else if (restart == 'n') {
              done = true;
            }
          }
        } else {
          printf("\n Game end! ");
          printf("\n Do you wanna restart? (Y/n) ");
          scanf(" %c", &restart);
    
          while (restart != 'y' && restart != 'n') {
            printf("\n Please input y or n ");
            scanf(" %c", &restart);
          }
    
          if (restart == 'y') {
            clear(grid);
            showGrid(grid);
            times = 0;
            done = false;
          } else if (restart == 'n') {
            done = true;
          }
        }
      } while (!done);
      return 0;
    }
    

    ...

    READ ALL

  • MySQL导入sql文件

    备份数据库的时候多是备份为sql后缀的文件,因此导入sql文件也是恢复数据的必会方法。

    有两种方法导入sql文件

    第一种、直接在命令下敲

    mysql -u root -p database_name < /mysql/data.sql
    
    • database_name 数据库名
    • data.sql 写绝对路径或相对当前路径下

    第二种、登录MySQL后操作

    mysql> source /mysql/data.sql;
    
    • data.sql 文件最好写绝对路径

    其它方法

    可以通过phpmyadmin、SQLyog等数据库管理软件工具导入

    ...

    READ ALL