4 冉椿林博客

尚未进行身份认证

个人博客:localhost01.cn

等级
TA的排名 1w+

1024快乐

各位程序员大大们,1024快乐噢!~

2019-10-24 01:59:18

如何避免回表查询?什么是索引覆盖? | 1分钟MySQL优化系列

《tail》留了一个尾巴:selectid,namewherename='shenjian'selectid,name,sexwherename='shenjian'多查询了一个属性,为何检索过程完全不同?什么是回表查询?什么是索引覆盖?如何实现索引覆盖?哪些场景,可以利用索引覆盖来优化SQL?这些,这是今天要分享的内容。画外音:本文试验基于MySQL5.6-...

2019-08-13 09:21:25

用Swing写了一个Class编辑器:ClassEditor

一、它是什么?顾名思义,它是一个用来编辑字节码的简单的小工具。二、它能干嘛?字节码编辑器?据我所知,修改字节码相当麻烦。一般情况下,我们需要:将jar包用JD-GUI等工具,将所有Class文件全部反编译成Java文件;外网安装Idea,将该Java项目拖到Idea;解决各种Maven依赖,但有些依赖在内网Maven仓库(common-parent.pom...

2019-04-17 15:43:13

【网上的都不靠谱?还是得改源码】用Javasisst的字节码插桩技术,彻底解决Gson在转Map时,Int变成double问题

一、探究原由首先申明一下,我们要解决的问题有两个:Json串转Map时,Int变double问题Json串转对象时,对象属性中的Map,Int变double问题然后,我们来了解一下,Gson实现Json反序列化的源码:Gson内部会维护一个类型适配器集合,里面大概有十多个内置的TypeAdapter。涵盖了八大基本类型的TypeAdapter,并且还有一个ObjectTypeAda...

2019-03-28 13:48:11

【正则助我,事半功倍】好用的几个正则

1、时间串转时间varstr="20170818102656";//这种时间串,有时总能遇到。还可能是其他的,如2017.08.1810:26:56str=str.replace(/^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/g,"$1/$2/$3$4:$5:$6");vardate=newDate(str);2、恶心...

2019-03-26 15:02:36

【面试必读】求你们不要再问我Java中的锁及优化了?

一、Java线程阻塞的代价Java的线程是映射到操作系统原生线程之上的。如果要阻塞或唤醒一个线程就需要操作系统介入,需要在户态与核心态之间切换,这种切换会消耗大量的系统资源,因为用户态与内核态都有各自专用的内存空间,专用的寄存器等,用户态切换至内核态需要传递给许多变量、参数给内核,内核也需要保护好用户态在切换时的一些寄存器值、变量等(保护现场),以便内核态调用结束后切换回用户态继续工作。二、J...

2019-03-17 22:51:45

感谢CSDN:获得CSDN的2018博客之星入围奖(前50名)

感谢一直相伴的CSDN,及为我投票的各位小伙伴们!2019,我们继续努力!

2019-03-07 11:17:48

一张时序图看懂:脏读、不可重复读

[必读]共享锁与排他锁首先说明:数据库的增删改操作默认都会加排他锁,而查询不会加任何锁。共享锁对某一资源加共享锁,自身可以读该资源,其他人也可以读该资源(也可以再继续加共享锁,即共享锁可多个共存),但无法修改。要想修改就必须等所有共享锁都释放完之后。语法为:select*fromtablelockinsharemode排他锁对某一资源加排他锁,自身可以进...

2019-03-06 19:32:42

才从Guava中明白了一件事:不可变特性与防御性编程

一、面试常谈:String类与不可变特性问:String类是可变的吗?答:emm……由于String类的底层是final关键字修饰,因此它是不可变的。问:它被设计为不可变的好处有哪些呢?答:节约内存大家都知道,编程的时候,String类是大量被使用的(试着用VisualVm等工具分析堆,你会发现永远char[]类型是占用空间最多的。巧了,String类的底层实现也正是char[]...

2019-03-02 18:36:34

【吐血推荐】技术人员的发展之路

转自:https://coolshell.cn/articles/17583.html2012年的时候写过一篇叫《程序算法与人生选择》的文章,我用算法来类比如何做选择,说白了就是怎么去计算,但是并没有讲程序员可以发展的方向有哪些。所以,就算是有这些所谓的方法论,我们可能对自己的发展还是会很纠结和无所事从,尤其是人到了30岁,这种彷徨和迷惑越来越重。虽然我之前也写过一篇《编程年龄和编程技能》的文...

2019-02-21 09:48:31

『DNS隧道工具之渗透神器』— cobalt strike

一、入坑必读着重说明:该工具的定位,是一个后渗透协同APT工具,主要用于内网的渗透测试和作为apt的终端控制。它不是一个单纯的DNS隧道工具,把它放在此处讲,只是因为它也支持DNS隧道功能而已,所以下文也只会讲讲它的DNS隧道能力!1、简介cobaltstrike(以下简称CS)作为一款协同APT工具,功能十分强大,针对内网的渗透测试和作为容易的控制终端功能,使其变成众多APT组织的首选。...

2019-02-01 16:05:17

『DNS隧道工具』— ozymandns

一、入坑必读1、简介ozymandns较早的一个DNS隧道工具,它基于perl开发,使用较复杂。最初版本只有0.1,有各个爱好者的修改版,如via1,via2,via3等。它的主要功能就是结合ssh来做通道,因此这也是它的一大坑点,下面会讲到。数据请求用base32编码,响应使用base64编码。使用热度:★★☆☆☆2、专业词Type:DNS解析的类型,常见的有:A、CNA...

2019-01-25 15:29:49

『DNS隧道工具』— dns2tcp

一、入坑必读1、简介dns2tcp是一个利用DNS隧道转发TCP连接的工具,使用C语言开发。使用热度:★★★★☆2、专业词主控机:黑客方被控机:受害者Type:DNS解析的类型,常见的有:A、CNAME、MX、TXT……直连模式:客户端直接向指定IP的恶意DNS服务器发起DNS解析请求中继模式:像我们平时上网一样,DNS解析先经过互联网的迭代解析,最后指向我们的恶意DNS服...

2019-01-22 18:45:31

『DNS隧道工具』— dnscat2

一、入坑必读1、简介Dnscat2是一个DNS隧道工具,通过DNS协议创建加密的命令和控制通道,它的一大特色就是服务端会有一个命令行控制台,所有的指令都可以在该控制台内完成。包括:文件上传、下载、反弹Shell……使用热度:★★★★☆2、专业词主控机:黑客方被控机:受害者Type:DNS解析的类型,常见的有:A、CNAME、MX、TXT……3、放哪儿主控机被控机...

2019-01-22 13:01:00

『DNS隧道工具』— iodine

一、入坑必读1、简介因为iodine(碘)的原子序数为53,这恰好是DNS端口号,故取名为iodine。iodine基于C语言开发,分为服务端程序iodined和客户端程序iodine,kali系统内置。服务端程序iodined提供特定域名的DNS解析服务。当客户端请求该域名的解析,就可以建立通道连接。支持EDNS、base32,base64,base128等多种编码规范,更...

2019-01-21 18:37:56

《码农爱上黑客》之“如何Web安全”!

从勒索病毒就可以看出,其实病毒离我们并不远……一、引言随着对黑客浅略地了解,慢慢知道了这个鬼东西是一个多么可怕的存在。希望能通过这篇文章,让一些和之前的我一样没有对黑客一词引起重视的人,加深一下对这方面的了解和关注!接下来就以第一人称“我们”来代表黑客,谈谈Web安全吧(个人拙见)!二、小试验为达到抛砖引玉的效果,我们来动手做个小试验,用简单的方法进入网站后台管理系统,只需三步:...

2019-01-20 12:06:04

Doker使用小结及常用软件安装

registry-1.docker.io/v2地址超时换用国内的daocloud仓库:bashvi/etc/docker/daemon.json{"registry-mirrors":["https://registry.docker-cn.com"]}system

2019-01-10 13:03:26

为什么arrayList.removeAll(set)的速度远高于arrayList.removeAll(list)?

1、引言我们知道,对于集合(Collection)都有一个抽象方法removeAll(Collection<?>c)!但是你可知道,在集合数据比较多的情况下,ArrayList.removeAll(Set)的速度远远高于ArrayList.removeAll(List)!我简单测试了一下,从1百万数据中remove掉30万

2018-12-29 11:41:45

解决VisualVm的Profiler一直转圈:正在连接到目标 VM...

解决办法启动时带上:-J-Dorg.netbeans.profiler.separateConsole=true//-J即表示JVMOPTION:允许带JVM参数启动即可解决!附:带PID方式启动VisualVM方法:jps-m//先查到你的进程pidjvisualvm--openpid25454//注意,该方式启动,界面没有profiler功能...

2018-12-05 13:23:47

分布式锁之Redis:正确的实现方式

一、前言分布式锁一般有三种实现方式:数据库乐观锁;基于Redis的分布式锁;基于ZooKeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实现却有着各种各样的问题,为了避免误人子弟,本篇博客将详细介绍如何正确地实现Redis分布式锁。二、可靠性首先,为了确保分布式锁可用,我们至少要确保锁的实现...

2018-12-05 10:57:10

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 领英
    领英
    绑定领英第三方账户获取
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 脉脉勋章
    脉脉勋章
    绑定脉脉第三方账户获取
  • 新人勋章
    新人勋章
    用户发布第一条Blink获赞超过3个即可获得
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。