杂七杂八的小知识点

1、二进制的四则运算
二进制数与十进制数一样,同样可以进行加、减、乘、除四则运算。其算法规则如下:
加运算:0+0=0,0+1=1,1+0=1,1+1=10,#逢2进1;
减运算:1-1=0,1-0=1,0-0=0,0-1=1,#向高位借1当2;
乘运算:0×0=0,0×1=0,1×0=0,1×1=1,#只有同时为“1”时结果才为“1”;
除运算:二进制数只有两个数(0,1),因此它的商是1或0。
2、经常做一些题会要求说结果很大,然后给出对某一个数求模的结果,为了以后使用方便,这里给一个大数对某个数求余的模板:

int Mod(char *str, int m)//str为存放大数的字符串,m为求模的数
{
	int ans = 0;
	int nLen = strlen(str);
	for(int i = 0; i < nLen; ++i)
		ans = (ans * 10 + str[i] - '0') % m;
	return ans;
}


3. 线程产生死锁的原因:系统资源不足;进程运行推进的顺序不合适;资源分配不当等
产生死锁的4个必要条件是:互斥条件,一个资源每次只能被一个进程使用;请求与保持条件,一个进程因请求资源而阻塞时,对已获得的资源保持不放;不可剥夺条件,进程已获得的资源,在未使用完之前,不能强行剥夺;循环等待条件,若干进程之间形成一种头尾相连的循环等待资源关系。
这四个条件时死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。
避免死锁的方法:银行家算法。(希望能够得到补充,本人对这些真的是有点头疼)
4. 面向对象三要素:百度了一下,大部分回答是封装、继承、多态。
面向对象设计的五个主要的设计原则:
(1)单一职责原则。就一个类而言,应该仅有一个引起它变化的原因。
(2)开放封闭原则。软件实体对外扩展开放,对修改封闭。
(3)里氏替换原则。子类的实例能够替换父类的实例。
(4)接口分离原则。采用多个专门的接口比使用单一的总接口要好。一个类对另一个类的依赖性建立在最小的接口上。
(5)依赖倒置原则。依赖抽象不要依赖具体实现。
附加:设计模式相关
创建型模式:抽象工厂(Abstract Factory)、生成器(Builder)、工厂方法(Factory Method)、原型模式(Prototype)、单件模式(Singleton)。
结构型模式:适配器(Adapter)、桥接(Bridge)、组合(Composite)、装饰(Decorator)、外观(Facade)、享元(Flyweight)、代理(Proxy)。
行为模式 :职责链(Chain of responsibility)、命令(Commond)、解释器(Interpreter)、迭代器(Iterator)、中介者(Mediator)、备忘录(Memento)、观察者(Observer)、状态(State)、策略(Strategy)、模板方法(Template)、访问者(Visitor)
5. Windows内存管理的几种方式及优缺点。
(1)块式管理。把主存分为一大块、一大块的,当所需的程序片段不在主存时就分配一块主存空间,把程序片段加载到主存,就算所需要的程序片段只有几个字节也只能把这块分配给它。优点:易于管理;缺点:浪费空间。
(2)页式管理。把主存分为一页一页的,每一页的空间要比一块一块的空间小很多,显然这种方式的空间利用率要比块式管理高出很多。
(3)段式管理。把主存分为一段一段的,每一段的空间又要比一页一页的空间小很多,这种方法在空间利用率上比页式管理高出很多,但也有另外一个缺点,一个程序片段可能会被分为几十个段,这样很多时间就会浪费在计算每一段的物理地址上。(I/O操作)
(4)段页式管理。结合了段式管理和页式管理的优点。把主存分为若干页,每一页又分为若干段。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值