项目实战
未读1. 概述同样的接着之前的WebScoket,之前实现的是所有的接收者都能接收到,刚好最近写到了点对点通信的功能,就把WebScoket的点对点通信搞懂了。
2. 实现2.1 关键1websocket = new WebSocket("ws://localhost:8080/api/websocket/100");
这里是关键的,这里实现了注册一个websocket的sid为100的,点对点通信主要就是靠这个唯一标识的sid进行通信的,所以我们需要实现不同的多个sid进行发送消息。
2.2 实现由于需要使用的点对点通信,直接在发送的时候指定发送给谁就行:
1234567891011121314151617181920212223public void sendMessage(String message) throws IOException { // 构造JSON格式的消息 JSONObject jsonMessage = new JSONObject(); jsonMessage.put("sid& ...
1. 前言最近在完成学校的仿QQ实现的Android项目,写到了修改头像的部分,需要在前端提交一个头像文件,并且在后端存储到项目的resource/img下面,同时又能在前端中访问到这个图片下载下来节省每次访问的资源消耗,就想写以下如何访问到后端Spring项目中的图片资源。
2. layout布局写的一个简单的布局文件,只有一个显示图片的ImgView和一个刷新图片的按钮
12345678910111213141516171819202122232425262728293031<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.a ...
后端学习
未读0. 概述 本节主要实现功能,在网页中上传的图片存放到项目的resource/static/img下,同时图片传递回页面显示。
1. 环境依赖12345678<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
thymeleaf 是jsp中常用的一个东西,用来返回url地址,传递参数,还有一个web依赖 ...
后端学习
未读0. 前言在注册各种网站的时候,我们经常需要使用到短信验证码,可是个人开发的时候,在各大平台申请短信验证码的模板的时,往往需要已经上线的项目,这里找到一个容联云的网站,能够免费133天短信验证码测试。容联云,全球智能通讯云服务商 (yuntongxun.com)
1. api申请注册号账号后,我们需要创建一个应用
点击创建好的应用中的应用管理,获取其中的appID
在控制台首页保存好开发者账号id和token,外泄会导致账号金额被盗取,由于没有进行认证,所以我只能使用默认的3个测试号码
2. 创建spring项目创建一个普通的spring项目,点击最上方的开发文档SDK文档,参考其中的文档编写测试项目:Java SDK (yuntongxun.com)
2.1 导入依赖根据上方内容可以得知,我们需要在pom.xml中导入这个项目提供的一些依赖包,这里列出生成验证码用的hutool各种使用到的依赖包:
1234567891011121314151617181920212223242526272829<dependency> <groupId& ...
后端学习
未读0. 步骤
开启邮箱的 POP3/SMTP 服务。
新建 springboot 项目。
导入依赖。
配置配置文件。
编写 controller 测试接口。
ApiPost中测试
新建html网页测试
1. 开启邮箱的 POP3/SMTP 服务本次使用QQ邮箱,其他邮箱开启方式相同:
打开后生成授权码,会获得一个授权码,这个授权码很重要,后面会用到,生成后需要立刻保存,后面无法再次查询到
2. 新建 springboot 项目x项目结构:
使用application.yml和 application.properties 的区别体现在使用时yml的层级结构会更加的清晰
3. 导入依赖这里我导入两个依赖,分别是 spring-boot-starter-mail 和 hutool-all
123456789101112131415<!-- 邮箱验证码依赖 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId&g ...
后端学习
未读1. 前言用户登录几乎是一个线上系统必不可少且使用相对比较频繁的一个模块,为了防止恶意暴力尝试,防止洪水攻击、防止脚本自动提交等,验证码是一个较为便捷且行之有效的预防手段。
2. VerifyUtil图片绘制核心以下的代码都可以直接复制使用,可以在其中带有注释的地方修改验证码的复杂度:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541 ...
前端学习
未读1. 前言
ContentProvider属于 Android的四大组件之一,即内容提供者。
主要作用是进程间 进行数据交互 & 共享,即跨进程通信
ContentProvider的底层是采用 Android中的Binder机制
2. ContentProvider的使用2.1 使用方法
ContentProvider 是一种用于在应用之间共享数据的组件。实现一个 ContentProvider 时,必须重写以下方法:
onCreate()
这个方法在 ContentProvider 被创建时调用,通常用于初始化数据源。
query()
用于从数据源中查询数据。必须实现这个方法,以便其他应用可以检索数据。
insert()
用于向数据源中插入新数据。必须实现这个方法,以便其他应用可以添加数据。
update()
用于更新数据源中的现有数据。必须实现这个方法,以便其他应用可以修改数据。
delete()
用于从数据源中删除数据。必须实现这个方法,以便其他应用可以删除数据。
getType()
用于返回与特定 URI 相关联的数据类型。此方法不是必需的 ...
1. 概述WebSocket 协议在2008年诞生,2011年成为国际标准。现在所有浏览器都已经支持了。WebSocket 的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话。
WebSocket可以在浏览器里使用
支持双向通信
使用很简单
WebSocket 的其他特点:
建立在 TCP 协议之上,服务器端的实现比较容易。
与 HTTP 协议有着良好的兼容性。默认端口也是80和443,并且握手阶段采用 HTTP 协议,因此握手时不容易屏蔽,能通过各种 HTTP 代理服务器。
数据格式比较轻量,性能开销小,通信高效。
可以发送文本,也可以发送二进制数据。
没有同源限制,客户端可以与任意服务器通信。
协议标识符是ws(如果加密,则为wss),服务器网址就是 URL。
2. 使用2.1 构造函数**WebSocket()**构造函器会返回一个 WebSocket 对象。
语法1var aWebSocket = new WebSocket(url [, protocols]);
参数
url
要连接的 URL;这应该是 WebS ...
前端实例
未读一、环境准备1.1 创建vue工程1npm init vue@latest
1.2 安装插件1.安装element-plus
123451.1 执行命令: npm install element-plus --save1.2 在main.js中做如下配置 import ElementPlus from 'element-plus' import 'element-plus/dist/index.css' app.use(ElementPlus)
2.安装axios
1npm install axios
1.3 目录调整
删除components目录下的内容
删除App.vue中的内容,只保留script和template标签
2. 页面搭建2.1 文件介绍index.html是最初始的页面,可以在这里定义页面的title这类的页面基础标签,其中映入了一个叫App.vue的文件,所有的vue项目都是建立在这里html渲染的,如果在创建的vue项目的所有页面都有一个白框,只需要将index.html的margin设置为0px,因为自带的e ...
前端学习
未读1.Notification简单概述通知是 Android 在您的应用 UI 之外显示的消息,用于向用户提供提醒、来自其他人的通信或来自您的应用的其他及时信息。用户可以点击通知打开您的应用或直接从通知中执行操作。
2. 代码实现2.1 页面搭建123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:t ...







