- 博客(38)
- 收藏
- 关注
原创 Arthas快速入门
Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。
2024-06-29 21:22:10
764
原创 再学一点mybatis(原理分析)
现在都有各种的ORM框架,很少再有人用传统的jdbc代码来操作数据库了, 但凡用过的都知道,开发人员除了要写sql外,还必须操作Connection、Statment、ResultSet等,为了访问不同的表,不同字段的数据,还需要书写很多模板化的代码,这些代码写起来往往是重复的,又繁琐又枯燥,ORM框架的诞生就是为了解决开发者的痛点,优秀的ORM框架比如mybatis、hibernate、JPA等等。调用prepare方法实现sql的预编译,就是为了防止sql的注入,同时也为了sql的执行提高查询的效率。
2023-11-02 23:29:49
364
原创 Idea卡死或者编译内存溢出
在idea的安装目录下,找到对应的bin目录,里面有个idea64.exe.vmoptions文件,打开修改JVM配置参数前3个参数做下调整。
2023-03-25 13:50:31
1120
原创 再了解一点Ribbon的重试机制
在我们通过http的各种客户端进行调用的时候,难免会出现网络等各种偶发性的问题,如果没有重试的操作,当前这次请求只能是失败,从而在数据上或者用户页面上带来的数据和体验问题。如果通过程序来设置出现异常的情况下,进行接口重试,从而保证它的可用性。
2023-03-25 13:41:46
1545
原创 再学一点Ribbon负载均衡
spring cloud ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具.基于HTTP和TCP的客户端均衡工具Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡,将Netflix中间层服务连接在一起.Ribbon客户端组件提供一系列完善配置,比如连接超时,重试等等.借用网络上朋友的一幅图。当我们使用RestTemplate或者Feign的时候,通过Ribbon实现负载均衡,获取到可用的远程服务列表,最后通过TCP完成最后的调用。
2023-03-19 22:13:19
574
1
原创 再学一下Feign的原理
Feign是Spring Cloud Netflix组件中的一个轻量级Restful的HTTP服务客户端,它简化了服务间调用的方式。Feign是一个声明式的web service客户端.它的出现使开发web service客户端变得更简单.使用Feign只需要创建一个接口加上对应的注解, 比如@FeignClient注解。Feign是一种声明式、模板化的HTTP客户端。
2023-03-17 09:39:52
1466
1
原创 再学一点Spring MVC
MVC模式,全称是Model-View-Controller(模型-视图-控制器)模式,它是一种软件架构模式,目标是将软件的用户界面和业务逻辑隔离,使代码具有更高的可扩展性,可复用行,可维护性以及灵活性.MVC模式将应用程序划分成模型、视图、控制器等三层,如下图所示:概念解释:viewcontrollerMVC模式的优点:完整的DispatcherServlet初始化流程,详见下图:这里我们以springboot为例进行springmvc初始化流程的分析,大家需要注意了,如果
2022-10-09 18:27:23
567
原创 Mysql索引类型
1.索引类型索引类型有以下几种:1.主键索引(PRIMARY)2.唯一索引(Unique)3.一般索引(Normal)4.全文索引(Full Text)主键索引(PRIMARY key):表中当且只有一个,并且不能为空,不能重复.唯一索引(Unique):对数据的一个约束,保证对应数据的唯一性,可以设置多个唯一索引,并且可以为空.一般索引(Normal):可以设置多个,也可以重复和空.全文索引(Full Text):为了检索大文本信息使用的.2.索引文件存储myisam和innodb索
2021-09-03 16:42:11
506
原创 @Valid参数校验
今天就简要描述一下在日常的开发工作中,所需要用到的参数校验.主要有2种,一个是@Valid,一个是@Validated@ValidJSR303 是一套JavaBean参数校验的标准,它定义了很多常用的校验注解,我们可以直接将这些注解加在我们JavaBean的属性上面.从注解的定义上面也可可以看到,它可以适用于方法,成员变量,构造方法,参数等等.范例如下:在javax.validation包中可以看到更多功能的注解:大家可以针对不同的场景做对应的参数校验.@Validated@Val
2021-09-03 16:39:49
2215
原创 Gitee简易入门
gitee操作使用gitee拉取或者提交merge request需要的操作git@gitee.com: Permission denied (publickey) 初次使用提示此错误的情况下.第一步:ssh-keygen -t rsa -C “自己的账号”第二步:ssh -v git@github.com第三步:把本地生成的rsa.pub复制到自己的gitee公钥设置里面.保存完毕以后,重新在开发工具里面拉取gitee代码即可....
2021-08-22 22:28:07
140
原创 nacos自动配置更新实现原理
1.nacos使用引用的相关的jar包 <dependency> <groupId>com.alibaba.boot</groupId> <artifactId>nacos-config-spring-boot-starter</artifactId> </dependency> <dependency> <g
2021-04-01 14:11:23
3591
4
原创 SpringBoot加载流程
1. 开门见山首先创建一个Application类@SpringBootApplicationpublic class Application { public static void main(String[] args) { SpringApplication.run(Application .class, args); }}第一步就看到一个注解@SpringBootApplication,启动SpringBoot项目的必备。我们打开这个注解类,可以看到里面
2021-03-24 14:32:15
1911
2
转载 Mysql数据库面试必备
Mysql数据库面试必备:链接:https://blog.youkuaiyun.com/ThinkWon/article/details/104778621版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
2020-05-22 18:58:06
207
原创 JVM内存分析常用工具
在日常的java开发中,总会出现内存溢出或者CPU过高的情况,这个时候就需要我们使用一些工具来分析具体的问题,下面简单罗列一下经常使用到的一些.1.jmap使用top命令查询pidjmap命令可以帮助我们分析jvm的堆栈信息jmap -heappid对上面的参数做简单的解释:Heap Configuration: ##堆配置情况,也就是JVM参数配置的结果[平常说的tomcat配置JVM参数,就是在配置这些] MinHeapFreeRatio = 0 ##最小堆使...
2020-05-12 19:42:46
1064
原创 group_concat函数长度问题
group_concat坑逼的函数默认最大长度为1024,在使用的过程中,如果长度大于1024会直接被截掉数据.解决方法:group_concat_max_len=具体值或者-1(无限长度)
2020-04-29 18:03:25
672
原创 Java项目内存占用过大宕机问题
记一次java项目占用内存过大,导致项目无限重启的情况.内存一直增加,并且不释放,就导致了服务器一直处在宕机的状态下,简单记录一下定位问题的几个关键知识点.1.使用top命令查询占用内存和cpu较大的线程2.查询后会获得一个PID的线程,使用jmap -histopid可以查看当前Java进程创建的对象数目和占用内存大小jmap -histo:live...
2020-04-08 20:17:39
2084
原创 NacosValue默认值
在不配置值的情况下,配置nacosValue的key是会报错的.可以采用如下的方式添加默认值@NacosValue(value = "${key:unknown}", autoRefreshed = true)
2020-01-13 16:48:36
9659
原创 LocalDateTime
public static void main(String[] args) { /** * Fri Nov 08 00:00:00 CST 2019 Fri Nov 08 23:59:59 CST 2019 Mon Nov 04 00:00:00 CST 2019 Sun Nov 10 23:59:59 C...
2019-11-08 14:31:05
465
原创 类加载
虚拟机把描述类的数据从Class文件加载到内存(方法区),并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的java类型,这就是虚拟机的类加载机制.类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载,验证,准备,解析,初始化,使用和卸载阶段.其中验证,准备,解析3个部分称为连接,发生顺序如下图所示:加载,验证,准备,初始化,卸载这5个阶段是按部就...
2019-06-21 10:23:21
120
原创 Spring Data JPA
//保存实体testJpa.save(t);//findByIdOptional<TestTest> byId = testJpa.findById(1L);//findAllList<TestTest> all = testJpa.findAll();//countlong count = testJpa.count();//getOne...
2019-06-19 20:22:15
216
原创 基于netty实现websocket高并发服务
1.WebScoket简述WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。websocket协议本身是构建在http协议之上的升级协议,客户端首先向服务...
2019-05-28 15:11:37
55607
8
转载 JVM内存模型和JVM内存结构
转载,支持原创,出自【zejian的博客】于:http://blog.youkuaiyun.com/javazejian/article/details/72772461Java内存模型概述Java内存模型(即Java Memory Model,简称JMM)本身是一种抽象的概念,并不真实存在,它描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问...
2019-05-20 16:03:05
1363
1
转载 java对象模型
大家都知道的是,Java对象保存在堆内存中。在内存中,一个Java对象包含三部分:对象头、实例数据和对齐填充。其中对象头是一个很关键的部分,因为对象头中包含锁状态标志、线程持有的锁等标志。这篇文章就主要从Java对象模型入手,找一找我们关系的对象头以及对象头中和锁相关的运行时数据在JVM中是如何表示的。Java的对象模型任何一个接触过Java的人都知道,Java是一种面向对象语言。在学习J...
2019-04-28 11:35:24
181
转载 基于Snowflake算法实现的分布式唯一id序列
/** * 基于Twitter的Snowflake算法实现分布式高效有序ID生产黑科技(sequence) * * <br> * SnowFlake的结构如下(每部分用-分开):<br> * <br> * 0 - 0000000000 0000000000 0000000000 0000000000 0 - 00000 - 00000 - 0000...
2018-10-31 09:34:41
289
原创 java8 新特性
1.function interfacepublic class UseFoo { public String add(String s, Foo foo){ return foo.method(s); } public String add(String s, Function<String,String> fn) { r...
2018-10-30 14:16:51
173
原创 java集合
1. 数组和集合数组只能存储基本数据类型,并且长度固定,不适合存储数量未知的. 集合可以存储对象,容量可以扩展.2. Collection结构 集合接口方法:public interface Collection<E> extends Iterable<E> { boolean isEmpty(); boolean contains(Object o); Iterator
2017-03-24 16:42:13
238
原创 Spring IoC容器
1. 概述IoC也称为”依赖倒置原理”(Dependency Inversion Principle),早在2004年,Martin Fowler就提出了 “哪些方面的控制被反转了?”这个问题.他得出的结论是:依赖对象的获得被反转了.依赖对象的获得从代码行里面直接new,变成通过IoC容器来管理依赖关系,并且有IoC容易完成依赖的注入. DI(Dependency Inject),DI是什么呢?跟
2017-03-23 16:38:19
263
原创 Mysql NULL和"的问题
只讨论MyIsam和Innodb存储引擎.Myisam从官网文档中可以看到1.定长NULL值是占用内存空间的.2.不定长NULL值也是占空空间的. “占一个位图,不存储到磁盘Innodb定长和不定长: 不定长的column,NULL值是不占用空间的,”也是不占用空间的,但是定长的仍然是占空空间的.innodb存储测试innodb存储
2017-03-17 14:42:47
276
原创 Tomcat加载流程
tomcat组成 tomcat主要由以上组建组成. 整个的http请求是通过tomcat以上组件协调完成的,server和service完成请求的基本设施,connector通过指定的协议和端口监听用户的请求,通过一层一层的处理,最终封装好响应信息返回给客户端.tomcat类加载上图简述tomcat类加载过程: tomcat的启动方式都是通过在org.apache.catalina.start
2017-03-16 17:09:17
4529
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人