golang 1.18新特性
golang 1.18版本有很大的变化,增加了泛型支持
泛型golang1.18就加入泛型,通过泛型的支持,将减少很多代码量,但也会带来不少可读性问题,因此泛型在生产中仍然需要谨慎使用,特别是目前golang的泛型还比较基础。
golang 泛型使用[]定义
123func print[v int | uint | uint32](params v) { fmt.Println(params)}
声明泛型类型上面的函数支持了三种类型[v int | uint | string],那如果我们要支持更多的类型,岂不是该函数会非常的长,并且不好维护,达不到不用的效果,例如其他的函数也要支持这样的类型。这时候可以声明泛型类型,格式如下:
123type Nums interface { int | uint64 | uint32}
函数修改为
123func print[v Nums](params v) { fmt.Println(params)}
这样把Nums当作函数的入参,调用方也不需要调整,这样如果后续需要支持更多的类 ...
部署开源大模型
使用ollama部署开源大模型
Docker部署ollama用多种部署方式
Linux部署
1curl -fsSL https://ollama.com/install.sh | sh
如果使用Docker部署,可以查看https://hub.docker.com/r/ollama/ollama
12# 仅使用CPUdocker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
使用GPU运行时
需要安装nvidia-container-toolkit
123456apt-get install -y nvidia-container-toolkitsudo nvidia-ctk runtime configure --runtime=dockersudo systemctl restart docker# 使用GPUdocker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ ...
laravel-mix
Laravel Mix 是 Laravel 框架提供的一种前端构建工具,它基于 webpack,并为前端开发提供了简化的 API。使用 Laravel Mix,你可以轻松地管理、编译和优化你的前端资源,如 JavaScript、CSS、Sass 等。
以下是关于 Laravel Mix 的介绍和使用方法:
特点和优势:
简化配置:Laravel Mix 提供了简单易用的 API,让你可以轻松配置和管理前端资源的编译过程,无需深入了解 webpack 的复杂配置。
支持多种预处理器:Laravel Mix 支持多种前端资源的预处理器,包括 JavaScript、CSS、Sass、Less 等,可以让你使用更灵活和高效的方式编写前端代码。
自动版本控制:Laravel Mix 会自动为编译后的前端资源生成唯一的版本号,帮助你避免浏览器缓存的问题,确保用户始终加载最新的资源。
代码分割和优化:Laravel Mix 内置了 webpack 的代码分割和优化功能,可以帮助你有效地管理和优化前端代码,提升页面加载速度和性能。
使用方法:
安装 Laravel Mix:首先确保你已经安装了 La ...
Redis详解
Redis介绍Redis是C语言编写的开源高性能键值对存储的内存数据库,可以用作数据库、缓存、中间件,是NoSQL(not-only sql,泛指非关系型数据库)的数据库。
Redis作为一个内存数据库。
性能优异,数据在内存中,读写非常快,支持并发10W QPS
单线程但进程,线程安全,采用IO多路复用。 IO 多路复用指的是 Redis 服务器使用一个单线程来处理多个客户端的连接和请求,通过事件驱动和异步非阻塞 IO 来提高系统的效率和可伸缩性。
丰富的数据结构,主要为5种:字符串(String)、哈希表(Hash)、列表(List)、集合(Set)、有序集合(Sorted Set)。还有3中新的数据类型:位图(Bitmap)、超日志(HyperLogLog)和地理位置(Geo)。
支持持久化,可以将内存中数据保存在磁盘中,重启时加载。
可以配置主从模式,或者分布式
可以作为消息中间件使用,支持发布订阅。
Redis为啥快官方提供的数据可以达到100000+的QPS(每秒内的查询次数)
Redis确实是单进程单线程的模型,因为Redis完全是基于内存的操作,CPU不是Redis ...
k8s部署mysql 8.0.26
k8s部署创建nas阿里云,文件存储。使用通用性NAS(容量最大10P)
创建k8s volume阿里云 k8s,先创建存储卷,选择NAS,配置挂载点,配置挂载路径
然后创建存储声明,使用刚才创建的存储卷
创建prod使用无状态模式。
镜像使用mysql/mysql-server, Tag使用8.0.26
配置环境变量
12MYSQL_ROOT_PASSWORDMYSQL_ROOT_HOST
配置启动参数
1["--default-authentication-plugin=mysql_native_password"]
使用挂载卷(挂载卷配置路径/var/lib/mysql),对应容器路径/var/lib/mysql
迁移导出原来数据
可以使用export导出,或者使用client工具导出.
由于原数据库使用阿里云RDS,不区分大小写。自己部署的区分大小写。
注意导出的数据库表名为小写,需要手动修改表名为大小。
导入,使用source
12345# 原数据库名称为 weixin-database; 8.0开始不能使用-作为表名c ...
安卓调试adb工具
ADB,全称Android Debug Bridge, 是Android SDK中的一个重要工具,起到调试桥的作用。它是一种功能多样的命令行工具,允许开发者和Android设备进行通信。
通过ADB工具,可以方便进行Android应用的开发和调试。
可以执行设备操作,获取相关设备信息,可以访问设备上的文件目录。
安装ADB下载ADB工具包,添加环境变量
如果使用mac,可以直接使用brew安装
连接设备执行命令:
123456adb connect [ip]adb connect 192.168.2.190# 管理员su
如果遇到中文乱码设置
修改 cmd 字符集
1chcp 65001
文件传输手机传到电脑
1adb pull /sdcard/文件名
电脑到手机
1adb push 文件名 /sdcard/(手机存储路径)
mysql优化cpu占用
原因由于数据量大,数据文件已经达到40多G。业务服务启动后,大量mysql请求,导致cpu,占用超过 100%。
12# 分析各表的数据占用SELECT table_name, data_length, avg_row_length, index_length, table_rows FROM information_schema.tables WHERE table_schema = 'mydb';
优化方案优化方式:
调整innodb_buffer_pool_size 由128M,调整为21G
增加慢查询日志,监控慢查询sql。
优化后,平均cpu占用,低于100%。
mysql conf调整Buffer Pool是MySQL中最重要的内存组件,介于外部系统和存储引擎之间的一个缓存区,里面可以缓存磁盘上经常操作的真实数据,在执行增删改查操作时,先操作缓冲池中的数据(若缓冲池没有数据,则从磁盘加载并缓存),然后再以一定频率刷新到磁盘,从而减少磁盘 IO,加快处理速度。
innodb_buffer_pool_sizeinnodb_buffer_pool_siz ...
IOT设备在线逻辑
判断设备是否在线,一般情况是通过发送心跳包来实现,超过设定的时间段而设备未回复,判断为设备离线
Nginx Gatway设备访问后台,默认url以device_connection_servic开头, 会转发后台device-connection-service,该服务使用GRPC协议
1234567891011121314151617181920212223 server { limit_req zone=reqlimit burst=100; listen 8082 ssl http2 so_keepalive=5:3:1; listen [::]:8082 ssl http2 so_keepalive=5:3:1; server_name localhost; ssl_certificate /etc/nginx/ssl/nginx.crt; ssl_certificate_key /etc/nginx/ssl/nginx.key; resolver 127.0.0 ...
Mqtt介绍及应用
介绍MQTT(Message Queuing Telemetry Transport)是一种轻量级的、基于发布/订阅模式的消息传输协议,专门设计用于物联网(IoT)和机器对机器(M2M)通信。MQTT 最初由 IBM 的 Andy Stanford-Clark 和 Arlen Nipper 在1999年开发,并于2013年成为 OASIS 标准。
以下是 MQTT 的一些关键特点和优势:
轻量级和低带宽消耗: MQTT 是一种轻量级的协议,具有小型的消息头,因此非常适合于带宽受限或网络连接不稳定的环境。它减少了网络流量和电池消耗,使其成为物联网设备的理想选择。
基于发布/订阅模式: MQTT 使用发布/订阅模式,其中客户端(发布者)发布消息到主题,而其他客户端(订阅者)订阅感兴趣的主题。这种模式使得多个客户端能够实时收到感兴趣的消息,实现了解耦和灵活性。
异步通信: MQTT 支持异步通信,发布者发布消息后不需要等待接收者的响应,从而提高了系统的响应速度和效率。
服务质量(QoS)支持: MQTT 提供了三种不同的服务质量级别(QoS):至多一次(QoS ...
导出mysql查询结果
要将MySQL查询结果导出到文件中,您可以使用以下方法之一:
方法1. 使用SELECT ... INTO OUTFILE语句:12345678vbnetCopy codeSELECT column1, column2, ...INTO OUTFILE '/path/to/output_file.csv'FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'LINES TERMINATED BY '\n'FROM your_tableWHERE your_condition;
在上述语句中,您需要将column1, column2, ...替换为您要导出的列名,/path/to/output_file.csv替换为要输出结果的文件路径,your_table替换为要查询的表名,your_condition替换为查询条件。该语句将查询结果以CSV格式输出到指定文件中。
方法2. 使用MySQL命令行工具的重定向操作符:1mysql -u userna ...