dapper轻量级ORM组件

来源:http://blog.csdn.net/moonpure/article/details/52056379

现在成熟的ORM比比皆是,这里只介绍Dapper的使用(最起码我在使用它,已经运用到项目中,小伙伴们反馈还可以)。

优点:

1、开源、轻量、小巧、上手容易。

2、支持的数据库还蛮多的, Mysql,SqlLite,Sqlserver,Oracle等一系列的数据库。

3、Dapper原理通过Emit反射IDataReader的序列队列来快速的得到和产生对象。性能貌似很牛逼的样子

堡垒机

知乎:https://www.zhihu.com/question/31175397
开源产品:jumpserver

作者:suri Liang
链接:https://www.zhihu.com/question/21036511/answer/20782912
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

1、跳板机跳板机属于内控堡垒机范畴,是一种用于单点登陆的主机应用系统。2000年左右,高端行业用户为了对运维人员的远程登录进行集中管理,会在机房里部署跳板机。跳板机就是一台服务器,维护人员在维护过程中,首先要统一登录到这台服务器上,然后从这台服务器再登录到目标设备进行维护。但跳板机并没有实现对运维人员操作行为的控制和审计,使用跳板机过程中还是会有误操作、违规操作导致的操作事故,一旦出现操作事故很难快速定位原因和责任人。此外,跳板机存在严重的安全风险,一旦跳板机系统被攻入,则将后端资源风险完全暴露无遗。同时,对于个别资源(如telnet)可以通过跳板机来完成一定的内控,但是对于更多更特殊的资源(ftp、rdp等)来讲就显得力不从心了。
2、运维堡垒机人们逐渐认识到跳板机的不足,需要更新、更好的安全技术理念来实现运维操作管理,需要一种能满足角色管理与授权审批、信息资源访问控制、操作记录和审计、系统变更和维护控制要求,并生成一些统计报表配合管理规范来不断提升IT内控的合规性的产品。在这些理念的指导下,2005年前后,运维堡垒机开始以一个独立的产品形态被广泛部署,有效地降低了运维操作风险,使得运维操作管理变得更简单、更安全。

php中mysql_connect,mysqli_connect,pdo_connect的个人理解

1.mysql_connect连接为最原始的连接器,现已不建议使用,有漏洞,且面向过程编程
使用方法:mysql_connect();mysql_select_db();mysql_query();mysql_fetch_array();
**2.mysqli_connect为对mysql_connect的扩展,即可面向过程,又可面向对象,建议使用面向对象;建议使用.
使用方法:$con=new mysqli(); $con->query();$row=$con->fetch_array();
query方法,对于增,删,改返回bool,对查询返回结果集
**3.pdo_connect为连接大多数数据库服务,指定数据库连接类型,就可使用相同的方法,连接不同的数据库.建议使用.
使用方法:$con=new PDO();$con->exec();或者$con->$query();$row=$con->fetch();
exec()推荐使用在增,删,改sql使用,返回的受影响的行
query()推荐查询sql使用,当然也可以用于其他,但返回类型是pdo对象,要对返回对象作处理


例子:

$con = mysql_connect("localhost", "root", "123456");
mysql_select_db("pay4npay", $con);
$result = mysql_query("INSERT INTO `np_pay` VALUES ('00000000008', '3', '1', '1', '1', 'http://dftest.1xiangpay.com/checkAccount/payOther.action', '1', '', null, '2017-08-16 10:07:18');");
var_dump($result);
$test = mysql_fetch_array($result);
var_dump($test);

echo "--------------------------------------";
#INSERT INTO `np_pay` VALUES ('00000000009', '3', '1', '1', '1', 'http://dftest.1xiangpay.com/checkAccount/payOther.action', '1', '', null, '2017-08-16 10:07:18');
#update np_pay set md5key=8 where id=8;
#delete from np_pay where id=5;
#select * from np_pay where id<6
$mysqli = new mysqli("localhost", "root", "123456", "pay4npay");
if ($mysqli->connect_errno) {
    // die("连接数据库错误");
} else {
    $result2 = $mysqli->query("select * from np_pay where id<6");
    var_dump($result2);

    while ($row = $result2->fetch_array()) {
        var_dump($row["id"]);
        echo "<br>";
    }
}
echo "--------------------------------------";
//try {
//   
//    $pdo = new PDO("mysql:host=localhost;port=3306;dbname=pay4npay", "root", "123456");
//    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//    $pdo->beginTransaction();
//    $pdo->exec("insert into np_pay values ('00000000017', '3', '1', '1', '1', 'http://dftest.1xiangpay.com/checkAccount/payOther.action', '1', '', null, '2017-08-16 10:07:18')");
//    $pdo->exec("insert into np_pay values ('00000000016', '3', '1', '1', '1', 'http://dftest.1xiangpay.com/checkAccount/payOther.action', '1', '', null, '2017-08-16 10:07:18')");
//    $pdo->commit();
//} catch (PDOException $ex) {
//    echo $ex->getMessage() . "错误信息";
//    $pdo->rollBack();
//}
$pdo = new PDO("mysql:host=localhost;port=3306;dbname=pay4npay", "root", "123456");
$return3 = $pdo->query("select * from np_pay where id<6;");
while($row=$return3->fetch())
{
    var_dump($row)."<br>";
}

typescript编译(语法转换)

参考:http://www.cnblogs.com/xuanhun/p/6027624.html


使用vscode遇到的问题:
1.按Ctrl+Shift+B编译时,提示error TS5023: Unknown option ‘p’ Use the ‘–help’ flag to see options.通过不了,生成不了js文件及map文件
解决方法:删除C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0这个系统默认的版本,重启vscode.

mssql锁

http://www.jb51.net/article/40631.htm
共享 (S) 用于不更改或不更新数据的操作(只读操作),如 SELECT 语句。

更新 (U) 用于可更新的资源中。防止当多个会话在读取、锁定以及随后可能进行的资源更新时发生常见形式的死锁。

排它 (X) 用于数据修改操作,例如 INSERT、UPDATE 或 DELETE。确保不会同时同一资源进行多重更新。
意向锁 用于建立锁的层次结构。意向锁的类型为:意向共享 (IS)、意向排它 (IX) 以及与意向排它共享 (SIX)。

共享锁
共享 (S) 锁允许并发事务读取 (SELECT) 一个资源。资源上存在共享 (S) 锁时,任何其它事务都不能修改数据。一旦已经读取数据,便立即释放资源上的共享 (S) 锁,除非将事务隔离级别设置为可重复读或更高级别,或者在事务生存周期内用锁定提示保留共享 (S) 锁。
更新锁
更新 (U) 锁可以防止通常形式的死锁。一般更新模式由一个事务组成,此事务读取记录,获取资源(页或行)的共享 (S) 锁,然后修改行,此操作要求锁转换为排它 (X) 锁。如果两个事务获得了资源上的共享模式锁,然后试图同时更新数据,则一个事务尝试将锁转换为排它 (X) 锁。共享模式到排它锁的转换必须等待一段时间,因为一个事务的排它锁与其它事务的共享模式锁不兼容;发生锁等待。第二个事务试图获取排它 (X) 锁以进行更新。由于两个事务都要转换为排它 (X) 锁,并且每个事务都等待另一个事务释放共享模式锁,因此发生死锁。
若要避免这种潜在的死锁问题,请使用更新 (U) 锁。一次只有一个事务可以获得资源的更新 (U) 锁。如果事务修改资源,则更新 (U) 锁转换为排它 (X) 锁。否则,锁转换为共享锁。
排它锁
排它 (X) 锁可以防止并发事务对资源进行访问。其它事务不能读取或修改排它 (X) 锁锁定的数据。


查询锁:exec sp_lock

列名 数据类型 描述
spid smallint SQL Server 进程 ID 号。
dbid smallint 请求锁的数据库标识号。
ObjId int 请求锁的对象的对象标识号。
IndId smallint 索引标识号。
type nchar(4) 锁的类型:
DB:数据库
FIL:文件
IDX:索引
PG:页
KEY:键
TAB:表
EXT:扩展盘区
RID:行标识符

Resource nchar(16) 与 syslockinfo.restext 中的值对应的锁资源。
Mode nvarchar(8) 锁请求者的锁模式。该锁模式代表已授予模式、转换模式或等待模式。
Status int 锁的请求状态
GRANT
WAIT
CNVRT


select DB_ID(‘test’); –查询数据库ID
kill 54 ;–解析,54表进程ID(spid)