0%

今天Ubuntu系统下的搜狗拼音突然抽疯了,中文输入的时候候选词区域都是全是一串无意义的英文字母,不知道是不是因为对Linux系统的支持问题还是怎么回事,解决办法也很简单,就是删除搜狗的配置文件,重新登录就好了,只是需要重新设置原来的配置

1
2
cd ~/.config
rm -rf SogouPY* sogou*

别忘了注销再登录哦

其实事情的起因很奇怪,前两天一直想升级Ubuntu 18.04,不知道为什么17.10用着怪怪的,但是18.04又要到4月26号才发布,没有办法了只能Beta 2先用着试试了。

然后就是一顿正常的操作

阅读全文 »

更改默认数据库为 MySQL

Django 使用的默认数据库是 SQLite3,如果习惯使用的是 SQLite 的用户就可以不必更换数据库。

更换数据库的话在settings.py文件中DATABASES选项中进行更改

阅读全文 »

最近在学校做一个云计算大赛,需要搭建一个 hadoop 的平台(一共四台服务器,这是一个怎样的 hadoop 啊),搭建的中途遇到一个小插曲。
由于需要四台服务器能够互相免密访问,我们需要将四台服务器的公钥互相上传到各个机器,首先运行

1
ssh-keygen -t rsa

然后一直回车,最后会在你主目录下生成一个.ssh目录,其中的id_rsa是你的密钥,id_rsa.pub是你要上传的公钥,known_hosts是你连接过的主机的信息

我们需要在.ssh目录下建立一个authorized_keys文件,将各个主机的公钥信息存储在该文件下,然后各个主机就可以通过ssh免密登录了,至于具体的原理,大家可以网上自行科普一下,无非是一些加密解密的过程。

然而就在我以为万无一失的时候,造化弄人,我不管怎么搞都需要输密码,试过改ssh的配置文件也无法解决,最后google到一个解决方法,说是目录的和文件的权限问题,.ssh目录的权限必须得是700,而文件authorized_keys的权限必须是644,而我当时是664,这才导致无法进行免密登录,这里大家需要注意一下权限的问题,即使权限放大了也是不行的!

Hadoop 介绍

Hadoop 是 Apache 组织的一个分布式计算框架(java语言),其最核心的设计就是:HDFSMapReduce,HDFS实现存储,MapReduce实现原理分析处理。

HDFS文件系统

HDFS(Hadoop Distributed File System)是一个高度容错的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,适合那些有着超大数据集的应用程序。

阅读全文 »

队列

队列是一种可以实现先进先出(first in first out,FIFO)的存储结构。与栈不一样的是,队列规定只在一端进行插入操作,在另一端进行删除操作。允许插入的一端叫做队尾(rear),允许删除的一端叫做队首(front)。

分类

  • 链式队列:用链表实现。
  • 静态队列:用数组实现。(为了解决假溢出现象,静态队列通常都必须是循环队列)
阅读全文 »

栈是一种先进后出的线性数据结构,规定只允许在一端进行插入和删除元素的操作。其中进栈操作又叫做压栈(Push),出栈操作又叫做弹出(Pop)。允许进行操作的一端叫做栈顶(top),另一端叫做栈底(base)。

分类

最近一直想自己搭一个 Shadowsocks 服务,并且利用服务器学习一些技术知识,但是国内的服务器实在是贵得很啊,像我这种苦逼大学生根本玩不起,无奈之下只好各种 Google 百度,最后找到了一些国外的 VPS 资源

  • BandwagonHost(搬瓦工VPS):据观察搬瓦工这个 VPS 还是算计比较便宜的,年付 $20 ,平均下来每个月只有 $1.6,而且套餐很良心很良心,512MB 的内存,10GB 的 SSD,1TB 的流量是不是比国内很多主机都划算的很。
    DO1
    阅读全文 »

这两天在帮别人写一个注册登录功能的页面,用到了简单的 TP 框架,但是在我自己的 Ubuntu 环境下发现验证码出了问题——验证码图片显示不出来。

我将图片单独拉出来,发现错误提示如下:

1
Call to undefined function imagecreate()

百度一问就找到了答案,原来这是由于没有安装或者开启 PHP 的 GD 库导致的,既然这样我只需要安装一下 GD 库就解决了:

1
sudo apt-get install php7.0-gd

安装完毕后将 Apache 服务器重启,如果是 Nginx 的话,则可用可不用

如果是 Windows 环境的话,打开 PHP 安装目录下的 php.ini 配置文件,找到:

1
;extension=php_gd2.dll

去掉注释,重启服务就解决了。

这两天笔者遇到了一个很操蛋的问题——Apache 无法解析 PHP 代码了,之前一直用的挺好的,突然就挂了,然后在网上疯狂的找解决办法,但是大都是php5的版本,而我却是7的版本,我就先顺便把5版本的解决方法贴出来:

修改apache的配置文件httpd.conf

在httpd.conf中找到:
AddType application/x-gzip .gz .tgz
在该行下面添加
AddType application/x-httpd-php .php

再找继续找到:
DirectoryIndex index.html
把此行修改成
DirectoryIndex index.html index.htm index.php

再找到:
#ServerName www.example.com:80
改成
ServerName localhost:80

然而Ubuntu下的Apache并没有httpd.conf这个配置文件,而是通过一个apache2.conf来引用每个部分的配置文件,这样在一个配置包里找到那一句配置也并不简单,而且我还没有找到。。。

不过皇天不负有心人,终于是找到了解决办法:

1
sudo apt-get install libapache2-mod-php

这一步安装了apache的扩展包,可以用于解析php,我觉得不管是7版本还是5版本都可以适用。

我们都知道 select 的基本用法select <字段名> from <表名> [where <限制条件>],然而select语句后面还可以跟很多限制条件。我们这次用 user 表来作为示范,下面是 user 表的结构:

阅读全文 »

Dict

Python内置了字典Dict(全称Dictionary),使用键-值(key-value)存储,具有极快的查找速度。Dict的查找原理和查字典类似,key就相当于字典的索引,Python可以通过key计算出所对应的value存放的内存地址,直接取出,所以查找速度快。
Dict的初始化很简单,语法如下:

1
2
3
>>> dict = {key1' : value1, 'key2' = value2, 'key3' = value3}
>>> dict['key2']
value2

一个key只能对应一个value,所以当我们对一个key多次赋值时会将前一个value覆盖掉。由于需要查找的key不存在时,dict会报错,为了避免key不存在的情况,Python提供了两种方法:

  • 通过in判断,如果key存在,就返回True,反之返回False
    1
    >>> `key` in dict
  • 通过get判断,如果key不存在就返回None(返回None的时候交互式命令行不显示结果),也可以是自己指定返回的内容:
    1
    2
    >>> dict.get('key')     #返回None
    >>> dict.get('key',-1) #返回自己指定的值`-1`
    删除Dict可以使用dict.pop(key)方法,对应的value也会从dict中删除。
    Dict内部的存放顺序和key的放入没有关系,Dict的查找和插入速度不会随着key的增加而变慢,需要占用大量的内存,是一种用空间来换取时间的方法。

Set

Set和Dict类似,也是一组key的集合,但是不存储value。由于key不能重复,所以在set中没有重复的key。要创建一个set需要提供一个list作为输入的集合:

1
>>> s = set([1,2,3,4,5])

重复的元素会被set自动过滤,可以通过add(key)方法向set添加元素,通过remove(key)方法删除元素。我们可以将set看作数学意义上的集合,因此,两个set之间可以做数学意义上的交(&)、并(|)集等运算

最近在自学Python,所以一边学也一边总结一些知识点

Python的输出

Python的输出和C语言类似,在print()函数里加上字符串(用单引号或者双引号,但是不能混用),例如:

1
>>> print('Hello world!')

print()函数也可以接受多个字符串,用逗号隔开即可。print()函数依次打印字符串,每遇到逗号就会输出一个空格。
print()也可以打印整数或者计算结果,例如:

阅读全文 »

数据库操作

  1. 创建数据库: CREATE DATABASE <数据库名> [其他选项]
  2. 使用数据库: USE <数据库名>
  3. 修改数据库: ALTER DATABASE <数据库名>
  4. 删除数据库: DROP DATABASE <数据库名>

数据表操作

  1. 创建表:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    CREATE TABLE <表名>

    <列名1><数据类型>[<列级完整性约束>],
    [<列名n><数据类型>[<列级完整性约束>]]
    );
    例:
    create table studets
    (
    id int not null auto_increment primary key,
    name varchar(8) not null,
    sex varchar(5) not null,
    score int(5) not null
    )
  2. 修改基本表
    1
    2
    3
    4
    5
    ALTER TABLE <表名> add <列名> <列数据类型> [after 插入位置];         --增加列
    ALTER TABLE <表名> change <列名> <列新名> <新数据类型>; --修改列
    ALTER TABLE <表名> drop <列名>; --删除列
    ALTER TABLE <表名> rename <新表名>; --重命名表
    DROP TABLE <表名> --删除表
  3. 表的基本操作
  • 插入数据:insert [into] <表名> [(列名1,列名2,列名3……)] values (值1,值2,值3……);
  • 更新数据:update <表名> set 列名=新值 where 更新条件;
  • 删除数据:delete from <表名> where 删除条件;
  • 查询数据:select <列名> from <表名> [查询条件];
  • 特定条件查询:where 不仅支持 “where 列名=值” 这种名等于值的查询形式,对一般的比较运算的运算符都是支持的,如=、<、>、!= 等以及一些扩展运算符 is[not] null、in、like 等,还可以对查询条件使用 or 和 and 进行组合查询。