19-Vuex
# 1. 什么是Vuex **Vuex**是一个专为**Vue.js**应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。 其实最简单理解为,在我们写Vue组件中,一个页面多个组件之间想要通信数据,那你可以使用**Vuex** - Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式 - Vuex状态管理 === 管理组件数据流动 === 全局数据管理 - Vue的全局数据池,在这里它存放着大量的复用或者公有的数据,然后可以分发给组件 - Vue双向数据绑定的MV框架,数据驱动(区别节点驱动),模块化和组件化,所以管理各组件和模块之间数据的流向至关重要 - Vuex是一个前端非持久化的数据库中心,Vuex其实是Vue的重要选配,一般小型不怎么用,大型项目运用比较多,所以页面刷新,Vuex数据池会重置 - > 路由-》管理的是组件流动 > Vuex-》管理的是数据流动 没有`Vuex`之前,组件数据来源 - ajax请求后端 - 组件自身定义默认数据 - 继承其他组件的数据 - (从v...
18-Promise
1. 什么是Promies简单说Promise是异步编程的一种解决方案。 Promise是ES6中的特性。 什么是异步操作? 网络请求中,对端服务器处理需要时间,信息传递过程需要时间,不像我们本地调用一个js加法函数一样,直接获得1+1=2的结果。这里网络请求不是同步的有时延,不能立即得到结果。 如何处理异步事件? 对于网络请求这种,一般会使用回调函数,在服务端传给我数据成功后,调用回调函数。例如ajax调用。 12345$.ajax({ success:function(){ ... }}) 如果碰到嵌套网络请求,例如第一次网络请求成功后回调函数再次发送网络请求,这种代码就会让人很难受。 1234567$.ajax({ success:function(){ $.ajax({ ... }) }}) 如果还需要再次网络请求,那么又要嵌套一层,这样的代码层次不分明很难读,也容易出问题。 2. Promise的基本使用2.1 什么时候使用Promi...
20-Axios的封装
1. Axios简介1.1 什么是AxiosAxios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。 1.2 特性 浏览器端发起XMLHttpRequests请求 node端发起http请求 支持Promise API 监听请求和返回 转化请求和返回 取消请求 自动转化json数据 客户端支持抵御 2. Axios的使用和配置2.1 安装1npm install axios --save 或者使用cdn 1<script src="https://unpkg.com/axios/dist/axios.min.js"></script> 2.2 基本使用2.2.1 Get请求123456789axios.get('/user', { params: { name: 'krislin' }}).then(function (response) { console.log(response);...
综合练习-实现Tab-Bar
1. 实现Tab-Bar思路 下方单独的Tab-Bar组件如何封装? 自定义Tab-Bar组件,在APP中使用 让Tab-Bar位置在底部,并设置你需要的样式 Tab-Bar中显示的内容由外部决定 定义插槽 flex布局平分Tab-Bar 自定义Tab-Bar-Item,可以传入图片和文字 定义Tab-Bar-Item,并定义两个插槽:图片和文字 给插槽外层包装div,设置样式 填充插槽,实现底部Tab-Bar的效果 传入高亮图片 定义另一个插槽,插入active-icon的数据 定义一个变量isActicve,通过v-show来决定是否显示对应的icon Tab-Bar-Item绑定路由数据 安装路由:npm install vue-router --save 在router/index.js配置路由信息,并创建对应的组件 main.js中注册router App.vue中使用router-link和router-view 点击item跳转到对应的路由,并且动态决定isActive 监听item的点击,通过this.$router.replace()替换路...
02 核心组件
参考文献https://www.jianshu.com/p/b9f3f6a16911https://blog.csdn.net/weixin_53142722/article/details/124942857https://blog.csdn.net/qq_39339965/article/details/122344873https://www.cnblogs.com/lbhym/p/12753314.htmlhttps://zhuanlan.zhihu.com/p/514448867 为什么这样排版因为这是bootstrap创建的步骤EventLoop/EventLoopGroupChannelChannelFuture sync/addlistenerHandlerPipeline/PipelineGroup 0 HelloWorld引入依赖12345<dependency> <groupId>io.netty</groupId> <artifactId>netty-all&...
03 网络通信
服务器1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950package com.example.netty.io; import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.ChannelFuture;import io.netty.channel.ChannelInitializer;import io.netty.channel.ChannelOption;import io.netty.channel.EventLoopGroup;import io.netty.channel.nio.NioEventLoopGroup;import io.netty.channel.socket.SocketChannel;import io.netty.channel.socket.nio.NioServerSocketChannel; /** * netty 服务端 * * @au...
01 Netty简介
概述是什么Netty 是一个利用 Java 的高级网络的能力,隐藏其背后的复杂性而提供一个易于使用的 API 的客户端/服务器框架。 Netty和Tomcat最大的区别就在于通信协议,Tomcat是基于Http协议的Servlet容器,他的实质是一个基于http协议的web容器,但是Netty不一样,他能通过编程自定义各种协议,因为netty能够通过codec自己来编码/解码字节流,完成类似redis访问的功能,这就是netty和tomcat最大的不同。 对比Netty vs NIO,工作量大,bug 多 需要自己构建协议 解决 TCP 传输问题,如粘包、半包 epoll 空轮询导致 CPU 100% 对 API 进行增强,使之更易用,如 FastThreadLocal => ThreadLocal,ByteBuf => ByteBufferNetty更友好更强大:1、JDK中NIO的一些API功能薄弱且复杂,Netty隔离了JDK中NIO的实现变化及实现细节譬如:ByteBuffer -> ByteBuf主要负...
04 Reactor与Netty
Reactor与NettyReactor概念Reactor模型中定义了三种角色: Reactor:负责监听和分配事件,将I/O事件分派给对应的Handler。新的时间包含连接建立就绪、读就绪、写就绪等。 Acceptor:处理客户端新连接,并分派请求到处理器链中。 Handler:将自身与事件绑定,执行费阻塞读/写人物,完成channel的读入,完成处理业务逻辑后,负责将结果写出channel。 单Reactor - 单线程模型NIO下Reactor单线程,所有的接受连接,处理数据的相关操作都在一个线程中完成,性能上有瓶颈。 单Reactor - 多线程模型把比较消耗时的数据的编解码运算操作放入线程池中执行,虽然提升了性能但是还不是最好的方式。 主从Reactor - 多线程主从多线程,对于服务器来说,接收客户端的连接是比较重要的,因此将这部分操作单独用线程去操作。 这种模式的基本工作流程为: Reactor主线程MainReactor对象通过select监听客户端连接事件,收到事件后,通过Acceptor处理客户端连接事件。 当Acceptor处...
附录4 多种编程模式
多种编程模式的总结 面向对象,包括匿名对象 函数式编程 流式编程
01 Java 标准IO
Java 标准IO Java 标准IO 1 概览 IO定义 虚拟内存 IO的分类 装饰者模式 2 字节操作 InputStream OutputStream 3 字符操作 编码与解码 String 的编码方式 字节字符流转换Reader 与 Writer 实现逐行输出文本文件的内容 Reader Writer 参考文献 1 概览 本篇文章的范围应该是涵盖java.io包中的所有类。 IO定义 该理解方式非常有价值。为什么IO的同步和异步如此重要?因为IO操作是整个调用链路上的性能瓶颈。普通的A函数调用B函数,为什么不采用异步操作呢,因为函数都是计算任务,都在内存完成。所以所有的操作都可以分为两种:计算操作(非IO操作,内存中即可完成)和IO操作(从其他设备中读取、写入数据)。计算操作是使用CPU的,IO操作过程中CPU线程是挂起的,等待中。函数、调用可以分为两种,正常调用和IO调用。 缓冲区以及如何处理缓冲区是所有I / O的基础。 术语“输入/输出”仅意味着将数据移入和移出缓冲区。 只要时刻牢记这一点即可。 通常,进程通过请求操作...













