基于HTTP协议之WEB消息实时推送技术原理及实现
长连接,如果没有一个连接在保持着,如何知道消息已经到了呢。所以要实时也是需要花费代价的,服务器需要保持客户端的链接。在使用 HTTP 实现实时推送之前,我们需要了解 HTTP 协议,HTTP1.1 是支持长连接的,但是 HTTP 是没有状态的,一次请求,服务器给予响应,这个请求就结束了,不久之后就会断开连接,不可以在这个连接基础上再回应,然后再接收,要真是这样就成了 Socket 通信了。要在这个基础...
手机网站开发HTML5之viewport使用
位为缩放为 100% 时的 CSS 的像素)。height指定高度设备的高度。target-densitydpi一个屏幕像素密度是由屏幕分辨率决定的,通常定义为每英寸点的数量(dpi)。Android支持三种屏幕像素密度:低像素密度,中像素密度,高像素密度。一个低像素密度的屏幕每英寸上的像素点更少,而一个高像素密度的屏幕每英寸上的像素点更多。Android Browser和WebView默认屏幕为中像...
GITHUB之GIT BASH使用教程
BASH 管理 GITHUB 中的代码库。Git 是基于 Linux 内核开发的版本控制工具。与常用的版本控制工具 CVS,Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持,使源代码的发布和交流极其方便。 Git 的速度很快,这对于诸如 Linux kernel 这样的大项目来说自然很重要。 Git 最为出色的是它的分支、合并、跟踪的能力。申请 GITHUB 账号关于 ...
如何让你的VIM支持中文不乱码
创建 .vimrc 文件在用户目录下,如下内容。 set enc=utf-8 set fileencoding=utf-8 set fileencodings=ucs-bom,utf8,prc set guifont=Monaco:h11 set guifontwide=NSimsun:h12 ...
Apache泛解析与二级域名冲突解决
主机上的好处就是管理方便,不会为了功能的局限而产生了一些畸形的代码。 在配置虚拟主机时,也碰到了一些问题,由于本站有很多二级域名,并且有部分二级指向的是同一个目录,也就是共用一个配置文件,并且网站又得支持泛解析,导致了某些二级域名被泛解析跳转到了 www 主站。为了解决这个问题,了解了一番 Apache 的配置文件加载策略,发现配置文件的名称跟内容并没有强制的关联,并且解析顺序和加载顺序一致,这样修改...
修改sshd_config文件配置防止Linux下btmp文件内容过大
,是有点意义的,这样确实能够过滤掉绝大多数的攻击。个人认为如果修改 22 端口,对自己带来的麻烦不止一点点啊,特别是有的人比较糊涂,忘记了端口怎么办,并不是所有的主机服务商都有 web shell 的支持的。为了安全,还是让自己痛苦一点吧,必须得记住一个对自己有点意义的端口号。修改端口的方法:$ vi /etc/ssh/sshd_config将 port 22 修改为其他的端口,端口号尽量大于 10...
Spring boot jackson datetime 配置
ResponseBody 返回出去的是一个长整型时间戳。如果想要返回自定义的日期格式,需要做处理,网上有很多处理方式,大体都是继承、重写,比较复杂。实际上 JSON 已有注解 @JsonFormat 支持,使用实例: @JsonFormat(timezone = "GMT+8", pattern = "yyyyMMddHHmmss") private Date createTime; 。...
基于 HTML5 的 EventSource 实时推送实现
esult").innerHTML=event.data + " "; }; }else{ document.getElementById("result").innerHTML="抱歉,您的浏览器不支持 server-sent 事件 ..."; } </script>本文示例后端使用文件保存聊天记录,读取文件内容的更新返回给客户端,通过保持长连接和 chunked 传输实现实时通信。经过长时间观察测...
谈谈 PHP 协程的任务调度
导致阅读理解起来非常费力,而任务调度是我唯一能想到的 yield 的作用,方便管理垃圾代码。其实仔细一想,yield 能做的所有的事情,不使用 yield 照样可以相同效果的完成。学面向对象是为什么,支持面向对象是为什么,就是为了方便管理复杂的代码控制流程。像上面的任务调度,使用观察者模式一样可以同等效果的完成,也许稍微麻烦一点点,但性能应该比 yield 要好。...
PHP7 返回值类型与声明不符报错
PHP7 的函数和方法支持声明返回值类型,出于好奇,试了下如果在运行时返回值类型与声明不符会怎么样?<?php function test() : array{ return 'lmlphp'; } test(); 如下致命错误:PHP Fatal error: Uncaught TypeError: Return value of test() must be of the type array, ...