自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Elasticsearch详解

当主分片不可用时,会在备份的分片中选举出一个作为主分片,所以备份不仅可以提升系统的高可用性能,还可以提升搜索时的并发性能。**Shards:**分片,当索引上的数据量太大的时候,我们通常会将一个索引上的数据进行水平拆分,拆分出来的每个数据库叫作一个分片。这时虽然集群的查询操作还可以进行,但是也只能返回部分数据(其他正常分片的数据可以返回),而分配到这个分片上的写入请求将会报错,最终会导致数据的丢失。**Node:**节点,组成 Elasticsearch 集群的服务单元,同一个集群内节点的名字不能重复。

2024-02-28 20:27:16 1272 1

原创 责任链模式

顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。

2023-12-23 11:13:58 658

原创 docker知识总结

docker是什么Docker 是一个开源的应用容器引擎,是一种资源虚拟化技术,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上。docker的简单原理是什么基于Linux内核的Cgroup,Namespace,以及UnionFS等技术,对进程进行封装隔离,属 于操作系统层面的虚拟化技术,由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其 为容器。容器技术的优势隔离性 每个用户实例之间相互隔离,互不影响**可配额 **cgroups

2022-05-08 16:20:26 666

原创 分布式session详解

Session的作用?Session 是客户端与服务器通讯会话跟踪技术,服务器与客户端保持整个通讯的会话基本信息。客户端在第一次访问服务端的时候,服务端会响应一个sessionId并且将它存入到本地cookie中,在之后的访问会将cookie中的sessionId放入到请求头中去访问服务器,如果通过这个sessionid没有找到对应的数据那么服务器会创建一个新的sessionid并且响应给客户端。为什么需要共享Session在集群或分布式环境下,有多个服务端,所以需要解决共享Session的问题如

2021-10-29 20:37:27 478

原创 Spring的加载过程

Spring简单介绍如果你是使用java作为主要编程语言,那么Spring是一定要了解的,Spring是一个提供ioc(控制反转)的开源框架,他将对象的创建和使用解耦,开发人员无须手动设置对象的依赖关系,把这一工作交给了 Spring 容器去处理和管理,提升了开发体验。Spring IoC说到了 IoC (控制反转),一般来说和 IoC 一同出现的有 DI(Dependency Injection)也就是依赖注入,这两个概念之间有什么关系呢?在 2004 年 Martin Fowler 在探索 IO

2021-08-14 12:58:14 1630

原创 消息中间件详解

消息中间件的主要作用异步 将消息写入消息队列,非必要的业务逻辑以异步的方式运行,加快响应速度。解耦 生产者系统将消息写入消息队列,消费系统自己从消息队列中获取消息,使得2个系统不再耦合。削峰 有时一个系统的某个接口会有很大的流量,这种会给系统造成很大压力,服务器利用率则会偏高,而利用消息中间件,可以把高峰时的流量冲击放进消息队列中,消费者再慢慢消费。消息队列的缺点系统可用性降低 我们需要维护MQ,MQ也可能挂掉,系统的可用性是不是就降低了系统的复杂度提高 加入一个MQ之后,需要考虑消息重复消

2021-08-02 00:03:11 392

原创 Spring Cloud Eureka详解

Spring Cloud Eureka是什么spring cloud中的服务注册中心eureka。Eureka包含两个组件:Eureka Server和Eureka Client。Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。Eureka Client用于简化与Eureka Server的交互,在应用启动后,将会向Eureka Se

2021-07-25 10:44:29 538 1

原创 微服务简介

什么是微服务1)一组小的服务(大小没有特别的标准,只要同一团队的工程师理解服务的标识一致即可)2)独立的进程(java的tomcat,nodejs等)3)轻量级的通信(不是soap,一般http或者rpc)4)基于业务能力(类似用户服务,商品服务等等)5)独立部署(迭代速度快)6)无集中式管理(无须统一技术栈,可以根据不同的服务或者团队进行灵活选择)微服务的利与弊优点:开发简单技术栈灵活服务独立无依赖独立按需扩展可用性高缺点(挑战):多服务运维难度系统部署依赖服务间通

2021-07-17 22:20:00 405

原创 springboot知识点整合

springboot是什么Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。在我看来springboot最大好处就是简化配置,以前一个SpringMvc项目需要在xml配置各种东西,现在简化了很多配置,提高了开发效率springboot是如何自动配置的一般我的启动类会有**@SpringBootApplication**注解,这是一个组合注解@Tar

2021-07-11 00:07:58 102

原创 mybatis源码学习

什么是mybatisMyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。mybatis的初始化String resource = "mybatis-config.xml"; InputStream inp

2021-07-04 13:59:35 143

原创 cpu100%定位方法

我们服务器上的的服务和项目大部分都是java的,现在来讲讲,这种服务器cpu100%如何定位。先使用top命令找到cpu最高的进程。比如找到cpu最高的进程id,简称top_pid。使用top -Hp top_pid找到cpu最多的线程,这里记住最高的几个线程id,thread_id。现在我们将这些线程id转化成16进制,因为java堆栈里的线程id都是16进制的,转化后方便我们定位printf “%x\n” thread_idjstack top_pid,打印出堆栈,然后用3步骤里

2021-06-06 22:51:28 716 2

原创 nginx详解

什么是nginxnginx是一款免费的、自由的、开源的、高性能HTTP服务器和反向代理服务器,nginx 专为性能优化而开发,性能是其最重要的要求,十分注重效率,能支持高达 50000 个并发连接数。nginx有哪些功能正向代理用户需要手动配置代理服务器,可以配置一个代理服务器反向代理反向代理,“它代理的是服务端”,主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息。负载均衡一个请求过来,nginx可以动态的把这个请求分配给不同的服务器。这种就是负载均衡,避免一个服

2021-05-04 17:34:39 709

原创 缓存常见问题以及解决方法

缓存雪崩如果缓存集中在一段时间内失效,发生大量的缓存穿透,所有的查询都落在数据库上,就造成了缓存雪崩。如何解决缓存雪崩如果缓存经常在一个时间消失,就要考虑key的过期时间是不是一样的,可以随机一下过期时间,避免缓存过期时间一起失效。取缓存的时候加锁,这样可以保证不会大部分数据请求到缓存,但是限制的并发。我们还是要保证缓存系统没有崩溃,比如你用redis,可以使它高可用,可以使用 主从+哨兵 ,Redis Cluster 来避免 Redis 全盘崩溃的情况。如果你的系统第一次就可能会有很大的流量

2021-05-04 17:13:24 755

原创 lucene学习

什么是luceneLucene的目的是为软件开发人员提供一个简单易用的工具包,以方便在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎为什么我们要用Lucene?对比数据库1.lucene可以对文件进行检索,这是数据库所不能的2.对文本检索,lucene可以使用索引,检索效率高3.lucene消耗内存少4.lucene可以对搜索结果进行排名,进行高亮显示等。lucene的流程全文检索的流程分为两大部分:索引流程、搜索流程。索引流程:采集数据—>构建文档对象—&g

2020-07-26 16:46:56 159

原创 Java中的AQS

什么是AQSAQS即AbstractQueuedSynchronizer(抽象队列同步器),一个并发包的基础组件,用来实现各种锁,各种同步组件的。它包含了state变量、加锁线程、等待队列等并发中的核心组件。我们常用的比如ReentrantLock,CountDownLatch等等基础类库都是基于AQS实现的。AQS的原理和结构AQS核心思想是,如果被请求的共享资源空闲,那么就将当前请求资源的线程设置为有效的工作线程,将共享资源设置为锁定状态;如果共享资源被占用,就通过一个基于一个双向链..

2020-06-27 19:59:47 3000 1

原创 Java中的CAS

​ Java中的CASCAS全称 Compare And Swap(比较与交换),是一种无锁算法。在不使用锁(没有线程被阻塞)的情况下实现多线程之间的变量同步,java.util.concurrent包中的原子类就是通过CAS来实现了乐观锁。基本介绍CAS 操作包含三个操作数 —— 内存位置(V)、预期原值(A)和新值(...

2019-10-02 23:16:51 1124

原创 Java中各种锁的介绍

​ Java中各种锁的介绍前言Java提供了各种各样的锁,每种锁都有适合的使用的场景,我们了解了各种锁的特点后,就能在平时的开发中灵活运用。1.乐观锁和悲观锁悲观锁总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。Java中synchronized和Reentr...

2019-09-30 19:45:45 401

原创 synchronized深入探究

前言synchronized是Java中解决并发问题的一种常用方法,它主要的作用如下 确保线程互斥的访问代码 保证变量的可见性 解决重排序 基本使用synchronized可以修饰方法、代码块,下面看一个简单的例子public class SynTest {public void lockTest() {...

2019-09-17 22:27:52 122

原创 mysql索引介绍

mysql索引介绍为什么要用索引索引类似大学图书馆建书目索引,可以提高数据检索的效率,降低数据库的IO成本。索引为什么是(B+/B-)树 查询不仅仅是只查一条,有很多需求会返回多个: 分组:group by 排序:order by 比较:<、> 满足局部性原理: 局部性原理的逻辑是这样的:(1)内存读写块,磁盘读...

2019-03-31 09:29:06 595

原创 Java事务总结

Java事务总结事务的特性事务拥有以下四个特性,习惯上被称为ACID特性: 原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。 一致性(Consistency):事务应确保数据库的状态从一个一致状态转变为另一个一致状态。一致状态是指数据库中的数据应满足完整性约束。除此之外,一致性还有另外一层语义,就是事务的中...

2019-03-05 22:11:28 549

原创 JVM性能调优

JVM性能调优 合理的分配新老代的空间 由于fullGC(老年代)的成本远比minorGC(新生代和老年代)的成本大,所以给应用分配一个合理的新生代空间,尽量将对象分配到新生代减小fullGC的频率。 将大对象直接分配到老年代,保持新生代对象的结构的完整性,以提高GC效率, 以通过-XX:PretenureSizeThreshold设置进入老年代的阀值。 采用合适的垃圾收集...

2019-03-05 22:10:32 144

原创 jvm垃圾回收知识总结

jvm垃圾回收知识总结1.垃圾对象是如何确定的主要是通过可达性算法分析,即通过一系列的称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chain),当一个对象到GC Roots没有任何引用链相连(用图论的话来说,就是从GC Roots到这个对象不可达)时,则证明此对象是不可用的,可作为GC Roots的对象包括下面几种:虚...

2019-03-05 22:05:49 190

原创 redis知识总结

redis总结Redis 是一个基于内存的高性能key-value数据库。一、redis的数据结构字符串哈希,相当于java中的map列表list集合有序的集合二、redis的持久化快照(某一时刻所有数据写到硬盘上)aof(记录每条操作的命令)三、redis和memcache的比较redis是单核而memcache是多核,当数据量比较大的时候memcache的性能会比redis高memcache只...

2018-03-23 23:19:18 248

原创 一些java笔试面试题

前段时间找工作在笔试和面试中总结了一些题目分享给大家。基础篇String、StringBuilder、StringBuffer的区别当一个线程启动后,再次启动会发生什么ArrayList是怎么扩容的单例有什么缺点数据库乐观锁的实现ajax的get和post的区别框架篇SpringMVC的执行流程Spring有哪几种注入方式Spring的AOP有哪些使用场景Hibernatre

2017-04-09 18:02:31 472

原创 Lock与synchronized 的比较学习

一些比较Lock是一个接口,而synchronized是Java中的关键字,synchronized是内置的语言实现;synchronized在发生异常时,会自动释放线程占有的锁,因此不会导致死锁现象发生;而Lock在发生异常时,如果没有主动通过unLock()去释放锁,则很可能造成死锁现象,因此使用Lock时需要在finally块中释放锁;Lock可以让等待锁的线程响应中断,而synchro

2017-02-08 14:23:55 418

原创 Java线程池ThreadPoolExecutor

为什么使用线程池如果每次使用线程都创建,每次创建和销毁的开销会很大,线程池主要用来解决线程生命周期开销问题和资源不足问题,也消除了线程创建所带来的延迟。线程池分析先看下构造函数,其他构造函数都是调用此构造函数public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize,

2016-08-19 10:00:14 478

原创 JAVA7特性学习

泛型实例创建的类型推断//后面的括号内可以不用加上具体泛型List<String> list = new ArrayList<>();同时捕获多个异常try { createException();} catch (ClassNotFoundException | IOException e) { // TODO: handle exception}使用下划线对数字进行分隔表达

2016-08-06 20:32:13 1120

原创 Java线程间数据传递

线程共享数据Java中共享数据,可以使用一个共享对象,或者使用一个阻塞队列。接下来看一个日志的例子。其中主线程可以记录日志,而另外开启了一个线程进行日志的输出public class LogService { private final BlockingQueue<String> queue; private final LoggerThread logger; //关闭标记

2016-08-03 21:56:22 6263

原创 Java归并排序

归并排序就是将2个有序的序列合并起来,其时间复杂度为O(nlgn),而且它是一种稳定的排序,它的缺点是需要额外n的空间来辅助排序。接下来看其Java实现public class MergeSort { public static void main(String[] args) { Integer[] arr = {1, 6, 9, 3, 2, 11, 15, 4};

2016-07-31 10:32:52 506

原创 阻塞队列之ArrayBlockingQueue

阻塞队列 当使用阻塞队列的时候,它可能会对当前线程产生阻塞,,比如一个线程从一个空的阻塞队列中取元素,此时线程会被阻塞直到阻塞队列中有了元素。当队列中有元素后,被阻塞的线程会自动被唤醒。部分实现ArrayBlockingQueue是使用数组作为底层存储的。 /** 数组存储 */ private final E[] items; /** 队尾下标 */ pr

2016-07-24 23:26:39 4433

原创 ArrayDeque源码解析

ArrayDeque是一个双端队列,它是线程不安全的,不能插入null元素,当使用栈时比Stack要快,当使用队列时比LinkedList要快。先初始化一个一定大小的数组,大小是2的n次方,接下来看下添加的源码。public void addFirst(E e) { if (e == null) throw new NullPointerException(

2016-07-02 21:39:55 520

原创 ThreadLocal源码解析

这个类提供了线程变量,这不同于其他的变量,它能在多线程环境下访问(通过get或set方法访问)时能保证各个线程里的变量相对独立于其他线程内的变量。ThreadLocal实例通常来说都是private static类型的。使用示例:public static void main(String[] args) { ThreadLocal<String> str = new Thread

2016-06-30 21:35:37 362

原创 使用Spring AOP和Cookie做网站免登陆

在我们平时浏览网站的时候,会发现很多网站,在你登陆一次后,下次登陆就不需要重新登陆了。其原理就是登陆的时候将,用户名和密码用Cookie存储起来,每次访问的时候先从Cookie中取出并登陆。function SetCookie(name, value) { var today = new Date(); var expires = new Date();

2016-06-25 19:20:49 2536

原创 Java注解学习

元注解首先Java提供了4个元注解来定义其他注解@Target用来定义注解将应用于什么地方(如一个方法或者一个域)@Retention用来定义注解在哪一个级别可用,在源代码中(source),类文件中(class)或者运行时(runtime)@Documented用于描述其它类型的annotation应该被作为被标注的程序成员的公共API,因此可以被例如javadoc此类的工具文档化。@Inheri

2016-06-22 11:12:47 638

原创 解析Java的四种引用

强引用强引用就是类似Object obj = new Object();之类的,只要有强引用存在,垃圾收集器就不会回收引用对象。软引用被软引用引用的对象,当系统将要内存不足时,被软引用引用的对象就将被回收,JDK提供了SoftReference类来实现软引用。软引用对象最常用于实现内存敏感的缓存。 一个代码例子:import java.lang.ref.SoftReference;public

2016-06-20 13:27:40 421 1

原创 Spring Boot入门例子

首先使用Maven导入必要的jar<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org

2016-06-10 00:36:28 5971 1

原创 Spring源码解析之DefaultListableBeanFactory

DefaultListableBeanFactory是bean加载的核心部分,是Spring注册及加载的默认实现。它的层次关系如下图 BeanFactory它是Spring中Bean容器的顶级接口。里面有获取bean,判断是否包含bean,是否单例,获取别名等基本方法ListableBeanFactory根据条件获取Bean的配置清单。 如String[] getBeanDefinitionNa

2016-06-06 23:30:00 2755 1

原创 uploadify在ie和火狐报406错误

在使用uploadify上传时,用chrome是正常的,使用ie和火狐就报406错误。项目使用springmvc,上传返回使用@ResponseBody将@ResponseBody注解去掉。使用response返回,解决问题response.setContentType("application/json; charset=UTF-8");response.getWri

2016-06-06 20:09:58 1738

原创 Java运行时数据区讲解

组成部分程序计数器因为Java虚拟机的多线程是通过线程轮流切换并分配处理器时间来执行的,所以每条线程都需要一个程序计数器,来知道一个线程执行到了什么地方。本地方法栈这是为JVM运行Native方法准备的空间。Java栈每个方法在执行的同时都会创建一个栈帧,用户存储局部变量表,操作数栈,动态链接,方法出口等,局部变量存储了8种基本类型,和对象的引用。Java栈是线程私有的,我们不用关心它的数据一致性问

2016-05-28 23:06:51 366

原创 js闭包学习

概念 闭包是代码块和创建该代码块的上下文中数据的结合简单的例子一个函数就可以看出一个简单的闭包,函数里的变量只有函数内部能够访问到。function() { var i = 0;}一个复杂的例子 function createFuntion() { var result = new Array(); for (var i = 0; i < 10;

2016-05-21 21:34:03 317

AirServer7.1.2

AirServer7.1.2,可以用于苹果手机投影到mac电脑,解压后直接使用就行

2018-08-19

redis安装包

redis安装包,以及其他可能需要的安装包,并且有word安装文档。具体有些步骤可以省略。

2016-08-09

eclipse的svn插件site-1.10.13-1.8.x

eclipse的svn插件,将插件解压到eclipse的dropins目录即可

2016-05-07

CryptoJS文件-提供各种加密解密算

CryptoJS提供各种加密解密算法, 并且里面有个aes的简单实现,希望可以帮助大家

2016-03-31

poi相关架包

包括使用poi所需的架包和依赖的架包 3个poi的架包,xmlbeans,commons-io,log4j,

2016-03-15

oc疯狂讲义

oc疯狂讲义,分上下2本,pdf格式,学习oc语言的不错资料。

2015-11-17

eclipse的freemarker插件

eclipse的freemarker插件,安装此插件后,可以在eclipse中高亮显示,freemarker文件

2015-07-18

android-20源码

Android-20源码,可以和eclipse关联起来,查看源码了。

2015-05-24

jquery.path.js

可以使用此js做一些网页运动,如转圈等。。

2015-03-22

spring api文档

spring的chm的api文档,学习spring必备之物 带检索功能十分放把您

2014-12-28

android 18 源代码

此源代码,可以关联eclipse,只要解压缩,添加文件夹就行了 学习android需要的东西

2014-12-20

mysql下载及安装图解

mysql安装文件,以及图解教程!。。 可以直接安装,

2014-10-16

java反编译工具

java反编译工具,不需要安装,直接运行找到class文件就能打开

2014-10-06

jquery中文日期控件

jquery中文日期控件,有js,css以及实例,界面美观,功能强大

2014-10-04

jstl.jar和standard.jar

学习jstl和el表达式需要的架包 学习jsp javaweb必备

2014-09-29

XPath Tutorial

学习XPath必备,chm文档,可以中文也可以选择英文

2014-09-27

jquery autocomplete官方版(源代码+示例)

jquery autocomplete官方版(源代码+示例) 自动补充功能非常实用

2014-09-23

java核心技术第九版 高清完整PDF+源代码

java核心技术第九版 书+源代码 英文版

2014-09-23

apache-tomcat-6.0.41-src.zip下载

此包用来看一些源代码,也可导入eclipse中看

2014-09-07

commons-beanutils-1.9.2下载

使用beanutils,可以更好的操作数据,对于做框架和理解框架都有很大的作用

2014-08-31

jQuery学习手册api

想学jQuery的可以看看,里面内容丰富

2014-08-23

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

TA关注的人

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