自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 Peterson算法的简单分析

最近操作系统学到进程同步,介绍了Peterson算法。第一种(谦让式)上课教材《操作系统概念》第七版(翻译版)和百度百科,还有查到的绝大部分的资料中,都是下面这种方法实现的。下面代码是教材中摘的(P169)。/*进程Pi的结构*/do{ flag[i] = TRUE; turn = j; while(flag[j] && turn == j); //临界区 f...

2018-11-20 18:36:25 19265 16

原创 操作系统:死锁预防和必要条件循环等待的误区

死锁产生的必要条件首先,要注意此处的“必要条件”,和数学中充分必要的定义是一致的,即:(1)如果产生了死锁,那么必要条件一定成立;(2)反之,如果所有必要条件均成立,也不一定会死锁。(这是很容易弄混的一点。)另外,(1)的逆否命题:(3)如果其中任意一个必要条件不成立,那么就不会死锁。死锁预防死锁预防是死锁处理策略之一。就是根据上述(3)的原理,通过设置某些限制条件,破坏产生死锁的4个必要条件中的一个或多个,以防止死锁。必要条件之一:循环等待必要条件中的循环等待是指:存在一种进程资源的循环

2021-10-22 19:13:29 2195

原创 scala/java 谷歌认证器的使用

依赖"com.warrenstrange:googleauth:1.4.0"在使用到的文件里importimport com.warrenstrange.googleauth.GoogleAuthenticator使用代码 (scala版本)1. 生成新的secret key坑1:原来用的是Random.alphanumeric方法生成sk,虽然位数一样,但不是每次随机生成的sk都能在认证器app中正常使用。——所以还是老老实实用它的api吧注1:这段代码保证新生成的sk与数据库中的sk不重

2020-08-11 17:12:38 428

原创 scala java 日期时间转换与比较

建议不要比较秒数/毫秒数的数值大小,非常非常容易写反!String类型的日期比较格式如"yyyy-mm-dd hh:MM:ss"

2020-07-29 14:57:14 1019 1

原创 scala编译器mill的安装及scoop安装的坑

最近开始写scala,需要安装mill编译器。mill官网下载后保存为mill.bat公司电脑是win10的,只能通过scoop等工具安装mill,如下图所以第一步是安装scoopscoop的github地址里面是这样描述的打开你的cmd,先进入powershell:接下来查看版本(可选):$PSVersionTable.PSVersion.Major #查看Powershell版本$PSVersionTable.CLRVersion.Major #查看.NET Framework版本

2020-05-23 10:58:41 1702

原创 物联网与5G的融合发展

一、物联网与互联网的相同与不同之处物联网的核心与基础仍是互联网,物联网是互联网的延伸;互联网是把网络终端设备相连,或是人相连,物联网是把物体相连;物联网技术是电子、通信、计算机三大领域技术的融合;物联网的发展方向是不再需要用户去互动,而是实现自动地,智能地直接为人服务。物联网与移动通信5G技术的融合发展5G与物联网是相互发展,共同进步,又相互依赖的两项技术,共同组成了智能化网络应...

2020-05-02 15:17:06 3336 2

原创 三种内存管理机制下的MMU

一、连续内存分配MMU中有两个寄存器,基地址寄存器(base)和界限寄存器(limit),对应当前执行的进程的基地址和地址空间的大小——一个进程对应一对base和limit。MMU先把CPU传来的逻辑地址和limit的值比较,合法的值是小于limit的,且是严格小于,因为刚好等于limit时,已经超出进程的地址空间了。地址不合法会发生寻址错误,陷入trap。二、分段MMU要做的事情就是...

2019-01-06 20:10:54 831 1

原创 MPAndroidChart如何部分显示x坐标,滑动显示全部

先总结:太坑了。其他的设置全部省略了。首先通过Chart对象获得XAxis对象,设置它的最小值。就是x坐标轴的起点。XAxis xl = dateChart.getXAxis();xl.setAxisMinimum(0f);在封装完数据之后,再设置它最大值。这里str_times是横坐标的一个ArrayList。注意这两步顺序一定不能错!不然会闪退的。setVisibleXRang...

2018-12-31 13:59:09 6082 6

原创 php实现双因子认证(口令加盐+谷歌认证器一次验证码)

介绍选用大二的web大作业,一个知识管理系统——“微知”,为基础来实现双因子用户认证模块,原本的认证方式是匹配用户名和口令,且口令在数据库中是明文存储的。首先,先删除password字段,口令不再存储在数据库。其次,对于散列函数,我选择了php中的md5()函数,它的返回值长度为32位。实现加盐在用户注册/修改口令(解释见说明)的时候随机生成一个32位的盐值(关于盐值长度的一个经验值是和...

2018-12-28 14:08:56 2948 1

原创 我的第一个unity3d场景

说明花一天从零入门unity3d,到实现一个简单的三维场景+方向键漫游(主要是为了应付一个选修课的大作业,时间有限,一切从简)概述超级简单地实现了校门的一个标志性建筑:(完蛋暴露学校了)Assets Store里下了几个free的资源包。只用上了一个skybox的资源和block building资源。不过这个建筑的资源真的很好用!有高中低三种房子。而且外形和我们真实的图书馆可以说是非常...

2018-12-16 21:44:06 1853

原创 如何免费下载音频素材

很多音效素材下载都要登录+收费(冲会员)但音频和图片不一样,只要你可以在网页上播放,就可以直接获取资源。举个例子点击下载它会让你登录,然后让你冲会员但你只要右键点击检查(Chrome浏览器)选择network选择Media (音频属于Media)然后再刷新页面,点击播放这时候Media中就会出现一个.mp3文件,没错就是你听到的mp3你可以双击打开它,会出现这个页面...

2018-11-25 21:35:42 2585 4

原创 进程同步的三个经典问题

1. 有限缓存问题 Bounded-Buffer Problem要求:producer和consumer,二者不能对buffer进行操作当buffer满的时候,就不允许producer继续写当buffer空的时候,就不允许consumer继续读信号量及其初始化Semaphore mutex = 1; //buffer的锁Semapore full = 0; //满位的数量S...

2018-11-25 19:25:48 1648

原创 LeetCode 按奇偶排序数组(双向写+位运算)

今天打开LeetCode做到这题的时候,发现已经忘记怎么用指针了。首先讲讲这题的思路吧,要实现很简单,遍历一遍取所有的偶数,再遍历一遍取所有的奇数加到新数组里去。但其实可以优化成遍历一遍的:因为数组是定长的,偶数个数+奇数个数 = 总个数。所以我只要遍历一遍,如果是偶数就从前往后写,如果是奇数就从后往前写:int odd = ASize - 1;//奇数从末尾往前写int even = 0...

2018-11-23 18:38:06 306

原创 基于Bootstrap的h5简单模拟CPU调度算法

一、说明模拟了下面三种CPU调度算法FCFS,先到先服务SRTF,抢占式最短剩余时间优先RR,轮询实验要求gantt图计算每个进程的等待时间计算平均等待时间其他前端使用了Bootstrap框架,因为时间紧迫而且确实效果还行。github地址:?待补二、实现效果进程信息FCFSSRTF?RR三、实现时的一些思考用户添加的顺序 != CPU...

2018-11-17 10:40:55 1042 1

原创 操作系统-关于fork&父进程&子进程

前言这学期在学操作系统,目前感觉还是挺有意思的。操作系统老师:“鼓励你们大开脑洞多试试,会有各种奇异的结果,但是最后居然都能解释出来。”本文是根据课上讲解+自行实践写的。测试环境:Ubuntu正文关于fork()的3种返回值这里提到的fork和下面程序中使用的fork()是一个C语言库函数,不是系统调用级别的fork();它根据不同的情况会返回3种类型的值。(而系统调用级别的f...

2018-10-10 14:02:07 3354

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除