粉丝1.8万获赞6.2万

为啥哈西麦克可以存闹,而肯卡尔的哈西麦克不行呢?这呢要从他俩的用途说起,假如说这两个麦克都可以存闹的话,那么当我们通过盖的方法获取到一个闹的时候,你是不知道他是真的存了一个闹,还是说他本身没有存东西而返回的闹,这个呢,就叫做二异性,就是说他的语意其实是不明确的。 那哈西迈巴之所以可以这么做呢,就是因为他天生就是为了单线程场景而设计的。在单线程当中呢,如果我 get 到一个闹,我是可以通过 content 方法来判断一下他是否存在的。而肯卡尔的哈西迈巴是为了并发场景而设计的,在并发场景当中,当我 get 之后, content 之前是有可能被其他的线程操作的,那么这个 content 的结果其实是不可信的。 所以呢,为了避免这个二异性的问题很夸张,哈西卖部就干脆不支持存储闹值了。这种二异性呢,在我写的八股文当中的其他的地方也提到过了,比如说 rpc 接口的 respons 当中,不要使用基本类型,而是使用包装类,也是为了避免二异性。像这样的扎瓦相关知识原理呢, 我用了快一年的时间整理了五百多道,做成了在线的文档,定位呢就是吊打面试官的,又新又全又准,永久更新,一直能看,还能在线答疑,互相提问。大家可以通过下面的小黄车去下单,下单之后呢,根据短信提示申请权限,然后联系店铺客服审批就可以看了。

hello, 大家好。 no 或按 defined 属于基本的,属于类型,按 define 表示未定义, no 表示空对象。一般变量声明没有定义的时候会返回 andifand no 一般用于复制给一些可能会返回对象的变量作为初始化。 当我们使用胎爆符进行判断的时候, no 会返回 oppo 这个的。这是一个历史遗留问题。当我们使用双等进行对比的时候,会返回处是因为 anti fine 的值排成字 note 值。当我们使用全等进行对比时会返回 pos, 因为他们的数学类型不一样。好的,谢谢大家。

hello, 大家好,今天我们接着上一次的内容往后继续讲,那么上一次的内容当中呢?我们讲到了嗨运止住的一个基本用法,以及呢用它结合我们这个 group by 跟剧组的这个调节这些过滤,这是我们上一次讲的内容, 那么今天的这期内容我们要讲什么呢?我们要讲一个特殊的字烙,这个烙它是什么呢?数据库中的烙代表不确定, 不确定的值,也就是不知道是什么,不知道是什么,他代表不确定,不知道, 那么他和空值的区别是什么?空值,那我首先那我代表我们敢讲了是吧?那我代表不确定未知的, 那么空值,也就是我们的单一对单一号代表空,代表空,那么他还他还跟我们的这个零,比如说我们的这个数值现场数据,那么他有的时候会为零,那么这个是零,他代表的是 代表是一个数字,代表的一个是一个数字。然后我们要怎么去查询这个蜡和贝?蜡就是我们马上要讲的案例里面去讲,那么我们之前在在讲那个约束的时候,我们讲到了什么呢?唯空性约束, 空气应该学的是无唠和 lot love, 就是你这个你这个字段可为空, 是否可为空?或者是说不为空,那么可为空的意思就是说你这个这个字段,你这个字段的值 我不去填写他,那么他默认就是一个闹,那么拉着闹不为空的意思就是我不允许你给我的这个阶段的值给一个闹值,那么哪怕你给一个空都可以,但是呢不能给他一个闹, 这是我们之前讲到的一个围空性约束,我们建一个案例来 test 一下 creature table test。 然后呢我给他用三个字段,第一个 tid 硬的型的,那么硬的型的我们给他拉着,然后这个是有一个维控性, 这个字段 t id 是不可以为空的,不可以为空的。那么第二个字段, 然后呢?他是可以为空的, 可以为控,他是可以为控的,他是可以为控。那么 他可以再做了一个逗号,他可以为空,那么这个 low 他是可以省略的, low 是可以省略的,当你不写 low 或者是只写一个 low 的时候,他代表这个字段是可以为空的。我们再加一 这个字段, ticonticcount interesting 老,他是可以,他是允许为空的。然后呢? tv mark the time, 然后呢拿出来,那么这个现在呢?有这四个阶段,那我们分别来看一下, create 一下,直行 insert into, 我们往里面添加数据了,是吧? into test vanis。 第一个字段他是不允许为空的,他是不允许为空的。那么我们给他一个一。第二个字段他是可以为空的。我们给他一个啊,咱三,然后第三个字段, 第三个字段给他一个十。最后一个字段给他一个空。那么这就是我们的这个第一个正常的一个字,正常的一个字,我给你们看一下 rome past 呀,这个值一占三十。最后一个没有值,是因为我们给他,给了他一个空值,给了他一个空值,就是没有嘛,给他一个 空纸,那么第二个我们继续来往后第二个我们呢,第一个给他一个,因为是辣,辣特辣的,是用给他一个辣哦,然后呢也是 五十备注, ok, 我们来看一下这条会出现什么样的结果, 你看他就不能将蜡烛插入裂 tid, 因为这个表开始这个表当中这个 tid 呢,他是不允许为空的,不允, 不允许有闹字的,所以说失败,这个是添加失败,因为 tid 不允许为闹,所以添加失。 ok, 然后呢,我们换一个,下,下一位,我们把它放在下面,然后 二,然后第二个 t n, 他是可以为空的,他是可以为空的。然后呢我们给他一个烙纸,他是可以为空的。给他一个烙纸,那么此时 他是添加成功的。我们来看一下,你看他变成了烙,嗯嗯,这个地方大家可能会,嗯,如果那个 仔细一点,大家可以发现这个烙的背景,他跟这个这其他的背景是不一样,他有点偏黄,因为他是一个烙制是一个烙,那这样他是成功的。那么我们看一下,下面一个呢?下面一个,哦,我的这 最后一个,这个,嗯,贴炕的他也是可以为空的,贴炕的他也是可以为空的,那么我们把这个也是给他插入一个烙纸,对吧?也是可以给他插入一个烙纸。 ok, 这条也成功呀。最后一条,那么我们把最后一个同样 把什么呢?把这个备注插入蜡烛纸,让大家可以看到,第一个是硬的型的,第二个是文本类型,是我们的支付串类型,他们俩之间都给蜡烛纸,都给蜡烛纸。他怎么样?这个这个名字再加一下, 这个名字改成小白,对吧?哇哦,你试一下,你看 这个地方又出错了,因为为什么出错呢?因为这个 t 瑞 mark, 以下添加错误, 不允许,不允许为空,因为这个不允许为空,那么这样呢?我们就知道了,这个烙和我们的这个呃非烙的一个区别,就是我给给你一个空,然后我们现在来看一下, 看到没?唠唠唠,我可以给你,就是我不填写,我可以直接给你一个唠,我可以直接给你一个唠,然后呢?我还可以怎么呢?一十二特,我直接把可以为空的,我就添加几个,知道呢, 我就只添加,我就只添加 t 内和 tcom 和面合体看的这两个,这是选择性添加,大家可以看前面的内容添加的那个那个内脏哈,选择性添加,就是我可以只添加,只添加我想要添加的, 然后呢?嗯,小花,小花,然后呢?三十, 然后呢?我们来看一下,哦哦,我们然后呢?小花。像是 tcom 的啊,不应该是 tcom 的,应该是这个,这个,嗯, mark, 嗯,哈哈哈,让我们来看一下一啊 tid, tid 不允许为空,应该是 tid, 哎,真不错的哈,应该是 tid 和 t 对 mark, 比如说二十,然后呢我们给他用一下,你看一下受影响,那这个时候呢, 你会发现二十和哈哈哈这个中间也是浪子,是因为我没有给他添加,也就是说当我不给他添加的时候,他默认就是浪子, 默认就是老子,这是不确定的。一个一个纸,那么这就是我们的烙和啊,我们的这个非烙的这个一个用法,也就以及他跟我们这个空纸之间的区别。然后我们要怎么去查询呢? 查询闹得非, 之前我们在讲查询的时候呢,我们都是什么呢?我们都是直接呃呃。用符号大于等于小于等于那一个这样去查询,但是我没有讲到这个唠,因为那个唠我们不想,我想单独给他放出来讲,所以这个时候呢? long pasta where 听令 ease ease large love 查询是否为空,不为空。用 is large love 查询为空 is love is love 就是这个阶段是查询这段是否是烙纸,用 is love or is that love 进行查询,进行查询。那么为空呢?空,空呢?单纯的空呢?就是什么呢? 单纯的查询空,当然这个就因为空,他是一个直,只是他是空的,那么这个时候呢,就要用等于我们这个空,值了。嗯,没有知道我们看哪个里面有 啊空,应该是 tv mark 这个阶段, 你看这个就差评出来了,这个就是我们今天讲的内容,我们这个啊,特殊时髦的这个用法今天就到。

今天讲四种类型转换方式。首先看第一种隐式转换,把 int 类型转为 double 类型,不需要我们写额外代码,底层会自动进行类型转换,并不会产生精度丢失。第二种是显示转换,把 double 类型转为 int 类型,这个时候我们需要写一个括号 int, 标识着我们是强制转换的, 这个时候它会导致一些精度丢失。第三种, convert 类转换,可以把字母串转为其他的类型,比如说 int 三十二,直接需要写 convert to int 三十二, 把字母串传进来就可以了。第四种是 pass 和 try pass, pass 这种方式需要我们把内容作为传餐传到这个方法里面,返回结果就是最终转换的结果,如果转换失败的话会抛出异常,我们通过 try catch 就 可以把这个异常捕获到。 break pass 呢就是我们需要把我们要转待转换的内容和我们转换的结果作为我们的传入参数和 out 参数,这个方法执行结果就标志着我们转换是否成功,如果成功的话,这个 break pass number 就是 我们最后转换的结果,如果失败的话就告诉我们失败了。

值类型和引用类型到底有什么区别?今天三十秒讲透,看完再也不发懵。先看值类型,值类型数据,比如 int double 布尔直接存储在占中,这意味着数据本身就位于变量所在的内存位置,访问速度会非常快。 值类型的复制操作会复制一个独立的副本,如代码所示,将 a 复制给 b 后,修改 b 的 值,完全不会影响 a, 两者是相互独立的变量。 再看引用类型,像类数组自复转这些占内存,存储的是引用堆内存存储的是实际数据。当我们赋值的时候呢?复制操作仅复制引用的地址,而非数据本身。 比如说这里,我们把 p 一 复制给 p 二,其实就是复制了地址,两个变量同时指向了同一个对象, 我们修改 p 二的 h, p 一 的也会跟着变。比如说我们这里内存模型示域图里面描述的这样, p 一 和 p 二它们的地址是相同的,共同指向了一个堆,上面的空间就是我们的对象的数据。 总结一下,值类型存储位于站中,赋值规则呢?我们赋值的是值本身,应用类型数据存储在堆上,站只用于存储对象的地址。我们进行赋值的时候呢,复制的是引用。关注我每天一个编程使用知识点。