自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

GarfieldEr007的专栏

勤奋治学 深度思考 静心钻研 先苦后甜

  • 博客(5220)
  • 资源 (1)
  • 收藏
  • 关注

转载 如何优雅的使用和理解线程池

前言平时接触过多线程开发的童鞋应该都或多或少了解过线程池,之前发布的《阿里巴巴 Java 手册》里也有一条:可见线程池的重要性。简单来说使用线程池有以下几个目的:线程是稀缺资源,不能频繁的创建。 解耦作用;线程的创建于执行完全分开,方便维护。 应当将其放入一个池子中,可以给其他任务进行复用。线程池原理谈到线程池就会想到池化技术,其中最核心的思想就是把宝贵的资源放到一个池子中;每次使用都从里面获取,用完之后又放回池子供其他人使用,有点吃大锅饭的意思。那在 Java 中又是如何

2020-09-23 23:13:47 1323 1

转载 Mock工具之Mockito实战

在实际项目中写单元测试的过程中我们会发现需要测试的类有很多依赖,这些依赖项又会有依赖,导致在单元测试代码里几乎无法完成构建,尤其是当依赖项尚未构建完成时会导致单元测试无法进行。为了解决这类问题我们引入了Mock的概念,简单的说就是模拟这些需要构建的类或者资源,提供给需要测试的对象使用。业内的Mock工具有很多,也已经很成熟了,这里我们将直接使用最流行的Mockito进行实战演练,完成mockito教程。Mock工具概述1.1 Mockito简介EasyMock 以及 Mockito ..

2020-08-31 23:47:35 1349

转载 Mockito 简明教程

什么是 Mock 测试Mock 测试就是在测试过程中,对于某些不容易构造(如 HttpServletRequest 必须在Servlet 容器中才能构造出来)或者不容易获取比较复杂的对象(如 JDBC 中的ResultSet 对象),用一个虚拟的对象(Mock 对象)来创建以便测试的测试方法。Mock 最大的功能是帮你把单元测试的耦合分解开,如果你的代码对另一个类或者接口有依赖,它能够帮你模拟这些依赖,并帮你验证所调用的依赖的行为。比如一段代码有这样的依赖:当我们需要测试A类的时候,如果

2020-08-31 23:46:34 1670

转载 JSR 303 – Bean Validation 介绍及最佳实践

关于 Bean Validation在任何时候,当你要处理一个应用程序的业务逻辑,数据校验是你必须要考虑和面对的事情。应用程序必须通过某种手段来确保输入进来的数据从语义上来讲是正确的。在通常的情况下,应用程序是分层的,不同的层由不同的开发人员来完成。很多时候同样的数据验证逻辑会出现在不同的层,这样就会导致代码冗余和一些管理的问题,比如说语义的一致性等。为了避免这样的情况发生,最好是将验证逻辑与相应的域模型进行绑定。Bean Validation 为 JavaBean 验证定义了相应的元数据模型和 A

2020-08-31 23:44:55 918

原创 Git命令按人统计提交次数和代码量

=== 统计每个人的代码量git log --format='%aN'|sort-u |whilereadname;doecho-en"$name\t"; git log --author="$name"--pretty=tformat: --numstat |awk'{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %...

2020-08-31 23:31:28 3048

转载 整洁架构

本文是关于Bob大叔关于整洁架构的一篇学习笔记。前言整洁架构(Clean Architecture)是由Bob大叔在2012年提出的一个架构模型,顾名思义,是为了使架构更简洁。在开始深入的介绍这个架构之前,Bob大叔首先提到了近些年来比较流行的一个系统架构,包括Hexagonal Architecture,Onion Architecture,以及他自己以前提出的Screaming architecuture等。并且着中说道通过这些架构产生的系统特点是:独立的框架. 这样的.

2020-07-03 20:41:48 3729

转载 忘掉 Snowflake,感受一下性能高出 587 倍的全局唯一 ID 生成算法

今天我们来拆解 Snowflake 算法,同时领略百度、美团、腾讯等大厂在全局唯一 ID 服务方面做的设计,接着根据具体需求设计一款全新的全局唯一 ID 生成算法。这还不够,我们会讨论到全局唯一 ID 服务的分布式 CAP 选择与性能瓶颈。已经熟悉 Snowflake 的朋友可以先去看大厂的设计和权衡。百度 UIDGenertor:https://github.com/baidu/uid-...美团 Leaf:https://tech.meituan.com/2017...腾讯 Seqsvr

2020-07-03 20:33:16 1898

转载 Zookeeper集群脑裂问题

关于集群中的"脑裂"问题,之前已经在这里详细介绍过,下面重点说下Zookeeper脑裂问题的处理办法。ooKeeper是用来协调(同步)分布式进程的服务,提供了一个简单高性能的协调内核,用户可以在此之上构建更多复杂的分布式协调功能。脑裂通常会出现在集群环境中,比如ElasticSearch、Zookeeper集群,而这些集群环境有一个统一的特点,就是它们有一个大脑,比如ElasticSearch集群中有Master节点,Zookeeper集群中有Leader节点。一、 Zookeeper 集群节点为什么

2020-06-24 23:15:36 1442

转载 Resilience4j-轻量级熔断框架

Resilience4j简介Resilience4j是一款轻量级,易于使用的容错库,其灵感来自于Netflix Hystrix,但是专为Java 8和函数式编程而设计。轻量级,因为库只使用了Vavr,它没有任何其他外部依赖下。相比之下,Netflix Hystrix对Archaius具有编译依赖性,Archaius具有更多的外部库依赖性,例如Guava和Apache Commons Configuration。要使用Resilience4j,不需要引入所有依赖,只需要选择你需要的。Resil

2020-06-11 23:08:22 1951

转载 高可用框架Resilience4j使用指南

介绍Hystrix停更之后,Netflix官方推荐移步至resilience4j,它是一个轻量、易用、可组装的高可用框架,支持熔断、高频控制、隔离、限流、限时、重试等多种高可用机制。与Hystrix相比,它有以下一些主要的区别:Hystrix调用必须被封装到HystrixCommand里,而resilience4j以装饰器的方式提供对函数式接口、lambda表达式等的嵌套装饰,因此你可以用简洁的方式组合多种高可用机制 Hystrix的频次统计采用滑动窗口的方式,而resilience4j.

2020-06-11 23:07:34 3728

转载 JSR 303 - Bean Validation 介绍及最佳实践

关于 Bean Validation在任何时候,当你要处理一个应用程序的业务逻辑,数据校验是你必须要考虑和面对的事情。应用程序必须通过某种手段来确保输入进来的数据从语义上来讲是正确的。在通常的情况下,应用程序是分层的,不同的层由不同的开发人员来完成。很多时候同样的数据验证逻辑会出现在不同的层,这样就会导致代码冗余和一些管理的问题,比如说语义的一致性等。为了避免这样的情况发生,最好是将验证逻辑与相应的域模型进行绑定。Bean Validation 为 JavaBean 验证定义了相应的元数据模型和 A

2020-06-11 23:04:40 884

转载 MySQL优化器:index merge介绍

在MySQL官方手册上,关于index merge的介绍非常非常少。甚至还有不少误导的地方,这次把5.1版本关于此类优化处理的代码细看了一遍,以案例的方式介绍了各种实用index merge访问类型的SQL。后续的还会继续介绍index merge实现的主要数据结构,以及成本评估。1. 什么是index mergeMySQL优化器如果发现可以使用多个索引查找后的交集/并集定位数据,那么MySQL优化器就会尝试index merge这类访问方式。index merge主要分为两大类,多个索引交集访问(

2020-05-26 21:22:50 1660

转载 MySQL 优化之 index merge(索引合并)

深入理解 index merge 是使用索引进行优化的重要基础之一。理解了 index merge 技术,我们才知道应该如何在表上建立索引。1. 为什么会有index merge我们的 where 中可能有多个条件(或者join)涉及到多个字段,它们之间进行 AND 或者 OR,那么此时就有可能会使用到 index merge 技术。index merge 技术如果简单的说,其实就是:对多个索引分别进行条件扫描,然后将它们各自的结果进行合并(intersect/union)。MySQL5.0之前

2020-05-26 21:20:30 1267

转载 MySQL 优化之 index merge(索引合并)

深入理解 index merge 是使用索引进行优化的重要基础之一。理解了 index merge 技术,我们才知道应该如何在表上建立索引。1. 为什么会有index merge我们的 where 中可能有多个条件(或者join)涉及到多个字段,它们之间进行 AND 或者 OR,那么此时就有可能会使用到 index merge 技术。index merge 技术如果简单的说,其实就是:对多个索引分别进行条件扫描,然后将它们各自的结果进行合并(intersect/union)。MySQL5.0之前

2020-05-26 21:19:33 1451

转载 MySQL 优化之 index merge(索引合并)

深入理解 index merge 是使用索引进行优化的重要基础之一。理解了 index merge 技术,我们才知道应该如何在表上建立索引。1. 为什么会有index merge我们的 where 中可能有多个条件(或者join)涉及到多个字段,它们之间进行 AND 或者 OR,那么此时就有可能会使用到 index merge 技术。index merge 技术如果简单的说,其实就是:对多个索引分别进行条件扫描,然后将它们各自的结果进行合并(intersect/union)。MySQL5.0之前

2020-05-26 21:18:56 972

转载 谷歌OKR指导手册 (译)

译者:乔梁 来源:《持续交付2.0》公众号这是一本关于 OKR 迷你小册子,名为《google OKR playbook》,由www.whatMatters.com网站发布。该网站由John Doerr 团队经营,而John Doerr 正是 1999年将 OKR 引入谷歌的那个人。本文仅供大家学习参考,虽然文章较长,但值得一读,欢迎收藏。文章的末尾有一些8 道自我测试题,...

2020-04-29 23:52:16 1201

转载 记录下两个孩子在MineCraft里面还原公寓的经历

前不久,我们家两个小朋友沉迷于玩“我的世界”(MineCraft),考虑到堵不如疏,还是正面引导他们比较好,于是和孩子的妈妈商量后,给他两出了个题目:“把我们住的公寓在MineCraft里面搭出来”。为了激励他们,告诉他们如果2个月内搭好,还可以给他们奖励一个大乐高玩具。小朋友们一听,可来劲了,觉得又有意思又有挑战,还有玩具拿,马上就要打开游戏机开始搭。哪是那么容易的事情!于是就问了他们几个问...

2020-04-13 00:12:27 1082

转载 Make it run, make it right, make it fast

如果问我工作十多年后相比刚毕业参加的时候,学到了哪些重要的经验,那么“Make it work, make it right, make it fast”一定是其中最重要的经验之一。第一次听到这句话是从以前老板@沈嵘那里,然后发现是来源自大牛Kent Beck《Make It Work Make It Right Make It Fast》。这是软件项目开发的一条经典原则,实际上不...

2020-04-13 00:11:18 1119

转载 涨工资的那点事

刚毕业那几年,每次到加薪前,心里总是充满忐忑和期待,加薪后,有时惊喜有时失望。但当时并不太明白加薪背后的事情,公司到底是按照什么来给我们加工资的?随着工作经历增加,对涨工资这件事慢慢能泰然处之,也开始转变角色,要去处理部门员工涨薪资的事情。尝试写篇文章总结一下,当是给当年的自己或有类似困惑的对这个问题的一个解答。加薪这个事情,每个公司的操作方式肯定都是不一样的,大公司和小公司,外企国企私企,甚...

2020-04-13 00:10:10 1714

转载 《构建之法》读后感之项目计划

最近看到《构建之法》的“8.6 计划和估计”这一节,颇多感触。这些年来,不同的阶段,对项目计划都有不同的认识和掌握。邹老师提到了制定计划的几个概念:目标、估计和决心。目标:表明一个希望达到的状态。例如,软件“五一”之前要投放市场!在建校一百周年之时把我校建成世界一流大学!不论这类目标如何重要,它们未必能够实现。 估计:以当前了解的情况和掌握的资源,要花费多少人力物力时间才能实现某事。...

2020-04-13 00:03:53 1046

转载 如何面试程序员

最近被“Homebrew作者因为不会在白板上翻转二叉树而被谷歌面试拒绝”这事各种刷屏,知乎、Quora都是热门问题,连LeetCode都专门增加了这道题。说到面试这种事,一般网上讨论的热点都是如何去应对面试的方法技巧,很少有文章去讲如何面试别人,而在工作几年后,去面试别人很有可能变成日常工作的一部分,而大多数时候是没有经过什么培训就被赶鸭子上架了,只能是自己逐步摸索。所以一直想整理总结一下如何...

2020-04-13 00:00:46 1125

转载 Sublime配置

皮肤SetiGitHub - ctf0/Seti_ST3: Seti_UI Port for ST3.Flatland蓝色调,眼睛看的舒服thinkpixellab/flatland · GitHubOceanic Next Color Schemevoronianski/oceanic-next-color-scheme · GitHub配色...

2020-04-12 23:58:52 888

转载 程序员也可以懂一点期望值管理

刚开始做程序员的时候,主要的心思都放在代码上,没有太关注和其他人之间的相处,更没有考虑过期望值和管理期望值的事情。直到我后来开始做技术管理,有一次听老板跟我讲:“管理,最重要的就是管理期望值”,我才开始关注有关期望值的问题,慢慢才发现生活中“期望值”无所不在,只是很多时候没有意识到罢了。比如上学的时候,某次考试,平时都是考60分左右的学渣考了80分,而平时都考90分的学霸也是考了80分,一般老...

2020-04-12 23:56:05 951

转载 Code Review最佳实践

我一直认为Code Review(代码审查)是软件开发中的最佳实践之一,可以有效提高整体代码质量,及时发现代码中可能存在的问题。包括像Google、微软这些公司,Code Review都是基本要求,代码合并之前必须要有人审查通过才行。然而对于我观察到的大部分软件开发团队来说,认真做Code Review的很少,有的流于形式,有的可能根本就没有Code Review的环节,代码质量只依赖于...

2020-04-12 23:54:55 807

转载 把技术卖给不懂技术的人

曾参加过一次技术聚会,大多数都是程序员,一起的有台湾的郭安定老师,郭老师经历比较丰富,席间就有人问他,程序员怎么赚钱?郭老师的回答很精辟:“把技术卖个不懂技术但需要技术的人”,仔细回味一下,确实是这么个理,一般程序员圈子都比较小,比较宅,打交道的也都是程序员为主的技术圈子,很难把自己和技术推销出去,而且还有很多程序员热衷于把自己的技术推向给程序员,这可真难,比如有人写了一个号称很牛X的权限管理系统...

2020-04-12 23:53:32 881

转载 如何高效的学习掌握新技术

最近一段时间,把React学习实践了一把,算是又多掌握了一门新技术,虽然学习过程比较辛苦曲折,但熟练掌握后感觉还是很好的,以后又多了一种选择,在技术思路上也开阔了很多。回想编程生涯这些年,2001年开始学习Asp,2002年学习Javascript,2003年学习Asp.Net/C#,2009年学习Objective-C,2013年又跳到前端这个大坑,从Nodejs到jQuery到Angula...

2020-04-12 23:52:09 1419

转载 Nodejs开源项目推荐

当我们学习一门新语言,不要用以前语言的习惯去使用新的语言,这样可能会导致走一些弯路。最好的办法就是去看一些写的比较好的开源项目,所以这里我推荐几个NodeJs的开源项目,花点时间去研究一下他们的实现,这样会上手比较快。NodeClubNode Club 是用 Node.js 和 MongoDB 开发的新型社区软件,界面优雅,功能丰富,小巧迅速, 已在Node.js 中文技术社区 CNode...

2020-04-12 23:50:07 2177

转载 一些常见面试问题背后的逻辑是什么?

以前我上大学那会,学校的就业办主要就是帮你安排招聘会,从来没听说针对面试的辅导或者模拟面试啥的,所有的面试经验都来源于网上写的一些文章,然后再在面试的时候通过各种碰壁去揣测面试官在想啥。前不久美国的西北大学给我们公司HR发邮件,邀请志愿者去学校做模拟面试,我很感兴趣,于是也报名参加了。这次模拟面试主要是Behavioral Based,和专业无关,每个学生大约45分钟时间,其中30分钟面试...

2020-04-12 23:48:28 1451

转载 从软件工程的角度解读任正非的新年公开信

昨天被任正非的那封《全面提升软件工程能力与实践,打造可信的高质量产品》的公开信刷屏了,作为一个软件工程专业科班出身的软件开发从业者,自然是引起了我(@宝玉xp)的好奇,仔细阅读之下确实让我大吃一惊,看似八股官方文,但细看之下是作者对于软件工程的理解确实非常深刻,各种专业术语信手拈来,比喻恰到好处。我对华为的研发其实一直挺好奇的,从传统的硬件公司,到现在软硬件齐头并进,华为手机销量都已经超过了苹...

2020-04-12 23:45:45 792

转载 Activiti工作流引擎使用详解(一)

一、IDEA安装activiti插件在插件库中查找actiBPM,安装该插件,如果找不到该插件,请到插件库中下载该包手动安装,插件地址http://plugins.jetbrains.com/plugin/7429-actibpm 安装后重启IDEA二、activiti基础环境搭建2.1 actiBPM插件使用示例将需要用到的activiti包引入到工程中<depe...

2020-03-02 00:02:12 1753

转载 activiti工作流引擎入门教程

activiti简介Activiti项目是一项新的基于Apache许可的开源BPM平台,从基础开始构建,旨在提供支持新的BPMN 2.0标准。Activiti是一种轻量级,可嵌入的BPM引擎,而且还设计适用于可扩展的云架构。 Activiti将提供宽松的Apache许可2.0,同时促进Activiti BPM引擎和BPMN 2.0的匹配。activiti的7大马车1.Repos...

2020-03-02 00:01:07 13924 6

转载 Activiti - 新一代的开源 BPM 引擎

背景介绍Activiti 其核心是 BPMN 2.0 的流程引擎。BPMN 是目前被各 BPM 厂商广泛接受的 BPM 标准,全称为 Business Process Model and Notation,由 OMG 组织进行维护,2011 年 1 月份发布了其 2.0 的正式版。BPMN 2.0 对比于第一个版本,其最重要的变化在于其定义了流程的元模型和执行语义,即它自己解决了存储、交换和执...

2020-03-01 23:59:12 1869

转载 Activiti最全入门教程

工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现”。工作流管理系统(Workflow Management System, WfMS)是一个软件系统,它完成工作量的定义和管理,并按照在系统中预先定义好的工作流规则进行工作流...

2020-03-01 22:52:11 1689

转载 Nginx 教程

Nginx 安装Nginx 是一款面向性能设计的 HTTP 服务器,能反向代理 HTTP,HTTPS 和邮件相关(SMTP,POP3,IMAP)的协议链接。并且提供了负载均衡以及 HTTP 缓存。它的设计充分使用异步事件模型,削减上下文调度的开销,提高服务器并发能力。采用了模块化设计,提供了丰富模块的第三方模块。所以关于 Nginx,有这些标签:「异步」「事件」「模块化」「高性能」「高并发...

2020-02-04 21:32:41 2145

转载 jQuery 选择器

jQuery 选择器请使用我们的jQuery 选择器检测器来演示不同的选择器。选择器 实例 选取 * $("*") 所有元素 #id $("#lastname") id="lastname" 的元素 .class $(".intro") class="intro" 的所有元素 .class,.class $(".in...

2020-02-04 21:32:39 853

转载 docker教程

Docker 是一个开源的应用容器引擎,而一个容器其实是一个虚拟化的独立的环境,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。Docker的局限性之一,它只能用在 64 位的操作系统上。安装yum install docker # CentOS 中安装...

2020-02-04 21:32:24 1490

转载 Java数据结构和算法(七)——链表

前面博客我们在讲解数组中,知道数组作为数据存储结构有一定的缺陷。在无序数组中,搜索性能差,在有序数组中,插入效率又很低,而且这两种数组的删除效率都很低,并且数组在创建后,其大小是固定了,设置的过大会造成内存的浪费,过小又不能满足数据量的存储。  本篇博客我们将讲解一种新型的数据结构——链表。我们知道数组是一种通用的数据结构,能用来实现栈、队列等很多数据结构。而链表也是一种使用广泛的通用数据结构...

2020-02-04 21:32:22 857

转载 100个JavaScript代码片段

实现字符串长度截取function cutstr(str, len) { var temp; var icount = 0; var patrn = /[^\x00-\xff]/; var strre = ""; for (var i = 0; i < str.length; i++) { ...

2020-02-02 10:00:01 2806

转载 正则表达式

正则表达式是匹配模式,要么匹配字符,要么匹配位置。请记住这句话第一章 正则表达式字符匹配攻略1.1 两种模糊匹配如果正则只有精确匹配是没多大意义的,比如/hello/,也只能匹配字符串中的"hello"这个子串var regex = /hello/;console.log( regex.test("hello") ); // => true正则表达式之所以...

2020-02-02 09:58:21 1328

转载 前端面试-复习篇上

一、CSS#1. 盒模型页面渲染时,dom元素所采用的 布局模型。可通过box-sizing进行设置。根据计算宽高的区域可分为content-box(W3C标准盒模型) border-box(IE盒模型) padding-box margin-box(浏览器未实现)#2. BFC块级格式化上下文,是一个独立的渲染区域,让处于BFC内部的元素与外部的元素...

2020-02-02 09:54:43 1290

搜索引擎以及网上免费学术资源的检索

介绍了一下搜索引擎的工作原理和组成部分,以Google和百度为代表介绍了搜索引擎的高级检索功能,以及搜索引擎非常强大的最常用的八条高级检索命令,最后对网上免费学术资源网站进行了介绍。

2015-09-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除