04 2019 档案

摘要:方法1: 直接使用数据库提供的SQL语句 语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N 适应场景: 适用于数据量较少的情况(元组百/千级) 原因/缺点: 全表扫描,速度会很慢 且 有的数据库结果集返回不稳定(如某次返回1,2,3,另外的一次返回2, 阅读全文
posted @ 2019-04-28 16:11 twoheads 阅读(1143) 评论(1) 推荐(0) 编辑
摘要:军规适用场景:并发量大、数据量大的互联网业务 军规:介绍内容 解读:讲解原因,解读比军规更重要 一、基础规范 (1)必须使用InnoDB存储引擎 解读:支持事务、行级锁、并发性能更好、CPU及内存缓存页优化使得资源利用率更高 (2)必须使用UTF8字符集 解读:万国码,无需转码,无乱码风险,节省空间 阅读全文
posted @ 2019-04-23 16:46 twoheads 阅读(470) 评论(0) 推荐(0) 编辑
摘要:使用线程池的风险 死锁:虽然死锁可能发生在任何多线程程序中,但线程池引入了另一种死锁情况,其中所有正在执行的线程都在等待等待队列阻塞线程的结果,因为执行的线程不可用。 简言之:业务线程在占用了线程池内所有的资源后又向线程池提交了新的任务,并且要等这些任务完成后才释放资源,而这些新提交的任务根本就没机 阅读全文
posted @ 2019-04-18 14:03 twoheads 阅读(2717) 评论(0) 推荐(0) 编辑
摘要:volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于v 阅读全文
posted @ 2019-04-16 18:15 twoheads 阅读(256) 评论(0) 推荐(0) 编辑
摘要:携程酒店订单Elastic Search实战:http://www.lvesu.com/blog/main/cms-610.html 为什么分库分表后不建议跨分片查询:https://www.jianshu.com/p/1a0c6eda6f63 分库分表技术演进(阿里怎么分):https://mp. 阅读全文
posted @ 2019-04-16 10:45 twoheads 阅读(16660) 评论(2) 推荐(6) 编辑
摘要:然后,说说精华的部分。 Cmap 支持并发扩容,实现方式是,将表拆分,让每个线程处理自己的区间。如下图: 假设总长度是 64 ,每个线程可以分到 16 个桶,各自处理,不会互相影响。 而每个线程在处理自己桶中的数据的时候,是下图这样的: 扩容前的状态。 当对 4 号桶或者 10 号桶进行转移的时候, 阅读全文
posted @ 2019-04-15 18:54 twoheads 阅读(1772) 评论(0) 推荐(0) 编辑
摘要:BIO 有了Block的定义,就可以讨论BIO和NIO了。BIO是Blocking IO的意思。在类似于网络中进行read, write, connect一类的系统调用时会被卡住。 举个例子,当用read去读取网络的数据时,是无法预知对方是否已经发送数据的。因此在收到数据之前,能做的只有等待,直到对 阅读全文
posted @ 2019-04-15 18:07 twoheads 阅读(8084) 评论(1) 推荐(7) 编辑
摘要:1、初步认识 观察者模式的定义: 在对象之间定义了一对多的依赖,当一个对象改变状态,依赖它的对象会收到通知并自动更新。 大白话: 其实就是发布订阅模式,发布者发布信息,订阅者获取信息,订阅了就能收到信息,没订阅就收不到信息。 介绍 意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 阅读全文
posted @ 2019-04-14 21:20 twoheads 阅读(301) 评论(0) 推荐(0) 编辑
摘要:概念 快照读 读取的是记录数据的可见版本(可能是过期的数据),不用加锁 当前读 读取的是记录数据的最新版本,并且当前读返回的记录都会加上锁,保证其他事务不会再并发的修改这条记录 概念说的比较虚,也不好理解,接着举一个例子吧,假设你开启了两个事务,分别是A和B,这里有个张表,user表,里面有四条数据 阅读全文
posted @ 2019-04-14 01:55 twoheads 阅读(1442) 评论(1) 推荐(0) 编辑
摘要:Mysql加锁过程详解(1)-基本知识 Mysql加锁过程详解(2)-关于mysql 幻读理解 Mysql加锁过程详解(3)-关于mysql 幻读理解 Mysql加锁过程详解(4)-select for update/lock in share mode 对事务并发性影响 Mysql加锁过程详解(5 阅读全文
posted @ 2019-04-14 01:53 twoheads 阅读(743) 评论(0) 推荐(0) 编辑
摘要:MySQL通过MVCC(解决读写并发问题)和间隙锁(解决写写并发问题)来解决幻读 MySQL InnoDB事务的隔离级别有四级,默认是“可重复读”(REPEATABLE READ)。 未提交读(READ UNCOMMITTED)。另一个事务修改了数据,但尚未提交,而本事务中的SELECT会读到这些未 阅读全文
posted @ 2019-04-13 21:33 twoheads 阅读(13454) 评论(3) 推荐(0) 编辑
摘要:最近通过《高性能MySQL》一书学习MySQL方面的知识,在看到书中所讲InnoDB-MVCC部分的时候,有一种强烈的感觉,这不就是乐观锁吗(入门级小学徒的疑惑脸)?当下便去网上以各种方式查找阅读MVCC和乐观锁相关的博客,发现大部分的博客对于这两者之间的关系都只字不提,提了的也是众说纷纭,关于两者 阅读全文
posted @ 2019-04-13 20:51 twoheads 阅读(1148) 评论(1) 推荐(0) 编辑
摘要:委托Delegate是一个类,定义了方法的类型, 使得可以将方法当做另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大佬使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。 Invoke : 委托回调函数时候的一种同步调用方式. BeginInvoke 阅读全文
posted @ 2019-04-12 11:23 twoheads 阅读(240) 评论(0) 推荐(0) 编辑
摘要:我之前书上看到的说法是:Vector是相对线程安全,CopyOnWriteArrayList是绝对线程安全 这种说法其实有些问题,CopyOnWriteArrayList在某些场景下还是会报错的 CopyOnWriteArrayList解决了:1.多线程一边读一边写。2.多线程迭代时修改抛出并发修改 阅读全文
posted @ 2019-04-11 10:45 twoheads 阅读(2686) 评论(1) 推荐(1) 编辑
摘要:打印gc日志 1.对指定运行程序输出GC日志: 点击edit configurations... 在vm options处加入-XX:+PrintGCDetails 测试:代码调用system.gc后输出以下内容: 2.修改idea32/64.exe.vmoptions 文件 在idea的安装目录下 阅读全文
posted @ 2019-04-10 15:16 twoheads 阅读(8480) 评论(0) 推荐(2) 编辑
摘要:jdk1.7自带jvisualvm可以对java应用进行监控。其中有个插件visualgc可以查看jvm垃圾回收的具体信息。安装插件的步骤是打开jvisualvm,点击工具->插件,在可用插件列表找到Visual GC进行安装,结果提示无法安装。在浏览器打开链接访问一下,发现java.net网站已经 阅读全文
posted @ 2019-04-10 14:38 twoheads 阅读(3092) 评论(0) 推荐(0) 编辑
摘要:调优工具 启动JDK自带的工具jvisualvm 首先到JDK安装目录/bin目录下,双击jvisualvm.exe文件启动 堆配置 说明: 1、一般初始堆和最大堆设置一样,因为:现在内存不是什么稀缺的资源,但是如果不一样,从初始堆到最大堆的过程会有一定的性能开销,所以一般设置为初始堆和最大堆一样。 阅读全文
posted @ 2019-04-10 14:12 twoheads 阅读(284) 评论(0) 推荐(0) 编辑
摘要:JDK1.7 VS JDK1.8 比较 优化概述: resize 扩容优化 引入了红黑树,目的是避免单条链表过长而影响查询效率 解决了resize时多线程死循环问题,但仍是非线程安全的 这里主要讲讲扩容优化,死循环问题看笔记 扩容优化 下面我们讲解下JDK1.8做了哪些优化。经过观测可以发现,我们使 阅读全文
posted @ 2019-04-10 11:17 twoheads 阅读(5711) 评论(0) 推荐(1) 编辑
摘要:wait()作用:该方法用来将当前线程置入休眠状态,直到接到通知或被中断为止。条件:在调用wait()之前,线程必须要获得该对象的对象级别锁,即只能在同步方法或同步块中调用wait()方法。进入wait()方法后,当前线程释放锁。在从wait()返回前,线程与其他线程竞争重新获得锁。如果调用wait 阅读全文
posted @ 2019-04-09 18:14 twoheads 阅读(2005) 评论(0) 推荐(0) 编辑
摘要:(为什么一个是8一个是6:防止频繁来回转换小消耗性能) 这是笔者面试阿里时,被问及的一个问题,应该不少人看到这个问题都会一面懵逼。因为,大部分的文章都是分析链表是怎么转换成红黑树的,但是并没有说明为什么当链表长度为8的时候才做转换动作。笔者第一反应也是一样,只能初略的猜测是因为时间和空间的权衡。 要 阅读全文
posted @ 2019-04-07 22:00 twoheads 阅读(1507) 评论(0) 推荐(2) 编辑
摘要:N皇后(hard) n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。 上图为 8 皇后问题的一种解法。 给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。 每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 'Q' 和 '.' 分别 阅读全文
posted @ 2019-04-04 17:50 twoheads 阅读(144) 评论(0) 推荐(0) 编辑
摘要:复习要点 本文大概围绕如下几点进行阐述: 我们围绕以上七点进行阐述。需要说明一下,本文不是《消息队列从入门到精通》这种课程,因此只是提供一个复习思路,而不是去教你们怎么调用消息队列的API。建议对消息队列不了解的人,去找点消息队列的博客看看,再看本文,收获更大 正文 1、为什么要使用消息队列? 分析 阅读全文
posted @ 2019-04-04 16:36 twoheads 阅读(333) 评论(0) 推荐(0) 编辑
摘要:给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 示例 1: 示例 2: 参考解法: 阅读全文
posted @ 2019-04-03 18:37 twoheads 阅读(202) 评论(0) 推荐(0) 编辑
摘要:最小覆盖子串(hard) (不会) 给定一个字符串 S 和一个字符串 T,请在 S 中找出包含 T 所有字母的最小子串。 示例: 说明: 如果 S 中不存这样的子串,则返回空字符串 ""。 如果 S 中存在这样的子串,我们保证它是唯一的答案。 关键:滑动窗口 参考 https://www.nowco 阅读全文
posted @ 2019-04-03 17:44 twoheads 阅读(380) 评论(0) 推荐(0) 编辑
摘要:(1 pass 一维动态规划) 爬楼梯(easy) 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。 示例 1: 示例 2: 一维动态规划: 阅读全文
posted @ 2019-04-03 16:32 twoheads 阅读(374) 评论(0) 推荐(0) 编辑
摘要:(主要是越界问题) 实现 int sqrt(int x) 函数。 计算并返回 x 的平方根,其中 x 是非负整数。 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。 示例 1: 示例 2: 错误原因是数组越界,int最大开根号也就46340.9,从0~46340之间找到n,n的平方小于x 阅读全文
posted @ 2019-04-03 15:16 twoheads 阅读(218) 评论(0) 推荐(0) 编辑
摘要:(1 pass) 以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。更多信息请参阅:Linux / 阅读全文
posted @ 2019-04-03 14:36 twoheads 阅读(162) 评论(0) 推荐(0) 编辑
摘要:给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。 示例 1: 示例 2: 进阶: 一个直接的解决方案是使用 O(mn) 的额外空间,但这并不是一个好的解决方案。 一个简单的改进方案是使用 O(m + n) 的额外空间,但这仍然不是最好的解决方案 阅读全文
posted @ 2019-04-03 11:48 twoheads 阅读(163) 评论(0) 推荐(0) 编辑
摘要:(较简单,但犯错太多) 编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性: 每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。 示例 1: 示例 2: 执行用时 : 1 ms, 在Search a 2D Matrix的Java提交中击败了 阅读全文
posted @ 2019-04-03 09:53 twoheads 阅读(169) 评论(0) 推荐(0) 编辑
摘要:(1过,解法不好,看參考荷兰国旗问题解法) 给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 注意:不能使用代码库中的排序函数来解决这道题。 示例: 阅读全文
posted @ 2019-04-03 09:51 twoheads 阅读(174) 评论(0) 推荐(0) 编辑
摘要:(典型,做过似曾相识但不熟悉,基本知道怎么做但调试了一个多小时各种错) 给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。 示例: 输入: n = 4, k = 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ]我的: 阅读全文
posted @ 2019-04-01 21:36 twoheads 阅读(190) 评论(0) 推荐(0) 编辑
摘要:(典型dfs,知道思想写错) 给定一个二维网格和一个单词,找出该单词是否存在于网格中。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 示例: 参考2: class Solution { public b 阅读全文
posted @ 2019-04-01 18:25 twoheads 阅读(169) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示