自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

魏云舒的博客

Java后端

  • 博客(114)
  • 收藏
  • 关注

原创 python socket实现工作站监控系统

1、需求分析使用python实现工作站监控系统,总共分成数据采集端(客户端)和服务器端,其中数据采集端每隔一段时间采集一份数据上传到服务器中,并且得到服务器的反馈;服务器端则获取客户端采集到的数据信息,对其进行处理,然后发送反馈信息。其中客户端有多个,需要服务器能够并发处理多个请求的能力。2、整体架构服务器使用的是阿里云服务器,用的是公网IP,全网都可以访问数据采集器,这里用ubuntu16.04、win7、win10这三种机器做模拟,上传数据到服务器当中 3、服务器的实现4、客户端的实

2020-06-13 21:55:00 761

原创 centos中配置maven环境

maven安装

2023-02-24 10:02:30 476 1

原创 阻塞队列实现异步消费

阻塞队列实现异步消费。

2022-08-08 15:44:35 313

原创 分布式锁的应用实践 | 微服务申请逐渐递增且不重复的号码

微服务申请逐渐递增且不重复的号码

2022-08-03 22:39:20 251

原创 Spring Boot 自定义注解,AOP 切面统一打印出入参请求日志

在访问接口时,需要查看入参和出参信息,并且将这些访问信息存储到数据库中,实现接口问题排查

2022-06-04 22:23:29 487

原创 在springboot中添加swagger文档

swagger就解决了在代码开发过程中对接口说明,接口参数说明,并且能够提供页面进行接口测试。

2022-06-04 10:07:54 528

原创 springboot异常处理与捕获

在开发过程中,对于错误的参数等各种情况,需要抛出异常,然后由上层进行捕获,最终返回从RuntimeException中继承2. 定义异常信息枚举接口3. 异常信息接口实现4. 在service层,出现业务异常,则抛出异常5. 在controller层捕获异常(不用)6. 编写全局异常处理类7. controller层优化问题1:在微服务调用过程中,serviceA调用serviceB,为了保证服务内部的安全性,serviceB不能够将所有的异常全部传递给前端,但有些又需要向前端

2022-06-04 09:33:37 458

原创 本地搭建springcloud集群环境

使用前后端分离,在本地搭建微服务环境使用docker布置apollo和各个数据库,使用bash脚本布置各个服务

2022-06-04 00:20:04 129

原创 在本地搭建一个微服务集群环境,学习自动化部署

在本地搭建一个微服务集群,学习自动化部署

2022-06-04 00:09:08 370

原创 Cookie、Session、JWT、token四者间的区别与联系

Cookie、Session、JWT、Token四者的理解与疑问

2022-06-01 22:52:20 544

原创 设计接口的一些总结

后端开发工程师,主要工作就是:如何把一个接口设计好接口参数校验修改老接口时,注意接口的兼容性日志打印好,接口的关键代码,要有日志保驾护航日志打印的15个建议设计接口时,充分考虑接口的可扩展性考虑接口是否需要防重处理接口考虑幂等性幂等性:计算机科学中,幂等表示一次和多次请求某一个资源应该具有同样的副作用,或者说,多次请求所产生的影响与一次请求执行的影响效果相同。聊聊幂等设计好的接口实现,离不开SQL优化调用第三方接口要考虑异常和超时处理可

2022-05-11 12:40:53 339

原创 关于key的设置思考

字典序:英文单词在字典中的先后顺序通过字典序能够使得相似的内容放在一起,更好的查看。key中描述范围最广的放在前面,变化最多的放在后面,如限制手机号单日发送限额,其key可如下设置:public static final String SEND_LIMIT_KEY_PREFIX = "company:sms:send_limit:";DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");String date =

2022-05-10 20:18:44 144

原创 java8中stream的几种妙用

文章目录获取List集合中的某一种属性由list生成map信息List排序List去重获取List集合中的某一种属性// 获取设备列表中所有的小区List<Long> communityIds = equipmentList.stream() .map(Equipment::getCommunityId) .collect(Collectors.toList());由list生成map信息// 从小区返回信息中, 生成对应的<小区Id:小区信息&

2022-05-10 20:10:35 336 1

原创 curl命令行发送POST请求

请求示例curl -X POST http://192.168.57.80/gateway/login # 请求URL-H "Content-type: application/json" # 请求头-d '{"phone":"123****3123","password":"123456"}' # 传输body参数参数说明-i: 打印服务器回应的HTTP标头-X:指定http请求的方法。如果使用了-d,则默认使用POST,此处可省略-X参数-H:添加HTTP请求的标头-d: 指定的参数

2022-04-12 13:06:39 3412 3

原创 String.format()用法

文章目录问题String.format() 字符串常规类型格式化的两种重载方式问题在开发的时候,生成一段字符串,要将一些变量数据组合成一个字符串,如一个文本需要显示:小区-分区-楼宇-房间,则将数据库中读取的字符串进行组合:private static final String ROOM_ADDRESS = "%s-%s-%s-%s";String roomAddress = String.format(ROOM_ADDRESS, inviteInfo.getPartitionName(), in

2022-04-12 12:41:45 397

原创 开发中日志打印

日志打印日志实现和日志门面日志门面:是日志实现的抽象层。日志实现:具体的日志功能的实现。​ 日志实现,可能会有一些代码的优化和改动,避免影响用户在项目中的使用,使用日志门面这些统一的接口,假设在实现层代码做了更改,用户在项目中使用日志而调用的接口等等都是不会受影响的。常见的日志框架日志实现日志门面log4jSLF4J(Simple Logging Facade for Java)log4j2logbackJUL(java.util.logg

2022-03-23 20:11:37 399

原创 分布式链路跟踪

文章目录方案一:自己写代码完成链路跟踪方案二:Spring Cloud Sleuth + ZipKinSleuth原理Sleuth实现Sleuth源码分析(todo)方案三:Skywalking方案一:自己写代码完成链路跟踪在zuul中添加过滤器:package com.cloud.mszuul.filter;import com.cloud.mszuul.Constants;import com.netflix.zuul.ZuulFilter;import com.netflix.zuul

2022-03-23 20:10:16 4129

原创 Java中Boolen 和 boolen区别

看如下两段代码,看其区别private boolen isFunction(boolen isTrue){ if (isTrue == true){ return true; } return false; }private Boolen isFunction(Boolen isTrue){ if (isTrue == true){ return true; } return false; }boolen是个基础数据类型,其可以为true或falseBoolen是bool

2022-03-22 15:42:45 1083

原创 Java8 Stream

Java8新添加的Stream属性,能够向sql语言处理数据一样,对List列表中的数据进行处理,将元素队列进行聚合操作,让代码更加简洁、高效。常见的几种方式:map:对每个元素进行操作filter:条件过滤sorted:排序limit:指定数量Collectors:返回组装List<String> strings = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl");// filter(), 过滤出空的字符串L

2022-03-19 10:36:55 350

原创 Java中== 和equals的区别

java中==和equal的区别文章目录java中==和equal的区别java中有八种基本数据类型:short/int/long/float/doublebytecharboolen这些基本的数据类型在生成时直接存储在内存中的内存栈上,数据本身的值就是存储在栈空间里面。==就是在内存栈上比较这两个值是否相同。这些基础数据类型毕竟缺少灵活性,java给每个基础数据类型都加了引用数据类型Short/Integer/Long/Float/DoubleByteCharacterBo

2022-03-02 20:56:32 7828

原创 wireshark抓包并复原图像

背景介绍:最近测试发现一个bug,不同设备在微信小程序中上传到后端的图片不一样,有些能够识别,有些不能够识别,这里就有两个方向:要么识别算法不行,要么前端传过来的图片不行。算法是调用别家的,该不了,那就只能反馈给前端,不同设备从微信上传过来的图片不同了。这里就需要抓包并分析。操作1:tcpdump抓包:// 1. tcpdump抓包tcpdump -i any host {{host_ip}} and tcp port {{port_ip}} -n -v -s 0 -w /tmp/20220301.

2022-03-02 18:28:25 11884 1

原创 linux常用命令

查看端口占用情况lsof -i:端口号netstat -tunlp | grep 端口号

2021-07-08 14:48:25 67

原创 【Azure Redis 缓存】Linux VM使用6380端口(SSL方式)连接Azure Redis (redis-cli & stunnel)

文章目录问题描述本文面临的情况准备条件操作步骤第一步:安装Redis-cli第二步:安装stunnel4第三步:开启Stunnel服务,在VM启动时自动启动第四步:在stunnel中添加redis-cli的配置项第五步:重启Stunnel服务,加载Redis配置,使用命令为第六步:检查stunnel是否已经监听6380端口,使用命令参考文章:https://www.cnblogs.com/lulight/p/14188279.html问题描述在Azure Redis的官方文档中,介绍了在Windows

2021-07-07 19:33:40 779

原创 Typora中将多张图片并排/分行显示

居中并排<center class="half"> <img src="https://tva1.sinaimg.cn/large/007S8ZIlgy1ggnfolw5kxj30u00u0qe5.jpg" width="300"/> <img src="https://tva1.sinaimg.cn/large/007S8ZIlgy1ggnfolw5kxj30u00u0qe5.jpg" width="300"/></center>左对

2021-07-01 23:55:16 1964

原创 vim常用命令

shift+g 跳转到最后一行gg 跳转到第一行设置行号::set number

2021-07-01 23:47:37 103

原创 IDEA设置tab为4个空格

IDEA设置tab为4个空格,请勿勾选character

2021-07-01 23:42:53 1079

原创 在idea中加载git环境

2021-07-01 23:39:12 122

原创 关于后端开发流程的复盘

从三个方面复盘:git开发流程关于部署情况了解关于代码问题排查1. git开发流程目前共有三个环境:本地环境、公司开发环境和公司测试环境开发之前需要先进行详细分析,需要添加哪些功能,修复哪些特性,这个必须要明确;需要对代码整体情况了解,自己开发的模块在整体中什么位置,会牵连到哪些模块,这些代码的变化会给整体带来什么影响;编写好详细的测试用例,对接口的输入和输出进行设计,对其中的一些特殊情况进行测试用例的编写;开发阶段将主分支更新到最新,然后从主分支新建立一个feat

2021-07-01 23:30:16 314

原创 wireshark中http协议显示为VNC协议修改

文章目录1. 问题2. 分析3. 解决4. plus1. 问题在接口中抓包,然后用wireshark打开查看,需要的http此时都变成了VNC点击VNC层,则能够显示出http包的内容那么protocol如何以http的形式展示2. 分析我们抓取的这些包来自于端口5900,在应用层有较多的协议,wireshark打开时并不知道采用哪个协议去对应,这个时候使用VNC协议刚好能够解析,我们就看到的Protoco对应的VNC。3. 解决编辑 -> 首选项 -> Protocol

2021-06-29 20:21:29 775 1

原创 Rest API接口说明| swagger、HTML、postman

1. 三种描述方式在后端设计好接口之后,需要获得Rest API接口的说明文档和调试接口,主要方式如下:类型说明swagger版本由代码中的swagger注释生成的json文件HTML版本将swagger.json文件插入yapi,生成HTML版本的说明文档,方便阅读postman版本postman可保存输入参数,来调用接口2. swagger.json的生成使用swagger对代码进行注释部署项目后,找到Swagger API在线地址点击h

2021-06-27 21:58:49 390

原创 Rest API描述 | swagger

文章目录1. 背景介绍2. Swagger2注解说明2.1 @Api:用在请求的类上,说明该类的作用2.2 @ApiOperation:用在请求的方法上,说明方法的作用2.3 @ApiImplicitParams:用在请求的方法上,包含一组参数说明2.4 @ApiResponses:用在请求的方法上,表示一组响应2.5 @ApiModel:用于响应类上,表示一个返回响应数据的信息3. Spring Boot中使用swagger3.1 添加swagger依赖3.2 swagger配置文件4. referen

2021-06-27 21:51:43 343 1

原创 数据库版本管理 | flyway

文章目录1. 背景需求1.1 传统部署方式1.3 Flyway部署方式2. Flyway2.1 工作流程2.2 flyway注意事项2.3 flyway中文件命令方式2.4 在SpringBoot项目使用Flyway1. 背景需求在数据库设计好,并生成sql后,需要将其部署起来。1.1 传统部署方式其对应的操作语句如下:# 拷贝本地文件到容器docker cp /root/myFile/user.sql mysql:/tmp/user.sql# 在ubuntu中进入docker容器 doc

2021-06-27 21:37:38 834 1

原创 git | 新建分支与删除分支

想快速创建分支,请follow以下三个步骤:切换到基础分支,比如如master分支git checkout master创建并切换到新分支git checkout -b newBranch更新分支代码并提交git add *git commit -m “init newBranch”git push origin newBranchgit 如何查看与切换分支查看所有分支git branch -a查看当前使用分支(结果列表前面*号,代表当前使用的分支)git branch切换分支

2021-06-24 20:09:18 902 1

原创 git 之 .gitignore文件

1. 问题在git实现本地代码和云端的同步,其中有些文件不需要或不能够上传,git中的.gitignore解决了这个问题2. 列举# maven ignoretarget/*.jar*.war*.zip*.tar*.tar.gz*.class*.project*.factorypath*.nar*.ear*.rar# eclipse ignore.settings/.classpathtarget/bin/NewCustServSer/SrenewSer/

2021-06-21 09:31:00 164

原创 消息队列 | java简单实现

1. 消息队列介绍:消息队列是MQ是一种系统间相互写作的通信机制Broker:消息处理中心,负责消息的接收、存储、转发等;Producer:消息生产者,负责产生和发送消息到消息处理中心;Consumer:消息消费者,负责从消息处理中心获取消息,并进行相应的处理。2. java设计一个简单的消息队列其结构如下所示:2.1 消息处理中心作为消息处理中心,至少有一个数据容器来保存接收到的消息。这里采用java中队列(Queue)的一个子类ArrayBockingQueue来实现。如下是消

2021-06-20 21:51:05 4899 4

原创 个人云笔记解决方案: typora + picgo + aliyunOSS + 坚果云

文章目录1. 问题介绍2. 解决方案3. 具体操作3.1 工具说明及下载3.2 下载和安装picgo3.3 阿里云OSS的申请与使用3.4 Typora中绑定picgo1. 问题介绍背景:在日常工作中,编写文档和写代码。写代码用github + gitee来管理;文档采用markdown来记录。在不同电脑上切换,以及将文档上传到云时,markdown中文件和图片需要进行实时同步。2. 解决方案对于markdown文档,将其同步到云上,在不同终端登录即可查看。目前有百度云,坚果云等,个人对百

2021-06-20 17:16:19 315

原创 解决Git切换分支问题:Please commit your changes or stash them before you switch branches.

文章目录1. 问题2. 解决1. 问题目前拉取一个分支修bug,此时上面又给派发了一个新的bug需要修复,新bug优先级较高,而正在处理的这个bug还没有解决完,也不能够提交。当我们正常使用Git切换分支时,会出现如下提示(请在切换分支之前提交您的更改或隐藏它们)Please commit your changes or stash them before you switch branches.2. 解决因为当前的分支dev 最初也是从master 分支上衍生出来的。而此时你要再从该分

2021-06-08 14:25:23 5236

原创 git新建功能分支与合并到主分支

文章目录在master开发过程中,自己需要并行开发其他的功能,后期需要合并到master。则在本地新建项目并完成开发 : 需求分析 -> 方案设计 -> 代码整体规划 -> 接口编写 -> 单元测试 -> 代码详细设计将开发代码放到分支当中:拉取master文件 -> 新建feature分支 -> 将自己写的代码合并到feature分支 -> 完成单元测试将master合并到本地分支 -> 提Pull Request给别人审核,审核通过则合并到

2021-06-08 14:16:31 324

原创 IDEA-解决Command line is too long. Shorten command line for SpringBootMainApplication

文章目录1. 问题2. 分析3. 解决1. 问题使用IDEA启动项目时,报错如下:2. 分析报错信息为命令行太长IDEA底层是通过命令行或者文件的方式将classpath传递到Java的JVM虚拟机上的,而大多数的操作系统都会有命令行的最大长度限制,超过这个限定值时就会导致IDEA无法启动当前程序当命令行长度大于32768个字符时,将IDEA切换到动态类路径。长类路径被写入文件,然后由应用程序启动器读取并通过系统类加载器加载。3. 解决文件.idea\workspace.xml

2021-06-05 11:46:44 1440 4

原创 后端开发之抓包分析

文章目录1. 问题:2. 解决:3. 相关背景知识:1. 问题:微服务运行在公司的linux服务器当中在自己的linux电脑上,远程连接公司指定的linux服务器,然后远程连接到微服务运行的服务器当中客户端的https请求在网关上将https转换成http客户端通过https想服务器发送请求,报错,需要排查错误2. 解决:在服务器中用tcpdump的指定端口抓取请求包将微服务服务器中的包复制到公司的登录linux服务器将包放到windows当中,并用wireshark界面显示与分析

2021-06-05 11:30:48 801

空空如也

空空如也

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

TA关注的人

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