判断两个时间段是否重叠的算法

判断两个时间段是否重叠,如:

startdate1 — enddate1
startdate2 — enddate2

两个时间的重叠分4种情况,若你一一列出这四种情况来判断是否重叠那就弱爆了,最简单的方法:

startdate1 <= enddate2 and enddate1 >= startdate2

若你无法理解上面这种方法,那我还有下面的方法提供给你:

(startdate1 BETWEEN startdate2 AND enddate2)
or (enddate1 BETWEEN startdate2 AND enddate2)
or (startdate2 BETWEEN startdate1 AND enddate1)
or (enddate2 BETWEEN startdate1 AND enddate1)

分类至 网络应用
0条评论

Laravel 框架查询数据集转换为数组

1. Eloquent 查询

在 Laravel 框架里,如果是 Eloquent 查询,可以用 toArray 方法的把结果转换为数组。

Eloquent  模型的 first 方法返回的是单个 Eloquent 对象,使用 toArray 方法可以把它转换成一维数组:

$user = User::where('id', 1)->first()->toArray();

Eloquent  模型的 get 方法返回的是包含多个 Eloquent 对象的 Collection 集合,使用 toArray 方法可以把集合转换成二维数组:

$users = User::whereIn('id', [1, 2, 3])->get()->toArray();

2. DB 查询

当我们使用 DB 类进行查询时,first 方法返回的是 stdClass 对象,get 方法返回的是包含多个 stdClass 对象的 Collection 集合。

// first 返回结果是 stdClass 对象
$user = DB::table('users')->where('id', 1)->frist();

// get 返回结果是包含多个 stdClass 对象的 Collection 集合
$users = DB::table('users')->whereIn('id', [1, 2, 3])->get();

……

分类至 PHP
0条评论

PHP 排序模式 SORT_NUMERIC / SORT_STRING / SORT_NATURAL 详解

PHP 的排序函数提供了如下几种排序模式:

  • SORT_REGULAR - 将项目按照通常方法比较(不修改类型)
  • SORT_NUMERIC - 按照数字大小比较
  • SORT_STRING - 按照字符串比较
  • SORT_LOCALE_STRING - 根据当前的本地化设置,按照字符串比较。它会使用 locale 信息,可以通过 setlocale() 修改此信息。
  • SORT_NATURAL - 以字符串的"自然排序",类似 natsort()
  • SORT_FLAG_CASE - 可以组合 (按位或 OR) SORT_STRING 或者 SORT_NATURAL 大小写不敏感的方式排序字符串。

...

分类至 PHP
0条评论

nginx 做 websocket 代理

首先,在 nginx.conf 的 http{ } 段添加:

 map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
}

然后,在 server{ } 段添加:

location /wss/  {
    proxy_pass http://127.0.0.1:9501/;
    proxy_http_version 1.1;    
    proxy_connect_timeout 4s;
    proxy_read_timeout 60s;
    proxy_send_timeout 60s;
    proxy_set_header Upgrade $http_upgrade;    
    proxy_set_header Connection "Upgrade";    
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

访问 http://yourdomain.com/wss/ 时,请求会被转发给 http://127.0.0.1:9501/

配置项说明:
proxy_read_timeout:nginx接收upstream server数据超时, 默认60s, 如果连续的60s内没有收到1个字节, 连接关闭。
proxy_send_timeout:nginx发送数据至upstream server超时, 默认60s, 如果连续的60s内没有发送1个字节, 连接关闭。

分类至 网络应用
0条评论

MYSQL中的int(11)到底代表什么意思?

对于int类型的一些基础知识其实上图已经说的很明白了,在这里想讨论下常用的int(11)代表什么意思,很长时间以来我都以为这代表着限制int的长度为11位,直到有天看到篇文章才明白,11代表的并不是长度,而是字符的显示宽度,在字段类型为int时,无论你显示宽度设置为多少,int类型能存储的最大值和最小值永远都是固定的...

分类至 MySQL
0条评论

如何在图片中加入压缩文件

简单来说就是利用copy命令。
copy /b src.jpg + src.rar dest.jpg
其中,src.jpg与dest.jpg显示的图像是一样的,当你将dest.jpg的后缀修改为rar,dest.rar解压的内容与src.rar的内容一致。

原理:
图片格式,例如jpg,bmp都是文件头设置好文件的类型以及文件长度,所以其后面的冗余不会被读出。 rar格式很特别,它运行时是先寻找rar文件的起始位置(因此可以排除开头的冗余),然后读取其后的所有data作为文件体。 所以图片在前,rar在后,则他们可以独立的读取出来。

分类至 网络应用
0条评论

composer命令介绍之install和update及其区别

composer 是 php 的一个依赖管理工具。它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们。

然而,对于如何『安装他们』,新手可能并不清楚。网上的答案有的说 composer install,有的说composer update,而这两者似乎都能成功把依赖下载下来并安装好,那么他们究竟有何区别呢?

分类至 PHP
0条评论

命令行技巧:使用 find 和 xargs 查找和处理文件

find 是日常工具箱中功能强大、灵活的命令行程序之一。它如它名字所暗示的:查找符合你指定条件的文件和目录。借助 -exec-delete 之类的参数,你可以让它对找到的文件进行操作。

在命令行提示系列的这一期中,你将会看到 find 命令的介绍,并学习如何使用内置命令或使用 xargs 命令处理文件。

分类至 Linux
0条评论

linux增加虚拟内存

1. 建立虚拟内存

找一个较大的空间

df -h

建立swap文件,大小2G

dd if=/dev/zero of=swapfile bs=1024000 count=2000

2. 启用虚拟内存

将swap文件设置为swap分区文件

mkswap swapfile

激活swap,启用分区交换文件

swapon swapfile

注意:insecure permissions 0644, 0600 suggested.

chmod 600 swapfile

分类至 Linux
0条评论