自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

localhost01

个人博客:localhost01.cn

转载 Switch的内心世界

为什么要写这篇文章?今儿写代码时,一位前辈看到了我满篇的if+else if,他告诉我说:尽量使用switch来代替if+else if,if+else if效率比switch低,会增加无用的判断!年轻的我差点就信了!那么switch和if+else if的效率问题真的就如他所言?对我来说,这真的是个很有趣的问题!同时我也想要知道,在我们实际开发中,什么时候用switch,什么时候用if+else if合适呢?再后来,就引发了我更多的思考,switch它到底拿着我的判断条件是怎么操作的?人年纪大

2020-07-31 18:21:53 36

原创 今天,咱不讲三国,就聊聊Shiro的反序列化漏洞,以及内存马技术!

Shiro反序列化漏洞漏洞介绍上图为Shiro默认的登录页面,页面可见:Shiro提供了记住我(RememberMe)的功能。然而,Shiro对rememberMe的cookie做了加密处理,shiro在CookieRememberMeManaer类中将cookie中rememberMe字段内容分别进行:序列化、AES加密、Base64编码,三个操作。而在识别身份的时候,则需要对Cookie里的rememberMe字段进行逆操作:Base64解码AES解密反序列化由于AES加密的密钥K

2020-07-15 09:14:05 515

原创 WC!咱平时使用的PDF,原来这么不安全?

早前,在2019年3月初,来自明斯特大学及波鸿鲁尔大学的德国研究人员称,他们已经设法利用新发现的漏洞,并成功地攻破了PDF文件中的数字签名。随后,2019年10月再次披露: 加密PDF存在PDFex漏洞。最后,于2019年12月27号,在36届C3混沌黑客大会上进行了攻破PDF签名和攻破PDF加密两个议题的分享。那么,这次闹得沸沸扬扬的PDF安全事件,到底是怎么一回事儿呢?下面容我细细道来。...

2020-05-22 14:34:40 157

原创 小记:社工一个DNF盗号者

说来惭愧,笔者也喜欢玩玩DNF,这不,今天打团的时候,加了一个群:刚建立不久的一个群,感觉挺好的,里面很多萌新,作为一个喜欢带着他们一起耍。当然里面的管理员和群主,都是不说话的。大概两三天之后吧,突然群里发了一波通知,然后开启了全体禁言:九哥,好熟悉的名字,是那个所谓的《揪出那个发武汉疫情国难财》的九歌?不管嘛,然后这个群众演员“阿龙”也是和九哥一起加进来的,一个卖唱,一个鼓掌的,好不...

2020-03-16 20:56:03 283

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

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

2020-02-23 17:06:40 245

原创 【爬虫】使用八爪鱼爬行百度地图美食店数据

作为资深宅男的我,自然对外面吃、玩的地方了解甚少 -_-! 。那么怎么才能选到好吃的地方呢,这个问题很严峻。既然学了计算机专业这么两年,我想,也许它能帮到我吧,于是乎…下载八爪鱼首先,我下载了一个上手快,门槛儿低的爬虫软件—八爪鱼。很简单,我用它来抓取达州附近所有的美食商铺,最后进行一个筛选,找个性价比高点儿的店铺,就达到我的目的了,O(∩_∩)O~~。开启采集打开八爪鱼采集器,选择高级模...

2019-11-24 22:20:21 349

原创 一次使用MAT进行线上内存泄漏问题排查经历

一、背景首先,发现线上某分析应用出现异常,连续好几天,一直没有分析数据产出。故登陆到线上查看error.log日志,发现:明显是 YCYX-Task 这个线程出现了内存溢出,导致程序假死。 同时查看当前应用内存占用已达到4G:二、排查历程1、初步定位jinfo首先,我们使用jinfo pid查看当前jvm的堆相关参数:可见,最大堆容量为:4G。jstat接下来,我们使用命令js...

2019-11-24 14:56:35 818

原创 1024快乐

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

2019-10-24 01:59:18 658

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

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

2019-08-13 09:21:25 551

原创 面试先准备之“五大关”

一、面试准备关 把自己简历上写的东西回顾一下 有道云笔记回顾一下 浏览器收藏的标签回顾一下 了解、熟悉招聘公司的要求技术栈 以前看过的书,回顾一下二、面试时间点最好上午,精力充沛,脑筋转得快!晴朗天气最好(虽然不易控制)三、面试状态关自信(就算没了解过、没做过,也要给人一种交给我没问题的感觉)人人平等(平起平坐的感觉,不要给人以很低姿态的感觉)普通话标准IT英文...

2019-06-19 20:12:44 198

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

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

2019-04-17 15:43:13 699

原创 【网上的都不靠谱?还是得改源码】用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 283

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

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

2019-03-26 15:02:36 150

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

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

2019-03-17 22:51:45 348

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

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

2019-03-07 11:17:48 690

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

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

2019-03-02 18:36:34 250

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

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

2019-02-21 09:48:31 183

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

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

2019-02-01 16:05:17 3832

原创 『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 572

原创 『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 2169 2

原创 『DNS隧道工具』— dnscat2

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

2019-01-22 13:01:00 4601 1

原创 『DNS隧道工具』— iodine

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

2019-01-21 18:37:56 3400

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

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

2019-01-20 12:06:04 556

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

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

2019-01-10 13:03:26 416

原创 为什么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 485

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

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

2018-12-05 13:23:47 2091

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

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

2018-12-05 10:57:10 188

原创 浅谈Hack:哪里能找到Hacker?

一、说在前面我是一个地地道道的程序员,主语言Java,Python和C#也会一点儿,Hack和算法也会一点儿。Hack方面就一“脚本小子”,简单入门。但是这很困扰我,很多朋友同事会问我:会不会搞菠菜?能不能帮我定位一个人?能不能帮我短信轰炸一个人?帮我盗个号?其实鄙人不善于这些高深的东西,o(∩_∩)o 哈哈!时常也有人找我给他分享一些黑客常逛的网站,很尴尬,鄙人才疏学浅,只懂...

2018-11-30 17:39:21 1556 2

转载 程序员与笛卡尔积

SQL与笛卡尔积首先,先简单解释一下笛卡尔积。现在,我们有两个集合A和B。A = {0,1} B = {2,3,4}集合 A×B 和 B×A的结果集就可以分别表示为以下这种形式:A×B = {(0,2),(1,2),(0,3),(1,3),(0,4),(1,4)};B×A = {(2,0),(2,1),(3,0),(3,1),(4,0),(4,1)};以上A×B和B×A...

2018-11-23 18:47:58 358

原创 Nexus搭建Maven私服全攻略二:安装和配置Nexus3

一、安装Nexus这里我们下载开源版 Nexus OSS。Nexus 提供两种安装包,一种是包含 Jetty 容器的 bundle 包,另一种是不包含容器的 war 包。下载地址:http://www.sonatype.org/nexus/go这里以windows上为例,选择 Windows:在你点击下载之后,会有 Read THE BOOK 的入口和加入 NENUX 社区的入口...

2018-11-22 23:54:16 4007 1

原创 Nexus搭建Maven私服全攻略一:认识Nexus与索引

一、Nexus简介私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件。有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库;否则,私服请求外部的远程仓库,将构件下载到私服,再提供给本地仓库下载。Nexus 专业版是需要付费的,其开源版为 Nexus OSS。Nexus 提供两种安装包,一种是包含 Jetty 容器的 bundle 包,另...

2018-11-22 22:21:01 573 1

原创 工具分享(3):使用Java Swing开发圆形/椭圆公章、私章图片(内附源码)

1、迎合你的需求当你需要一些定制内容的公章或私章图片,刚好你又懂点Java基础知识,那么你可以使用这个工具。2、生成的效果图一览2.1 公章效果图圆形公章:椭圆公章:2.2 私章效果图3.使用方法import cn.localhost01.seal.SealUtil;import cn.localhost01.seal.configuration.Se...

2018-11-12 14:33:36 2381 4

转载 SpringBoot整合Swagger2

背景相信各位在公司写API文档数量应该不少,当然如果你还处在自己一个人开发前后台的年代,当我没说,如今为了前后台更好的对接,还是为了以后交接方便,都有要求写API文档。手写Api文档的几个痛点:文档需要更新的时候,需要再次发送一份给前端,也就是文档更新交流不及时。接口返回结果不明确不能直接在线测试接口,通常需要使用工具,比如postman接口文档太多,不好管理Swagger也就是...

2018-11-09 15:48:59 108

原创 记一次:排查Tomcat跑死问题

背景上周末,我一个朋友来到我家,抛给我一个“Tomcat无缘故跑死”的问题,场景即是:早上启动Tomcat,到了下午8点左右,Tomcat突然崩溃死掉,并且这段时间也没有做一些额外的操作。这种事情,连续出现了好几次。排查由于是不在他的工作环境下,没法远程到服务器查看相关日志等。于是只能拿着他的电脑,本地分析一波。使用VisualVM分析于是,我让他打开VisualVM,进行监测,...

2018-11-08 02:21:06 1157

原创 微服务架构方案-ZeroC IceGrid

title: 微服务架构方案-ZeroC IceGridtags: [Ice,SpringCloud,Dubbo,Python,Java,gRPC]categories:框架技术date: 2018-11-07 00:02:25前言在聊ICE之前,我们说说目前主流的几个微服务架构方案。Spring Boot/Cloud由于 Spring 社区的影响力和 Netflix 的背...

2018-11-07 00:14:23 4830 2

原创 性能分析利器总结二《Arthas》

Arthas先援引官方一段话:Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱。当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?线上遇到某个用户的...

2018-10-27 01:06:41 4225 1

原创 性能分析利器总结一《VisualVM》

VisualVM随着JDK7而出现,位于JDK根目录下的bin目录下。运行环境需JDK1.6及以上,能监控JDK1.4以上版本的应用程序。相比JConsole,感觉功能更强大,且可集成各类插件,使其更强大。Jconsole算是VisualVM的子集吧。另外VisualVM也有JConsole的插件;相比Arthas,它最大的特点肯定就是图形化了。Arthas必须得命令敲着走,且命令众多,不...

2018-10-27 01:05:57 1821 1

原创 浅谈JPA三:开始使用Spring-Data-JPA

抛砖引玉先看一段常用配置文件,看看使用Spring-Data-JPA需要使用到哪些东西吧!<?xml version="1.0" encoding="UTF-8&a

2018-10-27 01:04:37 144

原创 浅谈JPA二:JPA与Hibernate关系

JPA & Hibernate 关系JPA是需要Provider来实现其功能的,Hibernate就是JPA Provider中很强的一个。从功能上来说,JPA现在就是Hibernate功能的一个子集。可以简单的理解为JPA是标准接口,Hibernate是实现及扩展。Hibernate主要是通过三个组件来实现:hibernate-annotation、hibernate-entity...

2018-10-27 01:03:09 296

原创 浅谈JPA一:JPA是什么?

定义JPA 即Java Persistence API。JPA 是一个基于O/R映射的标准规范(目前最新版本是JPA 2.1 )。所谓规范即只定义标准规则(如注解、接口),不提供实现,软件提供商可以按照标准规范来实现,而使用者只需按照规范中定义的方式来使用,而不用和软件提供商的实现打交道。JPA的出现有两个原因:简化现有Java EE和Java SE应用的对象持久化的开发工作;Sun希...

2018-10-27 01:02:18 11504

提示
确定要删除当前文章?
取消 删除