6 凌澜星空

尚未进行身份认证

暂无相关简介

等级
TA的排名 2k+

聊聊对称/非对称加密在HTTPS中的应用

目前常用的加密算法主要分成三类:对称加密算法非对称加密算法消息摘要算法在互联网中,信息防护主要涉及两个方面:信息窃取和信息篡改。对称/非对称加密算法能够避免信息窃取,而消息摘要算法能够避免信息篡改。对称加密算法发送方和接收方需要持有同一把密钥,发送消息和接收消息均使用该密钥。相对于非对称加密,对称加密具有更高的加解密速度,但双方都需要事先知道密钥,密钥在传输过程...

2018-03-20 10:49:11

缓存世界中的三大问题及解决方案

目前的IO设备远不能满足互联网应用海量的读写请求。于是便出现了缓存,利用内存的高速读写性能来应付海量的查询请求。然而内存资源非常宝贵,将全量数据存储在内存中显然是不切合实际的。因此目前采用内存和IO结合的方式,内存只存储热点数据,而IO设备存储全量数据。缓存的设计包含很多技巧,设计不当将会导致严重的后果。本文将介绍缓存使用中常见的三大问题,并给出相应的解决方案。1.缓...

2018-03-14 15:55:03

程序员必知的并发编程注意事项

获取单例对象需要保证线程安全,其中的方法也要保证线程安全。单例对象会被多线程共享,因此要保证它是线程安全的,它其中的方法都要保证是线程安全的。工具类、资源驱动类、单例工厂类都要注意这个问题。创建线程或线程池时请指定有意义的线程名称,方便出错时回溯。线程资源必须通过线程池提供,不允许在应用中自行显式创建线程。使用线程池的好处是减少在创建和销毁线程上...

2018-03-14 09:41:58

揭秘ThreadLocal

ThreadLocal是开发中最常用的技术之一,也是面试重要的考点。本文将由浅入深,介绍ThreadLocal的使用方式、实现原理、内存泄漏问题以及使用场景。ThreadLocal作用在并发编程中时常有这样一种需求:每条线程都需要存取一个同名变量,但每条线程中该变量的值均不相同。如果是你,该如何实现上述功能?常规的思路如下:使用一个线程共享的Map<Thread,...

2018-03-13 11:27:26

Java异常体系中的秘密

相信大家每天都在使用Java异常机制,也相信大家对try-catch-finally执行流程烂熟于胸。本文将介绍Java异常机制的一些细节问题,这些问题虽然很小,但对代码性能、可读性有着较为重要的作用。Java异常体系介绍在学习一项技术前,一定要先站在制高点俯瞰技术全局,从宏观上把控某项技术的整个脉络结构。这样你就可以有针对性地学习该体系结构中最重要的知识点,并且在学习细...

2018-03-12 17:00:48

10分钟搞懂蚁群算法

蚂蚁几乎没有视力,但他们却能够在黑暗的世界中找到食物,而且能够找到一条从洞穴到食物的最短路径。它们是如何做到的呢?蚂蚁寻找食物的过程单只蚂蚁的行为及其简单,行为数量在10种以内,但成千上万只蚂蚁组成的蚁群却能拥有巨大的智慧,这离不开它们信息传递的方式——信息素。蚂蚁在行走过程中会释放一种称为“信息素”的物质,用来标识自己的行走路径。在寻找食物的过程中,根据信息素的浓度选...

2018-03-11 16:13:52

手把手0基础项目实战(三)——教你开发一套电商平台的安全框架

写在最前本文是《手把手项目实战系列》的第三篇文章,预告一下,整个系列会介绍如下内容:《手把手0基础项目实战(一)——教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)》《手把手0基础项目实战(二)——微服务架构下的数据库分库分表实战》《手把手0基础项目实战(三)——教你开发一套安全框架》《手把手0基础项目实战(四)——电商订单系统...

2018-03-11 14:54:13

常用的分布式事务解决方案

众所周知,数据库能实现本地事务,也就是在同一个数据库中,你可以允许一组操作要么全都正确执行,要么全都不执行。这里特别强调了本地事务,也就是目前的数据库只能支持同一个数据库中的事务。但现在的系统往往采用微服务架构,业务系统拥有独立的数据库,因此就出现了跨多个数据库的事务需求,这种事务即为“分布式事务”。那么在目前数据库不支持跨库事务的情况下,我们应该如何实现分布式事务呢?本文首先会为大家梳理分...

2018-03-11 14:44:55

0基础教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)

本文你将学到什么?本文将以原理+实战的方式,首先对“微服务”相关的概念进行知识点扫盲,然后开始手把手教你搭建这一整套的微服务系统。项目完整源码下载https://github.com/bz51/SpringBoot-Dubbo-Docker-Jenkins这套微服务框架能干啥?这套系统搭建完之后,那可就厉害了:微服务架构你的整个应用程序将会被拆分成一个个功...

2018-02-02 15:52:27

柴毛毛大话设计模式——开发常用的设计模式梳理

写在最前本文是笔者的一点经验总结,主要介绍几种在Web开发中使用频率较高的设计模式。本文篇幅较长,建议各位同学挑选感兴趣的设计模式阅读。在阅读的同时,也麻烦各位大佬多多分享!有你们的肯定,才有我继续分享的动力如需转载,请与我联系!人工智能看面相最近忙里偷闲,对人工智能看面相进行了一些优化,欢迎各位大佬体验!体验后恳请各位大佬分享朋友圈!基础学习:UML四

2018-01-30 21:41:07

10分钟搞懂遗传算法

大自然有种神奇的力量,它能够将优良的基因保留下来,从而进化出更加强大、更加适合生存的基因。遗传算法便基于达尔文的进化论,模拟了自然选择,物竞天择、适者生存,通过N代的遗传、变异、交叉、复制,进化出问题的最优解。遗传算法看似神奇,但实现思路却较为简单。本文先跟大家介绍遗传算法的基本思想,然后用遗传算法来解决一个实际问题,最后给出遗传算法的代码实现和解析。废话不多说,现在就开始吧~遗传算法

2018-01-24 20:55:55

Redis源码分析(四)——Redis数据结构-整数集合

1.整数集合特点有序:集合中所有值按照从小到大顺序排列。不重复可以存储int16_t、int32_t、int64_t三种类型的整数1.数据结构typedefstructintset{unit32_tencoding;unit32_tlength;int8_tcontents[];}intset;encoding:content数组中存储的整数类型(int

2017-10-14 18:49:56

Redis源码分析(三)——Redis数据结构-字典

1.数据结构1.1哈希表typedefstructdictht{dictEntry**table;unsignedlongsize;unsignedlongsizemask;unsignedlongused;}dictht;table:存储节点的数组size:table数组的长度sizemask:size-1,用于在添加节点时计算节点在tabl

2017-10-14 17:15:33

Redis源码分析(二)——Redis数据结构-链表

数据结构——节点typedefstructlistNode{structlistNode*prev;structlistNode*next;void*value;}listNode;prev:链表节点的前驱next:链表节点的后继value:节点中的值数据结构——链表typedefstructlist{listNode*head;listN

2017-10-14 15:20:11

Redis源码分析(一)——Redis数据结构-字符串SDS

1.SDS简介Redis中使用的字符串均为『简单动态字符串』(SimpleDynamicString),简称SDS。SDS是在C字符串的基础上进行了一些包装,使得它更符合Redis的使用场景。在Redis中,C字符串只用在一些无需修改的地方,如日志打印;其他需要使用字符串的地方基本上使用的都是SDS。2.数据结构structsdshdr{intlen;intfree

2017-10-14 15:01:32

服务器性能优化基础知识

性能调优整体思路空间换时间对热点数据缓存,减少数据查询时间。分而治之将大任务切片,分开执行。HDFS、MapReduce就是这个原理。异步处理若业务链中有某一环节耗时严重,则该环节将拉长业务链的整体耗时。可以将耗时业务采用消息队列异步化,从而缩短业务链耗时。并行处理采用多进程、多线程同时处理,提升处理速度。离用户更近一点如CDN技术,将静态资源放到离用户更近的地方,从而

2017-10-13 14:03:50

了解你服务器的心情——top命令详解

top是Linux较为常用的命令,可以监控服务器的CPU、内存、进程的运行情况,话不多说,直接操作。输入top即可启动:下面我们就来逐一介绍top向我们展示的内容。第一行:系统概况top-19:39:14up20days,7:48,1user,loadaverage:0.00,0.01,0.0519:39:14up20days:系统运行时间1user:用户

2017-10-12 20:26:34

MyBatis源码解析(二)——动态代理实现函数调用

如果我们要使用MyBatis进行数据库操作的话,大致要做两件事情:1.定义DAO接口在DAO接口中定义需要进行的数据库操作。2.创建映射文件当有了DAO接口后,还需要为该接口创建映射文件。映射文件中定义了一系列SQL语句,这些SQL语句和DAO接口一一对应。MyBatis在初始化的时候会将映射文件与DAO接口一一对应,并根据映射文件的内容为每个函数创建相应的数据库操作能力。而我们

2017-10-12 15:54:02

MyBatis源码解析(一)——MyBatis初始化过程解析

建议移步至简书浏览,排版较为整齐:http://www.jianshu.com/p/7bc6d3b7fb451.准备工作为了看清楚MyBatis的整个初始化过程,先创建一个简单的Java项目,目录结构如下图所示:1.1Product产品实体类publicclassProduct{privatelongid;privateStringproductName;

2017-10-11 20:20:45

我的Java学习之路

我认为,作为一名合格的程序员,精通一门语言只是最最基本的要求,除此之外,具备扎实的基础知识、了解主流的技术框架、具备快速学习的能力也都非常重要。语言是帮助你实现想法的工具,而作为程序员来说最为重要的东西是语言背后的你的想法,而这些想法需要通过长期的基础积累、经验积累而获得。我从大二的时候开始接触编程,到现在也有五个年头了。这五年我走了不少弯路、踩了不少坑。至此收到阿里offer,也算是达到了我人生第

2017-10-11 20:11:40

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!