- 博客(84)
- 收藏
- 关注
原创 切换分支时候IDEA提示:workspace associated with branch feature has been restored
这个消息是指与"feature"分支关联的工作区已经恢复。在Git中,工作区是指你当前正在进行修改和编辑的文件和目录。当你切换分支时,Git会自动将工作区的文件和目录切换到目标分支的状态。这个消息的意思是,你之前可能在切换分支之前对工作区进行了一些修改,但在切换到"feature"分支后,Git已经将工作区恢复到了该分支的状态,丢弃了你对工作区的修改。这个消息是Git提供的一种提示,告诉你当前工作区已经与"feature"分支同步,可以继续在该分支上进行开发或修改。
2024-02-22 16:27:14 3187
原创 git的master、develop、feature分支分别是做什么用的?有什么区别和联系?
当需要开发新功能时,可以从develop分支上创建一个新的feature分支,并在该分支上进行开发工作。它是在master分支的基础上创建的,用于开发下一个版本的功能。当开发完成并通过测试后,develop分支的代码将会合并到master分支,形成一个新的稳定版本。一般情况下,不应该直接在master分支上进行开发,而是通过其他分支进行开发,并在开发完成后将代码合并到master分支。总之,master分支用于发布稳定版本,develop分支用于集成和测试新功能,而feature分支用于独立开发单个功能。
2024-02-22 16:09:10 2859
原创 大规模语言模型LLM介绍
LLM 的算力指的是执行这些模型所需的计算资源。这包括用于训练和运行模型的硬件( 如 GPU 或 TPU) 、 内存、 存储空间以及处理。结合了python的易用性和C语言的可移植性。LLM 需要非常强大的算力来处理、 理解和生成文本, 因为它们涉及到数十亿甚至数万亿个参数的训练和推理。LLM 的基石是算力, 而算力的基石是硬件, 硬件的性能直接影响着计算任务的速度、 效率和能力。Python,Java,C++ ,js,新秀语言Mojo。目前最常见的 AI 编程工具大多以插件、 IDE 和终端。
2024-02-02 10:01:40 872
原创 SQL文件过大The file size(2.86M) exceeds the configured limit (2.56M).Code insigh features are not availa
二、在 该Properties文件中重新设置文件大小上限,即加上:idea.max.intellisense.filesize=99999(或者其它你觉得适合的大小)三、重启Database即可。一、点击Help再点击Edit Custom Properties。在DataBase软件中提示。
2024-02-02 09:59:59 732
原创 数据库面试题汇总
如何定位慢查询 SQL慢语句执行的很慢,如何分析? 索引概念及索引底层数据结构? 聚簇索引和非聚簇索引、回表查询? 覆盖索引、超大分页优化 索引创建的原则 什么情况下索引会失效 谈一谈你对SQL优化的经验 事务的特性 并发事务问题、隔离级别 undo log 和redo log 的区别 解释一下mvcc MySQL主从同步原理 MySQL分库分表
2024-02-01 16:04:02 286
原创 常用编程语言的介绍
Obiect-C 通常写作 Objective-C 或者 Obi-C 或 OC,是根据 C语言所衍生出来的语言,继承了 C语言的特性,是C语言的一种方言,是扩充 C的面向对象编程语言。银行的系统,电信的系统都是用java开发的。1万行代码------行云流水(56行/天,半年) 每天0.6个类似于随机点名器的程序。3万行代码------找到工作(167行/天,半年) 每天1.8个类似于随机点名器的程序。5万行代码------工程师 (278行/天,半年) 每天3个类似于随机点名器的程序。
2024-02-01 16:01:45 376
原创 Feign的使用
配置文件方式单个服务feign:client:config:userservice: # 针对某个微服务的配置loggerLevel: FULL # 日志级别所有服务feign:client:config:default: # 这里用default就是全局配置,如果是写服务名称,则是针对某个微服务的配置loggerLevel: FULL # 日志级别Java代码方式@Bean// 日志级别为BASIC如果要全局生效如果是局部生效。
2024-02-01 15:53:31 322
原创 事务的隔离级别:(并发问题解决方案:对事物进行隔离)
事务的隔离级别:(并发问题解决方案:对事物进行隔离)未提交读(什么都没有解决) 读已提交(解决了脏读) 可重复读(解决了脏读和不可重复读)默认的 串行化(解决了脏读、不可重复读、幻读)但是性能太差
2024-01-23 04:45:00 335
原创 线程有哪些状态及状态是如何切换的?
新建状态:new创建线程对象 可执行状态:Runnable 有执行资格(有执行权或者无执行权) 死亡状态:terminated 阻塞状态:blocked 无法获取到锁进入阻塞,获取到锁后变为可执行状态。 等待状态:waiting 调用了wait方法,需要唤醒后,可执行状态。 计时等待:time waiting 调用了sleep(500)方法,时间到了变为可执行状态。
2024-01-22 09:27:46 353
原创 创建线程的方式
继承Thread类,重写run方法。调用t.start方法启动线程。 实现Runnable接口,重写run方法。 创建MyRunnable对象,创建Thread对象,调用t.start方法。 实现Callable接口,重写call方法。 Callable<T>这里写泛型,call方法的返回值就是T泛型的。他是有返回值的。 线程池创建线程。(项目中使用)
2024-01-22 09:26:52 633
原创 1. 线程和进程的区别?
当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。程序由指令和数据组成。指令需要运行,数据需要读写。指令加载至CPU,数据加载至内存。进程分为多实例进程和单实例进程(谷歌浏览器多实例,微信单实例进程。指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理IO的。一个线程就是一条指令流。
2024-01-22 09:23:05 401
原创 MySQL面试题:事务的特性
事务的特性(ACID )原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败。 一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态。 隔离性(Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。(不受外界干扰) 持久性(Durability):事务一旦提交或者回滚,它对数据库中的数据的改变是永久的。(写入到磁盘,落盘操作)
2024-01-22 08:00:00 407
原创 MySQL面试题:什么情况下索引会失效?
违反最左前缀法则。(前提是你在使用索引的时候使用的联合索引。) 范围查询右边的列,不能使用索引。 不要在索引列上进行运算操作,索引将失效。 字符串不加单引号,造成索引失效。(类型转换) 以%开的Like模糊查询,索引失效。
2024-01-22 07:00:00 670
原创 面试题:MySQL索引创建的原则
数据量较大,且查询比较频繁的表。(比如单表超过10万的数据) 常作为查询条件、排序、分组的字段创建索引。 字段内容区分度高。(比如城市有大量的北京市) 内容较长,使用前缀索引 (截取前面一部分内容作为索引) 尽量使用联合索引。(可以使用覆盖索引,避免回表,提高查询效率) 要控制索引的数量。(会影响增删改的效率,维护索引结构的代价比较大) 如果索引列不能存储NULL值,请在创建表时使用NOT NULL约束它。
2024-01-21 22:07:14 638
原创 MySQL超大分页怎么处理?
先分页查询获取的表的ID,并且对表的ID进行排序,就能筛选出我们分页之后的ID集合,因为ID是覆盖索引,我们操作ID的时候效率是比较高的。然后再通过ID集合到原来的表中去做关联查询。问题:在数据量比较大时,limit分页查询,需要对数据进行排序,效率低。解决方案:覆盖索引+子查询。
2024-01-21 22:06:30 472
原创 MySQL面试题:知道什么是覆盖索引吗?
覆盖索引是指查询使用了索引,返回的列,必须在索引中全部能够找到。为什么用Id查询快,为什么不建议用selecte*
2024-01-21 22:05:39 369
原创 MySQL面试题:聚簇索引和非聚簇索引、回表查询?
聚集索引:将数据存储和索引放到一块,索引结构的叶子节点保存了行数据。(必须有而且只有一个)二级索引:将数据和索引分开,索引结构的叶子节点关联的是对应的主键。回表:先到二级索引中找到主键值,再拿着主键值到聚集索引中找到行数据。聚簇索引也叫聚集索引,非聚簇索引也叫二级索引。
2024-01-21 22:05:02 550
原创 面试题-MySQL索引概念及索引底层数据结构?(了解过索引吗?)
索引是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库还维护着满足特性查找算法的数据结果(B+树)。这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。B+树阶树更多,路径更短。(矮胖树,寻找的层级比较短,性能比较高。
2024-01-21 22:03:59 368
原创 SQL慢语句执行的很慢,如何分析优化呢,(如何优化的呢?)
可以采用explain或者DESC命令获取MySQL如何执行select语句的信息。通过key和key_len他们两个查看是否可能会命中索引。直接在select语句前加上explain或者DESC。可以采用MySQL自带的分析工具Explain。聚合查询、多表查询、表数据量过大查询。SQL执行慢如何解决?
2024-01-21 22:03:16 702
原创 面试题-MySQL如何定位慢查询
slow_query_log=1开启MySQL慢日志查询开关。假如你的业务接口就是比较慢,你怎么知道是SQL的问题呢?就算是SQL的问题,你怎么找出执行慢的SQL呢?SQL语句执行超过2秒,就会视为慢查询,就会记录到慢查询日志。慢日志文件目录:/var/lib/mysql/localhost-slow.log。慢查询出现的情况就这些:聚合查询、多表查询、表数据量过大查询、深度分页查询。表象:页面加载过慢、接口压测响应时间过长(超过1S)。慢日志查询默认是关闭的,需要手动开启。调试工具:Arthas。
2024-01-21 22:02:03 549
原创 面试题String怎么帮助我们处理循环依赖的?
Bean属性赋值前会先向三级缓存中放入一个lambda表达式,该表达式执行则会生成一个半成品Bean放入二级缓存。二级缓存Map 存放不完整的Bean(只实例化完,还没属性赋值、初始化)、三级缓存Map 存放一个Bean的lambda表达式(也是刚实例化完)Bean初始化完成后将完整的Bean放入一级缓存,同时清空二、三级缓存。Bean实例化前会先查询缓存,判断Bean是否已经存在。一级缓存Map 存放完整的Bean(流程跑完的)、三级缓存存的是什么样的数据?
2024-01-21 22:01:23 328
原创 分布式任务调度-xxl-job
执行器集群部署时,任务的路由策略选择分片广播, 一次任务调度将会广播触发对应集群中所有执行器执行一次任务。XxljboHelper.getshardIndex() 获取分片序号。XxljboHelper.getshardTotal() 获取总分片数。一次任务执行多个任务项,任务项模于总分片数,找到对应的机器(分片)。故障转移+失败重试:路由策略改为故障转移,修改失败重试的次数。任务找机器执行,找哪台的策略就是路由策略。路由策略选择分片广播,代码中拿到分片参数。查看日志:任务失败后可以查看。
2024-01-13 08:41:22 638
原创 RabbitMQ的高可用机制
(标准集群)会在各个节点间共享部分数据(交换机和队列元信息),但不包含队列里的消息;如果队列不在该节点,会从数据所在节点传递到当前节点并返回;创建队列的节点称为该队列的主节点,备份的其他节点叫该队列的镜像节点。所有操作丢失主节点完成,然后同步给镜像节点(不然数据不就不一致了吗)交换机、队列、队列中的消息会在各个MQ的镜像节点之间同步备份。主节点宕机后,镜像节点会替代它成为新的主节点。普通集群,镜像集群(开发时用的多),仲裁集群。一个队列的主节点可能是另一个队列的镜像节点。通过搭建集群保证高可用。
2024-01-13 08:35:49 776 1
原创 MQ消息堆积如何解决?
当生产者发送消息的速度超过消费者处理消息的速度,就会导致队列中的消息堆积,只到队列存储消息达到上限。之后发送的消息就会成为死信,可能会被丢弃,这就是消息堆积的问题。RabbitMQ如果有100万消息堆积在MQ,如何解决?消费者要消费消息时才会从磁盘中读取并加载到内存中。接收到消息后直接存入磁盘而非内存。注解的方式.value=lazy。支持数百万条的消息存储。配置的方式 .lazy。
2024-01-13 08:35:18 921 1
原创 消息的重复消费问题如何解决的
消费者在向队列发送确认的时候挂了,或者发生网络抖动。MQ会重新给消费者发送消息,这不重发消费了吗。消息的重复消费问题解决:适用于任何MQ(RabbitMQ Kafka RocketMQ)解决方案:每条消息设置一个唯一的标识ID(业务唯一标识,比如支付ID)幂等方案:分布式锁,数据库锁(悲观锁,乐观锁)。消费者接收到消息的时候校验这个业务ID是否存在。
2024-01-13 08:33:32 425
原创 RabbitMQ如何保证消息不丢失?
当消息成功发送到MQ:会返回一个publish-confirm ack(acknowledge)消费者确认机制:消费者处理消息后可以向MQ发送ack回执,MQ收到ack回执后才会删除该消息。none: 关闭ack,MQ假定消费者获取消息后会成功处理,因此消息投递后立即被删除。解决的问题:publisher confirm机制来避免消息发送到MQ过程中消失。MQ默认是内存存储消息,开启持久化功能可以确保缓存在MQ中的消息不丢失。交换机持久化,队列持久化,消息持久化。处理问题:消费者导致的消息丢失问题。
2024-01-13 08:32:38 1036
原创 什么是算法复杂度?
T(n)=(3n+3)*1ms 低阶、 常量和系数不影响趋势。可以改为:T(n)=O(n)常见的时间复杂度:O(1)、O(n)、O(n^2)、O(logn)、O(n*logn)大O表示法:不具体表示代码真正的执行时间,而是表示代码执行时间随数据规模增长的变化趋势。T(n)与代码的执行次数成正比(代码行数越多,执行时间越长)时间复杂度就是算法的执行时间与数据规模之间的增长关系。数组,链表,二叉树,红黑树,散列表。时间复杂度:代码的执行耗时。评判别人写的代码的好坏。例子:求1~n的和。
2024-01-13 08:31:12 461
原创 ArrayList底层的实现原理
ArrayList底层的实现原理 ArrayList底层是用动态数组实现的 ArrayList初始化容量为0,当第一次添加数据的时候才会初始化为10。 ArrayList在进行扩容的时候是原来容量的1.5倍,每次扩容都需要拷贝数组。 ArrayList在添加数据的时候 确保数组已使用长度size+1之后足够存下下一个数据 计算数组的容量,如果当前数组已使用长度+1后的大于当前的数组长度,则调用grow方法扩容(原来的1.5倍) 确保新增的数据有地方存储之后,则将新
2024-01-13 08:29:36 405
原创 git常用命令
例如:git commit -m "修改了..." hello.txt。git remote add +简称+远程仓库地址。git commit -m "msg" +文件名。git reset --hard +版本号。git push +远程仓库简称+分支名称。git pull +远程仓库简称+分支名称。git clone +远程仓库地址。git clone +远程仓库地址。git reset +文件名。
2024-01-07 09:26:28 567
原创 HashMap出现死锁的场景
为了避免这种并发问题,可以使用线程安全的HashMap实现类,比如ConcurrentHashMap。HashMap是Java中的一个线程不安全的集合类,因此并不会出现真正意义上的死锁场景。然而,如果多个线程同时对HashMap进行读写操作,可能会出现一些并发问题,比如数据丢失、数据不一致等。4. 由于HashMap是线程不安全的,线程A和线程B可能同时修改HashMap的内部结构,导致数据覆盖或数据丢失。3. 线程B同时执行put操作,也尝试向HashMap中添加一个元素。
2024-01-06 11:22:09 646
原创 Java开发面试的几个问题
第二个对象是通过构造函数new String()在堆内存中创建的新字符串对象。因此,使用String s = new String()创建了两个对象,一个位于常量池中,另一个位于堆内存中。内容一致,地址值不同,是不同的对象。3、Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;第一个对象是字符串常量池中的空字符串对象,它是在Java虚拟机启动时就被创建并放入常量池中的。1、Integer是int的包装类,int则是java的一种基本数据类型。
2024-01-06 11:14:40 464
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人