import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
import java.util.*;
@Slf4j
public class SenInfoCheckUtil {
/**
* 图片违规检测
* @param accessToken
* @param file
* @return
*/
public static Boolean imgFilter(String accessToken, MultipartFile file){
String contentType = file.getContentType();
return checkPic(file, accessToken,contentType);
}
/**
* 文本违规检测
* @param accessToken
* @param content
* @return
*/
public static Boolean cotentFilter(String accessToken, String content){
return checkContent(accessToken,content);
}
/**
* 恶意图片过滤
* @param multipartFile
* @return
*/
private static Boolean checkPic(MultipartFile multipartFile, String accessToken,String contentType) {
try {
CloseableHttpClient httpclient = HttpClients.createDefault();
CloseableHttpResponse response = null;
HttpPost request = new HttpPost("https://api.weixin.qq.com/wxa/img_sec_check?access_token=" + accessToken);
request.addHeader("Content-Type", "application/octet-stream");
InputStream inputStream = multipartFile.getInputStream();
byte[] byt = new byte[inputStream.available()];
inputStream.read(byt);
request.setEntity(new ByteArrayEntity(byt, ContentType.create(contentType)));
response = httpclient.execute(request);
HttpEntity httpEntity = response.getEntity();
String result = EntityUtils.toString(httpEntity, "UTF-8");// 转成string
JSONObject jso = JSONObject.parseObject(result);
return getResult(jso);
} catch (Exception e) {
e.printStackTrace();
log.info("----------------调用腾讯内容过滤系统出错------------------");
return true;
}
}
private static Boolean checkContent(String accessToken,String content) {
try {
CloseableHttpClient httpclient = HttpClients.createDefault();
CloseableHttpResponse response = null;
HttpPost request = new HttpPost("https://api.weixin.qq.com/wxa/msg_sec_check?access_token=" + accessToken);
request.addHeader("Content-Type", "application/json");
Map<String, String> map = new HashMap<>();
map.put("content",content);
String body = JSONObject.toJSONString(map);
request.setEntity(new StringEntity(body,ContentType.create("text/json", "UTF-8")));
response = httpclient.execute(request);
HttpEntity httpEntity = response.getEntity();
String result = EntityUtils.toString(httpEntity, "UTF-8");// 转成string
JSONObject jso = JSONObject.parseObject(result);
return getResult(jso);
} catch (Exception e) {
e.printStackTrace();
log.info("----------------调用腾讯内容过滤系统出错------------------");
return true;
}
}
private static Boolean getResult(JSONObject jso){
Object errcode = jso.get("errcode");
int errCode = (int) errcode;
if (errCode == 0) {
return true;
} else if (errCode == 87014) {
log.info("图片内容违规-----------");
return false;
}
return true;
}
}
文章浏览阅读539次。几年下来,自己深知,相较于头悬梁锥刺股,一直持续平稳的发力更可贵;相较于蝇营狗苟,抓大放小,静心无为更可贵...不多说了,附上一首刘欢的《在路上》歌词,就这样开始吧: 那一天我不得已上路为不安分的心为自尊的生存为自我的证明路上的辛酸已融进我的眼睛心灵的困境已化作我的坚定在路上 用我心灵的呼声在路上 只为伴着我的人在路上 是我生命的远行在路上 只为
文章浏览阅读4.6w次,点赞3次,收藏21次。如果是单玩游戏,那么2080ti最好,光线追踪,而且双卡复用需要游戏支持,所以一般只能发挥单卡性能,那自然2080ti。如果是深度学习的话,那就有的谈了,结论:纯综合算力而言1080ti,单卡算力2080ti,性价比1080ti.float16算力而言:两个1080ti不如2080ti(以两个1080ti并行算力达1.8算)float32算力而言:能并行任务两个1080ti(以两个..._1080ti算力
文章浏览阅读4.1k次,点赞3次,收藏10次。(一)POI 4.1.2 颜色 color提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用文章目录(一)POI 4.1.2 颜色 color前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言POI 文档与示例方面对国人并不友好,往往不知道怎么使用,本系列主要用示例方式演示POI 4.1.2 API文档使用。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:p_indexedcolors
文章浏览阅读8k次。二进制树型搜索算法由读写器控制,基本思想是不断的将导致碰撞的电子标签进行划分,缩小下一步搜索的标签数量,直到只有一个电子标签进行回应。 二进制搜索算法的基本思路是,多个标签进入读写器工作场后,读写器发送带限制条件的询问命令,满足限制条件的标签回答,如果发生碰撞,则根据发生错误的位修改限制条件,再一次发送询问命令,直到找到一个正确的回答,并完成对该标签的读写操作。对剩余的标签重复_rfid二进制搜索算法例题
文章浏览阅读3.1k次,点赞4次,收藏16次。参考etcd 实战 极客时间整体架构基础模块介绍client 层: 包含 client v2 和 v3 两个大版本 API 客户端API 网络层:主要包含 clent 访问 server 和 server 节点之间的通信协议clent 访问 server 分为两个版本:v2 API 采用 HTTP/1.x 协议,v3 API 采用 gRPC 协议server 之间的通信:是指节点间通过 Raft 算法实现数据复制和 Leader 选举等功能时使用的 HTTP 协议Raft 算_etcd架构
文章浏览阅读8.4k次,点赞2次,收藏11次。转自 雷锋网https://www.leiphone.com/news/201701/tfL1l0y3heIGWVre.html?from=timeline&viewType=weixin无论是开创智能手机时代的 iPhone,还是如今很热门的 VR/AR 和人工智能,再到苹果新 Macbook Pro 的亮点 Touchbar。人机交互的创新是消费科技产品进步的核心。而在这个..._自然交互优点
文章浏览阅读1.3k次。点击卡片部分要跳转到详情页,点击小星星要进行收藏。这种情况下如果收藏事件还用bindtap那么就会先进行收藏再跳转到详情页(点小星星不需要跳详情页)。所以我们就要阻止这种冒泡事件!把bindtap换成catchtap就可以了哦~..._原生小程序一个盒子两个点击事件
文章浏览阅读401次,点赞3次,收藏8次。【代码】vue中配置路由拦截器。_vue 路由拦截器
文章浏览阅读1.6k次。计算机网络技术期末考试模拟试题及答案,路由交换技术期末试题及答案,1、The noted physician, Hua Tuo, composed the "Five Animals Play"—tiger, deer, monkey, bear, and bird, around 220 BC.A:正确; B:错误答案:错误_路由与交换技术期末考试试卷
文章浏览阅读2.2k次,点赞64次,收藏42次。功能测试工程师和测试开发工程师的核心竞争力
文章浏览阅读370次。我们生活在自动化时代,聪明的公司正在利用技术将手动流程转变为自动流程。营销自动化是指使用软件、插件、人工智能和分析工具来执行常见和重复的营销流程,例如发送电子邮件和为网站访问者部署应用内消息。_转化桌自动化
文章浏览阅读246次。首先声明,我用的是 sublime 3sublime 每次安装时,左下角都有个 [ = ] 形状的图标,中间等号在滑动,若安装成功则消失以下插件基本都是亲测有效的,我自己就是这么安装的sublime 3 小技巧:缩进在右下角 的tabSize 或 space安装插件之前的准备工作:1、打开Sublime 3,然后按 ctrl+` 或者在View → Show Console(如若..._sublime插件开发教程 sidebar