自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 爬虫项目(分析awesome-java项目流行趋势)Springboot版本

一、目的jsp+servlet的版本太老了,其次还有很多不便,也不方便执行。为此改良了源代码。二、技术框架后端:Springboot+mybatis前端:freemarker三、版本更新1.将原来的爬虫作为springboot内置的定时任务,不需要额外配置。2.优化因为网络问题可能几次爬取不成功的问题3.优化Github认证问题。代码:https://github.com/BlackerGod/CrawlerSpringBoot...

2020-12-18 15:34:35 223

原创 Java文档搜索引擎

项目详情: https://github.com/BlackerGod/Java_search_api成品展示: 点击查看(ps:受限于服务器带宽和处理器,会导致这个有点慢。。。)一、项目需求当我们遇到Java内一些不熟悉的函数或者宝,我们都需要去查询官方文档,那么问题就来了,我们可以看到的是官方文档并没有提供一个查询接口,我们每次使用时还要知道在哪个包下,然后再去一个一个查找,费时费力。...

2020-12-13 12:44:15 1633

原创 两台私网IP地址主机如何通信?

我们知道,在上一章末我们提到了,目的主机是不能在局域网内的,那么如何让两个处于不同局域网之间的主机通信呢?我们假设两台主机:主机A:192.168.1.105主机B:192.168.1.105(如果对这两个IP地址为什么一样的话,建议先读读前篇文章)我们思考一下原因,由于当两方都处在各自局域网的时候,拥有的都是私网IP地址,我们让A去联系主机B,A的路由器根据B的私网IP地址(192.1...

2020-09-16 16:52:56 5950 1

原创 个人博客实现

一、程序结构我使用的是经典的SSM框架,后端选择了springboot,原因大家都知道。前端使用的是freemaker,这玩意我也不是很熟练,UI什么的也是找一找,我主要是讲的后端。(前端会附上)这是整个项目的结构,用到的时候会说。二、表的设计话不多说,先搞数据库。(PS:db文件夹里面就是用来建数据库的)1.user表这个表主要是记录用户信息,我们用唯一ID,作为主键;CREATE TABLE user ( id BIGINT PRIMARY KEY AUTO_INCREMENT,

2020-08-23 21:12:00 330

原创 Java的多态

Java的多态Java的多态主要表现有:向上转型,向下转型,动态绑定代码说话:在这里插入代码片class Father{ public void eat(){ System.out.println("父亲正在吃"); }}class son extends Father{ public void eat(){ //子类实现父类的方法,被称为重写,但不能重写静态方法,会导致“隐藏”; System.out.println("儿子正在吃");

2020-06-19 11:17:04 124

原创 GC回收机制及收集器

一、如何判断是否可回收1.引用计数法给对象增加一个引用计数器,每当有一个地方引用它时,计数器就+1;当引用失效时,计数器就-1;任何时刻计数器为0的对象就是不能再被使用的,即对象已"死"。引用计数法实现简单,判定效率也比较高,在大部分情况下都是一个不错的算法。比如Python语言就采用引用计数法进行内存管理。但是,在主流的JVM中没有选用引用计数法来管理内存,最主要的原因就是引用计数法无法解决对象的循环引用问题2.可达性分析通过一系列称为"GC Roots"的对象作为起始点,从这些节点开始向下搜

2020-06-18 12:54:31 159

原创 JDK1.8内存布局

一、内存布局图70)PS:左边的区域属于是在JVM划分的内存之中,而右边的则是直接在内存中。二、各部分详解对于每个线程来说,它都有程序计数器、Java虚拟机栈、本地方法栈,而这些都是线程私有的区域,不对外共享。程序计数器:程序计数器是一块比较小的内存空间,可以看做是当前线程所执行的字节码的行号指示器。(如果当前线程正在执行的是一个Java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址;如果正在执行的是一个Native方法,这个计数器值为空。)这个地方也就是为什么我们能一行一行调试的原因。

2020-06-18 11:31:11 589 1

原创 动态规划从入门到入土——入门篇

一、什么是动态规划?要先理解动态规划的话,我们要先知道什么叫“分治”思想。这就要提一下分治的祖师爷了——大禹当面对波涛汹涌的洪水,人力显得多么的苍白无力,然鹅,大佬站出来了,提出:我们把洪水不断的分流,然后对每一条支流进行处理就可以处理好洪水了。那么分治思想就是:大事化小,小事化无与此同时,动态规划算是分治思想的延伸,它主要是把原问题分治为各个大问题,把大问题分解成各个小问题,然后保存各...

2020-04-29 11:56:40 197

原创 爬虫项目(分析awesome-java项目流行趋势)

项目详情:https://github.com/BlackerGod/Crawler成品展示:点击访问一、项目需求在我们Java开发过程中,需要引用一些项目,或者去学习别人项目中的技巧等。在Github里面有一个叫awesome-java的项目,他收录了Github中比较受欢迎的项目,但项目太多了,我们就需要一个工具就分析每个项目的受欢迎程度,我们从(StarCount、ForkCount、...

2020-03-24 14:34:34 350

原创 多线程基础

一、线程和进程的区别:进程是系统分配资源的最小单位,线程是系统调度的最小单位。每个进程至少有一个线程存在,即主线程。进程是有自己的独立地址空间的,有进程控制块(PCB)来控制进程的状态变换,也有专门的算法来控制进程的调度(先进先出,高优先比优先,短作业优先,时间片轮转等),线程是共享进程的资源的,JVM会为每一个线程划分特殊的空间:二、并发和并行并发: 多个进程在一个CPU下采用时间片...

2020-03-05 16:28:43 114

原创 Java的对象比较

2020-03-02 14:35:01 106

原创 TCP_IP

2020-02-29 16:27:55 154

原创 七大主流排序

一、插入排序算法思想:从第二个数开始,往前找,如果前面的数比自己大,就交换,最终找到合适的位置就结束了。(这个交换可以理解为向后移位,你玩扑克牌的时候,按大小排序,前面插一张,后面的就要往后挪一点)时间复杂度:最好:O(n)最坏:O(n^2)平均:O(n)空间复杂度: O(1)稳定性:稳定public static void InserSort(int[] arr){int t...

2020-02-21 17:56:52 176

原创 软件测试技术篇

一、按开发阶段分【SDK】 全称:SoftWare DeveLopment Kit,一般是指软件工程师特定的软件包建立的开发工具集合。【ROI】:投入产出比单元测试(Unit Testing)单元测试是对软件组成单元进行测试。其目的是检验软件基本组成单位的正确性。测试的对象是软件设计的最小单位:模块。又称为模块测试测试阶段:编码后或者编码前(TDD)测试对象:最小模块测试人员:白盒测...

2020-02-20 16:02:59 563

原创 Http协议通俗详解版

一、何为HTTP协议http协议: 超文本传输协议,是一个简单的请求-响应协议,它通常运行在TCP之上。我们说, 应用层协议是我们程序猿自己定的.但实际上, 已经有大佬们定义了一些现成的, 又非常好用的应用层协议, 供我们直接参考使用. HTTP(超文本传输协议)就是其中之一(也就是你自己可以写别的协议,只要你愿意)。原来我们讲过了TCP传输的过程,就是两台主机之间的通讯。那我们仅仅只是发送...

2020-02-18 16:19:07 633 1

原创 服务器入门与基础配置

一、什么是服务器?服务器是计算机的一种,它比普通计算机运行更快、负载更高、价格更贵。服务器在网络中为其它客户机(如PC机、智能手机、ATM等终端甚至是火车系统等大型设备)提供计算或者应用服务。常见的外形有:刀片式、塔式、机柜式等(感觉很是牛逼。。)其实呢,如果只是个人用的话,根本不需要那么庞大的资源,所以现在【云服务器】就卖的很火,我们不需要去管硬件的结构,只需要通过网络就可以利用服务器资源...

2020-02-17 11:22:32 9839 1

原创 软件测试概念篇下

八、软件测试的生命周期软件测试的生命周期: 需求分析→测试计划→ 测试设计、测试开发→ 测试执行→ 测试评估九、如何描述一个BUG1、发现问题的版本开发人员需要知道出现问题的版本,才能够获取对应版本的代码来重现故障。并且版本的标识也有利于统计和分析每个版本的质量。2、问题出现的环境环境分为硬件环境和软件环境,如果是web项目,需要描述浏览器版本,客户机操作系统等,如果是app项目,需要...

2020-02-14 17:36:13 406

原创 软件测试概念篇上

上篇是对于最基础的内容进行阐述,有些内容暂时只是阐述定义而还没讲与测试的关系

2020-02-13 15:32:13 347

原创 计算机网络——一次与网站的通讯

当我们在浏览器中访问百度,网络上会发生什么?一、域名转服务器地址我们都知道,网络中表明地址的是ip地址,但在浏览器中输入的都是域名,而在网络中,路由器交换机是不认域名的。这时就需要一个域名系统(服务)协议 来帮助我们进行域名和IP地址的转换。(之所以要有域名是为了方便记忆网站地址,毕竟ip地址很难记)早期的墙就是对DNS进行限制,让你无法访问境外网站,可以通过修改本机host文件来整一些破解软...

2020-02-11 16:41:34 471 1

原创 计算机网络初识

网络1.什么是计算机网络?定义:计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。这里的定义比较繁琐,通俗的来说,网络,就是把一群计算机通过一些硬件和协议连接起来,达到资源共享的东西。2.计算机网络发展的发展独立模式: 计算机之间相互独立;网络互联: ...

2020-02-10 15:57:30 2009 1

原创 银行家算法(详解加代码)

银行家算法,能戳到这里面的话,想必大家都有了解。银行家算法的基本思想是:分配资源之前,判断系统是否是安全的;若是,才分配。它是最具有代表性的避免死锁的算法。设进程 process 提出请求request[i],则银行家算法按如下规则进行判断:(1)如果 request[process][i] <= need[process][i],则转(2);否则,出错。(2)如果 request[p...

2019-12-26 12:38:19 2772 1

原创 动态内存分配算法(详解加代码)

动态内存分配主要有四种算法:(1) 首次适应算法:每次都从低地址开始查找,找到第一个能满足大小的空闲分区。(2) 循环首次适应算法:首次适应算法每次要从头找,增加了查找的开销,也可能在低地址上产生难以利用的小碎片。循环首次适应算法从上一次结束的位置开始查找。(3) 最佳适应算法:为了保证当“大进程”到来时能有连续的大片空间,可以尽可能的多留下大片空闲区,即,优先使用更小的空闲区。(4)...

2019-12-12 17:28:22 4963 1

原创 操作系统进程调度算法

1.先进先出算法(FCFS) public static void FCFS(){ //先来先服务 if(result == null){ throw new RuntimeException("请输入进程"); } Queue<process> queue=new LinkedList...

2019-12-06 11:18:45 457 1

原创 二叉搜索树

二叉搜索树:又称二叉排序树,它或者是一棵空树**,或者是具有以下性质的二叉树:1.若它的左子树不为空,则左子树上所有节点的值都小于根节点的值2.若它的右子树不为空,则右子树上所有节点的值都大于根节点的值3.它的左右子树也分别为二叉搜索树搜索二叉树的操作主要有:a) 增加b) 查找c) 删除(PS:为什么没有修改? 因为修改会破坏搜索二叉树的结构,一般都是先删除再插入,或者不修改k...

2019-11-24 15:59:08 111

原创 二叉树先中后序遍历(递归和非递归版本)

先序:public void preOrder(TreeNode root) {if(root == null){return ;}Stack<TreeNode> stack=new Stack<>();stack.push(root);while(!stack.isEmpty()){TreeNode cur=stack.pop();System.out....

2019-11-22 20:30:49 159

原创 Java的二叉树

树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起 来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:每个结点有零个或多个子结点;没有父 结点的结点称为根结点;每一个非根结点有且只有一个父结点;除了根结点外,每个子结点可以分为多个不相交的子树概念:节点的度:一个节点含有的子树的个数称为该节点的度;树的度:一棵树...

2019-11-08 17:27:15 162

原创 Java异常所有相关

异常所谓 异常 指的就是程序在 运行时 出现错误时通知调用者的一种机制。注意,运行时,是指已经编译成为class文件,在JVM运行过程中。在编程时,代码出现问题是很常见的,我们有两种处理方式:LBYL: Look Before You Leap. 在操作之前就做充分的检查.EAFP: It’s Easier to Ask Forgiveness than Permission. “事后获...

2019-10-27 14:37:16 190

原创 面向对象编程

何为面向对象?首先,对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件,可以说万事万物皆对象。其次,类具有相同特性(数据元素)和行为(功能)的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象,类实际上就是一种数据类型(可以理解为高配结构体),它里面会有描述该类的属性和方法所谓的面向...

2019-10-16 20:56:19 100

原创 Java链表的逆序(详解)

链表的逆序算法:```javapublic ListNode reverseList(ListNode head) { if(head == null){ // return null; } if(head.next == null){ return head; } ...

2019-10-05 17:16:43 1136

原创 Java链表合并有序的两个链表

自从上次推送了链表的基本操作后,现在就来试着写一写比较复杂的东西。比如,合并两个有序的链表:L1: 1 1 2 4L2: 1 2 3 5 6我们需要的链表是:1 1 1 2 2 3 4 5 6思考一下,有两种简单粗暴办法:第一种:我们建立一个链表头head,比较prev1的值和prev2的值,谁小谁放在head后面,然后位置往后移(不创建新结点,会破坏原链表);class...

2019-10-01 18:17:48 138

原创 Java无头单向链表

链表:是一种物理存储结构上非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的 。实际中链表的结构非常多样,以下情况组合起来就有8种链表结构:单向、双向带头、不带头循环、非循环对这六种排列组合即可得到八种链表的名称;我们今天实现的是 无头单向链表```java // 1、无头单向非循环链表实现 public class SingleLinkedList { ...

2019-09-28 23:03:50 147

原创 Java顺序表

顺序表:是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数 据的增删查改。顺序表一般可以分为:1.静态顺序表:使用定长数组存储。2.动态顺序表:使用动态开辟的数组存储。静态顺序表适用于确定知道需要存多少数据的场景. 静态顺序表的定长数组导致N定大了,空间开多了浪费,开少了不够用. 相比之下动态顺序表更灵活, 根据需要动态的分配空间大小.`...

2019-09-25 14:21:15 135

原创 汉诺塔详解(包看包会)

CSDN的大佬已经解释了很多了,由我这个菜鸟反复理解后得到的一些心得的分享先看题:汉诺塔: 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。如图,我们移动两...

2019-09-22 23:17:09 3596 5

原创 C语言实现通讯录(动态分配内存)

#define _CRT_SECURE_NO_WARNINGS //VS警告#include<stdio.h>#include<stdlib.h>#include<string.h>#include<assert.h> //头文件#define Max_name 1024 //名字字节最大值#define Max_sex 4...

2019-09-17 21:00:23 200

原创 Java方法递归(含详解)

方法递归递归很熟悉了,我们再来谈谈递归。定义: 一个方法在执行过程中调用自身, 就称为 “递归”.递归,相当于数学上的 “数学归纳法”, 有一个起始条件, 然后有一个递推公式. 例如, 我们求 N! 起始条件: N = 1 的时候, N! 为 1. 这个起始条件相当于递归的结束条件.递归公式: 求 N! , 直接不好求, 可以把问题转换成 N! => N * (N-1)举例:1....

2019-09-17 20:55:06 6500 1

原创 Java的方法重载

方法重载:有些时候我们需要用一个函数同时兼容多种参数的情况, 我们就可以使用到方法重载.方法重载可以这么理解,同一方法名,通过参数的不同来调用方法名相同的不同的函数。(ps:好像有点绕)例:class Test { public static void main(String[] args) { int a = 10; int b = 20; i...

2019-09-17 19:56:34 89

原创 Java变量常量和类型

变量: 指的是程序运行时可变的量. 相当于开辟一块内存空间来保存一些数据.常量: 指的是运行时类型不能发生改变类型: 则是对变量的种类进行了划分, 不同的类型的变量具有不同的特性类型1.int在 Java 中, 一个 int 变量占 4 个字节. 和操作系统没有直接关系.取值范围: -2^31 -> 2^31-1 , 也就大概是 -21亿 到 +21亿2.longJava 中...

2019-09-07 12:52:11 154

原创 C语言文件操作

文件:磁盘上的文件是文件。在程序设计中,我们一般谈的文件有两种:程序文件、数据文件1.程序文件:包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀 为.exe)。2.数据文件文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件。我们主要讲的是数据文件,根据数据的组织形式,数据...

2019-08-28 16:17:33 120

原创 动态内存管理

我们过去掌握的内存开辟方式有:int val=20; //在栈空间上开辟4个字节char arr[10]={0};//在栈空间上开辟10个字节的连续空间但是上述的开辟空间的方式有两个特点:空间开辟大小是固定的。数组在申明的时候,必须指定数组的长度,它所需要的内存在编译时分配。但是对于空间的需求,不仅仅是上述的情况。有时候我们需要的空间大小在程序运行的时候才能知道,那数组的编译 ...

2019-08-27 15:10:02 86

原创 C语言结构体的计算(详解)

结构体大小其实包含了一个知识点:内存对齐我们先记住以下四条内存对齐的规则:1.第一个成员在与结构体变量偏移量为0的地址处。2. 其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处。3.结构体总大小为最大对齐数(每个成员变量都有一个对齐数)的整数倍。4.如果嵌套了结构体的情况,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的整体大小就是所 有最大对齐数(含嵌套结构体的对齐数)的整...

2019-08-23 21:14:55 2223 1

空空如也

空空如也

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

TA关注的人

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