源码

SSM源码分析之Spring07-手写SpringV1.0

我是研究僧i 提交于 2020-01-12 19:25:57
目录导航 前言 手写SpringV1.0 准备工作 DispatchServlet实现Bean的定位、加载、注册 自定义注解 测试 后记 前言 《SSM源码分析之Spring05-DI实现原理(基于Annotation 注入)》 《SSM源码分析之Spring06-IOC 容器中那些鲜为人知的事儿》 前面的章节我们主要看了一下在spring源码是如何设计管理bean的。这节我们用简单的几个类实现一个核心的IOC功能~ 手写SpringV1.0 准备工作 我们首先整理一下思路: 然后,创建一个maven项目,最后的项目结构如下: pom.xml引入servlet依赖: < properties > <!-- dependency versions --> < servlet.api.version > 2.4 </ servlet.api.version > </ properties > < dependencies > <!-- requied start --> < dependency > < groupId > javax.servlet </ groupId > < artifactId > servlet-api </ artifactId > < version > ${servlet.api.version} </ version > < scope >

Java8之Optional

ぐ巨炮叔叔 提交于 2020-01-12 15:08:11
Optional类是为了避免空指针异常的发生 其中有三种创建Optional实例的方法,我们接下来进行分别介绍 第一种方法 ---- empty (静态方法) 源码: // 静态方法,可以使用类名直接使用。 // 返回一个空的Optional实例。 public static < T > Optional < T > empty ( ) { @SuppressWarnings ( "unchecked" ) Optional < T > t = ( Optional < T > ) EMPTY ; return t ; } 示例代码: Optional < String > optional = Optional . empty ( ) ; 第二种方法 ---- of (静态方法) 源码: // public static < T > Optional < T > of ( T value ) { return new Optional < > ( value ) ; } 示例代码: // 直接定义值,返回一个值不为空的Optional示例 Optional < String > optionalS = Optional . of ( "hello" ) ; 第三种方法 ---- ofNullable(静态方法) 源码: // 根据源码分析,这个方法跟of方法差不多

Javac 源码调试教程

烂漫一生 提交于 2020-01-12 14:00:37
环境搭建过程 环境备注:Intellij、JDK8 1、第一步下载导入 javac 的源码 如果不想从 openjdk 下载折腾,可以跳过第 1 步直接从我的 github 下载: github.com/arthur-zhan… OpenJDK 的下载方式为: 打开 hg.openjdk.java.net/jdk8/jdk8/l… ,点击左侧的 zip 或者 gz 进行下载。 在 Intellij 中新建一个 javac-source-code-reading 项目,把源码目录的 src/share/classes/com 目录整个拷贝到项目 src 目录下,删掉没用的 javadoc 目录。 2、找到 javac 主函数入口 代码在 src/com/sun/tools/javac/Main.java 运行这个 main 函数,因为没有加需要编译的源代码路径,不出意外应该会在控制台会输出下面的内容 新建一个 HelloWorld.java 文件,内容随缘,在启动配置的 Program arguments 里加入 HelloWorld.java 的绝对路径。 再次运行 Main.java,会在 HelloWorld.java 的同级目录生成 HelloWorld.class 文件。 3、加断点 在 Main.java 中打上断点,开始调试以后会发现不管怎么设置,调试都会进入 tool

redux ,react-redux梳理,以及源码的学习

橙三吉。 提交于 2020-01-12 11:24:06
React Store:提供的方法{ store . dispatch () store . subscribe (() => { this . forceUpdate (); // this.setState({}); }); store . getState () } // import { createStore, applyMiddleware } from "redux"; import { createStore , applyMiddleware } from "../kredux" ; // import thunk from "redux-thunk"; // import logger from "redux-logger"; // 初始话,状态的修改 function counterReducer ( state = 0 , action ) { console . log ( "state" , state ); switch ( action . type ) { case "add" : return state + 1 ; case "minus" : return state - 1 ; default : return state ; } } // const store = createStore(counterReducer,

2019 JS内功修炼之读jQuery源码

青春壹個敷衍的年華 提交于 2020-01-12 09:13:32
引言:2019年,react hooks成功上位,vue3.0发布alpha版,TS使用率的飞速增长,以及大量前端开发工具使用体验的大幅优化和提高等等让越来越多的开发者吐槽前端学不动了的时候,最好的应对方式便是对基础概念的掌握。内功足够强大,才能做到不被别人牵着鼻子走。阅读开源代码是一个很好的方式,首先率选择了jQuery便是里面的内容没有太多足够抽象的设计思想。更多的是对于基础内容的覆盖。同时也包含一些不错但设计模式在里面,因此具有不错的性价比。 jQuery是早期前端开发中占比很重的一个库。在手动操作DOM和浏览器差异较大的时代,jQuery通过统一和简化不同浏览器之间的API,为程序开发带了极大的便利。所以jQuery的设计思路也是围绕这两点展开的。 ps: 不做特殊说明, $ 在源码示例中等效 jQuery 。 jQuery做的主要工作 DOM查询及操作 ajax请求 animation动画 promise(deferred) event handle css style 兼容性问题,抹平不同浏览器的间差异 jQuery的特点 面向对象 ————> prototype API设计的特点 ————> 函数重载 jQuery对于DOM的操作是命令式的,那么相对就要要求使用成本是相对较低的,没有特别复杂的API设计,数量少,参数简单。 内部封装,为了实现jQuery的几大功能

WebRTC Android 编译

笑着哭i 提交于 2020-01-12 05:32:13
一 、前言 WebRTC 名称源自网页即时通信(英语:Web Real-Time Communication)的缩写。谷歌收购并开源支持 网页浏览器 进行实时语音对话或视频对话的 API 。它于2011年6月1日开源并在 Google 、 Mozilla 、 Opera 支持下被纳入 万维网联盟 的W3C推荐标准。 如果不修改 webrtc 相关源码,建议不要去折腾编译这个源码工程,光下载源码就够你头疼的。 可以直接引用已经编译好的中央库(Maven或者Gradle): 官方推荐: compile 'org.webrtc:google-webrtc:1.0.+' (+ 换成对应版本号,一定要去上面网址里面查询是否存在该版本,版本号查询地址: https://bintray.com/google/webrtc/google-webrtc ) 官网地址 : https://webrtc.org 。 二、环境准备 1、WebRTC 编译暂时支持 linux 平台,所以需要有一个 linux 系统或模拟器 2、设置代理,这一步不做过多介绍,需要注意的是需要在终端设置代理,这一步也是比较坑的一步,大家可以搜一下怎么设置 3、下载 depot_tools:git clone https://chromium.googlesource.com/chromium/tools/depot_tools

EMQ X Broker 连接kafka插件(一)

女生的网名这么多〃 提交于 2020-01-12 04:00:23
距离上一次发博客已经很久。这次重新做EMQ的时候发现,EMQ X Broker 的架构设计改变了,使得在做插件的路上诸多坎坷。话不多说赶紧开始。 首先,源码编译安装EMQ X Broker: 只有源码编译了,我们才可以做里面的插件。 源码编译: 1.安装Erlang 1.下载erlang 在下载前,先安装环境 yum -y install perl-devel.x86_64 yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel Erlang网站:http://erlang.org/download/ 进入Erlang网站,下载erlang版本otp_src_22.X.tar.gz() ——————————————————————————————————— ——————————————————————————————————— 下载完,上传后解压 tar -zxvf otp_src_22.1.tar.gz 创建erlang目录( 这里注意了 ,/home/erlang是自定义目录,看自己来定) mkdir /home/erlang 进入到刚刚解压出来的otp_src_22.1文件夹设置编译安装路径,再编译安装 cd otp_src_22.1 ./configure --prefix=

JDK源码那些事儿之浅析Thread上篇

佐手、 提交于 2020-01-12 02:30:51
JAVA 中多线程的操作对于初学者而言是比较难理解的,其实联想到底层操作系统时我们可能会稍微明白些,对于程序而言最终都是硬件上运行二进制指令,然而,这些又太过底层,今天来看一下JAVA中的线程,浅析JDK源码中的Thread类,之后能帮助我们更好的处理线程问题 前言 JDK版本号:1.8.0_171 在Thread注释中可以看到大佬对其进行的解释: Thread就是程序中一个线程的执行. JVM 允许一个应用中多个线程并发执行 每个线程都有优先级.高优先级线程优先于低优先级线程执行 每个线程都可以(不可以)被标记为守护线程 当线程中的run()方法代码里面又创建了一个新的线程对象时,新创建的线程优先级和父线程优先级一样 当且仅当父线程为守护线程时,新创建的线程才会是守护线程 当JVM启动时,通常会有唯一的一个非守护线程(这一线程用于调用指定类的main()方法) JVM会持续执行线程直到下面某一个情况发生为止: 1.类运行时exit()方法被调用且安全机制允许此exit()方法的调用. 2.所有非守护类型的线程均已经终止,或者run()方法调用返回或者在run()方法外部抛出了一些可传播性的异常. 可以联想下JVM的启动过程,从main方法启动,可以自己写代码查看下线程情况 线程实现 Thread注释类上清楚的写明了线程的两种实现方式: 定义一个继承Thread类的子类

C++ for_each

六月ゝ 毕业季﹏ 提交于 2020-01-12 01:30:05
C++ for_each解析 源码解析 源码解析 template<typename InputIterator, typename Function> Function for_each(InputIterator beg, InputIterator end, Function f) { while(beg != end) f(*beg++); } 来源: CSDN 作者: weixin_43992524 链接: https://blog.csdn.net/weixin_43992524/article/details/103872166

asp源码我开发的所有微信公众号接口源码

試著忘記壹切 提交于 2020-01-11 23:21:53
类目 功能 接口 对话服务 基础支持 获取access_token 获取微信服务器IP地址 接收消息 验证消息真实性 接收普通消息 接收事件推送 接收语音识别结果 (已关闭) 发送消息 自动回复 客服接口 群发接口 模版消息(业务通知) 一次性订阅消息 用户管理 用户分组管理 设置用户备注名 获取用户基本信息(PC端) 获取用户基本信息 获取用户列表 获取用户地理位置 (已关闭) 推广支持 生成带参数的二维码 长链接转短链接接口 界面丰富 自定义菜单 个性化菜单 素材管理 永久素材管理接口 临时素材管理接口 功能服务 智能接口 语义理解接口 多客服 获取客服聊天记录 客服管理 会话控制 微信支付 微信支付接口 微信小店 微信小店接口 微信卡包 微信卡包接口 设备功能 设备功能接口 网页服务 网页授权 网页授权获取用户基本信息 基础接口 判断当前客户端版本是否支持指定JS接口 获取jsapi_ticket 分享接口 获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 获取“分享给朋友”按钮点击状态及自定义分享内容接口 获取“分享到QQ”按钮点击状态及自定义分享内容接口 获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 图像接口 拍照或从手机相册中选图接口 预览图片接口 上传图片接口 下载图片接口 音频接口 开始录音接口 停止录音接口 播放语音接口 暂停播放接口 停止播放接口