HTTP协议状态码

背景

当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。

HTTP状态码的英文为HTTP Status Code。

1xx 信息/临时响应

表示临时响应并需要请求者继续执行操作的状态代码。

这一类型的状态码,代表请求已被接受,需要继续处理。这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束。由于 HTTP/1.0 协议中没有定义任何 1xx 状态码,所以除非在某些试验条件下,服务器禁止向此类客户端发送 1xx 响应。

阅读全文 »

MySql问题集锦

背景

以前mysql的相关问题较散, 自此以后小问题均聚合到该文进行记录.

问题

1. v5.7.5后, group by报错问题

问题描述

升级mysql后, 之前的sql语句报错, 报错信息如下:

阅读全文 »

Scala调用Matlab(MCR)进行数据拟合并获取结果

背景

硬件设备产生大量传感数据, 需要根据这些原始数据拟合出人能看懂并应用于生活的数据; 公司一直使用Matlab进行数据分析, 本文将介绍如何搭建环境, 并在Akka中调用相关库进行分析.

安装 Matlab

Matlab 编写的文件后缀为m(如: filterF.m), 但可以使用Matlab将其打包生成jar包, 提供给Java生态进行调用.

导出过程很简单, 命令行键入 deploytool → Library Compiler → Java Package → 选择m文件(可以多个) → 填写jar名称, 类名 → Package

如下几点需要特别关注下:

阅读全文 »

开源微信支付SDK-两行代码解决支付

背景

让使用微信支付的朋友最快速度接入微信支付.

核心

两行代码解决微信支付提供的各种服务, 开箱即用, 可扩展性超强(只需根据服务的上下行协议定义协议类后, 放入工厂即可获取调用结果).

最新发布

1
2
3
4
5
<dependency>
<groupId>net.arccode</groupId>
<artifactId>wechat-pay-sdk</artifactId>
<version>1.0.0</version>
</dependency>

架构图

阅读全文 »

FastDFS的Storage Server状态详解

状态列表

1
2
3
4
5
6
7
FDFS_STORAGE_STATUS:INIT      :初始化,尚未得到同步已有数据的源服务器
FDFS_STORAGE_STATUS:WAIT_SYNC :等待同步,已得到同步已有数据的源服务器
FDFS_STORAGE_STATUS:SYNCING :同步中
FDFS_STORAGE_STATUS:DELETED :已删除,该服务器从本组中
FDFS_STORAGE_STATUS:OFFLINE :离线
FDFS_STORAGE_STATUS:ONLINE :在线,尚不能提供服务
FDFS_STORAGE_STATUS:ACTIVE :在线,可以提供服务

查看状态

fdfs_monitor /etc/fdfs/client.conf

问题

无法上传文件, 查看Storage server状态如下:

阅读全文 »

Scala的正确打开姿势--搭建开发环境

背景

工欲善其事, 必先利其器; 笔者习惯将所有用到的东西掌控在自己可控的范围内, 清晰每个流程, 以便发生问题的时候有思路并能快速响应得出解决方案.

比如默认安装的scala和SBT, 执行sbt指令时, 默认会在用户目录下生成.ivy文件, 该文件夹中存储从远程仓库中下载的构件; 笔者不喜欢该方式, 需要控制配置,启动参数和相关仓库地址.

安装

前提条件: 必须安装JDK, 若scala>=2.12.0, 则JDK>=1.8

  • scala 开发包: scala语言的开发包, 类比于JDK
  • SBT: 全称simple build tool, 对于初次接触的同学来说, 其实并不简单; 一种构建工具, 类比于Maven
阅读全文 »

搭建FastDFS集群-二

背景

上一篇 搭建FastDFS集群-一 描述了如何从源码构建FastDFS服务, 并通过脚本进行文件的 上传/下载/删除; 本文将详细描述如何安装nginx扩展模块,并使用http协议下载文件; 同时使用Java Client方式执行文件的 上传/下载/删除/获取文件详情等.

FastDFS 架构

阅读全文 »

搭建FastDFS集群-一

背景

  1. 公司的业务分布部署于不同的物理机器上
  2. 采用nginx做负载均衡将请求转发到合适的机器上
  3. 面对文件上传(例如: 图片, 视频等), 之前的同事使用rsync指令同步各物理机间的文件

rsync存在的缺陷

  1. 同步周期问题: 设置太短, 消耗服务器资源; 设置太长, 用户上传文件后, 有可能不能很快获取到该文件(比如文件上传到了A服务器, 取文件的时候, nginx将该请求转发到B服务器; 而此时, rsync还在循环间隔中)
  2. 高可用问题: 该指令无法做到高可用

我司目前仅仅存储一些小文件, 经过调研, 选择简单实用的FastDFS.

搭建集群

VMware克隆多台实例构建分布式系统的方案制作三台虚拟机M_21(192.168.10.201), M_22(192.168.10.202), M_23(192.168.10.203).

最佳实践: 建议首先将M_21进行配置, 之后使用VMware的克隆功能复制出剩余的两台; 然后对相关配置文件修改IPPort.

阅读全文 »

FastDFS架构剖析

简介

FastDFS是一款类Google FS的开源分布式文件系统,它用纯C语言实现,支持Linux、FreeBSD、AIX等UNIX系统。它只能通过专有API对文件进行存取访问,不支持POSIX接口方式,不能mount使用。准确地讲,Google FS以及FastDFS、mogileFS、HDFS、TFS等类Google FS都不是系统级的分布式文件系统,而是应用级的分布式文件存储服务。

FastDFS 架构

客户端和Storage server主动连接Tracker server。Storage server主动向Tracker server报告其状态信息,包括磁盘剩余空间、文件同步状况、文件上传下载次数等统计信息。Storage server会连接集群中所有的Tracker server,向他们报告自己的状态。Storage server启动一个单独的线程来完成对一台Tracker server的连接和定时报告。需要说明的是,一个组包含的Storage server不是通过配置文件设定的,而是通过Tracker server获取到的。

阅读全文 »

发布构件至Maven中央库

背景

做了一些开源项目, 可以开箱即用, 为了能让用户快速体验, 最佳方案就是把其构件发布至中央库, 用户按文档导入该依赖, 拷贝文档的测试用例代码, 运行即可看到结果; 为用户调研权衡节省时间.

下文将介绍如何把源码成功发布至Maven中央库的全过程.

样例项目

该项目的项目目录结构, pom.xml相关配置符合发布要求, 且已发布成功, 并会进行不定期更新, 首次发布的同学可参考对比.

注册Sonatype账户

该站点用于提交构件发布的申请及相关问题.

注: 请记住注册的用户名和密码, 在以后会经常用到.

阅读全文 »