toastify-js
无论掌握哪一种知识,对智力都是有用的,它会把无用的东西抛开而把好的东西保留住。——达·芬奇 分享一个前端消息提示组件库ToastifyJs https://github.com/apvarun/toastify-js 引入: 1npm install --save toastify-js 或者 123<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/toastify-js/src/toastify.min.css"><script src="https://cdn.jsdelivr.net/npm/toastify-js"></script> 使用: 1Toastify({ text: "This is a toast", duration: 3000 }).showToast(); 复杂例子: 123456789101...
spring bean销毁
天才只可以体会,但绝不能模仿。——狄德罗 对于spring bean销毁,可以使用两种方式: 1.实现org.springframework.beans.factory.DisposableBean接口,重写destroy方法 2.添加jakarta.annotation.PreDestroy注解 但是要注意,例如我这里的代码: 123456789101112131415161718192021222324252627282930313233343536import io.agora.rtm.RtmClient;import jakarta.annotation.PreDestroy;import jakarta.annotation.Resource;import lombok.extern.slf4j.Slf4j;import org.springframework.boot.context.properties.EnableConfigurationProperties;import org.springframework.context.annotation.Bean...
rabbitmq动态创建队列
谁都饶恕比谁都不饶恕同样残忍。——塞涅卡 分享一个动态创建rabbitmq队列的代码: 依赖: 1234<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId></dependency> 配置: 123456spring: rabbitmq: host: localhost port: 5672 username: xxx password: xxx 代码: 123456789101112131415161718192021222324252627282930313233343536373839404142434445import com.alibaba.nacos.common.utils.JacksonUtils;import lombok.extern.slf4j.Slf4j;import org.spr...
docker运行声网linux-server-sdk示例
人类的天性是容易忘记感激别人,所以,如果我们施一点点恩惠都希望别人感激的话,那一定会使我们大为头痛。——戴尔·卡耐基 首先是下载: 下载 - 云信令(原实时消息) - 文档中心 - 声网Agora Agora_RTM_SDK_for_Linux_Java_v1_5_1.zip其中有个samples/Agora-RTM-Tutorial-Java,我们将 libs/libagora_rtm_sdk.so libs/agora_rtm.jar 复制到samples/Agora-RTM-Tutorial-Java/lib下 然后在samples/Agora-RTM-Tutorial-Java下执行命令: 1mvn install:install-file -Dfile=lib/agora_rtm.jar -DgroupId=io.agora.rtm -DartifactId=agora-rtm-sdk -Dversion=1.0 -Dpackaging=jar 然后注意修改代码中的AppId和token 这里我的token采取服务端生成,因此我们还需要这一个jar 12345...
jetbrains-gateway远端开发
欠债是最不堪忍受的贫困。——托·富勒 今天下载了Jetbrains Gateway,没有用Jetbrains Toolbox的可以在官网下载: JetBrains Gateway - Remote Development for JetBrains IDEs 点击New Connection 输入IP和用户名 等待下载和配置 然后使用~可以远端直接DEBUG,对于开发期间连调和一些依赖Linux环境的场景都可以使用
gitlab备份还原
你所不理解的东西是你无法占有的。——歌德 首先进入Gitlab所在Docker容器 1docker exec -it <gitlab-container-name> /bin/bash 执行: 1gitlab-backup create 然后退出容器、拷贝 1docker cp <gitlab-container-name>:/var/opt/gitlab/backups /path/to/host/machine 还原的命令也很简单: 先停止 12gitlab-ctl stop unicorngitlab-ctl stop sidekiq 再还原 1gitlab-backup restore BACKUP=timestamp_of_backup 例如 1gitlab-backup restore BACKUP=1549251062_2019_02_04_11.8.1 然后重启即可 12gitlab-ctl reconfiguregitlab-ctl restart
对接声网rtc-restful-api
没有求知欲的学生,就像没有翅膀的鸟。——萨迪 代码如下: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131package com.example.agora.api.webclient;import com.alibaba.nacos.common.utils.JacksonUtils;import com.fasterxml.jackson.core.type.TypeReference;import com.example.agora.api.constant...
webclient在delete请求时携带request body
君子坦荡荡,小人长戚戚。——孔子 今天分享一个场景: 在对接声网rtc时,遇到一个请求,需要在delete请求中携带request body 所使用的请求框架是webflux的webclient 如果我们正常使用delete方法来构建请求,是无法通过bodyValue传入body的 但是这里我们可以直接使用: 123456789101112/** * 封禁用户权限-更新规则 * <a href="https://docportal.shengwang.cn/cn/All/rtc_channel_management_restfulapi?platform=Android#%E6%9B%B4%E6%96%B0%E8%A7%84%E5%88%99"> */public Mono<RtcAddDelKickRuleRes> delRtcKickRule(RtcDelKickRuleDTO dto) { dto.setAppId(appId); return webClient.method(HttpMethod.D...
emberjs
合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。——老子 分享一个js框架 https://emberjs.com/ Ember.js 是一个高效的、经过实战考验的 JavaScript 框架,用于构建现代 Web 应用程序。它包括构建可在任何设备上运行的丰富 UI 所需的一切。 它的语法: 123456789import Route from '@ember/routing/route';export default class IndexRoute extends Route { async model() { return { title: 'Grand Old Mansion' }; }} 对应的页面 1<h1>{{@model.title}}</h1> 使用的是.hbs后缀的模板文件,语法和vue有些异曲同工之妙,是一个很值得学习的库 其emberjs约定大于配...
webclient模板变量
过于重视行为规则、拘泥形式,往往在事业上错失良机。——培根 今天分享在使用webclient进行开发时的的一个小技巧 例如这个方法: 1org.springframework.web.reactive.function.client.DefaultWebClient.DefaultRequestBodyUriSpec#uri(java.lang.String, java.lang.Object...) 此处如果直接使用: 1webClient.get().uri("/dev/v1/kicking-rule?appid={}", appId) 或者 1webClient.get().uri("/dev/v1/kicking-rule?appid=%s", appId) 哪怕 1webClient.get().uri("/dev/v1/kicking-rule?appid=%s", appId) 都是不行的。。。 正确的方式应该是: 1webClient.get().uri("/de...
