2018年终总结
浅谈开放平台之接口鉴权设计
简述交叉编译常用的方法及在构建Docker镜像中的应用
软件编译
众所周知,服务器大部分都是复杂指令集的x86平台,移动设备是精简指令集的ARM平台,还有IMB的PowerPC平台,之前家用路由器和一些嵌入式设备常用的MIPS平台。 不同平台的CPU的指令集(ISA,Instruction Set Architecture)是不同的,对于在其上运行的软件都要编译成对应的平台可识别的执行之后才可以运行。
一个关于log4j2的高并发问题
笔者在apache-issue提出了该问题,目前解决方案正在讨论中 https://issues.apache.org/jira/browse/LOG4J2-2490
前言
日志应该是一个应用的基础组件, 其中老牌的log4j应该是我们用的最多的, 后来互联网发展,大家都朝着高并发的方向发力,发现log4j性能不行,因为竞争锁导致阻塞,性能跟不上. 后来其创始人另立门户logback后, log4j的新主子Apache进行了大的升级改造,就是如今的log4j2, 其异步日志的性能也是一骑绝尘, 然而其使用过程中依然有很多坑,稍不留意就会搞个人仰马翻. 下面先列举一些别人踩过的log4j的坑:
Spring cloud gateway通过nginx代理报错问题
背景
在不久前的一个项目中使用了spring cloud gateway, 开发测试中没出现什么问题,当上线之后就一直在报错,错误内容如下:
事件驱动与协程概念
在一个完美的世界中,不存在战争和饥饿,所有的API都将使用异步方式编写,兔兔和小羊羔将会在阳光明媚的绿色草地上手牵手地跳舞
网易云音乐Linux客户端GUI不能显示问题排查
OS: ubuntu 17.10,ubuntu 18.04 网易云音乐版本:netease-cloud-music_1.1.0_amd64_ubuntu.deb
症状
启动了页面弹不出来,命令行也一样,然后呢,点关机按钮,弹出来确认框,随后网易乐音乐页面也弹出来了,这时取消关机,可以正常使用云音乐。
并且录了屏:https://weibo.com/tv/v/FwZO3ltaM?fid=1034:1d480a191cbbcc940b81f619f0614a98
从日志配置文件读取了解java9模块化和类加载机制的改变
前言
Java9出来大半年了,Java10也发布了,Java11半年后就来了,将成为了一个LTS长期支持版,从Java9开始的模块化是java非常重大的改变,未来必然成为趋势,学习模块化也早晚的事。这不正好学习netty,写一个代理软件练练手,顺便学习下模块化。本文并不是完整介绍模块化,而是在使用模块化过程中遇到的一个问题的分析和解决。
问题描述
首先说下项目的基本情况:
- JDK9(模块化,即使用了module-info.java)
- 项目构建:gradle 4.6
- IDE: IntelliJ IDEA 2017.3.5
代码中有使用到日志工具,目前比较常用的是slf4j作为日志api,实现使用log4j、log4j2或者logback。我当然也这么用,slf4j+log4j2。在不使用模块化情况下(java9为了向前兼容,可以不使用模块化),将日志的配置文件log4j2.xml文件放到src/main/resources
然后用idea build->run,但发现log4j2报错:
|
|