- 博客(67)
- 资源 (4)
- 收藏
- 关注

原创 ThreadLocal深度解析
在网上见过了太多了关于ThreadLocal的文章,各说各的理,都说是线程安全的,但又说不出哪里体现出线程安全,又说内存异常,又很难解释为什么会造成内存溢出,算了,还是自己看源码研究把,这篇博客就是自己在这个背景下完成的。1. ThreadLocal的用途1.1 保存线程的上下文信息,在任意需要的地方可以获取,但不被多线程共享由ThreadLocal的特性可知,在同个线程里面,针对同个...
2020-04-01 16:56:07
508

原创 简单的ELK搭建
1. 前言针对nginx的访问日志需要进行一个近实时的监控,以便统计用户的访问情况,包括用户的请求IP,请求数据等。因为服务器是和负载均衡用的是阿里云的,阿里云本身也有提供针对负载均衡的日志统计功能,但是作为一个通用日志其是有严重缺陷的:无法收集用户自定义的请求头(我们的实际情况是通过一个自定义的请求头来做用户的身份识别,请求头有用户的唯一识别信息)无法获取到用户的请求数据($requ...
2019-11-22 15:05:15
1618

原创 jenkins配置码云自动部署
1. 需求背景公司有后台项目和前端项目,后台和前端是分开部署的,后台是用svn进行代码管理,并且通过jenkins进行持续集成和构建,但是前端还是用着最原始的方式通过上传js,html文件到web服务器进行发布,主要是造成了以下的问题:部署麻烦,需要知道本地文件所在目录和线上文件所在目录,然后进行上传容易遗漏,在文件多的时候上传会有遗漏情况发生,导致线上出问题发布流程不易管理,无法追...
2019-05-16 15:45:29
10309
13

原创 VisualVM监控远程阿里云主机
一、前言(简称废话)VisualVM是到目前为止随JDK发布的功能最强大的运行监视和故障处理程序,它除了运行监视、故障处理外,还提供了很多其他方面的性能。如性能分析(Profiling),VisualVM的性能分析功能甚至比起JProfiler等专业且收费的Profiling工具都不会逊色多少,而且VisualVM还有一个很大的优点:不需要被监视的程序基于特殊Agent运行,因此它对应用程序的...
2018-10-05 23:24:18
4039
5
原创 CKEditor搭建&CKEditor接入阿里云oss上传图片
一. 前言目前公司使用的富文本编辑器是百度的UEditor,目前其最新的版本停留在了16年的版本,基本算是无人维护的了,作为一个传统但是强劲的富文本编辑器,UEditor在初期的确是很多学生或者小型创业公司后台开发的首选富文本编辑器,但是随着业务的深入,UEditor的问题也暴露出来了。- 代码结构复杂,无法很好地自定义和扩展(这个是很重要的原因,改起来真的很麻烦)- bug多,不够稳定...
2019-04-25 15:11:03
3410
原创 Java NIO分散读 聚集写
#Java NIO分散读 聚集写Java NIO 开始支持scatter/gather(分散读/聚集写),scatter/gather用于描述从channel中读取或者写入到channel的操作。1. 概念分散(scatter)从channel中读取是指在读操作的时候将读取的数据写入到多个buffer中,因此,channel将读取到的数据分散到多个buffer中。当一个buffer被...
2018-12-20 19:01:09
346
原创 重识NIO
#NIO实战1. 重识socket编程1.1 概念传统的socket编程是bio的,是阻塞的,也就是说在单线程的情况下,serversocket只可以接受一个客户端连接,有个处理方法是,把serversocket设置为多线程的,即每次都创建一条线程来处理客户端的业务,这样serversocket可以连接多个客户端。但是线程数的暴增会增加cpu的负担,而且线程的来回切换也会降低性能。1...
2018-12-20 18:19:26
1134
原创 Jenkins执行scp时提示权限不足
1. 问题最近使用jenkins进行项目打包,因为代码服务器和应用服务器在两台不同的机器上,在代码服务器打包好之后要使用scp命令copy搭配用于服务器上,在jenkins中使用scp命令时,总是提示权限不足,如下图所示:2. 解决方法在网上通过搜索发现,要在jenkins配置代码服务器的public-key。过程如下:2.1 复制jenkins服务器用户目录下的.ssh/id...
2018-12-19 10:20:29
4949
转载 Linux的IO模型
#Linux的IO模型###1 、IO模型linux系统IO分为内核准备数据和将数据从内核拷贝到用户空间两个阶段。这张图大致描述了数据从外部磁盘向运行中程序的内存中移动的过程。2、 用户空间和内核空间现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟储存空间)为4G(2的32次方)。操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,...
2018-12-12 20:26:57
367
原创 dubbo学习笔记(二)
#dubbo学习笔记(二)一. 注册中心使用redis1.1 环境搭建redis没有username,但是redis作为注册中心,在实例化URL时会判断username是否为空,如果为空会报错<!--redis没有username,所以username随便写即可,如果不写或者为空会报错--> <dubboi:registry protocol="redis...
2018-12-07 18:51:30
424
原创 dubbo学习笔记(一)
#dubbo1.dubbo的hello world## 客户端启动之后,服务端打印的请求日志## 注册信息[DUBBO] Receive multicast message: register consumer://192.168.1.180/zexin.dubbo.server.UserManager?application=dubbo-client&category=con...
2018-12-04 21:30:14
458
原创 记一次m3u8文件转mp4的经历
首先在相应的网页下载m3u8文件,一直播的视频格式就是这样的。下载下来后你会发现里面的格式如下图所示:这里面的ts文件就是视频的碎片文件,但是这个是相对路径,怎么获取到绝对路径呢?以一直播为例,我下载m3u8的文件地址为“http://alcdn.hls.xiaoka.tv/2018119/ff3/7c6/-uesBLqlm9rMc6Fw/index.m3u8”,ts文件的绝对地址就是...
2018-11-10 11:19:21
18679
原创 JAVA实现GMT转换北京时间
简单粗暴上代码,把获取到http的响应头的GMT时间转换成北京时间 String urlStr = "http://aaa.bbb.cc/a.pdf"; Set<String> headSet = new HashSet<>(); headSet.add("Last-Modified"); Map<String,...
2018-10-23 14:29:23
8279
1
原创 VisualVm安装插件失败
打开VisualVM,点击工具=》插件-》可用插件报错,说叫你检查代理设置或稍后重试。当前该服务器不可用。 您可能还需要确保防火墙不会阻塞网络通信。他没说错,就是你的插件路径不可用,你可以先关闭防火墙,但还是一样的错,有503,连接超时等等,解决办法。 第一执行网址: https://visualvm.github.io/pluginscenters.html 第二找到对应的j...
2018-10-17 09:59:31
4107
2
原创 Spring不加@EnableScheduling实现定时任务
先上一段前同事写的代码,看完下面的代码,你可能会想,我滴天啊,这个类上是不是少了个@EnableScheduling注解,不然这个定时任务怎执行呢?然并卵,这个定时任务真的执行了,我僵住了。为了找这个原因,百度,谷歌我都搜了好多遍,都没能找到如何在不加@EnableScheduling的前提下进行定时任务。靠人不如靠自己,源码走起。@Service("visitcountService...
2018-08-02 12:03:09
10150
8
原创 JProfile的使用和远程监控
本文是篇转载文。服务器的jprofile是不需要秘钥的,如果出现了jprofile链接不上的情况,请检查你的防火墙,开启相应的端口1. 想学习JProfile的可以参考以下网址:https://www.cnblogs.com/AmilyWilly/p/7272160.html?utm_source=itdadao&utm_medium=referral2. 想学习如何监...
2018-07-30 14:39:42
1662
原创 安装Elasticsearch head插件
1、下载head插件wget https://github.com/mobz/elasticsearch-head/archive/master.zip2、解压插件unzip elasticsearch-head-master.zip3、进入到head目录下cd elasticsearch-head-master4、安装nodejs:需要root...
2018-07-14 15:46:18
421
原创 SpringMVC配置Swagger2
先把配置清单摆上,然后再讲下再配置的时候遇到的坑1. pom配置<!-- 这里有几点需要注意的,就是jackson的版本号与swagger的版本号问题,我尝试过jackson的版本是2.4,然后swagger的版本是2.7的,配置不成功,后面把swgger的版本号降成2.4才可以。下面的jackson不需要全部配置,只需要配置jackson-databind即可...
2018-07-12 17:44:12
14578
2
原创 JS的四则运算
JS在计算小数的时候有时会出现精度问题,相信很多人有遇到过,今天特地总结一下。## 问题 ##0.1 + 0.2 = 0.300000000000000040.1 * 0.2 = 0.020000000000000004......为什么会出现这样的情况呢?浮点数值的最高进度是17位小数,但在进行运算的时候其精确度却远远不如整数;整数在进行运算的时候都会转成10进制; 而Java和J
2018-01-09 09:24:25
3408
2
原创 Mac下使用自带终端SSH功能
1. 建立远程连接1.1 打开终端,建立远程连接1.2 加入新的远程连接1.3 输入正确的IP,然后输入密码即可连接———这是一条优雅的分割线————— 注意:可能有人好奇我的IP怎么是字符串的,是因为我在ssh的配置文件中做了映射配置,具体如下2. 连接设置别名使用vi命令编辑一下~/.ssh/config这个文件(如果目录下没有这个文件,可以新建一个),接着按下面格式添加内容:host s
2017-10-05 19:20:30
35035
转载 Mac OS X - 重置 MySQL Root 密码
转载来自:http://blog.youkuaiyun.com/soft2buy/article/details/50223373 Mac OS X - 重置 MySQL Root 密码您是否忘记了Mac OS 的MySQL的root密码? 通过以下4步就可重新设置新密码:停止 mysql server. 通常是在 ‘系统偏好设置’ > MySQL > ‘Stop MySQL Server’打开终端,输
2017-10-04 16:40:31
530
转载 单例模式与静态变量的区别
单例的特点:1、保证某类只存在唯一实例。2、该类本身完成自身的初始化。3、获取该唯一实例的方式非常明确,可以通过该类本身定义的静态方法getInstance()获取该类的唯一实例引用。静态变量定义某类的实例引用特点:1、该类的实例引用的静态变量可定义在任何文档类当中。2、获取该类的实例引用的静态变量,可以通过定义该静态变量的类名通过点语法进行访问该引用。3、任何位置可以对该静态变量进行重新赋值。通过
2017-04-03 11:02:21
4107
转载 java操作csv文件(读、写)
今天在做项目的时候,发现使用POI无法解析以csv文件结尾的文件,虽然csv文件能用Excel打开,但是csv文件没有像Excel一样有规定的电子表格形式,故使用POI无法解析csv文件,在网上找了一下,发现java有提供javacsv文件来帮忙解析csv文件。 CSV是Comma Separated Values(逗号分隔值)的英文缩写,通常都是纯文本文件。首先先来了解csv文件的基本格式:
2017-03-17 08:07:54
13643
原创 Eclipse配置Resin应用服务器
1、Eclipse安装相应的Resin插件 http://caucho.com/eclipse 访问这个链接,如果出现如下图所示,说明该链接没失效,我们就可以在Exlipse中进行插件安装了打开Eclipse的Help–>Install New Softwarem,然后点击下图的标红处 然后点击add,并且输入名字和location,location就是上提到的插件地址 然后点击“OK”
2017-02-19 01:08:46
6640
转载 antcall的 用法
前言 AntCall 任务的作用是允许在一个target的执行过程中调用并执行其他的target。例如,在打包项目前需要对项目进行编译,那么可以在打包项目的target中通过AntCall任务使得编译的target先执行。当然这种情况也可以通过target间设置depends属性来实现。AntCall任务必须在target元素内执行,这个任务不能在target元素外执行。1、antcall T
2017-01-21 17:43:32
3477
原创 在Linux中部署web项目 java.util.zip.ZipException: error in opening zip file
在Linux中部署web项目 首先在eclipse中把项目导出成war文件,然后通过SecureCRT上传到tomcat的webapp下,启动tomcat,tomcat会去读取webapp下面的war文件并解压 在项目启动的时候,报了java.util.zip.ZipException: error in opening zip file的异常,无法解析war文件,后来发现是因为我在上传
2017-01-20 23:58:02
1834
原创 Linux(CentOs7)下安装tomcat
1、检查环境 输入 java -version查看是否有java的环境,如果没有的话请自行安装,可参考我的另一篇博客 http://blog.youkuaiyun.com/u010004317/article/details/546273382、安装tomcat 在官网下载tomcat,这里是1.8下载完成后,通过SecureCRT等远程连接软件,将该压缩包上传到虚拟机的Linux中,解压到/us
2017-01-20 00:51:05
441
原创 Linux(CentOs7)安装jdk
检查环境 检查自己的Linux环境是是否有配置jdk,输入“java -version”,如果有配置的话,结果应如下图所示: 如果没有java环境,需要先配置java环境,再配置tomcat,因为Oracle官网不提供jdk1.7了,所以我用的是jdk1.8来安装的(1)在Oracle官网下载jdk 通过SecureCRT这类远程连接软件,将该jdk压缩包上传到虚拟机的Linux中
2017-01-20 00:35:31
562
原创 MySQL的跨年周统计问题(%X-%V)
MySQL的跨年周统计问题 最近在做项目的时候,发现了一个报表在进行周统计并且跨年的时候会出现问题,具体问题截图如下:(主要与%X-%V的时间格式符有关)2016-12-18 ~~ 2017-01-13 周统计 图12015-12-20 ~~ 2016-01-17 周统计 图2 这两张图中,周统计中,代码中的sql时间格式化为DATE_FORMAT(FROM_UNIXTIME(reg
2017-01-14 15:09:23
10668
7
原创 用户、角色和权限开发
角色、权限规划与开发导言 最近花了一段时间在做权限开发者一块,从设计到编码,我都全程参与了,对权限开发也有了一个本质上的了解,权限管理作为一个系统最基本也是最重要的功能之一,在一个系统中是非常重要的,今天我就侃大山,聊聊我这个系统的权限开发的一些东西,与大家交流交流。
2017-01-03 18:10:33
27497
4
原创 Eclipse快捷键
Ctrl+1 快速修复(最经典的快捷键,就不用多说了) Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增加) Ctrl+Alt+↑ 复制当前行到上一行(复制增加) Alt+↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了) Alt+↑ 当前行和上面一行交互位置(同上) Alt+← 前一个编辑的页面 Alt+→ 下一个编辑的页面(当然是针对上
2016-11-09 21:28:19
261
转载 为什么查看社交网络对一些人来说是件「着迷又焦虑」的事?
为什么查看社交网络对一些人来说是件「着迷又焦虑」的事? 叶壮:心理学培训师 谢邀 @刘柯我想,我们的着眼点不应该太集中在社交属性上,或许抽离一点更为合适,我想我们应该聚焦在个人特质上尝试分析一下。在我最初玩知乎的时候,我在乎每一个赞和评论,当我拥有第一个超过50赞的回答的时候,我甚至都想给每一个点赞的人发一封私信说谢谢。因为我把我写的那千把字,看成了我的作品。我现在依然很在乎我朋友圈里面的某些内容的
2016-09-18 12:48:18
738
原创 Eclipse安装Python插件
长话短少,Eclipse安装Python插件,步骤走起 (1)如果jdk是7.0的,那么插件地址为:http://www.pydev.org/update_sites/4.5.5/;如果jdk是8.0的,那么插件地址为:http://pydev.org/updates (2)打开Eclipse, Help–>Instatll New SoftWare,图下图所示:(3)点击OK,进入下一
2016-09-17 19:09:10
4395
转载 select case when if 的一些用法
参考博客:http://www.cnblogs.com/martinzhang/p/3220595.html 概述: sql语句中的case语句与高级语言中的switch语句,是标准sql的语法,适用于一个条件判断有多种值的情况下分别执行不同的操作。首先,让我们看一下CASE的语法。在一般的SELECT中,其语法格式如下:CASE <单值表达式> WHEN <表达式值> T
2016-07-18 20:43:39
5087
转载 ASCII、Unicode、GBK和UTF-8字符编码的区别联系
很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为”字节“。再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去。他们看到这样是好的,于是它们就这机器称为”计算机“。开始计算机只在美国用。八位的字节一共可以组合出256(2的8次方)种不同的状态。 他们把其中的编号
2016-06-04 23:53:53
670
原创 解决tomcat中图片上传丢失问题
其实我之前都知道在tomcat中上传图片会丢失的问题,因为之前图片丢失对我的系统影响不是很大,基本上我的上传图片都是头像,所以丢失就丢失咯,我倒不在乎。可是今天我要做个广告配置,需要在后台配置广告信息,然后在手机当作banner图显示,这如果图片丢失的话就糗大了,于是我在网上找了多种方法,一一试了下,发现下面这种方法十分有效。 (1)把/tomcat/webapps/目录清空,删掉该文件夹的所有内
2016-05-02 22:58:50
13002
6
原创 关于MySql的Unhandled异常
之前在公司做数据库的查询的时候,报了一个Unhandled exception type SQLException,稍微捣鼓了一下,发现是没有对异常进行处理,所以有一下两个解决方案 (1)加入try{}catch{}(2)throws Exception
2016-02-20 19:13:11
3561
原创 MySql的注释
在网上找了找,才发现注释符”–”错了,需要一个空格,应该是”– “. mysql注释符有三种: 1、#… 2、”– …” 3、/…/
2016-01-29 13:43:47
433
转载 web服务器与应用服务器
一.简述WEB服务器与应用服务器的区别:1.WEB服务器: 理解WEB服务器,首先你要理解什么是WEB?WEB你可以简单理解为你所看到的HTML页面就是WEB的数据元素,处理这些数据元素的应用软件就叫WEB服务器,如IIS、apache。 WEB服务器与客户端打交道,它要处理的主要信息有:session、request、response、HTML、JS、CS等。2.应用服务器: 应用服务器如JS
2016-01-09 15:57:45
563
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人