- 博客(37)
- 收藏
- 关注
原创 HTTP的一些额外知识
TCP/IP协议族按层次分别分为以下四层:应用层、传输层、网络层、数据链路层。TCP/IP是互联网相关的各类协议族的总称。各层的作用:应用层:决定了向用户提供应用服务时通信的活动。传输层:传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。网络层:网络层用来处理在网络上流动的数据包。数据包是网络传输的最小数据单位。该层规定了通过怎样的路径到达对方计算机,并把数据包传送给对方。网络接口层:用来处理链接网络额硬件部分。与HTTP关系密切的协议:IP、TCP和DNS,其中IP协议负责传
2021-10-23 20:50:15
194
原创 Java集合框架
List 和 Set 有哪些区别?List、Set 都是继承自Collection 接口,区别主要有以下几点:重复对象 list方法可以允许重复的对象,而set方法不允许重复对象;null元素list可以插入多个null元素,而set只允许插入一个null元素;容器是否有序 List是一个有序的容器,保持了每个元素的插入顺序。即输出顺序就是输入顺序,而set方法是无序容器,无法保证每个元素的存储顺序,TreeSet通过 Comparator 或者 Comparable 维护了一
2021-10-21 11:53:03
135
原创 一些面试小知识点
synchronized的含义:每一个类对象都对应一把锁,当某个线程A调用类对象O中的synchronized方法M时,必须获得对象O的锁才能够执行M方法,否则线程A阻塞。一旦线程A开始执行M方法,将独占对象O的锁。使得其它需要调用O对象的M方法的线程阻塞。只有线程A执行完毕,释放锁后。那些阻塞线程才有机会重新调用M方法。这就是解决线程同步问题的锁机制。了解了synchronized的含义以后,大家可能都会有这个感觉。多线程编程中StringBuffer比StringBuilder要安全多了 ,事实确实如
2021-10-21 11:06:09
80
原创 每日一题练习
1.leetCode_350题给定两个数组,编写一个函数来计算它们的交集。输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2,2]输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[4,9]我自己想的是先把两个数组排序,然后循环遍历两个数组package leetCode_350;import java.lang.reflect.Array;import java.util.ArrayList;import java.ut
2021-10-19 09:26:10
82
原创 计算机网络面试
1、UDP 和 TCP 的特点与区别用户数据报协议 UDP 是无连接的,尽最大可能交付,没有拥塞控制,面向报文(对于应用程序传下来的报文不合并也不拆分,只是添加 UDP 首部),支持一对一、一对多、多对一和多对多的交互通信。传输控制协议 TCP是面向连接的,提供可靠交付,有流量控制,拥塞控制,提供全双工通信,面向字节流(把应用层传下来的报文看成字节流,把字节流组织成大小不等的数据块),每一条 TCP 连接只能是点对点的(一对一)。什么是 TCP 的三次握手和四次挥手?TCP 提供了一种可靠、面向连接
2021-10-12 11:31:02
116
原创 Java多线程
简述Java内存模型JVM可以分为线程私有区域和线程共享区域。线程私有区域分别为:程序计数器、虚拟机栈、本地方法区。(线程私有区域的生命周期和线程相同,随线程的启动而创建,随线程的结束而销毁)线程共享区域:Java堆、方法区。(线程共享区域随虚拟机的启动而创建,随虚拟机的关闭而销毁)程序计数器:(线程私有的,唯一没有内存溢出问题的区域) 它是很小的一块内存空间,作为当前线程的行号指示器,用于记录当前虚拟机正在执行的线程指令地址。虚拟机栈:(线程私有,描述Java方法的执行过程)每个方法执行的时候都
2021-10-06 19:44:57
118
原创 Java基础理解
1.JDK、JRE、JVM区别JDK是Java开发工具包,提供了Java的开发环境和运行环境。JRE是提供了Java运行所需的环境。JDK包含JRE,JRE包含JVM.2.访问修限定符Default、Private、Public、Protected之间的区别Default:默认访问修饰符,在同一个包内可见Private:在同一个类内可见,不能修饰外部类Public:对所有的类可见Protected:对同一包内的类和所有子类可见,不能修饰外部类3.构造方法、成员变量初始化以及静态成员变量三者
2021-10-06 12:14:48
279
原创 最近的两个简单的代码题
最近找工作一直在做笔试和面试,遇到两个简单的代码题,虽然简单,但我还是没有很好的把他们给完成好。首先,第一个是多益网络一面,面试管给我的一道题,给定一个集合S(没有重复元素), 输出它所有的子集* 输入 1 2 3* 输出* 1, 2, 12, 3, 13, 23, 123package Com.DuoYi;import java.util.ArrayList;import java.util.List;/** * Program: Created with IntelliJ IDEA
2021-10-01 22:33:06
446
原创 每日一题2021_09_26
首先,今天把杨辉三角的这个问题整体思路梳理了一遍,有错误希望大家批评指正。首先可以把杨辉三角问题可以看成是一个二位数组的形式然后我们要搞清楚杨辉三角的特征是什么,首先,杨辉三角有很多行也有很多列,但是我们发现,杨辉三角的第一行和第一列以及最后一列都为1;其次就是,它里面的第i行和第j列的元素等于它的i-1行的j列元素加上i-1行的j-1列的和。所以我们可以利用List来解决这道题。package Com.YanghuiTriangle;import java.util.ArrayList;imp
2021-09-26 15:25:00
194
原创 剑指offer练习
找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3这道题,我的第一想法是,是不想用数据结构,直接用数组的方法,首先将数组排一下序,然后使用循环进行比较,有相同的则返回。代码如下class Solution { public int findRepeatNum
2021-09-22 21:53:52
70
原创 每日一题Day48
给定一个长度为N(N>1)的整型数组A,可以将A划分成左右两个部分,左部分A[0…K],右部分A[K+1…N-1],K可以取值的范围是[0,N-2]。求这么多划分方案中,左部分中的最大值减去右部分最大值的绝对值,最大是多少?给定整数数组A和数组的大小n,请返回题目所求的答案。测试样例:[2,7,3,1,1],5返回:6这道题我有两种解法,第一种解法可能和本题分为两个部分没啥关系,直接在一个数组中将最大值和最小值求出,直接求出相差的值。代码如下:import java.util.*;pub
2021-09-18 15:08:05
139
原创 面试线程方法的区别
参加了中兴的专业面试,面试遇到的专业问题是Thread.start() 和Thread.run()的区别?那接下来就好好谈谈的问题。由上面这个问题,我们可以知道,这是一个线程的问题,然后我么可以说Java常见的创建线程的四种方式:1.继承Thread类 2. 实现Runnable接口 3.通过ExecutorService和Callable实现现有返回值的线程 4.基于线程池创建线程。线程的基本方法有 wait、notify、notifyall、sleep、join、yield等,这些方法控制线程的运行
2021-09-17 16:51:24
156
原创 NiuKe_SH17分玩具题
题目描述幼儿园里有有M个小朋友在课件玩耍,每个人手中现有ni个玩具。为了公平起见,老师需要让每个小朋友手中有相同数量的玩具。假设老师每次只能从一个人手中拿走两个玩具并给另一个小朋友。求老师最少需要做多少次这样的玩具转移。如果不存在可行的方案则输出-1。输入描述:每个输入包含一个测试用例。每个测试用例的第一行包含一个整数M(1 <= M<= 100),接下来的一行包含M个整数ni(1 <= ni <= 100)。输出描述:输出一行表示最少需要移动多少次可以平分玩具,如果方案不存在
2021-09-15 16:20:30
121
原创 每日一题——两个链表生成相加链表
假设链表中每一个节点的值都在 0 - 9 之间,那么链表整体就可以代表一个整数。给定两个这种链表,请生成代表两个整数相加值的结果链表。例如:链表 1 为 9->3->7,链表 2 为 6->3,最后生成新的结果链表为 1->0->0->0。示例1输入:[9,3,7],[6,3]复制返回值:{1,0,0,0}import java.util.*;/* * public class ListNode { * int val; * ListN
2021-09-10 19:29:45
98
原创 水一篇博客——斐波那契数列
斐波那契数列斐波那契数列满足一个规律,就是数列前两项的和等于下一个数字,所以我们知道第n个数字等于第n-1个数字和第n-2个数字的和。但是者是从n>= 2 的情况下。### 当n == 0 或 n ==1 时,那么数列等于这两个数字本身。因此给出求斐波那契数列的代码。现在要求输入一个整数n,请你输出斐波那契数列的第n项。(从0开始,第0项为0,第1项是1)public class Solution { public int Fibonacci(int n) { if(n
2021-09-10 09:47:07
174
原创 继承和接口、以及相关知识的总结
在Java中一个子类只能继承一个父类,这也可以从侧面说明需要有接口的存在。子类继承父类的什么?在Java中,子类会继承父类除构造方法外所有的public字段和方法,对于父类的private的字段和方法,子类中无法访问。子类在构造的时候,一定要先帮助父类先进行构造。Final 关键字1.修饰一个变量或者字段,那么该变量和字段是不能改变的。2.修饰一个类,则被修饰的类是不能被继承的。向上转型可以概括为:父类的引用指向子类的实例。子类实现父类的同名方法,并且其中参数的类型和个数相同,这被称为重写。
2021-09-06 22:26:42
102
转载 线程间协作:wait、notify、notifyAll
链接:https://www.nowcoder.com/questionTerminal/a804e21b00d4464faf4e9bbe3a7e2df4来源:牛客网线程间协作:wait、notify、notifyAll在 Java 中,可以通过配合调用 Object 对象的 wait() 方法和 notify()方法或 notifyAll() 方法来实现线程间的通信。在线程中调用 wait() 方法,将阻塞等待其他线程的通知(其他线程调用 notify() 方法或 notifyAll() 方法),在
2021-07-19 16:13:23
138
原创 每日一题Day2
牛牛定义排序子序列为一个数组中一段连续的子序列,并且这段子序列是非递增或者非递减排序的。牛牛有一个长度为n的整数数组A,他现在有一个任务是把数组A分为若干段排序子序列,牛牛想知道他最少可以把这个数组分为几段排序子序列.如样例所示,牛牛可以把数组A划分为[1,2,3]和[2,2,1]两个排序子序列,至少需要划分为2个排序子序列,所以输出2.输入的第一行为一个正整数n(1 ≤ n ≤ 10^5)第二行包括n个整数A_i(1 ≤ A_i ≤ 10^9),表示数组A的每个数字。输出一个整数表示牛牛可以将A最少
2021-05-06 15:35:40
1310
原创 每日一题 -Day-1
题目1:牛牛举办了一次编程比赛,参加比赛的有3*n个选手,每个选手都有一个水平值a_i.现在要将这些选手进行组队,一共组成n个队伍,即每个队伍3人.牛牛发现队伍的水平值等于该队伍队员中第二高水平值。例如:一个队伍三个队员的水平值分别是3,3,3.那么队伍的水平值是3一个队伍三个队员的水平值分别是3,2,3.那么队伍的水平值是3一个队伍三个队员的水平值分别是1,5,2.那么队伍的水平值是2为了让比赛更有看点,牛牛想安排队伍使所有队伍的水平值总和最大。如样例所示:如果牛牛把6个队员划分到两个队伍
2021-04-19 22:18:26
113
原创 顺序表
顺序表(ArrayList)1.顺序表的原理2.Java中提供得顺序表(ArrayList)的主要用法(增删查改)3.ArrayList的继承链条可以被迭代的(Iterable)interface Iterble<T>{ Iterator<T> iterator();} //通过iterator()方法,返回迭代器 //通过迭代器,可进一步的进行迭代(Iterator)迭代器(Iterator)interface Iterator<
2021-03-18 17:00:07
113
原创 类和对象3
类和对象1.认识类的作用 :组织静态方法;描述对象的样子,用来生成对象。2.认识对象的作用:属性/状态 方法/操作3.认识引用的作用: 用来操作对象语法1. 如何定义类(用来生成对象的那个类)属性 方法 构造方法他们的特点是都没有static修饰2.如何实例化(new)/构造对象 ——表现为一个引用3.如何使用对象——通过引用"." 运算符this关键字1.表示指向当前对象的引用2.调用本类的其他构造方法关于类的作用的两面性class Teacher{
2021-03-10 20:35:21
63
原创 空间复杂度与顺序表
复杂度评估算法的工具维度:运行时间——时间复杂度运行过程需要的额外空间——空间复杂度空间复杂度——算法运行过程中需要用到的额外空间线性表(线性结构)Linear元素与与元素的组织关系,这个关系呈现线性,为线性结构线性结构:有次序 —> 才有下标关系第一个元素/最后一个元素前驱元素/当前元素/后继元素线性表:是n个具有相同特性的数据元素的有限序列1.顺序表:逻辑上线性,在内存中存储,也是严格按照逻辑上的次序保存起来的.2.链表:逻辑上线性,在内存中存储时,不保证连续性了。数组是
2021-03-08 20:59:13
1173
原创 扑克牌游戏
扑克牌游戏:1.通过ArrayList实现一副扑克牌(不含鬼牌)2.实现洗牌功能3.三名玩家,每名玩家各自抓取5张牌第一步:定义牌类(card),该类的每个对象表示一张牌1.分值rank [1,13]2.花色suit[四种] Stringpackage card;import java.util.Objects;/** * Program: Created with IntelliJ IDEA * <p> * Description: * <p> *
2021-03-08 15:49:08
207
原创 复杂度
复杂度分析目标:算法的运行速度 —— 时间复杂度算法运行所需要的空间 —— 空间复杂度时间复杂度(和数据的规模有关)不会直接用时间衡量(因为无法选定一个不变的客观的运行环境)——使用算法的指令个数去衡量运行速度所以最终,评估算法的运行时间变成了:1.和数据的规模有光2.计算该算法的指令个数3.在考虑原始数据情况下时间复杂度:函数关系,关于数据规模N的函数关系。有了f(n)这样的函数关系,具体的忽略规则:1.只需要保留最高次项2.最高次项的系数化为1即可复杂度化简(大O标记法):
2021-03-05 10:22:11
197
1
原创 类和对象3
利用传入的值,修改对象的属性对于构造器中public Teacher(String a,in b,String[] c){ // a,b,c 为传入的形参 name = a; age = b; courseArrays = c;}//左边为属性,右边为形参public Teacher(String name,int age,String[] courseArrays){//括号为传入的参数 name = name; age =
2021-03-04 18:31:18
77
1
原创 类和对象2
一、Java中类的作用1.类是用来组织方法的组织单元.例子:java.util.Arrays / java.lang.MathArrays.copyOf()//类名.方法名//通过类调方法2.类是用来生成对象的一个模板(图纸).例子:Scanner / Random / StringString s ="hello";Scanner s = new Scanner(System.in);Random r = new Random();//上面便是构造了对象出来r.nextInt()
2021-03-03 11:27:40
111
1
原创 类和对象
类和对象1import java.util.Arrays;/** * Program: Created with IntelliJ IDEA * <p> * Description:复习类和引用1 * <p> * Author: Nin9Wan9 * <p> * Time:2021-03-01 14:30 **/public class 类和对象 { public static void main1(String[] args) {
2021-03-01 21:17:15
46
转载 一些转载
这里写自定义目录标题一些转载一些转载Java和C++的区别:Java是解释型语言,所谓的解释型语言,就是源码会先经过一次编译,成为中间码,中间码再被解释器解释成机器码。对于Java而言,中间码就是字节码(.class),而解释器在JVM中内置了。C++是编译型语言,所谓编译型语言,就是源码一次编译,直接在编译的过程中链接了,形成了机器码。C++比Java执行速度快,但是Java可以利用JVM跨平台。Java是纯面向对象的语言,所有代码(包括函数、变量)都必须在类中定义。而C++中还有面向过程的
2021-02-26 11:49:39
72
原创 Java入门的一些代码(一)
一些很简单的数学题1.判定一个数是否为素数(使用两种编写风格)2.打印1-100之间的所有素数(使用两种风格)3.打印乘法口诀表1.判定素数素数是能被1和自身整除的数,所以如果一个数能被除一和自身的数整除的话,那么它就不是素数。按照这个思路可以去设计一种代码。import java.util.Scanner;public class JudgePrime { public static void main(String[] args) { Scanner sc = n
2021-02-03 12:25:12
214
原创 Java中变量和运算符的基本知识点
学习目标:能说出Java中有几种data type?能说出Java中变量有几种形态?一些运算符学习内容:Java 有 8终data type;分别是: byte、short 、char、 int 、long、float、double、 booleanJava中变量有两种形态:一种是上面8终基础类型第二种是引用类型 类,string, 数组,抽象类 接口 枚举…常量:字面常量:10 ,“abc” ,1.0,‘a’算术运算符:+ - * / %注意:0 不能做除数% 表示取余,不仅可以对i
2021-01-27 11:51:53
53
原创 使用C语言在VS2013写一个计算n的阶乘。
前言**求一个n的阶乘。**看到题目,我们可以知道,n的阶乘都是不断累乘,并且每次数字都减小1,和循环形式有一点的类似,所以入手的话可以使用循环试一试。二、使用步骤使用C语言去实现代码如下(示例):#include <stdio.h>#include <windows.h>int Fact(int n){ int num = 1; for (int i = n; i >= 1; i--) { num *= i; } return num;}
2020-11-30 21:14:34
851
原创 一个C语言三子棋小游戏
头文件 game.h#ifndef GAME_H#define GAME_H#include <stdio.h>#include <time.h>#include <windows.h>#define ROW 3#define COL 3#define P_COLOR ‘X’#define C_COLOR ‘O’#pragma warning(disable:4996)void Menu();void Game();#endifmain函数
2020-11-16 17:35:42
59
原创 C语言进行一些简单的练习
include <stdio.h>include <windows.h>//int MixNber(int x, int y){// if (x > y){// return x;// }// else {// return y;// }//}//typedef unsigned int unit_32;//void test(){//static int i = 0;//i++;//printf("%d\n", i);//}//static
2020-11-03 22:26:22
90
原创 C语言练习代码
#include <stdio.h> //必须写#include <windows.h>//仅仅是为了让程序暂停一下,让我们看到结果//#pragma warning(disable:4996)//int g_val = 2019; //在代码块外部,全局//void show()//{// int a = 10;// printf(“show run!\n”);//}//{代码块}//#define RED 10 //宏定义:见名知意, 便于维护//int集合
2020-10-30 19:15:57
372
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人