自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(312)
  • 收藏
  • 关注

原创 各编程语言 + aardio 相互调用示例

'kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib' /*导入库*/edit={cls="edit";,'/D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL"' /*定义常数和宏*/

2022-09-25 09:24:42 1792 1

原创 【技术推荐】WebLogic 反序列化漏洞深入分析

WebLogic 漏洞存在较多的反序列化类和反序列化的途径,在使用黑名单防御手段下,攻击者只要找到新的反序列化触发点,就能造成新的危害。比如,你有一个类 A,类里面有个属性是类 B,这个时候,在反序列化的过程中,就会先反序列化类 A,之后在填充类 A 的过程中,继续反序列化类 B,类 B 在反序列化完成后,填充到类 A 中,同时整个过程都在一个流中操作,这个时候,只要还是 ObjectOutStream 的 read_value进行反序列化操作就不能饶过黑名单!

2022-09-25 09:23:11 3195 1

原创 #Lua:Lua调用C++生成的DLL库

时间 2022-09-24 20:16:00原文主题。

2022-09-25 09:20:25 681 1

原创 #Lua:Lua调用C++生成的DLL库

时间 2022-09-24 20:16:00原文主题。

2022-09-25 09:19:26 1385

原创 Dapr 可观测性之分布式追踪

虽然可以从底层基础架构中收集有关应用程序的一些数据(例如内存消耗、CPU 使用情况),但必须从层收集其他有意义的信息——该层可以显示如何执行一系列重要的调用跨微服务。这通常意味着开发人员必须为此添加一些代码来检测应用程序。通常,检测代码只是将收集到的数据(例如追踪和指标)发送到外部监控工具或服务,以帮助存储、可视化和分析这些信息。由于这部分代码并不是应用程序的核心逻辑,所以这自然成为了开发人员的另一个负担,有时需要了解监控工具的 API,使用额外的 SDK 等。这种工具也可能会增加应用程序的可移植性挑战。

2022-09-25 09:18:05 201

原创 Dapr 可观测性之分布式追踪

虽然可以从底层基础架构中收集有关应用程序的一些数据(例如内存消耗、CPU 使用情况),但必须从层收集其他有意义的信息——该层可以显示如何执行一系列重要的调用跨微服务。这通常意味着开发人员必须为此添加一些代码来检测应用程序。通常,检测代码只是将收集到的数据(例如追踪和指标)发送到外部监控工具或服务,以帮助存储、可视化和分析这些信息。由于这部分代码并不是应用程序的核心逻辑,所以这自然成为了开发人员的另一个负担,有时需要了解监控工具的 API,使用额外的 SDK 等。这种工具也可能会增加应用程序的可移植性挑战。

2022-09-25 09:16:04 306

原创 现代C++编程实践(八)—关于noexcept修饰符和noexcept操作符

关于这一点,想吐槽一下JAVA,大家都知道,JAVA有一个全局异常捕获机制,即使在最底层产生的一个异常也可以将其在最顶层进行捕获,很多java开发人员也就默认这种处理方式,在写代码的过程中也不会去在意一些细节,导致每次java异常都是抛出“一坨屎山”~。代码编译运行后,Throw和func_throw都在try...catch捕获到了异常,但是在fun_except却被调用了中断函数,使得程序执行中断,阻止了异常的扩散,这一点也和前面说的C++98以及C++17中的throw()执行效果是一样的。

2022-09-25 09:14:53 403

原创 JDK19新特性使用详解

JDK19于2022-09-20发布GA版本,本文将会详细介绍JDK19新特性的使用。

2022-09-25 09:13:35 571

原创 JDK19新特性使用详解

JDK19于2022-09-20发布GA版本,本文将会详细介绍JDK19新特性的使用。

2022-09-25 09:04:42 619

原创 MySQL 8.0.30,一个值得上车MGR的版本

MySQL 8.0.30,这个版本没有 MGR 方面的重大修改,为什么我说值得上车 MGR 呢?

2022-09-25 09:03:03 750

原创 一家中型互联网公司的架构演进之路

1.架构的定义架构(Architecture)这个词源自建筑行业,以下引用百度百科的描述。软件架构(Software Architecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。软件架构是一个系统的草图。通俗地来讲,技术架构就是对软件系统各个维度进行不同模块化的抽象,通过抽象使原本复杂的工程变得易于理解和分工实现。就像泰勒提出的科学管理,通过标准化的作业流程和分工,原本混沌复杂的软件工程被拆分出前端、后端、质量、运维等多个岗位。

2022-09-23 10:01:23 409

原创 JS 模块化 - 02 Common JS 模块化规范

暴露模块:或exports加载模块:require()Node:Node JS 支持 Common JS 规范;浏览器:需要使用browserify编译。

2022-09-23 10:00:10 162

原创 Java内部类初探

之前对内部类的概念不太清晰,在此对内部类与外部类之间的关系以及它们之间的调用方式进行一个总结。

2022-09-23 09:47:54 136

原创 Java内部类初探

之前对内部类的概念不太清晰,在此对内部类与外部类之间的关系以及它们之间的调用方式进行一个总结。

2022-09-23 09:46:46 126

原创 Java内部类初探

之前对内部类的概念不太清晰,在此对内部类与外部类之间的关系以及它们之间的调用方式进行一个总结。

2022-09-23 09:46:08 1418

原创 低代码平台能提升开发效率吗?

事实上,系统分布式的节点越多,系统架构就越庞大,集成和使用的第三方功能就越多,堆栈就越复杂,系统对人员、数据和代码的依赖程度也越高。在《Designing Web APIs》一书中,作者表示,API的设计和实施缺乏一致性,开发人员的使用体验糟糕,这两种情况会严重影响开发人员的工作效率。在不断的发展过程中,企业对单个交互节点的关注程度和安全性需求是持续变化和增长的,低代码平台能够尽可能的满足企业的这些需求——自动化平台可以确保只有满足质量和安全级别要求的API能够正常发布。分布式和解耦是不一样的概念。

2022-09-23 09:43:56 360

原创 在 Java 中如何加快大型集合的处理速度

尽管 Java 已经过了 25 岁生日,仍然是当今最受欢迎的编程语言之一。超过 100 万个网站通过某种形式在使用 Java,超过的软件开发人员的工具箱中有 Java。Java 在它的整个生命历程中经历了重大的演变。一个早期的进步出现在 1998 年,当时 Java 引入了 Collections Framework(Java Collection Framework,JCF),简化了操作 Java 对象的任务。

2022-09-23 09:32:48 332

原创 C++ “链链“不忘@必有回响之双向链表

双向链表的结点多了一个前驱指针位,对其内部数据的维护提供了大大的便利。对于程序而言,已知数据越多,算法也将会有更大灵活伸缩空间。

2022-09-23 09:30:55 171

原创 微服务架构,通俗易懂讲解

微服务架构(Microservice Architecture)是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦。你可以将其看作是在架构层次而非获取服务的,类上应用很多SOLID原则。微服务架构是个很有趣的概念,它的主要作用是将功能分解到离散的各个服务当中,从而降低系统的耦合性,并提供更加灵活的服务支持。概念:把一个大型的单个应用程序和服务拆分为数个甚至数十个的支持微服务,它可扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议。

2022-09-23 09:29:25 1016

原创 六种在 JavaScript 中将字符串转换为数组的方法

此方法返回字符的 Unicode 而不是实际字符,这可能会使我们的工作变得更复杂,但 MDN 文档已更新,因此,如果我们仅包含 u 标志,我们就可以使其与 Unicode 一起使用。​另一个是我们和 split() 方法有同样的麻烦:它不能分隔不常见的字符(我们看到的是 Unicode 而不是实际的字符)。​在这里消除了我们在 split() 中的限制也有帮助,考虑下面的例子,我们可以使用这种方法轻松拆分任何字符。阵列,from() 方法从可迭代或类似数组的对象创建一个新的、浅拷贝的 Array 实例。

2022-09-22 14:01:18 41523

原创 Dapr 集成 Open Policy Agent 实现 接口的访问控制

大型软件中各个组件都需要进行一些策略控制,比如用户权限校验、创建资源校验、某个时间段允许访问,如果每个组件都需要实现一套策略控制,那么彼此之间会不统一,维护困难。OPA正是解决这个问题,将散落在系统各处的策略进行统一,所有服务直接请求OPA即可。, 这将导致 foo 服务在调用服务bar-service的方法,该方法被为bar-service配置的 OPA 策略阻止。,通过Rego声明式语言实现决策逻辑,当系统需要做出策略时,只需携带请求查询OPA即可,OPA会返回决策结果。那么我们为什么需要OPA?

2022-09-22 13:59:37 102

原创 Dapr 集成 Open Policy Agent 实现 接口的访问控制

大型软件中各个组件都需要进行一些策略控制,比如用户权限校验、创建资源校验、某个时间段允许访问,如果每个组件都需要实现一套策略控制,那么彼此之间会不统一,维护困难。OPA正是解决这个问题,将散落在系统各处的策略进行统一,所有服务直接请求OPA即可。, 这将导致 foo 服务在调用服务bar-service的方法,该方法被为bar-service配置的 OPA 策略阻止。,通过Rego声明式语言实现决策逻辑,当系统需要做出策略时,只需携带请求查询OPA即可,OPA会返回决策结果。那么我们为什么需要OPA?

2022-09-22 13:58:23 376

原创 浅谈自旋锁和JVM对锁的优化

这样做的好处在于在线程执行这些代码时,就无须频繁申请与释放锁了,这样就减少了性能开销。一个对象在被初始化后,如果还没有任何线程来获取它的锁时,它就是可偏向的,当有第一个线程来访问它尝试获取锁的时候,它就记录下来这个线程,如果后面尝试获取锁的线程正是这个偏向锁的拥有者,就可以直接获取锁,开销很小。一个对象在被初始化后,如果还没有任何线程来获取它的锁时,它就是可偏向的,当有第一个线程来访问它尝试获取锁的时候,它就记录下来这个线程,如果后面尝试获取锁的线程正是这个偏向锁的拥有者,就可以直接获取锁,开销很小。

2022-09-22 13:57:29 99

原创 C++】GoogleTest入门指南

时间 2022-09-21 20:52:00原文主题。

2022-09-22 09:20:38 234

原创 两道超有意思的 CSS 面试题,试试你的基础

本文到此结束,希望对你有帮助 :)如果还有什么疑问或者建议,可以多多交流,原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知。

2022-09-22 09:18:12 138

原创 MySQL 8.0新的GTID持久化线程和GTID恢复方式

时间 2022-09-22 07:38:39原文主题虽然线程本身很简单,但是涉及到purge线程,事务/UNDO等核心概念。水平有限,仅供参考。

2022-09-22 09:16:04 439

原创 一文了解 Java 8 - 18,垃圾回收的十次进化

2014年3月JDK 8发布,自那以来JDK又连续发布了许多版本,直到今日的JDK 18是Java的第十个版本。借此机会,我们来回顾一下HotSpot JVM的垃圾回收器的发展全过程。HotSpot JVM中负责管理应用程序堆的组件叫做“垃圾回收器”(Garbage Collector,即GC)。GC负责管理应用程序堆对象的整个生命周期,从应用程序分配内存到内存被回收,都由GC负责。从高层来看,JVM垃圾回收算法的最基本功能如下:当应用程序请求分配内存时,GC负责提供内存。提供内存的过程应尽可能快。GC检测

2022-09-22 09:06:22 235

原创 项目上线一年,整理了一份SpringBoot性能优化方案!

SpringBoot已经成为Java届的No.1框架,每天都在蹂躏着数百万的程序员们。当服务的压力上升,对SpringBoot服务的优化就会被提上议程。本文将详细讲解SpringBoot服务优化的一般思路,并附上若干篇辅助文章作为开胃菜。1.有监控才有方向在开始对SpringBoot服务进行性能优化之前,我们需要做一些准备,把SpringBoot服务的一些数据暴露出来。比如,你的服务用到了缓存,就需要把缓存命中率这些数据进行收集;用到了数据库连接池,就需要把连接池的参数给暴露出来。

2022-09-22 09:03:39 773

原创 通用ORM的设计与实现

我们通用的ORM,基本模式都是想要脱离数据库的,几乎都在编程语言层面建立模型,由程序去与数据库打交道。虽然脱离了数据库的具体操作,但我们要建立各种模型文档,用代码去写表之间的关系等等操作,让初学者一时如坠云雾。我的想法是,将关系数据库拥有的完善设计工具之优势,来实现数据设计以提供结构信息,让json对象自动映射成为标准的SQL查询语句。只要我们理解了标准的SQL语言,我们就能够完成数据库查询操作。

2022-09-20 16:21:27 158

原创 通用ORM的设计与实现

我们通用的ORM,基本模式都是想要脱离数据库的,几乎都在编程语言层面建立模型,由程序去与数据库打交道。虽然脱离了数据库的具体操作,但我们要建立各种模型文档,用代码去写表之间的关系等等操作,让初学者一时如坠云雾。我的想法是,将关系数据库拥有的完善设计工具之优势,来实现数据设计以提供结构信息,让json对象自动映射成为标准的SQL查询语句。只要我们理解了标准的SQL语言,我们就能够完成数据库查询操作。

2022-09-20 16:17:24 1194

原创 新大陆!阿里 P9 整理出:Java 架构师“成长笔记”共计 23 版块

阿里巴巴一位 P9 级架构师总结出的共计 23 版块的 Java 架构师“成长笔记”,一经发布就受到了众多 Java 程序员同学的追捧,这份“成长笔记”涵盖了:Java 基础、JVM、多线程与高并发、Spring 源码解析、Spring Boot、Spring Cloud、微服务、Netty、RPC、网络、ZooKeeper、消息中间件、设计模式、负载均衡、数据结构与算法、分布式缓存等等内容!

2022-09-20 09:28:17 224 1

原创 从程序员到架构师,阿里巴巴 2022 全新出品 Java 程序员“成长笔记”满足了我的所有幻想

程序员是肯定不能停止学习的,这点想必大家也知道!只有不断地学习充实自己,才不会有所谓的“中年危机”!回到正题需要的朋友评论【学习】即可获取。

2022-09-20 09:16:27 125

原创 一文带你了解 Spring 的 @Enable 开头的注解

简单来说就是因为我们要使用的很多类并不在我们项目所在的包下面,我们不能将所有的依赖包都进行扫描,也不不方便将所有的配置类都通过 @Import​ 的方式进行导入,而是让每个功能的项目包都提供一个 @Enable 开头的注解,我们直接启用注解就可以达到效果。那如果在没有 @Enablexxx​ 注解的时候,我们直接通过 @Import​ 注解是可以这样写的,在一个 @Import​ 注解里面包含多个配置类,不过这种在配置类较多的场景下还是相对不够简洁的,因而才有了各自功能对应的 @Enable 注解。

2022-09-19 09:57:58 113

原创 一文带你了解 Spring 的 @Enable 开头的注解

简单来说就是因为我们要使用的很多类并不在我们项目所在的包下面,我们不能将所有的依赖包都进行扫描,也不不方便将所有的配置类都通过 @Import​ 的方式进行导入,而是让每个功能的项目包都提供一个 @Enable 开头的注解,我们直接启用注解就可以达到效果。那如果在没有 @Enablexxx​ 注解的时候,我们直接通过 @Import​ 注解是可以这样写的,在一个 @Import​ 注解里面包含多个配置类,不过这种在配置类较多的场景下还是相对不够简洁的,因而才有了各自功能对应的 @Enable 注解。

2022-09-19 09:47:34 582

原创 实现一个简单的Database1

作为一名开发人员,在工作中我每天都使用关系型数据库。但是对我来说,它们是一个黑盒。我有一些问题:数据存储使用什么格式?(在内存与磁盘中)数据什么时候从内存转移到磁盘?为什么每张表只能有一个主键?事务回滚是怎么工作的?索引是什么格式的?全表扫描时什么时候发生,如何发生的?预处理语句(prepared statement)是使用什么格式存储的?换句话说,数据库是怎么工作的?为了弄清楚这些,我从头写了一个数据库。

2022-09-19 09:46:31 409

原创 刷算法题常用的JS基础扫盲

此篇属于前端算法入门系列的第一篇,主要介绍常用的数组方法、字符串方法、遍历方法、高阶函数、正则表达式以及相关数学知识。前端算法入门一:刷算法题常用的JS基础扫盲 [1]前端算法入门二:时间空间复杂度&8大数据结构的JS实现 [2]前端算法入门三:5大排序算法&2大搜索&4大算法思想 [3]前端面试算法高频100题(附答案,分析思路,一题多解) [4]文章主要包含以下内容:数组常用方法字符串常用方法常用遍历方法&高阶函数常用正则表达式数学知识。

2022-09-19 09:45:17 134

原创 为什么C++中有函数指针还需要std::function?

看到了吧,我们常说的指针一般都是指向内存中的一段数据,而函数指针指向了内存中的一段代码,在这个示例中指向了内存地址0x400526,在这个地址中保存了函数func的机器指令。函数指针的作用是可以把一段代码当做一个变量传来传去,主要的用途之一就是回调函数,关于回调函数你可以参考《回调函数的实现原理》这篇文章。单纯的函数指针并没有捕捉上下文的能力,这里的上下文就是指代码依赖的数据,你不得不自己动手构造出一个结构体用来存储代码依赖的上下文。显然应该是func函数的在内存中的地址!

2022-09-19 09:43:32 492

原创 AOP实现系统告警

Inherited/*** 报警标题**//*** 发送报警格式:目前支持text,markdown*//*** 告警模板id*//*** 成功是否通知:true-通知,false-不通知*/}spring:alarm:# 开启通过模板配置# 配置模板来源为文件# 配置模板数据templateName: 服务异常模板templateContent: 这里是配置模板的内容,Boolean类型,表示开启告警消息使用模板发送。

2022-09-19 09:42:25 98

原创 Go 学习:从环境搭建到写一个 Web 服务

1、使用 embed 功能可以将静态资源打包到二进制的包中。2、Go 语言编译后的是一个二进制文件,在服务器上不需要进行运行时的安装即可运行。3、学习任何语言,语法部分可以通过刷刷力扣的题来进行熟悉,一个比较实用的小技巧。

2022-09-19 09:33:49 686

原创 深入理解美团 Leaf 发号器开源方案

再之,为了解决流量暴增的问题,采用了自适应号码段长度的优化思路。按照官方博客种的说法,这套方案再上线半年之后又遇到了问题 —— 发号 ID 段是固定的,但流量不是固定的,如果流量增加 10 倍,就会发现维持的时间很短,这样仍然有可能导致数据库压力较大。通过预加载的方式,Leaf 解决了尖刺的问题,并且提供了一定程度的数据库宕机高可用。上述方式虽然解决了数据库层的压力问题,但也存在一些问题,例如:在 ID 号码段发完时,这时候需要去进行数据库请求,这次请求的耗时就会突增,系统监控上就会出现耗时尖刺。

2022-09-19 09:32:13 1092

空空如也

空空如也

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

TA关注的人

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