自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(140)
  • 收藏
  • 关注

原创 ‘javac‘ 不是内部或外部命令,也不是可运行的程序 win10配置环境变量

今天突然对 jdk 配置环境变量有点疑问,特想搞明白其运行原理,配置完成 jdk 后,检查是否配置正确。java 命令正常,javac 就不行了,报错如下:仔细检查了一遍配置,还是不解,上度娘,最终解决。略微思考一下,其实他们都说的没有错,只不过有一些知识点忽略了,导致别人跟着操作时,问题还得不到解决。第一点:系统变量 Path 配置jdk/jre必须是绝对路径,并且是分开...

2018-10-11 12:02:49 36108 14

转载 mysql innodb引擎什么时候表锁什么时候行锁?

mysql innodb引擎什么时候表锁什么时候行锁?InnoDB基于索引的行锁InnoDB行锁是通过索引上的索引项来实现的,这一点MySQL与Oracle不同,后者是通过在数据中对相应数据行加锁来实现的。InnoDB这种行锁实现特点意味者:只有通过索引条件检索数据,InnoDB才会使用行级锁,否则,InnoDB将使用表锁 在MySQL中,行级锁并不是直接锁记录,而是锁索引。索引分为主键索引和非主键索引两种,如果一条sql语句操作了主键索引,MySQL就会锁定这条主键索引;如果一条语句操作了非主键

2020-12-20 21:04:20 2143

转载 实战Springboot内置Tomcat配置调优

我们在使用springboot(版本:2.0.3.RELEASE)开发web项目时,大多数时候采用的是内置的Tomcat(当然也可以配置支持内置的jetty),内置Tomcat有什么好处呢?1、方便微服务部署,减少繁杂的配置2、方便项目启动,不需要单独下载web容器,如Tomcat,jetty等。#云服务器配置12核心,24G内存,java启动jar命令:nohup $JAVA_HOME/bin/java -server -Xms10240m -Xmx14336m -Xmn9216m -X

2020-12-20 18:17:54 982

转载 服务器OOM如何排查和解决

参考文章:https://www.cnblogs.com/c-xiaohai/p/12489336.htmltop命令显示的结果列表中,会看到%MEM这一列,这里可以看到你的进程可能对内存的使用率特别高。以查看正在运行的进程和系统负载信息,包括cpu负载、内存使用、各个进程所占系统资源使用jstat命令: jstat -gcutil 20886 1000 10 每隔一段时间显示一下,包括新生代的两个S0、s1区、Eden区,以及老年代的内存使用率,还有young gc以及full ...

2020-12-15 18:08:42 1223

原创 多线程环境下,如何提高程序运行效率

目录1、应用CAS2、方法、对象加synchronized3、对象加Lock()1、应用CAS避免了并发冲突,无锁,不会阻塞其他线程。在计数方面,应用较为典型:public class Counter { private int count; public Counter(){} public synchronized int getCount(){ return count; } public synchronized.

2020-12-13 22:27:30 436

转载 JVM实战-07·JVM调优

目录JVM调优工具如何调优线程监控内存泄漏检查常见异常调优原文地址:https://www.iteye.com/blog/pengjiaheng-552456JVM调优工具Jconsole,jProfile,VisualVMJconsole :jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用。对垃圾回收算法有很详细的跟踪。详细说明参考这里JProfiler:商业软件,需要付费。功能强大。详细说明参考这里VisualVM:JDK自带,功能强大,与JPro.

2020-12-13 18:21:17 151

转载 Redis: 缓存过期、缓存雪崩、缓存穿透、缓存击穿(热点)、缓存并发(热点)、多级缓存、布隆过滤器

写的很好,记录一下:https://www.cnblogs.com/think90/p/11436764.html

2020-12-03 18:23:02 98

转载 服务之间的调用之RPC、Restful深入理解

原文地址:https://blog.csdn.net/u014590757/article/details/80233901

2020-12-03 10:49:16 122

原创 sftp制定端口连接

sftp -oPort=50022 username@ip

2020-12-02 10:53:52 1223

转载 ​​​详解Java的自动装箱与拆箱

​​​详解Java的自动装箱与拆箱(Autoboxing and unboxing)一、什么是自动装箱拆箱很简单,下面两句代码就可以看到装箱和拆箱过程1 //自动装箱2 Integer total = 99;3 4 //自动拆箱5 int totalprim = total;简单一点说,装箱就是自动将基本数据类型转换为包装器类型;拆箱就是自动将包装器类型转换为基本数据类型。下面我们来看看需要装箱拆箱的类型有哪些:这个过程是自动执行的,那么我们需要看看它的执行过...

2020-12-01 20:44:58 101

原创 Zuul网关的安全策略

说到安全策略,首先我们要清楚一般的网络攻击,例如XSS窃取信息、CSRF仿造请求、SQL注入模拟参数、DDos流量、资源攻击,而我们的Zuul,作为后端服务的入口,要保证网络安全,省去后端服务的安全处理。1、网关添加过滤器,针对不同网络攻击方式,编写不同安全策略2、XSS攻击->检查请求脚本,是否带XSS脚本,保存时进行转义3、SQL注入->检查请求脚本,是否带SQL注入脚本,对格式,特殊符号进行处理4、CSRF->添加token验证机制;请求是否带有ref...

2020-11-21 08:56:45 901 1

原创 网络安全-DDos

目录DDos简介DDos攻击原理DDos攻击方式DDos防御方式DDos简介 分布式拒绝服务攻击(英文意思是Distributed Denial of Service,简称DDoS),是指黑客通过控制很多的计算机,在同一时间发起对目标服务器的攻击,使攻击的目标无法正常使用。DDos攻击原理DoS攻击:是采用一对一方式的网络攻击,黑客通过一台高性能的服务器,对一台目标服务器进行大量请求。它利用网络协议和操作系统的一些缺陷,采用欺骗和伪装的策略来进行网络攻击,使网站服务器充...

2020-11-21 08:28:18 390

原创 网络安全-CSRF

目录CSRF简介CSRF防御方式CSRF简介 CSRF跨站点请求伪造(Cross—Site Request Forgery),也是常见的网络攻击方式之一,主要是会盗用客户浏览器cookie,伪造信息进行攻击,获取方式同XSS一样,而CSRF专门获取用户浏览器cookie,进行伪造访问。CSRF防御方式1、对重要的cookie 设置httpOnly,防止客户端通过document.cookie读取cookie;2、添加校验token,后端在返回前端的时候会生有一个t...

2020-11-20 21:28:11 121

原创 网络安全-SQL注入

目录SQL注入简介SQL注入条件SQL注入防御方式SQL注入简介 SQL注入是常见的网络攻击方式之一,它不是利用系统的BUG来实现攻击,是针对程序编写时的疏忽,通过输入框键入SQL语句,在系统内执行,导致信息泄露。示例: 查询编号为=‘1’的结果,在输入端输入1';drop table user; 后端数据获取输入参数,直接进行sql拼接,即 select * from user where id='1';drop table user; 执行,此时数据库...

2020-11-20 21:06:25 170

原创 网络安全-XSS

目录XSS简介XSS分类XSS反射性攻击XSS持久性攻击XSS防御 方式XSS简介 XSS又叫CSS(Cross Site Script),跨站脚本攻击,它指的是恶意攻击者往Web页面里插入恶意代码脚本,然后当用户在访问这个网页的时候就会执行,或是弹出广告、动图等。恶意代码的运行就会使用户失控,无法关闭网页、批量下载文件、甚至丢失浏览器中 cookie 信息,所以我们在搭建web系统的时候,一定是要防止XSS攻击的。XSS分类XSS反射性攻击 主要...

2020-11-20 20:40:01 169

原创 Java虚拟机对锁的优化

jdk1.6以后,JVM对 synchronized 锁进行了优化:锁消除 锁消除是 JIT编译器对synchronized 锁的优化,在编译的时候,JIT编译器会通过逃逸分析技术,来分析synchronized 锁对象,如果只可能被一个线程加锁,这个时候编译就不用加入monitorenter 和 monitorexit 的指令。锁粗化 JIT编译器发现代码里多次加锁释放锁,会给合并为一把锁。偏向锁 monitorenter 和 monitore...

2020-11-20 12:54:49 125

转载 synchronized底层如何保证原子性、可见性、有序性

原理原子性:加锁和释放锁;可见性:加了Load屏障和Store屏障,释放锁flush数据,加锁会refresh数据;有序性:Acquire屏障和Release屏障,保证代码块内部可以重排,但是代码块内部和代码块外部的指令是不能重排的。保证原子性java对象是分为对象头和实例变量两块,其中实例变量就是对象那些变量数据,然后对象头包含了两块内容,一是 Mark Word(含hashCode、锁数据、GC数据等),另一个是Class Metadata Address(包含了指向类的元数据指针)

2020-11-19 21:27:25 1732

原创 Java 程序中的指令重排

Java中有两个编译期:1、编译期:调用 javac 命令将Java代码编译成Java字节码;2、运行期:JIT 编译器将字节码编译成机器码。指令重排指令重排是指在程序执行过程中, 为了性能考虑, 编译器和CPU可能会对指令重新排序。...

2020-11-19 17:31:18 516

原创 可见性涉及的底层硬件原理

目录基础概念可见性问题MESI 协议同步实现flush处理器缓存refresh处理器缓存基础概念【摘自网络】寄存器:(register)寄存器是 CPU 内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果。它的功能是存储二进制代码,它是由具有存储功能的触发器组合起来构成的。一个触发器可以存储1位二进制代码,故存放n位二进制代码的寄存器,需用n个触发器来构成。 高速缓 存:(Cache)其原始意义是指存取速度比一般随机存取记忆体(RAM)来得快的一种RA

2020-11-19 16:07:14 255

原创 进程kill不掉怎么办

问题背景:公司内部的一套发布系统,每次部署,启动git仓库所指代码,并且启动时不是直接通过java -jar 启动的,是属于发布系统内的子进程,当子进程在调用exit命令结束自己的生命的时候,其实它并没有真正的被销毁,而是留下一个称为僵尸进程(Zombie)的数据结构。导致我们在kill时不能杀掉。可通过如下方法处理ps -aux 查看进程状态,如果 STAT 是 Z,那么就是一个僵尸进程。ps -ef | grep 进程id 找到父进程id通过kill掉父进程来杀死这个进程。僵尸进

2020-11-19 14:19:24 5022

原创 服务器CPU100%如何排查和解决

目录1、定位耗费 cpu 的进程2、定位进程内耗费cpu 的线程3、定位那个方法导致 cpu 过高问题背景:要往 es 集群写日志,但当时 es 集群异常宕机,主线程写不进去数据抛出异常,但是异常内,又重新调用了 es 写的方法,导致死循环,线上服务器CPU负载接近100%,那么如何排查了?1、定位耗费 cpu 的进程查看进程列表:top c输入P,按照 cpu 使用率进行排序:P2、定位进程内耗费cpu 的线程查看进程内线程列表:top -Hp 1347...

2020-11-19 13:14:46 1269

原创 bio、nio、aio都是什么以及它们的区别

目录BIO:同步阻塞IO模式NIO:同步非阻塞IO模式NIO:异步非阻塞IO模式IO的通信模式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。BIO:同步阻塞IO模式BIO是最传统的网络通信模式,通信模式是首先服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,此时就进入了同步阻塞模式的通信,客户端Socket发送一个请求,服务端Socket处理后进行响应,响应必须是处理完以后,在这之前任何事情都干不了。通常服务端Sock.

2020-11-19 12:38:18 644

原创 进程是如何通信的

目录进程间的5种通信方式管道命名管道消息队列信号量共享内存参考文章:https://www.cnblogs.com/zgq0/p/8780893.html线程是如何切换的?进程间的5种通信方式管道(pipe):通常指无名管道,是 UNIX 系统IPC最古老的形式。 命名管道:FIFO,也称为命名管道,它是一种文件类型。 消息队列:是消息的链接表,存放在内核中。一个消息队列由一个标识符(即队列ID)来标识。 信号量:(semaphore)与已经介绍过的 IPC .

2020-11-18 20:19:30 225

原创 Socket通信的工作原理

目录定义工作原理什么是TCP/IP、UDP?参考文章:https://blog.csdn.net/qq_30270931/article/details/80483124定义socket又叫套接字,是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。工作原理基于TCP 协议,封装成接口提供使用。(图片摘自网络)1、服务器监听服务器根据地址类型.

2020-11-18 20:05:27 1168

原创 MySQL性能调优

目录一、分析执行计划各字段详解:idselect_typetypepossible_keyskeykey_lenrefrowsExtra参考博文:https://blog.csdn.net/weixin_41558728/article/details/81704916二、优化思路索引优化查询优化服务器硬件优化数据库配置优化一、分析执行计划基本语法:explain sql;执行结果:id select_type..

2020-11-18 19:14:04 80

原创 MySQL数据库锁实现原理

MySQL数据库锁表锁、行锁、页锁。InnoDB的表锁InnoDB的行锁有共享锁(s)和排它锁(x); 共享锁(s)是多个事务

2020-11-18 17:43:28 324

原创 数据库中事物的特性与隔离级别

目录事务的四大特性(ACID)并发访问会导致的问题事务的隔离级别mysql 如何实现repeatable read 的?MVCC 具体实现分析:参考博文:https://www.cnblogs.com/luchangyou/p/11321607.html事务的四大特性(ACID)1、原子性(Atomicity):原子性是指事务的不可分割,要么全部执行成功,要么全部失败,是一次完整的操作。2、一致性(Consistency):一致性是指事务必须使数据库从一个一致性状..

2020-11-15 18:33:40 174

原创 MySql的索引实现原理

目录简介MySQL索引类型Mysql中索引实现Mysql索引缺点及使用注意简介 索引是为MySQL提高获取数据效率的数据结构,为了快速查询数据。索引是满足某种特定查找算法的数据结构,而这些数据结构会以某种方式指向数据,从而实现高效查找数据。 MySql从5.5版本开始,表的默认存储引擎从MyISAM换成InnoDB,而索引技术有不同的实现方式,包括:B-树,B+树,R-树以及散列类型。MySQL一般以B+树作为其索引结构。在了解B+树前,我们需要先了...

2020-11-15 12:59:45 231

原创 MySql的MyISAM和InnoDB存储引擎的区别

myisam不支持事务,不支持外键约束,索引文件和数据文件是分开的,所以查询性能特别好,适合用 与大量查询的场景。innodb支持事务,走聚簇索引,强制要求有主键,支持外检约束,高并发、大数据量、高可用等相关成熟的数据库架构,分库分表、读写分离、主备切换...

2020-11-15 11:12:46 86 1

原创 http 1.0、http 1.1、http 2.0区别

目录http 1.0http 1.1http 2.0http 1.0早先1.0的HTTP版本,是一种无状态、无连接的应用层协议。http 1.0要制定 keep-alive 来开启持久连接,默认是短连接,就是每次浏览器请求都要重新建立一次 tcp 连接,即无状态。服务器不跟踪每个客户端也不记录过去的请求(无状态),只能通过借助cookie/session机制来做身份认证和状态记录。早期的网页大多是文字,后面随着页面的丰富,需要加载更多的资源,如css、js、图片等,并且一个请

2020-11-14 20:41:34 81

原创 TCP三次握手和TCP四次挥手

目录 TCP三次握手 TCP四次挥手 TCP三次握手通过传输层的 tcp 协议建立连接的时候,就需要走三次握手的过程。第一次握手:客户端发送连接请求,成功后客户端处于SYN_RECV状态。第二次握手:服务端接受到请求报文,并返回一个确认报文,自己处于SYN_RECV状态。第三次握手:成功握手,并进行告知。为什么是三次握手呢?可不可以是两次或是多次? 如果只有两次握手,假设第一次客户端向服务端发起请求,但卡在中间不能接收到第二次握手,此时,客户端可能已经...

2020-11-14 20:02:51 112

原创 浏览器发送一次请求的过程(图解)

当我们在浏览器中输入:https://www.baidu.com/后得到网络响应,这个过程发生了什么?请求如下图: 其中以太网数据包组装流程如下:输入请求,根据应用层协议包装成一个数据包; 请求进入传输层,将应用层数据包包装成TCP数据包,并加一个TCP头; 请求进入网络层,将TCP数据包装成IP数据包,并加一个IP头; 请求进入数据链路层,将IP数据包装成以太网数据包,并加一个以太网标头; 通过交换机进行广播,以太网包的限值是5000字节,超过则进行切割,切割后的每个数据...

2020-11-14 15:25:59 580

原创 计算机网络体系

目录计算机网络模型OSI的七层协议1、物理层2.、数据链路层3、网络层4、传输层5、会话层6、表示层7、应用层OSI模型的总结计算机网络模型(1)OSI的七层协议:从上到下:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。(2)TCP/IP四层协议:从上到下:应用层,传输层、网络层、数据链路层、网络接口层。OSI的七层协议1、物理层 物理层设备:网线、中继器、集线器、光缆,目的是把电脑都连接起来,发送0、1电...

2020-11-13 15:28:10 133

原创 Mysql命令行导出excel

成功导出!!!基本语法:echo "查询语句" 管道 登录mysql链接方式 > 定向输出文件示例:echo "select * from g_franch_info ;" | mysql -h127.0.0.1 -uuser -p micdb> /opt/data/down.xls注意·如果导出有中文,需要将文件格式进行编码;iconv -futf8 -tgb2312 -o新文件名 原文件名示例:iconv -futf8 -tgb2312 -downNew.x.

2020-11-12 16:40:02 533 1

原创 JVM实战-06·Tomcat如何设置JVM参数

1、为什么要设置JVM参数?各种环境代码运行在我们的 JVM中,Web 服务响应时间,运行稳定都与我们的 JVM 密切相关,JVM运行状态对我们 Web 服务表现正相关。2、如何进行 JVM 的设置? 找到 tomcat 在本地电脑中的安装目录,进入这个目录,然后进入bin目录中,在window环境下找到bin目录中的catalina.bat,在linux环境下找到catalina.sh。编辑该文件,找到JAVA_OPTS这个选项的位置,该参数是java启动的时候,需要的启动参数...

2020-11-12 11:22:07 572 2

原创 JVM实战-05·JVM垃圾回收器

一、基础概念并发收集:指用户线程与垃圾回收线程同时执行(但不一定是并行的,可能会交替执行),用户程序在继续运行,而垃圾收集程序线程运行于另一个CPU上。并行收集:指多条垃圾收集线程并行工作,但此时用户线程仍然处于等待状态;吞吐量: 即 CPU 用于运行用户代码的时间与 CPU 总消耗时间的比值。垃圾收集器:是垃圾回收算法(标记-清除算法、复制算法、标记-整理算法、火车算法)的具体实现,不同商家、不同版本的JVM所提供的垃圾收集器可能会有很在差别。二、垃圾收集器图中展示了7种不同.

2020-11-12 07:26:01 145

原创 JVM实战-04·JVM垃圾回收机制

简介:当对象不在使用的时候,就需要释放内存,以供新的对象使用,此时就需要了解对象内存释放的机制。判断是否回收的方法1. 引用计数法:给对象增加一个引用计数器,每当有一个地方引用它是,计数器就+1,当引用失效时,计数器就-1,任何时刻计数器为 0 的对象就是不能再被使用的,即对象已“死”。引用计数法实现简单,判定效率也比较高,Python 语言就是采用的这种算法进行内存管理。但是,在主流的 JVM 中并没有被使用,是因为引用计数器无法解决对象循环引用的问题。2. GC Root T

2020-11-11 20:37:02 79

原创 JVM实战-03·JVM堆内存详解

目录JVM内存分配1. 年轻代2. 老年代3. 永久代堆内存分配过程JVM堆内存常用参数JVM内存分配1. 年轻代(或称新生代,Young、New)通常用来放新生成的对象(但不绝对,如可以通过-XX:PretenureSizeThreadshold配置将大对象直接分配在老年代)。年轻代的目标就是尽可能快速地收集掉那些生命周期短的对象。年轻代分3个区,1个Eden区,2个Survivor区(from 和 to),默认比例是8:1:1。每次只使用Eden和一个..

2020-11-11 17:35:10 153

原创 JVM实战-02·JVM内容

虚拟机内存中主要有堆、栈、本地方法栈、程序计数器、方法区。堆:(Java Heap)是虚拟机所管理的内存中最大的一块,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,各线程共享。栈:(Java Virtual Machine Stacks)是线程私有的,它的生命周期与线程相同。每个线程内的方法执行时,都会创建一个栈帧,栈帧内存储局部变量表,操作数栈,动态链接,方法出口等信息,1. 局部变量表存放了编译器可知的各种基本数据类型、对象引用、returnAddress类型。局..

2020-11-11 15:46:01 81

转载 JVM实战-01·JVM指令手册

注册登录骑着龙的羊博客园 首页 新随笔 联系 订阅 管理随笔 - 87文章 - 1评论 - 36深入JVM(一)JVM指令手册本文按照如下思维导图组织1. 栈和局部变量操作1.1 将常量压入栈的指令aconst_null 将null对象引用压入栈iconst_m1 将int类型常量-1压入栈iconst_0 将int类型常量0压入栈iconst_1 将int类型常量1压入栈iconst_2 将int类型常量2压入栈icon...

2020-11-11 11:08:15 88

空空如也

空空如也

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

TA关注的人

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