Tomcat那些事儿

其他

常用的 19 条 MySQL 优化

在一些用户选择页面中,可能一些用户选择的时间范围过大,造成查询缓慢。主要的原因是扫描行数过多。这个时候可以通过程序,分段进行查询,循环遍历,将结果合并处理进行展示。
2019年12月24日
其他

记一次SpringBoot项目启动卡住问题排查记录

org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:134)
2019年12月19日
其他

HTTPS 原理分析——带着疑问层层深入

其实这就是非加密对称中公私钥的用处,虽然中间人可以得到证书,但私钥是无法获取的,一份公钥是不可能推算出其对应的私钥,中间人即使拿到证书也无法伪装成合法服务端,因为无法对客户端传入的加密数据进行解密。
2019年12月15日
其他

微服务之间的最佳调用方式

这种设计表面上看起来是一个单体程序,它只有一个源代码存储仓库,一个数据库,一个部署,但在程序内部可以按照微服务的思想来进行设计。它可以分成多个模块,每个模块是一个微服务,可以由不同的团队管理。
2019年12月8日
其他

什么是分布式系统,如何学习分布式系统

透明性:使用分布式系统的用户并不关心系统是怎么实现的,也不关心读到的数据来自哪个节点,对用户而言,分布式系统的最高境界是用户根本感知不到这是一个分布式系统,在《Distributed
2019年12月7日
其他

SpringBoot微信点餐开源系统

文件的作用:settings.xml是maven的全局配置文件。而pom.xml文件是所在项目的局部配置。Settings.xml中包含类似本地仓储位置、修改远程仓储服务器、认证信息等配置。
2019年12月5日
其他

如何模拟 5 万的并发用户

为了完成诸如“添加到购物车”,“登录”还有其它这样的请求,你也许要使用正则表达式,JSON路径提取器,XPath提取器,来提取诸如Token字符串,表单构建ID还有其它要素
2019年12月3日
其他

程序员的颈椎有救了~~

我在每次脖子酸疼时按一下感觉马上会好不少。不过还没持续做,同时电脑前的姿势还有待改善,欢迎一起讨论,「一起为互联网健康奋斗五十年」。
2019年12月2日
其他

为什么阿里要禁用 Executors 创建线程池?

使用Executors创建的CachedThreadPool,往线程池中无限添加线程在启动测试类之前先将JVM内存调整小一点,不然很容易将电脑跑出问题,在idea里:Run
2019年11月29日
其他

12306 抢票,极限并发带来的思考

从上面的介绍我们知道用户秒杀流量通过层层的负载均衡,均匀到了不同的服务器上,即使如此,集群中的单机所承受的QPS也是非常高的。如何将单机性能优化到极致呢?要解决这个问题,我们就要想明白一件事:
2019年11月24日
其他

一个秒杀系统的设计思考

人下单成功的情况,因为下单时不会减库存,所以也就可能出现下单成功数远远超过真正库存数的情况,这尤其会发生在大促的热门商品上。如此一来就会导致很多买家下单成功后却付不了款,购物体验自然是比较差的。
2019年11月12日
其他

可能是讲分布式系统最到位的一篇文章

这里需要搞清楚的是,中间件起到的是标准化的作用。中间件只是承载这些标准化想法的介质、工具,可以起到引导和约束的效果,以此起到大大降低系统复杂度和协作成本的作用。我们来分别看一下:
2019年11月7日
其他

分布式系统的本质就这两个问题

此时,我们可以将冗余的节点部署在一个独立的环境中。这个独立的环境,可能是处于同一个局域网内的不同主机,也可能是在不同的局域网,还可能是在不同的机房。很显然,它们能够应对的故障范围是逐步递增的。
2019年11月6日
自由知乎 自由微博
其他

阿里如何抗住双 11 ?服务端高并发架构演进之路

多活数据中心设计:若系统需要极高的高可用,应考虑在多地实施数据中心进行多活,至少在一个机房断电的情况下系统依然可用;
2019年11月4日
其他

Tomcat 的 NIO Connector 源码分析

用于指定协议,也可以传入相应的协议处理类,毕竟协议不是重点,将不同端口进来的连接对应不同处理类才是正道。典型地,我们可以指定以下几个协议处理类:
2019年10月30日
其他

聊聊原子变量、锁、内存屏障那点事

完全的确保顺序一致性需要很大的代价,不仅限制编译器的优化,也限制了CPU的执行效率。为了更好地挖掘硬件的并行能力,现代的CPU多半都是介于两者之间,即所谓的宽松的内存一致性模型(Relaxed
2019年10月15日
其他

Raft协议详解

但是Paxos论文中只给出了单个提案的过程,并没有给出复制状态机中需要的MultiPaxos的相关细节描述。Zab协议被应用在Zookeeper中,业界使用广泛,但是没有抽象成通用library。
2019年10月9日
其他

图解分布式一致性算法

在用户量少的时候,还天天操心啥时候来个百万千万用户,等用户稍微一多起来才发现,原来的一个实例扛不住了。这个时候为了支持更多用户访问,又扩容出来了更多的实例。
2019年10月3日
其他

关于分布式锁原理的一些学习与思考-redis分布式锁,zookeeper分布式锁

假设第一个服务器接收到用户1的请求后,那么这个时候,他就不能只在自己的应用中去判断还有多少钱可以分了,而需要去外部请求专门负责管理这1亿红包的人(服务),问他:哎,我这里要分100块,给我100。
2019年3月26日
其他

一致性哈希算法在分布式场景中的应用

下一步将各个服务器使用H进行一个哈希,具体可以选择服务器的ip或主机名作为关键字进行哈希,这样每台机器就能确定其在哈希环上的位置,这里假设将上文中三台服务器使用ip地址哈希后在环空间的位置如下:
2019年3月23日
其他

Spring Boot Admin(二) 应用的注册

reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onSubscribe(Operators.java:1752)at
2019年3月21日
其他

高并发的核心技术 - 幂等的实现方案

比如:支付宝的资金账户,支付宝也有用户账户,每个用户只能有一个资金账户,怎么防止给用户创建资金账户多个,那么给资金账户表中的用户ID加唯一索引,所以一个用户新增成功一个资金账户记录
2019年3月18日
其他

我理解的分布式系统

同步服务调用:客户端发起远程服务调用请求,用户线程完成消息序列化之后,将消息投递到通信框架,然后同步阻塞,等待通信线程发送请求并接收到应答之后,唤醒同步等待的用户线程,用户线程获取到应答之后返回。
2019年3月16日
其他

Spring Boot Admin (一) 请求处理原理

Clientspring.boot.admin.client.url=http://localhost:8000management.endpoints.web.exposure.include=*
2019年3月14日
其他

两台计算机是怎样进行数据传递的

例如,192.168.43.1和192.168.43.2的子码掩码都为255.255.255.0,把IP与子码掩码相与,可以得到他们都为192.168.43.0,进而他们处于同一个子网中。
2019年3月13日
其他

汝之蜜糖,吾之砒霜— 聊聊软件开发中的最佳实践

再比如对设计模式的崇拜。设计模式当然是好东西,但如果像强迫症一样使用它们,坚持用上它们才是正确的编程,就会导致按图索骥,强行让问题去适应设计模式,而不是让解决方案针对问题,这就本末倒置了。
2019年3月12日
其他

你的API会自适应「弹性」限流吗?

所以,我们发现,一方面,借助这种更「聪明」的工具,我们的应用,也可以更加健壮,处理流量也更「得心应手」。另一方面,看似「古老」的技术内容,依然在给现代提供养分,让我们可以站的更高。
2019年3月11日
其他

如何给Spring Boot 的嵌入式 Tomcat 部署多个应用?

文件的形式独立部署时,可以在容器内再额外部署一些「监控」应用,来观察容器的情况,应用的请求情况等,这些内容在嵌入式的时候,就有些办不从心了。
2019年2月13日
其他

一览Spring Bean 定义和映射全貌的神器

这里的handlerMappings里包含一个了一个名为WebMvcEndpointHandlerMapping的类,其中注册了一系列启动时扫描到的「Endpoint」。
2019年1月17日
其他

你真的会高效的在GitHub搜索开源项目吗?

GitHub在开源世界的受欢迎程度自不必多言。再加上今天,GitHub官方又搞了个大新闻:私有仓库也改为免费使用,这在原来可是需要真金白银的买的。可见微软收购后,依然没有改变
2019年1月9日
其他

SpringBoot DevTools 是怎样完成应用热部署,节省你的开发时间的

org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:429)
2018年12月27日
其他

Tomcat 里的「Matrix」 - 虚拟主机介绍

不同的虚拟主机之间,彼此互不影响。自己搭过网站的朋友可能了解。在这几年云服务器流行之前,几年前,我们可以通过「买空间」的方式,来搭网站。比如要建个
2018年12月25日
其他

怎样计算系统的可靠性和可用性是几个9?

两个信号处理器(软件+硬件)结合在一起,形成信号处理复合体。在信号处理复合体中,两个信号处理复合体被并行放置,因为当信号处理器之一失效时,系统可以工作。
2018年12月9日
其他

MyBatis 这小子是怎样拿到 insert 时生成的主键的?

语句执行insert,这谁都会,执行之后,返回结果是影响行数。但是在我们应用开发场景中,有些表的主键采用自增生成。这个时候,你怎么能把这个自增的主键值拿到呢?
2018年12月5日
其他

怎样努力才能成为一名 Java Champion

上的赞扬来看,我为自己的所为感到开心。当我在写这本书时,我才意识到写博客仅仅算热身,写一本书会更紧张和费时。然而,这也是聚合给定主题相关联知识的最佳方式。
2018年12月4日
其他

对于WEB应用安全,我too young了

等,每种请求简单描述如下。详细描述,可以查看RFC2616(https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html)
2018年11月27日
其他

JDK11都发布了,你还在用JDK6?

以上写的这些,主要用来共勉,咱要保持对新事物的热情。在平时的开发之外,看到开发相关的内容,可以「顺手」了解一下,如果有主力语言的新特性,可以尝鲜试试,丰富下生活。让自己跟上「潮流」,做个潮人。
2018年11月23日
其他

要不要一起来「汉化」你的 Tomcat ?

欣喜的是,没想到我再次登录时,发现已翻译的条目增加了不少。有其他的朋友加入了进来,一起在翻译。这种感觉,大有一种,「同志,原来你也在这里」的感觉。可能这就是开源的一种精神,一种魅力。
2018年11月16日
其他

关于Java收费这事,用户可以吃下「定心丸」了

最近有关Java收费的谣言不断,本不想对此发表评论,毕竟一些负责任的媒体早已经澄清了多次,我自己的立场也不中立,而且,仔细阅读那些文章,你会发现往往第一句话就是自相矛盾的呀。
2018年11月8日
其他

一盏会智能调光的阅读灯

另外,我之前提到的那个「坠儿」,挂灯管的,这是明基的一个设计专利,后来和他们客服了解到,他们在设计的时候,模拟了人们在爬墙的时候动作和受力情况,那个大大的块,就像个「屁股」能起到拉的作用。
2018年11月7日
其他

Tomcat应用部署,是否要一个萝卜一个坑?

认为这两种情况应该视情况而定。如果你的一个应用需要特别多的资源,这样尽量一个应用部署到一个Tomcat中以满足企业的要求。否则,倾向于多个应用共用同一个
2018年11月4日
其他

如何开发自己的Spring Boot Starter

SpringFactoriesLoader.loadFactories(AutoConfigurationImportFilter.class,
2018年10月29日
其他

怎样更形象的表述晦涩的内容?

上面这几种对于知识的描述和展现形式,我比较喜欢,感觉这样的内容学习起来,才更易理解、更有趣,不至于死记。用户、读者在使用与阅读过程中,才能更快或者说真正Get到内容的精髓,做到深入理解与活学活用。
2018年10月23日
其他

谈谈JSP的预编译加速及如何参与开源

另外一点是,我上面的历史文章中,有一篇分析文章是2015年写的,网上之前也有不少类似分析源码的文章,好像也都是「仅」分析,「这么容易想到的思路」,为什么没人在分析的时候提个patch?
2018年9月5日
其他

分布式事务之柔性事务TCC介绍

目前也有一些开源的TCC实现,可以直接在GitHub上获取到,例如下面这个https://github.com/changmingxie/tcc-transaction
2018年9月3日
其他

源码面前,了无秘密

如果不为空,则会将资源放回pool中,便于下次继续使用,为空则真正的进行close的操作,直接将Socket关闭了。而这两个if/else的逻辑是封装在一个方法中,不跟进来不会发现区别对待。
2018年8月27日
其他

一致性Hash(Consistent Hashing)原理剖析

在业务开发中,我们常把数据持久化到数据库中。如果需要读取这些数据,除了直接从数据库中读取外,为了减轻数据库的访问压力以及提高访问速度,我们更多地引入缓存来对数据进行存取。读取数据的过程一般为:
2018年8月3日
被用户删除
其他

前人的思考,让我们站在他们肩上快速进步 | 这些专栏送书ing

我曾经为大家推荐过《程序员必读书籍清单》,你如果感兴趣,可以去我的专栏介绍里获取链接。今天我精心挑选了四本非技术类好书,足以彻底改变你思维世界,相信你一定会有所收获。订阅后,你可以从下面挑选一本”
2018年8月2日
其他

RPC是什么?为什么要学习RPC?

过了一段时间,你的业务发展壮大,一个景区附近的导游们自动组队。在你请求到达时,这个景区的导游里自动根据上面的权重选一个人出来,这些导游组成的,就是一个「Cluster」
2018年7月31日
其他

每个Java 工程师心中都有一个 JVM的梦

Labs)的高级研究员,主要负责研究如何通过程序分析技术以及动态编译技术让程序语言跑得更快。是全栈虚拟机Graal编译器的核心开发者之一,也在为HotSpot虚拟机项目添砖加瓦。
2018年7月17日