- 博客(1246)
- 资源 (7)
- 收藏
- 关注
原创 AI - 人工智能;Java之SpringAI(二)
此外,SpringAI支持接入多种AI服务,如OpenAI、Ollama、Azure OpenAI、Huggingface等,可以实现聊天、embedding、图片生成、语音转文字、向量数据库、function calling、prompt模板、outputparser、RAG等功能。Spring AI是一个人工智能工程的应用框架,旨在为Java开发者提供一种更简洁的方式与AI交互,减轻在Java业务中接入。且勾选AI中的OpenAI选项(2024之前的老版本IDEA应该没有这个选项)
2024-11-01 08:30:21 1631
原创 AI - 人工智能;Java之SpringAI(一)
人工智能AI是一门新的技术科学,旨在开发、研究用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统,它结合了数学、计算机科学、心理学等多学科的理论,通过让计算机模拟人类的思考和行为过程,实现人机交互,提高计算机的智能水平,以更好地服务于人类社会系统正确解释外部数据的能力,从这些数据中学习的能力,以及通过灵活的适应利用这些学习来实现特定目标和任务的能力。
2024-10-24 13:51:48 1535
原创 MySQL - Navicat自动备份MySQL数据
对于从事IT开发的工程师,数据备份我想大家并不陌生,这件工程太重要了!对于比较重要的数据,我们希望能定期备份,每天备份1次或多次,或者是每周备份1次或多次。如果大家在平时使用Navicat操作数据库,Navicat是自带备份功能的,操作如下首先,来设置一下Navicat保存备份以及SQL语句的路径博主使用Navicat16新建或者编辑连接实例时,点击“”,选择“”,替换为需要保存的地址即可。
2024-10-16 16:55:03 5416
原创 MySQL - 索引详解以及优化;Explain执行计划
一般就是在你的where语句中出现了between、、in等的查询这种范围扫描索引扫描比全表扫描要好,因为它只需要开始于索引的某一点,而结束语另一点,不用扫描全部索引。在索引大大提高查询速度的同时,却会降低表的更新速度,在对表进行数据增删改的同时,MySQL不仅要更新数据,还需要保存一下索引文件。id相同和不同都存在时,id相同的可以理解为一组,从上往下顺序执行,所有组中,id值越大,优先级越高越先执行。索引实际上也是一张表,保存了主键和索引的字段,并且指向实体表的记录,所以索引也是需要占用空间的。
2023-10-31 21:49:54 564
原创 MySQL - MySQL索引优化及口诀
3、不在索引列上做任何操作(计算,函数,(自动/手动)类型转换),会导致索引失效而进行全表扫描。此时应使用覆盖查询(查询范围在已经建立的索引范围之内,尽量与索引的个数,顺序相同)4、存储引擎不能使用索引中范围条件右边的列(范围之后全失效,不包括本身)若中间索引列用到了范围(>、
2023-08-13 21:57:37 450
转载 IDEA - 最全实用插件与使用
日晒主题本身是为vim定制的。后来移植到ide 非常酷!配色非常耐看idea设置黑色经典样式Darcula:idea设置黑色经典样式Darcula。
2023-06-04 15:35:28 5486
原创 Linux - Linux命令大全
1、将一个文件夹下的所有内容复制到另一个文件夹下。5、移动一个文件夹下的所有内容到另一个文件夹下面。表示向下递归,不管有多少级目录,一并删除。2、将一个文件夹复制到另一个文件夹下。3、删除一个文件夹及其下面的所有文件。4、移动一个文件夹到另一个文件夹下面。表示直接强行删除,不作任何提示。
2023-02-02 22:59:10 1938
原创 Linux - Linux下Java安装以及路径查找;配置Java环境变量
1、执行 java -version出现了版本号,表示安装过了JDK,配置了环境变量2、在配置过jdk的情况下,执行java -verbose指令,在打印出的文本最后两行可以看到jdk的安装路径为。
2022-11-26 21:24:29 13880 2
原创 JUC - 多线程之悲观锁、乐观锁,读写锁(共享锁、独享锁),公平非公平锁,可重入锁,自旋锁,死锁(十)
读写锁是一种技术: 通过类来实现为了提高性能, Java 提供了读写锁,在读的地方使用读锁,在写的地方使用写锁,灵活控制,如果没有写锁的情况下,读是无阻塞的,在一定程度上提高了程序的执行效率。读写锁分为读锁和写锁,多个读锁不互斥,读锁与写锁互斥,这是由 JVM自己控制的读锁(共享锁)允许多个线程获取读锁写锁(独享所)只允许一个线程获取写锁:也叫读锁,可以查看数据,但是不能修改和删除的一种数据锁,加锁后其他的用户可以并发读取,但不能修改、增加、删除数据,该锁可被多个线程持有,用于资源数据共享。
2022-10-25 20:55:11 1710
原创 JUC - 多线程之 单例模式(八)
单例模式(Singleton Pattern)是一种非常简单的设计模式之一,当我们使用的对象要在全局唯一时就需要用到该模式,以保证对象的唯一性。除此之外,还能避免反复的实例化对象,减少内存开销单例类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象单例主要有如下创建方式优点:写法简单;避免了线程同步问题缺点:在类装载的时候就完成实例化,没有达到Lazy Loading懒加载的效果。如果从始至终从未使用过这个实例,则会造成内存的浪费 优缺点同上 优点:在使用时才会生成对象
2022-10-24 12:00:34 417
原创 JUC - 多线程之阻塞队列BlockingQueue(四)
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端 (front) 进行删除操作,而在表的后端 (rear) 进行插入操作。和栈一样,队列是一种操作受限制的线性表,进行插入操作的端称为队尾,,进行删除操作的端称为对头.在队列中插入一个队列元素称为入队, 从队列中删除一个队列元素称为出队。因为队列只允许在一端插入,在另一端删除,所以只有最早进入队列的元素才能最先从队列中删除,故。
2022-10-20 22:14:12 436
原创 Java--多线程之synchronized和lock;死锁(四)
在了解synchronized之前,我们先看一个线程不安全的示例如一个账户中有1万块钱,两个人同时取钱,会导致余额不对,或者取的钱比账户中金额还多输出如下t1和t2线程分别在同一个总金额为1万的账户取款 5千,然余额还是5千,这就导致了多线程并发下数据不安全的情况。
2022-10-12 13:19:45 1195
原创 JVM -- 类加载器;双亲委派机制;线程上下文类加载器(八)
类加载器就是根据类的二进制名(binary name)读取java编译器编译好的字节码文件(.class文件),并且转化生成一个java.lang.Class类的一个实例。每个实例用来表示一个Java类,jvm就是用这些实例来生成java对象的。如new一个String对象;反射生成一个String对象,都会用到String.class 这个java.lang.Class类的对象。基本上所有的类加载器都是java.lang.ClassLoader 类的一个实例。
2022-10-11 20:41:00 1404 1
原创 JVM -- 垃圾回收;垃圾回收算法(三)
https://blog.csdn.net/MinggeQingchun/article/details/126947384https://blog.csdn.net/MinggeQingchun/article/details/127066302
2022-10-01 21:20:51 979
原创 JVM -- JVM内存结构:程序计数器、虚拟机栈、本地方法栈、堆、方法区(二)
JVM的内存结构大致分为五个部分,分别是。除此之外,还有由堆中引用的JVM外的直接内存。
2022-09-30 17:36:36 1593
原创 Java--Stream流详解
Stream是Java 8 API添加的一个新的抽象,称为流Stream,可以一种声明的方式处理数据stream().filter()一般适用于list集合过滤list中的数据,主要作用就是模拟sql查询,从集合中查询想要的数据,不用像之前一样遍历list再筛选orElse(null)表示如果一个都没找到返回null(orElse()中可以塞默认值。如果找不到就会返回orElse中设置的默认值)orElseGet(null)表示如果一个都没找到返回null(orElseGet()中可以塞默认值。
2022-08-30 07:28:40 82983 31
原创 Kubernetes - Kubernetes部署“容器化应用”(二)
kubectl create deployment deployment名称 --image=自定义项目镜像名称 --dry-run -o yaml > 需要生成的yaml文件。kubectl create deployment deployment名称 --image=自定义项目镜像名称 --dry-run -o json > 需要生成的json文件。kubectl create deployment deployment名称 --image=自定义项目镜像名称 --dry-run -o yaml。
2022-08-20 22:25:25 1207
原创 Kubernetes - Kubernetes详解;安装部署(一)
Kubernetes 这个单词源于希腊语,意为“舵手”或“飞行员”。Kubernetes,也称为K8S,其中8是代表中间“ubernete”的8个字符,是Google在2014年开源的一个容器编排引擎,作为CNCF(Cloud Native Computing Foundation;云原生计算基金会)最重要的组件之一Kubernetes用于自动化容器化应用程序的部署、规划、扩展和管理,它将组成应用程序的容器分组为逻辑单元,以便于管理和发现,用于管理云平台中多个主机上的容器化的应用。
2022-08-19 12:42:46 1849
原创 SpringCloud - Spring Cloud Alibaba 之 Seata分布式事务服务;AT事务模式(二十)
Seata事务组编号 seata.tx-service-group,用于TC集群名,一般格式为:${spring.application.name}-group。Seata事务组编号 seata.tx-service-group,用于TC集群名,一般格式为:${spring.application.name}-group。Seata虚拟组和分组的映射 seata.service.vgroup-mapping.${seata.tx-service-group}=default。................
2022-08-07 09:00:12 1156
原创 SpringCloud - 微服务(Microservices);Spring Cloud详解(一)
作为一名Java程序员,对系统架构的演变还是需要清楚的,首先就简述一下架构的演变历程单体架构比较初级,典型的三级架构,前端(Web/手机端) + 中间业务逻辑层 + 数据库层。这是一种典型的Java Spring MVC 框架的应用单体架构就是把所有的功能、模块都集中到一个项目中,部署在一台服务器上,从而对外提供服务(集中式架构、单体服务、单体应用)单体架构的应用比较容易部署、测试, 在项目的初期,单体应用可以很好地运行。然而,随着需求的不断增加, 越来越多的人加入开发团队,代码库也在飞速地膨胀。慢慢地,单
2022-06-14 12:59:43 2007
原创 Docker - Docker详解及使用
在说Docker之前,我们先说说传统服务器传统的独立服务器,它是一个独立的硬件设备,可以理解成是一台放在机房的高配置电脑;有独立的处理器、内存、硬盘、带宽等资源,可根据需求安装各种操作系统以及配置各种环境这种服务器缺点:1、花费成本较高(时间成本,资金成本)2、应用迁移比较麻烦,需要重新购买服务器,安装操作系统,配置运行环境,部署应用因此出现了虚拟化技术,主要分为硬件虚拟化(hardware-level-virtualization)操作系统虚拟化(os-level-virtua
2022-04-08 15:54:46 4716 2
原创 Java--Maven多模块管理
超大侧率maven父工程必须遵循两点要求:1、packaging标签的文本内容必须设置为pom2、将src目录删除掉一、空工程Empty Project设置1、创建一个空工程Empty Project(1)File----New----Project,选择Empty Project,点击Next(2)输入工程名,以及存放路径Project name:项目名称Project location:项目存放位置路径2、创建Maven父工程(1)File----
2022-04-05 21:50:19 5893
原创 Java--Maven,POM,maven安装,maven核心,命令
一、MavenMaven是Apache软件基金会组织维护的一款自动化构建工具,Maven这个单词的本意是:专家,内行。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理maven官网地址maven官网maven中央仓库maven中央仓库1、Maven作用(1)maven 可以整合多个项目模块之间的引用,还可以根据业务和功能拆分项目(2)maven可以自
2022-03-27 19:45:35 2083
原创 MySQL-事务;存储引擎
一、事务(transaction)MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务!(1)在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。(2)事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行(3)事务用来管理DML语句(insert,update,delete).
2022-01-19 22:18:54 1126
原创 MySQL-函数
一、数据处理函数(单行处理函数)单行处理函数的特点:一个输入对应一个输出1、lower() 转换小写;标准SQL中函数LCASE()select lower(ename) as ename from emp;2、upper() 转换大写;标准SQL中函数UCASE()select upper(ename) as empname from emp;3、substr() 取子串(substr( 被截取的字符串, 起始下标,截取的长度))MID(字段,1,end)- 从某个...
2022-01-16 21:44:59 5058
原创 SQL- join多表关联
SQL 连接(JOIN)【1】SQL JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段【2】下图展示了 LEFT JOIN、RIGHT JOIN、INNER JOIN、OUTER JOIN 相关的 7 种用法【3】SQL JOIN 类型INNER JOIN:内连接,又叫等值连接,返回两个表中连接字段相等的行LEFT JOIN:左连接,即使右表中没有匹配,也从左表返回所有的行RIGHT JOIN:右连接,即使左表中没有匹配,也从右表返回所有的行FULL J.
2022-01-07 21:09:48 20750 2
原创 Java--多态;抽象类;接口
一、抽象类1、final关键字 1.1、final修饰的类无法继承。 1.2、final修饰的方法无法覆盖。 1.3、final修饰的变量只能赋一次值。 1.4、final修饰的引用一旦指向某个对象,则不能再重新指向其它对象,但该引用 指向的对象内部的数据是可以修改的。 1.5、final修饰的实例变量必须手动初始化,不能采用系统默认值。 1.6、final修饰的实例变量一般和static联合使用,称为常量。 public ...
2021-11-01 16:26:00 1424
原创 iOS-class方法和objc_getClass方法
根据上一篇博客iOS-class、object_getClass、objc_getClass、objc_getMetaClass区别的研究发现,qi's
2021-10-07 10:12:25 2002
原创 iOS-class、object_getClass、objc_getClass、objc_getMetaClass区别
对于这几个方法的区别,首先需要了解 OC 类的数据结构,(任何runtime的文章都会介绍的)对于 class 和 object_getClass 和 objc_getClass 三种方法,首先:全部返回 Class 类对象class 方法class 方法无论是类对象还是实例对象都可以调用,可以嵌套,返回永远是自身的类对象。如:Person *p = [[Person alloc]init];Class *pClass == [p class] == [ [p class]class] .
2021-10-07 09:17:30 1202
原创 iOS-Runtime之class_addMethod给类动态添加方法
一、简介/** * Adds a new method to a class with a given name and implementation. * * @param cls The class to which to add a method. * @param name A selector that specifies the name of the method being added. * @param imp A function which is the imple
2021-10-05 22:18:13 1490
原创 iOS-Runtime消息发送、转发机制
在iOS开发中我们经常会遇到这样的crashunrecognized selector sent to instance 0x******
2021-10-04 22:23:07 1038
原创 iOS-Runtime之SEL、IMP、Method
它们之间的关系可以这么解释:一个类(Class)持有一个分发表,在运行期分发消息,表中的每一个实体代表一个方法(Method),它的名字叫做选择子(SEL),对应着一种方法实现(IMP)。具体的分析如下:...
2021-10-04 21:14:40 1140
原创 iOS-Runtime之unrecognized selector sent to instance/class 防护Crash
可在GitHub上下载示例源代码Demo,欢迎点赞给星,谢谢!一、报错在iOS开发中我们经常会遇到这样的crashunrecognized selector sent to instance 0x******二、报错原因报错原因就是我们调用了一个不存在的方法。用OC的消息机制来说就是:消息的接收者找不到对应的selector,这样就启动了消息转发机制,我们可以通过代码在消息转发的过程中告诉对象应该如何处理未知的消息,防止程序crash。默认实现是抛出下面的异常,这样也就crash了.
2021-10-04 08:04:45 1163
原创 Java--Java版本和JDK版本
对于Java初学者,经常会听到同事,或看到网上Java版本和JDK版本不一的叫法,不明白这两者到底什么关系?其实博主当年初学Java时也有这样的困惑,今天我们就来好好探讨一下,如有不对之处,请加以指正,不喜勿喷,谢谢! Java版本叫法:Java6、Java8、Java11、Java13 (当前最新版本Java17) 等这一类 “Java X” 的Java版本名称同时又会听到,看到 JDK版本叫法:JDK1.6、JDK1.8等这种“J...
2021-10-01 17:23:17 70480 23
原创 Java--HashMap
一、HashMapHashMap 是一个散列表,它存储的内容是键值对(key-value)映射。散列表(哈希表)是一种空间换时间的存储结构,是在算法中提升效率的一种比较常用的方式。散列表,是指可以通过关键字key直接访问到内容value的一种数据结构。可以一个value对应多个key,但是一个key只能对应一个value,其中是通过key映射到一个位置上,来直接访问value。二、HashMap数据结构1、HashMap源码实现HashMap 继承于AbstractMap,实现了 M
2021-07-01 10:31:13 1107 1
原创 Java -- 集合(Map接口和Collection接口)
1、常见集合Map接口和Collection接口是所有集合框架的父接口【1】Collection接口是集合类的根接口,Java中没有提供这个接口的直接的实现类。但是却让其被继承产生了两个接口,就是Set和List。Set中不能包含重复的元素。List是一个有序的集合,可以包含重复的元素,提供了按索引访问的方式。【2】Map是Java.util包中的另一个接口,它和Collection接口没有关系,是相互独立的,但是都属于集合类的一部分。Map包含了key-value对。Map不能包含重复的key
2021-07-01 09:20:48 984
原创 iOS - iOS8.0 至 iOS15.0 版本变化
本文主要讲述iOS8.0系统至iOS14系统的变化差异,博主踩坑历程,仅为iOS开发提供参考,不包括UI一、iOS8.01.定位功能使用改变// 判断定位操作是否被允许if([CLLocationManager locationServicesEnabled]) { locationManager = [[CLLocationManager alloc] init]; locationManager.delegate = self; [locationManager start......
2021-06-02 18:03:17 3067 3
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人