- 博客(709)
- 资源 (22)
- 问答 (1)
- 收藏
- 关注
转载 Java字符串模板替换(模板渲染)
java渲染字符串模板,也就是说在java字符串模板中设置变量字符串,使用变量去渲染指定模板中设置好的变量字符串。下面介绍4种替换模板方式:1、使用内置String.formatString message = String.format("您好%s,晚上好!您目前余额:%.2f元,积分:%d", "张三", 10.155, 10);System.out.println(message);//您好张三,晚上好!您目前余额:10.16元,积分:102、使用内置MessageFormat.
2021-06-17 21:26:02 6023 1
转载 如何设计一个亿级消息量的 IM 系统
本文不会给出一套通用的 IM 方案,也不会评判某种架构的好坏,而是讨论设计 IM 系统的常见难题跟业界的解决方案。因为也没有所谓的通用方案,不同的解决方案都有其优缺点,只有最满足业务的系统才是一个好的系统。而且,在有限的人力、物力跟时间资源下,通常需要做出很多权衡,此时,一个能够快速迭代、方便扩展的系统才是一个好的系统。IM 核心概念用户:系统的使用者消息:是指用户之间的沟通内容。通常在 IM 系统中,消息会有以下几类:文本消息、表情消息、图片消息、视频消息、文件消息等等会话:通常指两个用户
2021-04-05 15:50:14 876 1
转载 Vertx - Future.compose
1.vertx中的Future与java原生中不同,二者都有封装结果的功能,但是vertx中为了避免await阻塞event loop线程,导致不能及时响应的问题.通过在Future中定义回调Handler来解决这个问题.demo1: private static void asynchronousMethod(Future<String> f){ f.complete("haha"); } public static void ma.
2021-02-01 01:07:42 1498
转载 一次因Mongo分片键引发的线上血案
前情提要 :一套已经正式上线的程序(在生产环境上锤炼了一个多月,期间,程序稳定性,数据准确性性能良好).因为业务所需,需要修改配置,额外部署一套到新的集群修改完配置,确认无误之后,部署执行. 然后惨案就开始了~本篇博客要点如下:一. 报错及问题解决报错信息 问题解决二. 问题分析和Mongo分片的深度验证问题分析 Mongo分片的深度验证 创建包含分片键的Mongo集合 分片键下各种场景的验证 三.总结一. 报错及问题解决报错信息从茫茫多的报错信息截取出一
2020-12-18 00:21:37 947
转载 MongoDB 标准连接字符串
mongodb://[username:password@]host1[:port1][,host2[:port2],…[,hostN[:portN]]][/[database][?options]]注:并非所有MongoDB驱动都支持完整的连接字符串,不支持此格式连接字串的驱动会有替代连接方案,具体请参照驱动自身的说明文档。 mongodb:// 是连接字串必须的前缀字串 username:password@ 可选项,连接到数据库后会尝试验证登陆 host1 必须的指定至少一个host
2020-11-23 14:57:25 2716
转载 mysql索引底层实现
MySQL 的常用引擎1. InnoDBInnoDB 的存储文件有两个,后缀名分别是 .frm 和 .idb,其中 .frm 是表的定义文件,而 idb 是数据文件。InnoDB 中存在表锁和行锁,不过行锁是在命中索引的情况下才会起作用。InnoDB 支持事务,且支持四种隔离级别(读未提交、读已提交、可重复读、串行化),默认的为可重复读;而在 Oracle 数据库中,只支持串行化级别和读已提交这两种级别,其中默认的为读已提交级别。2. MyisamMyisam 的存储文件有三个,后缀
2020-11-12 01:46:44 571
转载 创建高性能索引
索引是提高MySQL查询性能的一个重要途径,但过多的索引可能会导致过高的磁盘使用率以及过高的内存占用,从而影响应用程序的整体性能。应当尽量避免事后才想起添加索引,因为事后可能需要监控大量的SQL才能定位到问题所在,而且添加索引的时间肯定是远大于初始添加索引所需要的时间,可见索引的添加也是非常有技术含量的。接下来将向你展示一系列创建高性能索引的策略,以及每条策略其背后的工作原理。但在此之前,先了解与索引相关的一些算法和数据结构,将有助于更好的理解后文的内容。索引相关的数据结构和算法通常我们所说的索
2020-11-12 00:41:35 108
转载 NIO 与零拷贝
零拷贝介绍零拷贝是网络编程的关键, 很多性能优化都需要零拷贝。 在 Java程序中, 常用的零拷贝方式有m(memory)map[内存映射] 和 sendFile。它们在OS中又是怎样的设计? NIO中如何使用零拷贝?NIO 与 传统IO对比 传统IO流程示意图 user context: 用户态 kernel context: 内核态 User space: 用户空间 Kernel space: 内核空间 Syscall read: 系统调用读取 Syscal
2020-09-20 01:27:00 230
转载 对于骨架类(AbstractInterface)的理解
通过对Java源码的学习我们会发现,AbstractCollection实现了Collection接口,List接口继承自Collection接口,AbstractList又继承了AbstractCollection类,并且实现了List接口。诸如此种的还有AbstarctSet,AbstarctList,AbstarctMap,都是继承了一个抽象类,又实现了一个上层接口,对此感到不解。后来在effective Java上看到,这样做的好处:痛过对你导出的每个重要接口都提供一个抽象...
2020-08-30 22:13:22 333
转载 支付宝应用的架构到底有多牛?
原文:https://mp.weixin.qq.com/s/tTn5BnD2IfIYYvcXWXQRmw自 2008 年双 11 以来,在每年双 11 超大规模流量的冲击上,蚂蚁金服都会不断突破现有技术的极限。2010 年双 11 的支付峰值为 2 万笔/分钟,到 2017 年双 11 时这个数字变为了 25.6 万笔/秒。2018 年双 11 的支付峰值为 48万笔/秒,2019 年双 11 支付峰值为 54.4 万笔/秒,创下新纪录,是 2009 年第一次双 11 的 1360倍。...
2020-07-13 02:18:34 743
转载 饿了么交易系统 5 年演化史
原文:https://mp.weixin.qq.com/s/mtPQLSONUCWOC2HDPRwXNQ我为什么会写这篇文章,究其缘由:一是自己在交易域做了 4 年,有很多只有我才知道,才能串起来的故事,想把这些记录并保留下来。二是发现后边的很多同学看交易体系时,一接触就是分布式、SOA、每日百万、千万数据量,只知道它是这个样子,很难理解背后的思考和缘由。伴随自己这几年的经验,想让大家能够更容易的理解这个演化过程的原因和历程,有甘有苦。三是很多总结也好,方法论也好,更多是去...
2020-07-13 02:14:50 468
转载 基于大中台架构的电商业务中台最佳实践之三:交易中台技术要点设计之高性能
接着上篇继续讲,接下来主要介绍交易总体设计的技术要点设计,对于电商中台来说,交易系统是核心中的核心,一开始就需要围绕高性能,高可用,和高扩展三个方面来重点设计。本篇主要介绍高性能设计。对于高性能的定义,通常可以理解为系统/服务接口响应时间低(rt)且并发量(qps,tps)高. 提高性能的主要策略有:选择合理的分布式事务处理机制,数据库的分库分表,读写分离,异步化,缓存,复杂查询走搜索。选择合理的分布式事务处理机制交易业务要求订单,库存,优惠券,红包,支付等数据要强一致,如何保证这些数据之间的一致
2020-05-11 00:11:04 579
转载 并发编程之Disruptor框架介绍和高阶运用
1.Disruptor是什么1.1技术背景LMAX是在英国注册并受到FCA监管(监管号码为509778)的外汇黄金交易所, LMAX架构是LMAX内部研发并应用到交易系统的一种技术。它之所以引起人们的关注,是因为它是一个非常高性能系统,这个系统是建立在JVM平台上,核心是一个业务逻辑处理器,官方号称它能够在一个线程里每秒处理6百万订单.一个仅仅部署在4台服务器上的服务,每秒向D...
2020-04-12 00:58:05 956
转载 手机通过Charles用线上域名访问PC本地项目
最近调试微信公众号,由于微信授权需要线上正式环境的域名,笔者想把手机公众号网页重定向到PC本地localhost调试。该方法通过Charles代理转发,适用所有需要域名重定向的场景,例如手机通过在线域名查看pc本地项目,微信开发者工具调试公众号等。先开启本地服务,如果是vue项目,直接运行npmstart就好了。打开Charles(下载地址),点击Tools >...
2020-04-07 02:20:52 1500
转载 Charles抓包(iOS的http/https请求)
Charles安装 HTTP抓包 HTTPS抓包1. Charles安装官网下载安装Charles:https://www.charlesproxy.com/download/2. HTTP抓包(1)查看电脑IP地址(2)设置手机HTTP代理手机连上电脑,点击“设置->无线局域网->连接的WiFi”,设置HTTP代理:服务器为电脑IP地址:如192....
2020-04-07 01:55:39 1096
转载 认识Spring 的注解 (三)之 @AliasFor 使用规则
一、该标签存在的意义 顾名思义 @AliasFor 表示别名,它可以注解到自定义注解的两个属性上,表示这两个互为别名,也就是说这两个属性其实同一个含义。该标签存在的含义,从网上查发现有个点, 若 自定义注解有一个属性,且该属性命名上为了体现其含义,所以有些复杂,这样调用方必须每次使用自定义注解的时候,都必须写明 属性 ,然后设置,这样会比较负责; 同时若自定义注解继...
2020-02-26 01:50:13 676
转载 Servlet3之NIO线程池隔离
线程隔离主要是针对业务中不同业务场景,按照权重区分使用不同的线程池,以达到某一个业务出现问题,不会将故障扩散到其他的业务线程池,从而达到保证主要业务高可用。本案例主要讲解基于servlet3的线程隔离术。首先我们回忆一下在tomcat6,tomcat6只支持BIO,它的处理流程如下:1).tomcat负责接收servletRequest请求2).将接收的请求分配给servlet处理业务3...
2019-12-30 01:49:04 569
转载 Java中文分词hanlp使用
HanLP介绍:http://hanlp.linrunsoft.com/github地址:https://github.com/hankcs/HanLP说明:使用hanlp实现分词、智能推荐、关键字提取、摘要等,更多功能参考官网项目结构该项目中,.jar和data文件夹和.properties需要从官网/github下载,data文件夹下载项目配置修改hanlp.prope...
2019-12-29 15:38:36 418
转载 zookeeper分布式锁
问题(1)zookeeper如何实现分布式锁?(2)zookeeper分布式锁有哪些优点?(3)zookeeper分布式锁有哪些缺点?简介zooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它可以为分布式应用提供一致性服务,它是Hadoop和Hbase的重要组件,同时也可以作为配置中心、注册中心运用在微服务体系中。本章我们将介绍zookeeper如何实现分布...
2019-12-14 23:18:29 477
原创 日志体系与SringBoot的日志应用
以后开发的时候,日志记录方法的调用,不应该来直接调用日志的实现类,而是调用日志抽象层里面的方法;日志实现意思为简单日志门面,它是把不同的日志系统的实现进行了具体的抽象化,只提供了统一的日志使用接口,使用时只需要按照其提供的接口方法进行调用即可,由于它只是一个接口,并不是一个具体的可以直接单独使用的日志框架,所以最终日志的格式、记录级别、输出方式等都要通过接口绑定的具体的日志系统来...
2019-12-08 00:47:40 168
转载 四层、七层负载均衡的区别
一、什么是负载均衡(Load balancing)在网站创立初期,我们一般都使用单台机器对台提供集中式服务,但是随着业务量越来越大,无论是性能上还是稳定性上都有了更大的挑战。这时候我们就会想到通过扩容的方式来提供更好的服务。我们一般会把多台机器组成一个集群对外提供服务。然而,我们的网站对外提供的访问入口都是一个的,比如www.taobao.com。那么当用户在浏览器输入www.taobao...
2019-11-24 02:31:55 221 1
转载 使用httpclient必须知道的参数设置及代码写法、存在的风险
结论:如果使用httpclient 3.1并发量比较大的项目,最好升级到httpclient4.2.3上,保证并发量大时能抗住。httpclient 4.3.3,目前还有一些bug;还是用4.2.x稳定版本吧。以库存项目为例:httpclient一天并发量在1500w左右,峰值一秒7万。在之前使用过程中,一直存在大量的org.apache.http.co...
2019-11-20 18:35:09 586
原创 获取Dao上的自定义注解(了解Mybatis与Spring整合原理)
Dao类@Repository@Tag("user_tag")public interface UserDao {void save(User u)}需要是:将dao放入到一个本地Map中,key是Tag注解的内容,值是UserDao的Bean对象,在上层调用的时候直接Map.get("user_tage").save(u)即可实现1:实现接口BeanPostProce...
2019-11-12 23:13:26 750
转载 什么是列式存储数据库
列存储不同于传统的关系型数据库,其数据在表中是按行存储的,列方式所带来的重要好处之一就是,由于查询中的选择规则是通过列来定义的,因此整个数据库是自动索引化的。按列存储每个字段的数据聚集存储,在查询只需要少数几个字段的时候,能大大减少读取的数据量,一个字段的数据聚集存储,那就更容易为这种聚集存储设计更好的压缩/解压算法。传统的行存储和列存储的区别1、数据是按行存储的2、没有索引的查询...
2019-11-11 11:57:27 2204
转载 互联网架构的演变过程
简介web1.0时代web2.0时代互联网时代 互联网+ --》智慧城市。 2012年提出。云计算+大数据时代背景随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。1、第一时期单一应用架构all in one(所有的模块在一起,技术也不分层)网站的初...
2019-11-03 01:17:44 699
转载 CPU密集型、IO密集型与线程关系
CPU密集型(CPU-bound)CPU密集型也叫计算密集型,指的是系统的硬盘、内存性能相对CPU要好很多,此时,系统运作大部分的状况是CPU Loading 100%,CPU要读/写I/O(硬盘/内存),I/O在很短的时间就可以完成,而CPU还有许多运算要处理,CPU Loading很高。在多重程序系统中,大部份时间用来做计算、逻辑判断等CPU动作的程序称之CPU bound。例如一个计算...
2019-11-03 01:16:10 313
转载 OmniGraffle-绘制流程图
一、介绍OmniGraffle 都类似于 Microsoft Visio。OmniGraffle 可以利用 Visio 的 XML 导出函数以导入/导出 Visio 的 XML 文件,OmniGraffle 也可以直接打开 Visio 默认的二进制 .vsd 文件。OmniGraffle 支持输出 PDF,TIFF,PNG,JPEG,EPS,HTML 图像映射,SVG,Visio XML,Pho...
2019-10-12 18:34:06 5179
转载 利用状态机处理订单状态流转
首先简述一个场景,订单的状态流转。一个订单会有很多种状态:临时单、已下单、待支付、已支付、已完成、退款中等等。每一种状态都和其扭转前的状态、在扭转前状态所执行的操作有关。一 引子举例一个过程:用户将商品加入购物车,在后台生成了一个所谓的“临时单”,这个订单实际上还没有正式生成,因为用户仍然没有点击下单。只有当用户下单后,这个“临时单”才可以转化为一个“待支付的订单”。那么这个过程中:只有...
2019-10-11 18:39:20 7873 2
转载 idea中git远程版本回退
工作中遇到git远程仓库需要回退到历史版本的问题,根据网上的搜索结果结合自己的实践,整理了如下步骤:1. 在“Show History”中找到当前版本(取名:newVersion)和想要回退到的版本(oldVersion)2. 选择newVersion和oldVersion点击“Copy Revision Number”复制两个版本的版本号:newVersion:2746f428a...
2019-09-01 23:48:03 440
转载 EL表达式各种函数使用大全
引入<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>函数名 函数说明 使用举例 fn:contains 判断字符串是否包含另外一个字符串 <c:if test="${fn:contains(name, searchString)}"> fn:con...
2019-08-22 22:31:41 308
转载 Spring EL表达式详细讲解及使用实例
一、简介Spring3中引入了Spring表达式语言—SpringEL,SpEL是一种强大,简洁的装配Bean的方式,他可以通过运行期间执行的表达式将值装配到我们的属性或构造函数当中,更可以调用JDK中提供的静态常量,获取外部Properties文件中的的配置二、用法1、文本表达式文本表达式支持: 字符串(需要用单引号声明)、日期、数字、布尔类型及null,对数字支持负数、指数及小...
2019-08-22 22:30:59 6066
转载 Java异常体系和异常处理机制
异常简介在程序运行过程中出现错误,导致程序出现非预期场景。异常处理可以保证出现错误后,控制接下来的程序流程,是选择定位错误信息,还是抛出异常或捕获异常、还是避免程序非正常退出,都取决于我们。Java的异常体系结构(来自网络) Java把异常作为一种类,当做对象来处理。所有异常类的基类是Throwable类,两大子类分别是Error和Exception。这些异常类可以分为三种类型...
2019-08-15 15:55:08 196
原创 EL判断语句的表达式
总结一下EL表达式的逻辑判断1:eq相等 ne、neq不相等;2:gt大于, lt小于;3:ge大于等于 le 小于等于4:not非mod求模 is [not] div by是否能被某数整除 is [not] even是否为偶数 is [not] even by $b即($a / $b) % 2 == 0...
2019-08-13 19:17:27 1688 1
转载 Navicat Premium Mac 12 破解
https://blog.csdn.net/xhd731568849/article/details/79751188
2019-08-12 01:42:01 600
转载 浅析数据一致性
什么是数据一致性? 在数据有多分副本的情况下,如果网络、服务器或者软件出现故障,会导致部分副本写入成功,部分副本写入失败。这就造成各个副本之间的数据不一致,数据内容冲突。 实践中,导致数据不一致的情况有很多种,表现样式也多种多样,比如数据更新返回操作失败,事实上数据在存储服务器已经更新成功。CAP定理 CAP定理是2000年,由 Eric Brewer 提出来的。Brewer认为在分布...
2019-08-11 20:15:33 487
转载 ES写一致性原理以及quorum机制深入剖析
(1)consistency,one(primary shard),all(all shard),quorum(default)我们在发送任何一个增删改操作的时候,比如说put /index/type/id,都可以带上一个consistency参数,指明我们想要的写一致性是什么?put /index/type/id?consistency=quorumone:要求我们这个写操作,只...
2019-08-11 20:08:38 479
转载 数据一致性设计理念
在分布式存储领域,为了增加系统的高可用性,经常将同一份数据存储多个副本,常见的做法的三备份。但是此做法也引来了数据一致性的问题。为了解决数据一致性的问题,业界常用的有CAP、ACID、BASE等理论模型。CAP原则CAP是对强一致性(Consistency)、可用性(Availability)、分区容忍性(Partition Tolerance) 的一种简称。强一致性:即在分布式系统中同...
2019-08-11 19:48:12 222
转载 CAP原理这样理解最简单
前言众所周知,CAP理论是架构师在设计分布式系统过程中,处理数据一致性问题时必须考虑的基石级理论(圣经级的,^V^)。大意是说,在分布式网络分区环境中,数据的一致性、可用性和分区容忍性三者之间,至多只能保证两者,无法三者同时保证。对于CAP理论,个人刚接触时感觉很容易理解,不就是讲的一个在分布式环境下鱼和熊掌不能兼得的问题吗?诚然,如果从直观上泛泛而谈,的确不难,即在多节点的网络环境中,当要求数...
2019-08-11 18:55:06 1076
转载 单机结构/集群结构/分布式结构
下面就正经解释下三种结构的区别吧~单机结构我想大家最最最熟悉的就是单机结构,一个系统业务量很小的时候所有的代码都放在一个项目中就好了,然后这个项目部署在一台服务器上就好了。整个项目所有的服务都由这台服务器提供。这就是单机结构。那么,单机结构有啥缺点呢?我想缺点是显而易见的,单机的处理能力毕竟是有限的,当你的业务增长到一定程度的时候,单机的硬件资源将无法满足你的业务需求。此时...
2019-08-11 18:52:06 584
elasticsearch2.3.3中离线安装的插件
2017-02-28
azkaban2.5 配置 jar包完整版
2015-07-10
JSP 书目检索系统
2012-01-05
elasticsearch 过滤器使用问题求大神
2015-04-19
TA创建的收藏夹 TA关注的收藏夹
TA关注的人