![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 60
咭咭熊
这个作者很懒,什么都没留下…
展开
-
牛客网--刷题
1.描述:输入4个整数,分别为:A-B;B-C;A+B,B+C,计算A、B、C分别为?2.进制转换描述:将十进制数M转换为N进制数;原创 2022-06-30 16:21:43 · 278 阅读 · 1 评论 -
【Java项目】——基于SpringBoot的用户信息管理系统
一、项目简介用户信息管理系统:1.根据权限的不同,将用户角色划分为:超级管理员和普通管理员;2.当管理员或者普通管理员在登录页面登录成功之后,进入相应的系统主页面,查看到自己权限之内的用户列表信息;3.查询到列表信息之后根据自己的权限对用户的相关信息进行增加、修改、组合条件查询、单条和多条删除等操作;二、功能分析用户信息管理系统1. 登录功能 管理员登录 普通用户登录 2. 用户的列表页面 管理员的列表; 普通用户的列表 3. 条件查询原创 2021-07-27 20:48:04 · 5624 阅读 · 9 评论 -
【Java项目】——在线聊天室(附源码)
在线聊天室一.需求分析:实现web版在线聊天室(1)进入登录页面;(2)登录成功之后,进入该系统主页面;(3)在主页面中可以查看到当前所有的频道列表;(4)点击某个频道列表,可以查看到该频道列表中的信息;(5)点击某个频道,可以发送消息,此时其它用户也可以查看到该消息;二.相关技术webSocket介绍:webSocket是应用在Web浏览器和服务器之间进行任意的双向数据传输的一种技术。1.消息推送:在HTML 5之前,消息推送基...原创 2021-07-27 15:01:03 · 1688 阅读 · 1 评论 -
【操作系统】——线程(四)
1.线程的缺点:(1)线程的创建需要开辟内存资源:本地方法栈、虚拟机栈、程序计数器等线程私有变量的内存。频繁的创建线程和销毁线程会带来一定的性能开销;(2)使用线程不能很好地管理任务和有好的拒绝任务;2.线程池线程池:使用池化技术来管理和使用线程的技术。3.线程池的好处线程池的好处是减少在创建和销毁线程上锁消耗的时间以及系统资源的开销,解决资源不足的问题;如果不使用线程池,有可能造成系统创建大量同类线程而导致消耗完内存或者“过度切换”的问题。4.线程池的创建方式(7种原创 2021-05-19 21:34:14 · 234 阅读 · 0 评论 -
【操作系统】——线程(三)
1.死锁——在多线程(两个或者两个以上的线程)编程中,因为资源抢占而造成的线程无限等待的问题。2.线程和锁的关系:一个线程可以拥有多个锁,一个锁只能被一个线程拥有;3.死锁代码4.排查死锁的工具 jconsole、jmc、 vm5.死锁产生的4个条件(必须同时满足)(1)互斥条件——一个资源只能被一个线程持有,当被一个线程持有之后,就不能被其它线程持有;——不可修改(2)请求拥有条件——一个线程持有了一个资源之后又试图请求另一个资源;——可以修改(3)不可剥夺条件—..原创 2021-05-09 12:13:58 · 135 阅读 · 0 评论 -
【软件测试】——常见面试题(二)
1.软件测试的生命周期?(软件测试的流程)需求分析——测试计划——测试设计/开发——测试执行——测试报告需求分析阶段:分析需求;细化需求;验证需求的正确性和合理性; 测试计划阶段:规划测试人员的数量、规划时间、测试范围、测试目的等; 测试设计/开发阶段:分析需求,从细化的需求当中提取功能点,设计测试用例; 测试执行阶段:执行测试用例;记录bug ; 测试报告阶段:测试的范围;有多少测试用例,执行了多少测试用例,剩余了多少测试用例;发现了多少bug,修改了多少bug(验证),剩余的bug以及原创 2021-05-07 18:42:33 · 166 阅读 · 0 评论 -
【操作系统】——线程的安全问题以及解决方法
14.线程安全问题:线程不安全:多线程执行中,程序的执行结果和预期结果不相符。线程不安全原因:(1)CPU抢占执行的特性; (2)非原子性操作; (3)编译器优化(代码优化):即指令重排序。编译器优化在单线程时不会出现问题,可以提升程序的执行效率,但在多线程时就会出现混乱,从而导致线程不安全的问题。 (4)(内存)不可见性问题; (5)多个线程同时修改了同一变量;15.线程安全问题的解决方案(1)volatile关键字 ——轻量级解决“线程安全”的问题;volatil.原创 2021-04-29 21:03:47 · 340 阅读 · 1 评论 -
【操作系统】—— 线程(二)
1.线程的创建——3种方式(1)继承Thread类(单继承);(2)实现Runnable 的run()方法;(3) jdk 1.5 实现Callable + FutureTask;2.线程构造方法:设置线程名;线程的任务;设置线程分组;3.线程的常用属性;ID,Name 状态(6种),优先级(1——10,默认优先级5);4.线程的分类:守护线程(后台线程); 用户线程(main方法是一个用户线程) 守护线程是为用户线程服务的; 守护线程的使用场景:J..原创 2021-04-28 10:30:58 · 157 阅读 · 1 评论 -
【操作系统】—— 线程(一)
多线程1.线程(Thread)(1)概念:系统调度资源的最小单位。进程和线程的区别:进程:系统分配资源的最小单位; 线程:系统调度资源的最小单位; 线程是进程执行的最小单位,也是进程执行的实际单位。 一个进程中最少包含一个线程;线程必须依附在进程当中。 举例:进程就相当于一个工厂,线程就相当于一个一个流水线。 进程不可以共享资源,而线程可以共享资源;(2)线程可共享的资源:打开的文件; 内存(对象);(3)线程不可共享的资源:上下文; 记账; 状态信息;..原创 2021-04-22 21:06:59 · 109 阅读 · 0 评论 -
【操作系统】—— 进程
操作系统1.硬件组成:冯诺依曼体系结构(普林斯顿体系结构)组成 包括 输入设备 键盘 、鼠标、扫描仪、手写板; 存储器 内存 、磁盘; 运算器 中央处理器 控制器 输出设备 显示器、打印机 CPU 和输入设备或输出设备之间不能直接交互,必须依靠中间的存储部分(内存);内存和硬盘的区别?内存的读写速度要远远大于硬盘;内存读写速度是纳秒级别;而硬盘的读写速度是微秒级别; 内存的价格远大于硬盘; 内存中的数据不能持久化(.原创 2021-04-22 20:29:55 · 120 阅读 · 0 评论 -
【计算机网络】——IP协议
1.网络层:功能:负责确定路由和路由的选择。2.IP协议(1)协议格式:4位版本号——指定IP协议的版本; 4位首部长度——IP头部的长度是多少个32bit; 8位服务类型——后4位TOS分别表示:最小延时,最大吞吐量,最高可靠性,最小成本(四选一); 16位总长度——IP数据报整体占多少个字节; 16位标识(分组id)——唯一的标识主机发送的报文; 3位标志字段——保留位;置1表示禁止分片;更多分片; 13位分片偏移——是分片相对于原始IP报文开始处的偏移(确定组包的顺序);原创 2021-04-22 19:39:14 · 354 阅读 · 0 评论 -
【计算机网络】——数据链路层
1.数据链路层: 功能:相邻节点之间的数据传递;2.以太网——一种技术标准(1)规定了网络拓扑结构、访问控制方式,传递速率等;(2)以太网的帧的格式: 源地址和目的地址是指忘啦的硬件地址(MAC地址)——48位; 帧协议类型有三种值:即IP、 ARP、 RARP; 帧末尾是CRC校验码——用来校验数据的正确性;(3)MTU (最大传输单元Max transmission unit)——1500字节(4)MTU 对UDP的影响: 1...原创 2021-04-20 21:38:30 · 219 阅读 · 0 评论 -
【软件测试】——常见面试题(一)
1.什么是软件测试?验证软件是否满足用户的需求。2.软件测试和开发的区别是什么?(1)软件测试和调试的区别:目的不同:软件测试——为了检查软件的质量(以需求为标准) 软件调试——开发人员为了检查程序是否实现了该程 序所需要实现的功能。 人员不同: 软件测试——黑盒工程师、白盒工程师、开发人员(单 元测试、或者白盒测试) 软件调试——开发人员 阶段不同:软件测试——贯穿到了软件开...原创 2021-04-19 20:20:01 · 149 阅读 · 0 评论 -
【计算机网络】——常见网络面试题汇总
1.TCP 和UDP的区别:TCP 无连接,不稳定,面向数据报(dataGram);没有发送缓冲区,只有接收缓冲区。 UDP 有连接,稳定性,面向数据流;既有发送缓冲区,又有接收缓冲区。 2. 关于3次握手和4次挥手提问:(1)为什么需要3次握手?只有经过3次握手,才可以完整的证明客户端和服务器端具有的发送和接收能力(全双工);(2)3次挥手是否可以?有可能可以。取决于接收缓冲区是否有任务。如果没有待结束的任务两次挥手可以合;——即捎带应答。对应到程序,如果原创 2021-04-18 13:50:53 · 147 阅读 · 0 评论 -
【Javaweb】——如何在阿里云部署自己的项目
1.准备:(1)熟悉相关操作命令;(2)准备好自己的项目;(3)部署环境JDK、Tomcat 、Mysql;(4)工具Xshell ,Xftp等。2.疑惑:为什么要将自己的项目部署到服务器(阿里云、腾讯云)?当前客户机没有固定IP,使得其它人也可以访问和查看到自己的项目。3.准备安装环境步骤:购买好自己的服务器(阿里云或者腾讯云);使用Xshell 连接到自己的服务器;(1)安装JDK因为服务器中含有相应的JDK,只需下载内置的JDK环境即可;安装命令:原创 2021-04-18 13:29:43 · 163 阅读 · 0 评论 -
【数据结构】——堆
1.堆的介绍:(1)堆逻辑上是一棵完全二叉树;(2)堆物理上是保存在数组中;(3)满足任意节点的值都大于其子树中节点的值——大根堆,大堆 或者最大堆(4)相反,则是小根堆,小堆,或者最小堆。2.根据数组序列创建小根堆:分析:(1)index(代表要调整位置的下标) 如果已经是叶子节点,则整个调整过程结束;判断index 位置是否有孩子节点; 只对其判断是否有左孩子;因为堆是完全二叉树,即没有左孩子就一定没有右孩子; 判断是否有左孩子即判断左孩子下标是否越界,即l...原创 2021-02-19 20:18:12 · 119 阅读 · 0 评论 -
【数据结构】——二叉树题集
1.题目描述:根据二叉树的中序和后序遍历构造二叉树public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode() {} TreeNode(int val) { this.val = val; } TreeNode(int val, TreeNode left, TreeNode right) { this.val = val; ...原创 2021-01-30 22:19:52 · 263 阅读 · 0 评论 -
【数据结构】——二叉树
目录1.二叉树(Binary Tree)介绍2.二叉树的特点3.二叉树的遍历——递归形式4.二叉树的遍历——非递归形式5.二叉树的层序遍历6.二叉树的基本操作1 .二叉树(Binary Tree)介绍:一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵称为左子树和右子树的二叉树组成。2. 二叉树的特点: 每个结点的度都不大于2; 每个结点的孩子结点次序不能任意颠倒。 3. 二叉树的遍历——递归形式(1)前序遍历...原创 2021-01-28 21:49:08 · 135 阅读 · 2 评论 -
【Java】——字符串相关题目
1.题目描述:——翻转字符串给一个字符类型的数组chas和一个整数size,请把大小为size的左半区整体右移到右半区,右半区整体移动到左边。package demo1;import java.util.*;//逆置字符串public class Test2 { public static void main(String[] args){ Scanner sc = new Scanner(System.in); int k原创 2021-01-20 21:31:49 · 251 阅读 · 0 评论 -
【小程序】——简易图书管理系统
一.题目: 结合Java的面向对象的三大特征:封装、继承、多态等,以及抽象类、接口等相关知识实现图书管理系统。二.具体设计:1.登录功能;2.图书:拥有书名,作者,价格,类型,借阅状态等属性;3.用户:管理员和普通用户;4.用户的对书籍可进行的相关操作: (1)管理员的功能: 查阅书籍; 增加书籍; 删除书籍; 显示书籍; 退出系统 (2)普通用户的功能: 查询书籍; 借阅书籍; ...原创 2021-01-18 22:16:58 · 621 阅读 · 5 评论 -
【数据结构】——双向链表增删查找功能的模拟实现
1.双向链表:此链表中有两条方向不同的链。此链表的每个节点包括三个域:(1)数据域:存储节点的值(2)前驱指针域prev:指向其前驱(3)后继指针域next:存储数据元素的直接后继的地址(或位置)2.模拟实现:首先创建一个DoubeLinkedList类:class ListNode { private int data; private ListNode next; private ListNode prev; public L原创 2021-01-11 18:42:25 · 95 阅读 · 0 评论 -
【数据结构】——链表试题汇总详解(二)
链表试题:8.链表的回文结构:回文结构:即链表内容正反序列内容相同:如12521。分析:(1)找到链表的中间节点位置; (2)从中间位置开始,将链表后半部分反转; (3)定义引用,head从头往前走,slow从后往前走,直到head 和slow相遇,即说明此链表是回文结构。 //8. 链表的回文结构。——时间复杂度为O(n),空间复杂度为O(1) public boolean chkPalindrome(){ ...原创 2021-01-11 15:01:38 · 115 阅读 · 0 评论 -
【Java】——详解关键字this到底是代表当前对象还是代表当前对象的引用?
1.this关键字 this表示当前对象的引用。——可以借助this来访问对象的方法和字段。2.代码:class Person{ private String name;//实例成员变量 private int age; private String sex; //默认构造函数 构造对象 public Person(){ //this调用构造函数 this("zhangsan",22,"man");//必须放在..原创 2020-12-30 09:26:58 · 5156 阅读 · 2 评论 -
【Java】——交换两数组内容(等长数组和不等长数组的交换)
1.(1)题目描述:交换两个不等长数组——给定两个整型数组, 交换两个数组的内容.(2)分析:交换两个不等长数组,需要先对两个数组的长度进行判断,然后得到较小数组的长度,然后将较小长度的数组的内容与较大数组内容进行交换,较大数组剩余内容不做交换即可。(3)代码实现:public class Test{ //交换两个不等长数组——给定两个整型数组, 交换两个数组的内容. public static void reverseArr(int[] arr1,int[] arr.原创 2020-12-29 19:30:02 · 722 阅读 · 0 评论 -
【Java】——实现数组中偶数在前,奇数在后问题
1.题目描述:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。2.分析:将奇数放在数组的前半部分,偶数放在数组的后半部分——即所有的奇数应该位于偶数的前面,即在此数组的中,若发现有奇数在偶数的前面,就交换它们的次序。3.代码实现:public class Test { //1.奇数在数组后面 public boolean isOdd(int n){ return (n & 1 )原创 2020-12-27 11:03:11 · 1335 阅读 · 0 评论 -
【Java】——类和对象
类和对象1.要想了解类和对象,首先在此提出 “面向对象”的概念:面向对象是思考问题的一种方式吗,是一种思想; 面向对象注重的是对象,即参与过程所涉及的到的主体,是通过逻辑将一个个功能实现连接起来; 面向对象的好处:将复杂的事情简单化——只需面向一个对象就行; 面向对象设计:数据的拥有者,需对外提供操作这些数据(私有的)方法。 面向对象就是用代码(类)来描述客观世界的事物的一种方式。——一个类主要包含一个事物的属性和行为。2.类和类的实例化:1.)类就是一类对象的统称,对象就是这一类具体原创 2020-12-25 18:49:35 · 101 阅读 · 0 评论 -
【Java】——2的次幂表示(C和Java实现)
1.题目描述: 任何一个正整数都可以用2进制表示,例如:137的2进制表示为10001001。 将这种2进制表示写成2的次幂的和的形式,令次幂高的排在前面,可得到如下表达式:137=2^7+2^3+2^0 现在约定幂次用括号来表示,即a^b表示为a(b) 此时,137可表示为:2(7)+2(3)+2(0) 进一步:7=2^2+2+2^0 (2^1用2表示) 3=2+2^0 所以最后137可表示为:2(2(2)+2+2(0))+2(2+2(0))+2(0) 又如:1...原创 2020-12-11 14:13:51 · 1734 阅读 · 0 评论 -
【Java】——返回数组元素求和值的下标
1.题目描述:给定数组nums,目标值target,在该数组中找出和为目标值的那两个整数,并返回数组的下标2.代码实现:public class Test { public static void main(String[] args) { int[] arr = {23,34,67,77}; int ret[] = twoSum(arr, 100); System.out.println(Arrays.toString(ret));原创 2020-12-10 19:48:06 · 1138 阅读 · 3 评论 -
【Java】——打印数组方法的模拟实现
数组打印方法1.数组转字符串——使用Arrays.toString()方法打印数组 //9.数组练习——数组转字符串——使用Arrays.toString()方法打印数组 public static void main9(String[] args) { int[] arr = {1,2,3,4,5,6}; String newArr = Arrays.toString(arr); System.out.println(newArr);原创 2020-12-10 10:01:49 · 145 阅读 · 0 评论 -
【Java】——主要元素实现
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/find-majority-element-lcci1.题目描述:——主要元素数组中占比超过一半的元素称之为主要元素。给定一个整数数组,找到它的主要元素。若没有,返回-1。示例 1:输入:[1,2,5,9,5,9,5,5,5] 输出:5示例 2:输入:[3,2] 输出:-1示例 3:输入:[2,2,1,1,1,2,2] 输出:2...原创 2020-12-10 09:05:01 · 96 阅读 · 0 评论 -
【Java】——数组知识点详解
数组的定义和使用1.数组基本用法1.1数组数组本质上就是——批量的创建爱你相同类型的变量。在Java中,数组中包含的变量必须是相同类型。1.2创建数组基本语法://动态初始化数据类型[] 数组名称 = new 数据类型 [] {初始化数据};//静态初始化数据类型[] 数组名称 = {初始化数据};代码示例: //静态初始化 int[] arr = {1,2,3}; //动态初始化 .原创 2020-12-10 08:16:35 · 404 阅读 · 0 评论 -
【Java】——方法使用详解
Java 方法的使用:1.方法的基本用法:1.1 方法—— 方法付就是一个代码片段,类似于C语言的“函数”方法存在的意义:(1)能够欧模块化的组织代码;(2)是代码得到可重用性提高;(3)使读者更容易理解代码;(4)可直接实现对方法的调用,不必多次写同功能的代码。1.2方法定义语法://方法定义public static 方法返回值 方法名称([参数类型 形参...]){ 方法代码; [return 返回值];}...原创 2020-12-09 10:20:13 · 479 阅读 · 0 评论 -
【Java】——程序逻辑控制语句详解
Java程序逻辑控制语句1.顺序结构 按照代码书写的顺序一行一行执行。若调整代码的书写顺序,则执行顺序也会发生变化。 public static void main(String[] args) { System.out.println("aaa"); System.out.println("bbb"); System.out.println("ccc"); }2.分支结构(1)if语句:if-else...原创 2020-12-07 14:18:02 · 172 阅读 · 0 评论 -
【Java】——奇数位于偶数之前
1.题目描述:奇数位于偶数之前——调整数组顺序使得奇数位于偶数之前。调整之后,不关心大小顺序。代码实现: public static void movetArr(int[] array){ int left = 0; int right = array.length - 1; while(left < right){ //从左边找一个偶数 while ((left < right) &&原创 2020-12-07 07:49:32 · 154 阅读 · 0 评论 -
【Java】——递归实现的汇总(阶乘,斐波那契数列,汉诺塔,青蛙跳台阶,数字每一位求和,打印每一位等)
1.题目描述:求n的阶乘(递归方法) //1.递归求n的阶乘 public static int factor(int n){ if(n == 1){ return 1; } return n * factor(n - 1); } public static void main1(String[] args) { int n = 5; int ret = factor(原创 2020-12-07 07:49:13 · 184 阅读 · 0 评论 -
【Java】——数字9 出现的次数
1.题目描述: 编写程序数一下 1到 100 的所有整数中出现多少个数字92.代码实现: public static void main(String[] args) { int count = 0; for(int num = 0; num <= 100;num++){ if(num % 10 == 9){ count += 1; } ...原创 2020-12-06 09:10:20 · 201 阅读 · 0 评论 -
【Java】——闰年的判定及打印
1.题目描述: 输出 1000 - 2000 之间所有的闰年2.代码实现:public static void main(String[] args) { for(int year = 1000;year <= 2000;year++){ if(year / 4 == 0 && year / 400 != 0 || year / 400 == 0){ System.out.println(year + "...原创 2020-12-06 08:53:33 · 300 阅读 · 1 评论 -
【Java】——素数的判定及(0 -100之间)素数打印
1.题目描述: 给定一个数字,判定一个数字是否是素数代码实现:public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextInt(); int i = 2; for(;i < num ;i++){ if(num % i == 0){ System.out.println(...原创 2020-12-06 08:51:57 · 439 阅读 · 0 评论 -
【Java】——输出一个整数的每一位;输出n * n 乘法口诀表
1.题目描述: 输出一个整数的每一位,如:123的每一位是1 , 2 , 3代码实现:public static void main(String[] args) { System.out.println("请输入一个整数:"); Scanner sc = new Scanner(System.in); int num = sc.nextInt(); Print(num); } public static void Pr...原创 2020-12-06 08:48:44 · 503 阅读 · 0 评论 -
【Java】——模拟登录实现
1.题目描述: 编写代码模拟三次密码输入的场景。 最多能输入三次密码,密码正确,提示“登录成功”, 密码错误, 可以重新输 入,最多输入三次。三次均错,则提示退出程序2.代码实现:public static void main(String[] args) { Scanner sc = new Scanner(System.in); for (int i = 0; i < 3 ; i++) { System.ou...原创 2020-12-06 08:45:41 · 162 阅读 · 0 评论