自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 设计模式之美 pt2 关于面向对象

设计模式之美-关于面向对象

2022-10-16 20:49:00 312 1

原创 设计模式之美 pt1 一些编程方法论的概念及联系

设计模式之美-一些编程方法论概念和联系

2022-10-16 20:15:18 143

原创 【苦练基本功】代码整洁之道 pt4(第10章-第12章)

代码整洁之道 pt4(第10章-第12章)10 类10.1 类的组织10.2 类应该短小10.2.1 单一权责原则10.2.2 内聚10.2.3 保持内聚性就会得到许多短小的类10.3 为了修改而组织10.3.1 隔离修改11 系统11.1 如何建造一个城市11.2 将系统的构造与使用分开11.2.1 分解main11.2.2 工厂11.2.3 依赖注入11.3 扩容11.3.1 横贯式关注面11.4 Java代理11.5 纯Java AOP框架11.6 AspectJ 的方面11.7 测试驱动系统架构11

2022-05-03 19:05:03 695

原创 【苦练基本功】代码整洁之道 pt3(第7章-第9章)

代码整洁之道 pt3(第7章-第9章)7 错误处理7.1 使用异常而非返回码7.2 先写try-catch-finally7.3 使用未检异常7.4 给出异常发生的环境说明7.5 依调用者需要定义异常类7.6 定义常规流程7.7 别返回null值7.8 别传递null值7.9 小结8 边界8.1 使用第三方代码8.2 浏览和学习的边界8.3 学习log4j8.4 学习性测试的好处不只是免费8.5 使用尚不存在的代码8.6 整洁的边界9 单元测试9.1 TDD三定律9.2 保持测试整洁9.3 整洁的测试9.3

2022-04-30 20:39:24 247

原创 【苦练基本功】代码整洁之道 pt2(第4章-第6章)

代码整洁之道

2022-04-14 00:00:09 380

原创 【苦练基本功】代码整洁之道 pt1(第1章-第3章)

代码整洁之道 pt1(第1章-第3章)1 整洁代码1.1 要有代码1.2 糟糕的代码1.3 混乱的代价1.3.1 什么是整洁代码?2 有意义的命名2.1 名副其实2.2 避免误导2.3 做有意义的区分2.4 使用读得出来的名称2.5 使用可搜索的名称2.6 避免使用编码2.7 避免思维映射2.8 类名2.9 方法名2.10 别抖机灵2.11 每个概念对应一个词2.12 别用双关语2.13 使用解决方案领域名称2.14 使用源自所涉问题领域的名称2.15 添加有意义的语境。2.16 不要添加没用的语境3 函数

2022-04-10 19:40:31 522

原创 【踩坑总结】Mysql统计信息异常问题及解决

Mysql统计信息异常问题及解决问题背景及描述问题原因问题解决后续如何预防该问题的发生?由于是公司日常运维遇到的问题,文档中实际表名均用sam_table进行替换。问题背景及描述问题背景:sam_table表是一个分库分表,目前是有200张分表,表数据行数每日在200w+,且每周都有对该表进行归档处理(从该数据库集群拷贝到另一数据库集群,且会对数据进行delete操作)。问题描述:从21年12月25日起,在服务中某个接口对该表数据进行查询时,第52分表一定会造成慢查,对用户体验带来较大问题。慢

2022-01-16 18:25:48 809

原创 【分布式链路追踪-pt1】初识分布式链路追踪

个人学习分布式链路追踪资料整理

2022-01-09 19:22:27 559

原创 线程相关面试题目汇总

线程相关面试题目汇总1、线程(1)进程、线程、协程进程、线程、协程之间的区别?进程和线程之间的关系线程安全是什么意思?如何创建线程?什么是守护线程?(2)线程的状态线程的五种状态分别是什么?线程会出现哪些情况?(3)线程的常用方法start()与run()的区别?wait()和sleep()的区别?线程a,b,c,d运⾏任务,怎么保证当a,b,c线程执⾏完再执⾏d线程?(join方法)stop() 和 suspend() 方法为何不推荐使用?线程同步用到的方法有哪些?线程 yield()方法有什么用?2、多

2021-04-02 10:20:42 604

原创 【不失业计划】计算机网络常见面试10题整理

计算机网络面试10题本文整理源自bilibili极客时间视频地址:10 道大厂面试必考的计算机网络问题部分内容来自hherima优秀博客: HTTPS协议详解(二):TLS/SSL工作原理1、请详细介绍下TCP的三次握手机制,为什么要三次握手?解答思路:先说明TCP链接的特点:可靠性、双工,再解释为什么需要握手,最后解释为什么是三次而不是两次和四次。答:首先,TCP连接具有可靠性,当TCP发送一个段之后,会启动一个定时,等待目的端确认接受到这个报文段,如果不能及时地收到一个确认,将会重发这个报

2021-01-18 19:28:01 281

原创 【不失业计划】面试中我遇到的那些数据库题目

数据库面试常问1、事务1.1 事务的特性(****)1.2 隔离级别1.2.1 并发引起的问题(***)1.2.2 事务的隔离级别(*****)2、常见的存储引擎及特性(***)2.1 InnoDB(*****)2.2 MyISAM2.3 MEMORY2.4 InnoDB和MyISAM的区别3、查询语句(*****)4、常见索引有哪些(*****)4.1 聚集索引、非聚集索引(***)4.2 普通索引、主键索引、唯一索引、组合索引、全文索引(*****)4.3 B+Tree索引、Hash索引(****)4.

2020-12-04 23:08:32 112 2

原创 【不失业计划】 Java常见集合扩容机制

Java集合扩容机制1、ArrayList2、Vector3、Stack4、HashMap为什么需要扩容?即当前集合能容纳的数据量达到一个饱和状态(饱和状态和加载因子有关)之后,集合需要申请新的存储空间,即扩容。常见的需要扩容的集合一般是底层基于数组实现的,链表不涉及扩容问题,因此LinkedList等无扩容,常见的有ArrayList、Vector、Stack、HashMap。加载因子:集合中元素填满的程度,例如ArrayList加载因子为1,初始容量为10,则当当前元素>=10*1需要进行扩

2020-12-04 12:36:50 383

原创 【不失业计划】 Java集合框架+底层原理

集合框架部分一、Collection1、Set2、Queue3、List二、Map1、HashMap2、LinkedHashMap3、HashTable4、ConcurrentHashMap5、TreeMap三、工具类1、Collections2、Arrays3、各种转换集合可以看作是一种容器,用来存储对象信息。所有集合类都位于java.util包下,但支持多线程的集合类位于java.util.concurrent包下。Java集合类主要由两个根接口Collection和Map派生出来的,Collect

2020-11-29 17:53:34 300

原创 【不失业计划】Java 异常(包含个人面试过程中遇到的面试题)

新闻管理系统的主页功能一、常见异常类型二、异常处理三、常见面试题一、常见异常类型Error实现了Throwable接口,Error是JVM层的错误,是程序中无法处理的错误,表示运行应用程序中出现了严重的错误。Exception实现了Throwable接口,Exception是代码逻辑错误,程序本身可以捕获并且可以处理的异常。一类是 IOException(I/O 输入输出异常),其中 IOException 及其子类异常又被称作「受查异常」另一类是 RuntimeException

2020-11-29 17:33:34 101

原创 【不失业计划】JVM Part3—垃圾回收

三、垃圾回收1、判断算法(1)引用计数算法​ 给每个对象添加一个计数器,当有地方引用该对象时计数器加1,当引用失效时计数器减1。用对象计数器是否为0来判断对象是否可被回收。​ 引用计数算法的实现简单,判断效率也很高,大部分情况下是一个不错的算法。但是Java并没有选用引用计数算法来管理内存,主要的原因是它很难解决对象之间相互循环引用的问题。public class ReferrenceCountingGC{ public Object instance = null; publ

2020-11-18 16:40:20 107

原创 【不失业计划】JVM Part2—内存区域

二、内存1、线程私有(1)栈Java虚拟机栈是线程私有的,它的生命周期和线程一致。描述的是 Java 方法执行的内存模型:每个方法在执行时都会创建一个栈帧(Stack Frame)用于存储局部变量表、操作栈、动态链接、方法出口等信息。每一个方法从调用直至执行结束,就对应着一个栈帧从虚拟机栈中入栈到出栈的过程。局部变量表存放了编译器可知的各种基本数据类型(boolean/byte/char/short/int/float/long/double)、对象引用(可能是一个指向对象起始地址的引用指

2020-11-17 16:44:45 91

原创 【不失业计划】JVM Part1—类加载

一、类加载1、生命周期(1)加载​ 通过一个类的全限定名来获取该类的二进制字节流。​ 将这个字节流所代表的静态储存结构转化为方法区的运行时数据结构,在内存中生成一个代表这个类的java.lang.Class对象​ 该对象作为方法区这个类的各种数据的访问入口完成后,虚拟机外部的二进制字节流就按照虚拟机所需格式储存在方法区中(2)连接加载阶段未完成,连接阶段已经开始了,两者会交叉运行。验证为什么需要验证? 为了确保Class文件的字节流中包含的信息符合虚拟机的规范要求,因为Clas

2020-11-11 19:41:04 92

原创 【不失业计划】二叉树常见用法及题目汇总

二叉树1、二叉树n(n>=0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树组成。(1)满二叉树在一棵二叉树中。如果所有分支结点都存在左子树和右子树,并且所有叶子都在同一层上,这样的二叉树称为满二叉树。特点:1)叶子只能出现在最下一层。出现在其它层就不可能达成平衡。2)非叶子结点的度一定是2。3)在同样深度的二叉树中,满二叉树的结点个数最多,叶子数最多。(2)完全二叉树对一颗具有n个结点的二叉树按层编号,如果编

2020-11-08 23:44:32 376

转载 【不失业计划】设计模式 part3一行为型模式

转载说明:资料来源 https://design-patterns.readthedocs.io/zh_CN/latest/behavioral_patterns/behavioral.html 主要作为个人学习查阅资料,需要删除请联系附另一直观设计模式学习网站:https://refactoringguru.cn/design-patterns三、行为型模式1、命令模式定义命令模式是一种行为设计模式, 它可将请求转换为一个包含与请求相关的所有信息的独立对象。 该转换让你能根据不同的请求将方法参数

2020-11-05 17:38:31 140

转载 【不失业计划】设计模式 part2一结构型模式

转载说明:资料来源 https://design-patterns.readthedocs.io/zh_CN/latest/creational_patterns/creational.html 主要作为个人学习查阅资料,需要删除请联系附另一直观设计模式学习网站:https://refactoringguru.cn/design-patterns二、结构型模式1、适配器模式定义将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类和对象可以一起工作。运作方式适配器实现与其中一个

2020-11-03 16:15:29 123

转载 【不失业计划】设计模式 part1一创建型模式

转载说明:资料来源 https://design-patterns.readthedocs.io/zh_CN/latest/creational_patterns/creational.html 主要作为个人学习查阅资料,需要删除请联系一、创建型模式​ 创建型模式(Creational Pattern) 对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离。为了使软件的结构更加清晰,外界对于这些对象只需要知道它们共同的接口,而不清楚其具体的实现细节,使整个系统的设计更加符合单一职责原

2020-11-02 19:49:28 186

原创 《操作系统概念 第7版》学习整理+常见操作系统问题

《操作系统概念 第7版》学习整理+常见操作系统问题1 操作系统2 进程3 线程4 CPU调度5 死锁6 内存管理7 虚拟内存1 操作系统定义:操作系统是用户和计算机的接口,同时也是计算机硬件和软件的接口。控制和管理整个计算机系统的硬软件资源,合理组织调度计算机的工作和资源分配。多道程序处理:单个用户通常不能总是使得CPU和I/O设备都忙,多道程序设计通过组织作业(编码或数据)使CPU总有一个作业可执行(类比于律师在一段时间内不只为一个客户工作),从而提高了CPU的利用率。分时系统:分时系

2020-08-18 22:22:21 632

原创 《计算机网络 自顶向下方法》学习整理

《计算机网络 自顶向下方法》学习整理计算机网络1、计算机网络(1)英特网(2)网络边缘(3)网络核心(4)时延、丢包、吞吐量(5)协议层次2、应用层(1)应用层协议(2)Web和HTTP(3)SMTP(4)DNS3、运输层(1)运输层服务(2)无连接运输:UDP(用户数据报协议)(4)面向连接:TCP(传输控制协议)4、网络层(1)虚电路(2)IP协议计算机网络1、计算机网络(1)英特网英特网:英特网是世界范围内的计算机网络,互联了全世界数亿计计算机网络设备的网络。协议:在网络中,一个协议

2020-08-16 16:50:37 3134

原创 【个人实践】基于SpringBoot+Thymeleaf+Mysql 的博客管理系统

基于SpringBoot+Thymeleaf+Mysql 的博客管理系统1、前期分析(1) 界面(2) 功能分析(3) 实体分析(4)实体ER图、功能图2、功能实现模块(1) 登陆注册(2) 个人信息管理(3) 后端管理(4) 管理员端用户信息管理(5) 新增博客(6) 博客管理(7) 博客修改页(8) 博客图廊(9) 博客详情页(10) 首页三模块功能(11) 列表页(12)错误界面(13) 评论功能(14) 登录拦截 / 异常处理3、重要代码(1)前端部分(2)实体类(3)Dao层(4)Service层

2020-08-13 20:21:10 1215

原创 【学习日记】(SpringBoot-part 9)新闻管理系统—shiro权限管理

新闻管理系统的Shiro权限管理Shiro权限管理shiro角色权限管理Shiro权限管理shiroApache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。角色权限管理新建权限实体类Permission,实现序列化的接口@Entity@Table(name = "t_permission")public class Permissio

2020-08-06 12:58:53 173

原创 【学习日记】(SpringBoot-part 8)新闻管理系统—空属性赋值 / aspect日志

新闻管理系统的空属性复制和aspect日志空属性复制问题描述实现过程效果展示aspect日志功能实现实现效果空属性复制问题描述在原先的实现基础上,如果对新闻进行编辑,没有出现在编辑页面的内容就会在返回数据库保存的时候自动保存为空,例如在修改界面不能更改的createTime修改前:修改后:创建时间为null实现过程新建一个工具类获取传递参数的源头,将属性传递给一个数组,再将传递时的空属性赋值public class MyBeanUtils { public static Stri

2020-08-04 23:18:46 150

原创 【学习日记】(SpringBoot-part 7)新闻管理系统—归档功能 / 登录拦截 / 异常处理

新闻管理系统的主页归档功能 &登录拦截 & 异常处理归档功能效果展示功能实现登录拦截异常处理归档功能效果展示归档功能是根据数据库中新闻更新时间,按一定的时间间隔进行分类显示,本项目中按照年进行划分,划分之后任然按照更新时间进行排序功能实现修改NewRepository在NewRepository中增加两个方法,一个按年进行分组,一个根据年进行查询 //按年归档 @Query("select function('date_format',n.updateTim

2020-08-02 15:44:14 187

原创 【学习日记】(SpringBoot-part 6)新闻管理系统—评论功能/分类和标签功能

新闻管理系统的主页新闻评论功能和分类标签功能新闻评论功能效果展示功能实现分类功能效果展示功能实现标签功能效果展示功能实现新闻评论功能效果展示可以直接在新闻底下输入姓名和邮箱评论,也可以回复别人发表的评论功能实现新建实体类在pojo目录下新建一个Comment的实体类,主要包含昵称、邮箱、评论内容、头像和创建时间,接着就是声明实体间对应的关系@Entity@Table(name = "t_comment")public class Comment { @Id //主键标识

2020-08-01 22:16:51 467

原创 【学习日记】(SpringBoot-part 5)新闻管理系统—主页功能

新闻管理系统的主页功能

2020-07-30 18:58:17 630

原创 【学习日记】(SpringBoot-part 4)新闻管理系统—添加和修改新闻功能

新闻管理系统的新闻添加和修改功能效果展示实现过程添加新闻功能和修改功能的实现机制是差不多的,因此放到一起实现效果展示实现过程添加实体类且声明与其他实体关系在po文件下添加News实体信息如下,并在实体信息中声明和其他实体的关系实体关系:News to Type : n:1News to User : n:1News to Tags : n:n 因为News和Tags的实体关系为多对多,所以需要指定级联,生成一个News-Tag关系表@Entity@Table(name =

2020-07-29 16:32:19 755 2

原创 【学习日记】(SpringBoot-part 3)基于SpringBoot实现CRUD

新闻管理系统CRUD功能的实现分类管理查询分类添加分类删除分类修改分类标签管理添加实体类Repository类Service类和Impl类Controller类基于springboot实现新闻管理系统分类和标签部分的CRUD功能分类管理查询分类查询分类之前开发分页功能的时候已经实现过了,回忆一下开发思路新建dao目录下文件因为很多方法jpa中已经自动给我们封装好了,所以相比之前的ssm项目来看,springboot方便许多,dao目录下新建的TypeRepository接口如下public

2020-07-28 15:00:53 289

原创 【学习日记】(SpringBoot-part 2)实体设计+用户登陆+分页显示

新闻管理系统实体设计、用户登录功能和分页显示实体设计1 实体关系2 实体信息用户登陆功能类别分页展示效果展示实体设计1 实体关系本系统一共需要涉及五个实体类,实体之间的映射关系如图所示2 实体信息News实体信息User实体信息Comment实体信息分类Type和标签Tag较为简单,不画其实体图用户登陆功能注入依赖更新pom文件,注入jpa等依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="

2020-07-27 17:54:37 336

原创 【学习日记】(SpringBoot-part 1)初学springboot—创建springboot项目

搭建一个SpringBoot项目新建文件打开IDEA -> New -> New Project -> Spring Initializr 使用默认 点击next选择依赖,根据你的项目需要进行勾选,我根据自己项目需要选择了如下选择好之后点击next-> finish配置Maven配置数据库(本次只是新建一个sspringboot项目,暂时用不到数据库,但是还是需要在配置文件中配置好)首先新建一个数据库,名字为spring,目前没建立新表。修改配置文

2020-07-27 08:35:02 236

原创 【学习日记】Git的使用

Git的使用和加速Github下载的方法git的使用1 下载安装Git工具2 注册Github账号,已有账号跳过该步骤3 在IDEA绑定git3 Github新建项目加速方法git的使用1 下载安装Git工具下载地址:Git下载下载好之后按照自己电脑版本安装好即可2 注册Github账号,已有账号跳过该步骤注册地址:注册地址按要求填写好信息之后登录进入主页3 在IDEA绑定git打开IDEA -> Files -> Settings -> Version C

2020-07-27 08:00:55 113

原创 【学习日记】(SSM-part 3)SSM项目-批量删除、拦截和用户权限功能开发

用户管理模块 — 批量删除、拦截和用户权限功能开发1 批量删除2 Filter拦截器3 用户权限功能1 批量删除效果预览在之前开发的基础上可以在jsp界面中看到有多选框和是删除按钮,批量删除的功能就是在多选框下选择好待处理的用户信息,进行批量删除实现。功能实现:(1) 在userDao下声明一个批量删除的接口,并传入一个List集合//批量删除void deleteAll(@Param("ids")List<Integer> ids);(2) 在UserMapper中声明一个

2020-07-24 17:37:01 287

原创 【学习日记】(SSM-part 2)在用SSM实现CRUD的基础上添加搜索和分页功能

在用SSM实现CRUD的基础上添加搜索和分页功能添加的功能是在之前的开发基础上添加的分页和查询功能,使用SSM实现基础的CRUD功能,本次的分页功能主要由后端逻辑代码实现。1 功能描述和效果展示之前开发的项目仅仅实现了对数据库的crud功能,查询显示的数据很多的话会一直拉长滑动条在增加分页功能之后界面更加友好,一齐开发了搜索功能2 本次开发用到的jsp界面目前的jsp界面是用中软的老师分享的现成的jsp资源,已征得老师允许放入个人博客展示。文件目录如下这部分代码可以通过点击我 获取。3

2020-07-23 17:17:07 183 1

原创 【学习日记】(SSM-part 1)使用SSM实现基础的CRUD功能

【个人学习笔记】使用SSM实现基础的CRUD功能关于SSM:SSM(Spring + Spring MVC + MyBatis)Spring :Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。控制反转 (IoC):依赖注入是控制反转的一种技术,控制反转是一个通用的概念,大致理解为将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。面向切面 (AOP):系统是由许多组件组成,每个组件各负责一块特定功能,还有可能承担日志,事务管理和安全等系统服务中去,这些系统

2020-07-22 22:40:33 282

原创 【学习日记】使用Servlet实现简单的登陆注册功能

【个人学习笔记】使用Servlet实现简单的登陆注册功能开发环境:IDEA2019、Tomcat7.0、Mysql5.5.5、Wampserver64新建文件打开IDEA新建一个Java Web Application项目,选择tomcat,输入一些必要信息直到finish。此次开发需要用到两个jar包JSP标准标签库(JSTL)mysql-connector-java选择自己适合的版本下载好之后在IDEA中导入 File -> Project Structure -> P

2020-07-21 20:46:19 2445 4

原创 【学习日记】IDEA 创建Maven项目之后没有src文件夹原因分析

IDEA创建Maven-webapp项目之后编译器不能正常加载出src文件使用的IDEA版本:2019.2.4在通过idea创建Maven项目,发现创建成功之后没有出现src文件。解决办法:个人创建没有成功原因是因为在本地的.m2文件下的没有放置setting.xml文件,但是在创建项目时明确指定了用户的配置文件地址。解决办法即在用户目录下的.m2文件夹下添加setting.xml文件,再配置编译器的VM-options设置archetypeCatalog为internal。并在创建文件时选择

2020-07-20 16:00:49 13503 1

原创 Java+Mysql 实现简单的学生管理系统

Java+Mysql 实现简单的学籍管理系统数据库准备Java准备运行调试数据库准备这里我使用的可视化数据库软件为 Wampserver64 如有需要可自行安装。进入数据库新建一个status数据库,在该数据库下新建一个status_info数据表,然后添加字段如图:数据库准备完毕,开始编写Java实现基本的增删查改操作。Java准备使用软件:IDEA新建一个java项目:打开ID...

2020-03-28 17:43:47 9363 6

空空如也

空空如也

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

TA关注的人

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