03 2021 档案
摘要:从操作系统的角度讲,os会维护一个ready queue(就绪的线程队列)。并且在某一时刻cpu只为ready queue中位于队列头部的线程服务。但是当前正在被服务的线程可能觉得cpu的服务质量不够好,于是提前退出,这就是yield。或者当前正在被服务的线程需要睡一会,醒来后继续被服务,这就是sl
阅读全文
摘要:多线程问题: 1、java中为什么要使用多线程使用多线程,可以把一些大任务分解成多个小任务来执行,多个小任务之间互不影像,同时进行,这样,充分利用了cpu资源。 2、java中简单的实现多线程的方式 继承Thread类,重写run方法; 1 2 3 4 5 6 7 8 9 10 11 12 13 1
阅读全文
摘要:堆和栈的概念和区别 在说堆和栈之前,我们先说一下JVM(虚拟机)内存的划分: Java程序在运行时都要开辟空间,任何软件在运行时都要在内存中开辟空间,Java虚拟机运行时也是要开辟空间的。JVM运行时在内存中开辟一片内存区域,启动时在自己的内存区域中进行更细致的划分,因为虚拟机中每一片内存处理的方式
阅读全文
摘要:jmap 是一个 Java 内存映像工具,用于生成 Java 应用程序的堆转储文件(heap dump)并查看对象内存占用情况,还可以分析 JVM 的垃圾收集器行为。它在排查内存泄漏、查看对象分布以及分析内存占用问题时非常有用。 基本用法jmap [options] <pid>1pid:Java 进
阅读全文
摘要:1. 场景描述 目前大部分的应用程序中都会用到分页功能,以便减少前端浏览器及后台服务器的压力,以及其他方面的考虑。 (1)分页从概念上可分为逻辑分页和物理分页,逻辑分页主要是通过应用程序(前端或者后端)来分页,是从数据库中获取查询全部数据,然后通过java代码处理或前端处理后,分页展示给使用用户。
阅读全文
摘要:spring-cloud-Gateway是spring-cloud的一个子项目。而zuul则是netflix公司的项目,只是spring将zuul集成在spring-cloud中使用而已。因为zuul2.0连续跳票和zuul1的性能表现不是很理想,所以催生了spring团队开发了Gateway项目。
阅读全文
摘要:1. 场景描述 springcloud微服务,部署一般需要多台服务器配合,开发测试过程中,也需要启动多个实例来进行测试与验证。 2. 问题解决 在idea下,只需要配置下就能启动多个实例,本案例采用在idea下部署2个不同端口的Eureka实例(互为注册)。 2.1 启动成功后界面 说明:idea下
阅读全文
摘要:三个标签完成springboot定时任务配置 1. 问题描述 Java项目定时任务是必备模块,月高风黑夜跑个批处理,记录或者统计一些系统信息。 2. 解决方案: 结合springboot,只需三个标签就能完成定时任务配置。 2.1 标签1 用在springboot的启动类上,@EnableSched
阅读全文
摘要:1. 场景描述 先介绍下背景,项目为什么需要用多模块?springmvc难道还不够? (1)设计模式真言:“高内聚、低耦合”,springmvc项目,一般会把项目分成多个包:controller、service、dao、util等,但是随着项目的复杂性提高,想复用其他一个模块的话,因为是包的形式,剥
阅读全文
摘要:1. 场景描述 (1)权限控制是IT项目特别是企业项目,绕不开的重要模块,接下来结合springboot介绍下权限控制框架shiro。 (2)springboot集成shiro的东西有点多,一篇博客完全介绍清楚有点费劲,拟分成3篇吧,第一篇介绍概念、原理;第二篇介绍搭建代码,详细介绍shiro框架;
阅读全文
摘要:1. 场景描述 新申请的服务器,要压测下python算法程序最多能执行多少条数据,有几年没用压力测试工具-jmeter了,重新下载了最新版本,记录下,也希望能帮到准备使用jmeter做压测的朋友。 2. 解决方案 2.1 官网介绍 官网地址: https://jmeter.apache.org/ 说
阅读全文
摘要:1. 场景描述 java开发前后端分离模式越来越流行,后端人员可以直接使用swagger进行接口调试(前后端分离之Swagger2),但是调试的时候,需要设置入参,假如该模块不是软件老王开发的,接别人的代码的话,入参定义就会有点麻烦了。 2. 解决方案 使用浏览器的开发者模式,获取前后端交互信息,现
阅读全文
摘要:1. 场景描述 本节结合springboot2、springmvc、mybatis、swagger2等,搭建一个完整的增删改查项目,希望通过这个基础项目,能帮忙朋友快速上手springboot2项目。 2. 解决方案 2.1新建springboot项目 使用idea新建springboot项目(sp
阅读全文
摘要:1. 场景描述 以前多线程也常用,这次因需再页面上用到多线程,如下图,总结下,有需要的朋友可以参考下。 2. 解决方案 2.1 线程池概念 线程池官方定义不说了,通俗说下:池子的概念,事先(预定义)创建后,后续的线程可以直接从池子中拿,好处: (1)来创建线程比较消耗资源,不用重复创建; (2)池子
阅读全文
摘要:实现定时任务有5种方式: 使用线程创建定时任务 使用 TimerTask 创建定时任务 使用线程池创建定时任务 使用 Quartz 框架实现定时任务 使用 @Scheduled 注解实现定时任务 xxl-job 实现分布式定时任务 一、使用线程创建定时任务 public class ThreadTa
阅读全文
摘要:1. 场景描述 (1)今天找资料,无意中看到15年底-16年初弄的关于区块链的资料,当时写了个交流汇报区块链的ppt,感觉挺好的,共享下,希望能帮助朋友们理解区块链。 (2)背景:15年底,老板从朋友那里听说区块链,据说外国很火,想趁着国内还不多,看看有啥机会没,比如申请个专利啥的,带着几个人兼职做
阅读全文
摘要:1.场景描述 因kafka以前用的不多,只往topic中写入和读取过数据,这次刚好又要用到,记录下kafka集群搭建及结合springboot使用。 2. 解决方案 2.1 简单介绍 (一)关于kafka,网上的介绍有很多,简单说就是消息中间件,大数据项目中经常使用,我们项目是用于接收日志流水数据。
阅读全文
摘要:1. 场景描述 最近博客更新的少,跟朋友一起做些事情,最近主要给朋友做些售前工作,阿里云的产品线是真多,好多英文缩写,需要做沟通,系统汇总了一下,记录下,有需要的朋友拿走不谢。 2. 解决方案 从下面这个架构图开始吧: 2.1 云数据库 RDS 阿里云关系型数据库RDS(Relational Dat
阅读全文
摘要:1. 场景描述 朋友项目需要弄个测试环境,稍微帮忙了下,系统不复杂,但是需要自己安装mysql、Reids、Es、RabbitMq等,Mq主要用在同步用户信息与发送站内消息和短信上,RabbitMq以前没记录,刚好又重新走了一遍,记录下部署、测试、常见问题,有需要的朋友,拿走不谢! 2.解决方案 2
阅读全文
摘要:1. 场景描述 客户打包买了很多阿里云的产品,但是阿里云不负责实施,基于阿里云产品与客户需求,拟采用的数据中台架构,有类似需求的,可以参考下,拿走不谢! 2. 解决方案 阿里产品大数据架构图: 从下到上,简要介绍下各个阿里产品作用及承担的任务: 2.1 云数据库 RDS 阿里云关系型数据库RDS(R
阅读全文
摘要:背景: 可以从不同的的角度去划分垃圾回收算法: 按照基本回收策略分 引用计数(Reference Counting): 比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用收集计数为0的对象。此算法最致命的是无法处理循环引用的问题。 标记-清除(M
阅读全文
摘要:背景: 以下配置主要针对分代垃圾回收算法而言。 堆大小设置 年轻代的设置很关键 JVM中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。在Window
阅读全文
摘要:背景: 垃圾回收的瓶颈 传统分代垃圾回收方式,已经在一定程度上把垃圾回收给应用带来的负担降到了最小,把应用的吞吐量推到了一个极限。但是他无法解决的一个问题,就是Full GC所带来的应用暂停。在一些对实时性要求很高的应用场景下,GC暂停所带来的请求堆积和请求失败是无法接受的。这类应用可能要求请求的返
阅读全文
摘要:1. static关键字是什么意思?Java 中是否可以覆盖(override)一个 private 或者是 static 的方法?是否可以在 static 环境中访问非static 变量? static关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问。 Java中st
阅读全文
摘要:1. ZooKeeper 是什么? ZooKeeper 是一个开源的分布式协调服务。它是一个为分布式应用提供一致性服务的软件,分布式应用程序可以基于 Zookeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。 ZooK
阅读全文
摘要:计算机网络体系结构 在计算机网络的基本概念中,分层次的体系结构是最基本的。计算机网络体系结构的抽象概念较多,在学习时要多思考。这些概念对后面的学习很有帮助。 网络协议是什么? 在计算机网络要做到有条不紊地交换数据,就必须遵守一些事先约定好的规则,比如交换数据的格式、是否需要发送一个应答信息。这些规则
阅读全文
摘要:为什么使用MQ?MQ的优点 简答 异步处理 - 相比于传统的串行、并行方式,提高了系统吞吐量。 应用解耦 - 系统间通过消息通信,不用关心其他系统的处理。 流量削锋 - 可以通过消息队列长度控制请求量;可以缓解短时间内的高并发请求。 日志处理 - 解决大量日志传输。 消息通讯 - 消息队列一般都内置
阅读全文
摘要:WebSocket介绍与原理 WebSocket protocol 是HTML5一种新的协议。它实现了浏览器与服务器全双工通信(full-duplex)。一开始的握手需要借助HTTP请求完成。 ——百度百科 目的:即时通讯,替代轮询 网站上的即时通讯是很常见的,比如网页的QQ,聊天系统等。按照以往的
阅读全文
摘要:1、缓存雪崩 缓存雪崩是指缓存同一时间大面积的失效,所以,后面的请求都会落到数据库上,造成数据库短时间内承受大量请求而崩掉。 解决方案 缓存数据的过期时间设置随机,防止同一时间大量数据过期现象发生。 一般并发量不是特别多的时候,使用最多的解决方案是加锁排队。 给每一个缓存数据增加相应的缓存标记,记录
阅读全文
摘要:什么是Redis Redis(Remote Dictionary Server) 是一个使用 C 语言编写的,开源的(BSD许可)高性能非关系型(NoSQL)的键值对数据库。 Redis 可以存储键和五种不同类型的值之间的映射。键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有
阅读全文
摘要:1. ResponseBody @ResponseBody的作用其实是将java对象转为json格式的数据。 @responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML
阅读全文
摘要:1. 什么是区块链? 回答:区块链是不间断的经济交易数字分类帐,可以进行编程,以记录不仅是金融交易,还可以记录几乎所有有价值的东西。简单来说,它是一个不可变记录的分散式分布式数据库,该数据库由计算机集群管理,但不属于任何单个实体。区块链存储为数据库或平面文件。 2. 流行的区块链平台有哪些。 回答:
阅读全文
摘要:1. 问:你认为区块链技术中的区块意味着什么? 区块链由所有金融交易的信息组成。一个块只不过是一个记录列表。当这些列表相互结合时,它们被称为区块链。例如,一个组织有100个分类账簿,其中的组合被称为区块链,单个分类账将被视为一个区块。 2. 问:为什么区块链是一种值得信赖的方法 有很多原因,区块链可
阅读全文
摘要:基本概念和用法 线程本地变量是说,每个线程都有同一个变量的独有拷贝,这个概念听上去比较难以理解,我们先直接来看类TheadLocal的用法。 ThreadLocal是一个泛型类,接受一个类型参数T,它只有一个空的构造方法,有两个主要的public方法: public T get() public v
阅读全文
摘要:Seata 是什么? (1)Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。 (2)在 Seata 开源之前,Seata 对应的内部版本在阿里经济体内部一直扮演着分布式一致性中间件的角色,帮助经济体平稳的度过历年的双11,对各BU业务进行了有力的
阅读全文
摘要:前言 一个成熟的大型网站(如淘宝、天猫、腾讯等)的系统架构并不是一开始设计时就具备完整的高性能、高可用、高伸缩等特性的,它是随着用户量的增加,业务功能的扩展逐渐演变完善的,在这个过程中,开发模式、技术架构、设计思想也发生了很大的变化,就连技术人员也从几个人发展到一个部门甚至一条产品线。所以成熟的系统
阅读全文
摘要:微服务实战系列(十一)-微服务之自定义脚手架 1. 场景描述 (1)随着微服务越来越常见,一个大的项目会被拆分成多个小的微服务,jar包以及jar之间的版本冲突问题,变得越来越常见,如何保持整体微服务群jar及版本统一,也变成更加重要了,maven的自定义archetype(模板/骨架/脚手架)很好
阅读全文
摘要:1.场景描述 因为要做网关的高可用,用到了keepalived+nginx,来保证nginx的高可用,如下图: 安装了keepavlived,走了一些弯路,记录下吧,nginx的安装就不多说了,博客已经介绍了好几篇了。 2. 解决方案 2.1 安装keepalived 2.1.1 安装相关依赖包 [
阅读全文
摘要:1. 微服务关系架构图 简要说明: (1)所有应用或者服务要想对外提供服务(包括网关),必须首先到注册中心进行注册。 (2)所有访问通过服务网关进行访问,然后由服务网关路由到对应服务中心进行交互访问。 2. 网关及注册中心高可用架构图 2.1 springcloud eureka高可用方案 由上图可
阅读全文
摘要:1. 场景描述 先说明下项目中使用的网关是:springcloud gateway, 因需要给各个网关服务系统提供自定义配置路由规则,实时生效,不用重启网关(重启风险大),目前已实现:动态加载自定义路由文件,动态加载路由文件中的路由规则。 2.解决方案 2.1 解决思路 新建总的监控总类,监控网关服
阅读全文
摘要:1. 场景描述 springcloud刚推出的时候用的是netflix全家桶,路由用的zuul,但是据说zull1.0在大数据量访问的时候存在较大性能问题,2.0就没集成到springcloud中了,springcloud推出了自己的路由-springcloud gateway,亲儿子,目前官网主推
阅读全文
摘要:1. 场景描述 今天接着介绍springcloud,今天介绍下springcloud的路由网关-Zuul,外围系统或者用户通过网关访问服务,网关通过注册中心找到对应提供服务的客户端,网关也需要到注册中心进行注册。 2. 解决方案 2.1 官网架构图 先把官网的图在贴一下,便于理解。 说明: gate
阅读全文
摘要:1. 场景描述 springcloud提供了一整套可行的构建分布式系统的方案,使的企业/开发人员能够快速沟通分布式系统,今天快速构建下springcloud的注册中心Eureka。 2. 解决方案 2.1 springcloud介绍 COORDINATE ANYTHING: DISTRIBUTED
阅读全文
摘要:1. 场景描述 前几天介绍了下springcloud的Eureka注册中心(springcloud-注册中心快速构建),今天结合springboot-web介绍下eureka客户端服务注册。 2. 解决问题 2.1 新建eureka客户端项目 2.1.1 new->project 2.1.2 项目名
阅读全文
摘要:1 . 问题描述 随着springboot、springcloud的不断迭代升级,开发效率不断提升,越来越多的开发团队加入到spring的大军中,今天用通俗的语言,介绍下什么是springboot,springcloud以及它们之间的关系。 2. 方案 2.1 首先说下maven 关于maven不想
阅读全文
摘要:1.场景描述 因要用到微服务,关于注册中心这块,与同事在技术原型上做了讨论,初步定的方案是使用:阿里巴巴的nacos+springcloud gateway,下面表格是同事整理的注册中心对比,以前用的springcloud的eureka作为注册中心,与eurka相比,这次之所以用阿里的nacos,其
阅读全文
摘要:1. 场景描述 nacos最近用的比较多,介绍下nacos及部署吧,刚看了下以前写过类似的,不过没写如何部署及与eureka区别,只展示了效果,补补吧。 2.解决方案 2.1 nacos与eureka简要描述 (1)springcloud eureka是注册中心,负责微服务的注册与发现,起到承上启下
阅读全文
摘要:什么是Restful Restful是一种架构设计风格,提供了设计原则和约束条件,而不是架构,而满足这些约束条件和原则的应用程序或设计就是 Restful架构或服务。 主要的设计原则: 资源与URI 统一资源接口(HTTP方法如GET,PUT和POST) 资源的表述 资源的链接 状态的转移 总之,R
阅读全文
摘要:从SOA说起SOA是把项目拆成组件,每个组件暴露出服务,强调的是服务的复用。SOA架构实现不依赖于技术,因此能够被各种不同的技术实现。例如:SOAP, RPC,REST,DCOM,CORBA,OPC-UA,Web services,DDS,Java RMI,WCF (Microsoft's impl
阅读全文
摘要:深入理解 RESTful Api 架构 周梦康 发表于 2016-01-03 分类于 笔记 61818 次浏览 标签 : REST 一些常见的误解 不要以为 RESTful Api 就是设计得像便于 SEO 的伪静态,例如一个 Api 的 URL 类似于 http://xxx.com/blog/1
阅读全文
摘要:1. 什么是REST REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移。 它首次出现在2000年Roy Fielding的博士论文中,Roy Fielding是HTTP规范的主要编写者之一。 他在论文中提到:"我这篇文章的
阅读全文
摘要:一级缓存和二级缓存的区别: 主要的不同是它们的作用范围不同。 一级缓存是session级别的。 也就是只有在同一个session里缓存才起作用,当这个session关闭后这个缓存就不存在了。 而二级缓存是sessionFactory级别的。 其缓存对同一个sessionFactory生产出来的ses
阅读全文
摘要:https://blog.csdn.net/qq_27384769/article/details/80159953 一、概述数据在线分析处理和常用工具大数据离线处理和常用工具OLAP 和 OLTP 处理和常用处理工具二、数据在线分析处理和常用工具1、Flume 介绍Flume 专注于大数据的收集和
阅读全文
摘要:最近公司项目中做了一个两个oracle数据库数据进行数据实时同步的功能,由于数据量和环境的因素,开发人员采用了kafka做为消息中间件来转发数据,笔者就进行了kafka的学习,记录了下面的文档,望大家多多指教,共同学习进步。 一、 Kafka介绍 Kafka是由Java和Scala编写的是一个分布式
阅读全文
摘要:说到 Nginx ,可能大家最先想到的就是其负载均衡以及反向代理的功能。没错,这也是当前使用 Nginx 最频繁的两个功能,但是 Nginx 可不仅仅只有这两个功能,其作用还是挺大的,本系列博客就来慢慢解开 Nginx 神秘的面纱。 1、Nginx 的简介 Nginx 是由俄罗斯人 Igor Sys
阅读全文
摘要:一类是跟某种特定语言平台绑定的,另一类是与语言无关即跨语言平台的。 跟语言平台绑定的开源 RPC 框架主要有下面几种。 Dubbo:国内最早开源的 RPC 框架,由阿里巴巴公司开发并于 2011 年末对外开源,仅支持 Java 语言。 Motan:微博内部使用的 RPC 框架,于 2016 年对外开
阅读全文
摘要:简单介绍RPC协议及常见框架,对比传统restful api和RPC方式的优缺点。常见RPC框架,gRPC及序列化方式Protobuf等 HTTP协议 http协议是基于tcp协议的,tcp协议是流式协议,包头部分可以通过多出的\r\n来分界,包体部分如何分界呢?这是协议本身要解决的问题。目前一般有
阅读全文
摘要:一.mina简介 Apache Mina是一个能够帮助用户开发高性能和高伸缩性网络应用程序的框架。与Netty出自同一人之手,都是一个介于应用程序与网络之间的NIO框架,通过Java nio技术基于TCP/IP和UDP/IP协议提供了抽象的、事件驱动的、异步的API,使程序员从繁琐的网络操作中解脱出
阅读全文
摘要:概述Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前提供了 C++、Java、Python 三种语言的 API
阅读全文
摘要:概述netty 5 已经放弃掉了,作为学习netty4和5的差别不大,本例子是基于netty5 https://github.com/netty/netty/issues/4466 线程安全一个thread + 队列 == 一个单线程线程池。线程安全的,任务是线性串行执行的 线程安全,不会产生阻塞效
阅读全文
摘要:核心框架类 /* * Copyright 2011 Alibaba.com All right reserved. This software is the * confidential and proprietary information of Alibaba.com ("Confidentia
阅读全文
摘要:Netty Hello Word-copy 概述https://github.com/csy512889371/learndemo/netty/NettyHellonetty版本大致版本分为 netty3.x 和 netty4.x、netty5.x netty可以运用在那些领域?1、分布式进程通信
阅读全文
摘要:分布式事务服务简介 注意:为向用户提供更加优质的服务,蚂蚁金融云已对中间件产品完成进一步升级改造,并计划于 2018 年 3 月 31 日下线本产品。 分布式事务服务(Distributed Transaction Service,简称 DTS)是一个分布式事务框架,用来保障在大规模分布式环境下事务
阅读全文
摘要:实现业务活动的主动发,在完成业务处理后,向业务活动的被动方发送消息允许消息丢失业务活动的被动方根据定时策略,向业务活动的主动发查询,恢复丢失的业务消息约束被动方的处理结果不影响主动方的处理结果成本业务查询与校对系统的建设成本适用范围对业务最终一致性的时间敏感度低跨企业的业务活动用到的服务模式可查询操
阅读全文
摘要:一、消息服务子系统1、表结构DROP TABLE IF EXISTS `rp_transaction_message`;CREATE TABLE `rp_transaction_message` ( `id` varchar(50) NOT NULL DEFAULT '' COMMENT '主键ID
阅读全文
摘要:消息发送一致性(可靠消息的前提保障) 一、消息中间件的应用场景 消息中间件在分布式系统中的主要作用:异步通讯、解耦、并发缓冲如图:通过引入消息中间件来解耦应用间(服务间)的直接调用,同时也会起到异步通讯和缓冲并发的作用二、消息发送和投递的不可靠性 分布式部署环境下,需要通过网络进行通讯,就引入了数据
阅读全文
摘要:微服务架构技术栈 场景: 如果我们打开支付宝首页,去看我们的余额,它会展示你的总资产,昨日收益、累计收益等信息。假如这个页面所展示的信息,都来自各个不同的系统/应用,我们通过各个接口把这些数据展示出来。如果我们现在要在前端页面展示这几项数据的话,我们应该怎么去展示呢? 在这种情况下,我们不可
阅读全文
摘要:应用现状比较 由于历史原因,集中式架构多用于传统银行、电信等行业。主机资源集中在大型主机或小型机上。集中式架构下,包括操作系统,中间件,数据库等“基础软件” 均为闭源商用系统。集中式架构的典型案例是 IOE(IBM, Oracle,EMC)提供的计算设备、数据库技术和存储设备共同组成的系统。 近年来
阅读全文
摘要:ID是数据的唯一标识,传统的做法是利用UUID和数据库的自增ID,在互联网企业中,大部分公司使用的都是Mysql,并且因为需要事务支持,所以通常会使用Innodb存储引擎,UUID太长以及无序,所以并不适合在Innodb中来作为主键,自增ID比较合适,但是随着公司的业务发展,数据量将越来越大,需要对
阅读全文
摘要:连接相关参数 max_connections:允许客户端并发连接的最大数量,默认值是151,一般将该参数设置为500-2000max_connect_errors:如果客户端尝试连接的错误数量超过这个参数设置的值,则服务器不再接受新的客户端连接。可以通过清空主机的缓存来解除服务器的这种阻止新连接的状
阅读全文