那个小白猿
这个作者很懒,什么都没留下…
展开
-
JVM(五)-JVM调优
文章目录JVM参数查看参考资料一个例子JVM常用参数GC日志JVM调优前置知识调优的概念调优规划优化环境监控jJVM运行中的问题jvisualvm远程连接jprofiler (收费)arthas在线排查工具arthas使用反编译热替换OOM案例JVM参数查看java -:标准参数,每个版本一样的参数java -X:非标准参数java -XX:不稳定参数,每个版本可能不同java -XX:+PrintFlagsFinal -version:打印所有参数java -XX:+PrintFlagsFin原创 2021-09-21 10:27:36 · 100 阅读 · 0 评论 -
JVM(四)-垃圾回收器
文章目录Garbage CollectorJVM寻找垃圾引用计数算法(reference count)根可达性算法(Root Searching)GC常用清除垃圾算法标记清除算法(Mark-Sweep)拷贝算法(Copying)标记压缩算法(Mark-Compact)分代算法堆内逻辑分区新生代(young)老年代(old)永久代(方法区)对象何时进入老年代分配担保栈上分配对象对象被分配的位置常见的垃圾回收器SerialSerial OldParaller ScavengeParallel OldParNew原创 2021-09-21 10:27:06 · 93 阅读 · 0 评论 -
JVM(三)-对象的创建
文章目录对象的创建过程对象在内存中的存储布局虚拟机配置普通对象数组对象对象的大小对象头具体内容对象的定位对象的分配JVM 的运行区和指令集JVM Runtime Data Area指令集栈帧的详细解释例一例二例三对象的创建过程类的初始化:class文件加载到内存后,对class文件进行校验,对类的静态变量赋默认值以及初始值,执行静态语句块。接下来就是对象的初始化:申请对象内存成员变量赋默认值调用构造方法成员变量顺序赋初始值执行构造方法语句:如果继承了父类的话,调用su原创 2021-09-21 10:26:45 · 101 阅读 · 0 评论 -
JVM(二)-java内存模型
JMMJMM(Java Memory Model)即java的内存模型主要问题:1、高并发情况下,java的内存模型如何提供支持?2、对象在new出来之后,在内存中是如何布局的?硬件层数据一致性硬件层的并发优化基础知识多线程访问同一变量时(或修改同一变量)的一致性问题在硬件层面的解决以前的CPU使用总线锁的方式,一次只让一个CPU访问内存地址,这样效率极低此外,可以使用数据一致性协议,如MSI、MESI、MOSI、Synapse、Firefly、Dragon,通过标记缓存状态来原创 2021-09-21 10:26:18 · 101 阅读 · 0 评论 -
JVM(一)-类的加载
JVM基础JVM即JAVA Virtual Machine,是运行java字节码的java虚拟机,用来将编译好的字节码文件加载到操作系统的内存中。JVM是一个跨语言的平台,支持Java、Scala、Kotlin、Groovy、Clojure、Jython、Jruby等一百多种语言,此外,JVM本身是一个规范,可以运行在不同操作系统并由操作系统去实现。所以,JVM与Java语言无关,与class文件有关。JDK、JRE、JVMClass文件格式二进制字节流(OS内存中的最终形式)原创 2021-09-20 17:12:44 · 65 阅读 · 0 评论 -
多线程基础(三)
文章目录并发编程的三大特性可见性(visibility)volatile修饰基本类型volatile修饰引用了类型三级缓存缓存行缓存一致性协议有序性(ordering)可以重排序的条件一个例子原子性(atomicity)多线程体系Executor接口ExecutorService接口AbstractExecutorService抽象类Runnable与Future并发编程的三大特性可见性(visibility)volatile修饰基本类型一个线程修改了一个变量的值,其他线程是否对修改后的变量值可见原创 2021-09-20 17:08:32 · 76 阅读 · 0 评论 -
多线程基础(二)
文章目录从HashTable到ConcurrentHashMap从Vector到Queue并发中常用的容器ConcurrentHashMapConcurrentSkipListMapCopyOnWriteArrayListSynchronizedListConcurrentLinkedQueueLinkedBlockingQueueArrayBlockingQueueDelayQueueSynchronousQueueLinkedTransferQueueQueue与List区别线程池ExecutorExe原创 2021-09-20 17:06:14 · 75 阅读 · 0 评论 -
多线程基础(一)
文章目录线程的历史进程/线程/纤程/协程/程序创建线程的五种方法线程的6种状态wait和sleep的区别notify和notifyAll阻塞的三种情况终止线程的四种方式线程的打断(interrupt)线程打断的三种方法Interrupt与isInterruptedinterrupt与interruptedInterrupt与sleep 、wait、joininterrupt与synchronizedinterrupt与lockinterrupt与lockInterruptibly线程的结束使用stop方法(原创 2021-09-20 17:03:28 · 58 阅读 · 0 评论 -
Apollo的基本使用
文章目录安装部署下载创建数据库修改安装包中配置启动项目Apollo的使用新建项目配置事件监听缓存密钥配置灰度发布NamespaceApollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。服务端基于Spring Boot和Spring Cloud开发,打包后可以直接运行,不需要额外安装Tomcat等应用容器。Java客户端不依赖任何框架,能够运行于所有Java运行时环境原创 2021-09-20 16:58:48 · 163 阅读 · 0 评论 -
SpringCloud基础使用(三)-SpringCloud Alibaba体系
框架协议对比[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a1gwwQBY-1632127852656)(SpringCloud-Alibaba%E4%BD%93%E7%B3%BB.assets/image-20210721094812975.png)]Spring依照Netflix开源的产品定义了一套接口称之为SpringCloud,Alibaba、Netflix的开源产品就是这套口的具体实现。Sentinelhttps://spring.io/projects/s原创 2021-09-20 16:52:29 · 107 阅读 · 0 评论 -
SpringCloud基础使用(二)-SpringCloud原生体系
文章目录SpringCloud AdminAdmin服务端Admin微服务端邮件通知钉钉群通知配置中心服务端客户端手动刷新配置自动刷新配置SpringCloud GatewaySpring Cloud Gateway 与 Zuul 对比zuul1.x与zuul2.xzuul 与Gateway对比断言 predicatespath断言Query断言Method断言Host断言Cookie断言基本路由依赖配置文件整合Eureka依赖配置负载均衡自定义负载均衡配置自定义路由自定义过滤器鉴权路由基于Webflux的原创 2021-09-20 16:50:00 · 116 阅读 · 0 评论 -
SpringCloud基础使用(一)-Netflix体系
文章目录SpringCloud生态SpringCloud NetflixSpringCloud AlibabaSpringCloud ApacheEureka客户端服务端RegisterRenewFetch RegistryCancelTime LagCommunication mechanismEureka-Server搭建Eureka高可用集群搭建Eureka服务注册Eureka Rest注册到eureka的服务信息查看注册到eureka的具体的服务查看服务续约更改服务状态删除状态更新删除服务Eurek原创 2021-09-20 16:45:14 · 131 阅读 · 0 评论 -
Zookeeper开发案例(三)
文章目录ZooKeeper的分布式注册配置发现分布式锁Time:2021-01-21ZooKeeper的分布式注册配置发现以下案例都将使用reactive异步回调编程模式来实现ZooKeeper在做分布式协调时,如果要协调的多个节点在不同的物理位置,那么当要修改某一项配置时,势必要去每个物理节点修改,而这向工作可以这样来实现:将要修改的配置放在一个公共的地方,让每个物理节点去读取该配置,这样就可以不必去修改每个物理节点的配置。在ZooKeeper中的具体实现就是:可以将配置文件放在一个节点下,然后根原创 2021-09-20 00:02:17 · 85 阅读 · 0 评论 -
Zookeeper原理(二)
文章目录paxosZABwatchAPI使用建立连接创建/修改节点重复注册watch日志输出异步回调Time:2021-01-19paxosZooKeeper是分布式的协调服务,它提供可靠、快速的服务,那么它是如何保证可靠性、一致性、快速等特点呢?那就是通过paxos,paxos是一个基于消息传递的一致性算法,是Leslie Lamport于1990年提出,被广泛用于分布式计算中,Google的Chubby、Apache的ZooKeeper都是基于他的理论来实现的。paxos只有在一个可信的计算环境中原创 2021-09-19 11:04:25 · 75 阅读 · 0 评论 -
Zookeeper搭建及其基本概念(一)
文章目录ZooKeeper安装ZooKeeper客户端启动序列节点节点间连接关系ObserverZooKeeper概念ZooKeeper的特点ZooKeeper的APIZooKeeper的结构ZooKeeper提供的保证Time:2021-01-06ZooKeeper安装此时,ZooKeeper的最新版本为3.6.2ZooKeeper官网下载地址也可以直接使用wget命令来下载(下载源码自行编译或者下载编译好的二进制文件,不建议下载源码(目前没找到编译方式),因为我个人下载的源码在启动时就报了错原创 2021-09-19 11:02:21 · 85 阅读 · 0 评论 -
redis在开发中的使用(五)
文章目录Spring支持Redisvalue为String类型字节形式value为hash类型对象形式订阅/发布其他API击穿:当redis作为缓存,redis中的key过期后发生了对该key的高并发的数据访问,此时将绕过redis直接访问数据库。解决方法:让第一个在redis缓存获取key的客户端通过setnx(原来没有的key才能设置成功,相当于锁)设置key,如果设置成功就证明缓存中真的没有要访问的key(key已经过期),那么就去数据库访问,否则就sleep,其他客户端也是如此,即首先get k原创 2021-09-19 10:51:54 · 95 阅读 · 0 评论 -
redis的集群(四)
文章目录单机、单节点、单实例redis主从复制redis的高可用redis的分区分区基本概念客户端分区代理分区twemproxypredixy分区的优点分区的缺点预分片持久化数据还是缓存redis的集群Redis集群介绍Redis 集群的数据分片Redis 集群的主从复制模型Redis 一致性保证redis集群搭建槽位移动windows中启动多个redis实例单机、单节点、单实例容易引发的问题:单点故障容量有限压力大(如IO压力)以上三个问题解决方案:独立方案和整合方案AKF:通过x、y、原创 2021-09-19 10:48:04 · 86 阅读 · 0 评论 -
redis进阶使用(三)
文章目录redis的进阶使用管道(pipeline)发布/订阅(Pub/Sub)事务布隆过滤器布隆过滤器安装布隆过滤器介绍redis作为缓存key的淘汰策略key的过期(有效)时间redis淘汰过期的keysredis作为数据库RDBAOF总结redis的进阶使用管道(pipeline)通过nc与redis建立一个socket连接后,可以使用管道符一次性给redis发送多条命令(节省往返时间)以及批量数据例如:窗口一:[root@localhost ~]# redis-cli127.0.0.1原创 2021-09-19 10:45:47 · 83 阅读 · 0 评论 -
redis的数据类型(二)
文章目录简单命令使用redis数据类型String**set、get****mset、mget****append****getrange****setrange****strlen****object****数值类型****二进制安全****getset****msetnx**bitmap**setbit****bitpos****bitcount****bitop****应用场景**list**lpush、lpop****rpush、rpop****lrange****lindex****lset***原创 2021-09-19 10:43:10 · 75 阅读 · 0 评论 -
redis的安装与NIO(一)
文章目录基础知识带宽和I/O两个基础设施数据库介绍redis安装redisredis与NIO文件描述符BIONIO基础知识带宽和I/O!>带宽和I/O限制了数据读取速度磁盘的寻址为ms级别,带宽为G/M级别。内存的寻址为ns级别,带宽很大,在寻址上比磁盘快了10万倍。磁盘由磁道和扇区组成。一扇区为512Byte,为了找到数据存放于哪个扇区,就会为每个扇区添加一个索引,所以这个索引是比较大的。对于操作系统来说,是以4K(实际取决于上层应用对数据的读取是否是I/O密集型,即单次对数据量访问较大时原创 2021-09-19 10:40:12 · 95 阅读 · 0 评论 -
HTTPS-生成CA证书
文章目录SSL/TLS加密算法对称加密非对称加密摘要算法数字签名证书生成以及自签名证书证书组成服务器端证书生成下载生成私钥生成CSR自建CANginx配置图形化工具证书生成SSL/TLSTLS(Transport Layer Security) 是 SSL(Secure Socket Layer) 的后续版本加密算法对称加密如AES、DES、3DES等,密钥只有一个为私钥非对称加密密钥分为公钥和私钥:明文通过公钥加密后得到密文,该密文可以通过私钥解密后得到明文;明文通过私钥加密后得到密文,原创 2021-09-19 10:34:13 · 257 阅读 · 0 评论 -
初识OAuth2.0与JWT
文章目录OAuth2.0应用场景SSO第三方登录授权类型其他Token携带方式浏览器APPToken安全防御微信授权实例OpenIDOpenID与OAuth2.0区别JWTJWT组成头部信息(header)消息体payload签名( signature)实例JWT工具类pom依赖Filter校验OAuth2.0OAuth 的核心就是向第三方应用颁发令牌,如在其他app上使用微信登录,那么该app就需要向微信获取此次登录的token,而是否能使用微信登录成功取决于app在微信是否经过认证以及用户是否授权原创 2021-09-19 10:28:32 · 164 阅读 · 0 评论 -
SpringSecurity入门
文章目录SpringSecureity基本使用自定义登录页面默认登录界面用户名密码登录成功跳转指定页面登录成功处理退出登录处理登录失败处理注销登录基于内存的用户名密码基于JDBC的用户名密码基于数据库查询用户名密码忽略静态请求最大登录用户数指定页面权限权限集成基于注解的权限用户信息上下文图形验证码密码安全性Spring Security防火墙ip白名单指定ip可以不登录禁止ip访问StrictHttpFirewallmethodURI分号斜杠反斜杠英文句号百分号SpringSecureity基本使用自定原创 2021-09-19 10:20:20 · 87 阅读 · 0 评论 -
MyBatisPlus
文章目录新建项目依赖jar包配置文件数据库配置文件日志配置文件MyBatis全局配置文件Spring配置文件Dao层接口实体类测试类代码生成器引入依赖jar包执行配置主方法个人博客[!note]MyBatis-Plus是国人基于MyBatis开发的一个MyBatis增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。以下内容将对Batis-Plus的部分配置以及注解进行说明,同时整合Spring给出示例。MyBatis-Plus官网新建项目项目目录如下:依赖原创 2020-11-28 17:43:06 · 110 阅读 · 0 评论 -
SSM整合
文章目录项目目录结构依赖jar包Spring配置文件SpringMVC配置文件MyBatis配置文件数据库配置文件测试个人博客[!Tip]Spring、SpringMVC、MyBatis的整合项目目录结构[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zcg1sbXe-1606471461058)(SSM%E6%95%B4%E5%90%88.assets/image-20201117164317436.png)]依赖jar包引入这三个框架的相关jar包。其实,原创 2020-11-28 17:49:09 · 130 阅读 · 0 评论 -
MyBatis的XML映射文件(二)
文章目录动态SQLifchoosetrimforeach缓存一级缓存二级缓存第三方缓存个人博客动态SQL[!note]动态 SQL 是 MyBatis 的强大特性之一。如果你使用过 JDBC 或其它类似的框架,你应该能理解根据不同条件拼接 SQL 语句有多痛苦,例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL,可以彻底摆脱这种痛苦。动态SQL的标签包含:ifchoose (when, otherwise)trim (where, set)原创 2020-11-27 17:59:35 · 516 阅读 · 0 评论 -
MyBatis插件-generator
文章目录个人博客[!tip|label:generator插件]MyBatis的github官方仓库提供了一款名为generator的插件,该插件可以根据数据库表来反向生成实体类、Dao接口以及映射文件。generator插件官网提供了四种反向生成的方式,我们这里使用第三种 MyBatis3Target Runtime Information and SamplesTarget RuntimeCommentsSample ConfigurationMyBatis3Dy原创 2020-11-27 18:00:38 · 209 阅读 · 0 评论 -
MyBatis入门
文章目录新建Maven项目数据库建表代码编写实体类Dao层接口XML映射文件数据库配置文件MyBatis配置文件日志配置文件测试代码MyBatis配置文件属性(properties)设置(settings)类型别名(typeAliases)类型处理器(typeHandlers)对象工厂(objectFactory)插件(plugins)环境配置(environments)事务管理器(transactionManager)数据源(dataSource)数据库厂商标识(databaseIdProvider)映射原创 2020-11-27 17:56:55 · 105 阅读 · 0 评论 -
MyBatis的XML映射文件(一)
文章目录顶级元素selectselect元素的所有属性insert、update和deletesql获取参数值sql获取多参数值resultType与resultMapresultTyperesultMapassociation属性collection属性分步骤查询懒加载个人博客[!note]以下内容介绍Mybatis的XML映射文件的配置顶级元素SQL 映射文件只有很少的几个顶级元素(按照应被定义的顺序列出):cache – 该命名空间的缓存配置。cache-ref – 引用其它命名空原创 2020-11-27 17:58:34 · 238 阅读 · 0 评论 -
重学Spring(三:IOC注解)
在开发中,目前来说大部公司都是用注解来代替xml的方式进行开发。所以,掌握好IoC注解是非常必要的。1、使用注解的方式注册bean到IOC容器中当使用注解的时候,可以在当前类的上面添加某些注解标识@Component: 组件,理论上可以在任意的类上进行添加,在扫描的时候都会完成bean的注册@Controller:放置在控制层,用来接收用户的请求@Service: 放置在业务逻辑层@Repository: 放置在数据访问层这四个注解写在类上面的时候都可以完成注册bean的功能,但是这些规定原创 2020-09-19 20:43:49 · 73 阅读 · 0 评论 -
重学Spring(四:AOP)
Spring框架中两大核心思想:IOC和AOP,在之前的文章中我大概阐述了以下IOC,那么这篇文章就来看看AOP。首先看看spring官网对于AOP的解释:???? Aspect-oriented Programming (AOP) complements Object-oriented Programming (OOP) by providing another way of thinking about program structure. The key unit of modularity in原创 2020-09-19 20:46:25 · 102 阅读 · 0 评论 -
重学Spring(二:IOC的XML配置)
接着上一期来继续学习IOC容器的xml配置:一、复杂类型的赋值<!--给数组赋值, 使用array标签--><!--<property name="hobbies" value="book,sport,movie"></property>--><property name="hobbies"> <array> <value>book</value> <va原创 2020-09-19 20:42:04 · 84 阅读 · 0 评论 -
重学Spring(一:IOC)
???? 之前对Spring的运用也就只停留在了会用的基础上,对于其中的一些概念性的东西以及更深层次的东西并没有去过多的去探究。这段时间准备系统性的再去学习一下Spring框架底层的一些东西。首先,还是从最基本的开始吧!关于Spring的一些基础性的东西,我在学习的过程中做了一张思维导图,以便于自己能理清楚其中的思路:↘️IoC由来这一期先从Spring的IOC容器来进行学习。其实IOC(Inversion of Control控制反转)思想并不是由在设计Spring框架时才提出的。早在1983年,R原创 2020-09-19 20:39:42 · 99 阅读 · 0 评论 -
SpringMVC-REST风格
文章目录REST风格SpringMVC配置Web容器配置实体类Dao接口Controllerjsp测试乱码问题自定义编码过滤器SpringMVC的编码过滤器测试多个对象传值原生Servlet对象获取请求参数@RequestParam@RequestHeader@CookieValue测试代码项目结构个人博客REST是一种架构风格,应用包括但不限于WEB开发,在WEB应用中表现为与HTTP协议息息相关。可以总的来说:RESTful API(具有REST风格的API): 用URL定位资源,用HTTP动词(原创 2020-11-27 17:47:05 · 95 阅读 · 0 评论 -
SpringMVC入门(二)
文章目录SpringMVC九大组件数据回显类型测试MapModalModalMapModelAndView转发与重定向转发重定向加载静态资源@ModelAttribute实体类Controllerjsp发出请求参数值绑定到模型返回值绑定到模型自定义类型转换器实现Convert接口springmvc配置index.jspcontroller测试自定义日期格式化转换器springmvc配置实体类index2.jspcontroller测试自定义视图解析器实现ViewResolver以及Order接口实现视图解析原创 2020-11-27 17:42:16 · 172 阅读 · 0 评论 -
SpringMVC入门(一)
文章目录MVC介绍SpringMVC介绍SpringMVC-基于XML配置导入依赖jar包SpringMVC配置视图jspWeb容器配置jar包导入控制器Controller配置tomcat并启动SpringMVC-基于注解@RequestMapping注解Web容器配置@PathVariable注解项目结构个人博客MVC介绍MVC是模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范。就是将业务逻辑、数据、显示分离的方法来组织代码。MVC主要作用是降低了视图原创 2020-11-27 17:45:40 · 164 阅读 · 0 评论 -
SpringMVC源码总结
文章目录个人博客Debug了SpringMVC源码后总结了如下流程图:SpringMVC完成一次请求的具体过程???? SpringMVC请求过程原创 2020-11-27 17:52:10 · 84 阅读 · 0 评论 -
SpringMVC进阶
文章目录@ResponseBody注解实体类controller测试通过Ajax向后台请求数据ajax.jspcontroller测试@RequestBody注解requestBody.jspsuccess.jspcontroller测试HttpEntity与ResponseEntityrequestEntity.jspcontroller测试文件下载controller测试文件上传依赖jar包springmvc配置文件upload.jspcontroller测试多文件上传SpringMVC拦截器实现Han原创 2020-11-27 17:48:11 · 102 阅读 · 0 评论