随笔分类 -  Java

1
Java相关
摘要:背景: 因为每次对业务表的操作都需要记录创建人和修改人。因为不想每次set操作。所以写了一个拦截器实现MetaObjectHandler接口,并实现了insertFill方法。 @Overridepublic void insertFill(MetaObject metaObject) { Stri 阅读全文
posted @ 2020-01-23 15:57 惊艳了时光 阅读(4786) 评论(0) 推荐(0)
摘要:方式1:elasticsearch: nodes: xxx.xxx.xxx.xxx:9200,xxx.xxx.xxx.xxx:9200,xxx.xxx.xxx.xxx:9200 schema: http max-connect-total: 100 max-connect-per-route: 50 阅读全文
posted @ 2019-11-29 23:38 惊艳了时光 阅读(12415) 评论(1) 推荐(0)
摘要:图片转base64字符串网站:http://imgbase64.duoshitong.com/// 前缀,比如data:image/jpeg;base64,String prefix = imgBase64.substring(0, imgBase64.indexOf(",") + 1);// 替换 阅读全文
posted @ 2019-09-22 02:58 惊艳了时光 阅读(633) 评论(0) 推荐(0)
摘要:在下面的代码之前,需要知道bucket、accessKeyId、accessKeySecret,以及域名 endpoint; pom.xml: 但是会出现一个新的问题: <Error><Code>SignatureDoesNotMatch</Code><Message>The request sig 阅读全文
posted @ 2019-09-22 02:38 惊艳了时光 阅读(9867) 评论(0) 推荐(0)
摘要:最近在使用mock进行单元测试的时候,遇到了下面的问题: org.mockito.exceptions.misusing.InvalidUseOfMatchersException: Invalid use of argument matchers!1 matchers expected, 2 re 阅读全文
posted @ 2019-07-08 21:58 惊艳了时光 阅读(12441) 评论(0) 推荐(0)
摘要:1、用户信息脱敏,包括但不限于密码、姓名、邮箱、电话、地址、证件号等,必须加密后落库。 方式A:MD5+salt。md5准确说不是加密,只是信息摘要,容易受到彩虹表攻击,这里一定要加salt使用。 方式B:对称加密。 2、防串改。采用https协议。在http的基础上加上了ssl,如果要破解,要破C 阅读全文
posted @ 2019-06-03 23:51 惊艳了时光 阅读(370) 评论(0) 推荐(0)
摘要:kafka,一个topic通常会有多个partion。单个的partion是保序的,那么多个partion呢? 要想在多个partion情况下实现保序,在send消息的时候,ProducerRecord中一定要指定key。 partion保序了,剩下的就是消费者保序,一定要采用单线程进行消费。 阅读全文
posted @ 2019-05-20 23:17 惊艳了时光 阅读(738) 评论(0) 推荐(0)
摘要:关于分布式锁,一般有三种选择, 1、redis 2、zk 3、DB锁(悲观锁、乐观锁) 其中用的最多的应该是redis。 redis常用的方式有单节点、主从模式、哨兵模式、集群模式。 单节点在生产环境基本上不会使用,因为不能达到高可用,且连RDB或AOF备份都只能放在master上,所以基本上不会使 阅读全文
posted @ 2019-04-20 00:33 惊艳了时光 阅读(40681) 评论(0) 推荐(1)
摘要:一般使用悲观锁(for update),都是防止并发情况下对某个业务表数据同时进行修改操作。 这个时候该如何去优化呢? 一般悲观锁,如果按照索引去查询,锁住的是行级锁。一般是单个账户一行记录。 这个时候可以考虑将要批量的更改业务数据,按照用户分组,然后开启多线程去处理。 这样能让多个用户之间同时处理 阅读全文
posted @ 2019-04-05 02:34 惊艳了时光 阅读(619) 评论(1) 推荐(0)
摘要:有一个需求需要获得美国的凌晨0点,来计算当天用户的某操作的次数。(应用服务器在美东,数据库设置的是0时区) 代码如下: Calendar c1 = Calendar.getInstance(TimeZone.getTimeZone("America/New_York")); c1.set(11, 0 阅读全文
posted @ 2019-02-13 22:44 惊艳了时光 阅读(732) 评论(0) 推荐(0)
摘要:数据读取的时候: 先查缓存,缓存查不到查数据库,然后把查到的结果放到缓存中。这些都基本上没有争议。 但是数据更新的时候: 到底是先更新数据库,还是再更新(or删除)缓存 or 先更新(or删除)缓存,再更新数据库。 一直存在很大的争议。几种实现方式都会出现数据一致性问题。 我就说说目前我们系统是怎么 阅读全文
posted @ 2019-01-23 20:16 惊艳了时光 阅读(3925) 评论(1) 推荐(1)
摘要:1、查询topic,进入kafka目录: bin/kafka-topics.sh --list --zookeeper localhost:2181 2、查询topic内容: bin/kafka-console-consumer.sh --bootstrap-server localhost:909 阅读全文
posted @ 2019-01-10 00:32 惊艳了时光 阅读(103003) 评论(1) 推荐(1)
摘要:适用本地(JVM)缓存的场景: 1、对性能有非常高的要求。 2、不经常变化。 3、占用内存不大。 4、有访问整个集合的需求。 需要特别注意的地方: 1、如果是缓存查不到,再查DB。切记一定要加上锁,不然如果多个线程同时去查缓存,然后查不到,然后又同时去查DB,线程足够多,有可能出现穿透DB的情况。 阅读全文
posted @ 2018-12-18 00:13 惊艳了时光 阅读(6089) 评论(1) 推荐(0)
摘要:因为目前产品用到了策略模式,比如国内的用户注册走A流程,美国用户走B流程,印度用户走C流程,每个流程有些相同,有些则完全不一样。 这两种设计模式非常容易弄混淆。 策略模式和工厂模式: 1. 关注点不一样,工厂模式关注对象创建,策略模式关注行为封装 2.解决的问题不一样,工厂模式是创建型的设计模式,它 阅读全文
posted @ 2018-12-17 23:32 惊艳了时光 阅读(1444) 评论(0) 推荐(0)
摘要:事情起因:当时接了个需求,开发过程中需要对工程A新增依赖工程B和工程C。 写代码,噼里啪啦噼里啪啦。。。 本地起了三个dubbo服务,其他服务依赖开发环境服务,非常开森改自己冒烟的bug。 提测! 测试环境,工程A死活起不来,起到一半卡住!没有任何异常!!!然后过了三分钟,抛出zk心跳连接超时,巴拉 阅读全文
posted @ 2018-11-24 02:30 惊艳了时光 阅读(5188) 评论(0) 推荐(0)
摘要:HashMap: 底层是由数组 + 链表组成。 数组是Entry类数组,Entry中包含key、value、next。 数组长度默认是16。 当往HashMap中put值时,会将 key的哈希值 和 (Entry[]长度-1) 进行与运算。 假设得到的是0,如果Entry[0]该位置已有A,则将En 阅读全文
posted @ 2018-10-24 21:23 惊艳了时光 阅读(243) 评论(0) 推荐(0)
摘要:Spring最核心的就是IOC(控制反转)和AOP(面向切面编程)。 IOC可以理解为把Spring当做一个容器,用来管理各种service、dao等。不用再去手动new。 将service、dao等注册到spring容器中,有两种办法: 1、在xml中定义bean,比如: 2、通过注解。 常用的注 阅读全文
posted @ 2018-10-08 21:49 惊艳了时光 阅读(1630) 评论(0) 推荐(0)
摘要:最近换了一份工作,所以有一段时间没有更新博客了。 新公司从入职第一天到现在马上两周了,还没有晚上九点半之前下过班。。。(三四线IT城市。。。) 不过新公司是做互联网产品的,能学到更多东西,大牛更多,基本上十点起码还有一半的人在自觉的敲着代码。。(对了,貌似今天刚宣布B轮融资2亿,感觉前景还是不错的。 阅读全文
posted @ 2018-07-19 22:19 惊艳了时光 阅读(7220) 评论(6) 推荐(1)
摘要:最近生产环境上线后,tomcat有时会莫名其妙的宕机,重启后又好了。 服务挂了之后,客户体验非常不好。 试着做下双机热备。 下面是今天在本地环境虚拟机操作的步骤如下: 1. 环境,我本地装的是VMworkstation + CentOS7。 2. 在网上下载一个tomcat压缩包(apache-to 阅读全文
posted @ 2018-06-20 00:35 惊艳了时光 阅读(2402) 评论(0) 推荐(0)
摘要:第一步:dubbo-monitor-simple-2.5.3 连上zookeeper注册中心,获得要调用的接口的ip和端口号 第二步:输入命令:telnet 192.168.x.xxx xxxxx 回车后如果显示 :Escape character is '^]'. 代表连接成功,正在监听dubbo 阅读全文
posted @ 2018-05-10 23:14 惊艳了时光 阅读(2481) 评论(0) 推荐(1)

1