Welcome 微信登录

首页 / 操作系统 / Linux

Java集合框架之Collection接口

Java集合框架之Collection接口

Java是一门面向对象的语言,那么我们写程序的时候最经常操作的便是对象了,为此,Java提供了一些专门用来处理对象的类库,这些类库的集合我们称之为集合框架。Java集合工具包位于Java.util包下,包含了很多常用的数据结构,如数组、链表、栈、队列、集合、哈希表等。学习Java集合框架下大致可以分为如下五个部分:List列表、Set集合、Map映射、迭代器(Iterator、Enumeration)、工具类(Arrays、Collections)。Jav...
Golang 发布的版本中自动加上 git revision

Golang 发布的版本中自动加上 git revision

概述起因是这样的,在编译发布 golang 工程时,希望版本号中包含有 git revision number。 但是,没有commit之前,是没法知道 revision number 的,commit之后,如果要修改代码中 version 的相关信息,又会导致需要再次的 commit。针对这种情况,希望能够在编译时动态的将当前的 git revision number 加入到 version 中。 这样,每次编译的时候获取当前 revision numb...
基于资源的权限系统-数据库设计

基于资源的权限系统-数据库设计

概述本通用权限管理系统是基于2棵树来做权限管理的,这2棵树就是 资源树 和 组织树组织+资源+动作 所组成的权限数据就是整个系统的核心。 这里之所以只用组织而不用人员,一方面可以减少权限数据的量,一方面还可以简化权限数据。每个人员的的权限是可以计算出来的。 人员从属于一个或者多个组织的,默认情况下所有人员都有一个根组织,权限数据为了保持简单,只存储组织的权限。表结构设计概略图真正在权限系统中的数据只要 Permission,Rule,Action 3张表就...
基于资源的权限系统-设计思路

基于资源的权限系统-设计思路

概述权限系统提的最多的就是 RBAC(基于角色的访问控制)。 所谓角色,其实就是权限的集合,某个角色就是某几个权限的结合。其目的是为了简化授权和鉴权的过程。基于角色的权限控制用在简单的权限环境下没有问题,如果在权限控制比较复杂的系统中,或者说要做通用的权限系统时,基于角色的权限控制会带来以下问题:角色可以用来做功能权限,做数据权限的话,会导致角色数量非常多 比如:bug管理系统,一般有 developer, reporter, manager 等一些角色,...
《Linux内核设计与实现》读书笔记

《Linux内核设计与实现》读书笔记

《Linux内核设计与实现》读书笔记,本篇简单介绍内核相关的基本概念。Linux内核设计与实现 第二版下载地址: http://www.linuxidc.com/Linux/2011-05/35530.htmLinux内核设计与实现(原书第3版) 清晰中文PDF http://www.linuxidc.com/Linux/2014-02/96174.htm主要内容:单内核和微内核内核版本号1. 单内核和微内核原理优势劣势单内核整个内核都在一个大内核地址空间...
JavaScript数组方法reduce解析

JavaScript数组方法reduce解析

Array.prototype.reduce()概述reduce()方法是数组的一个实例方法(共有方法),可以被数组的实例对象调用。reduce() 方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始缩减,最终为一个值。语法arr.reduce(callback[, initialValue]) {}参数回调函数中可以传递四个参数。previousValue:上一次调用回调函数返回的值,或者是提供的初始值(initialV...
Java的动态代理机制详解

Java的动态代理机制详解

在学习Spring的时候,我们知道Spring主要有两大思想,一个是IoC,另一个就是AOP,对于IoC,依赖注入就不用多说了,而对于Spring的核心AOP来说,我们不但要知道怎么通过AOP来满足的我们的功能,我们更需要学习的是其底层是怎么样的一个原理,而AOP的原理就是java的动态代理机制,所以本篇随笔就是对java的动态机制进行一个回顾。在Java的动态代理机制中,有两个重要的类或接口,一个是 InvocationHandler(Interface...
使用struts1+注解做权限管理

使用struts1+注解做权限管理

实现思想:1. 写一个接受用户请求的action,继承DispatchAction,然后这个action里面处理各种业务需求,比如说add,delete等等,在各个方法上添加注解,然后在调用这个action的方法时检查有没有注解。2. 关键是要弄明白是谁调的action?查看有没有注解的代码怎么写?写在哪?3. 首先要弄明白struts1的流程,用户请求提交给ActionServlet之后,ActionServlet调用requestProcessor这个...
Struts1运用Java注解实现简单的权限控制

Struts1运用Java注解实现简单的权限控制

看到标题,不要以为看错,没错,就是Struts1! 对于一个目前只能编码的人来说,在公司做项目,技术框架基本不会是你自己决定的。唉,最近的一个项目,他们要求就是要用Struts1,对于我刚接触Struts就是版本2的人来说,Struts1几乎就没再关注过,而且大家也应该都了解Struts1与Struts2的区别到底有多大。一把辛酸泪,就不多说了。 闲话不说,先说下需求。 由于项目规模不大,要求加入简单的权限管理,要求是, 1.不同权限角色进入系统后,显示对...
Bootloader设计

Bootloader设计

引导加载程序是系统加电后运行的第一段代码。我们熟悉的 PC 中的引导程序一般由BIOS(Basic Input/Output System) 和位于 MBR(Master boot record) 的 OS bootloader(例如 LILO 或者 GRUB)一起组成。然而在嵌入式系统中通常没有像 BIOS 那样的固件程序,因此整个系统的加载启动任务就完全由 bootloader 来完成。设计bootloader的主要目的在于初始化系统的软硬件环境进行引...
ARM汇编语言(Assembly Language)

ARM汇编语言(Assembly Language)

ARM汇编语言(Assembly Language)是ARM CPU所能接受的最底层唯一语言(所有的高级语言最终都要转换成汇编语言然后汇编成processor instruction codes)。ARM汇编的核心是ARM指令集。理解ARM汇编有助于理解底层processor内部的工作原理,有助于对高级语言的优化。由于ARM汇编小、快的特点,经常被用在processor的初始化配置中(常见于bootloader、kernel的初始化代码)。ARM Asse...
内存管理单元MMU(memory management unit)

内存管理单元MMU(memory management unit)

内存管理单元MMU(memory management unit)的主要功能是虚拟地址(virtual memory addresses)到物理地址(physical addresses)的转换。除此之外,它还可以实现内存保护(memory protection)、缓存控制(cache control)、总线仲裁(bus arbitration)以及存储体切换(bank switching)。工作机制CPU将要请求的虚拟地址传给MMU,然后MMU先在高速缓...
OK6410,MMU,内存管理 杂谈

OK6410,MMU,内存管理 杂谈

一、MMU学习 MMU其实就是一个页表。将虚拟地址通过查表的方式,对应到物理地址去他由一个或一组芯片组成,一般存在与协处理器中。 1.将虚拟地址转化为物理地址 2.访问权限管理1.1得出mmu功能 这个图就说明了MMU的作用: 有三个任务在运行,运行的地址都是0x400000,如果不进行处理,肯定是不行的。所以加入了MMU,MMU其实就是一个页表。将虚拟地址通过查表的方式,对应到物理地址去。虽然三个任务的运行地址都是0x400000,但是这个地址...
使用Python crontab设置Linux定时任务

使用Python crontab设置Linux定时任务

熟悉Linux的朋友应该知道在Linux中可以使用crontab设置定时任务。可以通过命令crontab -e编写任务。当然也可以直接写配置文件设置任务。但是有时候希望通过脚本自动设置,比如我们应用程序部署时等。有需求当然就得想办法解决,不然在程序猿界混(一群自得其乐的猿)。下面进入正题,开始想通过以写文件的形式设置,通过在配置文件中直接追加一行即可。但是读写文件难免有点繁琐,再比如:设置任务时要检查任务是否已经存在;根据输入参数设置相应的任务等。以读写文...
Linux设备驱动之阻塞I/O与异步通知

Linux设备驱动之阻塞I/O与异步通知

阻塞与非阻塞访问是 I/O 操作的两种不同模式,前者在 I/O 操作暂时不可进行时会让进程睡眠,后者则不然。在设备驱动中阻塞 I/O一般基于等待队列来实现,等待队列可用于同步驱动中事件发生的先后顺序。使用非阻塞 I/O 的应用程序也可借助轮询函数来查询设备是否能立即被访问,用户空间调用 select()和 poll()接口,设备驱动提供 poll()函数。设备驱动的 poll()本身不会阻塞,但是 poll()和 select()系统调用则会阻塞地等待文件...
<< 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 >>