自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 分布式事务-Seata-详细图文讲解

一次业务操作需要跨多个数据源或需要跨多个系统进行远程调用,就会产生分布式事务问题Seata是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。

2023-10-24 15:56:38 420

原创 SpringBoot前后端分离项目,打包、部署到服务器详细图文流程

前端和后端的项目打包都可以在本地完成,上传服务器可以最小化上传jar包和dist文件夹,这种方式最节省服务器空间资源。修改Nginx的配置文件(修改conf文件夹下的nginx.conf文件)将location位置的root后面跟的路径修改为前端项目打包后的文件地址。修改Redis地址,修改需要部署的Redis密码(如果需要的话)防止出现权限相关的问题,将文件开头的user修改为root。将修改后的两个文件上传到服务器(上传对应文件并替换即可)修改MySQL地址,修改需要部署的数据名,账号和密码。

2023-07-08 11:14:38 15545 3

原创 对程序员来说最重要的小事——整洁代码

今天的分享内容大部分都来自与《代码整洁之道》这本书,如果想了解更多的整洁代码的方法和技巧,可以深入研究一下这本书,你将会受益匪浅。

2023-02-23 20:36:25 554 1

原创 一文让你了解Docker的前世今生

说了这么久的Docker的历史,我们主要来真正的认识一下,Docker到底是什么?我们先来看一下百度百科给出的解释:“Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。我们学习使用Docker也需要知道Docker的官方文档地址文档地址:https://docs.docker.com/ 内容非常详细。

2023-02-23 20:33:37 574

原创 通俗易懂理解——布隆过滤器

很长的二进制向量(数组):判断一个数据在这个数组中是否存在,如果不存在为0,存在为1:将“你好”存入到布隆过滤器中——插入过程:我们可以根据下标到布隆过滤器中查询数据是否存在,只有当三个下标查询的结果都为1的时候才能确认数据存在。只要有一个下标的二进制数据不是1就证明不存在。现状:下标为2的位置存储了两个数据:你好 & hello,在这种情况下,我们就不知道下标为2的这个地方是你好还是hello。这是由于这些数据由于一系列的hash运算计算出来的,哈希值相同导致根据哈希值计算出来的。

2023-02-16 17:01:10 675

原创 依赖和关联的对比和区别

关联理解分析关联的关系用实线加箭头的形式表示,箭头指向的类时被关联的类关联体现的关系比依赖更强关联(Association)关系是类与类之间的联接,它使一个类知道另一个类的属性和方法。关联可以是双向的,也可以是单向的。在Java语言中,关联关系一般使用成员变量来实现。UML图依赖和关联的区别● 从耦合性的角度对比发生依赖关系的两个类都不会增加属性。其中的一个类作为另一个类的方法的参数或是某个方法的变量发生关联关系的两个类,其中一个类作为另一个类的属性,属性是一种更为紧密的耦合关系,是

2022-07-21 15:56:58 1840

原创 Redis6.0新特性——ACL(权限控制列表)实现限制用户可执行命令和KEY

ACL是Access Control List(访问控制列表)的缩写,该功能允许根据可以执行的命令和可以访问的键来限制某些连接展示用户权限列表查看当前用户创建和编辑用户ACL

2022-06-21 14:09:39 1648

原创 设计模式——从简单的程序变化到设计理念

近期参加米老师的设计模式课程,老师对一个非常简单的程序进行了不断的版本更新迭代,让我们去看到这些细小的版本变化背后的设计理念,收获颇丰。以下内容使用Visual Basic语言实现:版本一:版本二:这些显而易见的变化,都是流于表面的,其实从版本一到版本二的变化是有质的变化的,其内在的变化是从设计理念的一个变化,而这些都是我们往往在日常的开发过程中经常忽视的。两个版本的代码都很简单,我们每个人都写过这种代码,但是是不是我们再写这两种不同版本的代码的时候能想到两者的区别,看代码的角度要多样化,要有想象力

2022-06-17 10:35:27 628 2

原创 从计算器小例子的总结思考

老师前段时间给我安排了一个小任务,使用面向对象的编程思想实现一个能支持加减乘除的计算器,并且要符合开闭原则,可以随意添加新的运算符(例如添加一个开方运算符)。这个小例子,从老师布置给我到现在已经过去了好几天,由于自己的不理解,一直没有动手开工。偶然今早老师找我过问起这件事,老师帮我梳理了这其中的业务以及一些技术问题,好几天没有头绪的小例子,今天半天的时间就做出来了。不知道你们在遇到问题的时候会怎么处理,我是习惯先自己凭空琢磨,然后再根据琢磨的结果去查资料找答案,往往在这个过程中就已经浪费了大部分的时间,而且

2022-06-11 00:17:27 645

原创 理解面向对象——多态

导语什么是多态?我们先来看看百度百科给出的回答——在编程语言和类型论中,多态(英语:polymorphism)指为不同数据类型的实体提供统一的接口。 多态类型(英语:polymorphic type)可以将自身所支持的操作套用到其它类型的值上。而我理解的多态其实究其根本就只有一句话就是——子类的实现指向父类的引用。下面我们通过实例来学习了解一下面向对象中的多态。简单工厂什么是简单工厂?我们将实例化子类的过程交由一个单独的类来去创造实例,这个单独的类就是我们说的工厂。所有的实例化字类的过程都交由工厂去

2022-05-27 16:25:02 641 1

原创 架构学习——ER图

一、什么是ER图?E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。二、为什么要画ER图?它是描述现实世界关系概念模型的有效方法。是表示概念关系模型的一种方式。三、怎么画ER图?用“矩形框”表示实体型,矩形框内写明实体名称用“椭圆图框”或圆角矩形表示实体的属性,并用“实心线段”将其与相应关系的“实体型”连接起来用”菱形框“表示实体型之间的联系成因,在菱形框内写明联系名,并用”实心线段“分

2022-05-15 20:13:38 3467

原创 面向对象和面向过程的理解

导语前一阵老师找我聊了一件日常生活中的一件小事,但是通过这件小事,老师分别从面向对象和面向过程两个方面给我进行了分析和讲解,由此,我也对面向对象和面向过程进行一个总结。背景1、何老师拿着米老师办公室的钥匙。2、米老师下午下班,通知何老师锁门。3、第二天,米老师上班,需要开门。何老师和米老师,有几种办法,解决这个问题。解决方案面向过程:米老师下班后,何老师锁好门,告诉米老师将钥匙放在前台,第二天,米老师到前台拿到钥匙,开门。面向对象:米老师下班后,何老师锁好门,何老师保存好钥匙,第二天,米老

2022-05-14 03:11:31 568

原创 架构设计——类图

一、什么是类图?类图是描述系统中的类,以及各个类之间的关系的静态视图。能够让我们在正确编写代码以前对系统有一个全面的认识。类图是一种模型类型,确切的说,是一种静态模型类型。二、为什么要画类图?从软件设计的角度出发,整体性的安排和布局我们开发过程中涉及到的所有类和类之间的关系设计模式中的类间关系很复杂,如果将这些类通过类图的形式展示出来,更便于我们理解这些设计模式类图可以很好的描述系统具体实现,以及系统的整体结构三、怎么画类图?首先我们要熟悉并了解UML中各种图例以及类与类之间的六大关系——

2022-05-09 00:00:25 1313

原创 架构学习——原型图

一、什么是原型图?“原型”的最基本定义是“最终产品的仿真或样本版本,用于发布之前方便测试。” 原型的目标是在花费大量时间和金钱进入开发产品前,让开发者以及对应的需求方能够快速的了解产品创意以及产品的样式布局。二、为什么要画原型图?...

2022-05-08 23:49:21 1429

原创 架构学习——业务架构图

一、什么是业务架构图?业务架构图,顾名思义就是对于产品的业务架构进行梳理和整合,它表达的是业务系统之间的关系,帮助开发人员梳理业务结构。二、为什么要画业务架构图?业务架构图帮我们更好的从宏观的角度整体性的审查我们的产品帮助用户和需求方从业务角度出发更好的了解我们的产品功能有了业务架构图我们可以更好的对目前已有的功能和以后计划开发的功能进行抽象、设计、开发三、如何画业务架构图?站在巨人的肩膀上我们要学会站在巨人的肩膀上学习,先看看一些比较牛的公司他们是怎么画的业务架构图,借鉴他人的画法和思

2022-05-08 21:29:12 10771 1

原创 理解面向对象,看这一篇就够了

导语对于面向对象的理解,大多数的人都还停留在理解概念,但是在真正实现的过程中还是保持着面向过程的思想在开发和编写代码,下面我通过这篇博客重新梳理什么是面向对象。一、面向对象的特征和基础特征封装、继承、多态基础抽象二、为什么说面向对象的基础是抽象?想要真正理解这句话,先看一下下面的这个问题:如何理解下面这句话?这与面向对象的抽象有什么关系?1)我们要注重多少人来干事,而不是干多少事。2)我们要注重谁来干事,而不是怎么干事。分析:我们先从这两句话的字面意思来分析,我们在分析的过程中.

2022-05-05 19:59:24 760

原创 产品设计——按钮(四宝)

一、自适应按钮前端在设计按钮的时候,我们很多的时候都是设置的静态的按钮,不管你是不是需要使用它,它都在那里。这样的按钮时最普通的按钮,但是就是这种普通的按钮也可以做一些产品设计的优化,例如,我们对表格数据添加筛选条件的时候,我们可以设置一个清除筛选的按钮,但是这个按钮不是常驻的,是只有在我们设置了筛选条件之后才会自动的显示出来,如果没有设置则可以不让其显示。二、按钮二合一我们在做页面数据展示的时候,很多时候会设计到排序按钮,这种排序按钮我们一般会这么设计,例如:对于评论进行排序,一个是按照时间排序的按

2022-05-03 15:41:46 1288 1

原创 产品设计——无处不入口,无处不按钮

引言“无处不入口,无处不按钮”不知道你是不是看懂了这句话,我们从字面意思来分析,所谓“无处不入口,无处不按钮”可以理解为,任何一个地方都可以作为按钮,任何一个地方都能作为进入下一个区域的入口。产品设计——悬浮最能体现这个理念的一个产品设计就是悬浮了,如下图:从这张原型图我们可以看出,整个页面只有三条文本框、一个时间组件和一个小号的柱状图表按钮。但是这些只是停留在表面的样式和入口,实际上我们可以通过鼠标悬浮的操作,扩展出很多的功能例如下图:这就是很好的体现了“无处不入口,无处不按钮”的理念。通过

2022-04-30 00:07:08 860 1

原创 产品设计——你的老师每天都坐在你面前

引言作为一名程序员,我们长时间面对的是什么,毋庸置疑,一定是电脑。这就是为什么我会有如此的一个标题——你的老师每天都坐在你面前。我们每天都要使用的工具,他其实也是你的老师。让我们看看跟着这位“老师”能学到什么。产品设计资源管理器我们都使用过Windows的资源管理器,其实资源管理器从产品设计的角度,有很多需要我们学习的地方。比如下图中的文件列表页面:看似是一个很普通的列表设计,但是其中包括的设计原理有很多。比如我们可以通过点击其中某一列的小箭头进行更详细的筛选操作。我在途中打开的是关于修改日期的

2022-04-27 15:21:33 659 1

原创 如何刻意练习,普通人也能快速成为精英

什么是刻意练习刻意练习是一种有目的的练习,有别于我们盲目的进行努力。它定义了明确的目标,将注意力保持到我们需要执行的任务上,最后每次的练习都需要有反馈,通过反馈让我们了解自己有哪些不足,还有就是要走出舒适区。如何做到刻意练习1. 避免自动完成什么叫做自动完成?自动完成就是无意识的进行一些操作,例如我们在开车的时候遇到了紧急情况就会无意识的去踩刹车,我们在练习足球技巧的时候,对于别人的一些动作进行防守的准备,在一开始练习的时候我们会有意识的去分析他的动作,然后进行防守动作,但是随着练习时间的增长,我们

2022-04-19 15:43:12 645

原创 什么是熵增?如何对抗熵增?

前言“熵增过程是一个自发的由有序向无序发展的过程。”这是百度百科对熵增的解释,但是今天我要说的熵增不是物理学中的熵增,而是关乎我们的工作学习的一种走出舒适区的思维模式。什么是熵增?用通俗的话来说,就是一切事物都是会自动朝着混乱的方向去发展的。可以举几个生活中的小例子,我们在生活中刚刚打扫好的房间,只要每天不刻意的去维护环境,用不了一周,整个房间就会又变得脏乱不堪,这其实就是熵增的原理。当然了,人也一样,人们总是想着去做一些自己认为轻松的事情、舒适的事情,人们在没有外力干预的情况下也总会向着一个“混乱

2022-04-19 14:58:27 48140 2

原创 如何做一名有全局观的程序员/软件开发人员

前言作为一名程序员,也作为一位软件开发人员,我们需要对自己的未来以及自己以后的未来有着合理的计划安排以及必须的全局观意识。我从我的老师那里听过一句话对我受益匪浅——“不谋万世者,不足谋一时;不谋全局者,不足谋一域”。这句话什么意思呢,说的就是如果不从全局的角度考虑问题,即使治理好一方地区,也是微不足道的。不能制定长久的国家政策,一时的聪明也是微不足道的。想做好一件事情,就得方方面面都考虑到;想做好具体一个方面,就得从全局出发。那接下我就从处理当前工作计划、学习、未来工作发展等方面进行阐述我对全局观的理解。

2022-02-12 17:54:56 1114 5

原创 在项目中使用WebSocket进行前后端通信

不废话直接上代码后端一、引入WebSocket依赖 <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-websocket --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId

2022-01-06 14:38:29 1908 1

原创 思想提升-影响人一生的几种思想方式

一、高效能人士的七个习惯(7)1、积极主动:积极主动即采取主动,为自己过去、现在和未来的行为负责,并依据原则和价值观,而不是根据情绪和外在环境来下决定。2、以终为始:所有事物都经过两次创造,先是在脑海里酝酿,其次才是实质的创造。3、要事第一:要事即实质的创造,是梦想的组织和时间。4、双赢思维:双赢思维是一种基于互敬、寻求互惠的思考框架与心意,目的是争取更丰盛的机会、财富及资源,而不是你死我活的敌对竞争。5、知彼解己:当我们舍弃焦躁心,改以同情心去聆听别人,便能开启真正的沟通,增进彼此的了解。6、

2021-12-31 19:56:26 1092

原创 软考-软件设计师总结

一、再战软考今年的十月份我参与了人生中的第二次软考,和上次一样考的还是中级-软件设计师,不过这一次的考试过程非常曲折。二、备考过程这次的备考过程和上次相比有很多不同的地方,最显著的区别就是准备时间相比上次少了很多。今年下班年加入了项目组之后,每天的自由学习时间就少了不少。但是得益于上次软考全面的准备,在这一次的备考过程中,总结了上次考试未通过的不足之处,进行了及时的弥补。通过浏览视频来串接全书的重要知识点,通过笔记来查漏补缺,最后的刷题要找准规律,很多题都是存在规律和技巧的,只要了解了这些解题技巧,软

2021-12-22 10:01:29 773

原创 【idea 2021.2】如何将idea中的代码推到git仓库中(最新详细版)

一看就会的在idea中将代码推送到git远程仓库

2021-12-13 20:34:38 8582 2

原创 软考-网络安全

网络安全五大要素:● 保密性:确保信息不暴露给未授权的实体,最小授权原则、防暴露、信息加密、屋里加密● 完整性:保证数据传输过程中是正确无误的,接受和发送的数据相同,安全协议、校验码、密码校验、数字签名、公证● 可用性:保证合法的用户能以合法的手段来访问数据,综合保障、(IP过滤、业务流控制、路由选择、审计跟踪)● 可控性:控制授权范围内的信息流向及行为方式,整个网络属于可控状态下● 不可抵赖性:信息数据参与者不能否认自己发送的数据,参与者身份真实有效安全威胁分类:● 重放攻击(ARP)●

2021-11-30 23:38:36 5268

原创 算法学习-时间复杂度

认识时间复杂度:**常数操作:**跟数据量无关,是一个固定时间的操作**时间复杂度:**为一个算法流程中,常数操作数量的一个指标。常用0(读作big0)来表示。具体来说,先要对一个算法流程非常熟悉,然后去写出这个算法流程中,发生了多少常数操作,进而总结出常数操作数量的表达式。在表达式中,只要高阶项,不要低阶项,也不要高阶项的系数,剩下的部分如果为f(N),那么时间复杂度为0(f(N)。**评价一个算法流程的好坏:**先看时间复杂度的指标,然后再分析不同数据样本下的实际运行时间,也就是“常数项时间”

2021-11-30 23:29:17 5354

原创 自考-计算机网络原理-第一章总结

第一节 计算机网络的基本概念计算机网络的起源:计算机网络是计算机技术和通信技术相融合的产物计算机网络的定义:互连、自治的计算机集合互联网与因特网:互联网泛指由多个计算机网络互连而成的网络因特网是指全球最大的,应用最广泛的计算机网络ISP因特网服务提供商:国内(联通、电信、移动)网络协议定义网络通信实体间数据交换过程中需要遵循的规则或约定协议的三要素● 语法:定义实体之间交换信息的格式与结构● 语义:定义实体之间交换信息中的控制信息● 时序:定义实体之间交换信息的顺序以及如何匹

2021-11-30 23:27:57 6259 1

原创 Sprint 1-10周期总结

概述自从加入项目组以来已经经过了10个周期的时间,时间如白驹过隙一晃而过,回头想想好像昨天才刚刚开始项目组的生活。这10个周期的学习和做项目过程,也让我提高了很多,不仅仅是从计算机方面,还有时间管理,项目管理,人员管理方面都有很大的提升。1.计算机学习刚加入项目的时候,我的进度是刚刚到j2se视频的学习,在项目开发的过程中,将我之前的培养计划学习内容都或多或少的进行了实践,从简单的编程基础到深入的设计模式,在项目组中的实践让我更好的回顾和掌握了之前的学习内容。自从加入项目之后,我的代码逻辑能力就有了

2021-11-18 19:27:08 2771 2

原创 【Java】Java中让线程休眠一段时间再进行如何操作?

介绍我们都在项目过程中调用过别人的接口,但是如果频繁的调用接口会被识别出来,跳转到验证码页面进行验证码输入,这样就不能自动化运行程序了,为了解决这一问题,使用线程休眠,让程序的操作频率模仿人类操作频率,这样就不会因为太频繁而被识别出来。下面是代码。实现代码很简单Thread.sleep(10000);//线程休眠10秒...

2021-10-31 10:29:36 4037 1

原创 【Java】可以存储相同key值的Map类型

IdentityHashMap传统的Map类型例如HashMap,在存储相同key值的数据的时候,之后存储的数据会把之前存在数据覆盖,保证Map中只有一个key值存在。例如:HashMap<String,String> map = new HashMap<>();map.put("1","A");map.put("1","B");System.out.println(map);最后输出的结果是"1":"B"但是IdentityHashMap的特性可以保存属于自己的ke

2021-10-31 10:23:37 9575 1

原创 架构组-文档总结

架构组-文档总结包图规范类图规范NS图规范架构图规范宏观出发局部细节包图规范1. 格式包2. 关系泛化依赖3. 元素类接口构件节点协作用例其他包或图4. 可见性“+” :public“-” :private“#” :protected5. 绘制原则每个包都必须有一个唯一的包名包图中拥有的元素不得超出规范中的六种元素最小化包间的依赖,最小化每个包中的 public , protected 元素个数,最大化每个包中 private 元素个数包间关系不

2021-10-29 14:42:17 2578

原创 1024程序员节快乐

1024程序员节快乐

2021-10-24 21:29:57 2574 1

原创 认识并了解Swagger

Swagger简介前后端分离Vue + SpringBoot后端时代:前端只用管理静态页面;html ==> 后端 。 模板引擎 JSP ==> 后端是主力前后端分离时代:后端:后端控制层,服务层,数据访问层 【后端团队】前端:前端控制层,视图层 【前端团队】伪造后端数据,json。已经不存在了,不需要后盾,前端工程依旧能跑起来前后端如何交互? ===> API前后端相对独立,松耦合;前后端设置可以部署在不同的服务器上;产生一个问题:前后端集成联调,前端

2021-09-28 10:41:42 2472 8

原创 认识并了解Vue

Vue1.概念vue是一套用于构建用户界面的渐进式框架,发布于2014年2月。与其他大型框架不同的是,vue被设计为可以自底向上逐层应用。Vue的核心库只关注视图层。Soc:关注度分离原则HTML+CSS+JS:视图:给用户看,刷新后台给的数据支持MVVM,网络通信:axios页面跳转:vue-router2.前端知识体系2.1前端三要素HTML(结构):超文本标记语言(Hyper Text Markup Language),决定网页的结构和内容CSS(表现):层叠样式表(Casca

2021-09-28 10:33:19 2929 5

原创 IDEA2021向gitlab提交代码并合并分支全详细流程(图解)

详细流程图解首先找到idea菜单栏中git的位置,点击后如下图所示我们常用的功能如下:Commit(提交):将更新的代码提交到本地分支Push(推送):将本地分支暂存的代码推送到远程分支(gitlab)Pull(拉取):从远程分支拉取代码到你的分支Commit(提交)点击Commit之后出现下图:注意:一定要只勾选更改的src包下的内容,其余一律不勾选,否则将出现大量冲突Push(推送)确认信息无误后,点击push将本地分支内容推送到远程分支合并分支首先确定是否已经成功推送到

2021-09-17 15:23:02 7534 8

原创 idea2021断点调试,服务启动特别慢如何解决

问题提示我们在使用idea断点调试的时候可能会出现下图的提示“method breakpoints may dramatically slow down debugging”翻译:方法断点可能会大大减慢调试速度并且服务启动的速度非常慢,平时几秒启动的服务需要好几分钟甚至数十分钟问题解决解决方式也很简单,按照如下操作即可...

2021-09-11 14:48:40 5039 5

原创 通过git改变代码分支

通过git改变代码分支我们一般拉取代码之后的默认分支都是master,如果我们想更换成自己的分支可以按照以下步骤操作找到代码拉取的文件夹,右键鼠标选择git batch here先使用git pull从远程获取代码并合并本地的版本git branch -a显示所有分支git checkout -b 自己的分支 origin/自己的分支切换分支到自己的分支如下图所显示就是成功了可以通过查看idea右下角确认分支是否正确...

2021-08-09 09:26:32 3025 9

原创 【Java】函数式接口

1.1函数式接口概述函数式接口:有且仅有一个抽象方法的接口Java中的函数式编程体现就是Lambda表达式,所以函数式接口就是可以适用于Lambda使用的接口只有确保接口中有且仅有一个抽象方法,Java中的Lambda才能顺利地进行推导如何检测一个接口是不是函数式接口呢? @FunctionalInterface 放在接口定义的上方:如果接口是函数式接口,编译通过;如果不是,编译失败 注意 我们自己定义函数式接口的时候,@FunctionalInterface是可选

2021-07-31 08:11:37 2554 6

空空如也

空空如也

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

TA关注的人

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