微信JS-SDK使用步骤

概述

微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包。

通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照、选图、语音、位置等手机系统的能力,同时可以直接使用微信分享、扫一扫、卡券、支付等微信特有的能力,为微信用户提供更优质的网页体验。

Java判断IP地址是否在CIDR范围内

Java原生算法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//核心代码,检索IP所属网段
public boolean isInRange(String ip, String cidr) {
String[] ips = ip.split("\\.");
long ipAddr = (Long.parseInt(ips[0]) << 24)
| (Long.parseInt(ips[1]) << 16)
| (Long.parseInt(ips[2]) << 8)
| Long.parseInt(ips[3]);
long type = Long.parseInt(cidr.replaceAll(".*/", ""));
long mask = 0xFFFFFFFF << (32 - type);
String cidrIp = cidr.replaceAll("/.*", "");
String[] cidrIps = cidrIp.split("\\.");
long networkIpAddr = (Long.parseInt(cidrIps[0]) << 24)
| (Long.parseInt(cidrIps[1]) << 16)
| (Long.parseInt(cidrIps[2]) << 8)
| Long.parseInt(cidrIps[3]);
return (ipAddr & mask) == (networkIpAddr & mask);
}

Android SSL证书设置和锁定(SSL/TLS Pinning)

在移动端开发中安全性设置非常重要,尤其是目前非常流程H5混合式开发APP,在Android开发中,我们可以通过证书锁定的方式来增加客户端与服务端的安全保障,本文主要介绍SSL数字证书在Android开发中的证书锁定(SSL/TLS Pinning)

常规SSL证书设置

Android防抓包(证书强校验)

Android HTTPS抓包

常规https抓包方案便是通过内置代理证书来进行抓包的。

  • 其中在7.0以下,如果应用不做证书强校验,直接通过https进行请求是可以进行抓包的。
  • 而到了7.0及以上,由于更新了安全机制,导致应用默认不信任用户手动安装的证书,所以即使是没有主动做证书强校验也是抓不了包的。

Java高级开发技巧记录

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
//对象拷贝
BeanUtils.copyProperties(object, object)

//集合工具
CollectionUtils.isEmpty(list)
List<Long> ids = items.stream().map(p -> p.getId()).collect(Collectors.toList());
list.stream()
.filter(p -> TradeStatus.ONLINE.name().equalsIgnoreCase(p.getTradeStatus()))
.forEach(p -> {

});

//字符串工具
Strings.nullToEmpty(string)

//A|B|C|D|E
List<String> head = Arrays.asList("A", "B", "C", "D", "E");
String rowStr = String.join(separator, head);

//对象工具
Objects.equals(object, object)
Objects.isNull(object)
Objects.nonNull(object)

//日期工具
Date now = DateUtils.truncate(dateTimeHelper.selectDateTime(), Calendar.DAY_OF_MONTH);
String begin = DateFormatUtils.format(DateUtils.addDays(now, -req.getLatestDays()), "yyyyMMdd");
String end = DateFormatUtils.format(DateUtils.addDays(now, -1), "yyyyMMdd");

Date date = "20200101";
DateFormatUtils.format(DateUtils.addDays(date, -1), "yyyyMMdd");

//BigDecimal运算
new BigDecimal(100).divide(new BigDecimal(10000))

//大写
WordUtils.capitalize(profile)

//map遍历
map.entrySet().forEach(entry -> {

});

//线程安全
List<T> list = Collections.synchronizedList(new LinkedList<>());

//AtomicInteger
AtomicInteger count = new AtomicInteger(0);
count.incrementAndGet()
count.intValue()
count.addAndGet(5)

Powered by AppBlog.CN     浙ICP备14037229号

Copyright © 2012 - 2020 APP开发技术博客 All Rights Reserved.

访客数 : | 访问量 :