当前位置: 首页 > 编程日记 > 正文

「小程序JAVA实战」小程序的举报功能开发(68)

转自:https://idig8.com/2018/09/25/xiaochengxujavashizhanxiaochengxudeweixinapicaidancaozuo66-2/

通过点击举报按钮,跳转到举报页面完成举报操作。

后台开发

获取发布人的userId,videoId,创建者的Id

  • controller

UserController.java

package com.idig8.controller;import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;import com.idig8.pojo.Users;
import com.idig8.pojo.UsersReport;
import com.idig8.pojo.vo.PublisherVideo;
import com.idig8.pojo.vo.UsersVO;
import com.idig8.service.UserService;
import com.idig8.utils.JSONResult;
import com.idig8.utils.file.FileUtil;import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;@RestController
@Api(value="用户接口",tags={"用户的controller"})
@RequestMapping(value = "/user")
public class UserController extends BasicController{@Autowiredprivate UserService userService;@Value("${server.file.path}")private String fileSpace;@ApiOperation(value="用户上传头像",notes="用户上传头像的接口")@ApiImplicitParams({@ApiImplicitParam(name="userId",value="用户id",required=true,dataType="String",paramType="query"),})@PostMapping(value="/uploadFace",headers="content-type=multipart/form-data")public JSONResult uploadFace(String userId,@ApiParam(value="图片",required=true) MultipartFile file) {if (StringUtils.isBlank(userId)) {return JSONResult.errorMsg("用户id不能为空...");}// 文件保存的命名空间String fileName = file.getOriginalFilename();// 保存到数据库中的相对路径String path = "";try {path = FileUtil.uploadFile(file.getBytes(), fileSpace, fileName);} catch (Exception e) {e.getStackTrace();return JSONResult.errorMsg(e.getMessage());}Users user = new Users();user.setId(userId);user.setFaceImage(path);userService.updateUser(user);return JSONResult.ok(path);}@ApiOperation(value="通过用户Id获取用户信息",notes="通过用户Id获取用户信息的接口")@ApiImplicitParam(name="userId",value="用户id",required=true,dataType="String",paramType="query")@PostMapping("/queryByUserId")public JSONResult queryByUserId(String userId, String fanId) {if (StringUtils.isBlank(userId)) {return JSONResult.errorMsg("用户id不能为空...");}Users user = userService.queryUserId(userId);UsersVO usersVO= new UsersVO();BeanUtils.copyProperties(user, usersVO);usersVO.setFollow(userService.queryIfFollow(userId, fanId));return JSONResult.ok(usersVO);}@PostMapping("/queryPublisher")public JSONResult queryPublisher(String loginUserId, String videoId, String publishUserId) throws Exception {if (StringUtils.isBlank(publishUserId)) {return JSONResult.errorMsg("");}// 1. 查询视频发布者的信息Users userInfo = userService.queryUserInfo(publishUserId);UsersVO publisher = new UsersVO();BeanUtils.copyProperties(userInfo, publisher);// 2. 查询当前登录者和视频的点赞关系boolean userLikeVideo = userService.isUserLikeVideo(loginUserId, videoId);PublisherVideo bean = new PublisherVideo();bean.setPublisher(publisher);   bean.setUserLikeVideo(userLikeVideo);return JSONResult.ok(bean);}@PostMapping("/beyourfans")public JSONResult beyourfans(String userId, String fanId) throws Exception {if (StringUtils.isBlank(userId) || StringUtils.isBlank(fanId)) {return JSONResult.errorMsg("");}userService.saveUserFanRelation(userId, fanId);return JSONResult.ok("关注成功...");}@PostMapping("/dontbeyourfans")public JSONResult dontbeyourfans(String userId, String fanId) throws Exception {if (StringUtils.isBlank(userId) || StringUtils.isBlank(fanId)) {return JSONResult.errorMsg("");}userService.deleteUserFanRelation(userId, fanId);return JSONResult.ok("取消关注成功...");}@PostMapping("/reportUser")public JSONResult reportUser(@RequestBody UsersReport usersReport) throws Exception {// 保存举报信息userService.reportUser(usersReport);return JSONResult.errorMsg("举报成功...有你平台变得更美好...");}}···* service
UserService.java
``` java
package com.idig8.service;import com.idig8.pojo.Users;
import com.idig8.pojo.UsersReport;public interface UserService {/*** 判断用户名是否存在* @param username* @return*/public boolean queryUsernameIsExist(String username);/*** 保存用户* @param user* @return*/public void saveUser(Users user);/*** 查询用户对象* @param username* @return*/public Users queryUserIsExist(Users user);/*** 更新对象* @param username* @return*/public void updateUser(Users user);/*** userId查询用户对象* @param username* @return*/public Users queryUserId(String userId);/*** 查询用户信息*/public Users queryUserInfo(String userId);/*** 查询用户是否喜欢点赞视频*/public boolean isUserLikeVideo(String userId, String videoId);/*** @Description: 增加用户和粉丝的关系*/public void saveUserFanRelation(String userId, String fanId);/*** @Description: 删除用户和粉丝的关系*/public void deleteUserFanRelation(String userId, String fanId);/*** @Description: 查询用户是否关注*/public boolean queryIfFollow(String userId, String fanId);/*** @Description: 举报用户*/public void reportUser(UsersReport userReport);}
  • service
    UserServiceImpl.java
package com.idig8.service.Impl;import java.util.Date;
import java.util.List;import org.apache.commons.lang3.StringUtils;
import org.n3r.idworker.Sid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;import com.idig8.mapper.UsersFansMapper;
import com.idig8.mapper.UsersLikeVideosMapper;
import com.idig8.mapper.UsersMapper;
import com.idig8.mapper.UsersReportMapper;
import com.idig8.pojo.Users;
import com.idig8.pojo.UsersFans;
import com.idig8.pojo.UsersLikeVideos;
import com.idig8.pojo.UsersReport;
import com.idig8.service.UserService;
import com.idig8.utils.MD5Utils;import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.entity.Example.Criteria;@Service
public class UserServiceImpl implements UserService {@Autowiredprivate UsersMapper usersMapper;@Autowiredprivate UsersLikeVideosMapper usersLikeVideosMapper;@Autowiredprivate UsersMapper userMapper;@Autowiredprivate Sid sid;@Autowiredprivate UsersFansMapper usersFansMapper;@Autowiredprivate UsersReportMapper usersReportMapper;@Transactional(propagation =Propagation.SUPPORTS)@Overridepublic boolean queryUsernameIsExist(String username) {Users user = new Users();user.setUsername(username);Users result = usersMapper.selectOne(user);return result==null? false:true;}@Transactional(propagation =Propagation.REQUIRED)@Overridepublic void saveUser(Users user) {String userId =sid.nextShort();user.setId(userId);usersMapper.insert(user);}@Transactional(propagation =Propagation.SUPPORTS)@Overridepublic Users queryUserIsExist(Users user) {Example queryExample = new Example(Users.class);Criteria criteria = queryExample.createCriteria();criteria.andEqualTo("username",user.getUsername());try {criteria.andEqualTo("password",MD5Utils.getMD5Str(user.getPassword()));} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}Users userOne =  usersMapper.selectOneByExample(queryExample);return userOne;}@Transactional(propagation =Propagation.REQUIRED)@Overridepublic void updateUser(Users user) {Example userExample = new Example(Users.class);Criteria criteria = userExample.createCriteria();criteria.andEqualTo("id", user.getId());usersMapper.updateByExampleSelective(user, userExample);}@Transactional(propagation =Propagation.SUPPORTS)@Overridepublic Users queryUserId(String userId){Example queryExample = new Example(Users.class);Criteria criteria = queryExample.createCriteria();criteria.andEqualTo("id",userId);Users userOne =  usersMapper.selectOneByExample(queryExample);return userOne;}@Transactional(propagation = Propagation.SUPPORTS)@Overridepublic Users queryUserInfo(String userId) {Example userExample = new Example(Users.class);Criteria criteria = userExample.createCriteria();criteria.andEqualTo("id", userId);Users user = userMapper.selectOneByExample(userExample);return user;}@Transactional(propagation = Propagation.SUPPORTS)@Overridepublic boolean isUserLikeVideo(String userId, String videoId) {if (StringUtils.isBlank(userId) || StringUtils.isBlank(videoId)) {return false;}Example example = new Example(UsersLikeVideos.class);Criteria criteria = example.createCriteria();criteria.andEqualTo("userId", userId);criteria.andEqualTo("videoId", videoId);List<UsersLikeVideos> list = usersLikeVideosMapper.selectByExample(example);if (list != null && list.size() >0) {return true;}return false;}@Transactional(propagation = Propagation.REQUIRED)@Overridepublic void saveUserFanRelation(String userId, String fanId) {String relId = sid.nextShort();UsersFans userFan = new UsersFans();userFan.setId(relId);userFan.setUserId(userId);userFan.setFanId(fanId);usersFansMapper.insert(userFan);userMapper.addFansCount(userId);userMapper.addFollersCount(fanId);}@Transactional(propagation = Propagation.REQUIRED)@Overridepublic void deleteUserFanRelation(String userId, String fanId) {Example example = new Example(UsersFans.class);Criteria criteria = example.createCriteria();criteria.andEqualTo("userId", userId);criteria.andEqualTo("fanId", fanId);usersFansMapper.deleteByExample(example);userMapper.reduceFansCount(userId);userMapper.reduceFollersCount(fanId);}@Overridepublic boolean queryIfFollow(String userId, String fanId) {Example example = new Example(UsersFans.class);Criteria criteria = example.createCriteria();criteria.andEqualTo("userId", userId);criteria.andEqualTo("fanId", fanId);List<UsersFans> list = usersFansMapper.selectByExample(example);if (list != null && !list.isEmpty() && list.size() > 0) {return true;}return false;}@Transactional(propagation = Propagation.REQUIRED)@Overridepublic void reportUser(UsersReport userReport) {String urId = sid.nextShort();userReport.setId(urId);userReport.setCreateDate(new Date());usersReportMapper.insert(userReport);}}

小程序开发

  • videoInfo
    videoInfo.js
var videoUtils = require('../../utils/videoUtils.js')
const app = getApp()
Page({data: {cover:'cover',videoContext:"",videoInfo:{},videId:'',src:'',userLikeVideo:false,serverUrl:'',publisher:[]},showSearch:function(){wx.navigateTo({url: '../videoSearch/videoSearch',})},onLoad:function(params){var me = this;me.videoContext = wx.createVideoContext('myVideo', me);var videoInfo = JSON.parse(params.videoInfo);var videoWidth = videoInfo.videoWidth;var videoHeight = videoInfo.videoHeight;var cover = 'cover';if (videoWidth > videoHeight){cover = '';}me.setData({videId: videoInfo.id,src: app.serverUrl + videoInfo.videoPath,videoInfo: videoInfo,cover: cover})var serverUrl = app.serverUrl;var user = app.getGlobalUserInfo();var loginUserId = "";if (user != null && user != undefined && user != '') {loginUserId = user.id;}wx.request({url: serverUrl + '/user/queryPublisher?loginUserId=' + loginUserId + "&videoId=" + videoInfo.id + "&publishUserId=" + videoInfo.userId,method: 'POST',success: function (res) {console.log(res.data);var publisher = res.data.data.publisher;var userLikeVideo = res.data.data.userLikeVideo;me.setData({serverUrl: serverUrl,publisher: publisher,userLikeVideo: userLikeVideo});}})},showIndex:function(){wx.redirectTo({url: '../index/index',})},onShow:function(){var me = this;me.videoContext.play();},onHide:function(){var me = this;me.videoContext.pause();},upload:function(){var me = this;var userInfo = app.getGlobalUserInfo();var videoInfo = JSON.stringify(me.data.videoInfo);var realUrl = '../videoInfo/videoInfo#videoInfo@' + videoInfo;if (userInfo.id == '' || userInfo.id == undefined) {wx.navigateTo({url: '../userLogin/userLogin?realUrl=' + realUrl,})} else {videoUtils.uploadVideo();}},showMine: function () {var me = this;var userInfo = app.getGlobalUserInfo();var videoInfo = JSON.parseif (userInfo.id == '' || userInfo.id == undefined){wx.navigateTo({url: '../userLogin/userLogin',})}else{wx.navigateTo({url: '../mine/mine',})}},likeVideoOrNot: function () {var me = this;var userInfo = app.getGlobalUserInfo();var videoInfoStr = JSON.stringify(me.data.videoInfo);var realUrl = '../videoInfo/videoInfo#videoInfo@' + videoInfoStr;if (userInfo.id == '' || userInfo.id == undefined) {wx.navigateTo({url: '../userLogin/userLogin?realUrl=' + realUrl,})} else {var videoInfo = me.data.videoInfo;var userLikeVideo = me.data.userLikeVideo;var url = "/video/userLike?userId=" + userInfo.id + "&videoId=" + videoInfo.id + "&videoCreaterId=" + userLikeVideo.userId;if (userLikeVideo){var url = "/video/userUnLike?userId=" + userInfo.id + "&videoId=" + videoInfo.id + "&videoCreaterId=" + userLikeVideo.userId;}wx.showLoading({title: '....',})wx.request({url: app.serverUrl + url,method: "POST",header: {'content-type': 'application/json', // 默认值'headerUserId': userInfo.id,'headerUserToken': userInfo.userToken},success: function (res) {wx.hideLoading();me.setData({userLikeVideo: !userLikeVideo,})}})}},showPublisher:function(){var me = this;var userInfo = app.getGlobalUserInfo();var videoInfo = me.data.videoInfo;var realUrl = '../mine/mine#publisherId@' + videoInfo.userId;if (userInfo.id == '' || userInfo.id == undefined) {wx.navigateTo({url: '../userLogin/userLogin?realUrl=' + realUrl,})} else {wx.navigateTo({url: '../mine/mine?publisherId=' + videoInfo.userId,})}},shareMe:function(){var me = this;var user = app.getGlobalUserInfo();wx.showActionSheet({itemList: ["下载到本地","举报用户","分享到好友"],success:function(res){if (res.tapIndex==0){} else if (res.tapIndex==1){// 举报var videoInfo = JSON.stringify(me.data.videoInfo);var realUrl = '../videoInfo/videoInfo#videoInfo@' + videoInfo;if (user == null || user == undefined || user == '') {wx.navigateTo({url: '../userLogin/userLogin?realUrl=' + realUrl,})} else {var publishUserId = me.data.videoInfo.userId;var videoId = me.data.videoInfo.id;var currentUserId = user.id;wx.navigateTo({url: '../report/report?videoId=' + videoId + "&publishUserId=" + publishUserId})}} else{}}})}
})
  • report
const app = getApp()Page({data: {reasonType: "请选择原因",reportReasonArray: app.reportReasonArray,publishUserId:"",videoId:""},onLoad:function(params) {var me = this;var videoId = params.videoId;var publishUserId = params.publishUserId;me.setData({publishUserId: publishUserId,videoId: videoId});},changeMe:function(e) {var me = this;var index = e.detail.value;var reasonType = app.reportReasonArray[index];me.setData({reasonType: reasonType});},submitReport:function(e) {var me = this;var reasonIndex = e.detail.value.reasonIndex;var reasonContent = e.detail.value.reasonContent;var user = app.getGlobalUserInfo();var currentUserId = user.id;if (reasonIndex == null || reasonIndex == '' || reasonIndex == undefined) {wx.showToast({title: '选择举报理由',icon: "none"})return;}var serverUrl = app.serverUrl;wx.request({url: serverUrl + '/user/reportUser',method: 'POST',data: {dealUserId: me.data.publishUserId,dealVideoId: me.data.videoId,title: app.reportReasonArray[reasonIndex],content:reasonContent,userid: currentUserId},header: {'content-type': 'application/json', // 默认值'headerUserId': user.id,'headerUserToken': user.userToken},success:function(res) {wx.showToast({title: res.data.msg,duration: 2000,icon: 'none',success: function() {wx.navigateBack();}})}})}})
<view><form bindsubmit='submitReport'><view class='container-reason'><label class='label'>举报理由:</label><picker name="reasonIndex" value="{{index}}" range="{{reportReasonArray}}" bindchange="changeMe"><view class="picker">{{reasonType}}</view></picker></view><view class='container-content'><label class='label'>举报描述(选填):</label><textarea name="reasonContent" class='content' placeholder='请详细说明举报原因...'></textarea></view><view class='container-tips'><image src='../../resource/images/report_face.png' class='report-face'></image>收到举报后,我们会在12小时内处理,感谢您的举报,互联网环境因你更美好!~~</view><view><button class="submitBtn" type="" form-type='submit'>提  交</button></view></form>
</view>
page {background-color: #0e0f1a;/* background-color: red; */
}.container-reason {display: flex;color: whitesmoke;padding: 15px;background-color: #161823;
}.label {/* margin-left: 15px; */margin-right: 15px;color: white;
}.container-content {margin-top: 10px;color: whitesmoke;padding: 15px;background-color: #161823;
}.content {margin-top: 10px;padding: 10px;color: white;background-color: #242630;width: 95%;
}.container-tips{padding: 25px;color: #56575e;font-size: 15px;
}.report-face{width:12px;height:13px;
}.submitBtn {width: 80%;margin-top: 10px;background-color: #fe2c55;color: white;
}
  • app.js
//app.js
App({serverUrl:"http://127.0.0.1:8081/",userInfo:null,setGlobalUserInfo:function(user){wx.setStorageSync("userInfo", user);},getGlobalUserInfo: function () {return wx.getStorageSync("userInfo");},reportReasonArray: ["色情低俗","政治敏感","涉嫌诈骗","辱骂谩骂","广告垃圾","诱导分享","引人不适","过于暴力","违法违纪","其它原因"]
})

PS:举报功能已经开发完毕,后面这几次很少语言描述,基本的业务逻辑想下就通了。

转载于:https://www.cnblogs.com/sharpest/p/10316629.html

相关文章:

tar常见文件解压法

2019独角兽企业重金招聘Python工程师标准>>> tar常见文件解压法:.gz - z 小写.bz2 - j 小写.xz - J 大写.Z - Z大写 转载于:https://my.oschina.net/open1900/blog/149238

cookie的作用域

当我们给网站设置cookie时&#xff0c;大家有没有发现在网站的其他域名下也接收到了这些cookie。这些没用的cookie看似不占多少流量&#xff0c;但如果对一个日PV千万的站点来说&#xff0c;那浪费的资源就不是一点点了。因此在设置cookie时&#xff0c;对它的作用域一定要设置…

必看,10篇定义计算机视觉未来的论文

译者 | Major编辑 | 赵雪出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;导语&#xff1a;如果你没能参加 CVPR 2019 &#xff0c; 别担心。本文列出了会上人们最为关注的 10 篇论文&#xff0c;覆盖了 DeepFakes&#xff08;人脸转换&#xff09;, Facial Recogniti…

有效的rtsp流媒体测试地址汇总

以下是从网上搜集的一些有效的rtsp流媒体测试地址&#xff1a; 1. rtsp://218.204.223.237:554/live/1/0547424F573B085C/gsfp90ef4k0a6iap.sdp 2. rtsp://218.204.223.237:554/live/1/66251FC11353191F/e7ooqwcfbqjoo80j.sdp 3. rtsp://211.139.194.251:554…

java简单的ID生成器

2019独角兽企业重金招聘Python工程师标准>>> https://www.cnblogs.com/hongdada/p/9324473.html https://github.com/apache/incubator-shardingsphere 转载于:https://my.oschina.net/u/3005325/blog/3006311

安装、设置与启动MySql5.1.30绿色版的方法

1、解压 mysql-noinstall-5.1.30-win32.zip(下载地址http://dev.mysql.com/downloads/mysql/5.1.html)2、在 F 盘建立目录 MySql\MySqlServer5.1\ 3、把解压的内容复制到 F:\MySql\MySqlServer5.1\4、在 F:\MySql\MySqlServer5.1\ 中找 my-large.ini 把它复制成 my.ini5、在…

网页中插入VLC播放器播放rtsp视频流步骤

1. 仿照http://download.csdn.net/detail/haowenxin123456789/8044245 中步骤&#xff1b; 2. 从http://www.videolan.org/vlc/index.html 中下载 vlc-2.2.1-win32.exe 并安装到D:\\ProgramFiles文件夹下&#xff1b; 3. 运行&#xff1a;regsvr32 D:\\ProgramFil…

@程序员,“10倍工程师”都在追这四大AI风向

技术的发展&#xff0c;驱动着产业变革&#xff0c;从而改变着我们的生活方式。当5GAI 时代来临&#xff0c;核心的技术生产力就是开发者&#xff1a;开发者研究前沿的科学创新&#xff0c;推动技术发展&#xff0c;将技术应用于实际场景中。开发者是企业实现商业价值必不可少的…

End Credits

我不知道怎么把他删掉... 今晚WC文艺汇演wwww(等待唱歌.jpg 要是能截到屏一定发上来qwqqqqq 话说这首曲子是新发现的QAQ(Xeuphoria的还是那么好听qwqqq 今天学了快读qvq 还有...dpwww P2015 二叉苹果树 有一棵苹果树&#xff0c;如果树枝有分叉&#xff0c;一定是分2叉&#xf…

三十六亿的《哪吒》历时五年,如何用AI解决动画创作难题?

作者 | 神经小姐姐来源 | HyperAI超神经&#xff08; ID: HyperAI )【导读】《哪吒之魔童降世》自 7 月 26 日上映以来&#xff0c;好评如潮&#xff0c;票房一路高歌猛进&#xff0c;目前已突破 36 亿。这款火爆的动画背后&#xff0c;是主创团队历时 5 年的细致打磨。而这漫长…

vb.net结构化异常处理和“邪用”

vb.net中的错误处理包括两种&#xff1a;非结构化异常处理技术和结构化异常处理。非结构化异常处理技术在vb 6.0中使用的比较普遍&#xff0c;即通过Err对象和ON Error、Go To、Resume等语句来实现。这种方式可以跟踪最近产生的异常和最近异常处理程序的位置。而结构化异常处理…

Ubuntu 14.04 64位机上不带CUDA支持的Caffe配置编译操作过程

Caffe是一个高效的深度学习框架。它既可以在CPU上执行也可以在GPU上执行。下面介绍在Ubuntu上不带CUDA的Caffe配置编译过程&#xff1a; 1. 安装BLAS&#xff1a;$ sudo apt-get install libatlas-base-dev 2. 安装依赖项&#xff1a;$ sudo apt-get install libprot…

NAT环境无法访问云端的深层次分析

这是一次我维护runningdoctor时候遇到的问题现象&#xff1a;1.用户无法打开web.runningdoctor.cn 2.监控状态无异常、无报警 3.tracert结果无异常、丢包率正常 4.用户无法访问的时候&#xff0c;我们能打开网站 5.多地代理访问网站&#xff0c;结果正常 6.有打开网站特别慢的时…

Magento(麦进斗)安装问题

安装到数据库那一步会跳出 lib\Zend\Db\Statement\Pdo.php on line 228 错误 解决方案&#xff1a; 在你的php模块里的php.ini文件添加&#xff08;或者修改&#xff09;max_execution_time1800 重启你的web服务器&#xff08;apache&#xff0c;nginx&#xff09;&#xff0c;…

Linux Socket基础介绍

Linux Socket函数库是从Berkeley大学开发的BSD UNIX系统中移植过来的。BSD Socket接口是众多Unix系统中被广泛支持的TCP/IP通信接口&#xff0c;Linux下的Socket程序设计&#xff0c;除了微小的差别之外&#xff0c;也适用于大多数其它Unix系统。 Socket接口是TCP/IP网络的API…

免费公开课 | 基于定制数据流技术的AI计算加速

随着人工智能时代的来临&#xff0c;业内对于更高效率算力的需求也越来越紧迫&#xff0c;而传统的 CPU 计算能力弱&#xff0c;只适合软件编程&#xff0c;并不适合应用于人工神经网络算法的自主迭代运算。为了满足支撑深度学习的大规模并行计算的需求&#xff0c;人工智能芯片…

代替国足踢决赛?马宁当选卡日大战第四官员

卡塔尔杀进亚洲杯决赛。 图片来源&#xff1a;Osports全体育图片社 中新网1月30日电 日本与卡塔尔将会师本届亚洲杯的决赛。北京时间30日&#xff0c;亚足联官方已经公布了本次决赛的裁判组&#xff0c;中国裁判员马宁将担任第四官员。 来自乌兹别克斯坦的亚洲金哨伊尔马托夫将…

AI规模化落地,英特尔至强的七重助力

当今时代&#xff0c;各行各业与人工智能&#xff08;AI&#xff09;加速融合&#xff0c;通过智能化创新来寻求业务转型升级。与为数不多的顶级AI研发公司相比&#xff0c;大多数传统行业或企业有着更丰富的 AI 应用场景&#xff0c;推动着规模化的AI应用落地&#xff0c;其AI…

Linux进程编程基础介绍

Linux系统是一个多进程的系统&#xff0c;它的进程之间具有并行性、互不干扰等特点。也就是说&#xff0c;每个进程都是一个独立的运行单位&#xff0c;拥有各自的权利和责任。其中&#xff0c;各个进程都运行在独立的虚拟地址空间&#xff0c;因此&#xff0c;即使一个进程发生…

关于互联网技术基层绩效管理的一些思考

起因是一篇内部的文章&#xff0c;那记录也就留在内部吧&#xff0c;磨炼了的价值观在自己心里就好。 类似的还有 1. 罗振宇不发年终奖&#xff1a;https://xueqiu.com/7118120763/119669075 2. 有赞白鸦强行一波996&#xff1a;https://baijiahao.baidu.com/s?id1623959680…

波纹管 编织管

为什么80%的码农都做不了架构师&#xff1f;>>> 波纹管 编织管 http://wenku.baidu.com/view/4272a9feaef8941ea76e057e.html 转载于:https://my.oschina.net/tadcat/blog/151049

Git基础(常用命令)介绍

版本控制是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统. 关于版本控制分为三种&#xff1a;本地版本控制系统&#xff0c;如rcs&#xff1b;集中化的版本控制系统&#xff0c;如CVS、SVN&#xff1b;分布式版本控制系统&#xff0c;如Git。 Git基础要点 G…

MIT开发新加密货币,用户所需数据比比特币减少99%

MIT的研究人员开发了一种新的加密货币&#xff0c;大大减少了用户加入网络和验证交易所需的数据&#xff0c;与当今流行的加密货币相比&#xff0c;最高可达99%。这意味着网络更具扩展性。 像比特币之类流行的加密货币都是构建于区块链上的网络&#xff0c;而区块链是按照一系列…

深入了解AI加速芯片的定制数据流架构与编译器 | 公开课

随着人工智能时代的来临&#xff0c;业内对于更高效率算力的需求也越来越紧迫&#xff0c;而传统的 CPU 计算能力弱&#xff0c;只适合软件编程&#xff0c;并不适合应用于人工神经网络算法的自主迭代运算。为了满足支撑深度学习的大规模并行计算的需求&#xff0c;人工智能芯片…

《GPU高性能编程CUDA实战》中代码整理

CUDA架构专门为GPU计算设计了一种全新的模块&#xff0c;目的是减轻早期GPU计算中存在的一些限制&#xff0c;而正是这些限制使得之前的GPU在通用计算中没有得到广泛的应用。使用CUDA C来编写代码的前提条件包括&#xff1a;(1)、支持CUDA的图形处理器&#xff0c;即由NVIDIA推…

​50年来最具影响力的十大编程语言!

作者 | javinpaul译者 | 馨怡责编 | 屠敏出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;【导语】“适者生存”的自然法则在应用竞争激烈的编程语言界同样适用&#xff0c;而在数百种编程语言中&#xff0c;相对而言&#xff0c;哪些最具影响力&#xff1f;哪些才是…

【基础篇】DatePickerDialog日期控件的基本使用(一)

项目步骤&#xff1a; 1.首先在Main.xml布局文件中添加一个Button标签&#xff0c;用来点击显示日期控件&#xff0c;Main.xml内容如下&#xff1a; <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android" xmlns:tools"http://sch…

PoPo数据可视化第9期

PoPo数据可视化 聚焦于Web数据可视化与可视化交互领域&#xff0c;发现可视化领域有意思的内容。不想错过可视化领域的精彩内容, 就快快关注吧 :)2018 in the Ito Design Lab&#xff08;视频内容请关注微信公众号浏览&#xff09;1900~2018年城市温度异常变化可视化Temperatur…

面向可解释的NLP:北大、哈工大等提出文本分类的生成性解释框架

作者 | Hui Liu, Qingyu Yin, William Yang Wang 译者 | Rachel编辑 | Jane出品 | AI科技大本营&#xff08;ID: rgznai100&#xff09;【导语】北大、哈工大和加州大学圣巴巴拉分校在 ACL 2019 的一篇论文中联合提出了一个全新的生成性解释框架&#xff0c;该框架能够对分类策…

pyramid参数

2019独角兽企业重金招聘Python工程师标准>>> 普通参数permission: 该view的访问权限&#xff0c;这个后续会具体介绍。attr: Pyramid默认调用的是view类的__call__函数&#xff0c;如果需要指定调用其他方法&#xff0c;通过attr指定。如attrindex。renderer: 指定构…