自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

君子为猿的博客

技术如武功,招式再多,不如内功深厚!脚踏实地!

  • 博客(49)
  • 资源 (1)
  • 收藏
  • 关注

原创 mysql8.0 账号密码过期无法登录,重置密码--windows

一、停止运行MySQL服务方法1.在cmd命令行中输入: net stop mysql ; 这样就可以将MySQL服务停止。方法2.在任务管理器里搜索“service”,进入找到 MySQL服务,停止服务即可。方法3.win+r快捷键,输入services.msc回车,进入服务列表,找到Mysql服务。二、以管理员身份打开cmd,并切换至MySQL的安装目录下的bin目录;开启跳过密码验证登录的MySQL服务:1.输入:mysqld --console --skip-grant-tables --

2021-11-30 10:19:09 4552 3

原创 Lock wait timeout exceeded 锁表报错

报错信息:Cause: com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction解决方案:首先我们查看被锁表的进程SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;(此图片为处理后截图,所以trx_state为RUNNING,被锁时为LOCK WAIT。)然后找到进程号,即 trx

2021-05-06 15:07:34 325

原创 Docker容器中的mysql无法输入和显示中文

问题:Docker容器中的mysql无法输入和显示中文解决方案:指定容器的字符集:docker exec -it 容器名称/id env LANG=C.UTF-8 /bin/bash或在容器内使用 export LANG=C.UTF-8

2021-05-06 14:43:36 259

原创 centos6.9下jdk1.7升级jdk1.8,java -version没变

1、下载jdk1.8;2、移动到服务器 /usr/local 解压3、vi /etc/profile修改classpath为新路径source /etc/profilejava -version依然是1.74、若source过程中报错bash: TMOUT: readonly variable然后vi /etc/profile先把注释掉,再source;5、发现java -version依旧没变,使用 rpm -qa | grep java也是没有返回内容,原装的jdk已经被卸干净

2021-02-18 16:34:25 262

原创 使用Docker运行jar包,使用date查询时间正常,插入数据库时间多了8个小时

遇到这种问题,很自然地想到是: 服务器时间或时区不对导致的解决步骤:1、登入服务器,使用date命令查看服务器时间是否正常,以及进入入docke容器查看时间是否正常;如果不正常,先挂载宿主机的/etc/localtime 到容器的/etc/localtime;一:服务器时间 --正常二:docker容器时间 --正常重点:问题来了,但是即使date查询时间正常,插入数据库时间依然多了8个小时。2、 由于jre是通过/etc/timezone 配置文件读取本地时间的,所以需要修改etc/ti

2021-02-18 16:11:32 468

原创 SQL优化--别名的错误使用

原SQL:SELECTCOUNT(1) AS likenum,DATE_FORMAT(l.likeTime,’%Y-%m-%d’) AS statdate,cid,osFROM user_like_room_xxWHEREDATE_FORMAT(l.likeTime,’%Y-%m-%d’) BETWEEN ‘2020-08-27’ AND ‘2020-08-27’GROUP BY statdate, cid, os;SQL在数据库中执行情况:EXPLAIN SELECT COUNT(1

2020-09-16 15:03:39 338

原创 servlet的生命周期

servlet通过调用init()方法进行初始化;servlet通过service()方法来处理客户端的请求;servlet通过destroy()方法终止(结束)最后servlet是由JVM的垃圾回收器进行垃圾回收

2020-08-12 00:50:16 75

原创 索引的爱恨情仇

什么是索引:索引是帮助Mysql高效获取数据的数据结构,可以理解为 “ 排好序的快速查找的B+树数据结构 ”B+树的B代表 平衡)(balance)而不是二叉(binary)B Tree:B树(Balance Tree 多路平衡查找树)B+树(加强版多路平衡查找树)为什么是B+树哈希: 例如hashMap,查询/插入/修改/删除的平均时间复杂度都是O(1),但是不能范围查找树:例如平衡二叉搜索树,查找/插入/修改/删除的平均复杂度都是O(log2(n));B树:B树比平衡二叉树减少一

2020-08-11 23:45:44 92

原创 InnoDB、MyISAM的直观比较

MyISAMInnoDB主外键不支持支持事务不支持支持行表锁表锁,即使操作一条记录也会锁住整个表,不适合高并发操作行锁,操作时只锁某一行,不对其他行有影响,时候高并发的操作缓存只缓存索引,不缓存真实数据不仅缓存索引还要缓存真实数据,对内存要求较高,而且内存大小对性能有决定性的影响表空间小大关注点性能;它提供高速存储和检索,以及全文检索,适合大量select事务;适合增,删,改...

2020-08-11 22:29:33 68

原创 Ribbon默认自带的负载规则

com.netflix.loadbalancer.RoundRobinRule 轮询com.netflix.loadbalancer.RandomRule 随机com.netflix.loadbalancer.RetryRule 先按照RoundRobinRule的策略获取服务,如果获取服务失败则在指定时间内会进行重试,获取可用的服务WeightResponseTimRule 对Rou.

2020-08-01 17:04:11 353

原创 Https请求不信任服务器的证书报错解决方案

调用第三方系统Https接口时,出现报错信息如下:javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed:sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested targetat

2020-07-11 12:45:03 2583

原创 事务并发问题以及隔离级别

一:事务的四大属性 : ACID原子性 atomicity : 事务是一个原子操作单元.当事务修改时,要么全执行,要么全不执行,不允许事务部分完成.一致性 consistency : 一个事务执行开始和执行完成,数据库数据必须保持一致性状态.这意味着所有相关数据都必须应用于事务的修改,以保证完整性;事务结束时,所有的内部数据结构(如B树索引或双向链表)也都必须是正确的.数据不一致性的表现:脏读,幻读,不可重复读;隔离性(独立性) isolation : 隔离性使得每个事务的更新在它被提交之前,对其他

2020-06-25 01:58:06 213

原创 JSP内置对象总结

内置对象(隐含对象),是指在不声明和不创建的情况下就可以被使用的一些成员变量。JSP一共提供了9个内置对象。request(请求对象) :客户端请求,此请求包含来自GET/POST请求的参数。客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应,因此request对象时用来获取请求参数的重要途经。它是HttpServltRequest类的实例response(响应对象) :用来表示服务端对客户端的响应,将Web服务器处理后的结果返回给客户端。但在JSP中很少直接使

2020-06-25 00:38:52 527

原创 转发(forward)与重定向(redirect)的区别

Servlet 主要有两种实现跳转的方式: forward 方式 与 redirect 方式。forward 是服务器内部的重定向,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,而客户端并不知道,因此在客户端浏览器的地址栏中不回显示转向后的地址,还是原来的地址。由于在整个定向的过程中用的是同一个Request,因此forward会将Request的信息带到被定向的JSP或Servlet中使用。redirect 是客户端的重定向,是完全的跳转,即客户端浏览器会获取到跳转后的地址,然后重

2020-06-25 00:10:27 469

原创 异常处理的知识总结

一:throw和throws的区别:throw 代表一个具体动作,表示抛出一个异常,若执行了throw一定是抛出了某种异常;throws 代表一种状态,用来声明一个方法可能抛出的所有异常信息,方法可能有异常抛出,但不一定会发生异常。throw 用在方法实现中,由方法体内的语句处理;throws 用在方法声明中,表示如果抛出异常,则由该方法的调用者来进行异常处理。throw 只能用于抛出一种异常;throws 可以抛出多个异常throw 需要用户自己捕获相关的异常,而后在对其进行相关包装,最

2020-06-15 19:06:00 158

原创 run()方法和start()方法的区别

系统通过调用线程类的start()方法来启动一个线程,此时该线程处于就绪状态,而非线程状态,也就意味着这个线程可以被JVM来调度执行。在调度过程中,JVM通过调用线程类的run()方法来完成实际的操作,当run()方法结束后,此线程就会终止。如果直接调用线程类的run()方法,这会被当做一个普通的函数调用,程序中仍然只有主线程这一个线程。start方法能异步地调用run()方法,但是直接调用run()方法却是同步地,因此无法达到多线程的目的。演示代码:class ThreadDemo extends

2020-06-15 16:01:03 376

原创 SQL优化--索引失效的情况总结

全值匹配我最爱最佳左前缀法则不在索引列上做任何操作(计算、函数、(自动or手动)类型转换),会导致索引失效而转向全表扫描存储引擎不能使用索引中范围条件右边的列尽量使用覆盖所有(只访问索引的查询(索引列和查询列一致)),减少select *mysql在使用不等于(!=或者<>)的时候无法使用索引会导致全表扫描is null,is not null也无法使用索引likel以通配符开头(’%abc…’)mysql索引失效会变成全部扫描的操作可以使用覆盖索引解决like ‘%字符串%’.

2020-06-15 10:03:06 206

原创 HTTP中GET和POST方法有什么不同

采用GET方法向服务器上传数据时,一般将数据添加到URL后面,并且二者用 “ ?”连接,各个变量之间用 “ & ”连接。由于对URL的长度存在限制,因此采用这种方法能上传的数据量非常小,通常在1024左右采用POST方法传递数据时通过HTTP请求的附件进行的,传送的数据量更大一些,一般默认为不受限制的GET方法上传的数据是添加在URL中,因此上传的数据被彻底 “ 暴露 ”出来,本身存在安全隐患,尤其是当用户需要向服务器提交一些敏感信息时POST方法向服务器提交的内容在URL中..

2020-06-03 00:16:29 187

原创 String、StringBuffer、StringBuilder和StringTokenizer的区别

String:不可变类,对象一旦被创建,其值将不能被改变,因此适合再需要被共享的场合中使用,而当一个字符串经常需要被修改,尽可能不使用String。实例化String时,可以利用构造函数(String str=new String(“hello”))的方式去进行初始化也可以通过赋值(String str=“hello”)的方式去初始化.String字符串修改原理:当用String类型来对字符串进行修改时,其实现方法是首先创建一个StringBuilder,其次调用StringBuilder的appen

2020-05-14 23:54:29 158

原创 aop实现全局日志打印

import lombok.extern.slf4j.Slf4j;import org.aspectj.lang.JoinPoint;import org.aspectj.lang.annotation.*;import org.springframework.core.annotation.Order;import org.springframework.stereotype.Compo...

2020-05-11 15:08:37 299

原创 IoC、DI的分析

控制反转(Inverse of Control,IoC),是一种降低对象之间耦合关系的设计思想。一般而言,在分层体系结构中,都是上层调用下层的接口,上层依赖于下层的执行,即调用者依赖于被调用者。而通过IoC方式,使得上层不再依赖于下层的接口,即通过采用一定的机制来选择不同的下层实现,完成控制反转,使得由调用者来决定被调用者。IoC通过(DI)注入一个实例化的对象来达到解耦和的目的。使用这种方法后,对象不会显式调用而是根据需求通过IoC容器(例如Spring)来提供。采用IoC机制能够提高系统的可扩展性

2020-05-11 14:55:37 147

原创 cookie和session有什么区别?

cookie是在HTTP下,服务器或脚本可以维护客户工作站上信息的一种方式。它是由web服务器保存在用户浏览器上的小文件,可以包含有关用户的信息(如身份正识别号码、密码等信息)。session是指用来在客户端与服务端之间保持状态的解决方案以及存储结构。区别:cookie机制采用的是在客户端保持状态的方案,即数据存放在客户的浏览器上;而session机制采用的是服务端保持状态的方案,即数据放在服务端上。cookie安全性不够。由于cookie信息存放在客户端,其他人可以很容易地得到存放在本地的coo

2020-05-11 13:39:44 89

原创 线程和进程的区别?为什么使用多线程?

进程 : 是指一段正在执行的程序。线程: 是指程序正在执行过程中,能够执行程序代码的一个执行单元。线程有时也被称为轻量级进程,它是程序执行的最小单元,一个进程可以拥有多个线程。各个线程之间共享程序的内存空间(代码段、数据段、堆空间)及一些进程级的资源(例如打开的文件),但是各个线程拥有自己的栈空间。简单地说,线程所使用的资源来自其所属进程的资源,线程组之间只能共享资源。注意:在Java语言中,线程有4种状态:运行、就绪、挂起、结束。线程与进程的区别:1)地址空间和其它资源(如打开文件):进程

2020-05-08 22:25:03 990

原创 常用的垃圾回收算法

引用计数算法(Reference Counting Collector)引用技术作为一种简单但是效率较低的方法,其主要原理如下:在堆中对每个对象都有一个引用计数器;当

2020-05-08 12:54:48 107

原创 Spring Bean的作用域

Spring Bean的作用域之间有什么区别bean的作用域可以通过scope属性来指定bean的作用域singleton :默认值。当IOC容器一创建就会创建bean的实例,而且是单例的,每次得到的都是同一个;prototype :原型的。当IOC容器一创建不在实例化该bean,每次调用getBean方法时再实例化该bean,而且每调用一次都会创建一个对象;request :每次请求...

2020-05-07 16:03:31 77

原创 SpringBoot自动配置原理

自动配置原理:(1) SpringBoot启动的时候加载主配置类,开启了自动配置功能@EnableAutoConfiguration(2) @EnableAutoConfiguration的作用:利用EnableAutoConfigurationImportSelector给容器中导入一些组件?具体组件可以查看selectImports()方法的内容;List configu...

2020-05-06 18:08:49 109

原创 关于栈的思考

栈溢出的情况?StackOverflowError;举个简单的例子:在main方法中调用main方法,就会不断压栈执行,直到栈溢出;栈的大小可以是固定大小的,也可以是动态变化的.如果是固定的,可以通过-Xss设置栈的大小;调整栈大小,就能保证不出现溢出吗?不能分配的栈内存越大越好吗?不是,因为增加栈大小,会造成每个线程的栈都变的很大,使得一定的栈空间下,能创建的线程数量会变小垃圾...

2020-05-04 18:00:14 571 1

原创 JVM-双亲委派机制和沙箱安全机制

双亲委派机制的工作原理:如果一个类加载器收到了类加载请求,它并不会自己先去加载,而是把这个请求委托给父类的加载器去执行;如果父类加载器还存在其父类加载器,则进一步向上委托,依次递归,请求最终将要到达顶层的启动类加载器;如果父类加载器可以完成类加载任务,就成功返回,倘若父类加载器无法完成此加载任务,子加载器才会尝试自己去加载,这就是双亲委派模式.举个例子:假如你自定义了Java.lan...

2020-05-02 15:03:05 334

原创 JVM-类加载器

JVM支持两种类型的类加载器,分别是启动类加载器(引导类加载器,Bootstrap ClassLoader)和自定义加载器(User-Defined ClassLoader)。如下图从概念上来讲,自定义类加载器一般是指程序中由开发人员自定义的一类类加载器,但是Java虚拟机规范却没有这么定义,而是将所有派生于抽象类ClassLoad的类加载都划分为自定义类加载器。(Extension Clas...

2020-05-02 02:57:06 197

原创 常用Linux命令

top查看正在运行的进程nohup java -jar XXX.jar >日志文件名.log &部署jar包在后台运行并指定日志文件jps显示当前所有java进程pid的命令,使用jps -l可以显示更详细的进程名称kill (pid)杀死相应进程号(pid)的进程,加kill -9 pid 强制杀死该pid对应的进程ps选项: a:显示现行终端机下的所...

2020-05-01 18:10:32 91

原创 Java Collections框架

Java Collections框架主要提供了List(列表)、Queue(队列)、Set(集合)、Stack(栈)和Map(映射表,用于存放键值对)等数据结构。其中,List、Queue、Set、Stack都继承自Collection接口。Collection是整个集合框架的基础,它里面存储一组对象,表示不同类型的Collections,它的作用只是提供维护一组对象的基本接口而已。下面分别介...

2020-04-30 01:09:05 140

原创 方法的参数传递机制以及不可变类

形参是基本数据类型传递数据值实参是引用数据类型传递地址值特殊的类型:String、包装类等对象不可变性import java.util.Arrays;public class Demo { public static void main(String[] args) { int i=1; String str="hello"; /...

2020-04-28 00:08:28 333

原创 对volatile的理解与思考

volatile的翻译过来的意思是:易变的、 无定性的;被volatile修饰的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。因为使用Java编程的过程中,有时为了提高程序的运行效率,编译器会自动对其进行优化,把经常被访问的变量缓存起来,程序在读取这个变量是有可能会直接从缓存(例如寄存器)中读取这个值,而不是去内存中读取。这样做的一个好处是提高了程序的运行效率,...

2020-04-27 23:58:59 195

原创 关于TCP/IP的理解

TCP/IP的工作原理,通俗一点讲就是,一个主机的数据要经过哪些过程才能发送到对方的主机上。我们通过一张图先来大概了解一下TCP/IP协议的基本框架:当通过http发起一个请求时,应用层、传输层、网络层和链路层的相关协议依次对该请求进行包装并携带对应的首部,最终在链路层生成以太网数据包,以太网数据包通过物理介质传输给对方主机,对方接收到数据包以后,然后再一层一层采用对应的协议进行拆包,最后把...

2020-04-27 19:06:15 2905 5

原创 重载(Overload)和覆盖(重写Override)的区别

重载和覆盖是Java多态性的不同表现方式。重载是在一个类中多态性的一种表现,是指在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型。在使用重载时,需要注意以下几点:重载是通过不同的方法参数来区分的,例如不同的参数个数、不同的参数类型或不同的参数顺序。不能通过方法的访问权限、返回值类型和抛出的异常类型来进行重载。对于继承来说,如果基类(父类)方法的访问权限为...

2020-04-27 18:40:09 2306

原创 Idea如何在项目中添加Maven

(在根目录添加pom.xml文件)点击项目名,鼠标右键new一个File,文件名pom.xml。点击pom.xml文件上,右键 Add as Maven Project或 点击项目上,右键 Add Framework Support复制下面代码,修改一下artifactId为自己的项目名,我这里是JavaStudyDemo,就可以在里添加依赖了,我这里添加了lombok的依赖。<?...

2020-04-25 14:13:03 8349

原创 ABA问题的产生和解决方案

package CASDemo;import java.util.concurrent.TimeUnit;import java.util.concurrent.atomic.AtomicReference;import java.util.concurrent.atomic.AtomicStampedReference;public class ABADemo { sta...

2020-04-24 11:49:47 469

原创 关于AtomicInteger、CAS、Unsafe

AtomicInteger,为什么不用synchronized而用CAS?因为synchronized加锁,同一时间段允许一个线程来访问,一致性得到了保证,但是并发性下降;而用CAS没有加锁,使用do while进行比较,保证一致性有保证并发性。Unsafe.getAndAddInt的代码如下: public final int getAndAddInt(Object var1, long...

2020-04-23 16:37:10 230 1

原创 Java如何实现类似于C语言中函数指针的功能

在C语言中,有一个非常重要的概念—函数指针,其最重要的功能是实现回调函数。什么是回调函数?所谓回调函数,就是指函数先在某处注册,而它将在稍后某个需要的时候被调用。在Window系统中,开发人员想让系统动态链接库(Dynamic Link Library,DLL)调用自己编写的一个方法,于是利用DLL当中回调函数的接口来编写程序,通过传递一个函数的指针来调用,这个过程就称为回调。回调函数一般用...

2020-04-19 00:16:27 673

原创 什么是反射机制?

反射机制(reflection)是Java语言中一个非常重要的特性,它允许程序在运行时进行自我检查,同时也允许对其内部的成员进行操作。由于反射机制能够实现在运行时对类进行转载,因此能够增加程序得灵活性,但是不恰当地使用反射机制,也会严重影响系统地性能。具体而言,反射机制提供的功能主要有:得到一个对象所属的类;获取一个类的所有成员变量和方法;在运行时创建对象;在运行时调用对象的方法;其实...

2020-04-18 18:18:47 1354

cmake-3.17.0.tar.gz

cmake离线安装rpm包

2020-04-12

空空如也

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

TA关注的人

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