自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 资源 (2)
  • 收藏
  • 关注

原创 由maven sources.jar逆向成可运行的java工程

_____ ___| __ \ |__ \| |__) |_____ _____ _ __ ___ ___ _ __ ___ ) | ___ ___ _ _ _ __ ___ ___ ___| _ // _ \ \ / / _ \ '__/ __|/ _ \ | '_ ` _ \ / / / __|...

2020-07-14 14:58:57 1324

原创 guava框架应用

guava是google的一个开源框架,很好用。以下为我学习过程中的单元测试代码:字符串匹配import com.google.common.base.CharMatcher;import junit.framework.Assert;import org.eclipse.jetty.util.StringUtil;import org.junit.Test;

2011-12-14 17:06:45 6373

原创 spring cloud config本地配置覆盖远程配置属性

使用spring cloud config远程配置中心作为spring应用的配置时,如果想修改某些属性,需要去修改远程配置,这会导致共用该配置的所有人都一起受影响。有时侯我们只是想临时修改某个变量来为进行调试而已。引用spring cloud config时,Spring cloud默认以远程配置为最高优先级,如果希望本地的配置文件(如application.yml或bootstrap.yml)的某些属性能覆盖远程的同名属性值,则需要在远程配置文件增加以下属性配置(以下所述属性均在PropertySou

2020-10-28 08:34:59 2554 3

原创 redis乐观锁应用案例实践

专车系统给司机派单时,需要过滤掉已经派单的司机,防止出现将不同订单派单给同个司机的情况发生。以下读写操作均是指redis进行读写。目前系统里以城市维度保存了每个城市已经处于服务中(已派过订单)的司机列表,但读取城市服务中司机列表和写服务中司机列表时,未进行同步,可能由于高并发,会导致读的司机列表在执行司机筛选时,服务中司机列表被更改。从而出现同个司机派了多个不同的订单的情况发生。因此考虑两种方式实现1.使用redis分布式锁实现悲观锁读取服务中司机列表和写入服务中司机列表使用同一个分布式

2020-09-10 11:15:05 373

转载 生产环境jvm参数配置

java 应用程序部署在服务器上,应该具备一些基本的参数。下面分jdk1.8之前,以及 1.8之后分别列出来。以供以后参考-server -Xms<heap size>[g|m|k] -Xmx<heap size>[g|m|k] -XX:PermSize=<perm gen size>[g|m|k] -XX:MaxPermSize=&lt...

2019-03-01 17:53:11 1789

转载 spring boot 热部署

基于Maven的SpringBoot项目,通过配置spring-boot-devtools模块来使Spring Boot应用支持热部署,无需每次更改代码都要手动项目,提高开发者的开发效率工具/原料 IntelliJ IDEA或eclips等开发工具 springboot项目 方法/步骤 在项目的pom.xml文件添加如下两段 <dependency...

2018-11-19 17:18:19 357

转载 设计模式之----命令模式

转载自:https://www.cnblogs.com/konck/p/4199907.html虽然是.net 版的,不过不影响阅读和学习。经典的命令模式包括4个角色:Command:定义命令的统一接口ConcreteCommand:Command接口的实现者,用来执行具体的命令,某些情况下可以直接用来充当Receiver。Receiver:命令的实际执行者Invoker:命令的请求者,是命令模式...

2018-06-26 23:33:26 142

转载 Spring @Transactional原理及使用

本文主要讨论Spring声明式事务中使用注解@Transactional的方式、原理及注意事项,主要包括以下内容:Spring @Transactional的配置使用;Spring @Transactional的传播行为和隔离级别;Spring @Transactional的工作原理;Spring @Transactional的注意事项;Spring @Transactional自我调用中的问题。...

2018-06-07 15:25:54 14218

原创 微服务设计读后

https://book.douban.com/subject/26772677/微服务设计这本书是微服务领域很专业的理论知识梳理书籍,书中许多内容我都有亲身体会,很有共鸣。从微服务建模,集成,分解,测试,安全,监控再到集群CAP原理,很完整的讲解了微服务设计的方方面面,对其中消息医院的设计很有共鸣(和我在最近一个系统设计一致),消费端及服务端的解耦,对CAP原理的讲解印像深刻(每本书总有

2018-02-07 09:17:47 177

转载 重构 改善既有代码的设计

经过一个多月的时间,我读完了这本重构的书籍。与其说是读完,不如说是扫完的。因为中间关于重构的手法很多,有很多规则我是没有亲手尝试的,其实也没有这个必要。在这本书中,除了中间部分大量的重构手法之外,作者还在书的前后两部分用大量文字说明如何理解重构和怎样使用重构。说白了,只学会重构的手法只学会了重构的一半都不到,更重要的是融汇贯通重构的思想。需要注意的是,作者是从Java的早起版本开始讲解重构

2018-02-07 09:06:57 286

原创 java应用远程调试

如应用启动为java -jar service.jar在应用启动时加上以下参数: -Xdebug -Xrunjdwp:transport=dt_socket,address=9555,server=y,suspend=n java -Xdebug -Xrunjdwp:transport=dt_socket,address=9555,server=y,suspend=n -jar

2018-01-26 18:16:29 237

转载 RocketMQ(8)——消息高可靠

RocketMQ broker服务端以组为单位提供服务的,拥有着一样的brokerName则认为是一个组。其中brokerId=0的就是master,大于0的则为slave。消息同步策略master和slave都可以提供读服务,但是只有master允许做写入操作,slave仅从master同步数据并不断上报自己的同步进度(slave自己的物理max offset)。在Broker配置中,如果是有三

2018-01-18 22:21:24 955

转载 RocketMQ(7)——通信协议

RocketMQ的通信协议其实很简单,但是无论是官方的用户手册,还是网上的博客,并没有很清晰简单地把其中所有的内容和原理讲明白。 对于需要扩展其他语言SDK的开发来说,意味着必须要深入到Java源码才能弄懂其概念。笔者通过深入源码,本文希望以尽量简短的语言描述清楚协议的每个字段及其意义。注:现最新版RocketMQ已经可以支持Protobuf协议,但本文只探究默认的基于JSON的协议。无论是发送消

2018-01-18 22:20:28 744

转载 RocketMQ(6)——客户端配置详解

RocketMQ的客户端和服务端采取完全不一样的配置机制——客户端没有配置文件,所有的配置选项需要开发者使用对应的配置的setter进行设置。由于现在网上基本找不到一套较为完善的配置文档,今天来讲讲截止至RocketMQ 4.0,客户端已有的所有配置的含义。本文尽可能不深入讨论配置相关的原理和源码(除非笔者认为有必要交代对应的背景),尽可能以最简单的描述说清楚作为一个开发者从使用的角度需要明白的那

2018-01-18 22:19:47 2519

转载 RocketMQ(5)——消息文件过期原理

RocketMQ原理(4)--消息ACK机制及消费进度管理 - 知乎专栏文中提过,所有的消费均是客户端发起Pull请求的,告诉消息的offset位置,broker去查询并返回。但是有一点需要非常明确的是,消息消费后,消息其实并没有物理地被清除,这是一个非常特殊的设计。本文来探索此设计的一些细节。消费完后的消息去哪里了?消息的存储是一直存在于CommitLog中的,由于CommitLog是以文件为单

2018-01-18 22:18:14 538

转载 RocketMQ原理(4)——消息ACK机制及消费进度管理

https://zhuanlan.zhihu.com/p/25140744 中剖析过,consumer的每个实例是靠队列分配来决定如何消费消息的。那么消费进度具体是如何管理的,又是如何保证消息成功消费的(RocketMQ有保证消息肯定消费成功的特性(失败则重试)?本文将详细解析消息具体是如何ack的,又是如何保证消费肯定成功的。由于以上工作所有的机制都实现在PushConsumer中,所以本文的原

2018-01-18 22:07:36 791

转载 RocketMQ原理(3)——水平扩展及负载均衡详解

转自 :https://zhuanlan.zhihu.com/p/25140744RocketMQ是一个分布式具有高度可扩展性的消息中间件。本文旨在探索在broker端,生产端,以及消费端是如何做到横向扩展以及负载均衡的。Broker端水平扩展Broker负载均衡Broker是以group为单位提供服务。一个group里面分master和slave,master和slave存储的数据一样,slav

2018-01-18 21:40:13 407

转载 RocketMQ原理(2)——核心概念及术语

转自:https://zhuanlan.zhihu.com/p/25092361 感谢原作者RocketMQ中有很多独有的概念,其中包括一些术语和角色。理清楚基本的概念是理解原理的第一步,也是对排查生产问题找到线索的必要条件。以下一一介绍笔者认为RocketMQ中最重要的一些概念和术语。--------------------------------------------------------

2018-01-18 21:37:18 225

转载 RocketMQ原理(1)——服务端组件介绍

转自:https://zhuanlan.zhihu.com/p/25069846 感谢原作者RocketMQ原理(1)——服务端组件介绍Jaskey Lam1 年前RocketMQ服务端的组件有三个,NameServer,Broker,FilterServer(可选,部署于和Broker同一台机器)Name ServerName Server是RocketMQ的寻址服务。用于把Broker的路由信

2018-01-18 21:35:47 477

原创 spring cloud微服务实战读书记

https://book.douban.com/subject/27025912/spring cloud的组件虽多,但就像spring的风格一样一切组件都是选装,必须的可能就是eureka+ribbon+hystrix或eureka+feign,spring boot及cloud更新太快了,书本内容有点过时,但不影响学习,这本书帮我理清了spring cloud各组件的功能,算是介绍

2017-12-21 13:52:05 262

原创 最近阅读书目及一点感想

大型网站技术架构https://book.douban.com/subject/25723064/这本书极好,很详细的讲解了网站和使用技术的演化,对书中raid阵列的介绍、对缓存内容的介绍部分印像深刻,作者对架构设计的理解和对架构设计师的分类,架构设计在系统设计中的作用理解深刻。人人都是架构师https://book.douban.com/subject/27034726/

2017-12-11 14:12:20 661

转载 高并发服务设计—缓存

1 缓存回收策略1.1 基于空间即设置缓存的存储空间,如设置为10MB,当达到存储空间时,按照一定的策略移除数据。1.2 基于容量基于容量指缓存设置了最大大小,当缓存的条目超过最大大小,则按照一定的策略将旧数据移除。1.3 基于时间TTL(Time To Live):存活期,即缓存数据从缓存中创建时间开始直到它到期的一个时间段(不管在这个时间段内有没

2017-10-30 16:16:52 1133

原创 HEAD FIRST设计模式读后感

最近花了几天时间读完了HEAD FIRST设计模式,因为之前已经粗粗的了解过GOF 23个设计模式,所以在读本书时基本上都能理解,我被里面简单的示例,独到的理解所折服,毫无疑问这是一本极好的设计模式领域的入门书籍。它以实例讲解了每个面向对象设计原则,并通过设计模式的方法提供了详尽的解决方案,让我对面向对象的设计原则有了更深入的理解:封装变化组合优于继承针对接口编程,而不针对实现编程

2017-10-29 12:47:45 934

转载 本地源码关联远程服务器调试代码

本地源码关联远程服务器调试代码1. 在tomcat下的catalina.bat中添加如下内容:(也可以是远程jar项目)set JAVA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=80002. 在

2017-05-22 09:34:26 1450

转载 通俗易懂的数据库范式解释

数据库范式是数据库设计中必不可少的知识,没有对范式的理解,就无法设计出高效率、优雅的数据库。甚至设计出错误的数据库。而想要理解并掌握范式却并不是那 么容易。教科书中一般以关系代数的方法来解释数据库范式。这样做虽然能够十分准确的表达数据库范式,但比较抽象,不太直观,不便于理解,更难以记忆。       本文用较为直白的语言介绍范式,旨在便于理解和记忆,这样做可能会出现一些不精确的表述。但对于

2017-05-11 08:23:42 548 1

转载 N级架构演化史

Java企业级应用架构设计中的分布式结构大致可以分为单级结构、2级结构、3级结构和N级结构。充分理解和应用分布式结构可以更好的理解当代网络计算的现状,设计出更优的企业级应用程序。长久以来,Java企业级版本(Java EE)已经成为了众多产业领域(如银行业、保险业、零售业、酒店业、旅游业以及电信业等等)进行企业商务应用开发和部署的平台选择。Java EE之所以应用如此广泛,其原因在于,Ja

2017-03-17 16:13:46 393

转载 分布式架构的演进

分布式架构的演进系统架构演化历程-初始阶段架构初始阶段 的小型系统 应用程序、数据库、文件等所有的资源都在一台服务器上通俗称为LAMP特征:应用程序、数据库、文件等所有的资源都在一台服务器上。描述:通常服务器操作系统使用Linux,应用程序使用PHP开发,然后部署在Apache上,数据库使用MySQL,汇集各种免费开源软件以及一台廉价服务器就可以开始系统

2017-03-17 15:54:58 179

原创 GOF 23种设计模式收集整理

设计模式是软件大师们根据多年来的软件开发经验,对软件开发领域包括合理复用、提高健壮性、减少BUG等各方面作的抽象总结,不同的设计模式方法适合于不同的应用场景,是汇结了他们最宝贵的经验总结。最早的开发模式是1994年GOF四人共同完成的《DesignPatterns - Elements of Reusable Object-Oriented Software》一书提及的23种经典设计模式,至今仍是经典中的经典。

2017-01-24 16:32:04 526

转载 Apache Commons 工具类介绍及简单使用

Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动。下面是我这几年做开发过程中自己用过的工具类做简单介绍。 组件功能介绍BeanUtils提供了对于JavaBean进行各种操作,克隆对象,属性等等.BetwixtXML与Java对象之间相互转换.Code

2016-03-24 09:22:24 556

原创 使用jdbclogger将所有sql完整的打印出来

使用mybatis/hibernate/jdbctemplate或原生jdbc操作时,打印出来的SQL语句都是SQL和值分开的,导致有时侯调试很麻烦使用jdbclogger可以衔好的解决此问题,它可以让我们执行SQL的完整语句都打印出来对于未使用maven的项目可以从它的官网下载JAR文件jdbclogger官网下载地址:http://jdbclogger.sourcefo

2016-03-15 14:20:26 5326

转载 @SuppressWarnings的使用、作用、用法

在java编译过程中会出现很多警告,有很多是安全的,但是每次编译有很多警告影响我们对error的过滤和修改,我们可以在代码中加上@SuppressWarnings(“XXXX”) 来解决例如:@SuppressWarnings("deprecation")表示不显示使用了不赞成使用的类或方法时的警告具体的XXXX的意义可以参考博文http://www.the

2016-02-17 16:27:09 682

原创 postgresql 删除ID重复数据

原来表设计没有主键导致SQL重复执行时会产生多条一模一样的主键,现在需要对原来的表建立主键,需要对ID重复的数据进行删除,只保留一条虽然数据完全一致,但好在pgsql数据库提供了ctid的隐藏列,根据此列可以把只保留最小ctid的相同数据行。于是写了以下存储过程来处理。方便多了。再也不错这种问题了。CREATE OR REPLACE FUNCTION delete_repeat(tab

2016-01-14 11:07:01 3013

原创 jdbc连接postgresl需要指明特定模式

postgresql需要创建数据库然后下面创建模式-》表和函数等对像如果用户名,数据库,都用同一名称那使用jdbc连接串:src.url = jdbc:postgresql://172.16.6.16/ooosrc.user = ooosrc.password = ooo这样可以正常访问模式ooo下的表和对像但如果表创建在模式名称为bbb下面怎么连接呢?

2015-10-20 09:29:19 6371 2

转载 maven 工程把依赖包打入jar包

将依赖打入jar包,由于maven管理了所有的依赖,所以将项目的代码和依赖打成一个包对它来说是顺理成章的功能。maven的这个功能之前就用过,但这次使用时忘了细节,只记得用maven的assembly插件,但assembly插件功能强大,可以打zip、war各种包,所以一下子找不到如何将依赖打入jar包了。浪费了一点时间,所以一定要记录一下。 在pom.xml中加入如下配置即可,关键是co

2015-10-16 11:08:42 605

转载 maven把依赖包拷贝到lib下

标准web工程在eclipse中利用m2eclipse插件添加依赖管理后,在部署过程中没有将依赖的jar包自动拷贝到/WEB-INF/lib中。参考了一些朋友的做法手动执行mvn dependency:copy-dependencies -DoutputDirectory=src/main/webapp/WEB-INF/lib  -DincludeScope=runtime  

2015-10-16 10:30:53 1231

转载 用JDK中的 jps、jinfo、jstat、jstack、jmap、jconsole等命令对JVM,内存,线程进行分析和故障诊断

JDK提供了几个很实用的工具,如下:jinfo:观察运行中的java程序的运行环境参数:参数包括Java System属性和JVM命令行参数,java class path等信息。命令格式:jinfo 进程pidjps:用来显示本地的java进程,可以查看本地运行着几个java程序,并显示他们的进程号。命令格式:jps   或 jps 远程服务ip地址    (默认端口1099)j

2015-09-16 14:25:35 375

转载 JVM性能调优

最近因项目存在内存泄漏,故进行大规模的JVM性能调优 , 现把经验做一记录。一、JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范,JVM将内存划分为:New(年轻代)Tenured(年老代)永久代(Perm)  其中New和Tenured属于堆内存,堆内存会从JVM启动参数(-Xmx:3G)指定的内存中分配,Perm不属于堆内存,有虚拟机直接分配,但可以通过

2015-08-27 14:50:08 441

转载 CentOS6.5安装配置SVN

安装SVN软件包[root@localhost ~]# yum install subversion#确认是否已安装svn模块[root@localhost ~]# cd /etc/httpd/modules;ls|grep svnmod_authz_svn.somod_dav_svn.so如果没有需要安装mod_dav_svn#yum -y install

2014-04-25 15:19:02 11213

原创 linux (cent os6)php安装mcrypt

mcrypt在php里没有自带查了好多资料,都安装不了,后来在一个国外网站上看到一篇文章终于搞定。现在整理一下:1) Install EPEL repository (From: http://www.rackspace.com/knowledge_center/article/installing-rhel-epel-repo-on-centos-5x-or-6x):wget h

2014-03-18 20:53:52 1190 1

转载 Apache Commons Lang介绍

开源工具系列文章:       Apache Commons Lang(1):http://ray-yui.iteye.com/blog/1953020       Apache Commons Lang(2):http://ray-yui.iteye.com/blog/1958319       Apache Commons BeanUtils:http://ray-yui.itey

2013-10-24 10:16:43 3748

zookeeper3.4.6

zookeeper是功能强大的分布式协调服务应用。这里提供给大家,方便下载,国外网站下载太不方便了。 安装方法解压后可以直接运行bin/zkServer.bat 即可打开zoopkeeper服务端。

2015-11-04

memcached-1.4

memcached-1.4服务器,解压后直接使用命令: memcached.exe -d install 用上面这条命令可以将memcached安装成windows 服务,可以去控制面板-》管理工具-》服务中看一下memcached服务是否处于运行状态。 文件夹中有x86是32位版windows使用 x64是 64位版windows使用,不要搞错了。

2015-11-04

空空如也

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

TA关注的人

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