![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
个人学习
文章平均质量分 91
TiSam
保持输入
展开
-
设计模式之美 pt2 关于面向对象
设计模式之美-关于面向对象原创 2022-10-16 20:49:00 · 325 阅读 · 1 评论 -
设计模式之美 pt1 一些编程方法论的概念及联系
设计模式之美-一些编程方法论概念和联系原创 2022-10-16 20:15:18 · 153 阅读 · 0 评论 -
【苦练基本功】代码整洁之道 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 · 739 阅读 · 0 评论 -
【苦练基本功】代码整洁之道 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 · 252 阅读 · 0 评论 -
【苦练基本功】代码整洁之道 pt2(第4章-第6章)
代码整洁之道原创 2022-04-14 00:00:09 · 393 阅读 · 0 评论 -
【苦练基本功】代码整洁之道 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 · 542 阅读 · 0 评论 -
线程相关面试题目汇总
线程相关面试题目汇总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 · 626 阅读 · 0 评论 -
【不失业计划】面试中我遇到的那些数据库题目
数据库面试常问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 · 118 阅读 · 2 评论 -
【不失业计划】 Java常见集合扩容机制
Java集合扩容机制1、ArrayList2、Vector3、Stack4、HashMap为什么需要扩容?即当前集合能容纳的数据量达到一个饱和状态(饱和状态和加载因子有关)之后,集合需要申请新的存储空间,即扩容。常见的需要扩容的集合一般是底层基于数组实现的,链表不涉及扩容问题,因此LinkedList等无扩容,常见的有ArrayList、Vector、Stack、HashMap。加载因子:集合中元素填满的程度,例如ArrayList加载因子为1,初始容量为10,则当当前元素>=10*1需要进行扩原创 2020-12-04 12:36:50 · 404 阅读 · 0 评论 -
【不失业计划】 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 · 312 阅读 · 0 评论 -
【不失业计划】Java 异常(包含个人面试过程中遇到的面试题)
新闻管理系统的主页功能一、常见异常类型二、异常处理三、常见面试题一、常见异常类型Error实现了Throwable接口,Error是JVM层的错误,是程序中无法处理的错误,表示运行应用程序中出现了严重的错误。Exception实现了Throwable接口,Exception是代码逻辑错误,程序本身可以捕获并且可以处理的异常。一类是 IOException(I/O 输入输出异常),其中 IOException 及其子类异常又被称作「受查异常」另一类是 RuntimeException原创 2020-11-29 17:33:34 · 108 阅读 · 0 评论 -
【不失业计划】JVM Part3—垃圾回收
三、垃圾回收1、判断算法(1)引用计数算法 给每个对象添加一个计数器,当有地方引用该对象时计数器加1,当引用失效时计数器减1。用对象计数器是否为0来判断对象是否可被回收。 引用计数算法的实现简单,判断效率也很高,大部分情况下是一个不错的算法。但是Java并没有选用引用计数算法来管理内存,主要的原因是它很难解决对象之间相互循环引用的问题。public class ReferrenceCountingGC{ public Object instance = null; publ原创 2020-11-18 16:40:20 · 112 阅读 · 0 评论 -
【不失业计划】JVM Part2—内存区域
二、内存1、线程私有(1)栈Java虚拟机栈是线程私有的,它的生命周期和线程一致。描述的是 Java 方法执行的内存模型:每个方法在执行时都会创建一个栈帧(Stack Frame)用于存储局部变量表、操作栈、动态链接、方法出口等信息。每一个方法从调用直至执行结束,就对应着一个栈帧从虚拟机栈中入栈到出栈的过程。局部变量表存放了编译器可知的各种基本数据类型(boolean/byte/char/short/int/float/long/double)、对象引用(可能是一个指向对象起始地址的引用指原创 2020-11-17 16:44:45 · 94 阅读 · 0 评论 -
【不失业计划】JVM Part1—类加载
一、类加载1、生命周期(1)加载 通过一个类的全限定名来获取该类的二进制字节流。 将这个字节流所代表的静态储存结构转化为方法区的运行时数据结构,在内存中生成一个代表这个类的java.lang.Class对象 该对象作为方法区这个类的各种数据的访问入口完成后,虚拟机外部的二进制字节流就按照虚拟机所需格式储存在方法区中(2)连接加载阶段未完成,连接阶段已经开始了,两者会交叉运行。验证为什么需要验证? 为了确保Class文件的字节流中包含的信息符合虚拟机的规范要求,因为Clas原创 2020-11-11 19:41:04 · 93 阅读 · 0 评论 -
【不失业计划】二叉树常见用法及题目汇总
二叉树1、二叉树n(n>=0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树组成。(1)满二叉树在一棵二叉树中。如果所有分支结点都存在左子树和右子树,并且所有叶子都在同一层上,这样的二叉树称为满二叉树。特点:1)叶子只能出现在最下一层。出现在其它层就不可能达成平衡。2)非叶子结点的度一定是2。3)在同样深度的二叉树中,满二叉树的结点个数最多,叶子数最多。(2)完全二叉树对一颗具有n个结点的二叉树按层编号,如果编原创 2020-11-08 23:44:32 · 388 阅读 · 0 评论 -
【学习日记】(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 · 181 阅读 · 0 评论 -
【学习日记】(SpringBoot-part 8)新闻管理系统—空属性赋值 / aspect日志
新闻管理系统的空属性复制和aspect日志空属性复制问题描述实现过程效果展示aspect日志功能实现实现效果空属性复制问题描述在原先的实现基础上,如果对新闻进行编辑,没有出现在编辑页面的内容就会在返回数据库保存的时候自动保存为空,例如在修改界面不能更改的createTime修改前:修改后:创建时间为null实现过程新建一个工具类获取传递参数的源头,将属性传递给一个数组,再将传递时的空属性赋值public class MyBeanUtils { public static Stri原创 2020-08-04 23:18:46 · 158 阅读 · 0 评论 -
【学习日记】(SpringBoot-part 7)新闻管理系统—归档功能 / 登录拦截 / 异常处理
新闻管理系统的主页归档功能 &登录拦截 & 异常处理归档功能效果展示功能实现登录拦截异常处理归档功能效果展示归档功能是根据数据库中新闻更新时间,按一定的时间间隔进行分类显示,本项目中按照年进行划分,划分之后任然按照更新时间进行排序功能实现修改NewRepository在NewRepository中增加两个方法,一个按年进行分组,一个根据年进行查询 //按年归档 @Query("select function('date_format',n.updateTim原创 2020-08-02 15:44:14 · 192 阅读 · 0 评论 -
【学习日记】(SpringBoot-part 6)新闻管理系统—评论功能/分类和标签功能
新闻管理系统的主页新闻评论功能和分类标签功能新闻评论功能效果展示功能实现分类功能效果展示功能实现标签功能效果展示功能实现新闻评论功能效果展示可以直接在新闻底下输入姓名和邮箱评论,也可以回复别人发表的评论功能实现新建实体类在pojo目录下新建一个Comment的实体类,主要包含昵称、邮箱、评论内容、头像和创建时间,接着就是声明实体间对应的关系@Entity@Table(name = "t_comment")public class Comment { @Id //主键标识原创 2020-08-01 22:16:51 · 485 阅读 · 0 评论 -
【学习日记】(SpringBoot-part 5)新闻管理系统—主页功能
新闻管理系统的主页功能原创 2020-07-30 18:58:17 · 692 阅读 · 0 评论 -
【学习日记】(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 · 773 阅读 · 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 · 298 阅读 · 0 评论 -
【学习日记】(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 · 345 阅读 · 0 评论 -
【学习日记】(SpringBoot-part 1)初学springboot—创建springboot项目
搭建一个SpringBoot项目新建文件打开IDEA -> New -> New Project -> Spring Initializr 使用默认 点击next选择依赖,根据你的项目需要进行勾选,我根据自己项目需要选择了如下选择好之后点击next-> finish配置Maven配置数据库(本次只是新建一个sspringboot项目,暂时用不到数据库,但是还是需要在配置文件中配置好)首先新建一个数据库,名字为spring,目前没建立新表。修改配置文原创 2020-07-27 08:35:02 · 242 阅读 · 0 评论 -
【学习日记】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 · 120 阅读 · 0 评论 -
【学习日记】(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 · 298 阅读 · 0 评论 -
【学习日记】(SSM-part 2)在用SSM实现CRUD的基础上添加搜索和分页功能
在用SSM实现CRUD的基础上添加搜索和分页功能添加的功能是在之前的开发基础上添加的分页和查询功能,使用SSM实现基础的CRUD功能,本次的分页功能主要由后端逻辑代码实现。1 功能描述和效果展示之前开发的项目仅仅实现了对数据库的crud功能,查询显示的数据很多的话会一直拉长滑动条在增加分页功能之后界面更加友好,一齐开发了搜索功能2 本次开发用到的jsp界面目前的jsp界面是用中软的老师分享的现成的jsp资源,已征得老师允许放入个人博客展示。文件目录如下这部分代码可以通过点击我 获取。3原创 2020-07-23 17:17:07 · 189 阅读 · 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 · 291 阅读 · 0 评论 -
【学习日记】使用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 · 2493 阅读 · 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 · 13778 阅读 · 1 评论