自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 redis为什么要延时双删

首先,删除缓存是为了让其他事务读取数据的时候不会读到旧事务,而更新数据库前清除缓存和更新数据库后清除缓存解决的是不同时期的脏数据问题只先删缓存的话,当我们在清除缓存和更新数据库间有事务查询缓存,此时没有缓存,数据库还没更新,所以缓存又更新为旧数据了只后删缓存的话,在删除缓存之前读到的数据都是旧数据那我们将两者综合起来的话,在更新前和更新后都进行删除,就可以很大程度上避免读到脏数据那为什么要延时双删呢?我们考虑这样一种情况,在我们两次删除缓存之间更新数据库之前,B事务读到了数据库中的脏数据,但是他的时

2021-08-18 17:24:34 3732

转载 http请求中的8种请求方法

1、opions返回服务器针对特定资源所支持的HTML请求方法 或web服务器发送*测试服务器功能(允许客户端查看服务器性能)2、Get向特定资源发出请求(请求指定页面信息,并返回实体主体)3、Post向指定资源提交数据进行处理请求(提交表单、上传文件),又可能导致新的资源的建立或原有资源的修改4、Put向指定资源位置上上传其最新内容(从客户端向服务器传送的数据取代指定文档的内容)5、HeadHEAD就像GET,只不过服务端接受到HEAD请求后只返回响应头,而不会发送响应内容。当我们只

2021-08-12 23:44:56 797

原创 Spring 为什么要有IOC容器

自己又梳理了一些个人的见解因为对于一些组件,我们并不知道其内部是怎么实现的,也不清楚需要使用的时候我们要怎么new对象,要传入什么样的参数,如果需要调用框架以外的东西需要不断学习轮子怎么使用的话,会很大的提高所有人的学习成分,降低开发效率,还会出现一些不规范引起的错误。如果我们使用了IOC容器的话,可以通过配置实现组件的自动装配,通过容器来完成框架以外的组件的管理,我们只需要去使用IOC容器为我们实例好的对象就可以了,这样不仅降低了开发成本,同时,如果某个组件进行了更新,我们也不需要对业务代码进行更改,

2021-08-12 23:24:52 462

原创 sql查询语句的执行顺序

1.from2.where3.group by4.having5.根据select 关键之后的要显示的字段,进行结果集显示6.order by 对最终结果集进行排序7.top/dictinct

2021-08-12 23:18:47 137

原创 win10网络里面只剩飞行模式一个模块

解决方法右键此电脑 -> 管理 -> 设备管理器 -> 网络适配器 找到网卡设备,禁用设备,关机(不要重启,关机再打开) 再次找到网卡设备,启用设备右键右下角状态栏的网络 -> 打开“网络和Internat”设置 ,找到重置网络,点击重置(会清除掉之前存储的网络信息包括记住的wifi密码),等待重启右键网络,点击疑难解答,点击浏览我的计算机以查找驱动程序软件,勾选显示兼容硬件,选个别的版本的试试看下网卡型号,插网线或者用手机下一个对应的网卡驱动传到电

2021-08-09 00:14:10 2329

原创 关于sql调优的浅显了解

sql状态及慢sql定位想进行调优我们首先肯定是需要找到需要优化的sql,不然就像没头苍蝇一样没法进行下一步了这里介绍几种可以查看sql状态帮助定位的一些方法通过show status命令shou status命令可以查看当前数据库的状态信息,会显示出很多当前数据库的状态信息,对于sql状态我们主要关注一下两种前缀的参数Com_xxx表示的是每个 xxx 语句执行的次数,我们通常关心的是 select 、insert 、update、delete 语句的执行次数Com_select:执行 s

2021-08-08 23:57:29 131

转载 sqlsession

类似于JDBC的Connection,底层封装了JDBC连接,可以使用SQLSession实例来执行被映射的sql语句,每个线程都应该有自己的SqlSession实例,不能共享,SQLSession也是线程不安全的,使用过后应该使用finally块来确保关闭他package com.cn.testIUserService;import java.io.IOException;import java.io.InputStream;import org.apache.ibatis.io.Resourc

2021-08-08 22:03:04 210

原创 ThreadLocal的结构、使用以及内存泄露问题

关于ThreadLocal的认知一直停留在了解阶段,有很多细节和具体结构一直不是特别清楚,网上的博客写的过于公式话也描述的不是很清晰,所以查看源码来学习一下首先先介绍一些将会出现的一些参数ThreadLocal : 其存在意义并不是作为存储数据的数据结构,而是作为一个工具类和索引key值来查询数据使用ThreadLocalMap : 真正存储数据的数据结构,采用map结构,定义是ThreadLocal的一个内部类,每个线程都有一个独立的ThreadLocalMap对象Entry : Thre

2021-08-07 18:09:31 275 1

原创 java线程池

java线程池线程池很久以前学习的知识了复习一下顺便做个总结首先为什么需要有线程池这种东西我们要知道java线程的创建和销毁是操作系统级别的操作,所以对于性能的消耗很大,如果频繁的创建销毁线程对于性能资源是一种很大的浪费,为了避免这种浪费,我们运用池化思想,使用线程池实现线程的复用来来避免线程的频繁创建和销毁。使用线程池还能提高任务的响应速度,节约了创建线程的时间并且,使用线程池让我们可以更好的管理线程,做出相应的优化和限制,避免一些由于无限制创建线程造成的系统问题线程池的工作流程图解很清晰

2021-08-05 17:32:42 79

原创 java的值传递

想必大家都听说过一句话,“java只有值传递没有引用传递”,初学java 的时候对这句话有很多不解,就像下面这样public class Person { private String name; private int age; public Person() { } public Person(String name, int age) { this.name = name; this.age = age; }

2021-08-04 18:13:56 80

原创 聚簇索引和非聚簇索引

聚簇索引聚簇索引的索引文件同时也是数据文件,“聚簇”的意思就是数据行按照一定顺序紧密排列存储,一张表只能有一个聚簇索引,因为在一个表中数据的存放方式只有一种。对应数据结构来讲,即使用B树时每个节点不仅存储对应的索引,同时存储索引对应的数据行数据,使用B+树时即为所有叶子节点存储数据行的数据。那么在对应的数据库中,使用mysql的情况下,Innodb引擎是通过主键聚集数据,如果没有定义主键,Innodb会选择非空的唯一索引代替。如果没有这样的索引,Innodb会隐式的定义一个主键来作为聚簇索引。关于聚

2021-08-04 17:18:05 947

原创 linux环境下单机部署zookeeper教程

准备工作zookeeper为java语言编写,需要java环境下载zookeeper安装包,并上传至服务器,下载链接http://archive.apache.org/dist/zookeeper/环境搭建1.zookeeper安装包上传至linux服务器此处我使用WinSCP连接linux服务器做文件上传WinSCP为一款图形化服务器文件上传下载工具,下载链接https://winscp.net/eng/docs/lang:chs2.解压找到zookeeper安装包所在位置,使用以

2021-07-29 11:20:25 2546

原创 关于JVM堆的一些典型配置

堆的典型配置堆设置-Xms:初始堆大小,也就是当你的虚拟机启动后, 就会分配这么大的堆内存给你-Xmx:最大堆大小-XX:NewSize=n:设置年轻代大小**-XX:NewRatio=n:**设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4-XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代

2021-07-25 11:24:22 152

原创 笔记本电脑自带的摄像头打不开的问题

先右键我的电脑–>管理–>设备管理器–>照相机,在里面找有没有摄像头,看看是否是禁用状态,如果禁用了打开就好了如果还不行,使用一些电脑管家或者驱动精灵之类的软件检查一下驱动是否正常看看笔记本最上面的那排F1的键,有个带摄像头标志的,直接按或者Fn+那个键试试高潮来了,帮别人正常解决办法都尝试了最后还是没打开然后找了半天…右下角状态栏里有个联想电脑管家,页面里有禁用麦克风和摄像头给禁用了所以没办法就检查检查电脑是不是下了一堆管家在养蛊,给垃圾软件毙掉...

2021-06-16 18:06:33 6430 2

原创 springboot项目生成代码失败

相同demo之前可以生成代码但是突然在使用generator进行代码生成时后台无报错信息且代码没生成我遇到的情况下的解决办法:检查打开项目的根目录路径是否正确(是否有不合规的嵌套)检查项目是否放置于C盘(可能因为没有开启管理员权限导致没有生成)...

2021-06-09 23:33:19 369

原创 面向对象设计的六大原则

1、开闭原则(Open Close Principle)开闭原则的意思是:对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。简言之,是为了使程序的扩展性好,易于维护和升级。符合开闭原则的开发过程应该是使用抽象或接口来搭建程序框架,避免2、里氏代换原则(Liskov Substitution Principle)里氏代换原则是面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。LSP 是继承复用的基石,只有当派生类可以替

2021-04-10 18:40:26 2281

原创 数据库事务以及mvcc

事务隔离级别读未提交可能存在脏读、不可重复读、幻读的问题读已提交可能存在不可重复读、幻读的问题可重复读可能存在幻读的问题可串行化所有事务串行执行,无前述三种问题对应的三种问题脏读 :脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。不可重复读 :是指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改

2021-04-05 16:26:36 130

原创 128陷阱

在刷题时,碰到了题目中使用Integer类型时使用“==”的方法判断导致题解出错的问题,在查阅了评论和题解之后才意识到是掉进了128陷阱当中 (= =||) ,借此机会打算了解并总结一下Integer出现此问题的原因...

2021-03-17 11:54:07 148

原创 JVM自动内存管理知识总结

java内存区域与内存溢出异常运行时数据区域JVM中将其占用的内存区域分为方法区、堆、虚拟机栈、本地方法栈、程序计数器其中方法区、堆为线程共享的,虚拟机栈、本地方法栈及程序计数器为线程私有的程序计数器是一块较小的内存空间,可看作是当前线程所执行的字节码的行号指示器,在JVM中字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令。为了线程切换后能恢复到正确的执行位置,每条线程都需要一个独立的程序计数器,所以称程序计数器为线程私有的内存如果线程正在执行的是一个java方法,

2021-03-12 00:51:31 77

原创 有关集群和负载均衡的一些总结

几台服务器做一样的事情叫集群,要负载均衡用nginx进行负载分发负载均衡有什么功能:从哪台服务器登录,之后就会一直访问那台服务器,所有请求先访问ngnix服务器,再由ngnix服务器分发到各个服务器,并且ngnix也有配置https证书的功能DNS也有负载均衡的功能,一个域名分发给不同ip先dns分发给ngnix,再由ngnix分发给服务器前后端分离的好处,减轻后端负载压力,不用每次访问都要下载前端页面(不分离时,html页面为java代码生成故每次都要下载完整的html代码,图片、css、js文件

2021-03-12 00:41:57 262

原创 Spring中IOC

控制反转(Inversion of Control,缩写为IoC),是面向对象变成中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式是依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。(百度百科)这里我们需要注意,IOC != DI,IOC是一个原则,DI只是实现IOC的一种手段

2021-03-12 00:23:32 145 1

原创 Spring-AOP

什么是AOP?AOP(Aspect Oriented Programming)译为面向切面编程,是通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。AOP能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等)封装起

2021-03-10 20:50:15 253

转载 反射和动态代理

膜拜大神,讲得很通俗易懂原文链接:https://blog.csdn.net/huanglei305/article/details/101012177反射反射机制是 Java 语言提供的一种基础功能,赋予程序在运行时自省(introspect)的能力。简单来说就是通过反射,可以在运行期间获取、检测和调用对象的属性和方法。 反射的使用场景 1.编程工具 IDEA 或 Eclipse 等,在写代码时会有代码(属性或方法名)提示,就是因为使用了反射; 2.很多知名的框架,为了让程序更优雅更简洁,也.

2021-03-06 01:10:05 757

原创 java enum枚举类

在查阅单例模式相关的问题中了解到Effective Java 作者 Josh Bloch 提倡以enum枚举类型来解决单例模式的避免多线程同步问题,而且还自动支持序列化机制,防止反序列化重新创建新的对象,绝对防止多次实例化。但此前对enum使用不甚了解,遂边学习边总结一下~定义枚举类型public enum Gender { MALE , FEMALE , UNKNOWN; public static void main(String[] args)//enum类中是可以定义main方法的

2021-01-29 22:17:39 199 1

原创 java定义复数类(以字符串形式传参的构造器)

第一段自己瞎编的逻辑比较乱,通过判断加减号位置判断负数形式——(只有实部,只有虚部,i的时候不输出1.0i,-i输出-i,0输出0和正常的复数)package test;import java.util.regex.Matcher;import java.util.regex.Pattern;public class Complex { public double r...

2019-09-25 14:55:28 1308 1

原创 HTML初级入门(二)

表单相关的元素和属性1.form元素form元素用于生成输入表单,其作用是将其内元素的数据进行提交,除了可以指定核心属性外还具有以下属性。其中有以下两属性为必填属性——<form action="#" method="get">action属性指定当表单内的提交按钮触发后该表单被提交到哪个地址,既可指定绝对地址也可指定相对地址,#指定本页面.method属性指定提...

2019-08-03 02:15:26 227

原创 HTML初级入门

html语言从头都在一种规范性不佳的环境下,即使代码书写不规范也能够达到预期效果。这也就导致了在行业中书写html经常是不规范的,这会带来很多隐患,在协会对规范书写的呼吁过后很多人依旧不以为是导致整体环境规范都很差,由此出现了数代html语言版本或者XHTML等,但这种情况都没有得到很好地改善,直到html5的出现。H5是一种极具包容性html语言,在H5版本中曾经各种语法报错的不规范书写都被视为...

2019-07-31 14:04:52 287

原创 java归并排序

冒泡排序作为最基础的排序方法为人所熟知,其从思路到实现都很简单,与此同时其弊端也非常明显,那就是效率很低,要一轮一轮从头到尾每个都进行比较,在时间耗费上需要的时间复杂度为O(n)级。而下面这种归并排序就要比冒泡排序效率要高出很多了。1.归并排序基本原理归并算法是一种采用分治法思想的一种经典应用场景,其原理是将无序数组先分为最小的子数组(每个中含有两个数字),将所有子数组进行排序,随后使子数组两...

2019-07-22 01:17:53 87

原创 大数值,引用类型的存储,数组及OOP

1.大数值BigInteger类实现了人已经读的整数运算,BigDecimal类实现浮点数运算,当直接采用valueOf赋值时会产生精度的丢失(因为采用valueOf会存储为float或double型导致失去精度,并不是BigDecimal无法表示出精度),当通过new方式进行字符串赋值时可以精确计算不会失去精度。2.引用类型的存储使用时最好将数组控制在500000以下。引用类型的只记住地...

2019-07-19 00:13:06 103

原创 JVM原理,Sting存储原理及杂谈知识

1.JVM内存占用JVM在内存中分为栈(虚拟机栈),堆(JAVA堆),方法区,程序计数器,本地方法区(本地方法栈)字符串位于常量池中,常量池属于堆栈:凡是涉及到指令顺序控制的基本类型(方法里的基本类型而不是类里面的)才会放到栈中【重要】线程栈是私有的,各个线程占一个线程栈,其中的各个类型变量和方法叫栈桢,栈里面只记录地址。new的作用:划分一块新的独有的空间,new的内容放在堆里2.按...

2019-07-18 00:10:06 119

原创 java新手向介绍

1. java的优势特性java具有良好的可移植性,在不同系统中只要安装配置好环境即可运行JAVA语言java具有良好的分布式特性(现今很多语言都具有java所具有的优势特性了,但是在java出现的年代中java的这些优势是独一无二的,后来所出现的语言都对java的优势有所借鉴)2.java的运行编译过程abc.java–>abc.class(JDK操作,编译过程)–>操作系统...

2019-07-16 22:55:31 148

空空如也

空空如也

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

TA关注的人

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