在这篇文章发出时 Meta 发布了 Llama 3.1 这次发布
北京时间,2024 年 7 月 23 日 23 点,Meta 正式发布了其最新的开源模型 - Llama 3.1, 包含8B、70B 和 405B 三个尺寸,最大上下文提升到了 128k。
其中,405B 是其迄今最强大的模型,从评分上看,超过了 GPT-4 0125,和 Claude 3.5 不相上下。
趣闻:被偷跑
昨天下午,405B 的 Llama 疑似在 Hugging Face 被偷跑,并在 Twitter 上引起了一小波的轰动(但这个链接已经访问不到了)。更有好事者将其转化成了磁力链接,大概 800G 大小
上个版本是 Llama-3
3个月前,Meta 开源了 Llama 3 的 8B 和 70B 模型。具体可参见之前的报道:全网首发,Meta Llama-3 全方位详解
第一部分 这次发布 开源的Llama 3.1 包含8B、70B 和 405B 三个尺寸,性能提升,最大上下文为 128k。
Llama 3.1 老模型,新升级
之前推出的 8B 和 70B 版本的 Llama-3 迎来了全新升级,变成了 Llama-3.
本文作者系360奇舞团前端开发工程师
前言 自ChatGPT发布以来,大语言模型(Large language model, LLM)就成了AI乃至整个计算机科学的话题中心。学术界,工业界围绕大语言模型本身及其应用展开了广泛的讨论,大量的新的实践层出不穷。
由于LLM对计算资源的需求极大,有能力部署大语言模型的公司和实验室一般通过搭建集群,然后开放API或者网页demo的方式让用户可以使用模型。在人们纷纷发挥想象力尝试各种prompt与模型对话的时候,我们也注意到在一些应用场景中,出于定制化、个性化或者隐私性的目的,人们想要自己在各种终端设备中本地运行大语言模型,不需要/不希望连接互联网或者依赖于服务器,例如
1、智能汽车的终端可以对驾驶员的操作习惯定制化
2、智能家居的终端可以对户主的生活习惯定制化
3、手机游戏,或者主机游戏中NPC的对话可以根据玩家的行为而改变
4、PC端的应用希望本地部署聊天机器人,但是用户的显卡可能是N卡,A卡,或者集成显卡,安装了CUDA/Vulkan/OpenCL驱动
希望能够让每个人都可以开发,优化和部署AI大模型,让它工作在每个人都能方便获得的设备上。
如何做 我们采用了机器学习编译技术来解决这一类问题。
MLC LLM 是一个用于大型语言模型的机器学习编译器和高性能部署引擎。该项目的使命是让每个人都能够在每个人的平台上原生地开发、优化和部署 AI 模型。
本页是一个快速教程,介绍如何尝试 MLC LLM,以及使用 MLC LLM 部署您自己的模型的步骤。
MLC介绍 这里稍微讲解了一些MLC的基本概念,以帮助我们使用和了解 MLC LLM。MLC-LLM 由三个不同的子模块组成:模型定义、模型编译和模型运行。
MLC LLM 的三个独立子模块
1、Python 中的模型定义。MLC 提供各种预定义架构,例如 Llama(例如 Llama2、Vicuna、OpenLlama、Wizard)、GPT-NeoX(例如 RedPajama、Dolly)、RNN(例如 RWKV)和 GPT-J(例如MOSS)。开发人员可以仅使用纯 Python 定义模型,而无需接触编码。
2、Python 中的模型编译。模型由TVM Unity编译器编译,其中编译配置为纯 Python。MLC LLM 将基于 Python 的模型量化导出到模型库并量化模型权重。可以用纯 Python 开发量化和优化算法,以针对特定用例压缩和加速 LLM。
3、不同平台的模型运行。每个平台上都提供了 MLCChat 的变体:用于命令行的C++ 、用于 Web 的Javascript 、用于 iOS 的Swift 和用于 Android 的Java,可通过 JSON 进行配置。开发人员只需熟悉平台即可将 MLC 编译的 LLM 集成到他们的项目中。
01
—
学习路线图 基础了解 目标: 理解人工智能、机器学习、深度学习的基本概念。
资源: 在线课程(如Coursera, edX上的入门课程)、博客文章、YouTube视频。
专业知识 目标: 深入了解大型语言模型(如GPT-4)和人工智能生成内容的工作原理。
资源: 阅读相关的学术论文、技术博客(如OpenAI、Google AI Blog)、专业书籍。
实践应用 目标: 学习如何实际使用这些技术。
资源: 参与在线编程课程,使用开源工具(如TensorFlow, PyTorch)进行实践。
行业趋势 目标: 跟踪和了解当前的行业趋势和最新的研究成果。
资源: 订阅相关的新闻信件、参加行业会议和研讨会、加入专业社区(如LinkedIn群组、Reddit论坛)。
案例研究 目标: 通过分析具体案例,理解技术在不同行业的应用。
资源: 阅读行业报告、分析具体的应用案例(如自然语言处理在医疗、金融领域的应用)。
相关解释说明 人工智能基础: 理解人工智能的基本原理和发展历程,包括机器学习和深度学习的基础知识。
大型语言模型: 学习如何构建和训练大型语言模型,例如GPT系列,以及它们是如何生成文本的。
人工智能生成内容: 理解如何使用语言模型等人工智能技术生成内容,包括文本、图像和音频。
实践应用: 实际操作和实验,通过编程和使用AI工具来加深对技术的理解。
行业动态: 保持对最新科技动态的了解,跟踪行业的变化和创新。
案例分析: 研究不同行业中人工智能的实际应用,了解其优势、挑战和影响。
这个学习路线图适用于初学者和希望深入了解这个领域的人士。随着技术的不断发展,建议持续关注最新的趋势和研究成果。
02
—
领域重要概念 根据麦肯锡的方法论来熟悉一个行业,通常涉及到对行业关键概念的深入理解。对于大型语言模型(LLM)和人工智能生成内容(AIGC)领域,以下是一些重要概念及其简要解释:
人工智能(AI) 人工智能(AI): 使机器模拟人类智能的技术。
机器学习(ML): 使机器通过数据学习的AI分支。
深度学习(DL): ML的一种,使用多层神经网络。
监督学习: ML中,模型通过标记数据学习。
非监督学习: ML中,模型通过未标记数据学习。
强化学习: ML中,模型通过奖励学习。
神经网络: 模拟人类大脑结构的算法。
卷积神经网络(CNN): 主要用于图像处理的DL模型。
循环神经网络(RNN): 处理序列数据(如时间序列)的DL模型。
小程序的配置文件 对于有过服务端开发的程序员来说,肯定对“约定优于配置”并不陌生,这是一种按约定编程的软件设计范式,目的在于减少软件开发者做决定的数量。而微信小程序正好与这种软件设计范式的理念相反,小程序是一种“配置优于约定”的软件设计范式,处于对安全性的考虑,开发者必须在相应的配置文件中对小程序部分界面和功能进行配置,例如窗口的导航栏设计、底部tabBar设计等。本章主要对微信小程序的全局、页面等配置文件做详细的讲解,通过学习配置文件的配置项,可以掌握更多的小程序功能设计。
1 全局配置文件 小程序的全局配置文件控制着小程序的全局表现,所有的配置项都在项目根目录下的app.json文件中进行配置。全局配置文件的内容是一个JSON对象,涵盖了小程序的页面路径、窗口表现、底部tab栏、默认启动页、网络超时时间等几十项配置信息。
1.1 页面路径配置 pages属性用于配置小程序的所有页面路径,该配置项用于指定哪些页面可以被显示。pages属性的值为字符串类型的数组,数组元素是对应页面的访问路径。小程序的每个页面都是一个文件夹,页面的文件夹中都由.wxml、.wxss、.json、.js这四种文件组成,一般会将文件夹和四个文件的文件名设置为相同的名字,效果如例1所示。
【例1】小程序文件目录
├── app.js ├── app.json ├── app.wxss ├── pages │ │── index │ │ ├── index.wxml │ │ ├── index.js │ │ ├── index.json │ │ └── index.wxss │ └── logs │ ├── logs.wxml │ └── logs.js │ └── logs.json │ └── logs.wxss └── sitemap.json 在pages属性中定义页面路径时,要包含文件名称,但是不需要写文件的扩展名,小程序框架会自动找到对应的.wxml、.wxss、.json、.js四个文件进行处理。pages具体配置信息如例2所示。
【例2】pages页面路径配置
{ "pages":[ "pages/index/index", "pages/logs/logs" ] } pages中配置的路径都可以在小程序中被访问到,如果未在app.json文件中配置entryPagePath(默认启动页)属性的话,小程序会按照pages数组中的第一项作为默认首页。如果在项目中手动创建页面文件的话,pages数组的元素内容也会随之自动增加,但是如果手动删除了某个页面文件时,还需要手动删除pages数组中对应的元素。我们还可以在pages中添加一个页面路径元素,小程序开发者工具就会自动创建该页面的文件夹和四个文件,只要对小程序中的页面做了新增和删除操作,都需要对pages数组进行修改。
1.2 启动首页配置 entryPagePath属性用于配置小程序的默认启动路径,即小程序的默认首页。该属性的值为字符串类型的页面路径,配置的路径必须在pages属性中已经存在。默认启动路径配置的代码如例3所示。
【例3】配置默认启动路径
{ "pages":[ "pages/index/index", "
一、基本概述 1.总体概览 ELK由ElasticSearch、Logstash、Kiabana三个开源工具组成。
ElasticSearch :数据存储和搜索Logstash :日志收集和格式化处理Kiabana:对数据进行可视化处理 进行日志处理分析,一般需要经过一下几步:
(1)将日志进行集中化管理
(2)将日志格式化(Logstash)并输出到Elasticsearch
(3)对格式化后的数据进行索引和存储(Elasticsearch)
(4)前端数据的展示(Kibana)
2.Elasticsearch Elasticsearch用于数据的存储和搜索,稳定,可靠,快速,较好的水平扩展能力。
Elasticsearch核心概念
(1)接近实时(NRT):速度响应快
(2)集群(cluster):一个或者多个节点产生,通过选举产生,选择奇数台,防止脑裂
(3)节点(node):一台单一的服务器,多个节点为一个群集,每个节点都加入Elasticsearch。
(4)索引(index):类似于数据库中的“库”(存储数据)
(5)类型(type):相当于数据库中表,用于存放具体数据
(6)文档(document):相当于数据库中的记录,基础的信息单元
(7)分片和复制(shards & replicas):Elasticsearch 将索引分为若干份,每份称为一个分片且有独立索引功能。
3.Logstash logstash开源实现数据的输入(output)——格式处理(filter)——输出(output)
logstash主要组件:
(1)Shipper:日志收集者,负责监控本地日志文件的变化,及时收集最新的日志文件内容
(2)Indexer:日志存储者,负责接收日志并写入到本地文件
(3)Broker:日志Hub,负责链接多个Shipper和多个Indexer
(4)Search and Storage:允许对时间进行搜索和存储
(5)Web Interface:基于web的展示界面
4.kibanna kibanna主要用于查看在elasticsear数据以及可视化数据分析。
主要功能:
Elasticsearch无缝集成整合数据复杂数据分析让更多的团队成员收益接口灵活配置简单可视化多数据源简单数据导出 二、实验分析 主机名
ip地址
操作系统
软件包
web01
192.168.10.101
CentOS7.9
httpd
filebeat-7.10.0-linux-x86_64.tar.gz
logstash
192.168.10.102
CentOS7.9
java-11
logstash-7.10.0-linux-x86_64.tar.gz
elk1
192.168.10.103
CentOS7.9
java-11
elasticsearch-7.10.0-linux-x86_64.tar.gz
kibana-7.10.0-linux-x86_64.tar.gz
elasticsearch-head-master.zip
phantomjs-2.1.1-linux-x86_64.tar.bz2
elk2
192.168.10.104
CentOS7.9
java-11
elasticsearch-7.10.0-linux-x86_64.tar.gz
1.设置基本环境 [root@localhost ~]# hostnamectl set-hostname elk1
在数据结构之《栈》章节中学习了线性表中除了顺序表和链表外的另一种结构——栈,在本篇中我们将继续学习另一种线性表的结构——队列,在通过本篇的学习后,你将会对栈的结构有充足的了解,在了解完结构后我们还将进行栈的实现。一起加油吧!!!
1.队列的结构与定义 概念:只允许在一端进行插入数据操作,在另⼀端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out)
入队列:进行插入操作的一端称为队尾
出队列:进行删除操作的一端称为队头
那么在队列的底层结构应该选择的是数组还是链表呢?接下来就来分析看看
在使用数组作为队列的底层结构时,由于队列的性质要求先进先出,所以可以使用size来表示数组内的有效元素个数,这样在入队列时就可以直接在数组的size位置插入数据,但是在出队列时为了将数组内的首个元素也就是数组下标为0的位置移除,这就需要将数组从下标为1的位置开始整体都向前移动一位,所以在出队列的时间复杂度为O(N) 在使用单链表作为队列的底层结构时,由于队列的性质要求先进先出,所以如果只用一个phead指针指向链表的第一个节点,那么就会使得在入队列时要找到链表的尾节点就需要通过遍历链表才能实现,这就会使得时间复杂度为O(N),所以为了解决以上这种缺陷,就在创建一个指针指向链表的尾节点,在入队列是就可以直接找到尾节点,这样就可以使得无论是入队列还是出队列时间复杂度都为O(1)
通过以上的分析就可以得出在实现队列时底层结构选择单链表是最优解
2.队列的实现 在实现队列的代码中,在Queue.h头文件中定义队列的结构以及队列中各个函数的声明,在Queue.c文件内完成各个函数的定义,在test.c文件内对实现的各个函数进行测试
2.1队列结构的定义 在队列结构的定义中,创建一个结构体QueueNode来表示节点,该节点内部有两个成员变量,data来存放节点的数据,next指针来存放下一个节点的地址;之后还需再创建一个结构体Queue来存放指向链表的第一个节点和尾节点的指针,并且在这个结构体内还创建一个成员变量size来表示链表中节点的个数,这样是为了在之后的计算队列有效数据个数时直接将size的值提取出来就可实现了
//队列结构的定义 typedef int QDataType; typedef struct QueueNode { QDataType data;//节点内的数据 struct QueueNode* next;//指向下一个节点的指针 }QueueNode; typedef struct Queue { struct QueueNode* phead;//指向第一个节点的指针 struct QueueNode* ptail;//指向尾节点的指针 int size;//节点的个数 }Queue; 2.2队列的初始化 要完成队列的初始化函数首先要在Queue.h内完成函数的声明
//初始化队列 void QueueInit(Queue* pq); 将该函数命名为QueueInit,函数的参数为存放指向头尾节点指针的结构体指针
完成了函数的声明接下来就是在Queue.c函数内完成函数的定义
因为以下函数中的pq指针是存放指向头尾节点指针的结构体指针,该指针不能为空,因此要将pq进行assert断言
//初始化队列 void QueueInit(Queue* pq) { assert(pq); pq->phead = pq->ptail = NULL; pq->size = 0; } 2.2判断队列是否为空 要完成队列判空函数首先要在Queue.h内完成函数的声明
目录
前言
ByteBuffer是什么
重要特点
分配缓冲区
读写模式切换
操作文本数据
操作基本数据类型
案例解析-循环输出数据
MappedByteBuffer是什么
MappedByteBuffer 的工作机制
刷盘时机
总结
前言 在深入学习 RocketMQ 这款高性能消息队列框架的源码时,发现 ByteBuffer 和 MappedByteBuffer在 RocketMQ 这样的高性能消息队列框架中扮演了关键角色,其核心部分广泛使用了这两种缓冲区,以实现高效的数据存储和异步刷盘操作。 接下来就深入学习ByteBuffer 和 MappedByteBuffer 的工作原理、优势特点,以便能运用到实际业务中。
ByteBuffer是什么 ByteBuffer 是 Java NIO(New Input/Output)库中的一个类,用于高效地进行字节数据的读写操作。ByteBuffer 提供了一个直接操作字节数组的接口,使得开发者可以更加灵活和高效地处理数据,特别是在处理大文件、网络通信以及其他需要高性能 I/O 操作的场景下。
重要特点 使用 ByteBuffer 进行数据读取时,内部的 position 指针会在每次读取操作后自动向前移动。这是 ByteBuffer 的基本操作原理之一,用于追踪缓冲区当前的读取或写入位置 。
分配缓冲区 ByteBuffer 类提供了两种主要的方法来分配缓冲区:allocate 和 allocateDirect
ByteBuffer buffer = ByteBuffer.allocate(1024); ByteBuffer directBuffer = ByteBuffer.allocateDirect(1024); allocate:分配JVM堆内存中的缓冲区,所以它受 JVM 垃圾回收的管理, 在执行 I/O 操作时,可能需要将数据从堆内存复制到操作系统的 I/O 缓冲区中,相对于直接缓冲区,堆缓冲区的性能通常稍逊色,适合对性能要求不高的场景。allocateDirect:分配的缓冲区是在 JVM 堆外的直接内存中,从而减少了内存复制的开销,适合需要高性能 I/O 操作的场景,由于直接缓冲区不受 JVM 垃圾回收的管理,它可能会造成内存泄漏,需要额外注意管理。 读写模式切换 ByteBuffer 提供了 flip() 方法,可以方便地从写模式切换到读模式;clear() 方法可以重置缓冲区,使其再次可用于写入数据。
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录 vim的安装创建新用户 adduser + 用户名Linus是个多用户的操作系统是否有创建用户的权限查看当前用户身份:whoami** 怎么创建设置密码passwdsudo提权(sudo输入的是用户的密码)普通用户切换成root:su修改sudoers易犯错误 vim三种常见模式命令模式复制粘贴:yy+p撤销u与撤销复原ctrl+r剪切dd在文本中进行快速移动大小写切换和删除字符替换模式shift+r**保存退出:shift+zz批量化注释(比较复杂)批量化去注释 插入模式底行模式 vim的配置vim的原理手动配置一键配置 vim的安装 因为vim的配置在每个用户上面是不一样的.跟我们的windows一样,可以进行个性化设置.下面我给大家从创建一个新用户开始,一步步教学.
root用户安装vim
指令:yum -y install vim
yum install vim 表示安装vim,-y(yes)表示确定安装.
因为我提前安装好了,所以它显示nothing to do.
创建新用户 adduser + 用户名 Linus是个多用户的操作系统 首先,Linus和windows一样,是个多用户的操作系统.也就是你可以同时拥有多个用户.
[root@iZ2vc7kou0oyop7xcabvtoZ ~]# ll /home total 8 drwx------ 3 admin admin 4096 Jul 22 18:00 admin drwx------ 7 king king 4096 Jul 23 18:01 king 我们可以用ll /home 查看我们当前系统有几个一般用户.我当前系统有两个一般用户:admin和king.
是否有创建用户的权限 查看当前用户身份:whoami** [root@iZ2vc7kou0oyop7xcabvtoZ ~]# whoami root root是超级管理员,基本啥事都能干.
[king@iZ2vc7kou0oyop7xcabvtoZ root]$ whoami king 一般用户也可以进行创建.但是一般用户要先对sudo进行提权
记录一下最近在做一个的表格数据多选功能。需求大致为支持多选、支持跨分页的连续选择、支持通过查询框后手动选择数据(我是后端选手,前端不太熟悉单纯记录~)。
主要思路为:
将table中的唯一id,存入数组tableIds中进行记录。在选中事件中,若当前为新增则存id,若为移除则remove该id。在分页事件触发时(同时会触发表格的选中事件,在这里我检查如果当前为分页事件标志则不进行表格的选中事件),首先清除表格的所有选中项 table.value.clearSelection() ,然后查询当前页的数据是否存在已经选中的数据,若存在则选中 table.value.toggleRowSelection(index) 。在search事件触发时(同时会触发表格的选中事件,在这里我不进行表格的选中事件逻辑),和上面一样重新构造选中数据。 templete
<template> <view> <uni-section> <uni-search-bar @confirm="search" :focus="true" v-model="queryParam.name" @blur="blur" @input="input" @cancel="cancel" @clear="clear"> </uni-search-bar> </uni-section> <view class='table-container'> <uni-table style='margin: 0;padding: 0' ref="table" :loading="loading" border stripe type="selection" emptyText="暂无更多数据" @selection-change="selectionChange"> <uni-tr> <uni-th :style="{ width: '100px', textAlign: 'center',height: '50px' }">姓名</uni-th> <uni-th :style="{ width: '100px', textAlign: 'center' ,height: '50px'}">工号</uni-th> <uni-th :style="{ width: '200px', textAlign: 'center' ,height: '50px'}">直属部门</uni-th> </uni-tr> <uni-tr style='height: 40px ;flex: 1 ' v-for="(item, index) in tableData"
一、分支概念
每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止
到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。
HEAD 严格来说不是指向提交,而是指向master,而 master才是指向提交
的,所以,HEAD指向的就是当前分支。
开始的时候,master分支是一条线,Git 用 master 指向最新的提交,再用
HEAD指向 master,就能确定当前分支,以及当前分支的提交点。每次提
交,master分支都会向前移动一步,这样,随着你不断提交,master分支
的线也越来越长。
二、创建分支过程
1、git仓库的建立
[root@git ~]# yum search git|grep git.x86
[root@git ~]# yum -y install git
[root@git ~]# rpm -qa|grep git
git-1.8.3.1-25.el7_9.x86_64
linux-firmware-20180220-62.git6d51311.el7.noarch
crontabs-1.11-6.20121102git.el7.noarch
[root@git ~]# rpm -ql git
1)创建一个空目录,使用git指令一定要cd到初始化之后的目录,init命令初始
化
[root@git ~]# mkdir /yy000
2)进入这个目录
[root@git ~]# cd /yy000/
3)执行git init 指令
[root@git yy000]# git init # 初始化工作区(yy000)和仓库(.git)
初始化空的 Git 版本库于 /yy000/.git/
4)发现隐藏目录.git
[root@git yy000]# ls -a
一、单片机基础介绍 1.何为单片机 单片机,英文Micro Controller Unit,简称MCU 。内部集成了中央处理器CPU、随机存储器ROM、只读存储器RAM、定时器/计算器、中断系统和IO口等一系列电脑的常用硬件功能 单片机的任务是信息采集(依靠传感器)、处理(依靠CPU)和硬件设备(例如电机,LED等)的控制 。单片机跟计算机相比,单片机算是一个袖珍版计算机,一个芯片就能构成完整的计算机系统。但在性能上,与计算机相差甚远,但单片机成本低、体积小、结构简单,在生活和工业控制领域大有所用。 同时,学习使用单片机是了解计算机原理与结构的最佳选择。
单片机工作的基本时序
我们都知道在学校是通过铃声来控制所有班级的上下课时间,我们都知道单片机执行指令的过程就是从ROM取出一条指令执行来完成它在各个地方的作用,那它什么时候取指令这个是顺序呢?这里引入一个时序的周期,每访问一次ROM的时间,就是一个机器周期的时间。
1个机器周期 = 6个状态周期 = 12个时钟(振荡)周期 时钟周期:即单片机的基本时间单位,若晶体的频率=12MHZ,那时钟周期 = 1/12MHZ,一个时钟周期 = 1/12MHZ = 1/12000 000每秒
机器周期:即12x1/12 000 000 =0.000001s = 1us,访问一次ROM取指令的时间就是1us
2.单片机命名规则 3.单片机内部结构 重点需记:单片机管脚
1.电源:Vcc:正极 Gnd:负极 2.XTAL:单片机时钟引脚,外接晶振
3.RST:复位
4.开发板介绍 开发板原理图 二、单片机的一些基础项目 2-1、点亮一个led灯 #include <REGX52.H> void main() { P2=0x7f;//1111 1110 d1 16 15 //0111 1111 d8 7 16 //1011 1111 d7 11 16 } 通过高低电平控制led亮否
2-2、led闪烁 #include <REGX52.H> #include <INTRINS.H> //延时函数 void Delay500ms() //@11.
在医疗领域,信息系统的安全直接关系到患者的隐私保护、医院的正常运营乃至社会的稳定。医院信息系统面临着越来越多的安全挑战。
为了确保患者信息的安全与隐私保护,医院需要采取有效的等保(等级保护)措施。那么,医院等保解决方案有哪些?用哪些软件可以加强等级保护?
下面就由小编为大家带来详细的攻略参考吧!让你轻松拿捏,快速解决问题!
医院等保解决方案涵盖了从网络安全防护到数据加密、身份认证与访问控制、审计追踪、应急响应等多个方面。
一、医院等保解决方案
1.数据加密
数据库加密:采用加密技术对敏感数据进行保护,即使数据被窃取也无法直接读取。
文件传输加密:使用SSL/TLS协议或其他加密手段保证文件传输过程中的安全性。
2.身份认证与访问控制
多因素认证:实施多因素认证机制,如密码+短信验证码、生物特征识别等,增强账户的安全性。
细粒度访问控制:基于角色的访问控制(RBAC)确保用户只能访问其职责范围内的数据。
3.审计追踪
日志管理:收集并保留操作日志,确保可以追溯到任何违规行为。
安全事件管理:通过安全信息与事件管理系统(SIEM)自动化分析安全日志,及时发现潜在威胁。
4.应急响应
预案制定:制定紧急情况下的应急预案,包括数据恢复计划、灾难恢复计划等。
定期演练:定期组织应急演练,确保在真实事件发生时能够迅速响应。
二、软件工具推荐
1. 安企神
功能:支持检测评估、响应处理、监督检查等服务,为企业单位提供安全的云防护。
优势:能够保障服务器和提高互联网的安全等级,帮助厂商搭建线上平台。
2. H3C
功能:涵盖医疗行业信息化现状分析、安全等级保护要求解读、信息化对医疗行业的影响等方面。
优势:提供医疗质量提升、电子病历系统运行支持等,减轻临床工作量,减少差错。
3. 智慧等保解决方案
功能:涉及智慧医疗的关键技术、应用案例、未来发展趋势等内容。
优势:构建智能防御体系,提高医院主动防御能力,实现一站式等保服务。
简单防白嫖,要让打印出来的页面是空白,通常的做法是在打印时隐藏页面上的所有内容。这可以通过CSS的媒体查询(Media Queries)来实现,特别是针对@media print的查询。
在JavaScript中,你通常不会直接控制打印的内容(因为那是CSS和HTML的工作),但你可以通过修改DOM元素的样式来影响打印效果。
下面是一个示例,展示了如何使用JavaScript和CSS来让打印出来的页面是空白:
HTML:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Print Blank Page</title> <link rel="stylesheet" href="styles.css"> </head> <body> <div id="content"> <!-- 页面内容 --> <h1>Hello, this is the content that will be hidden when printing.</h1> </div> <button onclick="prepareForPrint()">Print as Blank</button> <script src="script.js"></script> </body> </html> CSS:
#content { /* 默认显示内容 */ } @media print { #content { display: none; /* 当打印时隐藏内容 */ } } JavaScript:
Spring Boot Maven Plugin 配置详解 Spring Boot Maven Plugin 配置详解1. 添加插件到 `pom.xml`2. 插件配置2.1 基本配置2.2 配置参数详解默认行为说明简单配置示例为什么这样的配置能工作?进一步说明 2.3 高级配置 3. 使用插件打包应用程序3.1 打包成 JAR 文件3.2 打包成 WAR 文件 4. 运行 Spring Boot 应用程序4.1 使用 Maven 运行4.2 使用生成的 JAR 文件运行 5. 调试 Spring Boot 应用程序5.1 使用 Maven 调试 6. 常见问题和解决方案6.1 无法解析配置6.2 应用程序无法启动6.3 调试问题 Spring Boot Maven Plugin 配置详解 Spring Boot Maven Plugin 是一个用于构建 Spring Boot 应用程序的 Maven 插件。它提供了多种功能,包括打包应用程序为可执行 JAR 或 WAR 文件,以及运行 Spring Boot 应用程序。以下是该插件的详细配置说明。
LRU(Least Recently Used,最近最少使用)缓存是一种缓存淘汰策略,用于在缓存满时淘汰最久未使用的元素。
关键:
缓存选什么结构?
怎么实现访问顺序?
import java.util.*; public class LRUCache<K, V> { private final int capacity; // 缓存容量 private final Map<K, V> cache; // 用于存储缓存数据 private final LinkedList<K> order; // 用于维护访问顺序 public LRUCache(int capacity) { this.capacity = capacity; this.cache = new HashMap<>(capacity); this.order = new LinkedList<>(); } public V get(K key) { if (!cache.containsKey(key)) { return null; // 如果缓存中不存在该键,返回 null } // 将访问的键移到队列的尾部,表示最近使用 order.remove(key); order.addLast(key); return cache.get(key); } public void put(K key, V value) { if (cache.
PPT制作,无论是在学习还是工作中,都是我们不可或缺的办公技能之一,它是我们向他人传递想法或见解的一种重要的可视化手段。
然而,对于许多人来说,从零开始创建一个引人入胜的PPT,既费时又烧脑,更惨的是得熬夜制作还掉头发……
不过随着各种AI一键生成ppt工具的诞生,这种情况有望彻底发生改变,它们,本文我们将介绍5款AI一键生成PPT免费版工具,让你可以轻松地完成职场PPT制作。这些AI生成PPT神器不仅提供了各种设计模板,而且还能自动优化内容布局,让你的PPT看起来更专业!
AI一键生成ppt免费版软件 -博思AIPPT
-Beautifulai
-Canva AI PPT
-Prezi
-Gamma
ai一键生成ppt免费版是什么? AI一键生成PPT免费版软件是利用人工智能技术,通过简单的文本输入或主题选择,快速生成专业水准PPT的智能工具。通常来说,ai一键生成ppt软件具有如下特点:
智能理解:能够理解用户输入的文本内容和需求。自动排版:根据内容自动生成合理的页面布局。智能配图:根据主题自动匹配合适的图片素材。风格一致:确保整个PPT的设计风格统一协调。免费使用:基础功能可免费使用,满足大多数用户需求。 这些AI一键生成PPT工具极大地提高了PPT制作效率,使得即便是设计经验不足的用户也能快速制作出专业水准的演示文稿。接下来,让我们深入了解5款拥有良好口碑的AI一键生成PPT免费版工具。
*5款AI一键生成ppt软件
1. AI一键生成ppt免费版 - 博思AIPPT 推荐指数:★★★★★
博思AIPPT是国内领先的AI生成PPT工具,由推出过多款产品的博思云创团队开发。它以强大的智能功能、丰富的本地化内容和海量高品质的PPT模板而著称,特别适合中文用户使用。
*ai一键生成ppt免费版-博思AIPPT
功能亮点:
- 一键生成:只需输入主题或大纲,即可快速生成完整PPT。
- 导入文件生成PPT:支持导入Word、PDF、Markdown、TXT和Markdown文件一键生成PPT。
- 智能排版:自动优化页面布局,确保美观专业。
- 海量PPT模板:提供上百款精美PPT模板,覆盖各类PPT演示场景,包括总结汇报、教育培训、企业宣传、商业计划书、营销推广、毕业答辩、晚会表彰。
- 实时协作:多人可同时在线编辑同一份PPT。
*博思AIPPT内置的PPT模板
使用场景:
博思AIPPT适用于各种场合,如商务报告、教育课件、学术汇报、产品发布会、等。它特别适合需要快速生成中文PPT的用户,如企业员工、教师、学生等。
平台集成:
博思AIPPT提供网页版和桌面客户端,支持Windows和macOS系统。它还集成了图片库Pexels和矢量素材库Iconfont,方便用户在编辑PPT过程中自由添加图片或矢量图。
优点:
1. 中文支持优秀,特别适合国内用户。
2. 智能生成速度快,质量高。
3. 模板丰富,涵盖多种行业和场景。
4. 操作界面友好,易于上手。
缺点:
1. 使用时需要联网,暂不支持离线使用。
2. 在某些复杂设计需求上,灵活性可能不如传统PPT工具。
2. AI一键生成ppt免费版 - Beautiful.ai 推荐指数:★★★★☆
Beautiful.ai是一款备受好评的AI驱动的演示文稿制作工具,以其简洁优雅的设计和强大的智能功能而闻名。它致力于帮助用户在最短时间内创建出专业水准的PPT。
功能亮点:
- 智能设计:自动调整布局、颜色和字体,确保设计的一致性和美观性。
- 动态模板:提供100多种智能模板,可根据内容自动调整。
- 实时协作:支持多人同时编辑,并提供实时评论功能。
- 数据可视化:自动生成图表,并根据数据变化实时更新。
- 品牌定制:可设置公司logo、颜色方案等,确保品牌一致性。
1.引言 在现代数据库管理中,选择合适的数据库系统对业务的成功至关重要。随着企业数据量的增长和对性能要求的提高,许多公司开始考虑从MySQL迁移到PostgreSQL。这一迁移的主要原因包括以下几个方面:
1.1 性能和扩展性 PostgreSQL以其高性能和优秀的扩展能力而闻名。它支持复杂的查询优化和并发控制,能够更高效地处理大规模数据。与MySQL相比,PostgreSQL在处理复杂查询和大数据集时表现更为出色。
1.2. 标准兼容性和功能丰富 PostgreSQL严格遵循SQL标准,并提供了许多高级功能,如完整的ACID事务支持、复杂的查询和索引功能、存储过程、触发器等。其丰富的功能集使得开发人员能够更加灵活地设计和实现各种数据库应用。
1.3. 开源社区和企业支持 PostgreSQL拥有一个活跃的开源社区和广泛的企业支持。无论是社区版本还是企业版本,用户都可以获得及时的技术支持和更新。这使得PostgreSQL在稳定性和安全性方面具有显著优势。
1.4. 迁移过程中的挑战和注意事项 尽管从MySQL迁移到PostgreSQL带来了诸多优势,但这一过程也伴随着一些挑战和注意事项:
1.4.1. 语法差异 MySQL和PostgreSQL在SQL语法上存在一些差异,特别是在存储过程、函数和触发器的实现上。在迁移过程中,需要对现有的SQL脚本进行适当的调整和转换,以确保在PostgreSQL中能够正常运行。
1.4.2. 数据类型兼容性 两者在数据类型的支持和实现上也存在差异。例如,MySQL的TINYINT在PostgreSQL中没有直接对应的类型,需要转换为SMALLINT。类似的差异需要在迁移前进行详细的审查和处理。
1.4.3. 性能优化 尽管PostgreSQL在性能上具有优势,但迁移后仍需要对系统进行性能调优。包括索引的重新创建、查询的优化等,以充分发挥PostgreSQL的性能优势。
1.4.4. 数据完整性验证 在迁移过程中,确保数据的一致性和完整性至关重要。需要进行全面的数据验证,确保迁移后的数据与原数据完全一致。这包括行数验证、数据对比以及存储过程和函数的功能测试。
1.4.5. 工具的选择 选择合适的迁移工具可以显著简化迁移过程。例如,pgloader、Navicat等工具可以帮助大家完成大部份迁移步骤,减少手动干预的错误风险。关于pgloader的工具使用,可以查看pgloader官方文档,在这里就不赘述了,后续如果有需要可以针对pgloader的使用给大家进行分享。
2. 迁移步骤 将数据从一个数据库系统迁移到另一个数据库系统是一个复杂且关键的任务。以下是从MySQL迁移到PostgreSQL的完整过程,涵盖了所有相关步骤。
2.1 准备工作 2.1.1. 安装并配置MySQL和PostgreSQL 在开始迁移之前,确保MySQL和PostgreSQL都已正确安装并配置。准备工作包括安装和配置数据库系统以及备份MySQL数据库。对于Mysql、PostgreSQL的配置安装可以通过yum或者apt命令进行联网安装,也可以通过二进制进行安装,具体可以参考:
PostgreSQL16.3基于CentOS7.9源码安装步骤数据库MySQL的四种安装方式 2.1.2. 备份MySQL数据库 在进行数据迁移之前,必须备份MySQL数据库以防止数据丢失。备份可以使用mysqldump工具完成。
1.备份整个数据库
使用mysqldump命令导出整个数据库,包括表结构和数据。
mysqldump -u root -p your_database > your_database_backup.sql 2.备份单个表:
如果只需要备份特定的表,可以使用以下命令:
mysqldump -u root -p your_database table_name > table_name_backup.sql 3.备份存储过程和函数:
使用--routines选项导出存储过程和函数。
mysqldump -u root -p --routines --no-create-info --no-data --skip-triggers your_database > routines_backup.
有时候想控制第三方软件,但是没有源程序,可以控制鼠标键盘自动操作软件达到我们想要的目的
首先建一个功能类包含窗口控制,鼠标控制和输入控制等
```csharp using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; namespace 进程程序名 { public class Win32Api { [DllImport("user32.dll", SetLastError = true)] static extern IntPtr FindWindow(string lpClassName, string lpWindowName); [DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] public static extern bool SetForegroundWindow(IntPtr hWnd); [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)] public static extern IntPtr SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam); [DllImport("user32.dll", SetLastError = true)] public static extern bool PostMessage(IntPtr hWnd, uint Msg, int wParam, int lParam); [DllImport("
文章目录 一、AIGC在CSS优化中的应用场景智能代码生成自动布局调整性能优化建议样式和色彩建议 二、使用AIGC优化CSS的具体步骤明确需求选择AIGC工具输入描述或设计稿审查和调整集成和测试 三、AIGC优化CSS的优势与挑战优势:挑战: 《CSS创意项目实践(Web开发与设计)》内容简介作者简介目录前言/序言本书目标读者本书组织结构:路线图 获取方式 在前端开发领域,CSS(层叠样式表)是控制网页布局和样式的重要技术。随着人工智能技术的飞速发展,AIGC(人工智能生成内容)逐渐渗透到前端开发的各个环节,为CSS的优化提供了全新的解决方案。
一、AIGC在CSS优化中的应用场景 智能代码生成 AIGC能够根据开发人员的自然语言描述或设计稿,自动生成相应的CSS代码。例如,开发人员可以输入“创建一个带有红色背景、白色字体和圆角边框的按钮”,AIGC会迅速生成满足要求的CSS代码片段。这种方式极大地提高了代码编写的效率,减少了手动编码的时间和错误率。
自动布局调整 利用AIGC技术,开发人员可以更容易地实现响应式布局。AIGC能够分析不同设备和屏幕尺寸的特点,自动调整CSS代码以适应各种显示环境。这不仅提升了用户体验,还减轻了开发人员在不同设备上反复测试和调整布局的工作量。
性能优化建议 AIGC通过分析CSS代码和页面加载性能数据,能够识别出潜在的性能瓶颈,并给出优化建议。例如,指出哪些样式规则是冗余的、哪些图片资源可以压缩或替换为更高效的格式等。这些建议有助于提升网页的加载速度和整体性能。
样式和色彩建议 基于设计美学和用户体验原则,AIGC还可以为开发人员提供色彩搭配和样式设计的建议。这些建议可以帮助开发人员创建更加美观、易用的网页界面,提升用户的满意度和留存率。
二、使用AIGC优化CSS的具体步骤 明确需求 首先,开发人员需要明确自己的需求,包括所需的页面布局、样式效果以及性能要求等。这些需求将作为AIGC生成CSS代码的依据。
选择AIGC工具 目前市面上已经有多款AIGC工具支持CSS代码的生成和优化。开发人员可以根据自己的需求和偏好选择合适的工具。例如,一些工具可能更擅长于代码生成,而另一些则可能更专注于性能优化。
输入描述或设计稿 使用选定的AIGC工具,开发人员可以输入自然语言描述或上传设计稿。工具将根据输入内容自动生成相应的CSS代码。
审查和调整 生成的CSS代码可能需要进行一定的审查和调整,以确保其满足开发人员的具体需求。开发人员可以根据自己的经验和审美对代码进行必要的修改和完善。
集成和测试 将优化后的CSS代码集成到网页中,并进行全面的测试。测试内容包括但不限于布局效果、样式一致性、性能表现等。通过测试,开发人员可以确保CSS代码的质量和稳定性。
三、AIGC优化CSS的优势与挑战 优势: 提高效率:AIGC能够自动生成和优化CSS代码,减少手动编码的时间和错误率。提升质量:通过智能分析和优化建议,AIGC有助于提升CSS代码的质量和性能。增强创意:AIGC为开发人员提供色彩和样式设计的建议,有助于激发创意灵感。 挑战: 技术成熟度:目前AIGC技术在CSS优化方面的应用仍处于发展阶段,部分工具的准确性和稳定性有待提升。依赖程度:过度依赖AIGC可能导致开发人员丧失对CSS技术的深入理解和掌握。创造性限制:AIGC生成的代码可能缺乏独特的创意和个性化风格,难以满足所有开发人员的需求。 AIGC技术为CSS优化提供了全新的解决方案和思路。然而,在实际应用中仍需注意技术成熟度、依赖程度和创造性限制等问题。通过合理利用AIGC技术并结合开发人员的专业知识和经验,可以实现更高效、更高质量的CSS开发。
《CSS创意项目实践(Web开发与设计)》 内容简介 利用关键帧创建动画使用网格和Flexbox等布局技巧对表单元素进行样式化,包括单选按钮嵌入字体以及与排版相关的样式利用伪元素和媒体查询进行条件样式化 作者简介 Martine Dowden是一位作家、演讲者和能力卓越的首席技术官。Michael Gearon是一位用户体验设计师和前端开发者,曾与许多知名品牌合作过。
目录 第1章 CSS介绍 1 1.1 CSS概述 1 1.1.1 关注点分离 1 1.1.2 什么是CSS 3 1.2 通过创建文章布局开始学习CSS 3 1.3 向HTML添加CSS 7 1.3.1 内联CSS 7 1.3.2 嵌入式CSS 9 1.3.3 外部CSS 10 1.4 CSS中的层叠 11 1.
登录官网,在官网选择合适的qt版本进行下载
这里选择5.12.9版本
点击exe文件下载,因为服务器在国外,国内不支持,所以可以从我的网盘下载
链接: https://pan.baidu.com/s/1XMILFS1uHTenH3mH_VlPLw 提取码: 1567 --来自百度网盘超级会员v2的分享 下载完之后打开
选择需要的组件
一直点击下一步,直到更新完成
打开qt creator,新建一个工程
这是各种类型的工程的简单介绍
新建好项目后,点击form样式进行设置
选择click事件