自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MySQL优化

MySQL介绍MySQL是由MySQLAB公司(目前已经被SUN公司收归麾下)自主研发的,目前IT行业最流行的开放源代码的数据库管理系统之一,它同时也是一个支持多线程高并发多用户的关系型数据库管理系统。MySQL数据库以其简单高效可靠的特点,在最近短短几年的时间就从一个名不见经传的数据库系统,变成一个在IT行业几乎是无人不知的开源数据库管理系统。...

2019-11-12 16:56:00 677

原创 Redis AOF和RDB

Redis AOF和RDBRedis是内存型数据库,为了保证数据在断电后不会丢失,需要将内存中的数据持久化到硬盘上。RDB持久化 将某个时间点的所有数据都存放到硬盘上可以将快照复制到其他服务器从而创建具有相同数据的服务器副本如果系统发生故障,将会丢失最后一次创建快照之后的数据如果数据量很大,保存快照的时间会很长AOF持久化 将写命令添加到AOF文件(Append ...

2019-11-04 23:37:00 440

原创 KD树

KD树1. 概述KD树是一种查询索引结构,广泛应用于数据库索引中。从概念的角度讲,它是一种高纬数据的快速查询结构,本文首先介绍1维数据的索引查询,然后介绍2维KD树的创建和查询2. 1维数据的查询假设在数据库的表格T中存储了学生的语文成绩chinese、数学成绩math、英语成绩english,如果要查询语文成绩介于30~93分的学生,如何处理?假设学生数量为N,如果顺序...

2019-11-04 22:37:00 933

原创 关系型和非关系型数据库

关系型和非关系型数据库非关系型数据库分类由于非关系型数据库本身天然的多样性,以及出现的时间较短,因此,不想关系型数据库,有几种数据库能够一统江山,非关系型数据库非常多,并且大部分都是开源的。 这些数据库中,其实实现大部分都比较简单,除了一些共性外,很大一部分都是针对某些特定的应用需求出现的,因此,对于该类应用,具有极高的性能。依据结构化方法以及应用场合的不同,主要分为以...

2019-10-29 21:54:00 1671

原创 数据库实现分布式锁

数据库实现分布式锁基于数据库实现分布式锁上面已经分析了基于数据库实现分布式锁的基本原理:通过唯一索引保持排他性,加锁时插入一条记录,解锁是删除这条记录。下面我们就简要实现一下基于数据库的分布式锁。表设计CREATE TABLE `distributed_lock` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `uniq...

2019-10-29 20:51:00 292

原创 单点登录

单点登录1、基于Cookie的单点登录的回顾 基于Cookie的单点登录核心原理:将用户名密码加密之后存于Cookie中,之后访问网站时在过滤器(filter)中校验用户权限,如果没有权限则从Cookie中取出用户名密码进行登录,让用户从某种意义上觉得只登录了一次。该方式缺点就是多次传送用户名密码,增加被盗风险,以及不能跨域。同时www....

2019-10-29 00:28:00 498

原创 数据库树形结构查询

数据库树形结构查询Oracle实现方式数据库树形结构,正反遍历--从Root往树末梢递归select level ,identity,pid from table_namestart with identity=475connect by prior identity = pid--从末梢往树ROOT递归select level ,identi...

2019-10-27 23:16:00 2629

原创 层次遍历递归和非递归方法

层次遍历递归和非递归方法如何遍历一棵树有两种通用的遍历树的策略:深度优先搜索(DFS) 在这个策略中,我们采用深度作为优先级,以便从跟开始一直到达某个确定的叶子,然后再返回根到达另一个分支。深度优先搜索策略又可以根据根节点、左孩子和右孩子的相对顺序被细分为先序遍历,中序遍历和后序遍历。宽度优先搜索(BFS) 我们按照高度顺序一层...

2019-10-26 21:53:00 1775

原创 Redis和数据库的缓存一致性问题

redis和数据库的缓存一致性问题缓存的读取流程缓存更新策略按照数据库和缓存的更新顺序有两种更新策略:(1)先更新数据库,再更新缓存;(2)先删除缓存,再更新数据库。(3)先更新数据库,再删缓存先更新数据库,再更新缓存这套方案,大家是普遍反对的。为什么呢?有如下两点原因。原因一(线程安全角度)同时有请求A和请求B进行更新操作,那么会出现(1)线...

2019-10-26 21:29:00 483

原创 redis分布式锁

redis分布式锁单机版本为什么要使用锁? 第一个是正确性,这个众人皆知。就像Java里的synchronize,就是用来保证多线程并发场景下,程序的正确性。JVM里需要保证并发访问的正确性,在分布式系统里面,也同样需要,只不过并发访问的单位,不再是线程,而是进程。举个例子,一个文件系统,为了提高性能,部署了三台文件服务器。当服务器A在修改文件A的时候,其他服务器...

2019-10-26 15:51:00 165

原创 Spring Bean的生命周期

Spring Bean的生命周期Spring Bean的生命周期可以简述为以下九步 实例化bean对象(通过构造方法或者工厂方法) 设置对象属性(setter等)(依赖注入) 如果Bean实现了BeanNameAware接口,工厂调用Bean的setBeanName()方法传递Bean的ID。(和下面的一条均属于检查Aware接口) ...

2019-10-25 16:49:00 211

原创 Android应用程序保活

Android应用程序保活Android进程Android在内存较低的情况下,会关闭一些优先级较低的进程以增大内存运行更重要的进程,而在这个进程中的所有线程,也会被同时销毁。 Android中,进程的生命周期都是由系统控制的。即使用户在界面上关掉一个应用,切换到了别的应用,那个应用的进程依然是存在于内存之中的。这样设计的目的是为了下次启动应用能更加快速。当然,随着系统运行时间...

2019-10-22 23:36:00 689

原创 Android加载图片内存溢出的解决方法

Android加载图片内存溢出的解决办法改变图片大小尺寸bitmap 设置图片尺寸,避免 内存溢出 OutOfMemoryError的优化方法android 中用bitmap 时很容易内存溢出,报如下错误:Java.lang.OutOfMemoryError : bitmap size exceeds VM budgetInputStream is = this.g...

2019-10-22 22:01:00 159

原创 Android音频压缩方法

Android音频压缩的方法音频基础知识采样和采样频率: 一秒钟内采样的次数称为采样频率。采样频率越高,越接近原始信号,但是也加大了运算处理的复杂度。根据Nyquist采样定理,要想重建原始信号,采样频率必须大于信号中最高频率的两倍。人能感受到的频率范围为20HZ--20kHZ, 一般音乐的采样频率为44.1kHZ, 更高的可以是48kHZ和96kHZ,不过一般人用耳听感觉不...

2019-10-22 20:33:00 3714

原创 nginx

nginxNginx简介nginx概述 Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。nginx作为web服务器 Nginx可以作为静态页面的web服务器,同时还支持...

2019-10-22 17:28:00 129

原创 java各个版本新特新

java各个版本新特性JDK 81:接口的默认方法 Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法,示例如下: 上面接口在拥有calculate方法之外同时还定义了sqrt方法,实现了Formula接口的子类只需要实现一个calculate方法,默认方法sqrt将在子类上可以直接使用。文中的接口...

2019-10-22 10:43:00 275

原创 Spring事务

Spring事务什么是事务Transaction 也就是所谓的事务了,通俗理解就是一件事情。从小,父母就教育我们,做事情要有始有终,不能半途而废。事务也是这样,不能做一半就不做了,要么做完,要么就不做。也就是说,事务必须是一个不可分割的整体,就像我们在化学课里学到的原子,原子是构成物质的最小单位。于是,人们就归纳出事务的第一个特性:原子性(Atomicity)。特...

2019-10-21 22:18:00 112

原创 zookeeper

zookeeperzookeeperzookeeper概述 Zookeeper是一个分布式协调服务的开源框架。ZooKeeper本质上是一个分布式的小文件存储系统。提供基于类似于文件系统的目录树方式的数据存储,并且可以对树中的节点进行有效管理。从而用来维护和监控你存储的数据的状态变化。通过监控这些数据状态的变化,从而可以达到基于数据的集群管理。诸如:统一命名服务、分布式配置管...

2019-10-21 11:23:00 251

原创 网络爬虫

网络爬虫通用爬虫技术框架爬虫系统首先从互联网页面中精心选择一部分网页,以这些网页的链接地址作为种子URL,将这些种子放入待爬取URL队列中,爬虫从待爬取URL队列依次读取,并将URL通过DNS解析,把链接地址转换为网站服务器对应的IP地址。然后将其和网页相对路径名交给网页下载器,网页下载器负责页面的下载。对于下载到本地的页面,一方面将其存储到页面库中,等待建立索引等后续处...

2019-10-18 23:40:00 803

原创 跳跃表

跳跃表跳跃表的引入无论是数组还是链表在插入新数据的时候,都会存在性能问题。排好序的数据,如果使用数组,插入新数据的方式如下:如果要插入数据3,首先要知道这个数据应该插入的位置。使用二分查找可以最快定位,这一步时间复杂度是O(logN)。插入过程中,原数组中所有大于3的商品都要右移,这一步时间复杂度是O(N)。所以总体时间复杂度是O(N)。如果使用链表,...

2019-10-18 16:50:00 270

原创 java内存泄露与内存溢出

java内存泄露与内存溢出基本概念内存泄露:指程序中动态分配内存给一些临时对象,但是对象不会被GC所回收,它始终占用内存。即被分配的对象可达但已无用。内存溢出:指程序运行过程中无法申请到足够的内存而导致的一种错误。内存溢出通常发生于OLD段或Perm段垃圾回收后,仍然无内存空间容纳新的Java对象的情况。从定义上看,内存泄露是内存溢出的一种诱因,不是唯一因素。JAVA...

2019-10-18 10:18:00 485

原创 权限管理及shiro框架

权限管理及shiro框架权限管理简介做系统时肯定遇到最常见的就是不同的用户需求是不一样的,就拿登陆来说,一个办公管理系统,不同部门的人肯定要求的功能和权限是不一样的,那你不可能对每一个部门都写一个登陆页面,给不同的url吧!亦或者在下边选择你是什么部门的人?那每个部门还有等级。再继续选,然后个每个人写一个界面?那明显是不可能的,那我们到底要怎么实现?最常用的方...

2019-10-17 20:03:00 514

原创 异构信息网络

异构信息网络异构信息网络信息网络是知识表示的结构化文本方式,网络中包含一系列节点以及节点和节点之间的边。信息网络的经典例子如文献信息网络,其结构反映了储存在节点里的信息的结构,所以称为信息网络。另一个经典的例子就是万维网,对于这些网络的研究往往是将其视为同构信息网络来分析。随着信息网络研究的进一步加深以及近年来各种流行信息网络的涌现,例如社会媒体网络,维基百科里的知识网络等等,仅...

2019-10-17 15:40:00 1728

原创 基于遗传算法的试题组卷

基于遗传算法的试题组卷IT企业每年都会在春季和秋季举行校园招聘,对于个性化定制的试卷需求量很大,如何组出又好又快的定制化试题对于IT企业非常重要。组卷技术主要针对知识点覆盖率,题型,难度系数,试题数量等一些试题的属性进行多条件约束优化组卷。为了方便考官出题考试,系统中引入了试题组卷技术。如何又快又好地生成符合考官口味的试卷变得非常关键。下面将对一些常用的组卷算法进行介绍。目前...

2019-10-17 10:34:00 4447 1

原创 Java JNI机制

java JNI机制JNI概述及简单例子介绍系统环境代指本地操作系统环境,它有自己的本地库和CPU指令集。本地程序(Native Applications)使用C/C++这样的本地语言来编写,被编译成只能在本地系统环境下运行的二进制代码,并和本地库链接在一起。本地程序和本地库一般地会依赖于一个特定的本地系统环境。比如,一个系统下编译出来的C程序不能在另一个系统中运行。...

2019-10-17 00:42:00 483

原创 Lucene及全文搜索实现原理

Lucene及全文搜索实现原理全文搜索全文搜索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。这个过程类似于通过字典中的检索字表查字的过程。全文搜索搜索引擎数据库中的数据。 全文搜索的过程主要分为两个部分,索引的建立以及索引的搜...

2019-10-16 19:05:00 466

原创 java中的wait、notify、notifyAll、join、sleep

java中的wait、notify、notifyAll、joinJava虚拟机上运行的每个对象来说都有一个内置的监视器(Monitor),Monitor里面又有一个内置对象和两个池,锁(monitor)池和等待(wait)池(等待队列),而这两个池又与Object基类的wait、notify、notifyAll三个方法和同步代码块相关。锁池的本质 就是假设线程 A 已经拥有了...

2019-10-15 21:34:00 254

原创 coutdownlatch

countdownlatchAQS在介绍countdownlatch时首先需要简单介绍一下AQS(AbstractQueuedSychronizer)队列。AQS队列的实现依赖内部的同步队列(FIFO双向队列),如果当前线程获取同步状态失败,AQS会将线程及其等待状态等信息构造成一个Node,将其加入同步队列的尾部,同时阻塞当前线程,当同步状态释放时,唤醒队列的头节点。AQS...

2019-10-15 17:24:00 135

原创 java集合的关系

2019-10-14 11:32:00 77

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

Redis的缓存穿透、缓存雪崩、缓存击穿缓存处理流程 缓存穿透 一般的缓存系统,都是按照key去缓存查询,如果不存在对应的value,就应该去后端系统查找(比如DB)。一些恶意的请求会故意查询不存在的key,请求量很大,就会对后端系统造成很大的压力。这就叫做缓存穿透。如何避免?对查询结果为空的情况也进行缓存,缓存时间设置短一些,或者该key对应的数据...

2019-10-14 10:23:00 58

原创 一个URL之旅

一个URL之旅在整个过程中,大致可以分为以下几个过程DNS域名解析 TCP连接 HTTP请求 处理请求返回HTTP响应 页面渲染 关闭连接 DNS域名解析在浏览器输入网址后,首先要经过域名解析,因为浏览器并不能直接通过域名找到对应的服务器,而是要通过 IP 地址。大家这里或许会有个疑问-...

2019-10-11 23:50:00 98

原创 SQL语句

SQL语句SQL SELECT 语句SQL SELECT SELECT column_name,column_name FROM table_name与SELECT * FROM table_nameSQL SELECT DISTINCT 在表中,一个列可能会包含多个重复值,有时希望仅仅列出不同(distinct)的值DISTINCT关键词用于返回唯...

2019-10-04 16:36:00 735

原创 数据库中的锁

数据库中的锁锁分类按锁的粒度划分:表级锁、行级锁、页级锁按锁级别划分:共享锁、排它锁、意向锁按加锁方式划分:自动锁、显示锁按使用方式划分:乐观锁、悲观锁MySQL中的行级锁、表级锁和页级锁行级锁:行级锁分为共享锁和排他锁。行级锁是MySQL中锁定粒度最细的锁。InnoDB引擎支持行级锁和表级锁,只有在通过索引条件检索数据的时候,才使用行级锁,否就使用表级锁。行...

2019-10-03 18:32:00 145

原创 Java中的锁

java中的锁Java锁的类别java中的锁按照不同的类别可以有如下的分类:乐观锁/悲观锁 独享锁/共享锁 互斥锁/读写锁 可重入锁 公平锁/非公平锁 分段锁 偏向锁/轻量级锁/重量级锁 自旋锁 这些分类并不是全是指锁的状态,有的指锁的特性,有的指锁的设计乐观锁/悲观锁...

2019-10-02 22:17:00 81

原创 红黑树与AVL树

红黑树与AVLAVL树二叉搜索树只有保持平衡时其查找效率才会高。 要保持二叉搜索树的平衡不是一件易事。不过还是有一些非常经典的办法可以做到,其中最好的方法就是将二叉搜索树实现为AVL树。 AVL树得名于它的发明者 G.M. Adelson-Velsky 和 E.M. Landis,他们在 1962 年的论文 "An algorithm for the organizati...

2019-10-02 20:08:00 103

原创 死锁银行家算法

死锁银行家算法死锁死锁的定义如果一个线程集合中的每个线程都在等待这个集合中另一个线程的执行结果才能继续执行下去,若无其他外力,它们都无法推进,这就形成了死锁。死锁的4个必要条件1、互斥条件:一个资源在某时刻内只能允许一个线程进行访问; 2、占有且等待:一个线程A占有一部分资源,此时去申请另外的资源,但申请的资源被线程B占有,此时线程A的请求阻塞,但是也不对自己本来...

2019-10-02 17:08:00 338

原创 java优先队列

java优先队列我们知道队列是遵循先进先出(First-In-First-Out)模式的,但有些时候需要在队列中基于优先级处理对象。举个例子,比方说我们有一个每日交易时段生成股票报告的应用程序,需要处理大量数据并且花费很多处理时间。客户向这个应用程序发送请求时,实际上就进入了队列。我们需要首先处理优先客户再处理普通用户。在这种情况下,Java的PriorityQueue(优先队列)会...

2019-10-02 15:35:00 153

原创 网络IO

网络IOLinux 的内核将所有外部设备都看做一个文件来操作(一切皆文件),对一个文件的读写操作会调用内核提供的系统命令,返回一个file descriptor(fd,文件描述符)。而对一个socket的读写也会有响应的描述符,称为socket fd(socket文件描述符),描述符就是一个数字,指向内核中的一个结构体(文件路径,数据区等一些属性)。 I/O模型根据UNIX网...

2019-10-02 15:08:00 101

原创 java的引用类型

java的引用类型引用类型无论是通过引用计数算法判断对象的引用数量,还是通过可达性分析算法判断对象是否可达,判断对象是否可被回收都与引用有关。Java提供了四种强度不同的引用类型。强引用 被强引用关联的对象不会被回收。使用new一个新对象的方式来创建强引用。软引用 被软引用关联的对象只有在内存不够的情况下才会被回收。使用SoftReference类...

2019-09-30 17:11:00 65

原创 Hash冲突

Hash冲突对象Hash的前提是实现equals()和hashCode()两个方法,那么HashCode()的作用就是保证对象返回唯一hash值,但当两个对象计算值一样时,这就发生了碰撞冲突。开放地址法开放地执法有一个公式:Hi=(H(key)+di) MOD m i=1,2,…,k(k<=m-1)其中,m为哈希表的表长。di 是产生冲突的时候的增量序列。如果di值可能...

2019-09-30 16:55:00 80

masm5 32位

可以编译,链接自己在记事本上写的汇编代码。适合初学者学习汇编语言。适合32位的机子

2014-10-10

空空如也

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

TA关注的人

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