mycat

类加载器命名空间实战剖析与透彻理解

浪尽此生 提交于 2020-07-28 18:58:28
基于上一次【 https://www.cnblogs.com/webor2006/p/9129149.html 】的程序进一步进行修改: 编译运行: 此时咱们在设置的桌面路径中将MySample.class、MyCat.class文件拷进来,如下: 此时再次运行: 依然是由系统类加载器来加载,也很好理解,还是由于工程当中已经有了该字节码文件了,好,接下来将工程中的MySample.class和MyCat.class两个字节码文件删除掉: 再次运行: 原因也如以前学习所分析的,因为系统类加载器加载不了最终就交由咱们自己的类加载器来加载了,也就是MySample里面关联的MyCat类也会由咱们自定义的类加载器所加载,比较好理解,接下来继续看,重新编译,此时MySample.class和MyCat.class文件都存在于工程当中了,下面只删除MyCat.class: 但是不要忘了桌面上这两个Class文件都有,那此时结果又会如何呢? 下面分析一下原因: 那关键就在于它是由哪个类加载器去加载,这里需要明白:它是由加载了MySample的类加载器去加载的,也就是系统类加载器,很显然是加载不了的,因为MyCat.class从工程中被删除了。 好接着再编译重新生成MySample.class和MyCat.class,这次反过来,只删除MySamle.class,而保留MyCat.class,如下

测试需要掌握哪些技能

|▌冷眼眸甩不掉的悲伤 提交于 2020-07-24 07:51:51
把自己工作中接触到的和非接触的到的知识罗列一下。 开发能力:JAVA(集合,泛型,基础知识,调试,代码阅读),JavaScript/CSS/HTML(基础知识,能结合知识实现项目),Python(基础知识); 框架:Spring Boot,Spring MVC;Vuejs; 开发成果:可以单独开发JAVAWEB后台系统,前端项目;管理系统; 兴趣爱好:机器学习(理解常用的机器学习知识与算法原理,以及简单机器学习实现); 计算机网络知识:TCP/IP协议(HTTP,DNS); 操作系统:LINUX服务器常用指令,服务器硬件指标分析,shell编程基础; 中间件:TOMCAT,NGINX(负载均衡,结合keepalive高可用架构),Mycat(分表分库),Redis,Zookeeper; 数据库:Oracle/MySQL,复杂查询; 测试工具:JMeter,Postman等;版本管理:GIT,SVN; 调度工具:JENKINS(理解); 大数据:Hadoop(理解架构),Hive; 以上知识,都是工作中接触到的并且运用到的,当然测试工作中有些可能不需要精通掌握,只仅限于“使用”。 那么,信盈达的软件测试课程都学哪些内容?又有何优势? 信盈达测试课程5大模块 信盈达软件测试课程分为五大课程模块,分别是功能测试、软件测试综合技术、QTP/UFT 自动化测试、LoadRunner

如果就以平时项目经验来面试,通过估计很难,再论面试前的准备

空扰寡人 提交于 2020-05-09 16:22:56
1、框架是重点,但别让人感觉你只会山寨别人的代码   在面试前,我会阅读简历以查看候选人在框架方面的项目经验,在候选人的项目介绍的环节,我也会着重关注候选人最近的框架经验,目前比较热门的是SSM。  不过,一般工作在5年内的候选人,大多仅仅是能“山寨”别人的代码,也就是说能在现有框架的基础上,照着别人写的流程,扩展出新的功能模块。比如要写个股票挂单的功能模块,是会模仿现有的下单流程,然后从前端到后端再到数据库,依样画葫芦写一遍,最多把功能相关的代码点改掉。   其实我们每个人都这样过来的,但在面试时,如果你仅仅表现出这样的能力,就和大多数人的水平差不多了,在这点就没法体现出你的优势了。   我们知道,如果 单纯使用SSM框架,大多数项目都会有痛点。比如 数据库性能差,或者业务模块比较复杂,并发量比较高,用Spring MVC里的Controller无法满足跳转的需求。所以我一般还会主动问:你除了依照现有框架写业务代码时,还做了哪些改动?    我听到的回答有:增加了Redis缓存,以避免频繁调用一些不变的数据。或者,在MyBitas的xml里,select语句where条件有isnull,即这个值有就增加一个where条件,对此,对任何一个where增加一个不带isnull的查询条件,以免该语句当传入参数都是null时,做全表扫描。或者,干脆说,后端异步返回的数据量很大,时间很长

全网最全的分库分表方案

让人想犯罪 __ 提交于 2020-05-09 11:25:07
一、数据库瓶颈 不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Service来看就是,可用数据库连接少甚至无连接可用。接下来就可以想象了吧(并发量、吞吐量、崩溃)。 1、IO瓶颈 第一种:磁盘读IO瓶颈,热点数据太多,数据库缓存放不下,每次查询时会产生大量的IO,降低查询速度 -> 分库和垂直分表。 第二种:网络IO瓶颈,请求的数据太多,网络带宽不够 -> 分库。 2、CPU瓶颈 第一种:SQL问题,如SQL中包含join,group by,order by,非索引字段条件查询等,增加CPU运算的操作 -> SQL优化,建立合适的索引,在业务Service层进行业务计算。 第二种:单表数据量太大,查询时扫描的行太多,SQL效率低,CPU率先出现瓶颈 -> 水平分表。 二、分库分表 1、水平分库 概念: 以字段为依据,按照一定策略(hash、range等),将一个库中的数据拆分到多个库中。 结果: 每个库的结构都一样; 每个库的数据都不一样,没有交集; 所有库的并集是全量数据; 场景: 系统绝对并发量上来了,分表难以根本上解决问题,并且还没有明显的业务归属来垂直分库。 分析: 库多了,io和cpu的压力自然可以成倍缓解。 2、水平分表 概念: 以字段为依据,按照一定策略(hash、range等)

怎样写好一篇高质量的技术文章?

ε祈祈猫儿з 提交于 2020-05-06 20:14:34
怎样写好一篇高质量的技术文章? 培根说“读史使人明智,读诗使人聪慧,学习数学使人精密,物理学使人深刻,伦理学使人高尚,逻辑修辞使人善辩。” 核心心法 就是 起心动念利他,一切方法自来。 先来问自己几个问题 比如每天写文章之间,先来问自己几个问题。 1、我写这篇文章的目的是什么? 2、我能给读者带来什么好处? 3、我如何安排文章结构,让读者快速获得好处? 问完这几个问题,一篇文章就很快构思好了。 因此,你想每天写出高质量的文章,你就问自己这个问题。 我的这篇文章能给别人带来什么好处? 也许有人会问,我凭什么每天要写一篇利他的原创文章,对我有什么好处? 如果你有这样的疑问,那就分享两个原则给你。 原则一:一个人的影响力不是由他的财富决定,也不是由他的智力决定,而是由他能帮助多少人决定。 也就是说,你能帮助的人越多,你的影响力越大,你的能量就越强。 原则二:成功的关键在于提高你的能量。当你的能量提高了,别人就被你吸引。一旦他们慕名前来,你就要他们付钱。 因此,要想赚钱,你首先得值钱,怎么体现你值钱呢?那就是看你能帮助多少人,你帮他解决的问题有多重要。每天写一篇高质量的文章,每天都增强自己帮助别人的能力,看似在帮助别人,实则是在帮助自己。 习惯养成:每天都阅读 心法已经说完,现在来说一个习惯。 每天写一篇高质量文章的习惯:每天都阅读 。 如果把每天写作的你看成一头奶牛

mysql技能梳理

此生再无相见时 提交于 2020-05-05 11:28:59
事务 不管是什么数据库,事务都是要考虑的。 一般情况下开发注重的是隔离性,如幻读,脏读,不可重复读。然后就是MySQL是怎么实现的。 知道事务的基本概念,那么就该知道数据库锁是什么个意思,然后有些时候死锁,数据库的卡顿,长时间没有响应都是因什么而起 索引和查询 MySQL 设计思想是”如果内存够,就要多利用内存,尽量减少磁盘访问“,而B+树就是能拥有高效查询减少磁盘访问次数的存储结构。基本上纵观MySQL的知识点,基本上都是遵循这个思想。 索引的结构 学习索引,要知道索引是什么样子的结构,为啥用B+,不用数组,不用哈希表,不用二叉树。一是为了减少io操作,二是结构不行,哈希只适合等值,数组插入性能不行,不过用来做静态存储还是可以的。 键 主键: 叶子节点存的是整行的数据。 非主键:叶子节点存的是主键的值 明白了键的存储方式后,查询的时候有一项优化叫 覆盖索引 ,目的就是避免 回表 ,实际操作是 联合索引 ,使用 联合索引 就要知道 最左匹配原则 ,然后就是知道在查询时,多条件的时候,怎么使用索引的 索引的创建和维护 创建时需要考量的有索引的长度,索引的使用场景,如果是联合索引还需要考虑怎么利用最左匹配原则来少创建索引 需要考虑长度的一般都是字符串索引,太长的是创建不了的。如果太长了也需要创建,可以考虑指给前缀创建索引,如果字符串类似身份证号似的,前缀都差不多一样,就需要换个思路

分库分表怎样分?

[亡魂溺海] 提交于 2020-05-04 02:16:25
数据库的数据量达到一定程度之后,为避免带来系统性能上的瓶颈,需要进行数据的处理,采用的手段是分区、分片、分库、分表。 1)分库 业务拆分 - 如顾客,商品,订单各自分独立的库 主备 - 主机做读写,备机只做数据备份 主从(读写分离) - 主机写,从机读 主主 - 任意一台机做写,互相复制 集群 - 一主多备、一主多从、多主多从,主机写,所有机都可以读 1)分片(类似分库) 分片是把数据库横向扩展(Scale Out)到多个物理节点上的一种有效的方式,其主要目的是为突破单节点数据库服务器的 I/O 能力限制,解决数据库扩展性问题。 Shard这个词的意思是“碎片”。 如果将一个数据库当作一块大玻璃,将这块玻璃打碎,那么每一小块都称为数据库的碎片(DatabaseShard)。 将整个数据库打碎的过程就叫做分片,可以翻译为分片。 形式上,分片可以简单定义为将大数据库分布到多个物理节点上的一个分区方案。每一个分区包含数据库的某一部分,称为一个片,分区方式可以是任意的,并不局限于传统的水平分区和垂直分区。 一个分片可以包含多个表的内容甚至可以包含多个数据库实例中的内容。每个分片被放置在一个数据库服务器上。 一个数据库服务器可以处理一个或多个分片的数据。 系统中需要有服务器进行查询路由转发,负责将查询转发到包含该查询所访问数据的分片或分片集合节点上去执行。 2)分表

数据性能改善——分库分表中间件

我只是一个虾纸丫 提交于 2020-05-02 05:16:00
一、前言 学习读写分离,这里记录下自己学习的路程,你读过之后对技术的认知可能不会有太多的提高,但是能看到我成长的轨迹。(只记录难点、重点知识点,以及方向的选择、自己的心境) 读写分离指的是将数据库分为主从库,一个主库用于写数据,多个从库用来读数据,主从库之间通过某种机制进行数据间的同步。目前多数互联网业务的数据,读多写少,为了线性提升数据库读性能,减少读写锁的冲突而提高写性能,便有了读写分离的做法。但是不是任何情况都需要数据的读写分离,比如,一个订单系统,订单表里的数据量非常庞大,那么这种情况,该做的是对表进行水平切分,原来表里的2000w数据,拆分成4个表,每个表里500w,这样单表操作的压力就少了很多。因此,我们为了解决数据库架构问题时,一定要先分析数据库性能瓶颈是什么,再去想解决方法。 二、技术选型 选型这里,首先要前期调查。查询多方资料,分析优缺点,弄个小demo出来,然后选定。 我呢,选择了Mycat和jdbc-sharding,两者进行调查,先去了官网,Mycat的官网有些随意,而jdbc-sharding官网更加正规(起码看起来是这样的),而且还加入了Apache 孵化器。此外,我还比对了git上两者的情况,查看了jdbc-sharding更新的频率和issue解决的数量、及时解决的程度等,认为jdbc-sharding更适合入手。 因为我没实际做过分库分表

《C++ Primer Plus》读书笔记之九—使用类

雨燕双飞 提交于 2020-05-02 00:39:58
第十一章 使用类   1、操作符函数的格式:operator op(argument-list)。op是将要重载的操作符。   2、 操作符重载函数的两种调用方式 :①函数表示法:C=A.operator+(B);A、B、C都是类对;②操作符表示法:C=A+ B;操作符左侧的对象A是调用对象,操作符右边的对象B是作为参数被传递的对象。   3、 不要返回指向局部变量或临时对象的引用 ,函数执行完毕后,局部变量和临时对象将消失,引用将指向不存在的数据。   4、 C++对用户定义的操作符重载的限制: ①重载的操作符不必是成员函数,但必须至少有一个操作数是用户定义的类型。这将防止用户为标准类型重载操作符。②使用操作符时不能违反操作符原来的句法规则,不能修改操作符的优先级。③不能定义新的操作符。④不能重载下面的操作符:(sizeof)、(.)、(.*)、(::)、(?:)、typeid、const_cast、dynamic_cast、reiniterpret_cast、static_cast。⑤下面的操作符只能通过成员函数进行重载:(=赋值操作符)、(()函数调用操作符)、([]下标操作符)、(->)。   5、注意:重载的成员函数操作符,左侧的操作数是调用对象。   6、 非成员函数 ,不是由对象调用的,它使用的所有值(包括类对象)都是显式参数。但是,如果函数对类对象有所操作

Ubuntu 16.04安装测试MQTT Mosquitto

主宰稳场 提交于 2020-05-01 02:48:43
环境:Ubuntu 16.04 介绍MQTT MQTT 是一种机器到机器的消息传递协议,旨在为“物联网”设备提供轻量级的发布/订阅通信。它通常用于地理跟踪车队,家庭自动化,环境传感器网络和公用事业规模数据收集。 Mosquitto 是一种流行的MQTT服务器(或MQTT中的 代理 ),具有出色的社区支持,易于安装和配置的特点。 在本教程中,我们将安装Mosquitto并设置我们的代理以使用SSL来保护受密码保护的MQTT通信。 MQTT 是一个轻量级即时通信协议,使用基于 TCP/IP 协议的发布/订阅消息转发模式, MQTT 协议的中心是 broker( 服务器/代理),客户端通过订阅消息和发布消息进行数据交互。 若初次接触MQTT协议,可先理解以下概念: 【MQTT协议特点】——相比于RESTful架构的物联网系统,MQTT协议借助消息推送功能,可以更好地实现远程控制。 【MQTT协议角色】——在RESTful架构的物联网系统,包含两个角色客户端和服务器端,而在MQTT协议中包括发布者,代理器(服务器)和订阅者。 【MQTT协议消息】——MQTT中的消息可理解为发布者和订阅者交换的内容(负载),这些消息包含具体的内容,可以被订阅者使用。 【MQTT协议主题】——MQTT中的主题可理解为相同类型或相似类型的消息集合。 Mosquitto是一款实现了 MQTT v3.1