H.SalesOrderID WHERE D.ModifiedDate >'2011-01-01' GROUP BY D.SalesOrderID HAVING COUNT(*) > 3 这段代码是运行在...AdvantureWorks 2016 版本中的。...SalesOrderHeader是张主表,SalesOrderID 是唯一主键。...SalesOrderDetail 是张子表,引用了 SalesOrderID 作为外键关联到 Sales.SalesOrderHeader....但更重要的是我对看过的书,做过的案子以及技巧的一些记录,这是记录成长的地方,我希望它私密,仅与朋友一起分享。 7 大主题,已经完成了 5 个,相信再过 2周,所有的主题都能写完了。 ?
对比Vue Vue的数据更新是基于event-loop 机制(是更新,不是数据双向绑定)。 ?...React.setState()中的异步更新 setState()中有个特别重要的布尔属性isBatchingUpdates(默认为false,),它决定了state是同步更新还是异步更新。...setState调用.png setState 只在合成事件和钩子函数中是“异步更新”的。 异步更新的背后,是同步代码处理("合成事件和钩子函数"的调用在"更新"之前)。...React.setState()中的同步更新 当然,也是有办法同步获取state更新后的值: setTimeout等异步操作中调用setState函数 DOM原生事件 利用setState回调函数 函数式...后面两个方法,是React本身提供的。要注意的是,setState回调函数要在render函数被重新执行后才执行。 下面有一道题目,试试做吧!
转载此篇文章是感觉这篇文章的对其结论的分析过程很棒。 正文 Java中的数组是对象吗? Java和C++都是面向对象的语言。...那么,我们是不是应该考虑这样一个问题:在面向对象的语言中,数组是对象吗? 要判断数组是不是对象,那么首先明确什么是对象,也就是对象的定义。...2)name在对象中只表示一个引用, 也就是一个地址值,它指向一个真实存在的字符串对象。在这里严格区分了引用和对象。 那么在Java中,数组满足以上的条件吗?..., 表示数组的长度 //以下方法说明数组可以调用方法,java中的数组是对象.这些方法是Object中的方法,所以可以肯定,数组的最顶层父类也是Object a.clone(); a.toString...return 0; } 所以C++中的数组不是对象,只是一个数据的集合,而不能当做对象来使用。 Java中数组的类型 Java是一种强类型的语言。
kotlin来了,就因为Google背书了一哈,你们就无条件的沸腾了。 这年头出来了所谓语言还少吗? 三天两头搞些新花样。 你们就不能安心的团结在java或者其他世界最好语言的周围长期演进吗?...说好的长期演进呢。 说好的开源呢? 你们这种三天两头自立门户搞出一门新语言真的是开源精神? 你这不是变相的bi源吗? 一个相同的功能愣是在这个世界上存在n版。 这不是重复造轮子吗。...{ } } 8、java的方法这里叫function。kotlin有个特点就是梭梭就是干。前缀是啥就是啥,前缀是val表示变量,前缀是vararg那么很明显就是可变参数。...你也许纳闷,不是说好的val吗,怎么又变成var了。区别很简单:val是只读的;var是可以被修改的,可变的。你就这样理解把val就是value,var就是variable。 (6)、?=。...我们再来看看pom中的依赖吧。
今天看了一篇国外的大佬关于“css嵌套语法”看法的文章,他认为这个语法是完全无用的垃圾,并收到众多网友的支持,在这里我将这个国外大佬的看法进行了整理,欢迎大家在评论区探讨。...在LESS/SASS/SCSS中,它只会使代码更加混乱,更难以跟踪和调试,总之,只会增加更多的步骤和考虑,而没有任何实际的好处。 但有趣的是,你会看到一些明显是为了让它看起来好看而堆叠的例子。...而且,如果你进入像实际的完整代码库这样的东西,它真的会崩溃。每个选择器字符串使用一个属性是堆叠的。现实世界中?...尽管最热烈欢呼的人似乎是那些“在每个该死的元素上添加垃圾类”的傻瓜,那么他们从组合器或嵌套中得到了什么效用呢?...如果正确使用,它可以使代码更加优雅和易于维护,但是过度使用可能会导致代码的冗长和可读性下降。我们应该根据项目的实际需求和具体情况进行权衡和取舍,而不是一味地认为某种方法是完全无用的垃圾。
一、kotlin如何抛异常 Kotlin中的异常处理与Java或者其他语言中的处理方式相似。一个函数可以以正常方式结束,或者当错误发生的时候抛出异常。...Kotlin中的异常处理语句的基本形式和Java是相似的: java中: if(0 <= percentage <= 100){ throw new IllegalArgumentException...经验表明,Java规则常常需要很多无意义的代码从新抛出或者忽略异常,而且这些规则不能总是保护你免受坑你发生的错误。 在上面的例子中,NumberFormatException是一个不受检查的异常。...不像if,你一直需要把语句保函在花括号中。就像其他语句,如果包涵多个表达式,try表达式的值是最后一个表达式的值。...四、总结 1、kotlin中的异常处理和java处理相似,除了Kotlin不要求你声明函数可以抛出的异常。 2、如果一个try代码块执行一切正常,代码块中最后一个表达式就是结果。
来自 「蔡昕萌」 同学的内部分享。 在最开始学习 JavaScript 时,我一直被灌输 Object 中的 Key 是无序的,不可靠的,而与之相对的是 Map 实例会维护键值对的插入顺序。...「But,Object 的键值对真的是无序的吗?」实际上在 ES2015 以后,Object.keys 的规则变了: 在一些现代的浏览器中,keys 输出顺序是可以预测的!...总结来说,就是当前的 key 如果是自然数就按照自然数的大小进行升序排序。...1000"] console.log(Object.getOwnPropertyNames(objWithIndices)); // ["1", "23", "1000"] 包括在 for-in 循环的遍历中...Recap 在 ES6 之前 Object 的键值对是无序的; 在 ES6 之后 Object 的键值对按照自然数、非自然数和 Symbol 进行排序,自然数是按照大小升序进行排序,其他两种都是按照插入的时间顺序进行排序
Kotlin 中的 扩展 到底是什么?...简单使用: 扩展函数 //要扩展哪个类中的方法,被扩展的类名就是哪个 fun 被扩展的类名.扩展函数名(..参数..){ 函数体 } 例如: 在Array中扩展一个元素交换的方法 fun Array<Int...Kotlin 的扩展是一个很独特的功能, Java 本身并不支持扩展, Kotlin 为了让扩展能在JVM平台上运行,必须做一些独特的处理 Kotiin 支持扩展方法和扩展属性 扩展的实现机制 Java...是一 门静态语言。...但现在 Kotlin 的扩展却好像可以动态地为一个类增加新的方法,而且不需要重新修改该 类的源代码,那 Kotlin 扩展的实际情况是怎样的呢?难道 Kotlin 可以突破 NM 的限制?
/ 用中缀表示法调用扩展函数 1 shl 2 // 等同于这样 1.shl(2) 可变数量的参数和星操作符 可变参数vararg 使用关键字vararg来修饰可变参数。.../* 在函数内部,类型 T 的 vararg 参数的可见方式是作为 T 数组,即上例中的 ts 变量具有类型 Array 。...例子如下: 在Android开发中,打印信息 //通过关键字inline来定义内联函数。 //泛型中的 reified关键字告诉编译器,这个泛型是可以具体拿到值的泛型。...这里等待后面具体来看什么时候非内联 在 Kotlin 中,我们可以只使用一个正常的、非限定的 return 来退出一个命名或匿名函数。...如果 Kotlin 可以自己计算出签名,它允许我们不声明唯一的参数,并且将隐含地为我们声明其名称为 it: ints.filter { it > 0 } // 这个字面值是“(it: Int) ->
T 的子类不能被复制过去吗?...} 4、 Kotlin 中 DSL 使用带有 object 参数的中缀函数 我只想说,“厉害了,我的 Kotlin 哥”!...Kotlin 中 DSL 真的很好用,像大名鼎鼎的 anko 库,使用 DSL 实现 Android Layout 非常给力啊,还有 SQL 数据库操作,另外用过一段时间的 TornadoFX ,用 DSL...看下面一句话,还是来自教材: "kotlin" should start with "kot" Sorry ,说错了,不是一句话,是一段代码!对,这段代码没啥稀奇的了,不就是中缀函数拼凑起来吗?...它是一个 object 单例,那么既然是单例为啥不直接使用,还要去作为 should 函数的参数呢?这不是毫无意义吗? No !
前段时间一个负责企业数字化建设的CIO朋友找我聊IT规划,谈到他们刚上线的数据中台,从上线一段时间的使用效果来看,感觉并没有取得应有的效果,反而给业务和IT带来很多困扰,增加了不少数据维护工作量,多个系统与中台之间的数据经常出现不一致的情况...慢慢地,业务领导和IT都开始怀疑当初上中台是否是正确的选择,甚至一度怀疑中台就是个伪概念。因为搞来搞去,它的性质和地位就是一套信息化应用系统而已,有用户登录入口,有维护功能,有后台数据库。...我不由感叹说:你们只是上了一套名字叫“**中台管理系统”的系统,并不是真正意义上的中台。 中台是不是伪概念,是不是炒作,我之前在公众号已经说得很明白了。...中台的目的就是为了调和企业信息系统之间(前台+后台)的对接矛盾,它的“客户”是前台面向B端C端的系统,“供应商”则是后台各种数据库以及逻辑计算中心。...像上面CIO朋友举的例子,很明显数据中台输出有残缺,没有站在业务的角度去支持业务规则,甚至为了保证业务顺利进行而让用户到中台去手工修改数据,完全就是违背了数据中台的宗旨。
我们都知道 Java 中的 String 类的设计是不可变的,来看下 String 类的源码。...其值 value 也就是对字符数组的封装,即 char[],其值被定义成 private final 的,说明不能通过外界修改,即不可变。 String 真的 "不可变 " 吗? 来看下面这个例子。...这其实是初学者的一个误区,从上面看 String 的结构可以得知字符串是由字符数组构成的,str 只是一个引用而已,第一次引用了 "Python",后面变成了 "Java",而 substring 也是用...关于 substring 在 JDK 各个版本的差异可以看这篇文章《注意:字符串substring方法在jkd6,7,8中的差异》,也可以去看 substring 的各个版本的源码。...String 真的真的真的 "不可变 " 吗? 上面的例子肯定是不可变的,下面这个就尴尬了。
1、二分类人看到的 或者 然后 看不到多分类、多因素 如何准确描述长期、复利、明确相关性的价值是个难点。...2、看不到比例 书籍出版数量和好书比例 成功人士和人口基数比例 3、无法承受不稳定性 4、没有方法在信息过载的现代做筛选 1个问题 统计100本书 筛选50本高评分书 筛选30本点评、听书...是人的意义所在,也是探索的意义,信息知道了信息熵就越来越低, 快速的、全面的、便捷的、深度的探索到信息的过程,可能就是答案本身。
如果单例Bean,是一个无状态Bean,也就是线程中的操作不会对Bean的成员执行「查询」以外的操作,那么这个单例Bean是线程安全的。...Spring中的Bean默认是单例模式的,框架并没有对bean进行多线程的封装处理。实际上大部分时间Bean是无状态的(比如Dao) 所以说在某种程度上来说Bean其实是安全的。...,是安全的。...小结 在 @Controller/@Service 等容器中,默认情况下,scope值是单例-singleton的,也是线程不安全的。...尽量不要在@Controller/@Service 等容器中定义静态变量,不论是单例(singleton)还是多实例(prototype)他都是线程不安全的。
之前写了文章介绍python中的列表和字典,在文章中描述到了python中的列表是有序的,字典是无序的,后来有粉丝在群里提醒我,说python3.6的版本之后,字典是有序的,因此,我找了一个低版本的...查看打印出来的key的顺序: Python3.6以下版本:(以3.4版本为例) 你该不会以为只有使用keys()函数是无序的吧: 从上图可以看出,分别在cmd窗口和pycharm中打印字典的key...并且pycharm中会显示,python3.4的版本在pycharm中已经不再支持了。...接下来再看下python3.6以上版本的效果:(以3.9版本为例) 从上图可以看出,在新的版本中,python针对key的存储已经变为有序,在遍历和打印的时候,会按照存储的顺序进行取值。...再补充一点:之前介绍到,在字典中,key是唯一的。这里并不是说写了不唯一的key就会报错,只是会用后面的key和value去覆盖前面的key和value。
聊聊Kotlin中的lambda 本质 kotlin中的lambda使用创建类和调用类实现。...其实java中是通过invokedynamic指令实现的,其本质是运行时进行替换对应的Lambda中的代码 好处 1.运行时替换,相比较Kotlin直接写死创建类的方式性能更好 2.在class文件中只有这个指令...原因很简单,Kotlin是基于java 6开发的,而java的这个优化是在java 7才出现的,所以为了兼容只能另辟蹊径。 虽然无法实现,但是我们可以借鉴java中的做法对吧?...也就是改变思路:之前我们是将表达式封装到一个类的方法中,具体调用lambda的时候调用这个类的方法 把它换成 我们直接把lambda中的方法体复制到调用方的方法体里面。...java是运行时替换,我们直接编译期间就替换了,一样的效果,而且kotlin把替换操作提前到编译期性能还会好一点 好了,说完上面的思路原理,我们再来看Kotlin该如何使用这种方法呢?
首先,在 Java 中 synchronized 是一个关键字,在Kotlin 中是一个函数。...可以看出:这里边也是有monitorenter和monitorexit的,所以做出推测,不管synchronized是java中的关键字还是kotlin中的函数,最终被编译成的字节码是一样的。...方法:在《深入理解Java虚拟机》同步指令一节中,关于方法级的同步描述如下: 方法级的同步是隐式的,即无需通过字节码指令来控制,它实现在方法调用和返回操作之中。...Java中每一个对象都可以作为锁,这是synchronized实现同步的基础: 普通同步方法,锁是当前实例对象 静态同步方法,锁是当前类的class对象 同步方法块,锁是括号里面的对象 在HotSpot...synchronized用的锁是存储在Java对象头的Mark Word中的。
Kotlin中的内联函数还是挺好玩的 为什么需要内联函数? lambda 表达式会被正常地编译成匿名类。这表示每调用一次 lambda表达式,一个额外的类就会被创建。...当一个函数被声明为 inline 时,它的函数体是内联的一一换句话说,函数体会被直接替换到函数被调用的地方,而不是被正常调用。...synchronized(lock) { println("do cus action--inline") } p rintln("执行 synchronized 之后") } 因为 synchronized 函数是内联的...中Int、Long、Double都继承自Number,但是,如果我们在调用上面的函数时,传入了Array,这样是会报错的!!...因为 kotlin中在调用函数时要求参数类名必须完全一致!! 对于上面的函数,如果我们想既可以接收 Array, 也可以接收Array, 那么就可以定义一个具体化类型参数的内联函数.
1.表达式函数体 通过下面这个简单的例子看下函数声明相关的概念,函数声明的关键字是fun,嗯,比JS的function还简单。 Kotlin中参数类型是放在变量:后面,函数返回类型也是。...但是上面的还是有点繁琐,还能再简单,在 Kotlin中if是表达式,也就是有返回值的,因此可以直接return,另外判断式中只有一行一句也可以省略掉大括号: fun max(a: Int, b: Int...如果不支持Lambda都不好意思称自己是一门现代语言,来看看Kotlin中的表演。...从编译器角度看,Lambda是一个代码块不是一个对象,不能把它当成对象引用。Lambda中的this引用指向的是包围它的类。 如果在Lambda中要用到常规意义上this呢?这个就需要带接收者的函数。...toString() } with返回的值是执行Lambda代码的结果,该结果是Lambda中的最后一个表达式的值。如果想返回的是接收者对象,而不是执行Lambda的结果,需要用apply函数。
团队开发中,需要一种工具来协调我们的工作。因为代码不是由一个人写的,而是团队成员,每一个人都有自己的工作。于是呢,每天都有代码提交到项目里面,每天开始写的时候,又把前一天的代码拿下来合并。...但是我们要项目新建立一个文件夹,每次下载插件,我们都放在整个文件夹中。最后问题来了,其实我们提交代码的时候,这个插件的代码不需要提交到项目代码里面去的。...因为有用的js,我们已经 复制到项目的js文件了, 于是项目中就要写一个 .gitignore文件,这个文件就是说,里面写几个路径,这个路径下的文件不会上传到代码库中。...在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改根目录中 .gitignore 文件的方法(如无,则需自己手工建立此文件)。这个文件每一行保存了一个匹配的规则例如: ?...,按照上述方法定义后发现并未生效,原因是.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。
领取专属 10元无门槛券
手把手带您无忧上云