自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 【Java基础】ThreadLocal源码解析

查看ThreadLocal的源码,大体上可以划分为ThreadLocal、Thread、ThreadLocalMap这三个类,所以主要分析一下这三个类的联系。 Thread Thread是线程类,通过Thread.currentThread()方法可以获取当前线程,并且Thread维护一个Thre...

2019-03-13 22:32:31 147 0

原创 Charles抓包出现<unknown>问题

Charles注册破解 Charles的安装过程在就不做过多介绍了,这里主要说一下Charles的破解方式,不注册购买只能使用30天。这里提供一个License Key,4.x版本亲测可用。打开Help 输入下面的License即可。 // Charles Proxy License Regist...

2019-02-21 15:36:50 1688 0

原创 Python爬虫系列-Mac OS安装Scrapy遇到的各种坑

用python通过原生方式写过几次爬虫项目,代码冗长不易维护;Scrapy是Python语音编写的一个通用性爬虫框架,能够非常方便的通过几行代码来爬取网站数据,提取结构性数据。当然经过发展Scrapy也应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。我想通过对Scrapy的学习来对之前...

2019-02-16 15:00:00 1113 1

原创 彻底解决JS处理Long类型精度丢失问题(二)

当你的序列化方式采用的FastJson时,该如何处理这种类型转换问题呢?一模一样的套路… SpringMVC 使用FastJson序列化方式 1.增加类型转换类: public class FastJsonConfigExt extends FastJsonConfig { public...

2019-01-20 17:11:23 1934 0

原创 彻底解决JS处理Long类型精度丢失问题(一)

对于Long类型的数据,如果我们在Controller层将结果序列化为json,直接传给前端的话,在Long长度大于17位时会出现精度丢失的问题。如何避免精度丢失呢?最常用的办法就是将Long类型字段统一转成String类型。 JS 数字丢失精度的原因 计算机的二进制实现和位数限制有些数无法有限表...

2019-01-20 16:41:11 19456 5

原创 Nginx多域名共享80端口配置

前段时间搭建了两个网站,分别是壁纸网站和个人blog。以这两个网站为例介绍一下如何用一个Nginx配置多个域名共享80端口。 已有资源: 服务器 118.24.51.89 顶级域名 yypic.top 二级域名 blog.yypic.top 首先需要设置域名解析 在域名...

2019-01-13 17:31:04 6595 0

原创 Curator源码分析之分布式锁

Curato介绍 关于什么是Curator,我们看一下官网是怎么说的。 What is Curator? Apache Curator is a Java/JVM client library for Apache ZooKeeper, a distributed coordination ...

2019-01-12 21:14:52 2624 3

原创 记一次秒杀重复抢单问题

背景描述: 系统给APP用户(客户经理)定时推送一批客户资源数据,这批数据在不同的客户经理登录APP都能看见,然后点击抢的按钮,就可以获取这个客户了,这种场景类似于秒杀抢单,存在多人同时点击按钮抢人,所以伴随着较高的并发操作。 问题描述: 这时候问题就出来了,同一个地区的客户经理都可以看到相同...

2018-11-13 19:43:44 3925 1

原创 基于ZooKeeper Curator实现分布式锁

基于ZooKeeper分布式锁的流程 1. 客户端连接上zookeeper,并在指定节点(locks)下创建临时顺序节点node_n 2. 客户端获取locks目录下所有children节点 3. 客户端对子节点按节点自增序号从小到大排序,并判断自己创建的节点是不是序号最小的,若是则获取...

2018-11-13 19:12:53 4487 2

原创 关于芝诺悖论的思考

背景   最近在学习高等数学中微积分和极限的一些知识,我们知道数学在历史上一共经历了三次大危机。而第二次数学危机的导火索正是芝诺悖论。危机的萌芽出现在大约公元前450年,芝诺注意到由于对无限性的理解问题而产生的矛盾,提出了关于时空的有限与无限的四个悖论:“两分法”、“阿基里斯(《荷马史诗》中的善...

2018-08-15 19:10:09 5388 1

原创 【SpringBoot系列】二:SpringBoot配置详解

通过上一篇博客对Spring Boot的介绍,你也看见了Spring Boot并不真正是所谓的『零配置』,他的理念是“习惯优于配置”采用了一些默认的习惯性配置,让你无需手动进行配置,从而让你的项目快速运行起来。所以要想玩转Spring Boot,了解这些默认配置还是必不可少的。 创建Spring...

2017-08-13 12:38:34 3854 6

原创 【SpringBoot系列】一:5分钟构建第一个SpringBoot工程

简介:SpringBoot是伴随着Spring4.0诞生的;从字面理解,Boot是引导的意思,因此SpringBoot的宗旨就是简化开发,帮助开发者快速搭建Spring项目; Spring Boot并不是一门新技术,可以说它继承于Spring。对于熟悉Spring的人来说入手门槛几乎为0,Spr...

2017-06-28 23:22:05 2191 3

原创 分布式文件系统—FastDFS

什么是FastDFSFastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。 文件上传流程 文件下载流程...

2016-06-30 22:31:58 3377 8

原创 Tomcat实战-调优方案

Tomcat的默认配置,性能并不是最优的,我们可以通过优化tomcat以此来提高网站的并发能力。提高Tomcat的性能可以分为两个方向。 服务器资源服务器所能提供CPU、内存、硬盘的性能对处理能力有决定性影响,所以说服务器性能牛B,Tomcat也不会太差。当然提高服务器的硬件配置,是需要大量RMB...

2016-06-30 22:08:12 19722 9

原创 Redis的持久化-AOF

Redis的AOF持久化策略是将发送到Redis服务端的每一条命令都记录下来,并且保存到硬盘中的AOF文件中,类似打日志文件,来一条命令就记录一条。 AOF设置AOF文件的位置和RDB文件的位置相同,都是通过dir参数设置,默认的文件名是appendonly.aof,可以通过appendfilen...

2016-06-30 20:02:35 1814 3

原创 Redis的持久化-RDB

Redis优秀的性能是由于其将所有的数据都存储在内存中,同样memcached也是这样做的,但是为什么Redis能够脱颖而出呢,很大程度上是因为Redis有出色的持久化机制,能够保证服务器重启后,数据不会丢失。下面来看看Redis是如何持久化的。Redis支持两种方式的持久化,一种是RDB方式,一...

2016-06-30 17:42:36 5050 5

原创 Redis3.x-集群搭建

今天咱们来搭建一下Redis集群,要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下。127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1...

2016-05-31 22:00:14 1994 5

原创 Redis单机安装及启动

Redis 是一个高速的非关系型内存数据库,可以存储5中不同的数据结构,并可以将内存中的键值对数据持久化到硬盘,并且redis3.0以后版本还提供了集群功能,保证高可用和易扩展。今天先来安装一下Redis的单机版。 解压redis[root@localhost software]# tar -zx...

2016-05-31 20:55:39 1863 4

原创 【Linux运维入门】PSSH-轻量集群管理工具

服务器多了,原始操作就会出现弊端,假如同时给成百上千台服务器执行一个命令,拷贝一个文件,杀一个进程等,就需要逐个连接服务器进行操作,累死运维小哥。有什么简化运维管理的工具呢?可以编写shell脚本使用for循环,但是这样做一方面不确定操作是否成功,另一方面for循环语句性能不好,因为命令是同步执行...

2016-05-31 18:02:48 3600 5

原创 项目实战之日志的使用:Jboss环境下添加自定义日志

日志介绍日志已经成为应用软件中不可缺少的一部分,现在我没发现哪个上线并且正常运营的项目没有添加日志;并且是否写日志已经成为了检测程序员是否专业的一个基本品德,就像写注释一样,灰常重要!Apache的开源项目Log4j是一个功能强大的日志组件,可以提供方便的日志记录。其他经常使用的还有slf4j、l...

2016-05-31 17:30:48 3214 7

原创 基于URL的权限验证流程总结

之前写过一篇博客:拦截器实现基于Url的权限管理,文章中讲解了怎么用拦截器实现url权限认证,这仅仅是权限管理的一部分。今天这篇博客就来说说一个项目完整的权限认证流程。1、 准备权限数据服务器启动时,通过InitListener监听器,将数据库中的权限信息查询出来,并放到ServletContex...

2016-04-30 21:12:08 4957 5

原创 【Spring进阶】Spring重写CharacterEncodingFilter完全解决编码问题

编码问题是在编程过程中经常遇到的问题之一,如果早期不指定统一的编码格式,开发过程中会遇到各种各样的乱码问题。还好spring为咱们提供了一个编码过滤器,可以帮助咱们解决大部分的乱码问题,本以为配置上它就可以高枕无忧,但是还是出现了问题。编码问题浮现// 获取前台传递过来的查询条件 String ...

2016-04-30 16:04:01 7785 3

原创 【Spring进阶】spring对AOP的支持-注解方式和配置方式

上篇博客中讲解了一些AOP的基础概念和Spring AOP的基础知识点。现在来具体实践一下,一探究竟。在spring中,常用的AOP实现方式有两种:一种是基于xml配置文件方式的实现,另一种是基于注解的实现。接下来以日志服务类为例,来看看这两种方式的具体实现。 业务类准备用户服务接口package...

2016-04-30 15:54:25 2026 4

原创 【Spring进阶】AOP主要概念

AOP主要概念在面向对象编程的过程中,我门可能会遇到这样的情况: 1. 系统临近上线,测试过程中发现程序存在性能问题,于是经理下令将所有方法加上日志,打印出每个方法的执行时间,严格排查 2. 经理想要给一些核心模块添加操作日志,以便统计用户的行为,比如下单方法被调用多少次,支付方法调...

2016-04-23 21:37:30 722 6

原创 【Struts2进阶】Struts2拦截器实现基于Url的权限管理

Struts2的拦截器只能拦截Action,拦截器是AOP的一种实现方式,可以使我们的系统架构更松散(耦合度低),可以插拔,容易互换,代码不改变的情况下很容易满足客户需求。项目的权限管理模块就使用到了Struts2的拦截器,原理是这样的,我们来自定义一个拦截器,拦截所有的Action请求,对用户的...

2016-03-16 13:17:07 3655 6

原创 【Struts2进阶】Struts2 多方法调用的两种方式

Action的创建一般可分为两种方式,第一是每个方法创建一个Action类,第二是一个Action中包含多个方法;在实际的开发中,一般不会采取第一种方案,因为项目中有多少方法,就需要建立多少的Action类,类多且配置量巨大,所以我们经常采用一个Action对应多个方法的方式。那么问题来了,Str...

2016-03-10 23:00:26 1410 7

原创 【Struts2进阶】Struts2的Action访问Servlet API 的 三种方式

Struts2 相比 Struts1 而言,Struts2的Action并未直接与任何Servlet API耦合,这是Struts2的一个改良之处,使得 Action 可以脱离 Web 容器进行测试;另外因为Action是一个普通的Java类,而不是一个Servlet类,完全脱离于Web容器,所以...

2016-03-10 21:44:34 750 4

原创 【Struts2进阶】Struts2深度解析ModelDriven原理

Strus2在获取表单数据的时候有两种方式:属性驱动模式和模型驱动模式,使用属性驱动模式,需要在Action中声明这些属性,并提供属性的getter和setter方法,这样从前台传过来的参数就会自动set到你声明的属性中。但这种方式不好的地方在于,如果实体属性很多的话,就需要声明一大堆属性以及ge...

2016-03-10 21:05:06 2936 6

原创 【Struts2进阶】用Struts2搭建web项目

今天翻看自己的博客,突然发现没有关于SSH三大框架的博客,翻看之前的笔记,有整理但是没发布 - -… 先从Struts2说起,使用一些新的技术,我的习惯是先以最快的速度学会如何使用它,做出demo,然后在去慢慢研究他的原理,实现机制。所以第一篇博客我会讲解如何使用Struts2框架快速搭建出一...

2016-03-10 20:51:53 1514 5

原创 Maven利用Profile构建不同环境的部署包

背景介绍,问题所在一个项目里总会有很多配置文件,有配置文件是好事,说明项目灵活,但是有的配置文件需要区分不同的环境,即不同的环境,配置文件里的值会有区别,我们需要根据环境的变化来修改配置文件中的值,这样就很不爽了。我们就遇到了这种情况,公司现在就有四套环境,本机环境(开发人员本机环境)、开发环境(...

2016-03-07 13:42:23 2752 9

原创 【Linux运维-集群技术进阶】集群/分布式环境下5种session处理策略

前言在搭建完集群环境后,不得不考虑的一个问题就是用户访问产生的session如何处理。如果不做任何处理的话,用户将出现频繁登录的现象,比如集群中存在A、B两台服务器,用户在第一次访问网站时,Nginx通过其负载均衡机制将用户请求转发到A服务器,这时A服务器就会给用户创建一个Session。当用户第...

2016-03-01 15:49:49 5643 26

原创 IT成长路-2015总结篇

IT路,这次真的是第四年了,每次在做年终总结的时候,都会静下心来想想,自己这一年经历了什么。翻翻博客,看看笔记之后发现这段时间也是收获颇丰的。 <br>

2016-02-29 23:53:45 1005 12

原创 强大的表格控件-Datatables

背景介绍是不是习惯了EasyUI封装的DataGrid表格,传入一个json串,就可以自动加载数据,显示分页,还能实现一些特殊需求,如行内编辑,操作列等。而使用bootstrap表格的话,则需要完全自己手写table和分页控件,并且将两者组合到一起,才是个完整的表格,代码量大不说,如果需要实现一些...

2016-02-27 22:55:53 19151 11

原创 【Linux运维入门】SonarQube和Jenkins的集成之路

安装配置完sonar后就需要与项目在用的Jenkins进行集成了,Jenkins和Sonar集成的原理大概是这样的,Jenkins在其插件管理中心,下载sonar插件并进行配置,与sonar关联上。然后Jenkins在完成一次集成构建后,就会通知sonar进行源代码分析的操作。大家都知道Jenki...

2016-02-27 16:20:11 6447 9

原创 【Linux运维入门】安装sonar报错:JDBCError: Specified key was too long;

安装完SonarQ ube后,输入网址http://192.168.xx.xxx:9000 可以访问Sonar的页面。但是我却出现了一个问题:错误一:org.jruby.rack.RackInitializationException: An error has occurred, all lat...

2016-02-26 23:27:15 1807 5

原创 【Linux运维入门】Linux环境安装SonarQube和SonarQube Runner

SonarQube简介Sonar 是一个用于代码质量管理的开放平台。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具。比如pmd-cpd、checkstyle、findbugs、Jenkins。通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化...

2016-02-25 11:06:20 9974 6

原创 【Linux运维入门】Linux环境编译安装、配置Mysql

安装说明系统环境:CentOS-7 64位最小模式 安装软件:mysql-5.1.57.tar.gz 下载地址:点我去下载mysql-5.1.57 上传位置:/usr/local/software 安装目录:/usr/local/mysql 数据位置:/usr/local/mysql...

2016-02-20 13:23:31 1608 12

原创 【Linux运维入门】MongoDb启动报错:ERROR: child process failed, exited with error number xx

解决启动报错问题今天启动服务器的MongoDb服务时报错 出现这种错误的原因:大部分是因为mongodb 服务的不正常关闭,导致mongod 被锁,想想可能是上次服务器断电维护时,没有手动关闭MongoDb服务造成的。如何解决这种问题:①. 删除MongoDb安装目录下的 mongod.lock ...

2016-02-19 16:05:11 8842 6

原创 【Linux运维入门】Linux环境安装配置MongoDb及简单使用

安装说明系统环境:CentOS-7 64位最小模式 安装软件:mongodb-linux-x86_64-rhel62-3.0.7.tgz 下载地址:http://www.mongodb.org/ 上传位置:/usr/local/software 安装目录:/usr/local/mong...

2016-02-19 13:40:07 2265 1

原创 【Linux运维入门】Maven将项目部署到Nexus

通过Maven的deploy命令,可以将项目的jar包部署到Nexus上,其他项目如果依赖该项目的jar包。就可以直接在pom.xml文件中配置上坐标即可。下面来看看,如何将项目的jar包部署到Nexus上。1、 首先要保证maven的settings.xml文件已经配置好了Nexus 可以参照...

2016-02-17 23:15:57 1326 3

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