自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 资源 (4)
  • 问答 (1)
  • 收藏
  • 关注

原创 Redis穿透与雪崩的预防与解决方案

文章目录缓存穿透概念解决方案方案一方案二缓存雪崩概念解决方案方案一方案二方案三方案四缓存击穿概念解决方案方案一方案二缓存穿透概念缓存穿透是指查询一个一定不存在的数据,由于缓存不会命中,需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都去数据库查询,造成缓存穿透。解决方案方案一对所有可能查询的参数以hash形式存储,在控制层进行校验,若不符合查询条件则丢弃。或者...

2018-11-29 10:22:18 5187 6

原创 Redis缓存一致性问题

前言从理论上来说,给缓存设置过期时间,是保证最终一致性的解决方案。这种方案下,我们可以对存入缓存的数据设置过期时间,所有的写操作以数据库为准,对缓存操作只是尽最大努力即可。也就是说如果数据库写成功,缓存更新失败,那么只要到达过期时间,则后面的读请求自然会从数据库中读取新值然后更新缓存。因此,接下来讨论的思路不依赖于给缓存设置过期时间这个方案。先更新数据库,再更新缓存一、线程安全问题假设同...

2018-11-28 17:27:27 5126 2

原创 Redis数据淘汰策略

定时删除策略 : 在设置键的过期时间的同时,创建一个定时器,让定时器在键的过期时间来临时,立即执行对键的删除操作。优点 : 对内存友好,保证过期键会尽可能快地被删除,并释放过期键所占用的内存。缺点 : 对CPU时间不友好,占用太多CPU时间,影响服务器的响应时间和吞吐量。惰性删除策略 : 放任过期键不管,每次从键空间读写操作时,都检查键是否过期,如果过期,删除该键,如果没有过期,返...

2018-11-28 13:19:46 3516 1

原创 Redis配置详解

1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程。daemonize no //不以守护进程方式运行daemonize yes //以守护进程方式运行2. 当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定。pidfile /var/run/redis.pid3....

2018-11-28 10:27:08 1163 1

原创 CentOS-7下安装redis-2.8

准备redis安装包wget http://download.redis.io/releases/redis-2.8.3.tar.gz解压并拷贝到/usr/目录tar -zxvf redis-2.8.3.tar.gzcp -r redis-2.8.3 /usr/编译源码cd /usr/redis-2.8.3/make拷贝文件将redis-server、redis-ben...

2018-11-28 09:53:55 1715

原创 Redis入门

简介REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。数据类型redis由C语言编写,它的数据模型为key-value。它支持丰富的数据结构(类型...

2018-11-22 15:09:38 1333 4

原创 MinorGC和FullGC触发条件

MinorGC当Eden区满时,触发Minor GC。FullGC调用System.gc时,系统建议执行Full GC,但是不必然执行老年代空间不足方法区空间不足通过Minor GC后进入老年代的平均大小大于老年代的可用内存...

2018-11-22 14:03:39 1183

原创 JVM调优工具之jps

概述jps 命令类似与 linux 的 ps 命令,但是它只列出系统中所有的 Java 应用程序。通过 jps 命令可以方便地查看 Java 进程的启动类、传入参数和 Java 虚拟机参数等信息。如果在 linux 中想查看 java 的进程,一般我们都需要 ps -ef | grep java 来获取进程 ID。如果只想获取 Java 程序的进程,可以直接使用 jps 命令来直接查看。用法...

2018-11-22 13:23:02 1064

原创 Linux下mysql忘记root密码

杀掉系统的mysql进程killall -TERM mysqld编辑my.cnf文件打开my.cnf配置文件,找到[mysqld]字段并在下边加入skip-grant-tablesvim my.cnf保存退出启动mysql服务service mysqld start修改密码输入 mysql -u root -p 命令,会提示输入密码,直接回车即可。 mysql...

2018-11-22 09:59:06 1000 4

原创 Linux下mysql首次登录修改root密码

输入 mysql -u root -p 命令,会提示输入密码,由于是第一次修改,直接回车即可。mysql -u root -p通过操作mysql.user表修改root密码use mysql;update user set password=password("123456") where user='root';flush privileges; ...

2018-11-22 09:21:59 2074

原创 Mysql警告 : Warning: World-writable config file '/etc/my.cnf' is ignored

linux下登入mysql的时候,突然报出警告Warning: World-writable config file ‘/etc/my.cnf’ is ignored原因/etc/my.cnf配置文件权限为全局可写,mysql担心这个文件会被其他用户恶意修改。解决方案修改my.cnf文件权限chmod 644 /etc/my.cnf重启mysql服务service mysql r...

2018-11-22 09:13:56 1316

原创 CentOS-7下安装mysql-5.6

准备mysql安装包有多种方式可以获取mysql安装包https://link.jianshu.com/?t=https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz从我的个人CSDN下载获取 https://download.csdn.net/download/liuzh...

2018-11-21 17:04:29 1153

原创 联合索引的最左前缀匹配原则

mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配,比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整。=可以乱序,比如a = 1 and b = 2 and c = 3 建立(a,b,...

2018-11-21 13:53:42 1691

原创 SQL优化方案

SELECT尽量不要使用 select * from t ,用具体的字段列表代替 *,不要返回用不到的任何字段。使用select应考虑在 where 及 order by 涉及的列上建立索引。WHERE尽量避免在 where 子句中对字段进行null值判断,否则将导致引擎放弃使用索引而进行全表扫描。尽量避免在 where 子句中使用 != 或 <> 操作符,否则将引擎放...

2018-11-21 13:31:26 1040 4

原创 聚簇索引和非聚簇索引的区别

聚簇索引的索引顺序和表中记录的物理顺序是一致的,而非聚簇索引的索引顺序和记录的物理顺序是不一致的。一个表中只能有一个聚簇索引,通常为设为主键的列,非聚簇索引可以创建多个。...

2018-11-21 13:11:11 1176

原创 Innodb与Myisam区别

区别 Innodb Myisam事物 | 支持 | 不支持行锁 | 支持 | 不支持外键 | 支持 | 不支持FULLTEXT类型的索引 | 不支持 | 支持 是否保存表行数 | 不...

2018-11-20 19:59:37 1068 4

原创 Java线程池参数解析

核心参数corePoolSize核心池的大小,这个参数跟后面讲述的线程池的实现原理有非常大的关系。在创建了线程池后,默认情况下,线程池中并没有任何线程,而是等待有任务到来才创建线程去执行任务,除非调用了prestartAllCoreThreads()或者prestartCoreThread()方法,从这2个方法的名字就可以看出,是预创建线程的意思,即在没有任务到来之前就创建corePoolSi...

2018-11-20 15:36:11 1581

原创 Java中wait()与sleep()的区别

文章目录区别一区别二区别三区别四区别五区别一wait来自于Object类,sleep来自于Thread类区别二wait会释放对象锁,sleep不会释放对象锁区别三wait只能在同步控制方法或者同步控制块里面使用,sleep可以在任何地方使用区别四wait不需要捕获异常,sleep需要捕获异常区别五调用wait后必须要采用notify()或者notifyAll()方法唤醒该线程,...

2018-11-20 15:07:30 1074

原创 CMS垃圾回收器

文章目录简介回收过程一、初始标记二、并发标记三、重新标记四、并发清除缺点简介CMS全称Concurrent Mark Sweep(并发标记清除),是一款以获取最短回收停顿时间为目标的 老年代收集器,适合基于B/S的服务器上,系统停顿时间短,用户体验较好。另外,CMS也是一款真正意义上的并发收集器,能够与用户线程同时进行。虽然,并发回收过程中也有几个阶段需要Stop the world,但是由...

2018-11-20 13:56:29 3400 2

原创 JVM垃圾回收算法

文章目录垃圾回收机制的意义垃圾回收算法一、引用计数法。二、标记清除算法三、标记整理算法四、复制算法五、分代垃圾回收算法垃圾回收机制的意义Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有了垃圾回收机制,Java中的对象不再有“作用域”的概念,只有对象的引用才有“作用域”。垃圾回收可以...

2018-11-20 11:11:54 1073 2

原创 JVM类加载-双亲委派机制

文章目录类加载器种类双亲委派模型过程实现几点思考类加载器种类启动类加载器(Bootstrap):负责将Java_Home/lib下面的类库加载到内存中(比如rt.jar)。由于启动类加载器涉及到虚拟机本地实现细节,开发者无法直接获取到启动类加载器的引用,所以不允许直接通过引用进行操作。扩展类加载器(Extension):它是由Sun的ExtClassLoader(sun.misc.La...

2018-11-20 10:33:58 1041

原创 JVM类加载机制

文章目录前言类加载过程类加载时机加载验证准备解析初始化前言虚拟机把描述类的数据从.class文件加载到内存,并对数据进行校验、解析和初始化,最终形成可以被虚拟机直接使用的Java类型(Class对象),这就是虚拟机类加载机制。在Java语言中,类的加载、链接和初始化过程都是在程序运行期间完成的,这是java作为动态语言的基础。另外值得注意的是上面提到的.class文件,并不一定只能是磁盘上的....

2018-11-19 16:11:33 909

原创 JVM内存分区

图示堆区(Heap)堆区是Java虚拟机所管理的内存中最大的一块内存区域,也是被线程共享的内存区域,该内存区域存放对象以及数组(但不是所有的对象实例都在堆中)等。方法区(Method Area)方法区也称"永久代",它用于存储虚拟机加载的类信息、常量、静态变量,是各个线程共享的内存区域。虚拟机栈(JVM Stack)虚拟机栈描述的是方法执行的内存模型:每个方法被执行的时候都会创建一个...

2018-11-19 15:45:09 959

原创 一张图了解git分区

2018-11-19 15:01:01 1227

原创 常见排序算法

文章目录冒泡排序选择排序插入排序快速排序堆排序冒泡排序public void sort(int[] nums){ int len = nums.length; for(int i=0; i<len; i++){ for(int j=0; j<len-i-1; j++){ if(nums[j] > nums[j+1]){ int temp = nums[j.

2018-11-18 18:43:33 989 1

原创 在Kafka中使用Avro编码消息

文章目录Avro简介Avro使用方法添加依赖Jar包定义模式解析模式并将记录转byte[]Avro简介Avro 是一个数据序列化的系统,它可以将数据结构或对象转化成便于存储或传输的格式。Avro设计之初就用来支持数据密集型应用,适合于远程或本地大规模数据的存储和交换。Avro支持多种语言实现,主要有C, C++, C#, Java, PHP, Python, and Ruby等。Avro使用...

2018-11-18 15:22:08 4057

原创 使用Java调用C/C++

文章目录前言JNI概述例子编写Java代码编译生成的class文件:JNITest.class在命令行下使用javah生成C/C++头文件。在工程的bin目录下输入以下命令:实现C++代码。在VS2008中创建一个Win32 project,类型为DLL。构建C++项目将dll文件复制到Java工程的bin目录下前言我们知道Java是一种平台无关性的语言,平台对于上层的java代码来说是透明的...

2018-11-18 12:34:33 14744 9

原创 代理高匿性判断方法

代理主要包括透明代理,普通匿名代理,欺骗性代理及高匿代理等,本文将阐述如何通过请求头区分这几种代理。

2018-11-15 15:54:05 13341 9

原创 序列化与反序列化技术选型

文章目录一、使用场景二、概念三、参考指标四、序列化与反序列化协议通用组件流程图待序列化类XMLThriftProtobufAvro一、使用场景1、网络传输2、加密、持久化二、概念1、通信协议中的位置七层模型的表示层或者四层模型的应用层2、概念序列化 : 数据结构或者对象 -> 二进制反序列化 : 二进制 -> 数据结构或者对象注:二进制串 存储在内存中的一块数据, ...

2018-11-15 14:53:56 1397 2

原创 ActiveMQ初体验

文章目录一、下载安装ActiveMQ启动ActiveMQ三、ActiveMQ Demo工程创建生产者创建消费者运行ActiveMQDemo项目生产者发消息运行结果消费者收消息运行结果ActiveMQ使用场景一、下载安装ActiveMQActiveMQ官网下载地址:http://activemq.apache.org/download-archives.htmlActiveMQ 提供了Wind...

2018-11-15 14:15:40 1373

原创 线程本地变量ThreadLocal

ThreadLocal的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突,实现线程间的数据隔离。

2018-11-15 10:28:20 1511

原创 Javassist初探

Javassist是一款字节码编辑工具,可以直接编辑和生成Java生成的字节码,以达到对.class文件进行动态修改的效果。

2018-11-09 15:50:49 1321

原创 剑指offer-二进制中1的个数(Java)

文章目录问题描述解析代码问题描述请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如,把9表示成二进制是1001,有2位是1。因此,如果输入9,则该函数输出为2。解析把一个整数减去一,再与原整数做与元算,会把该整数最右边一变为零,则一个二进制中有多少个一就可以进行多少次操作代码public int getNumberOf1Bits(int val){ int count ...

2018-11-07 11:05:53 1522

原创 剑指offer-剪绳子问题(Java)

文章目录问题描述解析代码问题描述给你一根长度为n的绳子,请把绳子剪成m段 (m和n都是整数,n>1并且m>1)每段绳子的长度记为k[0],k[1],…,k[m].请问k[0]k[1]…*k[m]可能的最大乘积是多少解析如果我们按照如下的策略来剪绳子,则得到的各个段绳子的长度的乘积将最大:当n>=5时,我们尽可能多的剪长度为3的绳子;当剩下的绳子长度为4时,把绳子剪成两段长...

2018-11-07 11:00:14 1581

原创 设计模式之适配器模式

适配器模式是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。

2018-11-06 14:51:51 1447

原创 设计模式之装饰器模式

装饰器模式是一种用于代替继承的技术,无需通过继承增加子类就能扩展对象的新功能。使用对象的关联关系代替继承关系,更加灵活,同时避免类型体系的快速膨胀。

2018-11-06 14:14:32 1614

原创 设计模式之策略模式

在策略模式中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。

2018-11-06 10:36:54 2115

原创 设计模式之责任链模式

责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。

2018-11-05 10:37:43 1400

原创 剑指offer-二叉树中的下一个节点(Java)

文章目录问题描述解析代码问题描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针解析要找到中序遍历下的下一个节点。这个节点可以分为两种情况一、该节点有右子树二、该节点没有右子树第一种比较处理起来比较简单,直接将其右节点进行中序遍历即可,并将一个遍历到的最右节点返回。第二种情况又分为两种情况1、该节...

2018-11-05 10:35:45 1604

原创 Java集合---ConcurrentHashMap原理分析

文章目录背景线程不安全的HashMap效率低下的HashTable容器锁分段技术应用场景源码解读不变(Immutable)和易变(Volatile)其它定位操作数据结构删除操作remove(key)get操作put操作size()操作背景线程不安全的HashMap因为多线程环境下,使用Hashmap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMa...

2018-11-05 10:34:55 2466 7

mysql5.6安装包linux版

mysql5.6安装包,linux版,有需要的同学可以下载!

2018-11-21

Jcseg汉语分词工具

Jcseg是一个开源的汉语分词工具,由java语言开发,准确率高达百分之九十八,本程序无需配置,可以直接运行,谢谢!

2015-07-13

BASE64.jar

BASE64是一个java开发的加密工具包,主要对普通字符串加密

2015-07-13

最新新浪微博爬虫程序Java版 2015

该爬虫属于本人2015新作,虽然尚有不足,却具有爬虫的基本雏形,望借鉴

2015-03-27

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

TA关注的人

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