自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 收藏
  • 关注

原创 别不信:这些细节关乎你的物联网设备的命运!

随着物联网的发展,越来越多的设备需要接入云平台进行远程监控和管理。设备接入层网络协议起到了承担设备接入网络的功能,为物联网平台提供了数据交互的基础。设备接入层网络协议对于物联网平台来说具有重要意义。

2023-05-10 10:50:04 771

原创 java 教程--如果你是这样学习 java 的肯定能成为大神

1、百万年薪架构师实战视频 关键词“年薪”2、基于MyCat的MySQL高可用读写分离集群关键词“mycat”3、RabbitMQ消息中间件技术精讲 关键词“rabbitmq”4、Java读源码之Netty深入剖析 关键词“netty”5、docker前后端分离项目 关键词“docker分离”6...

2019-12-25 15:02:18 807

原创 分布式存储系统中一致性与可用性核心实战

我们在分布式存储系统中需要权衡的两个关键概念是一致性和可用性。一致性指的是多个副本之间的数据保持一致,无论是读取还是写入操作。而可用性则表示系统能够在任何时候都正常工作,为用户提供服务。一致性和可用性之间存在着一种牺牲关系,即在追求高一致性的同时,可能会牺牲一定的可用性;反之,在追求高可用性的同时,可能会牺牲一定的一致性。如何在多个副本之间保持数据的一致性;如何处理副本之间的同步和复制问题;如何解决一致性和可用性之间的权衡问题。

2023-08-03 12:53:59 333

原创 物联网云平台数据存储方案,这次我终于找对了

物联网云平台是一个连接设备和互联网的系统,通过传感器、设备和网络进行数据采集和传输,需要一个可靠和高效的存储系统来存储和管理大量的物联网数据。存储的意义在于提供数据的持久性和可访问性,使得数据可以在任意时间被查询、分析和应用。

2023-06-16 11:34:19 1883 1

原创 物联网网关,原来是这么回事,感谢!

物联网网关是实现物联网系统的重要一环,将设备的通信、数据的传输、云服务之间的对接等聚合在一起,使得整个系统更加高效、稳定、安全。协议转换:不同设备和传感器可能使用不同的通信协议,物联网网关可以实现协议转换,将不同协议之间的数据转换为统一的与云台交互的协议,从而实现设备的互联互通。物联网网关是作为物联网系统中的中间件,连接低功耗、低带宽、短距离的设备与云端服务器之间的通信,并提供对接云服务的接口和协议转换等功能。设备管理:物联网网关可以对连接的终端设备进行管理,包括设备的配置、参数设置、故障处理等。

2023-06-07 18:42:37 1368

原创 一篇必读的物联网平台物模型开发指南,为你解锁未来科技趋势

物模型是指对物理实体的建模,在物联网中指对物理设备的建模。物模型由属性、服务和事件组成,用于描述物理设备的特征和行为。属性是设备的静态特征,如温度、湿度等;服务是设备的动态行为,如打开、关闭等;事件是设备发生的事件,如温度报警等。物模型可以看作是一种数据模型,由物联网平台和设备共同维护。具体来说,它是由设备的属性、服务、事件等组成的一种数据结构,用于描述物联网设备的基本属性、功能和行为。如果想系统学习高并发知识,可以看《高并发系统实战派》,人人都会的高并发系统噢。

2023-05-24 09:46:34 1472

原创 揭秘物联网平台设备管理核心!Java代码示例对比,一篇文章全知道!

设备管理模块是物联网平台的核心模块之一,主要负责设备的接入、注册、管理、监控等工作,是构建物联网平台的基础。通过设备管理模块,可以实现对设备的资源动态管理、设备状态实时监控、设备数据采集等功能,确保物联网系统的运行安全和数据的可靠性

2023-05-18 09:14:55 951

原创 物联网平台开发核心技术揭秘-架构设计篇

物联网平台是实现物联网的核心组成部分。它是一个软件系统,用于管理设备、数据和应用程序。通过它,用户可以从设备中获取数据,并将其发送到其他设备或数据中心。物联网平台还能够控制设备,实现预定任务、自动化流程和报警等功能。感知层:包括各种传感器、监测器和执行器等设备,用于收集和控制数据。网络层:通过各种无线和有线网络将数据传输到物联网平台,同时也可将数据从平台传回设备。应用层:包括各种应用程序和服务,用于处理和解读数据。也可以加个管理层:负责管理设备、数据、安全和用户等方面。

2023-03-23 15:57:31 3265

原创 物联网平台开发核心技术实战-初识

物联网的应用可以说是无限多的,从智能家居到智能交通、智能医疗、智能农业等,基本上覆盖了我们的日常生活和各种行业。在智能家居方面,可将家中的灯光、温度、音乐等设备统一管理,打造智能化环境。在智能交通方面,可利用物联网技术实现城市交通拥堵情况的实时监测和分析,提高车辆通行效率。在智能医疗方面,可通过传感器监测病人的健康状态,实现远程医疗服务。在智能农业方面,可利用物联网技术实现农作物的自动监测和管理,提高农产品的质量和产量。物联网平台是实现物联网应用的关键基础设施。

2023-03-22 09:42:42 1195

翻译 千万级高并发秒杀系统设计套路!超详细解读~~

秒杀”系统的流程并不复杂——只是一个“下单扣库存”的动作,但由于其独特的业务特点,所以在进行系统设计时不能大意。对于瞬时流量洪峰的高并发“秒杀”系统,我们需要什么技术呢?下面来总结一下。(1)数据的静态化的技术用来应对高并发读的请求,主要涉及以下内容,这些在《高并发系统实战派》一书中详细分享了真实使用场景已经技术方案:各层级缓存的处理(即多级缓存的技术)分布式缓存技术(2)负载均衡反向代理技术LVSNginx(3)异步处理技术消息队列技术排队系统技术(4)系统架构设计技术系统模块化划分。

2022-10-25 09:20:09 647

原创 你还在使用复杂的 zkclient 开发 zookeeper 么?是时候用 Curator 了 !

什么是 CuratorCurator是netflix公司开源的一套zookeeper客户端,目前是Apache的顶级项目。与Zookeeper提供的原生客户端相比,Curator的抽象层次更高,简化了Zookeeper客户端的开发量。Curator解决了很多zookeeper客户端非常底层的细节开发工作,包括连接重连、反复注册watcher和NodeExistsException 异常等,对于我们日常 ZooKeeper 服务开发进行了详细的封装,例如 Leader 选举、分布式计数器、分布式锁。这就减少

2020-09-15 09:16:42 358

原创 消息队列MQ这样准备面试,通过率极高

1.消息队列的应用场景有哪些?答:消息队列的应用场景如下。 应用解耦,比如,用户下单后,订单系统需要通知库存系统,假如库存系统无法访问,则订单减库存将失败,从而导致订单失败。订单系统与库存系统耦合,这个时候如果使用消息队列,可以返回给用户成功,先把消息持久化,等库存系统恢复后,就可以正常消费减去库存了。 削峰填谷,比如,秒杀活动,一般会因为流量过大,从而导致流量暴增,应用挂掉,这个时候加上消息队列,服务器接收到用户的请求后,首先写入消息队列,假如消息队列长度超过最大数量,则直接抛弃用户请

2020-08-12 09:22:16 360

原创 客服MM被投诉说下单耗时很长,老板下令必须控制在1秒以内

近期,公司的订单量一直在持续增加,客服经常被投诉到说我们的下单时间过长,有时要好几秒,然后客服 MM 就反映到我们技术部门,老板得知后就说,这怎么行呢?不能让我们可爱的用户等 1 秒以上才能创建好订单,你们得去改代码。然后我就去看了看我们现有订单系统是怎么写的,一顿搜索加源码查看,终于理清楚了具体的流程了,现在将主要的业务流程图画出来,方便分析:如上图所示,每当订单成功支付后就会进行一系列的连锁操作,主要包括: 订单状态更新 库存扣减 积分处理 发放优惠券

2020-07-28 09:38:00 330

原创 通关MyBatis 实战 (下篇)

MyBatis 最初的设计是基于 XML 配置文件的,但随着 Java 的发展(Java 1.5 开始引入注解)和 MyBatis 自身的迭代升级,终于在 MyBatis 3 之后就开始支持基于注解的开发了。下面我们使用 Spring Boot + MyBatis 注解的方式,来实现对数据库的基本操作,具体实现步骤如下。MyBatis 注解版1)创建数据表droptableifexists`t_user`;createtable`t_user`(`id`bigint...

2020-07-24 10:21:11 197

原创 通关 MyBatis 实战(上篇)

MyBatis 介绍MyBatis 是一款优秀的 ORM(Object Relational Mapping,对象关系映射)框架,它可以通过对象和数据库之间的映射,将程序中的对象自动存储到数据库中。它是 Apache 提供的一个开源项目,之前的名字叫做 iBatis,2010 年迁移到了 Google Code,并且将名字改为我们现在所熟知的 MyBatis,又于 2013 年 11 月迁移到了 Github。MyBatis 提供了普通 SQL 查询、事务、存储过程等功能,它的优缺点如下。优点:

2020-07-16 09:32:33 257

原创 23种设计模式实战!超级全,超级好懂!

设计模式实战全集:1,设计模式实战-工厂模式,别具匠心2,设计模式实战-抽象工厂模式,分而治之3,设计模式实战-单例模式,我就是天下无双4,设计模式实战-建造者模式,做任何事情都需要步步为营5,设计模式实战-原型模式,我们就来依法炮制6,设计模式实战-适配器模式,承上启下7,设计模式实战-桥接模式,想做月老吗?8,设计模式实战-过滤器模式,你总是这么挑三拣四9,设计模式实战-组合模式10,设计模式实战-装饰器模式,教你怎么为代码添砖加瓦11,设计模式实战-...

2020-07-14 09:59:49 10278

原创 Spring Boot核心知识,用起来!

为什么要用 Spring Boot?Spring Boot 来自于 Spring 大家族,是 Spring 官方团队(Pivotal 团队)提供的全新框架,它的诞生解决了 Spring 框架使用较为繁琐的问题。Spring Boot 的核心思想是约定优于配置,让开发人员不需要配置任何 XML 文件,就可以像 Maven 整合 Jar 包一样,整合并使用所有框架。Spring Boot 特性 秒级构建一个项目; 便捷的对外输出格式,如 REST API、WebSocket、Web 等;

2020-07-10 09:53:01 311

原创 Spring 核心知识讲解,太简单啦!

Spring Framework 简称 Spring,是 Java 开发中最常用的框架,地位仅次于 Java API,就连近几年比较流行的微服务框架 SpringBoot,也是基于 Spring 实现的,SpringBoot 的诞生是为了让开发者更方便地使用 Spring,因此 Spring 在 Java 体系中的地位可谓首屈一指。当然,如果想要把 Spring 所有功能都讲的一清二楚,远远不是一两篇文章能够做到的,但幸运的是,Spring 的基础资料可以很轻易的搜索到,那么我们本讲主要的目的就是把 Sp

2020-06-20 14:21:10 325

原创 Java 并发包(JUC)中高级同步工具,太帅了

Java 中的并发包指的是 java.util.concurrent(简称 JUC)包和其子包下的类和接口,它为 Java 的并发提供了各种功能支持,比如: 提供了线程池的创建类 ThreadPoolExecutor、Executors 等; 提供了各种锁,如 Lock、ReentrantLock 等; 提供了各种线程安全的数据结构,如 ConcurrentHashMap、LinkedBlockingQueue、DelayQueue 等; 提供了更加高级的线程同步结构,如

2020-06-13 10:11:47 494

转载 我终于搞懂了微服务,太不容易了...

微服务是什么?抛去教条性质的解释,从巨石应用到微服务应用,耦合度是其中最大的变化。或是将多个模块中重复的部分进行拆分,或是纯粹为了拆分膨胀的单体应用,这些拆分出来的部分独立成一个服务单独部署与维护,便是微服务了。拆分后自然而然会催生出一些必要的需求: 从本地方法调用的关系衍变成远程过程调用的关系,那么可靠的通信功能是首要的。 随着拆分工作的推进,资源调度关系会变得错综复杂,这时候需要完善的服务治理。 调用关系网的整体复杂化还会给我们带来更大的风险,即链式反应...

2020-06-11 09:20:38 2525

翻译 网关如何实现高可用? 懂了!

业内通常用多少9来衡量网站的可用性,例如QQ的可用性是4个9,也就是QQ能够保证在一年里,服务在99.99%的时间是可用的,只有0.01%的时间不可用,大约最多53分钟。对于大多数网站,2个9是基本可用;3个9是叫高可用;4个9是拥有自动恢复能力的高可用。实现高可用的主要手段是数据的冗余备份和服务的失效转移,这两种手段具体可以怎么做呢,在网关里如何体现?一、集群部署保障服务可用是网关的一个重要职责,服务通过网关开放出去,如果不是集群部署,整个网关只有一个节点,这个节点挂了,网关就相当于.

2020-06-08 09:26:27 2424 1

原创 线程安全——synchronized 和 ReentrantLock ,看完后绝不后悔系列

前面我们介绍了很多关于多线程的内容,在多线程中有一个很重要的课题需要我们攻克,那就是线程安全问题。线程安全问题指的是在多线程中,各线程之间因为同时操作所产生的数据污染或其他非预期的程序运行结果。线程安全1)非线程安全事例比如 A 和 B 同时给 C 转账的问题,假设 C 原本余额有 100 元,A 给 C 转账 100 元,正在转的途中,此时 B 也给 C 转了 100 元,这个时候 A 先给 C 转账成功,余额变成了 200 元,但 B 事先查询 C 的余额是 100 元,转账成功之后也是 2

2020-05-30 09:19:44 441

原创 Threadlocal详解,很详细了

什么是 ThreadLocal?ThreadLocal 诞生于 JDK 1.2,用于解决多线程间的数据隔离问题。也就是说 ThreadLocal 会为每一个线程创建一个单独的变量副本。ThreadLocal 有什么用?ThreadLocal 最典型的使用场景有两个: ThreadLocal 可以用来管理 Session,因为每个人的信息都是不一样的,所以就很适合用 ThreadLocal 来管理; 数据库连接,为每一个线程分配一个独立的资源,也适合用 ThreadLocal 来实

2020-05-14 09:01:03 686 1

原创 线程池—Executors 详解

线程池的创建分为两种方式:ThreadPoolExecutor 和 Executors,上一节学习了 ThreadPoolExecutor 的使用方式,本节重点来看 Executors 是如何创建线程池的。Executors 可以创建以下六种线程池。 FixedThreadPool(n):创建一个数量固定的线程池,超出的任务会在队列中等待空闲的线程,可用于控制程序的最大并发数。 CachedThreadPool():短时间内处理大量工作的线程池,会根据任务数量产生对应的线程,并试图缓存线程

2020-05-11 17:31:52 1025

原创 java 线程池看这一篇就行了

线程池介绍线程池(Thread Pool):把一个或多个线程通过统一的方式进行调度和重复使用的技术,避免了因为线程过多而带来使用上的开销。为什么要使用线程池? 可重复使用已有线程,避免对象创建、消亡和过度切换的性能开销。 避免创建大量同类线程所导致的资源过度竞争和内存溢出的问题。 支持更多功能,比如延迟任务线程池(newScheduledThreadPool)和缓...

2020-04-27 09:08:09 199

原创 java线程与死锁问题,讲的太详细太好懂了,再也不用怕了

线程介绍线程(Thread)是程序运行的执行单元,依托于进程存在。一个进程中可以包含多个线程,多线程可以共享一块内存空间和一组系统资源,因此线程之间的切换更加节省资源、更加轻量化,因而也被称为轻量级的进程。什么是进程进程(Processes)是程序的一次动态执行,是系统进行资源分配和调度的基本单位,是操作系统运行的基础,通常每一个进程都拥有自己独立的内存空间和系统资源。简单来说,进程可...

2020-04-24 08:46:25 245

原创 Java 反射和动态代理真的没那么高深,一起来看看就知道了

反射反射机制是 Java 语言提供的一种基础功能,赋予程序在运行时自省(introspect)的能力。简单来说就是通过反射,可以在运行期间获取、检测和调用对象的属性和方法。反射的使用场景在现实中反射的使用场景有很多,比如以下几个。使用场景一:编程工具 IDEA 或 Eclipse 等,在写代码时会有代码(属性或方法名)提示,就是因为使用了反射。使用场景二:很多知名的框架,为了让...

2020-04-20 08:52:32 202

原创 Java IO 以及 NIO 详解

上一篇:Java 队列详解IO 介绍IO 是 Input/Output 的缩写,它是基于流模型实现的,比如操作文件时使用输入流和输出流来写入和读取文件等。IO 分类传统的 IO,按照流类型我们可以分为: 字符流 字节流 其中,字符流包括 Reader、Writer;字节流包括 InputStream、OutputStream。传统 IO 的类关系图,如下图所示...

2020-04-07 17:54:02 486

原创 Java 数据结构-队列详解

队列(Queue):与栈相对的一种数据结构, 集合(Collection)的一个子类。队列允许在一端进行插入操作,而在另一端进行删除操作的线性表,栈的特点是后进先出,而队列的特点是先进先出。队列的用处很大,比如实现消息队列。Queue 类关系图,如下图所示:注:为了让读者更直观地理解,上图为精简版的 Queue 类关系图。本文如无特殊说明,内容都是基于 Java 1.8 版本。队列...

2020-03-30 08:46:00 381

原创 Java 泛型和迭代器详解

泛型1)为什么要用泛型?在泛型没有诞生之前,我们经常会遇到这样的问题,如以下代码所示:ArrayListarrayList=newArrayList();arrayList.add("Java");arrayList.add(24);for(inti=0;i<arrayList.size();i++){Stringstr=(Str...

2020-03-25 09:53:43 371

原创 Java 集合就这么简单-附面试题

集合有两个大接口:Collection 和 Map,本文重点来讲解集合中另一个常用的集合类型 Map。以下是 Map 的继承关系图:Map 简介Map 常用的实现类如下: Hashtable:Java 早期提供的一个哈希表实现,它是线程安全的,不支持 null 键和值,因为它的性能不如 ConcurrentHashMap,所以很少被推荐使用。 HashMap:最常用...

2020-03-19 08:47:51 217

原创 【Java面试题】搞定 BAT 的 Java 技术面试,集合详解篇(上)

先来看看集合的继承关系图,如下图所示:其中:外框为虚线的表示接口,边框为实线的表示类; 箭头为虚线的表示实现了接口,箭头为实线的表示继承了类。为了方便理解,我隐藏了一些与本文内容无关的信息,隐藏的这些内容会在后面的章节中进行详细地介绍。从图中可以看出,集合的根节点是 Collection,而 Collection 下又提供了两大常用集合,分别是:List:使用最多的有...

2020-03-10 08:54:15 200

原创 分布式高可靠之负载均衡,今天看了你肯定会

到目前为止,我已经为你介绍了分布式起源、分布式协调与同步、分布式资源管理与负载调度、分布式计算技术、分布式通信技术和分布式数据存储。可以说,掌握了这些内容,基本上就掌握了分布式的关键技术。然而,只有可靠的分布式系统才能真正应用起来。那么,分布式系统的可靠性又是如何实现的呢?不要着急,接下来几篇文章,我会和你一起学习分布式可靠性相关的知识,包括负载均衡、流量控制、故障隔离和故障恢复。在这...

2020-03-05 13:31:44 714

原创 分布式数据之缓存技术,看这一篇就够了

不知不觉,分布式数据存储这一站已经到了最后一讲。在前面几讲,我与你分享了 CAP 理论(想要设计一个好的分布式系统,必须搞定这个理论)、(分布式存储系统三要素,掌握这些就离成功不远了)、数据分布式分片方法和数据复制技术(分布式数据复制技术,今天就教你真正分身术),其中数据分片方法和数据复制技术均是导购中的关键技术。在这一讲,我将为你讲解分布式存储中“货架”的关键技术——缓存技术。在计算机领...

2020-03-03 16:43:51 2441 4

原创 数据分布式,一致性哈希算法,这次我是真的搞懂了!

在上一篇文章中,我带你了解了分布式存储系统的三个要素:顾客、导购和货架(分布式存储系统三要素,掌握这些就离成功不远了)。其中,导购实现了分布式数据存储系统中数据索引的功能,包括存储数据时确定存储位置,以及获取数据时确定数据所在位置。那么,在分布式系统中,具体是如何实现数据索引或数据分布的呢?目前最常用的方法就是哈希和一致性哈希。接下来,我们就一起打卡数据分布式方式中的哈希与一致性哈希吧。...

2020-02-29 11:40:23 491

原创 发布订阅模式成就分布式通信技术,干货满满

前面我们一起学习了分布式通信中的远程调用(分布式通信技术之远程调用:RPC)。远程调用的核心是在网络服务层封装了通信协议、序列化、传输等操作,让用户调用远程服务如同进行本地调用一样。其实,这种方式就是通过网络服务层的封装实现了不同机器上不同进程之间的直接通信,因为是直接通信,所以通过线程阻塞的方式实现同步调用比较容易,因此通常被用于同步调用。比如,机器 1 上的进程 A 调用机器 2 上的进程...

2020-02-16 15:58:01 622

原创 分布式 RPC 远程通信技术,这次终于是搞懂了

通过前面的学习,不知道你有没有发现分布式的本质就是多进程协作,共同完成任务。要协作,自然免不了通信。那么,多个进程之间是如何通信的呢?这也就是在“分布式通信技术”模块中,我将要为你讲解的问题。话不多说,接下来我们就一起进入分布式通信的世界吧。今天,我首先带你打卡的是,分布式通信中的远程调用。什么是远程调用?首先,我通过一个例子,来让你对远程调用和本地调用有一个直观了解。以电商...

2020-02-15 11:34:38 890

原创 分布式计算技术MapReduce 详细解读

上周我们学习了消息中间件的核心原理以及如何搭建一套高并发高可用且支持海量存储的生产架构(今天来设计一套高可用高并发、海量存储以及可伸缩的消息中间件生产架构),我们暂且先放一放,后面再进行RocketMQ 详细讲解,今天我们开始学习分布式系统中的另一个核心知识点,即分布式技术技术。分布式计算技术,目前主要分为四大模式,主要包括 MapReduce 、Stream、Actor 以及流水线。今天我就...

2019-12-25 14:57:10 761

原创 教你设计一套高可用高并发、海量存储以及可伸缩的消息中间件生产架构(RocketMQ 必备)

到目前为止,我们已经基本掌握了MQ的相关核心工作原理,同时一起设计了消息路由中心 (消息中间件路由中心你会设计吗,不会就来学学)和 Broker 主从架构(消息队列Broker主从架构详细设计方案,这一篇就搞定主从架构),现在如果让你基于它的基本原理去设计一套 MQ 的生产部署架构出来,你准备怎么去思考呢?在这套架构中,你需要着重考虑的就是高可用问题,也就是说要保证整个系统在运行过程中,其中的...

2019-12-23 17:31:14 736

原创 秒杀系统每秒上万订单请求,我们是这么去设计的

前面连续好几天的时间都在讲怎么去提升我们系统的性能,将数据库改造成分布式存储,同时还讲到了各种缓存的原理以及我们生产中使用的技巧,其实都是因为我们的业务绝大部分都是读多写少的场景。比如,微博中肯定是发微博的用户比看微博的人要少很多很多。这个时候,对于系统而言,整体流量就会不太大,而写流量很可能只占到总体的 1% 。这样的话,即使我们系统 QPS 达到了 10000次/s ,那写请求每秒也只有1...

2019-12-13 15:34:12 1131

空空如也

空空如也

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

TA关注的人

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