自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java多态的实现原理

文章目录多态及多态的表现从字节码指令探究invokespecial的执行静态分派与重载动态分派与重写单分派与多分派虚拟机动态分派的实现总结参考资料多态及多态的表现在面向过程编程中,方法名是唯一的,调用方法即有唯一的行为,然而方法的调用并不等于方法的执行,然而OOP中引入的多态,可以让同一方法名有不同的的行为,比如说下图,都是调用“打印”这个指令,然而用不同的实体执行则会得到不同的效果。总...

2019-04-03 15:06:54 594

原创 数据库并发事务笔记及实验

文章目录事务并发一致性问题封锁封锁协议隔离级别:并发控制的主要技术有活锁死锁隔离级别实验(开启两个终端连接数据库)MVCC(Multi-Version Concurrency Control, 多版本并发控制)参考资料事务事务是并发控制的基本单位,具有ACID四个特性原子性(Atomicity):要么全部执行,要么全部失败回滚一致性(Consistency):数据库在事务执行前后保持一...

2019-03-28 16:03:39 1048

原创 Java多线程概述

文章目录前言多线程概述——多线程本质是什么?例子线程的本质线程的使用场景源代码参考资料在Java中,Thread类自身不执行任何操作,它只是驱动赋予它的任务——《Java编程思想》前言相信很多初学Java多线程的朋友,在学了各种Runnable、Thread、wait()/notifyAll()之后,虽然能看懂已经写过的多线程代码,但是当自己要用的时候却无从下手,不清楚到底是对象还是什么...

2019-03-06 14:50:48 313 1

原创 cosmic_python

文章目录DDD整体架构领域建模领域模型参考资料DDD整体架构领域建模领域模型领域:即你要解决的问题,核心需求。比如“购买一个商品”、“生产一个商品”等模型:对于某个过程或现象的抽象。比如说用“电压 = 电流 X 电阻”这个欧姆定律来描述电阻上的电流和电压的规律。一个领域模型包含:Entity、Value Object和Service。Entity和VO都是具体的业务对象。Entity(实体):具有特定‘标识’的对象,关注的是其标识,即使它的属性有所改变,它仍是原来的对象。Value

2020-09-19 13:10:38 354

原创 python线程池异常处理方案

文章目录背景方案设计ThreadPool类使用方法简单设计一个会抛出异常的函数最终方案背景随着数据量增多,业务中处理该类数据的模块需要从串行处理升级成多线程处理。原流程中只有部分流程需要多线程优化,而多线程的执行结果又为上层所需。需要并行化的流程中可能出现异常。选择的线程池为multiprocessing.pool.ThreadPool。方案设计ThreadPool类使用方法from multiprocesing.pool import ThreadPool# 创建一个线程池poo

2020-09-03 23:30:26 1687

原创 MySQL范围查询中next-key lock优化问题

文章目录背景实验(MySQL v8.0.11)表结构无优化的情况有优化的情况问题背景《MySQL45讲》里提到间隙锁(gap lock)与next-key lock的区别,并提到了索引上发生等值查询时,向右遍历时且最后⼀个值不满⾜等值条件的时候, next-key lock退化为间隙锁。另外也阐述了在不等号查询(范围查询)中会存在等值查询所引起的退化。然而在实测中发现相关实验出现了相互矛盾的...

2020-03-05 16:48:07 852 1

原创 【集合源码阅读】Vector V.S.ArrayList

文章目录简介基础与线程安全自动扩容modCount总结简介Vector与ArrayList是十分相似的两个类,阅读两者的代码发现从底层数据结构到操作逻辑上都基本相似,由于这个结构比较简单,这篇博客重点关注三个问题:线程安全,modCount,自动扩容。基础与线程安全两者的底层都是依靠数组存储数据(如下图,左Vector,右ArrayList), ArrayList中使用transient...

2019-08-17 12:39:24 199

原创 【JMeter压测实录】Connection reset

文章目录问题描述问题定位总结问题描述最近正在学习使用JMeter进行压测,在大并发量的时候出现了以下请求失败的问题WireShark抓包出现两种冒红的情况RST连接重置问题定位通过观察端口,目前看到两个地方发生连接重置- Redis连接重置(6379端口),会尝试增加redis 的最大连接数- Springboot应用连接重置,且都是由应用(服务器)发起总结先挖个坑,看...

2019-05-16 11:29:45 5174 5

原创 设计模式小记

文章目录策略模式模板方法模式观察者模式策略模式定义好算法抽象类Strategy,继承/实现该类可以有多个不同的实现类,在Context的上下文维护Strategy对象的引用,并可以调用对象的方法实例:JdbcTemplate相当于Context,维护着RowMapper对象,RowMapper就是相当于Strategy算法抽象类,定义了mapRow(ResultSet var1, int...

2019-04-28 14:01:21 116

原创 高并发网课的笔记(五)

文章目录CH11——高并发之扩容CH12——高并发之缓存CH11——高并发之扩容垂直扩容(会有极限点):提高系统部件性能水平扩容:服务器集群等数据库扩容:读操作扩展:memcache、redis、CDN等缓存写操作扩展:Hbase等CH12——高并发之缓存数据库负载过高时,考虑引入缓存,在以下四个环节中都可以考虑加缓存特征命中率(至关重要的直白哦):命中数/(命...

2019-03-29 23:25:44 132

原创 《计算机网络——自顶向下方法》笔记及HTTP抓包实验

应用程序体系结构:CS结构(很常见)和P2P结构(BitTorrent等等)在操作系统的术语中,进行通信的实际上是进程,一个进程可以被认为是运行在端系统中的一个程序在P2P文件共享系统中,一个进程的确既能上载文件又能下载文件。进程通过Socket通信,一个你哟功能开发者对于运输层的控制仅限于1.选择运输层协议 2.设定几个传输层参数Web和HTTP在JavaWeb中一个请求就新建一...

2019-03-29 21:55:18 1206

原创 数据库分库分表

文章目录什么是分表?为什么要分表?切分方式分表策略分表带来的问题什么是分表?为什么要分表?分表(Sharding)就是将一个数据库/表的数据切分到不同的数据库上。对于为什么要分表我的理解有两个原因:1. 数据表太大会影响query效率 2. 在分布式的场景下,如果多个请求打在不同的数据区域,可以避免单个数据库负载过高的情况。切分方式水平切分:将统一个表中的记录拆分到多个结构相同的表中,就...

2019-03-18 00:46:35 132

原创 MySQL索引与树总结、实验

文章目录用于查找的树结构(多路查找树)用于查找的树结构(多路查找树)2-3树–>2-3-4树–>B树–>B+树B树结构怎么就减少次数呢?啊

2019-03-14 15:45:04 227

原创 多线程使用情景(二)——改变共享资源状态的线程,锁的出现

文章目录临界资源线程写可能改变共享资源解决方法:使用synchronized关键字修饰方法或者修饰代码块例子临界资源操作系统课程中我们学到过可能有多个任务同时进入的资源叫临界资源,在实际中这些资源实体一般就会由类及其实例来表示,其状态由变量来决定。PS:这里开始牵扯到写复杂多线程的套路,多线程概述中已经提出了任务实体和线程实体,在这里开始引入资源实体,要想共享资源,要把实体传给线程持有。...

2019-03-06 16:07:31 186

原创 多线程使用情景(一)——多个独占资源的线程与只读不改

文章目录最简单的多线程多个独享资源的线程另一种情况:只读不改总结源代码最简单的多线程多个独享资源的线程最简单的利用多线程的情景就是有一些独占资源的任务,可以让多个线程同时去做,所谓独占资源就是每个线程的任务运行时所读写的变量或文件等资源都只有该线程会触碰到,比如说Java多线程概述中提到的搜索文件匹配字符串的问题,每次启动一个新的检查线程时,都会在赋给线程的任务中传入java文件的名字,由于...

2019-03-06 15:12:34 851

原创 Nginx入门使用

文章目录正文正向代理VS反向代理与负载均衡Nginx基本操作反向代理负载均衡session共享参考资料正文正向代理VS反向代理与负载均衡正向代理:一个专门在用户和某个网站中间做中介的服务器,比较常见的就是用户自己安装的VPN反向代理:反向代理隐藏了真实的服务端,通常是为网站服务的,比如网站有多个服务器(应用服务器、数据库服务器、文件服务器等等),则用户的访问会被代理,反向代理可以看作网...

2019-02-25 16:43:45 121

原创 数据类型转换小记

Java中有基本数据类型和引用数据类型两大类,两种类型各自有自己的转换规则基本数据类型种类:byte、short、int、char、float、long、double转换规则如下图所示(实线为合法转换,虚线为强制转换,强制转换有可能引起精度损失),可总结为:两个数值进行二元操作时,先要将两个操作数转换为同一类型(无论是强制的还是自动的) PS:赋值语句也是二元操作小的向大的转换是自动...

2019-02-07 23:20:46 139

原创 使用堆来查找数据流中的中位数

思想:维护一个最大堆和最小堆,最大堆来维护小于中位数的数字,最小堆用来维护大于中位数的数字,在遍历完所有数据后,两个堆中的顶端的元素肯定在整个数据流中最中间的位置,由此可得,思想跟快排中维护less和more思想是相似的,但是还需要注意维护两个边界条件:最大堆的最大值应小于最小堆的最小值最大堆和最小堆的“重量差”——即两个堆中的数字个数的差不能超过1,这个也是区别于快排,能够找到中位数的关键...

2019-02-06 21:26:38 489

原创 try catch finally 执行顺序总结

文章目录finally里面没有returnfinally中带有return总结今天刷牛客网的笔试题时,发现有一道异常处理的题目不太熟练,需要重新回顾总结,主要讨论try-catch-finally的执行顺序,假设读者已了解最基本的try-catch的写法finally里面没有returnpublic class ExceptionReturnTest { public static voi...

2019-02-03 23:56:28 297

原创 Java范型与类型擦除

文章目录作用范型方法范型类限定范型的范围类型通配符实现原理——类型擦除作用写好一个方法或者一个类,可以处理多种类型的数据,比如说排序算法,可以对String、Double和Integer都起作用范型方法语法:输入参数类型可以自定义名字(比如“E”),返回参数则是实例: public static < E > void printArray( E[] inputAr...

2019-02-02 22:43:19 191

原创 Java常用接口

Collection 和 Iterator 和 Iterable对于for(Type elem : Elems) {...}这种foreach的语法,能迭代两种数据类型,首先是最熟悉的数组,其次是实现了JavaSE5之后引入的Iterable接口的类Iterable接口:package java.lang;import java.util.Iterator;// 返回一个迭代器pu...

2019-02-01 15:59:51 971

原创 《大型网站技术架构》笔记(一)

《大型网站技术架构》笔记(一)以一个餐厅运营为例,应用程序相当于服务员、后台的相当于做菜的大厨。大型网站架构演化历程初始阶段的网站:典型的OA系统应用程序、数据库、文件一个应用服务器上典型方案:LAMP(Linux+Apache+MySQL+PHP)优点:部署简单,像快餐店一样,炒菜下单老板一个人搞定瓶颈:同一个电脑的CPU、内存要分给应用、文件和数据库,用户数量及数据增加时...

2019-01-23 16:41:48 138

原创 哈希表笔记

文章目录简介&背景为什么能达到O(1)的查找复杂度?哈希函数的构造方法常用方法哈希冲突及解决方法哈希表查找性能分析哈希表C语言实现(开放地址、线性检测法)参考资料简介&背景查找的本质是找到一直对象的地址,有两种方法:通过关键字比较(大小、相等): 二分查找、AVL树等等直接“算出”对象位置: Hash, 对象位置 = hash(关键字), 时间复杂度几乎是O(1)哈希表...

2018-12-16 23:23:52 247

原创 高并发网课的笔记(四)

CH09new Thread的弊端:每次new Thread新建对象, 性能差线程缺乏统一管理, 可能无限制的新建线程缺少更多功能, 如更多执行、定期执行、线程中断等ThreadPoolExecutorcorePoolSize: 核心线程数量, Core pool size is the minimum number of workers to keep alivemaxi...

2018-12-15 11:35:06 214

原创 高并发网课的笔记(三)

CH07AQS(AbstractQueuedSynchronized):提供了一种实现阻塞锁和一系列依赖FIFO等待队列的同步器的框架, 用于构建锁或者其他同步装置; JUC的核心;Sync queue: 同步队列, 双向链表, 竞争锁失败的线程被打包成Node加入这个队列Condition queue: 单向链表, 只有当使用Condition的时候才会用上, 且同一时刻可能有不止一...

2018-12-12 13:54:03 197

原创 高并发网课的笔记(二)

CH05对象发布:发布: 使一个对象能够被当前范围之外的代码所使用对象逸出: 当一个对象还没有构造完成就被其他线程所见安全发布对象的四种方法:在静态初始化函数中初始化一个对象引用将对象的引用保存到volatile类型域或者AtomicReference对象中将对象的引用保存到某个正确构造对象的final类型域中将对象的引用保存到一个由锁保护的域中懒汉式单例线程不安全...

2018-12-09 22:13:26 118

原创 高并发网课的笔记(一)

CH01并发:多个线程操作相同的资源,保证线程安全,合理使用资源高并发:服务能同时处理很多请求,提高程序性能CH02CPU中有多级缓存(CPU远比主存快),可保证是时间局部性和空间局部性多级缓存的缓存一致性(MESI):四个状态Modified: 被修改过的,需要在未来某个时刻重新写回主存,在这之间允许其他CPU读取Exclusive: 未被修改的,与主存状态一致Share...

2018-12-06 11:20:08 214 2

转载 怎样理解阻塞非阻塞与同步异步的区别?

原文链接:http://www.linuxidc.com/Linux/2015-07/120338.htm“阻塞”与"非阻塞"与"同步"与“异步"不能简单的从字面理解,提供一个从分布式系统角度的回答。1.同步与异步同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous communication)所谓同步,就是在发出一个调用时,在没...

2018-10-21 16:26:01 95

原创 设计模式——单例模式

简介保证一个类仅有一个实例(实例是否生成由类自身决定),病提供一个访问它的全局访问点。什么时候用?当一个类只需要产生一个实例时,就需要用到,比如说工具栏,窗体等等。组成public class Singleton { private static Singleton instance; //私有的静态变量,用于存储实例 private Singleton() { //构造器 }...

2018-10-13 00:21:16 66

原创 《区块链技术指南》笔记

分布式系统核心技术一致性问题对于多个服务节点,给定一系列操作,在约定协议的保障下,使得它们对处理结果达成“某种程度”的协同传统传统分布式系统中讨论一致性,往往是指在外部任意发起请求( 如向多个节点发送不同请求) 的情况下,确保系统内大部分节点实际处理请求序列的一致,即对请求进行全局排序实际挑战:节点间网络通信不完全可靠节点处理请求的时间无法保障同步调用课简化操作,但扩展性低,拉低...

2018-10-09 17:19:01 261

原创 《拜占庭系统技术研究综述_范捷》笔记

《拜占庭系统技术研究综述_范捷》笔记文献信息:清华大学,期刊,2013,范捷Abstract分析了目前拜占庭系统的研究现状,并探讨了拜占庭系统的发展趋势Conclusion成果涌现,但性能上仍然与已经使用的非拜占庭系统相距较大,占用资源数量仍然较多拜占庭系统本身在长时间应用后可能会由于错误的鸡肋导致系统崩溃,仍需要新的思路与方法来有效延长系统的可持续运行时间BFT至少需要3...

2018-10-08 18:31:19 369

原创 HyperLedger Composer使用笔记(一)

简介使用过原生HyperLedger Fabric的都知道需要通过命令行和各种shell脚本才能建立起一个联盟链(包括crytogen生成身份验证,用yaml部署Orderer节点和Peer节点,安装并实例化chaincode等),HyperLedger Composer 是一个基于HyperLedger Fabric的项目,目的在于快速搭建联盟链应用,并结合Angular、Javascrip...

2018-09-28 13:18:14 1286

空空如也

空空如也

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

TA关注的人

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