- 博客(42)
- 资源 (9)
- 收藏
- 关注
原创 java基础之List遍历速度
一、对ArrayList与LinkedList分别使用10w次不同的方式进行遍历,试了三次,结果如下arrayList:for:12arrayList:for-earch:11arrayList:forEach:167arrayList:parallelStream().forEach:18arrayList:stream().collect:14linkedList:for:13081linkedList:for-earch:10linkedList:forEach:7linkedLi
2020-06-09 16:33:41
1021
原创 rocketMQ之StoreCheckpoint
一、StoreCheckpoint1、作用记录commitLog、ConsumeQueue、Index文件的刷盘时间点,当上一次broker是异常结束时,会根据StoreCheckpoint的数据进行恢复2、参数private volatile long physicMsgTimestamp =0;private volatile long logicsMsgTimest...
2020-01-06 15:19:28
1155
原创 broker启动主要过程
一、读取启动配置文件二、加载本地数据文件1、加载topics.json2、加载consumerOffset.json3、加载subscriptionGroup.json4、加载consumerFilter.json5、判断abort文件是否存在:存在表示上一次broker是异常启动6、加载delayOffset.json7、加载commitLog文件8、加载c...
2020-01-06 15:16:36
803
原创 rgw报错SignatureDoesNotMatch
一、sdk版本<dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-s3</artifactId> <version>1.11.475</version>...
2019-12-26 16:12:30
4104
1
原创 ceph运维问题记录
一、如果出现 osd启动报try_get_map错误,可以从正常的osd去导出对应版本的epoch,然后导回就可以了1、如何导出导入osdmap第一步:先停掉坏的osd,以及一个好的osd(因为ceph-objectstore-tool执行时需要停止osd),第二步:执行导出导入即可命令例子:其中84是好的osd,85是有问题的osdceph-objectstore-...
2019-11-27 14:55:05
2649
原创 redis序列化问题
今天在现网发现程序做了一个full GC,heap堆栈出来,发现一个redis的序列化问题从数据库获取了33w条数据,大小是1M多一点,然后之后在redisClient.put的时候,对这个集合做序列化,字节数变为了80M多。而内部的序列化是,ByteArrayOutputStream与ObjectOutputStream又复制内容导致最终内存暂用了200M左右原因:1、redis中序...
2019-09-27 16:20:24
385
原创 数据库事务特性
一、事务的四大特性隔离性:隔离性是指当多个用户并发操作数据库时,数据库为每一个用户开启不同的事务,这些事务之间相互不干扰,相互隔离。原子性:一个事务内所有的操作要么都成功、要么都失败持久性:当一个事物提交之后,数据库状态永远的发生了改变。不会因服务器宕机而改变。数据落地到硬盘了(可能以日志的形式落地)一致性:数据库事务的一致性就规定了事务提交前后,永远只可能存在事物提交前的状态和事...
2019-06-27 19:23:38
201
原创 G1垃圾回收器
引言1、垃圾回收器需要做三件事: 分配内存:垃圾回收算法的设计往往制约了内存分配的方式; 确保存活对象不会被回收 回收垃圾对象(垃圾是指那些不再被使用的对象)2、对于垃圾回收器的回收来说,不管算法怎么样,基本思路都是基于以下流程: 扫描得到根节点——>从根节点扫描被引用存活对象——>删除不再应用到的对象一、G1垃圾回收器特点1、G1的...
2019-06-20 23:15:52
1845
原创 CMS垃圾回收器
一、垃圾回收流程1、初始标记(STW) 1.1、标记老年代中所有的GC Roots对象 1.2、标记老年代中被年轻代中活着的对象引用的对象2、并发标记 2.1、从初始标记收集到的"根"对象引用开始,遍历出所有被引用的对象 PS:因为是并发运行的,在运行期间会发生新生代的对象晋升到老年代、或者是直接在老年代分配对象、或者更新老年代对象的引用关系等等,对...
2019-06-20 21:03:16
640
原创 selenium(java)实现滑动图片验证码
一、原由网上搜索了一下,有一些使用selenium实现滑动图片的代码,但是多是需要获取完整图的。现在很多滑动图片验证码没有完整图,这里记录一下我实现的。二、整理思路1、获取背景图(bgImg)、获取验证图(vrImg)2、对背景图与验证图做二值化处理(PS:这里二值化的阈值需要调整,不然可能获取不到想要的效果)3、比较背景图与验证码图相似的地方(二值化之后背景图就会有跟验证图一...
2019-04-12 14:25:43
3769
3
原创 hadoop2.9.2插件编译以及安装
一.hadoop2.9.2源码编译 因为直接使用官方的编译包,执行命令的时候,会报一些警告,很碍眼。所以自己编译一个linux 64位的2.9.2的版本。 参考:https://blog.youkuaiyun.com/qq_24811513/article/details/79021508 。我按上面的去操作,成功了。二、hadoop2.9.2对应的eclipse插件编译1、安装a...
2019-02-28 17:37:33
2391
5
原创 java并发编程的艺术笔记——volatile理解
现象:A线程写一个volatile变量后,B线程读同一个volatile变量。A线程在写volatile变量之前所有可见的共享变量,在B线程读同一个volatile变量后,将立即变得对B线程可见。原理:1、从happen-before原则理解 线程A在写volatile变量之前的所有变量happen-before于当前volatile的变量 线程B在读volatile变量happen-...
2018-06-24 22:18:14
218
原创 AbstractQueuedSynchronizer分析
AbstractQueuedSynchronizer(同步器,以下称为同步器)提供了一个基于FIFO队列,可以用于构建锁或者其他相关同步装置的基础框架。一般要使用同步器,会自己实现一个同步器的子类并覆盖以下方法方法名称描述protected boolean tryAcquire(int arg)排它的获取这个状态。这个方法的实现需要查询当前状态是否允许获取,
2016-03-14 20:39:00
556
原创 基础概念
1、http请求连接跟断开,一般在6m左右2、redis 一般1s能读取数据10万次,现在遇到的瓶颈是每秒 32k3、try{}catch 几万次也才几毫秒一个进程,应该至少需要撑住1K的并发请求每天4000W的请求,每个请求耗时40,ms左右,6台服务器,会出现请求超时。一般一个请求在10s以内
2016-01-07 23:26:49
496
原创 cxf根据wsdl生成webserivice服务端
1.根据wsdl文件生成相关代码wsdl2java用法: wsdl2java -p com -d src -all aa.wsdl -p 生成代码的包名: -d 指定要产生代码所在目录 -client 生成web service客户端代码 -server 生成web service服务器代码 -impl 生成web service
2015-09-01 19:20:06
9498
原创 类初始化与类对象初始化
类的生命周期:加载——> 验证、准备、解析——>初始化——>使用——>卸载类初始化进行的5种情况:1.遇到new、getstatic、putstatic或invokestatic这4条字节码指令时,如果类没有进行过初始化,则需要先触发其初始化。生成这4条指令的最常见的java代码场景是:使用new关键字实例化对象的时候、读取或者设置一个类的静态字段(被final修饰的除外),以及调用一
2015-08-13 23:26:43
1434
原创 memcached的失效时间设置注意点
memcache的失效时间设置比如memcache.set(key,value,50) 设置为50秒过期memcache.set(key,value,new Date(System.currentTimeMillis()+5000)) 设置为50秒过期第二个跟第一个的区别是当设置了这个时间点之后,它会以服务端的时间为准,也就是说如果本地客户端的时间跟服务端的时间有差值,这个值就
2015-08-05 21:07:20
23141
原创 maven线上遇到的一个问题
问题描述:今天在升级程序的时候突然报找不到某个类文件,很惊讶,一直找不到原因,后来发现maven打的jar包中MANIFEST.MF中写的依赖包有些带有时间戳,而不是我们在pom文件配置的版本,所以在我们生产的lib文件夹下找不到相关的类了。原因:这些带有了时间戳的jar,我们在pom中写的是快照(SNAPHOST),而今天刚好有个同事上传了一个新的jar到私服上,并刷新了一下。这导致了我
2015-06-09 23:15:41
573
原创 java synchronized总结
一句话总结:每个类,每个对象都有一个锁,当在方法或者代码块中添加了synchronized关键字时,要访问这个方法或者这个代码块时就需要获取对应的锁,没有添加synchronized则不受影响。举例说明:1、举例的类package com.sync;public class TestSync { private Object lock = ne
2015-05-29 10:57:16
674
转载 Nagle算法(转)
该文转载自其它地方1、Nagle算法作用 TCP/IP协议中,无论发送多少数据,总是要在数据前面加上协议头,同时,对方接收到数据,也需要发送ACK表示确认。为了尽可能的利用网络带宽,TCP总是希望尽可能的发送足够大的数据。(一个连接会设置MSS参数,因此,TCP/IP希望每次都能够以MSS尺寸的数据块来发送数据)。Nagle算法就是为了尽可能发送大块数据,避免网络中充斥着许多
2015-03-05 13:34:47
1081
原创 Shiro源码学习之ShiroFilter
一、shiroFilter的继承关系二、接口说明1、ServletContextSupport :封装了一个ServletContext2、Filter 接口public interface Filter { void init(FilterConfig filterConfig) throws ServletException;
2015-02-28 17:20:30
1233
原创 ORACLE使用记录
oracle 实例名,服务名,数据库名称是三个概念java连接时jdbc:oracle:thin:@10.1.56.123:1521:sid(实例名)jdbc:oracle:thin:@//10.1.56.123:1521/服务名TNSNAMES.ORA配置文件orcl= (DESCRIPTION = (ADDRESS = (PROTOCOL
2015-01-28 14:56:07
624
原创 FastDFS_v5.05安装记录
1、软件包 FastDFS_v5.05.tar.gz libfastcommon-master.zip fastdfs-nginx-module_v1.16.tar.gz zlib-1.2.8.tar.gz pcre-8.12.tar.gz nginx-1.7.9.tar.gz2.安装部署 FastDFS_v5.05依赖
2015-01-12 19:40:09
11394
2
原创 Mybatis参数传递记录
当对mybaits进行参数传递时#{paramter} 表示一个'?' ${paramter}表示替换例如:updateid=123infoids=123,123select * from test where updateid=#{updateid} and infoids in (#{infoids}) mybaitis打印出来的sql是 sele
2014-12-19 14:09:32
631
原创 12月15日突感之storm
最近项目中在用storm,都说storm实时计算比较牛,很快,那么为什么它很快呢?撇开技术想想,道理也挺简单的——在同样的生产设备下,农场主(多个农民)干的活肯定比一个农民干的活快,正所谓人多力量大。但是人多起来了,麻烦事情也会多起来。农场主得管理一帮人的吃喝拉撒,头痛闹热。为了每个农民都能积极得干活,得调节好大伙的心态,得根据每个人得生产能力分配好任务,得关心每个人的身体健康。于是,农场主制定了
2014-12-15 22:48:34
541
原创 SwfTools之linux环境安装
主要步骤:wget http://www.swftools.org/swftools-0.9.1.tar.gztar xvzf swftools-0.9.1.tar.gzcd swftools-0.9.1./configuremakemake install遇到问题:当./configure的时候遇到* The following headers/l
2014-09-23 14:53:20
952
原创 rabbitmq之window环境启动
rabbitmq启动方式1、以应用方式启动rabbitmq-server -detached 后台启动Rabbitmq-server 直接启动,如果你关闭窗口或者需要在改窗口使用其他命令时应用就会停止 2、以服务方式启动rabbitmq-service install 安装服务,安装完之后在任务管理器中服务一栏能看到RabbtiMqrabbitmq-service
2014-09-03 14:11:41
23440
原创 java代码之数据库ResultSet转换成javaBean
public T handler(ResultSet rs,Class clazz){ T entity=null; try { entity=clazz.newInstance(); ResultSetMetaData rsMetaData=rs.getMetaData(); int
2014-08-16 14:56:15
6918
原创 Paxos算法学习总结1
一、Paxos 算法解决的问题是一个分布式系统如何就某个值(决议)达成一致。一个典型的场景是,在一个分布式数据库系统中,如果各节点的初始状态一致,每个节点都执行相同的操作序列,那么他们最后能得到一个一致的状态。为保证每个节点执行相同的命令序列,需要在每一条指令上执行一个「一致性算法」以保证每个节点看到的指令一致。一个通用的一致性算法可以应用在许多场景中,是分布式计算中的重要问题。因此从20世纪80
2014-03-20 18:06:33
901
原创 FastDFS使用情况总结2
FastDFS_v3.11版本当使用文件服务器合并小文件功能,需要注意的地方1、定时生成一个固定大小的trunk文件(用于存放小文件)2、当删除存放在trunk文件中的小文件的时候,trunk不会被删除,而且trunk文件大小是不变的,只是在trunk文件中存放更多的小文件。trunk文件就像一个大小固定、用来存放小文件的容器,当一个文件被删除,就相当于从容器中拿出了这个文件,容器中文
2014-02-25 19:14:23
1011
原创 FastDFS使用情况总结1
FastDFS_v3.11版本 fastdfs-nginx-module_v1.10版本 nginx-1.0.11版本 pcre-8.34tracker 10.0.2.15storage1 10.0.2.15(s1)storage2 10.0.2.16 (s2)nginx+fastdfs插件(n1,n2)一、安装过程遇到的问题1、如果group name设置成一样的话,
2014-02-17 14:47:38
1616
原创 学习jVM之垃圾回收器学习总结
1、Serial收集器(串行收集器,属于新生代收集器,是Client模式下的默认收集器) 单线程收集器,运行的时候,用户线程会停止2、ParNew收集器(并行收集器,属于新生代收集器,是server模式下下的首选收集器) 多线程收集器,运行的时候,用户线程会停止 -XX:+UseConcMarkSweepGC选项后的默认新生代收集器 -XX:+UseParNew
2014-01-23 18:40:40
943
原创 ZooKeeper Watcher执行顺序
有如下三个wathcer zk.extist(rootpath,new ExistWater())zk.getData(rootpath+childpath,new DataWatcher());zk.getChildren(rootpath+childpath,new ChilrenWatcher());ZooKeeper Watcher测试顺序如下1、ExistWate
2014-01-02 11:12:38
6242
原创 UsernamePasswordAuthenticationFilter
UsernamePasswordAuthenticationFilter本身不是过滤器,而是继承了AbstractAuthenticationProcessingFilter才拥有过滤器的性能。认证过程如下1、先判断请求(请求必须是post请求)地址是否为/j_spring_security_check,如果不是,则放行,进入下一个过滤器,是则进行校验。2、AbstractAuthen
2013-12-01 23:10:14
13532
原创 UsernamePasswordAuthenticationFilter学习之基础
UsernamePasswordAuthenticationFilter是登陆用户密码验证过滤器,它继承了AbstractAuthenticationProcessingFilter过滤器(真正的Filter),是spring security3的第4个过滤器。UsernamePasswordAuthenticationFilter由于3个表单参数,是我们需要知道的1、username
2013-11-28 23:40:31
23573
原创 ConcurrentSessionFilter
ConcurrentSessionFilter做的功能比较简单,主要是判断session是否过期以及更新最新访问时间 通过代码HttpSession session = request.getSession(false);判断获取session1、首先判断session是否存在--------HttpSession session = request.getSession(fals
2013-11-28 22:53:16
8201
原创 SecurityContextPersistenceFilter
SecurityContextPersistenceFilter主要是在SecurityContextRepository中保存更新一个securityContext,并将securityContext给以后的过滤器使用本质上就是在session中生成一个securityContext——httpSession.setAttribute(springSecurityContextKey, co
2013-11-26 19:33:15
6921
原创 ChannelProcessingFilter
通常最可能用来确保一个请求在https上发生,可以给ChannelDecisionManagerImpl赋值SecureChannelProcessor和InsecureChannelProcessor一个典型的配置如下: ref="channelDecisionManager"/> -security-metadata-source
2013-11-25 23:57:24
2143
原创 Rabbitmq集群测试1
假设有3个rabbitmq A,B,C组成集群(普通集群)(一)测试一1、在A中添加一个queue--mq.test12、连接B向mq.test1发送持久化数据3、关闭A现象1:当关闭A,发送程序能够继续发送数据,不会报错原因:虽然A已经关闭了,但是B没有关闭,connection依旧存在。4、关闭发送程序5、重启启动发送程序现象2:发送程序启动失败报错原因
2013-07-02 17:40:25
1670
hadoop2.9.2 linux 64位编译包地址
2019-02-28
hadoop2.9.2 eclipse插件
2019-02-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人