- 博客(60)
- 收藏
- 关注
原创 HTTPS详解
HTTPS协议概念 HTTP 协议(HyperText Transfer Protocol,超文本传输协议)是客户端浏览器或其他程序与Web服务器之间的 应用层 通信协议 HTTPS 协议(HyperText Transfer Protocol over Secure Socket Layer),可以理解为 HTTP + SSL/TLS, 即在 HTTP 层的基础上加入 SSL 层,从而来实现身份验证、信息加密、完整性校验等安全性。HTTPS 不同于 HTTP 的默认端口(443端口)及一个加
2021-10-31 15:38:05 312
原创 volatile关键字详解
volatile关键字简介 volatile 关键字可以说是 Java 虚拟机提供的最轻量级的同步机制了 volatile 通过实现 内存可见性 和 禁止重排序 来解决并发问题,但是volatile关键字**不保证并发原子性**内存可见性可见性是指:当一个线程修改了共享变量的值,其它线程能立即感知到这种变化JMM 规定:volatile 变量的每次修改都必须立即回写到主内存中写一个 volatile 属性会立即刷入到主内存在对 volatile 修饰的变量进行写操作
2021-05-04 00:33:10 870
原创 WeakHashMap
1.概述 WeakHashMap 是一种弱引用 Map,内部的 key 会存储为弱引用,当 JVM gc 的时候,如果这些 key 没有强引用存在的话,会被gc回收掉,下一次当我们操作 Map (增删改)的时候会把对应的 Entry 整个删除掉,基于这种特性,WeakHashMap 特别适用于缓存处理2.存储结构 WeakHashMap 因为gc的时候会把没有强引用的key回收掉,所以注定了它里面的元素不会太多,因此也就不需要像HashMap那样元素多的时候转化为红黑树来处理了。因此,WeakHa
2021-04-15 00:12:49 330
转载 Unsafe 类详解
文章转摘自:作者: throwable出处:https://www.cnblogs.com/throwable/p/9139947.html
2020-08-29 10:27:17 1187
原创 JDK基础故障处理工具
基础故障处理工具Jps:显示指定系统内所有虚拟机进程jstat:用于收集虚拟机各方面的运行数据jinfo:显示虚拟机配置信息jmap:生成虚拟机内存转储存快照jhat:用于分析heapdump文件jstack:显示虚拟机的线程快照1.JPS(运行的进程状态信息) 类似 ps 命令;列出正在运行的虚拟机进程,并显示虚拟机的执行主类(main函数)的名称以及这些进程的本地虚拟机唯一ID(就是PID)这个命令非常常用,其他 JDK 工具需要依赖 jps 命令来确定要监控的虚拟机进程的
2020-08-16 13:43:15 27552
原创 SpringCloud版本选择
SpringCloud版本选择springcloud官方网站:SpringCloud官网更精确的版本选择需要查看 SpringCloud的文档更准确的版本选择可以通过 Spring 官方提供的接口获取:https://start.spring.io/actuator/infoMaven配置dependencyManagement:锁定版本,且子模块继承之后不需要再写 groupId 和 版本号dependencyManagement 和 dependencies 的区别:depend
2020-07-26 10:18:20 719
原创 6.Nginx-server虚拟主机模块
server虚拟主机模块server 模块需要配置在 http 模块中http { server { #监听端口 80 listen 80; #监听域名dh.com; server_name dh.com www.dh.com; access_log logs/sever.log comb...
2020-03-07 11:06:15 320
原创 5.Nginx-upstream负载均衡
upstream负载均衡语法规则upstream *name* { … }Default:——Context:http定义一组服务器。服务器可以侦听不同的端口(可以混合侦听TCP和UNIX域套接字的服务器)http{ # backend是虚拟服务的名字,可自行定义 upstream backend { server backend1.example....
2020-03-04 21:49:03 279
原创 4.Nginx-代理配置
代理配置常用的配置proxy_pass URL;Default:——Context:location, if in location, limit_except 设置代理服务器的协议和地址以及应映射位置的可选URI。作为协议,可以指定“ http”或“ https”。地址可以指定为域名或IP地址,以及可选端口如:proxy_pass http://localhost:800...
2020-03-04 21:47:04 295
原创 3.Nginx-location配置
location配置语法规则location [=|~|~*|^~] /uri/ {… } 在一个server中location配置段可存在多个,用于实现从uri到文件系统的路径映射;nginx会根据用户请求的URI来检查定义的所有location,并找出一个最佳匹配=表示精确匹配~表示对URI做区分字符大小写的正则匹配~*表示对URI做不区分字符大小写...
2020-03-04 21:46:06 199
原创 2.Nginx-events事件驱动模块
events事件驱动模块常用配置详解events{ use epoll; worker_connections 65535;}worker_connections [number]每个worker进程所能够打开的最大并发连接数的数量总最大并发数:work_processes * worker_connectionsaccept_mutex [on|off...
2020-03-01 23:12:24 358
原创 Nginx简介
Nginx简述Nginx是一个开源且高性能的Web 服务器,同时是一个高效的反向代理服务器,它还是一个IMAP/POP3/SMTP代理服务器优点高并发响应性能非常好,官方Nginx处理静态文件并发 5W/s反向代理性能非常强(可用于负载均衡)内存和cpu占用率低(为Apache的1/5-1/10)对后端服务有健康检查功能配置代码简洁且容易上手作用静态的web资源服务器(h...
2020-03-01 23:07:30 216
原创 线程状态
线程的6种状态初始(NEW):新创建了一个线程对象,但还没有调用 start()方法运行(RUNNABLE):Java 线程中将就绪(ready)和运行中(running)两种状态笼统的称为“运行”线程对象创建后,其他线程(比如main线程)调用了该对象的 start() 方法该状态的线程位于可运行线程池中,等待被线程调度选中,获取CPU的使用权,此时处于就绪状态(ready)就...
2019-10-13 09:51:25 143
原创 Thread.join()详解
Thread.join()详解public final synchronized void join(long millis) throws InterruptedException { long base = System.currentTimeMillis(); long now = 0; if (millis < 0) { ...
2019-10-03 16:40:27 2607
原创 负载均衡简介
负载均衡 集群中的应用服务器(节点)通常被设计成无状态,用户可以请求任何一个节点。 负载均衡器会根据集群中每个节点的负载情况,将用户请求转发到合适的节点上。负载均衡器可以用来实现高可用以及伸缩性:高可用:当某个节点故障时,负载均衡器会将用户请求转发到另外的节点上,从而保证所有服务持续可用;伸缩性:根据系统整体负载情况,可以很容易地添加或移除节点。负载均衡器运行过程包含两个部...
2019-08-25 14:17:00 741
原创 List 解析总结
ArrayList小结ArrayList允许元素为null值增加和删除的操作效率低,因为有扩容和数组复制的开销存在(如果是根据下标去删除元素的会比较快)查询和修改的效率较高,可以直接通过下标去访问元素,时间复杂度为O(1)多线程操作同一个ArrayList是不安全的PS:如果事先知道要存储的元素个数,那么最好使用带int参数的构造函数,因为这样能够减少数组扩容的开销大致结构...
2019-06-17 15:36:34 1198
原创 跨域请求
跨域请求 跨域请求就是指:当前发起请求的域与该请求指向的资源所在的域不一样。这里的域指的是这样的一个概念:我们认为如果协议 + 域名 + 端口号均相同,那么就是同域,否则则是跨域的 跨域请求是由于浏览器的同源策略导致的,浏览器的同源策略是不能没有的(同源策略是浏览器最核心最基础的安全策略)同源策略禁止 Ajax 直接发起跨域HTTP请求(其实可以发送请求,结果被浏览器拦截,不展示),同...
2019-05-21 21:59:32 1663
原创 分布式锁及其实现
分布式锁及其实现为什么需要分布式锁 在单机部署的项目中,多线程间的并发控制可以由Java相关的并发处理API来控制线程间的通信和互斥。但是在分布式集群的系统中,单机部署情况下的并发控制策略就会失效了,单纯的Java API是不具备分布式环境下的并发控制能力的;所以这就需要一种跨JVM的互斥机制来控制对共享资源的访问,这就是分布式锁要解决的问题了 在分布式场景下,CAP理论已经证明了任何一...
2019-05-21 21:57:18 411
原创 CAP理论
CAP理论什么是CAP理论 CAP理论指的是在一个分布式系统中,不能同时满足一致性,可用性和分区容错性C(Consistency):一致性在分布式系统中的所有数据备份,在同一时刻是否是同样的值A(Availabe):可用性 可用性指在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求 可用性是指系统提供的服务必须一直处于可用的状态,对于用户的每一个操作...
2019-05-21 21:52:16 268
原创 正向代理和反向代理
正向代理和反向代理正向代理 正向代理是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。 正向代理,其实是"代理服务器"代理了"客户端",去和"目标服务器"进行交互;客户端必须要进行一些特别的设置才能使用正向代理 举个栗子:一个国内用...
2019-05-06 12:15:27 303
原创 JVM内存模型
线程共享内存区域Java堆 此内存区域在虚拟机启动的时候创建,几乎所有对象的实例和数组都在堆中分配内存空间。 Java堆是垃圾回收主要的管理区域,而且现在的垃圾收集器基本都采用分代收集算法(这是针对不同分代的特点采用适当的收集算法,提高垃圾收集的效率),所以一般为了在内存方面出发,堆可以分为老年代和新生代。新生代中,也可以细分为Eden空间,To Survivor空间和From Su...
2019-02-23 19:30:29 167
原创 SpringMVC自定义验证
最近项目上线了,就闲着在看博客了。然后看到一篇写了关于SpringMVC自定义验证的文章,写得挺好,然后发现自己把注解的一些知识点忘记了,既然学习回来了,那就写一个博客分享一下自己复(chao)习(xi)回来的知识吧。 这边也分享一下看到的写sprinmvc自定义验证的文章:https://www.baeldung.com/spring-mvc-custom-va...
2018-10-23 14:24:47 1639
原创 XSS攻击的分析
最近的工作着实有点忙,然后最近一次是处理XSS的BUG问题,这个还是第一次来接触。然后秉着解决问题的想法就查询了很多相关内容的博客。并且顺利解决了这个BUG,想了想还是来写个文章记录一下这个知识点吧。XSS指的是跨站脚本,主要是在前端页面加载(页面渲染的阶段)的时候会执行注入的那段JS脚本。例如:攻击者在请求时带上参数localhost/test/submit.do?te...
2018-09-29 15:22:38 724
原创 快速排序(Java实现)
package com.dai.sort;/** * Created by dh on 2018/9/11. * <p> * 快速排序: * <p> * 选取基准值(一般左边第一个值), * 然后先从右边(先从右边,先从右边,先从右边)开始找到小于基准值的值,记录位置j * 再然后从左边开始找到大于基准值的值,记录位置为i。然后交换两值的位置(i,j指向...
2018-09-11 12:24:46 1202
转载 MongoDB、Hbase、Redis等NoSQL优劣势、应用场景
NoSQL的四大种类NoSQL数据库在整个数据库领域的江湖地位已经不言而喻。在大数据时代,虽然RDBMS很优秀,但是面对快速增长的数据规模和日渐复杂的数据模型,RDBMS渐渐力不从心,无法应对很多数据库处理任务,这时NoSQL凭借易扩展、大数据量和高性能以及灵活的数据模型成功的在数据库领域站稳了脚跟。目前大家基本认同将NoSQL数据库分为四大类:键值存储数据库,文档型数据库,列存储数据库和...
2018-08-30 11:36:14 406
原创 JDK7的ConcurrentHashMap分析
JDK7下的ConcurrentHashMapcapacity:当前数组容量,始终保持 2^n。如果当前的 size 已经达到了阈值,并且要插入的数组位置上已经有元素,那么就会触发扩容,扩容后数组大小为当前的 2 倍。 由于是双倍扩容,迁移过程中,会将原来 table[i] 中的链表的所有节点,分拆到新的数组的 newTable[i] 和 newTable[i + oldLength...
2018-08-05 12:22:37 1307
转载 MySQL InnoDB引擎锁的总结
锁的种类我们日常开发中用到最多的存储引擎是Innodb 与 MyISAM两种,而 Innodb 现在更多是首选,因此主要是对 Innodb 的说明,MyISAM 跟多是作为一个对比的角色。MySQL的锁可以按照多种方式进行划分,这里使用最常用的两种方式进行划分:粒度与使用方式。需要特别说明的是:乐观锁与悲观锁并不是数据库中实现的锁机制,是需要我们自己去实现的。它是一种思想,我们不仅...
2018-08-02 15:03:09 251
原创 static关键字的四种用法
修饰成员变量。此时的成员变量在类加载的过程中(初始化的时候,准备阶段是final修饰的才正确赋值,static修饰的普通成员变量只是赋默认值)就已经存在方法区(元空间)中。 修饰成员方法。 修饰静态代码块(只会在初始化这个类时执行一次,下次初始化不会再执行) 静态导包:在不与当前类的方法名冲突的情况下,无需使用“类名.方法名”的方法去调用类方法了,直接可以采用"方法名"去调用类方...
2018-07-31 10:11:43 318
转载 Java 设计模式
Java 设计模式(转载自:https://javadoop.com/post/design-pattern)目录创建型模式 简单工厂模式 工厂模式 抽象工厂模式 单例模式 建造者模式 原型模式 创建型模式总结 结构型模式 代理模式 适配器模式 默认适配器模式 对象适配器模式 类适配器模式 适配器模式总结 桥梁模式 ...
2018-07-30 14:56:18 3754 1
转载 HotSpot JVM 内存管理
垃圾收集概念GC 需要做 3 件事情:分配内存,为每个新建的对象分配空间确保还在使用的对象的内存一直还在,不能把有用的空间当垃圾回收了释放不再使用的对象所占用的空间我们把还被 GC Roots 引用的对象称为活的,把不再被引用的对象认为是死的,也就是我们说的垃圾,GC 的工作就是找到死的对象,回收它们占用的空间。在这里,我们总结一下 GC Roots 有哪些:当前各线程执行方法中的局部变量(包括形...
2018-07-09 16:16:37 1445
原创 SpringBoot整合RabbitMQ(二):定制MessageConverter
上一篇文章里面,我们已经可以发送简单的text数据到消息队列里面了。但是在我们平常的需求里面,发送简单的文本数据是不多见的,更多的是需要JSON类型的数据,所以简单的数据发送已经不满足我们的需求了,那让我们来尝试一下发送和接收JSON数据吧!我们先看一下RabbitMQ默认是哪个消息转换器吧可以在RabbitTemplate的构造器打上断点查看SpringBoot默认注入的messageConve...
2018-06-19 15:11:10 8886
原创 SpringBoot整合RabbitMQ(一):简单使用
我所用的Springboot 的版本是1.5.13先来看pom文件:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLo...
2018-06-19 10:11:34 1044
原创 Docker安装RabbitMQ,RabbitMQ Management使用
上一篇文章介绍了RabbitMQ的一些基本概念,如果没看过没了解,推荐先去了解一下:下面我们一起来安装一下RabbitMQ并且访问一下它的Management吧。我这边是使用了Docker容器来安装和启动RabbitMQ的,如果没有安装Docker容器的小伙伴可以在虚拟机上 yum install docker 来下载docker容器,不过要注意一下自己虚拟机的内核版本。来看一下我本机的docke...
2018-06-14 20:34:54 21217 2
原创 RabbitMQ简介
1.什么是MQ?来让我copy一段百度百科的:MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。2.RabbitMQ简介大多数应用中,都会通过消息服...
2018-06-14 20:31:30 473
原创 JMS和AMQP的比较
RabbitMQ是AMQP的实现相信大家就算没学过也听过Apache ActiveMQ吧。ActiveMQ是JMS的实现下面来谈一下JMS和AMQP的概述和比较吧!JMS(Java Message Service)JAVA消息服务 JMS是基于JVM消息代理的规范,ActiveMQ、HornetMQ是JMS实现。AMQP(Advanced Message Queuing Protocol) ...
2018-06-13 12:17:30 501
转载 Tomcat调优参数配置
1.Tomcat启动行参数的优化Tomcat 的启动参数位于tomcat的安装目录\bin目录下,如果你是Linux操作系统就是catalina.sh文件,如果你是Windows操作系统那么你需要改动的就是catalina.bat文件。打开该文件,一般该文件头部是一堆的由##包裹着的注释文字,找到注释文字的最后一段如:# $Id: catalina.sh 522797 2007-03-27 07:...
2018-06-01 15:18:18 11443
原创 WebJars介绍
参考文章:WebJars——web端静态资源的jar包1、WebJars介绍Web前端使用了越来越多的JS或CSS,如jQuery,Backbone.js和Bootstrap。一般情况下,我们是将这些Web资源拷贝到Java Web项目的webapp相应目录下进行管理。这种通过人工方式管理可能会产生版本误差,拷贝版本错误,漏拷等现象,导致前端页面无法正确展示,版本不一致,文件混乱等,导致出现一些莫...
2018-05-30 10:08:18 6887
原创 Spring注解开发之Spring常用注解
主要的注解使用:本文用的Spring源码是4.3.16@Configuration此注解的作用是告诉Spring,添加该注解的类是配置类。@ComponentScan相信大家看到这个组合单词就知道是有什么作用了,扫描用的。直接看看源码吧@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)@Documented@Repeata...
2018-05-12 15:57:07 935
原创 强引用,软引用,弱引用,虚引用
参考周志明老师的《深入理解Java虚拟机:JVM高级特性与最佳实践》按照标题:4种引用的强度依次减弱强引用强引用类似:Object obj = new Object();只要强引用在,垃圾回收器就不会回收该对象。软引用软引用描述的是一些还有用但并不是必需的对象。在系统将要发生内存溢出的异常时,会将这些对象列进回收的范围进行第二次的回收。就是说当内存空间还足够的时候,会将这些对象保留在内存中。Jav...
2018-05-09 17:21:57 203
原创 SpringMVC 实现支付宝支付功能(沙箱环境)
springMVC实现的沙箱环境下的支付宝支付的功能,是沙箱环境下的,这里只演示电脑上的扫码支付。没事就玩玩嘛本文参考了支付宝官方文档:https://docs.open.alipay.com/catalog首先先进入支付宝的开放平台,点击“开放平台-开发者中心-沙箱环境”。进入沙箱环境页面。第一次使用需要先进行申请,然后获取到APPID,有这个才能调用支付宝开放产品的接口。申请的话。我这里就不说...
2018-05-03 16:53:00 4986 6
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人