
Java
文章平均质量分 68
Java学习笔记
北城寒冰
大佬多多指点
展开
-
Mybatis 的流式查询
流式查询指的是查询结果是一个迭代器,而不是一个集合,应用每次从迭代器查询一条结果。流式查询的好处是降低内存的使用。但是要注意流式查询的过程中要保持连接一直存在,所以流式查询以后数据库访问框架就不负责关闭数据库连接了,需要自己去维护。流式查询接口package org.apache.ibatis.cursor;import java.io.Closeable;/** * Cursor contract to handle fetching items lazily using an Ite原创 2021-11-23 14:16:55 · 6607 阅读 · 0 评论 -
Prometheus学习2
官方文档prometheus是什么简单的说就是后台服务监控组件被监控服务暴露自己与前台或者其他服务的交互数据,prometheus采集这些具体数据,通过目前现有的聚合方式或者说监控指标所需要基础数据源通过图表的方式,展示出服务的当前状态以及之前某一段时间内的状态。它并不能保证采集回来的数据100%正确、采集的数据量是被监控服务的100%。组件Prometheus Server:用于收集指标和存储时间序列数据,并且提供查询接口。client Liberary:客户端库(例如ja翻译 2021-11-22 17:13:31 · 389 阅读 · 0 评论 -
Spring事务管理
Spring事务管理器在spring的事务流程中事务的打开回滚和提交都是交给事务管理器来完成。事务管理器顶层接口是PlatformTransactionManager.当我们使用mybatis框架时,最常用的是DataSourceTransactionManager它实现了PlatformTransactionManager接口,关于 PlatformTransactionManager的源码如下:package org.springframework transaction;public i.翻译 2021-11-20 14:28:49 · 131 阅读 · 0 评论 -
Prometheus学习1
配置文件官方配置文件解释 - 英文原配置文件为yml,写入配置的时候注意不要使用tab或者其他特殊符号去编辑,否则不识别。也可以将配置文件定义为其他类型的文件比如json格式,在yml中配置每一种类型的监控需要一个job_name,比如后台需要一个job_name,mysql需要一个,redis需要一个,相同的job_name下的targets中可以配置多个ip,然后通过配置下面的配置文件生效配置配置:prometheus.yml - job_name: 'node-exporter' #原创 2021-11-12 15:34:14 · 888 阅读 · 0 评论 -
Nginx和HA负载
Nginx和HA负载NginxHAProxyF5硬负载LVS负载Nginx1. 工作在OSI第7层之上,可以针对http做一些分流策略,例如针对域名、目录结构,它的正则规则比HAproxy更为强大和灵活。2. 对网络稳定性依赖小,理论上能ping通就可以负载3. 安装、配置简单,测试方便,基本能把错误日志打印出来4. 可以承担高负载压力且稳定,硬件不差的情况下一般能撑几万次的并发量,负载度比LVS小HAProxyF5硬负载LVS负载...原创 2021-11-12 14:37:09 · 2577 阅读 · 0 评论 -
JVM07-类加载器<ClassLoader>
1. 任何Class对象,都会包含一个定义该类的ClassLoader对象2. 数组类(一个数组,元素是类)不由类加载器创建,是运行时由java虚拟机根据需要创建。如果使用该数组对象调用getClassLoader对象,则返回的类加载器的类型和他元素调用getClassLoader()方法,返回的是一样的。 String[] str = new String[2]; //在rt.jar下,所以是根类加载器加载 System.out.println(str.ge...原创 2021-06-26 19:16:48 · 250 阅读 · 0 评论 -
JVM06-类加载器深入解析
类加载类加载的最终产品是位于内存中的Class对象。Class对象封装了类在方法区内的数据结构,并且想向Java程序员提供了访问方法区内的数据结构的接口。类加载器类型Java自带虚拟机的类加载器根类加载器(Bootstrap,启动类加载器)扩展类加载器(Extension)系统引用类加载器(System)用户自定义类加载器java.lang.ClassLoader的子类用户可以定制类的加载方式类加载器的初始化类加载器并不需要等到某个类被 “首次主动使用” 时在加原创 2021-06-16 00:27:55 · 247 阅读 · 0 评论 -
JVM05-接口初始化和类加载分析学习
public class interfaceLoader { public static void main(String[] args) { System.out.println(ChildInter.child); }}interface ParentInter { Integer parent = 1;}interface ChildInter extends ParentInter { Integer child = 2;}原创 2021-05-24 23:29:25 · 145 阅读 · 0 评论 -
JVM04-编译器常量和运行期常量的区别以及数组创建的分析学习
此文章,为学习记录变量在编译期和运行期的区别public class FinalVariableDemo { public static void main(String[] args) { System.out.println(StaticTest.str); }}class StaticTest{ static final String str = UUID.randomUUID().toString(); static { Sy原创 2021-05-19 23:06:39 · 99 阅读 · 0 评论 -
JVM03-常量的本质含义和反编译助记符学习
JVM指令-xx:+TraceClassLoading , 用于追踪类的加载信息并打印出来最先加载java.lang.Object这里最后加载了我们自定义的父类和子类,并输出结果-XX:+ < jvm_optional > ,开启optional选项,就比如上面的TraceClassLoading-XX:- < jvm_optional > ,表示关闭jvm_optional选项-XX:< optional > = < value原创 2021-05-18 23:38:56 · 99 阅读 · 0 评论 -
JVM02-类的加载连接与初始化过程
加载:将java的字节码文件加载到内存中。Java对类的使用过分为两种主动使用被动使用注意:所有的java虚拟机实现必须在每个类或者接口被Java程序 首次主动使用的时候才会被初始化主动使用Jvm字节码划分的主动使用和被动使用准确性更高,但是平时开发接触不多,所以粗略的分为以下几种:创建类的实例 即:new class访问某个类或者接口的静态变量,或者对该静态变量赋值调用类的静态方法反射,如Class.forName(“xx.xx.Test”)初始化一个类的子类。.原创 2021-05-17 22:52:53 · 126 阅读 · 0 评论 -
JVM01-类加载器解析和阶段分解
类加载在java代码中,类型的加载、连接、初始化都是在运行期间完成的Java虚拟机和程序的生命周期以下几种情况java虚拟机将结束生命周期执行了System.exit()程序正常执行程序在执行过程中遇到异常或者错误而异常终止由于操作系统出现错误导致虚拟机进程终止类的加载、连接、初始化加载查找并加载类的二进制数据连接验证:确保被加载类的正确性准备:为类的静态变量分配内存,并将其初始化为默认值解析: 将类中的符号引用转换为直接引用初始化为类的静态变量赋予正确原创 2021-05-12 22:14:57 · 92 阅读 · 0 评论 -
SpringBoot配置文件扫描
SpringBoot配置文件位置:外置,在相对于应用程序运行目录的/config子目录里外置,在应用程序运行的目录里内置,在resources/config包内内置,在classpath更目录(resources)目录下。原创 2021-04-08 00:48:59 · 1678 阅读 · 0 评论 -
Java基础01
java执行流程Java源码 ---> 编译器 ---->Jvm可以执行的字节码(即虚拟指令)---->jvm ---->jvm中的解释器 ----->机器可以执行的二进制机器码 ----->程序运行遗忘点01this和super相关this代表当前类,super代表父类super()和this()均需要放在构造方法内第一行尽管可以用this调用一个构造器,但是却不能调用两个this和Super不能出现在同一个构造函数中,因为this必然会调用其他的构原创 2021-03-14 19:02:26 · 97 阅读 · 0 评论 -
Dubbo学习一
Dubbo是一个分布式、高性能、透明化的RPC服务框架,提供服务自动注册、自动发现等高效服务治理方案、可以和Spring框架无缝集成RPC 指的是远程调用协议,也就是说两个服务器交互数据核心功能Remoting: 网络通信框架,提供对多种NIO框架抽象封装,包括"同步转异步"、"请求-响应"模式的信息交换方式Cluster: 服务框架,提供基于接口方法的透明远程过程调用,包括多协议支持,以及负载均衡、地址路由、动态配置等集群支持Registry:服务注册,基于注册中心目录服务,使服务消费方能.原创 2021-03-14 16:51:43 · 117 阅读 · 0 评论 -
SpringBoot框架下实现配置文件修改动态加载(不用重启服务)
Controller层File file = new File("配置文件url");JSONObject jsonObject = fileLinstenerService.fileChangeDoSomething(file);Service层@AutowiredRedisUtils redisUtils;@AutowiredFlowSurveyComponent flowSurveyComponent;private Map<String,Long> configFi原创 2021-03-13 15:43:33 · 3767 阅读 · 0 评论 -
问题集合-01
stream流判断列表中有多少重复数据Map<Object,Long> map= list.stream().collect(Collectors.groupingBy(item->item,Collectors.counting()));map.forEach((k,v)-> System.out.println(k+":"+v));Redis的差值比较sdiff 注意时间的格式、数据类型、数据精度的变化。mysql使用ENCODE/DECODE加密/解密的方式处理数据原创 2021-03-13 15:14:48 · 133 阅读 · 0 评论 -
SpringBoot的start的作用以及基本原理
SpringBoot优点:创建独立的Spring应用内嵌Tomcat、Jetty或Undertow(无需部署war包)提供自用的starter来简化构建配置提供指标监控、运行状况检查和外部化配置没有代码生成,也不需要配置xml如果部署一个常规spring需要做以下操作:pom文件引入相关jar包,如spring、springmvc、mybatis等配置web.xml,Listener配置、Filter配置、Servlet配置、Log4j等等插件配置配置数据库连接、配置spring事务原创 2021-03-13 14:50:53 · 7359 阅读 · 0 评论