- 博客(31)
- 资源 (5)
- 收藏
- 关注
原创 以太坊综述
区块链公链发展史区块链1.0(比特币2008) -> 区块链2.0(以太坊/智能合约2014) ->区块链3(?2017)以太坊发展阶段前沿(Frontier) - Block #0:以太坊初始阶段,持续时间为2015年7月30号至2015年3月家园(Homestead) - Block #1150000:以太坊的第二阶段,于2016年3月推出大都会(Metropolis) - Block #4370000:以太坊的第三阶段,于2017年10月推出“拜占庭”,2018年推出“君士坦.
2020-09-30 10:55:01
619
2
原创 jvm性能调优工具 jhat
jdk1.8 jhatjhat是一个用来分析java的堆情况的命令,是java虚拟机自带的一种分析工具。可以用jhat命令将dump出来的hprof文件转成html形式,然后通过http访问查看堆情况。一般不会直接在服务器上进行分析,因为jhat是一个耗时并且消耗硬件资源的。show instance counts for all classes(excluding platform)平台外的所有对象信息。show heap histogram显示堆的统计信息。...
2020-09-07 10:16:28
24703
原创 jvm性能调优工具 jmap
jdk1.8 jmapjmap是一个多功能的命令,它可以生成java程序的dump文件,也可以查看堆内的对象实例统计信息,查看类加载的信息和finalizer队列。jmap pid:查看进程的内存映像信息。jmap -heap pid:显示java堆详细信息jmap -histo:live pid:显示堆中对象的统计信息jmap -clstats pid:打印类加载器信息jmap -finalizerinfo pid:打印等待终结的对象信息jmap -dump:format-b,fi
2020-09-07 10:03:51
24519
原创 jvm性能调优工具 jstack
jdk1.8 jstackjstack是jdk自带的线程堆栈分析工具,使用该命令可以查看线程id,线程状态,是否持有锁。或导出java应用程序中线程堆栈信息。
2020-09-07 10:03:18
24512
原创 jvm性能调优参数 收集器
jvm垃圾回收器新生代收集器Serial:是一款用于新生代的单线程收集器,采用复制算法进行垃圾收集。不仅用一条线程执行垃圾收集工作,它在收集的同时,所有用户线程必须暂停。一般单核服务器使用,可以用-XX:+UserSerialGC来选择Serial作为新生代收集器。 ParNew:是一个Serial多线程版本,ParNew在单核CPU环境中并不会比Serial收集器达到更好的效果,它默认开启的线程数和cpu数量一致。可以用-XX:+ParallelGCThreads来设置垃圾收集的线程数。新生代收
2020-09-05 10:00:51
24157
原创 jvm性能调优工具 jinfo
jdk1.8 jinfojinfo是jdk自带的命令,可以用来查看正在运行的java应用程序的扩展参数。包括java系统属性和jvm命令行参数,也可以动态的修改正在运行的jvm一些参数,当系统崩溃时,jinfo可以从core文件里面知道崩溃的java应用程序的配置信息。Java corejavacore,它是java提供的一种诊断特性,能够提供一份可读的当前运行的jvm中线程使用情况的快照,jvm中有哪些线程在运行,每个线程执行到哪一个类,哪一个方法。应用程序如果出现不可恢复的错误或是内存泄漏
2020-09-04 09:06:55
23597
原创 jvm性能调优工具 jstat
jdk8 jstatjstat是jdk自带的一个轻量级小工具,可以查看堆内存各各部分的使用量,以及加载类的数量。格式:jstat 【-命令选项】【间隔时间/毫秒】【查询次数】jps -v:查看所有进程的pidjstat -options:查看当前jvm版本支持的选项。jstat -class pid:类加载统计 Loaded:加载的class数量 Bytes:加载的class数量所占用空间大小(kb) Unloaded:未加载的class数量 Bytes:未加载的...
2020-09-03 11:23:56
17913
原创 Nginx
DNS协议将域名和ip互相映射成一个分布式数据库,用来解析域名和ip之间的关系。域名有利于记忆。内网穿透工具Natapp,NgrokNginx介绍nginx是一个轻量级的web服务器,主要应用场景反向代理:使用反向代理隐藏真实的服务ip,一般真实的服务器地址不能直接通过外网直接访问。 负载均衡:减少单台服务器压力,故障转移。 接口网关:搭建API接口网关,解决网站跨...
2020-09-02 10:02:51
17426
原创 java堆内存详解操作
堆的内存划分java堆内存划分为新生代,老年代,永久代,在jdk1.8中永久代被元空间取代。新生代又分为三个空间分别为eden,s0,s1区。新生代:使用复制清除算法,新生代每次gc都会回收大部分对象,新生代里面分成一份较大的eden空间和两份较小Survivor空间,每次只使用eden和其中一块survivor空间,每次垃圾回收的时候把存活对象复制到未使用的survivor空间中,然后清空eden空间和刚刚使用的survivor空间。eden空间和survivor空间比例为8:1:1,内存不足时发
2020-09-02 09:57:21
18187
原创 Netty百万级连接
1.Netty是一个基于java nio 异步通信框架,其架构特点 异步非阻塞,基于事件驱动,高性能,高可靠性,高可定制性2.BIO 优点模型简单代码简单,缺点请求数和线程数1:1,在高并发情况下cpu切换线程上下文损耗大,tomcat7之前使用的是BIO之后使用的是Nio,可以使用线程池使用伪Nio同步阻塞IO:一个请求一个线程,客户发起一个请求服务器就需要启动一个线程去处理,如果这个...
2019-09-05 18:35:54
19221
原创 Dubbo介绍
什么是Dubbodubbo是一个RPC远程调用框架,分布式服务治理框架。dubbo服务治理:服务与服务之间会有很多个url,依赖关系,负载均衡,容错,自动注册服务。Dubbo有哪些协议默认用的dubbo协议,http,RMI,HessianDubbo整个架构流程分为四大模块生产者,消费者,注册中心,监控中心生产者:提供服务消费者:调用服务注册中心:注册信息...
2019-03-19 10:47:13
36178
原创 ActiveMQ
什么是消息中间件面向消息的中间件,发送者将消息发送给消息服务器,消息服务器将消息存放在队列中,在合适的时候在将消息转发给接收者。这种模式下,发送和接收是异步的,发送者无需等待,二者的生命周期未必相同,发送消息的时候接受者不一定运行,接收消息的时候发送者也不一定运行,一对多通信,对于一个消息可以有多高接收者。jmsjms是java的消息服务,jms的客户端之间可以通过jms服务进行异...
2019-03-16 14:34:36
35611
原创 Spring分析
SpringIOC控制翻转,依赖注入。就是由spring来负责控制对象的生命周期和对象间的关系。底层就是用java反射和dom4j。BeanFactory作为最顶层的一个接口类,它定义了IOC容器的基本功能规范。SpringAop面向切面编程,底层用的是代理设计模式。代理设计模式又分为,静态代理和动态代理。SpringAop底层用的就是两种动态代理模式,一种是jdk动态...
2019-03-14 10:44:13
35028
原创 MySQL优化
MySQL优化方式表的设计合理化(符合3NF),实际设计中不可能百分百遵守3NF 添加适当索引(index)普通索引,主键索引,唯一索引,全文索引 SQL语句优化 分表技术(水平分割,垂直分割) 读写分离 存储过程 对mysql配置优化(配置最大并发数my.ini,调整缓存大小) mysql服务器硬件升级 定时去清除不需要的数据,定时进行碎片整理数据库三大范式第一范式:1...
2019-03-12 11:14:28
37763
原创 跨域解决方案
跨域解决方案跨域其实是浏览器安全机制,请求访问的域名与ajax请求地址不一致,浏览器会直接无法返回请求结果。1.添加header请求允许访问String origin = request.getHeader("Origin");response.addHeader("Access-Control-Allow-Origin", origin);response.addHeader(...
2019-03-09 15:33:03
39117
原创 垃圾回收机制算法
什么是垃圾回收机制垃圾回收机制就是,不定时,向堆内存中清理不可达对象。垃圾回收可以有效的防止内存泄漏,有效的使用空闲的内存。内存泄漏是指改内存空间使用完毕之后未被回收,在不涉及复杂数据结构的一般情况下,java的内存泄漏表现为一个内存对象的生命周期超出了程序需要它的时间长度,我们优势也将其称为”对象游离“。内存泄漏的定义:对象已经没有被应用程序使用,但是垃圾回收器没办法移除它们,因...
2019-03-09 11:25:12
35976
原创 JVM参数调优
java内存结构java内存模型就是(JMM多线程),java内存结构组成,方法区,堆,栈,本地方法栈方法区:方法区又叫永久区,static关键词修饰,常量信息,当class文件被加载的时候,就会被初始化。所有线程会被共享堆:创建对象,new创建 数组 存放在堆内存,堆被所有线程共享堆内存中分配两个区,新生代,老年代。新生代又分为eden,s0,s1区,对象刚创建会存放在ede...
2019-03-02 11:39:53
34341
原创 Netty快速入门
什么是NettyNetty是一个基于java nio 类库的异步通讯框架,它的架构特点是:异步非阻塞,基于事件驱动,高性能,高可靠性和高可定制性。Netty应用场景分布式开源框架中dubbo,zookeeper,rocketmq底层 rpc(远程过程调用协议)通讯使用就是netty游戏开发中,底层使用netty通讯为什么选择NettyNIO的类库和api繁杂,使用麻烦,你需...
2019-02-27 21:20:38
34322
原创 NIO同步阻塞与同步非阻塞
BIO与NIOIO与NIO区别:其本质就是阻塞和非阻塞的区别。阻塞概念:应用程序在获取网络数据的时候,如果网络传输数据很慢,就会一直等待,直到传输完毕为止。非阻塞概念:应用程序直接可以获取已经准备就绪好的数据,无需等待。IO为同步阻塞形式,NIO为同步非阻塞形式,NIO并没有实现异步,在JDK1.7升级NIO库包,支持异步非阻塞。BIO:同步阻塞式IO,服务器实现模式为一个连接...
2019-02-27 15:09:26
15148
1
原创 NIO编程
什么是NIOio基于字节流和字符流进行操作的,而nio是基于通道和缓冲区进行操作,数据总从通道读到缓冲区中,或者从缓冲区写入到通道中。java nio可以让你非阻塞的使用iojava nio引入了选择器的概念,选择器用于监听多个通道的事件。io是面向流,阻塞io,无选择器。而nio是面向缓冲区,非阻塞io,有选择器。buffer的数据存取一个用于特定基本数据类型的容器,有j...
2019-02-26 22:47:32
14031
原创 java网络编程
什么是Socketsocket就是为网络服务提供的一种机制。通讯的两端都有Sokect网络通讯其实就是Sokcet间的通讯数据在两个Sokect间通过IO传输TCP与UDP区别udp:是面向无连接,将数据及源的封装成数据包中,不需要建立连接每个数据包的大小在限制64k因无连接,是不可靠协议不需要建立连接,速度快Tcp:建立连接,形成传输数据的通道...
2019-02-22 20:44:43
35327
原创 设计模式
什么是设计模式?设计模式是一套被反复使用,多数人知晓的,进过分类编目的,代码设计经验的总结,使用设计模式是为了可重用代码,让代码更容易被他人理解,保证代码可靠性。设计模式的分类创建型模式:工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。结构型模式:适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式。行为型模式:策略模式,模板方法模式,观察者模式...
2019-02-21 11:46:19
14399
原创 java注解
什么是注解?jdk1.5新增新技术,注解,很多框架为了简化代码,都会提供有些注解。可以理解为插件,是代码级别的插件,注解不会影响代码的实际逻辑,仅仅起到辅助性作用。注解分类:内置注解,自定义注解内置注解@SuppressWarnings:再程序前面加上可以在javac编译中去除警告。@Deprecated:带有标记的包,方法,字段说明其过时。@Overricle:打上这个标...
2019-02-21 09:18:06
32861
1
原创 java反射机制
什么是java反射就是正在运行,动态获取这个类的所有信息。反射机制的作用把.class -> .java 通过反射机制访问java对象的属性,方法,构造方法等。反射机制的应用场景jdbc加载驱动 springioc 框架反射创建对象的方式public class Person { private String name; private ...
2019-02-20 10:39:17
33718
原创 数据交换格式
1.JSONjson是一种轻量级的数据交换格式,相比与xml这种数据交换格式来说,因为解析xml比较的复杂,而且需要编写大段的代码,所有客户端和服务器的数据交换格式往往通过json来进行交换。json有两种数据结构json简答说就是javascriptzhogn中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构对象:对象在js中表示为"{}"...
2019-02-18 19:56:37
36854
原创 线程池原理分析和锁的深入化
1.线程池是什么java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池,在开发过程中,合理地使用线程池能够带来很多好处降低资源消耗,提高响应速度,提高线程的可管理性。线程池是为突然大量爆发的线程设计的,通过有限的几个固定线程为大量的操作服务,减少创建和销毁线程所需的时间,从而提高效率。2.线程池分类ThreadPollExecutor...
2019-02-16 18:30:52
14214
原创 java并发包
1.同步容器类vector与arraylist区别arraylist是最常见的list实现类,内部是通过数组实现的,它允许对元素进行快速随机访问,数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要将已经有的数组复制到新的存储空间中,当从arraylist的中间位置插入或者删除元素时,需要对数组进行复制,移动,代价比较高,因此它合适随机查找和遍历,不合适插入和删除。...
2019-02-15 15:58:23
36628
原创 多线程之间实现通讯
1.多线程之间通讯多线程之间通讯,其实就是多个线程在操作同一个资源,但是操作的动作不同。//共享资源实体类class Person { private String name; private String sex; public String getName() { return name; } public void setName(String name) { ...
2019-02-14 12:05:19
14269
原创 多线程安全
一.什么是线程安全 当多个线程同时共享,同一个全局变量或静态变量,做写操作时,可能会发生数据冲突问题,也就是线程安全问题。但是做读操作时不会发生数据冲突问题。public class ThreadDemo { public static void main(String[] args) { One one = new One(); Thread t1 = ne...
2019-01-19 15:32:57
36619
原创 java高级工程师必会专业技能
一.远程调用技术1.web service2.rpc3.httpinvoker4.hessian 5.rmi6.burlap二.常用rpc框架1.dubbo2.dubbox3.grpc4.hessian5.thrift6.motan7.rpcw三.微服务技术1.dubbo2.dubbox3.springcould4.springboot5.spring...
2019-01-18 17:37:43
33259
原创 多线程快速入门
一,线程与进程的区别每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。进程就是所有线程的集合,每个一个线程是进程中的一条执行路径二,多线程创建方式第一种:继承Thread类重写run方法class CreateThread extends Thread { public void run() { for(int i = 0; i<10...
2019-01-16 11:35:22
28451
javaweb所有技术文档集合
2018-08-09
linux常用命令总结
2018-08-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人