自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 搜索引擎项目(四)

此时我们打开项目的文件所在位置,其目录下有一个target文件,我们打的war包就在此目录下,我们将此文件传输到云服务器的Tomcat,Webapps目录下,就会自动解压。这个方法之前是getLast()也就是jdk22对取数组最后一个元素的方法进行了封装,但是jdk17没有这个方法,就导致了bug的出现。连接云服务器,在云服务器中下载jdk以及tomcat,jdk的版本一定要与代码运行时jdk版本一致。TomcatServer从文件中查找,打开刚才下载好的Tomcat的文件路径即可。

2024-07-27 12:53:00 633

原创 搜索引擎搜索功能(三)

SearchEngine · 王宇璇/submit - 码云 - 开源中国 (gitee.com)

2024-07-27 09:41:35 850

原创 搜索引擎项目索引构建(二)

系统性的讲解项目创建的各种细节

2024-07-27 09:39:51 1075

原创 搜索引擎项目构建与解析(一)

这是源码,大家可以下载下来作为参考,一起食用效果更佳:SearchEngine · 王宇璇/submit - 码云 - 开源中国 (gitee.com)搜索引擎项目总体来看内容比较简单,代码量也比较少,是一个易上手的项目。建立这个项目的初衷就是个人认为搜索引擎在生活中比较实用的一个项目,可以依据这个简单的项目了解搜索引擎的大致工作原理,为以后处理学习或者工作中的项目提供一个最基本的流程模板做参考。

2024-07-27 09:34:18 985

原创 String,StringBuffer,StringBuilder的使用

String类用于创建和操作字符串。String类内部被final修饰,不可以进行修改。(所谓的修改实际上是在内存中开辟了一块新的空间储存修改后的内容)由此可以看出a,b所指向的字符串地址相同,说明他们指向的是同一个对象。而这种实例化一个对象,此时其引用地址还是储存于栈中,而其内容中的字符串储存与堆中,在堆中的字符串内容也不能够改变,但是新建立的字符串就算和之前字符串内容相同也不会指向相同的地址,而是在堆中新开辟一块内存进行储存。此时用 == 比较两个对象的地址,地址不同。

2024-07-25 10:18:05 310

原创 根据文件中的内容查找文件

思路:先让用户输入一个目录,然后遍历目录下的所有文件,将文件中的内容提取出来,用StringBuilder将所有字符串拼接,然后再用StringBuilder的Index方法来查找匹配的字符串,从而根据内容找到文件,返回该文件名称以及绝对路径.

2024-04-02 11:16:31 253 1

原创 关于next(),nextInt(),nextLine()输入时产生的问题

next和nextline都是接收字符串,但是next遇到空格,tab,enter都会结束,而且不会接收这些空白字符nextline()只有在遇到enter才会结束,并且会接收enter可以发现我们在输入next之后就结束了,当next(nextInt)和nextLine连用的时候,next不会接收enter,此时ernter还留在sc中,如果下一次输入还是用next的话,也会跳过enter继续接收后面的字符串.

2024-03-28 10:59:22 386 1

原创 文件复制(文件IO)

此代码由于输入流是next,所以不能输入带有空格的路径,例如we chat路径next接收就会从中间断开导致文件无法正确查询。

2024-03-28 10:21:20 216 1

原创 通过文件名查询文件的简单小程序(java文件IO)

我们每个文件夹再程序中称为Directory(目录),我们查找的文件是再目录中查询,所以我们首先需要用户提供一个目录,可以是任意文件夹,也可以是C:\ 相当于根节点处开始查询。还需要用户提供要查找的文件名,然后对目录进行层层递归,找出其中所有的文件与目标文件名比较完成查询.依据此思路我们完成代码.我们电脑中文件本质上就是一棵多叉树,我们需要遍历其叶子节点找到要查找的文件.

2024-03-25 14:45:05 162 1

原创 锁策略(面试进阶)

在加锁之前就预估出现所冲突的概率不大,因此在加锁时就不会进行太多的工作。

2024-03-25 09:00:00 1576 1

原创 线程池的介绍与实现(多线程代码案例)

了解线程池,首先我们要了解池的概念池:把要用的对象准备好,用完的对象不要释放,而是留着下次使用.例如常量池,数据库连接池,线程池进程池,内存池.我们计算机引入线程是线程的创建和销毁开销少,可以减少计算机的负担,但是大量线程进行创建和销毁还是会使电脑的处理效率下降所以我们引出了线程池的概念所谓线程池,就是我们提前创建好多个线程,使用完成之后不销毁已备下次使用。

2024-03-25 08:45:00 1432 1

原创 计时器代码案例以及简单实现

计时器:类似于闹钟,可以设定时间,当时间到了之后去执行某个逻辑1s后打印 1000,2s后打印2000,3s后打印3000.除非程序员手动结束,否则程序不会结束.

2024-03-24 09:00:00 871 1

原创 阻塞队列讲解以及简单实现(多线程代码案例)

此时如果上述情况,我们在进行第一次take操作之后,唤醒的take线程会在进行一次判断,如果检测到队列已满便又会进入wait阻塞,此时代码线程安全.而且在我们java的标准库中提醒了我们wait要搭配while进行使用.(如果针对一个已满的队列入队,此时队列的操作就会阻塞,一直阻塞到队列不满(其他线程出队列元素)如果针对一个已经空的队列进行出队列那么就会阻塞,一直阻塞到队列不空(其他线程入队列元素))对于put来说,队列满了之后就需要阻塞,当队列满了之后用wait进行阻塞,此时等待take操作.

2024-03-19 14:30:44 661

原创 单例模式的介绍与实现(以及线程安全问题)

设计模式:框架存在的目的一样,都是大佬设计出来的,让一些代码写的不是很好的菜鸡程序员也能写出不错的代码.框架(硬性的规定) 设计模式(软性的规定) 这样就兜住了下限.单例(singleton)指的是单个实例(对象),具体来说就是某个类在**一个进程**中只能创造出一个实例.这样我们就能对代码进行更加严格的校验和检查.唯一的对象如何保证呢?1.写一个文档,约定每一个接手维护代码的程序员不能够创建多个实例(不靠谱)2.通过单例模式,一些技巧来保证这个代码只能有一个实例.

2024-03-19 08:00:00 800

原创 Thread相关的重要方法,interrupted与sleep同时使用

此异常由interrupt()引起,Interrupt()让sleep的睡眠时间变为不确定因素,如果线程t1睡眠时调用Interrupt方法会使sleep提前唤醒,此时sleep抛出异常,同时清除interrupted()的标志位变回false,例如:上厕所每个隔间都有一把锁,一个线程拿到这把锁,其他线程就必须等带此线程执行完毕,其他线程再去竞争锁,得到锁后此线程执行,其他持有相同锁的线程等待(阻塞)随便创建个对象就可以用来加锁,但是一定要记住对同一对象上锁,不然不会阻塞!之后t1.isAlive();

2024-03-14 18:35:16 845 1

原创 多线程的构建

多线程的代码就是依靠Thread类来构建的.多线程代码的5种写法首先要明确我们的main方法是主线程,那么只要多出一条线程这个代码就是多线程了.茴香豆的茴有四种写法,但是我们多线程的代码还多一种,接下来我们一一介绍.1.继承Thread类重写run方法class MyThread extends Thread{ public void run(){ System.out.println("线程1执行"); }}public class Thr

2024-03-14 16:28:53 406 1

原创 深入了解进程,线程,以及它们之间的区别与联系

1.进程包含线程2.每个线程是一个独立的执行流,可以执行代码,并且单独参与到cpu的调度中去.(状态,上下文,优先级,每个线程都单独有一份)3.每个进程都有自己的资源,线程可以共同使用这些资源进程是分配资源的基本单位,线程是执行调度的基本单位4.进程与进程不会互相影响,但一个进程中的一个线程出现问题,则可能影响到其他线程5.同一个进程中的线程可能会相互影响,引起线程安全问题.6.线程不是越多越好,线程多了会影响PCB的调度。

2024-03-13 17:02:35 2105 1

原创 关于二叉树的各种遍历,高度,叶子节点个数,节点个数,是否为完全二叉树,第k层节点个数

先判断root是否为空,如果不为空,先序遍历root一定是第一个元素,而后对左树进行先序遍历,打印左边的元素,在左树遍历完成之后,最后一个节点为空,返回null,此时自下而上的遍历每一棵树的右树,对每个右树的遍历也是优先左树,再遍历右树,此时一个二叉树的前序遍历就完成了.第一次进来就是第一层的节点个数,此后每次递归k-1, 那么递归一次就是第二层,以此类推,当递归到k == 1的时候,此时就是我们所需要的层数,若此时的节点不为空就ruturn 1;2.调用右孩子打印,储存他的两个孩子节点.

2024-03-08 10:21:13 781

原创 异常的介绍以及运用

java虚拟机无法解决的严重问题,比如:JVM的内部错误,资源耗尽等等,典型代表:StackOverflowError和OutOfMemoryError,一旦发生,无力回天。捕获try中的异常,如果try中没有异常,那么catch不执行。将可能发生异常的代码放入try{}的括号中,如果发生异常则try中的剩余代码不在执行。编译时是可以通过的,但是运行发生异常。这篇博客中有详细介绍,而在系统查到此异常时就需要我们用throw抛出异常。编译时异常在编译阶段就会抛出异常,并不需要运行。

2023-10-11 16:29:40 60

原创 Clone方法的使用

对于一些初学java的同学,Clone这个方法的使用相较于其他方法相当麻烦。那么今天就就让我们花五分钟彻底学会这个方法,我会为大家详细的讲解其中的每一步。

2023-09-08 14:47:41 395 1

原创 java中值传递与引用传递的区别

java中值传递与引用传递的区别

2023-09-07 09:12:27 311 1

空空如也

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

TA关注的人

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