反射是用程序检查其所拥有的结构,尤其是类型的一种能力。反射可以在运行时(不必在编译时)检查类型和变量,例如大小、变量、方法和动态调用这些方法。
方法和类型的反射reflect 包提供了反射功能,它定义两个重要类型:Type 和 Value,分别表示动态类型和值。
有两个常用的方法:
reflect.TypeOf:返回对象的具体类型。
reflect.ValueOf:返回对象的值。
反射是先检查一个接口的值,再将变量转换成空接口类型,我们看下这两个函数的定义就能明白了:
12func TypeOf(i interface{}) Typefunc ValueOf(i interface{}) Value
reflect.TypeOf函数 reflect.Typeof() 可以接收任意 interface{} 类型数据,并返回其动态类型。
123456789101112package mainimport ( "fmt" "reflect")func main() { t := reflect. ...
传递变长参数如果函数最后一个参数采用 ...type 的形式,那么这个函数就可以处理一个变长参数(长度可以为 0),这样的函数被称为变参函数,如:
1func myFunc(a int, args ...int)
如果参数存储在切片 arr 中,可以用 arr... 来传递参数,如:
123456789101112131415161718192021222324252627package mainimport "fmt"func main() { x := Min(1, 3, 2, 0) fmt.Printf("The minimum is: %d\n", x) arr := []int{7, 9, 3, 5, 1} x = Min(arr...) fmt.Printf("The minimum in the arr is: %d", x)}func Min(a ...int) int { if len(a) == 0 { ...
Go 没有像 Java 那样的 try/catch 异常处理机制,而是用 defer/panic/recover 机制来处理异常。
Go 语言的设计者认为 try/catch 机制使用过于泛滥,而且从底层向高层抛出错误太耗费资源,因此他给 Go 语言设计了一种返回值处理错误方式:通过在函数和方法中返回错误对象,这个错误对象一般在多个返回值的最后;如果返回 nil,则表明没有错误,且主调函数应该检查并处理每一个错误。
我们通过调用 pack1 包中的 Func1 函数来了解 Go 语言中的错误处理方式:
Func1返回了两个值,一个 value和 err,err 是错误对象,若 err 不为 nil(nil 是空的意思,类似于 Java 中的 null),则进行错误处理,打印出具体错误信息。
1234if value, err := pack1.Func1(param1); err != nil { fmt.Printf("Error %s in pack1.Func1 with parameter %v", err.Error(), param1 ...
基本概念线程和进程
进程 :是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个 独立单位 。
线程 :是进程的一个执行实体,是 CPU 调度和分派的 基本单位 ,它是比进程更小的能独立运行的 基本单位 。
一个进程可以创建或撤销多个线程;同一个进程中的多个线程之间可以并发执行。
线程和协程
协程 :独立栈空间,共享堆空间,调度由用户自己控制,本质上有点类似于用户级线程,这些用户级线程的调度也是自己实现的。
线程 :一个线程上可以跑多个协程,协程是轻量级的线程。
并发和并行并发 和 并行 虽然相似,但是有所不同:
并发 :逻辑上具备同时处理多个任务的能力。
并行 :物理上在同一时刻执行多个并发任务。
我们一般会说程序是并发的,意思是说它允许多个任务同时进行,但不一定在同一时刻发生。对于单核处理器,它们能以间隔方式切换运行;而并行则依赖多核心处理器,是让多个任务真正能在同一时刻运行,是一种程序运行的状态。
多线程和多进程是并行的基本条件,但单线程也可用协程(coroutine)做到并发。虽然单线程只能通过主动切换来实现并发,但也有优点,可以避免由于切换线程导致的资源消耗 ...
前言从第一次接触 vim 已逾期 10 年, 期间大部分都是一些简单操作,最近一两年开始深度使用 vim, 目前使用 neovim 版本.本文将记录一些笔者觉得好用的一些 Plugin, 本文也将持续更新.
注意: 笔者使用的插件管理器是 vim-plug,所以以下示例都是基于 vim-plug 来写的.
Goto/Openvim-open-urlvim-open-url可以用浏览器打开光标下的 url.
gB 用默认浏览器打开光标下的 url
g<CR> 使用默认搜索引擎搜索光标下的单词
gG 使用 Google 搜索光标下的单词
gW 使用 Wikipedia 搜索光标下的单词
1Plug 'dhruvasagar/vim-open-url'
Auto Completeneoclide/coc.nvim
目录|审计|内部控制审计|内控管理之内部控制的八大要点“一”部《规范》财政部在2012年根据《中华人民共和国会计法》《中华人民共和国预算法》等法律法规和相关规定,制定《行政事业单位内部控制规范(试行)》(以下简称《规范》),共6章65条,2014年1月1日起施行。
《规范》为内部控制建设提供了依据,并对内部控制进行定义。内部控制是指单位为实现控制目标,通过制定制度、实施措施和执行程序,对经济活动的风险进行防范和管控。
“二”个层面《规范》将内部控制分为“单位层面内部控制”和“业务层面内部控制”两个层面,并对如何建设内部控制作了具体要求。
单位层面要做什么
业务层面要做什么
工作组织
预算管理
机制建设
收支管理
制度完善
政府采购管理
人员管理
资产管理
财务信息编报
建设项目管理
合同管理
“单位层面内部控制”和“业务层面内部控制”两个层面紧密联系,但侧重点不同,单位层面侧重于组织、机制、制度的建设,而业务层面侧重于具体实施、操作程序。业务层面的控制失效可能造成局部的损失,而单位层面的内部控制失效可能导致全局性的内控建设流于形式。
“三” ...
问题一:不相容岗位未分离;例如:出纳和会计岗位未分离(这是最典型的一种不相容岗位未分离的情况),除此之外,企业当中的很多业务部门也存在这种问题,比如,企业如果把在销售过程中的职能设置,”销售价格、客户的赊销额度、坏账的注销“都放在一个人身上,那么就存在着不相容岗位未分离的情况;
应对策略: 在企业的交易中,有发起、批准、进行、记录等各个环节,要把各个环节的人员分开,才能更好的进行内控。
问题二:工作交接出现问题;职员在离职或者职员岗位轮换之后,企业找不到合适的人顶替这个岗位; 这种情况下,会影响公司正常开展业务;交接期内,工作效率低下;因组织变换,人为商定的措施未贯彻。
应对策略:制定AB角制度,明确规定一旦岗位人员发生变动,该岗位的顶替人选。
问题三:岗位轮换的不及时某些岗位的员工,在该岗位担任工作的时间较长,或者一个人在某个岗位上,从未离开。针对这个事项,可能引起的问题有,虽然在该岗位上的员工经验越来越丰富,但很难改善其工作方法。而且该员工如果出现工作失误时,很难被人发现。
应对策略:强制轮换;强制带薪年假制度;避免过多的连续加班。
问题四:企业资源个人化常见的情况 ...
目录|审计|内部控制审计
介绍政府会计制度发布时间? 2019|手册2017年,预算法变更(强化绩效,有无规定)收支核算-政府会计制度、招投标法手册没有及时更新,具体哪块?具体制度修订了,手册有无修订?22年经济责任制实际执行但没制度
审计目标通过对高等院校202X年度学校内部控制及风险管理进行审计并出具内部控制及风险管理审计报告,重点关注重要业务单位、重大业务事项和高风险领域的内部控制,查找现有内部控制的缺陷和薄弱环节,提出整改建议,明确内部控制改进的方向与重点,提升学校风险防控能力和管理水平,推动学校进一步完善内部控制体系。
法律依据层面:国家|市级|单位内部
《行政事业单位内部控制规范(试行)》(财会[2012]21号)
《关于全面推进行政事业单位内部控制建设的指导意见》(财会[2015]24号)
《审计署关于内部审计工作的规定》(2018年审计署令第11号)
《北京市内部审计规定》(2019年北京市人民政府令第289号)
《内部审计基本准则》
《内部审计具体准则-内部控制审计》
《北京市属高校内部控制审计指引》(征求意见稿)
学校内部控制 ...

