MongoNotes

《MongoDB入门指南》

mongodb 基本命令

进入 mongo: mongo
启动服务:net start MongoDB

  1. 查看数据库:
1
show dbs
  1. 查看所有集合:
show collections;
  1. 查看数据库服务器的状态:
db.serverStatus();
  1. 查询指定数据库统计信息:
use user;
db.stats();
  1. 查询指定数据库包含的集合名称列表
db.getCollectionNames();
  1. 删除数据库
db.dropDatabse();
  1. 创建集合
db.createCollection(name, {size:..., capped:..., max:...})

MongoDB 支持 Capped Collection,一种固定大小的集合,当集合的大小达到指定大小时,新数据会覆盖老数据.

  1. 删除集合:
db.collections.drop();
  1. 插入更新记录,save方法:
db.user.save({‘name’:'xiaoming’,'age’:25});
  1. 查询一条记录:
    参数为查询条件,可选,系统会随机查询获取到满足条件的一条记录(如果存在查询结果数量大于等于1)
db.user.findOne({‘name’:'xiaoming’})
  1. 查询多条记录:不指定条件则查询全部记录
db.user.find();
  1. 删除记录:
db.user.remove({‘name’:'xiaomng’});
  1. 创建索引:
>use user
>db.page.ensureIndex({}’name’:1, ‘age’:-1})
>db.system.index.find()

ensureIndex 方法参数中,数字1表示升序,-1表示降序.
db.system.indexes.find() 可以查询全部索引

  1. 查询索引:
db.page.getIndexes();
  1. 删除索引:
db.user.dropIndex(name)
db.user.dropIndexes();//删除全部索引
  1. 索引重建:
db.page.reIndex()
  1. 统计集合记录数
user user;
db.baseSe.count();
  1. 查询并统计结果记录数:
use user
db.baseSe.find({‘name’:'xiaoming’}).count()

先根据条件查询结果,然后再统计结果中的记录数,查询条件也可为空.

AndroidNDK



###

NDK官网示例 googlesamples/android-ndk


CrystaX NDK

Boost + Android? CrystaX NDK!
使用Android Studio构建基于NDK和Boost C++库的应用程序


不错的 ndk 文章

Android ndk入门学习
JNI系列教程三 —— NDK入门
MENU Android Studio中NDK开发
Android Studio, gradle and NDK integration
NDK-JNI实战教程(一) 在Android Studio运行第一个NDK程序
NDK-JNI实战教程(二) JNI官方中文资料
Android Studio ndk-Jni开发详细入门,Aes加密demo
国外不错的文章-The new NDK support in Android Studio


出现错误

1
2
3
4
 /home/user5432/workspace/bitmapproj/obj/local/armeabi/objs-debug/mybitmap.o : In function Java_com_example_plasma_PlasmaView_renderPlasma
"undefined reference to AndroidBitmap_getInfo"
"undefined reference to AndroidBitmap_lockPixels"
"undefined reference to AndroidBitmap_unlockPixels"

gradle ndk 添加如下依赖

1
2
3
ndk {
ldLibs "log","android", "jnigraphics" // 引用依赖的 ndk 库 ldLibs = ["android", "jnigraphics", <other ndk libraries you might need>]
}

或 Android.mk 添加如下依赖

1
`LOCAL_LDFLAGS += -ljnigraphics`

参考
Android bitmap native code - linking problem


出现 NEON 错误

1
Error:(31, 2) error: #error You must enable NEON instructions (e.g. -mfloat-abi=softfp -mfpu=neon) to use arm_neon.h

Android NDK(ARM开发)使用NEON优化
Android NDK使用NEON优化,SIMD优化
Gradle - neon
How do I enable ARM NEON builds using Gradle?
How to build and debug native code (c) with neon enabled in android studio?
Android-NDK _NEON Support


error Unknown or unsupported ARM architecture

[revamp] Android NDK API 21 issue #455

1
2
3
4
5
6
7
8
9
It would appear that at least as of Kitkat 4.4 (API 19), ARM devices are required to be at least ARMv7a:

MUST report, via android.os.Build.CPU_ABI, only one of the ABIs listed below
* armeabi-v7a
* x86
* mips
It's not altogether surprising that the API to follow 19 (Lollipop API 21) would drop support for ARMv5 completely. From what I've read, official builds of 4.4+ are always ARMv7a, but there are some custom builds for certain devices which run ARMv6.

So the fix is to target a lower API or target the armeabi-v7a architecture. Switching to v7a fixed this problem for me.

我的错误信息大概是 android-23/…/cpu-feature.h 中的错误,可能是最新的 ndk 暂不支持 cpu-feature.h 的 armeabi 平台编译库吧, 去掉 abiFilters 中的 armeabi 编译选项即可

1
abiFilters "armeabi-v7a" , "x86", "mips" //"armeabi", "armeabi-v7a" , "x86"

错误 Error:(208, 9) error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode

1
2
3
4
5
C:\Users\yafei\AppDeveloperWorkspace\CoamAndroid\app\src\main\jni\audio.c
Error:(208, 9) error: 'for' loop initial declarations are only allowed in C99 or C11 mode
Information:(208, 9) use option -std=c99, -std=gnu99, -std=c11 or -std=gnu11 to compile your code
C:\Users\yafei\AppDeveloperWorkspace\CoamAndroid\app\src\main\jni\audio.c: In function 'Java_com_coam_ui_telegram_controller_TelegramMediaController_getWaveform2':
C:\Users\yafei\AppDeveloperWorkspace\CoamAndroid\app\src\main\jni\audio.c:692:5: error: 'for' loop initial declarations are only allowed in C99 or C11 mode

Building android app with C++
Gradle building issue


Telegram 相关


ogg 没有 config_types.h 错误

xiph/ogg
添加文件 rtn56u/user/flac-1.2.1/source/include/ogg/config_types.h


cpu-feature 问题

The cpufeatures Library


Linux.bashrc

环境变量

1
2
# Erlang
# export PATH=/opt/otp/bin:$PATH

Ubuntu 终端颜色显示 PS1 bash 输出文本颜色配置

  • 突然发现终端文件不高亮显示,可以修改 .bashrc 文件来调节

  • 将以下加入到 .bashrc 的最后

1
PS1='\[\e[1;36m\]\d \[\e[1;32m\]\t \[\e[1;33m\]\u@\[\e[1;35m\]\h:\w\$\[\e[0;31m\] '

退出终端重新登陆或执行以下命令可看到效果

1
source .bashrc

其它的一些参考的色彩设置:

1
2
3
4
5
6
7
$ PS1='\[\e[1;34m\][\d \t \u@\h \w]\$\[\e[m\] '
$ PS1='\[\e[1;36m\]\d \[\e[1;32m\]\t \[\e[1;33m\]\u@\[\e[1;35m\]\h:\w\$\[\e[0;31m\] '
$ PS1='\[\e[1;33m\]\u@\h \w ->\n\[\e[1;36m\] \@ \d\$\[\e[m\] '
$ PS1="[\[\e[0;32m\]\u@\h, load: `cat /proc/loadavg | awk '{ print $1; }'`\[\e[00m\]] (\[\e[00;35m\]\d - \t\[\e[00m\])\n\w \$ "
$ PS1="[\u@\h, load: `cat /proc/loadavg | awk '{ print $1; }'`] (\d - \t)\n\w \$ "
$ PS1="$HC$FYEL[ $FBLE${debian_chroot:+($debian_chroot)}\u$FYEL: $FBLE\w $FYEL]\\$ $RS"
$ PS2="$HC$FYEL&gt; $RS"

当前服务器配置

1
2
3
4
5
6
# Terminate HighLight
#PS1='${debian_chroot:+($debian_chroot)}\[\033[01;35;40m\]\u\[\033[00;00;40m\]@\[\033[01;35;40m\]\h\[\033[00;31;40m\]:\[\033[00;00;40m\]\w \[\033[01;32;40m\]\$ \[\033[01;36;40m\]'
#PS1="$HC$FYEL[ $FBLE${debian_chroot:+($debian_chroot)}\u$FYEL: $FBLE\w $FYEL]\\$ $RS"
#PS2="$HC$FYEL&gt; $RS"
#PS1='\[\e[1;33m\]\u@\h \w ->\n\[\e[1;36m\] \@ \d\$\[\e[m\] '
PS1='\[\e[1;36m\]\d \[\e[1;32m\]\t \[\e[1;33m\]\u@\[\e[1;35m\]\h:\w\$\[\e[0;37m\] '

其中配置项

1
PS1='\[\e[1;36m\]\d \[\e[1;32m\]\t \[\e[1;33m\]\u@\[\e[1;35m\]\h:\w\$\[\e[0;37m\] '

显示效果为

1
Fri Feb 26 11:55:20 yzhang@coam:~$

Linux PS1 配置对应表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# ANSI color codes
RS="\[\033[0m\]" # reset
HC="\[\033[1m\]" # hicolor
UL="\[\033[4m\]" # underline
INV="\[\033[7m\]" # inverse background and foreground
FBLK="\[\033[30m\]" # foreground black
FRED="\[\033[31m\]" # foreground red
FGRN="\[\033[32m\]" # foreground green
FYEL="\[\033[33m\]" # foreground yellow
FBLE="\[\033[34m\]" # foreground blue
FMAG="\[\033[35m\]" # foreground magenta
FCYN="\[\033[36m\]" # foreground cyan
FWHT="\[\033[37m\]" # foreground white
BBLK="\[\033[40m\]" # background black
BRED="\[\033[41m\]" # background red
BGRN="\[\033[42m\]" # background green
BYEL="\[\033[43m\]" # background yellow
BBLE="\[\033[44m\]" # background blue
BMAG="\[\033[45m\]" # background magenta
BCYN="\[\033[46m\]" # background cyan
BWHT="\[\033[47m\]" # background white
  • 注:每种颜色都有两种,分别以 3 和 4 开头的数字配置,3 表示文字颜色,4 表示背景颜色

CustomizingBashPrompt
http://bashrcgenerator.com/#minidoc

How to Customize your Bash Prompt on a Linux VPS
How to Make a Fancy and Useful Bash Prompt in Linux


使用 Putty 客户端登陆后显示对应的服务器ip名称

1
2
3
4
5
6
7
# Auto add env parameter $PROMPT_COMMAND when use non-Linux tty login by ssh.
# 让 putty 登陆的标题栏显示对应服务器 IP
if [ "$SSH_CONNECTION" != '' -a "$TERM" != 'linux' ]; then
declare -a HOSTIP
HOSTIP=`echo $SSH_CONNECTION |awk '{print $3}'`
export PROMPT_COMMAND='echo -ne "\033]0;${USER}@$HOSTIP:[${HOSTNAME%%.*}]:${PWD/#$HOME/~} \007"'
fi

WinNote

关于WINDOWS下,文件名过长,无法删除的解决办法

关于WINDOWS下,文件名过长,无法删除的解决办法

dir /x 这时候就会出现里面所有文件的列表,并且显示每个文件的缩短名(显示在文件大小和文件名之间)
然后输入del加上你要删除文件的短文件名.即可删除.
如果是删除文件夹,请使用RMDIR /S 文件夹名

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
dir /x 

F:\BaiDuCloud\YS>dir /x
Volume in drive F has no label.
Volume Serial Number is 0000-4823

Directory of F:\BaiDuCloud\YS

02/24/2016 12:10 PM <DIR> .
02/24/2016 12:10 PM <DIR> ..
02/24/2016 12:31 PM <DIR> COAMRU~1 CoamRunning
02/24/2016 12:08 PM 600,910,847 COAMRU~1.ZIP CoamRunning.zip
1 File(s) 600,910,847 bytes
3 Dir(s) 14,681,616,384 bytes free

del COAMRU~1.ZIP
RMDIR /S COAMRU~1

Window 下 默认使用微软账号登陆

  • Win+R 打开运行命令,输入 control userpasswords2 打开”用户账户”管理界面
  • 取消【要使用本计算机,用户必须输入用户名和密码】的复选框,点击应用
  • 点击应用后出现【自动登录】窗口,默认用户名为当前电脑激活的用户账户名称
  • 此时在自动登录界面手动输入Microsoft账户及对应Microsoft账户的密码,点击确定即可

如此便可以实现微软账户自动登陆了

Windows 10如何设置Microsoft账户开机自动登录桌面