分类目录归档:技术随笔

Mac环境搭建java开发环境

今天到了新公司,需要搭建本地开发环境,顺便记录起来。

1.安装IntelliJ IDEA

下载地址:http://xclient.info/s/intellij-idea.html

2.安装git

brew install git

3.安装tomcat

brew install tomcat(路径:/usr/local/Cellar/tomcat/8.5.15/)

4.安装jdk

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html(选择合适版本)

5.Git clone 所有工程

6.IntelliJ IDEA打开所有工程,每个工程设置为maven工程。

7.IntelliJ IDEA设置tomcat服务,修改默认端口,否则会引起冲突。

具体操作参考:http://blog.csdn.net/chenshun123/article/details/51285890

 

Mysql DBA-索引篇

索引类型:

1.按照数据结构角度:B+树索引,哈希索引,FULLTEXT索引

1)B+树索引:

B+的特性:1.所有关键字都出现在叶子结点的链表中(稠密索引),且链表中的关键字恰好是有序的;2.不可能在非叶子结点命中;3.非叶子结点相当于是叶子结点的索引(稀疏索引),叶子结点相当于是存储(关键字)数据的数据层; 继续阅读

Yum Repository自定义版本安装Mysql

以前安装Mysql都是要自己去网上选择一个特定版本,然后再下载到服务器安装,而且不同版本的相关命令也有所不同,学习记忆成本也非常高。现在官网可以通过安装yum的依赖库自由选择安装,非常的方便,今天来分享下。

1. Adding the MySQL Yum Repository

sudo rpm -Uvh mysql57-community-release-el6-n.noarch.rpm

2. Selecting a Release Series

yum repolist all | grep mysql

通过这个命令可以看到不同版本的默认启用情况,然后我们可以选择自己的需要的版本,如果需要变更,需要修改/etc/yum.repos.d/mysql-community.repo的文件。 继续阅读

Yum自定义版本安装PHP7

以前安装PHP都是要自己去网上选择一个特定版本,然后再下载到服务器安装,而且不同版本的相关命令也有所不同,学习记忆成本也非常高。现在官网可以通过安装yum的依赖库自由选择安装,非常的方便,今天来分享下。

1.新增Webtatic EL yum repository:

CentOS/RHEL 7.x:
 rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
 rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

CentOS/RHEL 6.x:
 rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm

2. 安装php7.0 继续阅读

Laravel&Lumen安装Mongodb扩展

Laravel对于Redis扩展用起来非常方便,理论上来说对于Mongodb的扩展也应该如此,为此今天我们来记录下Laravel是如何支持Mongodb的。

1.添加composer依赖(jenssegers/mongodb):

composer require jenssegers/mongodb
或者
在composer文件添加"jenssegers/mongodb": "3.2",然后执行composer update

2. 配置Service Provider 继续阅读

Laravel&Lumen系统之服务剥离

最近随着业务的不断发展,越来越复杂的逻辑交织在一起使得原来的代码很难维护,同一个类似的逻辑在多个地方调用,每次逻辑变更的时候非常容易忘记改其中的一处地方。所以需要抽出一个服务层来处理业务。

在app目录下单独创建了service文件夹来存放所有的服务。根据大的业务又分成了不同的子文件夹,针对每个大模块创建对应的工厂类,以便于后期调用的时候能够方便调用,不需要到不同文件夹找对应的类名。

随意找其中的一个例子来叙述下,比如说订单的OrderService.php: 继续阅读

Laravel&Lumen系统之队列服务

一般而言有些会阻塞运行程序的任务,我们会采用队列服务已经异步调用,这样可以实现非阻塞服务。之前有个需求是调用支付宝的服务,因为调用第三方的服务时间和成功不可控,所以处理成队列异步服务,发现功能竟然不可用,所以一步一步排查后解决这个问题。

1. 首先要确认的是队列的代码是否正确,Lumen和Laravel一样,都是需要继承虚拟基类Job,并且在handle方法中实现业务代码。

class DeleteBill extends Job
{
    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        *****
    }
}

2. 确认调用处调用队列服务的地方是否正确。这里需要注意的是,Laravel文档里是用的dispatch分发调用:$this->dispatch(new DeleteBill()); 另外还有一种方法是使用Queue对象的push方法:Queue::push(new DeleteBill());这两种方式都是可以调用成功,它会把任务塞到相应的队列中。 继续阅读

PHP7添加Redis扩展

之前编译安装php7的时候,没有增加redis的扩展,现在需要调试程序需要php能够支持redis扩展。查了相关文件成功的操作安装扩展。

1. 从官方网站获取php的redis扩展包:wget https://github.com/phpredis/phpredis/archive/php7.zip

2. 解压后使用phpize建立php的外挂模块,然后通过./configure –with-php-config=/urs/bin/php-config来编译模块,这里特别需要注意的是php-config文件的路径每个系统不一样,可以考虑使用find / -name php-config来找到具体路径。

3. make & make install (如果make install提示权限不足的话,那就使用sudo make install)

4. vi /etc/php.ini, 新增extension=redis.so,如果php.ini不知道路径可以通过phpinfo()查看。

5. 重启nginx服务和php-fpm后可以通过phpinfo()查看redis扩展是否已经安装成功。

PS:phpize地址http://php.net/manual/en/install.pecl.phpize.php,当php编译完成后,php的bin目录下会有phpize这个脚本文件,他使得php在额外扩展某些需要的插件时能够实现插拔式安装,这是非常方便的。

Composer调试自己的工程

最近终于把爬虫框架写完了,刚一开始调试,就遇到了很奇葩的问题,明明本地已经按照命名空间的方式书写好了代码。可是用代码一测试,却提示各种对应的类找不到。这是为啥呢?缓存还是什么的?

始终并不明白为啥。总不能每次都提交到github,然后还的使用package.org的依赖库来下载最新的代码吧。因为那个国际依赖库,国内下载巨慢无比,简直不能忍受。在网上搜索了一圈,终于在发现了composer存在某个命令可以更新本地vendor下面的代码,使得最新编写的代码可以生效:

composer dump-autoload --optimize

以此文章来纪念下这个困扰我的问题。哈哈