mysql大数据分页查询优化

mysql数据量大时使用limit分页,随着页码的增大,查询效率越低下。
实验
1.直接使用用limit start, count分页语句:

select * from order limit start, count

当起始页较小时,查询没有性能问题,我们分别看下从10, 100, 1000, 10000开始分页的执行时间(每页取20条), 如下:

select * from order limit 10, 20 0.016秒
select * from order limit 100, 20 0.016秒
select * from order limit 1000, 20 0.047秒
select * from order limit 10000, 20 0.094秒

我们已经看出随着起始记录的增加,时间也随着增大, 这说明分页语句limit跟起始页码是有很大关系的,那么我们把起始记录改为40w看下

select * from order limit 400000, 20 3.229秒

再看我们取最后一页记录的时间

select * from order limit 800000, 20 37.44秒

显然这种时间是无法忍受的。

从中我们也能总结出两件事情:
1)limit语句的查询时间与起始记录的位置成正比
2)mysql的limit语句是很方便,但是对记录很多的表并不适合直接使用。

2.对limit分页问题的性能优化方法

利用表的覆盖索引来加速分页查询
我们都知道,利用了索引查询的语句中如果只包含了那个索引列(覆盖索引),那么这种情况会查询很快。

因为利用索引查找有优化算法,且数据就在查询索引上面,不用再去找相关的数据地址了,这样节省了很多时间。另外Mysql中也有相关的索引缓存,在并发高的时候利用缓存就效果更好了。

在我们的例子中,我们知道id字段是主键,自然就包含了默认的主键索引。现在让我们看看利用覆盖索引的查询效果如何:

这次我们之间查询最后一页的数据(利用覆盖索引,只包含id列),如下:
select id from order limit 800000, 20 0.2秒
相对于查询了所有列的37.44秒,提升了大概100多倍的速度

那么如果我们也要查询所有列,有两种方法,一种是id>=的形式,另一种就是利用join,看下实际情况:

SELECT * FROM order WHERE ID > =(select id from order limit 800000, 1) limit 20
查询时间为0.2秒,简直是一个质的飞跃啊,哈哈

另一种写法
SELECT * FROM order a JOIN (select id from order limit 800000, 20) b ON a.ID = b.id
查询时间也很短

mysql Error Code: 1175. You are using safe update

在使用mysql执行update的时候,如果不是用主键当where语句,会报如下错误,使用主键用于where语句中正常。
异常内容:Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Queries and reconnect.

这是因为MySql运行在safe-updates模式下,该模式会导致非主键条件下无法执行update或者delete命令,执行命令SET SQL_SAFE_UPDATES = 0;修改下数据库模式

如果想要提高数据库安全等级,可以在恢复回原有的设置,执行命令:SET SQL_SAFE_UPDATES = 1;

这个社会在极严厉地惩罚不好好读书的人

每当有人劝你努力读书,考个好大学,以后找个好工作的时候,你是不是嗤之以鼻?即使为了不忤逆家长做出口是心非的应允。

你心里是不是也在想:在这个金钱至上的社会中,大学生毕业连工作都找不到,更不用说买房买车、结婚生子的恢弘愿景了;在这个万众创业人人有机会改变自身阶层的时代中,大学生大多会把脑子读坏,连交际能力都堪忧,能有啥出息……

总之,在你的脑子里已经将读书无用奉为圭臬,将赚钱至上视为信条。甚至在网络上流传着各式各样的读书无用论段子,例如,XX初中辍学,然而他的小伙伴却最终考入了名牌大学,十年后,身为部门经理的XX,已经开始考虑到底要不要录用他名牌大学毕业的小伙伴……

千万不要拿这样个别的例子去忽悠那些还心智未开的年轻人。因为这样的人只是少数,大多数不爱学习的孩子,长大之后却发现,自己用几年疯狂的青春,换来了一生的卑微与底层!

记得朋友圈曾疯狂流传过这样一个帖子:两排名单,第一排列的有傅以渐、王式丹、毕沅等9人,第二排列的也是9人,分别是李渔、洪升、顾炎武、金圣叹、黄宗羲、吴敬梓、蒲松龄、洪秀全、袁世凯等9人。估计大部分朋友圈的人都不认识第一排,而熟知第二排上的人。帖子最后揭晓的答案是:前者全是清朝科举状元,后者全是当时落地秀才。因此结论是“读书无用论”。

这可是严重的偷换概念!第一排人你不认识,但不代表人家当时在社会上不知名,生活的不好;第二排人大家现在都知道,但在他们生活的那个社会,却并不招人待见的。

阅读详细 »

使用lombok简化代码

lombok是一款可以精减java代码、提升开发人员生产效率的辅助工具,利用注解在编译期自动生成setter/getter/toString()/constructor之类的代码。减少了代码行数,不会看到一大堆的get、set干扰视线

官网地址:https://projectlombok.org/ 首页有一段几分钟的演示视频,看完就明白是怎么回事了。

@Data
public class Something {
....
}

加上Data注解以后就不用在类中添加get、set方法了

各种注解的详细用法,请参考:https://projectlombok.org/features/index.html

IDEA下使用时,可以通过插件的形式安装,插件下载地址:https://github.com/mplushnikov/lombok-intellij-plugin/releases

然后 Plugins -> Install plugin from disk… 选择下载的zip包安装,重启idea即可。

另外,还有一个关键设置:27612-20160217115233300-1759134314

理财产品对比

说到理财方式,我们就要把市面上主流的理财方式罗列出来,一一对应看看孰优孰劣。

1.银行活期
银行活期的预期利率是0.35%(各银行不同,但量级相同),从银行的角度来说,这个资金是没有成本的。从我们的角度来说,这个收益等于没有收益。尽管流动性是满分,但是很遗憾这对于投资理财是没有任何意义的渠道。

2.银行定期
银行定期预期利率一般分 3个月1.1% ;6个月1.3% ;一年1.5% ;2年 2.1% ;3年2.75%。根据各个银行不同,一般小银行的预期利率会相对高一点,但是预期利率量级基本也就是这个状态。那么即使选择3年期定期,2.75%的预期年化预期利率也仅仅能跑赢政府公布的通货膨胀率。但是稳稳的跑不赢实际的通货膨胀率,你看看你身边的物价就知道现实的通货膨胀率有多高了。而且这还是牺牲掉流动性的前提下。

3.国债
国债的安全性也是没得说的,国家兜底,不过数量有限,具体预期利率也不一样。不过一般3年期的能够达到3.9%,5年期的能够达到4.32%。尽管预期利率和定期还是有相当提升的,很遗憾,依然牺牲流动性。

总结:上面基本把银行系的投资理财方式说完了,从安全性银行理财毋庸置疑,但是很遗憾,即使最高的预期利率也不能覆盖通货膨胀,你想靠银行理财资产翻倍是不可能的,而且严重牺牲了流动性。
阅读详细 »

混日子的人,下场都很惨

不管公司还是个人,长期来看,不管对方混不混日子,自己不混日子总是更为划算的。

混日子和不混日子

前几天一个朋友离职了。

我问他为什么,他说公司正在走下坡路,可能马上面临倒闭,覆巢之下焉有完卵,还是不要把青春耗在那里好。

我说你是怎么看出来公司快不行了的?他说每次老板不在,公司几乎所有人都打开《人民的名义》、《欢乐颂》……大家都知道公司近两年效益很不好,还人人爆米花+可乐混日子,这不等着倒闭么。

我这个朋友挺明智的,并没有随大流混日子,而是早早地跳脱了一个“眼前舒适”的职场环境。

职场是一个怎样的地方?职场是价值的交换中心。

在这里,每个人的价值都可以拿出来称一称,然后换到等值的自己想要的东西。

这类交换说是等值,其实是动态等值,对于某一个点来说,几乎总是错配的:有时候老板钱给多了,有时候给少了。

理论上来说,老板永远可以花更少的钱请到比你好的人,而你也永远可以找到比现在更适合自己,钱又更多的工作。

在市场信息没有全透明的前提下,你们谁先找到相应的信息,对谁就更有利。

而如果这中间有一方在混日子,停滞不前,那么显然价值错配的倾斜程度只会加剧,虽然短期看起来混日子的一方似乎是占了另一方的便宜。

很显然,不管公司还是个人,长期来看,不管对方混不混日子,自己不混日子总是更为划算的。

很多人可能会说,公司小,或者公司风气不好,也没见不混日子的有什么发展机会。

这是你把自己的眼睛给蒙住了,试着跳出自己的公司,从整个行业或整个职场的范围去俯视,会得到完全不同的结论。

混日子的焦虑

混日子的人总是不难找,我接触过大量混日子的人,他们大都知道自己和公司所处的状态,也大概知道不远后的结果,但就是能耗一天是一天。

这种情绪大脑和理性大脑不一致的状态,会让人产生焦虑。

是的,混日子并不是什么舒服的事情,大多数人内心是焦虑的。

如果不认为混日子是坏事,也不认为自己迟早会有什么不太如意的后果,混日子反倒不太容易引起焦虑。 阅读详细 »

中国是怎么玩一带一路的(段子)

非洲:我有石油和矿产。
欧美日:我给你开采!
非洲:被你们剥削上百年了,我现在要自己建厂,自己加工原材料。
欧美日:你们没钱、没路、没水、没电、没头脑,建个毛?!
中国:非洲兄弟,我来帮你!
中国:你看啊,矿区上游正好有条河,咱把这一拦,就是个大型水电站。
中国:有了电,就得把路也跟上:我们直接电气化铁路打通矿区和港口,让资源好挖又好卖!质量你放心,我们家的中铁和中铁建修高铁都是世界第一, 建大港口全球前十咱家占七个,中国交建集团和招商局专门干这个。大英国建航母都买的咱的龙门吊。
在铁路沿线和港口附近,我们再给建两个工业园区,专门往欧美日出口零关税的消费品。这个我们经验十足,中信集团、华夏幸福、泰达集团都是老油条了。
非洲:太够哥们了!可是我没钱……
中国: 没事儿,我借给你!中国亚投行和进出口银行有优贷(优惠贷款)、优买(优惠买方信贷),国开行有中非发展基金,工行、中行有商贷、随你挑。很简单,只要拿矿产、石油和国家主权担保一下就行。实在不行,你们的可可,芝麻,也能运到中国还款(注:中国吃的香油,很多是埃塞俄比亚出产)。利率吗,肯定感觉比日本和美国优惠……
非洲:那,那我美元外汇储备不够咋办?
中国:这太好了啊!咱两个央行抓紧弄个货币互换,以后咱哥俩交易,直接用人民币结算,利润都是咱哥俩的。用什么美元?!欧美日百年的剥削、歧视早受够了!
非洲:太好啦,就这么办!
中国:对了,既然通了电,那过去用不上的电视机、微波炉啥的也得配一下吧。我们这TCL、美的都是全球第一;给你修水电的中国电建还能拉着美的电器 给你把各种家电都送货上门。价格嘛,好商量,我们现在搞家电下乡,买一批送一批。

非洲:我们这儿电视台没什么节目,天天就是看新闻和广告,要电视没什么用吧

中国:正好!北京有个四达公司,华谊兄弟,专门把我们特别好看的电影、电视剧翻译成豪萨语、斯瓦希里语等当地语言。以后你们看广告看烦了,就看我们非洲版的《不见不散》,《甲方乙方》,《三生三世》,《亮剑》,《射雕英雄传》,《还珠格格》,《甄嬛传》。兄弟之间,好东西,要分享!

非洲:哇塞!!

中国:还有啊,现在都4G了,上网嗖嗖地。你这2G网络得让华为、中兴给升级一下,价格是欧美的1/3。绝对亲兄弟,剁手价。

非洲:这个我喜欢啊!

中国:你看,咱们现在把贫穷落后的家乡改变的这么好,保不齐有人会眼红,会羡慕嫉妒恨。所以咱得保卫胜利果实啊。

非洲:这个,咋保卫啊?

中国:不如团购点枭龙战机?再来批 99坦克?红箭导弹? 这可是好东西,物美价廉还抗造,中国陆军指挥学院包教、包会、包分配。(注:南京陆军指挥学院的外国学员中,已经出了5位总统、1位副总统、1位总理、8位国防部长 )。这事儿你就交给出门右拐的保利公司和中航技集团就行。

非洲:成了!兄弟一生一起走!

图解java String的不变性

1. 声明一个字符串

String s = “abcd”;
s存储的字符串的引用,下面的箭头就是存储引用的意思1

2. 把这个字符串变量分配给另一个变量

String s2 = s;

s2存储相同的引用值

2

3. 连接字符串

s = s.concat(“ef”);
s现在存储新字符串对象的引用

3

总结

字符串一旦在内存中创建,就不能改变。我们应该知道字符串的所有方法都不能改变它自己,而是返回一个新的字符串。

如果我们想要一个可变的字符串,我们应该使用StringBuffer 或者 StringBuilder。否则会浪费gc时间,应为每次都会创建新的字符串对象。

Mac下通过sshfs挂载linux远程目录

之前的电脑使用的是linux,想把之前的一些文件拷贝过来,直接ssh操作起来又不是太方便

SSH Filesystem(简称 SSHFS)是一个以 SSH为基础的文件系统,它可以让你直接通过 SSH 挂载远程 Linux 服务器上的硬盘,由于现在的 Linux 服务器几乎都支持 SSH,所以只要安裝 SSHFS client 之后,对于任何可以使用 SSH 登录的服务器,都可以直接挂载上面的硬盘。

安装时,先下载OSXFUSE 和 SSHFS 两个文件,先安装 OSXFUSE ,再安装 SSHFS。

https://osxfuse.github.io/

执行命令

sshfs -p port ranger@xx.xx.xx.xx:/ /Users/ranger/share

卸载时要使用 umount:

umount remote_disk

 

2017年,中国即将发生的50个重大变化!【标记下明年验证】

1、一大批企业将倒闭,而同时一大批人将成为自由职业者;

2、2016年倒闭的是传统制造业,2017年倒闭的是互联网泡沫企业;

3、很多互联网企业开始抢占线下地盘、实体店开始复苏,并和线上深度融合;

4、供应链开始逆袭,消费者开始决定生产者,并且开始参与生产制造环节;

5、中国传统的暴利产品、暴富手段将彻底消失,而产品的厚利时代(增值)到来;

6、企业的核心竞争力不再是关系和资源,而是一个优秀的机制;

7、由于企业越做越纵深,外部竞争越来越少,内部创新的要求却越来越高;

8、美国强力维持传统全球贸易结构,进一步打压中国的电子商务;

9、一部分产品未来进入中国市场,开始被中国贴牌;

10、如何更快、更好的对接到到消费者的需求,成为各大平台的核心任务;

11、房价从三四线城市开始回落,但不是急落;

12、020、P2P等概念将彻底消失在人们视线;

13、融合、跨界、互联依然是企业征战的主题;

14、各地的产业园区开始萧条,特色小镇却迅速成长;

15、中国将进一步成为世界物流、贸易的重要节点;

16、白领这个职业将在中国彻底消失,未来只有创造者;

17、定制化、个性化、个体化是产品三大主题,并且附带着强烈的文化气息;

18、传统创业浪潮已经过去,但新个体时代正在来临;

19、社会分工进一步精细化,冒出更多的垂直领域;

20、2017年是工薪阶层最纠结的一年,是创业者最苦难的一年;

21、中国召开国际性会议的频率进一步增加;

22、中国的经济、金融体系开始和西方分道扬镳,进行自我探索;

23、金融产业开始大众化,让更多的人享受到金融的支持和红利;

24、90后将继续在各个领域引起社会各界的关注;

25、政府将打破选拔、提拔人才的传统惯例,让有才之人获得施展机会;

26、很多国际性快消品牌,将越来越不适应中国的市场;

27、外国的节日在中国欢迎程度开始降低

28、各种APP将大量消失,应用程序如雨后春笋般涌现,人们生活进一步便利化;

29、之前官员因为腐败问题而下台,2017年开始将有官员因为能力问题而下台;

30、2017年中国最大的红利,是重构人与人之间的信任关系。

31、中国会扶持部分二线城市,往一线城市去靠拢;

32、年轻人结婚的意愿越来越弱,老龄化会进一步加剧,养老产业进一步发展;

33、工厂数量在减少,大量蓝领将失业,同时服务业进一步兴起,吸纳大量服务业从业人员;

34、财富分化进一步加大,底层的人们为了出路,会不断的博出位;

35、健康问题、心理问题会越来越凸显,大健康产业会进一步扩大;

36、勤劳虽然不再致富,但勤劳一定能糊口;

37、我们将从自然资源的开发,转向文化资源的开发

38、人们不再研究如何竞争,而是研究如何合作;

39、舆论成为推动社会进步和政策导向的主动力;

40、大量劳动型人口转向智力型人口,因此社会的治理力度要加强;

41、中国北方的经济环境会进一步下降,优秀的人才和资源向南方输送;

42、大量农村的优秀产品,有了更多机会往城市输送;而大量城市的流量,更多的指向了农村;

43、农村的土地正在形成一个市场,农村的活力有一定提升;

44、将出现重组和并购的热潮,股权投资依然是2017年最好的投资;

45、有钱人的财富,将越来越趋向于虚拟,比如估值、市值;

46、一批国产的产品的国际地位将进一步提高;

47、在世界的新技术领域,中国崭露头角的机会越来越多;

48、人与人之间的独立性在增强,人们更加愿意追求内心的幸福;

49、中国的红利:将从制度红利、人口红利,转入到文化红利;

50、中国的竞争力:以前靠自然资源,后来靠制度,现在正切换成靠文明;