自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 CMS和G1的区别

G1将Java内存拆分成多个region(独立区域),打破了分代模型,这样子就不需要在全堆范围内进行收集。,可以选择一组合适的region作为回收目标,实时收集、标记整理算法不会产生内存碎片。JDK9默认使用的是G1垃圾回收器,使用的是标记整理算法,,会产生内存碎片,最小等待时间优先的垃圾收集器。CMS:最小等待时间有限的垃圾回收器。G1:可控垃圾回收时间的垃圾回收器。CMS只针对老年代,使用的是。CMS回收垃圾的4个阶段。

2024-07-30 07:58:24 184

原创 SSM版本个人博客系统实现

关于项目的前端和后端的代码详情我已经上传到gitee实现步骤:创建一个SSM项目准备项目a.删除项目中用不到的文件b.在resources下面的static包下引入起前端页面c.添加数据库中常用的配置(properties文件)使用SQL语句来初始化数据库创建出合适的分层。

2023-04-16 09:48:55 544 2

原创 密码加密——加盐算法(两种方式)

密码安全是一件很重要的事情,所以一定要谨慎对待常见的主要是3种方式首先明文肯定是不可取的,在数据库中明文存储密码风险实在是太大了简单来说,使用MD5就是将一串字符串通过某特定的算法来将其变成另一种形式,这样子就在外观上起到了加密的效果,但是由于背后的算法是固定的,所以每一个字符串都有固定的MD5格式密码破解程序可以是暴力破解:将得到的密码使用MD5转换成哈希,之后将得到的哈希与最初的哈希进行比较,要是匹配就说明已经破解了密码,但是这种方法的时间复杂度很高,会耗时很久。

2023-04-12 17:19:54 14510 2

原创 针对博客系统的自动化测试

关于执行web自动化测试, 需要对实际场景的分析和理解,要理清楚程序的执行步骤和执行预期结果,一旦出现问题,要学会排查错误,看看到底是自己的自动化代码写错了导致误报,还是系统本身的错误。在每个测试类中可能都要创建驱动对象,频繁的创建和销毁对象,要是测试类很多的话,就很消耗资源,增加运行时间,所以最好单独创建一个方法,用来创建对象,这样子就不用频繁创建驱动对象了。在实际的测试过程中,使用的是无头模式,根本就不会看到浏览器的页面,要是报错的话,就需要将报错的页面保存一下,方便排查问题。

2023-03-09 21:51:15 641

原创 博客系统(前后端分离版)

写之前首先要进行规划,要做到“谋定而后动”首先进行“数据库设计”,也就是想清楚需要几个库,几张表,每个表长啥样(属性是干什么的,是什么类型)需要找到实体,然后分析实体之间的关联关系,再思考表的属性这里业务比较简单,所以只需要两张表博客表blog (blogId, tittle, content, postTime, userId)用户表user (userId username password)先建一个数据库,往里面添加数据操作数据库引入依赖首先要先引入maven依赖,在.xml的中引入依赖去中央

2023-03-09 21:26:23 1714 1

原创 网络编程套接字

研究网络编程套接字就是研究如何写代码完成网络编程socket套接字是操作系统给应用程序提供的API应用层和传输层是可以进行交互的,socket就是传输层给应用层提供的在网络编程中, 有很多 的协议 ,最知名的协议就是TCP和UDP协议这两种协议的工作特性差别比较大, 因此操作系统提供了两个版本的API。

2023-03-08 21:25:04 366

原创 在linux上部署Java项目

要是想要部署java web程序,首先要配置环境。

2023-03-08 19:51:25 4268 1

原创 JVM的基本知识

JVM是java的虚拟机,是一个十分复杂的东西,所以掌握的要求比较高.本文主要是研究JVM的三大话题。

2023-03-08 19:47:17 496

原创 Linux基本指令

以上一共提到了10个命令lspwdcdtouchcatechomkdirrmmvcp应该回忆一下,都是比较常用的命令。

2023-03-08 19:11:59 382

原创 网络原理4 数据链路层

应用层: HTTP(以后详解)传输层: TCP UDP网络层:IP协议数据链路层: 以太网协议(mac地址)

2023-01-01 15:24:51 550

原创 网络原理3 IP地址

中主要做的事情是在两点之间规划出一个合理的路径,同时也要对主机所处的位置进行定义在网络层中最重要的是IP协议。

2023-01-01 15:22:05 801 1

原创 网络原理2 TCP协议

在传输层中,UDP和TCP协议都是很重要的,其中的TCP协议是重点,更是难点。

2023-01-01 15:21:44 570

原创 网络原理 一

考虑在客户端服务器之间要传输哪些数据?[根据需求]考虑信息/数据按照什么格式组织[也是根据需求]举一个具体的例子点外卖明确传输的信息, 请求里面有什么,响应里面有什么请求: 用户的位置 用户的偏好响应: 商家的列表需要包含多个商家的信息,每个商家要包含名称 图片 评分 距离明确数据的格式网上传输的数据的本质都是bit流,也就是一堆二进制位,不同程序之间的传输格式也是不一样的但是,自定义应用层协议实在是太灵活了,这并不是一件好事。

2022-12-15 10:59:25 306

原创 网络原理初识

在有些比较复杂的计算, 耗时会比较久, 为了提高速度,减少计算次数, 就可以把重复的计算结果记录下来, 这种用于记录结果的数据结构就叫做缓存(cache), 广义上说,动态规划也就是一种缓存,本质就是记录中间的结果。以上的过程只是描述了发送发和接受方的封装与分用, 实际上传输还有很多的中间过程, A和B之间不是一个网线直连,所以中间还要经过交换机/路由器进行转发,所以真实的过程只会更加复杂.在网络通信中, ip地址是用于识别主机地址网络,端口号是识别主机中发送 数据 接收数据的进程的, 也就是说,

2022-12-11 14:32:10 616

原创 JavaScript的Web api接口

之前学过了一些JS的基础语法,但是还是不能写出一个页面的动态效果所以此时就有必要学习浏览器给JS提供的api网页是运行在浏览器上的,学习js最大的目的就是能够实行与用户交互,进一步操作页面上的内容.这些都要使用浏览器的api在Web api 中,有很多的api , BOM和DOM只是其中的一部分,还有能操作多媒体的api, 还有能操作画板的api…此处的重点是DOM(Document Operation Model 文档操作模型)来操作页面。

2022-11-30 14:49:01 400

原创 前端入门--JavaScript篇

之前学过了HTML 和 CSSHTML标示量页面的结构CSS表示页面的样式JS表示页面的动作 / 行为。

2022-11-30 14:47:32 509

原创 前端入门--CSS篇

CSS主要是实现美化界面的作用。

2022-10-30 10:28:49 612

原创 前端入门-HTML篇

前端三剑客: HTML CSS JavaScript我们首先学习HTML首先先创建一个html的文件HTML的代码是通过浏览器运行的,只要使用浏览器打开对应的html的文件,就能执行, 不用安装额外的运行环境(比如Java中的JVM)html不需要编译,只要浏览器读取就能执行(鲁棒性)html的最顶层标签是html需要有一个head和body,head放一些属性信息body放页面上显示的内容但是使用记事本来写前端代码就会很难受,所以我们需要一下编译器IDEA也可以写前端,但是IDEA社区版只支持HTML,不

2022-10-29 11:43:18 920

原创 文件输入与输出io

狭义的文件: 存储在硬盘上的数据 , “以文件为单位”, 进行组织常见的文件类型: 文本文件,图片 视频文件 音频文件 可执行程序文件夹也叫做"目录"它也还是一种特殊的文件。

2022-10-17 08:53:05 344

原创 多线程的线程安全

wait notify是 用来控制多线程直接的执行先后顺序的wait 和 notify 都要先进行上锁(synchronized)必须是同一个对象调用wait 和 notify锁对象也要和 调用wait / notify 的对象一致就算没有wait , 直接notify 也是没有副作用的。

2022-10-16 09:38:31 2308

原创 多线程实例4--线程池

之前学过String字符串常量池 MySQL的JDBC中的数据库连接池(DataSource),这些都是池的概念"池"可以节省对象重复创建和初始化锁耗费的时间,对于哪些需要经常被系统频繁请求和调用的对象,使用池可以提高运行的效率进程是比较重量级的,导致创建和销毁进程是比较抵消的(内存 文件资源的申请和释放),所以有了线程,线程可以共享内存 文件资源,新的线程可以复用之前线程的资源,不用再申请资源,所以就快了。

2022-10-15 10:32:47 520

原创 多线程案例3--计时器

很多时候,客户端请求服务器,在发送完请求之后, 一直都等不来服务器响应, 此时客户端不能一直等下去, 此因此客户端就要设置一个"超时时间",也就是说,一旦等待时长超过这个时间, 客户端就会自动执行某一段代码。这里的TimeTask是一个runnable接口, 所以要new TimeTask(),然后重写run方法, 从而执行操作。原因就是Timer内部需要一组线程来执行注册的任务, 这里的线程是前台线程, 会影响进程退出。要是isDaemon是false,就是前台线程,就会影响进程退出。

2022-10-14 09:02:34 334

原创 多线程案例2--阻塞队列

实现思路: 使用双指针法,定义两个指针在数组的开始处,只要放一个数字进去,tail就向后走一步,head保持不动,直到tail 走到最后,数组放满了,tail就重新回到开始处,要是取出元素就将head向后走一步,直到head走到最后就重新回到开始处, 循环队列在逻辑上是一个环。服务器每处理一个请求,都要消耗一定的硬件资源(包括但不限于CPU 内存 硬盘 带宽),同一时刻的请求越多,小号的资源也就越多, 可是一台主机上的资源是有限的,一旦某一个资源耗尽了,服务器也就挂了。

2022-10-13 14:38:22 291

原创 多线程的案例1--单例模式

2 3 两个步骤可能会调换顺序,单线程的时候没事,多线程的时候,要是先执行3 再执行2 , 得到的就是对象只有内存, 内存上的数据无效, getInstance 就会认为对象非空, 直接就返回了,这就是指令重排序问题。加上锁就能够保证线程安全,但是这样写的话, 每次都要加锁, 加锁的开销是比较大的(加锁会涉及到用户态–>内核态之间的切换,这样的成本是比较高的),也就是说,加锁虽然能保证线程安全,但是每次都要加锁资源开销就会比较大。在Java中, 存在一个天然的只能有一个实例的东西,那就是static。

2022-10-12 10:14:47 248

原创 多线程进阶

一共有这些锁策略:乐观锁 vs 悲观锁读写锁 vs 普通互斥锁轻量级锁 vs 重量级锁自旋锁 vs 挂起等待锁公平锁 vs 非公平锁可重入锁 vs 不可重入锁对于synchronized既是乐观锁也是悲观锁既是轻量级锁也是重量级锁乐观锁的部分是基于自旋锁实现的, 悲观锁是基于挂起等待锁实现的synchronized是自适应的 :要是锁竞争不激烈,它就是乐观锁/轻量级锁/自旋锁注意: 自旋锁是纯用户态实现的,相比于内核态,它的工作量是比较少的。

2022-10-11 18:57:35 479

原创 多线程基础知识

多线程基础。

2022-09-24 10:18:23 403

原创 JavaEE基础知识

之前已经学过很多的知识,但是总会有一个疑惑,这些知识有什么用?接下来的JavaEE的目标就是做出一个属于我们自己的网站网站=前端+后端简单来说,前端就是客户端,也就是浏览器运行的网页后端就是服务器工作,也就是公司机房部署的程序之后的学习将以后端技术栈为主,前端技术栈为辅进行学习。

2022-09-18 18:19:09 3200

原创 泛型的基础 装箱拆箱

泛型可以放任何类型的数据,但是只能存放一种数据泛型的目的:制定当前的容器,需要什么类型的对象,让编译器去检查这个数据类型。

2022-09-12 20:50:39 354

原创 时间和空间复杂度分析

首先要知道为什么要有时间和空间复杂度的概念,要想知道一个程序的执行效率理论上来说就应该直接上机测试,但是由于硬件的差异,我们很难做到统一,所以就产生了时间和空间复杂度,用来估计算法的效率。

2022-09-11 12:51:41 218 1

原创 JDBC的基础操作

/通过JDBC操作数据库,往数据库中插入一条数据 public class JDBC {//1.创造数据源对象,数据源对象描述了要访问的数据库是哪一个,在哪 DataSource dataSource = new MysqlDataSource();//用户名((MysqlDataSource) dataSource) . setPassword("1111");

2022-09-10 14:01:59 910

原创 MySQL表的增删改查--你都知道吗?

笛卡尔积是一个简单粗暴的操作,只是进行简单的所有的排列组合,所以这么多的记录是有些是合理的,有些是不合理的,所以要寻找两张表的共同点(连接条件),进行筛选,将不合理的记录删除掉。对于分库分表的数据来说,从逻辑上还是同一张表,只是存储在不同的机器上,此时,原有的自增主键就失效了,mysql的自增主键保证单机上数据不重复,不能保证分布式部署时不重复。(各自都要降序desc)分库分表:表太大,就可以拆成两个或多个表,分别在不同的主机上,搭建不同的mysql服务器,每个服务器存储其中的一份。

2022-09-09 21:42:49 426

原创 MySQL中的中文报错--保姆级解决方法

一开始安装完MySQL后,向表中插入记录的时候,要是插入的是中文,就会报错,此时我们就要修改一下MySQL的配置文件。

2022-09-08 22:49:06 1739

原创 MySQL最基本的常识

MySQL是一种数据库软件,它是开源的,并且还是较为简单,适用的范围也叫广泛,所以接下来我将会讲解MySQL的一些基础操作知识。

2022-09-07 17:18:35 452

原创 你想知道的ArrayList知识都在这

关于ArrayList的知识讲解以及简单实现

2022-07-05 18:44:35 502 12

原创 你想要的异常知识点都在这里了

Java中常见的异常的知识讲解以及代码实例,让你充分理解Java异常

2022-06-30 09:29:23 379 29

原创 不进来看看这么细的String类吗?

用极其直白的描述、代码实例和图片帮你深入理解String类

2022-06-04 10:53:42 461 47

原创 你见过这么细的图书管理系统吗?

图书系统练习文章目录图书系统练习前言整体思路具体的包和类Book包bookBookListUser 包UserAdminUserNormalUserOperation包IOperation接口AddOperationBorrowOperationDelOperationDisplayOperationFindOperationReturnOperationExitOperation小总结Main**user.doOperation(choice, bookList);**到底是有什么用文字+代码解释图片解

2022-05-25 19:23:39 1278 65

原创 详解Java抽象类与接口

抽象类与接口文章目录抽象类与接口多态的复习抽象类什么是抽象类抽象类的特点接口什么是接口接口的特点接口的具体应用多个接口的具体使用接口的继承几种常用的接口1、比较自定义类型的大小 / 排序(Comparable接口)2、Comparator接口(比较器)3、克隆当前对象(Cloneable接口)深拷贝与浅拷贝抽象类与接口Object类Object类的所有方法equals方法(对象比较)hashcode方法多态的复习class Shape { public void draw() {

2022-05-23 13:45:21 367 16

原创 理解多态知识

多态文章目录多态什么是多态?多态的实现条件向上转型重写什么是重写?重写需要的条件协变类型重载与重写重写的设计原则向上转型的3种方式多态的具体实现什么是多态?多态(polymorphism)就是多种形态,简单来说就是做同一件事情,不同的对象做就会有不一样的结果/状态或者说就是一个引用调用同一个方法,表示出不一样的行为就叫做多态多态的实现条件1、完成向上转型2、实现方法的重写3、通过引用调用重写向上转型向上转型就是将子类赋值给父类class Animal{ private

2022-05-21 17:55:41 158

原创 你想要的继承知识点都在这里

继承文章目录继承什么是继承子类与父类中不存在成员变量同名的情况子类与父类中存在成员变量同名的情况supersuper的三种用法this与super有什么区别?访问修饰限定符protected继承的方式多层继承实例final 的用法继承与组合OOP语言主要的三大特征:继承 封装 多态package com.bit.demo1; class Animal { String name; public void eat() { System.out.prin

2022-05-16 13:44:20 331 8

空空如也

空空如也

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

TA关注的人

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