自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(155)
  • 资源 (1)
  • 收藏
  • 关注

原创 java反射学习笔记

案例:美团外卖 --> 付款 --> 要么微信支付,要么支付宝支付#那么这里由美团制定规则JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。在编译后产生字节码文件的时候,类加载器子系统通过二进制字节流,负责从文件系统加载class文件。在执行程序(java.exe)时候,将字节码文件读入jvm中-->这个过...

2022-01-03 17:57:47 506

转载 Java实现心跳机制

实现原理:长连接的维持,是要客户端程序,定时向服务端程序,发送一个维持连接包的。如果,长时间未发送维持连接包,服务端程序将断开连接。客户端:Client通过持有Socket的对象,可以随时(使用sendObject方法)发送Massage Object(消息)给服务端。如果keepAliveDelay毫秒(程序中是2秒)内未发送任何数据,则自动发送一个KeepAlive Object(心跳)给服务端,用于维持连接。由于,我们向...

2021-06-29 17:12:33 2434

转载 Java线程池的拒绝策略实现详解

一、简介jdk1.5 版本新增了JUC并发编程包,大大的简化了传统的多线程开发。Java线程池,是典型的池化思想的产物,类似的还有数据库的连接池、redis的连接池等。池化思想,就是在初始的时候去申请资源,创建一批可使用的连接,这样在使用的时候,就不必再进行创建连接信息的开销了。举个生活中鲜明的例子,在去著名洋快餐某基或者某劳的时候,配餐人员是字节从一个中间的保温箱里面直接取,然后打包就好了。不用再临时的来了一个单子,又要去拿原材料,又要去进行加工。效率明显的就是提高了很多。既然是池子,那么必然

2021-06-29 16:54:03 446

转载 线程池参数——workQueue用法

线程池参数的 workQueue 决定了缓存任务的排队策略,对于不同的业务场景,我们可以使用不同的排队策略。我们只需要实现BlockingQueue 这个接口即可。介绍一下常用的有三种workQueue1. SynchronousQueue(阻塞队列)SynchronousQueue没有容量,是无缓冲等待队列,是一个不存储元素的阻塞队列,会直接将任务交给消费者(即丢给空闲的线程去执行),必须等队列中的添加元素被消费后才能继续添加新的元素,否则会走拒绝策略,所以使用SynchronousQueu

2021-06-29 16:44:59 1502

转载 java的三种代理模式

1.代理模式代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法举个例子来说明代理的作用:假设我们想邀请一位明星,那么并不是直接连接明星,而是联系明星的经纪人,来达到同样的目的.明星就是一个目标对象,他只要负责活动中的节目,而其他琐碎的事情就交给他的代理人(经

2021-06-29 16:24:24 112

转载 系统部署时如何设置JVM内存大小

上一篇说到了我们创建的对象都是优先分配在新生代的当一个方法执行完毕之后,没人引用的对象,就成为了垃圾对于 通过 static 静态变量引用的 对象会长期存活当新生代的空间满了之后,会触发垃圾回收机制对于躲过垃圾回收的对象,会对它的年龄 +1当年龄达到 15 岁之后会进入老年代老年代也会进行垃圾回收JVM核心参数-Xms:Java堆内存的大小-Xmx:Java堆内存的最大大小-Xmn:Java堆内存中的新生代大小,扣除新生代剩下的就是老年代的内存大小了-XX:Per

2021-06-29 15:48:36 372

原创 mysql主从,主挂解决方案

TODO

2021-04-20 01:46:25 686

转载 mysql主从,从挂解决方案

在从库中查询showslavestatusslave_IO_Running:No 说明数据库同步操作失败解决方案1.在主库那边(master)清除日志flushlogs;2.查看主库状态showmasterstatus;3.记下对应的File, Position的值,下面会用到4.重新建立主从,在从库(slave),执行:CHANGEMASTERTOMASTER_LOG_FILE='****-000004',MASTER_LOG_POS=107...

2021-04-20 01:31:01 614

转载 redis缓存满了,继续写入数据会怎么样?

这里是使用淘汰策略:在Redis 4.0之前有6种内存淘汰策略,之后又增加2种,一共8种,如下图所示:noeviction策略:内存空间达到maxmemory时,不会淘汰数据,有新写入时会返回错误。 volatile-ttl策略:针对设置了过期时间的键值对,根据过期时间的先后进行修改,越早过期的越先被删除。 volatile-random策略:在设置了过期时间的键值对中,进行随机删除。 volatile-lru策略:使用LRU算法筛选设置了过期时间的键值对,进行删除。 volati.

2021-04-20 01:14:29 2571

原创 spring bean的生命周期

参考多个博客主要有下面3个版本,个人倾向于版本3版本1:简单点就是:bean实例化->bean的初始化->bean的使用->bean的销毁1、实例化:也就是new一个对象2、属性注入:spring上下文实例化的bean进行配置3、设置beanId:如果实现beanNameAware接口,调用setBeanName()设置ID4、调用BeanFactoryAware.setBeanFactory(eanFactory):可以用这个方式来获取其它的bean,只...

2021-04-20 00:58:50 169

转载 redis事务

1、基本概念1)什么是redis的事务?简单理解,可以认为redis事务是一些列redis命令的集合,并且有如下两个特点:a)事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。b)事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。2)事务的性质ACID一般来说,事务有四个性质称为ACID,分别是原子性,一致性,隔离性和持久性。a)原子性atomicity:redis事务保证事务中的.

2021-04-19 21:41:27 92

原创 Spring、springMVC、SpringBoot区别

Spring是一个“引擎”,其实就是我们最底层的框架;springMVC是基于spring的mvc框架,springBoot是基于spring4的条件注册的一套快速开发整合包。Spring最初利用工厂模式(DI)、代理模式(AOP)解耦应用组件。大家觉得挺好用的,于是按照这种模式搞了一套mvc框架(一些用于spring解耦的组件)用于开发web应用,这就是我们的springmvc了。因为springmvc的配置太过复杂了,各种xml臃肿且复杂;并且每次开发都有很多的样板代码,这些样板代码都是可以提取出来

2021-04-19 21:35:00 305

原创 SpringBoot和SpringMVC的区别

spring boot与spring mvc的区别是什么?spring boot只是一个配置工具,整合工具,辅助工具.springmvc是框架,项目中实际运行的代码Spring 框架就像一个家族,有众多衍生产品例如 boot、security、jpa等等。但他们的基础都是Spring 的ioc和 aop. ioc 提供了依赖注入的容器, aop解决了面向横切面的编程,然后在此两者的基础上实现了其他延伸产品的高级功能。Spring MVC是基于Servlet 的一个 MVC 框架主要解.

2021-04-19 21:01:20 139

原创 java中的notify和notifyAll有什么区别

如果线程调用了对象的 wait()方法,那么线程便会处于该对象的等待池中,等待池中的线程不会去竞争该对象的锁。当有线程调用了对象的 notifyAll()方法(唤醒所有 wait 线程)或 notify()方法(只随机唤醒一个 wait 线程),被唤醒的的线程便会进入该对象的锁池中,锁池中的线程会去竞争该对象锁。也就是说,调用了notify后只要一个线程会由等待池进入锁池,而notifyAll会将该对象等待池内的所有线程移动到锁池中,等待锁竞争优先级高的线程竞争到对象锁的概率大,假若某线程没有竞争到该对

2021-04-19 19:14:27 152

转载 Java线程的6种状态及切换(透彻讲解)

Java中线程的状态分为6种。1. 初始(NEW):新创建了一个线程对象,但还没有调用start()方法。2. 运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态笼统的称为“运行”。线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取CPU的使用权,此时处于就绪状态(ready)。就绪状态的线程在获得CPU时间片后变为运行中状态(running)。3.阻塞(B..

2021-04-19 19:06:22 504

原创 HashMap中链表转为红黑树的条件

HashMap中链表转为红黑树的条件HashMap的底层是元素为链表的数组。转化条件在JDK1.8之后,HashMap中的链表在满足以下两个条件时,将会转化为红黑树(即自平衡的排序二叉树):1. 条件一数组 arr[i] 处存放的链表长度大于8;2. 条件二数组长度大于64。满足以上两个条件,数组 arr[i] 处的链表将自动转化为红黑树,其他位置如 arr[i+1] 处的数组元素仍为链表,不受影响...

2021-04-15 12:36:14 11719 9

转载 使用vim打开某文件一直出现Swap file “.nginx.conf.swp“ already exists!

故障:在使用vim编辑nginx的配置文件的时候,一直出现swp文件已存在的现象: 在使用vim编辑某文件的时候,会产生一个swp文件 .FILENAME.swp在正常编辑结束退出的时候,该文件会被自动删除如果不小心删除原文件,可以使用vim -r FILENAME,就是利用swp文件恢复原文件(前提是系统没有重启,系统重启后,该文件也会消失) 一般,在使用vim打开某文件的时候出现这种问题的原因有两种: 1.此时该文件已经被打开 在这...

2021-04-11 07:08:49 2900

转载 JVM性能调优的6大步骤,及关键调优参数详解

一、JVM内存调优对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数。1.Full GC会对整个堆进行整理,包括Young、Tenured和Perm。Full GC因为需要对整个堆进行回收,所以比较慢,因此应该尽可能减少Full GC的次数。2.导致Full GC的原因1)年老代(Tenured)被写满调优时尽量让对象在新生代GC时被回收、让对象在新生代多存活一段时间和不要创建过大的对象及数组避免直接在旧生代创建对象 。2)持久代Pemanet .

2021-03-28 11:49:26 7452

转载 java中内存泄露8种情况的总结

由于java的JVM引入了垃圾回收机制,垃圾回收器会自动回收不再使用的对象,了解JVM回收机制的都知道JVM是使用引用计数法和可达性分析算法来判断对象是否是不再使用的对象,本质都是判断一个对象是否还被引用。那么对于这种情况下,由于代码的实现不同就会出现很多种内存泄漏问题(让JVM误以为此对象还在引用中,无法回收,造成内存泄漏)。1、静态集合类,如HashMap、LinkedList等等。如果这些容器为静态的,那么它们的生命周期与程序一致,则容器中的对象在程序结束之前将不能被释放,从而造成内存泄漏。简单而

2021-03-28 08:44:35 131

转载 过滤器 与拦截器 与 切面的区别

过滤器 -> 通过集成Filter实现. 缺点如下1.1 无法获取请求要访问的类与方法,以及参数. 可以获取原始的http请求与相应拦截器 -> 基于springmvc提供的拦截器接口,自定义实现.缺点如下2.1 可以获取请求访问的类与方法 , 但是无法获取请求参数的值. 具体可根据dispatcherServlet跟踪源码切面 -> 基于spring , 通过aspect注解实现3.1 可以获取访问的类 方法 以及参数值. 但是无法获取http原始的请求与相应的对象执行顺序

2021-03-21 16:10:15 249

原创 SpringBoot整合Quartz定时任务&多定时任务

参考博客:https://blog.csdn.net/chenmingxu438521/article/details/94485695https://blog.csdn.net/upxiaofeng/article/details/79415108#commentBoxhttps://blog.csdn.net/a510750/article/details/90241004https://blog.csdn.net/qq_29145405/article/details/81843123

2020-12-22 06:14:02 355

原创 linux定时任务

第一次写linux定时任务,这个定时任务与数据备份有关1、编写backup.sh脚本文件#!/bin/shmysqldump -uroot -prss123 o2o > /home/backup/sql/o2o_`date +%Y-%m-%d_%H:%M:%S`.sqltar -zcvf /home/backup/image/image_`date +%Y-%m-%d_%H:%M:%S`.tar.gz /home/image/#!/bin/sh表示当前是以shell脚本来运行..

2020-08-23 19:30:04 197 3

转载 Spring 过滤器 拦截器 AOP区别

简介这几天在回顾Spring的AOP时,对过滤器,拦截器,AOP的关系有点好奇,故记录做以备份。在实现一些公共逻辑的时候,很多功能通过过滤器,拦截器,AOP都能实现,但是不同的方式有不同的效率。具体有什么区别,看下文描述。前后端交互基本逻辑过滤器过滤器拦截的是URLSpring中自定义过滤器(Filter)一般只有一个方法,返回值是void,当请求到达web容器时,会探测当前请求地址是否配置有过滤器,有则调用该过滤器的方法(可能会有多个过滤器),然后才调用真实的业务逻辑,至此过滤器任

2020-08-23 18:58:16 150

原创 springMVC 拦截器

spring 拦截器springmvc 相关知识spring中的interceptor是通过HandlerInterceptor来实现的,我们实现一个拦截器只需要实现handlerInterceptor接口或者继承实现了handlerInterceptor的类即可,例如spring提供的HandlerInterceptorAdapter是实现了HanderInterceptor的类,我们可以通过继承这个类来实现自己的拦截器。HandlerInterceptorAdapter中实现了3个方法:pr

2020-08-23 18:57:11 95

原创 Type Cannot change version of project facet Dynamic Web Module to 3.1.

原因:新建动态web项目web.xml中默认如下:<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" ><web-app> <display-name>Archetype Created Web Application</display-name&gt

2020-08-22 14:16:35 186

转载 CentOS7设置静态IP而且还可以上网

最近在学习FastDFS分布式文件系统,在学习的时候碰到了一个问题就是给CentOS虚拟机配置静态IP后,就无法访问网络了,找了很久才找解决方法了第一步:VMware开启后,我们点击头部菜单中的“编辑”,在下拉菜单中点击“虚拟网络编辑器(N)...”,然后点击更改设置,如下图所示第二步:点击上图的"更改设置”之后,我们会看到如下图所示的界面,我们先点击VMnet8那一行,然后把下面“...

2020-04-29 22:01:04 340

原创 SQL练习(5)(2020-04-12)

鉴于我写sql语句的能力有些差,在今后的一段时间内会时常做一些sql语句的练习。先给自己定一个小目标:先将网上能找到的sql练习都做一遍。——————————————————————————————————————————————————————这里使用的是oracle自带的几张表,在scott用户下面。放开scott方法见:https://blog.csdn.net/qq_26896...

2020-04-13 00:18:08 158

原创 SQL练习(4)(2020-04-11)

鉴于我写sql语句的能力有些差,在今后的一段时间内会时常做一些sql语句的练习。先给自己定一个小目标:先将网上能找到的sql练习都做一遍。——————————————————————————————————————————————————————这里使用的是oracle自带的几张表,在scott用户下面。这里主要涉及到表的连查,分组1.查询和 smith 相同部门的员工姓名和雇用...

2020-04-12 02:02:30 734

原创 linux上面oracle卸载

linux安装oracle教程:https://blog.csdn.net/qq_26896085/article/details/105186971参考上面这个一路下来,oracle远行没有问题但是出现中文乱码。...

2020-04-09 00:11:34 225

原创 SQL练习(3)(2020-04-07)

鉴于我写sql语句的能力有些差,在今后的一段时间内会时常做一些sql语句的练习。先给自己定一个小目标:先将网上能找到的sql练习都做一遍。——————————————————————————————————————————————————————使用oracle中的scott用户自带的几张表进行查寻出来的数据-- 查询工资大于 1500 的所有雇员 select * from em...

2020-04-08 00:14:25 257

原创 SQL练习(2)(2020-04-06)

鉴于我写sql语句的能力有些差,在今后的一段时间内会时常做一些sql语句的练习。先给自己定一个小目标:先将网上能找到的sql练习都做一遍。——————————————————————————————————————————————————————这里主要是一些常用的函数操作-- 数值函数-- 向上取整 ceil()select ceil(15.499) from dual;--...

2020-04-07 00:46:53 152

原创 SQL练习(1)(2020-04-06)

鉴于我写sql语句的能力有些差,在今后的一段时间内会时常做一些sql语句的练习。先给自己定一个小目标:先将网上能找到的sql练习都做一遍。————————————————————————————————————————————————————————这次的sql练习使用oraclq自带的几张表,在scott用户下面。scott用户是锁定了的,通过下面操作解锁# 我的环境是在lin...

2020-04-07 00:43:08 186

原创 linux虚拟机重启之后,启动oracle的实例

1)使用oracle用户su -l oracle2)启动监听lsnrctl start3)启动实例# export ORACLE_SID=‘实例名’export ORACLE_SID=orcl# 输入下面命令,进入数据库中sqlplus / as sysdba# sql输入栏,输入‘startup’startup*若是想关闭实例,sql输入栏,...

2020-04-06 05:08:32 538

原创 linux虚拟机Cenos7安装oracle并使用PQSQL进行远程连接

1、去官网下载linux版本的oracle的包2、将包上传到服务器并解压3、关闭selinuxvim /etc/selinux/config#修改SELINUX=disabled4、开放端口firewall-cmd --zone=public --add-port=1521/tcp --permanent#重启systemctl restart firewalld.s...

2020-04-06 04:59:30 536

原创 HashMap.Entry源码

这个是HashMap的内部类,通过EntrySet用来存储所有的map的值。为什么我们用Iterator可以来进行遍历map的数据?原因就是有这个内部类,EntrySet ---> AbstractSet --> Set --> Collection --> Iterator; (--> 表示继承或是实现关系)这样们就可以通过Iterator来迭...

2020-03-25 11:25:28 465

原创 HashMap.Node源码

HashMap的内部类,用来存储链表上面的节点数据 // 内部类,重新实现map的Entry接口 static class Node<K,V> implements Map.Entry<K,V> { // 存入hash值 final int hash; // 存入key final K key;...

2020-03-25 11:09:54 558

原创 hashMap.TreeNode

这个是hashMap的内部类,与红黑树操作有相关,这个内部类看的不是很懂,大概懂了不到50%的样子,有机会一定回来复习。// ------------------来处于LinkedHashMap------------------------ static class Entry<K,V> extends HashMap.Node<K,V> { //...

2020-03-25 11:05:49 448

原创 AbstractMap源码

package java.util;import java.util.Map.Entry;import sun.net.www.content.image.gif;// 抽象类,实现Map集合,hashMapp, hashTable均实现的这个类public abstract class AbstractMap<K,V> implements Map<K,V>...

2020-03-25 10:58:25 118

原创 Map源码

package java.util;import java.util.function.BiConsumer;import java.util.function.BiFunction;import java.util.function.Function;import java.io.Serializable;// Map是一个接口public interface Map<K...

2020-03-25 10:56:48 283 1

原创 两张表,若如果想让B中的bname字段的值等A表中对应id的aname值

有个朋友问了我这个一个数据库的问题,如下两张表,若如果想让B中的bname字段的值等A表中对应id的aname值表Aid aname 1 1 2 2 3 3 表Bid bname 1 2 3 请写出正确的sql语句。我给出的答案如下,亲测可以通过UPDATEBLEFTJOIN...

2020-03-23 09:01:13 324

数据结构上机指导

数据结构c语言指导,链表,栈队,图表,各个经典例题

2016-01-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除