2020-09-30Java web 技术与架构演进历史梳理 Java web 相关的技术与架构演进历史,附带可运行 demo,以期从历史发展角度看到各个技术点产生的背景与目的,加深对服务端技术栈的了解。各小节按时间先后顺序排列。 Servlet○ Servlet 技术诞生用于使 web 服务器能够提供静态资源之外的动态内容,是扩展了 Web 服务器能力的 Java 软件组件。○ Servlet 的运行依赖于 Servlet 容器(如 Tomca...阅读全文…
2020-08-05进程、线程、纤程、协程基本概念◇ 进程是应用程序启动的实例,拥有自己的代码段、内存空间、所打开文件等系统资源。◇ 线程从属于进程,是程序的实际执行者,拥有自己的执行栈空间、程序计数器、寄存器状态,这些常被称为”线程上下文”,其余进程资源是进程内所有线程共享的。◇ 进程是资源分配的最小单位,线程是 CPU 调度的最小单位。◇ CPU 调度线程时涉及到线程上下文的保存与恢复,上下文信息存储在系统内核的”线程控制块(T...阅读全文…
2020-06-13二进制浮点数的存储:IEEE-754数字的二进制表示●数字的二进制表示数字13.125示例如下图,规则如下:(1)整数部分不断除以2记录余数直到商为0,将余数逆序排列作为结果;(2)小数部分不断乘以2记录去掉整数部分直到乘积小数部分结果为0,将整数部分正序排列作为结果; IEEE-754的64位浮点数●JavaScript默认采用IEEE-754的64位浮点格式存储数字;●IEEE-754的64位浮点数存储方式...阅读全文…
2020-06-12从0.1+0.2不等于0.3想到的二进制无法精确存储0.1♂十进制下一个简单的小数0.1,在二进制下却变成无限循环小数0.0 0011 0011 0011…进而无法精确的存储,是不是说明二进制有缺陷?♂答案是否定的:(1)小数分为有限小数、无限循环小数、无限不循环小数,其中有限小数和无限循环小数都可以转换成有理数范围内的分数形式,十进制下的0.1也就是分数1/10;(2)无论用多少进制表示小数,小数的值都是通过∑m...阅读全文…
2020-05-07webpack项目优雅使用ServiceWorker简介●此处将“优雅”的含义定义为两个方面:(1)应用webpack生态简化ServiceWorker的配置;(2)ServiceWorker的开关控制与相关库的按需加载;●第一方面具体是offline-plugin插件的应用;●第二方面是动态获取前端配置与webpack的Code Spliting机制的应用; offline-plugin插件的应用○webpack生态提供了offline-p...阅读全文…
2020-02-17微服务基本理解简介◇微服务是一种架构风格,由Martin Fowler与James Lewis于2014年提出;◇微服务方式是使用一套小服务来开发单个应用,每个服务运行在自己的进程中(每个服务可看作一个小的应用),并使用轻量级机制通信,通常是HTTP API,这些服务能够通过独立的自动化部署,可以分别使用不同的编程语言实现,以及不同数据存储技术,并保持最低限度的集中式管理;◇微服务理念:有效拆分服务,提供...阅读全文…
2020-02-04配置公司GitLab和个人GitHub使用不同的Name和Email◇Git v2.13及之后的版本支持条件配置include(conditional configuration includes),首先进行必要的git版本升级;◇配置全局默认的name和email为公司的Name和Email,使用如下命令: 12git config set --global user.name yuancongzhougit config set --global use...阅读全文…
2019-11-26webpack项目自动代码检查与格式化的实现当前解决方案● 使用 editorconfig 控制书写代码期间的基本风格统一。● 使用 eslint 做代码语法检查,实现代码质量控制。● 使用 prettier 做代码格式化,实现统一风格。● git commit 之前执行自动修复,无法自动修复的地方手动修改。 ps: 由于 eslint 也包含了代码格式化功能,所以 prettier 仅做非 js 类代码(js/ts...阅读全文…
2019-11-05浏览器组成与JS运行时环境从浏览器组成到 JS 运行时环境◆ 浏览器组成相关内容整理到了这篇浏览器中的进程与线程。◆ 浏览器内核实例中的以下几项内容被称为“JS 运行时环境(JS Runtime Environment)”:(1)JS 引擎。(2)事件循环(Event Loop)。(3)任务队列(Task Queue)。(4)Web/DOM API,包括如 setTimeout 等定时器函数、Ajax 等网...阅读全文…
2019-08-14React Native工程增加Expo支持行动前的考虑◆原有的React Native工程是在Windows下安装完Android开发环境后使用命令”react-native init”生成的,看到存储Android SDK所需的30G+的硬盘和Android模拟器运行所需的8G+内存预算,想在自己的便携机上搞一套相同环境负担实在太重; ◆看到Expo时被其简练的开发流程所吸引,而环境轻量太多了,也同样支持代码修改保存后自动刷新内容...阅读全文…