自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

王浩的技术博客

王浩的技术博客,专注于Java语言开发,微服务架构

转载 做一个少数人特别需要的产品

在你做创业产品的时候,一定要缩小目标市场。「有时候应该故意挑选一些有着强烈需求的细分市场。」Y Combinator 的联合创始人 Paul Graham 曾经写道,「这就像集中火力燃烧一个点,在它变得很热之前不要盲目的加柴火。」  下面给你列一些成功产品的例子:Facebook 在刚启动的...

2014-11-26 15:38:07 823 0

转载 非常成功的人会做的八件事

商业世界里最成功的人们工作的方式与众不同。看看他们是怎么做的——以及为什么他们的做法会成功。 我有幸认识很多非常成功的人。我曾经描写过这些人共有的一套观念和信仰。 他们也有很多共同的习惯: 1.    他们不会创建备份计划。 备份计划能够让你在晚上更容易睡着。备份计划也会在...

2012-11-28 11:21:50 1027 0

原创 Java中的匿名类与Lambda表达式

匿名类 匿名类是一个没有名称的内部类,并且只能创建一个对象实例。当要实现某些“额外”功能(例如类或接口的重载方法)来创建对象的实例时,匿名类可能很有用,这时不必实际子类化。 匿名类主要以两种方式创建: 继承类(可以是抽象的或具体的) 实现接口 Java引入了匿名类的创建,以减少代码复杂性。如果...

2019-12-27 11:20:03 494 1

原创 Java中生成唯一ID的方法

有时我们不依赖于数据库中自动递增的字段产生唯一ID,比如多表同一字段需要统一一个唯一ID,这时就需要用程序来生成一个唯一的全局ID。 UUID 从Java 5开始, UUID 类提供了一种生成唯一ID的简单方法。UUID是通用唯一识别码 (Universally Unique Identifier...

2019-12-19 15:47:36 3413 7

原创 Twitter的snowflake算法改进

Twitter的snowflake算法是在分布式系统中一种自增ID的算法,ID能够按照时间有序生成并且可以做到全局唯一。 算法生成的是Long类型的id,一个Long类型占8个字节,每个字节占8比特,也就是说一个Long类型占64个比特(0和1)。 Twitter是这样分配的:正数位(占1比特)+...

2019-12-13 13:37:49 222 0

转载 Netty精粹之基于EventLoop机制的高效线程模型

摘要: Infoq有篇文章提到通过Netty4+Thrift压缩二进制编码技术有人实现了10W TPS(1K的复杂POJO对象)跨节点远程服务调用,对于RPC应用来说高性能的三个主题永远是IO模型、数据协议、线程模型,10W TPS的测试结果一方面归功于Thrift方面压缩二进制编码技术的高效(这...

2019-11-29 13:19:11 127 0

原创 Netty 核心概念介绍和简单示例

Netty是一个异步的,事件驱动的网络框架,我们可以使用它来开发高性能客户端和服务器。在本文中,我将解释一些基本的netty概念,以便当我们开始使用netty框架来构建我们自己的Http Web服务器和客户端时,很容易理解Netty术语。 核心概念 Channel Channel是Java NIO...

2019-11-22 16:33:05 177 0

原创 使用Guava EventBus实现Java组件间的通信

在构建企业应用程序时经常出现的一种情况是在一个过程成功后需要实现一系列业务流程,例如,如果您正在构建购物网站,则可能需要在产品付款成功后执行以下操作: 购买后减少商店中可用的物品数量。 向商店老板发送收据。 向买方发送收据。 在某些情况下,您可能希望这些过程对于产品购买而言是原子性的,也就是说...

2019-11-14 17:47:33 523 1

原创 解决ActiveMQ服务停掉后无限重连问题

断线重连机制是ActiveMQ的高可用性具体体现之一。ActiveMQ提供failover机制去实现断线重连的高可用性,可以使得连接断开之后,不断的重试连接到一个或多个brokerURL。 默认情况下,如果client与broker直接的connection断开,则client会新起一个线程,不断...

2019-11-08 16:15:11 417 0

原创 使用SpotBug进行静态代码检查

在运行程序前我们可以通过编译来发现问题,但这样是远远不够的。这是因为在编译期间仅捕获到非常小的错误范围,即语法错误,无效引用等。当程序包含编译错误时,IDE会发出警告,但它无法防范其他类型的错误,例如运行时错误或逻辑错误。 通过使用静态分析工具SpotBugs,浏览代码以查找某些“已知的坏味道”:...

2019-11-07 18:50:28 731 0

原创 Java注解的用处和使用

Java 注解(Annotation)又称为 Java 标注,是 JDK5.0 引入的一种注释机制。 Java 语言中的类、方法、变量、参数和包等都可以被标注。和 Javadoc 不同,Java 标注可以通过反射获取标注内容。在编译器生成类文件时,标注可以被嵌入到字节码中。Java 虚拟机可以保留...

2019-11-02 00:07:08 1174 0

原创 H5通过数据流方式播放视频

本文介绍如何通过H5页面通过数据流的方式播放服务端的视频文件,可以兼容PC、Android和IOS环境。 H5页面可以通过<video> 标签来播放视频。一般的方式如下: <!DOCTYPE HTML> <html> <body> <vide...

2019-10-21 16:42:58 4531 1

原创 Seata分布式事务中间件Sample演示

Seata(Simple Extensible Autonomous Transaction Architecture)是2019 年 1 月份蚂蚁金服和阿里巴巴共同开源的 分布式事务 解决方案。以 高效 并且对业务 0 侵入 的方式,解决 微服务 场景下面临的分布式事务问题。 产生背景 随着业务...

2019-09-30 22:12:43 469 0

原创 Java字符串比较方法equals的空指针异常

在Java语言中字符串比较有两种方式:== 和equals()。 “==”比较的是针对两个String类型变量的引用,当两个String类型的变量指向同一个String对象(即同一个内存堆),则返回true。而equals()方法是对String对象封装的字符串内容进行比较,相同返回true。 在...

2019-09-26 16:10:53 3263 3

原创 分布式服务接口:Rest与RPC比较

分布式服务顾名思义服务是分散部署在不同的机器上的,一个服务可能负责几个功能,是一种面向SOA架构的。一个Web服务提供服务API(Application Programming Interface),通过网络在客户端和服务器之间进行通信。 服务接口调用大体上就分为两类:RPC(Remote Pro...

2019-09-20 11:24:40 437 0

原创 分布式事务中的Saga模式

微服务架构(MSA)已经变得非常流行。但是,一个常见问题是如何跨多个微服务管理分布式事务。当微服务架构将单体系统分解为自封装服务时,意味着单体系统中的本地事务现在分布到将按顺序调用的多个服务中。 说到分布式事务,通常熟悉的是两阶段提交,TCC等常见模式。 初次之外还有基于Saga实现的分布式事务。...

2019-09-12 14:04:35 1106 0

原创 MySQL 5.7中对XA支持的改进

介绍 XA的意思为“eXtended Architecture”,是The Open Group组织为分布式事务处理创建的标准。虽然MySQL 5.0是第一个支持XA的版本,但MySQL 5.7提升了XA支持的可靠性,修复了许多错误,并增加了整体测试用例覆盖率。 背景 XA解决了在分布式资源集中的...

2019-09-11 13:37:39 494 0

原创 分布式事务处理中的幂等性

事务是指以全有或全无的方式执行的一系列操作。所有操作必须全部成功完成,否则在每个操作中所作的所有更改都会被撤消。 以数据库为列,事物包含四个特性(ACID) 原子性(Atomicity):操作这些指令时,要么全部执行成功,要么全部不执行。只要其中一个指令执行失败,所有的指令都执行失败,数据进行回...

2019-09-06 15:56:26 584 0

原创 解决Maven报错:Plugin execution not covered by lifecycle configuration

当一个新的maven项目导入到工作空间中可能会遇到maven插件lifecycle configuration 错误,例如: Plugin execution not covered by lifecycle configuration: org.apache.maven.plugins:mav...

2019-08-29 17:31:10 838 1

原创 Spring JTA分布式事务实现

1.概述 Java Transaction API,通常称为JTA,是用于管理 Java中的事务的API 。它允许我们以资源无关的方式启动,提交和回滚事务。 根据用于管理事务的底层实现,Spring中的事务策略可以分为两个主要部分: 单连接器策略(相当于本地事务管理器) - 底层技术使用单连接器...

2019-08-26 13:56:01 1315 1

原创 Spring事务管理

什么是事务 在应用程序中,事务是作为单个逻辑工作单元执行的一系列操作;这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行;事务是一组不可再分割的操作集合(工作逻辑单元)。事务划分边界,并且在这些边界内的所有操作都受到约束,并作为单个工作单元执行。 事务管理的问题 你可以根据自己的需求来管...

2019-08-23 20:35:41 76 0

原创 Spring Security OAuth2认证授权示例

本文介绍了如何使用Spring Security OAuth2构建一个授权服务器来验证用户身份以提供access_token,并使用这个access_token来从资源服务器请求数据。 1.概述 OAuth2是一种授权方法,用于通过HTTP协议提供对受保护资源的访问。首先,OAuth2使第三方应用...

2019-08-15 23:02:53 2411 0

原创 统一身份认证与授权标准介绍:OpenID,OAuth2,SAML

统一身份认证与授权中三种最常见的Web安全协议是OpenID,OAuth和SAML。本文通过举例来介绍这三种协议的含义和之间的不同。 授权和身份验证基础知识 做为一个面向公众的网站都希望能够对每个用户进行身份验证和授权。身份验证意味着验证某人确实是他们声称的身份。授权意味着决定某个用户能够访问哪些...

2019-08-14 23:07:00 2297 0

原创 JOSE (Javascript对象签名和加密)框架介绍

JOSE是一个框架,旨在提供一种在各方之间安全地转移声明(如授权信息)的方法。JOSE框架提供了一系列规范来实现此目的。它是由一组规范构成: JSON Web Token (JWT):JSON Web令牌(RFC7519),定义了一种可以签名或加密的标准格式; JSON Web Signatur...

2019-08-05 23:19:41 536 0

原创 Spring Data 注解介绍

Spring Data是Spring 的一个子项目,用于简化数据库访问。Spring Data提供了对数据存储技术的抽象。使业务逻辑代码可以更加独立于底层的持久化实现。目前Spring Data支持NoSQL和关系数据库存储。 在本文中,我们将介绍Spring Data,Spring Data J...

2019-07-25 15:23:56 743 1

原创 Spring 核心注解介绍

Spring是一款轻量级的IOC框架,Spring的核心就是Ioc和DI,并通过俩者解耦。Ioc(Inversion of control)控制反转,可以把创建对象和查找依赖对象的权限交给Ioc容器控制,而不是传统的由这些对象的使用方(消费者)进行创建初始化操作。IoC是一种让服务消费者不直接依赖...

2019-07-18 14:19:12 1237 1

原创 Spring Cache 介绍

Spring Cache是对缓存使用的抽象,通过它我们可以在不侵入业务代码的基础上让现有代码即刻支持缓存。为现有的Spring 应用添加Cache非常简单,为了启用缓存,Spring充分利用了注释,就像启用框架中的任何其他配置级功能一样。 1 启动缓存 只需将@EnableCaching注解添加到...

2019-07-15 16:01:11 436 0

原创 Spring Boot2 中的懒加载

默认情况下,在Spring中创建应用程序上下文时会创建所有已定义的bean及其依赖项。 但是,当我们使用延迟初始化配置bean时,只会创建bean,并在需要时注入其依赖项。 启用全局延迟初始化 Spring Boot 2中引入了spring.main.lazy-initialization属性,使...

2019-07-12 14:34:30 2019 1

原创 Spring Boot内嵌的tomcat日志

Spring Boot本身附带一个嵌入式Tomcat服务器,非常方便。但是在默认情况下是无法看到Tomcat的日志。 在本文中,将介绍如何通过配置Spring Boot来显示Tomcat的内部日志和访问日志。 Tomcat日志类型 嵌入式Tomcat存储两种类型的日志: 访问日志 Access ...

2019-07-10 13:58:56 3421 0

转载 java中的线程安全是什么?什么叫线程安全?什么叫不安全?

java中的线程安全是什么: 就是线程同步的意思,就是当一个程序对一个线程安全的方法或者语句进行访问的时候,其他的不能再对他进行操作了,必须等到这次访问结束以后才能对这个线程安全的方法进行访问。 什么叫线程安全: 如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果...

2019-04-30 11:07:46 1802 0

原创 开源监控系统Prometheus配置说明

Prometheus可以通过命令行参数和配置文件进行配置。虽然命令行参数可以配置一些不可变的系统参数(例如存储位置,保留在磁盘和内存中的数据量等),但配置文件能够定义与抓取作业及其实例相关的所有内容,以及哪些规则文件可以被加载等。 要查看所有可用的命令行参数,请运行./prometheus -h。...

2019-04-25 16:45:21 616 0

原创 开源监控系统Prometheus入门操作介绍

本文是一个“Hello World”风格的教程,演示了如何在简单的示例设置中安装,配置和使用Prometheus。您将在本地下载并运行Prometheus,然后将其自己看做一个应用程序来进行监控,同时使用Node Exporter采集主机数据。最后通过仪表盘来使用收集的时间序列数据。 安装 为您的...

2019-04-18 17:43:30 550 0

原创 开源监控系统Prometheus中的一些概念

Prometheus从根本上是将所有数据存储为时间序列(属于同一度量的时间戳值和相同的标记维度集)。除了存储的时间序列,Prometheus还可以生成临时派生的时间序列作为查询的结果。 数据模型 每个时间序列都由指标名称(metric name)和一组 键值对(lables)来唯一标识。 指标名称...

2019-04-10 15:21:09 392 0

原创 开源监控系统Prometheus架构说明

Prometheus 是一套开源的系统监控报警框架。它是由 google 前员工在 2012 年创建,作为社区开源项目进行开发,并于 2015 年正式发布。2016 年,Prometheus 正式加入 Cloud Native Computing Foundation。 Prometheus架构如...

2019-04-09 14:40:51 1719 0

原创 基础设施主机监控指标

基础设施监控是基础设施管理的一个组成部分,它是防御意外停机的第一道防线。要想评估主机的运行状况,可以为每个主机捕获以下性能指标: CPU 内存 磁盘(存储健康) 网卡(网络健康) CPU健康 CPU使用率是用于计算CPU运行状况的主要度量。这是CPU忙于处理数据的时间百分比(即,它不是空闲时)...

2019-04-03 21:42:24 437 1

原创 数据库监控指标

数据库是系统健康和用户行为健康的重要指标。数据库中的异常行为可能会引起应用程序中的问题。或者,当您的应用程序中存在异常时,您可以使用数据库指标来帮助加快调试过程。 开始监控数据库的最佳方法是确定一些基本的,与具有数据库类型无关的指标。这些指标为理解数据库的运行创造了良好的开端。 吞吐量:数据库的处...

2019-03-13 22:02:49 3723 1

原创 网络性能监控指标

网络性能监控(Network Performance Monitoring NPM)是指用户体验到的测量,诊断和优化网络服务质量的过程。NPM是应用程序性能管理(Application Performance Management APM)的补充。 网络性能监控解决了网络在最终用户体验中的作用。这...

2019-03-12 23:45:11 2317 2

原创 Spring Boot四大神器之Actuator

Spring Boot自带一个名为Actuator执行器的模块,可以启用有关应用程序的指标和统计信息。例如,我们可以收集日志,查看指标,执行线程转储,显示环境变量,了解垃圾收集,以及显示BeanFactory中配置的bean。您可以通过HTTP,JMX公开此信息,或者甚至可以通过SSH直接登录到该...

2019-03-07 22:34:09 374 0

原创 Spring Boot四大神器之CLI

1.简介 Spring Boot CLI 为Spring Cloud 提供了Spring Boot 命令行功能。您可以编写groovy脚本来运行Spring Cloud 组件应用程序(例如@enableurekaserver)。您还可以轻松地执行加密和解密等操作,以支持具有机密配置值的 Sprin...

2019-03-06 22:19:58 10923 0

原创 Spring Boot四大神器之创建自定义Starter

1. 概述 Spring Boot为开发人员提供了大多数流行的开源项目的启动器,但我们不仅限于此。 我们也可以编写自己的自定义启动器。 如果想为我们的组织提供一个内部库,并且将它在Spring Boot上下文中使用,那么为它编写一个启动器也许是一个好的习惯。 这些启动器使开发人员能够避免冗长的配置...

2019-02-27 21:30:48 1592 0

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