浅谈开放平台之接口鉴权设计
简述交叉编译常用的方法及在构建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报错:
|
|
2017年总结及2018年计划
通用人工智能 AGI 的一点感想
利用现在非常火爆的AI算法,例如深度神经网络,蒙特卡洛搜索树这类算法,特定领域的智能貌似就在不远的未来,也许就几十年。但是对于通用人工智能AGI(相当于强AI),离我们貌似还很远,DeepMind最近的Alpha Zero,基于自我对弈强化学习加自我对弈蒙特卡洛树搜索,在没有真实棋局训练的情况下,完全是自我对弈训练,从围棋泛化到国际象棋和日本将棋。对于AGI来说,泛化能力的重要性不言而喻。有人认为这条路是对的,但有些人并不这么认为,例如NIPS(神经信息处理系统大会)上两位认知科学大牛。我对AI方面的了解甚至都算不上入门,这里,在我有限的理解下,记录一下我的一些想法。
我们对AI的期望是什么嗯?像《Her》中的Samantha,善解人意,可以成为一个虚拟情人,像《West World/西部世界》或者《Humans》里的人形机器,完全模拟人的行为。人形机器人随着制造业,新材料的发展,或许会越来越像人的外观。但是在认知和思想上模拟人类的思维肯定不是一件容易的事,能肯定的是会在很多方面超越人类个体的能力。