- 博客(59)
- 问答 (1)
- 收藏
- 关注
原创 Redis(六):数据库
Redis数据库本篇将对Redis服务器的数据库实现进行详细介绍,说明服务器保存数据库的方法,客户端切换数据库的方法。数据库保存键值对的方法,以及针对数据库的添加,删除,查看,更新操作的实现方式等。服务器中的数据库Redis服务器将所有的数据库都保存在服务器状态redis.h/redisServer结构的db数组中,db数组的每个项都是一个redis.h/redisDB结构,每个redisDB结构...
2018-05-25 10:15:47
526
原创 Redis(五):跳跃表(SkipList)
跳跃表跳跃表(skiplist)是一种有序数据结构,他通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。跳跃表支持平均O(logN),最坏O(N)复杂度的节点查找,还可以通过顺序性操作来批量处理节点。在大部分情况下,跳跃表的效率可以和平衡树媲美,并且因为跳跃表的实现比平衡树要来得更为简单,所以有不少程序都直接使用跳跃表来代替平衡树。Redis使用跳跃表作为有序集合键的底层实现...
2018-05-23 10:16:13
741
3
原创 Redis(四):字典-渐进式hash
本篇接着上面Redis的字典进行继续分析,主要讲解Redis字典里面是如何实现渐进式Hash的策略的。渐进式Hash听名字就很容易参透出来是什么意思,渐进的意思就是不一步到位,而是慢慢的操作。慢慢的计算出Hash值。这个Redis的动作并不是一次性,集中性的完成,而是分多次,渐进式的完成的。这样做的原因在于,如果ht[0]里...
2018-05-22 14:35:51
1573
原创 Redis(三):字典(Dictionary)
字典字典,又称为符号表(Symbol table)、关联表(associative array)或映射(map),是一种用于保存键值对(key-value pair)的抽象数据结构。在字典里面,一个键(key)可以和一个值(value)进行关联(将键映射为值)字典中的每个键都是独一无二的,程序可以在字典中根据键查找与之关联的值,或者通过键更新值,又或者根据键来删除整个键值对。Redis所使用的C语...
2018-05-17 17:19:22
2005
原创 Redis(二):链表(Linked List)
链表链表提供了高校的节点重排能力,以及顺序性的节点访问方式,并且可以通过增删节点来灵活地调整链表的长度。作为一种常用的数据结构,链表内置在很多高级的编程语言里面,因为Redis使用的C语言并没有内置这种数据结构,所以Redis构建了自己的链表实现。链表在Redis中应用非常广泛,比如列表建的底层实现之一就是链表,当一个列表包含了数量比较多的元素,又或者列表中包含的元素都是比较长的字符串时,Redi...
2018-05-15 11:01:54
2283
1
原创 Redis(一):简单动态字符串(SDS)
简单动态字符串(Simple Dynamic String) Redis没有直接使用C语言传统的字符串表示(以空字符结尾的字符串),而是自己构建了一种命名为简单动态字符串SDS的抽象类型,并将SDS用作Redis的默认字符串表示。 在Redis里面,C字符串只会作为字符串字面量(String literal)用在一些无须对值进行修改的地方。当需要使用到需要修改的字符串的时候就会使用SD...
2018-05-11 23:21:29
1571
原创 5. Longest Palindromic Substring (最长回文子序列)
LeetCode 第5题Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.Example 1:Input: "babad"Output: "bab"Note: "aba" is also a valid answer...
2018-05-05 17:37:05
1501
原创 LogBack日志丢失原因调查和解决方法
Logback日志丢失原因调查和解决方法问题重现在将Connectivity工程成功部署到阿里云Swarm集群上后。PVC组对集群进行了压力测试。并回收了集群的log日志进行分析。发现在发送了100万条数据后丢失了498条数据。前后log都有唯独中间log丢失。于是就着手开始调查日志丢失原因。 调查过程调查过程分为5步。 1、因为Connectivity运行在高并发环境下,单机需要承受300
2018-04-26 16:27:56
17180
原创 个人心得
突然一看有近两个月的时间没有更新博客了。两个月没有写博客了感觉是在技术方面有些懈怠了,那么在接下来的一段时间里面会有一个很长时间的连续的更新博客。争取达到每天更新一篇博客,持续这样下去以保持技术的稳定成长。看了脉脉上各种大神在各种一线城市的大厂里面拿着高薪的Offer。三年或者两年工作经验都能够跳槽到阿里等一系列的大厂去实现人生价值。突然就有了奋斗和努力的方向了。希望自己也可以坚持不懈的努力去到更...
2018-04-25 20:42:17
1415
原创 Angular C SP 抛出 eval () 问题解决方法。
背景:在将项目部署到云平台时,运行抛出异常。异常如下。Uncaught EvalError: Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of script in the following Content Security Policy directiv
2018-02-23 21:52:35
5528
原创 设计模式:行为型模式(三)
感言:今天这篇行为型设计模式写完了,就写了三篇设计模式相关文章了,完成了设计模式的部分学习了。每一个设计模式自己都写了一个很小的Demo,当然这些Demo也是参考了很多其他人写的博客以及一些书籍汇总产生的。总体来说给我的感觉是我面向对象的抽象能力有了很大的提升。对于接口,继承,封装等有了更加深入的理解,但是坦率的讲自己对设计模式的理解还不够强,还需得有更多的实践来将理论上的东西进行进一步的落实。
2018-01-08 23:02:08
1608
原创 Spring-boot RestTemplate 使用 报错问题
个人开发的基于内存的请求监控系统。欢迎star和一同参与。https://github.com/standup-jb/tortoise今天在Spring-boot项目中使用RestTemplate的时候遇到了问题。现在做一个小的总结也是给其他遇到这个问题的人给一个提示。背景重现:用RestTemplate发送Post请求去其他微服务获取数据。其他微服务返回了4XX的错误code。这个时候...
2018-01-06 23:11:20
31673
9
原创 设计模式:创建型模式(一)
设计模式是什么,为什么要用设计模式很久以来,我一直认为修房子和写代码是一样的道理都是相通的。我经常在建筑上面去寻找做软件的答案。我们中国有很多的超级工程,但是我时常认为软件也是超级工程。我喜欢建筑,同样我也喜欢写代码,当很多时候我在软件方面遇到我无法解释的问题,我都会等价的替换到建筑里面,然后去寻找相应的答案。设计模式是什么,在我看来设计模式就是一套大家都这样做,这样开发的效率高,速度快,
2017-12-11 23:03:15
3982
原创 Spring-boot使用Quartz实现多线程调度任务
个人开发的基于内存的请求监控系统。欢迎star和一同参与。https://github.com/standup-jb/tortoise背景:项目的背景还原一下,项目的App需要去调用第三方的接口获取数据。我们要创建很多个任务(Task),每个Task都要去获取数据,但是每个Task的执行周期和频率不一样。所以使用多线程来解决。为每一个Task启动一个线程。然后循环不停的去获取数据。刚开始...
2017-11-27 20:52:36
10509
2
原创 Spring-boot添加Interceptor进行认证验证
个人开发的基于内存的请求监控系统。欢迎star和一同参与。https://github.com/standup-jb/tortoise背景:自己在做一个Agile的管理系统,需要做到用户认证和页面拦截跳转。所以需要验证是否有Session和Cookie的信息。如果没有就重新定向到登录页面,然后为了这个问题各种在网上找解决方法,说到这里真的很生气呀。网上大家写博客真的是内容参差不齐,很多博客即不...
2017-11-13 07:22:13
20456
4
原创 Spring-Boot Unit Test 失败总结
今天在做UnitTest的时候发生了很奇怪的原因,后面自己找了很久才找到问题。首先情景重现:1、我在自己的本地做UnitTest,Gradle build成功后然后提交到Git上jenkins也build成功。2、另外一个同事在checkin 他的代码的时候build失败了,失败的原因是我的unit test没有成功。3、同事将我的UnitTest 给注释掉后成功,
2017-11-11 23:39:47
3859
原创 JAVA原生线程池的基本了解
一、线程池 线程是程序的最小执行单位,当有需要大量而且需要短时间执行的程序的时候就需要用到线程池,因为线程的每次创建和销毁是需要开销的,如果线程创建和消耗需要的时间和开销远远的大于了线程本来执行它功能所需要的时间和开销,那么每次都创建一个线程这样是不划算的。我们可以在一开始的时候就将很多的线程创建出来,然后在每次需要的时候直接将参数传入,直接在线程池里拿出一个线程执行。执行完后又
2016-09-20 18:13:29
2166
原创 一些感想
最近找工作,加上面试,发现很多的东西都理解得不够的深入,其实平时如果自己多写写博客或许会对很多东西有更加深入的理解,可以把自己一些了解的东西保存下来,所以打算开始学习学习,怎么写博客,怎么让自己的一些知识可以继续留下来,希望现在大四开始写博客还不算太晚
2016-09-20 18:07:24
1483
2
空空如也
java写的发邮件连接不上smtp.163.com
2016-07-29
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅