- 博客(134)
- 资源 (34)
- 收藏
- 关注
原创 2021-07-30
1.从一个事故说起给一个小表加字段为何把整个库搞挂了?注意:事务中的MDL锁,在语句执行时开始申请,但是语句结束后并不会马上释放,而是等到这个事物提交后才释放;1、Session A和session B需要加MDL读锁2、session C需要加MDL写锁,此时会阻塞3、Session C被阻塞后,session D申请MDL也会被阻塞4、如果t是一个高频读写的表,则可能导致线程爆满2.如何解决?首先我们要解决长事务,事务不提交,就会一直占着 MDL 锁。把尝试无kill掉先
2021-07-30 15:37:36 227
原创 MySQL MDL锁
show processlist1、作用MySQL5.5 引入,用于解决或者保证DDL操作与DML操作之间的一致性所以MDL锁是在Server级别的锁2、对象可以是表锁,也可以是全局锁、库级别的锁、表空间级别的锁某些类型的MDL锁会从上往下一层层进行加锁。比如LOCK TABLE … WRITE这样的SQL语句,其首先会对GLOBAL级别加INTENTION_EXCLUSIVE锁,再对SCHEMA级别加INTENTION_EXCLUSIVE锁,最后对TABLE级别加SHARED_N.
2021-07-30 15:35:42 636
原创 MySQL auto-inc锁
1、官网介绍自增锁是一种特殊的表级别锁(table-level lock),专门针对事务插入AUTO_INCREMENT类型的列。最简单的情况,如果一个事务正在往表中插入记录,所有其他事务的插入必须等待,以便第一个事务插入的行,是连续的主键值。2、一个参数innodb_autoinc_lock_mode 默认1该参数始于5.1.22 为0时,表示采用之前MySQL 5.0版本的策略,即语句执行结束后才释放锁;(语句级别) 为1时: 普通insert语句,自增锁在申请之后就马上释放; 类似in
2021-07-30 15:34:49 823
原创 InnoDB锁简介
开篇几个问题:1、MySQL和Innodb有哪些级别的锁?2、表锁和行锁的区别有哪些?从以下结果方面:加锁效率,加锁粒度,实现复杂度,占用空间,并发度、超时时间3、行锁加到什么对象上?唯一索引和非唯一索引加锁时有什么区别,如果没有索引呢?4、等值查询和范围查询加锁的区别,等值查询如果没有命中会怎么样?几条语句:show process list 线程执行状态 select * from performance_schema.data_locks。查看行锁和意向锁 字段描述 s...
2021-07-30 15:04:30 611
原创 synchronized锁升级和降级
先转一张图说明:无锁和偏向锁这两行,倒数第三位有一个争议,0和1究竟代表说明含义。有人说是0表示当前无锁,1表示当前是偏向锁。这个说法对不对呢?做实验开始 <dependency> <groupId>org.openjdk.jol</groupId> <artifactId>jol-core</artifactId> <version>0.14</version> </
2021-04-09 15:34:41 3057 5
原创 Linux性能优化——CPU上下文切换(下)
一、怎么查看系统的上下文切换情况使用vmstat[root@localhost ~]# vmstat 5procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 2 0 0 151772 276 617972
2021-04-01 18:12:50 179
原创 Linux性能优化——CPU上下文切换(上)
一、为什么要进行上下文切换?Linux多任务特性,把CPU分为较短的时间片,线程或进程在时间片结束后会进行上下文切换二、有哪些上下文切换,什么时候进行?特权模式切换(系统调用):1、进程既可以运行在用户空间,又可以运行在内核空间。当进行系统调用时,会陷入到内核空间,发生上下文切换2、寄存器用户态的指令保存起来,内核态的指令加载到寄存器中,然后执行内核任务。系统调用结束后,则执行相反动作3、同一个进程内不同模式下的调用,发生两次上下文切换。进程上下文切换:1、不同进行间的上下文
2021-04-01 15:59:08 249
原创 不同环境MySQL数据库结构对照
问题:开发环境提测到测试环境,测试环境上线时,有哪些新增表和字段的情况,开发者往往会忘记提供SQL。这时候如果之前保留的SQL脚本丢失,那么就得重新写,但那些表和字段属于本次变更的范围内呢?可能忘记可能遗漏解决小技巧:场景:从开发环境到测试环境前提:拥有查询information_schema.COLUMNS的权限第一步:查询测试环境的所有表和字段信息select group_concat(concat('\'',TABLE_NAME,".",COLUMN_NAME,'\'')) fr
2021-03-30 15:39:11 209
原创 MySQL8.0锁
1、performance_schema.metadata_locks 查看元数据锁展示那些琐:已授予的锁(显示哪些会话拥有哪个当前元数据锁)。 已请求但尚未授予的锁(显示哪些会话正在等待哪些元数据锁)。 死锁检测器已杀死的锁定请求。 超时并且正在等待请求会话的锁定请求被丢弃的锁定请求开启和禁用:UPDATE performance_schema.setup_instrumentsSET ENABLED = 'YES', TIMED = 'YES'WHERE NAME = 'wai
2021-02-24 16:10:13 1080
原创 Mysql 自增字段
1、语法介绍2、自增锁3、为什么可能不连续4、几种自增的情况1、delete数据是否会导致自增值修改2、重启之后自增数据是否变化3、如果指定自增列的值,能不能正确插入
2021-02-22 20:31:13 229
原创 Mysql Online DDL
1、一个alter table语句的完整写法2、Mysql5.5之前,执行alter table的过程3、online DDL介绍4、Alter Table算法5、online DDL替代方案https://blog.csdn.net/finalkof1983/article/details/88355314
2021-02-22 18:39:45 114
原创 MySQL和Innodb锁简介
这里写自定义目录标题锁类型读锁、写锁锁范围全局锁、表锁、页锁、行锁、MDL锁全局锁使用场景使用方式全局锁表级锁(表锁和MDL锁)表锁:元数据锁(MDL锁)作用:分类行级锁两阶段锁加行锁的方法死锁和死锁检测锁类型读锁、写锁锁范围全局锁、表锁、页锁、行锁、MDL锁全局锁使用场景全库逻辑备份时,使用全局锁使用方式Flush tables with read lock (FTWRL)全局锁不但DML无法操作,DDL也无法操作表级锁(表锁和MDL锁)表锁:加锁语句: lock ta
2021-02-01 20:44:59 191
原创 MySQL中,一条update语句心路历程
除了和查询一样的流程以外,在执行器进行执行的时候,除了需要进行存储引擎的保存操作以外,还需要记录日志。redo log:1、一条更新语句执行时,会先写redolog 再更新内存,异步线程更新磁盘。2、redo log不断的写入在log buffer中,写完redo log该更新算是完成3、redo log顺序写磁盘,是物理日志,一旦出现crash-safe,使用redo log进行提交或回滚。4、用于实现事务的持久性bing log:1、bin log是MySQL server层
2021-01-29 17:43:56 213
原创 MySQL中,一条查询语句的心路历程
一、客户端与连接器建立连接二、查询缓存三、词法分析、语法分析、语句分析四、查询优化器(最关键部分)五、存储引擎和磁盘
2021-01-29 10:58:02 118
原创 如何提高单元测试效率
对于程序员来说,尤其是做业务代码比较多程序员,往往出现这样的情况:需求开发周期为5个工作日,开发仅占2天,但测试和联调竟然需要3天。为什么会出现这样的情况呢?我总结有以下几点:1、开发业务代码往往不会有什么技术难度,就是业务逻辑复杂些罢了,而程序员对业务理解并不总是完全到位。2、单测和联调也需要协调各方面的环境,往往也需要从头开始造数据。 例如:如果一个大流程有十个步骤, 1)要开发和...
2018-05-05 15:33:13 5862 1
原创 重温JAVA类加载过程
缕一缕JAVA的类加载过程,附一个近期遇到的案例一、加载 1、读取二进制流 2、将字节流转化为方法区的”运行时数据结构“ 3、生成一个java.lang.Class对象,用来描述这个数据结构二、连接 1、验证 文件格式验证:魔数、版本号、常量类型、编码格式 元数据验证:父类验证、抽象类验证、各种语言规范验证 字节码验证:语法规范验证...
2018-04-27 17:10:03 279
原创 dubbo源码阅读——Extension扩展机制
dubbo不仅功能强大,扩展性也非常强,在关键的位置,dubbo都留有扩展接口,比如:协议(Protocol)、集群策略(Cluster)、代理工厂(ProxyFactory)、序列化方式(Serialization)、线程池(ThreadPool)、负载均衡(LoadBalance)等等。每一种扩展都有多种实现,采用策略模式把实现写在/META-INF/dubbo/internal中,然后通过E...
2018-04-26 18:27:24 2079
原创 测试环境下,多用户使用同一环境导致冲突的解决方案
问题描述:问题一:A、B两个同学,同时使用betaA环境启动服务,这时候会出现Dubbo客户端可能会无法精确定位到某台服务,Kafka消息可能被两个服务任意一个消费掉。出现数据库状态发生变化,却看不到日志的问题,给很多同学造成困扰。问题二:为避免问题一,A测试同学使用betaA时,其他测试和开发同学就不能使用betaA,如果亟需使用betaA的库中的数据,就要修改db.proper
2018-04-25 14:51:27 2617
原创 半自动化单测实现
半自动化单测实现——秒单测系统目前单测存在的问题效率过低每启动一次单测(test**方法)需要经过编译、spring初始化、Dubbo链接、ZK链接、Kafka链接、Redis链接等等操作。需要耗费一分钟以上的时间,而且每次的数据都需要硬编码,效率很低。单测的方法之间过于分散无法串联举例:进件、发影响件、导标、放款、回调(生成工单)、完成或取消工单是一个主流程,流程进行完之
2018-04-25 14:49:55 394
原创 使用Maven和Spring的profile功能实现不同运行环境的无缝切换
1、设计目标,在使用maven构建(build)时即确定运行环境运行环境包括:数据库切换,各种配置文件变动,变量的变化2、实现方式,配置maven的profile和properties,配置spring beans的profile实现层次加载3、多种实现方式对比
2017-08-29 18:44:09 649
原创 深入谈Java的多态机制
前言从开始学面向对象,开始学java就在不断被灌输java几大特性:封装、继承、多态。封装有利于实现数据(状态)的隐藏,让对象的内聚性更强。继承虽说一定程度上破坏了封装,但实现了代码的复用,是多态特性实现的基础之一。多态让java的方法调用功能更加丰富,更加灵活,但带来了一定的负面作用,如可读性变差,类之间的耦合性变强。以下重点说说多态的实现原理和如何破解多态的问题!本以为看了周志明的《深入理解j...
2016-11-18 13:32:22 818
原创 论周芷若
周芷若定位:绿茶心机婊出身:渔民之女素质:花容月貌、聪明绝顶、学武根骨奇佳综评:算是凤凰女,想要寻一个金龟婿从而改变一生坎坷命运,但机关算尽太聪明证据:1、出身贫寒,渔家女,但生的好皮囊,得了个好名号,又身具上乘的学武资质,遇到伯乐二人(张真人、灭绝师太)算是具备了成功的必要条件,但无奈起点较低,能力尚未练成就要身负重任,光大门楣,未免力不从心,从而导致不择手段要去做这一切。
2016-09-13 18:16:44 989
原创 分别使用java和JS获取某月的第一天和最后一天
需求:获取本月的第一天和最后一天分别使用Js和java代码实现,不能用笨法子,比如根据月份判断大小月,平闰年判断一个多少天,然后取出第一天和最后一天。以下是实现方式,java代码:Calendar calendar = Calendar.getInstance();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");c
2015-12-10 18:52:46 1451
原创 使用java运行javaScript脚本
java和JavaScript有关系吗?长的挺像,开头好像一致,刚刚才看到一篇文章,有人在咖啡杯子下面写一个JavaScript,并宣称未来五年JavaScript将成为业界最重要的语言之一。嚓,一看这就是外行小编搞出来的文章,放出来也不知道给谁看的。又想到去年有个自命为程序员的女研究生(已毕业)来问我,“听说你是做java的?”“是啊,怎么?”“我这里有段代码有问题,你给我看看吧!”“好啊!”,
2015-12-02 14:03:05 1701
原创 Spring 引入properties配置文件的方式
spring注入常量的方式,可以直接在java代码中使用方法一:采用配置文件标签方式来配置可以对set、map、list、properties文件等类型的数据进行配置,以下以properties文件为例说明使用方法步骤:1、applicationContext.xml中添加xsi:schemaLocation="http://www.springframework.org/sc
2015-11-26 14:41:42 6219
原创 java动态代理的实现
本文探讨两种java动态代理技术,JDK和cglib代理有什么用?Spring的面向切面编程(Aspect)就是利用代理技术实现,获取注入对象的时候获取的其实并不是注入类的对象(target),而是其代理类的对象(proxyTarget)只是通过动态代理实现,对于编码者而言是透明的,在代理方法中可以对目标方法做事务控制、日志记录、异常捕获、错误处理等等工作。代理方式有哪两种?JDK
2015-11-05 16:08:35 808
原创 字符串转换成指定类型
网友提出一个问题,寻求解决方案:/** * 把val转换成type类型返回 * @param val 要转换的内容 * @param type 要转换成的类型 * @return */public T getVal(String val, Class type) { // 把val转换成type类型返回 比如说getVal("123",Integer.class) 返回一个12
2015-11-04 14:33:37 4914
原创 有一个100万的数组,里边有两个是重复的,如何设计算法找到
输出:两个重复的元素的索引首先,直接两重循环查找不是不行,估计是最蠢的做法了。其次,先用快速排序拍一遍,然后遍历,时间复杂度最好的情况是最坏的情况是nlogn+n有人说是用hash,有人说用位图,不知道什么情况,用起来估计很麻烦。其实最好想的一个方式为HashSet方式,在数量不那么大的情况下没问题的,100万同时加载到内存中可以接受,主要考虑时间复杂度。代码如下:
2015-10-23 18:33:16 8532
原创 论张无忌
一论张无忌武功高强似乎便是天下第一了,但心地软弱善良,决断力差。用范瑶的话说“婆婆妈妈,不够心狠手辣,未免美中不足”,正所谓“慈不将兵,善不为官”,面对自己喜欢的女人尚且无法确定哪个是自己真正所爱的,而统领数十万桀骜不逊的明教教众,不是武功高强、仁义过人就能够完成的任务,缺乏杀伐决断,缺少狼性之志。如果只是面对江湖人物,凭借出神入化的武功,众多优秀且忠诚的下属,勉强可以生存,但却已感到
2015-10-14 14:32:08 4294 2
原创 js 对有“命名空间”的表单做深度解析
问题描述:一个大表单中,可能包含几十个字段,这些字段在数据库中的映射很可能不在一张表中,为了减少后台操作的工作量,我们应该在前台提交的时候对数据做初步处理。举例说明:如图所示:这样的一个表单把两张表糅合到一起去了,提交的时候一起提交,但内容并不在同一张表中,实体也不是同一个实体,那么如何才能把前台传过来的json数据分别帅选出来呢?在后台或许也是可以做到的,但这样的事情应该在前
2015-08-13 18:05:37 886
原创 戏说javascript原型(prototype)实现面向对象
原型prototype JS中的方法分为三类:类方法,对象方法,原型方法 比如:一个类(Function,为对比java,以下统称为类) function Parent(name){ this.name=name; this.sayHello=function(){ alert(‘Hello,’+name); } } Parent类中sayH
2015-07-24 16:47:19 874
原创 java异常捕获的一点感悟
class Annoyance extends Exception {}class Sneeze extends Annoyance {}class Human { public static void main(String[] args) throws Exception { try { try { throw new Sneeze(); } ...
2015-06-21 13:21:59 6525 7
转载 使用对象输入输出流(ObjectOutputStream,ObjectInputStream)实现序列化对象的深度克隆
public static T clone(T obj) throws Exception { ByteArrayOutputStream bout = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(bout); oos.writeObject(obj); ByteArr
2015-06-21 12:00:01 3558
原创 js递归实现包名转换成对应的json对象
示例:由原对象{a: {test: 1, b: 2}} 根据a.b.c.d这样的包名转换为:{"a":{"test":1,"b":{"c":{"d":{}}}}} 说明:包名有"."分隔,本身代表着层级结构,而json对象本身也是由属性和值构成的,允许嵌套,因此现在就有一个需求,把包的描述字符串,转换成json类型,条件是要注意到已经存在的其他属性.本例中属性a的值是对象,因此要保留该,只对其
2015-06-13 21:15:36 1747
原创 java 把DataTable数据类型转换为树形结构(多叉树)
问题分析:一个关系数据库的表,如图所示:可以看到后面四个字段:Country,Province,City,Street 具有逻辑上的从属结构,现在要把这种数据搞成一个树形结构,如图所示:不是原来的数据转换而成的,大致就是这个意思,可以想象成,dataTable里面相同的数据进行单元格合并,然后找到所有的从根到叶子节点的路径,就算完成任务。JS里面似乎有很多插件可以实现,但J
2015-06-01 22:53:18 6723 1
原创 java实现自动编号系统(类似于word中自动编号)
功能需求:1,根据章节和当前标题数量,获得下一个编号,满足不同等级编号需求.如同word中的自动编号功能一样2,可以实现在freemarker中直接调用生成方法,得到正确的编号目标:即在freemarker代码中通过一个方法调用即可得到当前章节的编号11.11.222.12.1.12.1.22.22.2.133.13.1.13.1.1.13.2
2015-05-17 19:04:16 5190
转载 26个Jquery使用小技巧
下面列出了一些Jquery使用技巧。比如有禁止右键点击、隐藏搜索文本框文字、在新窗口中打开链接、检测浏览器、预加载图片、页面样式切换、所有列等高、动态控制页面字体大小、获得鼠标指针的X值Y值、验证元素是否为空、替换元素、延迟加载、验证元素是否存在于Jquery集合中、使DIV可点击、克隆对象、使元素居中、计算元素个数、使用Google主机上的Jquery类库、禁用Jquery效果、解决Jquery
2015-03-04 13:37:25 923
转载 Java桌面程序打包成exe可执行文件
们都知道Java可以将二进制程序打包成可执行jar文件,双击这个jar和双击exe效果是一样一样的,但感觉还是不同。其实将java程序打包成exe也需要这个可执行jar文件。转载:http://www.cnblogs.com/icewee/articles/2073203.html
2015-03-02 15:51:00 935
清除所有的maven仓库中lastUpdated文件
2015-08-10
jquery 实现的树形表格结构
2014-01-16
ContourCube ActiveX Help 帮助文档
2013-10-22
"java实现简单的单点登录"源码包
2013-06-21
Windows下整合Apache2.2和Tomcat6.0 集群与负载均衡——亲测
2013-01-09
SSI框架练习增删改查
2011-11-02
Weblogic 安装以及domain的建立和工程的部署
2011-09-13
单片机课程设计——多功能电子表
2011-01-14
用Java实现的C语言的编译器课程设计
2011-01-14
Java 基础学习资料
2010-06-22
21天学通C++(按计划学习,精通c++只需21天)
2010-06-22
单片机从入门到精通 从初学者到工程师级别
2010-06-19
微机原理课程设计(内含十五个文件)
2010-06-11
VC SQL sever 2000 数据库 图书管理系统 课程设计
2010-06-11
Java编程思想(第四版) 中英文两版对照以及源代码
2010-06-11
电脑应用文章精华——收集多年、多位电脑专家的心得感悟
2010-05-30
SQL sever2000 从菜鸟到大师
2010-05-30
利用MFC ODBC操作Access数据库实现显示、添加、修改、删除等功能
2010-05-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人