bind

NIO在Tomcat中的应用

允我心安 提交于 2020-10-16 13:00:46
对NIO的理解 个人单方面认为,NIO与BIO的最大区别在于主动和被动,使用BIO的方式需要等待被调用方返回数据,很明显此时调用者是被动的。 举个例子 阻塞IO 假设你是一个胆小又害羞的男孩子,你约了隔壁测试的妹子,但你并不敢主动约会,所以你把自己的手机号码给她,并暗示她想要约会的时候打电话给你。很明显此时你陷入了被动,约不约会的结果需要妹子主动告知你,如果她忘了,那么你要陷入长时间的等待中以及无尽的猜测和自我怀疑中(太惨了)。[如果你是一个胆小害羞又好色的男孩子,那就惨了] 非阻塞IO 我们知道,渣男通常有很多的备胎,我管这个叫做 备胎池(SpareTirePool) , 那么当他想要约会的时候,只要群发问妹子要不要约会,如果要约会的话就和妹子约会,约会结束之后,处理其他约会事件,如果没有继续下一次询问。在这个例子中约会可以视为IO事件,问妹子的过程可以视为备胎池的轮询。 如果你要学习NIO,可以 学习 Tomcat 如何使用NIO 既然是网络通信的I/O那必然有以下两个步骤 SeverSocket的启动 I/O事件的处理 关键代码在 package org.apache.tomcat.util.net.NioEndpoint 中 P.S. 文章太长,如果不想看可以直接阅读结论 ServerSocket的启动 在最开始看代码,是震惊的,真的,如果你看Reactor模型的话

无法绑定到“ ngModel”,因为它不是“ input”的已知属性

…衆ロ難τιáo~ 提交于 2020-10-16 08:55:22
问题: I've got the following error when launching my Angular app, even if the component is not displayed. 即使未显示组件,启动我的Angular应用程序时也会出现以下错误。 I have to comment out the <input> so that my app works. 我必须注释掉 <input> 这样我的应用才能正常工作。 zone.js:461 Unhandled Promise rejection: Template parse errors: Can't bind to 'ngModel' since it isn't a known property of 'input'. (" <div> <label>Created:</label> <input type="text" [ERROR ->][(ngModel)]="test" placeholder="foo" /> </div> </div>"): InterventionDetails@4:28 ; Zone: <root> ; Task: Promise.then ; Value: I'm looking at the Hero plunker, but I don't see any

【原创】分布式之数据库和缓存双写一致性方案解析(三) 前端面试送命题(二)-callback,promise,generator,async-await JS的进阶技巧 前端面试送命题(一)-J...

不羁岁月 提交于 2020-10-16 08:50:58
【原创】分布式之数据库和缓存双写一致性方案解析(三) 正文 博主本来觉得, 《分布式之数据库和缓存双写一致性方案解析》 ,一文已经十分清晰。然而这一两天,有人在微信上私聊我,觉得应该要采用 先删缓存,再更新数据库,再删缓存 这一方案作为缓存更新策略,而不是先更新数据库,再删缓存。并且搬出了两篇大佬的文章, 《Cache Aside Pattern》 , 《缓存与数据库不一致,咋办?》 ,希望博主能加以说明。因为问的人太多了,所以才有了这篇文章的诞生。 正文 在开始这篇文章之前,我们先自己思考一下以下两个更新策略 方案一 (1)删缓存 (2)更数据库 (3)删缓存 方案二 (1)更数据库 (2)删缓存 大家看下面的文章前,自己先思考一下, 方案一的步骤(1)有没有存在的必要? 先上一个 结论 :方案二存在的缺点,方案一全部存在,且方案一比方案二多一个步骤,所以应该选方案二。 下面,针对 《Cache Aside Pattern》 , 《缓存与数据库不一致,咋办?》 这两篇文章提出的论点,提出小小的质疑。这两篇文章认为方案二不行的原因,主要有以下两点 (1)方案二在步骤(2),出现删缓存失败的情况下,会出现数据不一致的情形,如下图所示 (2)方案二存在下面的主从同步,导致cache不一致问题,如下图所示 大致流程就是,线程A写,线程B读,会有以下流程出现 (1)缓存刚好失效 (2

Springboot集成flowable modeler web流程设计器

六月ゝ 毕业季﹏ 提交于 2020-10-14 13:54:59
之前画流程图都是用tomcat启动flowable modeler,但是这样启动就不能在分配任务用户/用户组的时候查询自己系统里的数据。所以现在需要把flowable modeler集成到项目里来。 之前自己也搜索了很多文章,都感觉不是很清晰,可能也是因为我刚接触不久。现在自己集成好了之后,记录一下自己学习的结果。 首先需要创建一个springboot应用,pom文件中引入相关jar包: <properties> <java.version>1.8</java.version> <flowable.version>6.4.1</flowable.version> <lombok.version>1.18.0</lombok.version> <fastjson.version>1.2.9</fastjson.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <type>pom</type> <scope>import</scope> </dependency> <!--Spring Cloud-->

SpringCloud系列之服务容错保护Netflix Hystrix

被刻印的时光 ゝ 提交于 2020-10-14 04:47:09
1. 什么是雪崩效应? 微服务环境,各服务之间是经常相互依赖的,如果某个不可用,很容易引起连锁效应,造成整个系统的不可用,这种现象称为服务雪崩效应。 如图,引用国外网站的图例: https://www.javatpoint.com/fault-tolerance-with-hystrix# ,如图系统各种服务相互调用,一旦一个服务出现问题,假如系统没有熔断器,很容易影响其它模块使用 可用自己画图表示这种情况,如图:A作为服务提供者,B为A的服务消费者,C和D是B的服务消费者。A不可用引起了B的不可用,像滚雪球一样放大到C和D时,雪崩效应就形成了。当然也不一定是服务提供者出现问题,也有可能是消费者出现问题 从两个方面来分析服务雪崩产生的原因: 服务提供者 服务提供者出现问题,一般都是影响调用的服务消费者,然后造成连锁反应 服务消费者 服务消费者方面,主要表现在同步调用等待结果导致资源紧张,ps:还有一种特殊情况是,服务既是服务提供者,又是服务消费者 2. 什么是熔断器模式 熔断器(CircuitBreaker),英文是CircuitBreaker,软件设计中的熔断器模式实现,思路是用一个函数调用在断路器保护对象,对故障监控。失败达到一定阈值后,断路器工作,接口调用返回一个错误,以达到保护系统,预防线程资源被大量占用,造成系统雪崩的情况 引用 https://martinfowler

较真儿学源码系列-Netty核心流程源码分析

安稳与你 提交于 2020-10-12 07:09:05
目录 1 简介 1.1 线程模型 1.2 ChannelHandler & ChannelPipeline 1.3 直接内存 2 NioEventLoopGroup 3 ServerBootstrap & Bootstrap 3.1 构造器 3.2 group方法 3.3 channel方法 3.4 option方法 3.5 childHandler & handler方法 3.6 bind & connect方法 4 sync方法 5 writeAndFlush方法 6 心跳检测机制 6.1 构造器 6.2 channelActive方法 6.3 channelRead方法 Netty版本:4.1.51.Final。 1 简介 因为NIO的类库和API比较繁琐,使用起来比较麻烦,开发的工作量和难度都非常大,例如客户端面临断连重连、网络闪断、心跳处理、半包读写、网络拥塞和异常流的处理等等。所以Netty对Java自带的NIO API进行了良好的封装,解决了上述问题。且Netty拥有高性能、吞吐量更高、延迟更低、减少资源消耗,零拷贝直接内存等优点。所以Netty可以很方便地实现出一个网络通信系统,比如聊天服务器或弹幕系统(我曾经使用Netty实现过一个简易聊天室的demo,感兴趣的可以查看 《Netty实现简易聊天室的功能》 ),同时在分布式框架中

Vue开发者必会的基础知识盘点

巧了我就是萌 提交于 2020-10-12 02:13:05
下面是Vue的一些基本知识点相关学习跟应用,差缺补漏吧。Vue.js官网好好看一遍还是很香的。 Vue中的数据和DOM已经被关联起来,所有的东西都是响应式的。注意我们不再和HTML直接交互。一个Vue应用会将其挂载到DOM元素上然后对齐进行完全的控制,那个HTML是我们的入口,但是其他的都会发生在新创建的Vue实例内部。详情可见 MVVM原理极其实现 。 Vue实例 1、实例声明周期钩子函数 8个声明周期函数 模板语法 1、插值 ①、 v-once 指令 ,你也能执行一次性地插值,当数据改变时,插值处的内容不会更新。 ②、可以使用js表达式但是不能使用语句和流控制(if判断语句) 1 {{ ok ? 'YES' : 'NO' }} 2 {{ message.split('').reverse().join('') }} 3 ​ 4 <!-- 这是语句,不是表达式 --> 5 {{ var a = 1 }} 6 <!-- 流控制也不会生效,请使用三元表达式 --> 7 {{ if (ok) { return message } }} 2、指令 ①、动态参数 -2.60新增 可以使用动态参数为一个动态的事件名绑定处理函数: 约束:为某些字符,如空格和引号,放在 HTML attribute 名里是无效的。会触发警告。 1 < a v-on:[eventName] =

OPNET使用问题汇总

让人想犯罪 __ 提交于 2020-10-09 00:13:55
OPNET使用问题汇总 ----<<< Recoverable Error >>> Object repository construction failed due to errors encountered by the binder program (bind_so_msvc) T (0), EV (-), MOD (NONE) ---- Errors reported by the binder program follow (these messages have been saved in (C:\Users\ZAQ\op_admin\tmp\bind_err_1468): D:\CommonSoftware\OPNET\14.5.A\models\std\manet\aodv_rte.opt64.i0.pr.obj : fatal error LNK1112:模块计算机类型“X86”与目标计算机类型“x64”冲突 ---- <<< Program Abort >>> Error encountered rebuilding repository – unable to proceed T (0), EV (-), MOD (NONE) 解决 :只需将仿真软件OPNET Modeler 14.5 (64-Bit)换成 OPNET Modeler 14.5 即可 ----