- 博客(31)
- 资源 (9)
- 收藏
- 关注
原创 MQ学习笔记
1.作用:异步(提高系统的响应速度和吞吐量),解耦(可以实现数据分发),削峰(以稳定的系统应对突发的流量冲击)2.缺点:系统的可用性降低,MQ宕机导致不可用。系统的复杂性提高,如何保证消息不丢失。数据一致性:A系统发消息,BC同时处理,B成功C失败,数据一致性如何保证。3.选型:Kafka(吞吐量大,性能好,集群高可用,会丢数据,功能单一) RabbitMQ(消息可靠性高,功能全面,吞吐量低,消息积累会严重影响性能,erlang语言不好定制,小规模项目) ...
2021-05-09 15:19:10
196
原创 Java中的锁
1 乐观锁:每次共享数据的时候认为别人不会修改,只更新的时候去判断这期间有没有人去更新数据。数据库版本号和通过CAS算法实现的类。2.悲观锁:假设每次拿数据的时候都会被其他人修改,在每次共享数据的时候加锁,使用完了再释放。Java中的synchronize重量级锁和数据库行锁。...
2021-05-04 00:59:39
133
原创 Mysql 事务隔离
1. 可重复读隔离级别,事务启动会创建视图 read-view,2. Mysql 视图概念: (1) 用查询语句定义的虚拟表 (2) InnoDB实现MVCC时用到的一致性读视图,consistent read view, 用于支持RC和RR隔离级别的实现。3. InnoDB里面每个事务都有唯一的事务ID (transaction id)。 按申请顺序严格递增。4. 每行数据多个版本,事务更新数据生成新的数据版本, transaction id -> row trx_id 旧版本数据保..
2021-04-19 02:03:58
144
原创 Mysql中的行锁
1.两阶段锁A: update t set k=k+1 where id=1 update t set k=k+1 where id=2B: begin update t set k=k+2 where id=1B必须等到事务A提交之后才能继续执行2. 如果事务中需要锁多行,把最可能造成锁冲突,最可能影响并发度的锁尽量往后放。3. 死锁: A (1) update t set k=k+1 where id=1 (3) update t set k=k+1 where id=2...
2021-04-15 00:48:09
222
原创 MySql事务隔离
InnoDB 为例1. ACID(Atomicity、Consistency、Isolation、Durability,即原子性、一致性、隔离性、持久性)2. msql查看隔离级别SHOW VARIABLES; LIKE 'transaction_isolation';低版本 tx_isolation3. 隔离级别解决什么问题: 当数据库上有多个事务同时执行,可能出现脏读,不可重复读,幻读。 隔离的越严实,效率越低。SQL标准事务隔离级别: 读未提交,读提交,可重复读,串行化...
2021-04-11 00:54:22
126
原创 Mysql的索引(2)
1.建立T表,k为普通索引select * from T where k between 3 and 5(1)先从k索引树找k3, 取ID=300(2)到ID索引树查ID=300 对应的数据(3)到k索引树上查k=5, 取ID 以此类推,直到k索引树不满足条件。回到主键索引树搜索的过程称为回表。如何避免? 使用覆盖索引, select ID,如果只查ID的值,ID的值已经在k索引树上,不需要回表。覆盖索引可减少树的搜索次数,显著提升查询性能。例如有个用户表,已经在身份证字段加..
2021-04-06 00:42:39
99
原创 Mysql索引
1.索引的出现是为了提高数据查询的效率。2.索引的常见模型(1)哈希表:只适用于等值查询的场景(2)有序数组:只适用静态存储引擎(3)N叉树:二叉树搜索效率最高,但是大多数数据库存储不用二叉树,原因在于索引不止存在内存,还要写在磁盘里面。 100万节点的二叉平衡树,树高20。一次查询要访问20个数据块,机械硬盘随机读取一个数据块需要10ms左右的寻址时间。使用二叉树来存储单独访问一行需要20个10ms的时间。 为了让一次查询少读磁盘,...
2021-04-05 22:22:41
108
原创 Mysql数据库全局锁
全局锁会对数据库实例加锁Flush tables with read lock (FTWRL) 解锁unlock tables;这个命令可以使整个库处于只读状态,数据更新,数据定义,更新类事务的提交语句等操作会被阻塞。错误信息:Can't execute the query because you have a conflicting read lock场景:全库逻辑备份风险点:1主库备份,在备份期间不能更新,业务停摆。2如果在从库备份,备份期间不能执行主库同步的binlog, ..
2021-03-29 00:16:10
580
原创 MySQL功能模块
1. MySQL功能模块 客户端 -> 连接器 -> 分析器 -> 优化器 -> 执行器2. 连接处于sleep的状态,太长时间没动静会被连接器自动断开,由参数wait_timeout控制,默认值为8小时。3. 长连接:连接成功后,客户端有持续请求,一直使用同一个连接。 短链接: 每次执行完很少的几次查询就断开连接,下次查询重新建立。4. MySQL在执行过程中临时使用的内存是管理在连接对象里面,这次资源在连接断开的时候才释放,长连接积累下来会导致内存 OOM。 解决..
2021-02-15 22:28:49
177
原创 mysql兼容微信表情
做微信公众号开发的时候需要获取用户昵称如果昵称包含微信表情 mysql会报异常解决如下:如果用的云数据库 以阿里云为例进入管理平台,修改数据库字符集为utf8mb4提交参数 ---> 重启确保mysql connection版本高于5.1.13项目中数据库配置 jdbc.url 如果设置了utf-8的则需要去掉,不然连接不了如果是自己搭建的数据库 5.5.3+改配置文件/etc/...
2018-03-24 11:53:17
540
转载 mysql 10055 错误解决方案
Description:环境:Windows 2003 + IIS + PHP + MYSQL,服务器运行一段时间后,提示Can’t connect to MySQL server on ‘localhost'(10055)错误。无法重启mysql服务,提示端口被占。检查发现端口并没被占。重起服务器后恢复正常。但过一段时间以后,又出现此错误。查看MYSQL日志,并无不正常记录。
2017-08-06 10:39:36
1515
原创 链表A+B
有两个用链表表示的整数,每个结点包含一个数位。这些数位是反向存放的,也就是个位排在链表的首部。编写函数对这两个整数求和,并用链表形式返回结果。给定两个链表ListNode* A,ListNode* B,请返回A+B的结果(ListNode*)。测试样例:{1,2,3},{3,2,1}返回:{4,4,4}public static ListNode plusAB(ListNo
2017-04-21 10:55:01
627
原创 网易笔试题分享:奖学金
小v今年有n门课,每门都有考试,为了拿到奖学金,小v必须让自己的平均成绩至少为avg。每门课由平时成绩和考试成绩组成,满分为r。现在他知道每门课的平时成绩为ai ,若想让这门课的考试成绩多拿一分的话,小v要花bi 的时间复习,不复习的话当然就是0分。同时我们显然可以发现复习得再多也不会拿到超过满分的分数。为了拿到奖学金,小v至少要花多少时间复习。这道题有几个坑,一是当前的成绩已
2017-03-24 13:08:04
657
原创 java实现二叉平衡树
网上找了一些源码都有些错误,自己写吧首先建立树节点public class TreeNode { int value; TreeNode left; TreeNode right; public TreeNode(int value){ this.value=value; } public void setNode(TreeNode left,Tr
2017-03-17 12:15:45
664
原创 荷兰国旗
拿破仑席卷欧洲大陆之后,代表自由,平等,博爱的竖色三色旗也风靡一时。荷兰国旗就是一面三色旗(只不过是横向的),自上而下为红白蓝三色。该问题本身是关于三色球排序和分类的,由荷兰科学家Dijkstra提出。由于问题中的三色小球有序排列后正好分为三类,Dijkstra就想象成他母国的国旗,于是问题也就被命名为荷兰旗问题(Dutch National Flag Problem)。下面是问题的正
2017-03-16 13:45:07
609
原创 奇偶调序
public static boolean isOdd(int n){ return (n&1)==1; } public static void sort(int[] nums){ if(nums.length==0||nums.length==1) return ; int i=0; int j=nums.length-1; while(i!=j){ if(
2017-03-16 10:27:15
317
原创 寻找和为定值的多个数
这道题也是面试题,网上的代码有bug,自己重写了一遍public void SumOfkNumber(int sum,int n){ if(sum<=0||n<=0) return ; if(sum==n){ Collections.reverse(list); //输出时,该元素还未加入数组 System.out.print(n+" "); for (
2017-03-15 15:05:47
426
原创 java解决topk问题
面试题中经常用到堆,这里总结一下。方法一:对源数据中所有数据进行排序,取出前K个数据,就是TopK。但是当数据量很大时,只需要k个最大的数,整体排序很耗时,效率不高。方法二:维护一个K长度的数组a[],先读取源数据中的前K个放入数组,对该数组进行升序排序,再依次读取源数据第K个以后的数据,和数组中最小的元素(a[0])比较,如果小于a[0]直接pass,大于的话
2017-03-15 10:56:06
1789
原创 tomcat中配置mime类型
mime类型就是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。修改方法:在tomcat中,找到、conf目录下的web.xml文件我们可以看到这样的配置片段 1.如果你的应用程序的后缀不在中,那他会默认当做txt类型来打开,所以有时会看到一堆乱码。2.如果存在,就会用
2017-03-15 09:15:48
6026
原创 集合 List
contains 底层是equals 比较对象是否相同必须重写equals方法,否则比较的是地址值 1:List的子类 (1)List的子类特点 ArrayList: 底层数据结构是数组,查询快,增删慢 线程不安全,效率高 Vector: 底层数据结构是数组,查询快,增删慢 线程安全,效率低 LinkedList: 底层数据结构
2017-03-14 20:58:08
322
原创 Date与Calendar类
Date是java 1.0版本出现的 从1970年1月1日开始计算 东八区 小时+8 成员方法 public long getTime() 精确到毫秒 public void setTime(long time) 输入出生日期,输出到现在第几天SimpleDateFormat.parse 解析 Simple
2017-03-14 20:52:08
334
原创 正则表达式和BigInteger
Pattern 方式一般使用在获取功能,比如一个字符串中含有三个字母的单词先把规则编译成模式对象Pattern p=Pattern.compile(regex);通过模式对象得到匹配器对象Matcher m=p.matcher(s);通过find方法查找有没有满足条件的字符串while(m.find) //是否存在 String str=m.group();
2017-03-14 20:51:13
324
原创 Object学习
Object类的hashCode()方法:返回该对象的hash码值 与地址值有关 getClass() :获取对象的运行时类 返回Class对象 Class.getName 获取类的完整路径名和类名 toString() 原理 :s.getClass().getName+'@'+Int
2017-03-14 20:50:22
392
原创 笔试题:字符串全排列
来自july大神的编程之法public static void swap(String[] c,int i,int j){ String s=c[i]; c[i]=c[j]; c[j]=s; } public static void CalcAllPermutation(String[] c,int start,int end) { if(end<=1) retur
2017-03-14 20:44:54
408
原创 内部类
定义: 把类定义在其他类的内部访问特点: 内部类可以直接访问外部类的成员,包括私有 外部类要访问内部类的成员,必须创建对象。 位置: 外部类$内部类.class 使用: Outer.Inter o=new Outer().new Inter() 外部类和内部类没有继承关系可以通过外部类名.this.变量 访问外
2017-03-14 20:42:47
293
原创 抽象与接口
一个抽象类没有抽象方法 可以的,意义在于不让创建对象abstract与private ,final,static 不能同时存在对于成员方法private:父类定义actract方法是为了让子类重写实现,而private 不能让子类继承,所以冲突final :父类中定义了final方法不允许重写 ,而abstract是为了让子类重写static:类名.静态方法名调用,而
2017-03-14 20:42:19
284
原创 java内存分配堆和栈
java程序划分5个内存空间栈:存放的是局部变量 分为虚拟机栈和方法栈 StackOverflowError 栈溢出 线程请求的栈深度大于虚拟机所允许的深度 大部分虚拟机允许动态扩展 OutOfMemoryError 扩展时无法申请到足够多的内存堆
2017-03-14 20:41:52
303
原创 《去哪儿》JAVA研发笔试题
public class Test { public static void main(String[] args) { Scanner sc=new Scanner(System.in); String str=sc.next(); StringBuilder sb=new StringBuilder(); for(int i=0;i<str.length();i++){
2016-10-20 16:06:12
1088
原创 抽象与接口
一个抽象类没有抽象方法 可以的,意义在于不让创建对象abstract与private ,final,static 不能同时存在对于成员方法private:父类定义actract方法是为了让子类重写实现,而private 不能让子类继承,所以冲突final :父类中定义了final方法不允许重写 ,而abstract是为了让子类重写static:类名.静态方法名调用,而
2016-08-16 14:47:08
306
阿里Java开发手册(嵩山版).zip
2020-08-04
typora-setup-x64.zip
2020-07-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人