✍个人博客:Pandaconda-CSDN博客
📣专栏地址:http://t.csdnimg.cn/UWz06
📚专栏简介:在这个专栏中,我将会分享 Golang 面试中常见的面试题给大家~
❤️如果有收获的话,欢迎点赞👍收藏📁,您的支持就是我创作的最大动力💪
28. Go 线程实现模型? Go 实现的是两级线程模型(M:N),准确的说是 GMP 模型,是对两级线程模型的改进实现,使它能够更加灵活地进行线程之间的调度。
背景
含义缺点单进程时代每个程序就是一个进程,直到一个程序运行完,才能进行下一个进程1. 无法并发,只能串行
2. 进程阻塞所带来的 CPU 时间浪费多进程/线程时代一个线程阻塞, CPU 可以立刻切换到其他线程中去执行1. 进程/线程占用内存高
2. 进程/线程上下文切换成本高协程时代协程(用户态线程)绑定线程(内核态线程),CPU 调度线程执行1. 实现起来较复杂,协程和线程的绑定依赖调度器算法 线程 -> CPU 由操作系统调度,协程 -> 线程由 Go 调度器来调度,协程与线程的映射关系有三种线程模型。
三种线程模型
线程实现模型主要分为:内核级线程模型、用户级线程模型、两级线程模型,他们的区别在于用户线程与内核线程之间的对应关系。
1. 内核级线程模型(1:1)
1 个用户线程对应 1 个内核线程,这种最容易实现,协程的调度都由 CPU 完成了。
优点:
实现起来最简单
能够利用多核
如果进程中的一个线程被阻塞,不会阻塞其他线程,是能够切换同一进程内的其他线程继续执行
缺点:
上下文切换成本高,创建、删除和切换都由 CPU 完成
2. 用 户级线程模型(N:1)
1 个进程中的所有线程对应 1 个内核线程。
优点:
上下文切换成本低,在用户态即可完成协程切换
缺点:
无法利用多核
一旦协程阻塞,造成线程阻塞,本线程的其它协程无法执行
3. 两 级线程模型(M:N)
M 个线程对应 N 个内核线程。
在之前的数据结构的学习中,我们了解了顺序表、链表等线性表,接下来在本篇中将要学习一种非线性的数据结构——树,我们将来了解树的相关概念和性质,在树当中将重点学习二叉树的结构和特性。学习完相关概念后将试着实现二叉树,解决二叉树相关的问题。接下来就开始本篇的学习吧!!!
1.树 1.树的概念与结构 树是一种非线性的数据结构,它是由 n(n>=0) 个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。
• 有一个特殊的结点,称为根结点,根结点没有前驱结点。
• 除根结点外,其余结点被分成 M(M>0) 个互不相交的集合 T1、T2、……、Tm ,其中每一个集合
Ti(1 <= i <= m) 又是⼀棵结构与树类似的子树。每棵⼦树的根结点有且只有⼀个前驱,可以
有 0 个或多个后继。因此,树是递归定义的。
注意:树形结构中,子树之间不能有交集,否则就不是树形结构
例如以下就为非树形结构:
因此树形结构需要有以下特性
• 子树是不相交的(如果存在相交就是图)
• 除了根结点外,每个结点有且仅有一个父结点
• 一棵N个结点的树有N-1条边
1.2 树相关术语 父结点/双亲结点:若一个结点含有子结点,则这个结点称为其子结点的父结点; 如上图:A是B的父结点
子结点/孩子结点:一个结点含有的子树的根结点称为该结点的子结点; 如上图:B是A的孩子结
结点的度:⼀个结点有几个孩子,他的度就是多少;比如A的度为6,F的度为2,K的度为0
树的度:一棵树中,最大的结点的度称为树的度; 如上图:树的度为 6
叶子结点/终端结点:度为 0 的结点称为叶结点; 如上图: B、C、H、I... 等结点为叶结点
分支结点/非终端结点:度不为 0 的结点; 如上图: D、E、F、G... 等结点为分支结点
兄弟结点:具有相同父结点的结点互称为兄弟结点(亲兄弟); 如上图: B、C 是兄弟结点 结点的层次:从根开始定义起,根为第 1 层,根的子结点为第 2 层,以此类推;
树的高度或深度:树中结点的最大层次; 如上图:树的高度为 4
结点的祖先:从根到该结点所经分⽀上的所有结点;如上图: A 是所有结点的祖先
当Docker在拉取镜像时卡在“pulling fs layer”阶段,可以通过重启Docker服务来解决。 具体步骤如下: 首先,尝试重启Docker服务。可以通过运行以下命令来重启Docker服务:
systemctl restart docker 这个命令会重启Docker服务,可能会解决“pulling fs layer”卡住的问题。12
如果上述方法无效,可以考虑修改Docker的镜像源。具体步骤如下:
打开Docker的配置文件/etc/docker/daemon.json。如果不存在该文件,需要创建。在配置文件中添加或修改registry-mirrors字段,指定国内的镜像源,例如使用中科大或阿里云的镜像加速器。 { "registry-mirrors": ["https://yxzrazem.mirror.aliyuncs.com"] } 保存并退出编辑器后,需要重载Docker的配置并重启Docker服务: sudo systemctl daemon-reload systemctl restart docker 这样修改后,可以加快镜像的拉取速度,避免因超时导致的卡顿问题
字典 字典是C#中的一种集合,它存储键值对,并且每个键与一个值相关联。
创建字典 Dictionary<键的类型, 值的类型> 字典名字 = new Dictionary<键的类型, 值的类型>();
Dictionary<int, string> dicStudent = new Dictionary<int, string>(); 字典基本操作 添加元素 dicStudent.Add(2, "张三"); dicStudent.Add(5, "李四"); dicStudent.Add(8, "王五"); 访问元素 字典名[键名];
Console.WriteLine(dicStudent[5]); 检查键是否存在 if (dicStudent.ContainsKey(1)) { Console.WriteLine("键存在"); } else { Console.WriteLine("键不存在"); } if (dicStudent.ContainsKey(2)) { Console.WriteLine("键存在"); } else { Console.WriteLine("键不存在"); } 字典容量 int count = dicStudent.Count; Console.WriteLine(count); 遍历字典 foreach (KeyValuePair<int, string> item in dicStudent) { Console.WriteLine($"{item.Key}:{item.Value}"); } 为了简化字典遍历的写法使用 var 代替 KeyValuePair<int, string> 类型。
Springer上传手稿记录 以signal,image and video proecessing为例上传手稿或图片时提示上传失败无法编译成pdf审阅进度 以signal,image and video proecessing为例 该期刊为SCI4区,接收信号图像视频处理相关文章,期刊主编的专业是深度神经网络研究。
上传手稿或图片时提示上传失败 投稿网站用校园网能打开,但在上传zip文件时可能会因超时而无法上传,可以使用加速器帮助上传,另zip中应包含.eps、.tex、.cls、.bib以及.bst五类文件且不能包含子文件夹
无法编译成pdf 在上传手稿Review审查阶段,会提示上传的zip文件是否可以编译成pdf,如果失败,下拉可以看到错误提示,相关的警告也尽量消除。
错误1:
出现Unknown theoremstyle相关错误,在tex文件中将原本的宏包引用
\documentclass[sn-mathphys-num,iicol]{sn-jnl}% Math and Physical ....other package \usepackage{amsthm}% 更换为
\RequirePackage{amsthm} \documentclass[sn-mathphys-num,iicol]{sn-jnl}% Math and Physical ....other package 具体原因细节点击此处
错误2:
Capacity: max_strings=200000, hash_size=200000, hash_prime=170003 The top-level auxiliary file: output.aux I couldn’t open style file sn-mathphys-num.bst —line 3 of file output.aux :
\bibstyle{sn-mathphys-num : } I’m skipping whatever remains of this
command Illegal, another \bibstyle command—line 95 of file
hi,bro!又见面啦
目录
前言:
一、链表的分类
二、双向链表
1、 概念与结构
2、 双向链表的实现
2.1 定义双向链表的结构
2.2 初始化
2.3 尾插
2.4 头插
2.5 打印
2.6 尾删
2.7 头删
2.8 查找
2.9 在pos结点之后插入结点
2.10 删除指定位置结点
2.11 销毁
2.12 销毁2
2.13 初始化2
3、源码
List.h
List.c test.c 三、顺序表和链表的比较
Bye Bye Bye ————————
前言: 前面我们学习了单链表,单链表是链表的一种,今天我们即将要学习的双向链表也是其中之一。我们前面没有具体介绍链表的分类,所以在学习双向链表之前,先了解下链表的分类。
一、链表的分类 链表的结构多样,有下面8种链表结构(2×2×2): 链表说明:
何为循环:尾结点的next指针不为NULL
链表结构虽多,我们常用的就两种结构,单链表和双向带头循环链表
无头单向非循环链表(单链表):结构简单,一般不用来单独存储数据。实际上更多是作为其他数据结构的子结构,如哈希桶、图的邻接表等等。另外这种结构在笔试面试中出现很多。带头双向循环链表(双向链表):结构最复杂,一般用在单独存储数据,实际中使用的链表数据结构,都是带头双向循环链表。虽然这个结构复杂,但是使用代码实现以后会发现结构会带来很多优势,实现反而简单了。在带头链表里面,除了头结点(哨兵位),其他结点都存储有效的数据。 二、双向链表 1、 概念与结构 带头双向循环链表
双向链表的结点结构:数据 + 指向后一个结点的指针 + 指向前一个节点的指针 struct ListNode { int data; struct ListNode* next; struct ListNode* prev; } 头结点的prev指针指向尾结点,尾结点的next指针指向头结点,就这样实现了循环。 【注意】 带头链表的头结点实际为 哨兵位 ,哨兵位结点不存储任何有效数据,只是在这里放哨占位子的。而前面单链表里面的头结点并不表示真的表示有头结点,而是为了表示方便,这种表述是不规范的。单链表里面的第一个结点并非真的头结点。
项目概述 在本项目中,我们将搭建一个基于 STM32 的 NAS(网络附加存储)私盘,通过网络访问存储在外部 SATA 硬盘上的文件。该项目将使用 STM32 开发板、外接 SATA 硬盘、LwIP 协议栈以及 FATFS 文件系统来实现文件的上传、下载和管理,用户可以通过简单的 Web 界面进行操作。
系统设计 硬件设计 STM32 开发板
选择 STM32F407 或 STM32F746 开发板,具备足够的 RAM 和闪存以支持 NAS 功能。 存储介质
使用外接 SATA 硬盘,通过 SATA 转 USB 适配器连接到 STM32。 网络接口
选择以太网模块(如 W5500)或 Wi-Fi 模块(如 ESP8266)以实现网络连接。 电源管理
确保使用的电源适配器能够满足 STM32 开发板和外接硬盘的功耗需求。 软件设计 开发环境
使用 STM32CubeIDE 或 Keil MDK 作为开发工具。 固件库
使用 STM32 HAL 库进行硬件抽象和操作。 文件系统
使用 FATFS 库来管理存储设备上的文件系统,支持文件的读写、删除等操作。 网络协议
使用 LwIP 协议栈处理 TCP/IP 网络通信。实现 HTTP/HTTPS 协议以支持 Web 服务器功能,支持文件的上传和下载。 配置环境 1.
1、Hack This Site
提供在线 IRC 聊天和论坛,让用户交流更加方便。网站涵盖多种主题,包括密码破解、网络侦察、漏洞利用、社会工程学等。非常适用于个人提高网络安全技能
2、Hack a Day
涵盖多个领域,包括黑客技术、科技、工程和DIY等内容,站内提供大量有趣的文章、视频、教程和新闻,帮助用户掌握黑客技术和DIY精神。
3、Offensive Security
一个专门提供网络安全培训和认证的公司,课程包括渗透测试、网络侦察、漏洞利用等。此外,还会提供一系列的实验室环境和虚拟机,让用户在真实环境下进行实践。
4、Metasploit
一个广泛使用的漏洞利用框架,可以帮助黑客自动化漏洞利用过程,提高攻击效率。Metasploit的功能非常强大。
5、Cybrary
在线网络安全培训平台,课程有渗透测试、漏洞利用、恶意软件分析、密码学等。
6、Null Byte
黑客技术教育在线平台,提供密码破解、社会工程学、网络侦察、漏洞利用等技术相关内容,帮助用户了解和掌握各种黑客技术。
7、Hack In The Box
一个国际性的网络安全会议和培训机构,致力于推动网络安全技术的发展和应用。站内还会定期举办国际性的网安会议,为全球网安从业者提供了交流和学习的机会。
以上7个网站,大家用过几个呢?
网络安全发展路线
下面给大家总结了一套适用于网安零基础的学习路线,应届生和转行人员都适用,学完保底6k!就算你底子差,如果能趁着网安良好的发展势头不断学习,日后跳槽大厂、拿到百万年薪也不是不可能!
【点击这里,先领资料再阅读哦~】
初级网工
1、网络安全理论知识(2天)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)
2、渗透测试基础(一周)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等
3、操作系统基础(一周)
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)
4、计算机网络基础(一周)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现
5、数据库基础操作(2天)
①数据库基础
②SQL语言基础
③数据库安全加固
6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)
恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间6k-15k
到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?
【“脚本小子”成长进阶资源领取】
7、脚本编程(初级/中级/高级)
在网络安全领域。是否具备编程能力是“脚本小子”和真正黑客的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力.
零基础入门,建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习; 搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP, IDE强烈推荐Sublime; ·Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,不要看完; ·用Python编写漏洞的exp,然后写一个简单的网络爬虫; ·PHP基本语法学习并书写一个简单的博客系统; 熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选); ·了解Bootstrap的布局或者CSS。
毕业论文作为大学生涯的终极考验,常常让许多本科生感到压力巨大。然而,事实上,本科毕业论文并没有那么难。只要掌握正确的方法和策略,再加上现代智能工具的帮助,如AIPapergpt一键智能论文平台,撰写一篇高质量的毕业论文其实是可以轻松完成的。本文将从选题、文献综述、结构安排、写作技巧以及智能工具推荐等方面,详细探讨如何顺利完成本科毕业论文。
一、选题——从兴趣出发 选题是撰写毕业论文的第一步,也是至关重要的一步。一个好的选题不仅能让你在写作过程中保持热情,还能为论文的创新性和研究价值打下坚实的基础。以下是选题的一些建议:
1. 兴趣导向 选择自己感兴趣的主题是关键。兴趣是最好的老师,有兴趣的课题会让你在研究过程中更加投入和积极。
2. 可行性分析 在确定选题前,要进行可行性分析,评估自己是否有足够的资源和能力完成该课题的研究。
3. 创新性 选择具有一定创新性的课题,避免选取过于常见或已经被研究透彻的主题。
4. 指导老师的建议 多与指导老师沟通,听取他们的建议和意见,帮助你选择一个合适的课题。
二、文献综述——夯实理论基础 文献综述是毕业论文的重要组成部分,通过对相关文献的梳理和分析,可以了解研究领域的现状和发展趋势,为自己的研究提供坚实的理论基础。文献综述的步骤如下:
1. 收集文献 利用学校图书馆、电子数据库等资源,收集与课题相关的文献资料。常用的数据库有CNKI、万方数据、SpringerLink、ScienceDirect等。
2. 文献筛选 对收集到的文献进行筛选,剔除无关或质量不高的文献,保留与课题相关性强、学术价值高的文献。
3. 阅读和分析 对筛选后的文献进行深入阅读和分析,总结出前人研究的主要观点、方法和结论,找出研究的不足之处和空白点。
4. 写作综述 在撰写文献综述时,要注意逻辑结构清晰,内容详实。可以按照时间顺序、主题分类或方法分类等方式进行组织和总结。
三、结构安排——搭建论文框架 一个清晰合理的论文结构是撰写高质量毕业论文的基础。一般来说,本科毕业论文的结构包括以下几个部分:
1. 引言 引言部分介绍研究背景、研究目的和意义,提出研究问题或假设,为后续研究做好铺垫。
2. 文献综述 文献综述部分对相关领域的研究成果进行总结和评述,找出研究的不足和空白。
3. 研究方法 研究方法部分详细描述研究所采用的方法和技术,包括研究设计、数据收集和分析方法等。
4. 研究结果 研究结果部分展示研究的主要发现和数据分析结果,可以用表格、图表等形式进行呈现。
5. 讨论 讨论部分对研究结果进行解释和讨论,分析研究的意义和局限性,并提出进一步研究的建议。
6. 结论 结论部分总结研究的主要成果,重申研究的重要性,并提出实际应用和政策建议。
7. 参考文献 列出论文中引用的所有文献,确保格式规范、完整。
四、写作技巧——提高论文质量 掌握一些写作技巧,可以有效提高论文的质量和可读性。以下是一些实用的写作技巧:
1. 逻辑严谨 论文的论证过程要逻辑严谨,论据充分,避免出现逻辑漏洞和推理错误。
2. 语言简洁 论文的语言要简洁明了,避免使用冗长和复杂的句子,确保读者能够轻松理解。
3. 规范引用 在引用他人研究成果时,要严格按照学术规范进行标注,避免出现抄袭现象。
4. 图表辅助 合理使用图表,可以使论文内容更加直观和易于理解。注意图表的制作要规范,标注清晰。
5. 反复修改 写作完成后,要进行多次修改和润色,特别是语法和格式上的错误,确保论文的质量。
1、输入以下命令后回车,npm切换至淘宝镜像
npm config set registry https://registry.npmmirror.com 2、输入以下命令后回车,检查是否切换成功
npm config get registry 若返回此信息表示切换成功
3、现在,你就可以使用淘宝镜像来加快npm包的下载速度了。请注意,切换镜像可能会有一些副作用,比如某些包可能在淘宝镜像上不存在或更新较慢。如果遇到问题,你可以随时切换回官方npm注册表,方法是执行以下命令:
npm config set registry https://registry.npmjs.org/
要想让小程序在众多同类中脱颖而出,吸引更多的用户,就必须进行有效的关键词优化。优化小程序关键词是提升小程序搜索排名和吸引目标用户的重要手段。以下是一些优化小程序关键词的具体步骤和策略:
一、关键词研究与选择
1.了解用户搜索习惯
分析目标用户的搜索习惯和需求,了解他们常用的搜索词汇和短语。
利用市场调研或关键词规划工具(如微信指数、百度指数等)来获取这些信息。
2.竞品分析
分析竞争对手的关键词使用情况,找出其成功的关键词和策略。
结合自身情况,选择适合自己的关键词。
3.选择高质量关键词
选择与小程序内容相关、搜索频率较高的关键词。
评估关键词的搜索量、竞争程度及转化潜力,选择既符合用户需求又具有一定竞争力的关键词。
二、关键词布局
1.小程序名称与简介
小程序名称中应包含核心关键词,以提升搜索排名。
在简介中详细描述小程序的功能和特色,并巧妙融入关键词(微信小程序已经对简介在7月份进行了悄悄的扩容,从原先的120个字符变成了120个字,直接翻倍,可以设置更多的关键词,方便后期覆盖更多的关键词)。
2.标签设置
添加多个与小程序内容相关的标签,增加被搜索到的机会。
标签应简洁明了,避免使用模糊或无关的词汇。
3.页面内容
在小程序的页面内容中自然地穿插关键词,保持内容的流畅性和可读性。
编写有价值、有深度的内容,提升用户体验和停留时间。
三、用户体验优化
1.简洁流畅的设计
确保小程序拥有简洁而直观的设计,提供流畅的导航和快速响应的性能。
优化页面加载速度,提升用户访问体验。
2.优质内容创作
围绕关键词创作与关键词相关内容,确保内容的原创性和价值性。
定期更新内容,保持小程序的活跃度和新鲜感。
3.增加用户互动
通过设置评论、点赞、分享等功能,增加用户互动和参与度。
回应用户反馈,提升用户满意度和忠诚度。
四、数据分析与调整
1.利用分析工具
使用小程序提供的数据分析工具来监测关键词的搜索曝光率、点击率等数据。
分析用户数据,了解用户在小程序中的路径和偏好。
2.持续优化关键词
根据数据分析结果,对关键词进行必要的调整和优化。
尝试不同的关键词组合和布局方式,找出好的优化策略。
总之成功的关键词优化需要长期的努力和不断调整,才能在激烈的竞争中获得更高的搜索排名和更多的用户流量。
ChatGLM-6B是由清华大学和智谱AI开源的一款对话语言模型,基于 General Language Model (GLM)架构,具有 62亿参数。该模型凭借其强大的语言理解和生成能力、轻量级的参数量以及开源的特性,已经成为在学术界和工业界引起了广泛关注。
本篇将介绍使用DAMODEL深度学习平台部署ChatGLM-6B模型,然后通过Web API的形式使用本地代码调用服务端的模型进行对话。
一、DAMODEL-ChatGLM-6B服务端部署 DAMODEL(丹摩智算)是专为AI打造的智算云,致力于提供丰富的算力资源与基础设施助力AI应用的开发、训练、部署。目前给新用户提供了近100小时的免费4090算力可供使用。
1.1、实例创建 首先进入DAMODEL控制台,点击资源-GPU云实例,点击创建实例:
进入创建页面后,首先在实例配置中首先选择付费类型为按量付费,其次选择单卡启动,然后选择需求的GPU型号,本次实验可以选择选择:按量付费–GPU数量1–NVIDIA-GeForc-RTX-4090,该配置为60GB内存,24GB的显存。
继续往下翻,配置数据硬盘的大小,每个实例默认附带了50GB的数据硬盘,本次创建可以就选择默认大小50GB,可以看到,平台提供了一些基础镜像供快速启动,镜像中安装了对应的基础环境和框架,这里选择PyTorch1.13.1的框架启动,也可以选择PyTorch2.1.2版本启动。
点击创建密钥对,输入自定义的名称,创建好密钥对后,选择刚刚创建好的密钥对,并点击立即创建,等待一段时间后即可启动成功!
1.2、模型准备 启动环境后,打开终端,用git 克隆https://github.com/THUDM/ChatGLM-6B.git项目,若遇到github连接超时,可以选择离线下载并上传到项目中。
cd /home/aistudio/work/ git clone https://github.com/THUDM/ChatGLM-6B.git 成功克隆项目后,会显示如下文件夹:
其次cd进入该文件夹,使用pip安装项目依赖:pip install -r requirements.txt,可以看到DAMODEL平台环境依赖的下载安装速度可以达到18MB/s以上,非常迅速,等待片刻显示如下Successfully installed则说明依赖安装完成!
依赖安装成功后,我们需要引入模型文件,比较方便的是,DAMODEL(丹摩智算)提供了数据上传功能,用户有20GB免费存储空间,该空间被挂载到实例的/root/shared-storage目录,跨实例共享。
这里首先点击文件存储,点击上传文件。
然后下载Hugging Face上的ChatGLM-6B预训练模型,也可以进入魔塔社区选择https://www.modelscope.cn/models/ZhipuAI/chatglm3-6b/files里的所有文件进行下载
然后将下载下来的模型文件及配置进行上传并解压,上传时尽量保持该界面首页显示,等待上传成功后再进行其他操作。
1.3、模型启动 上传好预训练模型及解压后,我们就可以去启动python脚本运行了,ChatGLM-6B提供了cli_demo.py和web_demo.py两个文件来启动模型,第一个是使用命令行进行交互,第二个是使用本机服务器进行网页交互。
由于要使用本地模型启动,所以我们需要把从Hugging Face Hub加载改为本地路径加载,打开cli_demo.py文件,将这两行代码改为从本地文件目录加载预训练模型。
然后在终端输入python cli_demo就可以成功启动模型了,在cli_demo.py中,main函数启动一个无限循环,等待用户输入。用户可以输入文本与模型进行对话,或输入"clear"清空对话历史并清除屏幕,或输入"stop"退出程序。对于正常的对话输入。
启动模型后的效果如下图所示:
也可以在终端输入python web_demo.py,通过Web界面与模型进行交互。
不过由于Jupyter的限制,无法直接打开访问服务器的127.0.0.1:7860网页端交互界面,这里可以利用MobaXterm建立ssh隧道,实现远程端口到本机端口的转发。首先打开tunneling,新建SSH通道,填入ssh的相关配置,并将7860通道内容转发到本机,点击start开始转发:
转发成功后,就可以成功在网页与模型进行交互了,效果如下:
二、通过Web API实现本地使用 2.1、启动服务 通过以上步骤,我们成功启动了ChatGLM-6B模型,并可以在服务器的JupyterLab中进行对话,下面我们将其部署为API服务,然后在本地进行使用。
同样ChatGLM-6B模型为我们提供了api.py文件,它实现了一个基于FastAPI框架API服务,其接收一个HTTP POST请求,该请求体包含文本生成所需的参数,如prompt(提示文本)、history(对话历史)、max_length(生成文本的最大长度)、top_p(采样时的累积概率阈值)和temperature(采样时的温度参数,影响生成文本的随机性)。在接收到请求后,该服务使用预训练的模型和分词器(tokenizer)来生成一个响应文本,并更新对话历史。随后生成的响应文本、更新后的对话历史、状态码(固定为200)和当前时间戳被打包成一个JSON对象并返回给客户端。
我们可以直接在终端cd进入ChatGLM-6B文件夹,运行api.py文件:
cd ChatGLM-6B python api.py 显示如下提示则说明启动成功!
2.2、开放端口 其次需要为本地访问开放对应的端口,首先需要点击访问控制,进入端口开放页面。
然后点击添加端口,输入端口号,并点击确定开放:
点击确认开放端口后,平台会给出访问链接,将其复制以便后续使用
做完以上这些步骤后,服务器端就已经部署好了,接下来测试本地调用效果!
2.3、使用PostMan测试功能 打开PostMan,新建一个Post,将刚刚复制的网址粘贴到url栏,然后在Body中填入相应的内容。
Body示例内容如下:
{ "prompt": "你好,你是谁?", "
玩转 AIGC:仅需三步,在 Mac 电脑部署本地大模型,打造私人 ChatGPT 。
今天分享的内容是 玩转 AIGC「2024」 系列文档中的 仅需三步,在 Mac 电脑打造个人 ChatGPT。
本文将详细介绍仅用三条命令在 M1 芯片的 Mac Pro 上部署本地大模型,实现私人的 ChatGPT。
1. 前提介绍 1.1 硬件介绍 型号: MacBook Pro芯片:Apple M1(M1/M2/M3 任何芯片的都可以,越高端的性能越好)内存: 16 G(内存越大越好,8G 也能体验,但是只能用小模型)硬盘: 256 G(越大越好) 1.2 软件需求 所有软件都需要用 brew 安装,请确保电脑上已经正确安装配置了 brew。
用 Mac 没有用过 brew?请在终端执行下面的命令安装吧,你将开启一扇新的大门。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 提示: 上面的命令安装成功是有概率的,如果因网络问题导致安装失败,请参考[Homebrew 镜像使用帮助]
如果不喜欢或是不习惯使用命令行在 Mac 上安装软件,本文介绍的软件都有对应的 App 下载。可自行前往软件官网下载。
1.3 私人 ChatGpt 成员 Ollama,大模型管理工具,下载运行各种量化后的 GGUF 格式的大模型大模型,本文选择 qwen:14b。ChatBox,利用本地大模型实现聊天对话的工具 GGUF 是什么?
GGUF(GPT-Generated Unified Format)是一种大模型文件格式由著名开源项目 llama.
前言
当下,活力老人对生活品质和精神文化享受的追求达到空前高度,推动银发文娱旅游教育市场迎来快速发展。今年1月,国办发布银发经济1号文,其中提到丰富老年文体服务、拓展旅游服务业态等,涵盖文娱旅游、兴趣教育领域的方方面面,为银发经济发展指明方向。
在国家政策利好、市场需求不断上升的前提下,越来越多的企业加快布局银发产业。如何建立全行业格局视野以及全业务链路视角,更好地进行产品创新、资源整合,成为企业关注的重点。
在此背景下,7月24日-26日,观潮.银发经济文娱旅游教育全国创始人闭门会【杭州站】成功举办。
本次闭门会由AgeClub和智来时代主办,泊心湾旅聚CLUB联合主办,定向邀请银发经济生态圈内的创始人/掌舵人齐聚。为期3天的闭门会共设有4个专项环节:行业宏观趋势&方法论分享专项、资源对接&需求发布交流专项、分组讨论&话题共创专项、话题总结&案例甄选分享专项。
第一天进行的行业宏观趋势&方法论分享专项上,共有6位知名企业代表来到现场分享经验,多维度挖掘银发文娱旅游教育赛道的新趋势和新商机。
在接下来两天的专项环节,参会企业代表依次进行资源&需求发布,高效精准匹配合作伙伴和上下游资源,并进行分组专项研讨,形成共创成果,针对优质商业案例、行业资源、核心观点进行分享。
本次闭门会共有50余位来自银发行业的知名企业创始人/高管到场,包括同程康养旅居、卓尚集团、六零空间、深蓝梦图、浙江广电集团、50岁我想说、校管家、锣钹信息科技、智名文化、乐龄学堂、安老科技、智脑科技、泰乐居养老服务、寿南山科技、瑞铧智能科技(东莞)、浙江援通科技发展、红舞鞋、江苏双元教育科技、尚培在线教育科技、暖慰科技、河南德合养老服务、悠豆亲子、长轻营养食疗、北京一两三四网络科技有限公司、上海新南洋昂立教育科技、Limblift灵保力、北京银发广舞体育传媒、北京服装学院、一老一宝新供应链(杭州)、佛山市造音所文化、星悦教育、绽放银发科技、杏林(杭州)健康养老有限公司、乐斯教育集团、江苏耘林养老、安康市陈祯教育、内蒙古胜利教育等均赴约本次闭门会,参与行业交流与供需对接。
在此,我们对闭门会【行业宏观趋势&方法论分享专项】的嘉宾演讲干货内容进行提炼整理,以供大家参考。
01
AgeClub总经理&联合创始人殷毅:
紧抓银发经济关键变量机会,拥抱3.2亿新盛年
殷毅分享的主题为《银发经济产业观下的文教康旅场景、案例及需求洞察》。她首先介绍了AgeClub的定位和运作模式,殷毅表示,AgeClub是一个产业服务平台,基于产业媒体、研究洞察、论坛会展以及产业投资四个视角构筑银发经济生态圈。
紧接着殷毅详细梳理了AgeClub的“银发经济观”,其中包含两大核心观点:
1. 银发产业不是360行之一,而是银发族的360行
殷毅表示,中国老年人口拥有“规模大,增速快”等特点,中国银发产业历经十年发展,内涵不断拓展,市场潜力巨大。银发经济拓展至服务业以外的更广阔市场,是向老年人提供产品或服务、以及为老龄阶段做准备等一系列经济活动的总和。
在政策驱动下,中国进一步建立完善银发经济体系,今年1月国办发布银发经济1号文, 让银发经济迎来新元年。
2. 6275新银发消费群是中国银发经济关键变量机会
截至目前,我国有总计超过4.8亿老年人已经或即将进入退休或者高龄状态,他们成为银发市场的广阔消费群体。中度老龄化叠加新银发消费者规模性进场,构成我国银发经济发展的关键转折点。
殷毅强调,关键消费者是银发经济发展的重要推动力。随着“6275”这一代逐步退休,银发经济的市场需求将迅速增长,未来将形成可见的、持续的每年“千万级规模”增量市场。
针对这一关键消费群体,殷毅进一步分享了核心洞察:中国银发经济可分为金孙、为老、备老、养老四大需求市场,围绕这四大需求,主要参与客层可分为三大消费主体,包括新中年(40-59岁)、新盛年(60-74岁)以及新高龄(75岁及以上)。
从“人货场”的中老年商业消费模型来看,如何激发出这三大人群的消费潜力,关键在于搭建链接人群和产品服务的场景。
而文教康旅作为入口场景,在银发消费市场中起到至关重要的作用,能够有效弥补产业生态中退休规划内容和持续陪伴价值的缺失。针对于此,需要看到上述三类人群在文教康旅消费场景的定位和需求的显著区别:
新中年是文教兴趣“增量”消费人群:资产规模更具优势,增加健康消费投入的意愿最强,拥有“爱护自己、照护父母”的双重需求。
新盛年是文教兴趣“核心”消费人群:退休后的孤独感增强,使这一群体慢病管理、社交文娱需求凸显;渴望自我提升和悦己消费,追求第二人生。
新高龄是文教兴趣需求“潜力”宝藏人群:随着年龄增长、身体衰老等因素,生活照护和医疗服务等刚性需求增加,在消费时注重身心维养。
殷毅表示,市场需要用终身成长的视角看待银发消费需求,把握新盛年,储备新中年,拓展新高龄消费。
殷毅还现场分享了日本银发市场的典型商业案例与市场洞察。以Halmek Group为例,其秉持“爱与陪伴”的理念,通过信息资讯、商品销售和社群交流三大业务,满足年长女性需求:通过杂志为女性提供广泛资讯,并借助座谈会、讲座等活动形式为用户提供“社交空间”,同时基于用户真实想法开发原创商品,提高用户与Halmek的联系和忠诚度,通过业务联动带来协同效果。
截至目前,AgeClub已举办5期日本研学活动,力图通过研学产品,深入了解和展现日本不同赛道的银发经济发展情况,为国内企业呈现更全面的银发产业发展图景,挖掘更加具体可实操的老年行业商业机会。今年9月,AgeClub将开启全球研学第6期·欧洲站,立足欧洲银发产业,探索中国银发经济浪潮的未来方向。
最后殷毅表示,从日本老龄化经验看,旅游休闲、趣味娱乐是稳定的、持续迭代的市场机会。而文教康旅(文娱/教育/康养/旅游)是现阶段中国银发经济最好的入口和场景,也是最有成长空间的市场之一。未来需要拥抱3.2亿“6275”新盛年人群,通过满足银发用户多层次需求,打造从自我觉醒到自我成就的圆梦闭环。
02
智来时代创始人邢炼:
以兴趣教育为核心,深度链接银发产业
智来时代的创始人邢炼,分享了公司在产业规划、行业研究和趋势洞察等方面的成果。智来时代的客户涵盖教育培训产业链中的各类机构、政府职能部门、地产集团以及民办全日制学校等。
邢炼详细阐述了终身教育体系,指出其由学前教育、义务教育、普通教育、职业教育和中老年教育等部分组成。在这其中,综合素质培训市场具有巨大潜力,尤其体现在成年和老年阶段。
邢炼特别关注银发教育,指出其在终身教育体系中的重要性。“银发教育涵盖55岁至85岁的广大人群,这一跨度远超其他学段。”邢炼表示,银发产业涉及多个领域,其中银发教育是链接各类消费市场的重要入口,具有极大的发展潜力。
邢炼总结了教育产业的四大要素:产品、营销、运营和品牌。他强调,了解消费者需求是关键,例如,通过研究银发人群的学习特点、家庭选择偏好等,可以优化产品和服务。邢炼还指出,媒体和舆论对行业发展的影响巨大,科技和资本在推动产业发展中也起到重要作用,而宏观政策则在整个链条中处于决定性地位。
紧接着,邢炼从产业政策、人口结构和资本趋势等方面,分析了中老年教育的发展潜力:
政策层面:中国的老龄化政策从顶层设计到具体实施细则维度都较为全面,为银发产业的发展提供了有力保障。政策环境总体向上宽松,有利于银发教育产业的长期发展。
人口结构:中老年各年龄段人口数量均呈现上升趋势,其中50-59岁年龄段人群数量上升最快,他们有充裕的时间和金钱支持接受与个人兴趣相关的培训。
资本方面:近年来银发产业的资本投入呈现增长趋势,投资金额和数量都在增加。其中资本更倾向于B轮及以后的投资。同时,行业尚未出现明显的领跑赛道,这对创业者而言既是机会也是挑战。
邢炼总结道,银发教育不仅是流量聚合的入口,还能与消费品、文旅、健康医疗等多个领域结合,形成完整的产业链。他同时提出了三维健康模型,以政策、资本和消费者为核心,通过优质产品和运营打造强势品牌。
最后,邢炼指出智来时代未来将在银发教育乃至整个教育领域继续深耕,推动行业的创新发展。
03
卓尚集团总助/熊猫女王品牌主理人李淑君:
洞悉细分市场,布局全域营销
在业内被誉为“千万姐”的李淑君,通过自己的实战经验,分享了银发时尚产业中蕴含的新机遇。
李淑君认为,伴随互联网的升级、国际品牌的引入,国内的服装品牌面临诸多挑战,但是如果能够把握风口、找准对策、顺势而为,就能找到第二阶段增长曲线。
首先,李淑君指出,通过多品牌运营策略,精准把握每个细分市场的独特需求,是银发时尚产业实现跨越式发展的关键所在。
以日本ADASTRIA集团为例,李淑君认为其庞大的品牌矩阵覆盖了从10岁+到50岁+的各个阶段的广阔消费群体,展现了高度的市场细分能力和强大的品牌塑造力。不仅满足了不同年龄层消费者的个性化需求,更通过精准定位,实现了市场占有率的稳步提升。
特别是针对银发时尚市场,ADASTRIA集团推出了专属品牌,不仅在设计上贴合中老年人的审美与身体特征,更在功能上注重舒适与健康,赢得银发群体广泛认可。
与此同时,以Dolce & Gabbana、Marks & Spencer等为代表的国际品牌,也纷纷涉足银发时尚领域,通过启用银发模特、推出专属服装系列等方式,进一步丰富了市场供给。特别是Marks & Spencer的银发时尚系列,2019年销售额同比增长6.25%,2021年银发消费者对该系列的满意度高达92%。
紧接着,李淑君以“熊猫女王”品牌为例进行拆解和分享。她认为“熊猫女王”以其全域联动的营销策略,为银发时尚产业发展推广提供了新思路。通过公域营销与私域种草的有机结合,构建了一个全方位、多触点的流量引入体系。
“熊猫女王”利用内容矩阵,包括品牌号、专家号、产品号等多维度内容输出。同时,通过直播、社群运营等手段,进一步加速流量转化,实现了用户沉淀与转化倍增的良性循环。
展望未来,李淑君认为银发时尚产业将面临更多机遇与挑战。企业应密切关注全球银发市场的区域差异,灵活调整市场策略,以敏锐的市场洞察和持续的产品创新,捕捉每一个细微的市场变化。
04
六零空间总经理蔡建:
借助数字化工具,实现行业加速增长
蔡建分享了六零空间从0到1以及从1到10布局银发赛道的心得与经验。据蔡建介绍,六零空间从中老年旅游旅居切入,已经深耕银发赛道11年时间,在全国积累了50万+用户,拥有100+旅居基地,年出行人次达到10万+,线下门店超过100家。
https://learnku.com/articles/73964
https://www.cnblogs.com/54chensongxia/p/11673522.html
https://www.cnblogs.com/Java3y/p/11976312.html
https://github.com/SnDragon/go-treasure-chest
经常在牛客上看到有短链接系统的项目
短链接是将原本冗长的URL做一次“包装”,变成一个简洁可读的URL。
为什么使用短链接 节省发送的内容
我们平时发微博或者短信是都是有最大字符限制的。如果你的一个URL太长,一个URL占用的字符数就已经超过了最大限制,根本发不出去。如果你细心观察过银行的信用卡中心给你发过来的活动短信的话,你会发现短信中的URL好多都是以短链接形式发送的。
提升用户体验
还是以上面的URL为列子。这一大串URL非常不美观,给人的感觉就是木马链接,用户可能都不会去点击。相反的,如果转换成http://url.cn/5MMEX3D,就非常易于阅读,看起来整洁干净,提高用户体验和点击率。
便于链接追踪,分析点击来源
通过短链接可以获知大部分用户的来源,和来源渠道的转化率、广告渠道的质量。通过渠道效果对比数据,更合理的进行广告投放和资源配置。
同一个页面不同的链接
每个用户需要推送带参数的唯一链接。
一定程度上保护原始网站链接
我们在玩Facebook,领英等社交时,有些需要分享一些带有我们网站链接的帖子和消息,尤其对于小白来说,如果发的内容次数过多,并且毫无互动可言或者直接被人举报多次,那么你的网址就会被社交平台标记,一旦标记,链接权重就会受影响,后面再投社交广告时就有麻烦了。
短链接生成原理 如http://url.cn/5MMEX3D这个短链接,当我们访问这个链接的时候我们先访问到url.cn对应的服务器,然后根据参数5MMEX3D找出它对应的原始连接,再重定向到这个原始链接上去。
比较著名的短链域名有腾讯的 url.cn,微博的 t.cn 等,也有很多公司提供了免费 / 收费的短链接开放 API
5MMEX3D和原始链接是如何进行映射的?
hash算法不行,这个场景是不能容许哈希碰撞的,一般不建议这么做
发号器(ID自增)->再使用62进制编码。比如将https://github.com/ZhongFuCheng3y/3y这个长链接看作是10000,然后使用进制转换工具将10000进行62进制编码得到的结果是:2Bi,那么我们就可以得到一个短链接http://url.cn/2Bi。
62进制转换是因为62进制转换后只含数字+小写+大写字母。而64进制转换会含有/,+这样的符号(不符合正常URL的字符)
短链接系统 代码来源于https://learnku.com/articles/73964
https://github.com/SnDragon/go-treasure-chest
使用 Redis 来生成自增 id,并存储映射关系
// Storage 短链服务抽象接口 type Storage interface { Shorten(url string, expSecond int64) (string, error) // 将长链转成短链,并设置过期时间 ShortLinkInfo(sid string) (*entity.UrlDetailInfo, error) // 根据短链id获取详情 UnShorten(sid string) (string, error) // 根据短链id转成原始长链 } // RedisStorage Redis实现短链服务 type RedisStorage struct { redisCli *redis.
目录
第一章:一维搜索问题
黄金分割法
股票交易策略优化
总结:
第二章:线性规划
线性规划(Simplex 算法)
生产计划优化
总结:
第三章:无约束非线性优化问题
梯度下降法
神经网络训练
总结:
牛顿法
非线性系统求解
总结:
第四章:有约束非线性优化问题
拉格朗日乘数法
机械设计优化
总结:
第五章:二次规划
二次规划
投资组合优化
总结:
第六章:混合整数线性规划
混合整数线性规划(MILP)
工厂选址问题
总结:
第七章:多目标规划
多目标规划(权重法)
生产计划优化
总结:
第八章:极大最小化
极大最小化
供货中心选址问题
总结:
第九章:半无限问题
半无限优化
天线设计优化
总结:
第十章:最小二乘问题
线性最小二乘法
数据拟合
总结:
第十一章:非线性方程(组)的求解
牛顿法
非线性系统求解
总结:
割线法
非线性方程求解
总结:
总结
专栏:数学建模学习笔记
第一章:一维搜索问题 黄金分割法 应用类型: 函数优化问题
算法简介: 黄金分割法是一种用于一维搜索问题的优化算法,特别适用于无导数信息的目标函数。通过利用黄金分割比(φ ≈ 0.618),该算法逐步缩小搜索区间,以快速逼近极值点。黄金分割法在优化问题中具有高效性和稳健性,特别适用于目标函数光滑但无导数信息的情况。
优势:
效率高: 通过逐步缩小搜索区间,迅速逼近极值点。简单易用: 算法步骤简单,容易实现和理解。无需导数信息: 适用于目标函数不易求导或不可导的情况。 应用领域: 黄金分割法广泛应用于各种一维搜索优化问题,如经济学中的定价策略、金融学中的投资决策、工程中的设计参数优化等。
编译 | 刘教链
隔夜加密市场承压Mt.Gox派发继续推进,[“7.30教链内参:关于Mt.Gox分发情况的图文介绍”]可资参考。受此影响,市场无力上攻。BTC暂时回撤至66k待命。今天,教链和大家谈一谈新公链的赛道。
早在去年底,针对Messari研报唱衰ETH、唱多SOL,教链就曾一针见血地指出,这是华尔街资本在2022年FTX暴雷被埋之后的自救行动之一环。何故?因为他们这些机构,当初被长着白皮、天然招他们信任的SBF(FTX创办人)给忽悠进了套,重仓了Solana,结果FTX(SBF开办的交易所)被CZ(币安赵长鹏)趁着2022年熊市一波嘴炮直接带走,直接导致“FTX系”的诸多资产鸡飞蛋打!
就说这诸多套牢资产中的一个,Solana,从2021年10月最高峰近260刀的高位,直接给干到了2022年12月不到8刀!最大跌幅高达97%!
这就让这帮被套死的美机构资本婶可忍叔不可忍。他们马上拿出了两个对策:
第一,开展报复行动。利用美国资本影响政治的体制,推动司法部、CFTC、财政部联合执法,把CZ给“请”到美国,罚款判刑。CZ被迫离开自己一手创办的Binance。Binance被美财政部监管。这是去年(2023年)11月份的事了。1年不到就大仇得报,深刻体现了资本主义制度的“先进性” —— 老板(资本)一发话,员工(美政府)执行力那真是杠杠滴!此一段江湖恩怨,暂且不表。
第二,开展自救行动。怎么自救?当然就是联合坐庄,炮制利好,拉升币价咯。华尔街资本炮制的策略,就是把以太坊头上公链之王的皇冠,加冕给Solana。到今年(2024年)3月份,趁着那一波的山寨潮,SOL已经成功飙升至210刀,相比于2022年12月不到8刀,上涨25倍之多。而同期ETH仅从2022年底1070刀涨至2024年3月4090刀,涨幅仅有4倍左右。
大家不妨回忆一下,为什么网上忽然很少有人谈Solana根本就不是去中心化的区块链,因为它最核心处需要一个中心化的定序器才能工作?为什么Maker的创始人Rune Christensen去年要和以太坊创始人Vitalik Buterin对线叫板,说Solana比以太坊更好?为什么头部加密投研机构Messari去年研报要明牌唱衰以太坊(ETH)、唱多SOL?为什么推特等平台上开始盛行“Solana超越以太坊”(SOL flips ETH)的言论?
时至今日,2024年7月最后一天,Solana已跻身加密市值榜单前5,市值近840亿刀。而以太坊的市值则超3960亿刀。虽然体量上还有一个数量级的差距,但是市场中已经有很多人、很多声音,在鼓动不明觉厉的韭菜们,去相信“Solana就是下一个以太坊”、“Solana必将超越以太坊”这样的故事了。
记住,在金融市场,你看到的,往往都是别人想让你看到的。表象的虚假程度,往往和看好之声的响亮程度成正比。Solana,是否真的具备超越以太坊的潜力,是不是有可能成为下一个公链之王?或者相反,Solana的繁荣是不是人为炮制的假象,是不是皇帝的新衣呢?
下面,教链编译Flip Research的研究报告《SOL - 皇帝的新衣》,与大家分享一下,作为启发。
* * *
最近,我的推特时间线上充斥着 SOL 的看牛帖子,中间还夹杂着模因币的骗局。我开始相信,模因币超级周期是真实存在的,Solana将超越以太坊,成为主要的L1(一层链)。但后来我开始挖掘数据,结果至少可以说是令人担忧的…… 在这篇文章中,我介绍了我的发现,以及为什么 Solana 可能是一个“纸牌屋”(指资本和权力的游戏)。
首先让我们看看网友Nachi简明扼要地阐述看好SOL的观点:
【教链注:网友Nachi看牛SOL的言论主要是这样的:
我看到 @BanklessHQ 最近关于$SOL比$ETH折价83%的报道,完全震惊于Solana与ETH的定价失误,甚至Solana是我最大的头寸 根据第二季度的表现,Solana 有
50% 的 ETH+L2 用户
27% 的 ETH+L2 费用
36% 的 DEX 交易量
占 ETH+L2 稳定币交易量的 190
今天,SOL 的 DEX 交易量超过了 ETH 的交易量。即使把 ETH+L2 计算在内,它也在短短几周内从 36% 上升到了 57%
SOL 的 DEX 交易量迟早会翻转 ETH+L2s 和模因币,而模因币是本周期最好的 PMF(教链注:指契合市场需求的产品),还有其他指标
目录
1、前言:
2、数据库搭建 :
建表语句:
3、后端实现,将图片存储进数据库:
思想:
找到图片位置(如下图操作)
图片转为Fileinputstream流的工具类(可直接copy)
存储数据库 mapper层:
service层:
control层:
4、后端实现,从数据库取出图片给前端(可直接看这个,这个给的是所有代码)
dao层:
mapper层:
service层:
control层:
前端拿到效果: 5、前端拿到后端传递的json信息渲染到网页
解释 :
如何实现渲染在网页:
尾言 1、前言: 我们使用数据库经常传递字符串、数字,但是很少在数据库存储图片、Word文件,我也去csdn找了找其他人的文章,只能说这类型的少的可怜,不是收费,就是讲的乱七八糟。既然如此,那么我将为需要这方面知识点的朋友写下这篇文章。本篇文章我们从以下几个方面:
1、数据库搭建2、后端实现,将图片存储进数据库3、后端实现,从数据库取出图片给前端4、前端拿到后端传递的json信息渲染到网页 废话不多说,直接开始!
2、数据库搭建 : 本次数据库我们选择比较经典的Mysql(只是因为我只会这个),mysql提供一个字段类型叫做
blob,对于这个字段类型,我就不过多详细叙述,csdn博客上有,各位可以去看看。
建表语句: create table test2( id int auto_increment primary key , name varchar(100) comment '名称', photo blob comment '照片' ) 3、后端实现,将图片存储进数据库: 思想: 思想:实际上我们可以通过字节流的形式,将图片转成二进制,然后将其保存在数据库里面。我们按照以下步骤:
1、找到图片位置
2、图片转为Fileinputstream流
3、存储数据库
找到图片位置(如下图操作) 图片转为Fileinputstream流的工具类(可直接copy) package com.example.jishedemo2.img; import java.io.*; public class imgeuntil { /** * @author Administrator * */ // 读取本地图片获取输入流 public static FileInputStream readImage(String path) throws IOException { return new FileInputStream(new File(path)); } // 读取表中图片获取输出流 public static void readBin2Image(InputStream in, String targetPath) { File file = new File(targetPath); String path = targetPath.
前言 关于位置编码和RoPE 应用广泛,是很多大模型使用的一种位置编码方式,包括且不限于LLaMA、baichuan、ChatGLM等等我之前在本博客中的另外两篇文章中有阐述过(一篇是关于LLaMA解读的,一篇是关于transformer从零实现的),但自觉写的不是特别透彻好懂
再后来在我参与主讲的类ChatGPT微调实战课中也有讲过,但有些学员依然反馈RoPE不是特别好理解 考虑到只要花足够多的时间 心思 投入,没有写不清楚的,讲课更是如此,故为彻底解决这个位置编码/RoPE的问题,我把另外两篇文章中关于位置编码的内容抽取出来,并不断深入、扩展、深入,比如其中最关键的改进是两轮改进,一个12.16那天,一个12.21那天
12.16那天
小的改进是把“1.1 标准位置编码的起源”中,关于i、2i、2i+1的一系列计算结果用表格规整了下
如此,相比之前把一堆数字一堆,表格更加清晰、一目了然
大的改进是把“3.1.1 第一种形式的推导(通俗易懂版)”的细节重新梳理了以下,以更加一目了然、一看即懂,可能是全网关于RoPE最通俗细致的推导12.21那天
把RoPE的本质给强调出来 最终成为本文
第一部分 transformer原始论文中的标准位置编码 如此篇文章《Transformer通俗笔记:从Word2Vec、Seq2Seq逐步理解到GPT、BERT》所述,RNN的结构包含了序列的时序信息,而Transformer却完全把时序信息给丢掉了,比如“他欠我100万”,和“我欠他100万”,两者的意思千差万别,故为了解决时序的问题,Transformer的作者用了一个绝妙的办法:位置编码(Positional Encoding)
1.1 标准位置编码的起源 即将每个位置编号,从而每个编号对应一个向量,最终通过结合位置向量和词向量,作为输入embedding,就给每个词都引入了一定的位置信息,这样Attention就可以分辨出不同位置的词了,具体怎么做呢?
如果简单粗暴的话,直接给每个向量分配一个数字,比如1到1000之间也可以用one-hot编码表示位置 transformer论文中作者通过sin函数和cos函数交替来创建 positional encoding,其计算positional encoding的公式如下 其中,pos相当于是每个token在整个序列中的位置,相当于是0, 1, 2, 3...(看序列长度是多大,比如10,比如100),代表位置向量的维度(也是词embedding的维度,transformer论文中设置的512维) 至于是embedding向量的位置下标对2求商并取整(可用双斜杠表示整数除法,即求商并取整),它的取值范围是,比如
位置向量的第多少维
(0 2 4等偶数维用sin函数计算)0 1 2 3 4 56....510511 相当于
是指向量维度中的偶数维,即第0维、第2维、第4维...,第510维,用sin函数计算
是向量维度中的奇数维,即第1维、第3维、第5维..,第511维,用cos函数计算 不要小看transformer的这个位置编码,不少做NLP多年的人也不一定对其中的细节有多深入,而网上大部分文章谈到这个位置编码时基本都是千篇一律、泛泛而谈,很少有深入,故本文还是细致探讨下
1.2 标准位置编码的示例:多图多举例 考虑到一图胜千言 一例胜万语,举个例子,当我们要编码「我 爱 你」的位置向量,假定每个token都具备512维,如果位置下标从0开始时,则根据位置编码的计算公式可得『且为让每个读者阅读本文时一目了然,我计算了每个单词对应的位置编码示例(在此之前,这些示例在其他地方基本没有)』
当对上的单词「我」进行位置编码时,它本身的维度有512维
当对上的单词「爱」进行位置编码时,它本身的维度有512维 然后再叠加上embedding向量,可得
当对上的单词「你」进行位置编码时,它本身的维度有512维
.... 最终得到的可视化效果如下图所示
1.3 标准位置编码的coding实现 代码实现如下
“”“位置编码的实现,调用父类nn.Module的构造函数”“” class PositionalEncoding(nn.Module): def __init__(self, d_model, dropout, max_len=5000): super(PositionalEncoding, self).
在开发和部署Web应用时,LNMP(Linux、Nginx、MySQL、PHP)的组合是非常常见的。这篇博客将介绍如何通过一个简单的脚本,在CentOS 7上部署LNMP,并将PHP项目自动部署到服务器上。这不仅可以节省大量的时间,还能确保环境配置的一致性。这个一键部署的脚本不仅简化了部署过程,还能确保配置的正确性和一致性。使用这样的部署方法,可以极大地节省时间和精力,特别是对于频繁需要部署新环境的开发团队而言,效率提升显著。
一、架构简述 1. LNMP简介 LNMP是一种流行的Web服务架构,其中:
Linux是操作系统,用于托管Web服务器。Nginx是一款高性能的HTTP和反向代理服务器,用于处理HTTP请求。MySQL是一个关系型数据库管理系统,用于存储和管理应用数据。PHP是一种服务器端脚本语言,用于生成动态Web内容。 2. 常见的PHP项目部署结构 在实际项目中,PHP项目通常会与nginx和MySQL搭配使用,形成一个完整的Web应用架构。以下是一些常见的部署结构:
LAMP(Linux、Apache、MySQL、PHP):使用Apache作为Web服务器,适合需要.htaccess支持的项目。LNMP(Linux、Nginx、MySQL、PHP):使用Nginx作为Web服务器,适合高并发和静态文件较多的项目。LEMP(Linux、Nginx、MariaDB、PHP):使用MariaDB替代MySQL,适合需要更高性能和更多功能的数据库需求。 以下是这些结构的比较:
架构Web服务器数据库适用场景LAMPApacheMySQL需要.htaccess支持的项目LNMPNginxMySQL高并发和静态文件较多的项目LEMPNginxMariaDB需要更高性能和更多功能的项目 二、部署步骤 1. 移除现有的项目 首先,我们需要清理现有的项目目录,删除/var/www/html目录下的所有文件。这通常是Web项目的默认目录,清理这个目录可以避免旧项目文件的干扰。
sudo rm -rf /var/www/html 2. 安装并配置Nginx和PHP-FPM 安装Nginx和PHP-FPM。这两个软件是运行PHP应用的核心组件。
安装Nginx:Nginx是一款高性能的HTTP和反向代理服务器。我们将使用yum包管理器来安装Nginx。
yum install -y nginx 安装EPEL和yum-utils:EPEL(Extra Packages for Enterprise Linux)提供了高质量的附加软件包,yum-utils包含了yum-config-manager等实用工具。
yum install -y epel-release yum-utils 安装Remi仓库和PHP:Remi仓库提供最新版本的PHP。启用remi-php74仓库并安装PHP 7.4及其常用模块,如php-fpm、php-mysql、php-gd等。
yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm yum-config-manager --enable remi-php74 yum install -y php php-common php-cli php-fpm php-mysql php-gd php-xml php-mbstring php-json php-soap php-xmlrpc 配置PHP-FPM:修改PHP-FPM的配置文件,使其监听127.0.0.1的9000端口,这样Nginx可以通过这个端口与PHP-FPM通信。
sudo sed -i 's#listen = /run/php-fpm/www.sock#listen = 127.