native和web适合的场景

  1. Native
  2. 用户体验要求高
  3. 业务变动很小(如首页)
  4. 性能要求高
  5.  
  6. Web
  7. 业务变化频繁(如广告)
  8. 性能要求低
  9. 展示性内容

hybrid App其实会有不同的分支

  1. 方案一:使用PhoneGapAppCan之类的中间件
  2. WebView作为用户界面层,
  3. Javascript作为基本逻辑,以及和中间件通讯,
  4. 再由中间件访问底层API的方式,进行应用开发。
  5. 这种架构一般会非常依赖WebView层的性能。
  6.  
  7. 方案二:使用Adobe AirRubyMotionAppcelerator或者是Xamarin这种非官方语言的工具,打包成原生应用的方式开发。
  8. 它们并没有很单纯地使用原生提供的语言进行开发,而是通过对开发者提供友好的开发工具,并折中地把这种开发语言转换成原生语言,最终打包出整个应用。
  9.  
  10. 方案三:在开发原生应用的基础上,嵌入WebView
  11. 但是整体的架构使用原生应用提供,Native开发人员会写好基本的架构以及APIWeb开发人员开发界面以及大部分的渲染。
  1. View混合型:
  2.   Native ViewWeb View独立展示,交替出现
  3.  
  4. View混合型:
  5.   即在同一个View内,同时包括Native ViewWeb View
  1. Android手机中

  2. 内置了一款高性能webkit内核浏览器,在SDK中封装为一个叫做WebView组件。
  3.  
  4. 1.AndroidManifest.xml中必须使用许可"android.permission.INTERNET",否则会出Web page not available错误。
  5.  
  6. 2.如果访问的页面中有Javascript,则webview必须设置支持Javascript
  7. webview.getSettings().setJavaScriptEnabled(true);
  8.  
  9. 3.如果页面中链接,如果希望点击链接继续在当前browser中响应,而不是新开Android的系统browser中响应该链接,必须覆盖 webviewWebViewClient对象。
  10.  
  11. 4.如果不做任何处理,浏览网页,点击系统“Back”键,整个Browser会调用finish()而结束自身,
    如果希望浏览的网页回退而不是退出浏览器,需要在当前Activity中处理并消费掉该Back事件。
  12.  
  13. 5.addJavascriptInterface(Object obj,String interfaceName)这个方法,
    webview加载的页面中就可以直接通过 javascript:window. interfaceName访问到绑定的java对象了。
  1. 1)为了让WebViewapk文件中加载assetsAndroid SDK提供了一个schema,前缀为"file:///android_asset/"WebView遇到这样的schema,就去当前包中的 assets目录中找内容。
  2.  
  3. 2)addJavascriptInterface方法中要绑定的Java对象及方法要运行另外的线程中,不能运行在构造他的线程中,这也是使用 Handler的目的。
  1. mWebView.addJavascriptInterface(new Object() {
  2. public void clickOnAndroid() {
  3. mHandler.post(new Runnable() {
  4. public void run() {
  5. mWebView.loadUrl("javascript:wave()");
  6. }
  7. });
  8. }
  9. }, "demo");
  10.  
  11. <html>
  12. <mce:script language="javascript"><!--
  13. function wave() {
  14. document.getElementById("droid").src="android_waving.png";
  15. }
  16.       // --></mce:script>
  17. <body>
  18. <a onClick="window.demo.clickOnAndroid()">
  19. <img id="droid" src="android_normal.png" mce_src="android_normal.png"/><br>
  20. Click me!
  21. </a>
  22. </body>
  23. </html>

TCP协议

  1. TCP 使用固定的连接

  2. 当应用程序通过 TCP 与另一个应用程序通信时,它会发送一个通信请求。
  3. 这个请求必须被送到一个确切的地址。
  4. 在双方“握手”之后,TCP 将在两个应用程序之间建立一个全双工 (full-duplex) 的通信,将占用两个计算机之间的通信线路,直到它被一方或双方关闭为止。
  1. TCP/IP 意味着 TCP IP 在一起协同工作。
  2.  
  3. TCP
  4. 负责应用软件和网络软件之间的通信。
  5. 负责将数据分割并装入 IP 包,然后在它们到达的时候重新组合它们。
  6. IP
  7. 负责计算机之间的通信。
  8. 负责将包发送至接受者。
  1. 三次握手(Three-Way Handshake)即建立TCP连接,
  2. 就是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。
  3. socket编程中,这一过程由客户端执行connect来触发
  4.  
  5. TCP四次挥手即终止TCP连接,就是指断开一个TCP连接,
  6. 需要客户端和服务端总共发送4个包以确认连接的断开。
  7. socket编程中,这一过程由客户端或服务端任一方执行close来触发

 关闭连接时,当服务端收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,

 己方也未必全部数据都发送给对方了,所以己方可以立即close,

也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会分开发送。

hybrid几种模式的更多相关文章

  1. oidc hybrid flow 与另外两种模式的异同

    很多学习identityserver的文章都没有解释清楚oidc hybrid混合模式的含义.本文将解释hybrid模式与另外两种模式的主要区别. 我们先看一下一手文档: https://openid ...

  2. App开发三种模式

    APP开发三种模式 现在App开发的模式包含以下三种: Native App 原生开发AppWeb App 网页AppHybrid App 混合原生和Web技术开发的App 详细介绍: http:// ...

  3. Hybrid App—Hybrid App开发模式介绍和各种开发模式对比

    什么是Hybrid App 最开的App开发只有原生开发这个概念,但自从H5广泛流行后,一种效率更高的开发模式Hybrid应运而生,它就是"Hybrid模式".Hybrid APP ...

  4. Hybrid App 开发模式

    开发移动App主要有三种模式:Native. Hybrid 和 Web App. 需要注意的一点是在选择开发模式的时候,要根据你的项目类型(图片类?视频类?新闻类?等),产品业务和人员技术储备等做权衡 ...

  5. APP开发的三种模式

    Hybrid APP混合开发的一些经验和总结 APP开发的三种模式:Native App .web App.hybrid App 1.原生app 使用原生app (android或iOS)开发APP. ...

  6. 网络工程知识(二)VLAN的基础和配置:802.1q帧;Access、Trunk、Hybrid接口工作模式过程与配置;VLANIF的小实验

    介绍-VLAN VLAN(Virtual Local Area Network)即虚拟局域网,工作在数据链路层. 交换机将通过:接口.MAC.基于子网.协议划分(IPv4和IPv6).基于策略的方式划 ...

  7. javascript 创建对象的7种模式

    使用字面量方式创建一个 student 对象: var student = function (){ name : "redjoy", age : 21, sex: women, ...

  8. javascript面向对象系列第二篇——创建对象的5种模式

    × 目录 [1]字面量 [2]工厂模式 [3]构造函数[4]原型模式[5]组合模式 前面的话 如何创建对象,或者说如何更优雅的创建对象,一直是一个津津乐道的话题.本文将从最简单的创建对象的方式入手,逐 ...

  9. javascript创建对象的几种模式

    在js中有几种模式可以创建对象,通过对象操作所包含的属性与方法. 一般来说,构造函数名称的第一个字母为大写字母,非构造函数名称的第一个字母为小写字母,当然,构造函数与一般函数唯一的区别只是调用的方式不 ...

随机推荐

  1. 最常出现的字符串 Most Common Word

    2018-10-26 00:32:05 问题描述: 问题求解: 方法一.Trie 最长出现的字符串,最容易想到的解法就是Trie树了,于是首先使用Trie树进行了实现,代码量有点大,当然了是可以A掉的 ...

  2. RabbitMQ消息发布时的权衡

    在进行本篇文章的学习之前,你需要先阅读 https://www.cnblogs.com/duanjt/p/10057330.html.以便对Java访问RabbitMQ的基础用法有所了解. 一.失败通 ...

  3. Server SQL Modes

    The MySQL server can operate in different SQL modes, and can apply these modes differently for diffe ...

  4. Aliyun cdn访问日志下载

    1.日志下载代码(cdn.py)(请在Linux系统下运行) #!/usr/bin/python2.7 # -*- coding:utf-8 -*- import sys,os,gzip,json,r ...

  5. BFS、DFS、先序、中序、后序遍历的非递归算法(java)

    一 广度优先遍历(BFS) //广度优先遍历二叉树,借助队列,queue public static void bfs(TreeNode root){ Queue<TreeNode> qu ...

  6. 20165309 实验三 敏捷开发与XP实践

    2017-2018-2 20165309实验三<Java面向对象程序设计>实验报告 一.实验内容 1. XP基础 2. XP核心实践 3. 相关工具 二.实验步骤 (一)代码规范 1.在I ...

  7. spring boot(一)入门

    什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员 ...

  8. C++的面试题

    1.什么是类? 类是具有相同属性和相同的方法的对象的集合,它是一种既包含数据又包含函数的抽象数据类型. 对象是类进行实体化后的产物,是一个实体. 在C++中也是先声明一个类类型,用类去定义若干个同类型 ...

  9. PAT 1023 Have Fun with Numbers

    1023 Have Fun with Numbers (20 分)   Notice that the number 123456789 is a 9-digit number consisting ...

  10. PostgreSQL进程和内存结构

    PostgreSQL数据库启动时,会先启动一个叫做Postmaster的主进程,还会fork一些辅助子进程,这些辅助子进程各自负责一部分功能,辅助子进程分类如下: $ ps -ef | grep po ...