当前位置: 首页 > news >正文

Java [后端] 开发日常记录(1)

目录

1、常用的注解

2、对字符串的处理

3、对JSON串的处理

-- The End --


详细如下:

1、常用的注解

  • 若返回的字段中有NUll,则不返回 
  • @JsonInclude(value = JsonInclude.Include.NON_NULL)
//在实体类中添加这个注解
@JsonInclude(JsonInclude.Include.NON_NULL)
  • @RequestBody

常用来接收处理application/jsonapplication/xml等类型的数据 contentType  为  application/json类型

@RestController = @Controller + @ResponseBody

  • @requestParam

@requestParam主要用于在SpringMVC后台控制层获取参数,类似一种是request.getParameter("name"),
它有三个常用参数:defaultValue = "0", required = false, value = "isApp";defaultValue 表示设置默认值,required 通过boolean设置是否是必须要传入的参数,value 值表示接受的传入的参数类型。

  • @Synchronized

@synchronized 可以解决接口简单的并发,使用的时候只需要放在对应并发的接口或者代码块前面即可。 @synchronized 所处理的问题与锁(递归锁NSRecursiveLock)类似;可以防止不同的线程同时执行同一段代码。@synchronized 用着更方便,可读性更高, 自然效率会比较低。

递归锁: 同一个线程可以重复的加锁而不会导致死锁(互斥锁: 同一个线程重复加锁会导致死锁) ,加的递归锁全部执行完后 才会把资源让给别的线程。

@synchronized 递归锁详解_想名真难的博客-CSDN博客_递归锁原理

锁主要存在四种状态,依次是:无锁状态、偏向锁状态、轻量级锁状态、重量级锁状态,锁可以从偏向锁升级到轻量级锁,再升级的重量级锁。但是锁的升级是单向的,也就是说只能从低到高升级,不会出现锁的降级

  • @JsonFormat()

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")可以格式化时间,接口可以返回格式化后的时间。如:@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")

推荐使用:

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")

  • 后端数据校验(当然前端校验可能会更方便一些,可以前端校验的话,可以使用前端校验)

Validator + BindResult进行数据校验
Validator可以非常方便的制定校验规则,在实体类里需要校验的字段加上注解,每个注解对应不同的校验规则。

如:在实体类中的name添加

@ NotNull(message = "用户名不能为空") 
@ Size(min = 6, max = 11, message = "用户名长度必须是6-16个字符")
private String username;

然后在接口中添加 注解@Valid

/*** 用户新增*/
@PostMapping("/add")
public String addUser(@RequestBody @Valid UserInfo userInfo, BindingResult bindingResult) {// 如果有参数校验失败,会将错误信息封装成对象组装在BindingResult里for (ObjectError error : bindingResult.getAllErrors()) {return error.getDefaultMessage();}return userInfoService.insertUserInfo(userInfo);
}//当然也可以这样,就会直接把异常返给前端了
@PostMapping("/add")
public String addUser(@RequestBody @Valid UserInfo userInfo) {return userInfoService.insertUserInfo(userInfo);}

校验的结果就会返回到BindingResult中,有错误信息就直接返回给前端了。

当然前端校验也可能会方便一些,前端vue中数据校验如下,在form中添加:rules="rules",然后在中定义即可:

: rules = "rules"// 表单校验data() {return {rules: {phone: [{required: true,message: "联系电话不能为空",trigger: "blur"}, {pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,message: "请输入正确的手机号码",trigger: "blur"}],}}

@PathVariable
@PathVariable 映射 URL 绑定的占位符;带占位符的 URL 是 Spring3.0 新增的,通过 URL 中的 {xxxx} 占位符可以通过@PathVariable(“xxxx“) 绑定到操作方法的入参中。

具体实例如下:

    @PostMapping("/login/{name}/{pwd}")@ResponseBodypublic String loginTest(@PathVariable("name")String name, @PathVariable("pwd")String pwd){System.out.println("name = " + name);System.out.println("pwd = " + pwd);return "Success";}@DeleteMapping("/del/{ids}")public AjaxResult remove(@PathVariable Long[] ids) {System.out.println("ids = " + ids);return toAjax(deleteDataService.deleteDatainfoByIds(ids));}

@RequestHeader
获取发送请求地址的头部信息如:一些浏览器信息
Accept 浏览器可接受的MIME类型
Accept-Charset 浏览器支持的字符编码
Accept-Encoding 浏览器知道如何解码的数据编码类型(如 gzip)。Servlets 可以预先检查浏览器是否支持gzip并可以对支持gzip的浏览器返回gzipped的HTML页面,并设置Content-Encoding回应头(response header)来指出发送的内容是已经gzipped的。在大多数情况下,这样做可以加快网页下载的速度。
Accept-Language 浏览器指定的语言,当Server支持多语种时起作用。
Authorization 认证信息,一般是对服务器发出的WWW-Authenticate头的回应。
Connection 是否使用持续连接。如果servlet发现这个字段的值是Keep-Alive,或者由发出请求的命令行发现浏览器支持 HTTP 1.1 (持续连接是它的默认选项),使用持续连接可以使保护很多小文件的页面的下载时间减少。
Content-Length (使用POST方法提交时,传递数据的字节数)
Cookie (很重要的一个Header,用来进行和Cookie有关的操作,详细的信息将在后面的教程中介绍)
Host (主机和端口)
If-Modified-Since (只返回比指定日期新的文档,如果没有,将会反回304 “Not Modified”)
Referer (URL)
User-Agent (客户端的类型,一般用来区分不同的浏览器)

如下:红框即为可通过@RequestHeader获取的内容

 @RequestParam

是将请求URL的参数获取到;

具体如下:

	请求 URL:GET http://127.0.0.1:8081/applet/info?code=1234567890@GetMapping("/applet/info")public String loginTest(@RequestParam("code")String code){System.out.println("code = " + code);return "Success";}

@RequestParam(value = "queryName", required = false) String queryName
不传值后台也不会报错,默认为null,但是int类型不能为null,解决办法,修改成Integer 

@JsonIgnore 接口不返回指定的字段:

如:用户表查询的时候不返回密码等字段;

@JsonIgnoreprivate String password;

也可以这样的使用

//忽略,不返回预留字段一,预留字段二"resOne ", "resTwo"
@JsonIgnoreProperties(value = {"resOne", "resTwo"})

2、对字符串的处理

  • 字符串的截取、拼接、替换

截取:具体可使用subString()方法来进行字符串截取、或使用StringUtils方法、或使用split()+正则表达式来进行截取字符串;

//===============substring()==================    String str = "zbcad123456";int i;public String Aa = str.substring( int beginIndex);//该子字符串从指定索引处的字符开始,直到此字符串末尾;str = str.substring(i);//如:取第i个后面的字符public String Ab = str.substring( int beginIndex, int endIndex);//从指定的 beginIndex 处开始,直到索引 endIndex - 1 处的字符,该子字符串的长度为 endIndex-beginIndex;//参数说明:beginIndex – 起始索引(包括)、endIndex – 结束索引(不包括)。//如:取字符串的前i个字符str = str.substring(0, i);//从右边开始取i个字符str = str.substring(str.length() - i);str = str.substring(str.length() - i, str.length());//从右边开始去掉i个字符str = str.substring(0, str.length() - i);//从开始截取到中间某个指定字符  midChar (该字符出现的第一次)str = str.substring(0, str.indexOf("1"));System.out.println("str = " + str);//从开始截取到指定某段字符串结尾  midStrstr = str.substring(0, str.indexOf("a") + "a".length());System.out.println("str = " + str);//=======StringUtils方法===================================================//与str.subString()方法相同String str1 = "abcdefgsad123456";StringUtils.substring(str1, 2);StringUtils.substring(str1, 2, 8);//截取某个字符串之前的字符 ,第一个”d”开始StringUtils.substringBefore(str1, "d");//最后一个“d”开始StringUtils.substringBeforeLast(str1, "d");//截取某个字符串之后之前的字符StringUtils.substringAfter(str1, "d");StringUtils.substringAfterLast(str1, "d");//截取两个字符串之间隔的字符StringUtils.substringBetween(str1, "d");//第一个字符“d”与第一个字符“1”之间的字符串StringUtils.substringBetween(str1, "d", "1");//第一个字符“d”与第一个字符“1”之间的字符串  结果是数组StringUtils.substringsBetween(str1, "d", "1");//======================split()=====================//1. split() 主要是用于对一个字符串进行分割成多个字符串数组。标准形式为String[] strings = str.split("");//2. split() 方法中括号中的参数可以为一个也可以为多个,每个参数之间用 | 隔开。并且每个参数之间要紧挨着 |。如:这里有三个参数:空格、逗号、问号:String[] strings = string.split(" |,|\\?");//3. 像?.(点)((正括弧))(反括弧)*(星号)|(竖线)等特殊符号都要在其前面加上\\。//4. str.split("");使用默认的情况下,split()方法对每个字符进行分割。//split()和正则表达式String str2 = "A,B,C,D,E";String[] strs = str.split(",");for (int i = 0, len = strs.length; i < len; i++) {System.out.println(strs[i].toString());}

拼接:直接使用“+”即可;

替换:直接使用 replace()或replaceAll() 即可;

  • 使用NanoId生成ID

UUID和NanoID是开发中常用ID标识符之一;NanoId的特点:容量小、更安全、速度快、兼容性好、支持自定义字符、没有第三方依赖。

使用方法:

<!--导入 https://mvnrepository.com/artifact/com.aventrix.jnanoid/jnanoid -->
<dependency><groupId>com.aventrix.jnanoid</groupId><artifactId>jnanoid</artifactId><version>2.0.0</version><scope>runtime</scope>
</dependency>

添加工具类:


import java.security.SecureRandom;
import java.util.Random;public final class NanoIdUtils {public static final SecureRandom DEFAULT_NUMBER_GENERATOR = new SecureRandom();public static final char[] DEFAULT_ALPHABET = "_-0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();public static final int DEFAULT_SIZE = 21;private NanoIdUtils() {}public static String randomNanoId() {return randomNanoId(DEFAULT_NUMBER_GENERATOR, DEFAULT_ALPHABET, 21);}public static String randomNanoId(Random random, char[] alphabet, int size) {if (random == null) {throw new IllegalArgumentException("random cannot be null.");} else if (alphabet == null) {throw new IllegalArgumentException("alphabet cannot be null.");} else if (alphabet.length != 0 && alphabet.length < 256) {if (size <= 0) {throw new IllegalArgumentException("size must be greater than zero.");} else {int mask = (2 << (int)Math.floor(Math.log((double)(alphabet.length - 1)) / Math.log(2.0D))) - 1;int step = (int)Math.ceil(1.6D * (double)mask * (double)size / (double)alphabet.length);StringBuilder idBuilder = new StringBuilder();while(true) {byte[] bytes = new byte[step];random.nextBytes(bytes);for(int i = 0; i < step; ++i) {int alphabetIndex = bytes[i] & mask;if (alphabetIndex < alphabet.length) {idBuilder.append(alphabet[alphabetIndex]);if (idBuilder.length() == size) {return idBuilder.toString();}}}}}} else {throw new IllegalArgumentException("alphabet must contain between 1 and 255 symbols.");}}
}

3、对JSON串的处理

使用阿里巴巴的 fastjson 进行处理

//JSON字符串转换成JSON对象JSONObject JscodeParaseObject = JSONObject.parseObject(jsCode);String jscode = JscodeParaseObject.getString("jsCode");

这个就是可以拿到JSON串里面的值了。

解析json字符串内容(多层)

下面是实例:

{"msg": "操作成功","code": 200,"data": {"ChannelCode": "001","Body": {"dov": "000","doc": [{"id": "1","name": "java","url": "https://www.oracle.com/cn/java/technologies/downloads/","dept": {"remark": "xxxx","params": {},"orderNum": "xxxx","phone": "xxxx","children": []}},{"id": "2","name": "python","url": "https://www.python.org/downloads/"},{"id": "3","name": "C","url": "http://c.biancheng.net/"}]}}
}

java 处理

        //两个依赖包//com.alibaba.fastjson2.JSONArray;//com.alibaba.fastjson2.JSONObject;        String jsonString = "上面的Json串";System.out.println("jsonString = " + jsonString);JSONObject jsonObject = JSONObject.parseObject(jsonString);//解析【第一层节点】 获取第一层的集合内容String code = jsonObject.getString("code");System.out.println("code = " + code);//解析【第二层节点】 获取第二层的集合内容JSONObject A0 = jsonObject.getJSONObject("data");String ChannelCode = A0.getString("ChannelCode");System.out.println("ChannelCode = " + ChannelCode);//解析【第三层节点】 获取第三层的集合内容JSONObject Ai = A0.getJSONObject("Body");String dov = Ai.getString("dov");System.out.println("dov = " + dov);//解析【第四层节点】 获取第四层数组内容JSONArray A1 = Ai.getJSONArray("doc");//创建List nameList = [java, python, C]List<String> nameList = new ArrayList<String>();//对doc的数据进行循环,第四层数组中集合的内容for (int i = 0; i < A1.size(); i++) {JSONObject jsonObject1 = A1.getJSONObject(i);String name = jsonObject1.getString("name");System.out.println("name = " + name);nameList.add(jsonObject1.getString("name"));}System.out.println("nameList = " + nameList);

4、Map和Json转换

1、Map => Json

有如下两个常用方法:

        Map<String, Object> data = new HashMap<>();data.put("userId", sqJhyNedis.getReceiver());data.put("title", sqJhyNedis.getTitle());data.put("content", sqJhyNedis.getContent());System.out.println("data = " + data);//将map集合中的数据转成json格式//【方法一】使用net.sf.json.JSONObject包JSONObject mapToJson1 = JSONObject.fromObject(data);System.out.println("mapToJson1 = " + mapToJson1);//【方法二】使用org.json.JSONObject包JSONObject mapToJson2 =new JSONObject(data);System.out.println("mapToJson2 = " + mapToJson2);

2、Json => Map

具体的方法如下:

        //将json格式转成Map集合String jsonStr="{\"releaseTime\":\"xxxxxxxxxx\",\"title\":\"xxxxxxxxxx\",\"userId\":\"xxxxxxxxxx\",\"content\":\"xxxxxxxxxx\"}";ObjectMapper objectMapper = new ObjectMapper();Map<String, Object>  mapData =  new HashMap<>();mapData =objectMapper.readValue(jsonStr, HashMap.class);System.out.println("mapData = " + mapData);//Map mapData1 =objectMapper.readValue(jsonStr, Map.class);//System.out.println("mapData1 = " + mapData1);

-- The End --

相关文章:

Java [后端] 开发日常记录(1)

目录 1、常用的注解 2、对字符串的处理 3、对JSON串的处理 -- The End -- 详细如下&#xff1a; 1、常用的注解 若返回的字段中有NUll&#xff0c;则不返回 JsonInclude(value JsonInclude.Include.NON_NULL) //在实体类中添加这个注解 JsonInclude(JsonInclude.Include.NON…...

【Spring】Spring DI(依赖注入)详解——自动装配——手动装配与自动装配的区别

在spring开发中&#xff0c;依赖注入&#xff08;Dependency Injection&#xff0c;DI&#xff09;是实现松耦合和高内聚设计的重要模式。它使得对象的创建和管理与其依赖关系分离&#xff0c;从而提高了代码的可维护性、可测试性和灵活性。Spring框架通过IoC&#xff08;控制反…...

科普时刻 | 3D-IC设计:芯片集成的创新方法

技术的进步推动了日益复杂和密集的集成电路&#xff08;IC&#xff09;不断发展。为了满足对高性能和节能设备不断增长的需求&#xff0c;行业已转向3D-IC设计。3D-IC在消费类电子产品、电信、计算和汽车等众多行业都有广泛的应用。 什么是3D-IC技术&#xff1f; 3D-IC技术是…...

自研国产零依赖前端UI框架实战009 数组相关方法和新增修改功能实现

前言 我们已经实现了用户管理相关的页面,为此也封装了很多的组件. 按照原本的计划, 我们还要封装一些常用的操作数组的方法. 将元素插入数组的任意位置 // 将元素插入数组的指定位置 const insert (arr, // 数组element, // 元素index, // 指定索引 ) > {if (index &l…...

DBeaver连接OceanBase数据库

OceanBase分Oracle租户模式和mysql租户模式&#xff0c;一般企业常用的是Oracle住户模式&#xff0c;下面介绍下DBeaver连接OceanBase Oracle租户模式下的数据库 DBeaver 标签栏 - 数据库 - 驱动管理器 新建 OB 驱动 填写如下参数 一般拿到的ob连接信息如下 Oceanbase数据库 服…...

活动预告 |【Part1】Microsoft Azure 在线技术公开课:基础知识

课程介绍 参加“Azure 在线技术公开课&#xff1a;基础知识”活动&#xff0c;培养有助于创造新的技术可能性的技能并探索基础云概念。参加我们举办的本次免费培训活动&#xff0c;扩充自身的云模型和云服务类型知识。你还可以查看以计算、网络和存储为核心的 Azure 服务。 活…...

傲雷亮相2024中国时尚体育季(珠海站),展现户外移动照明风采

2024年12月28-29日&#xff0c;2024中国时尚体育季&#xff08;珠海站&#xff09;国家级轮滑比赛在珠海金山体育公园成功举办。作为户外创新型移动照明领域的领导品牌&#xff0c;傲雷受邀参加了本次珠海金湾运动生活嘉年华的展览单元&#xff0c;与众多户外运动品牌同台展示。…...

LangChain4j与Elasticsearch:构建高效的语义嵌入存储

LangChain4j与Elasticsearch&#xff1a;构建高效的语义嵌入存储 一、LangChain4j与Elasticsearch集成概述 1.1 LangChain4j简介 LangChain4j是一个为Java开发者设计的开源库&#xff0c;旨在简化大型语言模型&#xff08;LLM&#xff09;在Java应用程序中的集成。它提供了与…...

IO Virtualization with Virtio.part 1 [十二]

久等了各位&#xff01; 本篇开始讲解 IO 虚拟化中的 virtio&#xff0c;我会以 Linux 的 IIC 驱动为例&#xff0c;从 IIC 驱动的非虚拟化实现&#xff0c;到 IIC 驱动的半虚拟化实现&#xff0c;再到最后 X-Hyper 中如何通过 virtio 来实现前后端联系&#xff0c;一步步把 v…...

单元测试4.0+思路总结

Jmockit使用笔记_增加代码覆盖率_覆盖try catch_使用new MockUp私有方法-CSDN博客 一般使用new MockUp模拟被测试代码中的私有方法(常用&#xff09; 使用new Expetations模拟被测试代码中的方法?...

微信小程序中遇到过的问题

记录微信小程序中遇到的问题&#xff08;持续更新ing&#xff09; 问题描述&#xff1a;1. WXML中无法直接调用JavaScript方法。2. css中无法直接引用背景图片。3. 关于右上角胶囊按钮。4. 数据绑定问题。5. 事件处理问题。6. 关于movable-view组件的问题7. 关于设置宽度后设置…...

气象数据Grib及Python绘图

文章较长&#xff0c;却将所有常见的气象数据类型进行了详细的介绍&#xff0c;对各种方法的优劣势进行了详细分析&#xff0c;相信对于阅读者来说会有一定程度的帮助 目录 GRIB 数据格式简介 使用Python处理Grib文件 法1&#xff1a;使用pygrib库 法2&#xff1a;使用cf…...

Vue el-data-picker选中开始时间,结束时间自动加半小时

效果 思路 查阅elemnet plus官网&#xff0c;日期时间选择器type"datetimerange"这个选中开始时间并没有对应事件会被触发&#xff0c;因此思路更换成type"datetime"的两个组成一起可以通过监听开始时间v-model的值变化更新结束时间的值。 代码 日期时间…...

mac下载Homebrew安装nvm

通过Homebrew安装 - 国内下载地址 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"安装nvm brew install nvm 配置nvm环境变量 export NVM_DIR“$HOME/.nvm” [ -s “/usr/local/opt/nvm/nvm.sh” ] && . “/usr/…...

模型并行、数据并行、流水线并行以及混合并行的适用场景、优劣

模型并行、数据并行、流水线并行以及混合并行的适用场景、优劣 数据并行 适用场景:适用于模型规模相对较小,能够在单个计算设备(如 GPU)上完整运行,但训练数据量巨大的情况。例如在大规模图像分类任务中,常见的卷积神经网络模型(如 ResNet、VGG 等)在处理大规模图像数据…...

【容器化技术 Docker 与微服务部署】详解

容器化技术 Docker 与微服务部署 一、容器化技术概述 &#xff08;一&#xff09;概念 容器化技术是一种操作系统级别的虚拟化方法&#xff0c;它允许将应用程序及其依赖项&#xff08;如运行时环境、系统工具、库等&#xff09;打包成一个独立的、可移植的单元&#xff0c;这…...

MySQL——数据类型

一、常见的数据类型及分类 其中上述的数值类型包含了整形和浮点型&#xff0c;文本、二进制类型主要是字符串类型。 整数类型&#xff08;Integer Types&#xff09;&#xff1a; TINYINT&#xff1a;范围为-128到127或0到255&#xff08;无符号&#xff09;&#xff0c;用于…...

基于傅立叶神经网络(FNN)与物理信息神经网络(PINN)求解泊松方程(附Pytorch源代码)

基于傅立叶神经网络(FNN)与物理信息神经网络(PINN)求解泊松方程 一、引言 偏微分方程(Partial Differential Equation, PDE)在科学与工程领域有着广泛的应用。传统数值方法(如有限差分法、有限元法)在求解这类问题时,尽管已经非常成熟,但随着问题复杂度的增加,其计…...

FastExcel:超越EasyExcel的新一代Excel处理工具

简介 FastExcel是由原EasyExcel作者在阿里巴巴宣布停止维护EasyExcel之后推出的升级版框架。它继承了EasyExcel的所有优点&#xff0c;并且在性能和功能上进行了显著的提升和创新。 FastExcel的特点 高性能读写&#xff1a;FastExcel专注于性能优化&#xff0c;能够高效处理…...

项目优化性能监控

目录 1. 性能平台搭建 1.1 影响性能的关键要素 1.2 压力测试 1.3 压力测试指标 1.4 Jmeter 1.5 Jmeter常用插件 1.6 性能关键指标 1.7 服务器硬件资源监控 1.8 系统负载:load average 1.9 搭建压测监控平台 1.10 梯度压测&#xff1a;分析接口性能瓶颈 2. 项目优化…...

linux装git

前言 以 deepin 深度系统为例&#xff0c;安装命 令行版 Git 非常简单。 安装 注意&#xff1a;需要输入账号密码&#xff0c;否则无法进行。 打开终端&#xff0c;执行如下命令即可。 sudo apt-get install git成功 如下图所示&#xff0c;输入 git &#xff0c;命令识别即…...

2024 年度总结

时光荏苒&#xff0c;2024 年即将画上句号&#xff0c;回顾这一年的写博历程&#xff0c;有付出、有收获、有成长&#xff0c;也有诸多值得回味与反思的瞬间。 一、内容创作 主题涉猎&#xff1a;这一年&#xff0c;我致力于探索多样化的主题&#xff0c;以满足不同读者群体的…...

实验八 指针2

7-1 利用指针返回多个函数值 分数 30 全屏浏览 切换布局 作者 陈晓梅 单位 广东外语外贸大学 读入n个整数&#xff0c;调用max_min()函数求这n个数中的最大值和最小值。 输入格式: 输入有两行&#xff1a; 第一行是n值&#xff1b; 第二行是n个数。 输出格式: 输出最大…...

python修改ppt中的文字部分及插入图片

批量修改ppt中的某个模块&#xff0c;或者批量制作奖状等场景会用到&#xff1b; import os import pandas as pd from pptx import Presentation from pptx.util import Inchesfilepath/Users/kangyongqing/Documents/kangyq/202303/分析模版/批量制作/file1时段预警_副本.pp…...

C进阶-字符串与内存函数介绍(另加2道典型面试题)

满意的话&#xff0c;记得一键三连哦&#xff01; 我们先看2道面试题 第一道&#xff1a; 我们画图理解&#xff1a; pa&#xff0c;先使用再&#xff0c;pa开始指向a【0】&#xff0c;之后pa向下移动一位&#xff0c;再解引用&#xff0c;指向a【1】&#xff0c;a【1】又指向…...

Github - 如何提交一个带有“verified”标识的commit

Github - 如何提交一个带有“verified”标识的commit 前言(Why) 今天在Github上浏览某项目的commit记录的时候发现&#xff0c;有的commit记录带有verified绿色标识&#xff0c;有的带有橘色的Unverified标识&#xff0c;还有的什么都不显示。 既然我是根正苗红的作者(bushi)…...

充电桩语音提示IC方案-支持OTA远程更换语音WT2003H让充电更智能

随着新能源汽车产业的蓬勃发展&#xff0c;充电桩作为电动汽车能量补给的关键设施&#xff0c;其智能化、人性化设计日益成为行业关注的焦点。在这一背景下&#xff0c;WT2003H4-16S语音芯片方案的推出&#xff0c;无疑为充电桩的智能化升级注入了新的活力。该方案不仅提升了充…...

[2474].第04节:Activiti官方画流程图方式

我的后端学习大纲 Activiti大纲 1.安装位置&#xff1a; 2.启动&#xff1a;...

开源的Vue低代码表单设计器 form-create-designer v3.2.9 版本发布,新增10多种功能

form-create-designer 是一款开源的低代码表单设计器&#xff0c;通过数据驱动表单渲染。可以通过拖拽的方式快速创建表单&#xff0c;提高开发者对表单的开发效率&#xff0c;节省开发者的时间。并广泛应用于在政务系统、OA系统、ERP系统、电商系统、流程管理等领域。 项目采…...

0042__【小沐学OpenGL】Ubuntu环境下glfw的安装和使用

【小沐学OpenGL】Ubuntu环境下glfw的安装和使用_ubuntu glfw-CSDN博客 OpenGL 打开绘制窗口 学习笔记_glfwmakecontextcurrent-CSDN博客...

第一节:电路连接【51单片机+A4988+步进电机教程】

摘要&#xff1a;本节介绍如何搭建一个51单片机A4988步进电机控制电路&#xff0c;所用材料均为常见的模块&#xff0c;简单高效的方式搭建起硬件环境 一、硬件清单 ①51单片机最小控制模块 ②开关电源 ③A4988模块转接座 ④二相四线步进电机 ⑤电线若干 二、接线 三、A49…...

k8s 部署meilisearch UI

https://github.com/riccox/meilisearch-ui 拉取镜像 sudo docker pull riccoxie/meilisearch-ui:latestk8s 部署 apiVersion: v1 kind: Service metadata:name: meilisearch-uinamespace: meilisearch spec:type: NodePortselector:app: meilisearch-uiports:- port: 24900…...

在基于Centos7的服务器上启用【Gateway】的【Clion Nova】(即 ReSharper C++ 引擎)

1. 检查启动报错日志&#xff0c;目录在 ~/.cache/JetBrains/CLion202x.x.x/log/backend.202x-xx-xx_xxxx.xxxx-err.log 2. 大致可能有两种报错 a. Process terminated. Couldnt find a valid ICU package installed on the system. 这个报错只需要装一下 libicu-devel 包即可…...

【Rust自学】7.4. use关键字 Pt.1:use的使用与as关键字

喜欢的话别忘了点赞、收藏加关注哦&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 7.4.1. use的作用 use的作用是将路径导入到当前作用域内。而引入的内容仍然是遵守私有性原则&#xff0c;也就是只有公共的部分引入进来才…...

HTML5实现喜庆的新年快乐网页源码

HTML5实现喜庆的新年快乐网页源码 前言一、设计来源1.1 主界面1.2 关于新年界面1.3 新年庆祝活动界面1.4 新年活动组织界面1.5 新年祝福订阅界面1.6 联系我们界面 二、效果和源码2.1 动态效果2.2 源代码 源码下载结束语 HTML5实现喜庆的新年快乐网页源码&#xff0c;春节新年网…...

C++新特性||线程协程(代码解析1)

原文https://blog.csdn.net/ke_wu/article/details/144807820?sharetypeblogdetail&sharerId144807820&sharereferPC&sharesourceke_wu&spm1011.2480.3001.8118 #ifndef ZERO_THREADPOOL_H #define ZERO_THREADPOOL_H#include <future> // 用于…...

《成瘾-在放纵中寻找平衡》

安娜伦布克&#xff08;Anna Lembke&#xff09;是美国著名的精神病学家、成瘾医学专家以及《多巴胺国度》&#xff08;Dopamine Nation&#xff09;的作者。她在书中深入探讨了现代社会中的成瘾问题&#xff0c;并结合科学研究与临床经验&#xff0c;揭示了为什么现代人更容易…...

Docker搭建Skywalking

Docker搭建Skywalking 虚拟机IP&#xff1a;192.168.0.109Nacos服务地址&#xff1a;http://192.168.0.109:8848/nacosMySQL服务&#xff1a; IP&#xff1a;192.168.0.109端口&#xff1a;3306用户名&#xff1a;root密码&#xff1a;root ElasticSearch服务&#xff1a; IP&a…...

Vue axios 异步请求,请求响应拦截器

在 Vue.js 中使用 axios 进行网络请求是非常常见的做法&#xff0c;因为它提供了比原生的 Fetch API 更丰富的功能&#xff0c;并且更易于处理错误和配置。结合 Axios 的拦截器功能&#xff0c;你可以对所有的请求或响应进行预处理&#xff0c;比如添加认证头信息、统一处理错误…...

解决 ffmpeg “Unknown encoder ‘hevc_nvenc‘“

目录 项目场景: 问题描述 原因分析: 解决方案: 项目场景: ffmpeg 剪切视频 问题描述 详细报错: [vost#0:0 @ 0x46ae00] Unknown encoder hevc_nvenc 原因分析: ffmpeg 安装错误 解决方案: 重新安装ffmpeg: conda install ffmpeg 检查当前安装的 FFmpeg 是否支…...

Kafka安全优化文档:漏洞修复到安全加固

文章目录 1.1.漏洞修复1.1.1.Apache Kafka反序列化漏洞1.1.2.pm2-kafka代码执行漏洞1.1.3.Apache Kafka安全绕过漏洞1.1.4.Apache Kafka Distribution - Schema Repository跨站请求伪造漏洞1.1.5.Apache Kafka输入验证错误漏洞的补丁1.1.6.Apache Kafka信息泄露漏洞1.1.7.Apach…...

Django 中数据库迁移命令

在 Django 中&#xff0c;python manage.py makemigrations、python manage.py sqlmigrate polls 0003 和 python manage.py migrate 是与数据库迁移相关的重要命令。它们的作用和对应内容如下&#xff1a; 1. python manage.py makemigrations 功能: 此命令会根据你的模型文…...

2024 高通边缘智能创新应用大赛智能边缘计算赛道冠军方案解读

2024 高通边缘智能创新应用大赛聚焦不同细分领域的边缘智能创新应用落地&#xff0c;共设立三大热门领域赛道——工业智能质检赛道、智能边缘计算赛道和智能机器人赛道。本文为智能边缘计算赛道冠军项目《端侧大模型智能翻译机》的开发思路与成果分享。 赛题要求 聚焦边缘智能…...

前端超大缓存IndexDB、入门及实际使用

文章目录 往期回顾项目实战初始化表获取列表新增表的数据项获取详情根据ID获取详情根据其他字段获取详情 删除数据 总结 往期回顾 在之前的文章中&#xff0c;我们介绍了IndexDB vs Cookies vs Session这几个的对比&#xff0c;但是没有做实际项目的演示&#xff0c;今天我们用…...

[创业之路-229]:《华为闭环战略管理》-5-平衡记分卡与战略地图

目录 一、平衡记分卡 1. 财务角度&#xff1a; 2. 客户角度&#xff1a; 3. 内部运营角度&#xff1a; 4. 学习与成长角度&#xff1a; 二、BSC战略地图 1、核心内容 2、绘制目的 3、绘制方法 4、注意事项 一、平衡记分卡 平衡记分卡&#xff08;Balanced Scorecard&…...

形象地理解UE4中的数据结构 TLinkedListBase

大家都熟知链表&#xff0c;但不一定能快速看懂UE4中的数据结构。 TLinkedListBase表示“链接”中的一个结点&#xff0c;有三个成员&#xff1a; 一、ElementType Element; 表示具体的业务&#xff0c;例如int链条中的一个整数。 二、NextLink 表示 “下一个Node”&#…...

如何在谷歌浏览器中创建安全的密码

在数字化时代&#xff0c;网络安全变得日益重要。谷歌浏览器提供了多种工具和功能帮助用户创建和管理强密码&#xff0c;确保在线账户的安全。本文将简要介绍几种方法&#xff0c;帮助您在谷歌浏览器中创建和管理安全密码。 一、启用自动填充功能 确认密码保存功能已开启&…...

Nginx1.20.2-Linux-安装

文章目录 1.下载压缩包1.官网下载2.找到1.20.23.百度网盘 2.Linux安装1.搭建gcc环境2.上传到 /usr/local/nginx1.20.23.解压1.解压到当前目录2.删除压缩包 4.配置Nginx的编译路径1.进入nginx-1.20.22.执行内部的脚本&#xff0c;指定编译路径为/usr/local/nginx 5.编译并安装6.…...

网页版3D预览插件3dfindit

需求背景 如果你需要在浏览器上显示3D的模型&#xff0c;那么你可以看看这个3dfindit。不需要专业的代码开发&#xff0c;上传模型或者图片就行&#xff0c;他会自动生成3D预览。 效果图 // 效果图预览地址https://ksb-embedded.partcommunity.com/3d-cad-models/boa-compact…...

产品经理2025年展望

产品经理作为连接技术、设计与市场需求的桥梁&#xff0c;在快速变化的商业环境中扮演着至关重要的角色。展望2025年&#xff0c;随着技术的不断进步和消费者需求的日益多样化&#xff0c;产品经理的工作将面临更多挑战与机遇。 一、人工智能与自动化深化应用&#xff1a; 到…...