- 博客(45)
- 资源 (2)
- 收藏
- 关注
转载 基于zookeeper的分布式锁
实现分布式锁目前有三种流行方案,分别为基于数据库、Redis、Zookeeper的方案,其中前两种方案网络上有很多资料可以参考,本文不做展开。我们来看下使用Zookeeper如何实现分布式锁。什么是Zookeeper?Zookeeper(业界简称zk)是一种提供配置管理、分布式协同以及命名的中心化服务,这些提供的功能都是分布式系统中非常底层且必不可少的基本功能,但是如果自己实现这些功能而且...
2018-10-06 18:25:43
216
转载 git reset revert 回退回滚取消提交返回上一版本
git reset revert 回退回滚取消提交返回上一版本总有一天你会遇到下面的问题.(1)改完代码匆忙提交,上线发现有问题,怎么办? 赶紧回滚.(2)改完代码测试也没有问题,但是上线发现你的修改影响了之前运行正常的代码报错,必须回滚.这些开发中很常见的问题,所以git的取消提交,回退甚至返回上一版本都是特别重要的.大致分为下面2种情况:1.没有push这种情况发生在你的本地代码仓库,可能你a...
2018-02-24 19:46:39
355
转载 github总结(4)--关于git reset --hard这个命令的惨痛教训
github总结(4)--关于git reset --hard这个命令的惨痛教训背景叙述:前几天,上传自己的个站到git上的时候,手欠脑发晕的用了次git reset --hard xxxxxx 命令。由于只在线上传入了一个index.html页面(自己都不知道自己咋想的,就这么干了,O__O"…),且第一次commit的时候也只commit了一个index.html文件,其他文件的只是通过git...
2018-02-24 19:44:02
583
转载 Google 十年 Java 技术栈
java技术栈参考了众多资料,这里就不再详细列举了,可以自行去搜索1 java基础:1.1 算法1.1 排序算法:直接插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序、基数排序1.2 二叉查找树、红黑树、B树、B+树、LSM树(分别有对应的应用,数据库、HBase)1.3 BitSet解决数据重复和是否存在等问题1.2 基本2.1 字符串常量池的迁移2.2 字符串KMP算法2...
2018-02-10 13:10:57
406
转载 Spring事务传播机制
Spring在TransactionDefinition接口中规定了7种类型的事务传播行为,它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播,即协调已经有事务标识的方法之间的发生调用时的事务上下文的规则(是否要有独立的事务隔离级别和锁) 概述当我们调用一个基于Spring的Service接口方法(如UserService#addUser())时,它将运行于Sp
2018-02-07 11:48:10
265
转载 Mybatis Integer类型,值为0被认为是空字符串的解决办法
mybatis写update时,正常是set了值才会进行update操作,我们一般是这样写。if test="sampleBatchNo != null and sampleBatchNo != ''" > SAMPLE_BATCH_NO = #{sampleBatchNo,jdbcType=VARCHAR}, if>123如果不空null并且不是空
2018-01-23 17:57:16
570
转载 git撤销修改
自然,你是不会犯错的。不过现在是凌晨两点,你正在赶一份工作报告,你在readme.txt中添加了一行:$ cat readme.txtGit is a distributed version control system.Git is free software distributed under the GPL.Git has a mutable index called stage.
2017-12-06 18:47:55
191
转载 git版本管理
版本回退阅读: 1211080现在,你已经学会了修改文件,然后把修改提交到Git版本库,现在,再练习一次,修改readme.txt文件如下:Git is a distributed version control system.Git is free software distributed under the GPL.然后尝试提交:$ git add
2017-12-06 18:46:21
182
转载 利用Jmap进行简单日志分析
root@ubuntu:/# jmap -heap 21711Attaching to process ID 21711, please wait...Debugger attached successfully.Server compiler detected.JVM version is 20.10-b01 using thread-local
2017-10-25 12:18:34
662
转载 Jackson json 处理全大写或不规范的JSON
面对不遵守驼峰命名规则的接口咋办?当然首先要吐槽一下,不过接口是别人定的,虽然看着不爽但还是得去适配,比如cardNumber,他返回的叫{CARDNUMBER:''}。 通过对API的研究可以通过@JsonProperty以及@JsonAutoDetect来实现。 先看代码Java代码 @JsonAutoDetect(JsonMeth
2017-09-04 15:35:57
966
转载 java主线程结束和子线程结束之间的关系
情况1:正常情况下,主线程启动了子线程,主线程、子线程各自执行,彼此不受影响。当你在run一个Java application的时候,这个时候系统会开一个进程。然后这个进程启动了Main线程。Java进程确定虚拟机中没有线程运行的时候,退出进程。或者也可以用System.exit(0);强制退出进程代码示例如下:参考Thinkingin java代码[java]
2017-08-25 15:15:01
549
转载 Java多线程-Executor框架:CompletionService
前言: ExecutorService并不是按照submit(Callable/Runnable)的顺序来完成任务的(ExecutorService内部有一个List来维护任务队列),每submit一次返回的Future对象所对应的任务不一定是完成的。所以,当你按照顺序submit任务并按照顺序将返回的Future加入到一个List中,并遍历这个List去调用每个Future的get()方
2017-08-19 18:10:43
283
转载 Java并发编程-阻塞队列(BlockingQueue)的实现原理
阻塞队列 (BlockingQueue)是Java util.concurrent包下重要的数据结构,BlockingQueue提供了线程安全的队列访问方式:当阻塞队列进行插入数据时,如果队列已满,线程将会阻塞等待直到队列非满;从阻塞队列取数据时,如果队列已空,线程将会阻塞等待直到队列非空。并发包下很多高级同步类的实现都是基于BlockingQueue实现的。BlockingQueue
2017-08-19 18:06:54
260
转载 JDK动态代理实现原理
之前虽然会用JDK的动态代理,但是有些问题却一直没有搞明白。比如说:InvocationHandler的invoke方法是由谁来调用的,代理对象是怎么生成的,直到前几个星期才把这些问题全部搞明白了。 废话不多说了,先来看一下JDK的动态是怎么用的。 Java代码 package dynamic.proxy; import java.la
2017-08-15 23:22:01
265
转载 git迁移远程仓库后报错的解决办法
1.问题描述:今天服务器迁移了下git,于是就直接根据拷贝后的git repo创建了远程仓库,本来一切都很顺利。服务器端执行命令报错。记录下解决过程2.执行命令报错$ git fetch origin master@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ WARNING
2017-08-13 17:01:26
1653
转载 git远程分支操作
这篇文章记录我在使用git的过程中碰到远程分支和tag的相关内容,提纲:查看远程分支删除远程分支和tag删除不存在对应远程分支的本地分支重命名远程分支把本地tag推送到远程获取远程tag查看远程分支加上-a参数可以查看远程分支,远程分支会用红色表示出来(如果你开了颜色支持的话):12345678910$ git branch -a mast
2017-08-09 18:19:55
1252
转载 Spring AOP中pointcut expression表达式解析
Pointcut 是指那些方法需要被执行"AOP",是由"Pointcut Expression"来描述的.Pointcut可以有下列方式来定义或者通过&& || 和!的方式进行组合. args()@args()execution()this()target()@target()within()@within()@annotation其中executio
2017-08-08 16:51:17
382
转载 diamond动态配置的系统的快速搭建
大家好,今天开始为大家带来我们通用产品团队的产品 —— diamond的专题,本次为大家介绍diamond的概况和快速使用。一、概况diamond是淘宝内部使用的一个管理持久配置的系统,它的特点是简单、可靠、易用,目前淘宝内部绝大多数系统的配置,由diamond来进行统一管理。diamond为应用系统提供了获取配置的服务,应用不仅可以在启动时从diamond获取相关的配置,而且可以在运
2017-08-03 19:07:37
555
转载 Git忽略规则和.gitignore规则不生效的解决办法
在工程中很容易出现.gitignore并没有忽略掉我们已经添加的文件,那是因为.gitignore对已经追踪(track)的文件是无效的,需要清除缓存,清除缓存后文件将以未追踪的形式出现,这时重新添加(add)并提交(commit)就可以了。// 不要忘了后面的 . git rm -r --cached .git add .git commit -m "comment"
2017-08-01 15:23:24
220
转载 LOG4J2 异步日志
Making All Loggers AsynchronousRequires disruptor-3.0.0.jar or higher on the classpath. Future versions of Log4j 2 will require disruptor-3.3.3.jar or higher.This is simplest to configure and
2017-07-17 11:41:26
4970
2
转载 logback 异步日志配置
目前所有的日志记录方式采用的都是同步的方式,即直接将日志写入文件。在多应用的时候,这种效果会导致一定的线程运行延迟,所以可以采用异步的方式处理。logback AsyncAppender 目前在logback 1.0.11及以上版本存在 集成到项目异步日志记录是在原来logback上的扩展,并不是替代方式,所以只需要在原来的配置文件上添加一下配置
2017-07-03 16:03:39
4576
转载 RabbitMQ的几种典型使用场景
RabbitMQ主页:https://www.rabbitmq.com/AMQPAMQP协议是一个高级抽象层消息通信协议,RabbitMQ是AMQP协议的实现。它主要包括以下组件:1.Server(broker): 接受客户端连接,实现AMQP消息队列和路由功能的进程。2.Virtual Host:其实是一个虚拟概念,类似于权限控制组,一个Virtual H
2017-06-29 18:19:33
322
转载 java.toString() ,(String),String.valueOf的区别
在Java项目的实际开发和应用中,常常需要用到将对象转为String这一基本功能。本文将对常用的转换方法进行一个总结。 常用的方法有Object#toString(),(String)要转换的对象,String.valueOf(Object)等。下面对这些方法一一进行分析。方法1:采用 Object#toString()方法请看下面的例子: Object o
2017-06-28 15:46:10
168
转载 为什么选择Spring Boot作为微服务的入门级微框架
本文为普元云计算高级工程师许二虎在普元云计算架构设计群的微课堂分享。如需加入普元新一代数字化企业云平台研发设计群参与微课堂、架构设计与讨论直播,请直接回复此公众号:“加群 姓名 公司 职位 微信号”。1. Spring Boot是什么,解决哪些问题 1) Spring Boot使编码变简单 2) Spring Boot使配置变简单 3
2017-06-27 16:36:04
231
原创 springboot logback-spring配置mybatis日志输出
="false"/>log4j的additivity属性:它是 子Logger 是否继承 父Logger 的 输出源(appender) 的标志位。具体说,默认情况下子Logger会继承父Logger的appender,也就是说子Logger会在父Logger的appender里输出。若是additivity设为false,则子Logger只会在自己的appender里输出,而不会在父Logg
2017-06-09 11:58:47
9004
转载 linux安装rabbitMq
1yum install erlang安装完ErLang,就可以直接安装RabbitMQ了,可以下载官方的rpm编译好的软件包(参见:http://www.rabbitmq.com/install-rpm.html)1wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.5/rabbitmq-server-3.6.
2017-06-05 18:59:40
212
转载 中国大学生计算机编程第一人楼天城访谈
我的编程竞赛之路 ——中国大学生计算机编程第一人楼天城访谈25岁的楼天城有“中国大学生计算机编程第一人”的称号,也被参加竞赛的学子们敬称为“楼教主”。他的传奇经历一直激励着众多年轻学子:从2001年开始参加计算机编程竞赛,并连获全国一等奖;2004年入选国家集训队,同年获得IOI金奖并被保送到清华大学;2008年开始在首位亚裔图灵奖获得者姚期智院士的理论计算机中心攻读博士;2007年和20
2017-05-24 11:57:24
1336
转载 logger.isDebugEnabled和logger.isInfoEnabled的作用
1.看下apache的官方的document,在Performance下那块(From: http://logging.apache.org/log4j/1.2/manual.html)For example, for some logger cat, writing,logger.debug("Entry number: " + i + " is " +
2017-05-19 17:10:20
5473
转载 maven deploy 之父子项目依赖
新分支上开发新的迭代版本的时候,由于添加了新的dubbo接口,于是更新了一下新版本的jar,同时更新了父项目的版本号,但是在deploy的时候只是deploy了子项目api,并没有把父项目的pom.xml deploy到私服上,于是在线上重新部署项目的时候,打包报错如下。[ERROR] Failed to execute goal on project media-hapi:
2017-05-16 16:05:10
3779
转载 如何在Struts2中获取spring的实例化对象
WebApplicationContext webApplicationContext = WebApplicationContextUtils.getRequiredWebApplicationContext(ServletActionContext.getServletContext()); 12WebApplicationContext WebApplicationCon
2017-04-26 12:04:52
1181
转载 MessageFormat用法
MessageFormat用来格式化一个消息,通常是一个字符串,比如:String str = "I'm not a {0}, age is {1,number,short}", height is {2,number,#.#}; 而MessageFormat可以格式化这样的消息,然后将格式化后的字符串插入到模式中的适当位置,比如:将str中的{0}用"pig"替换
2017-04-18 11:22:01
390
转载 equals()方法左右变量的位置
题:一个变量,一个常量,用equals()方法比较,让咱们,看看到底是常量放前面好啊,还是变量放前面好----------------------------------------------------------------------------------------------其实说白了,如果是两个都是变量,那就放哪都行没啥区别;(有点废话了)现在主要就是有一个是常量,大家
2017-04-07 09:59:55
755
转载 mysql join 和left join 对于索引的问题
今天遇到一个left join优化的问题,搞了一下午,中间查了不少资料,对MySQL的查询计划还有查询优化有了更进一步的了解,做一个简单的记录: select c.* from hotel_info_original c left join hotel_info_collection h on c.hotel_type=h.hotel_type and c.hotel_id =h.
2017-03-28 13:05:22
11629
转载 mysql cardinality 索引选择
官方文档的解释:An estimate of the number of unique values in the index. This is updated by running ANALYZE TABLE or myisamchk -a. Cardinality is counted based on statistics stored as integers, so the value
2017-03-28 11:12:13
418
转载 Maven settings配置中的mirrorOf
使用maven时,从来没仔细注意过setting配置节点的作用,直到今天配置总是不起作用,总是报错才开始去认识这些节点的含义。这里就说mirrorOf,因为其他的怎么配置基本上都不会出错,只有mirrorOf会导致莫名其妙的错误,如果你还不了解mirrorOf,请往下看,你会认识到mirrorOf的重要作用的。主要参考来自:Using Mirrors for Rep
2017-03-27 12:59:38
791
转载 【Java线程】Callable和Future
Future模式Future接口是Java线程Future模式的实现,可以来进行异步计算。Future模式可以这样来描述:我有一个任务,提交给了Future,Future替我完成这个任务。期间我自己可以去做任何想做的事情。一段时间之后,我就便可以从Future那儿取出结果。就相当于下了一张订货单,一段时间后可以拿着提订单来提货,这期间可以干别的任何事情。其中Future接口就是
2017-03-24 11:26:11
219
转载 mysql索引需要了解的几个注意
板子之前做过2年web开发培训(入门?),获得挺多学生好评,这是蛮有成就感的一件事,准备花点时间根据当时的一些备课内容整理出一系列文章出来,希望能给更多人带来帮助,这是系列文章的第一篇注:科普文章一篇,大牛绕道索引是做什么的?索引用于快速找出在某个列中有一特定值的行。不使用索引,MySQL必须从第1条记录开始然后读完整个表直到找出相关的行。表越大,花费的时间越多。如果表
2017-03-23 11:00:13
258
转载 Git的gc功能
Git的底层并没有采用 CVS、SVN 底层所采用的那套增量式文件系统,而是采用一套自行维护的存储文件系统。当文件变动发生提交时,该文件系统存储的不是文件的差异信息,而是文件快照,即整个文件内容,并保存指向快照的索引。这种做法,提高 Git 分支的使用效率;但也容易导致代码仓库中内容重复程度过高,从而仓库体积过大。当遇到这种情况时,或者需要将仓库推送到远程主机时,就需要Git中的gc(garb
2017-03-22 15:55:42
1758
转载 唯美文章
命在于自造,运在于自改,福在于自求,境在于自选,友在于自择,习在于自改,悟在于自通,凡事在于自己。人生就是一场修行!走自己的道,修自己的行。 脚踏实地、切忌浮躁,眼界决定高度,思路决定出路年轻时的付出,都会是一种沉淀,它们会默默铺路,只为让你成为更好的人。心简单,世界就简单,幸福才会生长;心自由,生活就自由,到哪都有快乐.回忆中,总有些瞬间,能温暖整个曾经...
2017-03-21 14:57:32
244
转载 MySQL慢查询日志总结
慢查询日志概念 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10S以上的语句。默认情况下,Mysql数据库并不启动慢查询日志,需要我们手动来设置这个参数,当然,如果不是调优需要的话,一
2017-03-21 11:36:15
235
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人