自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

等一杯咖啡的博客

非自旋无以解锁...

  • 博客(148)
  • 资源 (18)
  • 收藏
  • 关注

原创 《亚马逊CEO贝佐斯的股东信(1997-2020)》读后感

写在前面I. 总体感想II. 阅读笔记◆ 贝索斯给股东的一封信(1997-2011)97年已经触达了这么多内容,还以为个性化推荐是这些年才兴起的概念。今天线上交易为客户节省了很多金钱和宝贵的时间。明天,通过个性化推荐,线上交易将会加速发展。巩固地位时也要寻找新的增长机会,不进则退。我们的目标是快速夯实和扩展我们现在的位置,同时开始追求其它领域的线上商业机会。在我们瞄准的市场上,我们看到了巨大的机会。这一战略当然不是没有风险:它需要压倒性的投入和干净利落的执行以面对业已成功的行业领导者。

2021-04-28 08:52:42 1200 1

原创 PvP实时抢红包游戏设计与实现

写在前面之前一篇文章讨论关于PvP真人竞赛的需求,这次一起来探讨PvP抢红包游戏场景。众所周知,最为熟悉的抢红包就属微信红包了。微信的抢红包是一个非常深入人心的功能,抢红包的抢字体现在红包个数是有限制的,不抢就没了。刺激的地方在于还有“拼手气”这个点,抢到的金额随机不定,和先来后到也没有太大关系。还有一个典型的抢红包场景-王者荣耀的世界红包。红包由那些“大佬”发出,然后全世界的人都可以看到,手速快立刻抢到,至于抢到多少咱也没抢到过不知道机制。这种场景相比于前者其实是抢的人范围进行扩大。需求背景实时

2021-03-31 01:19:40 435

原创 PvP竞赛游戏设计与实现

写在前面这个月接手了两个较大的需求,其中一个是竞赛类游戏,还有一个是抢红包的玩法。两种都涉及人与人之间一定的互动,游戏趣味性相对较高,从数据上反应用户也会相对更加喜欢。本文先介绍第一个需求的背景、设计与实现。关于抢红包的将放在下一篇文章进行讨论。需求背景之前有一阵子,有个很火的小游戏-阳光养猪场,那个养猪合成然后提现的,经常在短视频平台做广告。本质就是用户会每天来进行养猪,到一定等级就可以提现。产品觉得每个用户与猪场是独立互动的,用户与用户之间没有什么互动,想搞一场养猪大赛来提高用户与用户之间的互

2021-03-27 01:53:11 844

原创 《小狗钱钱》读书笔记

第二章 梦想储蓄罐和梦想相册“学习就是认识新观念和新想法的过程。假如人们始终以同一种思维方式来考虑问题的话,那么始终只会得到同样的结果。因为我对你讲述的许多内容是你以前从未接触过的,所以我建议你,在你还没有做之前,不要轻易下结论。没有想象力的人是很难成就大事的。我们对一件事投入的精力越多,成功的可能性也越大。可是大多数人把精力放在自己并不喜欢的事情上,而不去想象自己希望得到的东西。”因为我们的支出永远是随着我们的收入而增长的。”吉娅,机会到处都是,但是只有在你寻找它的时候,你才能看见它。只有

2021-03-07 13:05:12 571 2

原创 Dubbo源码——时间轮算法

定时任务/** * A task which is executed after the delay specified with * {@link Timer#newTimeout(TimerTask, long, TimeUnit)} (TimerTask, long, TimeUnit)}. */public interface TimerTask { /** * Executed after the delay specified with * {@link

2020-08-30 00:02:00 934

原创 Dubbo源码——源码阅读环境搭建

I. 前言好久没写博客了,Markdown都有些生疏了,惭愧!终于又看起源码了,其实大论文还有好多没写,但我就是喜欢在该干些什么的时候跑去干点别的…这次准备对Dubbo下手了,好好研究一下,预览了一下感觉看完会有很多收获,特征是对Spring源码的理解可能更加深入。挺想在中间件那种团队,高大上的软件设计,不被业务所拘泥。II. 环境准备系统:Mac OSIDEA 2018.3 (好久...

2020-04-02 14:59:39 1037 2

原创 细说分布式锁实现

Redis分布式锁获取锁当一个进程前来请求分布式锁,首先通过 setnx 来尝试获取锁,如果获取锁成功,OK,设置好过期时间,可以返回去干自己事情了。如果 setnx 没获取成功,事情麻烦了,说明肯定有人拿到锁了。这个时候就要看看拿锁的进程是不是该让让位了——比较当前时间和锁里设置的过期时间(通过 get 查看),如果没到过期时间,好吧,自己就只好放弃或者继续等待了。如果发现当前时间已经超过过...

2019-09-20 15:36:03 469 1

原创 管理后台服务通用化设计拙见

前言在公司实习两个多月,主要接手的都是管理后台的需求。一般情况下,管理后台很容易和CRUD联想到一起,这一类操作的特点就是代码基本相似,做一些简单的增删改查接口,不同的只是对于不同数据表的更改。不过针对这样的一个管理后台,相当于业务配置中心的服务,功能简单但又十分重要,往往会花费较多的经历在写一些重复相似的代码上,本文就来讲讲相关的改进工作。为了避免涉及商业隐私,我们依然以上一篇文章大型工程微...

2019-09-05 22:35:25 1152

原创 大型工程微服务架构设计拙见

现在大型项目的设计架构都是进行服务精细化、微服务的设计。最近也是接触到真实亿级流量项目,大致记录一下较为优秀的项目结构设计。不过师傅也说,总有更精妙的架构设计。为了方便说明,这里举个例子,比如我们有个简单的网售咖啡网站,网售咖啡平台项目名为 祺平(qpcoffee)。我们整个咖啡零售分为管理后台、首页门户、订单支付、发货售后等等服务,每个服务我们可以对应创建一个微服务项目,来实现所有的功能。T...

2019-07-31 01:31:22 966

原创 Redis设计与实现——数据结构与对象

前言Redis是一个KV数据库,常用于实现缓存,因为基于内存实现,所以速度极快。最近阅读《Redis设计与实现》一书,整理几篇文章,本文介绍Redis数据结构相关内容。I. 数据结构我们通常说的Redis支持的数据类型有五种,包括字符串、哈希、列表、集合、有序集合,其实这只是存储的数据类型,底层用于存储数据的数据结构并不是这些,而是动态字符串(SDS)、链表、字典(哈希表)、跳跃表、整数集合...

2019-06-30 01:33:29 786

原创 版本管理Git相关

前言最近要开始正式进行融入团队开发,对于 Git 的使用一直也不是特别清楚,基本的多人协作也比较模糊。所以照着廖雪峰老师的 Git 教程 系统的学习了一下,内容还是十分清晰有用的。这里做一些简单归纳,具体命令细节可以查看原文。当然,大多数情况我们可能并不直接使用命令行操作 Git,之前用过一款图形化工具 SourceTree 推荐给大家,当然现在 VsCode 和 IDEA 也都提供可视化操作...

2019-06-20 10:47:40 377

原创 TensorFlow1.x最佳实践:Dataset API+Keras Model+TF Train

前言关于深度学习框架,主流的几个TensorFlow、PyTorch以及Keras都有所使用,由于在深度学习领域自己也只算个入门级选手,所以本文只从一个AI新手的角度去尝试分享一些使用框架编程的实践经验。至于标题最佳实践,那也纯粹有些哗众取宠之意,文章对于能够玩转各种框架API的大佬们,也许会贻笑大方。除此以外,本文相当于一个搬运工,并不讲解具体的使用细节,当然会推荐一些已经介绍的很好的文章,看...

2019-06-04 15:08:33 1882 1

原创 JavaEE进阶——ZooKeeper和Curator

I. 简介ZooKeeper是一个分布式的,提供分布式应用程序协调服务的一个项目。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。II. 工作机制ZooKeeper从设计模式角度理解:是基于观察者模式的分布式服务管理框架,它负责存储和管理所有节点都关心的数据...

2019-05-20 20:39:05 918

原创 美团Leaf源码——snowflake模式源码解析

前言上一篇文章介绍了如何使用Leaf的号段模式生成分布式全局唯一id,参照下图我们简单总结一下。当我们部署Leaf集群时(图中是3个),每个节点起初都包含一个双 buffer,也就是双号段。当有请求过来时,每个节点都会去数据库查询按照初始的DB中的step去更新最大id,从而获取到一个号段,然后每个节点当第一个号段用到超过10%的时候再异步准备第二个号段。所以按照图中的理解可以认为左中右三个节点...

2019-05-19 17:12:51 6615 8

原创 美团Leaf源码——号段模式源码解析

前言I. 导入项目Leaf由Maven构建,源码地址:https://github.com/Meituan-Dianping/Leaf首先先Fork官方仓库到自己的仓库,我的源码注释版:https://github.com/MrSorrow/Leaf下载源码,导入IDEA,导入成功依赖下载完成后项目结构大致如下:II. 测试项目使用号段模式「创建数据库表」DROP TABLE I...

2019-05-15 19:30:06 6254 2

原创 电商秒杀系统相关实现

本文主要就电商秒杀系统所涉及的相关技术进行探究,相关Demo地址如下:- 个人实现版本:[https://github.com/MrSorrow/seckill](https://github.com/MrSorrow/seckill)- Github Star较高的版本,第一版也是基于慕课网的:[https://github.com/qiurunze123/miaosha](https://github.com/qiurunze123/miaosha)本Demo实现了电商项目的秒杀功能,主要内容包

2019-05-11 14:37:19 4451 2

原创 Spring Boot源码——源码阅读环境搭建

前言阅读Spring Boot源码,需要先有所了解Spring Framework相关知识或者源码细节等,可以参考我之前的相关博客内容。接下来,主要着手研究Spring Boot这一块,如果还不知道怎么用Spring Boot,建立花费一些时间入门一下。本文主要是阅读源码的第一步,搭建阅读Spring Boot源码的环境,我们依然使用的是IDEA工具。环境准备JDK8+Maven3.5...

2019-04-21 16:32:41 19544 4

原创 Spring源码——MVC流程

前言最近回顾了一下Spring源码,准备用思维导图的方式简单的将整个源码内容的流程展示出来,思维导图、图片等文件更新在https://github.com/MrSorrow/spring-framework仓库中,阅读博客不方便可以直接下载。思维导图使用MindMaster制作而成,可以下载导入查看。如果有知道如何在markdown中展示思维导图或矢量图的朋友,希望能评论告知

2019-04-19 15:12:50 782

原创 Spring源码——声明式事务流程

前言最近回顾了一下Spring源码,准备用思维导图的方式简单的将整个源码内容的流程展示出来,思维导图、图片等文件更新在https://github.com/MrSorrow/spring-framework仓库中,阅读博客不方便可以直接下载。思维导图使用MindMaster制作而成,可以下载导入查看。如果有知道如何在markdown中展示思维导图或矢量图的朋友,希望能评论告知

2019-04-16 21:06:24 854

原创 Spring源码——动态AOP实现流程

前言最近回顾了一下Spring源码,准备用思维导图的方式简单的将整个源码内容的流程展示出来,思维导图、图片等文件更新在https://github.com/MrSorrow/spring-framework仓库中,阅读博客不方便可以直接下载。思维导图使用MindMaster制作而成,可以下载导入查看。如果有知道如何在markdown中展示思维导图或矢量图的朋友,希望能评论告知

2019-04-14 23:15:29 1104

原创 Spring源码——ClassPathXmlApplicationContext流程

前言最近回顾了一下Spring源码,准备用思维导图的方式简单的将整个源码内容的流程展示出来,思维导图、图片等文件更新在https://github.com/MrSorrow/spring-framework仓库中,阅读博客不方便可以直接下载。思维导图使用MindMaster制作而成,可以下载导入查看。如果有知道如何在markdown中展示思维导图或矢量图的朋友,希望能评论告知

2019-04-10 15:49:16 758 2

原创 Spring源码——XmlBeanFactory流程

前言最近回顾了一下Spring源码,准备用思维导图的方式简单的将整个源码内容的流程展示出来,思维导图、图片等文件更新在https://github.com/MrSorrow/spring-framework仓库中,阅读博客不方便可以直接下载。思维导图使用MindMaster制作而成,可以下载导入查看。如果有知道如何在markdown中展示思维导图或矢量图的朋友,希望能评论告知 :)本文主要关...

2019-04-09 14:27:26 465

原创 排序——堆排序和TopK

前言堆排序与TopK的问题,面试中还是经常问的,索性也整理一下。下面是徒手写的,供参考.堆排序public void heapSort(int[] array) { // 先构造一个大顶堆 int N = array.length - 1; for (int i = (N - 1) / 2; i >= 0; i--) { sink(array, i, N); } // ...

2019-04-02 10:56:54 2304

原创 MySQL——深入理解事务与锁

前言本文内容主要参考自《高性能MySQL》、《深入浅出MySQL》、《MySQL DBA 修炼之道》书中的关于事务与锁相关章节,其中《深入浅出MySQL》讲的最为深入,这篇博客算是几本书的综合提炼以及个人理解补充。 上次主要讲了MySQL的索引与 EXPLAIN 的用法,是MySQL中非常重要的一部分,这次将进入下一部分,有关数据库的设计。I. 事务特性ACIDα. 事务定义事务是数据库管...

2019-03-25 10:35:46 754

原创 MySQL——三大范式与数据库设计

前言本文内容主要参考自《MySQL DBA 修炼之道》书中的第四章,算是原书的实践与补充。 上次主要讲了MySQL的索引与 EXPLAIN 的用法,是MySQL中非常重要的一部分,这次将进入下一部分,有关数据库的设计。I. 三大范式α. 范式含义范式是数据库规范化的手段,那么啥又是数据库规范化 ?数据库规范化通俗的来讲就是经过合理的设计,将大表分成很多有关联关系的小表,这样来去除数据的冗...

2019-03-22 22:30:20 661

原创 设计模式——单例模式实现

public class Singleton{ static class Instance {} /** * 【饿汉式】 * 类加载时在准备阶段分配内存,也就是instance = null,初始化阶段堆中创建Instance对象,该对象引用赋值给instance * 这样类加载完成时对象已经创建好,不存在问题 */ public...

2019-03-14 09:38:51 509

原创 Jdk源码——LinkedList解析

前言本文主要针对 JDK1.8 的 LinkedList 源码进行解析,主要看源码注释,代码说明了全部实现细节。ArrayList 相关解析可以参考 Jdk源码——ArrayList解析I. 继承结构LinkedList 的继承结构如下,和 ArrayList (上一篇文章)相比,它们都实现了 Cloneable 和 Serializable 接口,都是 AbstractList 的子类,...

2019-02-27 16:21:30 426

原创 Jdk源码——ArrayList解析

前言本文主要针对 JDK1.8 的 ArrayList 源码进行解析,主要看源码注释,代码说明了全部实现细节。I. 继承结构ArrayList 的继承结构如下图所示,下面我们进行一一解析。SerializableSerializable 接口是启用其序列化功能的接口,接口定义如下:public interface Serializable {}实现 java.io.Serial...

2019-02-26 15:57:20 420

原创 挂帆蓄力 破浪前行

往常,我会将这种总结写在微博中,随便可能会有陌生的人光顾。最早的时候可能还会发到朋友圈里,仿佛在“叫嚣”别人看我一年的成长。

2019-01-28 01:56:34 1081 2

原创 Think in Java——多态

多态调用将 一个方法调用 和 一个方法主题 关联起来被称作绑定。绑定分为前期绑定与后期绑定,多态方法的具体调用依靠前期绑定是不行的,编译器不知道对象的具体类型无法具体调用,所以只能依靠后期绑定,也叫动态绑定、运行时绑定;Java除了 final 方法和 static 方法(private 方法属于 final 方法)之外,其他方法的调用默认就是后期绑定。final 方法意味着不想被子类覆盖,...

2019-01-26 11:35:28 292

原创 Think in Java——复用类

前言Java复用代码的思路有两种:组合:在新类中产生现有类的对象,再添加新的扩展成员与行为;继承:新类继承自现有类,拥有现有类的全部特性。组合...

2019-01-25 12:41:00 307

原创 Think in Java——访问权限控制

包:库单元一个Java源代码文件常被称为编译单元(转译单元),一个编译单元必须有一个后缀名 .java,而在一个编译单元内只能有一个public类,类名与文件名相同。其他非public类主要是为public类提供支持的;当编译一个 .java文件的时候,文件中的每个类都会生成一个 .class文件,然后交给Java解释器去查找、装载和解释。...

2019-01-23 10:12:21 261

原创 Jdk源码——AQS同步队列解析

前言本文主要参考自《Java 并发编程的艺术》第五章内容,结合源码对书中内容进行分析补充。I. Lock接口在 Lock 接口出现之前,Java程序是靠 synchronized 关键字实现锁功能的,而 Java SE 5 之后,并发包中新增了 Lock 接口(以及相关实现类)用来实现锁功能,它提供了与 synchronized 关键字类似的同步功能,只是在使用时需要显式地获取和释放锁。...

2018-12-26 19:40:11 483

原创 Think in Java——操作符

关系操作符== 与 != 如果是对象比较,比较的是引用,并不是内容;想要比较内容是否相等,则应该使用 equals() 方法。但对于基本数据类型,没有 equals() 方法,直接使用 == 与 != ;上述的应该两字真正的含义是并不是一定用 equals() 方法就能比较内容,如果类没有重写 equals() 方法,那么默认 equals() 方法还是比较的是引用是否相同,Object ...

2018-12-18 00:33:53 905

原创 MySQL——索引与EXPLAIN

前言本文内容主要参考自《高性能MySQL》第5章以及《MySQL DBA 修炼之道》书中的第三章,算是原书的实践与补充。 上次主要讲了MySQL的基本操作,这次来谈谈索引与EXPLAIN。I. 什么是索引?想要深入的学习MySQL相关技术,而不仅仅停留在简单CURD,能够写出百万数据中分分钟查出需要数据的SQL,首先就需要掌握索引技术。那么什么是索引呢?要理解MySQL中索引是如何工作的,...

2018-12-05 21:54:20 1289 1

原创 MySQL——常用命令

前言本文内容主要参考自《MySQL DBA 修炼之道》书中的第三章,算是原书的实践与补充。I. MySQL 5.7配置环境变量MySQL 5.7 版本安装路径为 C:\Program Files\MySQL\MySQL Server 5.7\bin,默认不会添加环境变量,需要自行添加。II. SQL基础变量MySQL中变量可以分为用户变量和系统变量。① 用户变量用户变量与连接有关...

2018-11-27 13:46:44 2364

原创 Java并发——缓存一致性

I. CPU多级缓存CPU的时钟频率非常的快,跑起来的速度远远超过了内存、硬盘。《码农翻身》形象的比喻CPU为阿甘,跑的速度是内存的100倍,硬盘的1000多万倍。如果直接靠CPU直接和内存打交道,那么CPU要等待太久,浪费资源。我们平时编写的程序中,包含着很多连续创建的数组、对象,各种循环、递归、调用同一函数等,其实本质上符合了局部性原理。局部性原理具体是指在CPU访问存储设备时,无论是存取...

2018-11-24 10:57:17 2224

原创 Spring源码——Spring MVC

前言内容主要参考自《Spring源码深度解析》一书,算是读书笔记或是原书的补充。进入正文后可能会引来各种不适,毕竟阅读源码是件极其痛苦的事情。本文主要涉及书中第十一章的部分,依照书中内容以及个人理解对Spring源码进行了注释,详见Github仓库:https://github.com/MrSorrow/spring-frameworkSpring框架提供了构建Web应用程序的全功能MVC模...

2018-11-22 13:16:36 1524

原创 Spring源码——SpringMVC测试工程搭建

前言内容主要参考自《Spring源码深度解析》一书,算是读书笔记或是原书的补充。进入正文后可能会引来各种不适,毕竟阅读源码是件极其痛苦的事情。本文主要涉及书中第十一章的部分,依照书中内容以及个人理解对Spring源码进行了注释,详见Github仓库:https://github.com/MrSorrow/spring-framework本文作为正式研究SpringMVC的预热文章,主要目的是...

2018-11-17 01:50:07 2024 3

原创 Spring源码——消息队列

前言内容主要参考自《Spring源码深度解析》一书,算是读书笔记或是原书的补充。进入正文后可能会引来各种不适,毕竟阅读源码是件极其痛苦的事情。本文主要涉及书中第十三章的部分,依照书中内容以及个人理解对Spring源码进行了注释,详见Github仓库:https://github.com/MrSorrow/spring-frameworkJava消息服务 (Java Message Servi...

2018-11-15 22:45:03 5823

happymall商城数据库关系图

慕课实战:java大牛带你从0到1企业级电商实战项目的数据库表设计,用visio画的ER图。

2018-01-27

OkGo的使用demo 下载

配合博客教程:Android框架之路——OkGo的使用

2017-05-10

OKHttp的使用demo

配合博客教程:Android框架之路——OKHttp的使用

2017-05-10

文件上传服务器

文件上传服务器: 1、将.war文件复制到tomcat服务器webapps下,启动服务器即可 2、访问工程路径http://localhost:8080/FileUpload/index.jsp即可测试上传

2017-05-10

EventBus的使用Demo

配合博客教程:Android框架之路——EventBus的使用

2017-05-09

Android聊天Demo实现(数据库+RecyclerView)

配合博客教程:Android框架之路——聊天Demo实现

2017-05-07

GreenDao3.2.2的使用Demo源码下载

配合博客教程:Android框架之路——GreenDao3.2.2的使用

2017-05-06

Banner实现轮播图(RecyclerView添加Header)实例 下载

配合博客:Android框架之路——Banner实现轮播图(RecyclerView添加Header)

2017-05-03

RecyclerView+CardView+Glide加载图片实现瀑布流

配合博客:Android框架之路——Glide加载图片(结合RecyclerView、CardView)

2017-05-03

ButterKnife的使用

配合教程:Android框架之路——ButterKnife的使用

2017-05-01

Android中Json数据解析三种方式:原生、Gson、FastJson

Json解析一篇就够(原生技术+Gson+FastJson)

2017-04-30

RecyclerView的使用demo

RecyclerView的使用demo,参考博客:Android框架之路——RecyclerView的使用

2017-04-15

Android的ToolBar的使用demo

Android的ToolBar的使用demo,参考博客教程:Android框架之路——ToolBar的使用

2017-04-14

Android实现ViewPager+Fragment左右滑动

Android实现ViewPager+Fragment左右滑动

2017-03-09

传智播客扫地僧c++基础和进阶课堂讲义

传智播客扫地僧c++基础和进阶课堂讲义

2017-01-31

黑马74期安全卫士day04项目源码

黑马74期安全卫士day04项目源码 AndroidStudio工程

2017-01-23

Sublime2-已集成常用插件

已经集成了常用插件的SublimeText2 对html、css和javascript有很好的支持,拥有代码提示!

2017-01-17

Helloworld

使用教程见贴:ESP8266-12 wifi芯片使用教程1——串口输出Hello world

2016-06-25

空空如也

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

TA关注的人

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