- 博客(158)
- 收藏
- 关注
原创 性能优化的大致策略
在Linux中,进程分为三种状态,一种是阻塞的进程blocked process(等待I/O设备的数据或者系统调),一种是可运行的进程runnable process,另外就是正在运行的进程running process。进程可运行状态时,它处在一个运行队列run queue中,与其他可运行进程争夺CPU时间。系统的load是指正在运行和准备好运行的进程的总数。在多核处理中,你的负载均值不应该高于处理器核心的总数量。
2023-05-17 18:30:06 3047 1
原创 组件构建原则
如果说SOLID原则是用于指导我们如何将砖块砌成墙与房间的,那么组件构建原则就是用来指导我们如何将这些房间组合成房子的。我的理解是,好的组件应该保持其能够独立开发、测试和部署。
2022-12-14 17:19:49 1227
原创 SOLID设计原则
所有引用基类的地方必须能透明地使用其子类的对象。如果想要设计一个灵活的系统,在源代码层次的依赖关系中就应该多引用抽象类型,而非具体实现,从依赖具体实现转向到依赖抽象接口。不同的操作隔离成接口,任何层次的软件设计如果依赖了他并不需要的东西,都会带来依赖之外的麻烦,ISP 提倡不要将一个大而全的接口扔给使用者,而是将每个使用者关注的接口进行隔离。反例是一个类的三个方法给三个部门提供服务,而这三个方法有一些公共子方法,很有可能因为A部门的代码变更改动,导致B、C部门调用的方法出现意料之外的结果。
2022-12-09 17:36:38 1545
原创 Spring Security权限管理原理
授权是更具系统提前设置好的规则,给用户分配可以访问某一资源的权限,用户根据自己所具有的权限,去执行相应的操作,spring security提供的权限管理功能主要有两种: 基于过滤器的权限管理功能(FilterSecurityInterceptor) 基于AOP的权限管理功能(MethodSecurityInterceptor)
2022-11-29 15:59:06 2413
原创 Spring Security 过滤器链基础组件
Spring Security中的所有功能都是通过过滤器来实现的,这些过滤器组成一个完整的过滤器链。
2022-08-09 14:39:20 2098
原创 spring security 认证简介
spring security的核心功能:认证和授权,认证就是身份验证(你是谁?),授权就是访问控制(你可以做什么?),同时他还提供很多安全管理的周边功能。在Spring Security的架构设计中,认证(Authentication)和授权(Authorization)是分开的,本篇文章主要涉及认证相关的功能和原理介绍。...............
2022-08-05 11:17:59 1726
原创 JVM常用参数
XmnXmsXmxXss有什么区别Xmn、Xms、Xmx、Xss都是JVM对内存的配置参数,我们可以根据不同需要区修改这些参数,以达到运行程序的最好效果。-Xms 堆内存的最小大小,默认为物理内存的1/64-Xmx 堆内存的最大大小,默认为物理内存的1/4-Xmn 堆内新生代的大小。通过这个值也可以得到老生代的大小:-Xmx减去-Xmn-Xss 设置每个线程可使用的内存大小,即栈的大小。在相同物理内存下,减小这个值能生成更多的线程,当然操作系统对一个进程内的线程数还是有限制的,不能无限生
2022-06-22 16:07:29 1596
原创 Nacos配置中心
1.简介配置中心主要是通过将配置集中管理,来解决配置文件过于分散的问题,通过配置与应用分离,以及实时更新功能,可以极大的减轻运维部署成本。配置中心主要是基于Nacos来实现和落地。2.架构...
2021-09-09 16:09:02 448
转载 理解 Deffie-Hellman 密钥交换算法
转自:http://wsfdl.com/algorithm/2016/02/04/%E7%90%86%E8%A7%A3Diffie-Hellman%E5%AF%86%E9%92%A5%E4%BA%A4%E6%8D%A2%E7%AE%97%E6%B3%95.htmlDeffie-Hellman 算法简介Deffie-Hellman(简称 DH) 密钥交换是最早的密钥交换算法之一,它使得通信的双方能在非安全的信道中安全的交换密钥,用于加密后续的通信消息。 Whitfield Diffie 和..
2020-07-28 16:04:28 557
转载 语法[ASN.1]、规范[PKCS、X.509]、编码[DER、PEM]之间的关系
转自:https://blog.csdn.net/ttyy1112/article/details/107064407本节将介绍ASN.1,PKCS, X.509, DER, PEM等概念以及他们之间的关系。然后对密钥文件或证书文件的后缀做一些简单的介绍。1. ASN.1 - Abstract Syntax Notation One In telecommunications and computer networking, Abstract Syntax Notation One (A...
2020-07-22 13:27:15 4559 1
转载 HashMap中的hash方法
转自:JDK 源码中 HashMap 的 hash 方法原理是什么? - 胖君的回答 - 知乎 https://www.zhihu.com/question/20733617/answer/111577937<div class="RichContent-inner"><span class="RichText ztext CopyrightRichText-richText" itemprop="text">这段代码叫“<b>扰动函数</b>”。&.
2020-07-06 14:03:05 1010
转载 Object类中的hashcode方法
转自:https://mp.weixin.qq.com/s/qjEEU7nWo3xJXLjo_apjww引言这两天有个学弟问过我这个问题:对象的hashCode 到底是怎么实现的?在深挖之前,我可能只能说:如果没有被重载,代表的是对象的地址通过某种 hash 算法计算后在 hash 表中的位置。回答后,仔细一想,不对呀,这个 hash 值具体是怎么计算的,我终究还是没有答到点上,而是绕开话题,回答了含义。脑壳一热,忽然想起去年虐我的阿里面试题,hashCode 是怎么得到的呢?一、..
2020-07-02 13:21:59 2888
转载 我们为什么要分库分表
转自:https://baijiahao.baidu.com/s?id=1627688882923429891&wfr=spider&for=pc1. 单个数据库读写瓶颈当一张表的数据达到几千万时,查询一次所花的时间会变长。这时候,如果有联合查询的话,可能会卡死在那儿,甚至把系统给拖垮。而分库分表的目的就在于此:减小数据库的负担,提高数据库的效率,缩短查询时间。另外,因为分库分表这种改造是可控的,底层还是基于RDBMS,因此整个数据库的运维体系以及相关基础设施都是可重用的。.
2020-06-18 13:52:17 454
原创 wait、notify、sleep、interrupt对比分析
方法简述Thread类sleep:暂停当前正在执行的线程;(类方法) yield:放弃当前CPU资源,让其他任务去占用CPU执行时间,放弃的时间不确定,有可能刚刚放弃,马上又获得CPU时间片。(类方法) join:等待该线程终止; interrupt:仅仅是在当前线程上做一个停止的标记,并不会真正的停止线程,与interrupted()静态方法或isInterrupted()实例方法配合使用,达到中断线程的目的。当线程调用wait(),sleep(),join()或I/O操作时,将收到Inte
2020-06-10 10:02:43 782
原创 线程池
文章目录1. 引言2. 线程组3. 可靠性:线程的未捕获异常与监控4. 线程工厂5. 线程的高效利用:线程池5.1 线程池简述5.2 RejectedExecutionHandler5.3 多余线程生存时间5.4 关闭线程池5.5 异步任务的处理与返回1. 引言线程组相比于线程,重点会从如何利用线程“做到”我们想做的事情,转变为“如何做的更好”,主要问题包括:线程运行过程中一旦抛出未捕获异常我们如何得知并应对的可靠性问题;如何提高线程利用率;如何将这些线程统一管理,从“散兵游勇”提升为“正规军”。2.
2020-06-03 09:12:35 324
转载 MySQL索引原理
转自:https://blog.csdn.net/u013235478/article/details/50625677B+树索引是B+树在数据库中的一种实现,是最常见也是数据库中使用最为频繁的一种索引。B+树中的B代表平衡(balance),而不是二叉(binary),因为B+树是从最早的平衡二叉树演化而来的。在讲B+树之前必须先了解二叉查找树、平衡二叉树(AVLTree)和平衡多路查...
2020-03-26 14:49:33 172
原创 Reactor与NIO底层原理及上层实现原理
一篇文章读懂阻塞,非阻塞,同步,异步https://www.jianshu.com/p/b8203d46895cIO多路复用的三种机制Select,Poll,Epollhttps://www.jianshu.com/p/397449cadc9aJava NIO、Reactor、Nettyhttps://blog.csdn.net/ZXW601498616/article/det...
2020-02-28 17:54:21 707
原创 多线程有序性的保证——synchronized及锁的优化
文章目录1. 引言2. synchronized同步基础3. Java对象头4. 锁的升级与对比4.1 偏向锁4.1.1 偏向锁的撤销4.2 轻量级锁和重量级锁4.2.1 轻量级锁加锁4.2.2 轻量级锁解锁5. 锁优缺点总结1. 引言实现“顺序性”的主要方式就是加锁,synchronized与多种锁,此次内容主要讲讲synchronized在jdk1.6以后做的一些锁优化。2. synch...
2020-02-15 16:24:30 592
转载 springboot线程池的使用和扩展
转自:https://blog.csdn.net/boling_cavalry/article/details/79120268创建Service层的接口和实现创建一个service层的接口AsyncService,如下:public interface AsyncService { /** * 执行异步任务 */ void execute...
2020-02-13 16:22:45 187
原创 多线程“可见性”保证——volatile的应用
文章目录1. 引言2. CPU缓存行2.1 CPU常用术语2.2 详解CPU缓存行2.3 缓存行的带来的好处2.4 缓存行带来的问题1. 引言volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见行”,可见性的意思是,当一个线程修改一个共享变量,另一个线程能读到这个修改的值。如果volatile变量修饰符使用恰当的话,它比synchronized的使用和执...
2020-02-12 18:15:20 335
转载 线程池和直接创建线程的简单性能对比
转自https://blog.csdn.net/u014104286/article/details/71775038都说线程池的性能比直接创建线程(新学了一个词,叫野线程????)性能要高,简单的做了个实验,未必准确仅供参考,先上结论实验平台mac系统,8代i7处理器,16G内存,十万次创建线程,差距是50倍以上。通过线程池创建:package concurrent.perfo...
2020-01-31 12:37:53 842
转载 CPU上下文切换原理
转自:https://blog.csdn.net/weixin_34365417/article/details/88699553我们都知道,Linux 是一个多任务操作系统,它支持远大于 CPU 数量的任务同时运行。当然,这些任务实际上并不是真的在同时运行,而是因为系统在很短的时间内,将 CPU 轮流分配给它们,造成多任务同时运行的错觉。而在每个任务运行前,CPU 都需要知道任务从...
2019-12-24 09:54:46 558
转载 TCP滑动窗口
原文链接:https://blog.csdn.net/yao5hed/article/details/81046945概述滑动窗口实现了TCP流控制。首先明确滑动窗口的范畴:TCP是双工的协议,会话的双方都可以同时接收和发送数据。TCP会话的双方都各自维护一个发送窗口和一个接收窗口。各自的接收窗口大小取决于应用、系统、硬件的限制(TCP传输速率不能大于应用的数据处理速率)。各自的发送...
2019-12-17 14:44:17 167
原创 curl发送http请求
curl -H "Content-Type:application/json" -H "Data_Type:msg" -X POST --data '{json}' http://ip/service需要注意的是:–data(即-d)指定的参数必须符合json格式-H 指定headers头的时候必须单个使用,即一个-H指定一个头字段信息,如上crul示例那样。...
2019-12-09 19:04:11 444
转载 面向对象设计7大原则
转自:https://www.cnblogs.com/sunflower627/p/4718702.html1. 单一职责原则(Single Responsibility Principle)每一个类应该专注于做一件事情。2. 里氏替换原则(Liskov Substitution Principle)超类存在的地方,子类是可以替换的。3. 依赖倒置原则(Dependenc...
2019-11-29 10:13:12 355
转载 详解队列Queue
文章目录1. 引言2. 阻塞队列与非阻塞队列3. 子类简述3.1 未实现阻塞接口的3.2 实现阻塞接口的4. 基本操作方法5. PriorityQueue5.1 简介1. 引言Queue: 基本上,一个队列就是一个先入先出(FIFO)的数据结构,优先队列除外其更具comparator或者comparable实现进行比较。Queue接口与List、Set同一级别,都是继承了Collection...
2019-11-28 09:53:45 757
转载 Java 位运算符
转自:https://blog.csdn.net/mxiaoyem/article/details/78569782https://blog.csdn.net/qq_35402412/article/details/81156020java按位运算符(操作符) 最近在看源码时,发现一些java基础有些记不清了。今天来回忆,整理一下 按位运算符是来操作...
2019-11-27 17:45:54 157
转载 Spring Boot 生命周期管理
转自https://www.jianshu.com/p/8e2d400492c7Bean的生命周期过程描述我们先看一下Bean的生命周期过程中都会经历些什么,我先简单解释一下,后面我们通过源码进行详细解释。首先Spring在实例化Bean的时候,会先调用它的构造函数,进行Bean的实例化,然后进行Bean的初始化,Bean的初始化经过三个阶段初始化之前(applyBeanPostPr...
2019-11-27 10:25:18 4434
转载 Spring boot集成rabbit mq进行消息发送和接受以及消息确认demo
转自https://blog.csdn.net/yangliuhbhd/article/details/79936085#commentBoximport org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.amqp.core.*;import org.springframework.amqp...
2019-11-27 09:23:44 189
转载 mybatis打印查询sql
转自:原文链接:https://blog.csdn.net/qq_22194659/article/details/81120712有时候从前端传参数到后端查数据库的时候不是很清楚的知道哪些参数能起作用,这个时候就需要简便的sql语句让你知道数据查询的过程中的参数,SQL语句了。第一种方式用mybatis集成的方式,在你的application.yml文件下面加入下面这段代码...
2019-11-22 14:34:44 1264
原创 RabbitMQ基础
文章目录1. 引言2. 启动服务3. 相关概念3.1 整体模型3.2 生产者和消费者3.3 队列3.4 绑定键、路由键、交换器3.4.1 绑定键3.4.2 路由键3.4.3 交换器类型4. RabbitMQ运转流程4.1 生产者发送消息4.2 消费者接收消息的过程:1. 引言rabbit mq常用基础概念知识2. 启动服务# 后台运行,服务默认端口号5672rabbitmq-server...
2019-11-06 09:22:49 185
原创 Java基础 异步任务与Executor框架
文章目录1. 引言2. Java Executor框架2.1 Runnable、Callable接口2.2 Executor接口2.3 ExecutorService接口2.4 Executors实用工具类1. 引言同步任务的发起和执行是在同一条时间线上进行的,往往以为的阻塞,而异步任务的发起和执行在不同的时间线上。但是阻塞/非阻塞与同步/异步执行方式并没有完全的对应关系,同步/异步的说法也是...
2019-10-30 20:14:23 589
转载 Java中的sleep与wait区别
转自:https://java2blog.com/difference-between-sleep-and-wait-in/https://blog.csdn.net/kangkanglou/article/details/82221301sleep让当前线程休眠指定时间。 休眠时间的准确性依赖于系统时钟和CPU调度机制。 不释放已获取的锁资源,如果sleep方法在同步上下文中...
2019-10-14 16:46:00 146
原创 JVM常用参数
文章目录1. 引言2. 查询3. 内存设置4. 垃圾收集设置4.1 ParNew(新生代垃圾收集器)1. 引言VM使用的一些常用参数,方便随时查询使用2. 查询#VM详细设置参数java -XX:+PrintFlagsFinal -version #VM简要设置参数java -XX:+PrintCommandLineFlags -version#GC详细信息java -XX:+P...
2019-10-13 21:45:49 322
原创 通过jvisual VM连接远程服务器
1. 通过JMX连接(不支持Visaul GC插件)以一个机遇SpringBoot项目的的打包编译好的jar文件为例,文件名为demo.jarnohup java-Djava.rmi.server.hostname=ipAddress #ip地址-Dcom.sun.management.jmxremote-Dcom.sun.management.jmxremote.port=10...
2019-10-11 18:29:23 1115
原创 JVM垃圾回收
文章目录1. 引言2. 判断对象是否存活的依据2.1 引用计数法2.2 可达性分析算法3. 引用类型4. 垃圾收集算法4.1 标记——清除(Mark-Sweep)算法4.2 复制算法(新生代)4.3 标记——整理算法(老年代)4.4 分代收集算法5. 垃圾收集器1. 引言垃圾收集器主要关注的是堆和方法区中的垃圾收集。2. 判断对象是否存活的依据2.1 引用计数法其方法是给对象添加一个引用...
2019-10-10 20:10:04 340
转载 Spring Pointcut 切面表达式
转自:https://www.jianshu.com/p/fbbdebf200c9Wildcard*: 匹配任意数量的字符 +:匹配制定数量的类及其子类 ..:一般用于匹配任意数量的子包或参数详细示例见后面的例子Operators&&:与操作符 ||:或操作符 !:非操作符Designators1. within()//匹配productSe...
2019-09-25 09:49:57 362
原创 Java基础 流
文章目录1. 引言2. 输出流3. 输入流1. 引言Java的I/O建立与流(stream)之上,输入流读取字节,输出流写入字节。过滤器(filter)流可以串联到输入/出流上,可以用于加密、压缩或只是提供额外到方法。阅读器(reader)和书写器(writer)可以串联到输入/出流上,允许程序读/写文本(即字符)而不是字节。流是同步的,即某一时刻读/写字节会阻塞其他操作,Java还支持使用...
2019-09-03 20:36:01 371
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人