XNIO

加锁同步等待,和使用volatile 等待数据模拟阻塞

Deadly 提交于 2020-08-08 18:31:54
环境:jdk1.8 springboot maven3.5 项目结构: maven.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.3.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>undertowdemo</groupId> <artifactId>undertowdemo</artifactId>

惊讶!我定的日志规范被CTO在全公司推广了

北战南征 提交于 2019-12-24 17:44:16
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 打印日志是一门艺术,但长期被开发同学所忽视。日志就像车辆保险,没人愿意为保险付钱,但是一旦出了问题都又想有保险可用。我们打印日志的时候都很随意,可是用的时候会吐槽各种 SB 包括自己!写好每一条日志吧,与君共勉! 日志 日志是什么? 日志,维基百科的定义是记录服务器等电脑设备或软件的运作。 日志文件提供精确的系统记录,根据日志最终定位到错误详情和根源。日志的特点是,它描述一些离散的(不连续的)事件。 例如:应用通过一个滚动的文件输出 INFO 或 ERROR 信息,并通过日志收集系统,存储到一些存储引擎(Elasticsearch)中方便查询。 日志有什么用? 在上文中我们解释了日志的作用是提供精准的系统记录方便根因分析。那么具体在哪些具体方面它可以发挥作用? 打印调试 :即可以用日志来记录变量或者某一段逻辑。记录程序运行的流程,即程序运行了哪些代码,方便排查逻辑问题。 问题定位 :程序出异常或者出故障时快速的定位问题,方便后期解决问题。因为线上生产环境无法 debug,在测试环境去模拟一套生产环境,费时费力。所以依靠日志记录的信息定位问题,这点非常重要。还可以记录流量,后期可以通过 ELK(包括 EFK 进行流量统计)。 用户行为日志 :记录用户的操作行为,用于大数据分析,比如监控、风控、推荐等等。这种日志

SpringBoot 打包瘦身(spring-boot-thin-launcher)

♀尐吖头ヾ 提交于 2019-11-29 07:24:57
之前写过一个瘦身的土办法 https://my.oschina.net/formatkm/blog/1822900 @ifu25 在回复中提到 spring-boot-thin-launcher 现在用 spring-boot-thin-launcher 打包插件的高大上形式。这个方法更加自动化,还可以自动生成pom,在第一运行的时候会自动下载依赖。 很多时候是在内网环境进行部署,不能连接外网下载依赖,这里主要记录手动分离出jar依赖的过程。 导出依赖 导出依赖的jar到一个目录的Gradle脚本,运行 copyToLib 任务,依赖jar会导出到 lib task copyToLib(type: Copy) { into "$buildDir/libs/lib" from configurations.runtime } 使用thin-launcher的插件 buildscript { ext { springBootVersion = '2.0.1.RELEASE' wrapperVersion = '1.0.21.RELEASE' } repositories { mavenLocal() mavenCentral() } dependencies { classpath("org.springframework.boot.experimental:spring-boot