- 博客(27)
- 收藏
- 关注
原创 ssh的三种端口转发方式
1、绑定本地端口既然SSH可以传送数据,那么我们可以让那些不加密的网络连接,全部改走SSH连接,从而提高安全性。假定我们要让8080端口的数据,都通过SSH传向远程主机,命令就这样写: $ ssh -D 8080 user@hostSSH会建立一个socket,去监听本地的8080端口。一旦有数据传向那个端口,就自动把它转移到SSH连接上面,发往远程主机。可以想象,如果8...
2020-02-18 22:21:54
1015
原创 漫画:如何用栈实现队列
队列的特点是先入先出,出入元素是在不同的两端(队头和队尾),而栈的特点是先入后出,出入元素都是在同一端(栈顶)。下图就是一个典型的队列的结构。需要加入队列中的元素是往队尾添加的,而需要出队的元素从队头出。在栈中有一个指针Top,永远指向栈顶元素,如果栈为空,那么Top就为nil。在栈结构中无论是入栈还是出栈,都是操作栈顶元素。所以入栈顺序与出栈顺序是相反的。...
2020-02-10 22:32:21
291
原创 LinedHashMap
大多数情况下,只要不涉及线程安全问题,Map基本都可以使用HashMap,不过HashMap有一个问题,就是迭代HashMap的顺序并不是HashMap放置的顺序,也就是无序。HashMap的这一缺点往往会带来困扰,因为有些场景,我们期待一个有序的Map。这个时候,LinkedHashMap就闪亮登场了,它虽然增加了时间和空间上的开销,但是通过维护一个运行于所有条目的双向链表,LinkedHa...
2020-02-05 21:43:23
926
原创 什么是AES算法
概述加密算法分为单向加密和双向加密。单向加密包括MD5,SHA等摘要算法。单向加密算法是不可逆的,也就是无法将加密后的数据恢复成原始数据,除非采取碰撞攻击和穷举的方式。像是银行账户密码的存储,一般采用的就是单向加密的方式。双向加密是可逆的,存在密文的密钥,持有密文的一方可以根据密钥解密得到原始明文,一般用于发送方和接收方都能通过密钥获取明文的情况。双向加密包括对称加密和非对称加密。对称加密...
2020-02-02 20:37:52
7780
原创 什么是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
2373
原创 几句话说尽成功之道
职业生涯找一个好的行业 自己做一个耐心的老员工房产投资找一个好的城市 自己做一个耐心的老房东股票投资找几只好的股票 自己做一个耐心的老股东婚姻家庭找一个好人 自己做一个耐心的好人...
2020-01-31 21:44:19
162
原创 什么是md5算法
简介MD5消息摘要算法(MD5 Message-Digest Algorithm),是一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5算法经常用以进行文件、应用到软件下载站、论坛数据库、系统文件安全校验等。MD5的典型应用是对一段信息(Message)产生信息摘要(Message-Digest),以防止被篡改...
2020-01-31 21:43:16
1965
原创 什么是https协议
1. HTTP和HTTPS概念HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。HTTPS协议的...
2020-01-30 17:46:40
19818
原创 什么是RSA算法
常见的加密算法包括对称加密和非对称加密,对称加密算法一般应用于数据的加密。而非对称加密算法,一般用在签名认证和对称加密秘钥协商过程中(加密对称秘钥)。加密算法历史1976年以前,所有的加密方法都是同一种模式:(1)甲方选择某一种加密规则,对信息进行加密;(2)乙方使用同一种规则,对信息进行解密。由于加密和解密使用同样规则(简称"密钥"),这被称为"对称加密算法"(Symme...
2020-01-29 20:34:37
1102
原创 漫画:一致性hash算法
对于redis、memcached这些分布式缓存系统,需要将数据均匀的分布到缓存服务器集群的不同机器上,就需要使用对缓存的数据的key做hash值计算, 然后在将hash值除以服务器节点的数量取模计算出数据需要落到那台服务器节点上。这种算法很简单,也可以实现数据的均匀分布, 但是,增加或者减少数据节点的时候会导致所有缓存数据失效。例如,有三台Redis,...
2020-01-20 15:43:12
264
原创 大厂Code Review 流程
提交cr的流程检查代码风格(可以安装googlestyle或者Alibaba的一些stylecheck工具,也许各开发团队会有自己的风格规范) 从mainline中同步代码,注意使用(git pull --rebase)而不是(git pull) 测试你的代码,单元测试(UT)覆盖率至少达到90%以上,对于订单相关的组件修改,需要手动完成集成测试(最好通过脚本的方式) 一次提交尽可能的只...
2020-01-20 15:40:54
1374
原创 漫画:高效延时任务触发
为了实现高效延时触发,我们需要实现两个重要的数据结构:(1)环形队列,例如可以创建一个包含3600个slot的环形队列(本质是个数组)(2)任务集合,环上每一个slot是一个Set<Task>同时,启动一个timer,这个timer每隔1s,Current Index指针移动至下一个位置,这个C...
2020-01-20 15:39:42
354
原创 检测链表中的循环
给定一个链表,检查链表是否有循环。下图显示了带有循环的链表。image解题思路使用快慢两个指针遍历链表。将慢指针(slow_p)一次移动一个节点,另快指针(fast_p)移动两个。 如果这些指针在同一节点相遇,则存在循环。如果指针不符合,则链接列表没有循环。image.png原理分析1)当慢指针进入循环时,快指针已在循环内部。令快指针与慢指针的距离为k。2)现...
2020-01-20 15:37:36
1478
原创 返回链表的倒数第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
1620
原创 code review到底在审查什么?
code review到底在审查什么?在做一个代码的code review时,以下是我们需要关注的:是否明晰 代码应该易于阅读,应该一目了然地了解每行和每个功能,否则,它太复杂了。 代码应符合模块内已使用的编码风格(缩进,间距,命名约定等) 每个函数或方法的预期意图都应简洁明了,并且一个函数不能超出一屏(几十行代码)。否则,它太复杂了。 代码是否适当...
2020-01-20 15:34:24
215
原创 如何编写好的代码/成为一个更好的程序员
如何编写好的代码/成为一个更好的程序员几个月前,有一位演讲者来到公司谈论优美的代码,他的论点是优美的代码以许多不同的形式出现。简单中有优美,折衷中有优美,稳定性上有优美,功能上有优美,坚固性上有优美等。您可能无法在每段代码中找到所有这些内容,但是通过学习每件事,您可以在着手编写新代码或查看他人的作品时,请牢记越来越多的内容。 好的代码有点主观。您可以学习一些好的做法,但是即使有好的做...
2020-01-20 15:33:18
861
原创 程序员如何推动个人职业发展
介绍我们每个人都有责任推动自己的事业发展,但这意味着什么?实际上很简单:推动事业发展意味着您知道对自己的期望以及前进的方向。您知道达到您的期望水平需要什么吗?超出那些期望?出类拔萃意味着什么?您知道经理的期望吗?您必须回答这些问题并评估您现在所处的位置,以确定接下来发生的事情。了解上级的期望要定期和上级交流,了解上级对软件工程师的期望明确个人目标要了解您的职业目标,您需要问...
2020-01-20 15:31:10
256
原创 漫画:什么是单例模式
imagepublic class Singleton { private Singleton() {} //私有构造函数 private static Singleton instance = null; //单例对象 //静态工厂方法 public static Singleton getInstance() { if (...
2020-01-20 15:24:56
211
1
原创 漫画:什么是base64编码
Base64和ASCII的区别ASCII码的范围是0-127,其中0-31和127这33个字符属于控制字符,剩下的32-126这95个字符属于可打印字符,包含了数字、大小写字母和常用符号等。他们与十进制的对应关系如下:这里面的某些字节在某些传输渠道中不支持, 比如邮件传输SMTP协议就不支持上面ASCII码中的控制字符, 只能传输可打印的A...
2020-01-20 15:20:39
618
原创 亚马逊面试经历
最近参加了亚马逊中国的面试,前后总共六轮,特记录下各面的考察点1面-算法编程题目1:将一颗平衡二叉树转换成双向链表,要求原地转换,不额外申请空间题目2:找出一个字符串中不含重复字符的最长子串2面-系统设计系统设计:1)挑选一个简历上的项目,讲讲你在设计时候的考虑,面试官针对你的讲述,进行讨论2)现有一个3D打印机,能打印不同材质、颜色和类型的家具,请设计打印机的核心实现类,并画出对应...
2019-08-10 15:37:26
6890
原创 jvm突然crash或报ClassNotFoundException
具体场景 最近项目中基于jarslink做实时算法的加载,为了方便jar包更新测试,我们把jar包开发完后以snapshot版本推送到maven中央仓库中。jarslink查询器根据配置动态从maven仓库加载算法jar包及其依赖。为了在jar包发生改变时动态刷新,代码中农将对应jar包的md5作为版本version的一部分。在代码发生修改时,重新推送jar包到maven仓库,代...
2019-07-13 15:33:21
398
原创 Java类加载对比
Class.forName() 方法中,initialize参数控制类在加载的过程中是否进行初始化。ClassLoader.getSystemClassLoader().loadClass()方法中,resolve参数控制类在加载的过程中是否进行链接。...
2019-07-07 10:49:09
90
原创 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
93
原创 几句话说尽成功之道
职业生涯找一个好的行业自己做一个耐心的老员工房产投资找一个好的城市自己做一个耐心的老房东股票投资找几只好的股票自己做一个耐心的老股东婚姻家庭找一个好人自己做一个耐心的好人...
2019-07-07 10:39:17
137
原创 Java中从maven拉取所需jar包及其依赖
背景最近基于alibaba的jarslink框架开发了算法服务平台。各个算法模块以jar包的形式推送到maven仓库中,java代码需要根据配置信息,从中央仓库拉取各个jar包及其依赖,本文记录下对应的代码实现maven 依赖<dependency> <groupId>org.kie.soup</groupId> <artifactId>...
2019-07-07 09:55:11
9691
原创 Redis和memcache对比
redis和memcahe都是开发中经常使用的缓存组件,这篇文章对比了这两种组件的特点,以供选型时参考。memcache什么时候倾向于memcache?纯KV,数据量非常大,并发量非常大的业务,使用memcache或许更适合。内存分配memcache使用预分配内存池的方式管理内存,能够省去内存分配时间。redis则是临时申请空间,可能导致碎片。从这一点上,mc会更快一些。虚拟内存使...
2019-07-07 09:36:14
396
原创 java git diff
文本比对最近项目上需要对比用户对配置的修改,用到了git的比对功能,在这里写一个demo实验一下maven依赖 <dependency> <groupId>org.eclipse.jgit</groupId> <artifactId>org.eclipse.jgit</artifac...
2019-07-06 17:10:16
1152
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人