Bugs

微笑的周末


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • github

MySql 日常指导,及大表优化思路

发表于 2018-08-23 | 分类于 MySQL
字数统计: 5.9k 字 | 阅读时长 ≈ 20 分钟
当MySQL单表记录数过大时,增删改查性能都会急剧下降 单表优化除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的表在千万级以下,字符串为主的表在五百万以下是没有太大问题的。 而事实上很多时候 MySQL 单表的性能依然有不少优化空间,甚至能正常支撑千万级以上的数据量。 字段 尽量使用 TINYINT、 SMALLINT、 MEDIUM_INT 作为整数类型而非 INT,如果非负则加上 UNSIGNED VARCHAR 的长度只分配真正需要的空间 使用枚举或整数代替字符串类型 尽量使用 TIMESTAMP 而非 DATETIME 单表不要有太多字段,建议在 20 以内 避免使用 NULL 字段,很难查询优化且占用额外索引空间 用整型来存 IP 索引 索引并不是越多越好,要根据查询有针对性的创建,考虑在 WHERE 和 ORDER BY命令上涉及的列建立索引,可根据 EXPLAIN 来查看是否用了索引还是全表扫描 应尽 ...
阅读全文 »

Redis单线程,高并发

发表于 2018-08-22 | 分类于 redis
字数统计: 2.4k 字 | 阅读时长 ≈ 8 分钟
Redis是单线程的,但Redis为什么这么快? Redis是什么,Redis为什么这么快、然后在探讨一下为什么Redis是单线程的? 一.Redis简介Redis是一个开源的内存中的数据结构存储系统,它可以用作:数据库、缓存和消息中间件。 它支持多种类型的数据结构,如字符串(String),散列(Hash),列表(List),集合(Set),有序集合(Sorted Set或者是ZSet)与范围查询,Bitmaps,Hyperloglogs 和地理空间(Geospatial)索引半径查询。其中常见的数据结构类型有:String、List、Set、Hash、ZSet这5种。 Redis 内置了复制(Replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(Transactions) 和不同级别的磁盘持久化(Persistence),并通过 Redis哨兵(Sentinel)和自动分区(Cluster)提供高可用性(High A ...
阅读全文 »

Shell编程

发表于 2018-08-19 | 分类于 Linux
字数统计: 1.1k 字 | 阅读时长 ≈ 4 分钟
基础变量1.定义变量实例: 1234#变量名一般都是由字母、数字、下划线组成的,变量名不能以数字开头变量名=0变量名='xxxx'变量名="yyyy" 变量的内容可以用单引号、双引号引起来,同时也可以不加引号,但是这三者的含义是不一样的 1.当我们不加单引号时必须是连续的字符串才可以;如果加了''号那么结论是当变量名写什么那么它就会输出什么 2.""这种定义的方式特点是:输出变量内容时引号变量及命令会经过解析后在输出 123变量名=`ifconfig`变量名=$("ifconfig")#可以执行ifconfig的命令 同时我们也可以在命令段的前后加反撇号 1IP=`ifconfig` 注意:在=之后没有空格,当变量名称容易和紧跟其后的其他字符混淆时,我们可以用{}来解决 2.特殊变量在shell中存在着一些特殊而又重要的变如:$1 $0 $#,我们称为特殊的位置变量要从命令行,函数,脚本,等传递参数时,就需要在shell脚本中使用位置参数 ...
阅读全文 »

Python设计模式

发表于 2018-08-16 | 分类于 Python
字数统计: 6.9k 字 | 阅读时长 ≈ 33 分钟
Python设计模式1. The Fctory Pattern(工厂模式: 解决对象创建问题)先来看三种创建模式中的第一种工厂模式。 解释:处理对象创建,客户端可以申请一个对象而不用知道对象被哪个class创建。可以方便地解耦对象的使用和创建。有两种实现,工厂方法和抽象工厂. Method(工厂方法):执行单独的函数,通过传参提供需要的对象的信息。通过一个demo看看例子: 1234567891011121314151617181920212223242526272829303132import jsonimport xml.etree.ElementTree as etreeclass JSONConnector: def __init__(self, filepath): self.data = dict() with open(filepath, mode='r', encoding='utf8') as f: self.da ...
阅读全文 »

Redis延迟任务

发表于 2018-08-14 | 分类于 redis
字数统计: 2.1k 字 | 阅读时长 ≈ 9 分钟
场景 在开发中,往往会遇到一些关于延时任务的需求。例如 生成订单30分钟未支付,则自动取消 生成订单60秒后,给用户发短信 对上述的任务,我们给一个专业的名字来形容,那就是延时任务。那么这里就会产生一个问题,这个延时任务和定时任务的区别究竟在哪里呢?一共有如下几点区别 定时任务有明确的触发时间,延时任务没有 定时任务有执行周期,而延时任务在某事件触发后一段时间内执行,没有执行周期 定时任务一般执行的是批处理操作是多个任务,而延时任务一般是单个任务 案例分析 判断订单是否超时为例,进行方案分析 JDK的延迟队列思路 该方案是利用JDK自带的DelayQueue来实现,这是一个无界阻塞队列,该队列只有在延迟期满的时候才能从中获取元素,放入DelayQueue中的对象,是必须实现Delayed接口的。 其中Poll():获取并移除队列的超时元素,没有则返回空 take():获取并移除队列的超时元素,如果没有则wait当前线程,直到有元素满足超时条件,返回结果。 实现 定义一个类O ...
阅读全文 »

Python面试题之一

发表于 2018-08-09 | 分类于 Python
字数统计: 4.4k 字 | 阅读时长 ≈ 18 分钟
Python新手在谋求一份Python编程工作前,必须熟知Python的基础知识。编程网站DataFlair的技术团队分享了一份2018年最常见Python面试题合集,既有基本的Python面试题,也有高阶版试题来指导你准备面试,试题均附有答案。面试题内容包括编码、数据结构、脚本撰写等话题。本文为上篇。 Q 1:Python有哪些特点和优点? 作为一门编程入门语言,Python主要有以下特点和优点: 可解释 具有动态特性 面向对象 简明简单 开源 具有强大的社区支持 当然,实际上Python的优点远不止如此,可以阅读该文档,详细了解:戳这里 Q 2:深拷贝和浅拷贝之间的区别是什么? 答:深拷贝就是将一个对象拷贝到另一个对象中,这意味着如果你对一个对象的拷贝做出改变时,不会影响原对象。在Python中,我们使用函数deepcopy()执行深拷贝,导入模块copy,如下所示:12>>> import copy>>> b=copy.deepcopy( ...
阅读全文 »

Java高并发-基础

发表于 2018-08-09 | 分类于 java
字数统计: 4 字 | 阅读时长 ≈ 1 分钟
线程同步
阅读全文 »

Java高并发-容器

发表于 2018-08-07 | 分类于 java
字数统计: 6.1k 字 | 阅读时长 ≈ 25 分钟
Java高并发-容器前言:在java开发中我们肯定会大量的使用集合,在这里我将总结常见的集合类,每个集合类的优点和缺点,以便我们能更好的使用集合。下面我用一幅图来表示其中淡绿色的表示接口,红色的表示我们经常使用的类 单列模式内部类-线程安全的单列模式 1234567891011121314151617181920212223public class Singleton{ private Singleton(){ System.out.println("Singleton"); } private static class Inner { private static Singleton s = new Singleton(); } private static Singleton getSingle(){ return Inner.s; } public static void main ...
阅读全文 »

Java高并发-线程池

发表于 2018-08-06 | 分类于 java
字数统计: 2.5k 字 | 阅读时长 ≈ 9 分钟
Executor控制线程的启动、执行和关闭,可以简化并发编程的操作。 通过Executor来启动线程比使用Thread的start方法更好,除了更易管理,效率更好(用线程池实现,节约开销)外,还有关键的一点:有助于避免this逃逸问题。 Executor接口中之定义了一个方法execute(Runnable command),该方法接收一个Runable实例,它用来执行一个任务,任务即一个实现了Runnable接口的类。 ExecutorServiceExecutorService接口继承自Executor接口,它提供了更丰富的实现多线程的方法: 123Future<?> submit(Runnable task)<T> Future<T> submit(Callable<T> task) ExecutorService的生命周期包括三种状态:运行、关闭、终止。创建后便进入运行状态,当调用了shutdown()方法时,便进入关闭状态,此时意 ...
阅读全文 »

Idea快捷键

发表于 2018-08-05 | 分类于 idea
字数统计: 1.3k 字 | 阅读时长 ≈ 5 分钟
IntelliJ Idea 常用快捷键列表12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182Ctrl+Shift + Enter,语句完成“!”,否定完成,输入表达式时按 “!”键Ctrl+E,最近的文件Ctrl+Shift+E,最近更改的文件Shift+Click,可以关闭文件Ctrl+[ OR ],可以跑到大括号的开头与结尾Ctrl+F12,可以显示当前文件的结构Ctrl+F7,可以查询当前元素在当前文件中的引用,然后按 F3 可以选择Ctrl+N,可以快速打开类Ctrl+Shift+N,可以快速打开文件Alt+Q,可以看到当前方法的声明Ctrl+P,可以显示参数信息Ctrl+Shift+Insert,可以选择剪贴板内容并插入A ...
阅读全文 »
1…78910

Dean Wang

92 日志
20 分类
36 标签
GitHub E-Mail
© 2018 Dean Wang | Site words total count: 292.5k
由 Hexo 强力驱动
|
主题 — NexT.Mist v5.1.4