- 博客(24)
- 收藏
- 关注
原创 Spring Cloud - 配置中心
在微服务系统中,每个微服务不仅仅只有代码,他还需要连接其他资源,例如数据库的配置或功能性的开关等;随着微服务系统的不断迭代,整个微服务系统可能成为一个网状结构,这时候就需要考虑整个微服务系统的的扩展性、伸缩性、藕合性等;其中一个很重要的环节就是配置管理的问题;
2022-10-24 17:20:12
1989
1
原创 Spring Cloud - 注册中心
Eureka 是 Netflix 开发的服务发现框架,本身是一个基于 REST 的服务,主要用于定位运行在 AWS 域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的,SpringCloud 将它集成在其子项目spring-cloud-netflix 中,以实现 SpringCloud 的服务发现功能;
2022-10-24 17:18:48
546
原创 Spring Cloud - 前世今生
微服务架构风格这种开发方法,是以开发一组小型服务的方式来开发一个独立的应用系统的,其中每个小型服务都运行在自己的进程中,并经常采用 HTTP资源APi 这样轻量的机制来相互通信,这些服务围绕业务功能进行构建,并能通过全自动的部署机制来进行独立部署;
2022-10-24 17:17:23
614
原创 Linux生产环境 危险的 root 用户
Linux 系统中,root 用户作为超级用户,拥有执行所有指令,操作所有目录的权限;尤其在生产环境下,一旦 root 账号被暴力破解或者因为误操作执行了恶意命令,会导致不可挽回的后果;因此,需要禁用 root 用户,创建普通用户,并遵循最小授权的原则,避免滥用root权限;...
2022-06-15 19:33:52
773
原创 Spring事务管理,声明式事务和编程式事务实现
背景数据库操作过程中,对于增删改等操作,因为涉及到数据库状态的变更,为保证数据安全,需要进行事务管理;Spring事务管理有两种方式,即声明式事务管理和编程式事务管理;配置连接池配置:# jdbc configurationjdbc.url=jdbc\:mysql\://127.0.0.1\:3306/ssm?useUnicode\=true&characterEncoding\=utf8&characterSetResults\=utf8jdbc.driverClassName
2022-01-23 22:34:24
1019
原创 同一台电脑生成多份ssh私钥和公钥,映射多个GitHub账号
问题说明当我们使用 Git 进行代码版本控制时,经常出现一台电脑需要连接多个Git 账号的情况,此时需要在一台电脑上生成多份 ssh 私钥和密钥,同时映射多个 Git 账号;这里我们需要同时连接 GitHub,码云,两个账号;配置1.生成 ssh 密钥文件;ssh-keygen -t rsa -C "Zbc521.gitee.com" -f ~/.ssh/id_rsa_giteessh-keygen -t rsa -C "Zbc521.github.com" -f ~/.ssh/id_rsa_gi
2022-01-20 22:43:14
1068
原创 Spring 4 集成 redis 实现缓存 二
背景项目开发过程中经常用到mybatis,为了提升查询效率,mybatis支持一级和二级缓存,一级缓存基于SqlSession级别,默认开启,二级缓存基于Mapper级别;一级和二级缓存在单机模式下是没有问题的,但是在集群环境下是无法进行缓存同步的,因此需要借助第三方缓存redis,将查询数据统一缓存到redis,这样在集群环境下也能实现缓存同步;之前的文章中已经介绍了spring如何集成redis,这里介绍下开启spring cache,通过redis实现查询缓存:开启缓存<?xml ver
2022-01-19 21:41:35
871
原创 Spring 4 集成 redis 实现缓存 一
背景随着Web项目的复杂程度逐渐增加,可能会涉及诸如高并发、海量数据查询的的业务场景也逐渐增多;若频繁的操作数据库,会触发数据库的I/O瓶颈,因此需要加入缓存,尽量减少直接操作数据库的频率和次数;同时在分布式系统中,分布式锁等应用场景也需要依赖redis等缓存数据库;redis作为nosql数据库的代表,拥有广泛的应用场景;这里介绍下Spring集成redis,实现缓存:准备工作:1.引入依赖;<!-- jedis 客户端 --><dependency> <
2022-01-19 21:41:16
788
1
原创 程序员个人修养和职业规划
提起程序员这个职业,大家第一想到的就是薪资高、经常加班、熬夜等,正是高于其他行业的薪资起点,导致每年大量的应届生涌入到软件研发的队伍中;随着知识共享时代的来临,进入IT行业也有多种途径,自学、校外培训等,门槛逐步降低,但是能够长期坚持下去的人还是少数;对于想要从事IT行业的大学生来说,如何判断自己是否适合这个行业,可以从以下几个方面对自己进行一个自我分析;对于编程是否有浓厚的兴趣,兴趣是最好的老师,也是推动你长久坚持的动力,编程本身就是一件比较枯燥的事情,若对此不感兴趣,很难在这个行业持久发展并且持续
2022-01-18 22:23:25
4742
原创 Mybatis 实体别名支持通配符扫描
问题Spring集成Mybatis的项目中,可以为指定包下的实体取别名,这样在Mapper xml文件中可以省略实体类的全路径名称,只写类名称即可;但是在多模块项目中,可能需要将实体放在不同的模块下,此时需要配置多路径扫描;方式一:配置多个路径,逗号分隔符隔开 <!-- sqlSessionFactory spring 整合 mybatis --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFa
2022-01-17 21:54:30
833
原创 Spring MVC处理日期字符串参数自动转换成后台Date类型
问题描述当前台提交日期字符串到后台时,以字符串形式传输,若后台接收时采用Date类型,则会报格式转换错误的异常.解决方式一:将 @DateTimeFormat(pattern = “yyyy-MM-dd HH:mm:ss”) 注解添加到实体类的字段上.优点:可以灵活定义接收的类型缺点:不能实现全局统一处理,要为每个需要转换的字段添加注解方式二:定义一个 BaseController 基础类,在类中使用 @InitBinder 注解定义一个全局的日期格式转换的方法,在定义其它Control
2022-01-16 21:23:28
1111
原创 Spring Boot 项目启动错误 提示 java.lang.ClassNotFoundException org.apache.log4j.Logger
问题描述spring boot项目升级到2.x,启动时出现错误提示:java.lang.ClassNotFoundException: org.apache.log4j.Logger原因查看maven的依赖结构,发现升级到2.x后,org.slf4j的依赖不全,导致出现版本兼容问题.解决spring boot 2.x 默认采用 logback 记录日志,手动添加日志依赖,并排除 log4j相关依赖.maven 的 pom.xml 中做如下处理:<dependency> &l
2022-01-16 21:20:43
2888
原创 CentOS 6 安装并配置 MySQL 5.6
1. 添加 MySQL Yum 存储库将MySQL Yum存储库添加到系统的存储库列表中;1.1 到MySQL官网下载MySQL Yum存储库(https://dev.mysql.com/downloads/repo/yum/)1.2 下载适合的发行包,将下载的 rpm 包上传到 CentOS 服务器上;1.3 进入 rpm 包所在目录,使用如下命令安装发行包;yum localinstall mysql80-community-release-el6-3.noarch.rpm将MySQL
2022-01-16 21:19:14
1358
原创 Spring Boot 项目部署到 Linux服务器
项目部署1.首先将SpringBoot项目打包成JAR包,然后通过FTP工具上传到Linux,执行如下命令:java -jar xxx.jar &该命令执行后,启动jar,一旦shell窗口关闭后,JAR就停止运行了.若需要项目在后台一直运行,需要通过如下命令启动JAR:nohup java -jar xxx.jar > console.log 2 > &1 &上述 2 和 1 的含义如下:0 标准输入 (一般是键盘)1 标准输出 (一般是显示
2022-01-16 21:13:06
548
原创 Spring 线程池配置
Spring 通过 ThreadPoolTaskExecutor 实现线程池技术,它是使用 JDK 中的 java.util.concurrent.ThreadPoolExecutor 进行实现;Spring 配置线程池,两种方式:方式1:XML 中配置 bean<!-- 包路径扫描 --><context:component-scan base-package="spring.task"/><!-- Spring线程池 --><bean id="ta
2022-01-15 23:24:15
3929
原创 SSM 集成 Freemarker 模板引擎
背景在前后端分离的大趋势下,项目开发过程中,应尽量减少前端和后台的依赖和耦合,前端和后台尽可能采用 ajax 进行交互;但是全站 ajax,不利于网站 SEO,所以引入模板引擎,尽量减少前端对后端的依赖;SSM 架构下一般采用 Freemarker,Spring Boot 架构下一般推荐采用 Thymeleaf 模板引擎;SSM 集成 Freemarker1、引入依赖<!-- Freemarker 模板引擎 --><dependency> <groupId&g
2022-01-15 23:23:30
309
原创 Maven自动部署项目到远程Tomcat服务器
配置 tomcat 的 manager1、修改 tomcat服务器下的 /conf/tomcat-users.xml 文件,在尾部添加如下内容;<role rolename="manager-gui"/><role rolename="manager-script"/><user username="admin" password="password" roles="manager-script"/><user username="root" passwo
2022-01-15 23:21:04
750
原创 优雅的获取request请求中的参数信息
背景在Web项目中,有时需要手动获取 HttpServletReqeust中的请求参数,进行个性化处理或分析;比如在日志记录中需要获取请求参数;这里展示两种获取请求参数的方式:方式一:/*** 将浏览器参数存储到Map,对GET请求进行中文乱码处理** @param request* @return*/public static Map<String, Object> getParamsMap(HttpServletRequest request) { Map<
2022-01-14 02:01:48
356
原创 获取@RequestBody请求的参数信息报错:java.io.IOException Stream closed
问题描述项目中采用spring aop进行日志记录,在切面类通知方法中编写日志逻辑时,需要获取 HttpSevletRequest 中的请求参数;对于普通参数来说,没有任何问题,但是当请求方式为 POST/PUT 并并且是 @RequestBody 标记的请求,在获取JSON参数时,会出现 java.io.IOException: Stream closed 异常;原因HttpServletReqeust获取输入流时仅允许读取一次,spring已经对 @ReqeustBody 提前进行了处理,通过断点
2022-01-14 02:00:48
1463
原创 spring集成aop进行个性化日志记录
背景项目日志记录框架一般采用 log4j,logback,日志框架基本支持自动化日志记录和生成日志文件,但有时对于一些比较重要的日志信息往往需要保存到数据库中进行存储,此时需要自定义日志记录规则,同时不能影响现有业务的代码,因此需要基于 spring aop 的思想,动态的将日志记录功能代码切入到程序中指定位置;优点日志记录十分灵活,代码复用率高通过切入点表达式切入指定位置,对现有程序无侵入能够实现较为复杂的日志记录逻辑代码实现方式这里以 spring 4.x web 项目为例:引入
2022-01-14 01:59:45
103
原创 解决 RestTemplate 请求结果 中文乱码
Spring Boot 中使用 RestTemplate 进行远程接口调用,在请求结果中有可能出现中文乱码的情况,需要 设置 StringHttpMessageConverter 的编码格式为 UTF-8;创建 RestTemplateConfig 配置类,编码如下:package com.dongzz.boot.security.common.config;import org.springframework.context.annotation.Bean;import org.springfr
2020-12-27 20:18:55
1120
2
原创 CentOS 下 安装配置 Vim编辑器
描述: 我们在安装了 centOS 后,默认安装了 VI 编辑器,但是 VIM 编辑器时没有安装的,因此输入 vim a.txt 命令时,会提示 ‘命令未找到’,因此我们需要在 Linux 系统中安装 VIM 编辑器;安装:vim 编辑器需要安装如下三个包:vim-enhanced-7.0.109-7.el5vim-minimal-7.0.109-7.el5vim-common-7.0.109-7.el51 查看本机是否安装了 vim:rpm -qa | grep vim若 vim
2020-12-07 14:54:54
350
原创 Web项目上线时 Tomcat 优化配置
描述: 我们的 web 项目开发完成后,需要打包,部署到 Tomcat 服务器,项目上线时,我们需要对 Tomcat 进行优化配置,让每个 Tomcat 性能发挥到最佳;这里我们从内存、并发、和缓存,三个方面进行优化;1.内存优化内存优化主要是对启动参数优化,修改 Tomcat 启动脚本 catalina.sh,添加 JAVA_OPTS 参数;JAVA_OPTS 说明:server 启用JDK的 server-Xms JVM初始化时的最小内存-Xmx JVM可使用的最大内存;-XX
2020-12-07 14:53:20
144
原创 Java服务端 获取 客户端请求的真实IP
描述: 服务端在接收客户端请求的时候,为了保证系统的安全性,一般在服务端需要进行签名认证或者是对客户端ip进行访问控制,那么进行 ip 控制时,我们首先需要获取客户端请求的真实 ip 地址;情况1:客户端未经过任何代理,直接访问服务器String ip = request.getRemoteAddr() // 直接获取客户端 ip情况2:客户端经过多级代理,最终访问服务器/** * 获取当前网络ip * @param request 请求* @return */ public S
2020-12-07 14:49:44
277
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人