自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java延迟任务

我们把需要延迟执行的任务叫做延迟任务,比如业务中用户发送审配,过期后需要执行一些操作,网上订单未支付,红包过期取消等等。

2024-07-31 21:22:22 1443

原创 Elasticsearch详解

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

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

原创 责任链模式

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

2023-12-23 11:13:58 708

原创 docker知识总结

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

2022-05-08 16:20:26 716

原创 分布式session详解

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

2021-10-29 20:37:27 533

原创 Spring的加载过程

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

2021-08-14 12:58:14 1671

原创 消息中间件详解

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

2021-08-02 00:03:11 445

原创 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 587 1

原创 微服务简介

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

2021-07-17 22:20:00 457

原创 springboot知识点整合

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

2021-07-11 00:07:58 133

原创 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 186

原创 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 793 2

原创 nginx详解

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

2021-05-04 17:34:39 755

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

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

2021-05-04 17:13:24 823

原创 lucene学习

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

2020-07-26 16:46:56 198

原创 Java中的AQS

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

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

原创 Java中的CAS

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

2019-10-02 23:16:51 1168

原创 Java中各种锁的介绍

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

2019-09-30 19:45:45 443

原创 synchronized深入探究

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

2019-09-17 22:27:52 153

原创 mysql索引介绍

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

2019-03-31 09:29:06 634

原创 Java事务总结

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

2019-03-05 22:11:28 579

原创 JVM性能调优

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

2019-03-05 22:10:32 166

原创 jvm垃圾回收知识总结

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

2019-03-05 22:05:49 221

原创 redis知识总结

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

2018-03-23 23:19:18 276

原创 一些java笔试面试题

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

2017-04-09 18:02:31 490

原创 Lock与synchronized 的比较学习

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

2017-02-08 14:23:55 450

原创 Java线程池ThreadPoolExecutor

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

2016-08-19 10:00:14 521

原创 JAVA7特性学习

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

2016-08-06 20:32:13 1149

原创 Java线程间数据传递

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

2016-08-03 21:56:22 6293

原创 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 533

原创 阻塞队列之ArrayBlockingQueue

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

2016-07-24 23:26:39 4457

原创 ArrayDeque源码解析

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

2016-07-02 21:39:55 546

原创 ThreadLocal源码解析

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

2016-06-30 21:35:37 385

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

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

2016-06-25 19:20:49 2571

原创 Java注解学习

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

2016-06-22 11:12:47 661

原创 解析Java的四种引用

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

2016-06-20 13:27:40 438 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 5998 1

原创 Spring源码解析之DefaultListableBeanFactory

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

2016-06-06 23:30:00 2787 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 1757

原创 Java运行时数据区讲解

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

2016-05-28 23:06:51 384

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关注的人

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