bind

jQuery Event Keypress:按下了哪个键?

試著忘記壹切 提交于 2020-11-18 21:55:43
问题: With jQuery, how do I find out which key was pressed when I bind to the keypress event? 使用jQuery,如何确定绑定到keypress事件时按下了哪个键? $('#searchbox input').bind('keypress', function(e) {}); I want to trigger a submit when ENTER is pressed. 我想在按ENTER键时触发提交。 [Update] [更新] Even though I found the (or better: one) answer myself, there seems to be some room for variation ;) 即使我找到了(或者更好:一个)自己回答,似乎还有一些变化的空间;) Is there a difference between keyCode and which - especially if I'm just looking for ENTER , which will never be a unicode key? 有没有之间的差异 keyCode 和 which -尤其是如果我只是在寻找ENTER,这将永远是一个unicode关键? Do some

Docker容器中数据两种持久化存储方式:卷和挂载宿主目录

旧巷老猫 提交于 2020-11-18 08:47:36
镜像使用的是分层存储,容器也是如此。每一个容器运行时,是以镜像为基础层,在其上创建一个当前容器的存储层,我们可以称这个为容器运行时读写而准备的存储层为容器存储层。容器存储层的生存周期和容器一样,容器消亡时,容器存储层也随之消亡。因此,任何保存于容器存储层的信息都会随容器删除而丢失。 按照Docker最佳实践的要求,容器不应该向其存储层内写入任何数据,容器存储层要保持无状态化。所有的文件写入操作,都应该使用数据卷(Volume)、或者绑定宿主目录,在这些位置的读写会跳过容器存储层,直接对宿主(或网络存储)发生读写,其性能和稳定性更高。 (1).卷(volumes):是宿主机器的文件系统的一部分,由Docker进行管理(在Linux,存储于/var/lib/docker/volumes/)。非Docker程序不应该去修改这些文件。Docker推荐使用卷进行持久化数据。卷可支持卷驱动(volume drivers),该驱动允许用户将数据存储到远程主机或云服务商(cloud provider)或其它。没有名字的卷叫匿名卷(anonymous volume),有名字的卷叫命名卷(named volume)。匿名卷没有明确的名字,当被初始化时,会被赋予一个随机名字。 卷是一个可供一个或多个容器使用的特殊目录,它绕过UFS,可以提供很多有用的特性:A.卷可以在容器之间共享和重用;B

Blazor一个简单的示例让我们来起飞

不问归期 提交于 2020-11-18 08:40:24
Blazor Blazor他是一个开源的Web框架,不,这不是重点,重点是它可以使c#开发在浏览器上运行Web应用程序.它其实也简化了SPA的开发过程. Blazor = Browser + Razor 为什么选择Blazor? Blazor可以让.NET附有全栈开发功能,它可以使Web开发变得轻松而高效.而且Blazor是开源的,它得到了社区的大力支持,而且发展速度会很快. 它还拥有SPA的一些功能比如: 路由 依赖注入 服务端渲染 Layout 等等 创建应用 如果说无法在看到 Blazor WebAssembly App 那么执行如下命令即可. dotnet new -i Microsoft.AspNetCore.Components.WebAssembly.Templates::3.2.0-preview5.20216.8 项目结构如下所示 我们可以看到上图中的项目结构 BlazorServerCRUDSample.Client :该项目工程中包含了客户端的相关代码页面等文件 BlazorServerCRUDSample.Server :该项目工程中包含了webapi. BlazorServerCRUDSample.Shared :该类库中用于存放客户端和服务端之间的共享代码. BlazorServerCRUDSample.Server 控制器代码如下所示 [Route(

Linux之Socket编程

给你一囗甜甜゛ 提交于 2020-11-18 05:29:42
1.什么是Socket? socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模式来操作。socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭),socket就提供了这些操作对应的函数接口。 socket可以看成是用户进程与内核网络协议栈的编程接口。 socket不仅可以用于本机的进程间通信,还可以 用于网络上不同主机的进程间通信。 2.IPv4套接口地址结构 IPV4套妾口地址结构通常也弥为“网际套接字地址结构”,它以 “sockaddr_in”命名,定义在头文件<netinet/in.h>中 struct sockaddr_in{ uint8_t sin_len; // 整个sockaddr_in结构体的长度 sa_family_t sin_family; // 指定该地址家族,在这里必须设为AF_INET in_port_t sin_port; // 端口(2字节) struct in_addr sin_addr; // IPv4的地址(4字节) char sin_zero[ 8 ]; // 暂不使用,一般将其设置为0 (8字节) } IPv4套接字一般只需关心3个字段 struct sockaddr_in { sa

Netty 线程模型与Reactor 模式

微笑、不失礼 提交于 2020-11-18 05:21:49
前言 Netty 的线程模型是基于NIO的Selector 构建的,使用了异步驱动的Reactor 模式来构建的线程模型,可以很好的支持成百上千的 SocketChannel 连接。由于 READ/WRITE 都是非阻塞的,可以充分提升I/O线程的运行效率 ,避免了IO阻塞导致线程挂起, 同时可以让一个线程支持对多个客户端的连接SocketChannel的 READ/WRITE 操作, 从根本上解决了传统阻塞IO的一线程处理一连接的弊端。 高效率的Reactor模式 Reactor 模式 是一种为处理服务请求并发,提交到一个或者多个服务处理程序的事件设计模式。当请求抵达后,服务处理程序使用解多路分配策略,然后同步地派发这些请求至相关的请求处理程序 (来自维基百科: https://zh.wikipedia.org/wiki/反应器模式 ) 常见的reactor模式有以下三种 单线程reactor 多线程reactor 主从reactor 1、单线程reactor ractor 单线程模式是指所有的I/O操作都在一个NIO线程完成,该线程的职责: 1.作为NIO服务端,接收客户端TCP连接 2.作为NIO客户端,向客户端发送TCP连接 3.READ/WRITE 客户端的请求 不过单线程的reactor 模式无法发挥多核的优势,因此对于高并发量的系统仍然存在瓶颈,主要原因如下: 1

Netty怎么切换三种I/O模式和源码解释

耗尽温柔 提交于 2020-11-17 05:55:06
参考文献:极客时间傅健老师的《Netty源码剖析与实战》Talk is cheap.show me the code! 三种I/O模式   BIO:Block I/O,即同步并阻塞的IO;BIO就是传统的java.io包下的代码实现   NIO:New IO(non-blocking IO):同步非阻塞的IO,jdk1.4及以上版本提供   AIO:Async IO: 异步非阻塞IO,jdk1.7 阻塞和非阻塞     阻塞: 没有数据传输过来时,读会阻塞直到有数据;缓冲区满时,写操作也会阻塞。   非阻塞: 非阻塞遇到这些情况都是直接返回。 同步和异步   同步:数据就绪后需要自己去读是同步。   异步:数据就绪后直接读好再回调给程序是异步。 Netty对三种IO的支持    首先Netty是都支持三种IO模式的,准确的来说是曾经都支持过,因为BIO的被Netty给过期了,AIO被Netty给删除了,具体原因这就不多赘述;知道BIO在Netty被称为OIO,NIO在多平台下都有对应的支持,有人会问为啥有common的支持了还有Linux等其他的意义吗,这好比全栈和后端前端之分一样,一个通用一个专用的区别。 Netty切换IO模式    如上图所示,对应的实现类都差不多,甚至可以看出都是头不一样,如果NIO的通用是NioEventLoopGroup

【网络编程】 𤗣

喜你入骨 提交于 2020-11-16 00:30:58
<h2>原文: <a href="http://blog.gqylpy.com/gqy/227" style="color: blue;"> http://blog.gqylpy.com/gqy/227 </a> </h2> <div class="htmledit_views" id="content_views"> <p id="main-toc"><strong>目录</strong></p> <p id="1.socket%E5%B1%82-toc" style="margin-left:80px;"><a href="#1.socket%E5%B1%82" rel="nofollow" target="_self">1.socket层</a></p> <p id="2.%E7%90%86%E8%A7%A3socket-toc" style="margin-left:80px;"><a href="#2.%E7%90%86%E8%A7%A3socket" rel="nofollow" target="_self">2.理解socket</a></p> <p id="3.%E5%A5%97%E6%8E%A5%E5%AD%97%EF%BC%88secret%EF%BC%89%E7%9A%84%E5%8F%91%E5%B1%95%E5%8F%B2-toc" style=

JS前端面试题(三)

蓝咒 提交于 2020-11-15 11:47:47
文章目录 61.new的原理是什么?通过new的方式创建对象和通过字面量创建有什么区别? 62.prototype 和 proto 区别是什么? 63.使用ES5实现一个继承? 64.取数组的最大值(ES5、ES6) 65.ES6新的特性有哪些? 66.promise 有几种状态, Promise 有什么优缺点 ? 67.Promise构造函数是同步还是异步执行,then呢 ?promise如何实现then处理 ? 68.Promise和setTimeout的区别 ? 69.如何实现 Promise.all ? 70.如何实现 Promise.finally ? 71.如何判断img加载完成 72.如何阻止冒泡? 73.如何阻止默认事件? 74.ajax请求时,如何解释json数据 75.json和jsonp的区别? 76.如何用原生js给一个按钮绑定两个onclick事件? 77.拖拽会用到哪些事件 78.document.write和innerHTML的区别 79.jQuery的事件委托方法bind 、live、delegate、on之间有什么区别? (1)、bind 【jQuery 1.3之前】 (2)、live 【jQuery 1.3之后】 (3)、delegate 【jQuery 1.4.2中引入】 (4)、on 【1.7版本整合了之前的三种方式的新事件绑定机制】 80

【Python3爬虫】学习分布式爬虫第一步--Redis分布式爬虫初体验

不想你离开。 提交于 2020-11-14 07:01:45
一、写在前面   之前写的爬虫都是单机爬虫,还没有尝试过分布式爬虫,这次就是一个分布式爬虫的初体验。所谓分布式爬虫,就是要用多台电脑同时爬取数据,相比于单机爬虫,分布式爬虫的爬取速度更快,也能更好地应对IP的检测。本文介绍的是利用Redis数据库实现的分布式爬虫,Redis是一种常用的菲关系型数据库,常用数据类型包括String、Hash、Set、List和Sorted Set,重要的是Redis支持主从复制,主机能将数据同步到从机,也就能够实现读写分离。因此我们可以利用Redis的特性,借助requests模块发送请求,再解析网页和提取数据,实现一个简单的分布式爬虫。 二、基本环境   Python版本:Python3   Redis版本:5.0   IDE: Pycharm 三、环境配置 由于Windows下的安装配置比较简单,所以这里只说Linux环境下安装和配置Redis(以Ubuntu为例)。 1.安装Redis 1)apt安装: $ sudo apt-get install redis-server 2)编译安装: $ wget http : / / download .redis .io / releases / redis - 5.0.0.tar.gz $ tar - xzvf redis - 5.0.0.tar.gz $ cd redis - 5.0.0 $