自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(227)
  • 资源 (8)
  • 问答 (4)
  • 收藏
  • 关注

原创 每周一总结(5) @Data注解

相当于 @Getter@Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode @Value几个注解的集合getter和setter注解生成对应的get和set方法RequiredArgsConstructor注解:(1)注解在类上,会生成构造方法(可能带参数也可能不带参数)。注意:如果带参数,这参数只能是以final修饰的未经初始化的字段或者是以@NonNull注解的未经初始化的字段。(2)该注解还可...

2021-05-22 23:18:56 644

原创 每周一总结(4) 分布式ID 学习笔记

在分布式系统,有些数据会存在全局唯一的需求,生成全局唯一的分布式ID也很重要。分布式ID需要具备的特点全局唯一:最基本的要素趋势递增:分布式ID用来标识数据的唯一性,往往会被用作主键或者是唯一索引。常用的MySQL InnoDB,使用的索引往往是BTree索引,自增的数据在插入时会有较高的效率。信息安全:避免恶意用户直接根据自增ID获取数据信息几种分布式ID的实现方式UUIDUUID(Universally Unique Identifier)的标准型式包含32个16进制数字,以

2020-09-20 00:18:00 459

原创 每周一总结(3) 小规范学习

1. 构造函数中不要带有业务逻辑,如果有,放在init中2. 把带有业务逻辑的getter和setter和单纯的getter和setter从命名上区分开来,方便排查问题3. 异常不要用来做控制流程4.建立索引 varchar 字段建立索引时,必须要指定索引长度,没有必要对全字段进行索引,根据实际文本区分度决定索引长度5.如果有order by 的场景,需要注意利用索引的有序性, order by 最后的字段是组合 索引的一部分,并且放在索引组合顺序的最后,避免出现 file_sort 的..

2020-09-13 09:16:14 335

原创 每周一总结 总结(2) redis lua相关

最近看到有在缓存扣库存的操作,大致了解了下redis lua原子操作。这里大致记录和总结下了解到的内容。什么是luaLua是一种功能强大、高效、轻量级、可嵌入的脚本语言。支持过程编程、面向对象编程、函数编程、数据驱动编程和数据描述等。Lua将简单的过程语法和 基于关联数组和可扩展语义的强大数据描述相结合。是一种动态类型化的语言。通过使用基于寄存器的虚拟机解释字节码来运行,并且具有自动内存管理和增量动态垃圾回收功能,使其成为配置、脚本和快速原型的理想选择。这里也只是简单了解了下lua的基本

2020-09-06 22:12:33 281

原创 活锁 Java并发编程实战学习

之前一直只看过死锁,但是不理解活锁是什么。活锁是由于两个线程之间相互谦让导致谁也没有获取到资源,谁也没有执行。实例可参考:https://blog.csdn.net/amd123456789/article/details/80867948

2020-05-30 23:08:41 188

原创 同步工具类 Java并发编程实战 学习笔记

阻塞队列 闭锁 栅栏 FutuerTask 信号量同步工具类可以根据自身的状态来协调线程的控制流。同步工具类都包含特定的结构化属性,封装了一些状态,这些状态觉得指定同步工具类的线程是继续执行还是等待。同时,提供了操作状态的方法。阻塞队列阻塞队列不仅能作为保存对象的容器,还能协调生产者和消费者等线程之间的控制流。take和put等方法将阻塞,直到队列达到期望的状态。闭锁闭锁是一种同步工具类,可以延迟线程进度直到其到达终止状态。闭锁的作用相当于一扇门,闭锁到达结束状态之前,这.

2020-05-30 22:55:18 214

原创 ThreadLocal简单学习使用

有线程隔离性,存储线程中的局部变量在线程流程执行完成之后需要清理threadLocal中的数据,避免内存泄漏感觉threadLocal的一个好处是在进行对象跨层传递的时候,使用ThreadLocal可以避免多次传递,打破层次间的约束。(from https://baijiahao.baidu.com/s?id=1653790035315010634&wfr=spider&for=pc) 参数较多,传递层次较多的时候应该可以考虑使用这种方式,避免多次传递请求参数以及传递错误请求参数。.

2020-05-30 21:35:34 146

原创 redis 热key、bigKey、布隆过滤器、pipeline

之前在用redis的时候只会觉得说有缓存真好,可以节省大量时间,但是从来没有想过redis可能会存在的问题。在这里记录下最近自己遇到的以及听到的可能有问题的地方。热Key热点key是指瞬间有大量请求去访问同一个key,从而压垮缓存服务。会造成流量过于集中,达到物理网卡上限,从而导致所在redis服务器宕机。那么接下来,对于这个key的请求就不可用,可能会直接压到数据库。导致服务整体不可...

2019-12-08 10:26:55 368

原创 Unrecognized character escape '*'

最近踩得一个坑,json反序列化的过程中,由于有特殊字符,直接报错com.fasterxml.jackson.core.JsonParseException: Unrecognized character escape '*'其中完整的字符是\*^o^*/尝试的方法如下:1. 直接去除\StringEscapeUtils.unescapeJavaScript(entry....

2019-11-30 22:13:36 9553

原创 java.util.ConcurrentModificationException一次报错排查

最近遇到了这个报错,报错的原因在于调用了ArrayList的sort方法,查看代码之后发现,sort方法也会改变modCount的值。后续需要注意。@Override@SuppressWarnings("unchecked")public void sort(Comparator<? super E> c) { final int expectedModCount =...

2019-11-30 22:06:37 240

原创 HBase学习和使用

最近项目中用到了hbase,使用的原因在于HBase可以提供高并发读写操作的支持,同时自动切分数据,使得数据存储具有水平扩展性。缺点1 不能支持条件查询,只支持按照Row key来查询.2 暂时不能支持Master server的故障切换,当Master宕机后,整个存储系统就会挂掉.1.数据类型,Hbase只有简单的字符类型,所有的类型都是交由用户自己处理,它只保存字符...

2019-11-19 10:28:07 135

原创 MySQL事务与乐观锁

最近感觉自己好像干了一件蠢事,写了一个事务包含A和B两个操作,然后又在A中加了乐观锁,导致失败率特别高。因此重新看了事务与乐观锁的资料。一次封锁 两段锁一次封锁法,就是方法的开始阶段,已经预先知道会用到哪些数据,然后全部锁住,在方法运行之后,再全部解锁。可以有效避免循环死锁。两段锁协议加锁阶段和解锁阶段。加锁阶段:在任何数据进行读操作之前都有申请获得S锁,在进行写操作之前要申请...

2019-11-18 09:41:36 812

原创 MySQL字段null和not null学习思考

最近,在开发过程中,建表的时候有个涉及到时间的字段。开始时,使用了not null,default值为0000-00-00 00:00:00。但是有个同事说,这个值很有可能不存在,只有部分情况下才会存在,应当使用null,节省空间。开始时,使用not null的原因也是因为之前的一位前辈说数据库建表时,所有字段尽量为not null,并且设默认值。然后通过代码保证。因此有重新查阅博客文档了解其原因...

2019-11-04 10:21:26 646

原创 《代码整洁之道》粗读思考

最近大概读了一遍代码整洁之道,感觉自己目前能想到的需要改进的地方包括:1. 注释在写代码的时候很喜欢写一堆注释出来,主要还是为了理清楚思路,然后便于后续再看的时候来理解当时为什么这么做。但是通过更合理的函数命名可以解决。同时过期的注释也需要及时删掉。避免影响后续开发的思路。目前项目中有部分未删掉感觉是之前的同事留下来的,会有点不敢动。2. 函数函数的命名,应该直接可以表明该函数...

2019-09-21 11:16:36 154

原创 CPU密集型和IO密集型与线程池的配置

在看《Java》并发编程的艺术线程池这一块时,提到了要合理地配置线程池,要分析任务特性。任务的性质:CPU密集型、IO密集型和混合型。CPU密集型和IO密集型CPU密集型也是指计算密集型,大部分时间用来做计算逻辑判断等CPU动作的程序称为CPU密集型任务。该类型的任务需要进行大量的计算,主要消耗CPU资源。这种计算密集型任务虽然也可以用多任务完成,但是任务越多,花在任务切换的时间就越多,C...

2019-09-04 10:31:17 8969 1

原创 BigDecimal,BigInteger 学习以及简单示例

最近的项目中用到了BigDecimal,之前并没有深入学习使用过,只是大概知道可以用于精确的运算,而float和double是不精确的。BigDecimal的实现中用到了BigIntegr,因此这里先学习下BigInteger。BigIntegerint和long都有长度限制,如果需要计算的整数大小超过long的范围,那么可以用到BigInteger。BigInteger继承...

2019-08-24 23:37:47 699

原创 RestTemplate学习

http请求方法(1)GET:通过请求URI得到资源(2)POST:用于添加新的内容(3)PUT:用于修改某个内容,若不存在则添加(4)DELETE:删除某个内容(5)OPTIONS :询问可以执行哪些方法(6)HEAD :类似于GET, 但是不返回body信息,用于检查对象是否存在,以及得到对象的元数据(7)CONNECT :用于代理进行传输,如使用SSL(8)T...

2019-08-24 10:12:25 463

原创 工具类学习-CollectionUtils

CollectionUtils是日常经常会用到的一个工具类,在包org.apache.commons.collections中。目前最常用到的两个方法是CollectionUtils.isEmpty()以及CollectionUtils.isNotEmpty()。还有待补充一些使用实例其中有一个私有的静态变量INTEGER_ONE:private static Intege...

2019-08-18 10:35:11 1243

原创 Spring 注解@Transactional

时刻感觉自己要写出bug的节奏,瑟瑟发抖。最近开发中发现一个问题,在使用@Transactional注解时,发现注解未生效,注解的方法在出现异常时,并没有回滚。因此搜了一些该注解失效的原因。@Transactional注解无效的原因1. 被注解的方法不是public的2. 异常类型不是unchecked类型。如果checked异常也想被回滚,注解上写明异常类型。@Transa...

2019-08-18 10:18:02 151

原创 本地缓存和分布式缓存的比较 堆污染

本地缓存和分布式缓存的比较:分布式缓存一致性更好一点,本地缓存 每个实例都有自己的缓存,可能会存在不一致的情况。本地缓存会占用堆内存,影响垃圾回收、影响系统性能。分布式缓存两大开销会导致其慢于本地缓存,网络延迟和对象序列化进程内缓存适用于较小且频率可见的访问场景,尤其适用于不变对象,对于较大且不可预见的访问,最好采用分布式缓存。堆污染:java中,当一个可变泛型参数指向一...

2019-08-04 10:16:49 3201

原创 Optional

目前的理解:1. Optional中包含一个可以为空的对象,应该在所有可能为空的地方都加上Optional作为返回值。强迫调用方自行判断是否为空。自己因为老是忘记判断是否为null而导致空指针。2. Optional之前自己最习惯的用法是先判断是否是ifPresent,然后去进行下一步操作。看了代码之后,发现也可以通过orElse来设定默认值,或者是通过orElseThrow来抛出为空时的...

2019-08-04 10:15:29 3585

原创 分布式事务

https://juejin.im/post/5b5a0bf9f265da0f6523913b事务有ACID,是通过InnoDB日志和锁来保证。事务的隔离型是通过数据库锁机制实现的、持久性通过redo log重做日志来实现。原子性和一致性通过UndoLog来实现。UndoLog的原理很简单,为了满足事务的原子性,在操作任何数据之前,首先将数据备份到一个地方,(这个存储数据的地方成为UndoLo...

2019-08-04 10:02:19 99

原创 分区 分库 分表 分片

https://blog.csdn.net/qq_28289405/article/details/80576614https://www.cnblogs.com/junwangzhe/p/6420049.html分区是物理数据库的设计方式,还是一张表,但是表的数据存储在不同的硬盘。分表,最终由N张表,系统读写时需要通过一定的规则找到数据需要映射到的表然后进行操作。分库,多个数据库...

2019-08-04 10:01:08 333

原创 springboot gradle 使用过程中遇到的问题小结(6)

1. 报错:Cannot deserialize instance of java.lang.String out of START_OBJECT token,我这里报这个错的原因是传递的json数据类型不对,修正后即可2. 使用JsonFormat引起的时间比正常时间慢8小时,@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GM...

2019-08-04 09:58:09 195

原创 MoreObjects

MoreObjects是一个辅助类,提供了那些在Objects中没有提供的方法。T firstNonNull(@Nullable T first, @Nullable T second)。找出first和second中第一个不为空的对象,并返回,如果都为空,抛出空指针异常。目前在项目中用来设置默认值,也不知道是否合理。ToStringHelper toStringHelper(Object...

2019-07-29 10:05:28 1065

原创 Objects类

1. Objects,用于操作Object的静态类。equals(Object a, Object b),这里感觉和Object中的equals作用相同。deepEquals(Object a, Object b),这里调用了Arrays.deepEquals0(Object e1, Object e2),这个方法首先对象数组类型,进而调用Arrays中对应的数组的equals方法,判断数...

2019-07-28 10:30:47 386

转载 springboot gradle 使用过程中遇到的问题小结(5)

1. @RequestMapping @PostMapping @GetMapping@GetMapping和@PostMapping是组合注解@GetMapping=@RequestMapping(method = RequestMethod.GET)@PostMapping=@RequestMapping(method = RequestMethod.POST)2. @Va...

2019-07-22 09:55:27 234

转载 springboot gradle 使用过程中遇到的问题小结(4)

1. TypeReference使用fastJson反序列化的时候用到为什么使用TypeReference浅谈FastJson的TypeReference用法2. MoreObjects.firstNonNull返回第一个不为空的对象Guava base -- MoreObjects3. RowBounds逻辑分页。之前一直没有注意,还以为最后也是limit,结果查...

2019-07-21 10:28:22 277

原创 springboot gradle 使用过程中遇到的问题小结(3)

1. 在一个多模块项目中,service对应实现类存在的时候报错,显示冲突,删掉之后则可以正常运行,这种情况下,gradle clean项目之后就可以正常运行了。2. classpath contains multiple SLF4J bindings。可以通过gradle窗口-》tasks-》help-》dependencies查看项目的依赖情况,从而判断要排除那些jar包3. coul...

2019-07-14 10:13:23 339

原创 springboot dubbo 踩坑(1)

1. 消费者consumer,使用了xml配置,@Reference注解发现注入null,后续改为@Resource即可2. 调用失败,报错:Failed to send response: Response [id=2, version=2.0.0, status=20, event=false, error=null, result=RpcResult [result=per.firs...

2019-07-11 14:33:51 698

转载 springboot gradle 使用过程中遇到的问题小结(3)

1. 生成jar包,本来想生成的是供其他项目引用的jar包。但是利用右侧gradle窗口中的tasks-》build-》bootJar生成的是可执行jar包,并不是想要的,这样的jar包被引用之后,发现找不到对应的包以及所需要的类。应该使用的是右侧gradle窗口中的tasks-》build-》jar生成jar包。两种jar包内结构不同,通过判断jar包结构判断自己生成的是否正确。...

2019-07-11 10:28:18 632

原创 springboot gradle 使用过程中遇到的问题小结(2)

想要打包api层,然后出现错误:Plugin request for plugin already on the classpath must not include a version新建的项目中默认的build.gradle中是:id 'org.springframework.boot' version '2.1.6.RELEASE'可以修改为:buildscript ...

2019-07-10 20:19:10 3651

原创 springboot gradle 使用过程中遇到的问题小结(1)

利用springboot+gradle搭建多模块项目,主要参考博客:https://www.cnblogs.com/dauber/p/9466374.html其中遇到的问题如下:1. 最外层的setting.gradle中include所有模块之后,需要将右侧gradle窗口中多余的根删除掉,不然会有报错导致项目无法运行2. 多个平级模块之间相互引用,旁边的小伙伴不需要,但是我这里需要...

2019-07-10 09:58:20 766

原创 微信公众号静默授权遇到的问题-redirect_uri 域名与后台配置不一致 10003

解决方法尝试了以下几种:1. redirect_uri 域名与后台配置不一致 10003(填坑解决方案)2. redirect_uri 域名与后台配置不一致 100033. 微信服务号 redirect_uri域名与后台配置不一致,错误代码100034. 微信公众号扫一扫功能提示:10003 redirect_uri域名与后台配置不一致错误解决方案第四个链接中介绍的方法可以...

2019-07-06 15:09:57 4244

linux文件系统-待看,感觉比较好的

linux文件系统linux文件系统详解Linux文件系统概览-----待看Linux基础(二)------待看带你认识真正的LInux系统结构-------待看日志相关:Linux日志文件系统及性能分析...

2019-04-26 10:28:07 482

原创 hash冲突解决方法

1. 开放定址法2. 拉链法3. 在哈希法开放定址法和拉链法对比:拉链法的优点:(1)处理冲突简单,没有堆积现象,平均查找长度较短(2)拉链法中的链表上的节点空间是动态申请的,更适合于创造表之前无法确定表长的情况(3)开放定址法为了减少冲突,要求装填因子较小,节点规模大时会浪费空间,结点较大时,拉链法中增加的指针域可以忽略不计,节省空间(4)用拉链法构造的散列表中,...

2019-04-23 09:48:42 154

原创 聚簇索引和非聚簇索引

聚簇索引:主索引文件和数据文件为同一份文件。表数据按照索引的顺序存储的,索引项的顺序与表中记录的物理顺序一直。对于聚集索引,叶子节点即存储了真实的数据行,不再有单独的数据页,一张表最多只能创建一个聚集索引,真是的物理顺序只能有一种。非聚簇索引:B+树的叶子节点上的data,并不是数据本身,而是数据存放的地址。表数据存储顺序与索引顺序无关。叶子节点包含索引字段值以及指向数据行的逻辑指针。...

2019-04-22 15:07:37 169

原创 Collection和Collections

Collection接口:int size();boolean isEmpty();boolean contains();Iterator<E> iterator();Object[] toArray();<T> T[] toArray(T[] a);boolean add(E e);boolean remove(Object o);boolean c...

2019-04-22 15:00:37 108

原创 Java HashSet

HashSet继承自AbstractSet,实现了Set接口、Cloneable、Serializable接口。构造函数 public HashSet() { map = new HashMap<>(); } public HashSet(Collection<? extends E> c) { map = new Ha...

2019-04-22 11:03:40 479

原创 Java7 hashmap

JDK1.7中的hashmap。HashMap继承自AbstractMap,实现了Map、Cloneable、Serializable接口。默认初始容量为:1<<4 即 16最大容量为:1<<30 即2的30次方默认负载因子:0.75Entry<K,V>数组。每个Entry的属性:final K key;V value;Entr...

2019-04-21 21:43:01 93

ef codefirst示例

EF6.0 code first,一对一、一对多、多对多关系映射生成数据库实例

2016-06-03

android访问通讯录中的联系人和添加联系人

参照视频写的可以访问和添加通讯录中的联系人

2014-08-20

采用listview实现数据列表显示

参考视频写的,采用listview实现数据列表显示,中间有3种适配器

2014-08-19

android 数据库增删改查

参考视频写的,android中通过SQLite数据库增删改查分页统计总数

2014-08-19

sharedPreferences

自己参照视频的代码sharedPreferences

2014-08-18

文件存入读取

android代码,简单的文件存储,文件内容的读取

2014-08-15

Android拨号

自己参考视频写的拨号小程序,代码可以运行

2014-08-14

VS整数排序

VS C++整数排序 新手写的

2012-11-15

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

TA关注的人

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