简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
线程状态定义在线上项目中,当程序处于长时间停顿的时候,可以使用java提供的jstack命令跟踪正在执行方法的堆栈情况。jstack能够生成虚拟机当前时刻的线程堆栈情况。主要,监控线程的状态,判断出线程停顿的原因。例如,死锁,死循环,多个线程等待等等。线程的状态包括NEW,RUNNABLE,BLOCKED,WAITING,TIMED_WAITING,TERMINATED,其源码如下:pu...
在JVM中,首次使用某个类时,JVM会把.class文件的二进制子节流加载到内存的方法区,创建对应的Class对象。虚拟机设计团队把类加载阶段中的通过一个类的全限定名来获取描述此类的二进制字节流这个动作交由ClassLoader类来实现。而判断一个Class对象是否相等,需要根据Class对象和ClassLoader类加载器同时判断,在创建Class对象时,会设置对应的ClassLoader类加载
网关的好处在单体应用程序架构下,客户端( Web 或移动端)通过向服务端发起一次网络调用来获取数据 。 负载均衡器将请求路由给 N 个相同的应用程序实例中的一个 。 然后应用程序会查询各种数据库表处理业务逻辑,并将响应返回给客户端。 微服务架构下,单体应用被切割成多个微服务,如果将所有的微服务直接对外暴露,势必会出现安全方面的各种问题。客户端可以直接向每个微服务发送请求,其问题主要包括:...
为了防止分布式系统中的多个进程之间相互干扰,我们需要一种分布式协调技术来对这些进程进行调度。而这个分布式协调技术的核心就是来实现这个分布式锁。具体定义,实现和使用场景,请参详什么是分布式锁,该篇文章强力推荐,写得很透彻。着重强调下,分布式锁具体的条件和重要的实现逻辑。在分布式系统环境下,一个方法在同一时间只能被一个机器的一个线程执行常见的情景,例如定时任务在多个服务运行。同一个用户对同一...
为什么要使用注册中心有使用过ip:port地址直接调用服务的开发经历么?该段痛苦的经历在此处省略500字......,该种方式的缺点:需要手动的维护所有的服务访问ip地址列表。单个服务实现负载均衡需要自己搭建,例如基于容器化多实例部署单个服务,在实例之间做负载均衡。使用注册中心能够实现服务治理,服务动态扩容,以及服务调用的负载均衡,完整调用链路示例如下:服务提供者:向注册中心根据服务名称提供服务访
概述消息中间件例如,Kafka,RocketMQ和RabbitMQ等等,是业务开发中不可或者的组件。通常消息中间件包括3个角色组成,如下:生成者(Producer),生产消息。消息代理(message broker),存储生产者产生的消息。消费者(Consumer),从消息代理获取并消费消息。大致流程图如下:常见场景通常消息的使用场景有如下几类:应用解耦流量...