源码

FutureTask源码完整解读

谁都会走 提交于 2020-03-13 03:06:14
1 简介 上一篇博客“ 异步任务服务简介 ”对FutureTask做过简要介绍与分析,这里再次对FutureTask做一次深入的分析(基于JDK1.8)。 FutureTask同时实现了Future 、Runnable接口,因此它可以交给执行器Executor去执行这个任务,也可以由调用线程直接执行run方法。 根据FutureTask.run方法的执行状态,可将其分为以下3种状态 ①未启动: run方法还未被执行,FutureTask处于未启动状态。 ②已启动: run方法在执行过程中,FutureTask处于已启动状态 ③已完成:run方法正常完成返回或被取消或执行过程中因异常抛出而非正常结束,FutureTask处于已完成状态。 当FutureTask处于未启动或已启动状态时,执行FutureTask.get()方法将导致调用线程阻塞;当FutureTask处于已完成状态时,执行FutureTask.get()方法将导致调用线程立即返回结果或抛出异常。 当FutureTask处于未启动状态时,执行FutureTask.cancel()方法将导致此任务永远不会被执行;当FutureTask处于已启动状态时,执行FutureTask.cancel(true)方法将以中断执行此任务线程的方式来试图停止任务;当FutureTask处于已启动状态时,执行 FutureTask

zepto源码研究 - callback.js

你离开我真会死。 提交于 2020-03-13 00:45:19
简要: $.Callbacks是一个生成回调管家Callback的工厂,Callback提供一系列方法来管理一个回调列表($.Callbacks的一个私有变量list),包括添加回调函数, 删除回调函数等等...,话不多说看正文: var memory, // Last fire value (for non-forgettable lists) fired, // Flag to know if list was already fired //是否回调过 firing, // Flag to know if list is currently firing //回调函数列表是否正在执行中 firingStart, // First callback to fire (used internally by add and fireWith) //第一回调函数的下标,启动回调任务的开始位置 firingLength, // End of the loop when firing //回调函数列表长度? firingIndex, // Index of currently firing callback (modified by remove if needed),正在执行回调函数的索引 list = [], // Actual callback list //回调数据源: 回调列表

underscore.js源码解析【集合】

萝らか妹 提交于 2020-03-13 00:44:52
// Collection Functions // -------------------- // The cornerstone, an `each` implementation, aka `forEach`. // Handles raw objects in addition to array-likes. Treats all // sparse array-likes as if they were dense. /* params: 数组、对象或类数组对象,函数,函数执行环境 */ _.each = _.forEach = function(obj, iteratee, context) { iteratee = optimizeCb(iteratee, context); var i, length; if (isArrayLike(obj)) {// 数组或类数组 for (i = 0, length = obj.length; i < length; i++) { iteratee(obj[i], i, obj);// item index obj } } else {// 对象 var keys = _.keys(obj);// 返回键的数组 for (i = 0, length = keys.length; i < length; i++) {

Eclipse中查看源码的方法

人盡茶涼 提交于 2020-03-12 22:16:54
1.点 “window”-> "Preferences" -> "Java" -> "Installed JRES" 2.此时"Installed JRES"右边是列表窗格,列出了系统中的 JRE 环境,选择你的JRE,然后点边上的 "Edit...", 会出现一个窗口(Edit JRE) 3.选中rt.jar文件的这一项:“c:\program files\java\jre_1.5.0_06\lib\rt.jar” 点 左边的“+” 号展开它, 4.展开后,可以看到“Source Attachment:(none)”,点这一项,点右边的按钮“Source Attachment...”, 选择你的JDK目录下的 “src.zip”文件 5.一路点"ok",结束。 来源: https://www.cnblogs.com/ljver/p/12482916.html

源码分析Dubbo网络通讯篇之NettyServer网络事件派发机制(Dispatch)

℡╲_俬逩灬. 提交于 2020-03-12 21:06:33
本节将主要学习Dubbo是如何使用Netty来实现网络通讯的。 从官网我们得知,Dubbo协议是使用单一长连接来进行网络传输,也就是说服务调用方持久与服务提供者建立一条连接,所有的服务调用调用信息通过。 一条TCP连接进行传输,在网络层至少要考虑如下问题: 服务端,客户端网络通讯模型(线程模型) 传输(编码解码、序列化)。 服务端转发策略等。 Dubbo服务端的网络启动流程,在上篇中已给出序列图,本节还是以该图为切入点,引入本文的两个主人公:NettyServer、NettyClient。 dubbo使用SPI机制,根据配置,可以支持如下框架实现网络通讯模型,例如netty3,netty4、mina、grizzly,本文重点分析基于Netty4的实现,包路径:dubbo-remoting-netty4。 从上面的流程图,NettyTransport的职责就是调用new NettyServer的构造方法,从而构建NettyServer对象,在深入NettyServer对象构造过程之前,先来看一下NettyServer的类继承层次: NettyServer构造函数: public NettyServer(URL url, ChannelHandler handler) throws RemotingException { // @1 super(url, ChannelHandlers

kubernetes源码阅读笔记——Kubelet(之一)

笑着哭i 提交于 2020-03-12 15:49:20
Kubelet是Kubernetes集群中node节点的核心组件之一,其作用是管理运行在Pod中的容器,使其处于正常运行状态。 Kubelet的启动函数代码位于cmd/kubelet/kubelet.go中,仍是通过cobra注册。 cmd/kubelet/kubelet.gofunc main() { rand.Seed(time.Now().UnixNano()) command := app.NewKubeletCommand(server.SetupSignalHandler()) logs.InitLogs() defer logs.FlushLogs() if err := command.Execute(); err != nil { fmt.Fprintf(os.Stderr, "%v\n", err) os.Exit(1) } } 一、NewKubeletCommand 在NewKubeletCommand命令中注册了kubelet命令。进入NewKubeletCommand方法: cmd/kubelet/app/server.go func NewKubeletCommand(stopCh <-chan struct{}) *cobra.Command { cleanFlagSet := pflag.NewFlagSet(componentKubelet,

Android数据持久化(一) SharedPreferences

不问归期 提交于 2020-03-12 13:53:19
前言 前几篇文章主要讲了安卓四大组件之Activity。最近在coding的时候又遇到一个问题:自己项目中有两个Activity分别命名为Activity1和Activity2,而Activity1属于process1,Activity2属于process2,从Activity1跳转到Activity2,然后在Activity2中通过使用SharedPreferences进行保存简单的数据,结果不论怎么操作所取的值都是不正确的,why??? 读完本篇你将有所了解! 备注:本文主要从源码角度进行分析。 简介 SharedPreferences是Android平台上一个轻量级的存储辅助类,用来保存应用的一些常用配置,它提供了string,set,int,long,float,boolean六种数据类型。最终数据是以xml形式进行存储。在应用中通常做一些简单数据的持久化缓存。 流程图 源码分析 来源: CSDN 作者: aphrodite1314 链接: https://blog.csdn.net/aphrodite1314/article/details/104812973

SQL必知必会(第四版)-MySQL源码/案例导入方法

浪子不回头ぞ 提交于 2020-03-12 12:37:38
转自: https://blog.csdn.net/qq_34672033/article/details/90202219 转载为便于学习,感谢原博主. SQL必知必会(第四版)-MySQL源码/案例导入方法 原创GeekShuai 最后发布于2019-11-14 15:49:19 阅读数 6875 收藏 展开 SQL必知必会-源码/案例导入方法 为了学习《MySQL 必知必会》中各个例子,需要一组填充数据的表,首先需要下载2个SQL脚本文件。 源码下载 百度云下载方式 :提取码nll1 官方案例下载链接 下载脚本之后,开始创建和填充书中各章所用的表: 创建一个新的数据源 create database crashcourse; #(这里使用书中的数据源名称) 1 2 选择新的数据源 use crashcourse; # 进入数据库中 1 2 执行creat.sql脚本 mysql> source /tools/create.sql #(使用mysql命令行使用程序的方法,source+存放文件的完全路径) 1 2 3 用populate.sql文件填充各个新表 mysql> source /tools/populate.sql #(使用mysql命令行使用程序的方法,source+存放文件的完全路径) 1 2 3 来源: CSDN 作者: rust&python 链接:

Django源码解析(四) 中间件

假如想象 提交于 2020-03-12 11:49:17
Django源码解析(一) 开篇 Django源码解析(二) manage.py Django源码解析(三) Django开发服务器,WSGI规范实现 Django源码解析(四) 中间件 Django源码解析(五) URL配置 Django中间件类型 Django的中间类型分为五种: 请求(Request)中间件,视图(View)中间件,模板(Template)中间件,响应(Response)中间件,异常(Exception)中间件. 特定的类型的中间件必须具有指定的方法.请求中间件必须具有process_request方法;视图中间件必须具有process_view方法;模板中间件必须具有process_template_response方法;Response必须具有process_response方法;异常中间件必须具有process_exception方法.可以存在一个类同时具有多个以上方法,即一个类可以同时是多种中间件. 中间件类必须使用无参__init__函数,创建类实例时,不需要任何参数. 中间件处理过程 1. 应用 请求中间件 ,处理传入请求.如果请求中间件方法process_request返回的response非空,则终止处理过程,执行步骤7. 2. url匹配,查找视图函数.(下一章分析) 3. 应用 视图中间件 ,处理传入请求 视图与视图参数

互联网公司的面试官是如何360°无死角考察候选人的?

拈花ヽ惹草 提交于 2020-03-12 11:39:16
作者: 石杉的架构笔记 一、写在前面 最近收到不少读者反馈,说自己在应聘一些中大型互联网公司的Java工程师岗位时遇到了不少困惑。 这些同学说自己也做了精心准备,网上搜集了不少Java面试题,然而实际去互联网公司面试才发现,人家问的,和你准备的对不上号,这就很尴尬了。 二、先来体验一个真实的面试连环炮 好,闲话不多说,我们进入正题! 本系列文章,我们将会从消息中间件、分布式缓存、分布式搜索、分布式架构、海量数据、NoSQL、高并发、高可用、高性能、数据库、JVM虚拟机等各方面聊一下面试中的高频技术问题。 现在一些中大型互联网公司的面试官,在面试候选人时,一般都会采取连环炮的策略来深挖一个候选人的技术水平。 举个例子,比如说看你简历上写了熟悉消息中间件(MQ技术)。那么可能我们就会有一个类似下面这样的连环炮式发问: 说说你们公司线上生产环境用的是什么消息中间件? 那你们线上系统是有哪些技术挑战,为什么必须要在系统里引入消息中间件? 你们的消息中间件技术选型为什么是RabbitMQ? 为什么不用RocketMQ或者是Kafka?技术选型的依据是什么? 你们怎么保证消息中间件的高可用性?避免消息中间件故障后引发系统整体故障? 使用消息中间件技术的时候,你们怎么保证投递出去的消息一定不会丢失? 你们怎么保证投递出去的消息只有一条且仅仅一条,不会出现重复的数据?