- 博客(74)
- 收藏
- 关注
原创 JVM
类加载过程 加载 >> 验证 >> 准备 >> 解析 >> 初始化 加载 在硬盘上查找并通过IO读入字节码文件,使用到类时才会加载,例如调用类的 main()方法,new对象等等,在加载阶段会在内存中生成一个代表这个类的 java.lang.Class对象,作为方法区这个类的各种数据的访问入口 验证 校验字节码文件的正确性(cafe babe) 准备 给类的静态变量分配内存,并赋予默认值 解析 将符号引用替换为直接引用,该阶段会把一些静态方法(符号引用,比如
2022-02-08 21:16:57
894
原创 并发
JMM规范 每个线程有独立的工作内存 共享变量先复制到工作内存,修改后更新共享变量 数据同步八大原子操作 (1)lock(锁定):作用于主内存的变量,把一个变量标记为一条线程独占状态 (2)unlock(解锁):作用于主内存的变量,把一个处于锁定状态的变量释放出来,释放后 的变量才可以被其他线程锁定 (3)read(读取):作用于主内存的变量,把一个变量值从主内存传输到线程的工作内存 中,以便随后的load动作使用 (4)load(载入):作用于工作内存的变量,它把read操作从主内存中得到的变量值放入工
2022-01-16 13:06:09
341
原创 Mysql优化
统计慢sql查询 https://blog.csdn.net/qq_40884473/article/details/89455740 一、sql优化 explain详解 type保证达到range级别,最好达到ref 1.满足最左前缀法则 2.不对索引进行操作(计算、函数、类型转换) 3.尽量使用覆盖索引,不使用 select * 语句 4.不使用不等于(!=或者<>),not in ,not exists 5.避免在where子句中对字段进行 null 值判断 对于
2021-07-23 10:38:06
186
原创 ELK使用配置文档
对于日志来说,最常见的需求就是收集、存储、查询、展示,开源社区正好有相对应的开源项目:logstash(收集)、elasticsearch(存储+搜索)、kibana(展示),我们将这三个组合起来的技术称之为ELKStack,所以说ELKStack指的是Elasticsearch、Logstash、Kibana技术栈的结合。
2021-03-11 14:37:54
2041
1
原创 nacos
用数据库连接工具连接数据库,下载nacos的sql执行/opt/app/software/nacos8848/conf/nacos-mysql.sql。PS:如果出现后启动的把先启动的挤挂的情况,应该是服务器内存不够了,修改startup.sh,将值改小。将conf\cluster.conf.example改为cluster.conf,添加节点配置。访问http://172.28.202.20:8848/nacos/index.html。启动服务,查看nacos地址,服务已经注册上去了。
2024-08-02 17:10:45
1346
原创 Ribbon
新增策略import com// 获取所有实例 List < Server > reachableServers = loadBalancer . getReachableServers();// 获取随机数 int random = ThreadLocalRandom . current() . nextInt(reachableServers . size());} }
2024-08-02 16:58:32
740
原创 linux安装配置jdk
①下载jdk安装包,放在/opt/app/software/java下。这个问题可能是由于缺少相应的依赖库导致的。③解压完成之后,进行环境变量的配置,shell下执行。按ESC键,然后:wq保存退出;根据jdk的安装目录,加入。④使jdk环境变量生效。
2024-08-01 14:47:35
457
原创 liunx安装配置mysql
设置 character-set-server=utf8 和 default-storage-engine=innodb。如果在安装过程中遇到GPG密钥问题,可以执行命令来解决。授权远程访问(这里的 % 表示允许所有IP地址连接)设置字符集、端口、存储引擎等参数。下载MySQL Yum源。安装MySQL服务器软件。初次启动与设置MySQL。检查服务是否正常运行。查看日志获取临时密码。
2024-08-01 11:15:39
353
原创 本地新建项目上传gitee
一旦.gitignore文件设置好,Git就会开始忽略这些指定的文件和目录。对于已经跟踪的文件,需要从Git索引中移除,才能使.gitignore规则生效。在项目的根目录下创建或编辑一个名为.gitignore的文件。向.gitignore文件中添加特定的规则来排除.idea文件夹。5、将新创建的Gitee仓库添加到本地Git仓库作为远程仓库。7、将本地仓库的内容推送到Gitee仓库。1、创建或编辑.gitignore文件。2、添加所有文件到新的Git仓库。1、初始化一个新的Git仓库。
2024-07-25 15:25:25
521
原创 Mysql锁、隔离级别与事务MVCC详解
锁 类型分类 描述 读锁(共享锁) 阻塞写:当前session更新会报错,其他session更新会阻塞等待不阻塞读:任意session都可以读 写锁(排它锁) 读和写都会阻塞:当前session所有操作都没问题,其他session的所有操作会阻塞等待 类型分类 描述 共享锁 (1)其他事务可以对该数据加共享锁,但不能加排他锁(2)只能读,不能修改(3)可通过查询语句后加上lock in share mode进行加锁 排它锁 (1)其他事务不能对该数据加任何的锁(2
2021-07-28 16:30:13
336
原创 explain详解
1.id select 的序列号,有几个select就有几个id id列越大执行优先级越高,id相同则从上往下执行,id为NULL最后执行。 2.select_type select_type 表示对应行是简单还是复杂的查询。 1)simple:简单查询,不包含子查询和union 2)primary:复杂查询中最外层的 select 3)subquery:子查询,where后面 4)derived:from后面的查询。MySQL会将结果存放在一个临时表中,也称为派生表 3.table列 这一列表示 expl
2021-07-27 14:13:29
412
原创 1.8HashMap源码分析
put final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict) { Node<K,V>[] tab; Node<K,V> p; int n, i; //如果数组为空,或长度为0,进行初始化(resize方法前面部分代码是初...
2020-05-08 16:14:56
235
转载 HashMap的table索引计算
在整理HashMap的工作原理时,发现它调用了 indexFor(int h, int length) 方法来计算Entry对象保存在 table中的数组索引值: static int indexFor(int h, int length) { return h & (length-1); }123 它没有对hash表的长度取余而使用了位运算来得到索引,这是为什么呢,顿生怀疑~ 分...
2020-05-02 15:44:11
716
转载 Java 8-新的日期和时间API
转载:https://blog.csdn.net/zsx157326/article/details/80887673 日期和时间:LocalDate和LocalTime LocalDate类,该类的实例是一个不可变对象,它只提供了简单的日期,并不含当天的时间信息。另外,它也不附带任何与时区相关的信息。 可以通过静态工厂方法of创建一个LocalDate实例。LocalDate实例提供了多种方法来...
2019-09-19 14:06:36
215
原创 elasticsearch学习
es的核心概念 基于lucene (1)分布式文档存储引擎 (2)分布式搜索引擎和分析引擎 (3)分布式,支持PB级数据 1. Near Realtime(NRT) 近实时 1. CLuCLuster 集群 2. Node 节点 3. Document 文档 4. Index 索引 5. Type 类型 6. primary shard 7. replica shard es和数据库对比 ...
2019-09-18 11:18:50
425
原创 Date相关操作
查询某月第一天 /** * 获取某月第一天 * * @param dateyyyyMM * @return */ private String getFirstDateByMonth(String dateyyyyMM) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-...
2019-09-18 11:17:13
245
原创 冒泡排序
原理 (1)比较前后相邻的二个数据,如果前面数据大于后面的数据,就将这二个数据交换。 (2)这样对数组的第 0 个数据到 N-1 个数据进行一次遍历后,最大的一个数据就“沉”到数组第 N-1 个位置。 (3)N=N-1,如果 N 不为 0 就重复前面二步,否则排序完成。 代码 public static void bubbleSort(int[] a) { int i, j; for (i =...
2019-07-29 16:08:58
145
原创 插入排序
原理: 从第二个数开始(i=1)循环作为插入的数,和前一个数(index=i-1)进行比较,如果前一个数小于插入的数,则插入数插入index+1位置,如果前一个数大于插入的数,给index+1位置赋值上index位置的数,index–,来循环比较前面的数,直到前一个数(index)小于插入的数,插入数插入index+1位置 代码 public void insertSort(int arr[]) ...
2019-07-29 15:38:34
141
原创 快速排序
快速排序的原理: 选择一个关键值作为基准值。比基准值小的都在左边序列(一般是无序的), 比基准值大的都在右边(一般是无序的)。一般选择序列的第一个元素。 一次循环: 从后往前比较,用基准值和最后一个值比较,如果比基准值小的交换位置,如果没有 继续比较下一个,直到找到第一个比基准值小的值才交换。找到这个值之后,又从前往后开始比 较,如果有比基准值大的,交换位置,如果没有继续比较下一个,直到找到第一个...
2019-07-29 15:08:29
223
原创 lambda表达式
函数接口 一般使用注解@FunctionalInterface修饰 在Java 8中,把那些仅有一个抽象方法的接口称为函数式接口。如果一个接口被@FunctionalInterface注解标注,表示这个接口被设计成函数式接口,只能有一个抽象方法 java8自带的常用函数式接口 函数接口 抽象方法 功能 参数 返回类型 Predicate test(T t) 判断真假 T boole...
2019-07-18 14:03:10
157
原创 设计模式-装饰者模式
参考:head-first-设计模式 定义 装饰者模式动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案 这个模式主要就是,装饰类和被装饰类需要继承同一个超类,实现超类里面的抽象方法 问题描述 一个咖啡店,需要统计订单上的咖啡,以及加的配料,算总价,配料数量、种类经常变化 项目结构 如下,最下面的Beverage就是饮料的超类 类图 先编写饮料的超类 //饮料的超类 ...
2019-07-11 11:33:31
143
原创 list删除某个元素的三种方法
Stream List<String> list1 = list.stream().filter(list2->!list2.equals("123")).collect(Collectors.toList()); for循环 for (int i=0;i<list.size();i++){ if (list.get(i).equals("123")){ ...
2019-07-10 16:25:49
41759
2
原创 ThreadLocal源码分析
ThreadLocal最好使用private static修饰 set方法 public void set(T value) { //获取当前线程 Thread t = Thread.currentThread(); //根据获取的线程,调方法获取存放数据的map ThreadLocalMap map = getMap(t); //判断是否是第一次set ...
2019-07-03 15:24:43
173
原创 Java并发编程:volatile关键字解析
看这篇文章:https://www.cnblogs.com/dolphin0520/p/3920373.html 总结一下 为了解决缓存不一致性问题 1)通过在总线加LOCK#锁的方式 2)通过缓存一致性协议 Intel 的MESI协议,MESI协议保证了每个缓存中使用的共享变量的副本是一致的 缓存一致性协议:当CPU写数据时,如果发现操作的变量是共享变量,即在其他CPU中也存在该变量的副本,会发...
2019-07-02 15:40:20
250
原创 spring boot整合redis
加入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 添加配置 spring.redis.h...
2019-07-02 13:47:08
457
原创 Java 8-Stream详解
Stream使用实际就是把 集合对象转换为stream对象 对stream对象进行过滤筛选等操作 筛选后的结果又转换为集合,或者返回统计结果 串行:.stream() 并行:.parallelStrea() 1. 集合转换为Stream对象 collection集合转换成stream对象 list.stream() set.stream() 数组转换成stream对象 Stream....
2019-07-01 15:13:25
227
原创 oracle合并多条数据不相同字段
需要使用到函数wm_concat(),和分组group by select wm_concat(t.name) from user t group by t.sex ps:当组内某条数据的name为null的时候,只拼接不为null的数据 如果多个字段值相同,可以同时作为分组条件 select wm_concat(t.name) from user t group by t.sex,t.age ...
2019-06-28 10:00:21
2530
原创 修改linux服务tomcat的jdk版本
查看jdk版本,得到jdk和jre路径 进入服务器,cd usr/java/ -->ll 查看jdk版本 cd进入需要的版本 pwd打印出jdk路径 进入jre用pwd打印出jre路径 进入服务 修改vim bin/catalina.sh 如果没有圈起来的HOME就添加,如果有就修改 JAVA_HOME=/usr/java/jdk1.8.0_121 JRE_HOME=/usr/ja...
2019-06-17 22:05:50
2423
转载 xxl-job任务调度框架的使用
新建程序 加入pom依赖 <dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core</artifactId> <version>1.9.1</version> </dependency> 新建一个配...
2019-06-17 21:57:51
1274
原创 遍历http请求参数
遍历请求头 Enumeration<String> headerNames = request.getHeaderNames(); if (null != headerNames) { while (headerNames.hasMoreElements()) { String headerName = headerNames.nextElement(); ...
2019-06-17 21:32:36
1812
4
原创 Xml和Object转换
以下是相互转换的代码 public final class XmlAndJavaObjectConvert { /** * 将对象直接转换成String类型的 XML输出 * * @param obj * @return */ public static String convertToXml(Object obj)...
2019-06-17 21:23:52
548
原创 git使用的基本命令
github关联的参考文章 以下只是总结常用命令 初始化仓库 git init 添加到暂存区 $ git add 文件名 #将文件的修改,文件的新建,添加到暂存区。 $ git add . #将所有文件的修改,文件的新建,添加到暂存区。 $ git add -u #将文件的修改、文件的删除,添加到暂存区 $ git add -A #将文件的修改,文件的删除,文件的新建,添加到暂存区。 提交 ...
2019-06-17 21:18:27
351
原创 spring cloud Zuul网关使用
新建spring cloud程序,添加依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zuul</artifactId> </dependency> 启动类上添加注解 @Enable...
2019-06-17 17:29:06
203
原创 使用idea自带database连接使用oracle
点击idea右边有database的按钮 点击添加oracle数据库 输入自定义的数据库名字,输入正确的host,port,sid,user,password 观察uri是否和项目中连接数据库的链接相同 点击Test Connection,第一次会报错,提示你安装驱动,点击确定安装好驱动,测试链接成功 选择数据库 可以选择数据库中的表进行查看 在控制台输入sql 点击绿色小三角运行 ...
2019-06-17 15:49:14
9641
原创 Hystrix dashboard监控使用
需要加入依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix-dashboard</artifactId> </dependency> <dependency> ...
2019-06-17 13:26:25
413
原创 基于git的spring cloud config使用详解
一、首先需要启动eureka注册中心 注册中心的编写启动参考:https://blog.csdn.net/forezp/article/details/69696915 二、在git中新建config仓库 输入仓库名 新建文件夹configRepository,并在下面新增application-cs.properties,里面新增配置haha=hehe 把新增的文件夹上传到git上 git...
2019-06-14 10:31:25
350
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅