- 博客(55)
- 收藏
- 关注
转载 Java日志规范
因为一般系统的debug日志会很多,并且各种框架中也大量使用 debug的日志,线上开启debug不久可能会打满磁盘,影响业务系统的正常运行。SLF4J 是门面模式的日志框架,有利于维护和各个类的日志处理方式统一,并且可以在保证不修改代码的情况下,很方便的实现底层日志框架的更换。这样的条件时,可以在分支的首行就打印日志,这样排查问题时,就可以通过日志,确定进入了哪个分支,代码逻辑更清晰,也更方便排查问题了。方法,浪费了系统资源,执行了上述操作,最终日志却没有打印,因此建议。比如说,方法进来的时候,打印。
2024-10-22 19:15:20 17
原创 网关过滤器实现接口签名检验
往往项目中的可能被别有用心者对其,或者为此我们行业内使用比较多的策略是。签名校验的实现可以用的形式实现,也可以使用过实现,此篇文章博主将会介绍如何。
2024-05-15 11:02:18 513
原创 接口安全设计之防篡改和防重放
之所以想跟大家分享怎么做好基础的接口安全,一方面是工作需要,之前这部分的工作是我在负责,所以正好有这部分的经验;二是我之前也接触过很多做后端的同学,对于这一块大部分涉及不深或不太了解,也不知道怎么样做才算相对安全。所以把我的想法写出来,供大家参考和讨论,共同学习和进步。当然了,我分享的也只是我的个人经验,自然有很多的不足之处,也并不是说我后续阐述的一些观点和实现就一定是安全的,大家要加入自己的判断,并且混入一些定制化的东西。
2024-05-13 14:39:49 1241 1
原创 Sentinel 控制台学习
Sentinel 系统自适应限流从整体维度对应用入口流量进行控制,结合应用的 Load、CPU 使用率、总体平均 RT、入口 QPS 和并发线程数等几个维度的监控指标,通过自适应的流控策略,让系统的入口流量和系统的负载达到一个平衡,让系统尽可能跑在最大吞吐量的同时保证系统整体的稳定性。从上图可以看到,快速失败方式下,会出现5个接口调用成功,5个接口调用失败,并且会有一个5秒钟的时间间隔(自己设置的时间间隔),排队等待就是利用这个时间间隔,处理处于等待中的请求,从而实现流控。
2024-04-30 10:30:59 1858
原创 SpringCloud Sentinel集成到微服务项目中(保姆级教程)
随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel以流量为切入点,从流量控制熔断降级系统负载保护等多个维度保护服务的稳定性。Sentinel丰富的应用场景: Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、实时熔断下游不可用应用等。完备的实时监控: Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况。
2024-04-29 16:45:39 1435
原创 Git的SSH密钥配置
SSH密钥生成结束后,你可以在SSH目录下看到私钥id_rsa和公钥id_rsa.pub这两个文件,不要把私钥文件id_rsa的信息透露给任何人。因此,如果你想要使用ssh url克隆的话,你必须是这个项目的拥有者(项目成员),否则你是无法添加ssh key的。,或者类似但秘钥类型不同的文件,如果存在,说明已经有ssh Key. 没有的话,创建新的ssh key。的,如果配置ssh key的时候设置了密码,则需要输入密码的,否则直接是不需要输入密码的。:可以随意克隆github上的项目,不管是谁的项目。
2024-04-19 14:13:34 911
原创 为什么微服务一定要有网关?
为什么一定要用网关,不用网关不行吗?服务网关 = 路由转发 + 过滤器1、路由转发:接收一切外界请求,转发到后端的微服务上去。2、过滤器:在服务网关中可以完成一系列的横切功能,例如权限校验、限流以及监控等,这些都可以通过过滤器完成(其实路由转发也是通过过滤器实现的)
2024-04-17 13:45:31 853
原创 自定义注解实现对实体类的字段进行校验
定义一个**@Odd注解,通过@interface**声明一个注解// 校验对象里的age域的值是奇数,这时候就可以创建以下注解Class
2024-04-03 16:20:48 423
原创 synchronized是重量级锁???
synchronized锁经过多次迭代优化,已经不像以前那么重了,在JDK1.8的ConcurrentHashMap源码中已经大量使用synchronized做同步控制,大家在日常开发中可以放心使用了。
2024-03-11 14:06:05 837
原创 常见的持久层框架包括
灵活性和控制权:Hibernate和MyBatis相对于Spring Data JPA和Spring JDBC提供了更高的灵活性和控制权。它使用JPA(Java持久化API)标准来进行对象和关系数据库的映射,通过自动生成常见的数据库访问方法,减少开发人员的重复工作。Hibernate和MyBatis则需要更多的学习和配置,但在面对复杂的数据模型和查询时,提供了更多的功能和灵活性。综上所述,选择持久层框架需要综合考虑项目需求、团队经验、性能和扩展性等因素,并权衡不同框架的特点和优劣势,选择最适合的框架。
2024-01-26 18:03:25 1311
原创 解释 Git 的基本概念和使用方式。
远程仓库(Remote Repository):远程仓库是位于网络上的仓库,用于多人协作开发和备份代码。Git可以通过克隆(Clone)远程仓库到本地,并通过推送(Push)和拉取(Pull)更新远程仓库的代码。提交(Commit):提交是Git中的一个操作,表示将当前文件的改动保存到版本历史中。总之,Git是一个强大而灵活的版本控制工具,可以帮助开发者更好地管理项目的代码,并实现多人协作开发。命令查看当前仓库的状态,包括修改的文件、暂存区的文件等信息。命令将一个分支的改动合并到另一个分支中。
2024-01-19 14:12:42 771
原创 java策略模式代码案例
*** 结算抽象类/*** 此方法用来判断具体执行哪一个实现类* @param operation 操作枚举* @return/*** 结算核心算法* @param BigDecimal amount 金额* @param string currencyType 币种类型/*** 人名币结算实现类*/@Slf4j@Service@Override@Override//todo 具体自己的业务逻辑。
2024-01-19 13:25:24 698
原创 6年Java开发经验的工程师需要掌握的技能
总之,6年Java开发经验的工程师需要具备全面的技能和知识,能够独立完成项目并解决开发过程中的各种问题。
2024-01-16 16:54:39 488
原创 简单介绍Docker
Docker 是一种应用容器化技术,它通过将应用程序及其依赖项打包到容器中,在不同的操作系统和平台上实现了可移植性和跨平台性。容器是基于镜像运行的实例,即应用程序在运行时的环境。多租户能力:Docker 可以为多租户应用程序提供独立的容器运行环境,使得多个应用程序可以在同一个主机上运行而不互相干扰。快速部署:由于 Docker 是轻量级的容器技术,它可以快速地部署和启动应用程序,使得应用程序的交付速度更快。跨平台性:Docker 可以在不同的操作系统和平台上运行,使得应用程序在不同的环境中具有可移植性。
2023-12-04 09:59:05 559
原创 程序员养生指南:在bug和产品间寻找平衡
作为程序员,我们每天都要面对无数的bug和让人崩溃的产品需求。但是,我们也要照顾好自己,才能在代码的世界中保持健康。
2023-12-01 15:35:43 539
原创 优秀编程习惯一: Git提交如何写注释
feat - A new feature,fix - A bug fix,代码提交注释怎么写,代码提交注释,IDEA提交代码
2023-12-01 11:13:03 678
原创 数据库语言分类 DQL、DML、DDL、DCL区别
我们在创建表的时候用到的一些sql,比如说:CREATE、ALTER、DROP等。主要是用在定义或改变表的结构,数据类型,表之间的链接和约束等初始化工作上。
2023-11-02 11:15:26 80
转载 【ES知识】ES基础查询语法一览
Elasticsearch是一个分布式的RESTful 风格的搜索和数据分析引擎,它使用方便,查询速度快,因此也被越来越多的开发人员使用。本篇文章主要带大家过一下ES的基础查询语法那么到这里ES的基础语法就给大家介绍完了,如果还想了解更多可以去阅读官方的相关文档。看了这一篇,你对于ES的一些常用操作基本就可以满足了。
2023-10-17 10:28:02 1736
原创 java项目部分文件或文件夹功能及作用的简单介绍
idea文件夹是存储IntelliJ IDEA项目的配置信息,主要内容有IntelliJ IDEA项目本身的一些编译配置、文件编码信息、jar包的数据源和相关的插件配置信息。一般用git做版本控制的时候会把.idea文件夹排除,因为这个文件下保存的都是个人本地Idea编译器的配置。IDEA中的.iml文件是项目标识文件,缺少了这个文件,IDEA就无法识别项目。并且这些文件不同的设备上的内容也会有差异。存放web应用需要的各种JAR文件,放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件。
2023-10-11 09:57:53 607
原创 java对象实例化时的顺序(静态成员变量、静态代码块、成员变量、方法块加载、构造函数加载)
3、需要的类加载完成后,开始创建对象,首先会加载非静态的成员,主要包括非静态成员变量的初始化,非静态语句块的执行,在加载时按代码的先后顺序进行。2、在类被加载的同时会将静态成员进行加载,主要包括静态成员变量的初始化,静态语句块的执行,在加载时按代码的先后顺序进行。4、最后执行构造器,构造器执行完毕,对象生成。1,父类的静态成员变量和静态代码块加载。2,子类的静态成员变量和静态代码块加载。3,父类成员变量和方法块加载。5,子类成员变量和方法块加载。4,父类的构造函数加载。6,子类的构造函数加载。
2023-09-26 14:58:33 674
原创 什么是Maven快照(SNAPSHOT)
每次构建时,会优先去远程仓库中查看是否有最新的"abc-1.0-SNAPSHOT.jar",若是有则下载下来使用。即便本地仓库中已经有了"abc-1.0-SNAPSHOT.jar",它也会尝试去远程仓库中查看同名的jar是不是最新的。假设项目中现在依赖"abc-1.0",在第一次构建的时候会把该库从远程仓库中下载到本地仓库缓存,之后再次构建都不会去访问远程仓库了。带有"-SNAPSHOT"表示使用的依赖为快照版本,不带"-SNAPSHOT"为正式版本。
2023-08-10 18:14:34 1502
原创 java中socket编程什么场景会使用
同时,Java中提供了丰富的网络编程API,例如Socket、ServerSocket、DatagramSocket等类,可以满足不同的网络编程需求。另外,Java中的网络编程API支持多线程编程,可以实现高并发的网络应用程序。因此,Java中的Socket编程在网络编程中具有广泛的应用场景。Java中的Socket编程主要应用于网络编程,可以用于开发各种网络应用程序,例如基于TCP协议的客户端/服务器应用、基于UDP协议的数据报传输应用、基于HTTP协议的Web应用等。
2023-08-05 10:37:42 247
原创 爽完多线程开发
多线程大家肯定都不陌生,理论滚瓜烂熟,八股天花乱坠,但是大家有多少在代码中实践过呢?很多人在实际开发中可能就用用@Async,new Thread()。线程池也很少有人会自己去建,默认的随便用用。在工作中大家对于多线程开发,大多是用在异步,比如发消息,但是对于提效这块最重要的优势却很少有人涉及。因此本篇文章会结合我自己的工作场景带大家去发掘项目中的多线程场景,让你的代码快如闪电。Cpu为了均衡与内存的速度差异,增加了缓存–导致了可见性问题操作系统增加了进程和线程,分时复用CPU,进而均衡CPU与IO设备的速
2023-07-03 16:20:04 97
原创 Git版本代码管理
把自己开发分支 feature-XXX 提交和Push后切换到release分支,然后通过idea的git分支管理merge自己分支代码到release,有冲突解决冲突:如图。把自己开发分支 feature-XXX 提交和Push后切换到test分支,然后通过idea的git分支管理merge自己分支代码到test,有冲突解决冲突:如图。把自己开发分支 feature-XXX 提交和Push后切换到dev分支,然后通过idea的git分支管理merge自己分支代码到dev,有冲突解决冲突:如图。
2023-05-16 14:18:36 87
原创 maven操作中package、install、deploy 的区别
maven 最常用的命令: mvn clean package(install或者deploy) -Dmaven.test.skip。3、deploy 会把代码打成 jar 包,放到指定位置, 并同步到本地仓库, 并同步到远程仓库。2、install 会把代码打成 jar 包,放到指定位置, 并同步 到本地仓库;1、package 只会把代码打成 jar 包,放到指定位置, 不同步 到本地仓库。
2023-05-10 11:10:46 687
原创 hutool工具版本升级后部分API无法使用
如果升级到高版本,使用的某些api可能会没有或者其它情况出现;5.3.8有问题,升级到5.8.12后解决。初始化集合的地方有些API没有了.hutool版本升级后代码中使用。使用**【hutool】调用外部接口,使用了【发现是我们目标使用的。
2023-04-27 15:26:33 1461 2
原创 分布式和微服务的区别?
分布式系统和微服务架构都是在解决系统扩展性、灵活性和可维护性等问题上的一种架构风格,但它们在设计和实现上还是有一些区别的。分布式系统和微服务架构都是在解决大型系统的扩展性和可维护性等问题上的一种解决方案,但微服务架构更加强调服务的自治性和独立性,更适用于大型复杂系统的开发和维护。
2023-03-24 13:37:29 1452
原创 线程池设置线程数计算公式
线程数 = ((线程等待时间+线程CPU时间)/线程CPU时间 )* CPU数目。线程数 = CPU核数+1 (现代CPU支持超线程)
2023-03-19 22:01:41 630
原创 Linux 安装Docker + jenkins(如何快速安装docker+jenkins)
快速部署jenkins,快速安装docker+jenkins,docker,jenkins,docker+jenkins
2023-03-19 21:02:00 149
原创 如何三分钟搭建FinderWeb日志服务器(傻瓜式操作)
FinderWeb是一个高性能的Web版分布式文件管理工具,支持文件在线管理,日志文件在线查看和搜索.监控组件支持远程监控其他主机的系统状态和远程JVM的状态。
2023-03-19 20:46:26 1253 2
原创 微服务:OpenFeign进行服务通讯时携带Token数据
以上就是OpenFegin在服务之间通讯中,携带token的实现方法了。其实挺简单的,就两步。
2023-03-14 18:31:44 1697
原创 Spring Cloud 核心组件
各个服务启动时,Eureka Client 都会将服务注册到 Eureka Server,并且 Eureka Client 还可以反过来从 Eureka Server 拉取注册表,从而知道其他服务在哪里。:发起请求是通过 Hystrix 的线程池来走的,不同的服务走不同的线程池,实现了不同服务调用的隔离,避免了服务雪崩的问题。:基于 Feign 的动态代理机制,根据注解和选择的机器,拼接请求 URL 地址,发起请求。:服务间发起请求的时候,基于 Ribbon 做负载均衡,从一个服务的多台机器中选择一台。
2023-01-12 11:44:20 73
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人