从源码对比DefaultServeMux 与 gorilla/mux DefaultServeMux Golang自带的net/http库中包含了DefaultServeMux方法,以此可以搭建一个稳定的高并发的web server. DefaultServeMux源码分析 路由表是实现路由功能的重要结构.muxEntry是存放具体的路由信息的一个map,key是路径,而value是该路径所对应的处理函数. type ServeMux struct { mu sync.RWMutex m map…
前言 在JDK1.7&1.8源码对比分析[集合]HashMap中我们对比分析了JDK1.7和1.8版本的HashMap源码,趁热打铁,这篇文章就来看看JDK1.7和1.8版本的ConcurrentHashMap有哪些区别. 目录 一.对比分析 1. 1.7版本 2. 1.8版本 一.对比分析 1. 1.7版本 先来看看 1.7 的实现,下面是他的结构图: 如上图所示,是由 Segment 数组.HashEntry 组成,和 HashMap 一样,仍然是数组 + 链表. 它的核心成员变量: /**…
一 验证部分 首先在ubuntu下面建立如下工程 mkdir repo cd repo git init mkdir -p .GiT/hooks cp post-checkout .GiT/hooks cat post-checkout 内容如下 #!/bin/sh calc.exe calc open /Applications/Calculator.app/ gnome-calculator 然后将工程提交到git服务器,由于github已经不能提交.Git这种目录,我就自己搭建了一个服务器…
前言 在JDK1.8源码分析[集合]HashMap文章中,我们分析了HashMap在JDK1.8中新增的特性(引进了红黑树数据结构),但是为什么要进行这个优化呢?这篇文章我们通过对比JDK1.7和1.8来分析优化的原因. 众所周知,HashMap底层是基于 数组 + 链表 的方式实现的,不过在JDK1.7和1.8中具体实现稍有不同. 目录 一.对比分析 1. 1.7版本 2. 1.8版本 总结 一.对比分析 1. 1.7版本 1.7 中的数据结构图: 先来看看1.7中几个比较核心的成员变量: /…
前言 frp几乎所有的连接处理都是构建在mux模块之上的,重要性不必多说,来看一下这是个啥吧 ps: 安装方法 go get "github.com/fatedier/golib/net/mux" 该模块很小,不到300行,分为两个文件:mux.go和rule.go. 因为rule.go文件相对简单一些,我们先来看这个. role.go文件 首先看其中所命名的函数类型MatchFunc: type MatchFunc func(data []byte) (match bool) 该类型…
距离上次入门篇时隔两个月才出这进阶篇,小编惭愧,对不住关注我的卡哇伊的小伙伴们,为此小编用这篇博来谢罪. 前面的准备工作我就不说了,注册百度账号api,创建web网站项目,引入动态链接库引入. 不了解的童鞋可以花费10分钟移步学习:https://www.cnblogs.com/xiongze520/p/10387355.html(C# 10分钟完成百度人脸识别——入门篇). 如果要学习的童鞋最好下载本demo源码,因为有信息入库功能,BLL.DAL.数据库就在源码里面. 一般情况下笔记本自带的…
一.依赖注入DI 学习目标1)搞清楚构造参数依赖注入的过程及类2)搞清楚注解方式的属性依赖注入在哪里完成的.学习思路1)思考我们手写时是如何做的2)读 spring 源码对比看它的实现3)Spring 源码解读 1. 构造参数依赖注入 org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(String, RootBeanDefinition, Constructor<?>[], Obj…
在学习spring boot 2.0源码之前,我们先利用spring initializr快速地创建一个基本的简单的示例: 1.先从创建示例中的main函数开始读起: package com.example; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** * spring boot 2.0 源码分…
前言 在JDK1.7&1.8源码对比分析[集合]HashMap中我们遗留了一个问题:为什么HashMap在调用resize() 方法时会出现死循环?这篇文章就通过JDK1.7的源码来分析并解释这个问题. 如下,并发场景下使用HashMap造成Race Condition,从而导致死循环,现象是CPU 100%被占用. final HashMap<String, String> map = new HashMap<String, String>(); for (int i =…
1.Social包在SpringBoot2.x移除问题 spring-boot-autoconfigure1.5x版本中支持facebook,领英和推特官方文档:https://docs.spring.io/spring-boot/docs/1.5.18.RELEASE/api/   image.png spring-boot-autoconfigure2.x中版本找不到了官方文档:https://docs.spring.io/spring-boot/docs/2.1.1.RELEASE/api…