-
go语言string转结构体的实现
在 Go 语言中,可以使用标准库中的 encoding/json 包将 JSON 格式的字符串转换为结构体. 假设有以下 JSON 字符串: { "name": "鸡哥", "age": 28, "gender": "男", "hobby": { "sing": "唱", "jump": "跳", "
-
Golang项目在github创建release后自动生成二进制文件的方法
目录 希望达到的效果 实现方式 希望达到的效果 工具类的Golang项目需要编译成二进制文件后在命令行中运行,所以希望在github里面创建一个新的release后能自动编译成针对各个平台的二进制文件,如下图所示: 实现方式 借助 GoReleaser 这款工具配合 github actions 可以很方便实现这种效果,下面讲解下具体实现方法. 首先需要在 Golang 项目的根目录创建 GoReleaser 配置文件 .goreleaser.yaml,内容如下: # This is an ex
-
解决selenium模块利用performance获取network日志请求报错的问题(亲测有效)
目录 报错翻译 报错原因 解决方法 已解决selenium模块利用performance获取network日志请求,抛出异常selenium.common.exceptions.InvalidArgumentException: Message: invalid argument: log type ‘performance’ not found 报错问题 一个小伙伴遇到问题跑来私信我,想用selenium模块利用performance获取network日志请求,但是发生了报错(当时他心里瞬间凉
-
5个可以在Golang中优化代码以提高性能的技巧分享
作为一名软件工程师,确保你的代码高效且性能良好是非常重要的.在Golang中,有几个最佳实践和技术可以用来优化你的代码,以获得更好的性能.这里有五个技巧可以帮助你开始工作: 1.明智地使用指针.Golang使用指针来引用内存位置.虽然指针在某些情况下很有用,但如果过度或不正确地使用,它们也会导致性能下降.例如,使用指针向函数传递大的结构或 slice 会导致不必要的内存分配和复制.相反,可以考虑通过值传递这些类型. // Bad: Passing a large slice by pointer
-
Spring中的事务隔离级别和传播行为
目录 传播行为 举个例子进行说明 1>PROPAGATION_REQUIRED 2>PROPAGATION_SUPPORTS 3>PROPAGATION_MANDATORY 4>PROPAGATION_REQUIRES_NEW 5>PROPAGATION_NOT_SUPPORTED 6>PROPAGATION_NEVER 7>PROPAGATION_NESTED 总结 Spring的事务隔离级别和事务的传播行为是面试中经常考察的问题,做个简单的总结. 传播行为 在
-
Springboot使用docker-compose实现动态配置过程
目录 使用docker-compose实现动态配置 例如 如图所示 总结 使用docker-compose实现动态配置 Springboot应用在打包的时候我们希望可以在项目启动的时候可以修改application.property或者yml中的配置:而不是在打包docker镜像的时候这个值确定后面不可以修改,这个时候可以通过yml提供的环境变量的功能来实现这个需求: 在yml文件中,通过${Envirment_variable}的方式可以获取系统环境变量中的值:于是可以通过把环境变量配置在do
-
golang与pgsql交互的实现
目录 1.目的 2.代码架构 3.代码展示 1.目的 通过读取配置文件获取pgsql用户名和密码及数据库和数据表,从而读取所需字段值. 2.代码架构 config/config.go:读取配置文件信息 config/config.json:配置文件 handle/handle.go:与pgsql数据库交互,获取所需数据 main.go:主函数 3.代码展示 config.go package config import ( "io/ioutil" "os&
-
Mybatis使用大于等于或小于等于进行比较
目录 前言 常见转义符 前提声明 使用CDATA 区段 测试 总结 前言 今天有一个需求,把之前的判断逻辑进行修改,之前我是用大于(>)小于(<)进行对比的,但是今天让改成大于等于(>=)和小于等于(<=)进行比较 本来以为是一个很简单的操作. 但是还是菜了不少坑的,今天就和大家一起分享下: 常见转义符 常见的一些转义符如下: 前提声明 首先我一开始是大于小于的,就是正常的这样的格式. 然后按照上面的一些转义符,换成ge,le 发现直接报错,或者就是编码不成功,至于这个错怎么解决,
-
利用Mysql定时+存储过程创建临时表统计数据的过程
1.mysql定时任务简单介绍 mysql的定时任务是使用event(事件)来实现的,自mysql5.1.6版本起,增加了这个功能 - 事件调度器(event scheduler),它可以精确到每秒钟执行一个任务,在一些对数据实时性要求比较高的场景非常使用,接下来我将用mysql的event事件来实现定时统计数据. 2.准备工作 (1)查看定时策略是否开启 show variables like '%event_sche%'; 执行结果如下 ON表示处于开启状态,如果是OFF则表示处于关闭状态,
-
浅析Spring 中 Bean 的理解与使用
目录 一.定义 二.控制反转(IoC) 1.什么是依赖注入与控制反转呢?先通过一个例子来理解一下 2.让 Spring 控制类构建过程 3.这就是 IOC 三. @Bean 注解的使用 1.使用说明 2.Bean 名称 2.1.默认情况下 Bean 名称就是方法名(首字母小写),比如下面 Bean 名称便是 myBean 2.2.@Bean 注解支持设置别名.比如下面除了主名称 myBean 外,还有个别名 myBean1(两个都可以使用) 2.3.@Bean 注解可以接受一个 String 数
-
Redisson分布式锁之加解锁详解
目录 引言 锁的可重入性 加锁 锁续命 释放锁 引言 2023的金三银四来的没想象中那么激烈,一个朋友前段时间投了几十家,多数石沉大海,好不容易等来面试机会,就恰好被问道项目中关于分布式锁的应用,后涉及Redisson实现分布式锁的原理,答不上来. 锁的可重入性 我们都知道,Java中synchronized和lock都支持可重入,synchronized的锁关联一个线程持有者和一个计数器.当一个线程请求成功后,JVM会记下持有锁的线程,并将计数器计为1.此时其他线程请求该锁,则必须等待.而该持
-
Vue.js React与Angular流行前端框架优势对比
目录 Vue.js.React和Angular对比 以下是Vue.js的代码示例: 以下是React的代码示例: 以下是Angular的代码示例: Vue.js.React和Angular对比 Vue.js.React和Angular都是流行的前端框架,它们都有自己的优势和劣势. 以下是它们的比较: Vue.js Vue.js是一个轻量级的前端框架,它的核心库只有18KB,因此整个框架的体积很小.Vue.js通过简单的API和组件化的架构,使得开发更加简单,易于上手和维护.Vue.js支持双向数
-
C++ Cartographer的入口node main详细讲解
目录 Run函数 读取配置参数 构建地图构建器 Node类的初始化 开始轨迹与结束轨迹 啃一下谷歌优秀的激光SLAM开源框架-Cartographer. 这个框架算法简单,但是程序部分太多需要学习的地方了.不论是整体框架的结构,还是数据的使用,都是非常优美的.不愧是大公司啊.接下来记录一下每天学习的内容和心得,督促自己坚持下去! node_main.cc是整个Cartographer程序的入口,用来调用整个Cartographer进程.以最基础的单线雷达和轮速计为例. 整体的代码开始是在Run函
-
Python一行代码识别增值税发票实现示例
目录 识别发票 注意事项 识别发票 录入发票是一件繁琐的工作,如果可以自动识别并且录入系统,那可真是太好了. 今天我们就来学习一下,如何自动识别增值税发票并且录入系统~ 识别发票的代码最简单,只需要1行代码,如下所示. # 导入potencent这个库,下载命令:pip install potencent import potencent # 调用增值税识别的功能 potencent.ocr.VatInvoiceOCR(img_path=r'C:\vx_CoderWanFeng\your_img
-
python调试模块ipdb详解
目录 1. 调试python 1.1 使用ipdb 1.2 常用命令 1. 调试python ipdb是用来python中用以交互式debug的模块,可以直接利用pip安装; 其功能类似于pycharm中 python控制台,而使用ipdb 的优点,便是直接在代码中调试,避免了在python控制台,或者重新设置一些简单变量. pip install ipdb 1.1 使用ipdb 当程序运行到ipdb.set_trace()的地方会自动进入debug模式. for i in range(5):
-
C++ std::thread 使用方法
目录 一.std::thread的构造和析构 二.std::thread的成员函数 三.线程间的通信 四.线程的异常处理 五.总结 总结: C++是一种高级编程语言,被广泛用于开发高性能.大规模.复杂的软件系统.其中一个强大的特性就是多线程编程,而std::thread是C++标准库提供的多线程支持的重要组成部分. std::thread是一个轻量级线程类,它允许程序员创建.启动.停止.等待线程.与其他多线程库不同,std::thread在运行时不需要显式地创建和销毁线程,而是通过构造和析构线程
-
python使用openai生成图像的超详细教程
OpenAI 是一个人工智能的工具包,包括神经网络.遗传算法和有限状态机等.使用python可以非常便捷的操作OpenAI的API.一下是OpenAI官网列举的功能DEMO 首先使用python的pip进行openai库的安装 pip install openai 在openai官网中找到自己需要测试的api文档 https://platform.openai.com/docs/guides/images/introduction 这里以图像生成示例 在做这一切之前首先得确保你安装了reques
-
react中context传值和生命周期详解
目录 context传值用途 Context传值优点 何时使用 Context ContextAPI 项目案例:主题色切换. 添加自定义颜色 添加监听context变化 类组件的生命周期 假设: 项目中存在复杂组件树: context传值用途 数据是通过 props 属性自上而下(由父及子)进行传递的,但这种做法对于某些类型的属性而言是极其繁琐的(例如:地区偏好,UI 主题),这些属性是应用程序中许多组件都需要的. Context传值优点 Context 提供了一种在组件之间共享此类值的方式,而
-
rust生命周期详解
目录 rust生命周期 借用检查 函数中的生命周期 手动声明生命周期 结构体中的生命周期 生命周期消除 三条消除原则 生命周期约束 静态生命周期 rust生命周期 生命周期是rust中用来规定引用的有效作用域.在大多数时候,无需手动声明,因为编译器能够自动推导.当编译器无法自动推导出生命周期的时候,就需要我们手动标明生命周期.生命周期主要是为了避免悬垂引用. 借用检查 rust的编译器会使用借用检查器来检查我们程序的借用正确性.例如: #![allow(unused)] fn main() {
-
流量触顶时代下如何看待 AI 和 ChatGPT
目录 引言 1.ChatGPT 2.谁将被 AI 取代? 3.AI 即未来 4.参与 AI 总结 引言 当下互联网和移动互联网的流量已经触顶,虽然偶尔还会出现一些爆款的产品,但是流量总量摆在那里,各个产品之间流量只是此消彼长而已.就互联网技术而言,现在大厂们出的互联网技术,基本是那种花很大力气但是收效并不大.在这种情况下,ChatGPT 或者 AI 会是下一个引爆点吗? 1.ChatGPT 首先,让我们来了解下 ChatGPT. ChatGPT 刚出来那会儿我就用了几次.当时我还调侃了一下, 客