参与多个项目开发,涵盖电商、物联网等方向,为人谦逊,喜欢跟他们交流新技术发展,对待工作一丝不苟。
我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。
Overview 1、Connector 启动以后会启动一组线程用于不同阶段的请求处理过程。 1、Acceptor 线程组。用于接受新连接,并将新连接封装一下,选择一个 Poller 将新连接添加到 Poller 的事件队列中。
删除功能和选项 本节介绍在Java SE 11和JDK 11中删除的API,功能和选项。此处描述的API是随Oracle JDK提供的API。 它包括Java SE 11平台的完整实现和其他Java API,以支持Java应用程序的开发,调试和监视。
JDK 11中的新功能 - 新功能和增强功能 以下注释描述了JavaSE11和JDK11中的一些增强功能。这些描述可能包含指向更详细描述增强功能的其他文档的链接。
https://github.com/kevin0016/java-SVM
总思维导图 1、代码层面 (1)for循环中不要利用 + 号去拼接字符串 在循环次数比较多的for循环中,我们也不要利用 + 号去拼接字符串。
zookeeper其中的一个功能就是实现集群master的选举功能,这篇文章就来实现一下这个master选举功能,并附上相应的demo 首先是应用原理,先上一个原理图 原理图 结构图解释:左侧树状结构为zookeeper集群,右侧为程序服务器。
本文通过zookeeper实现分布式锁,一共有两个版本,分别是curator框架实现,javaapi实现 实现原理 原理图 实现原理其实很简单,就是利用了zookeeper的临时有序节点实现,其实ID最小的节点获得锁权限,执行完之后,删除节...
首先附上微信支付的开发者文档 https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_16&index=11 其实这里所说的踩坑记录,无非就是微信在开发者文档上的写不太明确,也没有比较官方的demo,在此列出一个可行的demo,供大家下载使用。
应用发展历程: 1、第一版应用 图1-1 第二版 单机负载越来越高,数据库服务器和应用服务器分离 图1-2 第三版 应用服务器做集群 图1-3 当做到这个部分的时候,就会出现一个问题,应用服务器集群的session...
看到很多电脑小白对于新电脑使用的各种各样的问题,在这里做出点总结,希望对大家有一定的帮助 1、关于win10和win7的,目前微软大力推广win10,最新的8代CPU以及配套的主板,官方已明确不支持WIN7的安装,虽然并不是完全不可以刷成win7,但是会非常的麻烦,并且非常非常非常非常不稳定,建议还是使用win10系统。
java8中的新特性stream流处理,让集合操作变得非常的简单,但是因为没有源码支持,所以里面有很多坑,只有踩过才知道 首先上代码 图1-1 代码很简单,就是利用并行流把一个list里面的数据导入到另外一个list中,看起来看简单,接下来...
1、模块化系统:Jigsaw->Modularity 解决越来越臃肿 的java运行环境。 主要目的在于减少内存的开销,只须必要模块,而非全部jdk模块,可简化各种类库和大型应用的开发和维护, 改进 Java SE 平台,使其可以适应不同...
server端创建 时序图 1、创建ServerBootstrap实例 2、设置并绑定Reactor线程池 3、设置并绑定服务端Channel() 4、TCP链路简历时创建ChannelPipeline() 5、添加并设置ChannelHa...
构造函数 首先放一个NIO的使用流程 1、创建ServerSocketChannel,配置为非阻塞模式 2、绑定监听,配置TCP参数,例如backlog大小; 3、创建一个独立的I...
传统的BIO编程模式,基于socket编程的方式进行解释。 首先是server端代码 server端代码 ServerHandler代码 ServerHandler 客户端代码 客户端代码 传统的IO模式 ...
请求流程图 请求流程图 1、客户端发请求,被spring的前段控制器DispatcherServlet捕获 2、DispatcherServlet请求URL进行解析,得到请求资源标识符(URI)。
1、Bean的初始化和销毁 (1)、java配置方式:使用@Bean的initMethod和destroyMethod(相当于XML配置的init-method和destory-method) (2)、注解方式,利用jsr250标准的@...
1、Eureka服务器 基础架构: 服务注册中心:Eureka提供的服务端,提供服务注册与发现功能 服务提供者:提供服务的应用,可以是spring boot应用,也可以是其他技术平台的应用只要遵循Eureka通讯...
1、Java线程池实现了一个Java高并发的、Java多线程的、可管理的统一调度器。空间换时间的原则 首先是java.util.concurrent.Executors 工作中最常用和最熟知的。
9、同步计数器 CountDownLatch 这是一个同步的辅助类,实现原理为AbstractQueuedSynchronizer抽象队列化同步器 图9-1 方法介绍: 1、CountDownLatch(in...
分布式事务没有标准答案,只有结合业务场景的解决方案 TCC,XA,JTA,LCN,2PC 1、分布式事务是什么 数据库分库分表之后,保证多个数据库之间的提交和回滚数据的一致性 ,如图,假设一个订单系统,订单数据库和调度数据库是分开的,如何保证订单库和调度库的一致性,就是所谓分布式事务,这里多说一句,单一数据库不存在分布式事务的问题。
6、同步队列SynchronousQueue 同步队列是一个不存储元素的阻塞队列,每一个put操作必须等待一个take操作,否则就不能继续添加元素。
接上篇 5、显式锁StampedLock StampedLock锁是基于能力的锁,可以很好的实现乐观锁和悲观锁的逻辑,此处为jdk1.8提供的api,而且理解不深入的情况下容易出现死锁或者不必要的麻烦,所以谨慎使用 三种模式 写:wri...
1、隐式锁 对称线程同步 synchronized 用法:1、在方法声明时使用;2、修饰代码块中使用 隐式规则 1、当两个并发线程访问同一个对象object中的synchronized(this)同步代码块时,一个时间内...
1、线程的生命周期 如图1-1 图1-1 线程的生命周期一共有五个状态,new、runnable、running、blocked、dead 1、new:刚创建,并未运行的线程 处于not alive状态; 2、runna...
如何在junit中测试自己的写的逻辑或者自己设计的架构能否扛得住一定的并发环境呢?其实这种问题挺简单的,但是往往好多人容易忽略这一点,不多说,直接上代码。
1、什么是缓存穿透 缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。
“你几天早饭买了一个油条,一个鸡蛋,一杯豆浆”,“你在购物车里加了好多台笔记本电脑,在联想、华硕、戴尔等几款5000价位的产品之间对比了好久”,“你每天上班会先骑共享单车到地铁站,然后坐13号地铁到知春路转10号线到海淀黄庄再转4号线到中关村”。
还记得之前大学的时候,总会有一些同学翘课去做一些自己的事情,那个时候我还是觉得翘课完全是对自己不负责任的想法,既然身为一个学生,连上课都不去,那还能做什么?其实想想那时也是可笑,学生时代眼光还是比较短浅的,工作了之后让我再去看大学时代,我反而觉得应该去翘课。
当业务扩展到一定程度的时候,单个数据库的性能产生瓶颈的时候,我们可能会对数据库进行物理分区,也就是所谓的数据库分库分表,简单来说就是单一数据库变成了多个数据库,此时当一个操作同时需要操作两个数据库的时候,就需要分布式事务进行管理。
image.png image.png image.png image.png image.png image.png
RPC和HTTP服务对比 RPC(即Remote Procedure Call,远程过程调用), RPC主要是基于TCP/IP协议的,而HTTP服务主要是基于HTTP协议的,我们都知道HTTP协议是在传输层协议TCP之上的,所以效率来看的话,RPC当然是要更胜一筹 OSI网络七层模型 在说RPC和HTTP的区别之前,我觉的有必要了解一下OSI的七层网络结构模型(虽然实际应用中基本上都是五层),它可以分为以下几层: (从上到下) • 第一层:应用层。
一:快照模式 或莫过于SNAPSHOTTING模式,这个不需要反驳吧,而且你可能还知道,使用SNAPSHOTTING模式,需要在redis.conf中设置配置参数,比如下面这样: | Save the DB on disk: # # save ...
远程仓库的配置 在平时的开发中,我们往往不会使用默认的中央仓库,默认的中央仓库访问的速度比较慢,访问的人或许很多,有时候也无法满足我们项目的需求,可能项目需要的某些构件中央仓库中是没有的,而在其他远程仓库中有,如JBoss Maven仓库。
一般来说,HTTP数据交互过程中,数据都是以密文形式传输的,数据加密也就成了目前web中比较常见的部分 对称加密 采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。
Java跨域问题以及如何使用Cors解决前后端 分离部署项目所遇到的跨域问题 什么是跨域 跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制。
`import java.sql.Timestamp; import java.text.DateFormat; import java.text.ParseException; import java.
简单的流操作 image.png 常用流操作: 1、collect(toList()) image.png 2、map:如果一个函数可以将一种类型的值转换成另一种类型,map操作就可以使用该函数,将一个流中的值转换成一个新的流 image.
1、令牌桶算法 令牌桶算法是比较常见的限流算法之一,大概描述如下: 1)、所有的请求在处理之前都需要拿到一个可用的令牌才会被处理; 2)、根据限流大小,设置按照一定的速率往桶里添加令牌; 3)、桶设置最大的放置令牌限制,当桶满时、新添加的令牌就被丢弃活...
隔离是将系统或资源分隔开,系统隔离是为了在系统发生故障时,能限定传播范围和影响范围,即发生故障后不会出现滚雪球效应,从而保证只有出问题的服务不可用,其他的服务还是可用的。
目前支付宝支付和微信支付是算是目前app的标配了 支付宝支付在更新过后有了官方专门的sdk和demo,所以相对而言比较简单,而微信支付稍微复杂一点,下面的文章会附实例代码,微信支付也是参考的github上的某位大神级人物的代码。
订单模块对于电商系统来说属于几大核心模块之一,其重要成都不言而喻,其中各大电商企业的业务实现方式而言基本也都是大同小异的。 正常订单逻辑中,订单的状态可大致分为这几个部分,已下单、待付款-》同步付款成功-》异步付款成功-》订单成功调用物流服务,这一个就是比较简单的订单状态,属于开启的一个比较小的服务,对于一些库存扣减这种业务正常逻辑订单暂时不考虑。