自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(三十二)- 微服务(12)

request.source().query(QueryBuilders.matchQuery("all","如家"));// 覆盖非高亮结果。// 2.1 准备BooleanQuery。// 取文档source。// 取文档source。// 取文档source。// 1. 准备request。// 1. 准备request。// 1. 准备request。// 1. 准备request。// 1. 准备request。// 1. 准备request。// 4.2 获取文档数组。

2024-06-12 16:40:14 1142 3

原创 山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(三十一)- 微服务(11)

"require_field_match": "false", // 取消默认 改为不用与搜索字段一致。geo_bounding_box查询 查询的是给定的两点形成的矩形区域内满足要求的文档。match查询,全文检索查询的一种,会对用户输入内容进行分词,然后去倒排索引库检索。{"term": {"brand": "皇冠假日"}},{"term": {"brand": "华美达"}}{"term": {"city": "上海"}}"FIELD": "经度,纬度","brand": "如家"

2024-06-09 13:50:54 957

原创 山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(三十)- 微服务(10)

/ 经度 + 纬度 拼接之后的对象 ,即索引库需要的类型。// 3. 发送请求 client.indices()的返回值包含了索引库额所有操作。// 2. 准备json文档 把查到的对象转换成json对象。// 把hotel转成hotelDoc对象。// 1. 创建Request对象。// 1. 创建request对象。// 1. 创建request对象。// 1. 准备request。// 1. 准备Request。// 1. 准备request。// 1. 创建请求对象。

2024-06-08 12:55:27 1194 1

原创 山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(二十九)- 微服务(9)

设置elasticsearch的地址,因为kibana已经与elasticsearch在一个网络,因此可以用容器名直接访问elasticsearch。全量修改 会删除旧文档, 添加新文档(既能修改又能新增,id存在就修改,不存在就新增):加入一个名为es-net的网络中,与elasticsearch在同一个网络中。"子属性1": "值3","firstName": "云","firstName": "云","子属性2": "值4""字段名": "新的值""lastName": "赵"

2024-06-07 14:42:49 936 1

原创 山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(二十八)- 微服务(8)

System.out.println("消费者1接收到fanout.queue1的消息 : " + msg + LocalTime.now());System.out.println("消费者1接收到simple.queue的消息 : " + msg + LocalTime.now());System.out.println("消费者接收到topic.queue1的消息 : " + msg + LocalTime.now());步骤一 : 声明交换机,队列 , 并绑定队列和交换机。

2024-06-06 19:03:17 1196 2

原创 山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(二十七)- 微服务(7)

浏览器访问192.168.142.129:15672。MQ就是事件驱动架构中的Broker。

2024-06-05 10:12:30 609 2

原创 山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(二十六)- 微服务(6)

run是创建容器 , mynginx是容器名称 --p 80:80是挂载端口 -v html:/usr/xxxx是挂载到这个目录下 -d是后台运行 nginx是镜像名。docker images --help 查看docker images的帮助文档。容器和数据耦合度较高,不便于修改,数据不可服用 , 升级维护困难。例 : 从dockerhub拉取一个nginx的镜像并查看。docker --help 查看docker帮助文档。运行容器是用-v参数挂载数据卷。创建一个nginx容器。容器从暂停到运行;

2024-06-04 09:12:14 1155 1

原创 山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(二十五)- 微服务(5)

uri: lb://userservice # 路由的目标地址 lb是负载均衡 , 后面跟上服务名称。- Path=/user/** # 路由匹配规则 只要以 /user/ 开头的就都符合要求。- Path=/user/** # 路由匹配规则 只要以 /user/ 开头的就都符合要求。- Path=/user/** # 路由匹配规则 只要以 /user/ 开头的就都符合要求。predicates: # 路由断言 就是判断请求是否符合路由规则条件。

2024-06-03 19:39:45 836

原创 山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(二十四)- 微服务(4)

修改日志级别 :配置文件方式 :全局生效 :feign:client:config:default: # default就是全局配置 如果写服务名称就是针对某个微服务的配置loggerLevel: FULL # 日志级别只针对某个微服务生效feign:client:config:userservice: # 只对userservice生效loggerLevel: FULL # 日志级别代码配置。

2024-06-02 16:42:08 875

原创 山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(二十三)- 微服务(3)

在nacos中找配置文件最后是拼接application下的name 和 profiles下的active的环境 以及 file-extension 的后缀名 : userservice-dev.yaml。自身的application的name 组合profiles的active 再组合 file-extension形成的content-api-dev.yaml文件。# extension-configs是直接依赖某个配置文件,如下是直接依赖了content-service-dev.yaml中的内容。

2024-05-29 14:09:10 841

原创 山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(二十二)- 微服务(2)

在order-service中加入同样配置,测试order在调用userservice是否优先选择本地集群,把order-service放在HZ,user-service两个分支一个在HZ,一个在SH。测试结果 : 在杭州集群的order-service只调用了在杭州集群的user-service而未调用在上海集群的user-service。修改user-service的yml配置文件 order-service同理 把user-service服务发现到nacos。

2024-05-28 16:56:29 1089

原创 山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(二十一)- 微服务(1)

defaultZone: http://localhost:10086/eureka # 地址 信息。defaultZone: http://localhost:10086/eureka # 地址信息。提供者 : 一次业务中,被其它微服务调用的业务(提供接口给其它微服务)// 利用RestTemplate发http请求。消费者 : 一次业务中, 调用其他微服务(调用其它微服务的接口)// 创建RestTemplate对象并注入容器。--eureka服务端-->// 根据id查询订单并返回。

2024-05-27 16:04:36 1177

原创 山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(二十)- JUC(6)

相当于就是生产者给队列生产结果,消费者负责处理结果不需要一一对应平衡资源消息队列有容量控制阻塞队列控制结果出队列​i < 3;queue.set(new Message(id, "值" + id));},"生产者" + i).start();​try {}, "消费者").start();​​@Slf4j//存消息的集合// 消息容量​​// 获取消息// 检查队列是否为空try {

2024-05-26 13:45:55 708

原创 山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(十九)- JUC(5)

如果在尝试加轻量级锁的过程中,CAS 操作无法成功,这时一种情况就是有其它线程为此对象加上了轻量级锁(有 竞争),这时需要进行锁膨胀,将轻量级锁变为重量级锁。重量级锁竞争的时候,还可以使用自旋来进行优化,如果当前线程自旋成功(即这时候持锁线程已经退出了同步块,释放了锁),这时当前线程就可以避免阻塞。当退出 synchronized 代码块(解锁时)如果有取值为 null 的锁记录,表示有重入,这时重置锁记录,表示重入计数减一。如果两个线程用同一个偏向级锁,那么锁会变成不可偏向,升级为轻量级锁。

2024-05-25 13:19:47 929

原创 山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(十八)- JUC(4)

如果又有线程进来,那么会看看obj是否关联锁,然后再看看锁是否有owner,如果有那么就进入到EntryList阻塞等待。replace也实际上只是创建数组,然后对比原数组的旧值,如果是旧值那么直接给新的数组的那个位置赋值新值。下面的代码出现的问题就是线程1判断成功之后切换,刚好释放了锁,然后就是线程2获取锁进行判断,再次切换线程1获取锁处理put,切换线程2也可以获取锁处理put。如果只有读操作,则线程安全如果有读写操作,则这段代码是临界区,需要考虑线程安全共享且有读写操作不一定安全。

2024-05-24 15:47:14 803 1

原创 山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(十七)- JUC(3)

线程1上锁之后,线程2无法获取锁不能够执行临时区,线程2阻塞等待线程1完成释放锁之后才能够使用。可以把synchronize类比成一个房间,每次有锁的人才能够进入房间做事情,就算cpu时间片用完,只要没有这个锁那么其他线程是无法进入房间的。情况3 : 3 ,1s后 1 2 || 3 , 2 1s后打印1 || 2 , 3 1s后打印1。情况6 : 1s后打印1 后2 || 2 1s后打印1。情况8 : 1s后打印1 后2 || 2 1s后打印1。情况2 : 1s后1 2 或 1s后2 1。

2024-05-23 15:55:11 837 1

原创 山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(十六)- JUC(2)

如果是t1先的话,那么就是t1在处理1秒的同时,t2也在处理一秒,然后t2执行join,那么还只剩下1s处理,那么t1和t2也只需要等待多1s就能够继续执行主线程的。简单来说就是两个线程开启,如果下面两个都是join,那么实际上两个线程都会各自执行,互不干扰,直到最后一个线程执行完,那么才会执行join下面的代码。log.debug("打断状态: {}",Thread.currentThread().isInterrupted());log.debug("洗水壶");log.debug("洗茶壶");

2024-05-22 10:51:18 681

原创 山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(十五)- JUC(1)

睡眠可以使用在while循环自转的地方,如果长时间自转就会消耗CPU的使用时间,其它线程无法使用。先分配栈给线程,线程调用main方法,在栈分配一个栈帧给main方法,栈帧保存锁记录、局部变量表、操作数栈、返回地址(返回到原来的栈帧方法的下一条指令)Runnable runnable = () -> log.debug("aaa");log.debug("打断标记 : {}",t.isInterrupted());每次开启一个线程都会产生一个线程的栈给线程使用,实际上就是一开始分配的虚拟机栈。

2024-05-21 15:37:20 508

原创 山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(十四)- 函数式编程(3)

br/>

2024-05-20 11:23:17 584

原创 山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(十三)- 函数式编程(2)

设置流的最大长度,超出的部分会被抛弃掉<br/>对年龄降序排序,然后打印年龄最大的两个作家。跳过流的前n个元素 返回剩下的元素<br/>打印除了年龄最大的作家之外的作家。<br/>打印现有书籍的所有分类,去重,不也能包括"哲学,爱情"可以把一个对象转换为多个对象<br/>打印所有书籍的名字,去重。可以对流当中的元素进行排序<br/>按年龄降序排序,不能重复。对流中的数据按制定的计算结果给出结果<br/>求所有年龄的和。获取元素的个数<br/>输出作家的书籍个数,去重。判断是否所有的都匹配<br/>

2024-05-19 11:18:20 968

原创 山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(十二)- 函数式编程(1)

books1.add(new Book(1L, "类别,分类啊", "书名1", 45D, "这是简介哦"));books1.add(new Book(2L, "高效", "书名2", 84D, "这是简介哦"));books2.add(new Book(6L, "高效", "书名5", 89D, "这是简介哦"));books3.add(new Book(8L, "高效", "书名7", 44D, "这是简介哦"));// i输出结果为30。System.out.println("方法执行了");

2024-05-18 21:27:59 813

原创 山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(十一)- Linux

" . " 表示当前目录,比如 cd ./Desktop 表示切换到当前目录下的Desktop目录内,和 cd Desktop效果一致" .. " 表示上一级目录,比如:cd.. 即可切换到上一级目录,cd../.. 切换到上二级的目录" ~ " 表示HOME目录,比如:cd~ 即可切换到HOME目录或cd~/Desktop,切换到HOME内的Desktop目录。参数2,Linux路径,表示要移动去的地方,如果目录不存在,则进行改名,确保目标存在。

2024-05-16 23:45:41 784

原创 山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(十)- SpringBoot学习(2)

/ 相当于调用被增强方法。System.out.println(methodName + "方法被调用");可以在application.yml中激活指定环境 spring.profiles.active。resources/static/index.html 访问时直接写/index.html。com.xinbo: debug # com.xinbo是具体包名。测试环境 : application-test.yml。生产环境 : application-prod.yml。

2024-05-14 15:53:05 429 1

原创 山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(九)- SpringBoot学习(1)

官方stater都是 spring-boot-stater开头加上场景名 比如spring-boot-starter-data-jpa。非官方的式后缀是srping-boot-starter 比如 mybatis-srping-boot-starter。如果加上了@ConfigurationProperties的注解,可以引入依赖进行提示。--mybatis启动器-->--mysql驱动-->A依赖C,B依赖C,但是A和B依赖的式不同版本。需要某功能时,直接引入对应的stater就可以。

2024-05-12 16:40:38 437 1

原创 山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(八)- Mybatis学习(3)

sqlsession级别的缓存,默认开启, 第一次查询相当于存到了某个sqlsession对象的集合中,再次查询同一个对象直接从缓存中去拿,必须是同一个session对象才能拿到缓存,换了session对象就拿不到别的session的缓存。相当于在mapper层加的缓存,只要是同一个mapper对象,不同的sqlsession对象也能拿到同一个缓存。如果查询完后,对表有增删改的操作,会清空sqlsession的缓存。手动调用sqlsession的clearCache的方法清除缓存。// 加一个角色属性。

2024-05-10 12:21:19 607 1

原创 山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(七)- Mybatis学习(2)

foreach collection="ids" open="id in (" close=")" item="id" separator=","> // collection是要遍历的集合 open是开始的拼接内容 close是结束的拼接内容 item是拼接的元素,取名为id。<id column="id" property="id"></id> // colume对应表中的字段,property对应实体类的字段。resultMap继承。

2024-05-09 13:07:19 749

原创 山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(六)- Mybatis学习(1)

select id="findAll" resultType="com.sangeng.entity.User"> // id对应接口的方法名 resultType是返回类型。<package name="com.sangeng.mapper"/> //mapper接口所在的包 要求xml所在路径和mapper接口的包名要对应。<mapper namespace="com.sangeng.mapper.UserMapper"> // namespace是对应接口的全类名。

2024-05-08 13:51:42 558 2

原创 山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(五)- Spring学习(3)

/ 被增强方法的方法签名。execution(* com.sangeng.service.*.*()) 表示com.sangeng.service包下任意类,方法名任意,要求方法不能有参数,返回值类型任意。execution(* com.sangeng.service.*.*(..)) 表示com.sangeng.service包下任意类,方法名任意,参数列表任意,返回值类型任意。System.out.println(proxy.fortuneTelling("张三"));

2024-05-07 18:59:37 919

原创 山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(四)- Spring学习(2)

Component @Controller @Service @Repository Service类用@Service实体类用@RepositoryController类用@Controller其他类用@Component。 //调用了工厂方法后的返回值以car为id被放入spirng容器中。--使用静态工厂创建Car放入容器-->

2024-05-06 08:51:01 571

原创 山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(三)- Spring学习(1)

// ref的值是下方容器中注入的Dog的id。三更西施

2024-05-05 14:11:41 756 3

原创 山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(二)- Git学习

git commit (暂存区 -> 本地仓库) git commit -m"加上自己的描述" 如 : git commit -m"update01"git add (工作区 -> 缓冲区) git add 文件名 || git add . 通配符,直接把工作区的所有文件交到暂存区。git pull git-mayun-demo master git-mayun-demo是自己起的库的别名。git log --pretty=oneline --abbrev-commit 优化。打开Git Bash。

2024-05-04 21:15:14 621 1

原创 山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(一)- Mybatis-Plus学习

user.setInfo("{\"age\": 24, \"intro\": \"英文老师\", \"gender\": \"female\"}");user.setInfo("{\"age\": 24, \"intro\": \"英文老师\", \"gender\": \"female\"}");// 查询名字中带o的,存款大于1000的人的id,username,info,balance字段。// 更新id为1,2,4的用户的余额,扣除200。// 更新用户名为jack的余额为2000。

2024-05-03 14:40:54 771 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除