5 逝兮诚

尚未进行身份认证

希望是什么,娼妓

等级
TA的排名 1w+

hashCode,MD5,SHA-1的区别和碰撞量级

在java中,默认使用hashCode生成对象的hash值,它在一定程度上可以作为对象的唯一表示。同时还有MD5,SHA-1这些也可以计算文件/对象的hash值,标志唯一,那它们之间有什么区别呢。hashcode,md5,SHA-1都是散列加密算法,其中hashcode长度为32位,md5为128位,sha-1为160位。位数越大,这个数据的数据量就越大,重复的几率越小,但是运算起来越复杂,消耗...

2019-11-19 14:46:23

源码追踪 - Gson解析部分属性值为null

接口返回的json数据,有些key的值是null,而断点调试返回对象是有数据的。原因是springMVC采用的gson做json解析,gson解析对象为json字符串时,对于对象中匿名内部类属性,会设Null值。解决方法是不使用匿名内部类对象。前端接收数据,实际对象是有值的。{ 'code':0, 'data': { 'filter':[ null, n...

2019-11-04 14:50:43

docker使用学习笔记

docker介绍docker是个容器,采用沙盒启动,类似虚拟机。docker的架构是C/S,远程仓库存放image(镜像),本地下载image(镜像),并根据image(镜像)本机创建container(容器),一个容器就是一个运行的系统。docker可以执行--help来查看命令APIdocker start --helpdocker下载后需要启动守护进程,它会跑着本机后台,启动...

2019-10-31 14:41:28

macos命令行启动docker服务

通过 launchctl 查看 docker server, 记住docker server 名launchctl list | grep docker111117 0 com.docker.docker.2388然后关闭和启动它。launchctl stop com.docker.docker.2388 && launchctl start com.d...

2019-10-30 14:47:32

java多线程实现原理

java内存模型java的内存模式 线程 - 工作内存 - 主存。线程会读写工作内存,CPU会周期性的将工作数据刷入主存,如果多个线程写工作内存,就会导致每个线程的工作内存、主存内存数据都不一致,最终导致执行结果无法预期。线程1 —|工作内存|—> [ ] [ 主存 ]线程2 —|工作内存|—> [ ]happen...

2019-08-13 17:37:33

分布式锁的实现以及在定时器中的应用

分布式锁是为了保证分布式各系统对于资源的强占,独占。分布式锁的设计与多线程锁设计一样,都是通过一个信号量,对它进行CAS(compare and set)原子操作来实现乐观锁,或通过一个独占锁实现悲观锁,悲观锁不推荐。乐观锁乐观锁的核心是通过信号量代表资源,通过CAS的操作去标志改信号被占用。CAS成功,代表资源没有被占用,执行任务;CAS失败,代表资源被占用或处理过,不执行改资源。ture...

2019-06-27 11:41:38

java自测心得、技术选型和实现方式

程序员自测是很重要的一个环节,我认同测试驱动开发的理念,经过一段时间的测试代码的编写,发现测试代码需要保证几点,1.测试代码可重复跑,不能跑过一次,改了数据库数据就不能跑了。2.测试代码写好后,尽可能保持不变,哪怕代码变后,直接跑测试就能验证修改是否正确,而不是把测试代码,测试数据再改一遍。service层测试要与数据库解耦,不能因为数据库数据的变化影响测试,我曾经使用int.sql去对数据库做i...

2019-05-15 10:41:55

jdk源码-HashMap

AbstractMapAbstractMap是Map接口的抽象实现类,通过抽象方法keySet()实现了get(key),remove(key),containsKey(key),containsValue(value)的基本算法,遍历加equals。HashMapHashMap是AbstractMap的一个实现类,1.8之后对其进行了重写,加入TreeNode的结构,原因是存在使用不当的h...

2019-04-18 16:47:43

jdk源码-Map与HashTable

Mapmap是一个接口,是一个映射着key和value关系的容器,从定义上看,map不能包含重复的key,一个key最多只能映射一个value。map是否有序取决于它的实现类,treeMap是有序的,hashmap是无序的。对于map不支持的操作,会报UnsupportedOperationException。map接口不会限制key和value是否可以为null,不会限制一定用equals...

2019-04-18 16:44:35

Python股票实时查看告警工具

需求设计股票实时查看告警工具需求每次想看股票的时候都要拿出手机,或者打开股票软件,这个过程一般都比较长,很容易打断连贯的代码思路,并且股票软件都有太多广告信息,诱惑信息,让人忍不住去点,浪费很长时间,同时也杂多的信息,容易让人陷入FOLO的心态,活生生成了韭菜。第二个需要一个告警通知,某某股票到了我设定的告警值,我可以加仓或者斩仓了。功能查看实时自选股票价格股票阀值告警实时自选股...

2019-04-12 20:59:04

Python上手学习

python的语法简单,可以很好提高个人生产力。我花了2天的时间重零开始学习python,目前已经能做爬虫了。这篇博客是不管原理,直接干,直接梭的学习博客。安装pythonmac系统中默认安装一个python,一般是python2,但是python2已经过时,需要下载python3。打开终端,输入python --version # 查看python version brew sear...

2019-04-01 11:26:24

jdk源码追踪-LinkedList

关于List接口的类结构和AbstractList的讲解,可以看看上一篇文章jdk源码追踪-ArrayList。AbstractSequentialListAbstractSequentialList使用迭代器来实现get(int index), remove(int index), add(int index, E e)基本算法。迭代器是实际调用抽象方法listIterator,需要子类实现...

2019-03-29 16:30:21

jdk源码追踪-ArrayList

ListList是有序列,所以定义的接口中都有基于index的各种方法。public interface List<E> extends Collection<E> { E get(int index); E set(int index, E element); void add(int index, E element); E remo...

2019-03-29 16:29:14

jdk源码追踪-Collection

CollectionCollection接口是java最基础,重要的接口之一,它有List,Set,Queue等Java最常用的子接口,这里主要解析Collection这个接口以及它最常用的类的源码实现。上面是collection的类图Collection是集合的父接口,它规约了集合有add(E e),remove(Object o),size(),toArray(),iterator()...

2019-03-29 15:16:13

ArrayList为什么要自己实现迭代器

ArrayList的父类AbstractList已经实现了Iterator接口,而且LinkedList使用AbstractList的Iterator,而ArrayList要自己实现Iterator接口?ArrayList实现Iterator,是为了避免ArrayList在迭代过程中数组结构发生变化的而产生的问题,这个处理机制称为Fail-Fast机制,实际是一个乐观锁,实现如下。ArrayL...

2019-03-07 18:44:52

unicode字符串解析

现象和答案在http接口接收时,很多接口提供方都喜欢把汉字通过unicode的方式传过来,而数字和字母保持不变,就像这样。{“Content”:"[reply]CocoWu892[/reply]\n\u6c9f\u901a\u662f\u6700\u91cd\u8981\u7684\u6280\u80fd\u4e4b\u4e00"}这里就必须涉及到一个带unicode字符串转成正常字符串...

2019-02-19 14:18:28

CSDN用户行为分析和用户行为数据爬取

爬虫随机从CSDN博客取得800条用户行为数据,包含用户名、原创博客数、评论数、浏览量,试着从博客数,评论数,浏览量三个方面分析csdn的博主们的形象。原创博客数博主们的原创博客数并不是很多,50篇以下的占了70%,0篇的就有35%。我没有想到的是超过100篇原创博客的博主居然有21%,看来养成写博客习惯的人还是很多啊,原创博客超过100,也不是什么特别稀奇的情况。评论数有63%的博主评...

2019-02-16 10:17:57

JAVA自动爬取CSDN用户数据并文章点赞

爬取用户某天,我发现我的文章被某个用户点赞了。欣喜之下,把那边文章重新校核更改一遍,接着进入这个点赞我的用户看看,结果发现他近期的博客是一些爬虫的实战。我想,我那篇文章,应该是他做的一个小程序批量加载用户信息并给文章点赞。我觉得这是一个有点意思的事,于是用java实现csdn批量爬取用户名并点赞。其中批量爬取用户名的思路借鉴这位大神的这篇博文GO+Selenium批量关注CSDN 1 (如何获取...

2019-02-13 10:55:58

Could not set parameters for mapping错误与mybatis源码追踪

错误及解决方法因为担心@Builder的注解的类不支持mybatis做查询,刚好也有了一个错误,跟了一圈发现不是mybatis的问题,是自己mapper的like写错导致。记录一下跟踪过程,做个总结。这个错误的原因是mapper的参数和要导入的参数数量不一致,我这里的原因是把参数写在''里了,导致mapper没有解析到这个参数。错误的写法'#{userNamePinyin}%',正确的写法#...

2019-01-22 19:18:44

shiro源码解析-doFilter

shiro应该算的上java中最流行的权限框架了,使用的多了,便想着研究一下源码,看它究竟怎么运行的。doFilter是shiro对于每个请求都会走的一个效验过程。它的流程如下从DelegatingFilterProxy开始,执行dofilter(),这里是一个代理模式,执行的是WebApplicationContext中的filter执行的dofilter方法,这个filter就是shiro...

2019-01-12 23:38:14

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。