很多开发规范都是不建议在Android中使用枚举的,在Android系统中使用枚举的开销是使用常量的2倍。...一般地,在一个文件中定义常量 public class FileType { public static final int TYPE_MUSIC = 0; public static final...使用这个标识了注解的生命周期,这里指定值为 RetentionPolicy.SOURCE 说明这个注解保留在源码阶段。...我们这里使用 RetentionPolicy.SOURCE 的用意就是在编码时能够识别出错误的 FileType,至于 RUNTIME和 CLASS 阶段的状态,我们是不关心的。...如果在传参时没有按照指定的值那么编辑器就会发出警告,这样就可以在编码的时候进行提示。 ? @StringDef 同样地,还可以对字符串常量定义注解。
我们生活在一个繁忙的世界里,当我们需要查找文件和数据时,使用 ls 命令可以节省时间和精力。但如果不经过大量调整,默认的 ls 输出并不十分舒心。...当有一个 exa 替代方案时,为什么要花时间眯着眼睛看黑白文字呢? exa 是一个常规 ls 命令的现代替代品,它让生活变得更轻松。这个工具是用 Rust 编写的,该语言以并行性和安全性而闻名。...它使用颜色来区分文件类型和元数据。它能识别符号链接、扩展属性和 Git。而且它体积小、速度快,只有一个二进制文件。 跟踪文件 你可以使用 exa 来跟踪某个 Git 仓库中新增的文件。...扩展文件属性 当你使用 exa 探索 xattrs(扩展的文件属性)时,--extended 会显示所有的 xattrs。...它的颜色编码让我更容易在多个子目录中进行搜索,它还能帮助我了解当前的 xattrs。
作者:何甜甜在吗 来源:http://1t.click/a7Gm 在项目开发过程中经常遇到时间处理,但是你真的用对了吗,理解阿里巴巴开发手册中禁用static修饰SimpleDateFormat...当多个线程同时使用相同的SimpleDateFormat对象【如用static修饰的SimpleDateFormat】调用format方法时,多个线程会同时调用calendar.setTime方法,可能一个线程刚设置好...在多并发情况下使用SimpleDateFormat需格外注意 SimpleDateFormat除了format是线程不安全以外,parse方法也是线程不安全的。...calb中中属性设置cal c、返回设置好的cal对象 但是这三步不是原子操作 多线程并发如何保证线程安全 - 避免线程之间共享一个SimpleDateFormat对象,每个线程使用时都创建一次SimpleDateFormat...=> 较好的方法 1.Date对时间处理比较麻烦,比如想获取某年、某月、某星期,以及n天以后的时间,如果用Date来处理的话真是太难了,你可能会说Date类不是有getYear、getMonth这些方法吗
ES.47: Use nullptr rather than 0 or NULL 而不是ES.47: 使用nullptr表现空指针,而不是0或NULL Reason(原因) Readability...restrictive) type, and thus works in more scenarios where type deduction might do the wrong thing on NULL...同时nullptr具有良好定义(非常严格的)的类型,很多情况下使用NULL或0会导致类型推断出错,但使用nullptr就不会。...); f(0); // call f(int) f(nullptr); // call f(char*) Enforcement(实施建议) Flag uses of 0 and NULL...标记使用0或者NULL表现指针的情况。这种变换可以或许可以通过简单的程序进行。
在Remote SSH扩展设置中找到,取消勾选 去掉这个对勾就正常了
当我们使用传统的 mysql_connect 、mysql_query方法来连接查询数据库时,如果过滤不严,就有SQL注入风险,导致网站被攻击,失去控制。...;dbname=db_demo","root","password"); 默认不是长连接,若要使用数据库长连接,需要在最后加如下参数: $dbh = new PDO("mysql:host=localhost...3) 通过设置PDO::ATTR_ORACLE_NULLS类型(包括PDO::NULL_NATURAL,PDO::NULL_EmpTY_STRING,PDO::NULL_TO_STRING)来指定数据库返回的...NULL值在php中对应的数值。...; } } 如何防止 sql注入 使用PDO访问MySQL数据库时,真正的real prepared statements 默认情况下是不使用的。
C.8: Use class rather than struct if any member is non-public C.8:存在非公有成员时,使用class而不是struct定义类 Reason...如果使用struct关键字声明的类具有私有或保护成员,进行提示。
php phpinfo(); 如果不支持,在php.ini中打开选项即可 ---- 2.连接数据库 2.1:方式1 写死在代码里 |-- --------------- $dsn = 'mysql:...;"; $state = $conn->prepare($sql_insert); $state->bindParam(1, $pic_path, PDO::PARAM_STR); $state->bindParam...empty(self::$PDOStatement)) { self::$PDOStatement = null; } } /** * 如果sql语句有误 打印 */ private...function ifErrorHandleSQL($sql){ $err = empty(self::$PDOStatement) ?...self::$PDOStatement->fetch(constant("PDO::FETCH_ASSOC")); return $res; } |--- 使用 $sql_query_one
php phpinfo(); 如果不支持,在php.ini中打开选项即可 2.连接数据库 2.1:方式1 写死在代码里 |-- --------------- $dsn = 'mysql:host...;"; $state = $conn->prepare($sql_insert); $state->bindParam(1, $pic_path, PDO::PARAM_STR); $state->bindParam...empty(self::$PDOStatement)) { self::$PDOStatement = null; } } /** * 如果sql语句有误 打印 */ private...function ifErrorHandleSQL($sql){ $err = empty(self::$PDOStatement) ?...self::$PDOStatement->fetch(constant("PDO::FETCH_ASSOC")); return $res; } |--- 使用 $sql_query_one
然而,选择适合项目需求的数据库操作类以及正确使用它们非常重要。Database.phpPDO($dsn, $config['db_user'], $config['db_pass']); $this->pdo->setAttribute(PDO...>使用示例---以表名为 test_table 为示例作为示例代码。...(32) NOT NULL, `content` varchar(255) NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;insert示例select('表名', '*', where条件, LIKE条件, ORDER条件, LIKIT条件); // 无需使用的条件传递null // $db->select('
从 options 这个参数里面,我们可以看出,Laravel 默认使用的是 PDO 连接的数据库,我也没有研究在 Laravel 中如何使用 mysqli 进行连接,因为 PDO 确实已经是事实的连库标准了...看这个 insert() 函数的参数写法,是不是和 PDO 的预处理语句的写法很像?语句里面使用占位符,后面一个数组里面传递参数。...在学习 PDO 的时候,我们知道,预处理语句的执行就是先 prepare() 再 execute() 一下就可以了,特别是增删改的操作是非常类似的,那么我们在这里是不是可以在 insert() 方法里面执行一个修改或者删除语句呢...我们在审阅查看代码时,按照标准的规范写,不需要详细的看语句,就可以通过方法名快速地知道这段数据库操作是要干什么,这不是非常好的一件事嘛。...通过上面两步,我们的配置就完成了,是不是非常简单,接下来就是在代码中如何使用。
$pdo = null; private $persistent = false; private $statement = null; private $lastInsID = null;...,$data) { if (empty($this->pdo) || !...is_object($this->pdo) || !is_array($data) || empty($sql) || !...->lastInsertId(); if (preg_match("/^\s*(INSERT\s+INTO|REPLACE\s+INTO)\s+/i", $sql) && !...empty($this->statement)) { $this->statement->closeCursor(); $this->statement = null; } } } ?
为了突破AT事务对业务编程语言的限制,现在业界正在往DB Mesh的方向发展,通过将事务中间件部署在SideCar的方式,达到任何编程语言都能使用分布式事务中间件的效果。...Mysql 客户端在给用户发送 sql 执行结果时,如果执行没有异常,发送的第一个包为 OKPacket,该包中有一个标志位可以标识 sql 请求是否在一个事务中。...driver 会对标志位进行校验,所以 php 8.0 以上版本在使用 dbpack 协调分布式事务时,会抛出 transaction not active 异常。...本文将以PHP语言为例,详细介绍如何使用PHP对接DBPack完成分布式事务。实际使用其他语言时,对接过程也是类似的。...mysqli驱动、pdo_mysql驱动,还是通过mysql\_connect()连接数据库(在start transaction;开始之后,后续的业务操作必须在同一个数据库连接上进行
然而,在WEB应用设计与开发中一个基本的需求与挑战:数据库应用,这些设计模式都没有涉及到。数据映射模式使您能更好的组织你的应用程序与数据库进行交互。...首先我们使用pdo进行数据库访问: empty($result)) { return $result; } } catch (PDOException $e) {...empty($result)) { return $result; } } catch (PDOException $e) {...> 数据映相关类射类,使用__call达到动态生成getter 和setter方法. <?
前言 在商品秒杀活动中,比如商品库存只有100,但是在抢购活动中可能有200人同时抢购,这样就出现了并发,在100件商品下单完成库存为0了还有可能继续下单成功,就出现了超卖。...在队列里前一个走完之后,后一个才会走,所以redis的队列能完美的解决超卖并发的问题。 解决秒杀超卖问题的方法还有比如:1.使用mysql的事务加排他锁来解决;2.使用文件锁实现。...3.使用redis的setnx来实现锁机制等。 实现原理 将商品库存循环lpush到num里,然后在下单的时候通过rpop每次取出1件商品,当num的值为0时,停止下单。...status']=$status; $order_log['msg']=$msg; $order_log['create_time']=time(); pdo_insert...=2; $order['order_sn']=$orderNo; $order['create_time']=date('Y-m-d H:i:s'); pdo_insert
empty($liveName)) { // 插入新记录 $stmt = $pdo->prepare("INSERT INTO live_stream...$e->getMessage();}// 关闭数据库连接$pdo = null;?>而不是之前限制只取最新的 10 条数据,这样后续可以全面地对每个live_id的所有记录进行分析处理。...处理数据逻辑完善:在遍历所有数据时,针对每个live_id,准确判断最新记录以及计算hot数据增值情况,并且更新存储结构中的最新数据信息,以便后续展示和复制操作使用。...empty($liveName)) { // 插入新记录 $stmt = $pdo->prepare("INSERT INTO live_stream
如果不更改API,则无法更改其表示形式,无法强制执行不变量,并且在访问属性时无法执行辅助操作。...在类定义和使用它的客户端代码中,这种方法比访问方法产生更少的视觉混乱。 虽然客户端代码绑定到类的内部表示,但是这些代码仅限于包含该类的包。...这些类别应该被视为警示性的示例,而不是模仿的例子。 如条目 67所述,暴露Dimension的内部结构的决定是一个严重的性能问题,这个问题在今天仍然存在。...虽然公共类直接暴露属性并不是一个好主意,但是如果属性是不可变的,那么危害就不那么大了。...---- 今天小程序更新的题库: 1.为什么不建议在代码中直接使用Executors创建线程池,而是推荐通过 ThreadPoolExecutor 方式创建 2.你对线程优先级的理解是什么?
启用方法是在php.ini中把extension=php_pdo.dll的注释去掉即可。...二、PHP使用PDO实现增删改查 1)单例模式实现类的实例化(重点:privatestatic $inc、private __construct、__clone、public getInstance )...为了利用PDO的安全性,因此在拼接SQL时,需要将用户输入的参数使用占位符进行替换(即在拼接时使用冒号+字段名,或者使用问号),并且在完成sql拼接以及PDO类的prepare方法后,使用PDOStatement...使用方法:在execute方法前,插入一个PDO类的方法beginTransaction(),在完成所有执行语句后后再使用PDO类的方法commit()。...因此,在项目中通常还是使用PDO来操作数据库,至于效率可以采用优化sql语句、优化架构、优化处理逻辑、分表、读写分离等方式进行改进。 —written by linhxx 2017.07.25
F.20: For "out" output values, prefer return values to output parameters(输出结果时更应该使用返回值而不是输出参数) Reason...返回值本身可以说明用途,而引用类型可以是输入/输出参数也有可能只是输出参数,容易被误用。...包含多个(单独看都可以低成本移动)元素的结构体合起来移动时可能会代价高昂。 It is not recommended to return a const value....,而小数据者应该直接使用返回值。...警告那些没有在写之前读(没有输入用途)而且可以低成本返回的参数,它们应该作为返回值输出。 Flag returning a const value.
规则说明 对字符串使用范围索引器并将其分配给范围类型时,将触发此规则。...Span 上的范围索引器是非复制的 Slice 操作,但对于字符串中的范围索引器,将使用方法 Substring 而不是 Slice。 这会生成字符串所请求部分的副本。...仅在对范围索引器操作的结果使用隐式强制转换时,分析器才会报告。...若要使用它,请将光标置于数组冲突上,然后按 Ctrl+。 (句点)。 从显示的选项列表中选择“对字符串使用 AsSpan 而不是基于范围的索引器”。...而不是基于范围的索引器来获取数组的 ReadOnlySpan 或 ReadOnlyMemory 部分 CA1833:使用 AsSpan 或 AsMemory 而不是基于范围的索引器来获取数组的 Span