而容器中也是由init进程直接或间接创建了Namespace中的其他进程。 linux信号 而为什么不能在容器中kill 1号进程呢?进程在收到信号后,就会去做相应的处理。...运行命令 kill -9 1 里的参数“-9”,就是指发送编号为 9 的这个 SIGKILL 信号给 1 号进程。 为什么在容器中不能kill 1号进程? 对于不同的程序,结果是不同的。...在 Linux 中,kill 命令调用了 kill() 系统调用(内核的调用接口)而进入到了内核函数 sys_kill()。...如果信号被忽略了,那么 init 进程就不能收到指令了。 想要知道 init 进程为什么收到或者收不到信号,就要去看 sig_task_ignored()的实现。...0000000000004000 [root@043f4f717cb5 /]# kill 1 # docker ps CONTAINER ID IMAGE COMMAND CREATED 重点总结 “为什么我在容器中不能
写在前面在前端中,主要涉及的基本上就是 DOM的相关操作 和 JS,我们都知道 DOM 操作是比较耗时的,那么在我们写前端相关代码的时候,如何减少不必要的 DOM 操作便成了前端优化的重要内容。...虚拟DOM(virtual DOM)在 jQuery 时代,基本上所有的 DOM 相关的操作都是由我们自己编写(当然博主是没有写过 jQuery 滴,可能因为博主太年轻了吧,错过了 jQuery 大法的时代...DOM 更新操作Vue 源码中的 diff 算法patch.js 路径Vue 中的 diff 算法相关代码主要在 patch.js 文件中,路径如下图图片patch 函数图片1、如果新节点不存在(vnode...,如果定义的属性非常多的话,触发更新将会导致非常大的性能损耗,因此,在使用 v-for 的时候,建议使用类似 id 这种唯一标识的字段替代 index,避免不必要的性能损耗!...,体会到了前端对于性能的极致追求,通过通读 vdom 源码,基本能够从更加深刻的角度去理解采用 VDOM 的目的,以及 key 值在 diff 算法中的真正作用,也能够从更加底层的角度理解为什么不推荐使用
大家好,又见面了,我是你们的朋友全栈君。...很好实现 …… 就继续在这里记录一下 Scanner 的坑吧 一、next & nextLine 区别next不能得到带有空格的字符串 一定要读到有效字符后才可以结束,结束条件是碰到空格、tab 键、...输入 2: 2 abc cba efg gfe 结果 2: str[0] = “abc” str[1] = “cba” 原因:next() 方法在遇到有效字符前所遇到的空格、tab 键、enter 键都不能当作结束符...回车符 “\r” 它被丢弃在缓冲区中,现在缓冲区中,只有一个 \r ,于是 下一次 nextLine 扫描的时候就又扫描到了 \r,返回它之前的内容,也是啥都没有 “” ,然后再把 \r 去掉, 对于...这个扫描器在扫描过程中判断停止的依据就是“结束符”,空格,回车,tab 都算做是结束符 而坑点在于 next 系列的,也就是下面这些函数:next nextInt nextDouble nextFloat
Iterator 支持从源集合中安全地删除对象,只需在 Iterator 上调用remove()即可。...有些集合不允许在迭代时删除或添加元素,但是调用 Iterator 的remove() 方法是个安全的做法。 那么为什么用Iterator删除时是安全的的呢?...在他的remove函数中可以看到下面的一句话,首先其实还是调用了ArrayList的remove函数 ArrayList.this.remove(lastRet) 但是在调用完该函数后,他又进行了如下操作...Iterator 是工作在一个独立的线程中,并且拥有一个 mutex 锁。...所以 Iterator 在工作的时候是不允许被迭代的对象被改变的。
多写就没什么好说了,没有写过几十万行代码是不能算熟悉一门语言的。...多思考和讨论这个需要个人主动一些,遇到问题喜欢多问为什么,在多次重构和思考的过程中,我们就会慢慢积累出一类问题的 “最佳实践” 方式,成为自己宝贵的经验。 ...在我看来,任何一件事情,如果你做到了热爱它,把它当作乐趣,那么在同行中做到出类拔萃应该是理所当然的。如果不热爱,我感觉做到会比较难。 ...多写就没什么好说了,没有写过几十万行代码是不能算熟悉一门语言的。...多思考和讨论这个需要个人主动一些,遇到问题喜欢多问为什么,在多次重构和思考的过程中,我们就会慢慢积累出一类问题的 “最佳实践” 方式,成为自己宝贵的经验。
如果在条件中的字段和变量类型不一致,数据库会按照低精度向高精度的顺序进行隐式转换,转换的过程就会消耗资源,例如CPU,但是更关键的是如果隐式转换的字段是索引列,就会导致因使用了函数而不能用到索引,该使用索引扫描的执行计划就变成了全表扫描...,强制转换为nvarchar,“SeekPlan”的执行计划,我理解就是Oracle中的Index Unique Scan或Index Range Scan,而且当前确实选择了全表扫描,Table Scan...的隐式转换,是黄色的,意思是Causes Scan,即忽略索引, (2) Latin_General_CI_AS排序规则, varchar到nvarchar的隐式转换,是绿色的,允许用Seek, 因此在...SQL Server中,不同的排序规则,隐式转换的影响可能是不同的,有的会影响索引的选择,有的就无影响,我不知道SQL Server为什么这么多排序规则,我也不知道有没有官方文档列出哪些排序规则对隐式转换是敏感的...退而求其次,如果不能做到规范的设计和开发,至少在开发测试的阶段,或者通过工具,或者通过人肉,检索下当前系统中用了全表扫描的语句,再根据字段是否存在索引,判断是否因为书写不当造成了隐式转换。
我在使用 Python 之前,做数据分析工作的流程,一般是先打开数据库客户端,然后运行一段写好的 SQL 语句,把数据查询出来,然后再把数据复制到 Excel 中并制作报表。...在使用 Python 之后,这些工作都可以变成自动化,从而让我有更多的时间,去思考和解决业务相关的问题,而不是陷入重复使用工具的手动操作。...只有理解了事物的本质和精髓,才能做到游刃有余。要想真正做好一件事,其实离不开长期的刻意练习。 我写的很多文章,在介绍「术」的同时,也希望能够传达「道」的理念,也就是把工具和思维相结合。...我们可以用一个函数,实现自动转换为 NVARCHAR 类型: from sqlalchemy.types import NVARCHAR, Float, Integer # 映射数据中的列与数据类型,...如果我们把新的技术工具,与数据分析的思维相结合,应用于实际工作中,洞察事物的本质,那么就能更好地完成自己的工作,从而创造更大的价值。
有了参数化的SQL语句(insert into)还有存储过程的参数,那么下面就好办了。我们可以交给SQLHelp、DbHelp、自己写的Help或者直接写SqlCommand。总之怎么做都可以了。...用我的数据访问函数库也可以。 这个可以扩展一下,不仅是新闻表可以使用,其他的表也是可以使用的,只要设置不同的XML文件就可以了。...类的属性(表的字段)不能独立存在,也不能被拆分; 而另类ORM是类和字段的对应。类的属性是对字段的描述信息,类——也就是字段——是可以随意组合的。就是说是可以以字段为最小单位进行灵活组合。...3、字段变化了也不用修改代码(不仅是数据层的,UI层也是不用修改的,如果业务逻辑简单,那么逻辑层也是不用修改的,只有在很复杂的业务逻辑的情况下,才有可能需要就改逻辑层,不过这个修改的原因不是因为字段变化了...这个是针对三层的最大的缺点来优化的!效果很好。 3、文件、代码减少了之后会带来很多的方便。比如编译时间,一、两秒就可以完成。备份文件的时间也大大减少。要写的代码少了,工作量自然也就减少了。
在《实现存储过程的自动映射》中,我通过基于T4的代码生成实现了CUD存储过程的自动映射。由于映射的都是基于数据表结构的标准的存储过程,所以它们适合概念模型和存储模型结构相同的场景。...如果两种模型存在差异,在进行数据更新操作的时候就会出错。本篇文章主要介绍当概念模型中具有继承关系的两个实体映射到数据库关联的两个表,如何使用存储过程。...由于销售人员也是公司的员工,它属于是员工类型的子类。所以你需要建立它们之间的继承关系。由于具有继承关系的两个实体不能有重复的属性,属于你需要删除掉T_SALES的EMP_ID属性。...理解起来也容易,Sales也是Employee,所以Employees属性表述的ObjectSet可以同时包括普通的Employee和Sales。 最后我们在一个控制台应用中编写如下一段代码。...而该存储过程仅仅是为T_SALES数据表中插入数据,但是此时主表T_EMP没有相应的记录,违反外键约束。在进行数据的修改和删除时,也有相同的问题。
我写的只是参考,大家可以自由发挥: 上面的代码中我是以写入...下面就可以进行简单地使用了。首先需要在。...WebHost.CreateDefaultBuilder(args) .UseNLog() .UseStartup(); } 下面就可以在代码中愉快的玩耍了...这里大家可能会问,为什么没有Debug信息输出呢,这是因为我们上面NLog配置设置的记录日志的最低级别为Info.所以比Info级别小的Debug信息不会记录。
数据库的索引类似于书籍的索引。在书籍中,索引允许用户不必翻阅完整个书就能迅速地找到所需要的信息。在数据库中,索引也允许数据库程序迅速地找到表中的数据,而不必扫描整个数据库。...;当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度; (11)在BORROW表上建立一个触发器,完成如下功能: -- 如果读者借阅的书名是"数据库技术及应用...系统在内存中创建这两张表,不会存储在数据库中。而且两张表的都是只读的,只能读取数据而不能修改数据。这两张表的结果总是与被改触发器应用的表的结构相同。当触发器完成工作后,这两张表就会被删除。...PS:关于(View)视图,你必须了解的东东 (1)视图是从一个或几个基本表中根据用户需要而做成的一个虚表:①视图是虚表,它在存储时只存储视图的定义,而没有存储对应的数据;②视图只在刚刚打开的一瞬间,...总体来说,Part 2本篇的题目难度没有Part 1的高,比较适合总结锻炼。最后,感谢Cat Qi总结的文章,让我可以从中实践并得到一点提高。
在之前一篇介绍CDC的文章中,我说Audit Trail(或者Audit Log)是大部分企业级应用不可以或缺的功能。...这样的工作我们完全实现在SQL Server中。...由于每个数据表都具有了一个TransactionId字段,那么在进行数据提交的时候,需要将当前事务的ID为之赋值,这就是为什么我推荐采用上下文的方式来获取当前TransactionId的原因。...CDC仅仅会将基于某个表的数据改变记录到基于该表的CT表中,最终我们需要将这些CT表中的数据转存到我们指定的AuditLogData表中,这个工作可以通过SQLJob来实现。...右图揭示了AuditLog详细信息是如何一步步地被记录的。 七、代码生成的应用 在这个解决方案中,我们需要一个不可或缺的东西:代码生成器。
如果存储多字节的字符串(比如包含中文)使用nchar、nvarchar,兼容更多的编码。双字节比单字节对应的多了一个n。 单字节双字节中还有一个区别var,表示可变大小字符串数据。...为什么要看数据库排序规则,第1点中可见“数据类型仅会存储该排序规则的相应代码页支持的字符子集”。...最后就是在参数前加N执行 ? 这下结果就正常了。细心的你是否发发现v1字段还是乱码,因为我为了测试varchar单字节,即使我加了N一样的是乱码。...也就是它只会存储我当前数据库的GBK编码。 最后我还在python里面插入的sql语句加了N,同样可以插入成功。 ? 关于加N的解释,微软t-sql文档关于insert说明:链接 ?...平时设计的时候如果是带中文的字段首先考虑带n的char类型。同时在直接使用sql进行insert、update的时候注意在要保存为Unicode编码字符串前面加N。
SQLSERVER在很多场景下需要自建函数来满足工作需求,本文就自建一个常用的字符串分割函数。...需求说明 将字符串按照指定的分隔符进行分割,并将结果按照从后往前的顺序倒序排列,拼接后的结果用‘/’符连接。...into tmp select 1,'组长,班长,校长,委员长'; insert into tmp select 2 ,'连长,营长,师长,军长,司令'; insert into tmp...[f_split] ( @str NVARCHAR(500), @delimiter NVARCHAR(20) )RETURNS @table2 TABLE(val NVARCHAR(500)) AS...SQL SERVER 2016中新增了STRING_SPLIT 函数,也建议大家了解一下 还有一个偏门的PARSENAME函数也可以实现拆分,但是有局限性(是啥,自己测,哈哈) 如需获取该函数的每步说明可以联系我获取哦
大家好,又见面了,我是你们的朋友全栈君。...注意: 1.sp_executesql要求动态Sql和动态Sql参数列表必须是Nvarchar,比如上个例子的@sql,N’@count int out,@id varchar(20)’我记得在sql2005...中Varchar也可以的,但是我打了Sp3补丁后就不行了,必须为Nvarchar 2.动态Sql的参数列表与外部提供值的参数列表顺序必需一致,如: N’@count int out,@id varchar...在 64 位服务器中,字符串大小限制为 2 GB,即 nvarchar(max) 的最大大小。...该执行计划独立于名为 sp_executesql 的批处理的执行计划。sp_executesql 批处理不能引用调用 sp_executesql 的批处理中声明的变量。
在任何的数据库系统中,大部分都会有一个需求,数据归档,业务数据库不应该是永无止境的进行数据存取的目的地。业务数据库主要的功能是满足业务的保留数据的需求,以及相关保证性能等目的。..., 3 每次归档的时间段,例如一个月一归档,还是一年做一次归档,如果数据量大的情况下,自动化的数据归档是比较省心省力的 4 一些意外情况,例如写好的归档程序,运行良好,但某天开始不能进行归档,首先要考虑是不是原表的结构有变动...,例如增加了字段,或者字段的类型可能有变化 5 数据的归档,采用的方式也很多,例如可以通过传统的数据备份的方式进行数据的归档,通过实践条件,将需要备份的数据导出,在将其删除,也可以通过数据EXPORT...,而发现查的非常慢,或者根本就查不到的问题 7 数据的归档中,也可能产生各种错误,而怎么将这些情况如实的反应到归档系统中,则是必须的工作。...3 任何程序或者脚本都不可能不出错,而记录错误,终止程序则是必须的设置 以上的存储过程在第三点上还不完善,还需要进行改善。
大家好,又见面了,我是你们的朋友全栈君。...临时表在不同数据库设计中的作用 SQLSERVER 存储过程 语法 ==================================================================...限制颇多,包括 不能使用output参数; 不能用临时表; 函数内部的操作不能影响到外部环境; 不能通过select返回结果集; 不能update,delete,...注* 在使用过程中只需要把T-Sql中的SQL语句替换为存储过程名,就可以了很方便吧!...查询分析器中执行该存储过程的方法是: declare @total_price int exec insert_bank ‘004’,’Zhangsan’,’男’,100,@total_price
大家好,又见面了,我是你们的朋友全栈君。 在SQL Server的性能调优中,有一个不可比面的问题:那就是如何在一段需要长时间的代码或被频繁调用的代码中处理临时数据集?表变量和临时表是两种选择。...我们前面说过临时表存储在tempdb中,因此临时表的访问是有可能造成物理IO的,当然在修改时也需要生成日志来确保一致性,同时锁机制也是不可缺少的。...临时表结论 综上所述,大家会发现临时表和表变量在底层处理机制上是有很多差别的。 简单地总结,我们对于较小的临时计算用数据集推荐使用表变量。....全局临时表(Global temp table)以##前缀来进行标识,并且可以和其它连接所共享.局部临时表局部临时表不能够被其它连接所共享的原因其实是在SQL Server 2000中自动为局部临时表的表名后面加上了一个唯一字符来标识...](50) ,[LastName] [nvarchar](50) ) —insert data to @DimCustomer_test INSERT @DimCustomer_test
大家好,又见面了,我是你们的朋友全栈君。 exec 与 exec sp_executesql 都可以用于执行动态sql。...'' and PersonType= ''' + @PeronType + '''') -- sp_executesql 不能接收含有变量拼接的sql字符串。...=''' + @FName2 + ''' and PersonType= ''' + @PeronType + '''' 这种情况下,需要先将sql拼凑后的结果放入一个变量中,然后使用 exec..., 动态Sql的参数列表与外部提供值的参数列表顺序必需一致,且不能使用变量。...4. exec 查询不能使用sql外面定义的变量,查询的结果也不容易进行使用。而exec sp_executesql 可以使用入参和出参的方式很方便的获取或者返回内容。
领取专属 10元无门槛券
手把手带您无忧上云