自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 线程8锁问题

1.标准访问,先发送短信还是邮件public class ThreadDemo5 { public static void main(String[] args) { Phone phone = new Phone(); new Thread(()->{ try { phone.sendEmail(); } catch (InterruptedException e) {

2022-03-31 17:34:53 187

原创 八、Redis缓存穿透、缓存击穿、缓存雪崩

缓存穿透(查不到)用户需要查询数据,发现redis内存中没有,也就是缓存中没有命中,于是向持久层数据库查询,发现没有导致查询失败。当用户量很多,都没命中时,请求都访问到了持久层数据库。这给数据库造成很大压力,就会出现缓存穿透现象。布隆过滤器。布隆过滤器是一种数据结构,对所有可能查询的参数以hash形式存储,在控制层先进行校验,从而避免了对底层存储系统的压力;缓存空对象。访问不到的对象设置为空对象缓存击穿(访问量大,缓存过期)缓存击穿指的是一个key非常热点,在被大并发集中访问,当这个key失效

2022-03-02 15:55:49 401

原创 七、Redis的主从复制、哨兵模式

主从复制主机数据更新后根据配置和策略,主少从多,主写从读,主写同步复制到从,实现读写分离。搭建一主二从redis集群:info replication(查看主从信息)默认都是主机,都可以读和写全量复制:一旦主从关系确定,会自动把主库上数据同步复制到从库。增量复制:主库写数据会自动同步到从库主写从读,读写分离:从库不支持写操作,只能读主机宕机,从机原地待命主机恢复,主从不变从机宕机,主机的从机数减少从机恢复, 主从关系需重新设置从机上位:从机断开主从关系–>重新设置主从关系从机

2022-02-23 20:38:14 104

原创 六、Redis的事务

事务:把一组数据库放在一起执行,保证操作的原子性,要么同时成功,要么同时失败。redis的事务:允许把一组redis命令放在一起,进行序列化执行,保证部分原子性。multi:用来标记一个事务的开始。exec:用来执行事务队列中的所有命令。redis事务只能保证部分原子性。若在压入队列过程中发生错误,则本事务所有命令都不执行;若在执行事务时发生错误,不会影响其他命令的执行,不能够保证事务的原子性。discard:清除所有已经压入队列中的命令,并且结束事务。watch:监控某一个键,当事务在执行过

2022-02-23 19:16:44 308

原创 五、Redis持久化

Redis的持久化redis是内存数据库,它把数据存储在内存中,这样在加快读取速度的同时也对数据的安全性产生了问题,即当redis服务器宕机时,redis数据库的所有数据全部丢失。为了解决这个问题,redis提供了持久化机制–RDB和AOF机制。redis在适当的时机采用适当手段把内存中的数据持久化到磁盘中,每次redis服务启动时,都可以把磁盘上的数据再次加载到内存中使用。RDB策略(默认效率高)在指定时间间隔内,redis执行指定次数的写操作,会自动触发一次持久化操作。配置参数在redis.c

2022-02-23 14:45:31 591

原创 四、Redis的配置文件

redis根目录下提供redis.config配置文件redis配置文件中关于网络的配置port:指定端口号,默认6379bind:配置连接redis所能使用的ip地址,默认redis服务主机上任何一个ip若配置了port和bind,启动时必须指定ip和端口:redis-cli -h 192.168.3.250 -p 6380 (shutdown)tcp-keepalive:TCP连接保活策略,通过命令配置,单位为秒。假如设置为60s,则server端会每60s向闲置客户端发送一次ack请求,以

2022-02-23 11:42:09 822

原创 三、Redis五种类型的操作命令

String类型数据的操作插入:set 键 值查询:get 键追加:append 键 值(返回追加后字符串长度)获取字符串长度:strlen 键字符串数值加1运算:incr 键字符串数值减1运算:decr 键字符串数值加n运算:incrby 键 n字符串数值减n运算:decrby 键 n截取字符串:getrange 键 startIndex endIndex(闭区间截取,0开始,自左至右。负数表示自右至左,-1开始)替换字符串:setrange 键 startIndex value(替

2022-02-22 20:41:59 97

原创 二、Redis中key的操作命令

Redis中有关key的操作命令a.查看数据库中的key:keys pattern(通配符)规则通配符示例解释匹配0个或多个字符*keys *所有key匹配0个或多个字符*keys k*以k开头的key匹配1个字符?keys h?llo以 h 开头 llo 结尾,中间只有1个字符匹配[ ]里面的1个字符[ ]keys h[abc]llo以 h 开头 llo 结尾,并且中间字符是abc中的1个的keyb.判断是否存在某key

2022-02-21 20:17:03 269

原创 一、Redis基本知识

Redis基本知识启动redis服务关闭redis服务Redis的数据库实例Redis的五种数据结构StringListSetHashZset启动redis服务前台启动:任何目录下执行 redis-server后台启动:任何目录下执行 redis-server &指定配置文件启动:redis-server redis.conf关闭redis服务通过kill命令:ps -ef|grep redis查看pidkill -9 pid通过redis-cli命令关闭redis-cli

2022-02-21 16:58:20 272

原创 JAVA中int,string,char之间的互相转换

(1) 字符串string转int:int i=Integer.parseInt(str);//使用Integer.parseInt(String str)函数,返回str所代表的int值;(2) 如何将字串 String 转换成Integer Integer integer=Integer.valueOf(str);//string转Integer对象(3) 将整数 int 转换...

2018-03-12 20:44:13 947

原创 maven依赖jar包时版本冲突的解决

共有四种解决方式: 1、第一声明优先原则: 在pom.xml配置文件中,如果有两个名称相同版本不同的依赖声明,那么先写的会生效。 所以,先声明自己要用的版本的jar包即可。 2、路径近者优先: 直接依赖优先于传递依赖,如果传递依赖的jar包版本冲突了,那么可以自己声明一个指定版本的依赖jar,即可解决冲突。 3、排出原则: 传递依赖冲突时,可以在不需要的jar的传递依赖...

2018-03-11 22:40:26 11010

原创 Java中统计字符串中每个字符出现的次数

方法一: 采用HashMappublic static void count(String str){ //将字符串转化为字符数组 char[] chars = str.toCharArray(); //创建一个HashMap名为hm HashMap<Character,Integer> hm = new Ha...

2018-03-11 18:15:01 3271

原创 Java中如何处理空指针异常

在Java语言在,null被分配给一个对象的引用以表示对象指向未知数据块。当应用程序使用或访问一个指向null的引用,会被抛出。 下列情况会抛出NullPointerException 。调用null对象的方法。访问或修改null对象的域。如果null是一个数组,并获取null的长度。如果null对象是一个对象数组,并访问会修改null对象的子元素。如果对象是一个 Throwab...

2018-03-05 12:04:25 4524

原创 【TreeSet】自然排序与比较器排序

1.自然排序对象类:public class Examinee implements Comparable{//实现接口 private int scorce; //构造方法与get、set方法略 @Override public String toString() { return this.getScorce(...

2018-03-04 11:15:36 439

原创 HashCode的作用原理和实例解析

HashCode定义(1)HashCode的存在主要是用于查找的快捷性,如Hashtable,HashMap等,HashCode是用来在散列存储结构中确定对象的存储地址的;(2)如果两个对象相同,equals方法一定返回true,并且这两个对象的HashCode一定相同;(3)如果对象的equals方法被重写,那么对象的HashCode也尽量重写,并且产生HashCode使用的对象,一...

2018-03-03 17:15:19 220

原创 sql语句中where 1=1和1=0的作用

where 1=1和 0=1 的作用  where 1=1; 这个条件始终为True,在不定数量查询条件情况下,1=1可以很方便的规范语句。 一、不用where 1=1 在多条件查询中的困扰   举个例子,如果您做查询页面,并且,可查询的选项有多个,同时,还让用户自行选择并输入查询关键词,那么,按平时的查询语句的动态构造,代码大体如下: string MySqlStr=”s...

2018-02-28 13:59:38 889

原创 final关键字

final关键字的基本用法  在java中,final关键字可以用来修饰类、方法、变量(包括成员变量和局部变量)。下面我们从这三个方面了解一下final的用法1、修饰类  final修饰一个类时,表示该类不能继承。final类中的成员变量可以根据需要设为final,但是final类中的所有成员方法都会被隐式地指定为final方法。   注意:在使用final修饰类的时候,一定要谨慎选择,除非这个

2018-02-24 20:39:10 253

原创 设计模式之单例模式

什么是单例模式  单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。即一个类只有一个对象实例饿汉式——当类被加载的时候便进行初始化单例对象//直接在加载后初始化public class SingleDemo{ private static SingleDemo demo = new Sin...

2018-02-24 18:51:03 205

原创 static关键字

1、static修饰变量  按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量;另一种是没有被static修饰的变量,叫实例变量。两者的区别是:  对于静态变量在内存中只有一个拷贝(节省内存),JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配,可用类名直接访问(方便),当然也可以通过对象来访问(但是这是不推荐的)。随着类的加...

2018-02-24 10:16:28 240

原创 Dos中查看mysql数据时 中文乱码

上网查了一下原因:之所以会显示乱码,就是因为MySQL客户端输出窗口显示中文时使用的字符编码不对造成的,可以使用如下的命令查看输出窗口使用的字符编码show variables like ‘char%’; 可以看到,现在是使用utf8字符编码来显示中文数据的,但是因为操作系统是中文操作系统,默认使用的字符集是GB2312,所以需要把输出窗口使用的字符编码改成gb2312才能够正常显示中文。使用如下

2018-01-28 22:47:58 1095 1

原创 设计模式---代理模式

代理模式在代理模式Proxy Pattern中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。意图:为其他对象提供一种代理,以控制对这个对象的访问。主要解决:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者

2018-01-27 23:42:16 229

原创 equals和==的区别详解

1.”==”① 若==两边的是对象,则比较的是变量(存储于栈)存放的对象(存储于堆)的内存地址,判断两个引用是否指向堆中的同一块内存,是真正意义上的指针操作② 如果是具体的阿拉伯数字的比较,值相等则为true,如:int a=10 与 long b=10L 与 double c=10.0都是相同的(为true),因为他们都指向地址为10的堆。int a = 10; long b...

2018-01-21 00:03:11 505

原创 "=="和"equals()"区别?

1. “==”基本数据类型,根据基本数据类型的值判断是否相等,相等返回true,反之返回false引用数据类型,比较的是引用类型的地址值//基本数据类型 //两端数据类型可以不同,在不同情况下也可以返回true int a = 23; int b = 24; char c = 23; float d

2018-01-20 23:10:51 243

原创 this,super关键字(一)

this关键字1.可以理解为修饰属性、方法、构造器 2.this理解为当前对象或当前正在创建的对象 3.可以在构造器中通过”this(形参)”的方式显示的调用本类中其他重载的指定的构造器 要求:1>在构造器内部必须声明在首行 2>若一个类中有n个构造器,那么最多有n-1个构造器使用了this(形参)应用场景:当形参与成员变量重名时,如果在方法内部需要使用成员变量,必须

2018-01-20 20:38:55 305

原创 this,super关键字(二)

super关键字1.super可用于访问父类中定义的属性 2.super可用于调用父类中定义的成员方法 3.super可用于在子类构造中调用父类的构造器 注意:当子类与父类中有同名的属性时,可以通过”super.属性”显式的调用弗雷中声明的属性当子类中重写父类的方法以后,在子类中若想再显式的调用父类的被重写的方法,就需要使用”super.方法”super修饰构造器,通过在子类中

2018-01-20 20:33:51 253

原创 this,super关键字区别

属性的区别:this访问本类中的属性,如果本类没有此属性则从父类中继续查找。super访问父类中的属性。方法的区别:this访问本类中的方法,如果本类没有此方法则从父类中继续查找。super访问父类中的方法。构造的区别:this调用本类构造,必须放在构造方法的首行。super调用父类构造,必须放在子类构造方法首行。其他区别:this表示当前对象。super

2018-01-20 20:10:40 337

原创 方法重载与方法重写

1.方法重载(overload)重载规则:同一个类中;方法名必须相同;方法参数列表不同(参数个数,参数类型);补充:方法的重载与与返回值类型无关 public class OverloadDemo { void test(){ //test()方法第一次重载,没有参数

2018-01-18 23:17:34 363

原创 权限修饰符

1. 访问权限修饰符作用: 用于控制被修饰变量、方法、类的可见范围. public 的访问级别是最高的,其次是 protected、默认和 private.成员变量和成员方法可以处于4个访问级别中的一个:公开、受保护、默认或私有.存在继承关系时,父类不可以是 private,因为子类无法继承顶层类可以处于公开或默认级别,顶层类不能被 protected 和 private 修饰.局部变量不

2018-01-18 19:13:03 385

空空如也

空空如也

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

TA关注的人

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