stepMore的博客

记录自己的看书轨迹,学习历程
私信 关注
stepMoreForever
码龄5年

step more

  • 115,338
    被访问量
  • 187
    原创文章
  • 31,398
    作者排名
  • 29
    粉丝数量
  • 于 2016-01-11 加入CSDN
获得成就
  • 获得58次点赞
  • 内容获得24次评论
  • 获得196次收藏
荣誉勋章
兴趣领域
  • #后端
    #Java
TA的专栏
  • Java 8
    6篇
  • 水印
    3篇
  • 图解设计模式
    25篇
  • 生活随笔
    19篇
  • Java基础
    30篇
  • IDE工具使用
    13篇
  • 数据库
    18篇
  • 网络
    16篇
  • 计算机基础
    2篇
  • 算法
    3篇
  • MySQL必知必会
    8篇
  • Linux
    11篇
  • 设计模式
    13篇
  • Spring
    6篇
  • JVM
    1篇
  • NIO
    10篇
  • Java 面试常见问题
    4篇
  • Docker
    1篇
  • Git
    4篇
  • Java I/O
    8篇
  • Netty
    1篇
  • Thread
    9篇
  • 分布式系统
    1篇
  • 中英文互译
    2篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

快速排序递归算法详解

快速排序算法的原理和步骤:首先进行分区,分区指的是从数组随机选取一个值,以其为轴,将比它小的放到它左边,比它大的值放到它右边。确定指针,我们选取排除轴元素的数组最左(左指针)和最右(右指针)的元素。具体步骤如下:左指针逐个格子向右移动,当遇到大于或等于轴的值时,就停下来。右指针逐个格子向左移动,当遇到小于或等于轴的值时,就停下来。将两指针所指的值交换位置。重复上述步骤,直至两指针重合,或左指针移到右指针的右边。将轴与左指针所指的值交换位置。快速排序严重依赖于分区。它的运作方式如下所示。
原创
2阅读
0评论
0点赞
发布博客于 2 天前

大O记法的简单理解

我们一般都用大O表示法来形容算法(解决某个问题的一套流程)的时间上的快慢。大O算法一般只关注其所用的步数。 大O解答的是这样的问题:当数据增长时,步数如何变化的问题?1 常用的大O算法分类:1.1 常数时间 O(1)常数时间就是所有数据增长但步数不变;常用O(1)来表示。1.2 线性时间 O(N)O(N)称为线性时间,意思是当数组增加一个元素时,O(N)算法就要增加1步。1.3 对数时间 O(logN)O(logN)算法的步数等于二分数据直至元素剩余1个的次数。N个元素O(N
原创
9阅读
0评论
0点赞
发布博客于 3 天前

《Java I/O》Chapter4

Chapter4 文件流到目前为止,本书中的大多数示例都使用了System.in和System.out流。这些示例很方便,但是在现实生活中,你通常会将流附加到数据源,例如文件和网络连接。 java.io.FileInputStream和java.io.FileOutputStream类是java.io.InputStream和java.io.OutputStream的具体子类,提供用于在文件中读取和写入数据的方法。他们不提供文件管理功能,例如确定文件是否可读或可写,或者将文件从一个目录移动到另一个目录。为
原创
10阅读
0评论
0点赞
发布博客于 6 天前

ORG.APACHE.CATALINA.CONNECTOR.CLIENTABORTEXCEPTION: JAVA.IO.IOEXCEPTION: BROKEN PIPE问题

昨晚APP和小程序突然请求不了服务端了,基本都是超时的。查看后台发现的确报错了。报错信息见下图。知道了报错信息那就好弄了,开始上用关键字网上进行搜索。搜索到一篇比较好的文章link。大家可以去参考一下。不过我的问题是数据库慢SQL导致的问题。这个SQL实在是太耗费时间了,导致连接超时。1.当访问某个服务突然服务器挂了,就会产生Broken pipe;2.客户端读取超时关闭了连接,这时服务器往客户端再写数据就发生了broken pipe异常!解决方法:重启服务器,解决慢SQL。...
原创
7阅读
0评论
0点赞
发布博客于 7 天前

《Java I/O》 Chapter3

Chapter3 输入流java.io.InputStream是所有输入流的抽象超类。 它声明了从流中读取字节数据所需的三种基本方法。 它还具有以下方法:关闭流,检查可读取多少字节数据,跳过输入,在流中定位并重置回该位置,以及确定是否支持标记和重置。read( ) 方法InputStream类的基本方法是read( )。 此方法读取数据的单个无符号字节,并返回无符号字节的整数值。 这是介于0到255之间的数字:public abstract int read() throws IOException
原创
5阅读
0评论
0点赞
发布博客于 9 天前

《Java I/O》Chapter2

chapter2 输出流java.io.OutputStream类声明了三个基本方法将字节数据写入流中。它也包含了关闭和冲刷流的方法: public abstract void write(int b) throws IOException public void write(byte[] data) throws IOException public void write(byte[] data, int offset, int length) throws IO
原创
11阅读
0评论
0点赞
发布博客于 10 天前

字面量、常量和变量之间的区别

字面量是指由字母,数字等构成的字符串或者数值,它只能作为右值(右值是指等号右边的值,如:int a=123这里的a为左值,123为右值)出现。常量和变量都属于变量,常量是赋值后不会再变的变量,普通的变量可以再进行赋值操作。// a变量int a;// b为常量,10为字面量final int b = 10000;// s为变量,Hello Java为也字面量string s = "Hello Java";...
原创
8阅读
0评论
0点赞
发布博客于 2 月前

解决IDEA报:lambda expressions are not supported at this language level的问题

以下设置修改都是针对Mac版本的IDEA。打开路径File -> Project Structure -> Project Settings -> ModulesIntelliJ IDEA -> Preferences -> Build,Execution,Deployment -> Compiler -> Java Compiler确保JDK版本为JDK1.8。...
原创
14阅读
0评论
0点赞
发布博客于 2 月前

Maven项目外部Jar如何进行打包

最近,开发的项目,用到了甲方的SDK。甲方也并没有将SDK放入到Maven仓库中。在本地开发,IDEA引入外部的Jar还是很简单的。但是Maven进行打包操作时,如何将其打包进去呢?下面步骤告诉我们如何进行打包操作:我将jar包放入lib文件夹中。pom添加下面的配置 <dependency> <groupId>com.shenzheng.zfw</groupId> <artifactId>out-jar-1</artif
原创
26阅读
0评论
0点赞
发布博客于 2 月前

2021年新年规划

2020年过去了,迟迟没有写自己的2021年规划,主要是事情有点多,自己松懈了一点儿。对于已经来到的2021年,我需要简单规划一下2021年需要完成的事情。 一年之计在于春,好的规划和播种才有好的收成。目前自己从事后端Java开发的工作。Java作为我目前主要的编程语言。目前项目的构建工具主要还是Maven。Maven目前还是主流,不过现在出现了更好的Gradle。为了学习Gradle,首先学习一下Groovy。2021年的学习路线大概就是这样子的,学习一点新的知识,更新技术知识,也更新自己的认
原创
36阅读
1评论
0点赞
发布博客于 2 月前

函数式编程一些概念理解

柯里化就是一个逐次消元的过程。当把函数的元全消掉,就得到了值。值就是零元函数。这是个数学问题,不是个程序问题,反对用代码来解释lambda演算。(来源某位知乎网友)我本人还是蛮喜欢这个答案的。...
原创
20阅读
0评论
0点赞
发布博客于 2 月前

MySQL的唯一插入,增量更新

唯一插入首先我们先创建一个用户表:DROP TABLE IF EXISTS `nb_sys_user`;CREATE TABLE `nb_sys_user` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `is_deleted` char(1) NOT NULL DEFAULT 'N' COMMENT '是否删除,N:未删除,Y:删除', `gmt_create` datetime NOT NULL DEFAULT '2020-12-30
原创
70阅读
0评论
0点赞
发布博客于 2 月前

MySQL Left Join使用注意事项

在我们使用MySQL进行联表查询的时候,经常使用Left Join的方式。如果两张表的关联条件是唯一对应的,那么自然没问题。用户:组织:联表查询结果:当有多个组织的时候,问题就出现了:联表查询结果:出现了两个相同的结果。其实我们的本意是查询用户,顺便将用户所属的组织带出来,这样用户列表中查询出来的数据就会多处一些不是我们想要的数据了,查询返回的数据是有问题的。我们来看看Left Join的特性:左表中的记录数是它将返回的最小记录数。如果右表中有两条记录与左表中的一条记录匹配,它将返
原创
35阅读
0评论
0点赞
发布博客于 2 月前

Java Lambda表达式的分组/分块,组合收集器

数据分块/分组// partitioningBy接受一个流,并将其按boolean分成两部分public Map<Boolean, List<Artist>> bandsAndSolo(Stream<Artist> artists) { return artists.collect(partitioningBy(artist -> artist.isSolo()));}// groupingBy类似SQL中的group by操作public Map
原创
54阅读
0评论
0点赞
发布博客于 2 月前

Linux根据占用的端口号,查杀进程

查看占用端口的pidlsof -i:8002kill线程kill -9 pid
原创
32阅读
0评论
0点赞
发布博客于 3 月前

Nignx图片下载损坏的问题

项目中将Excel文件放于制定可访问的目录下。前端访问,后端执行文件的下载操作,重定向,打开一个新的table页执行下载操作。发现的问题,有人下载下来的文件会打不开,存在损坏的情况,目前还不知道具体的原因,blog记录一下。后续跟进解决。...
原创
27阅读
0评论
0点赞
发布博客于 3 月前

2020年终总结

来做自己的2020年终总结了。2020年,对于我来说是比较特殊的一年,对于大家来说也是很特殊的一年,值得铭记。1.工作2020年的工作都是顺风顺水的那种,遇到过苦难,但是基本也靠自己解决了。明年想换一份稍有挑战性的工作。2.学习学习总体来说是一直有的,不过有懈怠的时候。每日总结有时还是流于形式,我觉得这个需要进行改进。2020年定下的目标:在Java语言之外学习一门脚本语言,暂定的语言是Python。(undone)数据库MySQL需要深入理解一下,目前的理解太浅了。(done)3.生活生
原创
1974阅读
0评论
0点赞
发布博客于 3 月前

MySQL查询数据库表中某个字段相同数据的数量

用户表:sys_user姓名字段:real_name示例:查询用户表中真实姓名相同的人的个数SELECT real_name,count(real_name) AS countRealName FROM sys_user WHERE is_deleted=0 GROUP BY real_name HAVING countRealName > 1;
原创
477阅读
0评论
0点赞
发布博客于 3 月前

Java中的数组和集合相互转换的方法

// 集合转换为数组// 使用Stream:String[] ss = listStrings.stream().toArray(String[]::new);// 使用List中的toArray()方法String[] sss = listStrings.toArray(new String[listStrings.size()]);// 数组转换为集合// 使用Stream中的Collector收集器String[] arrays = new String[]{"hello", "ja
原创
23阅读
0评论
0点赞
发布博客于 4 月前

记录HttpSession相关

HttpSession的使用方法link。使用HttpSession之后,我们知道相关的数据保存到了Redis中了。有时我们想登录Redis中查看相关的数据保存情况。首先登录到Redis中,输入命令# 都是以spring开头> keys spirng*// 存储 Session 数据,数据类型hash,可以使用type查看Key:spring:session:sessions:xxxxxxxxxxxxxxxxxxxxxxxx// Redis TTL触发Session 过期。(Redis
原创
19阅读
0评论
0点赞
发布博客于 4 月前

String和Byte互转

public static void main(String[] args) { // String to bytes String str = "Hello Java"; byte[] strToByte = str.getBytes(); // bytes to String String byteToStr = new String(strToByte); System.out.println(byteT
原创
112阅读
0评论
0点赞
发布博客于 4 月前

查看Linux服务器文件常用的命令

df -hl查看服务器磁盘空间的使用大小。发现磁盘空间不够用时,及时清理。find名利菜鸟教程linkfind . -type f -size +50000k查找大小不小于50000k的文件,也就是找出服务器中的大文件
原创
203阅读
0评论
0点赞
发布博客于 4 月前

MySQL数据库中时间字段取出来后和实际存储在数据库中不一致的问题

后端使用MyBatis技术连接数据库时的解决方案:serverTimezone=Asia/Shanghai在这个问题上,我们可以了解相关的查看服务器端的时间和时区的方法:博文链接:linklink查看MySQL数据库的时区的方法:博文链接:link...
原创
110阅读
0评论
0点赞
发布博客于 5 月前

Optional 使用方法

Java8引入了Optional类来解决NullPointerException的问题。学习好Optional的使用方式,使我们的代码更加健壮。示例类:class Insurance { private String name; public String getName() { return name; }}class Car { private Optional<Insurance> insurance; public Opti
原创
398阅读
0评论
0点赞
发布博客于 5 月前

Java8中新的日期和时间API

Java8引入了新的日期和时间API,修正了之前日期和时间的缺陷和BUG。1 新的日期和时间API1.1 LocalDateLocalDate显示日期,不包含时间,是一个不可变的对象。打印出来的日期也简洁易懂:// 2020-03-18LocalDate date = LocalDate.of(2020,3,18);// 2020int year = date.getYear();// MARCHMonth month = date.getMonth();// 18int day =
原创
56阅读
0评论
0点赞
发布博客于 5 月前

第三部分 识别、认证与安全——第11章 客户端识别与cookie机制

本章我们将讨论下列用户识别机制:承载用户身份的HTTP首部。客户端IP地址跟踪,通过用户的IP地址对其进行识别。用户登录,用认证方式来识别用户。胖URL,一种在URL中嵌入识别信息的技术cookie,一种功能强大且高效的持久身份识别技术。1 HTTP首部承载用户相关信息的HTTP首部首部名称首部类型描述From请求用户的E-mail地址User-Agent请求用户的浏览器软件Referer请求用户是从这个页面上依照连接跳转过来的Refe
原创
29阅读
0评论
0点赞
发布博客于 5 月前

Java值传递

在了解Java是值传递之前,先明白值传递和引用传递这两个概念。值传递值传递是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。引用传递引用传递是指在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。几篇blog讲解的不错的博客:linklink...
原创
32阅读
0评论
0点赞
发布博客于 6 月前

第二部分 HTTP结构——第10章 HTTP-NG

HTTP-NG:HTTP Next Generation。CORBA:Common Object Request Broker Architecture(通用对象请求代理架构)HTTP发展中存在的问题:复杂性可扩展性性能传输依赖性HTTP-NGHTTP-NG的主题:“模块化及功能增强”。HTTP-NG建议模块化为三层,而不是将连接管理、报文处理、服务器处理逻辑和协议方法全都混在一起。第一层——报文传输报文传输层为报文的传输提供了一个API,无论底层实际采用的是什么网络协议栈都可以使用
原创
67阅读
0评论
0点赞
发布博客于 6 月前

第二部分 HTTP结构——第9章 Web机器人

Web机器人是能够在无需人类干预的情况下自动进行一系列Web事务处理的软件程序。“爬虫”、“蜘蛛”、“蠕虫”以及“机器人”都是Web机器人的特色名字。递归地追踪这些Web链接的机器人会沿着HTML超链创建的网络爬行,所以将器称为爬虫或蜘蛛。因特网搜索引擎使用爬虫在Web上游荡,并把它们碰到的文档全部拉回来。本章主要从如下几个方面介绍了Web机器人:爬虫及爬行方式机器人的HTTP行为不当的机器人拒绝机器人访问机器人的规范搜索引擎...
原创
45阅读
0评论
0点赞
发布博客于 6 月前

第二部分 HTTP结构——第8章 集成点:网关、隧道及中继

本章主要内容:在HTTP和其他协议及应用程序之间起到接口作用的网关;允许不同类型的Web应用程序互相通信的应用程序接口;允许用户在HTTP连接上发送非HTTP流量的隧道;作为一种简化的HTTP代理,一次将数据转发一跳的中继。1 网关(gateway)网关可以作为某种翻译器使用,它抽象出了一种能够到达资源的方法。网关是资源和应用程序之间的粘合剂。应用程序可以请求网关来处理某条请求,网关可以提供一条响应。网关可以向数据库发送查询语句,或者生成动态的内容,就像一个门一样:进去一条请求,出来一个响应
原创
48阅读
0评论
0点赞
发布博客于 6 月前

第二部分 HTTP结构——第7章缓存

Web缓存是可以自动保存常见文档副本的HTTP设备。当Web请求抵达缓存时,如果本地有“已缓存的”副本,就可以从本地存储设备而不是原始服务器中提取这个文档。使用缓存的优点:缓存减少了冗余的数据传输,节省了你的网络费用。缓存缓解了网络瓶颈的问题。不需要更多的带宽就能够更快地加载页面。缓存降低了对原始服务器的要求。服务器可以更快地响应,避免过载的出现。缓存降低了距离的时延,因为从较远的地方加载页面会更慢一些。1. 缓存命中和未命中的可以用已有的副本为某些到达缓存的请求提供服务。称为缓存命中(c
原创
54阅读
0评论
0点赞
发布博客于 6 月前

命名空间又称名字空间,英文名:Namespace

我们先看一下在维基百科中的解释link:名字空间(英语:Namespace),也称命名空间、名称空间等,它表示着一个标识符(identifier)的可见范围。一个标识符可在多个名字空间中定义,它在不同名字空间中的含义是互不相干的。这样,在一个新的名字空间中可定义任何标识符,它们不会与任何已有的标识符发生冲突,因为已有的定义都处于其他名字空间中。其实这个好比Java中的相同名字的类,在不同包中的意思类似。比较好的介绍文章link扩展XML Schemalink...
原创
141阅读
0评论
0点赞
发布博客于 7 月前

IDE报-source 1.5xxxx错误

最近从公司一个新的项目拉下来,放到IntelIiJ IDEA 中编译运行报如下错误:解决方法查看pom文件中是否有如下代码: <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <c
原创
56阅读
0评论
0点赞
发布博客于 7 月前

图片水印文字换行,置于右下角

import javax.imageio.ImageIO;import java.awt.*;import java.awt.image.BufferedImage;import java.io.File;import java.io.FileOutputStream;/** * @author yangyun * @title * @Package com.bugaugaoshu.security.watermark * @date 2020/5/25 11:19 上午 */pu.
原创
194阅读
0评论
1点赞
发布博客于 7 月前

RESTful理解

REST,是Representational State Transfer的缩写,中文翻译为:表现层状态转化;RESTful风格的CRUD:动作RESTful风格的URLHTTP请求方法查询xxxx/{id}GET添加xxxxPOST修改xxxx/{id}PUT或PATCH删除xxxx/{id}DELETE可以看到,RESTful风格的CRUD比传统的CRUD简单明了,通过HTTP方法来区分增加、修改、删除和查询。好的参考文档:阮一峰老师b
原创
42阅读
0评论
0点赞
发布博客于 7 月前

Sublime Text

Mac 版的Sublime Text的快捷键Table Sublime Text快捷键英文单词中文释义Command+HHide Sublime Text隐藏Sublime TextOption+Command+HHide Others隐藏其他Command+HQuit Sublime Text退出Sublime TextTable File快捷键英文单词中文释义Command+NNew File打开一个新的table页
原创
64阅读
0评论
0点赞
发布博客于 7 月前

第二部分 HTTP结构——第6章代理

Web代理的定义Web代理(proxy)服务器是网络的中间实体。代理位于客户端和服务器之间,扮演“中间人”的角色,在各端点之间来回传送HTTP报文。代理分类1.公共代理大多数代理都是公共的共享代理。集中式代理的成本效率更高,更容易管理。某些代理应用,比如高速缓存代理服务器,会利用用户间共同的请求,这样的话,汇入同一个代理服务器的用户越多,它就越有用。2.私有代理专用的私有代理并不常见,但它们确实存在,尤其是直接运行在客户端计算机上的时候。有些浏览器辅助产品,以及一些ISP服务,会在用户的PC上直
原创
325阅读
0评论
0点赞
发布博客于 7 月前

SpringBoot application.properties读取属性配置文件中文显示为乱码问题的解决

在Spring Boot项目的application.properties中写中文的配置文件,在本地IDEA中取出来是好的,但是已jar的形式发布,再访问时发现是乱码了。后来自己在网上搜解决办法,网上提供了类似的解决方案:链接后来也找了类似的几篇文章,差不多都是这个思路。结果是我并没有解决我的问题。后来,我将所有的中文包括中文符号都转换为Unicode编码,再放入application.properties中。然后问题解决了。不会出现中文乱码的问题了。...
原创
309阅读
0评论
0点赞
发布博客于 8 月前

第二部分 HTTP结构——第5章Web服务器

Web服务器工作流程建立连接——接受一个客户端连接,或者如果不希望与这个客户端建立连接,就将其关闭接收请求——从网络中读取一条HTTP请求报文处理请求——对请求报文进行解释,并采取行动访问资源——访问报文中指定的资源构建响应——创建带有正确首部的HTTP响应报文发送响应——将响应回送给客户端记录事务处理过程——将与已完成事务有关的内容记录在一个日志文件中1.建立连接Web服务器可以随意拒绝或立即关闭任意一条连接。有些Web服务器会因为客户端IP地址或主机名是未认证的,或者因为它是已知
原创
82阅读
0评论
0点赞
发布博客于 8 月前

第一部分 HTTP:Web的基础——第4章 连接管理

本章的知识点:HTTP是如何使用TCP连接的;TCP连接的时延、瓶颈以及存在的障碍;HTTP的优化,包括并行连接、keep-alive(持久连接)和管道化连接;管理连接时应该以及不应该做的事情。4.1 TCP连接世界上几乎所有的HTTP通信都是 由TCP/IP承载的,TCP/IP是全球计算机及网络设备都在使用的一种常用的分组交换分层协议集。4.1.1 TCP的可靠数据管道HTTP连接实际上就是TCP连接及其使用规则。TCP连接是因特网上的可靠连接。4.1.2 TCP流是分段的、由IP分
原创
85阅读
0评论
0点赞
发布博客于 8 月前

IntelliJ IDEA在Mac中的安装路径

Mac 的配置文件保存路径下面内容中:XXXXXX,表示 IntelliJ IDEA 的版本号,IntelliJ IDEA 的配置目录是跟版本号有关系的。/Users/用户名/Library/Application Support/IntelliJIdeaXXXXXX,用于保存安装的插件/Users/用户名/Library/Caches/IntelliJIdeaXXXXXX,用于保存缓存、日志、以及本地的版本控制信息(local history 这个功能)/Users/用户名/Library/Pr
原创
6267阅读
0评论
0点赞
发布博客于 9 月前

UML和StarUML使用比较好的文章归集

《UML与StarUML使用》分享linkStarUML使用简明教程linkStarUML的使用流程link使用StarUML创建时序图link
原创
115阅读
0评论
0点赞
发布博客于 9 月前

Java实现PDF水印文字换行、平铺、旋转效果

Java代码实现对PDF的水印文字的添加。水印的效果是:水印文字的换行、水印文字的平铺、水印文字的旋转。import java.awt.FontMetrics;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import javax.swing.JLabel;import com.itextpdf.text.
原创
1205阅读
3评论
1点赞
发布博客于 9 月前

Java实现图片水印文字换行、平铺、旋转效果

Java代码实现对图片的水印文字的添加。水印的效果是:水印文字的换行、水印文字的平铺、水印文字的旋转。import java.awt.Color;import java.awt.Font;import java.awt.Graphics2D;import java.awt.Image;import java.awt.image.BufferedImage;import java.io.File;import java.io.FileOutputStream;import javax.im
原创
702阅读
9评论
1点赞
发布博客于 9 月前

好的网络学习课程推荐

最近网络上各种学习资料纷飞,有视频的,有电子书的。在如此众多的学习资料中,如何找到适合自己的真的是一个比较难的事情。个人之前买过耗子(左耳朵耗子)叔的极客专栏,看了一遍,最近又拿起来开始看了,发现真的是干货满满,很适合那些想重视基础的,打牢基础的同学学习。虽然专栏有点贵,不过算是物超所值了!...
原创
84阅读
0评论
0点赞
发布博客于 9 月前

最近项目的问题总结

最近做项目遇到的问题总结:前后端分离项目的登录操作和前后端合并在一起的项目在做法上面是有所区分的。对于当前用户权限和登录失效问题的判断需要通过接口的方式来判断。做一些之前类似业务的操作的时候,不能凭着自己的主观想法去做。时间充裕的情况下,还是需要做一些时序图,毕竟通过时序图可以很好的将现有的业务进行相对仔细的梳理,可以做到查漏补缺的作用。这样程序出错的可能性也会大大降低。这次项目在自己不熟悉的框架上面吃亏较大,下次对于新引入的技术栈,如果没有人能够兜底的话,万分慎重选择。对于一些只能到生产环境才可
原创
52阅读
0评论
0点赞
发布博客于 9 月前

第一部分 HTTP:Web的基础——第3章 HTTP报文

本章的主要流程:报文是如何流动的;HTTP报文的三个组成部分(起始行、首部和实体的主体部分);请求和响应报文之间的区别;请求报文支持的各种功能(方法);和响应报文一起返回的各种状态码;各种各样的HTTP首部都是用来做什么的。3.1 报文流HTTP使用术语流入(inbound)和流出(outbound)来描述事务处理(transaction)的方向。HTTP报文会像河水一样流动...
原创
87阅读
0评论
0点赞
发布博客于 9 月前

第一部分 HTTP:Web的基础——第2章 URL与资源

本章主要内容:URL语法,以及各种URL组件的含义及其所做的工作;很多Web客户端都支持的URL快捷方式,包括相对URL和自动扩展URL;URL编码和字符规则;支持各种因特网信息系统的常见URL方案;URL的未来,包括URN——这种框架可以在对象从一处搬到另一处时,保持稳定的访问名称。2.1 浏览因特网资源URL是浏览器寻找信息时所需的资源位置。URL是人们对HTTP和其他协议...
原创
142阅读
0评论
0点赞
发布博客于 10 月前

内部跳转(请求转发)和外部跳转(重定向)的区别?

总结归纳要点1、内部跳转的时候实际上是通过服务器端将请求转发到另外的页面或者servlet中,这个时候跳转到的目标页面或者servlet可以获取到请求对象,也可以获取到请求中的属性和参数。而外部跳转的时候实际上是第一次请求后,服务器端向客户端发送了一个指令,让客户端再次请求了一次服务器端,这个时候服务器第二次拿到的request对象已经不是第一次请求的request对象了,所以无法获取到第一次请...
转载
226阅读
0评论
0点赞
发布博客于 10 月前

Git将一个分支完全覆盖另一个分支的操作方法

# 切换到要覆盖的分支,这里我们用develop分支git checkout develop# 执行覆盖的命令git reset --hard origin/master# 覆盖成功之后,将本地分支强行推到远程分支git push -f...
原创
1496阅读
0评论
0点赞
发布博客于 10 月前

git版本操作问题汇总及解决方式

git checkout某个历史版本git checkout bfa9e3dda05e12ab29adbd524eacf1c3ae47cb95这样就是获取到某个具体的版本了。一些比较好的git教程阮一峰老师的教程CSDN博客...
原创
48阅读
0评论
0点赞
发布博客于 10 月前

第一部分 HTTP:Web的基础——第1章 HTTP概述

第1章 HTTP概述MIME类型        MIME是Multipurpose Internet Mail Extension的缩写,多用途因特网邮件扩展。最初设计之初是为了解决在不同的电子邮件系统之间搬移报文时存在的问题。MIME在电子邮件系统中工作得非常好,因此HTTP采纳了,用它来描述并标记多媒体内容...
原创
120阅读
0评论
0点赞
发布博客于 1 年前

SpringBoot项目后端重定向的问题

       最近在做一个单点登录功能,单点登录成功之后跳转到我们的页面,单点登录失败之后跳转到我们的登录页面,顺便将错误信息返回给我们的登录页,并将错误信息显示出来。如下图所示的样子:解决方式一       后端代码进行重定向的时候我们可以将需要的信息...
原创
1807阅读
0评论
0点赞
发布博客于 1 年前

加快编码技能的关键

最近在K哥的群里看到了《加快编码技能的关键这篇文章》,我觉得蛮好的,现在分享给大家:
原创
48阅读
0评论
0点赞
发布博客于 1 年前

MyBatis报错:Data truncation: Incorrect datetime value: '0' for column 'xxx'

      今日项目MyBatis报错:      原blog连接link原博文截图:这样发现了问题的所在,是配置文件那赋值语句出现了问题,上图:配置文件写的不对,多了红色标记的地方。为什么会导致这个错误。是自己复制粘贴代码导致的,后并仔细检查导致的错误。...
原创
335阅读
0评论
0点赞
发布博客于 1 年前

MAC常用的快捷键——个人向

转到目录Command+Shift+g终端输入下面的命令显示隐藏的文件和文件夹defaults write com.apple.finder AppleShowAllFiles -boolean true ; killall Finder终端输入下面的命令恢复隐藏文件和文件夹defaults write com.apple.finder AppleShowAllFiles -boolea...
原创
193阅读
0评论
0点赞
发布博客于 1 年前

《HTTP权威指南》读书笔记

第一部分 HTTP:Web的基础第1章 HTTP概述第2章 URL与资源第3章 HTTP报文第4章 连接管理第二部分 HTTP结构第5章 Web服务器第6章 代理第7章 缓存第8章 集成点:网关、隧道及中继第9章 Web机器人第10章 HTTP-NG第三部分 识别、认证与安全第11章 客户端识别与cookie机制第12章 基本认证机制第13章 摘要认证第14章 安全...
原创
103阅读
1评论
0点赞
发布博客于 1 年前

近期居家办公的一些感想

        由于新冠状病毒????的肆虐,工作这么多年以来第一次体会远程办公。        其实我们IT行业还是蛮适合IT办公的。只要代码写好了,提交到GIT/SVN上,小伙伴拉取下来就可以了。因为我们平时在公司也是这样做的,现在和在公司...
原创
2556阅读
0评论
0点赞
发布博客于 1 年前

查询Linux中的端口占用,进程查杀的方法

用PS查看进程-> ps -ef
原创
117阅读
0评论
0点赞
发布博客于 1 年前

记录2020这个不平凡的农历新年

      2020年,开始觉得这是美好的一年。2020,谐音“爱你爱你”。可是随着时间的流逝,发现2020并没有想象中美好。坏消息接踵而至…      1月20日左右随着新型冠状病毒的肆虐,全国大多数城市都实施了一级响应。我度过了平生以来最无聊的春节,没有亲戚聚会,没有同学聚...
原创
723阅读
1评论
1点赞
发布博客于 1 年前

关于MySQL收藏的文章整理

自己在平时的开发中或多或少接触到MySQL相关的问题,自己也在浏览器收藏夹中收藏了一些,近期进行相关的整理工作。MySQL索引MySQL索引的使用方式Mysql检查列是否存在并新增、修改、删除列Mysql检查列是否存在并新增、修改、删除列SQL语句性能优化SQL语句性能优化介绍MySQL性能优化的最佳20+经验MySQL性能优化的最佳20+经验数据库事物的四大特性以及事物隔离级别...
原创
113阅读
0评论
0点赞
发布博客于 1 年前

Java 博客文章整理(一)

Java RMI 框架(远程方法调用)Java RMI 框架(远程方法调用)Spring Bean的生命周期Spring Bean的生命周期DockerDocker 中文单例模式的七种写法单例模式的七种写法ConcurrentHashMap和HashMap和HashTableConcurrentHashMap和HashMap和HashTableJava抽象类 详解Java抽象...
原创
121阅读
0评论
0点赞
发布博客于 1 年前

Invalid default value for `xxxx`错误引起的原因之CURRENT_TIMESTAMP

引起错误的SQL语句CREATE TABLE `nb_sxgl` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID,自增', `is_deleted` int(1) unsigned NOT NULL DEFAULT 0 COMMENT '是否删除:0 未删除,1 删除', `gmt_create` datetime N...
原创
1240阅读
0评论
1点赞
发布博客于 1 年前

2019年总结2020年展望

作为码农的我来做自己的年终总结了。2019年,对于我来说是比较特殊的一年,要说什么大事呢?还真的是没有的。1.工作2019年年中的时候,加入过一个初创型的公司,公司的创始人,是我工作以来认识的一个最牛逼的人了,各方面都很优秀,学识和对技术的理解,也很到位。可是公司由于各种原因,还是解散了。虽然相处的时间很短,但是还是学到了不少的东西的。2.学习现在每天早起的习惯还是保留下来的,每天在公司...
原创
321阅读
1评论
0点赞
发布博客于 2 年前

Interpreter 模式

Interpreter(翻译员) 模式设计模式的目的之一就是提高类的可复用性。可复用性是指不用做太大修改(甚至是不做任何修改)就可以在多种应用场景使用之前编写的类。在Interpreter模式中,程序要解决的问题会被非常简单的“迷你语言”表述出来,即用“迷你语言”编写的“迷你程序”把具体的问题表述出来。迷你程序是无法单独工作的,我们还需要用Java语言编写一个负责“翻译”(interprete...
原创
49阅读
0评论
0点赞
发布博客于 2 年前

Command 模式

Command 模式一个类在进行工作时会调用自己或是其他类的方法,虽然调用结果会反映在对象的状态中,但并不会留下工作的历史记录。这时,如果我们有一个类,用来表示“请进行这项工作”的“命令”就会方便很多。每一项想做的工作就不再是“方法的调用”这种动态处理了,而是一个表示命令的类的实例,即可以用“物”来表示。要想管理工作的历史记录,只需管理这些实例的集合即可,而且还可以随时再次执行过去的命令,或是...
原创
136阅读
0评论
0点赞
发布博客于 2 年前

Mac版Chrome浏览器全屏截图的方式

打开所要截图的网站link打开开发者模式打开开发者模式的快捷方式:option+command+i按下键盘上 “Command+Shift+P”在框中输入“Capture full size screenshot”就可以自动导出全屏的图片了。...
原创
1721阅读
0评论
1点赞
发布博客于 2 年前

Proxy 模式

Proxy 模式Proxy是“代理人”的意思,它指的是代替别人进行工作的人。当不一定需要本人亲自进行工作时,就可以寻找代理人去完成工作。但代理人毕竟只是代理人,能代替本人做的事情终究是有限的。因此,当代理人遇到无法自己解决的事情时就会去找本人解决该问题。在面向对象编程中,“本人”和“代理人”都是对象。如果“本人”对象太忙了,有些工作无法自己亲自完成,就将其交给“代理人”对象负责。示例程序类...
原创
32阅读
0评论
0点赞
发布博客于 2 年前

MySQL 小知识点

关闭外键检查:SET FOREIGN_KEY_CHECKS = 0;可以执行一些操作,这些操作,不受外键约束,执行完成后,可以用下面的语句再打开外键约束。打开外键检查:SET FOREIGN_KEY_CHECKS = 1;...
原创
41阅读
0评论
0点赞
发布博客于 2 年前

Flyweight 模式

Flyweight 模式Flyweight是“轻量级”的意思,指的是拳击比赛中选手体重最轻的等级。顾名思义,该设计模式的作用是为了让对象变“轻”。关于Flyweight模式,一言以蔽之就是“通过尽量共享实例来避免new出实例”。当需要某个实例时,并不总是通过new关键字来生成实例,而是尽量共用已经存在的实例。这就是Flyweight模式的核心内容。...
原创
204阅读
0评论
0点赞
发布博客于 2 年前

State 模式

State模式在State 模式中,我们用类来表示状态。State的意思是“状态”。在现实世界中,我们会考虑各种东西的“状态”,但是几乎不会将状态当作“东西”看待。因此,可能很难理解“用类来表示状态”的意思。以类来表示状态后,我们就能通过切换类来方便地改变对象的状态。当需要增加新的状态时,如何修改代码这个问题也会很明确。示例程序金库报警系统功能简介金库报警系统结构图类和接口的一览表...
原创
49阅读
0评论
0点赞
发布博客于 2 年前

Memento 模式

Memento 模式使用Memento模式可以实现应用程序的以下功能。Undo(撤销)Redo(重做)History(历史记录)Snapshot(快照)Memento模式事先将某个时间点的实例的状态保存下来,之后在必要时,再将实例恢复至当时的状态。示例程序类的一览表名字说明Memento表示Gamer状态的类Gamer表示游戏主人公的类。它会生成...
原创
112阅读
0评论
0点赞
发布博客于 2 年前

Observer 模式

Observer 模式Observer模式的意思是“进行观察的人”,也就是“观察者”的意思。在Observer模式中,当观察对象的状态发生变化时,会通知给观察者。Observer模式适用于根据对象状态进行相应处理的场景。示例程序类和接口的一览表名字说明Observer表示观察者的接口NumberGenerator表示生成数值的对象的抽象类RandomN...
原创
107阅读
0评论
0点赞
发布博客于 2 年前

MyBatis错误:Caused by:java.lang.NumberFormatException:For input string:“xxxxxx”

最近接手解决前同事遗留下来的项目BUG,出现如下图所示的错误:从上图我们可以很明显的看到是数值转换异常,也就是String类型的数据无法转换为Number类型的。可是代码中并没有进行相对应的转换操作呀!错误发生在MyBatis的配置文件中的,找到对应的赋值字段,如下图所示:也就是说,sampleCode字段的值在和0进行比较之前先进行的类型转换操作,所以导致问题的发生。找到问题了,可是...
原创
428阅读
0评论
0点赞
发布博客于 2 年前

Mediator模式

Mediator模式Mediator的意思是“仲裁者”,“中介者”。一方面,当发生麻烦事情的时候,通知仲裁者;当发生涉及全体组员的事情时,也通知仲裁者。当仲裁者下达指示时,组员会立即执行。团队组员之间不再互相沟通并私自作出决定,而是发生任何事情都向仲裁者报告。另一方面,仲裁者站在整个团队的角度上对组员上报的事情做决定。这就是Mediator模式。在Mediator模式中,“仲裁者”被称为Med...
原创
152阅读
0评论
0点赞
发布博客于 2 年前

Facade 模式

Facade 模式使用Facade模式可以为互相关联在一起的错综复杂的类整理出高层接口(API)。其中的Facade角色可以让系统对外只有一个简单的接口(API)。而且,Facade角色还会考虑系统内部各个类之间的责任关系和依赖关系,按照正确的顺序调用各个类。示例程序示例程序类图Databasemport java.io.FileInputStream;import java.io....
原创
133阅读
0评论
0点赞
发布博客于 2 年前

Chain of Responsibility模式

Chain of Responsibility模式将多个对象组成一条责任链,然后按照它们在职责链上的顺序一个一个地找出到底应该谁来负责处理。这种模式被称为Chain of Responsibility模式。我们一般称为“职责链”。示例程序示例程序类图Troublepublic class Trouble { // 问题编号 private int number; ...
原创
57阅读
0评论
0点赞
发布博客于 2 年前

读书觉得好的语句摘录,觉得心情不好时看看

人生有时就要任性一点,特别是那些必须自己拿捏做主的事,比如大学读什么专业、选择什么职业方向、和谁恋爱结婚,想得到什么,需要维护什么,以何种方式过一生。给出建议、替你选择的人,不一定比你更懂人生,每个人都有自己固有的节奏,同样的路径别人走的通,套用在你自己身上或许就是死局,你的人生必须是专属的。爱想象中的人很容易,可当他们来到你的面前,爱他们就变成了一件困难的事。人应该把快乐建立在可持续的长久...
原创
88阅读
0评论
0点赞
发布博客于 2 年前

Visitor模式

Visitor 模式在Visitor 模式中,数据结构和处理被分离开。我们编写一个表示“访问者”的类来访问数据结构中的元素,并把对各元素的处理交给访问者类。这样,当需要增加新的处理时,我们只需要编写新的访问者,然后让数据结构可以接受访问者的访问即可。示例程序示例程序类图Visitorpublic abstract class Visitor { public abstract...
原创
63阅读
0评论
0点赞
发布博客于 2 年前

IntelliJ IDEA 控制台输出字符乱码的问题

最近遇到IDEA乱码的问题,上网搜索得到的结果。为了以后的方便问题的解决,所以这边记录一下。blog如果出现这样的错误——IntelliJ IDEA 错误: 编码GBK的不可映射字符。我们可以去看一下这篇blog链接。在我的IDEA编译中,也出现了上面的错误,不过,这些都未能帮我解决问题。直接在pom文件中制定了编码方式才解决了问题:<properties> <...
原创
431阅读
0评论
0点赞
发布博客于 2 年前

《图解设计模式》读书笔记

《图解设计模式》这本书总体来说是一本讲解设计模式比较好的书籍。个人认为的主要原因主要是:图例比较生动,会将代码按照功能和角色进行分类,更加便于理解。所以我将每一个章节,将关键部分进行摘录,便于自己日后的“温故而知新”。Iterator 模式Adapter 模式Template Method 模式Factory Method 模式Singleton 模式Prototype 模式Bu...
原创
133阅读
0评论
0点赞
发布博客于 2 年前

Decorator 模式

Decorator 模式不断地为对象添加装饰的设计模式被称为Decorator 模式。示例程序类图示例程序Displaypublic abstract class Display { public abstract int getColumns(); // 获取横向字符数 public abstract int getRows(); ...
原创
56阅读
0评论
0点赞
发布博客于 2 年前

Composite 模式

Composite 模式能够使容器与内容具有一致性,创造出递归结构的模式就是Composite模式。示例程序类图示例程序Entrypublic abstract class Entry { public abstract String getName(); // 获取名字 public abstract int...
原创
176阅读
0评论
0点赞
发布博客于 2 年前

Strategy 模式

Strategy 模式无论什么程序,其目的都是解决问题。而为了解决问题,我们又需要编写特定的算法。使用Strategy模式可以整体地替换算法的实现部分。能够整体地替换算法,能让我们轻松地以不同的方法去解决同一个问题,这种模式就是Strategy模式。示例程序类图示例程序Handpublic class Hand { public static final int HANDVAL...
原创
65阅读
0评论
0点赞
发布博客于 2 年前

Bridge 模式

Bridge 模式Bridge模式的作用是在“类的功能层次结构”和“类的实现层次机构”之间搭建桥梁。类的功能层次结构类的实现层次结构类的层次结构的两个作用1.希望增加新的功能时其实就是主要是继承,我们在子类中增加新的方法。这样就构成了一个小小的类层次结构。也就是为了增加新功能而产生的层次结构。父类具有基本功能在子类中增加新的功能像这种层次结构就称为“类的功能层次结构”。...
原创
113阅读
0评论
0点赞
发布博客于 2 年前

Abstract Factory模式

Abstract Factory模式抽象工厂的工作是将“抽象零件”组装为“抽象产品”。“抽象”指的是“不考虑具体怎样实现,而是仅关注接口(API)“的状态。在Abstract Factory模式中将会出现抽象工厂,它会将抽象零件组装为抽象产品。也就是说,我们并不关心零件的具体实现,而是只关心接口(API)。我们仅使用该接口(API)将零件组装成为产品。在Abstract Factory模式...
原创
56阅读
0评论
0点赞
发布博客于 2 年前

Builder 模式

Builder 模式简介Builder 模式主要用来组装复杂的实例。示例程序示例程序类图Builder类public abstract class Builder { public abstract void makeTitle(String title); public abstract void makeString(String str); public ...
原创
103阅读
0评论
0点赞
发布博客于 2 年前

Prototype 模式

原型模式的运用Prototype模式——通过复制生成实例。在Java中,我们可以使用new关键字指定类名来生成类的实例。像这样使用new来生成实例时,是必须指定类名的。但是,在开发过程中,有时候也会有“在不指定类名的前提下生成实例”的需求。例如,在以下的情况下,我们就不能根据类来生成实例,而需要根据现有的实例来生成新的实例。1.对象种类繁多,无法将它们整合到一个类时第一种情况是需要处理的对...
原创
125阅读
0评论
0点赞
发布博客于 2 年前

Singleton 模式

Singleton 模式中登场的角色在Singleton模式中,只有Singleton这一个角色。实例程序线程安全的单例模式public class Singleton { private static Singleton singleton = null; private Singleton(){ System.out.println("生成了一个实例")...
原创
197阅读
0评论
0点赞
发布博客于 2 年前

Factory Method 模式

Factory Method 模式将实例的生成交给子类。在Factory Method模式中,父类决定实例的生成方式,但并不决定所要生成的具体的类,具体的处理全部交给子类负责。示例程序示例程序类图framework生成实例的框架;idcard加工处理。Product类public abstract class Product { public abstract voi...
原创
62阅读
0评论
0点赞
发布博客于 2 年前

Template Method模式

Template Method 模式Template Method 模式是带有模板功能的模式,组成模板的方法被定义在父类中。由于这些方法是抽象方法,所以只查看父类的代码是无法知道这些方法最终会进行何种具体处理的,唯一能知道的就是父类是如何调用这些方法的。实现上述这些抽象方法的是子类。在子类中实现了抽象方法也就决定了具体的处理。也就是说,只要在不同的子类中实现不同的具体处理,当父类的模版方法被调...
原创
38阅读
0评论
0点赞
发布博客于 2 年前

Adapter模式

Adapter模式分为以下两种类适配器模式(使用继承的适配器)对象适配器模式(使用委托的适配器)继承的适配器示例程序类图Banner类public class Banner { private String string; public Banner(String string) { this.string = string; } ...
原创
44阅读
0评论
0点赞
发布博客于 2 年前

Iterator模式

示例程序的类图Aggregate接口public interface Aggregate { Iterator iterator();}Iterator接口public interface Iterator { boolean hasNext(); Object next();}Book类public class Book { private ...
原创
38阅读
0评论
0点赞
发布博客于 2 年前

Mac版IDEA快捷键

Compile and Run(编译和运行)按键说明Command + F9编译ProjectCommand + Shift + F9编译选择的文件、包或模块Control + Option + R弹出 Run 的可选择菜单Control + Option + D弹出 Debug 的可选择菜单Control + R运行Control +...
原创
791阅读
0评论
0点赞
发布博客于 2 年前

让自己远离工作低潮的途径

最近看书有看到远离工作低潮的途径的方法,自己做一下记录!1.重新树立信心不顺心是我们工作中遇到的最强劲的对手,所以你要做的第一件事就是重新寻回自信。大声说:“我可以,我要做最好的、最强的、才智无人能比的人,我是最棒的…”就是要这样自我催眠,每天发自内心地大喊出来,给自己加油。2.坚持自我不放弃脚下的路是自己选的,只要认准了,就绝不轻言放弃。牢记不要怀疑自己的选择,坚定信念、忠于自我。3....
原创
99阅读
0评论
0点赞
发布博客于 2 年前

常用UML图学习

类图abstract class ParentClass { int field1; static char field2; abstract void methodA(); double methodB() { return 0.0; }}class ChildClass extends ParentClass{ @Ov...
原创
50阅读
0评论
0点赞
发布博客于 2 年前

IDEA的Windows版本快捷键

常用的有fori/sout/psvm+Tab即可生成循环、System.out、main方法等boilerplate样板代码 。例如,要输入for(User user : users)只需输入user.for+Tab ;再比如,要输入Date birthday = user.getBirthday()只需输入user.getBirthday().var+Tab即可。代码标签输入完成后,按Ta...
原创
1374阅读
0评论
2点赞
发布博客于 2 年前

Spring MVC原理

典型Web应用程序中的MVC模式(1)请求:将请求提交给服务器。在服务端,大多数框架都有一个调度程序(以servlet的形式)用来处理请求。(2)调用:调度程序根据HTTP请求信息和Web应用程序配置将请求分派给适当的控制器。(3)服务调用:控制器与服务层交互。(4)填充模型:控制器使用从服务层获得的信息填充模型。(5)创建视图:根据模型创建视图。(6)响应:控制器将相应的视图返回给...
原创
50阅读
0评论
0点赞
发布博客于 2 年前

第三部分 泛型与容器

chapter8 泛型泛型就是类型参数化,处理的数据类型不是固定的,而是可以作为参数传入。泛型写法:public class Pair<U, V> { U first; V second; public Pair(U first, V second) { this.first = first; this.second = ...
原创
72阅读
0评论
0点赞
发布博客于 2 年前

第二部分 面向对象

第一部分 编程基础与二进制 linkchapter3 类的基础static表示类方法,也叫静态方法,与类方法相对的是实例方法。Java编译器可以对final变量进行一些特别的优化。表示类变量的时候,static修饰符是必须的,但public和final都不是必须的。在实例方法中,有一个隐含的参数,这个参数就是当前操作的实例自己,直接操作实例变量,实际也需要通过参数进行。类方法只能访问...
原创
74阅读
0评论
1点赞
发布博客于 2 年前