HTTP协议之缓存(三)
发表于 | 分类于 网络
广义上的缓存不仅仅是Web缓存,还包括了像数据库缓存,服务端缓存,浏览器缓存,应用缓存等。
我对于缓存的理解是,一份资源或数据,在他不改变的情况下,只有第一次的传输时有意义的。如果需要重新计算或发送一份完全相同的资源,会造成很大的浪费。
本文要谈到的缓存主要是与前端开发者息息相关的浏览器强缓存与协商缓存。
安卓基础之网络请求
前面提到的webview只能算作是安卓应用网络技术的一部分。作为客户端,安卓也可以向服务器发送HTTP请求,然后处理服务器返回的数据。年初花了一个多月的时间学习HTTP协议,现在主要整理安卓中网络请求的相关知识,主要还是与Web中的Ajax进行对比学习。
Android四大组件
Android 操作系统是一种多用户 Linux 系统,其中的每个应用都是一个不同的用户。就像学习前端开发需要了解浏览器BOM、DOM相关知识一下,学习Android也需要先看看Android系统为Android应用提供了什么能力。
本文将整理Android系统的四大组件。
安卓入门之WebView
过去的一年大大小小写了不少移动端项目(基本都是微信公众号),再加上之前跟Android的同学咨询过Hybird
开发,因此对于WebView
或多或少有一些了解。恰好最近的项目,需要跟移动端的同事协作处理一个分享页面,所以一并整理出来。
安卓入门之样式管理
前两天还在抱怨为啥安卓中写样式这么麻烦,今天才发现原来安卓中也是有样式表的,并且还十分规范!!像这样蒙着头一通乱学真是刺激啊。废话少说,赶紧理清安卓中样式表的使用方法,接下来整个布局就感觉没啥问题了。
Java基础入门
距离上一次写System.out.println("Hello World");
已经过去了很长一段时间了,然而学习安卓还是得掌握Java的基础知识,毕竟归根到底Android也只是一个框架而已,因此这里复(yu)习Java的基础知识,主要是通过对比PHP
及JavaScript
来进行整理。
安卓入门之视图与布局
想去了解一下React Native
和Weex
,转念一想我特么去学Native
干嘛?然后现在准备先学习安卓了,在折腾了相关的环境配置并成功跑完Hello World
之后,开始试着用前端的思维来理解和学习安卓。下面是关于安卓中样式布局的整理。
webpack折腾记(一)
gulp用了很长一段时间了,也挺顺手的,只是最近一直在用vue-cli
进行开发,被其各种方便的特性给惊呆了。然而归根结底就是gulp和webpack的比较,作为新一代的前端流程开发工具(现在也不新了),还是大概了解一下吧。
JavaScript模块管理机制
在之前的项目开发中一直使用RequireJS
进行模块化管理,在NodeJS
中使用的是CommonJS
规范的模块管理,在Vue-cli
中使用ESM
模块管理。恰好昨天面试题有一问提到他们之间的区别,之前并没有太深入这些知识,回答的不是很好,这里整理一下。
微信小程序之请求拦截器
初次接触到请求拦截器是在Vue-ReSource
中,后来使用axios
和restify
实现jwt
单页面应用用户验证的时候也用到了路由拦截器的功能。
在微信小程序中,官方只提供了最基本的wx.request
,现在打算对这个接口进行封装,在小程序中实现简单的路由拦截器。
微信小程序之自定义组件
小程序1.6.3之后已经支持自定义组件,本文已经过时,不建议继续阅读
微信小程序出了挺长一段时间了,但我对这个一直被人吹捧的框架没有半点感冒。出于工作需要写了一个商城demo,由于小程序暂时不支持自定义组件,相关的插件也很少,因此代码写的很烂(这完全是由于我的水平不够导致的)。
最近回过头整理了一下相关的开发文档,决定尝试实现小程序的自定义组件,也算是对最近学习Vue
的一点扩展(脑残粉/斜眼)。
实现一个简单的Promise
发表于 | 分类于 技术原理
回调函数在JavaScript中随处可见,在NodeJS中更是家常便饭,随着而来的就是回调地狱。
尽管早有耳闻,也知道Promise
是解决回调地狱的一种方法,却只是简单地了解几个API。
最近在看axios
的源码,发现拦截器interceptors
那里的实现也是基于Promise
的,加上阅读《你不知道的JavaScript(中卷)》的时候,书中花了一半的篇幅讲解Promise
,然而却一脸懵比。
现在 是时候弄清楚Promise
的真面目了。
JavaScript中的对象描述符与响应式数据
发表于 | 分类于 编程语言/JavaScript
自从接触Vue
以来,就对它的响应式数据原理十分好奇。文档中提到是使用Object.defineProperty
实现的,因此决定深入了解JavaScript中对象的一些特性。
history与单页面应用路由
在之前的BOM基础知识中提到了History对象,提供浏览器历史纪录相关的接口,可以通过window.history
对象来模拟工具栏的前进,后退和刷新。HTML5为history对象增加了几个新的方法,可以更灵活的操作历史记录。
二进制计算
发表于 | 分类于 数据结构和算法
虽然很早就接触了二进制,却一直没有正视这个问题,阅读《计算机科学导论》的时候,基本上是跳过了这一部分,总是以“这么基础的东西,反正工作中基本用不上”的理由给搪塞过去。
最近正在阅读《编码》和《程序员的数学思维修炼》,心想终究还是得面对的,于是记录了一点笔记,希望不再回避letcode上关于二进制计算的题目。
浏览器中的跨域
在工作中遇见的跨域问题也有好几次了,但却一直对浏览器的跨域没有很完整的认知。最近正重新学习JS基础知识,这些之前学习过程中遗留下来的问题现在一个一个解决掉吧。
HTTP协议之用户识别(四)
发表于 | 分类于 网络
HTTP协议是无状态的,这意味着每次的请求/响应都是独立进行的,也就是说服务器无法区分两次请求是否来自同一个用户(客户端)。
但是在Web网页和应用中,服务器可能同时与多个客户端进行对话,因此区分用户身份信息是很有必要的。
HTTP协议之报文(二)
发表于 | 分类于 网络
有一个经典的问题:在浏览器地址栏输入地址,然后回车,最后看见页面这个过程到底发生了什么?这个过程,用书面语来讲就是一个完整的__浏览器事务__。一个事务由一条请求命令(浏览器发往服务器)和一条响应结果(服务器发往浏览器)组成,而这种通信是通过__HTTP报文__进行的。学习HTTP,最基本的目标就是需要看懂HTTP报文。
HTTP协议之资源(一)
发表于 | 分类于 网络
Web资源是Web服务的基础,我们上网,归根到底就是为了获取资源;而整个互联网,就是为了将资源从一个地方传递到另一个地方。这里整理了资源类型,资源路径和动态资源网关这三个部分知识。
浏览器解析HTML的流程
很早之前就对浏览器加载整个HTML文档以及相关的解析和渲染流程十分好奇,但是却一直没有深入。
本文将整理浏览器加载和HTML中的一些细节问题。