
后端
文章平均质量分 84
JackieZhengChina
70'码农,优快云博客专家,信息系统项目管理师,工商管理硕士,CZB政采评审专家,中国采购与招标专家库专家,自驾爱好者,近20年教育类产品研发及管理经历,曾任教育科技公司联合创始人兼产品VP、科技公司产研VP。
职业标签:产品、项目、技术、运营、管理、战略。
展开
-
京东App秒级百G日志传输存储架构设计与实战
我们可以简单的做一些对比,主要在于硬件成本和软件性能的对比。从上文可知,磁盘的占用原始方案占用了磁盘(1份),MQ(2份),数据库(1份)。而在新的方案中,磁盘的占用仅剩下clickhouse的(0.8份),clickhouse自身又对数据做了压缩,实际占用空间不到入库容量的80%。那么仅磁盘即可节省75%以上的存储成本。大家都知道,秒级的吞吐量,是伴随着服务器Cpu的耗费的,并不是说只给个大硬盘,即可一台服务器每秒吞吐1个G的。原创 2024-09-17 12:28:06 · 1373 阅读 · 0 评论 -
Java22 的新特性
Java22 在 2024 年 3 月 19 日发布GA版本,共十二大特性:JEP 423: G1垃圾回收器的区域固定(Region Pinning for G1)JEP 447: super(...)前置语句(Statements before super(...),预览)JEP 454: 外部函数和内存API(Foreign Function & Memory API)JEP 456: 未命名变量和模式(Unnamed Variables & Patterns)原创 2024-09-14 09:05:59 · 1435 阅读 · 0 评论 -
Nginx 是如何解决惊群效应的?
第一次听到的这个名词的时候觉得很是有趣,不知道是个什么意思,总觉得又是奇怪的中文翻译导致的。复杂的说(来源于网络)TLDR;惊群效应(thundering herd)是指多进程(多线程)在同时阻塞等待同一个事件的时候(休眠状态),如果等待的这个事件发生,那么他就会唤醒等待的所有进程(或者线程),但是最终却只能有一个进程(线程)获得这个时间的“控制权”,对该事件进行处理,而其他进程(线程)获取“控制权”失败,只能重新进入休眠状态,这种现象和性能浪费就叫做惊群效应。简单的讲(我的大白话)原创 2024-09-09 07:56:14 · 943 阅读 · 0 评论 -
推荐两个最强的开源支付系统
一套适合互联网企业使用的开源支付系统,提供了交易、退款、转账、分账等开箱即用的功能,支持服务商特约商户和普通商户接口。目前已对接微信,支付宝,云闪付,京东支付,盛付通,农业银行官方接口,支持聚合码支付。后端基于 Spring Boot + Spring Security + MySQL + Redis + Hutool + MQ,前端基于 Ant Design Vue,支持分布式部署,提供高并发支持。原创 2024-09-07 10:19:56 · 1140 阅读 · 0 评论 -
一个比 Nginx 还简单的 Web 服务器
企业级的 Web 服务器非常多,Nginx、Tomcat、Apache、IIS、FastAPI、Flask 等。今天松哥再给大家介绍一个开源的 Web 服务器,这款服务器具备自动 HTTPS 功能和高度可配置性,它的名字是:Caddy。Caddy 是一个 Go 编写的 Web 服务器,类似于 Nginx,Caddy 提供了更加强大的功能,随着 v2 版本发布,Caddy 已经可以作为中小型站点 Web 服务器的另一个选择。:Caddy 的自动 TLS 功能,让 HTTPS 变得触手可及,无需额外配置。原创 2024-08-31 10:01:28 · 1741 阅读 · 0 评论 -
幂等设计的8种实现方式
接口幂等性就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。比如:公交车刷卡,用户上车后刷码支付扣款成功,如果用户再次点击按钮刷卡并扣款成功,用户查询余额返发现多扣钱了,流水记录也变成了两条,这就没有保证接口的幂等性。因此,当你重复刷卡时,会提示:刷码重复。注意:数据库可能产生幂等性问题,但是幂等性问题不只发生在数据库。原创 2024-08-07 09:23:50 · 773 阅读 · 0 评论 -
Spring Boot 内置工具类
Assert 关键字在 JDK1.4 中引入,可通过 JVM 参数-enableassertions开启。SpringBoot 中提供了 Assert 断言工具类,通常用于数据合法性检查。来源:juejin.cn/post/7043403364020781064。断言是一个逻辑判断,用于检查不应该发生的情况。获取当前对象的代理对象。原创 2024-07-17 13:06:59 · 333 阅读 · 0 评论 -
不暴露接口三种实现方案
在业务开发的时候,经常会遇到某一个接口不能对外暴露,只能内网服务间调用的实际需求。面对这样的情况,我们该如何实现呢?今天,我们就来理一理这个问题,从几个可行的方案中,挑选一个来实现。原创 2024-07-13 09:11:00 · 1114 阅读 · 0 评论 -
亿级IM聊天系统架构设计与重难点分析
IM系统就是即时通讯(Instant Messaging)系统的简称。IM其实并不局限于聊天、社交这类“典型”应用中,实际上它已经广泛运用于我们身边形形色色的软件中。聊天、直播、在线客服、物联网等所有需要实时互动、高实时性的场景等,都需要应用IM技术。1)微信、qq、钉钉等主流IM应用:这是IM技术的典型应用场景;2)微博、知乎等社区应用:它们利用IM技术实现了用户私信等点对点聊天;3)抖音、快手等直播/短视频应用:它们利用IM技术实现了与主播的实时互动;原创 2024-07-10 10:26:12 · 1305 阅读 · 0 评论 -
推荐一个比 Jenkins 使用更简单的项目构建和部署工具
Jpom 是一款 Java 开发的简单轻量的低侵入式在线构建、自动部署、日常运维、项目监控软件。原创 2024-07-10 09:00:20 · 1066 阅读 · 0 评论 -
10个高级的 SQL 查询技巧
如果您注意到,CTE很有用,因为您可以将代码分解为较小的块,但它们也很有用,因为它允许您为每个CTE分配变量名称(即toronto_ppl和avg_female_salary)递归CTE尤其有用,它涉及查询组织结构图,文件系统,网页之间的链接图等的分层数据,尤其有用。对于上表来说,Joe是唯一一个比他的经理工资更多的员工。Rank()返回从1开始的每行的唯一编号,除了有关系时,等级()将分配相同的数字。示例问题:给定天气表,写一个SQL查询,以查找与其上一个(昨天)日期相比的温度较高的所有日期的ID。原创 2024-06-27 09:22:15 · 695 阅读 · 0 评论 -
IntelliJ IDEA Dev Container 介绍
您可以打开一个项目,该项目的根目录中有.devcontainer文件夹和devcontainer.json文件,并使用Docker从IDE启动一个dev容器。您所指的项目应该有一个devcontainer.json文件,其中包含dev容器配置。管理开发容器后端:使用此选项管理开发容器后端,例如从开发容器中选择和删除不必要的后端。您可以从JetBrains网关本地启动开发容器,也可以使用SSH连接到远程服务器。3、在左侧栏中,单击“创建开发人员容器”,然后选择“创建开发工具容器和装载源”。原创 2024-06-23 09:08:58 · 2698 阅读 · 0 评论 -
PHP混淆加密以及常用的一些加密工具
PHP混淆加密是一种将源代码转换为难以理解和阅读的方式,以保护代码的。版权声明:本文为作者原创文章,转载请附上博文链接!以下是一些常用的收费加密工具,可以用于加密。a 替换为 a替换为。作者:Byte Beat。原创 2024-06-17 10:10:39 · 2586 阅读 · 1 评论 -
Java:Bean、Entity、Model、Domain区别与作用
比如一个招聘网站的项目,最重要的对象就是简历了,那么简历是怎么存到数据库的呢,不可能用一张表就能存的,因为简历包含基本信息和工作经验,项目经验,学习经验等。entity 的意思就是实体的意思,所以也是最常用到的,entity 包中的类是必须和数据库中的表相对应的,比如说:数据库有个 user 表,字段有 bigint 类型的 id,varchar 类型的姓名,那么 entity 包中的 User 类也必须是含有这两个字段的,且类型必须一致。所以开发的时候,建类建包的命名规范性还是很重要的。原创 2024-06-13 10:47:03 · 945 阅读 · 0 评论 -
主流后端开发语言对比
Java 是一种跨平台的面向对象编程语言,通过 JVM(Java 虚拟机)实现跨平台性。Java 的执行效率相对较低,但在大型企业应用和Web开发中得到广泛应用。Java 基于类和对象的面向对象编程范式,具有自动内存管理和垃圾回收机制。中等。Java 的语法相对简单,但面向对象的概念需要时间理解。Java 在企业级应用和Android开发领域市场占有率高。Java 拥有庞大的开发者社区和丰富的资源支持。Spring Framework、Apache Struts 等。原创 2024-06-13 09:40:54 · 1308 阅读 · 0 评论 -
Go模板页面浏览器显示HTML源码问题
以注释开始的页面会直接在浏览器输出HTML源码。3、文件头注释下移放其它位置。2、无 “DOCTYPE”原创 2024-06-10 07:47:05 · 577 阅读 · 0 评论 -
GOROOT,GOPATH,GOMOD解析、Windows上Go环境配置、常用命令记录
可以设置多个,其中,第一个将会是默认的包目录,使用 go get 下载的包都会在第一个path中的src目录下,使用 go install时,在哪个GOPATH中找到了这个包,就会在哪个GOPATH下的bin目录生成可执行文件;, 初始化模块,module_name可填可不填,不填的话就是采用项目文件夹的名称,会在项目根目录下生成一个go.mod的文件。只要有开启gomod功能,go get就不会再把包放在src下的package,而是会放在。下载完成之后,一直Next,选择安装路径,Finish!转载 2024-06-09 21:44:05 · 632 阅读 · 0 评论 -
Go语言超全详解
如下的代码中我们定义了一个类型为int的变量。Len int也就是说字符串结构由两个信息组成:第一个是字符串指向的底层字节数组,第二个是字符串的字节的长度。字符串其实是一个结构体,因此字符串的赋值操作也就是reflect.StringHeader结构体的复制过程,并不会涉及底层字节数组的复制,所以我们也可以将字符串数组看作一个结构体数组。字符串和数组类似,内置的len函数返回字符串的长度。Data uintptr // 指向底层的的数组指针Len int // 切片长度。原创 2024-06-09 16:42:05 · 6363 阅读 · 2 评论 -
laravel框架知识点
laravel介绍了什么是Laravel框架;然后,讲解了开发环境的搭建步骤,完成了Apache安装,以及Composer依赖管理工具安装;最后并对Laravel框架的目录结构进行了演示。介绍了框架中路由的定义和使用,然后讲解了控制器的使用以及如何在控制器中接收用户输入数据,最后讲解了视图的使用。讲解了CSRF攻击和在框架中如何防御CSRF攻击,然后演示Session机制和中间件的使用方法。转载 2024-05-30 21:28:21 · 275 阅读 · 0 评论 -
php-fpm详细讲解(转载请删除括号里的内容)
原文:https://blog.youkuaiyun.com/weixin_39934453/article/details/135935086。它与传统的模块式PHP(如Apache模块)相比,将PHP解析和执行过程单独封装为一个独立的进程池,通过FastCGI协议与。PHP-FPM(FastCGI Process Manager)是PHP的一种运行模式,用于处理动态。版权声明:本文为作者原创文章,转载请附上博文链接!作者:PHP隔壁老王邻居。转载 2024-05-30 19:42:33 · 43 阅读 · 0 评论 -
PHP最主流的10个框架,其发展历史及主要特点
PHP快速入门与实战在这篇博客中,我们将介绍PHP十大主流框架,同时在本专栏的后续内容里面,会对这些框架的设计思想及底层源码进行深度的分析,欢迎大家先点个关注。LaravelLaravel是一款由Taylor Otwell开发的开源PHP Web应用程序框架,它的第一个版本发布于2011年。Laravel以简单、优雅、富有表现力为设计思想,它基于MVC的设计模式,提供了大量的功能和工具,帮助开发者快速构建高质量的Web应用程序。转载 2024-05-28 21:16:13 · 3481 阅读 · 0 评论 -
Laravel和ThinkPHP框架比较
Laravel和ThinkPHP作为两个知名的PHP框架,在性能和开发体验方面各有优劣。Laravel在功能性和开发体验方面表现出色,但在资源消耗,以及数据并发处理方面需要更多注意;而ThinkPHP则有较轻量的特性和稳定的高并发表现受到开发者的喜爱。原创 2024-05-28 08:09:16 · 1316 阅读 · 0 评论 -
一张长图透彻理解SpringBoot 启动原理,架构师必备知识
下图代码说明了,Spring在初始化全部 单例Bean以后,会执行 SmartInitializingSingleton 接口。SpringBoot 会在Spring完全启动完成后,才开启Http流量。应该在Spring启动完成后开启入口流量。Rpc和 MQ流量 也应该如此,所以建议大家 在 SmartLifecype 或者 ContextRefreshedEvent 等位置 注册服务,开启流量。例如 Spring CloudEureka服务发现组件,就是在 SmartLifecype中注册服务的!原创 2024-05-26 15:35:53 · 914 阅读 · 0 评论 -
Mockito使用详解
Mockito是一个针对 Java 的单元测试模拟框架,可以简化单元测试过程中测试上下文对象。模拟方法的返回值、模拟抛出异常验证方法被调用次数、验证方法参数类型捕获方法参数值为真实对象创建一个监控(spy)对象不能 Mock 静态方法不能 Mock private 方法不能 Mock final class1)Mockito:简单轻量级的做mocking测试的框架;2)mock对象:在调试期间用来作为真实对象的替代品;转载 2024-05-20 16:39:16 · 2875 阅读 · 0 评论 -
IDEA快捷键以及快速生成代码
lazy 快速生成 判断指定类变量是否==null ,== null 则new 该类变量的 if 语句 代码段。“test”.inst 或者 “test”.instanceof。ifn 快速生成 判断是否==null 的 if 语句 代码段。psfs 快速生成 公有静态常量 String 语句 代码段。“test”.nn 或者 “test”.notnull。serr 快速生成 err打印语句 语句 代码段。prsf 快速生成 私有静态常量 语句 代码段。psf 快速生成 公有静态常量 语句 代码段。转载 2024-05-13 07:39:29 · 1642 阅读 · 0 评论 -
SpringBoot的启动器——Spring-boot-starter介绍和常见启动器
Ø spring-boot-starter-jpa:支持 spring 以 jpa方式操作数据库的 jar 包的集合。 Ø spring-boot-starter-redis:支持 redis 键值存储的数据库操作。:支持全栈式的 web 开发,包括了 tomcat 和 springMVC 等 jar包。 Ø 相关依赖的自动导入。 Ø 相关环境的自动配置。原创 2024-05-09 19:36:13 · 2184 阅读 · 0 评论 -
maven 工程结构 和 archetype 模板
如果找不到满意的第三方模板,也可以自己定义一个,这样以后每次生成项目的时候就可以使用自己的模板了想创建自己的模板,这时候我们 Maven 的目录结构又有新要求了,其核心的目录结构如下:1.目录内容,就是我们的模板内容,用来定义模板结构2.把要生成的文件声明在这个文件中,这个文件也可以命名为但是语法也会有变化,我个人比较推荐,感觉语法比较简单现在就演示一下,如何定义一个模板,然后通过这个模板创建项目1. 按照目录要求,创建模板项目手动创建或通过已有模板。转载 2024-05-09 12:36:26 · 218 阅读 · 0 评论 -
短短两年下滑40%!世界最好语言PHP为何哑火了?
总而言之,PHP 不再是世界上最好的编程语言,相反2024 年的 PHP 几乎成了 Web 开发领域爹不疼、娘不爱的“孤儿”,而 Python 则是在家、在校都备受关注的宠儿,特别是 AI 大模型新时代下,Python 强大的生态越来越爆发出惊人的力量和无穷的潜力!:作为 PHP 最著名的应用案例之一,WordPress 逐渐加大对 JavaScript 的依赖,特别是通过 Gutenberg 项目推动 JavaScript 优先的开发模式,降低了 PHP 的重要性。转载 2024-05-02 09:05:07 · 355 阅读 · 0 评论 -
测试驱动开发(TDD)实践与技巧
预先设计可能会让你陷入思维旋涡,为了追求设计的完美,你可能会思考每一种可能发生的情况,并期望设计出一种可以应对所有情况的软件,但通常预先设计是过度设计,甚至是错误的设计。这就是TDD的全部内容。我们已经完成了将两个比特转换成浮点数值的函数,如果了解过音频的同学可能注意到了,我们编写的代码不符合音频处理的使用习惯,因为音频处理中,采样点的范围应该是[-1, 1]。TDD则着力于代码设计,测试主要用于描述你要构建的行为,这些测试大都是TDD流程的附属产物,有了这些测试,在接下来改动代码的时候,你将更有信心。转载 2024-04-30 08:45:26 · 105 阅读 · 0 评论 -
一文读懂堆与栈的区别
堆(Heap)与栈(Stack)是开发人员必须面对的两个概念,在理解这两个概念时,需要放到具体的场景下,因为不同场景下,堆与栈代表不同的含义。一般情况下,有两层含义:(1)程序内存布局场景下,堆与栈表示两种内存管理方式。(2)数据结构场景下,堆与栈表示两种常用的数据结构。栈由操作系统自动分配释放 ,用于存放函数的参数值、局部变量等,其操作方式类似于数据结构中的栈。int b;//栈//栈char *p2;//栈。转载 2024-04-26 10:07:56 · 42 阅读 · 0 评论 -
一篇文章掌握整个JVM,JVM超详细解析
程序在运行过程中,会产生大量的内存垃圾(一些没有引用指向的内存对象都属于内存垃圾,因为这些对象已经无法访问,程序用不了它们了,对程序而言它们已经死亡),为了确保程序运行时的性能,java虚拟机在程序运行的过程中不断地进行自动的垃圾回收(GC)。GC是不定时去堆内存中清理不可达对象。不可达的对象并不会马上就会直接回收, 垃圾收集器在一个Java程序中的执行是自动的,不能强制执行清楚那个对象,即使程序员能明确地判断出有一块内存已经无用了,是应该回收的,程序员也不能强制垃圾收集器回收该内存块。转载 2024-04-26 09:35:11 · 415 阅读 · 0 评论 -
Spring、SpringBoot、SpringCloud三者的区别
Spring 是一个全功能的企业级 Java。转载 2024-04-22 08:09:55 · 410 阅读 · 0 评论 -
[转]【一文详解】知识分享:(ASP.Net Core基础学习及快速入门)
NET CLR(Common Language Runtime)是.NET的核心组成部分,它为.NET应用程序提供了一个运行环境。IL(Intermediate Language)是.NET Framework中的一种中间语言,也被称为CIL (Common Intermediate Language) 或 MSIL (Microsoft Intermediate Language)。转载 2024-04-08 07:13:51 · 844 阅读 · 0 评论 -
[转]DTO 和 POCO(或 POJO)有什么区别
DTO 和 POCO(或)有什么区别原文链接:https://ardalis.com/dto-or-poco/作者:Ardalis Steve在讨论 .NET 和 C# 中的软件开发时经常出现的两个术语是 DTO 和 POCO。一些开发人员交替使用这些术语。那么,DTO 和 POCO 之间有什么区别?首先,让我们定义每个术语。转载 2024-04-07 16:41:15 · 137 阅读 · 0 评论 -
分库分表的 21 条通用概念法则
本文介绍了关于分库分表架构的21个通用概念,有一定的了解之后,接下来我们将进入更深度的内容,包括读写分离数据脱敏分布式主键分布式事务配置中心注册中心Proxy服务等实战案例的讲解和源码分析。—END—转载 2023-05-20 10:03:36 · 274 阅读 · 0 评论 -
[转]mysql的sql优化工具
一般来说,SQL查询优化器分析给定查询的许多选项,预估每个选项的成本,最后选择成本最低的选项。如果查询优化器选择了错误的计划,则性能差异可能从几毫秒到几分钟。幸运的是,现在有许多第三方SQL查询优化工具可以自动优化每个SQL查询。这些工具极大地简化了开发人员和数据库管理员的工作,因为他们提供了正确的查询调优建议和索引建议。现在我们已经知道了SQL查询优化器的重要性,以下推荐几款不错的工具。转载 2022-12-19 08:14:30 · 1974 阅读 · 0 评论 -
SQL小技巧,动态输出本周各天日期
【代码】SQL小技巧,动态输出本周各天日期。原创 2022-11-07 20:04:50 · 444 阅读 · 0 评论 -
C# DataRow 转 Model 对象 再也不用一个字段一个字段去写了
【代码】C# DataRow 转 Model 对象 再也不用一个字段一个字段去写了。原创 2022-10-16 18:29:02 · 834 阅读 · 0 评论 -
WebApi 将 DataRow、DataTable转换成JObject返回
示例代码中只提供了Int32类型的处理,其它类型自己可以添加。原创 2022-09-28 19:17:59 · 1092 阅读 · 0 评论 -
Java 日志格式规范
在程序中写日志是一件非常重要,但是很容易被开发人员忽视的地方。写好程序的日志可以帮助我们大大减轻后期维护压力。在实际的工作中,开发人员往往迫于巨大时间压力,而写日志又是一个非常繁琐的事情,往往没有引起足够的重视。开发人员应在一开始就养成良好的日志撰写习惯,并且应在实际的开发工作中为写日志预留足够的时间。...转载 2022-08-01 11:00:28 · 1008 阅读 · 0 评论