Java后端架构
尤小硕
这个作者很懒,什么都没留下…
展开
-
红黑树笔记
文章目录介绍二叉搜索树常用操作什么是红黑树红黑树的旋转红黑树的插入红黑树的删除附录介绍二叉搜索树常用操作最大关键字元素和最小关键字元素:通过从根开始沿着left孩子指针直到遇到一个NIL,我们总能在一棵二叉搜索树中找到一个元素,下面的过程返回了一个指向在以给定结点x为根的子树中的最小元素的指针,这里假设不为NILdef TREE-MINIMUM(x): while x.left != NIL: x = x.left return xTREE-MAXIMUM的伪代码是对原创 2020-10-06 15:50:45 · 115 阅读 · 0 评论 -
Spring缓存-redis应用
文章目录redis是什么Spring为什么要使用redisredis在Spring中的应用附录redis是什么redis是一种NoSQL数据库,其具备如下特性:1. 基于内存运行,性能高效;2. 支持分布式,理论上可无限扩展;3. key-value存储系统;4. 开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、key-value数据库,并提供多种语言的APISpring为什么要使用redis缓存热点数据,对热点数据进行排序等redis在Spring原创 2020-10-06 15:35:39 · 161 阅读 · 0 评论 -
Java并发-Alluxio Metrics实践
文章目录介绍Alluxio并发测试调试并发测试分析并发知识点总结归纳可重入锁与AQS附录介绍Alluxio中有很多并发性的代码,这些并发性的代码需要经过严整的测试,其中这些测试主要依赖于ScheduledTimer.java、HeartbeatScheduler.java、HeartbeatThread.java。上图中SleepingTimer类主要是用于Alluxio Metrics指标上报,用于控制指标周期性进行统计上报;ScheduledTimer类主要用于验证系统在高并发场景下的正确性原创 2020-09-19 15:45:39 · 391 阅读 · 0 评论 -
Java多线程实战——并发框架
文章目录并发架构任务执行并发的取消与关闭线程池的使用多线程应该避免的问题避免活跃性问题注意性能并发程序测试并发高阶应用显式锁Java内存模型附录并发架构任务执行为什么需要并发框架更快的响应、更高的吞吐率、更可靠的稳定性串行执行任务例如下面这个例子:/** * 串行的Web服务器: 因为此程序每次只能处理一个请求,所以其执行性能很糟糕 */public class SingleThreadWebServer { public static void main(String[] a原创 2020-09-19 15:42:37 · 924 阅读 · 0 评论 -
Java多线程实战——Java并发编程基础知识
文章目录背景什么是多线程、高并发、分布式为什么要引入多线程、高并发、分布式多线程、高并发有什么问题Java并发编程基础知识线程安全性对象的共享对象的组合基本同步方法附录背景什么是多线程、高并发、分布式多线程:从软件或硬件上实现多个线程并发执行来完成任务的一种方法;分布式:为了解决单个物理服务器性能瓶颈问题而采用的优化手段;高并发:系统运行的一种状态,即用来解决短时间内遇到大量操作请求为什么要引入多线程、高并发、分布式多线程:聚焦于如何使用编程语言将CPU调度能力最大化;分布式:从物理资源的角原创 2020-09-19 15:38:23 · 250 阅读 · 0 评论 -
Spring拦截器、过滤器、AOP
文章目录拦截器过滤器过滤器与拦截器对比Spring AOPSpring interceptor与AOP之间的区别与联系参考链接拦截器 什么是拦截器 Java里的拦截器是动态拦截Action调用的对象,它提供了一种机制可以使开发者在一个Action执行的前后执行一段代码,也可以在一个Action执行前阻止其执行,同时也提供了一种可以提取Action中可重用部分代码的方式。拦截器的拦截,是基于Java反射机制实现的,拦截的对象只能是实现了接口的类,而不能拦截url这种链接。 拦截器作用 当请原创 2020-07-05 15:28:01 · 597 阅读 · 0 评论 -
Java字符串处理性能对比
文章目录背景有哪些常用的字符串切割方法?每种字符串切割方法的使用使用正则表达式进行匹配JVM自带1:"".split()JVM自带2:indexOf()、substring()apache common工具类:StringUtils.split()guava工具类:Splitter.on().splitToList()背景在数据开发的过程中,涉及到日志内容处理的时候,往往需要用到一些字符串处理方法,在Java中除了JVM自带的字符串处理方式,其他的一些工具类(比如apache/common、guava等原创 2020-06-13 16:38:01 · 719 阅读 · 0 评论 -
JVM总结
文章目录写在前面主要内容Java内存区域与内存溢出异常说明Java虚拟机运行时数据区域写在前面写这篇读书笔记,是因为第一遍刷深入理解Java虚拟机的过程中,感觉其前后内容联系不大,再加上篇幅过长且部分内容拗口,所以就容易造成看了后面忘了前面,看了前面不知道看的内容在实际生产的过程中会有怎样的应用、可以解决什么样的问题。所以,本篇读书笔记主要从笔者的角度结合一些大佬的分析来进行总结。主要内容笔者第一遍刷的时候,主要看了以下章节的主要内容:Java内存区域与内存溢出异常垃圾收集器与内存分配策略虚原创 2020-05-12 22:49:59 · 222 阅读 · 0 评论 -
Netty笔记——综述
netty是什么?网络开发过程中(如上图),数据的传输分别需要经过网络五层。我们以Alluxio(一个开源的大数据加速项目)为例来进行说明:Alluxio运行在应用层,当Alluxio客户端向Alluxio服务端请求数据的时候,请求端和响应端都会有一个应用层和传输层进行通信的过程,这里着重描述一下传输层的处理。当有客户端与Alluxio服务端第一次进行通信的时候,Alluxio服务端会创建...原创 2020-01-30 17:02:12 · 146 阅读 · 0 评论 -
Redis客户端Jedis && Lettuce
redis Java客户端(jedis):->使用set(String key, String Value)将大量的key-value写入redis中,受限于网络IO,400万的数据需要2个小时写入;->hmset(String key, Map<String, String>)对于Java客户端来说能够很快的进行写入(对于vaid下的fields-values和oai...原创 2019-11-16 20:10:25 · 697 阅读 · 0 评论 -
心跳机制
心跳机制——>心跳机制: ->为什么要做心跳管理与上报(作用是什么?): ->长连接:通信上方建立TCP连接后进行通信,通信完毕后,不主动断开连接,而是保持连接; 特点:一直保持连接; 优点:通信速度块(在当前连接可用情况下,每次请求(响应)=简单的数据发送(接收)) 免去了DNS解析、连接建立等时间 应用...原创 2019-11-16 19:38:02 · 1285 阅读 · 0 评论 -
Effective Java笔记
——>第64条:努力使失败保持原子性: 一般而言,失败的方法调用应该使对象保持在被调用之前的状态。具有这种属性的方法被称为具有失败原子性(failure atomic) -> 最简单的办法就是设计一个不可变的对象(见第15条)。若对象是不可变的,失败 原子性就是显然的; -> 对于在可变对象上执行操作的方法:在执行操作之前检查参数的有效性(见第38条)。这可以使得在对...原创 2019-09-30 14:34:14 · 66 阅读 · 0 评论 -
java类加载: SPI机制及反射原理
SPI简介SPI:(Service Provider Interface, 是JDK内置的一种服务提供发现机制。SPI是一种动态替换发现的机制,比如有个接口,想运行时动态的给它添加实现,则只需要给它添加个实现,比如经常遇到的就是java.sql.Driver接口)主要是被框架的开发人员使用,比如java.sql.Driver接口,其他不同厂商可以针对统一接口做出不同的实现,mysql和post...原创 2019-09-14 10:14:16 · 1328 阅读 · 0 评论 -
Spring Boot创建定时任务(分布式HA)
为什么要创建定时任务? 在一个项目中,我们经常会遇到一个这样的场景:我需要定时的发送一条短信、邮件之类,也可能会定时的访问某些网页或检查和监控一些标志、参数等。Spring Boot中的定时任务是什么样的? 就是通过@EnableScheduling、@Scheduled等一系列注解和配置类来完成定时任务的编写。Spring Boot中如何编写定时任务?Spring Boot中使用@...原创 2019-09-14 15:08:06 · 1222 阅读 · 1 评论 -
JDK源码阅读笔记
win10安装jdk默认路径遇到的问题解决win10中的jdk默认安装路径中带有空格的问题(Program File ——> PROGRA~1)java.util.Collections: Collections.private static class CheckedMap<K, V> final Class<K> keyType; pri...原创 2019-09-14 16:01:38 · 229 阅读 · 0 评论 -
linux常用命令笔记(包含win10)
持续更新…linux(CentOs)常用命令rm -rf ./*jps -lmvkill -9 pid rpm(选项)参数: -a:查询所有套件; -b<完成阶段><套件档>+或-t <完成阶段><套件档>+:设置包装套件的完成阶段,并指定套件档的文件名称; -c:只列出组态配置文件,本参数需配合"-l"参数使用; -d:只...原创 2019-09-14 16:22:45 · 179 阅读 · 0 评论 -
git基本使用总结
git初始化配置</font前提是你已经安装完成了;下面就是配置公钥了 ssh-keygen -t rsa -C "[email protected]" ;ssh-add ~/.ssh/id_rsa ;查看刚生成的公钥cat ~/.ssh/id_rsa.pubgit提交代码规范git statusgit add . #可以通过git checkout <fileName...原创 2019-09-15 00:01:54 · 179 阅读 · 0 评论 -
缓存架构笔记
多级缓存系统->缓存概述: 缓存是分布式系统中的重要组件; 主要解决: 高并发(大数据场景中的热点数据访问的性能问题) ->缓存的原理: 将数据缓存到写入/读取速度更快的存储(设备); 将数据缓存到离应用最近的位置; 将数据缓存到离用户最近的位置。 ->缓存的分类:(从部署角度有以下几个方面的缓存应用) CDN缓存; ...原创 2019-09-15 10:41:52 · 125 阅读 · 0 评论 -
Java并发编程实战笔记
多线程简介 ->为什么要编写并发程序? 能使复杂的异步代码变得更简单(从而极大地简化了复杂系统的开发); 充分发多处理器系统的强大计算能力。 ->并发概述: ·操作系统的出现使得计算机每次能运行多个程序,并且不同的程序都在单独的进程中运行: 操作系统为各个独立执行的进程分配各种资源(内存、文件句柄、安全证书等) 进程之间的粗粒度通信...原创 2019-09-15 20:45:52 · 102 阅读 · 0 评论 -
Servlet中的Session
参考文献:https://www.jianshu.com/p/395bac076ea9https://www.cnblogs.com/whgk/p/6399262.htmlServlet中的Session:**概要:**Java Web中处理请求和发送响应的过程是由一种叫做Servlet的程序来完成的,并且Servlet是为了解决实现动态页面而衍生出来的技术(在此之前你可以了解一下浏览器从...原创 2019-03-24 12:51:42 · 3500 阅读 · 0 评论