- 博客(391)
- 资源 (25)
- 问答 (1)
- 收藏
- 关注

转载 做一个少数人特别需要的产品
在你做创业产品的时候,一定要缩小目标市场。「有时候应该故意挑选一些有着强烈需求的细分市场。」Y Combinator 的联合创始人 Paul Graham 曾经写道,「这就像集中火力燃烧一个点,在它变得很热之前不要盲目的加柴火。」 下面给你列一些成功产品的例子:Facebook 在刚启动的时候只针对哈佛的学生,Uber 在刚启动的时候只针对旧金山市场,并且就连星巴克也是先在西雅图开一个店而
2014-11-26 15:38:07
1082

转载 非常成功的人会做的八件事
商业世界里最成功的人们工作的方式与众不同。看看他们是怎么做的——以及为什么他们的做法会成功。我有幸认识很多非常成功的人。我曾经描写过这些人共有的一套观念和信仰。他们也有很多共同的习惯:1. 他们不会创建备份计划。备份计划能够让你在晚上更容易睡着。备份计划也会在事情变得艰难的时候让你更容易退出。如果别无选择的话,那么你会更努力地执行主计划,而且坚持更长的
2012-11-28 11:21:50
1275
原创 Java自带日志工具java.util.logging.Logger
java.util.logging.Logger是JDK自带的日志工具类,从1.4版本开始就已经有了。由于log4j等开源的日志组件,这个Logger并没有太多展现机会。但在一些测试性的代码中,JDK自带的Logger比log4j等更方便。创建Logger对象要使用JDK的日志功能,首先要取得java.util.logging.Logger实例,这可以通过Logger类的两个静态getLogger()方法来取得:static Logger getLogger(String name)
2021-12-24 18:30:31
13577
9
原创 SpringBoot集成Druid内置监控详解
Druid的监控统计功能是通过filter-chain扩展实现,采集的信息非常全面,包括SQL执行、并发、慢查、执行时间区间分布等。并且Druid内部提供了一个Servlet用于展示Druid的统计信息。想要集成SQL监控页面需要在yml中增加如下内容:spring: datasource: druid: # StatViewServlet配置 sql监控 stat-view-servlet: enabled: true url-pat
2021-08-03 13:32:50
3535
1
原创 SpringBoot集成Druid连接池进行SQL监控
Druid连接池是阿里巴巴开源的数据库连接池项目。Druid连接池为监控而生,内置强大的监控功能,监控特性不影响性能。Druid的监控统计功能是通过filter-chain扩展实现,采集的信息非常全面,包括SQL执行、并发、慢查、执行时间区间分布等。并且Druid内置提供了一个StatViewServlet用于展示Druid的统计信息,提高html页面展示非常完备的监控信息,可以快速诊断系统的瓶颈。而Druid增加StatFilter之后,能采集大量统计信息,同时对性能基本没有影响。StatFilter
2021-07-29 22:07:26
1982
原创 JVM介绍与参数详解
JVM是Java Virtual Machine(Java虚拟机)的缩写,它是java运行环境的一部分,是一个虚构出来的计算机,它是通过在实际的计算机上仿真模拟各种计算机功能来实现的。引入Java虚拟机后,Java语言在不同平台上运行时就不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM在整个JDK中处于最底层,负责与操作系统之间进行交互。JVM是java字节码执行的
2021-05-10 17:58:24
808
原创 SQL语句merge into的用法
应用场景在批量更新大量的数据时,使用Insert 和Update操作会出现效率低下,甚至卡死的情况。改用 MERGE INTO 代替执行批量更新,会提升执行效率。merge into将源数据(来源于实际的表,视图,子查询)更新或插入到指定的表中(必须实际存在),好处是避免了多个insert 和update操作。merge into是一个目标性明确的操作符,不允许在一个merge 语句中对相同的行insert或update操作。这个语法仅需要一次全表扫描就完成了全部工作,执行效率要高于insert+u
2020-07-24 13:56:07
17994
原创 Java中的匿名类与Lambda表达式
匿名类匿名类是一个没有名称的内部类,并且只能创建一个对象实例。当要实现某些“额外”功能(例如类或接口的重载方法)来创建对象的实例时,匿名类可能很有用,这时不必实际子类化。匿名类主要以两种方式创建:继承类(可以是抽象的或具体的)实现接口Java引入了匿名类的创建,以减少代码复杂性。如果我们创建一个单独的类来实现一个接口并使用它的实例来调用该方法,则会产生开销。而当我们从不在其他任何地方...
2019-12-27 11:20:03
4571
3
原创 Java中生成唯一ID的方法
有时我们不依赖于数据库中自动递增的字段产生唯一ID,比如多表同一字段需要统一一个唯一ID,这时就需要用程序来生成一个唯一的全局ID。UUID从Java 5开始, UUID 类提供了一种生成唯一ID的简单方法。UUID是通用唯一识别码 (Universally Unique Identifier)的缩写,UUID来源于OSF(Open Software Foundation,开源软件基金会)的D...
2019-12-19 15:47:36
21432
7
原创 Twitter的snowflake算法改进
Twitter的snowflake算法是在分布式系统中一种自增ID的算法,ID能够按照时间有序生成并且可以做到全局唯一。算法生成的是Long类型的id,一个Long类型占8个字节,每个字节占8比特,也就是说一个Long类型占64个比特(0和1)。Twitter是这样分配的:正数位(占1比特)+时间戳(占41比特)+机器id(占5比特)+数据中心(占5比特)+自增值(占12比特),总共64比特组...
2019-12-13 13:37:49
1193
转载 Netty精粹之基于EventLoop机制的高效线程模型
摘要: Infoq有篇文章提到通过Netty4+Thrift压缩二进制编码技术有人实现了10W TPS(1K的复杂POJO对象)跨节点远程服务调用,对于RPC应用来说高性能的三个主题永远是IO模型、数据协议、线程模型,10W TPS的测试结果一方面归功于Thrift方面压缩二进制编码技术的高效(这里有protobuf和thrift相关测试数据)。另一方面还要归功于Netty精心设计的高效线程模型。...
2019-11-29 13:19:11
546
原创 Netty 核心概念介绍和简单示例
Netty是一个异步的,事件驱动的网络框架,我们可以使用它来开发高性能客户端和服务器。在本文中,我将解释一些基本的netty概念,以便当我们开始使用netty框架来构建我们自己的Http Web服务器和客户端时,很容易理解Netty术语。核心概念ChannelChannel是Java NIO的基础。它表示一个开放的连接,能够执行IO操作,例如读取和写入。Channel向开发人员提供以下内容...
2019-11-22 16:33:05
799
原创 使用Guava EventBus实现Java组件间的通信
在构建企业应用程序时经常出现的一种情况是在一个过程成功后需要实现一系列业务流程,例如,如果您正在构建购物网站,则可能需要在产品付款成功后执行以下操作:购买后减少商店中可用的物品数量。向商店老板发送收据。向买方发送收据。在某些情况下,您可能希望这些过程对于产品购买而言是原子性的,也就是说,在发生产品购买之后,必须减少项目数量,如果在减少可用项目数量方面存在问题,则还原产品购买。通常会在事...
2019-11-14 17:47:33
6072
2
原创 解决ActiveMQ服务停掉后无限重连问题
断线重连机制是ActiveMQ的高可用性具体体现之一。ActiveMQ提供failover机制去实现断线重连的高可用性,可以使得连接断开之后,不断的重试连接到一个或多个brokerURL。默认情况下,如果client与broker直接的connection断开,则client会新起一个线程,不断的从url参数中获取一个url来重试连接。但有时在做开发时可能不需要连接服务器,这时程序在后台出现了...
2019-11-08 16:15:11
5076
原创 使用SpotBug进行静态代码检查
在运行程序前我们可以通过编译来发现问题,但这样是远远不够的。这是因为在编译期间仅捕获到非常小的错误范围,即语法错误,无效引用等。当程序包含编译错误时,IDE会发出警告,但它无法防范其他类型的错误,例如运行时错误或逻辑错误。通过使用静态分析工具SpotBugs,浏览代码以查找某些“已知的坏味道”:可能会导致偶发性/间歇性问题,性能不佳等的事物。这些问题很难通过测试找到,因此通过检查通常是唯一可行的...
2019-11-07 18:50:28
5728
原创 Java注解的用处和使用
Java 注解(Annotation)又称为 Java 标注,是 JDK5.0 引入的一种注释机制。Java 语言中的类、方法、变量、参数和包等都可以被标注。和 Javadoc 不同,Java 标注可以通过反射获取标注内容。在编译器生成类文件时,标注可以被嵌入到字节码中。Java 虚拟机可以保留标注内容,在运行时可以获取到标注内容 (通过 解析注解 来使用这些数据)。 它也支持自定义 Java ...
2019-11-02 00:07:08
6611
1
原创 H5通过数据流方式播放视频
本文介绍如何通过H5页面通过数据流的方式播放服务端的视频文件,可以兼容PC、Android和IOS环境。H5页面可以通过<video> 标签来播放视频。一般的方式如下:<!DOCTYPE HTML><html><body><video src="/i/movie.mp4" controls="controls">your b...
2019-10-21 16:42:58
19170
6
原创 Seata分布式事务中间件Sample演示
Seata(Simple Extensible Autonomous Transaction Architecture)是2019 年 1 月份蚂蚁金服和阿里巴巴共同开源的 分布式事务 解决方案。以 高效 并且对业务 0 侵入 的方式,解决 微服务 场景下面临的分布式事务问题。产生背景随着业务数据规模的快速发展,数据量越来越大,原有的单库单表模式逐渐成为瓶颈。这时需要对数据库进行了水平拆分,将...
2019-09-30 22:12:43
28519
原创 Java字符串比较方法equals的空指针异常
在Java语言中字符串比较有两种方式:== 和equals()。“==”比较的是针对两个String类型变量的引用,当两个String类型的变量指向同一个String对象(即同一个内存堆),则返回true。而equals()方法是对String对象封装的字符串内容进行比较,相同返回true。在用equals方法与其他值做比较的时候,有可能会导致抛出空指针异常。写一个小程序来举例说明:publ...
2019-09-26 16:10:53
9320
5
原创 分布式服务接口:Rest与RPC比较
分布式服务顾名思义服务是分散部署在不同的机器上的,一个服务可能负责几个功能,是一种面向SOA架构的。一个Web服务提供服务API(Application Programming Interface),通过网络在客户端和服务器之间进行通信。服务接口调用大体上就分为两类:RPC(Remote Procedure Call)式和REST式 (Representational State Transfe...
2019-09-20 11:24:40
1726
原创 分布式事务中的Saga模式
微服务架构(MSA)已经变得非常流行。但是,一个常见问题是如何跨多个微服务管理分布式事务。当微服务架构将单体系统分解为自封装服务时,意味着单体系统中的本地事务现在分布到将按顺序调用的多个服务中。说到分布式事务,通常熟悉的是两阶段提交,TCC等常见模式。 初次之外还有基于Saga实现的分布式事务。什么是Saga?Saga事务模型又叫做长时间运行的事务(Long-running-transact...
2019-09-12 14:04:35
9824
原创 MySQL 5.7中对XA支持的改进
介绍XA的意思为“eXtended Architecture”,是The Open Group组织为分布式事务处理创建的标准。虽然MySQL 5.0是第一个支持XA的版本,但MySQL 5.7提升了XA支持的可靠性,修复了许多错误,并增加了整体测试用例覆盖率。背景XA解决了在分布式资源集中的单个事务中保留ACID属性的问题。资源本身可以是其他MySQL服务器,甚至是不同的数据库技术。XA的标...
2019-09-11 13:37:39
2116
原创 分布式事务处理中的幂等性
事务是指以全有或全无的方式执行的一系列操作。所有操作必须全部成功完成,否则在每个操作中所作的所有更改都会被撤消。以数据库为列,事物包含四个特性(ACID)原子性(Atomicity):操作这些指令时,要么全部执行成功,要么全部不执行。只要其中一个指令执行失败,所有的指令都执行失败,数据进行回滚,回到执行指令前的数据状态。一致性(Consistency):事务的执行使数据从一个状态转换为另一...
2019-09-06 15:56:26
2514
原创 解决Maven报错:Plugin execution not covered by lifecycle configuration
当一个新的maven项目导入到工作空间中可能会遇到maven插件lifecycle configuration 错误,例如:Plugin execution not covered by lifecycle configuration: org.apache.maven.plugins:maven-checkstyle-plugin:3.0.0:check (execution: valida...
2019-08-29 17:31:10
10166
1
原创 Spring JTA分布式事务实现
1.概述Java Transaction API,通常称为JTA,是用于管理 Java中的事务的API 。它允许我们以资源无关的方式启动,提交和回滚事务。根据用于管理事务的底层实现,Spring中的事务策略可以分为两个主要部分:单连接器策略(相当于本地事务管理器) - 底层技术使用单连接器。例如,JDBC使用连接级事务、Hibernate以及JDO使用会话级事务。可以应用使用AOP和拦截器...
2019-08-26 13:56:01
11808
2
原创 Spring事务管理
什么是事务在应用程序中,事务是作为单个逻辑工作单元执行的一系列操作;这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行;事务是一组不可再分割的操作集合(工作逻辑单元)。事务划分边界,并且在这些边界内的所有操作都受到约束,并作为单个工作单元执行。事务管理的问题你可以根据自己的需求来管理事务,可以自己管理事务或使用EJB容器托管事务。如果使用JDBC则可以选择JDBC的事务管理API;...
2019-08-23 20:35:41
385
原创 Spring Security OAuth2认证授权示例
本文介绍了如何使用Spring Security OAuth2构建一个授权服务器来验证用户身份以提供access_token,并使用这个access_token来从资源服务器请求数据。1.概述OAuth2是一种授权方法,用于通过HTTP协议提供对受保护资源的访问。首先,OAuth2使第三方应用程序能够获得对HTTP服务的有限访问权限,然后通过资源所有者和HTTP服务之间的批准交互来让第三方应用...
2019-08-15 23:02:53
10544
1
原创 统一身份认证与授权标准介绍:OpenID,OAuth2,SAML
统一身份认证与授权中三种最常见的Web安全协议是OpenID,OAuth和SAML。本文通过举例来介绍这三种协议的含义和之间的不同。授权和身份验证基础知识做为一个面向公众的网站都希望能够对每个用户进行身份验证和授权。身份验证意味着验证某人确实是他们声称的身份。授权意味着决定某个用户能够访问哪些资源,以及允许他们对这些资源执行哪些操作。对于Facebook或Google等网站,用户可以使用一组...
2019-08-14 23:07:00
12880
原创 JOSE (Javascript对象签名和加密)框架介绍
JOSE是一个框架,旨在提供一种在各方之间安全地转移声明(如授权信息)的方法。JOSE框架提供了一系列规范来实现此目的。它是由一组规范构成:JSON Web Token (JWT):JSON Web令牌(RFC7519),定义了一种可以签名或加密的标准格式;JSON Web Signature (JWS):JSON Web签名(RFC7515) , 定义对JWT进行数字签名的过程;JSON...
2019-08-05 23:19:41
5291
原创 Spring Data 注解介绍
Spring Data是Spring 的一个子项目,用于简化数据库访问。Spring Data提供了对数据存储技术的抽象。使业务逻辑代码可以更加独立于底层的持久化实现。目前Spring Data支持NoSQL和关系数据库存储。在本文中,我们将介绍Spring Data,Spring Data JPA和Spring Data MongoDB项目中最常见的注解。1 常见的Spring Data注解...
2019-07-25 15:23:56
3934
1
原创 Spring 核心注解介绍
Spring是一款轻量级的IOC框架,Spring的核心就是Ioc和DI,并通过俩者解耦。Ioc(Inversion of control)控制反转,可以把创建对象和查找依赖对象的权限交给Ioc容器控制,而不是传统的由这些对象的使用方(消费者)进行创建初始化操作。IoC是一种让服务消费者不直接依赖于服务提供者的组件设计方式,是一种减少类与类之间依赖的设计原则。DI(Dependency Injec...
2019-07-18 14:19:12
2926
1
原创 Spring Cache 介绍
Spring Cache是对缓存使用的抽象,通过它我们可以在不侵入业务代码的基础上让现有代码即刻支持缓存。为现有的Spring 应用添加Cache非常简单,为了启用缓存,Spring充分利用了注释,就像启用框架中的任何其他配置级功能一样。1 启动缓存只需将@EnableCaching注解添加到任何配置类,即可以声明方式启用高速缓存功能:@Configuration@EnableCachin...
2019-07-15 16:01:11
2048
原创 Spring Boot2 中的懒加载
默认情况下,在Spring中创建应用程序上下文时会创建所有已定义的bean及其依赖项。但是,当我们使用延迟初始化配置bean时,只会创建bean,并在需要时注入其依赖项。启用全局延迟初始化Spring Boot 2中引入了spring.main.lazy-initialization属性,使得在整个应用程序中配置延迟初始化变得更加容易。将属性值设置为true意味着应用程序中的所有bean都...
2019-07-12 14:34:30
6614
1
原创 Spring Boot内嵌的tomcat日志
Spring Boot本身附带一个嵌入式Tomcat服务器,非常方便。但是在默认情况下是无法看到Tomcat的日志。在本文中,将介绍如何通过配置Spring Boot来显示Tomcat的内部日志和访问日志。Tomcat日志类型嵌入式Tomcat存储两种类型的日志:访问日志 Access Log内部服务器日志访问日志保存应用程序处理的所有请求的记录。这些日志可用于跟踪页面命中计数和用...
2019-07-10 13:58:56
17794
1
转载 java中的线程安全是什么?什么叫线程安全?什么叫不安全?
java中的线程安全是什么:就是线程同步的意思,就是当一个程序对一个线程安全的方法或者语句进行访问的时候,其他的不能再对他进行操作了,必须等到这次访问结束以后才能对这个线程安全的方法进行访问。什么叫线程安全:如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。或者说...
2019-04-30 11:07:46
7437
原创 开源监控系统Prometheus配置说明
Prometheus可以通过命令行参数和配置文件进行配置。虽然命令行参数可以配置一些不可变的系统参数(例如存储位置,保留在磁盘和内存中的数据量等),但配置文件能够定义与抓取作业及其实例相关的所有内容,以及哪些规则文件可以被加载等。要查看所有可用的命令行参数,请运行./prometheus -h。Prometheus可以在运行时重新加载其配置。如果新配置的格式不正确,则不会应用更改。如果想要重载...
2019-04-25 16:45:21
1893
原创 开源监控系统Prometheus入门操作介绍
本文是一个“Hello World”风格的教程,演示了如何在简单的示例设置中安装,配置和使用Prometheus。您将在本地下载并运行Prometheus,然后将其自己看做一个应用程序来进行监控,同时使用Node Exporter采集主机数据。最后通过仪表盘来使用收集的时间序列数据。安装为您的平台下载最新版本的Prometheus,然后解压缩并运行它:$ wget https://githu...
2019-04-18 17:43:30
1992
原创 开源监控系统Prometheus中的一些概念
Prometheus从根本上是将所有数据存储为时间序列(属于同一度量的时间戳值和相同的标记维度集)。除了存储的时间序列,Prometheus还可以生成临时派生的时间序列作为查询的结果。数据模型每个时间序列都由指标名称(metric name)和一组 键值对(lables)来唯一标识。指标名称(metric name)表示被测量的系统的某一特性(例如http_requests_total表示接...
2019-04-10 15:21:09
1161
原创 开源监控系统Prometheus架构说明
Prometheus 是一套开源的系统监控报警框架。它是由 google 前员工在 2012 年创建,作为社区开源项目进行开发,并于 2015 年正式发布。2016 年,Prometheus 正式加入 Cloud Native Computing Foundation。Prometheus架构如下:从图中可看到包含以下主要组件:Prometheus Server: 用于收集和存储时间序列...
2019-04-09 14:40:51
3421
原创 基础设施主机监控指标
基础设施监控是基础设施管理的一个组成部分,它是防御意外停机的第一道防线。要想评估主机的运行状况,可以为每个主机捕获以下性能指标:CPU内存磁盘(存储健康)网卡(网络健康)CPU健康CPU使用率是用于计算CPU运行状况的主要度量。这是CPU忙于处理数据的时间百分比(即,它不是空闲时)。此百分比是针对所有可用CPU核心计算的,设定的范围在0–100%。相同的计算方法可用于系统的总CP...
2019-04-03 21:42:24
2055
1
Spring Cloud Task 简单示例
2018-10-12
Zuul和Eureka的负载均衡示例
2018-09-18
Spring Cloud Netfix Hystrix断路器例子
2018-08-16
Spring Cloud 安全:集成OAuth2的数据库方式实现
2018-07-26
介绍Spring Cloud Stream与RabbitMQ集成
2018-05-13
Spring Cloud微服务的安全保护
2018-05-03
使用Spring Cloud搭建的微服务示例
2018-04-25
基于Apache Mina实现的TCP长连接和短连接实例
2013-04-27
maven 生成javadoc时如何不出现中文
2014-11-25
TA创建的收藏夹 TA关注的收藏夹
TA关注的人