有关多项式的算法——四则运算、求逆

算法介绍

多项式的运算可以说比之前的多精度数运算还要简单一点,因为多项式的加减只能存在于同次数的项之间,所以不需要考虑加减法里面的进位退位问题,这也就使得乘除法简单了很多。

加减法的原理就没什么好说的了,乘除法都是基于多精度数的算法修改的,存储多项式也使用了ArrayList,索引值对应项的次数,其元素大小对应项的系数。

阅读全文

J.Craig Venter DNA水印解密

上选修课的时候,老师讲到了合成生物学,提到了有关DNA编码的技术,于是就讲了J.Craig Venter团队把水印编码进DNA的事情。

下面是我在Google上面搜集到的资料:

Researchers at the J Craig Venter Institute recently unveiled their first self-replicating synthetic bacteria (M. mycoides JCVI-syn1.0) whose DNA was ‘programmed’ base pair by base pair. To verify that they had synthesized a new organism and not assembled the DNA from another natural bacteria, scientists encoded a series of ‘watermarks’ into the genes of M. mycoides JCVI-syn1.0. There are four of these hidden messages: an explanation of the coding system used, a URL address for those who crack the code to go visit, a list of 46 authors and contributors, and a series of famous quotes. The presence of these watermarks verifies that M. mycoides JCVI-syn1.0 truly is synthetic and demonstrates the precision and power of JCVI’s new techniques in synthetic biology.

J Craig Venter研究所的研究人员最近揭开了他们的第一批自我复制的合成细菌(M. mycoides JCVI-syn1.0)的细菌,其DNA被碱基对“编程”为碱基对。为了验证他们合成了一种新生物并且没有从另一种天然细菌中组装DNA,科学家们将一系列“水印”编码到了蕈状支原体JCVI-syn1.0的基因中。这些隐藏的消息中有四种:对使用的编码系统的解释,破解该代码的人员的URL地址,46位作者和贡献者的列表以及一系列著名的名言。这些水印的存在验证了M. mycoides JCVI-syn1.0 真正是合成的,并证明了JCVI合成生物学新技术的精确性和功能。
————摘自SingularityHub

阅读全文

Windows Terminal美化

Windows Terminal是微软新发布的一款Terminal产品(以下称WT)。对比之前传统的cmdPowershell来说,WT对定制的支持更好,同时又支持GPU对页面的渲染、emoji表情、多标签等的特点。其项目地址为:https://github.com/microsoft/terminal

由于WT的可定制化非常之高,只需要很简单的步骤就可以调节各种界面元素以及操作习惯,所以把它打造成最适合自己的Windows终端程序是完全做得到的。

阅读全文

多精度数的四则运算-Java和Python实现

多精度数指的是位数超过1024Bit的数。由于这一类数的位数超过了计算机CPU寄存器表达,也就是超出了计算机的字长,所以不能够使用计算机进行直接的运算。除此之外,多精度数的大小也超出了计算机中定义的整型变量的最大大小,所以也不能使用标准的整型来存储这一类数,而需要使用数组或是字符串来存储。

对于多精度数的计算,目前有两种处理办法:

  1. 模拟人们手工进行“竖式计算”的过程编写其加减乘除函数。
    这个方法的优点是操作逻辑符合人们的日常思维,易于理解,缺点是效率较低。
  2. 将多精度数当作一个二进制流进行处理,使用各种移位和逻辑操作来进行加减乘除运算。
    这个方法的优点是执行效率高,缺点是代码极其复杂,可读性低,难以理解。
阅读全文

CentOS服务器上安装Python3.7并设置为默认Python

最近由于课程设计要求要在服务器上配置Flask框架,但是我在配置的时候各种报错搞不来,搜了一番之后发现是默认Python版本是2.7导致的。然后我尝试去运行Python3,发现服务器上压根没有…于是…就有了这篇文章

阅读全文

PHP中类的魔术方法总结

PHP中对对象设计了15个非常有用的魔术方法,分别是__construct()__destruct()__call()__callStatic()__get()__set()__isset()__unset()__sleep()__wakeup()__toString()__invoke()__set_state()__clone()__debugInfo()。这些魔术方法有助于对象在不同的情况下自动的实现一些行为,如初始化对象自动赋值、对象被销毁时发出提示信息等等。下面对这些魔术方法的功能进行简要总结。

阅读全文

PHP面向对象的关键字

面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
面向对象是相对于面向过程来讲的,面向对象方法,把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式。

PHP为面向对象编程提供了很多的关键字和魔术方法,当然其中一些关键字和魔术方法在其他的面向对象编程语言中也存在,如Java。下面对这些关键字和魔术方法做一个总结。

阅读全文

PHP中对数组的操作

数组的声明

PHP中有两种数组:索引数组和关联数组。索引数组的索引是从0开始递增的数字,由程序自动生成;关联数组使用字符串作为索引值,由用户自行输入。

初始化时直接赋值

1
2
3
4
5
6
7
8
9
//索引数组
$example[0] = "a";
$example[1] = "b";
$example[2] = "c";

//关联数组
$example_1["a"] = "1";
$example_1["b"] = "2";
$example_1["c"] = "3";

若要按默认索引顺序声明索引数组,可以不用填入索引值,程序自动按声明顺序为键值建立索引:

1
2
3
$example[] = "a";   //索引为0
$example[] = "b"; //索引为1
$example[] = "c"; //索引为2
阅读全文

关于SSH远程登录

SSH(Secure Shell,安全外壳协议),是用于计算机之间的加密登录的一种安全协议标准。其最大的特点在于加密,这也正是它相比TelnetFTP等其他协议的优势。如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。

使用SSH登录只需要一行命令:

1
2
3
ssh 用户名@服务器IP          # 默认状态
ssh 服务器IP # 当本机的用户名和服务器用户名相同时
ssh -p 8888 用户名@服务器IP # 自定义访问端口
阅读全文