本系列是《玩转机器学习教程》一个整理的视频笔记。本小节主要介绍使用sklearn实现多元线性回归和kNN回归。 使用sklearn实现多元线性回归 ? ? ?
从git检出源码后,源码目录结构: ● broker: broker 模块(broke 启动进程) ● client :消息客户端,包含消息生产者、消息消费者相关类 ● common :公共包 ● dev Netty ● srcutil:服务工具类 ● store:消息存储实现相关类 ● style:checkstyle相关实现 ● test:测试相关类 ● tools:工具类,监控命令相关实现类 将源码导入到 idea后,执行下面命令: clean install -Dmaven.test.skip =true 源码调试: 需求:我们基于源码来实现一个消息发送和消息消费。 在进行源码调试之前,先在源码工程创建conf配置文件夹,配置信息从distribution拷贝brokrer.conf和logback_broker.xml及logback_namesrv.xml这三个文件到 启动nameServer源码: 启动broker 消息消费
采用线程池和阻塞队列实现生产/消费者模型。其中LinkedBlockingQueue是阻塞队列,同时线程安全,其特点:
或者它是怎么做的,我们看看源码的根本想法就是获得一点感悟,这些感悟不仅仅对工作有好处,往远的说还或许影响我们看待事物的角度,久而久之会形成我们的价值观。 ? 从源码中我们看到pagehelper主要有几个包和一些类组成,按照分门别类的思想,那么每个包都对应一个相同的点,而最底下的类应该就是一些功能聚合类。
ArrayList是一种以数组实现的列表,而数组的优势在于有角标,因此查询的速度较快,是一种可以动态扩容的数组。我们着重了解添加、获取、替换、删除操作。
经过前两次的HashMap和HashTable的学习,我们准备将HashSet也进行学习一下,本着之间差异不是特别大的前提。但是实际上是这样吗? 带着这样的疑问我们学习一下HashSet的源码吧。 ? 从源码的结构来看,HashSet真的没有多少代码。但是我们发现其中有一个Map,莫非HashSet是从Map演变而来?
之前我们通过Thread和ThreadPoolExecutor的学习知道实现runnable接口测试任务的核心。而ThreadPoolExecutor则是线程的执行容器,用来管理线程的。 那么我们就详细学习一下ExecutorCompletionService类的实现机理吧! ? 我们看到ExecutorCompletionService代码量不多,其中的submit肯定是提交任务的。 我们还是按照类的初始化和基本调用方法的步骤来学习其实现过程吧。 //这里的参数是Executor,也就是线程池,因为此类是一个调度器。 好了源码就分析到这里。
removeNode(hash(key),key,null,false, get操作 return (e = getNode(hash(key), key)) 从里面可以收获到的一些结论: HashMap的源码较多 给定初始化容量时,给定元素个数/加载因子为最佳初始化容量,可以在源码找到这个代码。
而我们之前学习延迟队列的时候我们就知道延迟队列是通过实现Delayed接口生成时间戳,然后延迟队列获取消息的时候总是获取的到期时间的消息。 而这里使用的延迟队列也不是我们之前学习的DelayQueue,而是自定义的延迟队列。而其中的内部类也正是延迟队列的定义。 我们还是来看看源码吧. public RunnableScheduledFuture<? 通过源码我们发现有很多方法也是直接用用的父类。 在submit方法里 public Future<?
在学习并发线程池的时候,我们基本都已经学习了一下常见的线程。但是我们发现Executors这样一个类的存在。那么这个类是干什么的? 那么我们来学习一个Executors究竟是何方圣神吧。 ? 从结构图上看出这个类有一些内部类,显然内部类都是定制的。除此之外此类提供了一些创建线程池的工具类。所以看的出来这块的功能还是类似工具类。
在阅读源码的时候发现了一个类StringJoiner,因为之前也没用过。感觉应该是字符串拼接的工具类。 ? 看到其中有几个变量。主要是前后缀和空字符串等。
HashMap源码学习 关系图 属性 //默认初始容量 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16 //最大容量 static
LinkedList源码学习 被transient修饰的first和last如何序列化呢 LinkedList中重写列writeObject方法,ObjectOutputStream中将调用ObjectStreamClass x = next; } first = last = null; size = 0; modCount++; } 全部源码
在之前学习HashMap的时候,我们知道在JDK8中HashMap是采用Node数组+链表+红黑树的方式实现的。那么HashTable又是怎样的? 字面上看应该还是利用的Hash表来处理的。 那么我们基于这样一点知识来学习一下HashTable的设计和实现过程。 ? 从结构上看,HashTable的结构也没有HashMap那么复杂。所以实现起来应该还是比较简单吧。
昨天听完同学来我们团队做的分享之后,自己又去看了一遍源码,结合自己之前项目的一些理解,写一篇博客,这里是原文链接. 在看源码前,结合之前的自己的项目实践,有以下几个问题: 1.在mutation以外比如vue组件中修改数据,会报错,是怎么做到的 2.我们在一个组件中拿数据的时候要从mapGetters里面映射过来,为什么要存在这个 接下来针对上面的问题,结合源码做一下解答: 我们在一个项目中引入vuex是下面的这样一个注入: Vue.use(Vuex) export default new Vuex.Store({ modules 但其实看完源码后发现这层getters是必不可少的,为什么呢? vuex的源码非常简洁,里面并没有做和vue同样的事情,其实他正是通过了getter方法,与vue的watch相挂钩,才实现了vuex的双向绑定,来看源码中的如下代码 watch (getter,
ConcurrentHashMap源码学习 首先思考一下: 既然有了HashMap为什么还会出现ConcurrentHashMap?同时ConcurrentHashMap具有什么优势? key.equals(ek)))) return e.val; } } return null; } ConcurrentHashMap的源码写得是非常好的 ,里面有很多东西值得学习!
HashSet源码学习 UML图(没实现SortedSet,无序的) 属性 static final long serialVersionUID = -5024744406713321676L; /*
首先回答一个问题?线程的三大特性?什么时候我们需要锁?java中已经提供了synchronized,为什么还要使用ReentrantLock?AQS原理。 线程的三大特性:原子性、可见性、
本文我们来学习下它的使用和相关源码 来自官网的介绍: Koa 是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小、更富有表现力 / ctx.router available }); app .use(router.routes()) .use(router.allowedMethods()); koa-router的源码就不展开了 koa-body不止处理json类型,它还会对form、text、xml等类型做相应的处理 源码实现 koa的源码非常简洁,一共只有4个文件 application application.js定义了 ctxStorage.run 存入当前的context对象并马上在回调函数中执行next(即请求后续所有的操作) 在后续获取即可通过getStore()获取到当前请求的context对象 总结 通过本文的学习我们了解到了 koa的一些使用和实现,koa的源码是非常精简的没有太多耦合功能,但是设计了巧妙的中间件机制设计来方便让我们开发各种功能
之前学习了ArrayList,了解了其基于数组的本质,那么LinkedList是怎么实现的?显然LinkedList是链表。也就是基于链表实现。链表分为单向链表和多向链表。