Ubuntu安装Chrome稳定版(google-chrome-stable)

Ubuntu安装Chrome稳定版(google-chrome-stable)

  • 推荐PPA方法,免翻墙
  1. wget -q -O - https://raw.githubusercontent.com/longhr/ubuntu1604hub/master/linux_signing_key.pub | sudo apt-key add

  2. sudo sh -c 'echo "deb [ arch=amd64 ] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list

  3. sudo apt-get update

  4. sudo apt-get install google-chrome-stable

  • 安装Google Chrome unstable 版本:
    sudo apt-get install google-chrome-beta
  • 安装Google Chrome beta 版本:
    sudo apt-get install google-chrome-unstable

Symfony常用命令

  • 创建数据库

    php app/console doctrine:database:create

  • 删除数据库

    php app/console doctrine:database:drop --force

  • 生成单个实体

    php app/console doctrine:generate:entity

    1. 输入:AppBundle:Product会创建一个Product的Entity
    2. 输入要映要的字段名称:name
    3. 输入字段类型(默认字符串):string
    4. 输入字段长度(默认255):255
    5. 输入字段是否允许为空(默许不能为空):false
    6. 输入字段是否唯一(默认不为唯一值):false
    7. 回车完成
  • 创建|更新数据表(前提是有对应表的Entity)

    php app/console doctrine:schema:update --force

  • 更新所有实体(参数--no-backup不生成备份文件)

    php app/console doctrine:generate:entities AppBundle --no-backup

  • 清理缓存:

    php app/console cache:clear
    生产环境加上-e prod参数:
    php app/console cache:clear -e prod

  • 重新生成 app/bootstrap.php.cache:

    php ./vendor/sensio/distribution-bundle/Resources/bin/build_bootstrap.php

thrift的安装和php的简单示例

  • 首先,请粗略查看Thrift安装说明文档,这里列出了不同系统需要的各种依赖,后面编译安装失败的原因有可能是缺少依赖,第一步就是把需要的依赖解决,我的系统是Ubuntu 16.04 LTS,所以参照的是这里的说明;

  • 其次,下载thrift源码和示例,下载完成后可用md5sum校验文件是否下载完整。解压文件tar -xzvf thrift-0.10.0.tar.gz,解压后目录里包含很多文件,有现有可使用thrift的各种语言的库,在lib目录里,以及对应语言的使用示例,在tutorial目录;

  • 然后,配置,编译,安装:

  1. ./configure && make
  2. sudo make install
  3. 检查是否安装成功thrift -version,我的显示Thrift version 0.10.0,安装成功,版本为0.10.0
    > 可参考官方文档Building from source
  • 最后,创建php服务端和用户端,开发流程:
  1. 配置环境.PHP的php-fpm,Nginx等.
  2. 根据需求,编写thrift接口定义文件(IDL定义文件),解压的目录里已经包含各种示例所需的IDL文件,在解压目录/tutorial/.
  3. 使用thrift程序,为不同的语言生成代码.
  4. 根据需求,修改生成的代码(主要是Server端),编写实际的业务逻辑.
    > 参考博客
  • 实际步骤:
  1. 移动到PHP项目目录下.
  2. 创建目录mkdir thrift_php_server_client_demo.
  3. 复制上面解压目录PHP相关文件到thrift_php_server_client_demo目录下:
    > cp -r 你的解压目录/lib/php/lib/Thrift/ xxx/thrift_php_server_client_demo
    > cp -r 你的解压目录/tutorial/php/ xxx/thrift_php_server_client_demo
    > cp 你的解压目录/tutorial/tutorial.thrift xxx/thrift_php_server_client_demo
    > cp 你的解压目录/tutorial/shared.thrift xxx/thrift_php_server_client_demo
  4. 生成php代码thrift -r --gen php tutorial.thrift
    > 可参考官方文档Apache Thrift Tutorial
  5. 运行PHP服务端php -S localhost:8080
  6. 运行客户端php php/client.php --http,即可以看到结果运行结果,运行服务端的终端也会显示请求过程.
    > 注:我在运行客户端文件时,一直提示server.php里\tutorial\CalculatorProcessor类找不到,开始以为是我命名空间或其它配置有问题,后来查看对比了这个php-thrift-server项目才知道,我使用步骤4生成的目录文件(gen-php/tutorial/Calculator.phpgen-php/shared/SharedService.php)里都缺少相关内容,这个可太坑了,花费了好长时间才发现;我clone了这个项目后,用这个项目里的thrift文件生成代码后也缺少相关类的内容,我怀疑是我安装的thrift版本的问题,把内容加上就正常了。
  7. 我的github示例地址,下载代码即可使用上述步骤5和步骤6运行.

fg和bg简述

Linux的bg和fg命令

我们都知道,在 Windows 上面,我们要么让一个程序作为服务在后台一直运行,要么停止这个服务。而不能让程序在前台后台之间切换。而 Linux 提供了 fg 和 bg 命令,让我们轻松调度正在运行的任务。

假设你发现前台运行的一个程序需要很长的时间,但是需要干其他的事情,你就可以用 Ctrl-Z ,挂起这个程序,然后可以看到系统提示(方括号中的是作业号):
[1]+ Stopped /root/bin/rsync.sh
然后我们可以把程序调度到后台执行:(bg 后面的数字为作业号)
#bg 1
[1]+ /root/bin/rsync.sh &
用 jobs 命令查看正在运行的任务:
#jobs
[1]+ Running /root/bin/rsync.sh &
如果想把它调回到前台运行,可以用
#fg 1
/root/bin/rsync.sh
这样,你在控制台上就只能等待这个任务完成了。

fg、bg、jobs、&、ctrl + z都是跟系统任务有关的,虽然现在基本上不怎么需要用到这些命令,但学会了也是很实用的
一,& 最经常被用到
这个用在一个命令的最后,可以把这个命令放到后台执行
二,ctrl + z
可以将一个正在前台执行的命令放到后台,并且暂停
三,jobs
查看当前有多少在后台运行的命令

四,fg
将后台中的命令调至前台继续运行
如果后台中有多个命令,可以用 fg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
五,bg
将一个在后台暂停的命令,变成继续执行
如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)

SOA和微服务架构的区别

  • 首先,可以肯定的是SOA和微服务的确是一脉相承的.
  • SOA:面向服务的架构是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来.
  • 以一个公司为例:有基层员工 有管理层 有老板,最初大家都听老板指挥,谁干什么,根据需要,你可能今天干A事情,明天干B事情,后来人越来越多了,事情也越来越多了,做事情的效率越来越低,管理也很混乱;
  1. 现在开始做部门划分(服务化),不同部门做不同事情,IT部门只做研发,人事部门只做招聘;
  2. 这个时候就无法避免的发生跨部门协作(服务器调用);
  3. 但是你怎么知道有这样一个部门可以做这个事情呢?这就要依赖行政部门(注册中心);
  4. 新成立的部门要在行政那里做一个备案(服务注册);
  5. 然后公布一下,让其他部门知道(服务发布),大家就可以在新的工作秩序里面嗨皮的上班了,这个时候依然是在公司的组织架构中运转;
  6. 上述就是我理解的SOA的概念.
  • 微服务:微服务有一定SOA的概念在里面,只是在粒度中,微服务更加细一点;
  1. 比如说用户业务服务:登录 注册 个人中心 包含3个业务,SOA中都由userService提供的;
  2. 但是在微服务中,登录会被独立出来一个微服务,注册也会被独立出来微服务,他们可能采用不同的语言开发,相对SOA的粒度更细,业务场景耦合更低;
  3. 另外微服务强调一个去中心化,上述的公司的组织架构会被打散,没有老板,没有管理层,每一个人都是一个服务,做着自己的事情;
  • 还是以公司举例:
  1. 工资计算是会计的事情,但我把会计部门独立出来一个公司(微服务),他们不仅能计算自己公司的财务情况,还能帮别的公司计算账务情况;
  2. IT部门只做研发,但我把IT部门独立出来一个公司(微服务),他们不仅能给自己公司开发项目,也能接别的公司的项目;
  3. 同理,HR也能客串一把猎头.

转载但有许多修改,转载地址