Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux

深入理解二进制补码

深入理解二进制补码

背景大家都知道计算机内部采用补码表示整数的,但是具体到补码的内在含义,很多人不能理解,故我们分享自己的理解。首先说下补码的定义以及基本性质: 1) 正数的补码和原码相同; 2) 负数的补码等于取反后加1; 3) 0的正负两种补码相同; 4) 对一个补码再求补码等于自己; 5) 一个正数的原码和其对应的负数的补码相加等于模;针对本文,我们其实只关心规则1)和2)即可。----------------------------------------------...
Java: 使用信号量(Semaphore)保护多个共享资源的访问

Java: 使用信号量(Semaphore)保护多个共享资源的访问

信号量(semaphore)机制是一种常用的同步机制,在现代OS中被广泛采用。semaphore是一个非0值,当它的值大于0时表示系统目前还有足够的资源分配给请求线程,每分配出去一个资源,值递减。当值等于0时表示当前已无资源可分配。JDK提供了Semaphore类来实现信号量。假如我们一共有3台打印机可用,当前有N个线程都请求使用打印机,要实现对打印机这种资源的访问保护,有以下两种方式:每当一个线程请求使用打印机时,检查当前是否有空闲打印机可用,如果有则分...
如何改善Java中锁的性能

如何改善Java中锁的性能

两个月前向Plumbr公司引进线程死锁的检测之后,我们开始收到一些类似于这样的询问:“棒极了!现在我知道造成程序出现性能问题的原因了,但是接下来该怎么做呢?”我们努力为自己的产品所遇到的问题思考解决办法,但在这篇文章中我将给大家分享几种常用的技术,包括分离锁、并行数据结构、保护数据而非代码、缩小锁的作用范围,这几种技术可以使我们不使用任何工具来检测死锁。锁不是问题的根源,锁之间的竞争才是通常在多线程的代码中遇到性能方面的问题时,一般...
Qt绘制异形窗体

Qt绘制异形窗体

异形窗体即不规则窗体,一般采用png图片,一般绘制异形窗体分两步:1、设置遮罩区 2、绘制图片使用png图片的透明部分作为遮罩区,然后绘制图片,这样我们就看到一个只绘制了非透明部分的图形,废话少说,以实现绘制一只蝴蝶(蝴蝶为半透明)为例,效果如下:头文件: 1: #include <QWidget> 2: class TransDialog : public QWidget 3: { 4: Q_OBJECT 5: public: 6: expl...
Qt自定义菜单项

Qt自定义菜单项

经常会看到一些菜单的部分项是由几个按钮组成的,如酷狗、QQ、360都有类似菜单,对于常规的菜单项,图标 + 文字 实现一个事件,很容易完成,那么怎么自定义菜单项呢?Qt提供了支持,就是利用QWidget + QWidgetAction来完成。QWidgetAction继承自QAction,无法通过继承来实现一个界面,但它提供了setDefaultWidget来绑定一个界面,使用起来就更加方便了。下面实现一个没有Action的菜单,并通过按钮显示出来:voi...
苹果医疗研究平台 ResearchKit 源码发布

苹果医疗研究平台 ResearchKit 源码发布

3月10日时苹果发布医疗研究平台 ResearchKit ,今天苹果已经将该项目完全开源出来,源码地址:https://github.com/researchkit/researchkitResearchKit 相比针对个人的健康监控 iHealth 更进一 步,通过于全球顶尖的医疗机构合作建立强大的数据库,进行进一步的医学研究和诊疗等。苹果方面介绍,患者可以借助iPhone通过简单的检测,来对包括帕金森综合症等疾病进行基本的检测和记录,包括记录你的步态和...
Python logging模块可能会令人困惑的地方

Python logging模块可能会令人困惑的地方

python logging模块主要是python提供的通用日志系统,使用的方法其实挺简单的,这块就不多介绍。下面主要会讲到在使用python logging模块的时候,涉及到多个python文件的调用,而每个文件设置了对应的logging方式不同,可能会产生的令人困惑的现象。下面以自己在开发的时候遇到的问题作为叙述的背景:有三个python模块A、B、C。主模块A会import B和C模块,主模块有对应的logging方式,A使用logging的模块的方...
二叉搜索树的Java实现

二叉搜索树的Java实现

为了更加深入了解二叉搜索树,本人用Java写了个二叉搜索树,有兴趣的同学可以一起探讨探讨。 首先,二叉搜索树是啥?它有什么用呢? 二叉搜索树, 也称二叉排序树,它的每个节点的数据结构为1个父节点指针,1个左孩子指针,1个有孩子指针,还有就是自己的数据部分了,因为只有左右两孩子,所以才叫二叉树,在此基础上,该二叉树还满足另外一个条件:每个结点的左孩子都不大于该结点&&每个结点的右孩子都大于该结点。这样,我们队这棵树进行中序遍历,就能把ke...
Java编程:组合、继承和代理的区别

Java编程:组合、继承和代理的区别

组合、继承和代理三者的定义:组合:在新类中new 另外一个类的对象,以添加该对象的特性。继承:从基类继承得到子类,获得基类的特性。代理:在代理类中创建某功能的类,调用类的一些方法以获得该类的部分特性。使用场合:组合:各部件之间没什么关系,只需要组合即可。like组装电脑,需要new CPU(),new RAM(),new Disk()…… 演示代码如下:public class Computer { public Compu...
Linux下shell编程基础知识

Linux下shell编程基础知识

1、history 记录历史命令;预设记录1000条命令,存储在用户家目录 .bash_history 文件中;!! 执行上一条命令!n n为数字,history里面显示的指令数字!cat 执行最近一次以cat开头的命令!$ 上一条命令的最后一个参数man builtin 可以查询系统内置的所有命令;2、指令和文件名补全Tab键 连续按2次列出所有的指令或文件名;3、别名alias自定义别名,把很长的经常使用的命令别名一个简单的命令[root@...
C语言 gets()和scanf()函数的用法

C语言 gets()和scanf()函数的用法

/*1.不同点:scanf不能接受空格、制表符Tab、回车等;而gets能够接受空格、制表符Tab和回车等;2.相同点:字符串接受结束后自动加""。 使用scanf("%s",&s);函数输入字符串时存在一个问题,就是如果输入了空格会认为字符串结束,空格后的字符将作为下一个输入项处理,但gets()函数将接收输入的整个字符串直到遇到换行为止*/#include "stdio.h"#include "string.h"int l1=0,l2=0; /...
Intel® INDE for Google Android Studio

Intel&#174; INDE for Google Android Studio

Intel 开发者社区提供工具,并且为跨平台应用程序开发,以及平台、技术信息、代码示例和同行工作人员提供指南信息,以此来帮助开发人员创新与成功。为 Android,物联网,Intel® RealSense™ 技术,和 Windows下载工具,访问开发工具包,以及与志同道合的开发人员分享想法,来加入我们的社区并且参与开发者冲刺比赛,竞赛,巡回演讲,和本地事件。关于Intel® INDEIntel INDE 是一个为开发人员提供他们...
<< 3711 3712 3713 3714 3715 3716 3717 3718 3719 3720 >>