文章851
标签121
分类10

Mac 清除本地DNS缓存

Mac 清除本地DNS缓存

sudo dscacheutil -flushcache

MySQL 中 IF()、IFNULL()、NULLIF()、ISNULL() 函数的使用

MySQL 中 IF()、IFNULL()、NULLIF()、ISNULL() 函数的使用

MySQL 提供了一系列用于处理 NULL 值的函数,包括 IF()、IFNULL()、NULLIF() 和 ISNULL()。这些函数可以帮助开发者在处理数据时更加灵活地处理 NULL 值。本文将介绍这些函数的用法和示例。

1. IF() 函数

IF() 函数用于根据条件返回不同的值。它的语法如下:

IF(condition, value_if_true, value_if_false)

其中:

  • condition 是要评估的条件。
  • value_if_true 是条件为真时返回的值。
  • value_if_false 是条件为假时返回的值。

例如,假设我们有一个表 students,其中包含学生的成绩,我们想要将成绩大于等于 60 的学生标记为 Pass,否则标记为 Fail

SELECT name, IF(score >= 60, 'Pass', 'Fail') AS result
FROM students;

2. IFNULL() 函数

IFNULL() 函数用于将 NULL 值替换为指定的值。它的语法如下:

IFNULL(expression, replacement_value)

其中:

  • expression 是要检查的表达式。
  • replacement_value 是在表达式为 NULL 时要返回的替代值。

例如,假设我们有一个表 employees,其中包含员工的工资信息,我们想要将 NULL 值替换为 0:

SELECT name, IFNULL(salary, 0) AS salary
FROM employees;

3. NULLIF() 函数

NULLIF() 函数用于比较两个表达式,并在它们相等时返回 NULL。它的语法如下:

NULLIF(expression1, expression2)

其中:

  • expression1expression2 是要比较的两个表达式。

例如,假设我们有一个表 customers,其中包含客户的旧地址和新地址,我们想要比较两者是否相同,如果相同则返回 NULL:

SELECT name, NULLIF(old_address, new_address) AS changed_address
FROM customers;

4. ISNULL() 函数

ISNULL() 函数用于检查表达式是否为 NULL。它的语法如下:

ISNULL(expression)

它返回一个布尔值,如果表达式为 NULL,则返回 1,否则返回 0。

例如,假设我们想要找出表 products 中价格为 NULL 的产品:

SELECT name
FROM products
WHERE ISNULL(price);

文献引用

在编写本文时,以下资源对理解 MySQL 中处理 NULL 值的函数提供了帮助:

  1. MySQL 官方文档:Control Flow Functions
  2. MySQL Tutorial:MySQL IFNULL() Function
  3. MySQL Reference Manual:NULLIF(expr1,expr2)
  4. Stack Overflow:How to use NULLIF()

这些资源提供了对 MySQL 中处理 NULL 值的函数的详细解释和示例,有助于更好地理解如何在实际应用中使用这些函数。

通过合理使用 MySQL 中的 IF()、IFNULL()、NULLIF() 和 ISNULL() 函数,可以更加灵活地处理 NULL 值,提高查询和数据处理的效率和可靠性。

有限状态机

收藏一下, 今天同学群众 有同学面试小米最后一题 有限状态机 我也是第一次听说....

百度了一圈 https://baike.baidu.com/item/%E7%8A%B6%E6%80%81%E6%9C%BA/6548513?fr=aladdin

状态机状态寄存器组合逻辑电路 构成,能够根据控制信号按照预先设定的状态进行状态转移,是协调相关信号动作、完成特定操作的控制中心。有限状态机简写为FSM(Finite State Machine),主要分为2大类:

第一类,若输出只和状态有关而与输入无关,则称为Moore状态机
第二类,输出不仅和状态有关而且和输入有关系,则称为Mealy状态机

基本信息编辑

状态机由状态寄存器和组合逻辑电路构成,能够根据控制信号按照预先设定的状态进行状态转移,是协调相关信号动作,完成特定操作的控制中心。状态机分为摩尔(Moore)型状态机和米莉(Mealy)型状态机。 [1]
状态机就是状态转移图。举个最简单的例子,人有三个状态:健康,感冒,康复中。触发的条件有淋雨(t1),吃药(t2),打针(t3),休息(t4)。所以状态机就是健康-(t4)->健康;健康-(t1)->感冒;感冒-(t3)->健康;感冒-(t2)->康复中;康复中-(t4)->健康,等等。就是这样状态在不同的条件下跳转到自己或不同状态的图。

可能使用中没有我们想的那么复杂 , PHP中的有限状态机 if else switch.................

MySQL COLLATE utf8_bin 的作用和用法

MySQL COLLATE utf8_bin 的作用和用法

在 MySQL 中,COLLATE 是用于指定字符串比较和排序规则的关键字。utf8_bin 是一种 COLLATE,它用于指定在比较和排序字符串时使用二进制的方式,而不考虑字符的编码方式。本文将介绍 MySQL 中 COLLATE utf8_bin 的作用和用法,并提供一些示例。

1. COLLATE utf8_bin 的作用

COLLATE utf8_bin 的主要作用是在比较和排序字符串时,将字符串视为二进制数据进行处理,而不考虑字符的编码方式。这意味着它会严格按照字符串中字符的字节值进行比较,不会考虑字符的大小写或者其他字符编码特性。因此,使用 utf8_bin 可以实现对字符串的大小写敏感比较,以及在某些特定场景下更精确的字符串匹配。

2. COLLATE utf8_bin 的用法

在 MySQL 中,可以在查询中使用 COLLATE 关键字来指定字符串比较和排序的规则。示例如下:

SELECT * FROM table_name WHERE column_name COLLATE utf8_bin = 'search_string';

在上面的示例中,table_name 是要查询的表名,column_name 是要比较的列名,search_string 是要搜索的字符串。通过使用 COLLATE utf8_bin,我们可以实现对该列进行大小写敏感的字符串匹配。

3. 文献引用

在编写本文时,以下资源对理解 MySQL 中 COLLATE utf8_bin 的作用和用法提供了帮助:

  1. MySQL 官方文档:COLLATE
  2. MySQL Reference Manual:COLLATE Syntax
  3. Stack Overflow:What is the difference between utf8_general_ci and utf8_unicode_ci

这些资源提供了对 COLLATE utf8_bin 的详细解释和示例,有助于更好地理解其在 MySQL 中的作用和用法。

通过合理使用 MySQL 中的 COLLATE utf8_bin,可以实现对字符串的大小写敏感比较,并在某些特定场景下更精确地进行字符串匹配,从而提高查询和数据处理的准确性和灵活性。

Docker: Mac 运行 docker-compose up -d --build 抛错 `User interaction is not allowed.`

晕死了 好好地运行容器, 突然就一直抛错


bogon:2.lnmp-example admin$ docker-compose up -d --build 
Building nginx
Traceback (most recent call last):
  File "site-packages/dockerpycreds/store.py", line 80, in _execute
  File "subprocess.py", line 356, in check_output
  File "subprocess.py", line 438, in run
subprocess.CalledProcessError: Command '['/usr/local/bin/docker-credential-desktop', 'get']' returned non-zero exit status 1.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "site-packages/docker/auth.py", line 264, in _resolve_authconfig_credstore
  File "site-packages/dockerpycreds/store.py", line 35, in get
  File "site-packages/dockerpycreds/store.py", line 93, in _execute
dockerpycreds.errors.StoreError: Credentials store docker-credential-desktop exited with "error getting credentials - err: exit status 1, out: `User interaction is not allowed.`".

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "docker-compose", line 6, in <module>
  File "compose/cli/main.py", line 71, in main
  File "compose/cli/main.py", line 127, in perform_command
  File "compose/cli/main.py", line 1085, in up
  File "compose/cli/main.py", line 1081, in up
  File "compose/project.py", line 527, in up
  File "compose/service.py", line 344, in ensure_image_exists
  File "compose/service.py", line 1084, in build
  File "site-packages/docker/api/build.py", line 260, in build
  File "site-packages/docker/api/build.py", line 307, in _set_auth_headers
  File "site-packages/docker/auth.py", line 304, in get_all_credentials
  File "site-packages/docker/auth.py", line 281, in _resolve_authconfig_credstore
docker.errors.DockerException: Credentials store error: StoreError('Credentials store docker-credential-desktop exited with "error getting credentials - err: exit status 1, out: `User interaction is not allowed.`".',)
[88967] Failed to execute script docker-compose

百度找了下原因:
Docker 默认设置,将Docker登录安全地存储在MacOS密钥链中造成的,取消这个设置就可以解决,具体细节请自行谷歌。

解决:

依次点击 :Docker 图标 >> Preference >> General
取消勾选 Securely store Docker logins in macOS keychian,
重新运行 docker-compose up ,问题解决。

">