- 博客(67)
- 收藏
- 关注
原创 分布式链路追踪:集群管理设计
这里简单的解释下,Mixed 是混合模式,既包含 Aggregator 和 Receiver。Aggregator,是聚合器模式,也就是说数据收集到 OAP 平台之后,数据需要做过滤、清晰和聚合然后再存储。Receiver 是收集器模式,也就是原始数据会直接存储,不做任何处理,当然这个肯定会有最核心的链路数据,就不会产生很多通过聚合之后产生的指标数据了。那么 Skywalking 中的集群管理主要是针对 Aggregator 模式,当然肯定也会包含 Mixed 模式。
2023-05-19 23:21:36
361
原创 不可不说的Java“锁”事
本文Java中常用的锁以及常见的锁的概念进行了基本介绍,并从源码以及实际应用的角度进行了对比分析。限于篇幅以及个人水平,没有在本篇文章中对所有内容进行深层次的讲解。其实Java本身已经对锁本身进行了良好的封装,降低了研发同学在平时工作中的使用难度。但是研发同学也需要熟悉锁的底层原理,不同场景下选择最适合的锁。而且源码中的思路都是非常好的思路,也是值得大家去学习和借鉴的。
2023-05-19 23:21:03
253
原创 动态代理种类及原理,你知道多少?
前面介绍 CGLib 时提到过,它底层是采用 ASM 作为字节码处理,生成的代理类就是使用 ASM 实现的。因此 ASM 库是一个基于 Java 字节码层面的代码分析和修改工具,可以直接生产二进制的 class 文件,也可以在类被加载入 JVM 之前动态修改类行为。因此要想实际操作 ASM,对 class 文件格式的十分熟悉。ASM 中的每个 API 都和 class 文件格式中的特定部分相吻合,同时是采用访问者模式设计的。
2023-05-19 23:21:03
1454
原创 从SpringCloud开始,聊微服务架构
Martin Flower的定义:简单的说,微服务是软件系统架构上的一个设计风格,它倡导将一个原本独立的系统分成多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间通过基于HTTP的RESTful 轻量级API进行通信协作。被拆分的每个微服务围绕系统中的某项或一些耦合度较高的业务进行构建,并且每个服务都维护着自身的数据存储、业务开发、自动化测试案例以及独立部署机制。由于有了轻量级通信机制,这些微服务间可以使用不通的语言来编写。
2023-05-19 23:20:32
359
原创 代码开发规范
【强制】不允许任何魔法值(即未经定义的常量)直接出现在代码中。反例【强制】long 或者 Long 初始赋值时,必须使用大写的 L,不能是小写的 l,小写容易跟数字 1 混淆,造成误解。说明:写的是数字的 21,还是 Long 型的 2?【推荐】不要使用一个常量类维护所有常量,应该按常量功能进行归类,分开维护。如: 缓存相关的常量放在类: CacheConsts 下;系统配置相关的常量放在类: ConfigConsts 下。说明。
2023-05-19 23:19:28
282
原创 Redis开发规范
非字符串的bigkey,不要使用del删除,使用hscan、sscan、zscan方式渐进式删除,同时要注意防止bigkey过期时间自动删除问题(例如一个200万的zset设置1小时过期,会触发del操作,造成阻塞,而且该操作不会不出现在慢查询中(latency可查)),查找方法和删除方法。redis的多数据库较弱,使用数字进行区分,很多客户端支持较差,同时多业务用多数据库实际还是单线程处理,会有干扰。以业务名(或数据库名)为前缀(防止key冲突),用冒号分隔,比如业务名:表名:id。
2023-05-19 23:19:27
94
原创 JVM 垃圾收集器
CMS 使用的是标记-清除的算法实现的,所以在 gc 的时候回产生大量的内存碎片,当剩余内存不能满足程序运行要求时,系统将会出现 Concurrent Mode Failure,临时 CMS 会采用 Serial Old 回收器进行垃圾清除,此时的性能将会被降低。清除阶段:回收被标记的对象所占用的空间。在 JVM 中,有一个垃圾回收线程,它是低优先级的,在正常情况下是不会执行的,只有在虚拟机空闲或者当前堆内存不足时,才会触发执行,扫面那些没有被任何引用的对象,并将它们添加到要回收的集合中,进行回收。
2023-05-19 23:17:45
178
原创 JVM CPU Profiler技术原理及源码深度解析
社区实现的JVM Profiler很多,比如已经商用且功能强大的JProfiler,也有免费开源的产品,如,功能各有所长。我们日常使用的Intellij IDEA最新版内部也集成了一个简单好用的Profiler,详细的介绍参见官方Blog。
2023-05-19 23:17:14
18271
1
原创 EL表达式,JSTL标签库
EL:表达式语言在JSP2.0规范中加入的语言,也是Servlet规范的一部分作用:在JSP页面中获取数据,让我们的JSP脱离Java代码块和JSP表达式。使用EL表达式能够简化JSP页面中Java代码的编写。格式非常简单,只需要在JSP页面中嵌入${表达式}即可。< % -- 将用户名存入请求域 -- % > < % request . setAttribute("username" , "zhangsan");
2023-05-19 23:15:59
271
原创 Cookie和Session
Session是依赖于Cookie的,如图所示当客户端第一次请求服务端时没有Cookie,会在内存中创建一个Session对象并把sessionid通过Cookie存起来发给客户端;当客户端再次请求服务器时,会携带者sessionid到服务端找到对应的Session对象,以此来实现多次请求在服务端的数据共享。JSP(全称Java Server Pages),是一种动态网页开发技术。它既可以使用HTML标签来写页面,也可以写Java代码。其本质就是一个Servlet。下面是一个jsp页面的访问过程。
2023-05-17 23:08:27
147
原创 HTML学习
HTML是超文本标记语言,是由很多预定义的标签组成的,每一种标签有其特殊的含义,这些标签能被浏览器识别并且渲染出不同的显示效果。HTML文档也俗称网页,是网站的重要组成部分。HTML基本语法注释标签规范标签分类标签嵌套块级元素和行内元素div和spandiv和span没有特殊的语义,是一个通用的容器标签。一般用来对其他标签进行分组、布局、设置样式等操作。属性规范属性用来给标签添加一些额外的信息,如给标签设置颜色,宽高等。常见的属性特殊符号在html
2023-05-17 23:08:19
338
原创 过滤器和监听器
当客户端访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能。举个例子帮助大家理解:比如2020年初在爆发了新冠病毒疫情,为了防止病毒扩算到全国,武汉市宣布封城,所有交通渠道限制通行,在各个出入口设卡拦截,只有体温正常的医务人员和急救物资才能进入城区。这里武汉市各个出入口的关卡,起到的就是过滤器的作用。在程序中是同样的道理,比如用户在访问服务器资源时只允许登录过的用户才能正常访问。这里登录校验起到的就是过滤器的作用。除了登录校验,在程序中过滤器的用处还有统一编码处理,铭感词汇过来。
2023-05-17 23:07:57
81
原创 JQuery
区别:JQ对象和JS对象不通用,JQ对象不能使用JS的属性和函数,同时JS对象也不能使用JQ对象的属性和函数。JQ对象在使用时,更贴近面向对象的使用方式,JQ对象一般通过调用函数的方式实现功能。jq独有的each方式遍历,并不是for循环,是函数的回调的过程。在jq对象上调用任何函数,都相当于在jq对象对应的所有元素上都调用了这个函数。JQuery方式获取出来的对象和原生的JS的dom对象并不是同一类型,使用方式也不一样。用法基本和上面的方式相同,只不过被遍历的容器可以是jq对象也可以是普通的js数组。
2023-05-17 23:05:56
77
原创 JavaScript
引入js的方式二:外部方式把js代码抽取到一个js文件中。通过script标签的src属性引入这个文件创建js文件在html中引用外部js文件注意:注释单行注释多行注释弹窗和输出弹出输入框 prompt(“提示内容”);弹出警告框 alert(“提示内容”);弹出确认框 confirm(“是否确认”)在控制台输出内容 console.log(“输出日志”);往当前页面写出内容。支持html格式标签。往页面文档中追加数据 document.write(“显示内容”
2023-05-17 23:05:24
234
原创 AJAX学习
我们除了可以在 JavaScript 中来使用 JSON 以外,在 JAVA 中同样也可以使用 JSON。JSON 的转换工具是通过 JAVA 封装好的一些 JAR 工具包。可以将 JAVA 对象或集合转换成 JSON 格式的字符串,也可以将 JSON 格式的字符串转成 JAVA 对象。Jackson:开源免费的 JSON 转换工具,SpringMVC 转换默认使用 Jackson。导入 jar 包。创建核心对象。调用方法完成转换。常用类ObjectMapper常用方法。
2023-05-17 23:04:38
234
原创 Oracle数据库预安装任务
本节概述了如何创建用户和组,以按工作角色划分访问权限。以root身份登录以创建这些组和用户。了解具有工作角色分离的Oracle安装的限制工作角色安装的数据库组用于工作角色安装的甲骨文网格基础设施组。
2023-05-17 23:03:27
211
原创 “VO“、“DTO“、“PO“和“DO“ 详解
什么是雪崩问题?微服务之间相互调用,因为调用链中的一个服务故障,引起整个链路都无法访问的情况。限流是对服务的保护,避免因瞬间高并发流量而导致服务故障,进而避免雪崩。是一种预防措施。超时处理、线程隔离、降级熔断是在部分服务故障时,将故障控制在一定范围,避免雪崩。是一种补救措施。Sentinel是阿里巴巴开源的一款微服务流量控制组件。官网地址:https://sentinelguard.io/zh-cn/index.htmlSentinel 具有以下特征:•丰富的应用场景。
2023-05-17 23:02:48
2845
原创 Oracle数据库安装概述
使用Oracle通用安装程序安装数据库,并从Oracle主页启动Oracle数据库配置助理。Oracle数据库配置助理在交互模式下运行。使用Oracle数据库配置助理中的屏幕,您可以指定用于管理数据库的Oracle Enterprise Manager界面。您也可以选择不使用Oracle Enterprise Manager配置数据库。Oracle建议您将数据库配置为在安装期间使用Oracle Enterprise Manager。
2023-05-17 23:02:48
284
原创 分布式事务
本地事务,也就是传统的。在传统数据库事务中,必须要满足四个原则:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e2hdUg6X-1684197435153)(https://typora-1313047667.cos.ap-beijing.myqcloud.com/imgs/202212021715949.png)]
2023-05-16 08:37:34
236
原创 Spring MVC day01
SpringMVC框架有什么优点?SpringMVC是一种基于Java实现MVC模型的轻量级Web框架优点使用简单,开发便捷(相比于Servlet)灵活性强[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Gfvathjf-1684197365170)(https://typora-1313047667.cos.ap-beijing.myqcloud.com/imgs/202212020949624.png)]
2023-05-16 08:37:12
231
原创 Spring MVC day02
/描述统一格式中的数据 private Object data;//描述统一格式中的编码,用于区分操作,可以简化配置0或1表示成功失败 private Integer code;//描述统一格式中的消息,可选属性 private String msg;} //同学们自己添加getter、setter、toString()方法 }Result类中的字段并不是固定的,可以根据需要自行增减程序开发过程中不可避免的会遇到异常现象,我们不能让用户看到这样的页面数据。
2023-05-16 08:36:45
103
原创 Spring Cloud day02
使用Feign的步骤:① 引入依赖② 添加@EnableFeignClients注解③ 编写FeignClient接口④ 使用FeignClient中定义的方法代替RestTemplate类型作用说明修改日志级别包含四种不同的级别:NONE、BASIC、HEADERS、FULL响应结果的解析器http远程调用的结果做解析,例如解析json字符串为java对象请求参数编码将请求参数编码,便于通过http请求发送支持的注解格式默认是SpringMVC的注解失败重试机制。
2023-05-16 08:36:23
89
原创 Spring Cloud day01
单体架构:简单方便,高度耦合,扩展性差,适合小型项目。例如:学生管理系统分布式架构:松耦合,扩展性好,但架构复杂,难度大。适合大型互联网项目,例如:京东、淘宝微服务:一种良好的分布式架构方案①优点:拆分粒度更小、服务更独立、耦合度更低②缺点:架构非常复杂,运维、监控、部署难度提高SpringCloud是微服务架构的一站式解决方案,集成了各种优秀微服务功能组件SpringCloudRibbon的底层采用了一个拦截器,拦截了RestTemplate发出的请求,对地址做了修改。
2023-05-16 08:34:55
92
原创 Spring day03
问题1:AOP的作用是什么?问题2:连接点和切入点有什么区别,二者谁的范围大?问题3:请描述什么是切面?AOP(Aspect Oriented Programming)面向切面编程,一种编程范式,指导开发者如何组织程序结构OOP(Object Oriented Programming)面向对象编程作用:在不惊动原始设计的基础上为其进行功能增强。简单的说就是在不改变方法源代码的基础上对方法进行功能增强。Spring理念:无入侵式/无侵入式} }
2023-05-16 08:34:37
68
原创 Spring Boot day01
SpringMVC的HelloWord程序大家还记得吗?SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程原生开发SpringMVC程序过程学习了SpringBoot入门案例之后,感觉对比SpringMVC哪一个更加方便简洁?SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程Spring程序缺点配置繁琐依赖设置繁琐SpringBoot程序优点自动配置。
2023-05-16 08:34:13
80
原创 Spring day02
问题:按照Bean名称获取Bean有什么弊端,按照Bean类型获取Bean有什么弊端?BeanFactory是IoC容器的顶层接口,初始化BeanFactory对象时,加载的bean延迟加载ApplicationContext接口是Spring容器的核心接口,初始化时bean立即加载ApplicationContext接口提供基础的bean操作相关方法,通过其他接口扩展其功能ApplicationContext接口常用初始化类ClassPathXmlApplicationContext(常用)
2023-05-16 08:34:03
79
原创 Spring day01
我们为什么要学习Spring框架?生命周期:从创建到消亡的完整过程bean生命周期:bean从创建到销毁的整体过程bean生命周期控制:在bean创建后到销毁前做一些事情。
2023-05-16 08:33:16
164
1
原创 JDBC day02
java.sql.DataSource接口:数据源(数据库连接池)。java官方提供的数据库连接池规范(接口)获取数据库连接对象:Connection getConnection();自定义连接池/*自定义连接池类//1.定义集合容器,用于保存多个数据库连接对象 private static List < Connection > pool = Collections . synchronizedList(new ArrayList < Connection >());
2023-05-16 08:32:27
69
原创 JDBC day01
预编译sql语句的执行者对象。在执行sql语句之前,将sql语句进行提前编译。明确sql语句的格式后,就不会改变了。剩余的内容都会认为是参数!参数使用?作为占位符为参数赋值的方法:setXxx(参数1,参数2);参数1:?的位置编号(编号从1开始)参数2:?的实际参数执行sql语句的方法执行insert、update、delete语句:int executeUpdate();执行select语句:ResultSet executeQuery();
2023-05-15 23:32:53
77
原创 Tomcat多实例部署
同一个tomcat下部署多个项目,重启会影响到其他项目的正常运行,为了使各项目独立,一般会使用安装多个tomcat,这样很耗费系统资源;创建tomcat多实例,有效的解决这一问题;
2023-05-15 23:31:10
562
原创 Tomcat部署安装
外链图片转存中…(img-0bTWHT3x-1684164623658)]Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat支持最新的Servlet和JSP规范。
2023-05-15 23:30:41
321
原创 maven deploy上传jar包到nexus错误排查
最近在项目中使用maven-deploy上传jar包时出现原因是服务器满了,具体可以在nexus的后台中查看nexus的日志,如下知道是nexus所在的服务器磁盘满了,就可以清理一下磁盘,腾出空间即可。
2023-05-15 23:30:12
824
原创 Maven 搭建私有仓库之Nexus
注意:通过页面直接上传的方式只是上传了jar包,若这个jar通过Maven依赖了其他jar,那其他项目在下载这个jar时无法取得它的依赖。所以,除非这个jar没有任何依赖,否则还是推荐通过命令行或者IDE的方式上传jar包,这样才会把pom一并上传。
2023-05-15 23:29:35
3489
原创 Maven 常见问题
dependencyManagement 是表示依赖 jar 包的声明,即你在项目中的 dependencyManagement 下声明了依赖,maven 不会加载该依赖,dependencyManagement 声明可以被继承。
2023-05-15 23:27:31
164
原创 Maven之pom.xml详解
POM 是 Project Object Model 的缩写,即项目对象模型。pom.xml 就是 maven 的配置文件,用以描述项目的各种信息。
2023-05-15 23:27:17
3899
1
原创 Maven 之 settings.xml 详解
从 settings.xml 的文件名就可以看出,它是用来设置 maven 参数的配置文件。settings.xml 中包含类似本地仓储位置、修改远程仓储服务器、认证信息等配置。
2023-05-15 23:26:57
5106
原创 Maven基础
在学习Maven之前,我们先来看一下我们现在做的项目都有哪些问题。假设你现在做了一个crm的系统,项目中肯定要用到一些jar包,比如说mybatis,log4j,JUnit等,除了这些之外,你有可能用到你的同事开发的其他的东西,比如说别人做了一个财务模块或做了一个结算的模块,你在这里边有可能要用到这些东西。假如有一天你们的项目中mybatis进行了一个升级,但是它内部使用的JUnit没有升级,你升级以后的mybatis假如要用5.0的JUnit,而你项目中目前用的是4.0的,会不会冲突?必然会出问题!
2023-05-15 23:26:09
60
原创 Maven高级
-定义自定义属性--> < properties > < spring.version > 5.2.10.RELEASE < junit.version > 4.12
2023-05-15 23:25:46
51
Spring常见面试题.pdf
2023-05-12
程序员简历模版资源.MD
2023-05-12
MySQL面试题.md
2023-05-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人