windows 安装 redis

Redis本地环境搭建

Windows 下环境搭建

1. 设置hosts

set duapphosts=127.0.0.1        sqld.duapp.com
set redisduapphosts=127.0.0.1        redis.duapp.com
echo %duapphosts% >> C:\Windows\System32\drivers\etc\hosts
echo %redisduapphosts% >> C:\Windows\System32\drivers\etc\hosts

2. 下载Redis-Windows版本

Redis官网下载页面: http://redis.io/download

Windows下Redis项目: https://github.com/MSOpenTech/redis

在releases页面找到并下载最新的ZIP包: https://github.com/MSOpenTech/redis/releases

3. 解压安装

加压下载后的文件 redis-2.8.17.zip 到 redis-2.8.17 目录. 例如:D:\DevlopPrograms\redis-2.8.17.

如果需要简单测试一下, 鼠标双击 redis-server.exe即可,如果没错, 稍后会弹出命令行窗口显示执行状态.

如果不是 Administrator用户,则可能需要以管理员身份运行. 或者参考 Windows 7 启用超级管理员administrator账户的N种方法

简单测试,则使用 redis-cli.exe 即可, 打开后会自动连接上本机服务器. 可以输入 info 查看服务器信息.

如果要进行基准测试,可以启动服务器后,在cmd中运行 redis-benchmark.exe 程序.

4. 启动与注册服务

如果准备长期使用,则需要注册为系统服务.

进入CMD,切换目录:

D:
cd D:\DevlopPrograms\redis-2.8.17

注册服务,可以保存为 service-install.bat 文件:

redis-server.exe --service-install redis.windows.conf --loglevel verbose
redis-server --service-start

卸载服务, 可以保存为 uninstall-service.bat 文件.:

redis-server --service-stop
redis-server --service-uninstall

可以在注册服务时,通过 –service-name redisService1 参数直接指定服务名,适合安装多个实例的情况,卸载也是同样的道理.

启动redis服务器时也可以直接指定配置文件,可以保存为 startup.bat 文件:

redis-server.exe redis.windows.conf

当然,指定了配置文件以后,可能会碰到启动失败的问题.此时,请修改配置文件,指定maxheap 参数.

5. 修改配置文件

修改配置文件redis.windows.conf,如果有中文,请另存为UTF-8编码.

# 修改端口号
# port 6379
port 80

# 指定访问密码
# requirepass foobared
requirepass 6EhSiGpsmSMRyZieglUImkTr-eoNRNBgRk397mVyu66MHYuZDsepCeZ8A-MHdLBQwQQVQiHBufZbPa

# 设置最大堆内存限制,两者设置一个即可
# maxheap <bytes>
maxheap 512000000

# 设置最大内存限制, 两者设置一个即可
# maxmemory <bytes>
# maxmemory 512000000

此时,如果用客户端来访问,使用如下cmd命令,可以保存为 client.bat 文件:

redis-cli.exe -h redis.duapp.com -p 80 -a 6EhSiGpsmSMRyZieglUImkTr-eoNRNBgRk397mVyu66MHYuZDsepCeZ8A-MHdLBQwQQVQiHBufZbPa

6. 其他附加

管理工具: RedisStudio: https://github.com/cinience/RedisStudio

当然,目录里面也有一些word文档, 有兴趣可以读一读.

更多信息,请参考: renfufei的专栏-Redis: http://blog.csdn.net/renfufei/article/category/2470713

Retrofit Call 获取数据

关于的说明和用法可以详细查看官网

Call<List<Repo>> call = service.listRepos("octocat");

如何得到List<Repo>,请看下面的代码:

call.enqueue(new Callback<List<Repo>>() {  
    @Override
    public void onResponse(Call<List<Repo>> call, Response<List<Repo>> response) {
        
    }

    @Override
    public void onFailure(Call<List<Repo>> call, Throwable t) {
        
    }
});

 

 

git 命令说明

1、用命令进行配置
$ git config –global user.name “Your Name” $ git config –global user.email “email@example.com”
注意git config命令的–global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
2、用命令git clone克隆一个本地库
3、查看当前状态
$ git status
git status命令可以让我们时刻掌握仓库当前的状态,上面的命令告诉我们,readme.txt被修改过了,但还没有准备提交的修改。
4、添加到仓库
用命令git add告诉Git,把文件添加到仓库:
$ git add readme.txt
5、提交仓库
用命令git commit告诉Git,把文件提交到仓库:
$ git commit -m “wrote a readme file”
git commit命令,-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。
6、查看历史记录
历史记录,在Git中,我们用git log命令查看:
$ git log commit 3628164fb26d48395383f8f31179f24e0882e1e0 Author: 06peng <linlepeng@06peng.com> Date: Tue Aug 20 15:11:49 2013 +0800 append GPL commit ea34578d5496d7dd233c827ed32a8cd576c5ee85 Author: 06peng <linlepeng@06peng.com> Date: Tue Aug 20 14:53:12 2013 +0800 add distributed 或者 $ git log –pretty=oneline 3628164fb26d48395383f8f31179f24e0882e1e0 append GPL ea34578d5496d7dd233c827ed32a8cd576c5ee85 add distributed cb926e7ea50ad11b8f9e909c05226233bf755030 wrote a readme file
7、回滚
回退到上一个版本
$ git reset –hard 3628164
8、恢复
恢复到新版本怎么办?找不到新版本的commit id
$ git reflog ea34578 HEAD@{0}: reset: moving to HEAD^ 3628164 HEAD@{1}: commit: append GPL ea34578 HEAD@{2}: commit: add distributed cb926e7 HEAD@{3}: commit (initial): wrote a readme file
9、暂存代码
git stash 可用来暂存当前正在进行的工作
$ git stash save “work in progress for foo feature”
10、取出暂存区代码
$ git stash list 命令可以将当前的Git栈信息打印出来
git stash apply stash@{0} 就可以将你指定版本号为stash@{1}的工作取出来
当你将所有的栈都应用回来的时候,可以使用 git stash clear 来将栈清空。
11、分支管理
创建dev分支,然后切换到dev分支:
$ git checkout -b dev
用git branch命令查看当前分支:
$ git branch
换回master分支:
$ git checkout master
分支的工作成果合并到master分支上:
$ git merge dev
12、更新 & 提交
更新
git pull –rebase
如果有冲突,会提示你。冲突分为两种,一种是在不同地方的冲突,通常情况下,git是可以自己合并的。另外一种是因为可能是同一个文件的编辑,git没法自动合并,需要二选一,这时候打开冲突的文件,手动编辑文件到可用的版本。然后。。
git rebase –continue
git push
13、缓存密码
.gitconfig 文件中添加
[credential]
helper = store
或者
$ git config –global credential.helper store
14、.gitignore文件说明
*.iml
*.idea
*/.classpath
*/.launch
*/.project
*/.settings
/*.launch
/*.tmproj
*/ivy*
*/eclipse
!.gitignore
*/target
*/outputLocation_IS_UNDEFINED
15、客户端工具介绍
windows 的github软件
1.source tree
2.Git Extensions.
3.msysGit
4.Cmder
5.乌龟 tortoise git
6.twilight
16、
一、 提交时
假设修改ABC.java为Abc.java。
1.1 如果使用git命令进行仅涉及大小写的重命名
1.1.1 设置git库为大小写敏感(不建议)
$ git config core.ignorecase false
用这种方法进行重命名,用git status就可以识别出修改了,但是不推荐用这种方式,因为在更新这种修改的时候会有麻烦。
1.1.2 使用git mv命令(仅当core.ignorecase为true时可用)
$ git mv ABC.java Abc.java
$ git status
……
renamed: ABC.java -> Abc.java
此时的状态是renamed,git commit即可。
1.2 如果使用Eclipse进行仅涉及大小写的重命名
无论core.ignorecase设置为true还是false或者没有设置该项,修改之后均可正常提交,在进行Commit的时候,对话框中显示的修改文件列表有:
即删除ABC.java并增加Abc.java,直接commit然后push即可。
偶尔会出现在Eclipse端修改完之后右键commit为灰色的情况,这时候如果使用git status发现有renamed状态的修改的话,也可以直接在git bash上commit并push。
17、
比如我现在有两个分支,分别是master和develop
按照官方的说法,在.gitattributes文件中如下设置
database.xml merge=ours
两个分支中都有database.xml文件,但是内容不同,我不想在master合并develop分支的时候,把database.xml也合并了。
还需设置如下:
git config –global merge.ours.driver true
当我修改了develop分支中的database.xml,切换到master分支进行合并
git merge develop

React Native嵌入到原生Android问题记录

本文主要是记录ReactNative嵌入到原生Android中遇到的一些问题以及解决方法。关于配置方面在这里就不说了。可以参考FaceBook的官方文档,或者ReactNarive中文版

1、java.lang.IllegalAccessError: Method ‘void android.support.v4.net.ConnectivityManagerCompat.<init>()’ is inaccessible to class ‘com.facebook.react.modules.netinfo.NetInfoModule’ (declaration of ‘com.facebook.react.modules.netinfo.NetInfoModule’ appears in /data/app/package.name-2/base.apk

解决办法:把support相关包改成23.0.1

compile 'com.android.support:appcompat-v7:23.0.1'

2、ReferenceError: Can’t find variable: __fbBatchedBridge

解决办法:晃动手机或者点击Menu菜单就会打开相关的调试页面,前提是要在配置文件中配置RN的DevSettingsActivity,让RN项目支持调试。

<activity android:name=”com.facebook.react.devsupport.DevSettingsActivity” />

选择Dev Settings,然后选择Debug server host & port for device,输入你的ip和8081端口,例如:192.168.1.100:8081,然后重试。

3、启动RN服务器的时候报错:

Loading dependency graph… ERROR  Packager can’t listen on port 8081

解决办法:端口被占用,在命令行输入lsof -i :8081 查看占用该端口的进程,然后执行命令“kill -9 进程id” ,再重启服务器。

4、Unable to download JS bundle:

原因是在npm install的时候曾经出现过

react-native@0.43.4 requires a peer of react@16.0.0-alpha.6 but none was installed.

解决办法:

执行 npm i -S react@16.0.0-alpha.6

重启npm start。

5、出现Got JS Exception: TypeError: undefined is not a function (evaluating ‘(bridgeConfig.remoteModuleConfig || []).forEach’) 的错误,原因是被官方文档坑了,官方文档是这样描述的:

allprojects {
    repositories {
        ...
        maven {
            // All of React Native (JS, Android binaries) is installed from npm
            url "$rootDir/../node_modules/react-native/android"
        }
    }
    ...
}

然而正确应该是:

allprojects {
    repositories {
        jcenter()

        maven {
            // All of React Native (JS, Android binaries) is installed from npm
            url "$rootDir/node_modules/react-native/android"
        }
    }
}

 

Nexus Root Toolkit v2.1.9 解锁 root 刷TWRP

给大家推荐一个专门适配Nexus系列、Piexl系列的工具,非常方便。Nexus Root Toolkit v2.1.9

支持的机型有:

· Galaxy Nexus: GSM Models (both yakju and non-yakju builds)
· Galaxy Nexus: CDMA/LTE Verizon Models
· Galaxy Nexus: CDMA/LTE Sprint Models
· Nexus S: Worldwide, i9020t and i9023 Models
· Nexus S: 850MHz, i9020a Models
· Nexus S: Korea, m200 Models
· Nexus S 4G: d720 Models
· Nexus 7: Asus Tablet
· Nexus 7 3G: Asus Tablet
· Nexus 7 v2 (2013): Asus Tablet
· Nexus 7 v2 (2013) LTE: Asus Tablet
· Nexus 10: Samsung Tablet
· Nexus 4: LG Phone
· Nexus 5: LG Phone
· Nexus 5X: LG Phone
· Nexus 9: HTC Wifi Tablet
· Nexus 9: HTC LTE Tablet
· Nexus 6: Motorola Phone
· Nexus 6P: Huawei Phone
· Nexus Player: Google Device
· Nexus Pixel C: Google Tablet

微博视频url解析

微博返回的视频链接都是短链接,类似http://t.cn/RX8Po3N 这样的格式。那么我们为了能够识别该链接是普通的网络链接还是视频链接,并且支持用自定义的播放器来播放视频的话,要做的东西就是解析这个短链接,获取真实的视频地址。

首先第一步就是要先把短链接转化成长链接,这里我们可以调用新浪开放平台获取短链接的富内容信息。内容结果如下:

其中object _type就是链接的类型,stream 里面的url 就是视频的真实地址了,这里看到是mp4的格式,这种情况就最理想了,就是视频的真实地址,我们可以直接播放下载了。

但其实并没有这么简单,很多时候我们解析到的url都不是以mp4格式的,而是类似这种

http://video.weibo.com/show?fid=1034:ba4e77345c94bc39e7fba0f690b1d26c

http://weibo.com/p/2304449fd45976218a4fd9bc8f1a9af6317dec

这两种视频链接我们是无法直接播放和下载的。只有通过特殊手段才可以。先来说一下以video.weibo.com格式的视频的解析办法:

我们直接在浏览器中打开该url,然后右键查看网页源代码,就可以找到该视频的真实地址:

那么我们要拿到这个真实的mp4地址就非常简单了,先下载该网页源代码,并用正执表达式解析即可:

String result = HttpUtils.doGet(url, null);
if (StringUtil.isNotBlank(result)) {
    String p = "flashvars=\"list(.*)";
    Pattern r = Pattern.compile(p);
    Matcher m = r.matcher(result);
    if (m.find()) {
        String resultUrl = m.group();
        resultUrl = resultUrl.substring(resultUrl.indexOf("flashvars=\"list=") + 16, resultUrl.lastIndexOf("\" />"));
        resultUrl = URLDecoder.decode(resultUrl, "UTF-8");

第二种视频的解析地址需要用到著名的硕鼠解析了。它是什么大家可以自行搜索。下面说解析方法:只需要打开硕鼠的网页的时候带上要解析的url就可以了,得到的就是一个网页:

这样就可以拿到真实地址了,那我们同样通过代码解析该网页就可以了。

String requestUrl = "http://www.flvcd.com/parse.php?kw=" + url;
String result = HttpUtils.doGet(requestUrl, null);
if (StringUtil.isNotBlank(result)) {
    Pattern p = Pattern.compile("<br>.*?<a href=\".*?\"");
    Matcher m = p.matcher(result);
    if (m.find()) {
        String res = m.group(0);
        int index = res.indexOf("=");
        res = res.substring(index + 2, res.length() - 1);

这样就可以拿到微博的视频真实url了。

如有侵权,请联系我删除。

阿里云CentOS安装GitLab

我的个人网站用的就是阿里云的服务器。我在上面搭建了一个Java环境做一些简单的服务器开发,考虑到多人合作的问题,想在上面搭建一个Git服务器。那么GitLat似乎是一个比较好的选择。本文将介绍如何在阿里云上安装GitLab。

首先,需要查看本机系统的版本:

然后进入官方网站按照步骤操作即可。

下面主要说遇到的一些问题:

1、80端口冲突:GitLab本身采用80端口,如安装前服务器有启用80端口,访问会报错,需更改GitLab的默认端口。

vi /etc/gitlab/gitlab.rb。
external_url ‘http://localhost:90’

2、8080端口冲突:unicorn本身采用8080端口,如安装前服务器有启用8080,访问会报错,需更改unicorn的默认端口。

vi /etc/gitlab/gitlab.rb:
unicorn[‘listen’] = ‘127.0.0.1’
unicorn[‘port’] = 8090

执行sudo gitlab-ctl reconfigure 生效

3、502错误:这个就比较尴尬了,搜索说是内存不足。GitLat实在是比较消耗内存,网上都说建议用单独的服务器,然而对于我这种穷人,只能勉强所有配置的用同一台服务器了,目前只能通过增加虚拟内存来解决了。

最后说下日志位置:/var/log/gitlab,主要是可以查看访问日志以及报错日志等。
gitlab-ctl tail #查看所有日志
gitlab-ctl tail nginx/gitlab_access.log #查看nginx访问日志