- 博客(21)
- 收藏
- 关注
原创 mysql innodb下RR隔离级别的不可重复读/幻读解决方案
首先,select for update和update一样,对行加锁,排斥对行的修改、删除(update\select for update\delete),不排斥查询(select);不可重复读:当隔离级别为RR时,事务A执行查询行id=1一次(事务未commit),此时事务B对行id=1执行修改(事务commit),事务A再次执行查询id=1,得到的结果与第一次一样,即可重复读,...
2019-08-01 14:55:42 1778 2
原创 guava RateLimiter 源码解析-非预热
一、非预热1、创建limiter,参数为QPS,允许每秒的流量(即每秒产生的令牌数)接着跟进方法,可以看到stableIntervalMicros为产生令牌的时间间隔继续,最大令牌数等于permitsPersecond,maxBurstSeconds默认为1,接着初始化桶内令牌数量,如果原来最大令牌数为正无穷,则初始化令牌数为新的最大令牌数(不知道什么场景下会出现这个),如果原...
2019-07-18 16:39:13 217
原创 (java)leetcode-取最大长度子字符串
Longest Substring Without Repeating CharactersGiven a string, find the length of the longest substring without repeating characters.Examples:Given "abcabcbb", the answer is "abc", which the length is ...
2018-06-13 02:27:26 660
原创 String
String:==比较的是地址,equals比较值(String重写了equals方法,如果没重写,则比较地址)字符串长度不可变化,当对字符串进行添加、替换、删除时,不会改变字符串的内容,而是产生一个新字符串。StringBuffer是缓冲区的对象,当对它做添加、替换、删除时,直接改变它的内容,不会产生新对象;如果需要对字符串做频繁操作时,一般先转化为StringBuffer,操作完后
2016-10-17 21:07:45 253
原创 正则表达式
[]:表示[]中描述的任意字符{3,20}:表示前一个规则最少出现3次,最多出现20次{3,}:表示最少3次,无上限{3}:只能是3次,不能多也不能少|:表示或者*:等价于{0,},可以出现,可以不出现,如果出现,没有上限+:等价于{1,},至少出现一次,无上限?:等价于{0,1},可出现可不出现,若出现,最多一次.:表示任意字符\d:等价于[0-9],表示数字
2016-10-17 21:07:14 240
原创 异常
异常:描述出错信息的对象。Exception为所有异常的父类,可以捕获,可以处理;Error为所有错误的父类,可以捕获,不能处理;他们具有共同的父类Throwable。可以通过try{}catch(Exception e){}捕获异常,捕获异常的含义为定义一个异常变量,用该变量接收try块中抛出的异常对象。异常执行顺序:先执行try块,顺序执行。若有异常发生,转
2016-10-17 21:06:28 325
原创 网络编程
端口:就是应用程序用于数据交互的通道,用于实现程序间的通信,每个应用程序都有固定的端口;常用端口: 协议 端口Telnet协议 tel 23简单邮件传输协议 smtp 25文件传输协议 ftp 21超文本传输协议 http 80TCP协议较可靠的双向流协议三次握手提供消
2016-10-17 21:06:00 241
原创 数据库
1、关系模型把世界看作是由实体和联系组成的,所谓实体就是指在现实世界中客观存在并可互相区别的事物; 实体所具有的某一特征称为属性,表是关系型数据库的核心单元,它是数据存储的地方。2、用唯一的标识符来标识每一行,就是主键 用来描述表和表的关系,即为外键3、主表-从表:一对一一对多 一条主表对应多条从表,一条从表对应一条主表多对多 需要使用中间表描述
2016-10-17 21:05:31 339
原创 事件
事件开发步骤:1、确定事件源2、确定监听器3、注册、建立事件源和监听器的联系建立方法1:单独建立实现ActionListener的类建立方法2:用窗体实现ActionListener接口,可以少建一个类建立方法3:用匿名内部类传参MyButton m = new MyButton();m.addActionListener(new ActionListe
2016-10-17 21:04:58 184
原创 三层架构
三层架构表现层:作为数据的展示和数据的提供采用MVC模式M:表示模型。也就是实体类,作为数据存储和传输的介质;V:表示视图。也就是GUI窗体,作为数据展示和收集的平台;C:表示控制。也就是事件处理、负责调用业务业务层:业务逻辑处理采用事务脚本模式,将一次请求中所有的业务操作封装成一个方法;保证这些业务操作中,数据库更新操作同时成功,同时失败;不允许出现部分成功,部分失败
2016-10-17 21:04:10 174
原创 多线程
进程是一种“自包容”的运行程序,由操作系统直接管理,直接运行,有自己的地址空间,每个进程一开启都会消耗内存;线程是进程内部单一的顺序控制流。一个进程拥有多个线程,多个线程共享一个进程的内存空间;主线程:main方法一执行,就会开启主线程;主线程的特点:1、最先开始2、最后结束3、产生其他子线程4、回收资源Thread中start()方法和run()的区别star
2016-10-17 21:03:29 175
原创 XML
XML适合传输数据,解决跨平台跨语言传输对象数据XML:eXtended Markup Language 可扩展标记以标记和子标记方式来描述对象数据XML声明一般是XML文档的第一行,空元素,表示标签之间没有内容每个XML文档必须有且只有一个根元素根元素时一个完全包括文档中其他所有元素的元素所有的元素都必须在根元素中定义XML中预定义的符号如:,",如果XML
2016-10-17 21:02:51 196
原创 SQL
1、数据完整性:实体完整性:保证每行所代表的 实体能够区别,不能存在两条一模一样的记录(主键约束、unique约束)2、域完整性域完整性是指定列的输入有效性(not null、default、check-MySQL不支持)3、引用完整性:从外表键中出现的数据,必须在主表的主键中列中出现外键与外键约束外键是指从表的某列和主表的某列存在依附关系外键约束是指在外键关联主键
2016-10-17 21:02:27 177
原创 JDBC
JDBC:全称是java database connectionJDBC是java连接数据库的一套标准,该标准提供了大量接口,这些接口由厂商根据自身数据库的特点做实现,由用户进行接口方法调用;用户根据接口调用方法,可以屏蔽不同数据库的差异,这样无论连接什么数据库都是一套API。JDBC开发流程:建立连接执行SQL语句关闭连接statement和PreparedStateme
2016-10-17 21:01:36 186
原创 IO流
流按照方向分,分为输入流和输出流,是以内存为参照物,将数据从数据源读,为输出流,也称为读取流,将数据从内存中写入数据源,为输出流,也称为写入流;流按照类型分,分为字节流、字符流、和对象流;由于计算机采用二进制,数据传输都是字节流,所以,无论是那种留,其本质都是字节流。不过,为了方便数据的传输,可以在字节流基础上进行封装形成字符流和对象流;InputStream和OutputStream
2016-10-17 21:00:58 195
原创 String 的两种创建方法及存储方式
一、String str = "abc";这种方式在堆区开辟空间,“abc”存储在字符串池中,在栈区创建变量str指向“abc”,当我们再次创建变量String str1 = “abc”时,JVM会到字符串池中寻找“abc”,找到后将引用赋值给str1,不会再次开辟空间创建“abc”; 二、String str = new String("abc");这种方式首先在堆区开辟空间存储
2016-09-12 22:52:12 940
转载 程序员如何做到『编程速度又快,Bug 数量又少』?
有网友在 Quora 提问:如何把自己训练得『编程速度又快,Bug 数量又少』?下面是 Glyn Williams 的回复很精彩,4.5 k 赞。三个程序员被要求穿过一片田地,到达另一侧的房子。菜鸟程序员目测了一下之间很短的距离,说:“不远!我只要十分钟。”资深程序员看了一眼田地,想了一会,说:“我应该能在一天内过去。”菜鸟程序员很惊讶。大神程序员看了一眼田地,说:“看起来
2016-09-06 23:27:44 435
原创 static关键字
被static关键字修饰的成员变量/方法为静态的,储存于data区(数据共享,仅有一份,不能拷贝)1、静态方法只能调用静态变量;2、静态变量可以被静态方法和普通方法调用;3、静态成员随着类加载而加载,存在优先级高于普通成员;4、静态成员可以被类和对象调用;5、于本类中调用时可直接使用,java默认增加(this.);6、其余不能通过类和对象调用的成员变量可通过传参的方式使用
2016-09-06 23:19:37 207
原创 java基础重点&难点总结
一、数据类型整数型: byte类型 1字节 short类型 2字节 int 类型 4字节 long 类型 8字节 浮点型: Float(单精度): 4字节 Double(双精度): 8字节 字符型:char 2字节 逻辑型:boolean 大小不确定,由
2016-09-02 18:51:01 2927
原创 选择排序
选择排序是冒泡排序的精简版,它计算次数更少,耗时更短,原理是每轮由外循环i确定位置,一轮循环产生最值arr[i],且下一轮循环不再参与比较,保证每次循环的比较都是有意义的:int[] arr={12,3,54,6,75,87,96};for(int i=0;i for(int j=i+1;j if(arr[i] int
2016-09-02 18:09:34 197
原创 冒泡排序
冒泡排序是一种经典算法,原理是每一次循环都将最值往一个方向移动,每一轮循环将一个最值移到适当位置,经过arr.length-1轮循环完成排序: int[] arr={12,3,54,6,75,87,96};for(int i=0;i for(int j=0;j if(arr[j] int t;
2016-09-02 17:58:28 178
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人