`
ShXin
  • 浏览: 13034 次
  • 性别: Icon_minigender_2
  • 来自: 天津
社区版块
存档分类
最新评论
文章列表
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中提出的数字签名技术,它是一个应用很广泛的技术,数字签名的目的是对数字对象的合法性、真实性进行标记,并提供签名者的承诺。那如何实现呢?         我们常用的是基于公钥密码算法的数字签名 ...

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的父类不能被继承
Global site tag (gtag.js) - Google Analytics