草庐IT

三,手写SpringMVC框架,第三次改进

1.解决跳转问题:添加一个login方法,跳转返回一个字符串。 中央控制器DispacherServlet调用EmpController,所以字符串返回给中央控制器。如下图所示:中央控制器帮我们统一的做资源的转发(forward/include)或重定向。1.1更新EmpController代码1.2更该DispatcherServlet代码        1.3演示效果:  现在XxxController已经算一个普通的POJO类了,但是还是和Servlet耦合,方法的参数中还有HttpServletRquest。 2删除XxxControler中各方法中的response 改动了跳转后,就

手写图表指南,你学会了吗?

1、前言说到数据可视化,大家应该都不陌生。它旨在借助于图形化手段,清晰有效的传达与沟通信息。广义的数据可视化涉及信息技术、自然科学、统计分析、图形学等多种学科。图例来源网络我们熟知的图形、图表以及地图等都属于数据可视化的范畴。今天我们主要讨论数据可视化中的图表,像柱状图、折线图、面积图、饼图、热力图都是使用频率非常高的图表。图例来源网络如果要在移动端绘制一个类似于下图,使用真实数据渲染的简单面积图表,我们应该如何实现它呢?相信大家脑子里应该都有各种方案了,那么接下来我们就来一步步实现它。2、技术选型需求图表样式定制化图表样式为我司设计师独立设计,最终实现效果应该做到100%还原设计细节;交互效

手写图表指南,你学会了吗?

1、前言说到数据可视化,大家应该都不陌生。它旨在借助于图形化手段,清晰有效的传达与沟通信息。广义的数据可视化涉及信息技术、自然科学、统计分析、图形学等多种学科。图例来源网络我们熟知的图形、图表以及地图等都属于数据可视化的范畴。今天我们主要讨论数据可视化中的图表,像柱状图、折线图、面积图、饼图、热力图都是使用频率非常高的图表。图例来源网络如果要在移动端绘制一个类似于下图,使用真实数据渲染的简单面积图表,我们应该如何实现它呢?相信大家脑子里应该都有各种方案了,那么接下来我们就来一步步实现它。2、技术选型需求图表样式定制化图表样式为我司设计师独立设计,最终实现效果应该做到100%还原设计细节;交互效

手写 instanceof

配图源自Freepik开始之前,先了解一些基本背景...一、前言我们知道,在ECMAScript标准中,当前数据类型分为两类(共8种):原始类型(Primitives):包含Undefined、Null、Boolean、String、Number、Symbol、BigInt共7种基本数据类型。引用类型(Objects):除原始类型之外,其余均属于引用类型,归为一大类,比如Object、Array、Map等内置方法及其实例对象。其中,原始值都是不可改变的,且不含任何属性或方法。平时看到类似的'string'.length写法,本质上是发生了隐式类型转换,先将'string'转换为Object('

手写 instanceof

配图源自Freepik开始之前,先了解一些基本背景...一、前言我们知道,在ECMAScript标准中,当前数据类型分为两类(共8种):原始类型(Primitives):包含Undefined、Null、Boolean、String、Number、Symbol、BigInt共7种基本数据类型。引用类型(Objects):除原始类型之外,其余均属于引用类型,归为一大类,比如Object、Array、Map等内置方法及其实例对象。其中,原始值都是不可改变的,且不含任何属性或方法。平时看到类似的'string'.length写法,本质上是发生了隐式类型转换,先将'string'转换为Object('

手写Android-Handler

Handler机制,是Android系统的消息队列,一般用于处理主线程的页面绘制等消息处理。前言Handler除了Java层外,还有Native的部分,但我能力有限,只能仿写一个Java层的Handler,并且支持延时消息。项目地址:MiniHandler注:由于消息机制需要使用一个while死循环来让线程不能结束,所以直接将MiniHandler在Android主线程中使用会卡住主线程,所以需要用一个子线程来运行MiniHandler,一般使用HandlerThread,对应到MiniHandler的MiniHandlerThread简单介绍延时消息功能:使用DelayQueue实现,它需要

手写Android-Handler

Handler机制,是Android系统的消息队列,一般用于处理主线程的页面绘制等消息处理。前言Handler除了Java层外,还有Native的部分,但我能力有限,只能仿写一个Java层的Handler,并且支持延时消息。项目地址:MiniHandler注:由于消息机制需要使用一个while死循环来让线程不能结束,所以直接将MiniHandler在Android主线程中使用会卡住主线程,所以需要用一个子线程来运行MiniHandler,一般使用HandlerThread,对应到MiniHandler的MiniHandlerThread简单介绍延时消息功能:使用DelayQueue实现,它需要

什么?还在傻傻地手写Parcelable实现?

缘起序列化已经是Android司空见惯的东西了,场景太多了。就拿Intent来说吧,extra能放的数据,除了基本类型外,就是序列化的数据了,有两种:Serializable:Java世界自带的序列化工具,大道至简,是一个无方法接口Parcelable:Android的官配序列化工具这二者在性能、用法乃至适用场景上均有不同,网上的讨论已经很多了,这里不再赘述。下面来看看官配正品怎么用的。Android的Parcelable首先看看官方示例:publicclassMyParcelableimplementsParcelable{privateintmData;publicintdescribeC

什么?还在傻傻地手写Parcelable实现?

缘起序列化已经是Android司空见惯的东西了,场景太多了。就拿Intent来说吧,extra能放的数据,除了基本类型外,就是序列化的数据了,有两种:Serializable:Java世界自带的序列化工具,大道至简,是一个无方法接口Parcelable:Android的官配序列化工具这二者在性能、用法乃至适用场景上均有不同,网上的讨论已经很多了,这里不再赘述。下面来看看官配正品怎么用的。Android的Parcelable首先看看官方示例:publicclassMyParcelableimplementsParcelable{privateintmData;publicintdescribeC

手写插件化

插件化技术也就是说用户只需安装宿主apk,其它业务模块打包成独立的插件apk动态下发,然后通过宿主app加载运行。其天然的就解决了部分包体积大小的问题,毕竟只需将核心业务模块打包到宿主app,随之附带的还有插件apk的热更新能力,通过网络可以随时下载更新插件apk,避免宿主APP的频繁发版。市面上的框架原理都差不多,构建插件apk路径的DexClassLoader,后续通过DexClassLoader加载插件类即可。普通类相对来说容易解决,加载即用。像四大组件比如Acitvity这种具有生命周期的组件则需要通过站桩方案转发生命周期,当然还有插件apk资源加载的问题。插件化是一个听起来很厉害、很