6 Fishing_Fly

尚未进行身份认证

我只是现在很菜。。。(未来会很牛)

等级
博文 172
排名 2w+

mysql数据库删除千万条数据的操作方案,直接delete会很久

在线上有一张表很大,积累了几年的消费数据,现在需要把这张表几年前的数据给清掉,数据量将近1亿,直接按年份将其中的数据delete,你会发现删了几小时都没有返回。这是因为每执行一次delete,需要同时将该行的删除操作记录作为事务记录在日志中保存以便进行回滚。最终采用的方案是:(1)抽取需要保留的数据到备份表中,(2)truncate旧表(3)备...

2019-06-04 13:12:40

6大设计原则之单一职责原则

单一职责原则(SingleResponsibilityPrinciple,SRP)当你跟同事争论的时候冒出一句,你这个设计不符合SRP原则时,那是多么的装比,说不定被你的气势直接压住了,哈哈,开个玩笑,实力才是说话权。单一职责的定义:应该有且仅有一个原因引起类的变更。原话是:Thereshouldneverbemorethanonereasonf...

2019-05-30 21:51:13

GO语言学习——(3) channel之影响发送方的原值

当接收方从通道接收到一个值类型的值时,对该值的修改就不会影响到发送方持有的那个原值。但对于引用类型的值来说,这种修改会同时影响手法双方持有的值。//86_chan传引用类型packagemainimport( "fmt" "time")varmapChan=make(chanmap[string]int,1)funcmain(){ synCha...

2019-05-20 14:48:24

GO语言学习——(2) channel实操之通道阻塞

先初始化一个通道,最大容量是三个元素,当向该通道发送三个值后,该通道已满,再向其发送数据,将会被阻塞。当然,此时你可以从通道中拿出一个数据,那之前的发送数据的goroutine会被唤醒。看一下下面的程序://85_chanbase1packagemainimport( "fmt" "time")varstrChan=make(chanstring,3)...

2019-05-20 14:16:03

GO语言学习——(1) channel入门

(一)简介Go语言所提倡的一句话是:应该以通信作为手段来共享内存,这句话最直接的体现就是channel,它也是Go语言预定义的数据类型之一。channel提供了一种机制,它既可以同步两个并发执行的函数,又可以额昂两个函数通过相互传递特定类型的值来通信。(二)channel的基本概念在go语言中,chnnel既指通道类型,也指代可以传递某种类型的值的通道。通道即某一...

2019-05-20 13:45:31

Leetcode: Remove Duplicates from Sorted Array GO语言实现

Givenasortedarraynums,removetheduplicatesin-placesuchthateachelementappearonlyonceandreturnthenewlength.Donotallocateextraspaceforanotherarray,youmustdothisbymodifyi...

2019-05-17 17:37:57

LeetCode: Remove Nth Node From End of List go语言实现

Givenalinkedlist,removethen-thnodefromtheendoflistandreturnitshead.Example:Givenlinkedlist:1->2->3->4->5,andn=2.Afterremovingthesecondnodefromtheend,t...

2019-05-17 17:14:07

LeetdCode: Reverse Nodes in k-Group go语言

Givenalinkedlist,reversethenodesofalinkedlistkatatimeandreturnitsmodifiedlist.kisapositiveintegerandislessthanorequaltothelengthofthelinkedlist.Ifthenumberof...

2019-05-17 16:18:40

mysql数据库删除千万条数据的操作方案

项目情况是这样的,数据库中有一张计费表,这张表是随着时间无限增长的,数据会越来越多,count一下数据共有8千万条,而现在需要删除2019年之前所有的数据,大概7千多万条。表中有索引。我直接使用DELETEFROMtable_nameWHERErecordtime<"201901-0100:00:00"这相当于愚蠢,因为直到连接断开,操作结果都没有返回...

2019-05-08 11:06:19

k8s Trouble Shooting 故障排除

本文要讲的是k8s的故障排除,比较浅,最近刚入门。主要涵盖的内容是查看k8s对象的当前运行时信息;对于服务、容器的问题是如何诊断的;对于某些复杂的问题例如pod调度问题是如何排查的。1、查看系统的Event事件在对象资源(pod,service,RC,node,namespace,deployment等)运行有问题时,例如pod创建后没有成功运行,都应该查看k8s对象的当前...

2019-04-12 10:59:25

刚复制的vm workstation 虚机机,在别人机器上启动时报H:\centos-6.0-710\CentOS 64 位.vmdk”或它所依赖的某个快照磁盘 ” 原因: 未能锁定文件”

打不开磁盘“H:\centos-6.0-710\CentOS64位.vmdk”或它所依赖的某个快照磁盘”原因:未能锁定文件”这主要是非正常关虚拟机造成的,具体原因如下:虚拟机为了防止有多虚拟机共用一个虚拟磁盘(就是后缀为.vmdk那个文件)造成数据的丢失和性能的削弱,每次启动虚拟机时会给每个虚拟磁盘加一个磁盘锁(也就是后缀为.lck的那个文件夹)对虚拟磁盘文件进行锁定保...

2019-03-09 16:16:51

《Head First设计模式》之命令模式

  命令模式就是将方法调用(Methodinvocation)封装起来。通过封装方法调用,我们可以把运算块包装成形,所以调用此运算的对象不需要关心事情是如何进行的,只要知道如何使用包装成形的方法来完成它就可以了。通过封装方法调用,可以用在以下场景:记录日志或者重复使用这些封装来实现撤销(undo)。  我对于命令模式的理解是:当我需要做一件事的时候,我只需要给出一个命令,这个命令中的...

2019-01-20 15:00:01

mybatis 会将数值0识别成空字符串

   今天遇到一个问题,我在用java的BigDecimal对象时,值是0.00000;该对象不是空的,是new出来的,我需要将该值插入数据库,数据库对于该值的接收字段类型是decimal。我使用的Mybatis。mybatis中的语句大致如下:UPDATEuser_consumption <trimprefix="SET"suffixOverrides=...

2018-11-09 09:37:56

创建高性能的索引

   最近在看《高性能MySQL》现在把自己读了第五章——创建高性能的索引,做的读书笔记分享给大家,里面写的主要是这一章节的要点,先分享,大家一起学习,后面会出一篇博客,详细讲讲。建议将图片下载下来,放大看,比较大。也可以去下面这个地址下载pdf文件。pdf文件下载 ...

2018-11-01 22:42:34

Java 通过Future来对任务进行取消

   本节我们将通过Java中的Future实现对于提交的任务进行取消。ExecutorService.submit将返回一个Future来描述任务,Future拥有一个cancel方法,该方法带有一个boolean类型的参数mayInterruptIfRunning,表示取消操作是否成功(这个参数只是表示任务是否能够接收中断,而不是表示任务是否能检测并处理中断)。如果mayInterrup...

2018-10-14 18:15:52

java volatile变量及其使用场景

java中的一种稍弱的同步机制,就是volatile变量,用于确保将变量的更新操作通知到其他线程。变量声明为volatile后:(1)编译器与运行时都会注意到这个变量是共享的,因此不会将该变量上的操作与其他内存操作一起重排序(重排序不懂的,可以自行百度,需要理解)。(2)volatile变量不会被缓存在寄存器或对其他处理器不可见的地方因此volatile变量总是会返回最新的值。...

2018-10-14 15:59:05

java 线程池初步涉足

  先看以下代码,是我们创建线程池的一种方式:ExecutorServicenewCachedThreadPool=Executors.newCachedThreadPool(); 可以进入Executors类看一下,java创建线程池的四种方式,分别有以下四个大类:(1)newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲...

2018-09-15 12:25:03

telnet命令的简单使用

telnet10.128.152.216379为什么需要telnet?  telnet就是查看某个端口是否可访问。我们在搞开发的时候,经常要用的端口就是8080。那么你可以启动服务器,用telnet去查看这个端口是否可用。...

2018-09-12 23:22:58

java socket demo及其缺点

传送IO特点阻塞点server.accept();inputStream.read(bytes);单线程情况下只能有一个客户端用线程池可以有多个客户端连接,但是非常消耗性能。因为每次来一个连接就回去专门新建一个线程去处理。虽然newCachedThreadPool()所创建的线程可以在一定时间内回收已经空闲的线程,但是在高并发情况下,仍然会因为创建太多的线程而撑爆内存。代码...

2018-09-12 23:12:42

Java 确定线程池中工作线程数的大小

以问答形式展开,会更有针对性:1、工作线程是不是越多越好?   不是。a、服务器cpu核数有限,所以同时并发或者并行的线程数是有限的,所以1核cpu设置1000个线程是没有意义的。 b、线程切换也是有开销的。频繁切换线程会使性能降低。2、调用sleep()函数的时候,县城是否会占用着CPU?  不占用,sleep()函数切换时会把cpu让出来。accept()阻塞和rec...

2018-09-12 16:20:17
奖章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周上午根据用户上周的博文发布情况由系统自动颁发。