
功能程序
文章平均质量分 78
Survivor001
这个作者很懒,什么都没留下…
展开
-
API性能监控 【ApiHelp】-- 组件Monitor 核心功能实现
该方法会记录当前方法中该http请求时间。methodException方法:该方法用于记录方法异常处理,因为方法结束处理正常结束,也有可能是抛出了异常,在Enhance组件中我们已经对入口方法进行了异常捕获操作,当该方法被调用时,旧意味着当前请求抛出了异常,也意味着请求调用结束。before方法:用于记录请求进入API是日志信息,在记录日志之前,会优先判断当前请求是否为新请求,如果为新请求则先清除缓存,在进行日志记录,同时记录当前方法的入口方法名称,以及请求线程到缓存中。当请求结束,则进行日志写处理。原创 2023-06-20 09:25:22 · 465 阅读 · 0 评论 -
API性能监控 【ApiHelp】-- 组件Monitor核心功能设计
Java Agent实现性能监控程序原创 2022-10-27 14:17:35 · 881 阅读 · 1 评论 -
API性能监控 【ApiHelp】-- 组件Enhance 代码实现 ~ ASM字节码增强
ApiHelp工具 Enhance组件核心代码实现,通过ASM框Tree Api 进行字节码实现各种增强设计和代码实现工作。原创 2022-10-19 16:34:02 · 540 阅读 · 0 评论 -
API性能监控 【ApiHelp】-- 组件Enhance 核心功能设计
自主研发工具 【ApiHelp】-- 组件Enhance 核心功能设计 -- API性能监控核心设计原创 2022-10-17 17:47:32 · 421 阅读 · 0 评论 -
API性能监控 【ApiHelp】-- 架构设计 和 技术方案
【ApiHelp】-- 架构设计 和 技术方案原创 2022-10-12 17:46:16 · 552 阅读 · 0 评论 -
API性能监控 【ApiHelp】-- 自主研发API性能监控工具-介绍
自主研发开发环境 API性能监控分析工具,配合辅助API性能优化工作原创 2022-10-12 15:47:17 · 988 阅读 · 0 评论 -
Mybatis3 深入源码 -- 分析Sql执行原理
上篇说到了getwapper方法获取到了Mapper接口的代理对象,现在分析下Mybatis执行Sql的相关内容原理。伴随着问题深入分析:Mybatis是如何通过Mapper接口找到对应的mapper.xml文件的sql执行语句?原理是什么? Mybatis怎么创建的数据库连接?什么方式创建的? Mybatis怎么进行参数处理的,原理是什么? 怎么执行sql语句的? 执行sql后结果集是怎么映射到实体类的?伴随着以上问题,我们渐渐深入源码探究:通过之两篇文章的介绍,我们知道...原创 2021-09-22 17:38:59 · 237 阅读 · 1 评论 -
Mybatis3 深入源码 -- getMapper返回代理mapper源码分析
经过前两篇文章的分析,我们知道了mybatis对配置文件mybatis-config.xml和mapper.xml 的一个加载原理,以及配置信息Configuraction和执行器Excutor 信息封装入DefaultSqlSession中。现在针对mapper相关源码进行解析,分析Mybaits是如果没有实体类的情况下,可以执行接口方法?示例:进入getmapper方法,实现类DefaultSqlSession:public <T> T getMapper(Cla.原创 2021-09-22 12:01:40 · 206 阅读 · 0 评论 -
Mybatis3 深入源码 -- sqlSession源码分析
接着上面博客内容Myabtis源码分析-SqlSessionFactory,这里讲解sqlSession相关源码内容。直接进入源码 openSession方法,默认接口实现类 DefaultSqlSessionFactory#openSessionFromDataSource: 这个函数核心目的就是创建一个Excutor private SqlSession openSessionFromDataSource(ExecutorType execType, TransactionIsola.原创 2021-09-22 10:15:11 · 183 阅读 · 0 评论 -
Mybatis3 深入源码 -- SqlSessionFactory 源码分析
Mybatis3 官方文档入口实例:下面是简单的mybatis入口实例代码,一个简单的查询操作:SysUser 查询结果的实体类、SysUserMapper为dao层的mapper接口,方法queryList()public class MyMain { public static void main(String[] args) throws IOException { String resource = "mybatis-config.xml"; .原创 2021-09-20 18:38:49 · 332 阅读 · 0 评论 -
SpringSecurity 源码解析 | 加JWT 实战 之 授权流程源码分析
前两篇分析了SpringSecurity 认证源码和自定义认证流程,本片主要讲下另一个核心授权。简单理解: 登录认证是用来确认用户是否能访问系统。 授权就是:你认证通过之后,还要检查是你是否满足资源所要求的权限。我们用之前的源码继续分析。首选思考下,要是你来实现这个框架,你怎么去处理授权这个流程?正常来说,基于RBAC思想(基于角色的权限控制),权限控制的源头是资源,比如 API_1,要想根据用户来控制是否能访问API_1,我们判断该用户是否有访问API_1的角色。那么简单流程就是: .原创 2021-09-13 21:47:45 · 703 阅读 · 0 评论 -
SpringSecurity 源码解析 | 加JWT 实战 之 自定义认证流程
上篇我们已经源码分析了SpringSecurity登录认证流程。很多内容都是默认实现,实际的企业开发中,对接很多内容都会有自行的扩充和增加。现在我们就实现自定以基于JWT登录认证,满足我们的登录需要。为什么要基于JWT登录认证?至于JWT相对于session的有点和好处我就不阐述了。主要说下我们用它来干嘛企业研发中,任何api的调用都不会是轻而易举的,必须是有合法的权限和资格才行调用api,所以前端在调用api的时候,必须带上标识token,调用之前对其进行验证,验证通过,在...原创 2021-09-13 19:41:19 · 884 阅读 · 1 评论 -
JAVA JVM底层解析
花了一段时间,把java的知识点总结整理了一下,这篇总结对于初学者,我个人觉得会有很大的收益,因为从概括到细节,都图形化表现出来了,学习起来应该会很轻松。后面也会花时间一个个知识点单独写在博客。(劳动成果,下载可得)...原创 2021-08-18 17:56:47 · 143 阅读 · 0 评论 -
Spring IOC源码深入-- 介绍
官方文档:https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#beans-annotation-configIoC 也称为依赖注入 (DI)。这是一个过程,其中对象仅通过构造函数参数、工厂方法的参数或在对象实例被构造或从工厂方法返回后在对象实例上设置的属性来定义它们的依赖项(即,它们使用的其他对象) .然后容器在创建 bean 时注入这些依赖项。这个过程基本上是 bean 本身的逆过程(因此得名,控.原创 2021-08-10 11:33:29 · 121 阅读 · 0 评论 -
网络编程- Socket-BIO
网络编程- Scoket-BIO上图时对socket做一个简单介绍, 具体的实现这里就说了。主要将一下java网络编程几大IO模型实现、原理、演变,IO模型分别为BIO、OS级别的NIO(NONBLOCKING IO)、NIO java jdk1.4升级的NEW IO。BIO模型前提知识:想要彻底的了解IO模型及其原理和演变,你需要了解一下操作系统底层相关的一些系统调用知识,我上篇文章介绍过了,参考学习,有错误的望指出。系统调用|内核程序想必大家都知道IO操作肯定需要系统调用的,因为网络传输势必会原创 2021-05-30 22:48:23 · 299 阅读 · 3 评论 -
IO操作底层调用过程 | 用户态切换内核态原理 | 中断概念
IO操作底层调用过程|内核|中断|做后端的程序员都知道我们编写的程序主要分方法程序和IO操作程序。有什么不一样呢?方法程序就不多说了。IO程序有什么不同呢?IO操作指的是对硬件设备操作,比如键盘、鼠标、网卡、显卡…那又有什么区别呢?那就得说说系统调用先看下面简单的一个图,cpu主要从内存拉取数据执行,将返回结果返回给内存,是我们程序的执行过程(今天重点不是这)我们的程序分为 系统程序kernel(内核程序,操作系统自带的程序) 和 用户程序(app之类的我们自己放在系统程序)。系统程序k原创 2021-05-19 23:34:00 · 2833 阅读 · 0 评论 -
多线程透析--jvm创建对象过程|volatile作用和原理|线程三大特性
多线程透析–volatile作用和原理想必大家都听说过volatile这个修饰词,可能在你对他的理解仅停留在保证数据准确性的层面。今天详细说下volatile的一个功能和原理。说道volatile 千万不要和synchronize作用混淆了,都知道synchronize锁,主要是为了保证程序的执行的原子性,保证线程安全。多线程三大特性:原子性、有序性、可见性。而volatile 就可以保障有序性和可见性,但是记住,它是不能保证原子性的。那么就先说说什么是原子性,什么是有序性,什么是可见性?1.原创 2021-05-17 22:20:55 · 217 阅读 · 2 评论 -
多线程透析--synchronize底层实现原理
多线程透析–synchronize底层实现原理之前就说过了遇到线程同步问题我们都常想到synchronize关键字,它确实能很好的解决线程同步问题,但是它会引起一些其他问题,比如最突出的一点就是程序效率问题。之前说过在JDK1.1~1.2 synchronize关键字就是实现了重量级锁,所以在一些小场合反而拉夸了效率。什么是重量级锁的概念,之前也提到了多线程透析–进程和线程底层分析,重量级锁是需要OS操作系统调度,想当于在内存和CPU之前加了一个中间者。不过后面随着JDK1.6对synchroniz转载 2021-04-22 22:16:04 · 264 阅读 · 0 评论 -
多线程透析--JUC的锁机制、锁原理CAS、AQS
多线程透析–JUC的锁机制、锁原理其实之前博客中就已经提到了JUC,今天详细的透析下JUC的锁机制和锁原理。在JDK1.1~1.2 的时候 只有synchronize锁,此时的锁只是一个重量级锁,所谓的重量级锁我个人理解就是线程在使用资源时需要通过OS线程队列进行调度,只有在获取锁(没有其他线程占用锁)的情况下才能进行。这类锁一般具有排他性,所以也叫悲观锁。而早期的synchronize不管你是否是多线程竞争关系,都会同样的采取重量级锁这一套。这样再简单的线程操作中,就很影响效率。在JDK 1.5原创 2021-04-21 23:20:28 · 625 阅读 · 0 评论 -
多线程透析-CAS
多线程透析-CAS研究过多线程锁的想必都是知道CAS。什么是CAS?CAS (Compare And Swap):比较并交换。是一种轻量级锁的实现方式,也被称为乐观锁。锁的原理就是不会真实的去添加锁,而是通过频繁的去探测访问资源进行比较,直达资源可用进行交换操作。老规矩还是举例说明:现在有多个线程a,b,c要对公共资源count进行++操作。按照之前学习的内容在处理这个程序的时候我们会想到synchronize 和 juc 进行操作,以保障多线程的三大特性(原子性、有序性、可见性–后续详细透析)原创 2021-04-20 22:55:48 · 177 阅读 · 2 评论 -
多线程透析-锁基本概念
多线程透析-锁基本概念知道多线程的基本上都知道锁这个东西,现在就来详细说下锁的概念。先不说直接说锁的概念,老样式还是举例分析下:举个例子:小明需要上厕所,如果厕所没有人,小明就直接去蹲坑了,这里就类似与小明是一个线程A,厕所是共享资源count。现在第二个人小华来了 也要上厕所,但是小明并没有结束怎么办呢?方式一:小华就等呗,来回打转,不停的去看看小明结束没,一旦结束了我立马进去。方式二:小明防止别人硬上,就在厕所上上一把锁,小华看见被锁住了,只能在一边坐着等着,等锁开了,再进去。上面两种情况原创 2021-04-20 01:27:47 · 525 阅读 · 1 评论 -
多线程透析--进程和线程底层分析,在系统中线程执行过程
多线程透析–进程和线程底层分析1.什么是进程?程序启动后分配到内存,资源分配的基本单位,比如qq.exe。2.什么是线程?程序执行的基本单位。怎么了解以上两个含义的解释呢?我们从CPU底层来理解下:一个程序被启动后,会进入到内中变成:指令+数据。就是说一个进程执行后,会被分配到内存中,变成一个或者多个指令和数据,而这样的指令+数据就是一个个线程。3.程序如何开始运行的?记住操作系统执行程序都是由CPU来操作的,而CPU只会执行处理线程。那先了解下的CPU中几个核心的部件:Regis原创 2021-04-19 23:58:46 · 367 阅读 · 0 评论 -
基于JUC线程池的使用ExecutorService
基于JUC线程池的使用ExecutorService往往采用多线程目的都是为了提高程序效率,提高系统使用性。但是频繁的创建和销毁线程本身就是一个有损效率的事。所以java的JUC就提供了线程池的使用。线程池 :提前创建好多个线程放入线程池中,使用时直接获取,使用完成放回线程池。可以避免频繁创建和销毁线程,实现重复利用。好处:提高了响应效率(减少了创建线程时间)降低资源消耗(重复利用线程池里面线程,不再是创建)便于管理。corePoolSize : 核心池大小maximumPoolSize原创 2021-03-28 21:16:07 · 176 阅读 · 0 评论 -
java线程通讯-生产者消费者模型(信号灯法)
java线程通讯-生产者消费者模型(信号灯法)上面博客采用缓存区方式实现了生产者与消费者https://blog.youkuaiyun.com/qq_31142237/article/details/115285293这篇介绍下生产者消费者模型的信号灯法,根据不停场景使用不同方式。信号灯法:利用标识控制线程等待和唤醒,类似于信号灯,红灯性绿灯停。举例:站在司机的角度:红灯停,人走。 绿灯走,人停。对象分析: 车 、 人 、 信号灯车: 就是来车行走。人:就是来人行走。信号灯: 绿灯时车走行走,变灯原创 2021-03-28 20:38:51 · 162 阅读 · 0 评论 -
java线程通讯-生产者消费者模型(管道法)
多线程-线程通讯-生产者消费者模型多线程的使用往往不单单是单个线程的实现,而是多个线程的相互协作实现逻辑业务。什么是线程通讯?多个线程协作完成共享资源的使用,实现线程安全,线程不死锁。线程通讯实现方式:等待(wait()) | 通知 notify() .notifyall()wait()、notify()、notifyall() 方法都是Object类下的方法。wait() : 让当前线程进入等到状态,并且释放锁资源。notify() : 唤醒一个等待线程,且随机线程。notifyall()原创 2021-03-28 19:54:34 · 392 阅读 · 0 评论 -
Java静态代理和动态代理
Java静态代理和动态代理什么是代理?代理是一种设计模式。通过代理对象间接的反问被代理对象。(是的就是这么简单)怎么理解呢?举个例子:小明*(被代理对象)*去详情了,想约女孩出来看电影(代理事务),但是不想自己去找女孩,这时候找到媒婆(代理对象)去传话,达到约会的目的。我们通过上图想一想,代理的好处和作用。为什么小明不自己去找小美说呢? ---->加入小明是个丑八怪,那直接去找小美,那不是凉凉。找媒婆的话就能直接把话带到且让自己相貌啥的不直接被小美知道。同理:通过代理对象实原创 2021-03-23 23:26:30 · 110 阅读 · 0 评论 -
ReenTrantLock之读写锁
ReenTrantLock之读写锁上几篇我们介绍了多线程同步相关锁Synchronsize锁和JDK的JUC锁Lock以及ReentrantLock锁。现在准备介绍的时JDK的读写锁(测试代码借用别人的博客,我这边只做一个总结)。先介绍下这个读写锁 ReentrantReadWriteLock这个读写锁也是JDK工具java.util.concurrent.locks包下,和ReentrantLock 不同的是ReentrantLock是继承了Lock,ReentrantReadWriteLock继承原创 2021-03-23 21:17:26 · 896 阅读 · 1 评论 -
多线程--线程同步锁Lock锁
多线程–线程同步锁–Lock锁-ReentrantLock之前说了线程同步机制Synchronize锁,其实除此之外还有一种JUC的Lock锁也能实现线程同步。而且Lock实现类ReentrantLock相比Synchronize有更大的灵活性,更加丰富,更是适合大多场景的使用。先来简单的对比下ReentrantLock和Synchronize吧。Synchronsize锁是独占锁,加锁和释放锁都是自动的,只要加上关键字synchronize或者代码块就行。使用起来很简单,但是呢灵活性较差。Ree原创 2021-03-11 00:05:40 · 1528 阅读 · 8 评论 -
多线程--线程不安全和线程死锁,同步锁Synchronize
线程不安全和线程死锁什么叫线程不安全?当多个线程共享同一个资源时,在不使用同步锁的情况下对共享资源进行读写操作是,导致的程序执行结果异常,产生不正常的结果数据。举个例子:两个人去抢票,当强到最后一张的时,在两个人眼里都看见有一张票,于是两个同时去抢,结果两个人都抢到了,而票的数量变成的-1。解决线程不安全的办法?解决线程不安全的办法就是给线程加锁,使用线程同步机制synchronize。线程同步其实就是个等待机制,多个线程访问同一个资源时,就要让这些线程进入一个等待池形成队列,等待前一个线程使用完原创 2021-03-08 23:02:55 · 353 阅读 · 0 评论 -
跨平台第三方平台登录和单点登录
跨平台第三方平台登录和单点登录官方介绍:单点登录:简称为 SSO,是比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。个人理解: 对于单点登录和第三方平台登录功能我还是习惯以自己的理解去记忆: 单点登录: 从A平台通过链接方式到B系统,中间免去登录过程。 第三方登录: 从A平台通过B平台的登录进入A系统。中间免去A平台的直接登录,使用B平台的用户认证。 其实在功能实现流程上来说,“第三方登录”就是包含了“单点原创 2020-10-26 17:15:40 · 3998 阅读 · 2 评论 -
Spingboot Resttemplate连接池配置
Spingboot Resttemplate连接池配置package com.jshhxx.framework.config;import org.apache.http.client.HttpClient;import org.apache.http.client.config.RequestConfig;import org.apache.http.config.Registry;import org.apache.http.config.RegistryBuilder;import or原创 2020-09-27 15:00:07 · 1339 阅读 · 0 评论 -
分布式系统
分布式系统开发分布式系统开发集中式系统想要理解分布式系统开发的含义,就要知道另一个开发模式,就是传统的一体化开发或者说集中式系统开发。很久以前就开始做项目的都知道,以前的系统开发都是集中式的,**所谓的集中式简单来说就是系统应用的内容就是一个整体的项目,一个项目就是所有的应用。**比如做一个网上商城的项目,可能我们需要划分很多模块比如商品信息、订单信息、用户信息等等。在集中式系统开发中这些...原创 2019-05-03 19:03:34 · 729 阅读 · 0 评论 -
分布式系统中CAP原理
分布式系统CAP原理分布式系统发开虽然有点很多但是并不是完美的,CAP原理就是其中的体现之一。CAP原理:指的是在一个分布式系统中,Consistency(一致性)、Availability(可用性)、Partitontolerance(分区容忍性),三者不可得兼。一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。简单说就是所有节点在同一时刻的数据完全一致,这就意味着节点越...原创 2019-05-03 20:12:43 · 1643 阅读 · 0 评论 -
微服务、微服务核心基础以及常见的微服务框架
微服务、微服务核心基础以及常见的微服务框架背景微服务越来越多地用于开发领域,因为开发人员致力于创建更大,更复杂的应用程序,这些应用程序作为小型服务的组合得到更好的开发和管理,这些服务可以协同工作,实现更大的应用程序范围的功能。工具正在上升,以满足使用逐件方法思考和构建应用程序的需要,坦率地说,这比一次性考虑整个应用程序更不令人难以置信。(DZone,Java微服务 )什么是微服务?微服务...原创 2019-05-03 21:42:01 · 1135 阅读 · 0 评论 -
为什么需要配置环境变量
为什么需要配置环境变量做开发的都知道在一个新的环境下都需要先安装个jdk,maven。。。,然后做环境变量配置,网上一搜配置方法到处都是,但是都没有介绍为什么需要配置环境变量。其实就是一个用处, 我们不管安装什么软件,要项启动这个软件都必须在安装目录下去执行启动软件(快捷键除外), 配置环境变量的用途就是,通过系统变量配置,让系统不管在什么目录下都能去执行改程序。想一下 要是不能再任意目录下都...原创 2019-04-15 10:09:45 · 959 阅读 · 0 评论 -
springboot项目简单介绍、启动和部署
springboot项目介绍,启动和部署springboot介绍大家知道springboot是基于spring研发出来的,但是要知道springboot其实并不是对spring功能的增强,而是提供了一种快速使用spring的方式或者说是工具。springboot集合了大量的第三方库,Spring Boot应用中这些第三方库几乎可以是零配置的开箱即用,大部分的 Spring Boot 应用都只...原创 2019-04-16 09:44:10 · 39867 阅读 · 1 评论 -
maven、maven项目部署
maven、maven项目部署***理解maven项目以及其部署,这篇内容比较对,也比较杂,但是都是个人理解之后,总结出来的,希望对向我们新手们有所帮助。1.maven的理解2.maven项目部署,内置tomcat插件部署(war包)1.maven的理解?对于maven很多网站上都有诠释,我就不粘在这里了,我们只要理解它是用于管理项目的就行。我们需要知道的就是,第一点:maven项目...原创 2019-04-15 18:15:15 · 1205 阅读 · 0 评论 -
java 指定文件夹内文件打成Zip,rar压缩包
java 指定文件夹内文件打成Zip,rar压缩包package FileZip;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundEx...原创 2018-08-31 10:50:28 · 3227 阅读 · 0 评论 -
java Field 类属性反射
Field在java开发中经常会被用到,而且是非要重要的类,常常用到类对象去反射出对象类的一些属性,从而达到映射的效果.通常会被用到一些工具里面实现实体类等等的属性映射功能.这里简单的介绍一下有关目标类的各种反射方法:首先我们准备一个实体类FieldEntity:package Field;public class FieldEntity implements FieldParent...原创 2018-08-31 10:28:56 · 1457 阅读 · 0 评论 -
maven项目打包jar给其他项目pom引用和外部引用
maven项目打包jar给其他项目pom引用和外部引用在现实开发过程中,很多代码需要被重复利用的,但是代码量又是很多,这样的代码可以提出出来作为公共代码或者叫做工具使用,通常这样的工具会以jar包的形式被其他项目pom引入或者外部引入使用。第一步 创建maven项目,完成工具类打包jar我这里用的工具idea,其他方式创建maven项目也一样。这里我们选择maven-archety...原创 2019-04-25 09:56:56 · 19359 阅读 · 5 评论