巧用Ajax的beforeSend 提高用户体验 jQuery是经常使用的一个开源js框架,其中的$.ajax请求中有一个beforeSend方法,用于在向服务器发送请求前执行一些动作.具体可参考jQuery官方文档:http://api.jquery.com/Ajax_Events/ $.ajax({ beforeSend: function(){ // Handle the beforeSend event }, complete: function(){ // Handle the com…
定义 图片懒加载又称图片延时加载.惰性加载,即在用户需要使用图片的时候加载,这样可以减少请求,节省带宽,提高页面加载速度,相对的,也能减少服务器压力. 惰性加载是程序人性化的一种体现,提高用户体验,防止一次性加载大量数据,而是根据用户需要进行资源的请求. 实现 懒加载的难点在于确定某张图片是否是用户需要的资源,在浏览器中,用户需要的是可视区内的资源,因此我们只需要判断图片是否已经呈现在可视区内,当图片呈现在可视区内时,获取图片的真实地址并赋给该图片即可(图片宽高需要指定,可以利用padding处…
当我们写完一个服务端程序,需要上线部署的时候,或多或少都会和操作系统的守护进程打交道,毕竟谁也不希望shell关闭既停服.今天我们就来聊聊这个事儿. 最早大家部署应用的通常操作是 "nohup xxxx &",别说像weblogic 或者其他java 容器有启动脚本,里面其实也差不多:很喜欢 nginx的 -d 参数,或者像redis 配置文件里可以指定是否以守护进程启动.看起来很优雅. 那么,使用rust 写一个服务端程序能不能优雅的使用一个参数指定应用 daemon 模式启…
当PHP运行在FastCGI模式时,PHP FPM提供了一个名为fastcgi_finish_request的方法.按照文档上的说法,此方法可以提高请求的处理速度,如果有些处理可以在页面生成完后再进行,就可以使用这个方法. 听起来可能有些茫然,我们通过几个例子来说明一下: <?php echo '例子:'; fastcgi_finish_request(); /* 响应完成, 关闭连接 */ /* 记录日志 */ file_put_contents('log.txt', '生存还是毁灭,这是个问…
只要做过WEB开发人对于“404”已经再熟悉不过了吧.当我们访问的资源不存在时,它就会跑出来跟你打招呼啦.但是默认情况下,404页面比较简陋,不是很友好.而且一般用户不知道404是个神马东东,还以为是程序写的有问题呢.这样一来用户体验就打折扣了.所以通常情况下,我们都需要对这些常见的错误进行处理. Tomcat默认的404页 为了提升用户体验,我们需要简单的配置一下,来让程序遇到404后跳转到我们指定的页面.首先,需要在web.xml文件加入如下配置: <!--404处理 --> <er…
最近在用rust 写一个redis的数据校验工具.redis-rs中具备 redis::ConnectionLike trait,借助它可以较好的来抽象校验过程.在开发中,不免要定义struct 中的某些元素为 trait object,从而带来一些rust语言中的生命周期问题. 本文不具体讨论 redis的数据校验过程,通过一个简单的例子来聊聊 struct 中 trait object 元素的生命周期问题. 首先来定义一个 base trait,该 trait 中只包含一个函数,返回Stri…
作者:京东云 贾世闻 最近想看看 rust 如何集成 clickhouse,又犯了好吃懒做的心理(不想自己建环境),刚好京东云发布了兼容ck 的云原生数仓 Starwfit,于是搞了个实例折腾一番. Starwfit 是京东云自主研发的新一代云原生数据仓库,通过存算分离降低了存储成本,同时兼具性能和扩展弹性.其写入和查询速度可达到传统数据仓库的数倍,为用户提供实时数据分析能力.广泛应用于流量分析.精准营销.用户画像.广告实时竞价.BI报表分析.日志分析.促销选品.物联网等业务场景. 言归正传,看…
作者:贾世闻 日志是应用程序的重要组成部分.无论是服务端程序还是客户端程序都需要日志做为错误输出或者业务记录.在这篇文章中,我们结合[log4rs](https://github.com/estk/log4rs)聊聊rust 程序中如何使用日志. [log4rs](https://github.com/estk/log4rs)类似java生态中的log4j,使用方式也很相似 log4rs中的基本概念 log4rs 的功能组件也由 appender 和 logger构成.· appender  负…
作者:京东科技 贾世闻 问题描述 clickhouse 的原生 rust 客户端目前比较好的有两个clickhouse-rs 和 clickhouse.rs .clickhouse-rs 是 tcp 连接:clickhouse.rs 是 http 连接.两个库在单独使用时没有任何问题,但是,在同一工程同时引用时会报错. Cargo.toml # clickhouse http clickhouse = {git = "https://github.com/loyd/clickhouse.rs&q…
作者:京东科技 贾世闻 Tokio 无疑是 Rust 世界中最优秀的异步Runtime实现.非阻塞的特性带来了优异的性能,但是在实际的开发中我们往往需要在某些情况下阻塞任务来实现某些功能. 我们看看下面的例子 fn main(){ let max_task = 1; let rt = runtime::Builder::new_multi_thread() .worker_threads(max_task) .build() .unwrap(); rt.block_on(async { prin…