2019-10-31 21:03:38 最小化构建Docker镜像 ## alpine 基于alpine基础镜像构建,alpine只有5M左右,相比centos之类的小太了,而且软件包管理也方便。 构建过程中,还有个技巧,如下示例: ``` apk add --no-cache --virtual .build-deps \ git \ binutils-gold \ g++ \ gcc \ gnupg \ 阅读全文...
2019-10-24 16:49:01 JFrog Artifactory使用中遇到的一些坑 最近用JFrog的Artifactory把公司的nodejs、java、python、golang、docker等技术栈的包管理统一管理起来了。 用来加速研发的开发过程,一套系统搞定爽歪歪。 使用中也遇到一些问题,记录之,以备用。 ## 默认readers组无法下载包的问题 定位,到logs目录下:`tail -f access.log` ``` 2019-10-24 16:15:24 阅读全文...
2019-09-27 02:30:03 关于Hadoop NameNode启动时Loading edits时间超长的问题 ## 背景 有个好久好久没怎么维护的Hadoop集群,一直在提供服务,也做了HA,由于某些原因要对HDFS做重启,重启前检查了遍服务,发现另一个NameNode已经挂了有一段时间了。 重启过程倒是没啥问题,但NameNode的Startup Progress特别久,持续Loading edits,将近3个小时。 ## 分析 到NameNode的数据目录看了下,发现有大量的`edits_*` 阅读全文...
2019-08-24 22:06:23 Nginx反向代理神奇的斜线/及跳转问题 最近倒腾nginx的配置,本以为简单的代理设置,结果被`/`搞的一头雾水,为了后续不在懵逼,特意整理了下关于斜线的问题。 假设到达nginx的请求路径为`/foo/api`: 表1 | case | location | proxy_pass | result | | --- | --- | --- | --- | | 1 | /foo/ | http://192.168.1.123:400 阅读全文...
2019-08-18 17:34:31 解决Spark Standalone模式下Work的Address和HDFS不匹配的问题 ## 问题描述 HDFS的DataNode节点,节点名称为主机名,非IP。 Spark Standalone模式下,Worker列表中,Address信息为IP,不是主机名。 这会导致Spark处理HDFS上的数据时,无法精准分发任务,大数据量下会有性能问题。 ## 解决方案 修改`sbin/start-slave.sh`下的`start_instance`方法。 默认为: ```b 阅读全文...
2019-05-17 14:03:52 安装MariaDB后的初始化设置 安装,以Debian系统为例: ``` sudo apt-get install mariadb-server ``` 初始化root用户配置,必须切换至root用户,切换后执行:`mysql_secure_installation` 解决mysql命令,root账号只能在root用户下访问的问题: ```sh # 1. 切换至root用户 # 2. mysql -uroot -p输入密码 阅读全文...
2019-01-04 20:02:52 记一个困扰我们前端同学很长时间的IE下无法设置cookie的问题 今天前端同学过来求助:我们内部的一个联调平台,在IE下无法登陆,原因是服务器返回的Set-cookie浏览器没有保存起来,后续的请求也没有把cookie带给服务器,也就是说set-cookie失效了。 奇怪的是只有IE有这个问题,但也只是部分域名的网站有问题,用Fiddler详细对比了下正常的请求,也没发现什么异常。 发现网上也有不少人遇到这样的问题,但是没有一个正确的解决方案,最后在Stac 阅读全文...
2019-01-02 17:45:09 go为channel设置超时的正确姿势 golang没有提供直接的超时处理机制,可以利用select机制来解决超时问题,先上个示例: ```go func timeoutFunc() { // 首先,实现并执行一个匿名的超时等待函数 timeout := make(chan bool, 1) go func() { time.Sleep(1e9) //等待1秒钟 timeout 阅读全文...
2018-11-28 11:48:22 Spark之BloomFilter有趣的bitwise运算 最近好奇的研究了下Spark的BloomFilter的实现,发现其`org/apache/spark/util/sketch/BitArray.java`对bit处理的实现很巧妙(源码可能是从其他开源项目借鉴的也不好说),从中学到不少东西,记录下。 ## 巧妙的核心设计 BitArray内部采用`long[] data`来表示一个大的bitmap,long类型相比int在相同的数组个数下可以 阅读全文...
2018-11-04 00:14:16 NodeMcu刷入固件无法启动的问题 在Mac系统下折腾NodeMcu。 根据官网给的步骤,装驱动,测试,采用9600的波特率,由于是刚入手的新板子,测试一切正常,能够直接执行lua脚本,不过板子自带的固件版本太旧了。这就需要刷固件来更新系统了,郁闷的是,最后在刷固件这步卡住了。 一开始怀疑是自己刷固件的姿势有问题,不过根据官网提供的工具和步骤,一路下来也没有报错。 但刷完后,使用ESplorer去连接NodeMcu的时候总是 阅读全文...