Springboot+Flask+Neo4j+Vue2+Vuex+Uniapp+Mybatis+Echarts+Swagger+JWT+Nginx+VueRouter综合项目学习笔记【包括项目部署】


项目访问入口

Neo4j

教程:Neo4j高性能图数据库从入门到实战

Neo4j高性能图数据库从入门到实战

  • 开启命令

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0PM4DoXA-1691565098668)(T:\MarkdownImage\image-20230305205902934.png)]

医疗问答系统

算法教程:医学知识图谱问答系统

医学知识图谱问答系统

项目示例:neo4j知识图谱 Vue+flask 中药中医方剂大数据可视化系统

neo4j知识图谱 Vue+flask 中药中医方剂大数据可视化系统

可视化技术:ECharts

ECharts数据可视化项目D3js:数据可视化入门D3.js

随屏幕自适应变化
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dnhasrx9-1691565098669)(T:\MarkdownImage\image-20230309154947644.png)]

Echarts可做数据大屏
在这里插入图片描述

拐点
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gfFj0vHI-1691565098670)(T:\MarkdownImage\image-20230309165926464.png)]
二选一:

flask教程:速成教程Flask web框架实战

速成教程Flask web框架实战

爬取网站:http://www.zhongyoo.com/name/

数据处理:pandas

提取关键字:textrank、tf-idf

在这里插入图片描述

前后端分离springboot+vue

全程干货:程序员青戈

强推:1天搞定SpringBoot+Vue全栈开发

宏观速成教程:4小时学会Spring Boot+Vue前后端分离开发

4小时学会Spring Boot+Vue前后端分离开发

在这里插入图片描述

在这里插入图片描述

左侧菜单点击跳转:
在这里插入图片描述

一些小知识点:直接跳转用redirect、alert用来web弹出警告框、vue用axios请求来访问后端接口、跨域问题、created()方法类似于onLaunch()、:rules=""绑定校验规则、this.$refs用来获取dom元素或者组件
在这里插入图片描述

$router.push(‘’)适合在vue文件中跳转路由:
,

this.$route.query是接收参数的、js语法:window.location.reload()是动态刷新页面

学习

uniapp云开发

  • 向前删除是shift,向后删除是pop,向前追加是unshift,向后追加是push
  • 属性和值一样的情况下直接写属性就行
  • “…”可以用来展开对象,是展开符
  • v-model实现双向绑定
  • onReachBottom是触底功能
  • onPullDownRefresh是下拉刷新

箭头函数云对象:

在这里插入图片描述

JQL语法:

在这里插入图片描述

Schema中uni-id用户体系配置

在这里插入图片描述

在这里插入图片描述

import导入的时候前面加个@

schema权限规则:

uni-id的logout退出登录:

JQL的联表查询:

as起别名、orderBy【desc降序,asc升序】排序、limit限制条数、skip跳过指定条数、只查询一条getOne:

unicloud-db前端组件的使用:

云端环境变量:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mfSMMv5U-1691565098678)(T:\MarkdownImage\image-20230321212726687.png)]

一些方法:【eg:loadMore、clear、reset、refresh】
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-87hMMvqm-1691565098678)(T:\MarkdownImage\image-20230321214609873.png)]

uView的配置:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3IonIJfz-1691565098679)(T:\MarkdownImage\image-20230322190415095.png)]

css中,&是父选择器,空格代表后代选择器,有name1 name2:last-child ,其中紧挨着:last-child的name2是用来对最后一个子元素名作限制的,也可以不写直接用name1 :last-child ,这样name2为空,代表不对元素名作限制,一般都是这样的用法,直接选择最后一个子元素,这样比较直观,也容易懂

在这里插入图片描述

block块级元素特点:独占一行一个

inline内联元素特点:和其他元素都在一行上

text-align: justify;//两端对齐

text-overflow: -o-ellipsis-lastline;
overflow: hidden;【用法见:https://blog.csdn.net/Amnesiac666/article/details/124001166】			
text-overflow: ellipsis;		
display: -webkit-box;			
-webkit-line-clamp: 2;			
line-clamp: 2;					
-webkit-box-orient: vertical;

align-items: center;//垂直居中

justify-content: space-around; //居中排列

吸顶效果:

position: fixed; //吸顶效果
top: var(--window-top);
z-index: 10;

富文本的样式

SelectorQuery实现富文本定制

数据进行缓存setStorageSync提高性能

typeof()查看数据类型,getStorageSync()获取缓存,setStorageSync()设置缓存
在这里插入图片描述

web端云数据库

知识图谱

KBQA(知识图谱问答)常用数据集
这是巨佬
【Neo4j】第 2 章:Cypher 查询语言

人家处理好的数据如下:

{
	"_id": {
		"$oid": "5bb578b6831b973a137e3ee6"
	},
	"name": "肺泡蛋白质沉积症",
	"desc": "肺泡蛋白质沉积症(简称PAP),又称Rosen-Castle-man-Liebow综合征,是一种罕见疾病。该病以肺泡和细支气管腔内充满PAS染色阳性,来自肺的富磷脂蛋白质物质为其特征,好发于青中年,男性发病约3倍于女性。",
	"category": ["疾病百科", "内科", "呼吸内科"],
	"prevent": "1、避免感染分支杆菌病,卡氏肺囊肿肺炎,巨细胞病毒等。\n2、注意锻炼身体,提高免疫力。",
	"cause": "病因未明,推测与几方面因素有关:如大量粉尘吸入(铝,二氧化硅等),机体免疫功能下降(尤其婴幼儿),遗传因素,酗酒,微生物感染等,而对于感染,有时很难确认是原发致病因素还是继发于肺泡蛋白沉着症,例如巨细胞病毒,卡氏肺孢子虫,组织胞浆菌感染等均发现有肺泡内高蛋白沉着。\n虽然启动因素尚不明确,但基本上同意发病过程为脂质代谢障碍所致,即由于机体内,外因素作用引起肺泡表面活性物质的代谢异常,到目前为止,研究较多的有肺泡巨噬细胞活力,动物实验证明巨噬细胞吞噬粉尘后其活力明显下降,而病员灌洗液中的巨噬细胞内颗粒可使正常细胞活力下降,经支气管肺泡灌洗治疗后,其肺泡巨噬细胞活力可上升,而研究未发现Ⅱ型细胞生成蛋白增加,全身脂代谢也无异常,因此目前一般认为本病与清除能力下降有关。",
	"symptom": ["紫绀", "胸痛", "呼吸困难", "乏力", "毓卓"],
	"yibao_status": "否",
	"get_prob": "0.00002%",
	"get_way": "无传染性",
	"acompany": ["多重肺部感染"],
	"cure_department": ["内科", "呼吸内科"],
	"cure_way": ["支气管肺泡灌洗"],
	"cure_lasttime": "约3个月",
	"cured_prob": "约40%",
	"cost_money": "根据不同医院,收费标准不一致,省市三甲医院约( 8000——15000 元)",
	"check": ["胸部CT检查", "肺活检", "支气管镜检查"],
	"recommand_drug": [],
	"drug_detail": []
},
{
	"_id": {
		"$oid": "5bb578b6831b973a137e3ee7"
	},
	"name": "百日咳",
	"desc": "百日咳(pertussis,whoopingcough)是由百日咳杆菌所致的急性呼吸道传染病。其特征为阵发性痉挛性咳嗽,咳嗽末伴有特殊的鸡鸣样吸气吼声。病程较长,可达数周甚至3个月左右,故有百日咳之称。多见于5岁以下的小儿,幼婴患本病时易有窒息、肺炎,脑病等并发症,病死率高。百日咳患者,阴性感染者及带菌者为传染源。潜伏期末到病后2-3周传染性最强。百日咳经呼吸道飞沫传播。典型患者病程6-8周,临床病程可分3期:1.卡他期,从发病到开始出现咳嗽,一般1-2周。2,痉咳期,一般2-4周或更长,阵发性痉挛性咳嗽为本期特点。3,恢复期,一般1-2周,咳嗽发作的次数减少,程度减轻,不再出现阵发性痉咳。一般外周血白细胞计数明显增高,分类以淋巴细胞为主。在诊断本病时要注意与支气管异物及肺门淋巴结结核鉴别。近年来幼婴及成人发病有增多趋势。",
	"category": ["疾病百科", "儿科", "小儿内科"],
	"prevent": "1、控制传染源:在流行季节,若有前驱症状应及早抗生素治疗。\n2、切断传播途径:由于百日咳杆菌对外界抵抗力较弱,无需消毒处理,但应保持室内通风,衣物在阳光下曝晒,对痰液及口鼻分泌物则应进行消毒处理。",
	"cause": "(一)发病原因\n病原菌是鲍特菌属(Bordetella)中的百日咳鲍特菌(B.pertussis),常称百日咳杆菌,已知鲍特菌属有四种杆菌,除百日咳鲍特菌外还有副百日咳鲍特菌(B.parapertussis),支气管败血鲍特菌(B.bronchiseptica)和鸟型鲍特菌(B.avium),鸟型鲍特菌一般不引起人类致病,仅引起鸟类感染,百日咳杆菌长约1.0~1.5μm,宽约0.3~0.5μm,有荚膜,不能运动,革兰染色阴性,需氧,无芽孢,无鞭毛,用甲苯胺蓝染色两端着色较深,细菌培养需要大量(15%~25%)鲜血才能繁殖良好,故常以鲍-金(Border-Gengous)培养基(即血液,甘油,马铃薯)分离菌落,百日咳杆菌生长缓慢,在35~37℃潮湿的环境中3~7天后,一种细小的,不透明的菌落生长,初次菌落隆起而光滑,为光滑(S)型,又称I相细菌,形态高低一致,有荚膜和较强的毒力及抗原性,致病力强,如将分离菌落在普通培养基中继续培养,菌落由光滑型变为粗糙(R)型,称Ⅳ相细菌,无荚膜,毒力及抗原性丢失,并失去致病力,Ⅱ相,Ⅲ相为中间过渡型,百日咳杆菌能产生许多毒性因子,已知有五种毒素:\n1、百日咳外毒素(PT):是存在百日咳杆菌细胞壁中一种蛋白质,过去称作为白细胞或淋巴细胞增多促进因子(leukocytosis or lymphocyte promoting factor,LPE),组胺致敏因子(histamin sensitizing factor,HSF),胰岛素分泌活性蛋白(insulin activating protein,IAP),百日咳外毒素由五种非共价链亚单位(S1~S5)所组成,亚单位(S2~S5)为无毒性单位,能与宿主细胞膜结合,通过具有酶活力的亚单位S1介导毒性作用,S1能通过腺苷二磷酸(ADP)-核糖转移酶的活力,催化部分ADP-核糖从烟酰胺腺嘌呤二核苷酸(NAD)中分离出来,转移至细胞膜抑制鸟苷三磷酸(CTP)结合即G蛋白合成,导致细胞变生,同时还能促使淋巴细胞增高,活化胰岛细胞及增强免疫应答。\n2、耐热的内毒素(endotoxin,ET),100℃60min只能部分破坏,180℃才能灭活,此毒素能引起机体发热及痉咳。\n3、不耐热毒素(HLT)这种毒素加热55℃30min后能破坏其毒性作用,此毒素抗体对百日咳杆菌感染无保护作用。\n4、气管细胞毒素(TCT):能损害宿主呼吸道纤毛上皮细胞,使之变性,坏死。\n5、腺苷环化酶毒素(ACT):存在百日咳杆菌细胞表面的一种酶,此酶进入吞噬细胞后被调钙蛋白所激活,催化cAMP的生成,干扰吞噬作用,并抑制中性粒细胞的趋化和吞噬细胞杀菌能力,使其能持续感染,ACT也是一种溶血素,能起溶血作用,百日咳的重要抗原是百日咳菌的两种血凝活性抗原,一种为丝状血凝素(filamentous hemagglutinin,FHA),因来自菌体表面菌毛故又称菌毛抗原,FHA在百日咳杆菌黏附于呼吸道上皮细胞的过程中起决定作用,为致病的主要原因。实验发现,FHA免疫小鼠能对抗百日咳杆菌致死性攻击,因此FHA为保护性抗原,另一种凝集原(aggluginogens,AGG)为百日咳杆菌外膜及菌毛中的一种蛋白质成分,主要含1,2,3三种血清型凝血因子,AGG-1具有种特异性;AGG-2,3具有型特异性,通过检测凝集原的型别来了解当地流行情况,目前认为这两种血凝素抗原相应抗体是保护性抗体,百日咳杆菌根据不耐热凝集原抗原性不同分为七型凝集原,1型凝集原为所有百日咳杆菌均具备,7型凝集原为鲍特菌属(包括副百日咳杆菌,支气管败血性杆菌)所共有,2~6型以不同的配合将百日咳杆菌分为不同血清型,测定血清型主要是研究流行时菌株的血清型和选择特殊血清型菌株生产菌苗,此外,副百日咳杆菌与百日咳杆菌无交叉免疫,亦可引起流行,百日咳杆菌对外界理化因素抵抗力弱,55℃经30min即被破坏,干燥数小时即可杀灭,对一般消毒剂敏感,对紫外线抵抗力弱,但在0~10℃存活较长。\n(二)发病机制\n1、发病机制:百日咳发病机制不甚清楚,很可能是百日咳毒素对机体综合作用的结果,当细菌随空气飞沫浸入易感者的呼吸道后,细菌的丝状血凝素黏附于咽喉至细支气管黏膜的纤毛上皮细胞表面;继之,细菌在局部繁殖并产生多种毒素如百日咳外毒素,腺苷环化酶等引起上皮细胞纤毛麻痹和细胞变性,使其蛋白合成降低,上皮细胞坏死脱落,以及全身反应,由于上皮细胞的病变发生和纤毛麻痹使小支气管中黏液及坏死上皮堆聚潴留,分泌物排出受阻,不断刺激呼吸道的周围神经,传入大脑皮质及延髓咳嗽中枢,反射性引起痉挛性咳嗽,由于长期刺激使咳嗽中枢形成兴奋灶,以致非特异性刺激,如进食,咽部检查,冷风,烟雾以及注射疼痛等,均可引起反射性的痉咳,恢复期间亦可因哭泣及其他感染,诱发百日咳样痉咳,近来研究表明百日咳发生机制与百日咳杆菌毒素类物质损害宿主细胞免疫功能有关,CD4+T细胞和Th1细胞分泌的细胞因子所介导的免疫反应,在百日咳杆菌感染中起重要作用。\n2、病理解剖:百日咳杆菌侵犯鼻咽,喉,气管,支气管黏膜,可见黏膜充血,上皮细胞的基底部有多核白细胞,单核细胞浸润及部分细胞坏死。支气管及肺泡周围间质除炎症浸润外,可见上皮细胞胞质空泡形成,甚至核膜破裂溶解,坏死,脱落,但极少波及肺泡。若分泌物阻塞可引起肺不张,支气管扩张,有继发感染者,易发生支气管肺炎,有时可有间质性肺炎;若发生百日咳脑病,镜检或肉眼可见脑组织充血水肿,点状出血,皮质萎缩,神经细胞变性,脑水肿等改变,此时常可见到肝脏脂肪浸润等变化。",
	"symptom": ["吸气时有蝉鸣音", "痉挛性咳嗽", "胸闷", "肺阴虚", "抽搐", "低热", "闫鹏辉", "惊厥"],
	"yibao_status": "否",
	"get_prob": "0.5%",
	"easy_get": "多见于小儿",
	"get_way": "呼吸道传播",
	"acompany": ["肺不张"],
	"cure_department": ["儿科", "小儿内科"],
	"cure_way": ["药物治疗", "支持性治疗"],
	"cure_lasttime": "1-2个月",
	"cured_prob": "98%",
	"common_drug": ["穿心莲内酯片", "百咳静糖浆"],
	"cost_money": "根据不同医院,收费标准不一致,市三甲医院约(1000-4000元)",
	"check": ["耳、鼻、咽拭子细菌培养", "周围血白细胞计数及分类检验", "血常规", "酶联免疫吸附试验", "白细胞分类计数"],
	"do_eat": ["南瓜子仁", "圆白菜", "樱桃番茄", "小白菜"],
	"not_eat": ["螃蟹", "海蟹", "海虾", "海螺"],
	"recommand_eat": ["清蒸鸡蛋羹", "百合双耳鸡蛋羹", "排骨汤", "罗汉果雪耳鸡汤", "小黄瓜凉拌面", "黄瓜三丝汤", "黄瓜拌兔丝", "黄瓜拌皮丝"],
	"recommand_drug": ["琥乙红霉素片", "琥乙红霉素颗粒", "百咳静糖浆", "穿心莲内酯片", "红霉素肠溶片", "环酯红霉素片"],
	"drug_detail": ["惠普森穿心莲内酯片(穿心莲内酯片)", "北京同仁堂百咳静糖浆(百咳静糖浆)", "邦琪药业百咳静糖浆(百咳静糖浆)", "东新药业百咳静糖浆(百咳静糖浆)", "达发新(环酯红霉素片)", "康美药业红霉素肠溶片(红霉素肠溶片)", "旺龙药业琥乙红霉素颗粒(琥乙红霉素颗粒)", "白云山医药琥乙红霉素片(琥乙红霉素片)", "国瑞琥乙红霉素片(琥乙红霉素片)", "利君制药红霉素肠溶片(红霉素肠溶片)", "东信药业琥乙红霉素颗粒(琥乙红霉素颗粒)", "石药欧意红霉素肠溶片(红霉素肠溶片)", "平光制药红霉素肠溶片(红霉素肠溶片)", "北京曙光药业红霉素肠溶片(红霉素肠溶片)", "迪瑞制药琥乙红霉素颗粒(琥乙红霉素颗粒)", "永定制药百咳静糖浆(百咳静糖浆)", "东信药业琥乙红霉素片(琥乙红霉素片)", "利君制药琥乙红霉素片(琥乙红霉素片)", "北京中新制药琥乙红霉素片(琥乙红霉素片)", "华南药业红霉素肠溶片(红霉素肠溶片)", "佐今明百咳静糖浆(百咳静糖浆)", "恒益药业琥乙红霉素颗粒(琥乙红霉素颗粒)", "利君沙(琥乙红霉素颗粒)"]
}

项目整体进度

整个项目的阶段应该包括:开发、测试、生产

用户移动端

新知识

需要了解ES6的语法,譬如箭头函数、.map

.map() .filter() .reduce() 的用法【reduce是求总和、filter是过滤筛选、map是提取出想得到的属性】

vue.config.js的完整配置

在这里插入图片描述

vue + ivew 校验form表单俩次密码输入是否一致

富文本和markdown的区别

富文本编辑器,以Word为例,输入文字后,选择不同的功能(通常是通过点击某个图标),例如加粗或者调整字体大小,处理后的效果直接显示在屏幕上,与打印出来的效果相同。所以富文本编辑器又叫“所见即所得”编辑器。
Markdown编辑器,输入文字后,通常是在文字的前后同时输入一些标记字符,输入后在编辑窗口也不会即时显示出效果,需要手动切换预览模式查看处理效果。因为这些标记字符的存在,所以Markdown本身是一种标记语言。 Markdown的核心就在于通过输入字符同时进行排版和内容输入

一些平台

用户中心页面

flex-wrap自动换行 slice(0,9)截取 splice()删除指定元素

uniCloud云开发进阶篇多用户社区博客

个人中心页面:个人中心页面实现

聊天页面:微信聊天小程序—聊天页面

VueX

状态管理工具

浏览记录功能教程:浏览记录

浏览记录

  • /<img/gi,'<img style="max-width:100%"'正则表达式直接替换html中的img,来达到富文本中图片处理的效果,gi表示全局匹配,//之间是正则表达式的内容

搜索功能教程:搜索功能

搜索功能

触底加载更多+分页

onReachBottom() {
    console.log("到底部了");
    this.nowPage++;
    this.stateIndex = this.nowPage * this.pageSize;
    this.getData(this.urlback);
},

网络缓存

Uniapp数据缓存的增删改查

setStorage 与setStorageSync的区别

聊天页面

uni-app实现聊天页面功能(小程序)——布局篇_

uni-app实现聊天页面功能——功能篇(上)

问题

浏览器显示你的连接不是专用连接怎么解决

阿里云收费问题

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8bfHnvTI-1691565098681)(T:\MarkdownImage\image-20230417234714327.png)]

uni-App 去掉顶部导航栏

切记运行的目录E:\3Study\2项目\2023大学生创新创业大赛\医药问答\web\web前端\medical>

如何在word里面优雅地插入代码

需要用到的插件

  • uni-id-pages
  • uView2
  • uni-dateformat 日期格式化

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yurOSV4E-1691565098682)(T:\MarkdownImage\image-20230606225224770.png)]

如果一个文件夹下没有_init_.py文件,不会被当做一个module

正规的json是双引号,flask如何返回一个json数据 Flask——返回json数据的方法

flask解决跨域问题解决Flask跨域问题的几种方式

解决uniapp中的异步同步问题uni-app中使用异步请求

DOMException: Failed to execute open' on ' XML HttpRequest' :在edge中报错,在小程序和google中正常

问答聊天核心实现,WTcrazy的精华

async getAnswer(str) {
    console.log('查询答案中!');
    return new Promise((resolve, reject) => {
        uni.request({
            url: str,
            success: res => {
                console.log(res);
                resolve(res.data.answer);
            }
        })
    })
},
    //发送消息
    async handleSend() {
        console.log("查询次数:" + this.questionCnt);
        console.log('chatmsg==' + this.chatMsg);
        //如果消息不为空或者不为空白字符(包括换行符、空格等)
        // if (!this.chatMsg || /^\s+$/.test(this.chatMsg)) {
        if (this.chatMsg != '') {
            let URL = "http://127.0.0.1:5000/query?content=" + this.chatMsg; //本地机运行
            console.log('url:' + URL);
            let str = (this.questionCnt == 0 ? "第一次查询时间稍长 请耐心等待..." : "查询中 请稍后...")
            uni.showLoading({
                title: str
            })
            // console.log(str);
            await this.getAnswer(URL).then((res) => {
                this.ansMsg = res
            })
            let obj = {
                botContent: this.ansMsg,
                recordId: 0,
                titleId: 0,
                userContent: this.chatMsg,
                userId: 0
            }
            this.msgList.push(obj);
            uni.hideLoading(); //
            console.log('下面是obj');
            console.log(obj);
            this.chatMsg = '';
            this.scrollToBottom()
            console.log('下面是msgList');
            console.log(this.msgList);
        } else {
            uni.showToast({
                title: "请输入问题",
                duration: 1500,
                icon: "error"
            })
        }
        this.questionCnt = this.questionCnt + 1;
    }

}

学会看报错,看懂debug真的很过瘾

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a4fiDHEJ-1691565098682)(T:\MarkdownImage\image-20230608151015754.png)]

json.dumps是字典转json、json.loads是字符串转字典
Flask设置返回json格式数据
核心接口,较为快速的回答问题

@app.route('/query', methods=["GET", "POST"])
def Query():
    if request.method == 'GET':
        ques = request.args.get('content', '')
        ans = handler.chat_main(ques)
        dic = {"question": ques, "answer": ans}
        tmpStr = str(dic).replace("\\h", "")
        tmpStr = tmpStr.replace("\\xa0", "")#主要是为了解决json中转义字符问题
        json_str = tmpStr.replace("'", "\"")
        return Response(json.dumps(json.loads(json_str)), mimetype='application/json')
        # return json_str  # 单返回这个好像也可以
    elif request.method == 'POST':
        return 'post'

对应服务器截图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E3rlUj34-1691565098683)(T:\MarkdownImage\image-20230713084222118.png)]

json格式在线JSON校验格式化工具
下面这个json格式有误,主要在\xa0上

{
	"question": "心脏病",
	"answer": "病、心肌脏病。\n\x一、先天性心脏病\n1.可能由于母亲在怀孕早期的疾病或服用的药物有关。\n2.与遗传有关。\n二、后天性心脏病\n1.冠状动脉心脏病:抽"
}

uniapp小程序调试超额的话可以尝试分包
[微信小程序开发者工具] [error] Error: Fail to open IDE 问题解决方法
uni-app微信小程序主包大小哪里看图解
subPackages分包加载配置

ECharts 在线构建

小程序周期函数执行顺序:onLaunch–onLoad–onShow–onReady–onHide.
uniCloud入门-增删改查、条件查询

npm报错个人遇坑全面整理npm install 报错没有匹配版本:npm ERR! code ETARGET npm ERR! notarget No matching version found for

解决npm install版本不匹配问题: npm ERR! code ETARGET npm ERR! notarget No matching version found for_is

报错解决方案:Module build failed: Error: Vue packages version mismatch

解决报错:Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation to current location:

uview组件u-button设置fontsize不起作用的问题

uniapp 背景图片全屏显示在整个页面

引用iconfont彩色图标变黑白问题如何UNI-APP中使用iconfont彩色图标,这时候前面要加t-icon

在这里插入图片描述

对应指令:

npm install -g iconfont-tools
iconfont-tools
//然后一路enter

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xeAwvAWb-1691565098683)(T:\MarkdownImage\image-20230323161429191.png)]

密码框小眼睛问题

uniapp可选链和空值合并操作问题

console.log(obj.arr?.abc??[])

uniapp小程序:追加数组中的对象属性,属性数据已经添加,视图不会改变
(uni-app)踩坑,数据改变,视图不变_unipopup 弹出层视图不更新
uni-app中使用 async + await 实现异步请求同步化

微信小程序的胶囊按钮问题
up主讲的很清晰2.18.滑动滚动条动态改变自定义子组件的信息

在这里插入图片描述

js ( => ) 箭头函数

数据转换前后

{"data":{"id":"28ef42f0012a4799954e944c85bf6ac0","time":1689089721097,"cost":46,"uid":"3ab67008e3c64226a02dac1c798b5405","addressid":"1659827abc24435b895c5385971a02c5","goodnum":3,"way":"alipay","content":"{\"cheap\":6,\"carList\":[{\"id\":\"0a81645066cb4eb391c917742db222c6\",\"name\":\"异维A酸红霉素凝胶\",\"num\":1,\"price\":8,\"preprice\":10,\"picurls\":\"http://172.25.71.194:8081/Files/2023/07/10/da51b039dc264aa4bc668ccf217c09a2.crdownload\"},{\"id\":\"cdc5b14cc7024c5fae23277661bd2346\",\"name\":\"磺胺醋酰钠滴眼液\",\"num\":1,\"price\":18,\"preprice\":20,\"picurls\":\"http://172.25.71.194:8081/Files/2023/07/10/fffab9700fbe492a949c7c42a5376530.jpg\"},{\"id\":\"3a354e9b6688448cbaebc8ede67be5fd\",\"name\":\"马来噻吗洛尔滴眼液\",\"num\":1,\"price\":20,\"preprice\":22,\"picurls\":\"http://172.25.71.194:8081/Files/2023/07/10/243827e6897d426faae29b36bcf3c3d6.webp\"}]}","address":{"id":"1659827abc24435b895c5385971a02c5","content":"中国石油大学","hostname":"郭邦豪","hostphone":"15467841256","uid":"3ab67008e3c64226a02dac1c798b5405","isDefault":false},"listProduct":null},"statusCode":200,"header":{"content-type":"application/json"},"errMsg":"request:ok"} 
{
   "data":{
      "id":"28ef42f0012a4799954e944c85bf6ac0",
      "time":1689089721097,
      "cost":46,
      "uid":"3ab67008e3c64226a02dac1c798b5405",
      "addressid":"1659827abc24435b895c5385971a02c5",
      "goodnum":3,
      "way":"alipay",
      "content":"{\"cheap\":6,\"carList\":[{\"id\":\"0a81645066cb4eb391c917742db222c6\",\"name\":\"异维A酸红霉素凝胶\",\"num\":1,\"price\":8,\"preprice\":10,\"picurls\":\"http://172.25.71.194:8081/Files/2023/07/10/da51b039dc264aa4bc668ccf217c09a2.crdownload\"},{\"id\":\"cdc5b14cc7024c5fae23277661bd2346\",\"name\":\"磺胺醋酰钠滴眼液\",\"num\":1,\"price\":18,\"preprice\":20,\"picurls\":\"http://172.25.71.194:8081/Files/2023/07/10/fffab9700fbe492a949c7c42a5376530.jpg\"},{\"id\":\"3a354e9b6688448cbaebc8ede67be5fd\",\"name\":\"马来噻吗洛尔滴眼液\",\"num\":1,\"price\":20,\"preprice\":22,\"picurls\":\"http://172.25.71.194:8081/Files/2023/07/10/243827e6897d426faae29b36bcf3c3d6.webp\"}]}",
      "address":{
         "id":"1659827abc24435b895c5385971a02c5",
         "content":"中国石油大学",
         "hostname":"郭邦豪",
         "hostphone":"15467841256",
         "uid":"3ab67008e3c64226a02dac1c798b5405",
         "isDefault":false
      },
      "listProduct":null
   },
   "statusCode":200,
   "header":{
      "content-type":"application/json"
   },
   "errMsg":"request:ok"
}

uniapp 报错之 uview 中 u-icon 点击 阻止冒泡

uniapp解析markdown直接用相应插件,但原理应该是先把markdown转变成html语言,然后用解析html

CSS坑

flex:1 到底代表什么

对于height:100%的理解

详解 CSS 属性 - :before && :after_after属性介绍

每个页面的CSS拼写尽量不一样,否则有bug

浅谈display:inline-block_display: inline-block;

管理员前端Web

Echarts画知识图谱官网

医疗后台前端界面规划

vue项目中修改页面title的方法vue中修改浏览器图标和名字的几种方式

自定义配置vue启动

vue怎么获取缓存

后端Server

从0开始带你手撸一套SpringBoot+Vue后台管理系统

新知识

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NoKOox0z-1691565098684)(T:\MarkdownImage\image-20230704170212180.png)]

初始准备

后端接口检测可以用Swagger,推荐用postman

pom配置;在D:\Personal-Download\Java\maven-repository\org\springframework\boot\spring-boot找本地springboot的仓库版本【别轻易改pom】

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.5.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.wtcrazy</groupId>
    <artifactId>springboot</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot</name>
    <description>医疗app后端</description>
    <properties>
        <java.version>11</java.version>
    </properties>
    <dependencies>
        <!-- web场景启动器 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <!--列表、字符串、json转化-->
        <dependency>
            <groupId>net.sf.json-lib</groupId>
            <artifactId>json-lib</artifactId>
            <classifier>jdk15</classifier>
            <version>2.4</version>
        </dependency>
        <!-- 启动热部署-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <!--Mybatis-plus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.1</version>
        </dependency>
        <!--MybatisPlus代码生成器-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity</artifactId>
            <version>1.7</version>
        </dependency>
        <!--邮箱发送 的场景启动器-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
        <!-- 邮件 注意包补全 得有javax.mail-1.5.6.jar这个包-->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-email</artifactId>
            <version>1.5</version>
        </dependency>
        <!--jdbc-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.3.1</version>
        </dependency>
        <!--文件操作-->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.1.0</version>
        </dependency>
        <!--引入lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--集成Swagger-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.7.0</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.7.0</version>
        </dependency>
    </dependencies>
    <build>
        <!--引入本地资源-->
        <resources>
            <!--加载lib文件,特殊情况下会有lib,但大部分都靠依赖下载了-->
            <resource>
                <directory>lib</directory>
                <targetPath>BOOT-INF/lib/</targetPath>
                <includes>
                    <include>**/*.jar</include>
                </includes>
            </resource>
            <!--打jar包-->
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                    <include>**/*.yml</include>
                    <include>**/*.txt</include>
                </includes>
            </resource>
            <!--将properties和xml文件编译-->
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                    <include>**/*.yml</include>
                    <include>**/*.txt</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

banner图

 ___       __   _________  ________  ________  ________  ________      ___    ___    .::::.
|\  \     |\  \|\___   ___\\   ____\|\   __  \|\   __  \|\_____  \    |\  \  /  /| .::::::::.
\ \  \    \ \  \|___ \  \_\ \  \___|\ \  \|\  \ \  \|\  \\|___/  /|   \ \  \/  / / :::::::::::
 \ \  \  __\ \  \   \ \  \ \ \  \    \ \   _  _\ \   __  \   /  / /    \ \    / /  ':::::::::::..
  \ \  \|\__\_\  \   \ \  \ \ \  \____\ \  \\  \\ \  \ \  \ /  /_/__    \/  /  /    :::::::::::::::'
   \ \____________\   \ \__\ \ \_______\ \__\\ _\\ \__\ \__\\________\__/  / /       ':::::::::::.
    \|____________|    \|__|  \|_______|\|__|\|__|\|__|\|__|\|_______|\___/ /          .::::::::::::::'
                                                                     \|___|/         .:::::::::::...
                                                                                    ::::::::::::::''
                                                                        .:::.       '::::::::''::::
                                                                      .::::::::.      ':::::'  '::::
                                                                     .::::':::::::.    :::::    '::::.
                                                                   .:::::' ':::::::::. :::::      ':::.
                                                                 .:::::'     ':::::::::.:::::       '::.
                                                               .::::''         '::::::::::::::       '::.
                                                              .::''              '::::::::::::         :::...
                                                           ..::::                  ':::::::::'        .:' ''''
                                                        ..''''':'                    ':::::.'

alt+insert可以方便代码编写

Postman测试数据

{
    "username":"WTcrazy",
    "password":"123",
    "phone":"45648964",
    "mail":"48746846@qq.com",
    "id":"45645648654456"
}

postman里面Params和Body可以同时发挥作用

集成Swagger

访问地址:http://localhost:8081/swagger-ui.html

  /**
     * 跨域配置后swagger2可能不能访问,需要增加如下配置
     * @param registry
     * 对静态资源的配置
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("swagger-ui.html")
                .addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("doc.html")
                .addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");
    }

拦截器

@Configuration//别忘记加注解
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {//拦截器
        registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/user/login");
    }
}

拦截器拦截token

结合前端

uniapp中H5环境而导致自定义请求头字段失效

uni-app设置请求头无效

后端接收不到前端传入的header参数信息

JWT

头部、载荷、签名

创建JWT

验证JWT

解析JWT

原理图

request用来解析请求头,前端可以把token放在请求头里让后端解析,也可以直接放表单里面携带

后端token可以放到redis里面【springboot整合redis】
前端token一般放入cookie或者请求头Authorization

Redis

一般联合JWT,将生成的token存储到redis中,因为redis查询速度块,效率高

Docker

在部署中需要用到的容器

共享本机数据库【安全性重要!】

让别人连接自己的mysql数据库,共享mysql数据库

邮箱验证

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zW8kpqN2-1691565098684)(T:\MarkdownImage\image-20230628140236984.png)]

Mybatis多表联查、分页查询

association用于一对一或者多对一

按照查询嵌套处理

按照结果嵌套处理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mWzmNvj5-1691565098685)(T:\MarkdownImage\image-20230630093936670.png)]

collection用于一对多处理

按结果嵌套查询

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q9xQvRm2-1691565098685)(T:\MarkdownImage\image-20230709202702398.png)]

按照查询嵌套处理

分页

Mybaits中collection的用法详解

文件上传

在uni-app中 使用 uni.request() 是无法发送文件的 因为 request data参数无法接受Fromdata格式数据
那么只能曲线救国通过 uni.uploadFile() 上传文件

robotframework调用上传文件接口报错“the request was rejected because no multipart boundary was found”

配置资源映射步骤: SpringBoot上传图片到指定位置,并返回URL

SpringBoot路径映射配置

JSON与字符串转化

新增Spring上传文件路径配置_

let param_json = JSON.stringify(this.$data)//转为字符串
let bookkeeping_data = JSON.parse(bookkeeping_data_string)//转换为JSON

uniapp的前端传来的数据一定要和Java的entity实体类里面的字段类型要一一对应

数据交互:Java中常用的几种JSON格式的转换

request.getSchema(),request.getServerName(),request.getServerPort(),request.getContextPath()的含义及使用

缓存问题

权限问题

跨域问题

代码配置CorsConfig

package com.wtcrazy.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class CorsConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        // 一小时内不需要再预检
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowCredentials(true)
                .allowedHeaders(CorsConfiguration.ALL)
                .allowedMethods(CorsConfiguration.ALL)
                .maxAge(3600);
    }
}

发行

局域网访问:

//修改yml配置文件即可
server:
  IP: 172.25.71.194
  port: 8081
  address: 0.0.0.0 #局域网访问

问题

java: 无法访问org.springframework.web.bind.annotation.RequestMapping.

SpringBoot-03-修改Banner图

Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback. No message available 解决方法

SpringBoot 开启热部署

pom依赖报错com.mysql:mysql-connector-j

SpringBoot项目报错解决:“Error starting ApplicationContext. To display the conditions report re-run …”_

SpringBoot 中 application.yml 文件不生效

在资源过滤的时候一定要注意啊,.txt/.yml都是我们需要过滤的对象

Restful风格

在这里插入图片描述

MyBatis xml一次执行多条sql

http响应中状态码400和500的区别:
1)400-参数与控制器层所需要的参数不符合,并没有进入后台服务器(控制器)里。
2)500-传入的参数在业务处理中出现了异常,进入了后台服务器(控制器)里。

部署与运维

部署在Linux上,要熟悉常用命令行,以下部署基于CentOS7完成

上传Gitee

上传gitee:Git 开发必备 .gitignore 详解

如何将项目上传到Gitee上_项目上传gitee

uni-app本地访问接口跨域

局域网访问:Vue项目配置在局域网下访问方式

项目部署:20.SpringBoot+Vue项目云端部署

项目部署准备

买的相当于一台裸机,这个项目所需要的配置都要自己重新安装部署

清除控制台的打印信息:https://www.cnblogs.com/qianxiaox/p/13704870.html

一些文件的说明:vue中的process.env.NODE_ENV和环境变量

新人免费试用阿里云仨月

阿里云控制中心:云服务器管理控制台

进入安全组开放所需端口

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0KvrltKY-1691565098686)(T:\MarkdownImage\image-20230807211007275.png)]

使用Xshell连接服务器

后端部署

【要下载适合于Linux版本的安装包】

安装与配置MySQL

【建议先看完别跟着操作,因为后面有坑我重新下的】

查看mysql版本

MySQL下载地址MySQL :: Download MySQL Community Server

卸载Centos7自带mariadb

# 查找
rpm -qa|grep mariadb
# 卸载
rpm -e mariadb-libs-5.5.68-1.el7.x86_64 --nodeps

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9aTfexCA-1691565098687)(T:\MarkdownImage\image-20230807221721251.png)]

解压mysql

# 创建mysql安装包存放点
mkdir /usr/server/mysql
# 解压-C可以指定解压目录【.tar用xvf,.gz用zxvf】rpm是离线安装包
tar xvf mysql-8.0.28-1.el7.x86_64.rpm-bundle.tar -C mysql#

执行安装

# 切换到安装目录
cd /usr/server/mysql/
yum -y install libaio #先安装依赖
yum -y install libncurses*
yum -y install perl perl-devel
# 安装【强制安装、忽略依赖安装,多个一起安装,最后一个是不会执行的,要再次按回车】
rpm -ivh mysql-community-common-8.0.28-1.el7.x86_64.rpm#【我是安装这个版本的,其他版本bug给我整玉玉了】
rpm -ivh mysql-community-client-plugins-8.0.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-icu-data-files-8.0.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.28-1.el7.x86_64.rpm

【更换mysql 8.0.28版本没有出现此问题】MySQL 安装warning: mysql-community-libs-5.7.28-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID_

下错包了,我Linux是x86,不能用ARM

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sNhW8P4E-1691565098687)(T:\MarkdownImage\image-20230808112458798.png)]

重新下载x86安装包后,安装成功

在这里插入图片描述

启动Mysql

更换mysql 8.0.28版本没有出现此问题解决报错libssl.so.1.1: cannot open shared object file: No such file or directory_

systemctl status mysqld.service#查看mysql状态
journalctl -xe#查看详细的系统日志
cat /var/log/mysqld.log | grep ERROR #只查看具体的报错日志,省略了其他类型的日志
#启动mysql
systemctl start mysqld.service
#查看生成的临时root密码
cat /var/log/mysqld.log | grep password# _Y6.FQ0LdLjZ

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kOjU5fgG-1691565098688)(T:\MarkdownImage\image-20230808112636724.png)]

修改初始随机密码

# /etc/my.cnf 文件中
skip-grant-tables     #跳过密码验证
# 登录mysql【-u指定用户,-p指定密码】
mysql -u root -p
Enter password: #输入在日志中生成的临时密码

# 更新root密码 设置为root【进入mysql切记加分号结尾】版本不同,修改密码的语法也不同
update user set password=password('password') where user='root';#5.6版本
update mysql.user set authentication_string=password('password') where user='root' and Host ='localhost';#5.7以上版本
alter user 'root'@'localhost' identified by 'password';
set password for root @localhost = password('password');#8.0以上版本

# 下面操作正确
set global validate_password.policy=LOW;#设置密码策略【设置简单了】
set global validate_password.length=1;# 【正常是不少于8位、有字母数字啥的】
flush privileges;# 刷新权限
systemctl restart mysqld #重启MySQL

版本问题太恶心辣:Linux系统下修改mysql数据库密码

在这里插入图片描述

授予远程连接权限

select host,user from user;	#查看有哪些用户
create user 'remote'@'%' identified by 'password';#创建用户
drop user '用户名'@'主机';#删除创建的用户
grant all privileges on *.* to 'remote'@'%' with grant option;#授权#因为我们要运行SQL脚本【by后面是密码】%是通配符,表示所有IP
# 刷新
flush privileges;#让其生效

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xMkiaEcU-1691565098688)(T:\MarkdownImage\image-20230808140009337.png)]

控制命令

#mysql的启动和关闭 状态查看
systemctl stop mysqld
systemctl status mysqld
systemctl start mysqld
#【建议】设置为开机自启动服务
systemctl enabl是e mysqld
#查看是否已经设置自启动成功
systemctl list-unit-files | grep mysqld

关闭防火墙【阿里云自带已经关了防火墙】

firewall-cmd --state #查看防火墙状态
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动

连接服务器后进行数据库的迁移:

配置JDK

使用Xftp来上传文件

jdk11下载链接:https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html

解压【这里jdk也要下载x86的】

tar -zvxf jdk-11.0.20_linux-x64_bin.tar.gz

编辑 /etc/profile 文件

vim /etc/profile
# 文件末尾增加
export JAVA_HOME=/usr/server/jdk-11.0.20
export PATH=${JAVA_HOME}/bin:$PATH

编辑vim ~/.bash_profile文件【为后面的neo4j做准备】

export JAVA_HOME=/usr/server/jdk-11.0.20
export PATH=$JAVA_HOME/bin:$PATH

执行source命令,使配置立即生效

source /etc/profile

检查是否安装成功

java -version

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NILlMoG5-1691565098689)(T:\MarkdownImage\image-20230808131657894.png)]

打包Java项目

修改yml配置【包括数据库配置和公网IP】

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XSchDmVx-1691565098689)(T:\MarkdownImage\image-20230808153402514.png)]

nohup java -jar springboot-0.0.1-SNAPSHOT.jar > logName.log 2>&1 & # 后台执行,日志输出到对应的log文件

在这里插入图片描述

配置Neo4j

Quit()或者Ctrl+D可以退出python的命令界面
Linux运行python文件:python3 *.py
Neo4j是基于Java的图形数据库,运行Neo4j需要启动JVM进程,因此在安装Neo4j前必须安装JAVA SE的JDK;而与jdk11配对的neo4j为4.3.2下载Linux下neo4j的地址:Neo4j Download Center - Graph Database & Analytics
解压

tar -zxvf neo4j-community-4.4.24-unix.tar.gz

进入neoj4的bin目录下

#默认账号密码:neo4j/neo4j
#修改配置文件
vim ./conf/neo4j.conf
# 允许远程访问
dbms.connectors.default_listen_address=0.0.0.0
# 开启bolt服务,默认端口7687
dbms.connector.bolt.listen_address=:7687
# 开启http服务,默认端口7474
dbms.connector.http.listen_address=:7474
# 开启https服务,默认端口7473
dbms.connector.https.listen_address=:7473
#前台启动命令:
./neo4j console
#后台启动命令
/usr/server/neo4j-community-4.4.24/bin/neo4j start
#状态/usr/server/neo4j-community-4.4.24/bin/
/usr/server/neo4j-community-4.4.24/bin/neo4j status
#停止
./neo4j stop
#重启
./neo4j restart
#http访问
http://yourip:7474
#重置密码
connect:bolt://yourip:7687/
username:*
password:*
#在vim中按ESC退出编辑模式,然后按/+内容可以关键字搜索

输入curl localhost:7474命令,返回下面数据,表示启动成功

{
  "bolt_routing" : "neo4j://localhost:7687",
  "transaction" : "http://localhost:7474/db/{databaseName}/tx",
  "bolt_direct" : "bolt://localhost:7687",
  "neo4j_version" : "4.4.24",
  "neo4j_edition" : "community"
}

尽量注释和代码别在一行,可能会报错

在这里插入图片描述

# 查看python3.6安装了哪些库
ls /usr/lib/python3.6/site-packages/

yum是CentOS的默认包管理器

# 安装python3
sudo yum install python3
python --version # 等同于 python2
python3 --version
pip3 install 包名 #使用该命令来安装python第三方包
python3 -m site --user-site #查找site-packages的目录
cd /root/.local/lib/python3.6/site-packages#查看python3安装的库

安装py2neo

pip3 install pytz
pip3 install neobolt
pip3 install neotime
pip3 install py2neo

安装pyahocorasick

pip3 install pyahocorasick
  • 针对报错sudo: cypher-shell: command not found,说明cypher-shell命令的路径未添加到超级用户(root)的环境变量中,直接走绝对路径
sudo /usr/server/neo4j-community-4.4.24/bin/cypher-shell
  • 针对报错’readonly’ option is set (add!to override)” :wq!以上命令是强制保存退出,然后就可以了!

Neo4j的远程连接:neo4j配置远程连接_neo4j远程访问

之前一直没配好无法远程,不知道是不是因为环境变量的问题NEOJ_HOME
在这里插入图片描述

修改config.py文件下的IP和build_medicalgraph.py下的neo4j的用户名、密码

Neo4j数据库要求在使用实例之前更改密码,即使您提供的凭据是有效的。这是为了确保在生产环境中不使用默认凭据。如果您不使用默认凭据,那么管理员要求您更改密码,因此您会收到此错误消息。即neo4j要求必须更改密码

ALTER USER neo4j SET PASSWORD 'yourpassword' # 在浏览器中执行语句修改密码

可以看到可以正常外网访问服务器的neo4j数据库

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tT79Atjd-1691565098691)(T:\MarkdownImage\image-20230809093412661.png)]

服务器1核2G性能太差了,整个算法跑不起来,只能把图谱建的小一点了,先删除之前建好的数据

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W8wepGaw-1691565098691)(T:\MarkdownImage\image-20230809115443031.png)]

  • 运行build_medicalgraph.py,将图谱建到CentOS上

neo4j可能会因一次性查询数据太多,而挂掉
当python程序在执行Cypher查询,刚开始程序运行正常,过了一段时间,发现程序跑到一半会挂掉,原因是内存不足。
服务器系统为CentOS7,2G内存,安装的Neo4j3.4.4社区版

  • 运行app.py文件,启动AI算法的后台

我的neo4j的bin目录在/usr/server/neo4j-community-4.4.24/bin

移动端部署

修改entity.js和api/base.js的IP为公网IP

先进行H5的配置与打包

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7rDWnDzA-1691565098692)(T:\MarkdownImage\image-20230808160049576.png)]

重新打包Java项目上线的时候,要杀死Java进程重新部署、当然杀死进程后,对应之前的静态资源链接都将失效,所以尽可能一次性上传成功Java项目【移动端部署成功】

Web端部署

安装Nginx

Nginx下载地址:nginx: download

yum install epel-release#更新yml源
yum update
yum -y install nginx #【在linux里面安装,之前上传的安装包就没用了】

Nginx命令

systemctl start nginx #开启nginx服务
systemctl stop nginx #停止nginx服务
systemctl restart nginx #重启nginx服务

网页放到云端,但是是下载到本地上的,所有发请求应该向服务器的IP发送

运行指定打包vue项目

npm run build

将生成的dist目录放到服务器至/user/web

进入到/etc/nginx/conf.d目录,创建web.conf文件,内容如下

server {
	listen 	8082;//监听端口
	server_name locahost;//域名服务
	location / {//IP下面的路径
		root /usr/web/dist;//根目录
		index index.html;//首页
	}
}
server {
	listen 	8080;//监听端口
	server_name locahost;//域名服务
	location / {//IP下面的路径
		root /usr/web/h5;//根目录
		index index.html;//首页
	}
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GBVivr7k-1691565098692)(T:\MarkdownImage\image-20230808161303844.png)]

使配置生效

nginx -s reload

访问成功

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2St6rwga-1691565098692)(T:\MarkdownImage\image-20230808153839233.png)]

常用Linux命令

mv old.cnf new.conf#重命名
chmod 777 neo4j #修改权限
ln -s JAVA_HOME/bin/java /usr/bin/java #软链接

使用env显示所有环境变量

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Nc1OWxqZ-1691565098693)(T:\MarkdownImage\image-20230808231653148.png)]

核心算法

在这里插入图片描述

其他

Idea如何恢复项目打开的询问弹窗,按ctrl+shift+a搜搜Confirm

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tlCRAQCE-1691565098694)(T:\MarkdownImage\image-20230807171400429.png)]

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WTcrazy _

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值