大鱼叔叔的个人博客

学习 讨论 记录 积累 巩固 思考 感悟 整理 总结 分享


  • 首页

  • 分类

  • 关于

  • 归档

  • 标签

  • 简历

  • 搜索

今日诗词

作者信息

MQTT Client

发表于 2017-09-01 10:09:46 | 分类于 万物互联
| 字数统计 966 | 阅读时长 4
MQTT Client From Java
阅读全文 »

判断数据是否是JSON

发表于 2017-08-21 21:08:17 | 分类于 后端开发
| 字数统计 62 | 阅读时长 0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONException;
import com.alibaba.fastjson.JSONObject;
/**
 * 判断是不是json
 * 暴力解析:Alibaba fastjson
 * @param test
 * @return
 */
public final static boolean isJSONValid(String test) {
    try {
            JSONObject.parseObject(test);
    } catch (JSONException ex) {
        try {
            JSONObject.parseArray(test);
        } catch (JSONException ex1) {
                return false;
        }
    }
        return true;
} 
阅读全文 »

Jackson序列化对象的过滤

发表于 2017-08-20 19:08:18 | 分类于 后端开发
| 字数统计 152 | 阅读时长 0

参数选项

  • Include.NON_DEFAULT 属性为默认值不序列化
  • Include.NON_EMPTY 属性为 空(“”) 或者为 NULL 都不序列化
  • Include.NON_NULL 属性为NULL 不序列化

方法过滤

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import com.alibaba.fastjson.JSON;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.core.JsonProcessingException;
/**
 * jackson to fastjson
 * 
 * @param obj
 * @return
 */
public static Object NON_DEFAULT(Object obj) {
		try {
			obj = new ObjectMapper().setSerializationInclusion(Include.NON_DEFAULT).writeValueAsString(obj);
		} catch (JsonProcessingException e) {
			e.printStackTrace();
		}
		return obj;
	}

注解过滤

1
2
3
4
5
6
7
import com.fasterxml.jackson.annotation.JsonInclude;
public class APIResultBean<T> implements Serializable{
	private static final long serialVersionUID = 1L;
	// 过滤空值
	@JsonInclude(JsonInclude.Include.NON_DEFAULT)
	private T data;
}
阅读全文 »

通过API发送消息给EMQTT代理服务器

发表于 2017-08-19 00:08:00 | 分类于 万物互联
| 字数统计 546 | 阅读时长 2

Http Post To EMQTT 封装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.ConnectionRequest;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.params.CoreConnectionPNames;
import org.apache.http.util.EntityUtils;
public static void httpAPIPublishMqttPayload(String json) {
		final Base64.Encoder encoder = Base64.getEncoder();
		byte[] textByte;
		// 编码
		String encodedText=null;
		try {
			textByte = "admin:public".getBytes("UTF-8");//对账号和密码进行编码
			encodedText = encoder.encodeToString(textByte);// 编码
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		RequestConfig config = RequestConfig.custom().setConnectTimeout(5000).setSocketTimeout(3000).build();
		HttpClient httpClient = HttpClientBuilder.create().setDefaultRequestConfig(config).build();

		HttpPost httppost = new HttpPost(“http://yibuwulianwang.com:18000/api/v2/mqtt/publish”);

		httppost.setHeader("Authorization", "Basic " + encodedText);
		httppost.setHeader("Content-Type", "application/json");
		// httppost.setHeader("Content-Length", String.valueOf(postStrBytes.length));

		String postjson = JSON.toJSONString(“json”));//payload json
		// 构建消息实体
		StringEntity entity = new StringEntity(postjson, Charset.forName("UTF-8"));
		entity.setContentEncoding("UTF-8");
		// 发送json格式的请求
		entity.setContentType("application/json");
		httppost.setEntity(entity);

		HttpResponse response;
		try {
			response = httpClient.execute(httppost);
			// 消息返回码
			int statusCode = response.getStatusLine().getStatusCode();
			if (statusCode != HttpStatus.SC_OK) {
				System.out.println("REQUEST EMQTT HTTP API ERR:" + statusCode);
			} else {
				System.out.println("REQUEST EMQTT HTTP API SUCCESS:" + statusCode);
			}
			HttpEntity httpEntity = response.getEntity();
			String result = null;
			if (httpEntity != null) {
				result = EntityUtils.toString(httpEntity, "utf-8");
				EntityUtils.consume(httpEntity);
				System.out.println("EMQTT HTTP API RESPONSE RESULT:"+result);
			}
		} catch (ClientProtocolException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

Http Post 封装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import java.io.IOException;
import java.nio.charset.Charset;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
public void postAPI(String url, Object json) {
		RequestConfig config = RequestConfig.custom().setConnectTimeout(35000).setConnectionRequestTimeout(35000)
				.setSocketTimeout(60000).build();
		HttpClient httpClient = HttpClientBuilder.create().setDefaultRequestConfig(config).build();
		HttpPost httpPost = new HttpPost(url);
		httpPost.setHeader("Content-Type", "application/json");
		String postjson = JSON.toJSONString(json);
		System.out.println("请求接口( " + url + " )的数据:\n" + postjson);
		StringEntity entity = new StringEntity(postjson, Charset.forName("UTF-8"));
		entity.setContentEncoding("UTF-8");
		entity.setContentType("application/json");
		httpPost.setEntity(entity);
		try {
			HttpResponse httpResponse = httpClient.execute(httpPost);
			HttpEntity httpEntity = httpResponse.getEntity();
			String result = EntityUtils.toString(httpEntity, "utf-8");
			EntityUtils.consume(httpEntity);
			System.out.println("接口( " + url + " )响应的数据:\n" + result);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
阅读全文 »

EMQTT

发表于 2017-07-08 16:07:29 | 分类于 万物互联
| 字数统计 49 | 阅读时长 0

EMQTT 是一个MQTT代理服务器

下载编译之后的软件包

1
2
wget http://emqtt.com/static/brokers/emqttd-ubuntu16.04-v2.3.6.zip
sudo unzip emqttd-ubuntu16.04-v2.3.6.zip

打开

1
./emqttd/bin/emqttd start

关闭

1
./emqttd/bin/emqttd stop

查询状态

1
./emqttd/bin/emqttd_ctl status
阅读全文 »

JVM调优

发表于 2017-07-02 00:07:00 | 分类于 后端开发
| 字数统计 348 | 阅读时长 1
Java虚拟机JVM调优
阅读全文 »

树莓派Python实现超声波测距+人体红外报警+温湿度+LED灯

发表于 2017-06-06 22:06:30 | 分类于 万物互联
| 字数统计 2418 | 阅读时长 12

硬件模块

  • Raspberry Pi 3
  • 超声波测距模块 HY-SRF05
  • 人体红外传感器模块 HC-SR501
  • 温湿度模块 DHT11
  • LED灯模块
阅读全文 »

SpringMVC常用注解

发表于 2017-05-16 10:05:10 | 分类于 后端开发
| 字数统计 3554 | 阅读时长 17
SpringMVC常用注解深入解释
阅读全文 »

SpringMVC分层思想

发表于 2017-05-15 12:05:49 | 分类于 后端开发
| 字数统计 333 | 阅读时长 1

DAO层

数据持久层/数据访问层

  • 对外提供统一的数据操作接口
  • 可以使数据库操作,可以是文件操作,也可以使缓存操作
  • 专注于数据业务的处理
阅读全文 »

编辑器之神VIM

发表于 2017-04-17 10:04:22 | 分类于 开发工具
| 字数统计 985 | 阅读时长 4
编辑器之神VIM
阅读全文 »
1 … 7 8 9 10
大鱼叔叔

大鱼叔叔

98 日志
10 分类
48 标签
GitHub About Links Atom
2018 - 2019  大鱼叔叔  粤ICP备18019530号-2  Pages  Jekyll  NexT  BY-NC-SA