自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

xdscode的博客

只要路是对的,就不害怕遥远,青春是一场无知的奔忙,总会留下颠沛流离的伤,我多希望明天能有太阳,灼烧我那腐烂的梦想

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

原创 Git常用操作

1.取消合并当合并分支时遇到错误或者冲突,分支旁边会多出“|MERGING”这个东西,可以使用git merge --abort命令取消本次合并,就会回到本次合并前的状态了git merge --abort2.删除分支git branch -d 分支名但是当feature-20200413-ceshi有未合并的内容时使用上面的命令会删除失败并报出错误,若想强制删除的话可使用-Dgi...

2020-04-13 16:02:45 367 1

原创 Git进阶:修改上次提交 git commit --amend

相比git reset很多优点git commit --amend有很多优点,如果工作区已经改的面目全非,这时如果执行 git reset, 就很难分的清哪些内容属于被撤销的提交了,而且reset后有可能会因为本地版本比远程版本低而造成push被拒绝。首先使用 git reflog 命令查看操作记录,git reflog可以查看到你的所有操作历史,就像回退commit一样,你可以回退你的操作,当然不限于这里的amend,其他操作也可以使用这种方法撤回。有可能出现一个问题。在Git中,总是有后悔药可以吃的。

2023-01-19 16:37:19 5166

原创 Git进阶:合并提交记录 git merge --squash

开发分支dev会有很多的commit log,因此如果你在将dev合并到主分支master的时候,在master只想展示一条dev的commit log,让主分支的log看起来很简洁,那么可以试试 git merge --squash 命令。只有在开发分支上每个commit都有其独自存在的意义,并且能够编译通过的情况下(能够通过测试就更完美了),才应该选择缺省的合并方式来保留commit历史。判断是否使用–squash选项最根本的标准是,待合并分支上的历史是否有意义。

2023-01-19 15:06:02 1791

原创 SpringBoot 整合 FastJson 及用法举例

Fastjson是一个Java语言编写的高性能功能完善的JSON库。它采用一种“假定有序快速匹配”的算法,把JSON Parse的性能提升到极致,是目前Java语言中最快的JSON库。Fastjson接口简单易用,已经被广泛使用在缓存序列化、协议交互、Web输出、Android客户端等多种应用场景。快速FAST (比其它任何基于Java的解析器和生成器更快,包括jackson)强大(支持普通JDK类包括任意Java Bean Class、Collection、Map、Date或enum)

2023-01-19 14:46:41 916

原创 PHP RabbitMQ的心跳问题

环境PHP7,Thinkphp5,php-amqp类库场景描述生产的消息队列,其消费者总是无故断开,基本在五天左右就会断开,但是程序端消费者的进程却仍在继续,并且没有捕获到任何异常。经过多次尝试,最终将问题定位在mq的心跳问题。因为我们数据中心的防火墙正在终止空闲连接mq心跳1.rabbitmq使用心跳机制来保持连接,在正常场景下,客户端期望通过发送心跳包来告知服务端自己存活。如果服务端连续两次发送心跳客户端均无回应,服务端会断开与客户端的连接。心跳间隔可在每次连接时设置。2.因php是同步语言

2022-01-25 14:40:19 3894 1

原创 PHP实现JWT登录鉴权

一、什么是JWT1. 简介JWT(JSON Web Token)是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。简单的说,JWT就是一种Token的编码算法,服务器端负责根据一个密码和算法生成Token,然后发给客户端,客户端只负责后面每次请求都在HTTP header里面带上这个Token,服务器负责验证这个Token是不是合法的,有没有过期等,并可以解析出subject和claim里面的数据。2. JWT验证流程和特点验证流程:① 在头部信息中声明加密算法和常量, 然后

2021-12-27 19:37:33 3743 1

转载 mysql实现主从复制/主从同步

业务场景小公司业务代码存于一个服务器上,而这个服务器有的时候回宕机,导致业务停顿,造成影响。这个时候 就需要做高可用 两个ngix+两个tomcat+两个mysql实现高可用,避免单点问题。中间使用keepalived监听。下面先从简单的mysql主从搞起。下面按照老方式,what->why->how ,是什么,为什么,怎么做来讲解一波。一、(what)什么是mysql 的主从复制?① 简介指一台服务器充当主数据库服务器,另一台或多台服务器充当从数据库服务器,主服务器中的数据自动复制到从

2021-12-01 20:05:17 323

原创 Supervisor实现进程守护

参考文章:https://www.jianshu.com/p/39b476e808d8https://www.jianshu.com/p/0b9054b33db3本文系统环境:centos7PHP框架:Yii2一、supervisor简介Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。它是通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,这样只要在supe.

2021-10-26 20:40:09 1789

转载 算法的时间与空间复杂度(一看就懂)

算法(Algorithm)是指用来操作数据、解决程序问题的一组方法。对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,但在过程中消耗的资源和时间却会有很大的区别。那么我们应该如何去衡量不同算法之间的优劣呢?主要还是从算法所占用的「时间」和「空间」两个维度去考量。时间维度:是指执行当前算法所消耗的时间,我们通常用「时间复杂度」来描述。空间维度:是指执行当前算法需要占用多少内存空间,我们通常用「空间复杂度」来描述。因此,评价一个算法的效率主要是看它的时间复杂度和空间复杂度情况。然而,有.

2021-10-08 16:25:51 159

原创 Redis队列和阻塞队列

redis 队列的优点是轻量级,业务足够简单时不需要使用rabbitMq这样专业的消息中间件;缺点是弹出队列中的元素时,即使该消息处理失败也无法再次进行消费Redis队列 List简单演示如下普通的redis队列,为了实现业务,通常会使用while进行循环,这样的话没有消息时依旧会频繁的执行循环,造成cpu的空转,所以一般会在代码中增加sleep来解决该问题,但因此又会造成消息延迟问题。阻塞队列可以很好的解决这些问题。Redis阻塞队列redis队列提供了 “阻塞式” 拉取消息的命令:BR

2021-10-08 15:53:13 7473

转载 Redis队列

关于「把 Redis 当作队列来用是否合适」的问题。有些人表示赞成,他们认为 Redis 很轻量,用作队列很方便。也些人则反对,认为 Redis 会「丢」数据,最好还是用「专业」的队列中间件更稳妥。从最简单的开始:List 队列首先,我们先从最简单的场景开始讲起。如果你的业务需求足够简单,想把 Redis 当作队列来使用,肯定最先想到的就是使用 List 这个数据类型。因为 List 底层的实现就是一个「链表」,在头部和尾部操作元素,时间复杂度都是 O(1),这意味着它非常符合消息队列的模型。

2021-09-22 20:50:57 9786

原创 Laravel8学习笔记:模型中实用的方法

1. fieldArray()这个操作有些类似tp的 allowField() 方法。在进行数据库的编辑时,简单起见我们或许会这样操作:class Member extends BaseModel{ $data = $request->input(); $this->where($where)->update($data); // 这里可能会报错}其中 $data 是请求的所有入参,其中可能有数据库不存在的参数,直接更新的话会报错,所以可以先使用如下方法过滤一下cl

2021-09-15 20:18:07 450

原创 Laravel8学习笔记:mysql中时间字段的处理

参考:https://blog.csdn.net/qq_38358436/article/details/880968291.关闭自动更新时间字段因为laravel的模型会自动更新 created_at 和 updated_at (默认是两个这样的名字)两个字段,如果不想要这两个字段可以 关闭class User extends Model{ $timestamps = false;}关闭其中一个字段保留另一个,只想要其中一个字段 created_at 只需要将定义一个常量将 up.

2021-08-28 11:13:25 998

原创 Laravel8学习笔记:修改Request $request的值

参考:https://learnku.com/laravel/t/5908/if-you-modify-the-value-of-request-request// 合并输入,如果有相同的key,用户输入的值会被替换掉,否则追加到 input$request->merge(['foo' => 'bar', ....]);// 替换所有输入$request->replace([..])// 设置某参数,如果存在则替换,否则新增$request['foo'] = 'bar';.

2021-08-28 10:51:25 710

原创 Laravel8学习笔记:实用方法及工具

1. sql打印DB::enableQueryLog();// 执行sql$sql = DB::getQueryLog();2.路由及中间件参数追加到request:request()->offsetSet("username", "sxd");request()->merge($decrypt); // 类似offsetSet的批量操作,将数据数据中的所有元素一次追加到request这样的话就可以直接在控制器中获取了:$username = $request->i

2021-08-28 10:45:13 204

原创 Laravel8学习笔记:slq构造器

slq构造器1.分页$field = "uid,username,platform";$field = explode(",", $field);$list = $this->select($field)->orderBy("uid","desc")->orderBy("createtime","desc")->paginate($param["limit"])->toArray();2.列表$rankList = Rank::where([["rankid",

2021-08-28 10:38:50 211

原创 Java博客系统halo的搭建

github上star比较多的开源博客系统halo,SpringBoot+Gradle+Hibernate,推荐的Java版本是11,我的本地环境是mac+ideahalo官方文档:https://docs.halo.run/github: https://github.com/halo-dev/一、本地部署github拉取到本地后,需要进行一些配置,halo默认使用的是内置型数据库H2,需要使用mysql的话修改如下配置即可(注意是在运行安装项目前修改)运行时报错如下解决办法见官方文档htt

2021-08-08 23:28:06 1172

原创 php 实现excel打包下载

场景说明:举例说明:一个表单下面有多个提交的留言,导出这些留言,并且一个表单是一个excel生成zip压缩包$msgList是数据,这里我将要导出的列表、列标题、名称都放在了一个变量中传递过来了,具体的数据结构如下$msgList = [ [ "formTitle" => "我将作为压缩包中excel的名字", "fields" => [ "name" => "姓名", "phone" => "手机号" ], "msgList" => [

2021-07-13 21:07:12 975 2

转载 Linux服务器之:Docker安装RabbitMQ

查找镜像带有可视化界面[root@VM-0-15-centos ~]# docker search rabbitmq:managementNAME DESCRIPTION STARS OFFICIAL AUTOMATEDmacintoshplus/rabbitmq-management Based on rabbi

2021-07-06 20:19:33 190

原创 PHP邮件发送:PHPMailer

说一下PHPMailer发送邮件,很简单!参考:gitHub:PHPMailer菜鸟教程:PHPMailer<?php/** * Created by PhpStorm * @author sxd * @data 2021/5/10 13:27 */namespace app\service;//Import PHPMailer classes into the global namespace//These must be at the top of your scr

2021-05-11 09:21:55 150

原创 phpstorm使用xdebug断点调试

都1202年了,你调试php的时候还在使用print_r();die();吗,今天说一下php断点调试工具xdebug,无需google的xdebugHelper!无需在postman请求时加cookie!相关环境:windows10,phpstudy,php7.3,phpstorm2021.1.1一、环境配置首先需要开启php环境的xdebug扩展,安装扩展的方法请自行百度,php.ini中的配置如下说明:我使用的phpstudy,开启扩展后会自动在php.ini中自动添加xdebug的配置;

2021-04-22 20:55:07 771 2

原创 SpringBoot整合JWT

一. JWT简介参考文章https://blog.csdn.net/akiranicky/article/details/993077131. 什么是JWT?JWT(JSON Web Token)是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。它将用户信息加密到token里,服务器不保存任何用户信息。服务器通过使用保存的密钥验证token的正确性,只要正确即通过验证;应用场景如用户登录。JWT详细讲解请见 github:https://github.com/jwtk/jjwt2.

2020-06-27 10:31:18 543

原创 SpringBoot整合AWS OSS 文件上传

Amazon S3 Glacier文件上传官方文档:https://docs.aws.amazon.com/zh_cn/amazonglacier/latest/dev/introduction.htmlhttps://docs.aws.amazon.com/zh_cn/sdk-for-java/v2/developer-guide/setup-install.html1.下载demo(本文中的上传类并未使用demo中的代码,demo仅供参考)https://github.com/awslabs

2020-06-23 12:11:22 1755

原创 SpringBoot统一响应体解决方案

参考文章:https://segmentfault.com/a/1190000019795918通过修改响应返回的JSON数据,让其带上一些固有的字段,例如以下这样的{ "code": 10000, "msg": "success", "data": { "id": 2, "name": "test" }}其中关键属性的用途如下:code为返回结果的状态码msg为返回结果的消息data为返回的业务数据这3个属性为固有属.

2020-06-09 11:32:34 4254 7

原创 Linux服务器五:Docker创建MongoDB容器

1.拉取MongoDB镜像dockerhub网站上可以搜索你想要的docker镜像https://hub.docker.com/search?q=image&type=imagedocker pull mongo2.创建容器root@iit9l5oZ /]# docker run -d --name mongoServer --restart=always -p 27017:27017 -v /usr/data/mongo/:/data/db mongo --auth命令说明:

2020-06-04 19:40:51 449

原创 php引用传递

php中的引用传递的含义:不同的名字访问同一个变量内容。区别于传值调用,引用传递又叫做传址调用,传递的其实是变量内容所处的内存地址。举例说明:参考https://www.cnblogs.com/alsf/p/9621362.html<?php function test(&$a){ $a=$a+100; } $b=1; echo $b;//输出1 test($b); //这里$b传递给函数的其实是$b的变量内容所处的内存地址,

2020-05-21 19:29:15 494

原创 Linux服务器五:Docker创建Redis容器

参考:https://www.cnblogs.com/liconglong/p/11694298.html1、拉取redis镜像获取镜像:https://hub.docker.com/search?q=image&type=imagedocker pull redis2、创建存放redis文件夹用于存放redis,用于开启redis的持久化[root@iZuf6it9......

2020-04-14 19:11:31 1136

原创 Redis分布式锁防止高并发

1.控制器层了解一下或许有帮助:分布式开发杂谈/** * 抢购 * */@RestController@RequestMapping("/product")@Slf4jpublic class ProductController { @Autowired private RedisNxUtil redisNxUtil; /** * 分布式锁实现抢购 * 2020-...

2020-04-14 11:38:06 510

转载 集群Session一致性和同步问题

一. 何为session用户使用网站的服务,基本上需要浏览器和web服务器进行多次交互,web服务器如何知道哪些请求是来自哪个会话的?具体方式为:在会话开始时,分配一个唯一的会话标识(sessionId),通过cookie把这个标识告诉浏览器,以后每次请求的时候,浏览器都会带上这个会话标识来告诉web服务器请求是属于哪个会话的。如果遇到禁用cookie的情况,一般的做法就是把这个会话标识放到u...

2020-04-13 11:53:03 297

原创 SpringBoot中使用Mybatis分页插件PageHelper

1.引入依赖<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>4.1.3</version></dependency>2.代码中调用 ...

2020-04-13 10:37:07 342

原创 IDEA插件Alibaba Cloud Toolkit实现一键部署Java项目

官方文档:https://help.aliyun.com/product/29966.html?spm=a2c4g.750001.6.6.xb9z5BAlibaba Cloud Toolkit (Eclipse 插件,后文简称 Cloud Toolkit)是阿里云针对 IDE 平台为开发者提供的一款插件,用于帮助开发者高效开发并部署适合在云端运行的应用。 您在本地完成应用程序的开发、调试和测试...

2020-03-06 12:06:09 1610 1

转载 SpringBoot中发送邮件

SpringBoot中发送邮件Spring Boot中发送邮件具体的使用步骤如下1、添加Starter模块依赖2、添加Spring Boot配置(QQ/网易系/Gmail)3、调用JavaMailSender接口发送邮件1、添加依赖在 Maven pom.xml 配置文件中加入 spring-boot-starter-mail 依赖。<dependency> ...

2020-03-04 16:43:27 528

原创 SpringBoot整合aliyun邮件发送

本文介绍aliyun邮件发送 Java SDK的使用文档地址:https://help.aliyun.com/document_detail/29459.html?spm=a2c4g.11186623.6.635.28ae3a35TjrYsQ1.添加 maven 库<repositories> <repository> ...

2020-03-04 16:18:59 2780

原创 MongoDB:windows启动mongodb服务

1、打开命令窗口,切换到mongodb安装目录下的“bin”目录中。输入命令:cd D:\mongodb\bin或者打开D:\mongodb\bin目录中直接在地址栏中输入cmd2、启动服务。输入命令:mongod --dbpath D:\mongodb\data...

2020-02-26 18:38:16 709

原创 Java:批量插入数据

import com.google.common.collect.Lists; import org.springframework.util.CollectionUtils; private void add() { List<CeshiBean> ceshiList = new ArrayList<CeshiBean>(); if(Col...

2020-02-25 18:47:27 1109

原创 SprintBoot 使用this.调用含有mysql事务的方法时,事务失效

大概场景如下 , 使用this.调用本文件中的方法@Override public void giveProfit() { this.profit(x, productInfo.getProfitRate()); }@Transactional(rollbackFor = Exception.class) public void profit() {...

2019-11-30 00:47:15 764

原创 Git:本地项目添加远程git仓库

一: 本地新建项目 , 在项目中使用git init,如下二:git pull 若出现错误: fatal: refusing to merge unrelated histories 错误其实这个问题是因为 两个 根本不相干的 git 库, 一个是本地库, 一个是远端库, 然后本地要去推送到远端, 远端觉得这个本地库跟自己不相干, 所以告知无法合并具体的方法, 一个种方法: 是 从远端库拉...

2019-11-23 19:11:07 229

原创 Linux服务器之四: Nginx实现服务器反向代理

一. 说明服务器上已经安装了Nginx , 另外需要准备一个域名(或二级域名)默认自带proxy_pass指令,只需要修改配置文件就可以实现反向代理这里只讲述反向代理的配置 , 后续会增加利用反向代理实现负载均衡二. 配置打开nginx的配置文件nginx.conf , 查看nginx的安装目录[root@i /]# whereis nginxnginx: /usr/local/ng...

2019-11-23 15:54:07 641

原创 springboot整合Redis

1.引入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency>2.配置文件spring: redis...

2019-11-13 16:27:27 111

转载 sql参数绑定防止注入的原理

本文主要讲述为什么拼接sql容易sql注入 , 而sql使用参数绑定可以防止sql 注入假设我们的用户表中存在一行.用户名字段为username.值为aaa.密码字段为pwd.值为pwd…下面我们来模拟一个用户登录的过程…<?php $username = "aaa"; $pwd = "pwd"; $sql = "SELECT * FROM table WHER...

2019-10-26 16:56:06 1680

空空如也

空空如也

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

TA关注的人

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