![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
学习记录
文章平均质量分 61
宋丹尼尔
不相信莫名其妙的事情
展开
-
自定义队列和自定义循环队列
用链表自定义实现一个队列,包括入队,出队,弹出队首元素,队列是否为空功能class Node<T>{ public T val; public Node<T> next; public Node(T val){ this.val = val; }}public class MyQueue<T>{ public Node<T> first;//队头 public Node<T> l原创 2021-05-30 21:09:26 · 110 阅读 · 0 评论 -
自定义一个栈
基于数组创建一个栈,有入栈,出栈,弹出栈顶元素,判断栈是否为空,是否为满功能。public class MyStack<T> { private T[] elem; private int top=0; //top表示当前可以存放元素的下标 //构造方法,初始化一个长度为5的数组 public MyStack(){ this.elem = (T[])new Object[5]; } //入栈 public T push(T原创 2021-05-29 23:05:15 · 864 阅读 · 0 评论 -
线程池的创建
线程的缺点1.线程的创建需要开辟内存资源:本地方法栈、虚拟机栈、程序计数器等线程私有变量的内存。频繁的创建和销毁,会带来一定的性能的开销。2、使用线程不能很好的管理任务和友好的拒绝任务。所有就引入了线程池这一技术。线程池线程池定义:使用池化技术来管理和使用线程的技术。这种技术就叫线程池。线程池里面的重要内容:1、线程2、任务队列线程池的执行流程:当拿到一个任务之后,会判断当前线程池里面的数量是否达到了最大值,如果没有达到创建新的线程执行任务;当任务来了之后,线程池的线程数量已经是最大值,并原创 2021-05-24 11:35:37 · 236 阅读 · 1 评论 -
多线程之死锁、休眠
死锁问题定义:在多线程编程中(两个或两个以上的线程),因为资源抢占而造成线程无限等待的问题。线程和锁的关系:一对多 一个线程可以拥有多把锁,而一把锁只能被一个线程所拥有。检测死锁工具 jconsole jmc jvisualvm排查死锁死锁的关键代码synchronized (lockA){ System.out.println("线程1得到了锁A"); try { //休眠1秒 让线程2先得到锁B Thread.sleep(1000);原创 2021-05-11 19:41:18 · 232 阅读 · 1 评论 -
多线程之属性、中断、状态、安全
查看线程的一些属性public class ThreadDemo12 { public static void main(String[] args) { Thread t1 = new Thread(()->{ try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrac原创 2021-05-11 19:19:53 · 414 阅读 · 4 评论 -
多线程之创建、休眠、分组、优先级、分类
线程的创建方式1、继承Thread类实现线程的创建方式(两种写法)缺点:Java语言的设计当中只能实现单继承,如果继承了Thread类,就不能继承其他类了。public class ThreadDemo4 { static class MyThread extends Thread{ @Override public void run() { //线程执行任务 System.out.println("线程名称:"原创 2021-05-10 22:09:26 · 178 阅读 · 1 评论 -
操作系统、进程、线程
操作系统硬件:冯诺依曼体系结构/普林斯顿体系结构具体的结构布置:注意:CPU和输入设备或者输出设备不能直接进行交互,必须依靠存储。内存VS硬盘:1、内存的读写速度远远大于磁盘,内存读写速度:纳秒(10^-9);硬盘读写速度:微秒(10^-3);2、内存价格远大于磁盘;3、内存中的数据不能持久化,当电脑重启数据就没了,磁盘的数据可以持久化。操作系统的概念:任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。分为:内核(进程管理,内存管理,文件管理,驱动管理)、其他程序(例如函数原创 2021-05-10 19:47:33 · 124 阅读 · 2 评论 -
网络原理之IP
IP协议(IP协议在网络层)网络层在复杂的网络环境中确定一个合适的路径。1 IP协议概念:主机: 配有IP地址, 但是不进行路由控制的设备;路由器: 即配有IP地址, 又能进行路由控制;节点: 主机和路由器的统称;IP协议头格式4位版本号(version): 指定IP协议的版本, 对于IPv4来说, 就是4.4位头部长度(header length): IP头部的长度是多少个32bit, 也就是 length * 4 的字节数. 4bit表示最大的数字是15, 因此IP头部最大长度是原创 2021-05-09 17:13:05 · 213 阅读 · 1 评论 -
网络原理之TCP
TCP协议(TCP协议在传输层)本文也会讲一些有关UDP协议的一些知识。1 端口号端口号(Port)标识了一个主机上进行通信的不同的应用程序在TCP/IP协议中, 用 “源IP”, “源端口号”, “目的IP”, “目的端口号”, “协议号” 这样一个五元组来标识一个通信(可以通过netstat -n查看)知名端口号(1-1023):FTP(21)/SSH(22)/HTTP(80)/HTTPS(443)/DNS(53)操作系统动态分配的端口号(1024-65535):MySQL(3306)/To原创 2021-05-09 15:53:21 · 117 阅读 · 0 评论 -
总结篇——插入排序
插入排序1、直接插入排序1.1 直接插入排序-原理整个区间被划分为有序区间和无序区间。每次选择无序区间的第一个元素,在有序区间内选择合适的位置插入。1.2 实现 public static void main(String[] args) { int[] array = {34,2,67,88,54,33,78,22,4,90,86,45,6,12,99}; System.out.println(Arrays.toString(array)); i原创 2021-05-08 14:09:27 · 150 阅读 · 1 评论 -
当在浏览器中输入URL地址之后会发生什么?
当我们在浏览器上输入一个URL地址时,浏览器是怎么一步一步实现的,我来给大家说说。1、浏览器会先检查你的URL地址的正确性。2、浏览器会检查这个URL有没有缓存,如果有缓存就取缓存。3、DNS域名解析,拿到IP进行访问。4、TCP3次握手。5、HTTP协议request内容发送(首行、head、空行、body)。6、服务器接收到请求,并且进行相应的业务处理。7、服务器将结果返回到客户端。8、浏览器拿到返回结果,并调用浏览器的内核实现前端页面的渲染。9、TCP4次挥手。...原创 2021-05-07 18:23:23 · 1568 阅读 · 0 评论 -
初识网络原理
网络发展1、独立模式:计算机之间相互独立。2、网络互联: 多台计算机连接在一起, 完成数据共享。3、局域网LAN: 计算机数量更多了, 通过交换机和路由器连接在一起。4、广域网WAN: 将远隔千里的计算机都连在一起。所谓 “局域网” 和 “广域网” 只是一个相对的概念。广域网也可以看做为一个大的局域网。网络协议分层OSI七层模型应用层:通俗的讲就是我们的代码层,针对特定应用的协议。常见的应用层协议有:XSELL、SSH、SFTP、HTTP等。表示层:设备固有数据格式和网络标准数据格式原创 2021-05-07 18:15:31 · 73 阅读 · 0 评论 -
总结篇——数组的定义与使用
1、数组基本用法1.1什么是数组数组本质上就是让我们能“批量”创建相同类型的变量。注意事项:在java中,数组中包含的变量必须是相同类型。1.2创建数组动态初始化数据类型[] 数组名称 = new 数据类型[]{初始化数据};int[] arr = new int[]{1,2,3};静态初始化数据类型[] 数组名称 = {初始化数据};int[] arr = {1,2,3};注意事项:静态初始化的时候,数组元素个数和初始化数据的格式是一致的。1.3数组的使用代码示例:获取长度&原创 2021-04-28 20:44:05 · 436 阅读 · 0 评论 -
如何定位url路径资源
URL是统一资源定位符,是互联网上标准资源的地址。URL由以下几部分组成:1、协议类型:http、https(加密SSL)2、服务器:(域名/IP)3、端口号:http(80)、https(443)4、目录5、页面地址 (参数以?开始,多个参数使用&分割,键值对用=分割)6、片段标识符基本格式协议://域名(IP):端口号/资源路径。...原创 2021-03-28 18:08:01 · 237 阅读 · 0 评论 -
用HTML,CSS,JS制作一个网页计算器
今天分享一个自己做的网页计算器,我个人感觉,虽然不精简,但是应该涉及到的东西都有了,所以分享出来,那我直接上代码了。<html><head> <meta charset="utf-8"> <title>我的计算器</title> <script src="jquery-1.9.1.min.js"></script> <script> function myck(原创 2021-03-27 11:46:56 · 3252 阅读 · 2 评论 -
javaweb之前端三剑客
前端三剑客:HTML,CSS,JavaScriptHTML:构建一个pc和移动端展示的页面(搭骨架/骨)。CSS:使样式,显示更加丰富(装修/皮)。JavaScript:调用后端窗口(API)(魂)。HTML:运行需要浏览器HTML的一些元素类型:块级元素:<p>我是内容</p> //用于分割下一块的内容,间隙较大。行级元素:<span>我是内容</span> //没有具体的意义,为css修饰做准备空元素:<img src="图片原创 2021-03-26 21:15:12 · 267 阅读 · 6 评论 -
java——顺序表一些功能实现
顺序表的一些功能实现分享一下我花了将近两小时的写的一个顺序表功能实现的函数,虽然很简单,但是我感觉自己写一遍还是收货满满,让我更加清楚地认识了类和对象的关系,在一个类里面的方法,构造方法,静态变量,实例变量以及封装的概念。import java.util.Arrays;public class MyArrayList { private int[] elem; // 封装 private int usedSize; // 封装 public MyArrayList()原创 2020-12-30 16:34:34 · 102 阅读 · 0 评论 -
java——数组相关练习题5道
实现一个方法 avg, 以数组为参数, 求数组中所有元素的平均值(注意方法的返回值类型).import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int[] array = new int[6]; for (int i = 0; i < 6; i++)原创 2020-12-10 17:01:51 · 599 阅读 · 0 评论 -
java——运算符
1、算术运算符基本四则运算符 + - * / %这些运算符都比较简单,需要注意的是除法 /。a) int/int结果还是int,当计算结果不为整数时,需要使用double来计算。比如:int a = 1;int b = 2;System.out.println(a/b);//结果为0b) 0不能作为除数c) %表示取余,不仅仅对int求模,也能对double求模比如:System.out.println(11.5%2.0);// 运行结果1.5增量赋值运算符 += -=原创 2020-12-09 13:37:07 · 292 阅读 · 2 评论 -
java——一些简单的习题2
import javax.naming.directory.SearchControls;import java.util.Scanner;public class DemoA { public static int Fib3(int n){ int mul = 1; for (int i = 1; i <=n ; i++) { mul *= i; } return mul; } p原创 2020-12-09 12:11:04 · 92 阅读 · 0 评论 -
java——一些简单的习题
import java.sql.SQLOutput;import java.util.Scanner;public class DemoB { public static void main10(String[] args) { // 汉诺塔问题 hanota(3,'a','b','c'); } public static void hanota(int n,char pos1,char pos2,char pos3){ if(n==1)原创 2020-12-09 12:08:46 · 80 阅读 · 0 评论 -
青蛙跳台阶三种方式(java)
我具体写了青蛙跳台阶的非递归方式,递归方式以及变态跳import java.util.Scanner;public class DemoB { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); System.out.println(jump1(n)); System.out.prin原创 2020-12-07 19:42:05 · 157 阅读 · 0 评论 -
初学java
关于我对java的第一印象今天我正式开始了学习java语言,在之前,我一直都是学的c语言,也对编程有了很大的兴趣。所以我现在要认真学好这第二门语言。在我学习第一节java课之后,我感觉有一定的c语言知识对学习java有一定的帮助,因为有许多东西跟c语言很类似,比如数据类型,变量等等,但也只是相似,它们之间还是有一定的差别。所以我在今后的java学习道路上不能大意,从基础出发,我也相信我一定可以学好java这门编程语言。再说一些我额外学到的东西1、前端三剑客:HTML+CSS+JS2、java的运行环原创 2020-12-04 14:17:05 · 114 阅读 · 2 评论 -
C语言——指针的进阶
指针数组int* arr[10] // 定义一个数组,里面存放的是(int*)类型的元素 char* arr[5] //定义一个数组,里面存放的是(char*)类型的元素数组指针int(*p)[5]=&arr //定义一个指针(*p)指向一个整型数组int [5]如何通过p访问数组中的元素:*(*p+1)二位数组二维数组名 /二维数组的首元素 : 代表一维数组的地址p[i][j]=*(*(p+i)+j) // 如何拿到数组中的元素 []自带解引用存放数组指针的数组原创 2020-11-24 11:49:31 · 101 阅读 · 0 评论 -
C语言———数据在内存中的存储
数据类型介绍char //字符数据类型 1个字节short //短整型 2个字节int //整型 4个字节long //长整型 4个字节long long //更长的整型 8个字节float //单精度浮点型 4个字节double //双精度浮点型 8个字节类型的意义1,使用这个类型开辟内存空间的大小2,如何看待内存空间的视角类型的基本归类整型家族char unsigned char signed charshort原创 2020-11-24 11:29:14 · 125 阅读 · 0 评论 -
C语言——三子棋游戏
test.c#define _CRT_SECURE_NO_WARNINGS 1#include "game.h"void menu(){ printf("********************\n"); printf("*******0.exit*******\n"); printf("*******1.play*******\n"); printf("********************\n");}void game(){ printf("玩游戏\n"); char boa原创 2020-11-21 12:51:17 · 74 阅读 · 0 评论 -
C语言——用递归方式打印一个整数的每一位
例如:输入:456 输出:4 5 6#include<stdio.h>void print(int n){if (n > 9){print(n / 10);}printf("%d ",n%10);}int main(){int a;scanf("%d",&a);print(a);return 0;}运行结果如下:原创 2020-11-06 15:26:47 · 230 阅读 · 0 评论 -
C语言——基础编程题8道
求两个数的最大公约数#include<windows.h>#include<stdio.h>int main(){int num1, num2, t,i;printf("请输入两个数:");scanf("%d%d",&num1,&num2);if (num1 > num2){t = num1;num1 = num2;num2 = t;}for (i = num1; i > 0; i--){if原创 2020-11-05 13:38:33 · 522 阅读 · 0 评论 -
一些简单程序
将三个数从大到小输出#include<windows.h>#include<stdio.h>int main(){ int arr[3], i, j,k; for (i = 0; i < 3; i++){ scanf("%d", &arr[i]); } for (i = 1; i < 3; i++){ for (j = 0; j < 3 - i; j++){ if (arr[j] < arr[j + 1]) {原创 2020-11-02 18:14:30 · 282 阅读 · 0 评论 -
关于c语言的选择语句和循环语句
关于一些c的基本语句以及字符串字符串字符串是双引号引起来的一些字符:“abcde”,字符串是以\0结尾的,但是它不算入字符串长度中。当输出类型是“%s”时,它遇到\0停止。请看下面的代码。#include<stdio.h>int main(){char arr1[]="bit";char arr2[]={'b','i','t'};char arr3[]={'b','i','t','\0'};printf("%s\n",arr1);printf("%s\n",arr2);pr原创 2020-10-29 19:30:06 · 185 阅读 · 0 评论 -
学习c语言第一天
学习c语言第一天自我介绍我是来自西安科技大学的一名本科生,我的名字简写很有趣:sss,可能以后会成为我的代号。今天是我学习c的第一天,也是我第一次在CSDN写博客,有点激动,也有点焦虑。因为有些功能我还没学会,请大家见谅啦!我在大学也迷茫了很久,一直没有一个明确的方向。直到上周,我终于确定了我要学习软件,怎么说呢,我周围的同学也有人在学习各种语言,我统称这些人为天才,感觉他们在这些计算机语言上有很大的天赋。后来我试着去向他们靠拢,感觉这些很有趣,用各种“字母”就可以运行一个程序,而且也没有我想的那么难,原创 2020-10-27 19:54:39 · 344 阅读 · 3 评论