简述交叉编译常用的方法及在构建Docker镜像中的应用

CrossCompile

软件编译

众所周知,服务器大部分都是复杂指令集的x86平台,移动设备是精简指令集的ARM平台,还有IMB的PowerPC平台,之前家用路由器和一些嵌入式设备常用的MIPS平台。 不同平台的CPU的指令集(ISA,Instruction Set Architecture)是不同的,对于在其上运行的软件都要编译成对应的平台可识别的执行之后才可以运行。

一个关于log4j2的高并发问题

Apache_Log4j_Logo

前言

日志应该是一个应用的基础组件, 其中老牌的log4j应该是我们用的最多的, 后来互联网发展,大家都朝着高并发的方向发力,发现log4j性能不行,因为竞争锁导致阻塞,性能跟不上. 后来其创始人另立门户logback后, log4j的新主子Apache进行了大的升级改造,就是如今的log4j2, 其异步日志的性能也是一骑绝尘, 然而其使用过程中依然有很多坑,稍不留意就会搞个人仰马翻. 下面先列举一些别人踩过的log4j的坑:

事件驱动与协程概念

xiyangyang

在一个完美的世界中,不存在战争和饥饿,所有的API都将使用异步方式编写,兔兔和小羊羔将会在阳光明媚的绿色草地上手牵手地跳舞

网易云音乐Linux客户端GUI不能显示问题排查

netease-music

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报错:

ERROR StatusLogger No Log4j 2 configuration file found. Using default configuration (logging only errors to the console), or user programmatically provided configurations. Set system property 'log4j2.debug' to show Log4j 2 internal initialization logging. See https://logging.apache.org/log4j/2.x/manual/configuration.html for instructions on how to configure Log4j 2

2017年总结及2018年计划

又到了一年一度的总结计划,我是拖了又拖,完全是难以面对,看看年初的计划,划掉没有做到的事项,全篇都是横线。一种无尽的挫败感和懊悔油然而生,不

通用人工智能 AGI 的一点感想

利用现在非常火爆的AI算法,例如深度神经网络,蒙特卡洛搜索树这类算法,特定领域的智能貌似就在不远的未来,也许就几十年。但是对于通用人工智能AGI(相当于强AI),离我们貌似还很远,DeepMind最近的Alpha Zero,基于自我对弈强化学习加自我对弈蒙特卡洛树搜索,在没有真实棋局训练的情况下,完全是自我对弈训练,从围棋泛化到国际象棋和日本将棋。对于AGI来说,泛化能力的重要性不言而喻。有人认为这条路是对的,但有些人并不这么认为,例如NIPS(神经信息处理系统大会)上两位认知科学大牛。我对AI方面的了解甚至都算不上入门,这里,在我有限的理解下,记录一下我的一些想法。

利用容器技术在一个宿主机上运行OpenWrt(LEDE)

在阅读本文之前,可以先了解下另外一篇文章容器核心技术详解

容器技术所用到的技术主要是Linux Namespace和cgroup,目前最成功的方案就是Docker,我们也来试着利用Linux kernel的 Namespace来简单实现docker的部分功能,这里称之为假Docker。

本文相关的代码在这里 fake_docker,文章中对于比较长的代码会省略,可以在代码仓库中查看。

安装ubuntu17.10后的相关软件问题

字体

sudo apt-get install ttf-wqy-microhei  #文泉驿-微米黑
sudo apt-get install ttf-wqy-zenhei  #文泉驿-正黑
sudo apt-get install xfonts-wqy #文泉驿-点阵宋体

自带google的思源黑体 Noto Sans CJK

WPS

1.到优麒麟下载wps64位,dpkg -i安装。 2.apt-get install -f修复依赖 3.到debian网站下载libpng12,安装 4.下载网上专为wps做的字体包安装 5.apt-get安装文泉驿字体