本文中说到的“建”,并非单纯的建一个库,或是建一张表,而是你建好的库和表在项目的运营中,是否能应付各种事件,下面我说说几个我在项目中遇到的问题以及处理的方法,算是一个小小的心得,给大家分享下。...比如现在有2张表,一张新闻栏目表,一张新闻表,现在两张表需要进行关联,我想大多数人的做法肯定是在新闻表里建一个新闻栏目id,然后把新闻栏目表里的主键ID(自增)写到这个字段里,通过这样进行两表关联。 ...这样就会造成一种情况,如果那天对数据库进行优化,把主键进行了重新排序(暂时没有找到mysql优化软件会优化主键,但是可以通过代码删除主键,然后从新建立自增主键来实现主键重新排序),那就彻底杯具了,栏目和文章完全对不上号了...所以我建议两表之间关联不用主键,而是单独建一个编号的字段,我们这里可以用mysql的uuid()函数做为编号,相关文献可以参考《UUID做主键好还是不好》,只所以一张表要2个主键,一个物理主键(自增id...),一个逻辑主键(UUID),原因是:对于InnoDB这种聚集主键类型的引擎来说,数据会按照主键进行排序,由于UUID的无序性,InnoDB会产生巨大的IO压力,此时不适合使用UUID做物理主键,可以把它作为逻辑主键
1号知乎网友:Anlin 可以的! 你说的这个叫做NPI-GC*[1]。 不但有人用,而且是用在要求很高的军事软件上。 国外有个公司给导弹写的机载软件,被发现有内存泄漏+。...既然要两天才崩溃,那么我让系统服务连续运行不要超过一天,不就可以了? 真是天才一样的解决方案,我被自己高效的思维深深折服。...OOM是可以设置进程优先级的,就是oom\_adj,从-17到15,oom\_adj值越大越容易被杀死,在 oom\_adj 值相同时 , 内存占用量越大的进程 , 被杀的几率就越高。...如果不希望自己的进程被oom kill掉,可以将它设置为-17,方法: echo -17 > /proc//oom\_adj 如果您认为这篇文章有些帮助,还请不吝点下文章末尾的"点赞"和"在看
AI可以做智能投资吗? 这个问题应该说答案是肯定的——可以。关于使用计算机自动化做智能投资的研究一直没停过。这些年大家一直说的量化交易其实就是这样一个范畴的内容。那么AI做智能投资是怎么做呢?...相信稍微做过点股票或者外汇交易的读者朋友可能都能想到,可以通过建立一个简易的回归或者分类模型来训练一个预测模型。输入是K线图上的报价或者指标,输出是一个报价,或者一个“上升/下降”的分类。...这种方法可以吗?当然没问题,从机器学习的角度来说这么做一定是一种理论上可以尝试的路子。最近的不少工学论文也有不少在讨论关于股价预测的深度学习模型。 简化的方法有吗?也是有的,而且已经诞生很久了。...或者也有根据相关系数来做的阿尔法选股法,可以通过简单计算大盘指标和个股之间的相关性关系来决定在牛市中买入振幅较大的股票,或者在熊市中买入与大盘相关性较小的股票来获利。...不论以上的哪一种,都是可以通过统计学,不太复杂的机器学习,或者一些程序规则较为容易实现的。这些方法都非常可靠,跑赢CPI和银行利息是非常非常容易的。以后有机会会跟大家一一进行分享。
Node.js 采用了 V8 引擎,并且在其基础上增加了处理本地文件等功能。但在浏览器中,出于安全考虑,你是无法访问浏览器的文件系统的。所以你可以理解 Node 中的 V8 引擎是增强后的版本。...通过 Node.js,JavaScript 不仅仅可以写在浏览器端,我们可以在我们的电脑中直接执行 JavaScript,也是完成 web 服务应用的非常好的选择,这降低了我们成为全栈工程师的门槛。...Node.js 特点 异步I/O和事件驱动 在 Node.js 中,大部分的 I/O 操作都是异步,非阻塞的。也就是不需要等待该操作完成,就可以接着进行下一步的操作。...也就是说除了用户代码无法并行执行之外,所有的 I/O (磁盘I/O,网络 I/O 等)则是可以并行起来的。这也是 Node.js 能够处理高并发的重要原因。...在 Node.js 中,一个 8GB 内存的服务器,可以同时处理超过 4 万用户的连接。 单线程其实是有弊端的(后文适合场景中会指出)。 跨平台 起初,Node.js 只能在 Linux 平台上运行。
如一家建筑单位,工程项目负责人要查项目的收支情况用以决策是否收付款,过去,财务部门需要很长时间才能计算出各科目费用的余额,以此作为项目负责人的决策依据,现在只需要输入项目编码,就可以快速查看到各科目的数据
MySQL 表字段真的可以随便写么? 直接上答案: 肯定不能呀 我是怎么知道不能随便使用呢? 原因很简单,因为我使用了字段[system],上线报错了.又有人问为啥测试的时候没暴露出来呢?...因此在最初设计表结构的时候,字段长度一定要根据实际情况判断,如果不能确定字段具体长度,可以使用 text 类型,如果觉得 text类型比较耗费表容量,可以在保存字段信息的时候直接将字段长度截取后再保存.
但是生活中的很多「逼真的」假笑,无论是出于礼貌,或是害羞,亦或是尴尬,你能分辨出来么? ?...英国布拉德福德大学(University of Bradford)的研究人员近期开发出了一个面部分析软件,可以发现虚假的面部表情。...这也是一直以来公认的判断真笑和假笑的关键点:自发的、真实的微笑是可以在一个人眼中看到的。比如,真正的微笑,眼睛往往会半闭,眼角会有褶皱;而如果眼睛完全睁大,只有嘴角上扬,那很可能就是假笑。...但是,我们人类通常不会发现眼睛周围细微的移动,而软件则可以更加可靠地发现它。」...也可以用这个计算框架测一下…… 不过,虽然「假笑」让人觉得虚情假意,但是在 2012 年就有一项研究表示,假装微笑其实是一件好事。因为即使假笑,也能减轻压力,改善人的情绪。
今天被朋友问及“Linux下可以替换运行中的程序么?”,以前依稀记得Linux下是可以的(而Windows就不让),于是随口答道“OK”。...这也可以解释为什么cp的目标文件会继承被覆盖文件的属性而非源文件。...同理,mv只是改变了文件名,其inode不变,新文件使用了新的inode。 问题到这里已经水落石出,不过刨根究底的个性驱使我再做了以下一组实验,没想到结果完全出乎我意料之外!...接下来我把上面对执行文件的测试用例对动态库又做了一遍: (1)cp libtest2.so libtest.so可以直接覆盖已加载的动态库。...不过想想也可以宽恕,毕竟ld也是用户态程序,没有权利去锁定inode,也不应与内核的文件系统底层实现耦合。 到这里都还算在情理之中,看起来Linux也都处理的很好。
(Bug #27455809) 3结论 MySQL 5.7 使用单表删除语句时,不能使用别名,多表删除可以使用别名。 MySQL 8.0.16 开始单表多表都可以使用别名。
有朋友提出闪回可以恢复删除的列(包括数据),这个可行么?...可以在删除列的操作中增加UNUSED参数,即仅标记列为未使用,数据块保留原值,这就给数据恢复提供了可能, ALTER TABLE t_flash_01 SET unused COLUMN c2; 我们可以通过...增加Redo日志文件, begin dbms_logmnr.add_logfile(logfilename=>'/opt/oracle/oradata/BISALCDB/redo01.log', options...通过v$logmnr_contents,可以找到日志中存储的操作数据, SQL> select sql_redo, row_id, sql_undo, operation from v$logmnr_contents...where rowid = 'AAAR7ZAAMAAACqNAAC'; 以上都是为了进行测试说明的,相对比较简单,如果真实环境,可能更加混乱,因此还是需要谨慎对待删除操作,当然,如果数据库进行了备份,可以通过
同一Spark Core Job里的Stage可以并行,但是一般如果有依赖则是串行,可以参考我这篇文章Spark 多个Stage执行是串行执行的么?。...这里,我们把concurrentJobs设置为2,意味着TaskScheduler接受到了两个Job,然后setMaster[local(2)]表示只可以并发执行两个Task。...WX20170211-230145@2x.png 有点绕,如果大家迷惑,可以把代码贴在自己的IDE上运行一下,然后观察他们的交错时间。...batch完成 concurrentJobs > 1 如果scheduler mode 是FIFO则需要某个Job无法一直消耗掉所有资源 Mode是FAIR则尽力保证你的Job是并行运行的,毫无疑问是可以并行的...回到我们的标题,不同Batch的job有可能会同时在运行么,只要满足我前面提到的三个条件,就有可能。
因此,之前有大牛提出,不要在 JS 中使用位运算: Javascript 完全套用了 Java 的位运算符,包括按位与&、按位或|、按位异或^、按位非~、左移>和用0补足的右移>>>...但是在我看来,如果对 JS 的运用达到炉火纯青的地步,能避开各种“Feature”的话,偶尔用一下位运算符也无所谓,还能提升运算性能,毕竟直接操作的是计算机最熟悉的二进制。...位运算的原理可以参考这篇文章 《位运算符在JS中的妙用》 1....一些可以替代 undefined 的操作 ""._, 1.._ 和 0[0] ?...+[]]*~+[]] 如果以后有人喷你的代码,你就可以将此代码发给他。 ? 完 ❤️
bits/stdc++.h,包含了c++所有的头文件,因此被称作万能头文件。...typeindex> #include #include #include #endif 在CSP-J/S考试是可以使用万能头文件的...使用了万能头文件之后,就不再需要包含其他头文件了。 使用万能头文件,会把大量的不需要用到的头文件也包含进去,这样会增加编译时间。...也就是说,考试时既可以逐个包含需要用到的头文件,也可以一次性包含万能头文件。 但是,就平时练习来说,建议不要使用万能头文件。理由有三: 第一,万能头文件,也叫“懒人专用头文件”。...第二,万能头文件只存在于GCC编译器中,clang和MSVC编译器中并没有万能头文件。 第三,除了CSP-J/S外,有时候还有一些其他的考试。有些考试会明确规定不允许使用万能头文件。
简介 之前我们介绍了一个flutter的栈结构的layout组件叫做Stack,通过Stack我们可以将一些widget叠放在其他widget之上,从而可以实现图像的组合功能,也是日常中最常用的一种组件了...IndexedStack简介 从名字可以看出,IndexedStack是给Stack添加了一个index的功能,事实是否如此呢?...对于Stack来说,一个widget被放在另外一个widget之上,但是多个widget可以同时展示出来。而对于IndexedStack来说,它只会展示对应index的widget。...可以通过调用setState方法对index进行修改,从而实现动态切换child的目的。...总结 IndexWidget和tab有点类似,大家可以在需要的时候使用。 本文的例子:https://github.com/ddean2009/learn-flutter.git
搭建 Redis Cluster Redis Cluster 的搭建方式有两种,一种是使用 Redis 源码中提供的 create-cluster 工具快速的搭建 Redis 集群环境,另一种是配置文件的方式手动创建...我们测试完成之后,可以使用以下命令,关闭并清理集群: $ ....Cluster 由于 create-cluster 本身的限制,在实际生产环境中我们需要使用手动添加配置的方式搭建 Redis 集群,为此我们先要把 Redis 安装包复制到 node1 到 node6 文件中...① 设置配置文件 我们需要修改每个节点内的 redis.conf 文件,设置 cluster-enabled yes 表示开启集群模式,并且修改各自的端口,我们继续使用 30001 到 30006,通过...复制代码 从以上结果可以看出 30008 节点也被设置成了主节点。
第一反应就是JS引擎将代码生成语法树的时候,可能解析不正确。于是,我在第一行末尾加分号测试。...如果你不想用分号,又怕出问题,v2ex上有位童鞋给出了一个速记方案: 如果你写 JS 代码不喜欢带分号,而又搞不清什么时候必须加分号,可以这么做:在以 "("、"[" 、"/"、"+"、"-" 开头的语句前面都加上一个分号...我最终的解法是先声明一个变量来指向这个数组,这样就可以避免以[开头,又不使用分号: let indexArray = [1, 2, 3] indexArray.map(i=>console.log(i)...) 关于Fundebug Fundebug专注于JavaScript、微信小程序、微信小游戏、支付宝小程序、React Native、Node.js和Java实时BUG监控。...版权声明 转载时请注明作者 Fundebug以及本文地址: https://blog.fundebug.com/2018/09/18/js-semicolon-bug/
现在这个电商网站的结构变成了下面这样, (缩略图,请谅解) 接下来的日子开始node以及其它方面的内容,这时有个同学提出, “当然可以”。...你可以认为这个词是生造出来的。 所以关于它的绝大部分解释,都比较生硬难懂。...; } 闭包的特性: 1,函数内部可以读取全局变量; 2,函数外部不能读取函数内部的变量; 这其实就是变量作用域。...// 函数内部可以读取全局变量; var a1 = 999; function aa(){ console.log( a1 ) } aa(); // 函数外部不能读取函数内部定义的变量 function
1.前言 上次聊过了Java源码经过编译器的一系列转换最终生成标准的Class文件的过程,我们用一张图来简单地回顾一下: Java为了实现“一次编写,到处运行”的跨平台特性,选取了Class文件这一中间格式来保证代码能在不同平台运行...Class文件中记录了源代码中类的字段、方法指令等重要信息。 Class文件可以在不同平台上的不同JVM中运行,它们最终生成的机器指令可能也是有差别的,但是,最终执行的结果一定要保证各平台一致。...我们今天要聊的就是源代码和JVM中间的这一座桥梁——Class文件。 还有一件事,记得我们在《JAVA代码编译流程是怎样的?》一文的最后提到的 字节码与Class文件的关系 吗?...在本文中,需要再次强调,字节码只是Class文件中众多组成部分的其中之一。...2.如何阅读Class文件 在上面这个例子1中,访问标记就是00 21:
从上述trace文件里我们可以看到: 也就是说这里的Blocker是session 362,Waiter也是session 362,典型的自己锁死了自己。