- 浏览: 13034 次
- 性别:
- 来自: 天津
最新评论
文章列表
The thinking about this question comes from Question 142 and 287 in LeetCode.
We all know that we can use two pointers to decide if there is a circle in a list:
fast: move 2 steps each time
slow: move 1 step each time
If slow meet fast in a certain moment, then this list has a circle.
No ...
Java编程以来,一直都没有了解过编程背后的机制。以下三个名词,每次听到都感觉很熟悉,但又缺少了对它们真正的了解。
JDK(Java Development Kit) ——java开发工具包
JRE(Java Runtime Environment) ——java运行环境
JVM(Java Virtual Mechine) ——java虚拟机
下面这张图就可以说明这三者的关系:JDK包含了JRE,而JRE中又包含了JVM。那我们就从简单到复杂一步一步分析:JVM——JRE——JDK。
...
上篇RSA中提出的数字签名技术,它是一个应用很广泛的技术,数字签名的目的是对数字对象的合法性、真实性进行标记,并提供签名者的承诺。那如何实现呢?
我们常用的是基于公钥密码算法的数字签名 ...
相对于DES而言,RSA是一个极为简单的加密算法,它的密码强度取决于数学难题的不可解。此外,它还是非对称密码体制中的一个重要算法。
何为非对称密码体制?首先要从对称密码体制说起,DES就是一个典型的对称密码算法,即加密密钥和解密密钥是相同的。那非对称密码体制,顾名思义,就是加密密钥和解密密钥不同,它存在一个公私密钥对,用公钥加密、私钥解密即为加密算法。那么问题来了,如果用私钥加密、公钥解密,又作何解呢?其实这就是所谓的数字签名,这里先不做详解。
回归正题,RSA加密的流程可以做如下理解:
首先是密钥的生成。选择两个互异的大素 ...
DES加密算法整体来说分为两部分:明文部分、密钥部分,两部分分别处理后合并,继续执行某些操作行成密文。它的安全性取决于密钥的不可预测性,而不是加密方法的保密性。那么其实每一步的操作都是公开的,只是密钥无法被破解,之所以无法破解是因为密钥是8字节的,即64位二进制,破解起来很困难。
由于一系列操作都是以8字节为基础,所以明文输入应该是为8字节,那显然,明文只能输8字节这并不合理,所以要给明文分组,每8字节一组,不足8字节就补0。(这里其实存在一个问题,补0固然可以加密,但是解密时,如何判断0是补的0还是明文本身就有的0,所以补足位的选取很重要,有兴趣的可以一起探 ...
advertisers attempt strategy determined customers
连词成句!、
I am studying English ~~~~
要做通信,当然不能停留在仅满足于实现它,就算我们一时还做不出像腾讯那样强大的qq,但至少我们可以以之为目标并一步一步做下去。
我们暂且还用命令行的telnet命令充当客户端,那么,就服务器而言, 在服务器的最简代码基础上,我们可添加的内容还有很多。
最基本的,不能只发字符而不能发送汉字吧;其次,服务器不能只可以连一个客户端吧;然后,客户端是不是要有用户名和密码才能登录呢;至于聊天,客户端之间要可以群聊吧,服务器要可以给每一个客户端发公告吧;最后的最后,是不是应该给服务器加个界面美化一下呢?
这些功能,虽然看起来还不及qq的万 ...
通信,用一种高大上的方法解释,那是服务器与客户端之间的通信,或是客户端与客户端之间的互联,其实说白了 ,就是两个程序通过某种渠道在发送信息。
在实现通信之前,我们首先要清楚通信的流程。当 ...
数据结构这个词,让人听起来就觉得晦涩难懂。其实很多东西,你不打开它的包装是很难知道它究竟是什么的,就像之前说的队列,打开它华丽的包装,其实里面装的就是数组。
数据结构是这样定义的:是相 ...
学了一段时间的java,接触了很多所谓基础的东西,但总归是没有新奇感的,做出来的大多是一些思维上的产物,而分形出现后,才发现短短几行代码竟可变幻出如此美妙的事物。
如果没有学习分形,又有谁会想到这张图是用代码敲出来的呢?
那么我们就来看看如何实现这个图形吧。先抛开颜色不管,仔细观察后,我们会发现,它其实就是一个大三角形里面不停的嵌套小三角形,这样想的话思路就会很简单,只要一个小递归就可以实现了。
这里取三角形的高(h)和底边长的一半(r)作为参数表示点的坐标。 ...
重绘,顾名思义,是要将我们所绘制过的图形重新绘制一遍以显示到屏幕上,上一篇说的是用数组来保存形状,那是否还有别的方法做到重绘呢?
试想,我们是不是可以把绘制的图形保存成一张图片,然后将它显示出来。这就要用到一个Robot方法,来捕捉我们屏幕上的每个像素点。
我们做画板时继承的是JFrame类,那如果继续继承窗体这一类,在截屏时就会截到窗体的边框,再打印出来后就会把整个窗体都显示在画布上。所以为了正确的截屏,我们让画板继承JPanel类。这样只需要传入一个面板对象,将它添加到窗体上就可以实现:
public class Draw extends J ...
做过简单画板后,就会发现,当窗体缩放或最小化之后,所绘制的图形都会消失,这是因为所绘制的图形并没有存放到内存中,所以当窗体改变后就没有数据来让它重绘。那为了解决这一问题,最直截了当的方法就是用 ...
队列之于数组,就如同一系列大小不一的瓶子之于某个特定的水瓶。
现在有人给了我们一些水,为了不浪费空间,我们要选一个适当大小的瓶子来装,这时我们又得了另外一些水,那为了把水都装在一个瓶子里,就要选一个再大些的瓶子,先把原来的水倒进去,再把新到的水装进去,这样就完成了转化。
第一次装水的瓶子就相当于数组,而最终装下所有水的则为队列。
数组是可以这样定义的:
int t[] = new int[10];
int[] t1 = new int[]{1,2,3,4,5,6,7};
int t2[] = {1,2,3,4, ...
java中常用的关键字大体可分为以下几类:
一、访问限定符
1.public
它限定的类在一个文件中只允许有一个,且类名与文件名相同
范围:在同一个项目下所有类均可使用
[注]:子类继承父类时访问限定符的范围不能小于父类
2.private
范围:同一个类中才可使用
[注]:private的父类不能被继承