多线程设计模式-串行线程封闭模式

定义:通过将多个并发的任务存入队列实现任务的串行化,并为这些串行化的任务创建唯一的一个工作者线程进行处理 由于只有唯一的工作者线程访问,对其的访问无须加锁,因此避开了锁的的开销和锁带来的问题 串行线程封闭模式 Serializer: 负责对外暴露服务接口以及工作者线程的生命周期管理,并将客户端对其的并发任务调用转换为相应的任务以实现服务串行化 service: 表示将串行线程封闭模式对外暴露的服务方法,该方法将客户端对其的并发调用串行化 init: 初始化串行线程封闭模式对外暴露的服务,该方法
分类: 其他 发布时间: 07-06 15:51 阅读次数: 0

JavaScript 面试笔试题精讲细讲

前端面试经常需要做一些 JavaScript 笔试题,其中包括很多关于执行结果、补充代码、编程类别的题目。 本课程就是为了帮应聘者解决这些常见问题的: 经常遇到的 JavaScript 题目; 解决执行结果、补充代码、编程题目的困惑和恐惧。 主要内容: part1_01 表达式计算 part1_02 检测数据类型的方法 part1_03 运算符优先级 part2_01 基本数据类型和引用数据类型的区别 part2_02 运算符,+NaN part2_03 数据类型转换 part3_01 变量声
分类: 其他 发布时间: 07-06 15:51 阅读次数: 0

GitChat 使用指南,快速学习、飞速成长

GitChat 是一个很好的知识付费和学习的平台,有很多技术大牛分享的干货和观点。但大多数人很多时候却没有很好的利用起这个平台进行深度的学习和提升。如果可以有好的方法能够将 GitChat 中分享的技术点迅速转化成自己的内容,拓宽自己知识的宽度和深度,那么一定会有意想不到的成效。本场 Chat 给大家讲解的就是,如何利用好 GitChat 进行深度的学习,让自己快速的成长。 本场分享的内容有: 脑神经科学和心理学告诉你好好学习的秘密 学习的本质与方法 知识类 Chat 的阅读方法 技术类 Ch
分类: 其他 发布时间: 07-06 15:51 阅读次数: 0

多线程设计模式-线程特有存储模式

定义: 通过不共享变量实现线程安全,并规避锁的消耗及相关锁带来的问题 线程特有存储模式UML图 ApplicationThread: 线程持有存储模式的客户端,表示各个应用线程 TSObjectProxy: 用于访问线程特有对象的代理对象 getThreadSpecific: 获取与其所属TSObjectProxy实例相关联的线程特有对象实例 setThreadSpecific: 建立其所属TSObjectProxy实例与执行线程持有对象实例的关联 removeThreadSpecific:
分类: 其他 发布时间: 07-06 15:51 阅读次数: 0

多线程设计模式-生产者/消费者模式

定义:通过通道对数据(或任务)的生产者和消费者进行解耦,使二者不直接交互,从而使二者的处理速率相对来说互不影响。 生产者消费模式UML图 Producer: 生产者,负责生产相应的“产品”并将其存入通道 service: 生产者对外暴露的服务方法 Product: 生产者所“生产”的数据或者任务 Channel: 对通道的抽象。通道充当生产者和消费者之间的缓冲区用于“产品”传递,它可以是有存储容量限制的。 put: 将“产品”存入通道 take: 从通道中取出一个“产品” BlockingQu
分类: 其他 发布时间: 07-06 15:51 阅读次数: 0

职业发展论:你想工作多少年?

职业发展方法论是本场 Chat 的核心。世上并没有聪明人和笨人之分,即使智商有高低但差别也不大。事业的成败主要在于情商和财商,这实际上就是方法的运用。本场 Chat 从现实剖析到职业创新再到好工作的取得以及职业精英的练就,甚至具体每一步骤的进展,都充满了大大小小的方法,而且是轻而易举可以上手的切实可行之法。有了这些好方法,“笨人”的事业也可以成功,更不要说聪明人。 本场 Chat 主要是讨论关于职业规划、工作创新以及事业晋级的切实可行之法。这些所谓的方法讲求的是实用性,每一个读者都可以运用到这
分类: 其他 发布时间: 07-06 15:51 阅读次数: 0

Ngrok 内网穿透技术,让你在公司也能访问家里的电脑

真的,身边很多工程师都要 24 小时待命,有时候,仅受限于网络(内网环境),他们必须要疲于奔命于城市的东西南北。而一旦有了本 Chat 传授的技能, 你就可以随时随地,淡定在家或者公司轻松解 Bug 或者写文档, 再也不用担心解不了 Bug 了。这是一件“老板开心,老婆也开心”的好事儿。 这篇 Chat 的定位是实践技能,而非知识或者原理。想了解技能背后的原理的,请去看计算机网络原理的相关知识。 本 Chat 我们只谈谈具体要怎么做,让你可以随时随地轻松访问家里/公司的设备。 真心地希望能帮到
分类: 其他 发布时间: 07-06 15:51 阅读次数: 0

Python 爬虫面试题 170 道

Python 爬虫面试题 170 道 最近在刷面试题,看了网络上大量的 Python 相关面试题后,我发现了这几个问题: 有些还是 Python2 的代码 回答的很简单,关键的题目没有点出为什么 一些复制粘贴的代码根本就跑不通 这几个问题相信大家深有体会吧,所以我决定针对市面上大多的 Python 题目做一个分析,同时也希望大家尽可能的做到举一反三,而不是局限于题目本身。 通过本场我分享的这篇文章,你将获得如下知识点: 掌握 Python 的基础语法 语法常见的 Python 应用场景 掌握
分类: 其他 发布时间: 07-06 15:51 阅读次数: 0

多线程设计模式-线程池模式

定义: 使用极其有限的资源(线程池)去处理相对无限的任务 线程池模式UML图 ThreadPool: 负责接收和存储任务以及工作者线程的生命周期管理 submit: 用于接收一个任务,客户端代码调用该方法向线程池提交一个任务 shutdown: 关闭线程池对外提供的服务 Promise: 获取相应任务执行结果的凭据对象 getResult: 获取相应任务的执行结果 setResult: 设置相应任务的执行结果 WorkQueue: 工作队列,实现任务的缓存 enqueue: 将任务存入队列 d
分类: 其他 发布时间: 07-06 15:51 阅读次数: 0

Spark 企业级实战:SparkSQL 多数据源整合

Spark 生态较为完善,已经被越来越多的互联网公司应用于生产项目,对于 ETL 开发人员而言,日常数据同步任务和临时取数任务如果有基于 Spark 封装的一个小工具,办公效率会有大幅度提升。 本场 Chat 会阐述企业现有的数据处理的痛点,以一个真实场景作为切入口,展开对需求的分析,开发一个简单且通用的工具,提升团队作战效率。 本场 Chat 您将学到如下内容: 掌握多数据源整合的方法(一条 SQL 实现 MySQL join sqlserver) 提升 Spark 技术实力和代码设计能力
分类: 其他 发布时间: 07-06 15:51 阅读次数: 0

多线程设计模式-主动对象模式

定义: 一种异步编程模式,允许任务的提交(对异步方法的调用)和任务的执行(异步方法的真正执行)分离 主动对象模式UML图 Proxy: 负责对外暴露异步方法接口 asyncService: 该异步方法负责创建与该方法相应的MethodRequest参与者实例,并将其提交给Scheduler参与者实例。该方法的返回值是一个Future参与者实例,客户端代码可以通过它获取异步方法对应的任务的执行结果 MethodRequest: 负责将客户端代码对Proxy实例的异步方法的调用封装成一个对象,该对
分类: 其他 发布时间: 07-06 15:51 阅读次数: 0

多线程设计模式-半同步/半异步模式

定义: 一个分层架构,将系统中的任务进行恰当地分解,使各个子任务落入合适的层次中 半同步/半异步模式UML图 AsyncTask: 异步任务,负责接收来自客户端的输入,对其进行初步处理,并通过队列与相应的同步任务通信 dispatch: 对输入进行初步处理,并构造相应消息放入队列由相应的同步任务进行处理 Queue: 队列,异步任务层和同步任务层进行通信的中介 enqueue: 消息入队列 dequeue: 消息出队列 SyncTask: 同步任务,负责处理队列中的消息所对应的计算 run:
分类: 其他 发布时间: 07-06 15:51 阅读次数: 0

互联网 Java 高级工程师面试都要被问到哪些问题?

很多人面试之前,可能没有在互联网公司工作过或者说工作过但年头较短,不知道互联网公司技术面试都会问哪些问题? 再加上可能自己准备也不充分,去面试没几个回合就被面试官几个问题打蒙了,最后以惨败收场。 针对这些的同学,笔者将多年面总结的面试题,进行了整理,分享给大家,给大家指一指方向,希望大家能带着这些问题,找相关资料进行有针对性行的学习,对面试做到知己知彼,百战百胜。 通过这个 Chat 你可以得到以下收获: 现在的互联网公司和以前的互联网公司面试要求有什么变化; 互联网公司面试都会问哪些方面的问
分类: 其他 发布时间: 07-06 15:51 阅读次数: 0

微服务架构设计模式综述

随着微服务的大量应用,在实践中也会遇到很多之前单体架构所没有的问题,微服务架构设计模式也应运而生。架构方面的权威Chris Richardson先生从多个角度归纳了42个设计模式,我将其归纳整理如下表,以飨读者。后面会陆续出关于微服务架构设计模式的文章,更加深入的阐述Richardson先生关于微服务架构设计模式的理解。 微服务架构设计模式 用图来自于Chris Richardson先生的网站https://microservices.io/patterns/microservices.htm
分类: 其他 发布时间: 07-06 15:51 阅读次数: 0

VIM 超实用使用经验:进阶版

在作者之前写过的文章中(点头像或者笔者名字可查),提到众多 VIM 的【黑科技】, 同学们觉得不过瘾, 我们这次放大招! 本 Chat 带你一起领略 VIM 的高阶功能。让你在 99% 的情况下, Review 代码快,搜代码快,写代码更快!我们的口号是: 高(zhuang)效(x)工作, 节约生命。 这不是要 diss IDE,IDE 在可视化地调试代码还是很有用的。但若能少依赖 IDE,更快地完成任务,岂非快哉! 本 Chat 为了方便学习, 计划尽量用 Gif 动图来展示 VIM 的技巧
分类: 其他 发布时间: 07-06 15:51 阅读次数: 0

微服务架构设计模式——单体架构

首先,要明确单体架构的定义是什么,才好与其他架构作区别于讨论。以下是我觉得对单体架构总结的比较好的定义 Monolithic application has single code base with multiple modules. Modules are divided as either for business features or technical features. It has single build system which build entire applicati
分类: 其他 发布时间: 07-06 15:51 阅读次数: 0

「战略」访谈录 | 聊聊领域驱动设计

相信很多朋友对领域驱动设计会有这样或那样的困惑,比如领域驱动设计是什么?它在工作中有什么作用?为什么国内关于这方面的书籍少之又少?…… 为了解决这些疑惑,有幸邀请到专家张逸老师来聊聊领域驱动设计,下面是 GitChat 独家采访记录。 GitChat:领域驱动设计(Domain Driven Design,DDD)自诞生以来已有十几年时间,这门本已步入老年的方法学却因为微服务的兴起而焕发了第二春。您说过这可能要归功于 DDD 的“坚硬生长”,但不可否认微服务确实也是一个重要因素,能否请您解释一
分类: 其他 发布时间: 07-06 15:51 阅读次数: 0

微服务发现组件Eureka——实战篇

在文章微服务架构设计模式——微服务架构 中谈到服务发现组件Eureka,在这里做一下拓展。古人云,知其然,知其所以然。国人习惯于先讲实战,后谈理论,鉴于此,这篇文章主要讲Eureka如何使用,在下一篇文章会详细分析Eureka的源码。首先,从架构图一窥Eureka的究竟。 Eureka架构图 从架构图中可知,Eureka具有如下功能: 服务注册 获取注册表信息 服务续约 服务下线(服务销毁) 下面通过Eureka Server和Eureka Client的两个注册的例子来大致了解下Eureka
分类: 其他 发布时间: 07-06 15:51 阅读次数: 0

透视前端工程化之一:模板功能设计

1 项目模板 我们的项目框架都是基于项目模板生成的。学过 JS 的知道: function Person(name = 'ant') { this.name = name; } let man = new Person(); 这里 Person 是 man 的原型对象。同样项目模板相当于对象 Person,具体的项目相当于 man。通过项目模板,我们可以事先将项目所需要的功能点定义好,使用的时候只需要像实例化一个对象一样,简单地 new 一下就搞定了。大大地减少重复劳动,屏蔽项目配置
分类: 其他 发布时间: 07-06 15:51 阅读次数: 0

微服务发现组件Eureka Client源码解读篇

上一篇实战篇讲到Eureka具有如下功能: 获取注册表信息 服务注册 服务续约 服务下线(服务销毁) 那么它是如何实现?接下来通过源码解读的方式一一道来。 由于Eureka客户端代码较多,单独成篇,此篇主要是关于客户端源码的解读,下一篇文章讲解服务器端源码。 Eureka是由Netflix公司开发并开源的微服务组件之一,目前最新版本是2.X,网飞出于商业的考虑,该组件不再增加新功能,不会有更新的版本发布。不过,目前的版本所提供的功能已经足够生产环境的实际使用。 下图是整个Eureka Clie
分类: 其他 发布时间: 07-06 15:51 阅读次数: 0