自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 资源 (2)
  • 收藏
  • 关注

原创 SpringBoot

一、为什么使用springBoot ?springBoot 基于约定优于配置的思想,可以让开发人员不必在配置与逻辑业务之间进行思维的切换,全身心的投入到逻辑业务的代码编写中,从而大大提高了开发的效率,一定程度上缩短了项目周期。二、springBoot的特点为基于Spring的开发提供更快的入门体验。开箱即用,没有代码生成,也无需XML配置。同时也可以修改默认值来满足特定的需求。提供了一些大型项目中常见的非功能性特性。如嵌入式服务器、安全、指标,健康检测、外部配置等。SpringBoot不

2022-03-22 11:34:01 693

原创 Bean的作用域和生命周期

一、Bean的作用域(Bean的类型)Spring 容器在初始化一个 Bean 的实例时,同时会指定该实例的作用域。Spring有6个作用域,最后四种是基于Spring WebMVC生效。singleton(单例模式):该作用域下的Bean在IOC容器中只存在一个实例。(Spring默认选择该作用域)prototype :每次对该作用域下的Bean的请求都会创建新的实例。使用@Scope(“prototype”)对类进行注解。request:每次http请求都会创建新的Bean实例,类似于pro

2022-03-20 14:39:52 698

原创 Spring初始

一、Spring简介Spring 能完成的更加快速,更容易并更安全。Spring 专注于速度,便捷与开发效率,也正是如此,让Spring成为了全世界最流行的 Java 框架。(一)Spring生态(二)SpringFramework 子模块简介Spring专注于为 Java 企业应用提供一站式的开发框架,目的是让 Java 企业开发更加便捷,安全与高效。 Spring Framework 属于其中最基础,最核心的部分,Spring下的其他大部分框架都依赖 Spring Framework 。

2022-03-19 16:46:44 180

原创 JVM详解(类加载、双亲委派模型、垃圾回收、JMM)

JVM1.JVM简介(1)JVM概念(2)Java内存区域①堆(线程共享)②JVM栈(先进后出、线程私有)③程序计数器(线程私有)④本地方法栈(线程私有的)⑤方法区(永久代)->元数据区(JDK1.8、线程共享)2.JVM类加载过程(Class Loading)3.JVM双亲委派模型(JDK1.2)4.JVM垃圾回收器(1)判断死亡对象①引用计数器算法②可达性分析算法(目前JVM使用的判断对象死亡的算法)(2)垃圾回收算法①标记-清除算法②复制算法③标记-整理算法(3)垃圾回收器5.Java内存模型(JMM

2021-06-14 16:34:03 1390 2

原创 多线程-高阶(策略锁、CAS、JUC、ConcurrentHashMap)

多线程1.常见的策略锁(1)乐观锁(2)悲观锁(3)公平锁和非公平锁(4)独占锁和共享锁一级目录一级目录一级目录二级目录三级目录1.常见的策略锁(1)乐观锁乐观锁:它认为一般情况下不会出现问题,所以他在使用的时候不会加锁,只有在数据修改的时候才会判断有没有锁竞争,如果没有就会直接修改数据,如果有则会返回失败信息给用户处理。(2)悲观锁悲观锁:悲观锁任务只要执行多线程就会出现问题,所以在进入方法之后就会直接加锁。悲观锁的实现:synchronized 可参考(3)公平锁和非公平锁

2021-06-11 11:34:08 2397

原创 单例模式(饿汉方式、懒汉方式)

单例模式1.饿汉方式(线程安全的)(1)代码实现(2)饿汉方式的优缺点优点缺点2.懒汉方式(1)代码实现①懒汉实现版本一(非线程安全的)②版本二:可以保证线程安全,锁粒度太多,性能不高③双重校验锁④防止指令重排序单例模式:全局唯一并且所有程序都可以使用的对象,就是单例模式。1.饿汉方式(线程安全的)(1)代码实现public class ThreadDemo84 { //单例类 static class Singleton{ //1.将构造函数设置为私有的(不让外部常

2021-06-10 15:43:02 1241

原创 线程安全的解决方案(ThreadLocal详解)

ThreadLocal1.线程安全的解决方案(1)选择ThreadLocal还是锁?(2)ThreadLocal的使用方法(3)ThreadLocal的创建和初始化一级目录二级目录三级目录1.线程安全的解决方案1.加锁(synchronized 、Lock:加锁可以解决线程安全的问题,但因为排队处理,所以会带来一定的性能消耗)2.设置私有变量有没有一种方案既可以避免加锁排队执行,又不会每次执行任务都需要重新创建私有变量呢?答:有。ThreadLocal线程的本地变量,每个线程创建一个私

2021-06-09 13:45:02 2820 2

原创 多线程-(线程池)

线程池1.线程池(1)线程的缺点(2)线程池的优点(3)线程池的创建①创建固定个数的线程池②创建带缓存线程池③创建可以执行定时任务的线程池④创建单线程执行定时任务的线程池⑤创建单个线程池⑥根据当前的硬件CPU生成对应个数的线程池,并且是异步处理。(JDK8+)2.原始的线程池创建方式ThreadPoolExecutor()(1)代码实现(2)线程池的拒绝策略(3)ThreadPoolExecutor执行流程:核心线程数、最大线程数、任务队列(4)线程池执行的2种方式(5)线程池终止的2种方式(6)线程池的状

2021-06-07 22:57:37 1479

原创 多线程-初阶(synchronized关键字和volatile关键字、wait\sleep 、死锁)

多线程编程1.Synchronized关键字(1)synchronized的实现(2)synchronized的3种使用场景(3)synchronized锁升级的过程(jdk 1.6优化)(4)synchronized和Lock的区别(5)Lock手动锁(6)公平锁和非公平锁2.volatile关键字3.通信-对象的等待集wait set(1)wait()方法(2)面试题:wait和sleep区别?(3)为什么wait会释放锁?而sleep不会释放锁?(4)为什么wait是Object的方法?而sleep是

2021-06-02 23:06:30 1360 2

原创 多线程-初阶(一)

多线程编程1.线程(Thread)(1)面试题:进程VS线程(2)线程的创建方式①方式一:继承Thread类②方式二:实现Runnable接口③方式三:Callable+Future接收线程执行之后的返回值(3)线程休眠(sleep)(4)创建多少线程合适?2.Thread 类及常见方法(1)Thread 的常见构造方法(2)Thread 的几个常见属性(3)面试题:start() 和 run()(4)线程中断的方式(5)判断线程终止的方式3.线程的状态(1)线程的所有状态(2)线程的状态和转移4.线程不安

2021-05-31 22:57:56 1242

原创 操作系统解析

操作系统1.冯诺依曼体系结构面试题:内存VS磁盘2.操作系统(Operator System)(1)概念(2)设计OS的目的3.进程(1)进程的认识(2)时间片(3)面试题: 并发与并行(4)内核态与用户态(5)进程的状态1.冯诺依曼体系结构输入单元:包括键盘,鼠标,扫描仪,写板等中央处理器(CPU):含有运算器和控制器等输出单元:显示器,打印机等面试题:内存VS磁盘1.内存一般比较小,磁盘比较大。2.造价不同,内存造价比较贵,磁盘便宜。3.内存是以纳秒级别读写速度、磁盘读写单位

2021-05-31 20:17:13 1208

原创 软件测试-用例篇

软件测试用例1.测试用例的基本要素(1)测试用例的概念(2)评价测试用例的标准(3)测试用例的给我们带来的好处2.测试用例的设计方法(1)基于需求的设计方法(2)等价类(3)边界值(4)因果图(5)正交排列(6)场景设计法(7)错误猜测法1.测试用例的基本要素(1)测试用例的概念测试用例(Test Case) 是为了实施测试而向被测试的系统提供的一组集合,这组集合包含:测试环境、操作步骤、测试数据、预期结果等要素。(2)评价测试用例的标准用例表达清楚,无二义性。用例可操作性强。用例的输入与

2021-05-29 23:55:08 1975 8

原创 深入学习TCP/IP协议(详解)

TCP/IP协议详解1.应用层(1)应用层知名协议(2)HTTP 协议详解①request 请求头(4部分)②response 响应头(4部分)③HTTP常见Header信息④Session 和 Cookie的区别是啥?⑤HTTP 和 HTTPS 区别是啥?(3) 重要应用层协议DNS①DNS(域名解析协议)②域名解析的过程是啥?③当在浏览器中输入url之后,会发生什么事情?④缓解IPV4地址不够用的方法⑤NAT技术2.传输层(1)端口号①端口号范围划分②认识知名端口号(2) 传输层知名协议(UDP、TCP

2021-05-09 18:04:57 7516 20

原创 基于TCP的HTTP服务器实现

(1)代码实现import java.io.*;import java.net.ServerSocket;import java.net.Socket;import java.sql.BatchUpdateException;/** * 基于TCP的HTTP服务器 */public class CustomHTTP { private static final int port = 9004; //端口号 public static void main(String[] a

2021-04-21 17:30:26 1673 5

原创 初识计算机网络

(1)互联网的组成边缘部分:由所有连接在互联网上的主机组成。核心部分:由大量网络和连接这些网络的路由器组成。①互联网的边缘部分在网络边缘的端系统之间通信方式划分为两大类:客户-服务器方式(C/S方式) 和 对等方式(P2P方式)。1.客户是服务请求方,服务器是服务提供方。2.P2P 方式中的 2是指两台主机在通信时并不区分哪一个是服务请求方哪一方是服务提供方。②互联网的核心部分在网络核心部分起特殊作用的是路由器。它是实现分组交换的关键构件,其任务是转发收到的分组,这是网络核心部

2021-04-20 23:07:47 1356

原创 面试常问:Cookie和Session方法

(1)Servlet Cookies①cookie的概念定义: Cookies 是存储在客户端计算机上的文本文件,并保留了用户的各种跟踪信息作用: 会话保持,如完成用户的登录与状态保持② cookie工作原理客户端向服务区发起登录请求服务器脚本向浏览器发送一组 Cookies。例如:姓名、年龄或识别号码等。浏览器将这些信息存储在本地计算机上,以备将来使用。当下一次浏览器向 Web 服务器发送任何请求时,浏览器会把这些 Cookies 信息发送到服务器,服务器将使用这些信息来识别用户。

2021-04-03 00:39:10 1339 2

原创 数据结构:常见排序算法(4) --归并排序(递归 &&非递归)及排序总结

(1)归并排序①原理归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子 序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。②代码实现递归实现:public class MergeSort { public static void main(String[] args) { int

2021-04-01 17:12:12 1381 2

原创 数据结构:常见排序算法(3) -- 交换排序(冒泡排序、快速排序)

(1)冒泡排序①原理:在无序区间,通过相邻数的比较,将最大的数冒泡到无序区间的最后,持续这个过程,直到数组整体有序②代码实现:import java.util.Arrays;//冒泡排序: 时间复杂度O(n^2) 空间复杂度:O(1)public class bubbleSort { public static void main(String[] args) { int[] array={5,8,1,2,5,22,44,15,3,0,48}; S

2021-03-30 21:43:57 1320 11

原创 数据结构:常见排序算法(2) -- 选择排序(选择排序、堆排序)

(1)选择排序①原理:每一次从无序区间选出最大(或最小)的一个元素,存放在无序区间的最后(或最前),直到全部待排序的数据元素 排完 。②代码实现:import java.util.Arrays;/** * 选择排序 */public class selectSort { public static void main(String[] args) { int[] array={5,1,25,4,8,11,5,7,5,0}; System.ou

2021-03-30 17:02:43 1273 4

原创 数据结构:常见排序算法(1) -- 插入排序(直接插入排序、希尔排序)

(1)直接插入排序①原理:整个区间被分为:1.有序区间2.无序区间每次选择无序区间的第一个元素,在有序区间内选择合适的位置插入②代码实现:public class insertSort { public static void main(String[] args) { int[] array={1,5,78,6,4,8,45,12,0,88}; System.out.println(Arrays.toString(array));

2021-03-30 16:04:46 3405 12

原创 Servlet搭建及项目打包部署到Tomcat(Tomcat的使用)

Servlet: 一个框架/工具,通过框架可以更方便的开发项目(后端API),已经封装好了Request、Response.(1)Servlet的创建①创建一个 webapp的maven项目直到项目创建完成。②添加源代码根目录③添加servlet引用配置pom.xml时,推荐使用:mvnrepository将dependency中的代码添加到pom.xml的dependencies中④配置servlet的配置文件web.xmlweb.xml中的固定写法:<?xml versi

2021-03-28 20:24:53 3443

原创 认识 String 类(StringBuffer 和 StringBuilder及其他操作方法)

1、StringBuffer 和 StringBuilderString类的特点:任何的字符串常量都是String对象,而且String的常量一旦声明不可改变,如果改变对象内容,改变的是其引用的指向而已。通常来讲String的操作比较简单,但是由于String的不可更改特性,为了方便字符串的修改,提供StringBuffer和StringBuilder类。StringBuffer 和 StringBuilder 大部分功能是相同的。在String中使用"+"来进行字符串连接,但是这个操作在Str

2021-02-05 19:04:30 1436 3

原创 微信8.0.0中的[烟花]\[炸弹]原来还可以这样玩(JAVA脚本)程序员的快乐,很简单,快来看!!!

1、首先,在电脑上安装IntelliJ IDEA 和 微信这里使用的是IntelliJ IDEA 2019和WeChat 8.0.0,这个大家在相应官网上就能下载到。2、登录微信并打开idea建自己的.java文件,然后粘贴下面代码(使用的是java脚本)。import java.awt.*;import java.awt.datatransfer.Clipboard; //Clipboard类实现一种使用剪切/复制/粘贴操作传输数据的机制。import java.awt.datatransf

2021-02-03 19:19:11 10492 19

原创 认识 String 类(字符、字节和字符串及字符串常见操作(2))

1.字符, 字节与字符串(1)字符与字符串字符串内部包含一个字符数组,String 可以和 char[] 相互转换.代码示例: 获取指定位置的字符String str = "hello" ; System.out.println(str.charAt(0)); // 下标从 0 开始// 执行结果h System.out.println(str.charAt(10)); // 执行结果产生 StringIndexOutOfBoundsException 异常代码示例: 字符串与字符数

2021-01-30 18:33:38 1562 4

原创 认识 String 类(字符串及内存布局相关问题(1))

1. 创建字符串常见的构造 String 的方式// 方式一String str = "Hello Bit";// 方式二String str2 = new String("Hello Bit");// 方式三char[] array = {'a', 'b', 'c'};String str3 = new String(array);在官方文档上 (https://docs.oracle.com/javase/8/doc/api/index.html) 我们可以看到 String 还支持

2021-01-21 23:17:24 1570

原创 抽象类和接口

抽象类(一)语法规则在打印图形例子中, 我们发现, 父类 Shape 中的 draw 方法好像并没有什么实际工作, 主要的绘制图形都是由Shape 的各种子类的 draw 方法来完成的. 像这种没有实际工作的方法, 我们可以把它设计成一个 抽象方法(abstract method), 包含抽象方法的类我们称为 抽象类(abstract class).abstract class Shape { abstract public void draw();}在 draw 方法前加上 abst

2021-01-19 18:32:00 1314

原创 java输出任意整数的每一位

输出任意整数的每一位非递归方式:import java.util.*;public class Exe{ public static void main(String[] args){ Scanner input = new Scanner(System.in); System.out.println("请输入一个整数:"); int count = input.nextInt(); int m,i=1,j,t,k;

2020-12-05 22:52:38 3132

原创 Java开发环境安装、数据类型与运算符相关知识总结笔记

Java开发环境安装、数据类型与运算符数据类型(基本数据类型、引用数据类型)常量、变量及声明数据类型之间的转换

2020-12-05 01:28:21 1275

原创 深度学习《自定义类型:结构体,枚举,联合(C/C++)》

自定义类型:结构体,枚举,联合一、结构体(1)结构体的声明结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。struct stu//描述一个学生{ char name[20];//名字 int age;//年龄 char sex[5];//性别 char id[20];//学号};//分号不能丢(2)结构体的自引用在结构中包含一个类型为该结构本身的成员是否可以呢//代码1struct Node{ int data; struct Node nex

2020-11-27 12:29:41 1505 1

原创 学生选修课程系统(C语言/C++实现)

话不多说,先上代码#include <stdio.h>#include <string.h>#include<malloc.h>#include <stdlib.h> //用于system语句的声明void prin1(); //声明浏览学生所有选修课程函数void choose(); //声明学生选课函数typedef struct subjects //定义结构体叫作SUB,在后面就可以直接使用{

2020-11-24 20:17:13 21857 46

原创 深度学习数据在内存中的存储(C/C++)

数据在内存中的存储(C/C++)*数据类型分类1.整形short //------------------------短整型(2 byte)unsigned short [int] // 无符号位signed short [int] //有符号位·int //---------------------------整形(4 byte)unsigned intsigned intlong //------------------------长整型(8 byte)unsigned

2020-11-23 23:45:51 1650 1

原创 C/C++实现三子棋小程序

C/C++实现三子棋首先声明头文件/game.h/#ifndef __GAME_H__#define __GAME_H__//#pragma once //预防头文件重复引用#include<stdio.h>#include<windows.h>#define ROW 3#define COL 3void InitBoard(char board[][COL], int row, int col); void ShowBoard(char board[

2020-11-21 23:51:51 2372 12

原创 操作运算符相关知识

操作符*算数操作符 + - * / %(取余)对于/操作符如果两个数字都是整数,则执行整数除法。如果是浮点数执行就是浮点数除法。%操作符的两个操作数都为整数,返回的是整除之后的余数。*移位操作符左移操作符 <<移位规则:左边抛弃,右边补0右移操作符 >>移位规则:逻辑移位 /左边用0填充,右边丢弃。算术移位 左边用原该值的符号位填充,右边丢弃。*位操作符& //按位与 (都为1才为1)| //按

2020-11-21 22:56:29 1445

原创 初始Java,系统学习

2020年11月7日,进入比特科技,开始系统学习java。 不是985不是211,普通一本大学,我希望通过一年的学习在编程能力上有一定的提升,我会跟着比特的各位老师认真学习,把主要时间投入进来,希望在毕业前可以拿到一份不错的offer,其实字节跳动也不错哦(´-ω-`)你懂的...

2020-11-12 21:40:23 1284

软件工程课程设计.zip

软件工程课程设计,项目流程文档

2021-01-30

HTTP协议详解.pdf

HTTP协议详解

2021-01-30

空空如也

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

TA关注的人

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