2019-10-25 15:43
命令模式是JavaScript设计模式中行为型的一种设计模式;
定义:
向某些对象发送请求,但是并不知道被请求的操作具体是什么,所以我们希望以一种松耦合的方式来设计程序,使得请求发送者和接收者之间能够消除彼此之间的耦合关系;而我们的这种松耦合的方式就是命令模式;
白话解释:
假如你是你们公司研发部门团队leader,这时你们领导分布给你一个任务,你粗略的看了一下,很简单的需求比较容易实现;而你作为团队leader,每天肯定会有很多事情,所以你准备把需求直接丢给组员去开发和实现;领导根本不在意是你做的还是你让谁做的,领导要的只是最终成果!这里领导就是命令的发布者,而你就是命令的接收者;
...
2019-10-25 15:10
在博客园搜素全局唯一有序ID,罗列出来的文章大致讲述了以下几个问题,常见的生成全局唯一id的常见方法 :使用数据库自动增长序列实现 ; 使用UUID实现; 使用redis实现; 使用Twitter的snowflake算法实现;使用数据库+本地缓存实现。作为一个记录性质的博客,简单总结一下。...
2019-10-25 15:41
分布式锁常见的三种实现方式:
数据库乐观锁;
基于Redis的分布式锁;
基于ZooKeeper的分布式锁。
本地面试考点是,你对Redis使用熟悉吗?Redis中是如何实现分布式锁的。
要点
Redis要实现分布式锁,以下条件应该得到满足
互斥性
在任意时刻,只有一个客户端能持有锁。
不能死锁
客户端在持有锁的期间崩溃而没有主动解锁,也能保证后续其他客户端能加锁。
容错性
只要大部分的Redis节点正常运行,客户端就可以加锁和解锁。
实现
可以直接通过 set key value px milliseconds nx 命令实现加锁, 通过Lua脚本实现解锁。
...
2019-10-25 15:45
注:begin或start transaction并不是一个事务的起点,而是在执行它们之后的第一个操作InnoDB表的语句,事务才真正开始。start transaction with consistent snapshot命令可以马上启动一个事务。
1、隔离级别
1.1、基本概念
读未提交
当前事务能读取到其他事务尚未提交的修改值。
读提交
当前事务能读取到其他事务已经提交的修改值。
可重复读
一个事务在任何时刻查询到的结果跟事务一开始启动时查询的结果一样。
串行化
强行使所有事务串行执行。
...
2019-10-25 15:40
随着人口红利的慢慢削减,互联网产品的厮杀愈加激烈,大家开始看好下沉市场的潜力,拼多多,趣头条等厂商通过拉新奖励,购物优惠等政策率先抢占用户,壮大起来。其他各厂商也紧随其后,纷纷推出自己产品的极速版,如今日头条极速版,腾讯新闻极速版等,也通过拉新奖励,阅读奖励等政策来吸引用户。...
2019-10-25 15:12
纵然5G时代已经在时代的浪潮中展现出了它的身影,但是就目前的物联网环境中,网络问题仍旧是一个比较突出的硬伤。众所周知,在当前的物联网规划中,与其说是实现万物互联,倒不如说是行业指标数据监控。对于一些特殊行业的指标数据,要求在较短时间内对其相应变化规则作出反应,并且及时预警和通知。为什么我这里把预警放在第一位,因为一些行业的指标数据关系到人民的生命财产安全。如何快速构建设备预警规则成为一个物联网系统规划中不可或缺的一环,YF3300,体验组态环境下的物联网设备报警配置。
一. 云端配置
...
2019-10-25 15:29
作者 | 元毅 阿里云智能事业群高级开发工程师...
2019-10-25 15:54
Tomcat启动加载过程(一)的源码解析
今天,我将分享用源码的方式讲解Tomcat启动的加载过程,关于Tomcat的架构请参阅《Tomcat源码分析二:先看看Tomcat的整体架构》一文。
先看看应用情况
在《Servlet与Tomcat运行示例》一文中,我详细的记录了Tomcat是如何启动一个Servlet的程序的步骤。其中,第6步骤是启动Tomcat,也就是在windows系统上执行startup.bat, 在linux操作系统上执行startup.sh的脚本。那么,我们就从这个脚本出发,走进Tomcat,看看它是如何启动的?这里,我们以startup.sh为例,windows端的startup.bat类似。
...
2019-10-25 15:12
最近一直在学习 Electron 开发桌面应用程序,在尝试了 java swing 和 FXjava 后,感叹还是 Electron 开发桌面应用上手最快。我会在这一篇文章中实现一个HelloWord的应用程序,记录学习过程中的坑。...
2019-10-25 15:49
如果Java虚拟机中标记清除算法、标记整理算法、复制算法、分代算法这些属于GC收集算法中的方法论,那么“GC收集器”则是这些方法论的具体实现。在面试过程中这个深度的问题涉及的比较少,但对于理解上面的这些算法有很好的帮助。如果能够如数家珍,也是面试中的加分项,还是那句话,毕竟面试官的时间也不多了。...
2019-10-25 15:14
各位小伙伴好,今天给大家主要介绍一下简单工厂模式、工厂模式和抽象工厂模式的区别及各自的优缺点。
(本文实现语言为Python3)
【前言】
众所周知今天所讲的内容是设计模式的一类;对于设计模式这个概念,我想首先请大家问问自己:1、什么是设计模式 2、我们为什么要了解并学习设计模式?
从我上学的时候我相信大家跟我一样也接触过设计模式的课程,当时可能懵懵懂懂只是知其然,当时还会想明明可以直接写出来为什么要搞成这样的形式,我就算学会了它到底什么时候能用呢?一系列的问题...Emm算了到时候再想想(lazy)。随着实践的不断增多,现在我想可以对这些问题有个初步的回答了:
...
2019-10-25 15:42
在开发过程中,我们经常会遇到对业务数据进行模糊搜索的需求,例如电商网站对于商品的搜索,以及内容网站对于内容的关键字检索等等。对于这些高级的搜索功能,显然数据库的 Like 是不合适的,通常我们采用 ElasticSearch 来完成数据的搜索和分析,有了这个利器,我们可以轻松应对上述场景,实现关键字搜索等功能。...
2019-10-24 17:40
以前使用cocos2d-x 3.14的时候,HelloWorld并不是一个场景类,而是一个图层类,当时的HelloWorld::createScene()是长这样的...