
技术
西三旗靓仔
大厂一线员工知识分享
展开
-
ssh的三种端口转发方式
1、绑定本地端口既然SSH可以传送数据,那么我们可以让那些不加密的网络连接,全部改走SSH连接,从而提高安全性。假定我们要让8080端口的数据,都通过SSH传向远程主机,命令就这样写: $ ssh -D 8080 user@hostSSH会建立一个socket,去监听本地的8080端口。一旦有数据传向那个端口,就自动把它转移到SSH连接上面,发往远程主机。可以想象,如果8...原创 2020-02-18 22:21:54 · 1108 阅读 · 0 评论 -
漫画:如何用栈实现队列
队列的特点是先入先出,出入元素是在不同的两端(队头和队尾),而栈的特点是先入后出,出入元素都是在同一端(栈顶)。下图就是一个典型的队列的结构。需要加入队列中的元素是往队尾添加的,而需要出队的元素从队头出。在栈中有一个指针Top,永远指向栈顶元素,如果栈为空,那么Top就为nil。在栈结构中无论是入栈还是出栈,都是操作栈顶元素。所以入栈顺序与出栈顺序是相反的。...原创 2020-02-10 22:32:21 · 326 阅读 · 0 评论 -
LinedHashMap
大多数情况下,只要不涉及线程安全问题,Map基本都可以使用HashMap,不过HashMap有一个问题,就是迭代HashMap的顺序并不是HashMap放置的顺序,也就是无序。HashMap的这一缺点往往会带来困扰,因为有些场景,我们期待一个有序的Map。这个时候,LinkedHashMap就闪亮登场了,它虽然增加了时间和空间上的开销,但是通过维护一个运行于所有条目的双向链表,LinkedHa...原创 2020-02-05 21:43:23 · 968 阅读 · 0 评论 -
什么是AES算法
概述加密算法分为单向加密和双向加密。单向加密包括MD5,SHA等摘要算法。单向加密算法是不可逆的,也就是无法将加密后的数据恢复成原始数据,除非采取碰撞攻击和穷举的方式。像是银行账户密码的存储,一般采用的就是单向加密的方式。双向加密是可逆的,存在密文的密钥,持有密文的一方可以根据密钥解密得到原始明文,一般用于发送方和接收方都能通过密钥获取明文的情况。双向加密包括对称加密和非对称加密。对称加密...原创 2020-02-02 20:37:52 · 7907 阅读 · 0 评论 -
什么是SHA算法
和MD5算法类似,SHA (Security Hash Algorithm) 算法也是一种信息摘要生成算法,SHA 是美国的 NIST 和 NSA 设计的一种标准的 Hash 算法。SHA-1 是第一代 SHA 算法标准,后来的 SHA-224、SHA-256、SHA-384 和 SHA-512 被统称为 SHA-2。SHA-256:可以生成长度256bit的信息摘要。SHA-224...原创 2020-02-01 16:20:17 · 2478 阅读 · 0 评论 -
什么是md5算法
简介MD5消息摘要算法(MD5 Message-Digest Algorithm),是一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5算法经常用以进行文件、应用到软件下载站、论坛数据库、系统文件安全校验等。MD5的典型应用是对一段信息(Message)产生信息摘要(Message-Digest),以防止被篡改...原创 2020-01-31 21:43:16 · 2025 阅读 · 0 评论 -
什么是https协议
1. HTTP和HTTPS概念HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。HTTPS协议的...原创 2020-01-30 17:46:40 · 20474 阅读 · 0 评论 -
什么是RSA算法
常见的加密算法包括对称加密和非对称加密,对称加密算法一般应用于数据的加密。而非对称加密算法,一般用在签名认证和对称加密秘钥协商过程中(加密对称秘钥)。加密算法历史1976年以前,所有的加密方法都是同一种模式:(1)甲方选择某一种加密规则,对信息进行加密;(2)乙方使用同一种规则,对信息进行解密。由于加密和解密使用同样规则(简称"密钥"),这被称为"对称加密算法"(Symme...原创 2020-01-29 20:34:37 · 1154 阅读 · 0 评论 -
漫画:一致性hash算法
对于redis、memcached这些分布式缓存系统,需要将数据均匀的分布到缓存服务器集群的不同机器上,就需要使用对缓存的数据的key做hash值计算, 然后在将hash值除以服务器节点的数量取模计算出数据需要落到那台服务器节点上。这种算法很简单,也可以实现数据的均匀分布, 但是,增加或者减少数据节点的时候会导致所有缓存数据失效。例如,有三台Redis,...原创 2020-01-20 15:43:12 · 300 阅读 · 0 评论 -
大厂Code Review 流程
提交cr的流程检查代码风格(可以安装googlestyle或者Alibaba的一些stylecheck工具,也许各开发团队会有自己的风格规范) 从mainline中同步代码,注意使用(git pull --rebase)而不是(git pull) 测试你的代码,单元测试(UT)覆盖率至少达到90%以上,对于订单相关的组件修改,需要手动完成集成测试(最好通过脚本的方式) 一次提交尽可能的只...原创 2020-01-20 15:40:54 · 1447 阅读 · 0 评论 -
检测链表中的循环
给定一个链表,检查链表是否有循环。下图显示了带有循环的链表。image解题思路使用快慢两个指针遍历链表。将慢指针(slow_p)一次移动一个节点,另快指针(fast_p)移动两个。 如果这些指针在同一节点相遇,则存在循环。如果指针不符合,则链接列表没有循环。image.png原理分析1)当慢指针进入循环时,快指针已在循环内部。令快指针与慢指针的距离为k。2)现...原创 2020-01-20 15:37:36 · 1552 阅读 · 0 评论 -
返回链表的倒数第n个节点
给定一个链表和一个数字n,返回该链表的倒数第n个节点的值。比如,当输入如下且n=3,则输出为“B”方法11)计算链表的长度len2) 打印从链表开头起的第(len – n + 1)个节点代码如下class LinkedList { Node head; // head of the list /* Linked List no...原创 2020-01-20 15:35:46 · 1701 阅读 · 0 评论 -
漫画:什么是单例模式
imagepublic class Singleton { private Singleton() {} //私有构造函数 private static Singleton instance = null; //单例对象 //静态工厂方法 public static Singleton getInstance() { if (...原创 2020-01-20 15:24:56 · 248 阅读 · 1 评论 -
漫画:什么是base64编码
Base64和ASCII的区别ASCII码的范围是0-127,其中0-31和127这33个字符属于控制字符,剩下的32-126这95个字符属于可打印字符,包含了数字、大小写字母和常用符号等。他们与十进制的对应关系如下:这里面的某些字节在某些传输渠道中不支持, 比如邮件传输SMTP协议就不支持上面ASCII码中的控制字符, 只能传输可打印的A...原创 2020-01-20 15:20:39 · 687 阅读 · 0 评论 -
java git diff
文本比对最近项目上需要对比用户对配置的修改,用到了git的比对功能,在这里写一个demo实验一下maven依赖 <dependency> <groupId>org.eclipse.jgit</groupId> <artifactId>org.eclipse.jgit</artifac...原创 2019-07-06 17:10:16 · 1225 阅读 · 0 评论 -
Redis和memcache对比
redis和memcahe都是开发中经常使用的缓存组件,这篇文章对比了这两种组件的特点,以供选型时参考。memcache什么时候倾向于memcache?纯KV,数据量非常大,并发量非常大的业务,使用memcache或许更适合。内存分配memcache使用预分配内存池的方式管理内存,能够省去内存分配时间。redis则是临时申请空间,可能导致碎片。从这一点上,mc会更快一些。虚拟内存使...原创 2019-07-07 09:36:14 · 431 阅读 · 0 评论 -
Java中从maven拉取所需jar包及其依赖
背景最近基于alibaba的jarslink框架开发了算法服务平台。各个算法模块以jar包的形式推送到maven仓库中,java代码需要根据配置信息,从中央仓库拉取各个jar包及其依赖,本文记录下对应的代码实现maven 依赖<dependency> <groupId>org.kie.soup</groupId> <artifactId>...原创 2019-07-07 09:55:11 · 9870 阅读 · 0 评论 -
MyISAM和InnoDB索引
1. MyISAM和InnoDB都使用B+树来实现索引2. MyISAM的索引与数据分开存储3. MyISAM的索引叶子存储指针,主键索引与普通索引无太大区别4. InnoDB的聚集索引和数据行统一存储5. InnoDB的聚集索引存储数据行本身,普通索引存储主键6. InnoDB一定有且只有一个聚集索引7. InnoDB建议使用趋势递增整数作为PK,而不宜使用较长的列作为PK...原创 2019-07-07 10:45:10 · 109 阅读 · 0 评论 -
Java类加载对比
Class.forName() 方法中,initialize参数控制类在加载的过程中是否进行初始化。ClassLoader.getSystemClassLoader().loadClass()方法中,resolve参数控制类在加载的过程中是否进行链接。...原创 2019-07-07 10:49:09 · 107 阅读 · 0 评论 -
jvm突然crash或报ClassNotFoundException
具体场景 最近项目中基于jarslink做实时算法的加载,为了方便jar包更新测试,我们把jar包开发完后以snapshot版本推送到maven中央仓库中。jarslink查询器根据配置动态从maven仓库加载算法jar包及其依赖。为了在jar包发生改变时动态刷新,代码中农将对应jar包的md5作为版本version的一部分。在代码发生修改时,重新推送jar包到maven仓库,代...原创 2019-07-13 15:33:21 · 437 阅读 · 0 评论