自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(180)
  • 资源 (14)
  • 问答 (3)
  • 收藏
  • 关注

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

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

2019-03-13 22:32:31 576

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

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

2019-02-21 15:36:50 41357 33

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

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

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

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

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

2019-01-20 17:11:23 4637

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

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

2019-01-20 16:41:11 61168 6

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

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

2019-01-13 17:31:04 15650 3

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

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

2019-01-12 21:14:52 3211 4

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

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

2018-11-13 19:43:44 5197 2

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

基于ZooKeeper分布式锁的流程1. 客户端连接上zookeeper,并在指定节点(locks)下创建临时顺序节点node_n2. 客户端获取locks目录下所有children节点3. 客户端对子节点按节点自增序号从小到大排序,并判断自己创建的节点是不是序号最小的,若是则获取锁;若不是,则监听比该节点小的那个节点的删除事件4. 获得子节点变更通知后重复此步骤直至获得锁;5. 执...

2018-11-13 19:12:53 9984 3

原创 关于芝诺悖论的思考

背景  最近在学习高等数学中微积分和极限的一些知识,我们知道数学在历史上一共经历了三次大危机。而第二次数学危机的导火索正是芝诺悖论。危机的萌芽出现在大约公元前450年,芝诺注意到由于对无限性的理解问题而产生的矛盾,提出了关于时空的有限与无限的四个悖论:“两分法”、“阿基里斯(《荷马史诗》中的善跑的英雄)追不上乌龟”、“飞矢不动”、“操场或游行队伍”。现在我们取其中之一来了解一下这些悖论是怎么”...

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

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

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

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

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

简介:SpringBoot是伴随着Spring4.0诞生的;从字面理解,Boot是引导的意思,因此SpringBoot的宗旨就是简化开发,帮助开发者快速搭建Spring项目; Spring Boot并不是一门新技术,可以说它继承于Spring。对于熟悉Spring的人来说入手门槛几乎为0,SpringBoot仅仅是对咱们经常做的一些Spring配置做了提炼,封装成了一个个注解;将经常引用的一些ja

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

原创 分布式文件系统—FastDFS

什么是FastDFSFastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。 文件上传流程 文件下载流程 上传文件的文件名客户端上传文件后存储服务器将文件ID返回给客户端,此文件ID用于以后访问该文件的索引

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

原创 Tomcat实战-调优方案

Tomcat的默认配置,性能并不是最优的,我们可以通过优化tomcat以此来提高网站的并发能力。提高Tomcat的性能可以分为两个方向。服务器资源服务器所能提供CPU、内存、硬盘的性能对处理能力有决定性影响,所以说服务器性能牛B,Tomcat也不会太差。当然提高服务器的硬件配置,是需要大量RMB的支持的。所以不到万不得已不会采用这种方式,一般公司会采取下面这种通过优化配置,来提升Tomcat性能的

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

原创 Redis的持久化-AOF

Redis的AOF持久化策略是将发送到Redis服务端的每一条命令都记录下来,并且保存到硬盘中的AOF文件中,类似打日志文件,来一条命令就记录一条。AOF设置AOF文件的位置和RDB文件的位置相同,都是通过dir参数设置,默认的文件名是appendonly.aof,可以通过appendfilename参数来修改。AOF测试当客户端向服务器发送一些redis命令时,Redis会将所执行的命令记录到

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

原创 Redis的持久化-RDB

Redis优秀的性能是由于其将所有的数据都存储在内存中,同样memcached也是这样做的,但是为什么Redis能够脱颖而出呢,很大程度上是因为Redis有出色的持久化机制,能够保证服务器重启后,数据不会丢失。下面来看看Redis是如何持久化的。Redis支持两种方式的持久化,一种是RDB方式,一种是AOF方式。这两种方式可以单独使用其中一种,或者混合使用。 RDB方式介绍RDB方式是通过快照完成

2016-06-30 17:42:36 5823 6

原创 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:7003 127.0.0.1:7004 127.0.0.1:70051:下载redis。官网下载3

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

原创 Redis单机安装及启动

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

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

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

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

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

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

日志介绍日志已经成为应用软件中不可缺少的一部分,现在我没发现哪个上线并且正常运营的项目没有添加日志;并且是否写日志已经成为了检测程序员是否专业的一个基本品德,就像写注释一样,灰常重要!Apache的开源项目Log4j是一个功能强大的日志组件,可以提供方便的日志记录。其他经常使用的还有slf4j、logback等日志组件。无论那种日志处理技术都能够满足当前的需求。 项目说明现在参与的项目用的JBos

2016-05-31 17:30:48 4412 8

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

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

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

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

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

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

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

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

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

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

AOP主要概念在面向对象编程的过程中,我门可能会遇到这样的情况: 1. 系统临近上线,测试过程中发现程序存在性能问题,于是经理下令将所有方法加上日志,打印出每个方法的执行时间,严格排查 2. 经理想要给一些核心模块添加操作日志,以便统计用户的行为,比如下单方法被调用多少次,支付方法调用多少次。 3. 当然还有事务四部曲,开,关,提交,回滚。上述这些问题解决起来都挺简单的,就是手

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

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

Struts2的拦截器只能拦截Action,拦截器是AOP的一种实现方式,可以使我们的系统架构更松散(耦合度低),可以插拔,容易互换,代码不改变的情况下很容易满足客户需求。项目的权限管理模块就使用到了Struts2的拦截器,原理是这样的,我们来自定义一个拦截器,拦截所有的Action请求,对用户的登录状态和权限信息进行判断。如果用户为登录状态且有足够的权限,则继续访问;若未登录,则为其跳转到登录页面

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

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

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

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

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

Struts2 相比 Struts1 而言,Struts2的Action并未直接与任何Servlet API耦合,这是Struts2的一个改良之处,使得 Action 可以脱离 Web 容器进行测试;另外因为Action是一个普通的Java类,而不是一个Servlet类,完全脱离于Web容器,所以我们就能够更加方便地对Control层进行合理的层次设计,从而抽象出许多公共的逻辑,并将这些逻辑脱离出A

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

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

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

2016-03-10 21:05:06 3333 7

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

今天翻看自己的博客,突然发现没有关于SSH三大框架的博客,翻看之前的笔记,有整理但是没发布 - -… 先从Struts2说起,使用一些新的技术,我的习惯是先以最快的速度学会如何使用它,做出demo,然后在去慢慢研究他的原理,实现机制。所以第一篇博客我会讲解如何使用Struts2框架快速搭建出一个项目。需要注意:Struts2需要运行在JRE1.5及以上版本1、创建一个Java Web项目2、引入

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

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

背景介绍,问题所在一个项目里总会有很多配置文件,有配置文件是好事,说明项目灵活,但是有的配置文件需要区分不同的环境,即不同的环境,配置文件里的值会有区别,我们需要根据环境的变化来修改配置文件中的值,这样就很不爽了。我们就遇到了这种情况,公司现在就有四套环境,本机环境(开发人员本机环境)、开发环境(开发阶段,小组内自测用)、测试环境(测试团队用)、生产环境(项目正式上线后的环境)。在这些不同的环境下有

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

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

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

2016-03-01 15:49:49 6871 27

原创 强大的表格控件-Datatables

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

2016-02-27 22:55:53 22155 12

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

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

2016-02-27 16:20:11 6912 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 later migrations canceled:ActiveRecord::JDBCError: Spec

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

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

SonarQube简介Sonar 是一个用于代码质量管理的开放平台。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具。比如pmd-cpd、checkstyle、findbugs、Jenkins。通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。同时 Sonar 还对大量的持续集成工具提供了接

2016-02-25 11:06:20 10843 7

原创 【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/data 准备工作1 、 yum安装各个依赖包[root@master ~]# yum –y

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

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

解决启动报错问题今天启动服务器的MongoDb服务时报错出现这种错误的原因:大部分是因为mongodb 服务的不正常关闭,导致mongod 被锁,想想可能是上次服务器断电维护时,没有手动关闭MongoDb服务造成的。如何解决这种问题:①. 删除MongoDb安装目录下的 mongod.lock 文件和日志文件 mongodb.log ②. 使用下面的命令修复MongoDb:[root@master

2016-02-19 16:05:11 13470 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/mongodb 数据位置:/usr/local/mongodb/data 日志位置:/usr/local/m

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

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

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

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

原创 【Linux运维入门】Nexus索引更新和仓库迁移

索引好比目录,只有有了索引,才能根据索引去仓库下载需要的构件jar包。由于中央仓库向全世界提供下载服务,有很多构件,其索引文件也很大,大概1G左右。 更新索引方式有两种:1. 在线更新索引安装配置完成Nexus后,电脑联网状态下,Nexus会自动下载索引文件。下载好的索引文件存放在目录:sonatype-work\nexus\indexer2. 手动更新索引网络环境不佳,或者在线更新有问题时,可以

2016-02-17 16:43:40 5423 4

SpringBoot 配置相关代码

SpringBoot 配置相关的学习代码

2017-08-13

springboot 实例

springboot 的入门级实例,分分钟搞出来

2017-06-28

mysql-5.1.57.tar.gz

mysql-5.1.57.tar.gz Linux环境下详细安装教程: http://blog.csdn.net/u010028869/article/details/50704443

2016-02-20

Eclipse代码格式化模版

Eclipse代码格式化模版,可以参照我的博客进行设置。http://blog.csdn.net/u010028869

2015-11-10

MyEclipse注释模版

MyEclipse注释模版,一键导入即可。

2015-11-05

ASP.NET MVC + Bootstrap + XML 封装短信验证服务

前一段时间的一篇博客http://blog.csdn.net/u010028869/article/details/47428969。介绍了如何利用第三方短信平台完成短信验证的功能,短信验证服务算是比较基础的功能,各个系统注册都需要用到,而我们总不能把这个把这段接口代码copy到每个地方一份,那样没有复用也不好维护。介于这个原因,所以打算将短信验证服务抽出来,单独做成一个模块,通过WCF为各个系统提供服务。

2015-10-10

EF三种编程方式之CodeFirst 代码

EF三种编程方式之CodeFirst 代码

2015-08-24

ASP.NET+Bootstrap 实现短信验证的功能

ASP.NET+Bootstrap 实现短信验证的功能,有详细注释,推荐大家试试

2015-08-11

ASP.NET+Bootstrap 实现短信验证功能

ASP.NET + Bootstrap 实现短信验证功能,带详细注释。 大家可以尝试一下。

2015-08-11

Oracle客户端32位

Oracle 32位客户端,plsql不能直连64位Oracle11g数据库,必须安装一个32位的客户端才行。具体配置见文章:http://blog.csdn.net/u010028869/article/details/46647479

2015-06-26

网页音乐播放器

直接可用的网页音乐播放器,可加入到自己的项目中。

2015-03-18

条形码打印demo

C#编写 条形码打印的demo,通过斑马打印机打印出条形码。

2014-10-06

SMT.ZEBRA.DLL条形码打印的dll文件

SMT.ZEBRA.DLL 条形码打印的dll文件

2014-10-06

WinForm下编写分页控件,实现DataGridView的分页效果

WinForm下编写分页控件,实现DataGridView的分页查询效果。附带详细的注释,一看即会。另外也可直接复用。

2014-09-27

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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