Idea 关闭代码检查 idea 模糊搜索方法 全局设置打开新窗口 idea设置背景图片 idea 2022.2 一、关闭代码检查 1、路径是: File --- Settings --- Editor --- Inspections
二、模糊搜索方法 1、路径: CTRL + SHIFT + R 或者 双击 SHIFT , 选择 Symbols
三、 全局设置打开新窗口 例如我们打开新窗口时,maven配置会恢复 这时就需要对打开新窗口的设置进行修改 达到一个全局的目的。
四、设置背景图片 1、路径是: File | Settings | Appearance & Behavior | Appearance --- Background Image
2、设置后,效果如下:
分布式锁 一.为什么需要分布式锁二.分布式锁的基本原理三.分布式锁的实现形式1.使用 redis的set命令 四.使用Redisson1.添加pom文件2.配置redisson 五.Redisson-lock(重入锁)1.lock的两大特点2.看门狗的原理 六.Redisson-lock(读写锁)七.闭锁八.redisson信号量九.保证数据一致性 一.为什么需要分布式锁 在分布式的情况下,比如:会员服务,可能会有多个,然而单个服务的加锁行为,只能锁住一个服务,这样就会出现问题。
二.分布式锁的基本原理 三.分布式锁的实现形式 分布式锁重点:保证 加锁 和 解锁 的原子性。
1.使用 redis的set命令 set key value [EX seconds][PX milliseconds][NX|XX] // EX:过期时间单位是秒。 // PX:过期时间单位是毫秒。 // NX:key不存在,才会放。 // XX:key存在,才会放。 实现逻辑1 使用 1).获取锁(set lock ikun nx) 2).设置过期时间(Expire lock 60) 3).处理业务 4).释放锁 问题:如果在获取锁之后,如果断网了,那么就不会设置过期时间,就会造成死锁。 实现逻辑2 解决实现逻辑1的问题 1).获取锁和设置过期时间同时(原子性)set lock ikun ex 20 nx 2).处理业务 3).释放锁 问题:如果业务执行的时间大于设置的过期时间,然后锁已经释放,可能被别的线程获取到了,然后咱们再去执行删锁的时候,就会删除别人的锁。 实现逻辑3 解决实现逻辑2的问题 1).获取锁和设置过期时间同时(原子性)set lock uuid ex 20 nx 2).处理业务 3).判断是否是自己的锁(使用UUID) 4).释放锁 缺点:判断是自己的锁,然后准备去释放锁,然后锁过期自动释放,在3)完成,4)还没执行的时候,有线程又重新设置值,然后我们再去删锁,那我们就删了别人的锁。 实现逻辑4(使用redis和Lua脚本实现) 解决实现逻辑3的问题 1).获取锁和设置过期时间同时(原子性)set lock uuid ex 20 nx 2).
ONNX 是目前模型部署中最重要的中间表示之一,在把 PyTorch 模型转换成 ONNX 模型时,使用的 torch 接口是 torch.onnx.export
这里记录了 pytorch 模型转 onnx 时的原理和注意事项,还包括部分 PyTorch 与 ONNX 的算子对应关系。
1 torch.onnx.export原理 1.1 导出计算图 TorchScript 是一种序列化和优化 PyTorch 模型的格式,在优化过程中,一个torch.nn.Module模型会被转换成 TorchScript 的 torch.jit.ScriptModule 模型。通常 TorchScript 也被当成一种中间表示来使用。
torch.onnx.export中需要的模型实际上是一个torch.jit.ScriptModule。而要把普通 PyTorch 模型转一个这样的 TorchScript 模型,有跟踪(trace)和记录(script)两种导出计算图的方法。
如果给torch.onnx.export传入了一个普通 PyTorch 模型(torch.nn.Module),那么这个模型会默认使用 trace 的方法导出:
t o r c h . n n . M o d u l e → t o r c h . o n n x . e x p o r t (默认使用 t o r c h .
1.查询语句
SELECT login_time,last_batch,spid, blocked,object_name(C.resource_associated_entity_id) as TABLENAME,sp.dbid, DB_NAME(sp.dbid) AS DBName, program_name,waitresource,lastwaittype,sp.loginame,sp.hostname, a.[Text] AS [TextData], SUBSTRING ( A. TEXT,sp.stmt_start / 2,(CASE WHEN sp.stmt_end = - 1 THEN DATALENGTH (A. TEXT) ELSE sp.stmt_end END - sp.stmt_start) / 2) AS [current_cmd] FROM sys.sysprocesses AS sp OUTER APPLY sys.dm_exec_sql_text (sp.sql_handle) AS A ,sys.dm_tran_locks C WHERE spid > 50 AND blocked >0 AND request_session_id =spid AND resource_type = 'OBJECT' ORDER BY blocked DESC, DB_NAME(sp.dbid) ASC, a.
1 硬件平台 工作站考虑性价比和后续的扩展性,在二手平台搜索了几天,发现捡垃圾真香。
考虑到深度学习有多卡的需求,平台选择需要有足够多的 pcie 通道,平台选择了 Intel 十代 X 系列 CPU + X299 主板,能够提供 48 条 pcie lane,二手主板+CPU总价低于十四代 i9 CPU。大模型的显存需求比较大,魔改 22GB 显存的 2080ti 看起来很香,就先入手一块试试水,真香之后,再考虑组多卡(2080ti 支持 Nvlink)。另外内存硬盘电源这些还是要求稳,入手了新的。
配置如下:
CPU:i9-10940xGPU:魔改 22GB 2080ti内存:长城马甲条 32GBx2(平台最大支持8槽4通道256GB,后续需要再加)主板:技嘉x299x AORUS MASTER(四个 PCIE 插槽,可以拆分 x16x8x8x8)固态:2TB长城 m.2 SSD(平台可以插3块 m.2 固态,后续需要再加)电源:长城金牌 1250W 模组电源散热器:idcooling 360 水冷+120机箱风扇若干机箱:长城 KM7 塔式机箱 2 系统安装 作为开发机器用来自己捯饬,使用的是 Ubuntu 系统
使用的是 ultralOS 来制作 Ubuntu 的系统启动盘
ultralOS 下载
下载试用版即可。安装完成后,打开 ultralOS,选择继续试用。
当然,如果有能力,也支持购买完全版。ubuntu18.04 下载: 清华大学开源软件镜像站-ubuntu18.04使用 ultralOS 打开刚才下载的 iso 文件制作启动盘 启动 → 写入硬盘映像 → 写入方式: U S B − H D D + 或者 U S B − H D D → 便捷启动 → 写入新的驱动器引导扇区 → s y s l i n u x → 写入 \boxed{启动} \rightarrow \boxed{写入硬盘映像} \rightarrow \boxed{写入方式:USB-HDD+或者USB-HDD} \rightarrow \boxed{便捷启动} \rightarrow \boxed{写入新的驱动器引导扇区} \rightarrow \boxed{syslinux} \rightarrow \boxed{写入} 启动→写入硬盘映像→写入方式:USB−HDD+或者USB−HDD→便捷启动→写入新的驱动器引导扇区→syslinux→写入后续等待写入完成即可 安装系统,基本就是按部就班,网络上各种教程非常多,就不过多赘述了。
看书标记——R语言 Chapter 6 变量筛选技术6.1项目背景、目标和方案6.1.1项目背景6.1.2项目目标6.1.3项目方案 6.2项目技术简介6.2.1变量相关性1.定类变量和定类变量2.定序变量与定类变量3.定距(连续型)变量与定距变量4.定类变量与定序变量 6.2.2变量筛选1.基于变量距离的层次聚类2.基于变量距离的模糊聚类 6.2.3变量降维1.主成分分析(PCA)2.因子分析 6.2.4 R语言实例代码1.基于变量距离的层次聚类2.模糊聚类3.主成分分析4.因子分析 6.3项目实践6.3.1变量筛选6.3.2变量降维1.主成分分析2.因子分析 【R语言数据分析项目精解:理论、方法、实战】 Chapter 6 变量筛选技术 6.1项目背景、目标和方案 6.1.1项目背景 对底层数据做一次清洗和olap层中间数据的搭建,方便日后分析和选取。问题的提出:哪些变量是相关的?这些变量能否归类?
在统计建模中,筛选变量是前期最重要的步骤,原因:
(1)能提高魔性的稳定性
(2)能提高模型的预测能力
(3)能提高模型的运行效率
设计一套方法、开发一套程序以应对今后的变量筛选问题是有必要的, 可以给业务带来更好的解释和指引,帮助查看重要变量。发起一个内部技术项目:智能化筛选和划分变量。
6.1.2项目目标 (1)基于原始变量,探究各变量之间的关系
(2)开发变量筛选的通用模块
(3)规范变量变换和变量筛选流程。
6.1.3项目方案 (1)用变量相关系数,探究变量的相关性。
(2)对变量进行分析(变量筛选:距离聚类、模糊聚类等,从原始数据及中选出子集;变量降维:主成分分析、因子分析等,通过属性间的关系以组合的方式得到新的属性,改变了原本的特征空间)
(3)总结各方法的特点和使用情况,制作智能化工具。
6.2项目技术简介 (1)有较高缺失值的变量。缺失率大于阈值80%
(2)变量大部分为常数。逻辑变量除外
(3)变量站位过多,邮政编码类的变量需考虑剔除。
以上三种数据考虑直接剔除,然后将变量分为连续型和离散型,为下一步分析做准备。
6.2.1变量相关性 1.定类变量和定类变量 λ相关系数:用定类变量解释或预测定类变量时,以众数作为标准,这样可以减少预测误差。
2.定序变量与定类变量 关于属性值的顺序之分
同序对:某对样本在两个变量上的相对等级是相同的异序对:某对样本在两个变量上的相对等级是不同的同分对:两个样本在某个变量上是同分。
(1)Gamma相关系数
G = ( N s − N d ) / ( N s + N d ) , N s 表示同序对, N d 表示异序对 G=(N_s-N_d)/(N_s+N_d),N_s表示同序对,N_d表示异序对 G=(Ns−Nd)/(Ns+Nd),Ns表示同序对,Nd表示异序对
文章目录 前言一、开机初体验1.1、开机1.2、连接WIFI 二、基本功能测试2.1、主板命令行测试2.1.1、TF卡热插拔测试2.1.2、LED命令行测试2.1.3、数据库测试 三、基础编程实战3.1、交叉编译链部署3.2、温湿度传感器程序3.3、看门狗程序3.4、六轴传感器程序3.5、MQTT物联网 bug记录波特率设置错误,导致putty界面异常 前言 参考:飞凌嵌入式Elfboard ELF1开发板快速启动手册
chatgpt
本节内容比较简单,第一次用到6X的板子,本节内容主要是把操作手册上比较基础的内容重新跟着做了一遍。
一、开机初体验 1.1、开机 首先先拿USB-typeC连到电脑上看下串口状态:
很好,是COM7,已经被识别出来了。(这里需要说一句,这个端口每次开机识别出来可能都不一样哈,比如第二次开机就变成了COM8)
然后使用putty通过串口远程登陆开发板。按照英飞凌官方的手册,连接方式选择串口,波特率开到115200
之后再打开开发板的电源开关就能连接上了,putty按下回车出现如下画面:(这里有个小插曲,第一次我是先出现了putty画面然后再开的板子上的电源,这时候报错了一次。第二次我先开电源再连putty就一切正常了)
之后再输入账号密码就行了,就来到了我们最熟悉的LInux命令行界面了。
太久没玩linux了,首先测试几个之前做项目最喜欢的命令回忆一下。
(切换到根目录查看所有文件分布):cd / 和 ls
(查看系统的存储空间):df -h
输出中可以看出:
Mounted on是文件系统的挂载点。
根文件系统 /dev/root 总大小为 6.5G,已使用 788M,可用 5.4G,使用率为 13%。
/dev/mmcblk1p1 文件系统总大小为 500M,已使用 13M,可用 488M,使用率为 3%。
(查看当前路径) pwd
这里我们复习一下根目录下每个文件夹的作用:
bin: 存放系统启动和修复时使用的基本命令。
/etc: 包含系统的配置文件和子目录,其中存放了大多数系统-wide 的配置文件。
/lib: 存放系统启动时和运行过程中需要的共享库文件。
/media: 自动挂载的可移动媒体设备(例如USB驱动器、CD-ROM等)的挂载点。
/proc: 一个虚拟文件系统,提供对内核及进程信息的访问。
/sbin: 存放系统管理员使用的系统管理程序,这些程序不一定是普通用户必须使用的,但是对于系统的正常运行和维护是必需的。
/tmp: 用于存放临时文件的目录,重启系统时会清空该目录。
/var: 包含经常变化的文件,比如各种日志文件、数据库文件等。
/dev: 包含与设备相关的文件,每个设备都以文件的形式表示在这个目录中。
/home: 存放用户的主目录,每个用户通常有一个独立的子目录。
/lost+found: 在文件系统发生错误时,文件系统检查和修复工具(如fsck)将损坏的文件和目录片段放置在此目录。
/mnt: 用于手动挂载临时文件系统的目录。
/run: 用于存放系统运行时的临时数据,如PID文件和UNIX域套接字。
这里写目录标题 1. 什么是操作系统2. 主要功能3. 计算机的层状结构4. 什么叫做管理5. 总结6. 为什么要有操作系统7. 最后 1. 什么是操作系统 操作系统(英语:Operating System,缩写:OS)是一组主管并控制计算机操作、运用和运行硬件、软件资源和提供公共服务来组织用户交互的相互关联的系统软件程序。根据运行的环境,操作系统可以分为桌面操作系统,手机操作系统,服务器操作系统,嵌入式操作系统等。操作系统是人与计算机之间的接口,也是计算机的灵魂。
在计算机中,操作系统是其最基本也是最为重要的基础性系统软件。从计算机用户的角度来说,计算机操作系统体现为其提供的各项服务;从程序员的角度来说,其主要是指用户登录的界面或者接口;如果从设计人员的角度来说,就是指各式各样模块和单元之间的联系。事实上,全新操作系统的设计和改良的关键工作就是对体系结构的设计,经过几十年以来的发展,计算机操作系统已经由一开始的简单控制循环体发展成为较为复杂的分布式操作系统,再加上计算机用户需求的愈发多样化,计算机操作系统已经成为既复杂而又庞大的计算机软件系统之一。(来自百度百科讲解) 2. 主要功能 计算的操作系统对于计算机可以说是十分重要的,从使用者角度来说,操作系统可以对计算机系统的各项资源板块开展调度工作,其中包括软硬件设备、数据信息等,运用计算机操作系统可以减少人工资源分配的工作强度,使用者对于计算的操作干预程度减少,计算机的智能化工作效率就可以得到很大的提升。其次在资源管理方面,如果由多个用户共同来管理一个计算机系统,那么可能就会有冲突矛盾存在于两个使用者的信息共享当中。为了更加合理的分配计算机的各个资源板块,协调计算机系统的各个组成部分,就需要充分发挥计算机操作系统的职能,对各个资源板块的使用效率和使用程度进行一个最优的调整,使得各个用户的需求都能够得到满足。最后,操作系统在计算机程序的辅助下,可以抽象处理计算系统资源提供的各项基础职能,以可视化的手段来向使用者展示操作系统功能,减低计算机的使用难度。
操作系统主要包括以下几个方面的功能 :
①进程管理,其工作主要是进程调度,在单用户单任务的情况下,处理器仅为一个用户的一个任务所独占, 进程管理的工作十分简单。但在多道程序或多用户的情况 下,组织多个作业或任务时,就要解决处理器的调度、 分配和回收等问题 。
②存储管理分为几种功能:存储分配、存储共享、存储保护 、存储扩张。
③设备管理分有以下功能:设备分配、设备传输控制 、设备独立性。
④文件管理:文件存储空间的管理、目录管理 、文件操作管理、文件保护。
⑤作业管理是负责处理用户提交的任何要求。
(来自百度百科讲解)
我们用一句简单的话来描述操作系统:操作系统是一个进行软硬件资源管理的软件。
3. 计算机的层状结构 当前我们先讲解操作系统,驱动程序,底层硬件,这三个部分,对于用户,用户操作接口和system call这三个部分后序会讲到。
(1)底层硬件:包括网卡,硬盘,显示器等。底层硬件的结构是冯·诺依曼体系。
(2)驱动程序:驱动程序一般指的是设备驱动程序(Device Driver),是一种可以使计算机和设备进行相互通信的特殊程序。相当于硬件的接口,操作系统只有通过这个接口,才能控制硬件设备的工作,假如某设备的驱动程序未能正确安装,便不能正常工作。因此,驱动程序被比作“ 硬件的灵魂”、“硬件的主宰”、“硬件和系统之间的桥梁”等。 也就是说,最清楚硬件该怎么用的就是驱动程序,在计算机中真正让硬件工作的并不是操作系统,而是驱动程序,操作系统只是通过驱动程序操作的硬件。
4. 什么叫做管理 在我们生活中,无论是做什么事情,都存在两个关系
1.做决策
2.做执行
比如你中午要做糖醋排骨,早上要去买排骨。在这个之情当中,决策就是中午想做糖醋排骨,执行就是早上出去买排骨。
而所谓管理,就是能正确的做出决策。
而计算机中操作系统(管理者)扮演的就是做决策的角色。
硬件(被管理者)就是执行角色。
我们举一个在学校里的例子:
一个学校里面,有校长,辅导员,学生。这三个角色,谁是管理者,谁是被管理者呢?很明显校长就是那个管理者,而学生就是被管理者,而至于辅导员就是那个保证决策落地的一个角色。
那么作为被管理者,一般学生在学校里能见到管理者校长吗?显然是不能的,相信绝大部分的学生都不知道校长什么样子。那么问题就来了,既然管理者和被管理者一般见不到面,那么管理者到底是怎么做到把学校管理好的,是怎么把学生管理好的呢?所以管理的本质不在于见面。管理者只要知道你在学校里方方面面的数据拿到,管理者就可把你安排的明明白白的。所以管理者只要拿到被管理者的数据就可以把被管理者管理好。所以管理的本质并不是对人进行管理,而是对人的信息做管理。
上面说了管理者的核心工作是做决策,但是是不是可以乱决策啊,肯定是不能的,管理者是通过拿到的数据进行做决策。也就是依据数据做决策。
但是我都没有与校长见过面,也没说过话,他是怎么知道我在学校的信息。所以这个时候我们的辅导员就出来了,要说到出来同班同学我们在学校里第二个见面最多的那肯定是辅导员了,我们在大学四年的所有执行大多都是辅导员下发的,最常见的就是在聊天群里来一个“@全体成员”的消息了。所以管理者是怎么拿到我们的信息的,那就是通过辅导员拿到信息,因为辅导员天天跟我们见面,是不是叫你去办公室喝点茶,你的所有成绩,做了什么好事坏事辅导员都知道,所以校长只要找到辅导员就可知道我们所有的信息。拿到了信息就可以对我们做管理。
管理者在面对大量的被管理者的时候,数据量必然很大,对人的管理也转化为对数据的管理。面对如此庞大的数据,我们的管理者是怎么进行有效的管理呢?既然是对信息做管理,而每个学生的信息的属性都是相同的,比如身高,体重,年龄,数学成绩,专业成绩等,这些信息的属性都是相同的,那么我们就可以把这些信息放到一个表格中,表格的第一行对应者学生信息的属性,之后的每一行就代表每个学生的属性,这个时候对信息的管理就变成了对表格的管理。这样子管理者就可以知道每个学生的属性了。但是这样也有一个缺点就是面对这么庞大的数据量,想要查找一个学生的数据不比与大海捞针。这个时候管理者懂编程,管理者就像,能不能把这个工作交给计算机干,既然每个学生的信息属性都是一样的,那么我们就可以定义一个结构体,将信息的属性包含在结构体中。
struct student { char name[20]; int age; int grade; char score[20]; char other[20]; …… }; 这样只要实例化一个结构体就代表一个学生了。
一、字节码结构 回顾一下字节码
在 Java 中,JVM 可以理解的代码就叫做字节码(即扩展名为 .class的文件),它不面向任何特定的处理器,只面向虚拟机。Java 语言通过字节码的方式,在一定程序上解决了传统解释型语言执行效率低的问题,同时又保留了解释下语言可移植的特点。所以 Java 程序运行时比较高校,而且,由于字节码并不针对一种特定的机器,因此,Java 程序无需重新编译便可在多种不同操作系统的计算机上运行。
可以说 .class文件是不同的语言在 Java 虚拟机之间的重要桥梁,同时也是支持 Java 跨平台很重要的一个原因。
1.2 类文件结构 根据 Java 虚拟机规范,Class 文件通过 ClassFile定义,有点类似 C 语言的结构体。
魔数(Magin Number)
每个 Class 文件的头 4 个字节称为魔数,它的唯一作用是确定这个文件是否为一个能被虚拟机接受的 Class 文件。Java 规范规定魔数为固定值:0xCAFEBABE。如果读取的文件不是以这个魔数开头,Java 虚拟机将拒绝加载它。
Class 文件版本号 (Minor & Minor Version)
紧接着魔数的四个字节存储的是 Class 文件的版本号:第 5 个和第 6 个字节是次版本号,第 7 和第 8 个字节是主版本号。
每当 Java 发布大版本(比如 Java8,Java9)的时候,主版本号都会加 1。使用 javap -v命令来快速查看 Class 文件的版本号信息。
高版本的 Java 虚拟机可以执行低版本编译器生成的 Class 文件,但是低版本的 Java 虚拟机不能执行高版本编译器生成的 Class 文件。所以,我们在实际开发的时候要确保开发的 JDK 版本和生成环境的 JDK 版本保持一致。
概述 通常用的mysql都是innodb引擎;
一般在update的时候用id都会认为是给行记录加锁;
在使用非唯一索引更新时,会遇到临键锁(范围锁);
临键锁和表中的数据有关;
mysq版本:8
隔离级别:RR可重复读
mysql的lockMode 查看锁的活动信息
-- 当前活动的锁信息 SELECT * FROM performance_schema.data_locks; X,REC_NOT_GAP:X代表排他锁,REC_NOT_GAP代表行锁。综合起来就是对这条数据(索引项)添加了行级排他锁;IX:意向排它锁。上述案例中,给表添加了一个意向排它锁。当其他事务要对全表的数据进行加锁时,那么就不需要判断每一条数据是否被加锁了。X,GAP:X代表排他锁;GAP代表间隙锁(前开后开,即当前的lock_data中的索引值对应的id到最近的上一个id值之间的空隙被锁定了)supremum pseudo-record: 是 InnoDB 中定义的一种特殊记录,我们可以理解为 +∞ X,GAPdemo说明 假设表中的数据如下,age有普通BTree索引,然后事务1更新其中age为24的数据;
可以看到age=24对应的id=3加上了X排它锁,id=3的加上了行级排它锁;然后对age=24后面的age索引加了一个排他间隙锁,锁住了id范围为(3,5)时间的间隙;
综上获得了id范围为[3,5)之间的锁
-- 事务1操作 UPDATE user SET name = 'Vladimir' WHERE age = 24; 临键锁 假设有如下表;且表中数据如下;
-- 表结构如下 CREATE TABLE `user` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '主键', `name` varchar(255) DEFAULT NULL COMMENT '姓名', `age` int DEFAULT NULL COMMENT '年龄', PRIMARY KEY (`id`), KEY `idx_age` (`age`) ) ENGINE=InnoDB COMMENT='用户表'; 捞点网图,间隙锁可以看做一个左开右闭的区间
今天我们介绍一款非常轻便的远程连接工具SimpleRemote
该款软件支持RDP、SSH、Telnet三种连接方式,这款软件所占空间非常小,并且不需要安装也没有携带什么配置文件,只有一个3兆多的可运行程序,双击可运行程序就可以使用软件,所以就没有什么安装流程的介绍
软件的下载地址:https://github.com/beckzhu/SimpleRemote/releases
并且这款软件可运行程序的压缩文件我也会发布到我的资源里面,有需要的同学可以下载一下
下面我将通过使用该款软件的ssh服务去连接我的Linux服务器为大家简单的演示SimpleRemote的使用
使用ssh服务连接Linux虚拟机 首先Linux虚拟机需要下载ssh服务并进行相关的配置,可以参考下面的文章进行配置
vs2019及以上版本使用ssh服务连接Linux系统_vs ssh-CSDN博客
这里默认是配置好的
首先双击打开SimpleRemote软件
右键点击红色框区域,选择新建点击SSH连接
输入连接的名称
输入完成后,点击任意空白处即可,再次点击标签在右侧就会出现一些你需要设置的选项
在这里输入你要连接的虚拟机的IP地址以及所对应用户的密码
下面的就是对连接成功以后的一些设置选项,可以都使用默认的,也可以按照自己的要求进行修改
都设置完成后,双击标签或者右键标签点击连接都可以进行远程连接
到这里远程连接工具SimpleRemote的下载与使用就介绍完了
感谢观看学习,大佬们多多指点,愿明天的自己会感谢当下的努力!!!!
目录
一、引言
二、ChatGPT与量化交易的融合
三、实践应用:ChatGPT在量化交易中的成功案例
四、挑战与前景
五、结论
《AI时代Python量化交易实战:ChatGPT让量化交易插上翅膀》📚→ 当当 | 京东
亮点
内容简介
获取方式
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。 点击跳转到网站
一、引言 随着人工智能技术的不断进步,金融领域也经历着一场技术革命。量化交易,作为金融领域的一大分支,正逐渐受到AI技术的深刻影响。特别是近年来,ChatGPT等自然语言处理技术的崛起,为量化交易带来了前所未有的机遇。本文将深入探讨ChatGPT如何助力量化交易,以及这一结合所带来的挑战与前景。
二、ChatGPT与量化交易的融合 数据挖掘与信息处理:ChatGPT能够从海量的金融文本数据中提取有价值的信息,帮助量化交易者更准确地把握市场动态。策略开发与优化:基于ChatGPT的自然语言生成能力,交易者可以快速地测试和验证交易策略,提高策略开发效率。风险管理:ChatGPT能够识别和分析市场情绪、舆论趋势等,为风险管理提供有力支持。
三、实践应用:ChatGPT在量化交易中的成功案例 情感分析驱动的交易策略:利用ChatGPT分析社交媒体上的情感倾向,进而预测市场走势并制定相应的交易策略。新闻事件驱动的交易策略:通过ChatGPT实时解析新闻事件,捕捉市场反应并快速作出交易决策。智能投顾与客户服务:ChatGPT可以作为智能投顾,为客户提供个性化的投资建议和风险管理方案。 四、挑战与前景 数据安全与隐私保护:在使用ChatGPT处理金融数据时,如何确保数据安全和隐私保护是一个亟待解决的问题。技术成熟度与可靠性:目前ChatGPT在处理复杂金融问题时的准确性和稳定性仍需进一步提高。监管与合规:随着AI技术在金融领域的广泛应用,相关监管政策也需要不断完善以适应新技术的发展。 五、结论 ChatGPT等自然语言处理技术的兴起为量化交易带来了无限的可能。它们不仅提高了数据处理和策略开发的效率,还为风险管理和客户服务等领域注入了新的活力。然而,随着技术的不断进步和应用范围的扩大,我们也必须正视其中存在的挑战和问题,如数据安全、技术成熟度和监管合规等。通过不断地研究和探索,我们相信在未来,ChatGPT等AI技术将在量化交易领域发挥更加重要的作用,推动金融行业朝着更加智能化、高效化的方向发展。
《AI时代Python量化交易实战:ChatGPT让量化交易插上翅膀》📚→ 当当 | 京东 ChatGPT让量化交易师率飞起来!
金融量化交易新模式
一本专注于帮助交易师在AI时代实现晋级、提高效率的图书
书中介绍了如何使用 ChatGPT 来完成量化交易的各个环节
并通过实战案例展示了ChatGPT在实际量化交易中的应用方法
亮点 量化交易新模式:让量化交易更高效、更快捷、更完美。全流程解析:涵盖量化交易的不同应用场景,介绍从发量化交易Python语言基础、工具库、可视化库、数据采集与分析,再到量化交易、套利策略等关键环节。实战检验:ChatGPT结合多种量化交易工具及案例实操讲解,理解更加透彻。100%提高量化交易效率:揭秘ChatGPT与量化交易高效融合的核心方法论和实践经验。赠送资源:赠送教学视频及配套工具,供读者下载学习。
内容简介 本书是一本旨在帮助架构师在人工智能时代展翅高飞的实用指南。全书以ChatGPT为核心工具,揭示了人工智能技术对架构师的角色和职责进行颠覆和重塑的关键点。本书通过共计 13 章的系统内容,深入探讨AI技术在架构
设计中的应用,以及AI对传统架构师工作方式的影响。通过学习,读者将了解如何利用ChatGPT这一强大的智能辅助工具,提升架构师的工作效率和创造力。
本书的读者主要是架构师及相关从业人员。无论你是初入职场的新手架构师还是经验丰富的专业人士,本书都将成为你的指南,帮助你在人工智能时代展现卓越的架构设计能力。通过本书的指导,你将学习如何运用ChatGPT等工具和技术,以创新的方式构建高效、可靠、可扩展的软件架构。
同时,本书也适用于对架构设计感兴趣的其他技术类从业人员,如软件工程师、系统分析师、技术顾问等。通过学习本书的内容,你可以深入了解人工智能对架构设计的影响和带来的挑战,拓展自己的技术视野,提升对软件系统整体架构的理解和把握能力。
作者简介
关东升,一个在IT领域摸爬滚打20多年的老程序员、知名培训专家、畅销书作家,精通多种信息技术。曾参与设计和开发北京市公交一卡通系统、国家农产品追溯系统、金融系统微博等移动客户端项目,并在App Store发布多款游戏和应用软件。长期为中国移动、中国联通、中国南方航空、中国工商银行和天津港务局等企事业单位提供培训服务。先后出版了50多部IT图书,广受读者欢迎。
韩文锋,计算机专业本科,工程师,智慧农业和期货交易领域专家。擅长农业信息技术和期货交易风险管理,熟练使用Python、Java等编程语言。曾参与国家农产品溯源系统设计,利用区块链技术追溯农产品质量安全;主导开发iPad和Android客户端,实现消费者扫码查验源头信息。长期从事期货交易系统开发,掌握交易策略模型。利用机器学习算法,开发大豆期货交易分析系统,支持农业生产者规避市场风险。
目录
第1章ChatGPT、Python和量化交易概述 1.1 ChatGPT的应用领域2 1.2 Python编程在量化交易中的重要性和优势2 1.3 ChatGPT、Python和量化交易的结合价值和应用前景3 1.4 本章总结4 第2章 量化交易Python语言基础 2.1 Python解释器6 2.2 IDE工具7 2.2.1 安装Jupyter Notebook8 2.2.2 启动Jupyter Notebook9 2.
文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器,使用按键、LED模块等。
主要功能:
系统运行后,系统运行后,系统开始运行,K1键控制左转向灯;K2键控制右转向灯;K3键控制紧急情况灯;K4键控制刹车指示灯。
二、软件设计 /* 作者:嗨小易(QQ:3443792007) */ //系统数据设置 void sys_data_set(void) { u8 key=0; key=key_scan(0); //左转 if(key==KEY1_PRESS) { sys_ctrl.mode[0]=!sys_ctrl.mode[0]; if(sys_ctrl.mode[0]==1)//打开 { sys_ctrl.mode[1]=0;sys_ctrl.mode[2]=0;sys_ctrl.mode[3]=0; sys_ctrl.cnt=0; led_onoff(0); MsTimer2::start();//打开定时器 } } //右转 else if(key==KEY2_PRESS) { sys_ctrl.mode[1]=!sys_ctrl.mode[1]; if(sys_ctrl.mode[1]==1)//打开 { sys_ctrl.mode[0]=0;sys_ctrl.mode[2]=0;sys_ctrl.mode[3]=0; sys_ctrl.cnt=0; led_onoff(0); MsTimer2::start();//打开定时器 } } //紧急 else if(key==KEY3_PRESS) { sys_ctrl.mode[2]=!sys_ctrl.mode[2]; if(sys_ctrl.mode[2]==1)//打开 { sys_ctrl.mode[0]=0;sys_ctrl.mode[1]=0;sys_ctrl.mode[3]=0; sys_ctrl.cnt=0; led_onoff(0); MsTimer2::start();//打开定时器 } } //刹车 else if(key==KEY4_PRESS) { sys_ctrl.mode[3]=!sys_ctrl.mode[3]; if(sys_ctrl.mode[3]==1)//打开 { sys_ctrl.mode[0]=0;sys_ctrl.mode[1]=0;sys_ctrl.mode[2]=0; sys_ctrl.cnt=0; led_onoff(1); } } } //系统功能控制 void sys_fun_ctrl(void) { if(sys_ctrl.
环境配置: 编译环境:VS2019
创建两个项目:
设置Sandbox为启动项:
设置sandbox的配置属性-常规-输出目录\中间目录为如下:
预处理定义:为了配置一些只有windows才能用的函数。
设置YOTOEngin(我自己起的名字)配置属性-常规-输出目录\中间目录为如下:配置类型改为dll。
预处理定义:为了配置一些只有windows才能用的函数,并且在core.h中区分在此包中,是dll导出还是导入。
附加包含目录:用来包含#include<YOTO.h>
按下列格式创建文件:bin和bin-int为自动生成的文件:
架构理解:(个人理解) Sandbox和YOTOEngine是分离的,即引擎的功能单独写在YOTOEngine里,Sandbox只是功能的启动、配置器(客户端)。目前还不太懂为什么这么设计,只是个猜测,作者太菜啦。
代码部分: YOTOEngine: core.h:用于dll配置
核心:因为__declspec(dllexport) 只在window支持,且在不同包下dll导入导出不一样。为什么下面没有用import呢,这个我查了下,可以不用import,除了静态类。
(关于__declspec(dllimport)的理解-CSDN博客)
#pragma once //用于dll的宏 #ifdef YT_PLATFORM_WINDOWS #ifdef YT_BUILD_DLL #define YOTO_API __declspec(dllexport) #else #define YOTO_API __declspec(dllimport) #endif // DEBUG #else #error YOTO_ONLY_SUPPORT_WINDOWS #endif // YOTO_PLATFORM_WINDOWS Application.h:定义了一个Run函数,即启动程序,需要一个入口,继承此类
#pragma once #include"Core.h" namespace YOTO { class YOTO_API Application { public: Application(); virtual ~Application(); void Run(); }; //在客户端定义 Application* CreateApplication(); } Application.cpp
#include "Application.h" namespace YOTO { Application::Application() { } Application::~Application() { } void Application::Run() { while (true) { } } } EntryPoint.
"./":代表当前目录
"../":代表上一层目录
"/":代表根目录
路径作用 编写路径为了告诉编译器如何找到其他资源. 路径分类 1. 相对路径: 从 当前资源 出发找到其他资源的过程
req.getRequestDispatcher("index.jsp").forward(req, resp); 目前所在的目录 req.getRequestDispatcher("./index.jsp").forward(req, resp); 目前所在的目录 req.getRequestDispatcher("../index.jsp").forward(req, resp); 向上跳一级 参考:路径 . / 写和不写的区别在哪儿?
2. 绝对路径: 从 根目录 ( 服务器根目录 或 项目根目录 ) 出发找到其他资源的过程。
req.getRequestDispatcher("/index.jsp").forward(req, resp); 1、如果是请求转发: / 表示项目根目录 (WebContent)
2、如果是重定向,静态资源引用: 比如说< img src=""/> < scrip src=""/> < style/> location.href 等, / 表示 服务器根目录 (tomcat/webapps)
注意 如果客户端请求控制器,控制器转发到JSP后,JSP中如果使用相对路径,需要按照控制器的路径去找其他资源.。
保险办法:使用绝对路径,可以防止上面的问题.
技巧 只要以/开头的都是绝对路径 ,只要不以/开头的都是相对路径
除了请求转发 / 指向项目根目录,其余/ 都是指服务器根目录
常见 Q&A <url-pattern>/</url-pattern>和<url-pattern>/*</url-pattern>区别 <url-pattern>/</url-pattern> 不会匹配到.
自己fork的GitHub链接 ,准备复现
看书标记——R语言 Chapter 4 指标监控系统4.1项目背景、目标方案4.1.1项目背景4.1.2项目目标4.1.3项目方案 4.2项目技术理论简介4.2.1时间序列基本统计量4.2.2数据观测与描述性统计4.2.3随机性4.2.4周期性4.2.5节假日模式识别4.2.6建模数据集1.挑选建模数据集2.寻找离群点3.平滑离群点 4.2.7指标监控方法(不含节假日)1.ARIMA模型2.季节乘积ARIMA模型3.指数平滑4.质量控制图5.判断异常值的方法 4.2.9R语言实例代码5.均值-极差图 4.3项目实践4.3.1数据概览1.折线图 4.3.2节假日模式识别1.节假日模式分类2.转化率指标节假日模式识别 4.3.3模型数据集的建立1.挑选数据集 4.3.4指标监控(非节假日)1.数据概览2.乘积季节模型的建立3.三次指数平滑4.质量监控图2.差值建模3.模型拟合 【R语言数据分析项目精解:理论、方法、实战】 Chapter 4 指标监控系统 4.1项目背景、目标方案 4.1.1项目背景 指标过多,人工跟踪工作量大,效率低,所以希望可以针对重要指标制定一套自动报警机制,把每天有异常的指标自动输出,达到有效降低人力成本的目的,进一步的,可以在这方面通过历史数据对未来进行预测。
4.1.2项目目标 针对重要指标建立预测模型,通过预测模型的95%预测上下限建立监控范围。这样就可以一举两得,预测模型可以对未来进行预估,另外95%上下限建立的范围可以用于监控,若当天数值超出当天预测值的监控范围,则报警。最后,通过可视化工具前端展示整个需求就可以了。
4.1.3项目方案 分成两种情况,节假日和非节假日。非节假日建立平稳时期指标量化模型,节假日建立影响数据量化模型,然后加一个示性函数,得到包含节假日的综合量化模型。
4.2项目技术理论简介 4.2.1时间序列基本统计量 时间序列均值和方差、自协方差函数和自相关函数
4.2.2数据观测与描述性统计 1.折线图:时间序列数据最直观的统计图形,能很好地反映整个趋势的走向和周期性,从而为下一步的分析提供指引性的先验知识。
2.平稳性:(严平稳)当序列所有的统计性质都不会随着时间的推移而发生变化;(宽平稳)当序列的统计性质只与时间间隔的变化而发生变化,以上两种都说明序列稳定。
3.检验方法:正态性检验(序列服从正态分布,一定平稳,所以也叫平稳性检验,此时H0:数据服从正态分布);自相关图(自相关系数是否随着延迟期数的增加而迅速衰减到零,通常平稳序列具有6期以内的短期相关性,而后平稳);单位根检验(单位根检验有单位根说明序列非平稳,非平稳序列在d阶差分后成平稳序列,称序列d阶单整。DF检验用于一阶自相关模型检验,ADF检验用于高阶自相关、高阶移动平均的模型,PP检验用于扰动项之间存在序列相关,KPSS检验用于序列是平稳或趋势平稳,优于DF检验)
4.非平稳序列平稳化:不通过平稳性检验的就变换序列使得变化后的序列通过平稳性检验。常用的变换方法有:差分变换、对数变换、Box-Cox变换。
4.2.3随机性 序列平稳后需对数据的随机性进行检验,若数据是随机的,那么对数据的近一步探讨建模将会是没有意义的。
Barlett定理、LB随机检验统计量
4.2.4周期性 除平稳性和随机性外,周期性也是时间序列的一个基本属性,除了折线图外,周期性还可以在谱分析的周期图中查看,高峰值可计算周期。
4.2.5节假日模式识别 针对带有周期的时间序列数据,提出周期相同天的配对t检验识别算法,找出带有周期的时间序列数据节假日影响模式的识别方法,具体步骤如下:
1.取原始数据》2.标注可疑的异常日期(主观标记)》3.周期相同天分组》4.周期相同天分组均值和》5.配对样本t检验
4.2.6建模数据集 1.挑选建模数据集 根据行业特征选取适合进行数据分析的时间范围内 的数据。
2.寻找离群点 噪声数据会对指标序列产生不利影响,一般来说,指标的不稳定性主要有:框架程序出错、导致记录不全;ETL调度工具运行不稳,导致用户行为记录不全甚至缺失;业务本身导致指标异常(举办活动等);节假日因素。
先对“每周相同天定义”,同周期的第一天作为一个数据集,对每个集合使用检验方法(Grubbs检验、Dixon检验(小样本)、线箱图法(没有分布约束)和基于密度的局部异常因子法),挑出离群点。
3.平滑离群点 对于被剔除的离群点,通常会选择均值进行填补,具体的填补公式见P123详解。
4.2.7指标监控方法(不含节假日) 1.ARIMA模型 AR模型:自回归模型又称为中心化的AR§模型,平稳过程为因果平稳( AR模型的自相关系数是呈复指数衰减– 有拖尾性;AR模型的偏自相关系数有截尾性)MA模型:移动平均模型,MA模型总是平稳的,只有MA模型是依历史可逆的,该过程才具有预测意义(自相关系数q阶截尾;偏自相关系数q阶拖尾)ARMA模型:AR和MA的结合,所以性质与其相似差分运算:p阶差分(p次只跨一个时刻);k步差分(一次跨k个时刻)ARIMA模型:应用差分运算提取确定性信息后建模,所以ARIMA就是ARMA与差分运算的结合。 ARIMA模型模式识别
ACF法和PACF法判断p、q的值,或者AIC、BIC信息准则选取模型(autoarima中常用)
残差分析(真实值与模型预测值比较)
标准残差——时间图:零线上下无规则波动
标准残差的独立性检验:ACF图里滞后阶相关系数都在标准差范围内,则认为满足独立性检验。
残差随机性检验:广义方差检验和LB统计量检验(残差具有随机性则表明模型将规律部分全部提取)
正态性检验:Shapiro-Wilk检验和QQ图判断数据是否正态(残差符合正态分布,模型效果较好)
2.季节乘积ARIMA模型 季节乘积ARMA模型和季节乘积ARIMA模型(是否有差分运算的区别)
3.指数平滑 最近的数据对未来的影响更大,故应赋予较大的权重。指数平滑法本质上是对过去的数据进行加权和,距今越近,权重越高。
一次指数平滑:适用于序列无明显趋势,缺点是序列出现线性趋势时,一次指数平滑会出现严重滞后。
二次指数平滑:适用于序列存在线性趋势,缺点是序列出现周期性,则二次平滑预测序列偏差较大。
三次指数平滑:适用于序列存在线性及周期性趋势。累加和累乘,当季节变化在整个系列中大致恒定时,优选加法,而当季节变化与系列水平成比例变化时,优选乘法。
指数平滑对历史数据采取加权的方式比较符合实际情况,模型容易搭建,且具有自适应性,会根据数据变化自动变换。但是指数平滑模型对时间序列的转折点洞悉不足,适合短期预测。
4.质量控制图 用于监控产品零件生产品质
目录
一、开源项目
二、项目来源
三、使用框架 四、小程序功能
1、用户功能
2、管理员功能
五、使用docker快速部署
六、更新信息
审核说明
一、开源项目 猫咪信息点-ruoyi-cat: 1、一直想做点项目进行学习与练手,所以做了一个对自己来说可以完成的小程序(期间也是:边学边做的)2、看见猫友们积极采用着各种措施来帮助校园流浪猫,自己也想做一些力所能及的事情https://gitee.com/flyingpan/cat
视频展示:
猫咪图鉴小程序1.4.0_哔哩哔哩_bilibili猫咪图鉴小程序1.4.0——小程序已经运行1年多啦~1、一直想做点项目进行学习与练手,所以做了一个对自己来说可以完成的小程序(期间也是:边学边做的)2、看见猫友们积极采用着各种措施来帮助校园流浪猫,自己也想做一些力所能及的事情3、开源地址:https://gitee.com/flyingpan/cat-----------------微信小程序名称:猫咪信息点, 视频播放量 5、弹幕量 0、点赞数 1、投硬币枚数 0、收藏人数 0、转发人数 0, 视频作者 电石QwQ, 作者简介 不甘寂寞,相关视频:基于yolov8的多端检测系统(客户端 & 网页端) 毕设 开源,YOLOv8-PySide-GUI调用摄像头(比PPT还卡!),YOLOv8+LPRNet车牌定位与识别,若依vue前后端分离版——服务器快速部署(https),408-计算机网络-笔记分享,pyqt-auto-tool自己乱改的自动化小工具,yolov8客户端-简单修改,校园生活记录——自制数据库三级复习文档,wallpaper壁纸:××√(10.真人)少爷们,开机验货!,【免费】Adobe Photoshop-2024 PSAi版本安装包下载教程ps怎么下载https://www.bilibili.com/video/BV1GN4y1x7VK
二、项目来源 一直想做点项目进行学习与练手,所以做了一个对自己来说可以完成的小程序(期间也是:边学边做的)看见猫友们积极采用着各种措施来帮助校园流浪猫,自己也想做一些力所能及的事情 三、使用框架 小程序端
uniapp(Uview+ColorUi+前端铺子+图鸟UI)【vue2】
小程序后台
ruoyi-vue(前后端分类版)【springboot】【vue2】
四、小程序功能 1、用户功能 可搜索猫咪昵称可查看猫猫日常记录、校园猫猫的信息可登录、注销、更新自己的头像和昵称上传猫猫的日常上传新的猫猫进行猫脸识别(服务已经关闭,后续会开启) 2、管理员功能 可正常执行用户相关的所有功能可审核用户上传的猫猫日常记录(并选择是否用图片压缩、是否精选记录) 详情:贵师院猫咪图鉴-管理员手册
四、网页端管理功能 五、使用docker快速部署 待做
六、更新信息 1.0.0版本 功能说明
1、可以查看记录的猫咪图鉴
2、后台可以进行添加与修改
更新时间
2022.9.26
⚠️ 注意:
非常不建议对数据库里的数据直接进行删除操作,这样会导致数据库中id混乱
可以对要删除的数据,进行修改,实现新的数据覆盖,这样就可以避免删除操作(不过这一步的前提是:需添加一条新的数据)
1.0.1版本 修订补丁
1、添加了对信息的逻辑判断(原来为null的值,改为了“暂无”) 2、添加了小程序分享功能 3、解决了数据无法更新的问题
更新时间
2022.9.28
1.1.0版本 特性更新
1、增加了猫咪图鉴上传功能,其中只关于猫咪的信息
本文以一个完整实例的形式实现了视频文件上传的功能。虽然是比较基础的应用,仍有一定的参考价值。分享给大家供大家参考之用。具体方法如下:
首先,对PHP来说视频也属于文件,我们利用这个道理,可以通过与上传普通文件类似的方式实现上传PHP视频文件。不同的是视频文件一般较大,上传时间长,而php配置文件也对上传文件的大小有限制。
如果需要更好地用PHP实现文件上传,还是推荐使用FTP上传方式。
一、PHP处理代码如下:
<?php //设置最多允许10个文件同时上传 define('MUILTI_FILE_UPLOAD', '10'); //设置文件大小不超过5MB define('MAX_SIZE_FILE_UPLOAD', '500000' ); //设置上传文件的存储目录 define('FILE_UPLOAD_DIR', '/fileUploads'); //允许上传的文件扩展名 $array_extention_interdite = array( '.flv' , '.wmv' , '.rmvb' , '.php' , '.php3' , '.php4' , '.exe' , '.msi' , '.htaccess' , '.gz' ); //显示信息的公共函数 function func_message($message='', $ok=''){ echo '<table width="100%" cellspacing="0" cellpadding="0" border="0">'; if($ok == true) echo '<tr><td width="50%"> '.$message.'</td></tr>' ; else echo '<tr><td width="50%"> '.$message.'</td></tr>'; echo '</table>'; } //处理表单提交 $action = (isset($_POST['action'])) ?
需求
今天碰到个需求,客户要求在把微信公众号中的文章粘贴到富文本框时将文字向左对齐,图片居中
作为一个已经几年没碰前端的我来说有点头大,百度google了一番未果,只好自己研究去了
花了2个多小时终于搞定
话不多说,直接上代码
主要是 retainOnlyLabelPasted 和 filterRules
retainOnlyLabelPasted 会删掉所有乱七八糟的格式
filterRules 配置很多标签粘贴时的过滤规则,其中我配置了
img:function(node){ console.log(node.getAttr("style")); node.setAttr('style','display:block;margin:0 auto;'); console.log(node.getAttr("style")); }, 主要是重置一下style
其他的啥也没改
至于这个node怎么用可以去下面的API链接看
然后其他的配置都是官网默认的的
还有一个autotypeset 不知道做什么用的
设置的那些东西似乎没有生效
不过既然写好了就懒得改了
$(document).ready(function () {
postContent = UE.getEditor(“content”, {
autoHeightEnabled: false,
initialFrameHeight: KaTeX parse error: Expected '}', got '&' at position 932: ….browser.ie ? '&̲nbsp;' : '<br>'…block[tmpNode.tagName]) {
p.appendChild(tmpNode);
} else {
if (p.firstChild()) {
node.parentNode.insertBefore(p, node);
p = UE.uNode.createElement(‘p’);
} else {
node.parentNode.insertBefore(tmpNode, node);