-
Notifications
You must be signed in to change notification settings - Fork 0
/
content.json
1 lines (1 loc) · 79.7 KB
/
content.json
1
{"meta":{"title":"jeanhua's blog","subtitle":"","description":"欢迎来到我的博客,本项目采用hexo框架","author":"jeanhua","url":"http://blog.jeanhua.cn","root":"/"},"pages":[{"title":"","date":"2024-11-02T09:41:40.603Z","updated":"2024-11-02T09:41:40.603Z","comments":true,"path":"404.html","permalink":"http://blog.jeanhua.cn/404.html","excerpt":"","text":"404 很抱歉,您访问的页面不存在 可能是输入地址有误或该地址已被删除"},{"title":"友链","date":"2024-09-14T13:33:29.080Z","updated":"2024-09-14T13:33:29.080Z","comments":true,"path":"friends/index.html","permalink":"http://blog.jeanhua.cn/friends/index.html","excerpt":"","text":"给我留言jeanhua_official@outlook.com互加友链😋"},{"title":"","date":"2024-09-12T15:10:53.342Z","updated":"2024-09-12T15:10:53.342Z","comments":true,"path":"about/index.html","permalink":"http://blog.jeanhua.cn/about/index.html","excerpt":"","text":"我是一名2023级本科生,就读于四川大学计算机科学与技术专业,感谢您的浏览。 updating…"},{"title":"所有分类","date":"2024-09-12T15:08:24.911Z","updated":"2024-09-12T15:08:24.911Z","comments":true,"path":"categories/index.html","permalink":"http://blog.jeanhua.cn/categories/index.html","excerpt":"","text":""},{"title":"所有标签","date":"2024-09-12T15:08:48.483Z","updated":"2024-09-12T15:08:48.483Z","comments":true,"path":"tags/index.html","permalink":"http://blog.jeanhua.cn/tags/index.html","excerpt":"","text":""}],"posts":[{"title":"浅谈C语言的scanf","slug":"浅谈C语言的scanf","date":"2024-11-02T12:43:11.000Z","updated":"2024-11-02T13:00:29.929Z","comments":true,"path":"2024/11/02/af6db4fbaa29/","permalink":"http://blog.jeanhua.cn/2024/11/02/af6db4fbaa29/","excerpt":"前言 最近看到小登的作业,计算输入的数学表达式,只包含加减乘除,不考虑优先级,感觉的好像要用到字符串分割,但是作为新生的作业,应该不会涉及这么难的过程。","text":"前言 最近看到小登的作业,计算输入的数学表达式,只包含加减乘除,不考虑优先级,感觉的好像要用到字符串分割,但是作为新生的作业,应该不会涉及这么难的过程。 投机取巧? 如下: 1234567891011121314151617181920212223242526272829303132#include<stdio.h>int main() { float num,result; char tag; scanf("%f", &result); while (true) { tag = getchar(); if (tag == '\\n') { break; } else { scanf("%f", &num); switch (tag) { case '+': result += num; break; case '-': result -= num; break; case '*': result *= num; break; case '/': result /= num; } } } printf("%f", result);} 这里就用到scanf的特性了,格式化输入,scanf会自动匹配读入的字符,比如上文的%f就会自动匹配浮点类型的(整数类型会隐式转换为浮点型),然后用getchar把运算符读入,读到换行符终止,即可完成","categories":[{"name":"C语言","slug":"C语言","permalink":"http://blog.jeanhua.cn/categories/C%E8%AF%AD%E8%A8%80/"}],"tags":[{"name":"C语言","slug":"C语言","permalink":"http://blog.jeanhua.cn/tags/C%E8%AF%AD%E8%A8%80/"}]},{"title":"做了一个聊天软件,记录踩的坑","slug":"做了一个聊天软件","date":"2024-09-28T16:13:32.000Z","updated":"2024-09-29T10:47:46.721Z","comments":true,"path":"2024/09/29/1fd212270409/","permalink":"http://blog.jeanhua.cn/2024/09/29/1fd212270409/","excerpt":"","text":"仓库地址 客户端:jeanhua/alphab-client: 简洁美观的匿名加密聊天程序(客户端) safe-chat plus (github.com) 服务端:jeanhua/alphab-server: 匿名加密聊天程序(服务器) (github.com) 电脑端截图 手机端截图 分为以下几个方面 flutter C# 加密 其他 一、flutter既然是聊天软件,聊天列表是少不了的,这里我还是常规的用Listview,但是这个会遇到以下几个问题 自动滑动问题 当收到消息或者发送消息时,一般要将列表滑动到底部,即使用下面的代码 1scrollController_scoll.jumpTo(scrollController_scoll.position.maxScrollExtent); 但是当消息长一点就滑动不全,就是划不到底部,网上的解决办法是延迟一秒钟再调用这个代码,但是这个观感就不好,有时候要显示的东西多了也任然无法解决 实际这个本质就是页面没渲染完成就滑动了,此时的maxScrollExtent不是底部,所以我们改成这行代码就行了 123SchedulerBinding.instance.addPostFrameCallback((_) { scrollController_scoll.jumpTo(scrollController_scoll.position.maxScrollExtent);}); 这行是等待页面刷新完成后执行对应代码,就会滑动到底部了 Listview滑动卡顿问题 因为是类似于QQ的聊天界面,我的listview的item是函数返回的行,可能是图片或者文字,然后就出现一个问题,当有图片时滑动会卡一下,网上也没有找到原因,经过多番研究后明白了 由于Listview会自动绘制看见的项目,看不见的会销毁,然后图片,因为图片大小不一,我只指定了宽度,然后高度会自动按比例缩放,就会导致绘制图片的时候卡一下,解决办法也很简单,在外层包一个组件然后指定高度为图片高度就行 二、C#我服务器端是用C#做的,遇到以下几个问题 json 由于C#是强类型语言,一般将json反序列化是要写一个类,比较麻烦,这里有个简单的办法,就是将消息发送的json都用String:String的格式,然后直接反序列化为Dictionary<String,String>就好了,简单快捷 三、加密对于加密我是先用RSA非对称加密传输AES密钥然后后面用AES对称加密的(为什么不直接用RSA,因为非对称加密速度非常慢然后性能消耗比较大),然后一般传的是base64编码的内容 然后flutter和C#加密又有不同,flutter默认的填充方式和C#有点区别,这个不注意看半天不知道问题出在哪里 四、其他网络传输 我刚开始是用socket传数据的,本来没啥问题,后面传图片的时候遇到问题了,一直json反序列化失败,要么就是无法解密base64,看了好久,发现问题处在socket的传输机制上,由于socket是流式传输,数据过长时会导致分包,就是你C#那边接收一次完成收到的数据不是完整的,就会导致解密失败 解密办法就是自己手动把数据分开,然后在里面编一个序号,服务端再重组,当然有一个最简单的办法,换成websocket,这个是应用层的,已经把分包和重组封装完毕了,直接暴力传就行,C#推荐fleck包 其他的还有好多坑,时间过得太久忘了……","categories":[{"name":"随笔","slug":"随笔","permalink":"http://blog.jeanhua.cn/categories/%E9%9A%8F%E7%AC%94/"}],"tags":[{"name":"软件","slug":"软件","permalink":"http://blog.jeanhua.cn/tags/%E8%BD%AF%E4%BB%B6/"},{"name":"代码","slug":"代码","permalink":"http://blog.jeanhua.cn/tags/%E4%BB%A3%E7%A0%81/"},{"name":"flutter","slug":"flutter","permalink":"http://blog.jeanhua.cn/tags/flutter/"}]},{"title":"吐槽flutter","slug":"吐槽flutter","date":"2024-09-20T15:13:58.000Z","updated":"2024-09-20T15:17:24.829Z","comments":true,"path":"2024/09/20/37610e31485f/","permalink":"http://blog.jeanhua.cn/2024/09/20/37610e31485f/","excerpt":"准备拿flutter框架开发大创的前端项目,趁着其他部分没准备好,随便做一个app练练手,本来想继续改我那个safe-chat项目的,但是写的太烂了,导致我现在看不懂了🤣,而且那玩意只做了个发文字的功能,丑的一批,于是从头再来,然后加一下气泡和颜色,加发图片的功能,美化一下ui 写TextField的时候本来想设置限制行数的,结果遇到一个抽象玩意儿","text":"准备拿flutter框架开发大创的前端项目,趁着其他部分没准备好,随便做一个app练练手,本来想继续改我那个safe-chat项目的,但是写的太烂了,导致我现在看不懂了🤣,而且那玩意只做了个发文字的功能,丑的一批,于是从头再来,然后加一下气泡和颜色,加发图片的功能,美化一下ui 写TextField的时候本来想设置限制行数的,结果遇到一个抽象玩意儿 这么看没问题 1234567Container( decoration: const BoxDecoration(color: Colors.yellow), child: const TextField( style: TextStyle(color: Colors.black, fontSize: 25), maxLines: 14, ), ) 但是 问题居然出在这里 1234567Container( decoration: const BoxDecoration(color: Colors.yellow), child: const TextField( style: TextStyle(color: Colors.black, fontSize: 25), maxLines: null, //设置为null就正常了 ),) 最大行数拿去当占位符了是吧。。。。 还是得靠代码整活","categories":[{"name":"随笔","slug":"随笔","permalink":"http://blog.jeanhua.cn/categories/%E9%9A%8F%E7%AC%94/"}],"tags":[{"name":"flutter","slug":"flutter","permalink":"http://blog.jeanhua.cn/tags/flutter/"},{"name":"吐槽","slug":"吐槽","permalink":"http://blog.jeanhua.cn/tags/%E5%90%90%E6%A7%BD/"}]},{"title":"网站全站变灰","slug":"网站全站变灰","date":"2024-09-18T00:15:48.000Z","updated":"2024-09-19T08:50:50.396Z","comments":true,"path":"2024/09/18/68a4e1238d16/","permalink":"http://blog.jeanhua.cn/2024/09/18/68a4e1238d16/","excerpt":"在特殊纪念日时,我们需要将网站变为灰色,只需要在<head></head>之间插入以下代码:","text":"在特殊纪念日时,我们需要将网站变为灰色,只需要在<head></head>之间插入以下代码: 以wordpress为例,在主题设置或者站点配置里面的插入代码区域,插入下面的代码即可 1234567891011121314151617<style>html { filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1); }</style><style>html{filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);filter: grayscale(100%);-webkit-filter: grayscale(100%);-moz-filter: grayscale(100%);-ms-filter: grayscale(100%);-o-filter: grayscale(100%);filter: url(“data:image/svg+xml;utf8,<svg xmlns=\\”http://www.w3.org/2000/svg\\”><filter ….3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\\”/></filter></svg>#grayscale”);filter: progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);filter: gray;-webkit-filter: grayscale(1);}</style>","categories":[{"name":"方法论","slug":"方法论","permalink":"http://blog.jeanhua.cn/categories/%E6%96%B9%E6%B3%95%E8%AE%BA/"}],"tags":[{"name":"网站","slug":"网站","permalink":"http://blog.jeanhua.cn/tags/%E7%BD%91%E7%AB%99/"},{"name":"代码","slug":"代码","permalink":"http://blog.jeanhua.cn/tags/%E4%BB%A3%E7%A0%81/"},{"name":"美化","slug":"美化","permalink":"http://blog.jeanhua.cn/tags/%E7%BE%8E%E5%8C%96/"}]},{"title":"大学最抽象的课程——大物实验","slug":"大学最抽象的课程——大物实验","date":"2024-09-16T12:12:09.000Z","updated":"2024-09-18T00:25:15.574Z","comments":true,"path":"2024/09/16/45f07bb9c805/","permalink":"http://blog.jeanhua.cn/2024/09/16/45f07bb9c805/","excerpt":"大学理工科专业普遍要上的一门抽象课程 看到课表里面有一个大学物理和大学物理实验,还以为是联系在一起的,就和那些专业科的实验差不多,没成想上课才知道,这两者基本没啥关联。","text":"大学理工科专业普遍要上的一门抽象课程 看到课表里面有一个大学物理和大学物理实验,还以为是联系在一起的,就和那些专业科的实验差不多,没成想上课才知道,这两者基本没啥关联。 大物实验连着上四节课,先拿一个小时讲知识,然后教操作,接着就开始实验,然后做完实验后写一大堆的实验报告。自始至终我都不知道在讲什么,莫名其妙就开始实验了,照葫芦画瓢做完实验后,实验报告又是要抄一大堆原理,还有什么画图,有种初高中被罚抄的感觉。 附 罚抄成果What can I say? 悲矣","categories":[{"name":"随笔","slug":"随笔","permalink":"http://blog.jeanhua.cn/categories/%E9%9A%8F%E7%AC%94/"}],"tags":[{"name":"随笔","slug":"随笔","permalink":"http://blog.jeanhua.cn/tags/%E9%9A%8F%E7%AC%94/"}]},{"title":"越想越气,遂作此篇","slug":"越想越气,遂作此篇","date":"2024-09-15T08:31:33.000Z","updated":"2024-09-18T00:25:26.577Z","comments":true,"path":"2024/09/15/a8dbf6d6c3e8/","permalink":"http://blog.jeanhua.cn/2024/09/15/a8dbf6d6c3e8/","excerpt":"故事背景:今天下午刚吃完饭,随手看了眼QQ,群里正在讨论家教的事情,刚好我正在做家教和家教代理,于是上演了此事:","text":"故事背景:今天下午刚吃完饭,随手看了眼QQ,群里正在讨论家教的事情,刚好我正在做家教和家教代理,于是上演了此事: 我最讨厌那种站在自己的角度衡量别人的人,不顾能力和阅历的差别,不顾客观事实,自己有幸得到优于常人的收获就觉得低于这个水平的都是不可接受的,以此劝阻他人,暂且不论是否是炫耀自己,一味地否定与自己不同的观点,也是不可取的。 声明:我的家教单子都是发在专门的家教大群,从未在此群宣传,我在这个群就是水群的,各位在群里的可以自己看看我的聊天记录,我平时也懒得推销,我自己也在做家教,现在还做着两个大创,我也没有时间,对我来说就是平时刷手机的兼职,哪个感兴趣都是自己来找我,另外,对于我为什么说机构工资低,并非是踩一捧一,因为我就认识被机构压榨的同学,对于家教中介,当然聊天记录里面说的骗子中介确实存在,但是机构也有假的,你没见过不代表不存在,不要一味的吹捧这个,另外,我认识的家教中介也有几个开机构的,本质差不多,所以我让新生自己斟酌一下,我也不偏向哪边。于是乎便有人像打了鸡血似的……没什么好说的,看记录: 我的同学的一些看法:","categories":[{"name":"随笔","slug":"随笔","permalink":"http://blog.jeanhua.cn/categories/%E9%9A%8F%E7%AC%94/"}],"tags":[{"name":"随笔","slug":"随笔","permalink":"http://blog.jeanhua.cn/tags/%E9%9A%8F%E7%AC%94/"}]},{"title":"博客在云服务器和github之间的同步","slug":"博客在云服务器和github之间的同步","date":"2024-09-14T15:05:15.000Z","updated":"2024-09-19T15:36:47.361Z","comments":true,"path":"2024/09/14/ebdfcd8245d2/","permalink":"http://blog.jeanhua.cn/2024/09/14/ebdfcd8245d2/","excerpt":"博客框架 hexo,网页服务器 apache2 因为我的博客是放在云服务上的,然后又希望在GitHub上面同步,传统的办法是使用git把public里面的文件放到GitHub上面,然后手动将文件复制到云服务上,这就有一个问题,就是当文章删除的时候会导致删不掉,同时也很繁杂。","text":"博客框架 hexo,网页服务器 apache2 因为我的博客是放在云服务上的,然后又希望在GitHub上面同步,传统的办法是使用git把public里面的文件放到GitHub上面,然后手动将文件复制到云服务上,这就有一个问题,就是当文章删除的时候会导致删不掉,同时也很繁杂。 网上有的办法普遍是在云服务上面弄个git仓库,总之一堆心烦意乱的配置,于是我在想有没有更简单的办法 🤣还真有 只要本地仓库push到github,然后云服务器pull一下不就行了,直截了当 但是手动push然后pull确实也麻烦 python启动! 12345678910111213141516171819202122232425262728293031323334import paramikoimport os# 处理本地数据with open("do.bat",'w',encoding='utf-8') as f: f.write("hexo clean && hexo g && hexo deploy") #不知道为什么python的os.system()会报错,所以写一个bat算了 f.close()os.system(".\\\\do.bat")print("本地处理完成")# SSH连接信息hostname = '192.168.1.1' #这里填写服务器ipport = 22 # 默认SSH端口是22,根据实际情况修改username = 'root'#这里换成账户password = '******'#这里换成你的云服务器密码command = 'cd /var/www/blog/ && git pull origin main' #换成云服务对应的仓库地址# 创建SSH对象ssh = paramiko.SSHClient()# 允许连接不在know_hosts文件中的主机ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())# 连接服务器ssh.connect(hostname, port, username, password)# 执行命令stdin, stdout, stderr = ssh.exec_command(command)print("输出:", stdout.read().decode())print("错误:", stderr.read().decode())# 关闭连接ssh.close()print("完成") 完工!","categories":[{"name":"方法论","slug":"方法论","permalink":"http://blog.jeanhua.cn/categories/%E6%96%B9%E6%B3%95%E8%AE%BA/"}],"tags":[{"name":"python","slug":"python","permalink":"http://blog.jeanhua.cn/tags/python/"},{"name":"服务器","slug":"服务器","permalink":"http://blog.jeanhua.cn/tags/%E6%9C%8D%E5%8A%A1%E5%99%A8/"},{"name":"博客","slug":"博客","permalink":"http://blog.jeanhua.cn/tags/%E5%8D%9A%E5%AE%A2/"},{"name":"ssh","slug":"ssh","permalink":"http://blog.jeanhua.cn/tags/ssh/"}]},{"title":"网站推荐","slug":"网站推荐","date":"2024-09-14T13:33:56.000Z","updated":"2024-09-14T13:36:28.704Z","comments":true,"path":"2024/09/14/0b9b13757f02/","permalink":"http://blog.jeanhua.cn/2024/09/14/0b9b13757f02/","excerpt":"","text":"编程GitHub: Let’s build from here · GitHubhttps://github.com/ 工作台 - Gitee.comhttps://gitee.com/ 我的工作台-AtomGithttps://atomgit.com/ 中国红客联盟https://www.ihonker.com/ Vercelhttps://vercel.com/ 吾爱破解 - LCG - LSG|安卓破解|病毒分析|www.52pojie.cnhttps://www.52pojie.cn/forum.php CSDN - 专业开发者社区https://www.csdn.net/ 易语言资源网 - 专注易语言资源分享 - 易语言资源网https://www.eyuyan.la/ 首页 - 洛谷 | 计算机科学教育新生态https://www.luogu.com.cn/ 清华大学开源软件镜像站 | Tsinghua Open Source Mirrorhttps://mirrors.tuna.tsinghua.edu.cn/ 菜鸟教程 - 学的不仅是技术,更是梦想!https://www.runoob.com/ 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台https://leetcode.cn/ EasyX Graphics Library for C++https://easyx.cn/ CodeProject - For those who codehttps://www.codeproject.com/ VC驿站 - C语言|C++|VC|MFC|培训|教程|源码|编程学习交流论坛https://www.cctry.com/ VirusTotal - Homehttps://www.virustotal.com/gui/home/upload 博客园 - 开发者的网上家园https://www.cnblogs.com/ Unity 资源商店 - 优质3D 2D游戏制作资源平台https://assetstore.unity.com/zh?locale=zh_CN&force=true Virtual Judgehttps://vjudge.net/ 看雪-安全社区|安全招聘|kanxue.comhttps://bbs.kanxue.com/ OSCHINA - 中文开源技术交流社区https://www.oschina.net/ Python to Csharp Converterhttps://www.codeconvert.ai/python-to-csharp-converter 编程语言,A 部分 | Courserahttps://www.coursera.org/learn/programming-languages 鱼皮的编程宝典 | 鱼皮的编程宝典https://www.codefather.cn/ Easy2D 轻量级游戏开发框架https://easy2d.cn/ ArkTS 语言 - HarmonyOS应用开发官网https://developer.harmonyos.com/cn/develop/arkts/ JetBrains: 软件开发者和团队的必备工具https://www.jetbrains.com/zh-cn/ cloudflarehttps://dash.cloudflare.com/58fd28c4ea179f7277577e3dce050c97/welcome CODING | 一站式软件研发管理平台https://g-zeno1542.coding.net/vcs/depots GitCode - 开发者的代码家园https://gitcode.com/ 工具Desmos | 图形计算器https://www.desmos.com/calculator?lang=zh-CN 3D 计算器 - GeoGebrahttps://www.geogebra.org/3d?lang=zh_CN GeoGebra 经典https://www.geogebra.org/classic?lang=zh_CN 聚合图床 - 免费无限图片上传https://www.superbed.cn/ 金数据 - 人人可用的数据平台https://jinshuju.net/ 在线查Q绑https://zy.xywlapi.cc/home.html Visual TK, Visual Python Tkinter GUI Creatorhttps://www.visualtk.com/ 视频转gif - 在线工具https://tool.lu/video2gif/ 在线LaTeX公式编辑器-编辑器https://www.latexlive.com/home AirDroid Cast 网页版:无线投屏到浏览器的免费工具https://webcast.airdroid.com/sender-success 在线将 MP4 转换为 GIF - 免费动画 GIF制作器https://www.video2edit.com/zh/convert/mp4-to-gif 最优图像优化 - Recompressorhttps://zh.recompressor.com/ BgRemover-在线图片去底工具-背景变透明|图片底色去除去掉https://www.aigei.com/bgremover/ Editor.md - 开源在线 Markdown 编辑器https://pandao.github.io/editor.md/ HTML网页构建器v3 - htmlpage.cnhttps://htmlpage.cn/builder/ 可视化html编辑器http://www.58html.com/html/ SunPics - 基于EasyImage的开源免费图床https://pics.sunbangyan.cn/ 艺术字体在线生成_艺术字转换器_字体转换器_艺术字网https://www.yishuzi.cn/ 剪映_剪映视频创作 - 剪映官网https://www.capcut.cn/learning?page_enter_from=videocut_pc curl to Pythonhttps://curlconverter.com/python/ 简单易用的代码分享工具 - 代码小抄https://www.codecopy.cn/ python在线运行,在线工具,在线编译IDE_w3cschoolhttps://www.w3cschool.cn/tryrun/runcode?lang=python3 TypeScript 中文网: 在线运行https://ts.nodejs.cn/play 南瓜文档工具https://bdwk.588230.com/ SMS-Activate是在线接受短信的虚拟号码服务https://sms-activate.org/cn markdown在线转pdf - www.strerr.comhttps://www.strerr.com/cn/markdown2pdf.html 在线将语音转换为文本-免费音频转换器https://www.audio2edit.com/zh/speech-to-text TTSReader |文本到语音阅读器。 在线。 准确。 免费。https://ttsreader.com/zh/ 在线文章关键词提取工具 - 任霏的个人博客网站https://www.renfei.net/kitbox/keyWords ChatTTS: Text-to-Speech For Chathttps://chattts.com/zh ChatTTS - 免费在线使用https://www.chattts.co/zh Word转markdownhttps://products.aspose.app/words/zh/conversion/word-to-md# 小狐工具-登录https://card.weikea.cn/admin/login?code=csdn Mokaink-极简文字卡片生成工具https://moka.ink/ 懒设计-海报设计https://www.fotor.com.cn/ 寻路算法可视化https://qiao.github.io/PathFinding.js/visual/ Proxysite 免费代理 - 快速在线网络代理 - Lumiproxyhttps://www.lumiproxy.com/zh-hans/online-proxy/proxysite/ CodeConvert AI - Convert code with a click of a buttonhttps://www.codeconvert.ai/app 纹理调色https://heropatterns.com/#appearance-settings Privacy | 个人数据泄漏检测https://detail.aiuys.com/?_=bkB 免费网络代理和尖端在线代理|代理代理https://cdn.croxyproxy.com/_zh/ 资源煎饼搜音乐下载网 - 全网音乐免费下载 搜你妹音乐在线下载高清无损超清音乐网https://www.jbsou.cn/ vimeohttps://vimeo.com/ Home - VEEDhttps://www.veed.io/workspaces/742c029b-ba01-4e28-93fa-bbf03c3aa4c5/home Greasy Fork - 安全、实用的用户脚本大全https://greasyfork.org/zh-CN Anna’s Archivehttps://annas-archive.se/ 3D Models | CGTraderhttps://www.cgtrader.com/search?keywords=csgo 爱给网_音效配乐_3D模型_视频素材_免费下载https://www.aigei.com/ 赔钱机场https://pqjc.site/#/plan Top free game assets - itch.iohttps://itch.io/game-assets/free 安娜的档案 - ITEMhttps://item.ink/archives/annas.html 免费正版高清图片素材库 超过4.4百万张优质图片和视频素材可供免费使用和下载 - Pixabay - Pixabayhttps://pixabay.com/zh/ 小黑鸟https://xhnzz.xyz/index/ Jay的资源库 | 互联网资源集大成者https://www.lovejay.top/ 免费4K高清壁纸-电脑背景图片-Mac壁纸网站「哲风壁纸」https://haowallpaper.com/ 免费的渐变背景CSS3样式 | oulu.mehttps://color.oulu.me/ iconfont-阿里巴巴矢量图标库https://www.iconfont.cn/ 美国地址生成,美国人虚构信息生成-世界各国虚拟身份信息、地址、信用卡生成https://www.haoweichi.com/ 免费代理IP [ 实时更新 ] - 站大爷https://www.zdaye.com/free/ 免费API - 提供免费接口调用平台https://api.aa1.cn/ 关于CSS Tricks - CSS Trickshttps://lhammer.cn/You-need-to-know-css/#/zh-cn/introduce?v=1 学习中国知网https://www.cnki.net/ 导数。分步计算器https://mathdf.com/der/cn/ Cambridge Dictionary | English Dictionary, Translations & Thesaurushttps://dictionary.cambridge.org/ 剑桥词典:查找意思、解释及翻译https://dictionary.cambridge.org/zhs/ 网盘蓝奏云https://pc.woozooo.com/mydisk.php 我的坚果云 - 坚果云 - 云盘|网盘|企业网盘|同步|备份|无限空间|免费网络硬盘|企业云盘https://www.jianguoyun.com/#/ 夸克网盘https://pan.quark.cn/list#/list/all 123云盘https://www.123pan.com/ 坚果云收件箱https://workspace.jianguoyun.com/inbox/create/pro AIChatGPThttps://chat.openai.com/ 智谱清言https://chatglm.cn/main/alltoolsdetail stabilityhttps://stability.ai/ AiPPThttps://www.aippt.cn/generate 文心一言https://yiyan.baidu.com/ Copilothttps://copilot.microsoft.com/ 讯飞智文 - AI在线生成PPT、Wordhttps://zhiwen.xfyun.cn/ 通义千问https://tongyi.aliyun.com/qianwen/ 智谱AI开放平台https://open.bigmodel.cn/overview Immersity AI | Convert Image and Video to 3Dhttps://app.immersity.ai/upload AI助手https://bot.360.com/ 游戏控制台 | Aternos | 免费Minecraft服务器https://aternos.org/console/ 各种表Git 常用命令大全https://www.runoob.com/note/56524 Dos命令大全完整版-CSDN博客https://blog.csdn.net/chengxuyuanxb/article/details/81093398 华为前言 | 《ArkUI实战》https://www.arkui.club/ API合集慕名APIhttps://xiaoapi.cn/","categories":[{"name":"资源","slug":"资源","permalink":"http://blog.jeanhua.cn/categories/%E8%B5%84%E6%BA%90/"}],"tags":[{"name":"工具","slug":"工具","permalink":"http://blog.jeanhua.cn/tags/%E5%B7%A5%E5%85%B7/"},{"name":"网站推荐","slug":"网站推荐","permalink":"http://blog.jeanhua.cn/tags/%E7%BD%91%E7%AB%99%E6%8E%A8%E8%8D%90/"},{"name":"资源","slug":"资源","permalink":"http://blog.jeanhua.cn/tags/%E8%B5%84%E6%BA%90/"}]},{"title":"ubuntu服务器配置网站","slug":"ubuntu服务器配置网站","date":"2024-07-20T14:05:25.000Z","updated":"2024-09-12T14:52:14.066Z","comments":true,"path":"2024/07/20/85976580bd9f/","permalink":"http://blog.jeanhua.cn/2024/07/20/85976580bd9f/","excerpt":"","text":"一、安装apache212sudo apt-get updatesudo apt-get install apache2 然后在地址栏输入公网IP看是否能访问到如下页面 此时网站的页面在/var/www/html/目录下,修改即可 二、配置多网站如果想要一个服务器配置多个网站比如 jeanhua.cn 和 blog.jeanhua.cn(通过主机头来区分) 在Apache的配置目录中(通常是/etc/apache2/sites-available),为每个网站创建一个新的配置文件。 对于blog.jeanhua.cn:1sudo nano /etc/apache2/sites-available/blog.jeanhua.cn.conf 添加以下内容: 123456789101112131415<VirtualHost *:80> ServerAdmin **@qq.com # 这里是你的邮箱 ServerName blog.jeanhua.cn # 域名 ServerAlias www.blog.jeanhua.cn # 别名 DocumentRoot /var/www/blog # 网页根目录 <Directory /var/www/blog> Options Indexes FollowSymLinks #这里建议把 Indexes 去掉,避免网页目录结构暴露 AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined</VirtualHost> 对于jeanhua.cn:1sudo nano /etc/apache2/sites-available/jeanhua.cn.conf 添加以下内容: 123456789101112131415<VirtualHost *:80> ServerAdmin # 这里填邮箱 ServerName jeanhua.cn # 域名 ServerAlias www.jeanhua.cn # 别名 DocumentRoot /var/www/html # 网页根目录 <Directory /var/www/html> Options Indexes FollowSymLinks #这里建议把 Indexes 去掉,避免网页目录结构暴露 AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined</VirtualHost> 接下来启用配置 12sudo a2ensite blog.jeanhua.cn.confsudo a2ensite jeanhua.cn.conf 注意:如果你的服务器上已经有一个默认的虚拟主机配置(通常名为000-default.conf),并且你不想使用它,你可以通过运行下面的命令来禁用它 1sudo a2dissite 000-default.conf 最后,重载Apache配置以应用更改: 1sudo systemctl reload apache2 三、配置https正常情况下到上面已经结束了,但是我们访问时浏览器经常提示页面不安全,于是我们要配置https,同时提升网站安全性。 1.安装 CertbotCertbot 是一个自动化的证书颁发和管理工具,可以用来获取 Let’s Encrypt 的证书。 12sudo apt-get updatesudo apt-get install certbot python3-certbot-apache 2.获取 SSL 证书使用 Certbot 获取 SSL 证书,同时自动修改 Apache 配置文件以启用 HTTPS。 对于 blog.jeanhua.cn: 1sudo certbot --apache -d blog.jeanhua.cn -d www.blog.jeanhua.cn 对于 jeanhua.cn: 1sudo certbot --apache -d jeanhua.cn -d www.jeanhua.cn 在过程中,Certbot 可能会询问你一些问题,比如你的电子邮件地址和是否需要自动重定向 HTTP 流量到 HTTPS,请输入你的邮箱并稍后前往邮箱点击链接验证 3.检查 Apache 配置Certbot 应该已经自动修改了 Apache 的配置文件,为每个域名添加了 HTTPS 虚拟主机配置。你可以通过以下命令来检查配置文件: 12sudo nano /etc/apache2/sites-available/blog.jeanhua.cn-le-ssl.confsudo nano /etc/apache2/sites-available/jeanhua.cn-le-ssl.conf 4.启用 SSL 虚拟主机如果 Certbot 没有自动启用新的 SSL 虚拟主机配置文件,你可以手动启用它们: 12sudo a2ensite blog.jeanhua.cn-le-ssl.confsudo a2ensite jeanhua.cn-le-ssl.conf 5.重启 Apache1sudo systemctl restart apache2 大功告成,现在访问你的页面应该可以看到是https安全的了","categories":[],"tags":[{"name":"服务器","slug":"服务器","permalink":"http://blog.jeanhua.cn/tags/%E6%9C%8D%E5%8A%A1%E5%99%A8/"},{"name":"网站","slug":"网站","permalink":"http://blog.jeanhua.cn/tags/%E7%BD%91%E7%AB%99/"}]},{"title":"服务器入门","slug":"服务器入门","date":"2024-07-15T03:08:00.000Z","updated":"2024-09-12T14:52:37.623Z","comments":true,"path":"2024/07/15/259b0a619408/","permalink":"http://blog.jeanhua.cn/2024/07/15/259b0a619408/","excerpt":"","text":"刚买了一个云服务器,在这里浅谈一下入门配置信息,方便更好使用服务器 1.服务器系统镜像选择建议使用ubuntu系统 2.添加一个用户(一般不直接用root用户)Ⅰ.添加用户 1sudo useradd -r -m -s /bin/bash jeanhua #jeanhua是用户名称 其中参数的意义如下: -r:建立系统账号-m:自动建立用户的登入目录-s:指定用户登入后所使用的shell Ⅱ.创建密码 1sudo passwd jeanhua Ⅲ.分配权限 123456sudo chmod +w /etc/sudoers # 添加配置文件写权限sudo vim /etc/sudoers # 编辑配置文件# 然后添加下图的配置语句,并且保存修改sudo chmod -w /etc/sudoers # 去掉配置文件写权限 现在可以用新建的用户登陆了 3.更多配置ftp服务器 由于本地与服务器之间的文件传输不便,于是配置ftp服务器是刚需 输入指令安装 1sudo apt-get install vsftpd 开启服务 (记得去服务器管理界面把安全组配置改一下,开放20,21端口) 1service vsftpd start 电脑端下载FileZilla软件 安装顺序配置连接","categories":[],"tags":[{"name":"服务器","slug":"服务器","permalink":"http://blog.jeanhua.cn/tags/%E6%9C%8D%E5%8A%A1%E5%99%A8/"}]},{"title":"关于Visual Studio报错scanf_s等*_s代码报错的解决方案","slug":"关于Visual-Studio报错scanf-s等-s代码报错的解决方案","date":"2024-06-17T08:41:00.000Z","updated":"2024-09-18T00:26:48.148Z","comments":true,"path":"2024/06/17/c85462058ea9/","permalink":"http://blog.jeanhua.cn/2024/06/17/c85462058ea9/","excerpt":"","text":"问题:用visual studio写代码时经常碰到scanf报错,strcpy报错等情况 但是又不想改代码怎么办呢? 解决办法 点击”项目” 点击”属性” “C/C++” “常规” “SDL检查”设置为否 然后确定即可正常编译","categories":[],"tags":[{"name":"visual studio","slug":"visual-studio","permalink":"http://blog.jeanhua.cn/tags/visual-studio/"}]},{"title":"python爬取校园集市帖子并生成词云图","slug":"python爬取校园集市帖子并生成词云图","date":"2024-06-15T08:37:00.000Z","updated":"2024-09-18T00:26:57.316Z","comments":true,"path":"2024/06/15/986d735abcc0/","permalink":"http://blog.jeanhua.cn/2024/06/15/986d735abcc0/","excerpt":"注:本篇需要python基础,json基础 前言:上篇我们学习了怎么用python获取百度热搜,在这篇中,我们将进一步学习,利用python爬取校园集市帖子并生成词云图","text":"注:本篇需要python基础,json基础 前言:上篇我们学习了怎么用python获取百度热搜,在这篇中,我们将进一步学习,利用python爬取校园集市帖子并生成词云图 懒的话直接点这里进入完整代码仓库🤣 [toc]灵感背景:经常在群里看见机器人转发的校园集市帖子,于是想要爬取下来分析一下 第一步,分析请求 点击链接进入浏览器页面 按下F12打开浏览器开发者界面 点击网络,按下F5刷新 刷新后如图所示 点击预览,寻找目标请求 最终找到请求 点击标头,获取url 第二步,编写代码1234567import requests#发送http请求url = 'https://u.xiaouni.com/user-api/content/article/info?id=17020'response = requests.get(url=url)#打印结果print(response.text) 结果如下 1{"code":200,"msg":"\\u8bf7\\u6c42\\u6210\\u529f","data":{"id":17020,"title":"\\u7f8e\\u56fd\\u8001\\u5e74\\u5b66\\u672f\\u4f1a\\u8baeGSA","content":"\\u6709\\u65e0\\u5144\\u5f1f\\u59d0\\u59b9\\u4e4b\\u524d\\u53bb\\u8fc7\\u7f8e\\u56fd\\u5b66\\u672f\\u5e74\\u4f1aGSA\\uff0c\\u6c42\\u52a9","user_id":16872,"reading":243,"contact_id":16736,"school_id":1,"classify_id":2,"created_at":1718436786,"images":[],"art_like":0,"is_end":0,"is_top":0,"is_rec":0,"status":1,"account":"\\u82f9\\u679c\\u53d1\\u7b8d","avatar":"https:\\/\\/os.xiaouni.com\\/uploadsimage\\/2023\\/09-01\\/c3e65afd79583b01.jpg","zone_id":4,"is_like":0,"is_collect":0,"collect_count":0,"comment_count":0,"user":{"id":16872,"is_authority":0,"nickname":"\\u5c0f\\u7ea2","portrait":"https:\\/\\/thirdwx.qlogo.cn\\/mmopen\\/vi_32\\/ECkvJVPXNstK1G0syFKuAvko2dF3qibGKLich2mscnYPfiaDylZrLICCG9phvUKbBaDAuk8JgbVibYyyd1AWgs9Qqg\\/132","leaver_color":"#FADC3A","leaver_name":"\\u5927\\u4e00"},"contact":{"id":16736,"money":"0","contact_way_id":2,"contact_info":"3076689048","contact_name":"","contact_way":{"id":2,"name":"QQ"}},"school":{"id":1,"name":"\\u534e\\u897f"},"classify":{"id":2,"name":"\\u4e07\\u80fd\\u6c42\\u52a9","is_anonymous":0}}} 我们发现这个是json格式的内容,而且是以unicode进行编码的结果我们进一步修改代码,获取帖子标题和内容 12345678910111213import jsonimport requests# 发送http请求url = 'https://u.xiaouni.com/user-api/content/article/info?id=17020'response = requests.get(url=url)# json格式化json_data = json.loads(response.text)# 获取标题和内容title = json_data['data']['title']content = json_data['data']['content']# 打印标题和内容print('title:\\t'+title,'\\ncontent:'+content) 结果如下 12title: 美国老年学术会议GSA content:有无兄弟姐妹之前去过美国学术年会GSA,求助 成功获取集市帖子 第三步,批量获取帖子我们改进代码,获取最近的300条帖子,写到一个txt文件中方便后续使用 1234567891011121314151617181920212223242526272829303132import jsonimport requestsclass getContent: def __init__(self, id: int): self.url = 'https://u.xiaouni.com/user-api/content/article/info?id=' + str(id) def run(self): # 发送http请求 response = requests.get(url=self.url) # json格式化 json_data = json.loads(response.text) # 获取状态码,标题和内容 status_code = json_data['code'] if status_code == 200: title = json_data['data']['title'] content = json_data['data']['content'] # 返回标题和内容 return '['+title+']:'+content+'\\n' else: return 'none'for i in range(1, 301): id = 17020 - i print(i) text = getContent(id).run() if text != 'none': with open('content.txt', 'a', encoding='utf-8') as f: f.write(text) 结果如下 第四步,绘制词云图编写一个新的python脚本,将上面获取到的帖子内容绘制成词云图这步需要安装jieba库(注:这里只是jieba库的简单运用,并未排除一些无意义的词,若要更加出色的表现,可进行jieba库的学习)和wordcloud库 12pip install jiebapip install wordcloud 接下来编写代码 123456789101112131415161718192021import jieba # 用于文章分词import wordcloud # 用于将词语生成词云图# 读取文本with open("content.txt", encoding="utf-8") as f: s = f.read()# 生成分词列表ls = jieba.lcut(s)# 从后向前遍历列表,删除长度小于2的元素for i in range(len(ls) - 1, -1, -1): if len(ls[i]) < 2: del ls[i]text = ' '.join(ls) # 连接成字符串stopwords = ["可以", "一个", "有没有"] # 去掉不需要显示的词wc = wordcloud.WordCloud(font_path="msyh.ttc", width=2560, height=1600, background_color='white', max_words=300, stopwords=stopwords) # msyh.ttc电脑本地字体,防止中文乱码wc.generate(text) # 生成词云图wc.to_file("1.png") # 保存词云图片 打开1.png结果如下 (词语出现频率越高,在词云图中的字就越大) 成功实现词云图绘制","categories":[{"name":"爬虫","slug":"爬虫","permalink":"http://blog.jeanhua.cn/categories/%E7%88%AC%E8%99%AB/"}],"tags":[{"name":"python","slug":"python","permalink":"http://blog.jeanhua.cn/tags/python/"},{"name":"爬虫","slug":"爬虫","permalink":"http://blog.jeanhua.cn/tags/%E7%88%AC%E8%99%AB/"}]},{"title":"python爬虫获取百度热搜","slug":"python爬虫获取百度热搜","date":"2024-06-15T07:13:00.000Z","updated":"2024-09-18T00:27:06.482Z","comments":true,"path":"2024/06/15/f349664957c7/","permalink":"http://blog.jeanhua.cn/2024/06/15/f349664957c7/","excerpt":"注:本篇学习需要python基础,html基础,xpath基础 前言:在上篇中,我们学习了怎么用python发送网页请求来获取网站的源代码,在这篇中,我们将进一步学习 本篇目标:利用python爬虫获取百度热搜","text":"注:本篇学习需要python基础,html基础,xpath基础 前言:在上篇中,我们学习了怎么用python发送网页请求来获取网站的源代码,在这篇中,我们将进一步学习 本篇目标:利用python爬虫获取百度热搜 第一步,用浏览器打开百度热搜网站百度热搜网址 https://top.baidu.com/board?tab=realtime页面如下: 第二步,按下F12键打开浏览器开发者界面,找到热搜文本元素 第三步,右键单击文本元素复制Xpath 第四步,编写代码123456789101112import requestsfrom lxml import etree# 发送HTTP请求获取网页内容url = 'https://top.baidu.com/board?tab=realtime'response = requests.get(url)# 解析网页代码doc = etree.HTML(response.text)# 寻找Xpath结果result = doc.xpath(r'//*[@id="sanRoot"]/main/div[2]/div/div[2]/div[2]/div[2]/a/div[1]/text()') #这里粘贴复制下来的xpath# 打印结果print(result[0]) 结果如下: 100后女生成为上市公司总裁 我们成功获取到了第一个热搜,但是我们想要全部的热搜怎么办?于是我们继续复制第二个热搜的xpath,与第一个对比 12第一个 //*[@id="sanRoot"]/main/div[2]/div/div[2]/div[ 2 ]/div[2]/a/div[1]/text()第二个 //*[@id="sanRoot"]/main/div[2]/div/div[2]/div[ 3 ]/div[2]/a/div[1]/text() 我们发现中间有一个数字不同,因此发现规律,接下来我们改进代码 1234567891011121314import requestsfrom lxml import etree# 发送HTTP请求获取网页内容url = 'https://top.baidu.com/board?tab=realtime'response = requests.get(url)# 解析网页代码doc = etree.HTML(response.text)# 拼接xpath获取结果for i in range(1,12): xpath = '//*[@id="sanRoot"]/main/div[2]/div/div[2]/div['+str(i)+']/div[2]/a/div[1]/text()' res = doc.xpath(xpath) # 打印结果 print(str(i)+":"+res[0]) 结果如下: 12345678910111: 中国为何始终属于“全球南方” 2: 00后女生成为上市公司总裁 3: 菲律宾“坐滩”军舰有多毒 4: 应对高温“渴”不容缓 5: 浙传毕业大片 这知识学了是真用 6: 大学生39天减重近20斤后“猝死” 7: 内蒙古一停工写字楼内发现遗体 8: 四级结束 已老实 9: 棚改小面积能换更大平方?谣言 10: 李开复:对中国大模型DAU很失望 11: 4名小男孩合力挪走挡路树枝 目标达成,在下一篇文章中,我们将进一步进阶学习","categories":[{"name":"爬虫","slug":"爬虫","permalink":"http://blog.jeanhua.cn/categories/%E7%88%AC%E8%99%AB/"}],"tags":[{"name":"python","slug":"python","permalink":"http://blog.jeanhua.cn/tags/python/"},{"name":"爬虫","slug":"爬虫","permalink":"http://blog.jeanhua.cn/tags/%E7%88%AC%E8%99%AB/"}]},{"title":"python爬虫入门","slug":"python爬虫入门","date":"2024-06-15T06:36:00.000Z","updated":"2024-09-19T15:03:10.004Z","comments":true,"path":"2024/06/15/347ddd515696/","permalink":"http://blog.jeanhua.cn/2024/06/15/347ddd515696/","excerpt":"注:本篇需要python基础,html基础","text":"注:本篇需要python基础,html基础 一、准备工作在开始编写Python爬虫之前,我们需要做一些准备工作。首先,确保你的电脑上已经安装了Python环境。然后,我们需要安装一些Python库,这些库可以帮助我们更方便地编写爬虫。其中最重要的库是requests。requests库用于发送HTTP请求。安装这个库非常简单,只需要在命令行中输入以下命令即可: 1pip install requests 二、简单爬虫示例接下来,让我们通过一个简单的例子来感受一下Python爬虫的乐趣。假设我们要爬取一个名为 “http://www.quanshu.wang/“ 的网站内容那么,让我们开始编写代码吧! 123456import requests# 发送HTTP请求获取网页内容url = 'http://www.quanshu.wang/'response = requests.get(url)# 打印网页内容print(response.text) 运行这段代码,结果如下 12345678910111213<!DOCTYPE html><html> <head> <meta charset="utf-8"> <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width"> <meta name="keywords" content="全书网, 在线阅读, 最新小说,女生小说"> <meta name="description" content="全书网是一个免费在线阅读最新小说的网站,提供各种类型的小说供读者选择,快来全书网畅游阅读的世界吧!"> <title>全书网-在线全本免费小说</title> <meta http-equiv="content-language" content="zh-CN"/> <link rel="stylesheet" href="/template/home/default_web/css/style.css" type="text/css"/> </head> ……(省略下面的内容) 即可得到该网站的源码,但是我们发现这并没有什么使用价值,因为这只是未解析的网站源代码 在下篇文章中,我们将探讨如何利用爬虫获取实用的数据","categories":[{"name":"爬虫","slug":"爬虫","permalink":"http://blog.jeanhua.cn/categories/%E7%88%AC%E8%99%AB/"}],"tags":[{"name":"python","slug":"python","permalink":"http://blog.jeanhua.cn/tags/python/"},{"name":"爬虫","slug":"爬虫","permalink":"http://blog.jeanhua.cn/tags/%E7%88%AC%E8%99%AB/"}]},{"title":"解决安装cuda时vs报错MSB3721的问题","slug":"解决安装cuda时vs报错MSB3721的问题","date":"2024-06-03T01:03:00.000Z","updated":"2024-09-21T05:30:21.785Z","comments":true,"path":"2024/06/03/c99c3826bf5e/","permalink":"http://blog.jeanhua.cn/2024/06/03/c99c3826bf5e/","excerpt":"","text":"以下几种可能 1.调整调试平台为x64 2.点击vs顶部导航栏的调试->最下面那一项属性->CUDA C/C++ ->Common->CUDA Dustuom Dir设置为你安装CUDA toolkit的目录 3.如果你的电脑系统用户名为中文,请前往环境变量->用户变量,将tmp和temp的值修改为一个新文件夹(建议在D盘里面创建一个temp文件夹,然后把C盘用户里面的temp文件夹里面的内容剪切到D:\\temp里面然后修改用户变量的值)","categories":[{"name":"方法论","slug":"方法论","permalink":"http://blog.jeanhua.cn/categories/%E6%96%B9%E6%B3%95%E8%AE%BA/"}],"tags":[{"name":"visual studio","slug":"visual-studio","permalink":"http://blog.jeanhua.cn/tags/visual-studio/"},{"name":"cuda","slug":"cuda","permalink":"http://blog.jeanhua.cn/tags/cuda/"}]},{"title":"汇编指令大全","slug":"汇编指令大全","date":"2024-05-15T15:54:00.000Z","updated":"2024-09-12T14:53:29.009Z","comments":true,"path":"2024/05/15/13c8f9b8f4b0/","permalink":"http://blog.jeanhua.cn/2024/05/15/13c8f9b8f4b0/","excerpt":"","text":"8080汇编手册数据传输指令它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据。 通用数据传送指令 MOV 传送字或字节。 MOVSX 先符号扩展,再传送。 MOVZX 先零扩展,再传送。 PUSH 把字压入堆栈。 POP 把字弹出堆栈。 PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈。 POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈。 PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈。 POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈。 BSWAP 交换32位寄存器里字节的顺序。 XCHG 交换字或字节。( 至少有一个操作数为寄存器,段寄存器不可作为操作数) CMPXCHG 比较并交换操作数。( 第二个操作数必须为累加器AL/AX/EAX ) XADD 先交换再累加。( 结果在第一个操作数里 ) XLAT 字节查表转换。 BX 指向一张 256 字节的表的起点, AL 为表的索引值 (0-255,即 0-FFH); 返回 AL 为查表结果。 ( [BX+AL]->AL ) 输入输出端口传送指令 IN I/O端口输入。 ( 语法: IN 累加器, {端口号│DX} ) OUT I/O端口输出。 ( 语法: OUT {端口号│DX},累加器 ) 输入输出端口由立即方式指定时, 其范围是 0-255; 由寄存器 DX 指定时, 其范围是 0-65535。 目的地址传送指令 LEA 装入有效地址。 例: LEA DX,string ;把偏移地址存到DX。 LDS 传送目标指针,把指针内容装入DS。 例: LDS SI,string ;把段地址:偏移地址存到DS:SI。 LES 传送目标指针,把指针内容装入ES。 例: LES DI,string ;把段地址:偏移地址存到ES:DI。 LFS 传送目标指针,把指针内容装入FS。 例: LFS DI,string ;把段地址:偏移地址存到FS:DI。 LGS 传送目标指针,把指针内容装入GS。 例: LGS DI,string ;把段地址:偏移地址存到GS:DI。 LSS 传送目标指针,把指针内容装入SS。 例: LSS DI,string ;把段地址:偏移地址存到SS:DI。 标志传送指令 LAHF 标志寄存器传送,把标志装入AH。 SAHF 标志寄存器传送,把AH内容装入标志寄存器。 PUSHF 标志入栈。 POPF 标志出栈。 PUSHD 32位标志入栈。 POPD 32位标志出栈。 二、算术运算指令 ADD 加法 ADC 带进位加法 INC 加 1 AAA 加法的ASCII码调整 DAA 加法的十进制调整 SUB 减法 SBB 带借位减法 DEC 减 1 NEG 求反(以 0 减之) CMP 比较 AAS 减法的ASCII码调整 DAS 减法的十进制调整 MUL 无符号乘法 IMUL 整数乘法 AAM 乘法的ASCII码调整 DIV 无符号除法 IDIV 整数除法 AAD 除法的ASCII码调整 CBW 字节转换为字 CWD 字转换为双字 CWDE 字转换为双字 CDQ 双字扩展 三、逻辑运算指令 AND 与运算 OR 或运算 XOR 异或运算 NOT 取反 TEST 测试 SHL 逻辑左移 SAL 算术左移 SHR 逻辑右移 SAR 算术右移 ROL 循环左移 ROR 循环右移 RCL 通过进位的循环左移 RCR 通过进位的循环右移 四、串指令 DS:SI:源串段寄存器:源串变址。 ESI:目标串段寄存器:目标串变址。 CX:重复次数计数器。 AL/AX:扫描值。 D标志:0表示重复操作中SI和DI应自动增量;1表示应自动减量。 Z标志:用来控制扫描或比较操作的结束。 指令列表: MOVS:串传送。 (MOVSB 传送字符,MOVSW 传送字,MOVSD 传送双字) CMPS:串比较。 (CMPSB 比较字符,CMPSW 比较字) SCAS:串扫描。 LODS:装入串。(LODSB 传送字符,LODSW 传送字,LODSD 传送双字) STOS:保存串。 重复前缀: REP:当CX/ECX<>0时重复。 REPE/REPZ:当ZF=1或比较结果相等,且CX/ECX<>0时重复。 REPNE/REPNZ:当ZF=0或比较结果不相等,且CX/ECX<>0时重复。 REPC:当CF=1且CX/ECX<>0时重复。 REPNC:当CF=0且CX/ECX<>0时重复。 五、程序转移指令1. 无条件转移指令 (长转移) JMP:无条件转移指令。 CALL:过程调用。 RET/RETF:过程返回。 2. 条件转移指令 (短转移,-128到+127的距离内) JA/JNBE:不小于或不等于时转移。 JAE/JNB:大于或等于转移。 JB/JNAE:小于转移。 JBE/JNA:小于或等于转移。 ... (其他条件转移指令) 3. 循环控制指令(短转移) LOOP:CX不为零时循环。 LOOPE/LOOPZ:CX不为零且标志Z=1时循环。 LOOPNE/LOOPNZ:CX不为零且标志Z=0时循环。 JCXZ:CX为零时转移。 JECXZ:ECX为零时转移。 4. 中断指令 INT:中断指令。 INTO:溢出中断。 IRET:中断返回。 5. 处理器控制指令 HLT:处理器暂停,直到出现中断或复位信号才继续。 WAIT:当芯片引线TEST为高电平时使CPU进入等待状态。 … (其他处理器控制指令) 六、伪指令 DW:定义字(2字节)。 PROC:定义过程。 ENDP:过程结束。 SEGMENT:定义段。 ASSUME:建立段寄存器寻址。 ENDS:段结束。 END:程序结束。","categories":[],"tags":[{"name":"汇编","slug":"汇编","permalink":"http://blog.jeanhua.cn/tags/%E6%B1%87%E7%BC%96/"}]},{"title":"看累了?刷会b站!","slug":"看累了?刷会b站","date":"2024-04-27T14:47:00.000Z","updated":"2024-07-20T14:08:47.299Z","comments":true,"path":"2024/04/27/d4ef61b01025/","permalink":"http://blog.jeanhua.cn/2024/04/27/d4ef61b01025/","excerpt":"","text":"","categories":[],"tags":[]},{"title":"博客markdown内嵌网页","slug":"博客markdown内嵌网页","date":"2024-04-27T10:31:00.000Z","updated":"2024-09-18T00:26:33.823Z","comments":true,"path":"2024/04/27/0b07f4fdbced/","permalink":"http://blog.jeanhua.cn/2024/04/27/0b07f4fdbced/","excerpt":"","text":"在markdown插入以下代码即可 123<div style="position: relative; padding: 30% 45%;"> <iframe style="position: absolute; width: 100%; height: 100%; left: 0; top: 0;" src="网页链接" frameborder="1" scrolling="yes" width="320" height="240"></iframe></div> 比如下面的效果","categories":[],"tags":[{"name":"markdown","slug":"markdown","permalink":"http://blog.jeanhua.cn/tags/markdown/"}]},{"title":"高等数学笔记","slug":"高等数学笔记","date":"2024-04-26T13:57:00.000Z","updated":"2024-09-12T14:53:02.572Z","comments":true,"path":"2024/04/26/b8db80ffa065/","permalink":"http://blog.jeanhua.cn/2024/04/26/b8db80ffa065/","excerpt":"","text":"高等数学概念、公式及常用结论内容整理来源于网络,可能存在疏漏和错误,若有侵权请 联系作者 [email protected] 删除 [toc] 第一章 函数 极限 连续常用的基本极限 1-无穷型 极限常用结论 常用的等价无穷小 x→∞,有时也可以使用等价无穷小代换。只要函数内部是无穷小即可。比如,x→∞时,sin(1/x)~1/x。 洛必达法则求极限什么时候可以用洛必达法则 洛必达法则的适应类型 泰勒公式求极限略,见下一章 利用单调有界准则求极限 证明极限存在(单调有界) 等式两端取极限进行运算 求极限时的常用结论 1.先证明有界性在利用单调有界准则求极限的时候,几个常用不等式一定要想到下列不等式来证明有界性!!! 两个正数乘积或者两个正数相加的时候: 三个(或以上)正数相乘相加:算数平均值、几何平均值 2.再证明单调性 后项减前项 后项比前项 无穷小量阶的比较(其实就是0比0极限计算) 洛必达法则 等价代换 泰勒展开式 第二章 导数与微分导数与微分的概念导数与微分的几何意义 微分dy是切线上的改变量。用dy来代替$\\Delta$y,几何上是用切线上的改变量来代替实际上曲线上的改变量。换言之,再微小的局部,用直线的均匀变化来代替曲线的非均匀变化。 导数定义证明常用方法 连续、可导、可微之间的关系 倒数公式及求导法则基本初等函数的导数公式 隐函数求导法 反函数的导数 高阶导数常用的高阶导数公式 高阶导数求导方法: 直接使用公式 求一阶导数,二阶导数…归纳规律 第三章 微分中值定理及导数应用微分中值定理费马引理、罗尔定理 拉格朗日中值定理 拉格朗日中值定理几何意义:曲线上至少有一点的切线,和连接两端点的弦是平行的。 柯西中值定理 微分中值定理的关系 微分中值定理的本质都是用来建立导数和函数之间的联系。当题目给我们导数的条件,让我们研究函数,或者相反。我们就应该想到使用微分中值定理。 上面四个定理都是用来建立一阶导数和函数之间的关系,当我们需要建立高阶导数与函数之间的关系时,往往使用泰勒公式。 泰勒公式 泰勒展开式的意义 建立f(x)和高阶导数的关系· 用多项式来逼近f(x)。因为多项式求极限、导数和积分都很简单。 皮亚诺余项和拉格朗日余项的比较 皮亚诺余项称为(局部泰勒公式)。因为只能保证误差在$x$充分靠近$x_0$ 的时候比较小。 拉格朗日余项(整体)。在n趋向无穷的时候在一个大的范围内都是趋向于0的。 皮亚诺余项-局部性态-极限、极值 拉格朗日余项-整体性态-最值、不等式 常用的泰勒公式 泰勒公式记忆方法 其他几个泰勒展开式可以通过等价代换推导 导数应用极值 最值(最大值、最小值) 曲线的凹凸性 拐点 渐近线 快速判断、找到斜渐近线首先几何上理解渐近线:曲线上的一个动点,沿着曲线趋向于无穷远时,这个点到直线之间的距离,记作d。如果距离d趋向0,那么这条直线就叫做曲线的渐近线。如果这条直线是水平的,那就是水平渐近线。如果直线是垂直的,就是垂直渐近线。如果直线是斜的,那就是斜渐近线。 如果一个曲线能够写成一个线性函数(ax+b)加上趋向0的数的形式。那么这个曲线就有斜渐近线,且那个线性函数就是该曲线的斜渐近线。 方程的根(证明) 不等式的证明 常用不等式、基本不等式、经典不等式 中值定理证明题第四章 不定积分不定积分的概念与性质原函数存在定理 不定积分的性质 不定积分基本公式 三种主要积分法第一换元积分法(凑微分法) 常见的凑非分形式: (3)很常用 第二换元积分法(三角代换去根号 ) 分部积分法 三个常用的积不出的积分 三类常见可积函数积分有理函数积分 部分分式法:把分母分解因式分解到不能再分解,然后进行拆项,(这里可以通过初等数学里拆项裂项技巧进行操作)然后逐个积分。考试中该方法用得很少,基本都是特殊方法 三角有理式积分三角有理式可以通过万能代换法,一定能做出来,但是运算量很大。尽量使用特殊方法。 一般三角函数次数比较低的积分适合用万能代换,如果方次高的话,代换完了,有理式的方次也很高,比较麻烦。 简单无理函数积分 对于此类函数积分,很少能找到简单方法,所以一般都是用这种一般方法。 第五章 定积分与反常积分定积分的概念定积分的性质积分上限的函数微积分第一基本定理 定理 定积分的计算 利用已有公式(华氏公式) 计算n项和极限时,如何判断使用夹逼原理还是定积分的定义 计算n项和极限时,需要首先判断n项中的变化部分和主体部分。 用变化部分比上主体部分,当n趋向于无穷大时,如果等于0,那么说明变化部分是主体部分的次量级,这时候用夹逼原理。如果二者之比为非零常数,那么说明是同量级,这时候用定积分的定义来计算(提1/n可爱因子)。 定积分几何意义算定积分的值两个常用基本结论: 无穷区间上的反常积分 上述极限存在,则称反常积分收敛;反之,则称其发散。 常用结论(p积分) 无界函数的反常积分 常用结论(p积分) 常考题型: 反常积分的敛散性(使用定义,使用p积分) 反常积分的计算 第六章 定积分的应用几何应用平面图形的面积 这两个公式可以算,或者可以直接对1做个二重积分,也能算出来面积。 旋转体体积该公式可以用,但下面有更一般方法。 环绕x轴旋转: 竖带绕着x轴旋转,形成一个以x轴为圆心的薄原片,然后再从a到b积分。 环绕y轴旋转: 竖带绕着y轴旋转,形成薄圆筒,把这个圆筒从某处截断,展开成一个长方体。长方体的长度就是圆筒的周长2*pi *x;长方体的截面积等于高度f(x)c乘以宽度dx。 注意:上面的方法可以用,但是同样的,能够有更加一般、简单的方法来处理这一类题目。可以使用二重积分来解决这类问题。 第七章 微分方程常微分方程的基本概念一阶微分方程可分离变量的方程 齐次微分方程 一阶线性微分方程 注意:只要加最后面一个常数C,前面的积分都不用加常数,而且前面积分积出来ln(x)都不用加绝对值。 高阶线性微分方程 方程(1)的两个解线性无关的充要条件是它们之比不为常数。 常系数齐次线性微分方程 虽然这个方法是用于二阶微分方程,但是三阶乃至于更高阶其实都适用。比如三阶方程解出来三个根,那么把这些根所对应的解加起来就能得到三阶微分方程的解。 ### 常系数非齐次线性微分方程 差分方程 第八章 多元函数微分学多元函数的极限多元函数的连续性偏导数 高阶偏导数 全微分 连续、可偏导及可微之间的关系 复合函数微分法 全微分形式的不变性 隐函数微分法 求偏微分的两种方法 直接对于给定的公式两端对x求偏导,整理得出z对x的偏导。z对y的偏导同理。注意:在使用此方法时,把z作为x,y的函数并进行求导。 使用上述公式求偏微分。注意:当对大F求x的偏导时,要把z当做常数来处理,千万不要当做函数继续求导!!! 利用微分形式不变性。把dz用dx和dy表达出来。 无约束极值 条件极值及拉格朗日乘数法 最大值、最小值略 第九章 二重积分二重积分的概念及性质 二重积分的计算利用直角坐标计算 利用极坐标计算 利用函数的奇偶性计算 利用变量的轮换对称性计算 第十章 无穷级数常数项级数 级数的审敛准则正向级数 交错级数 任意项级数 幂级数 注意:当遇到缺项的幂级数的时候,不能直接用上面的这个公式,计算方法如下: 幂级数的性质 函数的幂级数展开 几个常用的展开式","categories":[{"name":"高等数学","slug":"高等数学","permalink":"http://blog.jeanhua.cn/categories/%E9%AB%98%E7%AD%89%E6%95%B0%E5%AD%A6/"}],"tags":[{"name":"高等数学","slug":"高等数学","permalink":"http://blog.jeanhua.cn/tags/%E9%AB%98%E7%AD%89%E6%95%B0%E5%AD%A6/"},{"name":"笔记","slug":"笔记","permalink":"http://blog.jeanhua.cn/tags/%E7%AC%94%E8%AE%B0/"}]},{"title":"JHMG游戏引擎","slug":"JHMG游戏引擎","date":"2024-04-26T12:32:00.000Z","updated":"2024-09-12T14:51:28.598Z","comments":true,"path":"2024/04/26/5636a234bad4/","permalink":"http://blog.jeanhua.cn/2024/04/26/5636a234bad4/","excerpt":"","text":"✅JHMG 游戏引擎 JHMG 游戏引擎是我写的一个简单的2D游戏引擎,旨在帮助快速搭建和开发2D游戏。 源仓库地址 https://github.com/jeanhua/JHMG-engine gitee镜像地址 https://gitee.com/jeanhua/JHMG-engine 代码案例仓库 https://github.com/jeanhua/demo-codes-of-JHMG 特点 提供了游戏场景管理、游戏对象管理、界面显示、音效播放、用户输入处理等核心功能。 包含了一系列基础的自定义类,如字符串处理、数学计算和图形操作等。 易于使用和扩展,适合开发小型的2D游戏或图形应用程序。 依赖 EasyX:图形库,用于图形界面的绘制和处理。 下载你可以从GitHub仓库下载源代码: 1git clone https://github.com/jeanhua/JHMG-engine.git 或者点此下载各版本 类图 详细信息类介绍GameObject 类 描述: 代表游戏中的各种对象,可以是圆形、矩形、菱形或三角形等形状。 功能: 管理对象的位置、大小、图像和可见性。 处理对象之间的碰撞检测。 允许设置游戏循环中对象的自定义行为。 GameUI 类 描述: 管理游戏中的用户界面元素,例如图片等。 功能: 控制界面元素的位置、大小、图像和可见性。 处理用户界面元素的鼠标交互,如点击事件。 GameUIText 类 描述: 管理游戏用户界面中的文本元素。 功能: 设置文本的内容、位置和可见性。 GameSound 类 描述: 处理游戏音效的播放和控制。 功能: 播放、停止、暂停和恢复音效。 设置音效的音量和播放位置。 获取音效的长度和状态。 GameInput 类 描述: 处理游戏中的键盘输入。 功能: 捕获键盘按键事件。 GameScene 类 描述: 表示游戏中的一个场景,包含游戏对象、用户界面元素和文本元素。 功能: 管理场景中的游戏对象、用户界面元素和文本元素。 处理游戏循环中的场景逻辑。 MouseAction 类 描述: 处理游戏对象和用户界面元素的鼠标交互。 功能: 处理鼠标点击事件,并触发相应的回调函数。 GameInputBox 类 描述: 处理游戏中的输入框,允许用户输入文本。 功能: 显示输入框,并允许用户输入文本内容。 GameMessageBox 类 描述: 管理游戏中的消息框,用于向用户显示消息。 功能: 显示消息框,并显示指定的消息内容。 Game 类 描述: 表示游戏本身,管理游戏窗口、场景、帧率和声音等。 功能: 初始化游戏窗口并启动游戏循环。 设置游戏窗口的大小和标题。 控制游戏的帧率。 管理游戏中的场景和声音。 处理游戏中的输入事件。 String 类 描述: 字符串类型,提供字符串操作的功能。 功能: 构造函数:可以从字符串、字符数组或另一个 String 对象构造。 运算符重载:支持字符串的拼接、赋值、比较等操作。 类型转换:可以将字符串转换为整型、浮点型等数据类型。 字符串操作:包括索引、截取、查找等操作。 Fraction 类 描述: 分数类型,用于处理分数的计算。 功能: 构造函数:可以从整型、浮点型或分子分母构造分数。 运算符重载:支持分数的加减乘除等运算。 分数化简:将分数进行化简操作。 类型转换:可以将分数转换为浮点型。 Vector2 类 描述: 二维向量,表示坐标或方向。 功能: 构造函数:可以从两个浮点数构造二维向量。 运算符重载:支持向量的加减乘除等运算。 向量操作:包括距离计算、叉乘、点乘等操作。 List 类模板 描述: 链表模板类,用于管理元素的链表结构。 功能: 添加元素:在链表末尾添加元素。 删除元素:删除链表中的节点。 构造函数:初始化链表。 析构函数:释放链表内存。 Matrix 类 描述: 矩阵类,用于矩阵的运算和处理。 功能: 构造函数:可以从二维数组、其他矩阵对象或行列数构造矩阵。 矩阵运算:支持矩阵的加减乘、转置、逆等运算。 求解行列式:计算矩阵的行列式值。 判断相等:判断两个矩阵是否相等。 Transform 基类(包含子类 Circle,Rectangle,Triangle,Diamond,Trapezium) 描述: 二维物体类,包括圆形、矩形、三角形、菱形等。 功能: 各种形状的构造:可以构造圆形、矩形、三角形、菱形等物体。 移动:可以移动物体的位置。 面积计算:可以计算物体的面积。 碰撞检测:可以检测物体之间的碰撞。 💡基础教程 ·基本思路:模块化开发,创建对象,绑定事件,加入游戏1.创建游戏对象 1234567 //声明全局游戏对象Game* mainGame;int main(){//创建游戏对象mainGame = new Game; ······ 2.设置窗口大小和标题 12mainGame->setWindowSize(Vector2(800, 600));mainGame->setWindowTitle("Game demo"); 3.设置游戏帧率 1mainGame->setTargetFrame(165); 4.创建游戏场景 1GameScene* scene = new GameScene; 5.添加场景到游戏中 1mainGame->setScene(scene); 6.创建游戏对象 1GameObject* player = new GameObject(new circle(25, Vector2(170, 70)), ".\\\\pkq.png", 50, 50, true); 7.添加游戏对象到场景中 1scene->addGameObject("player", player); 8.创建游戏UI对象 1GameUI* xiaoxin = new GameUI(Vector2(0, 0), Vector2(50, 50), ".\\\\xiaoxin.png", true); 9.添加UI对象到场景中 1scene->addGameUI("xiaoxin", xiaoxin); 10.创建文本UI对象 1GameUIText* text = new GameUIText(String("fps"), Vector2(100, 100)); 11.添加文本UI到场景中 1scene->addGameUIText("text", text); 12.初始化窗口开始游戏 1mainGame->initWindow(); 其他常用代码1.获取游戏场景 1auto scene = mainGame->getScene(); 2.获取游戏对象 1auto player = scene->getGameObject("player"); 3.获取UI对象 1auto xiaoxin = scene->getGameUI("xiaoxin"); 4.获取UI文本对象 1auto text = scene->getGameUIText("text"); 5.从场景删除物体 1scene->removeGameObject("player"); 6.从场景删除UI对象 1scene->removeGameUI("xiaoxin"); 7.从场景删除UI文本对象 1scene->removeGameUIText("text") 8.获取键盘输入 1234567891011121314151617181920212223242526auto key = mainGame->Input.getKey();//判断键盘输入if (key == KeyMessage::a){ //键盘按下 a 的操作}if (key == KeyMessage::d){ //键盘按下 b 的操作}if (key == KeyMessage::w){ //键盘按下 c 的操作}if (key == KeyMessage::s){ //键盘按下 d 的操作}if (key == KeyMessage::space){ //键盘按下 空格 的操作}if (key == KeyMessage::esc){ //键盘按下 Esc退出键 的操作} 进阶教程1.绑定游戏对象碰撞事件(物体碰撞调用) 12345678910111213//声明碰撞事件函数void trigger(GameObject* other){ //other是与 绑定的的游戏对象 相碰撞的 ·游戏对象· 的指针 //碰撞输出名字 cout << mainGame->getScene()->getName(other) << endl;}//绑定碰撞事件int main(){ ··· player->setOnCollision(trigger);} 2.绑定游戏对象循环事件(每帧调用一次) 1234567891011//声明循环函数void loop(){ //循环事件}//绑定循环函数int main(){ ··· player->setGameLoopFunc(loop);} 3.绑定游戏对象点击事件(点击调用) 123456789101112131415161718192021//声明点击事件void onClick(int messageType, Vector2 position,GameObject* self){ //输出被点击对象id名 cout<<mainGame->getScene()->getName(self)<<endl; //点击输出 if (messageType == MouseMessage::leftDown) cout << "左键按下" << endl; if (messageType == MouseMessage::leftUp) cout << "左键放开" << endl; if (messageType == MouseMessage::rightDown) cout << "右键按下" << endl; if (messageType == MouseMessage::rightUp) cout << "右键放开" << endl;}//绑定点击事件int main(){ ··· player->mouseAction->setClickFunc(onClick);} 完整示例123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120#include "JHMG engine.h"using namespace JHMG_ENGINE;//声明全局游戏对象Game* mainGame;//声明函数void loop(GameObject* self);void trigger(GameObject* self, GameObject* other);void onClick(int messageType, Vector2 position,GameObject* self);int main(){ //创建游戏对象 mainGame = new Game; //设置窗口大小和标题 mainGame->setWindowSize(Vector2(800, 600)); mainGame->setWindowTitle("Game demo"); //设置游戏帧率 mainGame->setTargetFrame(165); //创建游戏场景 GameScene* scene = new GameScene; //添加场景到游戏中 mainGame->setScene(scene); //创建UI对象 GameUI* xiaoxin = new GameUI(Vector2(0, 0), Vector2(800, 600), ".\\\\background.jpg", true); //添加UI对象到场景中 scene->addGameUI("xiaoxin", xiaoxin); //创建文本UI GameUIText* text = new GameUIText(String("fps"), Vector2(100, 100)); //添加文本UI到场景中 scene->addGameUIText("text", text); //创建游戏对象 GameObject* player = new GameObject(new Circle(25, Vector2(170, 70)), ".\\\\pkq.png", 50, 50, true); //绑定游戏对象碰撞事件(物体碰撞调用) player->setOnCollision(trigger); //绑定游戏对象循环事件(每帧调用一次) player->setGameLoopFunc(loop); //添加游戏对象到场景中 scene->addGameObject("player", player); //创建游戏对象 GameObject* pikaqiu = new GameObject(new Circle(25, Vector2(270, 70)), ".\\\\pkq.png", 50, 50, true); //绑定游戏对象点击事件(点击调用) pikaqiu->mouseAction->setClickFunc(onClick); //添加游戏对象到场景中 scene->addGameObject("pikaqiu", pikaqiu); //初始化窗口开始游戏 mainGame->initWindow();}void loop(GameObject* self){ //获取游戏场景 auto scene = mainGame->getScene(); //获取游戏对象 auto player = scene->getGameObject("player"); //获取UI文本对象 auto text = scene->getGameUIText("text"); //拼接显示fps text->text = "fps:" + std::to_string(int(1000 / mainGame->deltaTime)); //获取键盘输入 auto key = mainGame->input.getKey(); //判断键盘输入 if (key == KeyMessage::a) { Vector2 currentPosition = player->Transform.Circle->getPosition(); //x = deltaX + X0 = V*t + X0 currentPosition += Vector2(-250, 0) * ((float)mainGame->deltaTime / 1000); player->Transform.Circle->move(currentPosition); } if (key == KeyMessage::d) { Vector2 currentPosition = player->Transform.Circle->getPosition(); currentPosition += Vector2(250, 0) * ((float)mainGame->deltaTime / 1000); player->Transform.Circle->move(currentPosition); } if (key == KeyMessage::w) { Vector2 currentPosition = player->Transform.Circle->getPosition(); currentPosition += Vector2(0, -250) * ((float)mainGame->deltaTime / 1000); player->Transform.Circle->move(currentPosition); } if (key == KeyMessage::s) { Vector2 currentPosition = player->Transform.Circle->getPosition(); currentPosition += Vector2(0, 250) * ((float)mainGame->deltaTime / 1000); player->Transform.Circle->move(currentPosition); } if (key == KeyMessage::space) { //删除物体 std::cout << "delete pikaqiu" << std::endl; scene->removeGameObject("pikaqiu"); } if (key == KeyMessage::esc) { //退出游戏 exit(0); }}void trigger(GameObject* self,GameObject* other){ //碰撞输出名字 std::cout << mainGame->getScene()->getName(other) << std::endl;}void onClick(int messageType, Vector2 position,GameObject* self){ std::cout<<mainGame->getScene()->getName(self)<< std::endl; //点击输出 if (messageType == MouseMessage::leftDown) std::cout << "左键按下" << std::endl; if (messageType == MouseMessage::leftUp) std::cout << "左键放开" << std::endl; if (messageType == MouseMessage::rightDown) std::cout << "右键按下" << std::endl; if (messageType == MouseMessage::rightUp) std::cout << "右键放开" << std::endl;}","categories":[],"tags":[{"name":"游戏引擎","slug":"游戏引擎","permalink":"http://blog.jeanhua.cn/tags/%E6%B8%B8%E6%88%8F%E5%BC%95%E6%93%8E/"},{"name":"大作业","slug":"大作业","permalink":"http://blog.jeanhua.cn/tags/%E5%A4%A7%E4%BD%9C%E4%B8%9A/"}]},{"title":"寻道大学•逐梦启航","slug":"寻道大学•逐梦启航","date":"2024-04-26T12:21:00.000Z","updated":"2024-07-20T14:08:57.425Z","comments":true,"path":"2024/04/26/c6d88edcd957/","permalink":"http://blog.jeanhua.cn/2024/04/26/c6d88edcd957/","excerpt":"","text":"Seeking the Way, Dreaming of a New Beginning四川大学站2024宣传片 链接跳转 点此跳转 宣传片(bushi) 点击跳转 2024宣传片 点此跳转 2023宣传片 招生专业目录 2024本科招生亮点 多少分可以上川大? 寝室条件 详情 学院分布","categories":[],"tags":[]},{"title":"GK320刷机","slug":"GK320刷机","date":"2024-04-26T12:19:00.000Z","updated":"2024-09-12T14:51:06.211Z","comments":true,"path":"2024/04/26/238a8dd14134/","permalink":"http://blog.jeanhua.cn/2024/04/26/238a8dd14134/","excerpt":"","text":"仓库地址Gitee页面 https://gitee.com/jeanhua/super-engine-for-GK320 GitHub页面 https://github.com/jeanhua/super-engine-for-GK320 提供GK320/GK310智能电子学生证的破解刷机服务 这本来是我高一(2020)用易语言写的,到高二基本完成所有工作,旨在破解这个学生证,给无聊的高中生活加点乐趣,现在毕业了分享给大家,其中离不开我同学的帮助,在这里一并感谢他们使用说明下载发行版压缩包解压后进行以下操作:1.首先打开ADBDriverInstaller.exe这个程序,将学生证连接到电脑(注意:学生证自带的数据线是不支持数据传输的,仅能充电,所以请使用其他数据线)2.点击refresh按钮刷新,看到下方出现设备后,点击install(这步是安装adb驱动,以进行下一步工作)3.驱动安装完成后即可打开super engine for GK320.exe这个程序,页面如下 出现此页面即为成功4.单击mtk-su传输按钮,出现传输完成即可(这步是利用这个文件获取临时root权限),一部学生证仅进行一步此操作5.接下来即可进行其他操作,根据需要即可 软件的一些说明apk安装:普通安装:安装至/data/app/ 目录,即正常安装目录,安装完可正常卸载系统预装目录:安装至系统预装目录,可正常卸载,但文件不会删除,恢复出厂设置后仍自动安装系统目录:安装至系统目录:此目录下的软件不能卸载,一般是系统软件,普通软件安装至此目录可能会有问题 软件安装问题部分软件安装至普通目录或系统预装目录出现问题,可进行覆盖安装(下文) 覆盖安装由于系统限制,不能在学生证上直接安装程序,但是可以覆盖安装先在学生证安装一个图形桌面,即手机桌面程序,推荐x桌面,然后安装文件管理器,推荐mix管理器,在里面打开apk安装包进行覆盖安装 注意一定不要在学生证设置里面的开发者设置乱搞!!!防止变砖(我高中时就有好多同学好奇去点导致手机变砖!)","categories":[{"name":"笔记","slug":"笔记","permalink":"http://blog.jeanhua.cn/categories/%E7%AC%94%E8%AE%B0/"}],"tags":[{"name":"刷机","slug":"刷机","permalink":"http://blog.jeanhua.cn/tags/%E5%88%B7%E6%9C%BA/"},{"name":"工具","slug":"工具","permalink":"http://blog.jeanhua.cn/tags/%E5%B7%A5%E5%85%B7/"}]}],"categories":[{"name":"C语言","slug":"C语言","permalink":"http://blog.jeanhua.cn/categories/C%E8%AF%AD%E8%A8%80/"},{"name":"随笔","slug":"随笔","permalink":"http://blog.jeanhua.cn/categories/%E9%9A%8F%E7%AC%94/"},{"name":"方法论","slug":"方法论","permalink":"http://blog.jeanhua.cn/categories/%E6%96%B9%E6%B3%95%E8%AE%BA/"},{"name":"资源","slug":"资源","permalink":"http://blog.jeanhua.cn/categories/%E8%B5%84%E6%BA%90/"},{"name":"爬虫","slug":"爬虫","permalink":"http://blog.jeanhua.cn/categories/%E7%88%AC%E8%99%AB/"},{"name":"高等数学","slug":"高等数学","permalink":"http://blog.jeanhua.cn/categories/%E9%AB%98%E7%AD%89%E6%95%B0%E5%AD%A6/"},{"name":"笔记","slug":"笔记","permalink":"http://blog.jeanhua.cn/categories/%E7%AC%94%E8%AE%B0/"}],"tags":[{"name":"C语言","slug":"C语言","permalink":"http://blog.jeanhua.cn/tags/C%E8%AF%AD%E8%A8%80/"},{"name":"软件","slug":"软件","permalink":"http://blog.jeanhua.cn/tags/%E8%BD%AF%E4%BB%B6/"},{"name":"代码","slug":"代码","permalink":"http://blog.jeanhua.cn/tags/%E4%BB%A3%E7%A0%81/"},{"name":"flutter","slug":"flutter","permalink":"http://blog.jeanhua.cn/tags/flutter/"},{"name":"吐槽","slug":"吐槽","permalink":"http://blog.jeanhua.cn/tags/%E5%90%90%E6%A7%BD/"},{"name":"网站","slug":"网站","permalink":"http://blog.jeanhua.cn/tags/%E7%BD%91%E7%AB%99/"},{"name":"美化","slug":"美化","permalink":"http://blog.jeanhua.cn/tags/%E7%BE%8E%E5%8C%96/"},{"name":"随笔","slug":"随笔","permalink":"http://blog.jeanhua.cn/tags/%E9%9A%8F%E7%AC%94/"},{"name":"python","slug":"python","permalink":"http://blog.jeanhua.cn/tags/python/"},{"name":"服务器","slug":"服务器","permalink":"http://blog.jeanhua.cn/tags/%E6%9C%8D%E5%8A%A1%E5%99%A8/"},{"name":"博客","slug":"博客","permalink":"http://blog.jeanhua.cn/tags/%E5%8D%9A%E5%AE%A2/"},{"name":"ssh","slug":"ssh","permalink":"http://blog.jeanhua.cn/tags/ssh/"},{"name":"工具","slug":"工具","permalink":"http://blog.jeanhua.cn/tags/%E5%B7%A5%E5%85%B7/"},{"name":"网站推荐","slug":"网站推荐","permalink":"http://blog.jeanhua.cn/tags/%E7%BD%91%E7%AB%99%E6%8E%A8%E8%8D%90/"},{"name":"资源","slug":"资源","permalink":"http://blog.jeanhua.cn/tags/%E8%B5%84%E6%BA%90/"},{"name":"visual studio","slug":"visual-studio","permalink":"http://blog.jeanhua.cn/tags/visual-studio/"},{"name":"爬虫","slug":"爬虫","permalink":"http://blog.jeanhua.cn/tags/%E7%88%AC%E8%99%AB/"},{"name":"cuda","slug":"cuda","permalink":"http://blog.jeanhua.cn/tags/cuda/"},{"name":"汇编","slug":"汇编","permalink":"http://blog.jeanhua.cn/tags/%E6%B1%87%E7%BC%96/"},{"name":"markdown","slug":"markdown","permalink":"http://blog.jeanhua.cn/tags/markdown/"},{"name":"高等数学","slug":"高等数学","permalink":"http://blog.jeanhua.cn/tags/%E9%AB%98%E7%AD%89%E6%95%B0%E5%AD%A6/"},{"name":"笔记","slug":"笔记","permalink":"http://blog.jeanhua.cn/tags/%E7%AC%94%E8%AE%B0/"},{"name":"游戏引擎","slug":"游戏引擎","permalink":"http://blog.jeanhua.cn/tags/%E6%B8%B8%E6%88%8F%E5%BC%95%E6%93%8E/"},{"name":"大作业","slug":"大作业","permalink":"http://blog.jeanhua.cn/tags/%E5%A4%A7%E4%BD%9C%E4%B8%9A/"},{"name":"刷机","slug":"刷机","permalink":"http://blog.jeanhua.cn/tags/%E5%88%B7%E6%9C%BA/"}]}