类似书本的目录一样, 为了能够快速定位到某一条数据,数据库也都使用了类似的方法,名为索引。但是索引也有它的副作用, 固然,利用索引能够加快查询, 但是为了维护索引, 不可避免的降低了插入的速度, 但是对于查询比较多的情况下,这点损失我们还是能够接受的。索引的创建是要根据需求来的, 过多的索引, 不仅浪费存储空间, 而且会降低插入速度。索引的使用更加要小心, 有时不适当的查询语句会导致,查询并没有使用索引。不单单是mongo, 这可以说是大多数数据库的共性。
mongo深入理解-聚合操作
有可能我们需要对存入mongo的数据进行分析整理, 特别是爬虫获取到的元数据,这时候mongo的聚合操作(Aggregation)就给我们带来了很大的便利。 利用Mongo的这个特性, 我们可以很方便的对数据进行二次处理, 形成类似于Linux的管道操作(pipline)。Aggregation 直达链接
mysql事务嵌套
写代码的时候, 应该是很容易碰到事务相互嵌套的问题, 那么mysql是如何处理事务嵌套的呢, 答案是: MySQL不支持事务嵌套, 当我们在事务中嵌套另一个事务的时候, 声明语句start transaction;会导致当前的事务默认提交, 当我们执行rollback; 的时候也是不好使的, 因为上次的事务已经被提交了。
mongo比较大小时的坑
平时使用的时候没有发现, 但是今天在日期查询的时候却遇到了这么一种坑。 由于公司的es服务是跑脚本来进行数据的更新的, 更新有两种方式: 增量, 全量。在增量的时候会根据文件中的时间戳进行比较, 取出来的数字是字符串,而mongo中存储的updated字段是Int32, 因此mongo在比较的时候就出错了。我以为mongo会自动的将字符串数字转变为整型, 但是好像并没有, 加了一个强制类型转换之后,就一切正常了。
mongo 进行比较的时候, 一定要注意类型, 字符串和数字, 并不会自动转换。这样导致有时候还是有点不便的, 或许是使用弱类型语言习惯了。。。。
app计划
忽然间想自己写个独立的app出来, 但是具体的还没有想好写什么, 我希望这个app应该具有以下几点。功能应该是比较有针对性的(貌似开源的都是广泛性的); 操作应该尽可能的简单, 减少学习成本; 界面简洁, 不失个性。下面就具体的列出来, 慢慢思考。
c指针的简单理解
没事,看了看c, 发现c里面的指针果然是很饶人, 看了很长时间才发现或许可以, 以一种简单的说法,帮助理解。
laravel配置数据库不生效
背景:
看了一下laravel 的基础, 然后感觉这个框架也很有意思, 于是就多看了几眼, 没想到栽到了配置数据库上面, laravel配置文件的加载方式和我之前使用过的都不同, 很特别, 真的很特别。
发生了什么:
当我玩完laravel的路由和控制器的时候, 就去看laravel的模型, 然后此时去配置了数据库, 但是,奇怪的事情发生了, 不管我怎么配置都不行, 后来发现了问题是出现在配置文件的函数上面。下面是配置文件,我们可以看到, 他是通过env()这个函数去判断的。
MySQL存储过程
没事写的一些小示例
由于是用来测试的, 可能有些会用php7的语法来写, 不过未来的主流肯定是php7, 就像现在的主流是5.6一样, PHP7 的性能无疑是超越了5.6一大截。
练习的时候我们可以使用php内置的http服务器,来减少部署的时间, 将php7加入到环境变量中, 在需要执行的目录中运行
php -S 127.0.0.1:80
Ubuntu启用ufw防火墙
防火墙是计算机中一款应用软件或基于硬件的网络安全系统。它根据应用配置的规则,分析数据包,然后决定是否允许此数据包通过,来控制整个系统的网络数据进出访问权限。
常用的Linux下的防火墙的软件是iptables, 但是iptables的设置规则比较复杂, 因此ubuntu在此之上封装形成了ufw