源码

上周热点回顾(3.30-4.5)

对着背影说爱祢 提交于 2020-04-06 09:44:44
热点随笔: · 你所不知道的 C# 中的细节 ( hez2010 ) · 2020年了,跨平台开发框架现在怎样了? ( 葡萄城技术团队 ) · 坚持写作快两年了,有些私藏工具跟你们分享 ( 楼下小黑哥 ) · 从入门到精通-Nginx,图文并茂、负载均衡、动静分离、虚拟主机 附案例源码 ( 陈彦斌 ) · 高效code review指南 ( xybaby ) · ASP.NET Core 奇淫技巧之伪属性注入 ( 晓晨Master ) · 采用vue编写的功能强大的swagger-ui页面 ( RegicideGod ) · 技术到底是否重要之我的见解 ( antain ) · ASP.NET MVC升级到ASP.NET Core MVC踩坑小结 ( 艾心❤ ) · 毕业后第一份工作去了很小的公司,是怎样的体验? ( 四猿外 ) · 给 EF Core 查询增加 With NoLock ( WeihanLi ) · [WPF]总结一些我在开发WPF时常用的工具 ( dino.c ) 热点新闻: · “司徒正美”不幸离世,刚入职OPPO,著有《JavaScript框架设计》 · 程序员的一次失误,在 45 分钟里搞垮了一家上市公司 · core-js 作者入狱 18 个月,2600 万次周下载的开源项目将如何? · 远程办公监控软件卖爆了:5分钟一拍照、10分钟一截屏 ·

jQuery源码分析随笔

帅比萌擦擦* 提交于 2020-04-06 07:16:38
一次在写jquery插件的经历,让自己发现了js水很深,自己很菜。然后慢慢发现js包括了原型、闭包、作用域等一些很常用的知识点。 首先jquery源码的主要结构 下面就是在做分析jquery源码时自己的一些备注 1 (function(window){ 2 var jQuery = function(select){ 3 //privatefunc(); 4 return new jQuery.fn.init(select); 5 //这边必须new一个对象(这时this指向init对象),不然return jQuery.fn.init(select);中this指向jQuery.fn,而jQuery.fn其实是个定义了很多方法的集合 6 } 7 8 jQuery.test = function(){//静态方法 9 console.log('call test method'); 10 } 11 12 var privatefunc = function (){//内部方法,不能再 外面调用,需要让外部调用及jquery的做法:window.privatefunc = privatefunc;这也是闭包 13 console.log(this) 14 console.log('call privatefunc method'); 15 } 16 17 jQuery.fn =

Dubbo源码解读 —— Dubbo扩展点加载机制

放肆的年华 提交于 2020-04-06 06:31:44
Dubbo源码解读 —— Dubbo扩展点加载机制 Dubbo源码解读 —— Dubbo扩展点加载机制 1、SPI介绍 2、Java SPI 实现 3、Dubbo Spi 实现 4、Dubbo 中扩展核心类源码解析 5、记录的知识点 1、SPI介绍 SPI : Service Provider Interface,种服务发现机制。 本质是将接口实现类的全路径名配置在文件中,由服务加载器读取配置文件,加载实现类。 可以在运行时,动态为接口替换实现类。 可以很容易的通过 SPI 机制为我们的程序提供拓展功能。 SPI 机制在第三方框架中也有所应用。 2、Java SPI 实现 定义一个接口及对应的方法 public interface IJavaSpiService { Object say(String param); } 实现接口定义的方法 public class JavaSpiServiceImpl implements IJavaSpiService { @Override public Object say(String param) { System.out.println("java spi impl "+param); return "java spi impl"; } } public class Java1SpiServiceImpl implements

源码编译git-go

主宰稳场 提交于 2020-04-06 01:12:34
2018.8.29 安装指定版本的git 一,安装 编译前准备: 依赖库 yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel 编译工具 yum install gcc perl-ExtUtils-MakeMaker 下载 cd /usr/local/src wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.7.5.tar.gz tar -zvxf git-2.7.5.tar.gz 执行编译 make all prefix=/usr/local/git 编译完成后, 安装到 /usr/local/git 目录下 make install prefix=/usr/local/git 配置环境变量 echo 'export PATH=$PATH:/usr/local/git/bin' >>/etc/profile.d/git.sh source /etc/profile.d/git.sh 查看版本 git version 创建账号密码 useradd -m git passwd git 二 使用 创建 git 仓库并初始化 mkdir -p /data/repositories cd /data

jdk1.8源码Thread与Runnable区别

坚强是说给别人听的谎言 提交于 2020-04-05 23:29:38
一、概念 Thread实现了Runnable接口 1 public class Thread implements Runnable { 2 /* Make sure registerNatives is the first thing <clinit> does. */ 3 private static native void registerNatives(); 4 static { 5 registerNatives(); 6 } 7 8 private volatile char name[]; 9 //表示线程的优先级(最大值为10,最小值为1,默认值为5), 10 private int priority; 11 12 13 /* Whether or not the thread is a daemon thread. */ 14 //表示线程是否是守护线程,如果在main线程中创建了一个守护线程, 15 //当main方法运行完毕之后,守护线程也会随着消亡。在JVM中,垃圾收集器线程就是守护线程。 16 private boolean daemon = false; 17 18 19 /* What will be run. */ 20 //表示要执行的任务。 21 private Runnable target; 22 。。。。。。 23 } 二、创建

ZooKeeper源码阅读——目录帖

浪尽此生 提交于 2020-04-05 22:11:34
备注: 有些博客尚未完成,如果点进去发现看不了,那就是正在完善中。 预计2020年5月之前,对于下面这些主题我会学习完毕,并且输出成日志。 Zookeeper源码编译(Zookeeper 3.4.11)并IDEA启动 ZooKeeper客户端: ZooKeeper源码阅读-客户端 先学习zk客户端源码的目的其实很简单,就是以为client相关代码比较少,比较简单。 客户端主要是连接zk服务端、创建session、提交请求、获取响应。 其实主要代码就是NIO和jute序列化相关的代码。 先理解好zk的网络I/O相关,可以减轻zk 服务端代码阅读的困难。 所以强烈建议先阅读客户端代码。 ZooKeeper单节点服务端: ZooKeeper源码解读——ZooKeeper 服务端启动流程 ZooKeeper源码解读-NIOServerCnxnFactory#thread ZooKeeper源码阅读-请求处理器RequestProcessor ZooKeeper源码阅读——session管理器SessionTracker ZooKeeper源码阅读——数据库ZKDatabase ZooKeeper集群相关: ZooKeeper源码阅读——Leader 的选举机制 来源: oschina 链接: https://my.oschina.net/anxiaole/blog/3220758

ConcurrentHashMap(1.8)源码剖析

最后都变了- 提交于 2020-04-05 21:58:05
ConcurrentHashMap(JDK1.8)学习记录 ​ 看了忘忘了看系列之ConcurrentHashMap,本文主要记录下通过看ConcurrentHashMap源码学习到的知识点。主要有以下几个点。文章稍长,需要耐心阅读。 ​ 1、ConcurrentHashMap构造函数和相关属性 ​ 2、ConcurrentHashMap使用示例 ​ 3、ConcurrentHashMap跟随示例学原理 ​ ConcurrentHashMap的出现主要是因为HashMap在多线程情况下表现不好。那么下面文章就跟着源码学习下ConcurrentHashMap是如何在多线程下表现良好的。 1、ConcurrentHashMap构造函数和相关属性 构造函数 ​ ConcurrentHashMap的构造函数和HashMap的构造函数形式类似,但是在带容量参数的构造函数中调用tableSizeFor函数时候稍有不同 // 无参构造函数,也是大家经常使用的 public ConcurrentHashMap() { } // 带容量参数的构造函数 public ConcurrentHashMap(int initialCapacity) { if (initialCapacity < 0) throw new IllegalArgumentException(); int cap = (

vue源码观看记录

蹲街弑〆低调 提交于 2020-04-05 21:52:39
vue 源码 运行顺序 initMixin 挂载 vue.prototype._init 原型方法 再该方法内初始化了 vue 的相关方法如: vm._self = vm /* 初始化生命周期 */ initLifecycle ( vm ) /* 初始化事件 */ initEvents ( vm ) /* 初始化 render*/ initRender ( vm ) /* 调用 beforeCreate 钩子函数并且触发 beforeCreate 钩子事件 */ callHook ( vm , 'beforeCreate' ) initInjections ( vm ) // resolve injections before data/props /* 初始化 props 、 methods 、 data 、 computed 与 watch*/ initState ( vm ) initProvide ( vm ) // resolve provide after data/props /* 调用 created 钩子函数并且触发 created 钩子事件 */ callHook ( vm , 'created' ) vm 即当前 this 作用域指针 Props normalizeProps 数组的方式传 props 仅支持 string props: [‘ a ’, ‘ b

JVM源码分析之javaagent原理完全解读

我只是一个虾纸丫 提交于 2020-04-05 20:58:09
概述 本文重点讲述javaagent的具体实现,因为它面向的是我们Java程序员,而且agent都是用Java编写的,不需要太多的C/C++编程基础,不过这篇文章里也会讲到JVMTIAgent(C实现的),因为javaagent的运行还是依赖于一个特殊的JVMTIAgent。 对于javaagent,或许大家都听过,甚至使用过,常见的用法大致如下: java -javaagent:myagent.jar=mode=test Test 我们通过-javaagent来指定我们编写的agent的jar路径(./myagent.jar),以及要传给agent的参数(mode=test),在启动的时候这个agent就可以做一些我们希望的事了。 javaagent的主要功能如下: 可以在加载class文件之前做拦截,对字节码做修改 可以在运行期对已加载类的字节码做变更,但是这种情况下会有很多的限制,后面会详细说 还有其他一些小众的功能 获取所有已经加载过的类 获取所有已经初始化过的类(执行过clinit方法,是上面的一个子集) 获取某个对象的大小 将某个jar加入到bootstrap classpath里作为高优先级被bootstrapClassloader加载 将某个jar加入到classpath里供AppClassloard去加载 设置某些native方法的前缀

jdk下httpserver源码解析

送分小仙女□ 提交于 2020-04-05 19:41:37
在写这篇博客之前我查了很久发现全网都没有一篇写httpserver源码解析的 所以今天就由我来为大家解析一下httpserver的源码。(这里我会去掉其中的https部分的源码,只讲http部分,对httpserver中https的实现感兴趣的读者可以尝试自己去阅读,这部分并不复杂) 第一次在没有参考资料的情况下写这么长一篇源码解析,可能会有很多错误和讲不清楚的地方,希望大家尽量指出来。 本文链接 https://www.cnblogs.com/fatmanhappycode/p/12614428.html httpserver的简单使用例子 大家最好先跟着我构建这样一个小demo, 跑起来之后再一步一步去看源码 /** * @author 肥宅快乐码 */ public class HttpServerSample { private static void serverStart() throws IOException { HttpServerProvider provider = HttpServerProvider.provider(); // 监听端口8080,连接排队队列,如果队列中的连接超过这个数的话就会拒绝连接 HttpServer httpserver =provider.createHttpServer(new InetSocketAddress(8080),