自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

LeoSong121的博客

知识来源于分享。

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

原创 SpringBoot 设置response header(全局设置和单独controller设置)

如果我们要在单个请求响应response增加header,可以使用httpServletResponse或者ResponseEntityobjects.UsingHttpServletResponseWe simply have to add theHttpServletResponseobject to our REST endpoint as an argument, th...

2019-10-10 17:38:10 10516

原创 【笔记】浅谈OAuth2 accessToken和OIDC idToken的理解和使用场景

前言OAuth2官网:https://oauth.net/2/OIDC:Open ID Connect官网:http://openid.net/connect/What is OpenID Connect?OpenID Connect 1.0 is a simple identity layer on top of the OAuth 2.0 protocol. It allows Clients to verify the identity of the End-User bas

2021-04-02 17:21:20 2026 6

原创 Springboot yml配置文件处理特殊字符

当我们使用yml配置文件时,有时候需要配置一些特殊字符会有问题,如:解决办法,增加单引号引入需要配置的内容:问题解决。

2021-03-31 18:55:35 51

原创 Nginx- 配置https证书方式访问

前言因为在做oauth2授权登录的时候,第三方授权服务器配置的回调地址需要使用https的方式,故总结一下如何通过nginx来完成自己生成证书并配置https访问;步骤原理通过OpenSSL工具生成证书; 将生成的证书配置在nginx;通过OpenSSL工具生成证书创建私钥$ openssl genrsa -des3 -out server.key 2048# server文件名,可根据需要命名根据提示输入密码注意,centos版本如果是CentOS Linu.

2021-03-31 14:47:31 34

原创 【笔记】关于一些项目网络优化记录

背景由于做的项目需要对接国外的API地址,而自己的服务代码是部署在国内的(上海)azure云环境中,所以从上海的服务器直接访问国外的服务器,这样的方式不仅访问延时大影响体验(有时候20s+),而且丢包概率也是很大的。测试丢包命令(测试100次)tcmping your_domain -n 100解决办法通过香港(或者azure global等国外的跳板apim)的APIM跳板访问的方式解决了问题。(当然我们也想过使用专线,但是专线维护和成本等都是很大的,所以放弃了这种方案;).

2021-01-22 17:28:21 32

原创 【笔记】项目工作中总结(二)

微服务项目设计:

2021-01-08 18:28:48 55 2

原创 SrpingCloud @FeignClient注解参数含义

value / name指定服务名称,表示你要消费哪个服务的接口path接口统一前缀url手动指定http调用地址primary多实现时指定优先级configuration自定义feign配置类,覆盖Feign的默认配置fallback / fallbackFactory降级统一处理...

2020-12-29 16:16:42 68

原创 SpringBoot 如何优雅处理- 自定义restful 404 Error

背景相信大家使用springboot开发的小伙伴,对下面两张截图都不陌生:但大多数解决自定义404 Not Found- application/json类型的时候,都是通过定义class HttpErrorHandler implements ErrorController,然后在application.properties 中添加两个配置:spring.mvc.throw-exception-if-no-handler-found=truespring.resources.add

2020-12-25 18:36:22 58

原创 Docker run -v 和VOLUME区别

docker run命令的-v标识创建的挂载点只能对创建的容器有效。 通过dockerfile的 VOLUME 指令可以在镜像中创建挂载点,这样只要通过该镜像创建的容器都有了挂载点。 还有一个区别是,通过VOLUME 指令创建的挂载点,无法指定主机上对应的目录,是自动生成的。VOLUME 默认会写到/var/lib/docker/volumes中 相同点是,两种方式挂载的目录,都可以在容器修改文件同步到宿主机,也可以从宿主机修改文件同步到容器我们通过docker inspect 查看通过该...

2020-12-15 18:08:08 166

原创 【笔记】【踩坑】Docker + Nginx + Vue部署前端项目和跨域CORS解决

1. 前言由于项目使用的前后端分离结构,采用nginx作为服务器代理前端解决跨域问题。阅读本文之前,需要有了解过Docker、Vue、Nginx、CORS内容。文章之前,有必要介绍一下CORS:跨域资源共享(Cross-origin resource sharing)什么叫同源,必须同时满足以下三点:协议相同 域名相同 端口相同2. 部署2.1 使用Vue生成前端文件npm installnpm run build:dev注意:这里前端配置访问后端的BASE

2020-12-15 11:28:56 385 2

原创 【笔记】Linux- 开发常用命令汇总

后台启动jar包nohup java -jar xxx.jar &查询端口号占用进程netstat -tunpl |grep 端口号根据名字查找文件find / -name mssql

2020-12-02 19:38:31 34

原创 Docker- 常用命令教程&安装mysql

目录Linux安装DockerDocker常用命令项目开发常用命令汇总:容器镜像Docker run 命令Docker 安装mysql配置Docker国内镜像Docker 包括三个基本概念:镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 (<仓库名>:<标签>)就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。 容器(Container

2020-12-02 19:32:47 31

原创 Jenkins 执行Docker build错误:Got permission denied while trying to connect to the Docker daemon...

背景最近使用Jenkins + Docker做自动化部署,由于安全原因没有使用mvn + docker plugin生成并推送镜像(这种方式会暴露2375端口漏洞,但可以自己使用证书解决),我采用的是在Jenkins执行shell脚本:docker build -t freeshop/freeshop-sms .发现报错:+ docker build -t xxx/xxx-user .Got permission denied while trying to connect to th

2020-12-02 15:17:09 153

原创 Linux- 从0编写Docker镜像自动执行脚本.sh

前言最近在使用Jenkins + Docker做自动化构建的时候,发现有些需要在服务器上执行一些必不可少的Linux命令,而这些命令都是些重复的手工操作。故而想着通过脚本.sh文件来替代这些manual操作。在之前的工作中很少写sh脚本,所以将整理的在这里记录下来,一是好记性不如烂笔头,以防自己过几天就忘了,二也是希望可以帮到和我有同样需求的人。Shell基本知识Shell 脚本(shell script),是一种为 shell 编写的脚本程序。第一个简单的shell脚本:.

2020-12-01 17:26:19 223

原创 Linux- 安装Jenkins 超细讲解

1. 安装SUN JDK参见我的博客:Linux CentOS- 安装Java2.添加Jenkins库到yum库,添加完成后将从这里下载安装。rpm安装参考Jenkins官方说明:https://pkg.jenkins.io/redhat-stable/sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.reposudo rpm --import https.

2020-11-23 16:45:34 42

原创 Linux CentOS- 安装Java

目录安装SUN公司的JAVA删除原有安装的java安装SUN公司的JAVA1. 下载安装SUN的安装包,下载地址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html注意这里选择Linux x64安装包,对应自己的系统,否则安装完成后有另外的一些问题。2. 创建安装目录,一般将安装的内容放到/usr/local目录下。cd /usr/localmkdirjava.

2020-11-23 15:30:46 27

原创 Jenkins- 构建失败:FATAL: Java heap space

Jenkins- 构建的出现:java.lang.OutOfMemoryError: Java heap space解决办法:找到Jenkins安装目录的jenkins.xml文件,在<arguments>增加Jenkins启动参数配置:<arguments>-Xrs -Xmx1024m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\jenkins.war" --http

2020-11-06 14:44:02 137

原创 Jenkins + Gihub Webhooks实现自动化部署

自动化部署原理:本地代码push到Github webhook检测到Github的push事件 触发Jenkins进行一次build 自动化部署完成配置步骤:1.Github生成Personal Access Token1.1登录到Github –>Settings –> Developer settings –> Personal access tokens –> Generate new token1.2.勾选如下图所示权限,最后点击 generate

2020-09-28 11:29:40 58

原创 [Maven]项目中遇到的参数作用记录

Maven Scope* compile,缺省值,适用于所有阶段,会随着项目一起发布。* provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。* runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。* test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。* system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它...

2020-07-15 15:20:25 64

原创 SpringBoot 踩坑笔记(二)

最近在做项目的时候,发现一些不存在的接口,经常会被转发到一个特定的地址(我这里被转发的是:"/api/v1/sendgrid",这个地址在项目是存在的)然后我打开了对应的controller,刚开始始终没有发现问题:/** * @author xxxx * @since 2020/4/21 17:24 sendgrid邮件控制器 */@RestController("/api/v1/sendgrid")public class SendGridController { @Aut

2020-05-09 17:49:25 108

原创 [Eclipse] 开发springboot项目 -- pom.xml第一行报错Unknown error

解决办法1:尝试将SpringBoot2.1.14.BUILD-SNAPSHOT版本降级到SpringBoot2.1.1.RELEASE版本,感觉这治标不治本啊,以后想升级不是玩完了。错误如下:解决办法2:在pom.xml 文件中的 properties 加入maven jar 插件的版本号。错误原因呢,报错是因为版本不兼容问题,将Maven的版本降到3.1.1就可以了,在po...

2020-03-20 18:01:59 525

翻译 SpringBoot - 启动时实现预加载自动执行代码

前言目前开发的SpringBoot项目在启动的时候需要预加载一些资源。而如何实现启动过程中执行代码,或启动成功后执行,是有很多种方式可以选择,我们可以在static代码块中实现,也可以在构造方法里实现,也可以使用@PostConstruct注解实现,当然也可以去实现Spring的ApplicationRunner与CommandLineRunner接口去实现启动后运行的功能。在这里整理一下,在...

2020-02-25 16:52:16 1887

原创 Java8 - LocalDateTime和Date互转

Date to LocalDateTime: Date currDate = new Date(); LocalDateTime ldt = currDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); System.out.println(ldt);输出:2...

2020-01-19 15:42:40 138

原创 Java - System.currentTimeMillis() 是否和时区有关?

首先我们看一下代码: //获取秒数 gmt+8 Long second8 = LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")); //获取毫秒数 gmt+8 Long milliSecond8 = LocalDateTime.now().toInstant(ZoneOff...

2020-01-19 15:14:25 6535 4

原创 Spring Security - 认证流程与搭建过程问题记录

用户认证的流程:Spring Security支持多种用户认证的方式,最常用的是基于用户名和密码的用户认证方式,其认证流程如下图所示:1. 为什么定义的成功处理地址defaultSuccessUrl没生效:如果自定义了用户认证成功处理器,则在Spring Security配置类中通过http.formlogin().defaultSuccessUrl(" URL")来指定的默认认证...

2019-12-27 16:42:17 72

翻译 Java - isAssignableFrom的用法

class1.isAssignableFrom(class2)判定此Class1对象所表示的类或接口与指定的Class2参数所表示的类或接口是否相同,或是否是其超类或超接口。如果是则返回true;否则返回false。true: class1 是父类,class2子类 package cn.com.xxx.xxx.common; class...

2019-12-27 15:07:14 72

原创 SpringBoot - @Autowired 注解注入规则

@Autowired - 注入默认根据类型,匹配不到则根据bean名字Spring中注解方式的默认beanName生成规则:在Spring中,当我们配置一个bean的时候,可以不指定name,这样的话,Spring会生成一个默认的beanName1. 驼峰形式类名首字母小写:UserService--userService2. 特殊情况--当类名的首字母和第二个字母是大写的时候,将...

2019-12-27 14:43:44 583

原创 SpringBoot - 集成Jasypt(注意点)

关于Jasypt  Jasypt是一个Java库,允许开发人员以很简单的方式添加基本加密功能,而无需深入研究加密原理。利用它可以实现高安全性的,基于标准的加密技术,无论是单向和双向加密。加密密码,文本,数字,二进制文件。一般可以将项目配置中敏感信息(如数据库密码,管理者密码,第三方账号密码等)使用Jasypt加密配置。官网:http://www.jasypt.org/Spri...

2019-12-27 14:21:45 423

原创 Spring Security - 使用 Bcrypt 代替 MD5/SHA1

前言:如果数据库被“拖库”明文存储的密码就变得不安全。之前的做法是使用 md5 散列的方式,因为 md5 不可逆,无法从密文推出原文。MD5/SHA1为什么不安全:HASH 算法最大的问题是,会发生撞库,也就是说,有可能出现多个原文得到同一个密码。下面这个式子是存在的,如果原文是 M1,只需要另外一个同样 HASH 值的密码即可登录。MD5(M1) = MD5(M2) ...

2019-12-27 11:01:03 362

原创 Spring Security - @PreAuthorize安全表达式hasRole、hasAuthority区别

hasRole:角色授权:授权代码,在我们返回的UserDetails的Authority需要加ROLE_前缀,Controller上使用时不要加前缀;hasAuthority:权限授权:用户自定义的权限,返回的UserDetails的Authority只要与这里匹配就可以,这里不需要加ROLE_,名称保持一至即可另外的安全表达式还有:表达式 说明 per...

2019-12-20 15:01:40 5099 1

原创 Linux各目录详解

/bin /sbin /usr/bin /usr/sbin四个都是存放系统命令的目录。区别是sbin只有超级用户才可以执行,bin目录超级用户和普通用户都可以执行。前面有usr的是命令在单用户模式下不能执行,没有usr是单用户模式下也可以执行。/boot系统启动目录,保存系统启动相关文件,如内核文件和启动引导程序(grub)文件等。/dev设备...

2019-10-31 16:55:13 45

转载 【笔记】SQL Server中,varchar和nvarchar如何选择?

最近在设计表的时候一直使用的是varchar,在中文操作系统存中文没有问题,但是转在azure服务器上却出现乱码了,故有以下总结:varchar在SQL Server中是采用单字节来存储数据的,nvarchar是使用Unico来存储数据的.中文字符存储到SQL Server中会保存为两个字节(一般采用Unico编码),英文字符保存到数据库中,如果字段的类型为varchar,则只会占用一个...

2019-10-22 15:48:22 63

翻译 【推荐】域名切换容灾方案

什么是容灾?容灾系统是指在相隔较远的异地,建立两套或多套功能相同的IT系统,互相之间可以进行健康状态监视和功能切换,当一处系统因意外(如火灾、地震等)停止工作时,整个应用系统可以切换到另一处,使得该系统功能可以继续正常工作。跨城容灾方案说明:正常使用主域名调用,备域名需有流量,保证业务能实时切换。当域名出现请求超时、读写超时,自动换备域名重试。交易主链路和交易备链路做好动态流...

2019-10-18 16:52:00 798

原创 log4j2配置日志打印时区

在项目开发遇到一个关于系统时区的问题,因为服务器使用的国外的服务器,时区统一设置不方便(反正是云架构师说的),但是对于系统的业务又需要使用中国时区,所以日志,还是后端代码都要使用中国时区。后端代码有很多方法设置时区,对于日志设置时区,网上资料比较少,然而我在stack overflow还是找到了。亲测有效的,配置如下:<!--log4j2 配置timezone -->&lt...

2019-10-08 11:26:27 996

原创 SQL count(1) count(*) count(col) 用法的区别

sql中count(1)和count(*)有区别吗count(*) 对 innodb 而言,它需要把数据从磁盘中读取出来然后累计计数;而 MyISAM 引擎把一个表的总行数存在了磁盘上,所以执行 count(*) 会直接返回这个数,如果有 where 条件则和 innodb一样。那么如何优化 count(*) ?一个思路是使用缓存,但是需要注意双写一致的问题(双写一致性后文缓存章节会做介绍)。...

2019-09-20 15:14:52 311

原创 SqlServer查看默认编码格式,排序规则

select COLLATIONPROPERTY('Chinese_PRC_Stroke_CI_AI_KS_WS', 'CodePage')--查看默认编码格式​​​​​​​936 简体中文GBK950 繁体中文BIG5437 美国/加拿大英语932 日文949 韩文866 俄文65001 unicode UFT-8select SERVERPROPERTY(...

2019-09-03 15:39:37 2148

原创 [前后端分离] 前端发送跨域API请求,每次访问会发送两次请求OPTIONS问题

最近在做前后端分离的项目,项目部署到azure后,发现前端访问后端API的时候,每次都会发送两次请求第一次是OPTIONS的请求,然后才是正常的请求,。这个问题十分有意思。查阅资料得到的结论是:第一个OPTIONS的请求是由Web服务器处理跨域访问引发的。OPTIONS是一种“预检请求”,浏览器在处理跨域访问的请求时如果判断请求为复杂请求,则会先向服务器发送一条预检请求,根据服务器...

2019-08-28 16:15:58 2498

原创 SQL Server数据库中文被转化成问号???解决办法

因为我们之前用的mysql 导出的脚本导入到sqlserver,然后发现select 的中文出现 ???解决办法:在建表的时候将编码改为Chinese_PRC_CI_AS:修改前: [data_description] varchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,修改后: [data_descri...

2019-08-23 18:35:50 3868

翻译 nginx An attempt was made to access a socket in a way forbidden by its access permissions

一直启动不了nginx ,于是看错误日志:[emerg] 4376#4256: bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in a way forbidden by its access permissions)这个错误找了很久,我也一直怀疑是80端口被占用,把防火墙关了也不行!...

2019-08-01 18:12:45 98

原创 Springboot2配置FastJsonHttpMessageConverter不生效,FastJsonHttpMessageConverter返回类型字符串String中文乱码问题

com.dreamer.core.converter.FastJsonJsonpHttpMessageConverter@75652058org.springframework.http.converter.ByteArrayHttpMessageConverter@30fa29eforg.springframework.http.converter.StringHttpMessageConverter@7749f8a4org.springframework.http.converter.Resour

2019-07-26 14:43:19 2350

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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