自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

东海陈光剑的博客

公众号: Kotlin 开发者社区。 阿里巴巴资深程序员。著有《Kotlin 极简教程》、《Spring Boot 开发实战》、《Kotlin从入门到进阶实战》等技术书籍。

  • 博客(49)
  • 资源 (2)
  • 论坛 (1)
  • 收藏
  • 关注

原创 长大后的我们为何贪恋年少?

长大后的我们,之所以会再次贪恋年少的日子,是因为我们贪恋的其实不是时间,而是年少时纯粹的灵魂和懵懂的情愫。最简单的情愫往往震慑心扉,回味起来,温柔又轻盈……而这种真切的情愫,在经历了数十年的人生之后的一个春天的梦里,我们又回到了那个少年的时光,又那么真实亲切地感受到了你的音容笑貌,这种心灵最初的悸动,最纯真的情愫,终生难忘. ​​​​...

2020-04-29 00:00:18 269

原创 三十有感

三十有感其一我辈孤且直自然贫且贱何当隐去山林间只把初心看高卧云烟洞天隐松峰之畔吾乃一剑仙其二误入凡间三十年庸庸碌碌一光剑三十年来无所成向来回首竟不堪其三三十年来寻剑客几回落花又抽枝自打一见桃花后直至如今更不疑其四无才无德有忧愁沧海枯来得夜光可怜憔悴苍颜客曾是执剑少年郎零碎在这个世界上我曾撒下过许多零碎的精神也曾爱过许多零碎的人看过许多零碎的...

2020-04-28 23:34:22 1300 1

原创 SLA服务可用性4个9是什么意思?如何保证服务的高可用性 HA(High Availability)?...

如何保证服务的高可用性 HA(High Availability)?高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统...

2020-04-28 10:10:00 735 1

原创 传统测试向工程效能转型的最佳实践

嘉宾演讲视频及PPT:suo.im/5mDFag摘要本次演讲首先会介绍Quality Engineering向Engineering Productivity转型的概念,接着通过一步步的实践引出转型后的测试基础架构。Quality Engineering向Engineering Productivity的转型从Google谈起Google 的GTAC大会从测试技术上来讲可以说是国际上最权...

2020-04-28 09:15:03 243

原创 混沌工程(Chaos Engineering) 到底是什么?

2014年,Netflix团队创建了一种新的角色,叫作混沌工程师(Chaos Enigneer),并开始向工程社区推广。项目目标、业务场景、人员结构、实施方式的不同导致了对于稳定状态行为的定义不太标准。多元化的业务场景、规模化的服务节点及高度复杂的系统架构,每天都会遇到各式各样的故障。这些故障信息就是最真实的混沌工程变量。为了能够更体感、有效率地描述故障,优先分析了P1和P2的故障...

2020-04-28 02:07:13 802

原创 SLA服务可用性4个9是什么意思?如何保证服务的高可用性 HA(High Availability)?...

如何保证服务的高可用性 HA(High Availability)?高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。方法论上,高可用是通过冗余+自动故障转移来实现的。我们都知道,单点是系统高可用的大敌,单点往往是系统高可用最大的风险和敌人,应该尽量在系统设计的过程中避免单点。方法论上,高可用保证的原...

2020-04-28 00:25:03 1013

原创 Leetcode93. 复原IP地址

题目描述给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。示例:输入: "25525511135"输出: ["255.255.11.135", "255.255.111.35"]93. Restore IP AddressesGiven a string containing only digits, restore it by returning all poss...

2020-04-26 23:00:12 216

原创 关于自由人的信仰:忠于自己的理想,勇于面对出现在自己人生道路上的任何东西...

放弃为私人利益的奋斗,不对片刻的欲望孜孜以求。充满激情地追求永恒的事物——这就是解放;这就是自由人的信仰。这种解放是对命运深思熟虑后产生的,而被时间精炼之火净化得毫无杂质的意识决定着命运本身。他保持着一种新的视野,让爱之光洒满一切日常事务,人的生命是黑暗中的长途跋涉,被隐形的敌人所包围。为困倦和痛苦所折磨,朝向一个难以到达而且不能久留的目标前进,在前进途中,我们的同伴一个一个地从我们眼前消失,被...

2020-04-26 21:47:36 353

原创 maven 命令: 下载依赖包的源代码

maven 命令: 下载依赖包的源代码mvn dependency:sources或者mvn dependency:sources -DdownloadSources=true -DdownloadJavadocs=trueKotlin开发者社区专注分享 Java、 Kotlin、Spring/Spring Boot、MySQL、redis、neo4j、NoSQL、A...

2020-04-26 13:54:11 502

原创 maven缺少依赖包,强制更新依赖命令

maven缺少依赖包,强制更新依赖命令:mvn clean install -e -U -Dmaven.test.skip=true其中,-e详细异常,-U强制更新-DskipTests,不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下。-Dmaven.test.skip=true,不执行测试用例,也不编译测试用例类。使用maven....

2020-04-26 13:52:06 1292

原创 Mybatis中判断集合的 size 不为空

Mybatis中判断集合的size, 可以用下面的方法来做。<if test="null != staffCodeList and staffCodeList.size > 0">and gui.USER_CODE not in <foreach collection="staffCodeList" item="staffCode" open="(" separ...

2020-04-26 13:11:41 780

原创 荠菜

“城中桃李愁风雨,春在溪头荠菜花。”辛弃疾的《鹧鸪天》中,描绘了荠菜最美的画面。荠菜在我的儿时记忆里是大片大片的绿油油的麦田,然后是提着竹篮儿,拿着小锄头儿,跟着大人们和一群小伙伴们一起去麦田里挖荠菜。小时候还不识字,只听大人们说“花荠菜”,想着是这菜儿长得像花儿一样。荠菜给我的味觉记忆就是荠菜饺子了。长大了之后,在很多饭馆,食堂也都吃过荠菜饺子,荠菜馄饨儿,虽然也有那股荠...

2020-04-25 23:33:11 262

原创 蒌蒿

蒌蒿满地芦芽短,正是河豚欲上时。《尔雅·释草》“购、蔏蔞” 晋 郭璞 注:“蔏蔞,蔞蒿也。” 宋 苏轼 《惠崇春江晓景》诗之一:“蔞蒿满地芦芽短,正是河豚欲上时。” 元 乔吉 《满庭芳·渔父词》曲:“蔞蒿香脆芦芽嫩,烂煮河豚。”蒌蒿,多年生草本;植株具清香气味。嫩茎及叶作菜蔬或腌制酱菜。蒌蒿嫩茎与猪油炒食,味极佳。蒌蒿全草入药,...

2020-04-25 16:22:29 222

原创 我希望

我希望我的文字能发出微光 照亮世道人心善良的地方 让人觉得生活是美好的 生命是值得的 每一天都是值得好好度过的 自然是美的,有诗意的 每一个生命都值得被尊重 每一个人都值得被理解 但愿你能够忘掉生活的悲伤痛苦 忘掉那些不如意的让你难过焦虑甚至绝望的人和事情 ...

2020-04-24 22:39:40 172

转载 Java HashSet 的实现源码解析

HashSet 是一个没有重复元素的集合。基于HashMap实现。简介HashSet定义:public class HashSet<E> extends Abstr...

2020-04-24 22:06:44 164

原创 分布式系统中的BASE 和 ACID、幂等性、分布式锁、分布式事务与异步消息处理

一、BASE 和 ACIDACIDACID 四项特性分别为:原子性(A)。所有的系统都受惠于原子性操作。当我们考虑可用性的时候,没有理由去改变分区两侧操作的原子性。而且满足 ACID 定义的、高抽象层次的原子操作,实际上会简化分区恢复。一致性(C)。ACID 的 C 指的是事务不能破坏任何数据库规则,如键的唯一性。与之相比,CAP 的 C 仅指单一副本这个意义上的一致性,因...

2020-04-23 15:16:25 428

转载 阿里巴巴为什么能抗住90秒100亿?看完这篇你就明白了! [服务端高并发分布式架构演进之路]...

1、概述本文以淘宝作为例子,介绍从一百个并发到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,文章最后汇总了一些架构设...

2020-04-23 11:45:45 225

原创 mysql分布式数据库的逻辑库、物理库和分库分表和TDDL图文详解

什么逻辑库、物理库?逻辑库/逻辑文件:给用户看的(即Database和Table就是我们常说的逻辑库的范畴)物理库/物理文件:存储在计算机中的(即机器和Port就是我们常说的物理库的范畴。)一个服务器有多个实例(port);一个实例有多个Database(db);一个DB有多张表(Table);物理表、库:物理表是具体某个数据源中的一张表。对于mysql就是一个tab...

2020-04-23 11:20:41 1197

原创 MySql表、字段、库的字符集修改及查看方法和Mysql错误1366的解决办法:Incorrect string value: '\xF0\x9F...' for column 'XXX' at......

这篇文章主要介绍了MySql表、字段、库的字符集修改及查看方法,本文分别给们它的修改及查看语句,需要的朋友可以参考下。修改数据库字符集:代码如下:ALTER DATABASE db_name DEFAULT CHARACTER SET character_name [COLLATE ...];ALTER DATABASE db_name CHARACTER SET utf8...

2020-04-22 15:35:31 168

原创 开源图数据库neo4j极简教程

随着社交、电商、金融、零售、物联网等行业的快速发展,现实社会织起了了一张庞大而复杂的关系网,传统数据库很难处理关系运算。大数据行业需要处理的数据之间的关系随数据量呈几何级数增长,亟需一种支持海量复杂数据关系运算的数据库,图数据库应运而生。世界上很多著名的公司都在使用图数据库。比如:社交领域:Facebook, Twitter,Linkedin用它来管理社交...

2020-04-22 13:28:57 755

原创 分布式系统中的“无状态”和“有状态”详解

「数据一致性」和「高可用」其实本质是一个通过提升复杂度让整体更完善的方式。本文主要讲一些让系统更简单,更容易维护的东西——「易伸缩」,首当其冲的主题就是「stateless」,也叫「无状态」。服务的“状态”无状态的服务客户端的每次请求必须具备自描述信息,通过这些信息识别客户端身份。服务端不保存任何客户端请求者信息。无状态的好处?客户端请求不依赖服务端的信息,任何多...

2020-04-22 02:56:50 2112 1

原创 LeetCode242/567.字符串的排列:有效的字母异位词(Kotlin语言)

LeetCode242.有效的字母异位词题目描述给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1:输入: s = "anagram", t = "nagaram"输出: true示例 2:输入: s = "rat", t = "car"输出: false说明:你可以假设字符串只包含小写字母。进阶:如果输入字符串包含 u...

2020-04-22 01:38:28 163

原创 LeetCode14.最长公共前缀(Kotlin语言)

LeetCode14.最长公共前缀(Kotlin语言)题目描述编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例 1:输入: ["flower","flow","flight"]输出: "fl"示例 2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:所有输入只包含小...

2020-04-21 23:17:43 163

原创 LeetCode3.滑动窗口: 双指针法(Kotlin语言)-无重复字符的最长子串

LeetCode3.滑动窗口: 双指针法(Kotlin语言)-无重复字符的最长子串题目描述无重复字符的最长子串给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例 1:输入: "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串...

2020-04-21 15:43:11 299

原创 动态规划算法图文详解(Kotlin语言):二维矩阵中找到只包含 1 的最大正方形(LeetCode-221)...

题目描述在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。示例:输入:1 0 1 0 01 01 111 11 111 0 0 1 0输出: 4...

2020-04-21 10:10:00 239

原创 Java并发多线程高频面试题

并发知识不管在学习、面试还是工作过程中都非常非常重要,看完本文,相信绝对能助你一臂之力。1、线程和进程有什么区别?线程是进程的子集,一个进程可以有很多线程。每个进程都有自己的内存空间,可执行代码和唯一进程标识符(PID)。每条线程并行执行不同的任务。不同的进程使用不同的内存空间(线程自己的堆栈),而所有的线程共享一片相同的内存空间(进程主内存)。别把它和栈内存搞混,每个线程都...

2020-04-21 01:22:38 307

原创 TCP三次握手和四次挥手?TCP如何保证可靠性?什么是TCP滑动窗口?

TCP三次握手和四次挥手?三次握手tcp3handshake.giftcp3handshake2.giftcp3handshake3.giftcp3handshake4.gif四次挥手tcp4fin.giftcp4fin2.gifTCP协议保证数据传输可靠性的方式?1、将数据截断为合理的长度...

2020-04-21 00:33:50 398

原创 动态规划算法图文详解(Kotlin语言):二维矩阵中找到只包含 1 的最大正方形(LeetCode-221)...

题目描述在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。示例:输入:1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4问题求解1.暴力求解法源代码/** * 暴力破解法 */fun maximalSquare(matrix: Array<CharArray>): Int ...

2020-04-20 23:46:34 300

转载 图文详解布隆过滤器(Bloom Filter): 如何快速判断某 URL 是否在 20 亿的网址 URL 集合中?...

问题问题描述:一个网站有 20 亿 url 存在一个黑名单中,这个黑名单要怎么存?若此时随便输入一个 url,你如何快速判断该 url 是否在这个黑名单中?并且需在给定内存空间(比如:5...

2020-04-20 10:10:00 654

转载 [数据结构与算法] 2.快速排序 Java 实现

概念快速排序(Quicksort)是对冒泡排序的一种改进。参考:[数据结构与算法(Kotlin语言)]1.冒泡排序(Bubble Sort)快速排序是C.R.A.Hoare于1962...

2020-04-20 10:10:00 250

原创 [数据结构与算法] 1.冒泡排序(Bubble Sort)

算法简介冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中...

2020-04-20 10:10:00 182

原创 滑动窗口算法原理图解 (Kotlin 语言) : 长度最小的子数组-LeetCode 209

题目:给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 sum ≥ s 的长度最小的连续子数组。如果不存在符合条件的连续子数组,返回 0。示例:输入: s = 7, nums = [2,3,1,2,4,3]输出: 2解释: 子数组 [4,3] 是该条件下的长度最小的连续子数组。进阶:如果你已经完成了O(n) 时间复杂度的解法, 请尝试 O(n ...

2020-04-20 01:52:51 239

转载 [精华] UML (统一建模语言) 各种图总结

UML(Unified Modeling Language)是一种统一建模语言,为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言。下面将对UML的九种图+包图的基本概念进行介绍以及各个图的使用场景。一、基本概念    如下图所示,UML图分为用例视图、设计视图、进程视图、实现视图和拓扑视图,又可以静动分为静态视图和动态视图。静态图分为:用例图,类图,对象图,包图,构...

2020-04-20 00:41:33 208

原创 Java 阻塞队列 BlockingQueue 详解: 生产者消费者问题

BlockingQueue 解决方案生产者消费者问题的任何有效解决方案都必须控制对产生资源的生产的put() 方法的调用以及对消耗资源的消费者的 take() 方法的调用。一旦实现了对方法阻塞的控制,就可以解决问题。Java提供了开箱即用的支持来控制此类方法的调用,其中一个线程正在创建资源而另一个线程正在消耗资源 BlockingQueue。程序包中的 Java Blockin...

2020-04-16 11:38:50 450

原创 Java 阻塞队列 BlockingQueue 详解: put,add 和 offer 三个方法

BlockingQueuejava.util.concurrent public interface BlockingQueue<E> extends Queue<E>A Queue that additionally supports operations that wait for the queue to become non-emp...

2020-04-16 11:31:41 903

转载 实时协同编辑的实现: 编辑锁, OT算法

实时协同编辑的实现在最近某个项目中打算使用协同编辑来解决冲突问题,因此抽空调研了现有的实现方案,结果发现要想做完美是很难的,但我们可以低成本地做到不错的效果,本文将介绍几种实现方法,大家...

2020-04-15 10:10:00 1283

原创 Linux 内核的 4 大 IO 调度算法

Linux 内核包含4个IO调度器,分别是 Noop IO scheduler、Anticipatory IO scheduler、Deadline IO scheduler 与 CFQ IO scheduler。anticipatory, 预期的;提早发生的;期待着的通常磁盘的读写影响是由磁头到柱面移动造成了延迟,解决这种延迟内核主要采用两种策略:缓存和IO调度算法来进行...

2020-04-14 23:54:18 998

原创 【系统架构】消息中间件的架构和原理

消息中间件的作用就是用来异步化并发能力的一个载体,不仅如此,它仍然需要在架构上保证很多能力,高可用,高并发,可扩展,可靠性,完整性,保证顺序等,光是这些都已经让各种设计者比较头疼了; 更有一些变态的需求,例如慢消费,不可重复等需要花的设计代价是相当高的,所以不要盲目的迷信开源大牛,对于很多机制,几乎都要重建;建立一个符合所有业务,好用,通用的私有云,没那么简单。如果说一个支付系统...

2020-04-14 22:53:44 318

原创 一道有难度的经典大厂面试题:如何快速判断某 URL 是否在 20 亿的网址 URL 集合中?...

问题问题描述:一个网站有 20 亿 url 存在一个黑名单中,这个黑名单要怎么存?若此时随便输入一个 url,你如何快速判断该 url 是否在这个黑名单中?并且需在给定内存空间(比如:500M)内快速判断出。分析可能很多人首先想到的会是使用 HashSet,因为 HashSet基于 HashMap,理论上时间复杂度为:O(1)。达到了快速的目的,但是空间复杂度呢?URL字...

2020-04-14 22:12:52 567

原创 如何设计一个消息中间件? 消息中间件的总体架构

MQ 概念1.消息(Message)消息是MQ中最小的概念,本质上就是一段数据,它能被一个或者多个应用程序所理解,是应用程序之间传递的信息载体。2.队列(Queue)2.1 本地队列本地队列按照功能可划分为初始化队列,传输队列,目标队列和死信队列。初始化队列用作消息触发功能。传输队列只是暂存待传的消息,条件许可的情况下,通过管道将消息传送到其他的队列管理器。目标队列...

2020-04-14 22:03:06 482

An introduction to functional programming through lambda calculus.PDF.zip

Author: Michaelson, Greg Functional programming is rooted in lambda calculus, which constitutes the world's smallest programming language. This well-respected text offers an accessible introduction to functional programming concepts and techniques for students of mathematics and computer science. The treatment is as nontechnical as possible, and it assumes no prior knowledge of mathematics or functional programming. Cogent examples illuminate the central ideas, and numerous exercises appear throughout the text, offering reinforcement of key concepts. All problems feature complete solutions.

2019-09-22

《Kotlin项目实战开发》第3章+类型系统与可空类型

《Kotlin项目实战开发》 第3章 类型系统与可空类型 跟Java、C和C ++ 一样, Kotlin也是“静态类型编程语言”。 通常,编程语言中的类型系统中定义了  如何将数值和表达式归为不同的类型  如何操作这些类型  这些类型之间如何互相作用 我们在编程语言中使用类型的目的是为了让编译器能够确定类型所关联的对象需要分配多少空间。 在每一个编程语言中,都有一个特定的类型系统。静态类型在编译时期时,就能可靠地发现类型错误。因此通常能增进最终程序的可靠性。 类型系统在各种语言之间有非常大的不同,主要的差异存在于编译时期的语法,以及运行时期的操作实现方式。 本章我们简单介绍一下Kotlin的类型系统。

2017-09-30

一个会写诗的程序员的留言板

发表于 2020-01-02 最后回复 2020-05-18

空空如也

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

TA关注的人 TA的粉丝

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