- 博客(74)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 JVM
类加载过程加载 >> 验证 >> 准备 >> 解析 >> 初始化加载在硬盘上查找并通过IO读入字节码文件,使用到类时才会加载,例如调用类的 main()方法,new对象等等,在加载阶段会在内存中生成一个代表这个类的 java.lang.Class对象,作为方法区这个类的各种数据的访问入口验证校验字节码文件的正确性(cafe babe)准备给类的静态变量分配内存,并赋予默认值解析将符号引用替换为直接引用,该阶段会把一些静态方法(符号引用,比如
2022-02-08 21:16:57
766
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 并发
JMM规范每个线程有独立的工作内存共享变量先复制到工作内存,修改后更新共享变量数据同步八大原子操作 (1)lock(锁定):作用于主内存的变量,把一个变量标记为一条线程独占状态 (2)unlock(解锁):作用于主内存的变量,把一个处于锁定状态的变量释放出来,释放后 的变量才可以被其他线程锁定 (3)read(读取):作用于主内存的变量,把一个变量值从主内存传输到线程的工作内存 中,以便随后的load动作使用 (4)load(载入):作用于工作内存的变量,它把read操作从主内存中得到的变量值放入工
2022-01-16 13:06:09
230
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Mysql优化
统计慢sql查询https://blog.csdn.net/qq_40884473/article/details/89455740一、sql优化explain详解type保证达到range级别,最好达到ref1.满足最左前缀法则2.不对索引进行操作(计算、函数、类型转换)3.尽量使用覆盖索引,不使用 select * 语句4.不使用不等于(!=或者<>),not in ,not exists5.避免在where子句中对字段进行 null 值判断对于
2021-07-23 10:38:06
110
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 ELK使用配置文档
对于日志来说,最常见的需求就是收集、存储、查询、展示,开源社区正好有相对应的开源项目:logstash(收集)、elasticsearch(存储+搜索)、kibana(展示),我们将这三个组合起来的技术称之为ELKStack,所以说ELKStack指的是Elasticsearch、Logstash、Kibana技术栈的结合。
2021-03-11 14:37:54
1539
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
668
原创 Ribbon
新增策略import com// 获取所有实例 List < Server > reachableServers = loadBalancer . getReachableServers();// 获取随机数 int random = ThreadLocalRandom . current() . nextInt(reachableServers . size());} }
2024-08-02 16:58:32
555
原创 linux安装配置jdk
①下载jdk安装包,放在/opt/app/software/java下。这个问题可能是由于缺少相应的依赖库导致的。③解压完成之后,进行环境变量的配置,shell下执行。按ESC键,然后:wq保存退出;根据jdk的安装目录,加入。④使jdk环境变量生效。
2024-08-01 14:47:35
367
原创 liunx安装配置mysql
设置 character-set-server=utf8 和 default-storage-engine=innodb。如果在安装过程中遇到GPG密钥问题,可以执行命令来解决。授权远程访问(这里的 % 表示允许所有IP地址连接)设置字符集、端口、存储引擎等参数。下载MySQL Yum源。安装MySQL服务器软件。初次启动与设置MySQL。检查服务是否正常运行。查看日志获取临时密码。
2024-08-01 11:15:39
262
原创 本地新建项目上传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
241
原创 Mysql锁、隔离级别与事务MVCC详解
锁类型分类描述读锁(共享锁)阻塞写:当前session更新会报错,其他session更新会阻塞等待不阻塞读:任意session都可以读写锁(排它锁)读和写都会阻塞:当前session所有操作都没问题,其他session的所有操作会阻塞等待类型分类描述共享锁(1)其他事务可以对该数据加共享锁,但不能加排他锁(2)只能读,不能修改(3)可通过查询语句后加上lock in share mode进行加锁排它锁(1)其他事务不能对该数据加任何的锁(2
2021-07-28 16:30:13
189
原创 explain详解
1.idselect 的序列号,有几个select就有几个idid列越大执行优先级越高,id相同则从上往下执行,id为NULL最后执行。2.select_typeselect_type 表示对应行是简单还是复杂的查询。1)simple:简单查询,不包含子查询和union2)primary:复杂查询中最外层的 select3)subquery:子查询,where后面4)derived:from后面的查询。MySQL会将结果存放在一个临时表中,也称为派生表3.table列这一列表示 expl
2021-07-27 14:13:29
325
原创 1.8HashMap源码分析
putfinal 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
163
转载 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
583
转载 Java 8-新的日期和时间API
转载:https://blog.csdn.net/zsx157326/article/details/80887673日期和时间:LocalDate和LocalTimeLocalDate类,该类的实例是一个不可变对象,它只提供了简单的日期,并不含当天的时间信息。另外,它也不附带任何与时区相关的信息。可以通过静态工厂方法of创建一个LocalDate实例。LocalDate实例提供了多种方法来...
2019-09-19 14:06:36
144
原创 elasticsearch学习
es的核心概念基于lucene(1)分布式文档存储引擎(2)分布式搜索引擎和分析引擎(3)分布式,支持PB级数据1. Near Realtime(NRT)近实时1. CLuCLuster集群2. Node节点3. Document文档4. Index索引5. Type类型6. primary shard7. replica shardes和数据库对比...
2019-09-18 11:18:50
350
原创 Date相关操作
查询某月第一天/** * 获取某月第一天 * * @param dateyyyyMM * @return */ private String getFirstDateByMonth(String dateyyyyMM) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-...
2019-09-18 11:17:13
166
原创 冒泡排序
原理(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
97
原创 插入排序
原理:从第二个数开始(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
93
原创 快速排序
快速排序的原理:选择一个关键值作为基准值。比基准值小的都在左边序列(一般是无序的),比基准值大的都在右边(一般是无序的)。一般选择序列的第一个元素。一次循环:从后往前比较,用基准值和最后一个值比较,如果比基准值小的交换位置,如果没有继续比较下一个,直到找到第一个比基准值小的值才交换。找到这个值之后,又从前往后开始比较,如果有比基准值大的,交换位置,如果没有继续比较下一个,直到找到第一个...
2019-07-29 15:08:29
144
原创 lambda表达式
函数接口一般使用注解@FunctionalInterface修饰在Java 8中,把那些仅有一个抽象方法的接口称为函数式接口。如果一个接口被@FunctionalInterface注解标注,表示这个接口被设计成函数式接口,只能有一个抽象方法java8自带的常用函数式接口函数接口抽象方法功能参数返回类型Predicatetest(T t)判断真假Tboole...
2019-07-18 14:03:10
107
原创 设计模式-装饰者模式
参考:head-first-设计模式定义装饰者模式动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案这个模式主要就是,装饰类和被装饰类需要继承同一个超类,实现超类里面的抽象方法问题描述一个咖啡店,需要统计订单上的咖啡,以及加的配料,算总价,配料数量、种类经常变化项目结构如下,最下面的Beverage就是饮料的超类类图先编写饮料的超类//饮料的超类...
2019-07-11 11:33:31
88
原创 list删除某个元素的三种方法
StreamList<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
41300
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
114
原创 Java并发编程:volatile关键字解析
看这篇文章:https://www.cnblogs.com/dolphin0520/p/3920373.html总结一下为了解决缓存不一致性问题1)通过在总线加LOCK#锁的方式2)通过缓存一致性协议Intel 的MESI协议,MESI协议保证了每个缓存中使用的共享变量的副本是一致的缓存一致性协议:当CPU写数据时,如果发现操作的变量是共享变量,即在其他CPU中也存在该变量的副本,会发...
2019-07-02 15:40:20
167
原创 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
379
原创 Java 8-Stream详解
Stream使用实际就是把集合对象转换为stream对象对stream对象进行过滤筛选等操作筛选后的结果又转换为集合,或者返回统计结果串行:.stream()并行:.parallelStrea()1. 集合转换为Stream对象collection集合转换成stream对象list.stream()set.stream()数组转换成stream对象Stream....
2019-07-01 15:13:25
157
原创 oracle合并多条数据不相同字段
需要使用到函数wm_concat(),和分组group byselect wm_concat(t.name) from user t group by t.sexps:当组内某条数据的name为null的时候,只拼接不为null的数据如果多个字段值相同,可以同时作为分组条件select wm_concat(t.name) from user t group by t.sex,t.age...
2019-06-28 10:00:21
2317
原创 修改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_121JRE_HOME=/usr/ja...
2019-06-17 22:05:50
2238
转载 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
1126
原创 遍历http请求参数
遍历请求头Enumeration<String> headerNames = request.getHeaderNames();if (null != headerNames) { while (headerNames.hasMoreElements()) { String headerName = headerNames.nextElement(); ...
2019-06-17 21:32:36
1646
4
原创 Xml和Object转换
以下是相互转换的代码public final class XmlAndJavaObjectConvert { /** * 将对象直接转换成String类型的 XML输出 * * @param obj * @return */ public static String convertToXml(Object obj)...
2019-06-17 21:23:52
460
原创 git使用的基本命令
github关联的参考文章以下只是总结常用命令初始化仓库git init添加到暂存区$ git add 文件名 #将文件的修改,文件的新建,添加到暂存区。$ git add . #将所有文件的修改,文件的新建,添加到暂存区。$ git add -u #将文件的修改、文件的删除,添加到暂存区$ git add -A #将文件的修改,文件的删除,文件的新建,添加到暂存区。提交...
2019-06-17 21:18:27
251
原创 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
145
原创 使用idea自带database连接使用oracle
点击idea右边有database的按钮点击添加oracle数据库输入自定义的数据库名字,输入正确的host,port,sid,user,password观察uri是否和项目中连接数据库的链接相同点击Test Connection,第一次会报错,提示你安装驱动,点击确定安装好驱动,测试链接成功选择数据库可以选择数据库中的表进行查看在控制台输入sql点击绿色小三角运行...
2019-06-17 15:49:14
9085
原创 Hystrix dashboard监控使用
需要加入依赖<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix-dashboard</artifactId></dependency><dependency>...
2019-06-17 13:26:25
332
原创 基于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
263
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人