续接前文 手写SpringMVC框架(二)结构开发设计 本节我们来开始具体方法的代码实现. doLoadConfig()方法的开发 思路:我们需要将contextConfigLocation路径读取过来的配置文件springmvc.properties加载到内存中来. 实现:使用properties及类加载器. 代码如下: import java.io.InputStream; import java.util.Properties; private Properties properties=…
我们从两个方面了解springmvc执行原理,首先我们去熟悉springmvc执行的过程,然后知道原理后通过手写springmvc去深入了解代码中执行过程. (一)SpringMVC流程图 (二)SpringMVC流程 1.  用户发送请求至前端控制器DispatcherServlet. 2.  DispatcherServlet收到请求调用HandlerMapping处理器映射器. 3.  处理器映射器找到具体的处理器(可以根据xml配置.注解进行查找),生成处理器对象及处理器拦截器(如果有则…
手写SpringMVC框架 细嗅蔷薇 心有猛虎 背景:Spring 想必大家都听说过,可能现在更多流行的是Spring Boot 和Spring Cloud 框架:但是SpringMVC 作为一款实现了MVC 设计模式的web (表现层) 层框架,其高开发效率和高性能也是现在很多公司仍在采用的框架:除此之外,Spring 源码大师级的代码规范和设计思想都十分值得学习:退一步说,Spring Boot 框架底层也有很多Spring 的东西,而且面试的时候还会经常被问到SpringMVC 原理,一般…
续接前文, 手写SpringMVC框架(一)项目搭建 本节我们来开始手写SpringMVC框架的第二阶段:结构开发设计. 新建一个空的springmvc.properties, 里面写我们要扫描的包名,之后这里面我们需要些一些配置信息,比如扫描的包路径等等. scanPackage=com.lagou.edu 在web.xml中配置此文件: <servlet> <servlet-name>lgmvc</servlet-name> <servlet-class>…
SpringMVC处理请求的大致流程: 我们来开始着手手写一个SpringMVC框架. 新建一个springMVC项目,流程参见 SpringMVC框架搭建流程 引入servlet相关的jar包: <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version>…
8. 过滤器 8.1 编写字符过滤器 CharacterEncodingFilter 复制项目mymvc4,新建项目mymvc5 package com.hy.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletExceptio…
闲话不多说,直接上代码! 1.第一步,首先搭建如下架构,其中,annotation中放置自己编写的注解,主要包括service controller qualifier RequestMapping 第二步:完成对应的annotation: package com.chaoyue.annotation; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang…
1.1 新建DispatcherServlet 1.2 在src目录下,新建applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans id="b1"><bean id="emp" class="xxx.controller.EmpController"/><bean id="d…
http://www.toutiao.com/a6340568603607171329/?tt_from=mobile_qq&utm_campaign=client_share&app=explore_article&utm_source=mobile_qq&iid=5840657922&utm_medium=toutiao_ios 其他: https://blog.csdn.net/tianyaleixiaowu/article/details/74002408…
手写SpringMVC思路 1.web.xml加载  为了读取web.xml中的配置,我们用到ServletConfig这个类,它代表当前Servlet在web.xml中的配置信息.通过web.xml中加载我们自己写的MyDispatcherServlet和读取配置文件. 2.初始化阶段   在前面我们提到DispatcherServlet的initStrategies方法会初始化9大组件,但是这里将实现一些SpringMVC的最基本的组件而不是全部,按顺序包括: 加载配置文件 扫描用户配置包下…
-------前篇:手写DAO框架(二)-开发前的最后准备--------- 前言 上一篇主要是温习了一下基础知识,然后将整个项目按照模块进行了划分.因为是个人项目,一个人开发,本人采用了自底向上的开发. 本篇会介绍连接层的代码,包括三部分:pom配置.数据库连接和数据库连接池. pom配置 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSc…
一.背景 书接手写MQ框架(二)-服务端实现  ,前面介绍了服务端的实现.但是具体使用框架过程中,用户肯定是以客户端的形式跟服务端打交道的.客户端的好坏直接影响了框架使用的便利性. 虽然框架目前是通过web的形式提供功能的,但是某的目标其实是通过socket实现,所以不仅需要有客户端,还要包装一下,让用户在使用过程中不需要关心服务端是如何实现的. 简单来说,就是客户端使用必须方便. 二.客户端实现 1.HttpUtil 目前客户端的核心功能是HttpUtil这个类,使用httpClient实现的…
背景 前段时间把之前写的DAO框架(手写DAO框架(一)-从“1”开始)整理了一下,重构了一版.整理过程中看以前写的代码,只是为了了解实现,只是为了实现,代码写的有点粗糙.既然已经整理了DAO框架,索性继续整理一下MVC框架(https://github.com/shuimutong/zxmvc.git),所谓温故知新也. 一.关于Servlet 1.简介 学习web的时候,一般都是先学Servlet 通过Servlet可以接受到http请求,并进行响应 这个时候,是不需要struts.Spri…
一.背景 很久以前写了DAO框架和MVC框架,前段时间又重写了DAO框架-GDAO(手写DAO框架(一)-从“1”开始,源码:https://github.com/shuimutong/gdao.git)和MVC框架-GMVC(手写MVC框架(一)-再出发,源码:https://gitee.com/simpleha/gmvc.git). 之前也尝试过写RPC框架(源码:https://github.com/shuimutong/grpc_beta.git),客户端.服务端的方法调用写完了,但是网…
1.测试页面; <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>手写jQuery框架</title> <style type="text/css"> *{margin: 0px;padding: 0px;font-family: "微软雅黑";} .bo…
-------前篇:手写DAO框架(一)-从“1”开始 --------- 前言:前篇主要介绍了写此框架的动机,把主要功能点大致介绍了一下.此篇文章主要介绍开发前最后的一些准备.主要包括一些基础知识点,和模块的拆分. 话说磨刀不误砍材工,知其然,还要只其所以然.因为很久没有学习相关的知识了,为了避免一些明显错误,所以先把相关基础知识了解一下. (因个人水平有限,如有纰漏,还请指出) 基础知识点 一.Statement和PrepareStatement 1.PrepareStatement a.预…
-------前篇:手写DAO框架(三)-数据库连接--------- 前言 通过上一篇写的方法,可以灵活的获取.释放数据库连接,拿到连接之后,我们就可以执行sql了!所以,本篇介绍的就是SQL执行器. SQL执行器主要功能就是执行sql,返回结果.如新增.更新.删除.查询,其中也涉及到了事务的开启.关闭.回滚. 这一层的定位是为接下来的DAO层提供底层支持,同时也支持自行编写SQL进行直接调用. 涉及技术 本篇主要涉及技术有:泛型.匿名内部类. 泛型 说到泛型,先简单的对比一下python和j…
1.Mybatis组成 动态SQL Config配置 Mapper配置 2.核心源码分析 Configuration源码解析 SqlSessionFactory源码解析 SqlSession源码解析 SqlSessionManager源码解析 3.手写Mybatis框架 Mybatis是什么? Mybatis是一种半自动ORM框架,前身是iBatis,源于“Internet”和“abatis”的组合,除了POJO和映射关系之外,还需要编写SQL语句:   Mybatis映射三要素: POJO 映…
--------上一篇:手写MVC框架(一)-再出发----- 背景 书接上文,之前整理了实现MVC框架需要写哪些东西.这周粗看了一下,感觉也没多少工作量,所以就计划一天时间来完成.周末的时间,哪会那么老实的坐在电脑前写代码呢?看电影的时候应该是老实的.为了不给自己留遗憾,所以今天就接着写了,然后就写完了. 一.主要代码结构 . ├── annotation │ ├── XAutowired.java //用于依赖注入 │ ├── XComponent.java //资源管理 │ ├── XCo…
版权声明:本文为博客园博主「水木桶」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明.原文链接:https://www.cnblogs.com/shuimutong/p/11408219.html 背景 手写DAO框架系列前后更新了5篇文章,外加1篇使用示例,GDAO框架至此已经初具雏形,简单的使用不成问题.接下来就是对框架进行不断的优化. 顺便说一下性能 手写DAO框架(六)-后续之框架使用示例 此篇文章对GDAO的性能较少提及,这里就简单的记载一下,后续有机会…
一.起航 书接上文->手写MQ框架(一)-准备启程 本着从无到有,从有到优的原则,所以计划先通过web实现功能,然后再优化改写为socket的形式. 1.关于技术选型 web框架使用了之前写的gmvc框架(手写MVC框架(一)-再出发),消息存储采用存在数据库的方式,使用的框架也是前段时间写的gdao(手写DAO框架(一)-从“1”开始 ). 2.项目搭建 项目本来是单项目的形式,但是考虑到将服务端.客户端分开不是很友好,所以采用了maven父子模块的形式. 其中,父pom配置如下: <?xm…
一.背景 书接上文手写MQ框架(三)-客户端实现,前面通过web的形式实现了mq的服务端和客户端,现在计划使用netty来改造一下.前段时间学习了一下netty的使用(https://www.w3cschool.cn/netty4userguide/52ki1iey.html).大概有一些想法. netty封装了socket的使用,我们通过简单的调用即可构建高性能的网络应用.我计划采用以下例子来对gmq进行改造. 本文主要参考:https://www.w3cschool.cn/netty4use…
作者:小傅哥 博客:https://bugstack.cn - 原创系列专题文章 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 同龄人的差距是从什么时候拉开的 同样的幼儿园.同样的小学.一样的书本.一样的课堂,有人学习好.有人学习差.不只是上学,几乎人生处处都是赛道,发令枪响起的时刻,也就把人生的差距拉开.编程开发这条路也是很长很宽,有人跑得快有人跑得慢.那么你是否想起过,这一点点的差距到遥不可及的距离,是从哪一天开始的.摸摸肚子的肉,看看远处的路,别人讲的是故事,你想起的都是事故.…
核心解读 AOP:Aspect Oriented Programming,面向切面编程 核心1:将公共的,通用的,重复的代码单独开发,在需要时反织回去 核心2:面向接口编程,即设置接口类型的变量,传入接口类型的参数,返回接口类型的返回值,调用接口类型的变量自身的实现方法 图示 图示分析:例如,在开发中普遍需要使用到日志输出功能,会将日志输出功能大量耦合到项目的不同位置,如上图左侧所示. 而日志输出功能与其实与项目本身的核心业务逻辑无关,我们只是为了不时的查看项目的运行状态. 则可以将日志功能单独…
opencv 手写选择题阅卷 (三)训练分类器 1,分类器选择:SVM 本来一开始用的KNN分类器,但这个分类器目前没有实现保存训练数据的功能,所以选择了SVN分类器; 2,样本图像的预处理和特征提取代码与识别代码中使用一样的代码. 3,训练时的输入数据主要为两个矩阵,一个矩阵保存所有样本的特征数据,每一行一个图像,另一个矩阵保存每个样本所属的类别,比如 1.0代表A,2.0代表B,0代表空白. 4,所有样本分别保存在5个文件夹中(一个是空白,四个字母ABCD),用批处理生成一个文本文件包括所有…
背景: 很久(4年)之前写了一个DAO框架-zxdata(https://github.com/shuimutong/zxdata),这是我写的第一个框架.因为没有使用文档,我现在如果要用的话,得从头看代码,不是太实用.zxdata没有使用连接池,所以练手意义大于使用意义.最近想重写一个DAO框架,希望能够方便的使用,在性能方面也有好的表现. -----分割------- 工作了这么多年,重写DAO框架,发现框架不太容易写: 首先,使用得简单.不能让使用者仅仅使用一个框架,得先把框架代码看一遍才…
TensorFlow 入门之手写识别CNN 三 MNIST 卷积神经网络 Fly 多层卷积网络 多层卷积网络的基本理论 构建一个多层卷积网络 权值初始化 卷积和池化 第一层卷积 第二层卷积 密集层连接 Dropout 输出层 训练和评估模型 多层卷积网络 多层卷积网络的基本理论 卷积神经网络(Convolutional Neural Network,CNN) 是一种前馈神经网络, 它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现.它包括卷积层(alternating…
Angular8正式发布了,Java13再过几个月也要发布了,技术迭代这么快,框架的复杂度越来越大,但是原理是基本不变的.所以沉下心看清代码本质很重要,这次给大家带来的是手写RPC框架. 完整代码以及说明文档,点我跳跃~ 1. 什么是RPC? RPC是指远程过程调用,也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据. RPC框架有很多,比较知名的如阿里的Dubbo.goog…
在我们的日常工作中,经常会用到Spring.Spring Boot.Spring Cloud.Struts.Mybatis.Hibernate等开源框架,有了这些框架的诞生,平时的开发工作量也是变得越来越轻松,我们用 Spring Boot 分分钟可以新建一个Web项目. 记得自己刚开始工作的时候还是在用Servlet写Web项目,自己写数据库连接池,用原生JDBC操作数据库,好了不发散了.回到这篇文章的主题,今天通过手写Spring框架,帮大家深入了解一下Spring的工作机制,文中涉及的代码…
-------前篇:手写DAO框架(四)-SQL执行--------- 前言 通过上一篇,可以通过传入sql和对应的参数,可以执行sql并返回结果.但是对于一个DAO框架来说,要尽量的面向对象编程,也就是要实现ORM功能.所以本篇主要介绍DAO层的实现,主要是实现ORM. 主要涉及技术 反射 反射 Class<T> entityClass = (Class<T>) ((ParameterizedType)this.getClass().getGenericSuperclass())…