信号量同步是指在不同线程之间,通过传递同步信号量来协调线程执行的先后次序。CountDownLatch是基于时间维度的Semaphore则是基于信号维度的。 1:基于执行时间的同步类CountDownLatch   例如现有3台服务器,需编写一个获取各个服务器状态的接口,准备开三个子线
java中栈内存与堆内存(JVM内存模型)  Java中堆内存和栈内存详解1 和 Java中堆内存和栈内存详解2 都粗略讲解了栈内存和堆内存的区别,以及代码中哪些变量存储在堆中、哪些存储在栈中。内存中的堆和栈到底是什么 详细讲述了程序在内存中的模型,从可执行文件(EL
要分析JVM的源码,结合资料直接阅读是一种方式,但是遇到一些想不通的场景,必须要结合调试,查看执行路径以及参数具体的值,才能搞得明白。所以我们先来把JVM的源码进行编译,并能够使用GDB进行调试。 编译环境 本文使用的JDK版本:OpenJDK7,分支b147 下载页面:https://d
A类调用B类的静态方法,除了加载B类,但是B类的一个未被调用的方法间接使用到的C类却也被加载了,这个有意思的场景来自一个提问:方法中使用的类型为何在未调用时尝试加载?。 场景如下: public class Main { static { System.out.pr
亲爱的儿子: 当你打开这封信的时候,我已经离开波士顿回到加州了,你也已经结束自己最后一个暑假,去往自己非常喜欢的公司。 虽然你我都是程序员,但是你却很少向我咨询过技术相关的问题,咱们上一次一起写代码,也是你高考结束那个暑假了。不过前几天你问了我一个问题,你说,如果让你写一封信,跟当初刚刚成
准备工作 IDEA 2019.3.1 MySql 8.0.17 Tomcat 7.0.9 开始步骤 一、创建一个项目,添加Web支持 点击菜单:File->NEW->Project 选择左侧的Maven项目,这里的 Create from archetype先不要选择,然后点
并发编程之进程与线程 2.1 线程与进程 2.1.1 进程 2.1.2 线程 2.1.3 二者对比 2.2 并行与并发 2.3 应用   2.1 线程与进程 2.1.1 进程 程序指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至CPU,数据加载至内存。在指
  为什么使用springboot? Spring的优点: Spring是Java EE的轻量级替代品,无需使用重量级的EJB,通过依赖注入、面向切面编程,用简单的java对象就可以实现EJB的功能,使开发变得相对简单。   Spring的缺点: 配置繁琐。虽然Spring的组件是轻量级的
在第2章节中,我们介绍了如何通过Spring Boot来实现HTTP接口,以及围绕HTTP接口相关的单元测试、文档生成等实用技能。但是,这些内容还不足以帮助我们构建一个动态应用的服务端程序。不论我们是要做App、小程序、还是传统的Web站点,对于用户的信息、相关业务的内容,通常都需要对其进
按照代理的创建时期,代理类可以分为两种。 静态代理:由程序员创建或特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。 动态代理:在程序运行时,运用反射机制动态创建而成。 动态代理三种方式 动态代理实现有三种方式,jdk动态代理(基于接口),cglib动
java Dump文件分析 前言 dump文件是java虚拟机内存在某一时间点的快照文件,一般是.hprof文件,下面自己模拟一下本地内存溢出,生成dump文件,然后通过mat工具分析的过程。 配置虚拟机参数 要想本地模拟oom异常,那么建议将堆内存设置的小一点,那样容易触发 -XX:+H
idea搭建springmvc maven项目 jdk:1.8 maven:Bundled (Maven 3) idea版本:      开始搭建第一个springmvc maven项目 1.点击File->New->Project      2.选择maven->勾
Java 虚拟机在执行 Java 程序的过程中会把他所管理的内存划分为若干个不同的数据区域。Java 虚拟机规范将 JVM 所管理的内存分为以下几个运行时数据区:程序计数器、Java 虚拟机栈、本地方法栈、Java 堆、方法区。 一,内存区域划分   1.线程共享区域:     (1)Ja
这篇使用Spring 5进行响应式编程的入门文章展示了你现在可以使用的一些新的non-blocking, asynchronous。感谢优锐课老师给予的指导! 近年来,由于响应式编程能够以声明性的方式(而不是强制性的)构建应用程序,从而在响应程序和弹性方面具有更强的响应能力,因此在开发人员
Dubbo是一个远程调用的框架,对于一个服务提供者,暴露了一个接口供外部消费者调用, 那么对于提供者自己是否可以调用这个接口,需要什么特殊处理吗? 这篇文章就分享下Dubbo关于本地调用的实现机制,以及如何开启和关闭本地调用。 injvm支持本地调用 使用 Dubbo 本地调用不需做特殊配
  环境搭建 1、新建SpringMVC项目,添加所需的jar包 spring-core.jar spring-beans.jar spring-context.jar spring-expression.jar spring-aop.jar   (使用spring的注解) spring-
一、 Calendar解析 package com.bjpowernode.java_learning; import java.util.Date; import java.text.ParseException; import java.text.SimpleDateFo
学习要求: 知道一点儿函数式接口和Lambda表达式的基础知识,有利于更好的学习。 1.先体验一下Stream的好处 需求:给你一个ArrayList用来保存学生的成绩,让你打印出其中大于60的成绩。 public static void main(String[] args) {
个人博客地址 studyidea.cn,点击查看更多原创文章 0x00. 前言 想象这样一个场景,线上某个服务突发异常,导致上游服务调用异常,数据处于中间状态。服务恢复之后,我们需要修复这笔数据至正常状态,怎么办? 如果仅是简单的服务,涉及少量数据变更,我们可以直接使用 SQL,变更数

推荐文章