给PB新手用户的一点小建议,PbootCMS网站内容管理系统默认的数据库是Sqlite。 这个数据库的优点是轻量,跟access一样。无脑用就可以了。非常的适合新手,因为几乎没有学习成本。 如果你是搞采集的,或者会批量发文章,奔着数以万计的数据量来的话, 我建议你一开始就是用mysql数据库。 虽然会比sqlite多一点点学习成本,但是仍然建议你学习一下简单的导入、导出数据库操作。 反之如果你使用的Sqlite数据库的话,如果遇到服务器突然的宕机。 你可能会遇到:The database disk image is malformed; 当数据量大了,数据库更新记录的时候,你可能会遇到:The database disk image is malformed
我的经验告诉我,很多数据库(大多数我曾经使用的)不包含外键时并不总是一件坏事。在这篇文章中,我想把重点放在为什么的原因上。 为什么这是一个问题? 这仅仅是我在各种渠道(主要是互联网论坛)都能找到的许多开发人员、架构师为什么不使用它们的理由。 我个人(和许多其他经验丰富的数据库专家)建议在任何可能的地方使用它们(不会导致更多的问题)。 4.更高层次的框架 一些应用程序使用编程框架,在物理数据库之上创建另一个逻辑层。开发人员不使用插入或更新语句来修改数据,而使用API或者框架在后台执行所有操作。 这些工具负责参照完整性,并与RDBMS一起创建更高级别的数据库引擎。这些框架可以自己创建数据库表,而不总是创建外键。使用这些工具的开发人员很少会干扰自动生成的模式,并且不需要外键。 一些架构师和数据库管理员只是忽略了这一部分。 9.保持模型的秘密 也许这是一个很遥远的问题,但也许有时候是因为人们不希望别人知道太多太容易。一般来说,人们希望被需要和不可替代。
腾讯云图是一站式数据可视化展示平台,旨在帮助用户快速通过可视化图表展示大量数据,低门槛快速打造出专业大屏数据展示。新用户0.99元起,轻松搞定数据可视化
让我们来看看数据库可以没有外键的原因。首先一个简短的免责声明(因为文章引发了一些关于LinkedIn群体的争议): 下面的理由绝不鼓励不要在数据库中使用外键约束。 这仅仅是我在各种渠道(主要是互联网论坛)都能找到的许多开发人员、架构师为什么不使用它们的理由。我个人(和许多其他经验丰富的数据库专家)建议在任何可能的地方使用它们(不会导致更多的问题)。 4.更高层次的框架 一些应用程序使用编程框架,在物理数据库之上创建另一个逻辑层。开发人员不使用插入或更新语句来修改数据,而使用API或者框架在后台执行所有操作。 这些工具负责参照完整性,并与RDBMS一起创建更高级别的数据库引擎。这些框架可以自己创建数据库表,而不总是创建外键。使用这些工具的开发人员很少会干扰自动生成的模式,并且不需要外键。 一些架构师和数据库管理员只是忽略了这一部分。 9.保持模型的秘密 也许这是一个很遥远的问题,但也许有时候是因为人们不希望别人知道太多太容易。一般来说,人们希望被需要和不可替代。
来源:www.jdon.com/49188 我的经验告诉我,很多数据库(大多数我曾经使用的)不包含外键时并不总是一件坏事。在这篇文章中,我想把重点放在为什么的原因上。 为什么这是一个问题? 这仅仅是我在各种渠道(主要是互联网论坛)都能找到的许多开发人员、架构师为什么不使用它们的理由。我个人(和许多其他经验丰富的数据库专家)建议在任何可能的地方使用它们(不会导致更多的问题)。 4.更高层次的框架 一些应用程序使用编程框架,在物理数据库之上创建另一个逻辑层。开发人员不使用插入或更新语句来修改数据,而使用API或者框架在后台执行所有操作。 这些工具负责参照完整性,并与RDBMS一起创建更高级别的数据库引擎。这些框架可以自己创建数据库表,而不总是创建外键。使用这些工具的开发人员很少会干扰自动生成的模式,并且不需要外键。 一些架构师和数据库管理员只是忽略了这一部分。 9.保持模型的秘密 也许这是一个很遥远的问题,但也许有时候是因为人们不希望别人知道太多太容易。一般来说,人们希望被需要和不可替代。
需要等消费者确认或者指明了不确认才能使用这个命令,而不能直接使用 #! message.properties['timestamp'].isoformat()) # print("Body:%s" % message.body) message.ack() #不确认的话
适合直接升级使用吗?今天的文章就将通过我的真实使用体验,来认识jupyter lab 3.0。 2 jupyter lab 3.0使用体验 为了不干扰现有的环境,我们通过以下代码创建新的环境,并安装最新稳定版本的jupyter lab: conda create -n temp python=3.7 用于记录每个cell执行耗时等信息的jupyterlab-execute-time: 图6 以及keplergl-jupyter: 图7 因此如果你有很多心爱的常用的插件仍未做好新版本兼容的工作,那么继续使用 jupyterlab-language-pack-zh-CN来下载中文汉化包来试试: 图8 咦,居然找不到这个库,原来官方至今(2020-01-09)还未在pypi发布所谓的中文翻译包,但这不代表我们无法使用它 式的debugger: conda install xeus-python=0.8.6 -c conda-forge -y 图11 或是自带的目录功能,其实都不是新东西,只不过现在你无须安装就可以使用
适合直接升级使用吗?今天的文章就将通过我的真实使用体验,来认识jupyter lab 3.0。 : pip install "jupyterlab-kite>=2.0.2" 使用起来也是非常稳定: ? 图7 因此如果你有很多心爱的常用的插件仍未做好新版本兼容的工作,那么继续使用2.X版本观望,才是现阶段更好的选择。 图9 点击切换之后,哇哦,真的可以使用官方中文了耶! ? 图10 相信之后可在线安装的官方正式版本会很快发布,如果心急的朋友想要尝鲜,也可以像我这样进行配置。 图11 或是自带的目录功能,其实都不是新东西,只不过现在你无须安装就可以使用,而新增加的simple模式等特性,吸引力都不是特别大: ?
有的SQL规约是这么说的: 【强制】不得使用外键与级联,一切外键概念必须在应用层解决。 用外键不好么,不太好,但也注意,不是不可以,是不建议。 那么这里的不建议,其实也有两说的。 1、如果你为了追求正确性优先于性能的话,可以使用。 那么外键为什么有性能问题呢 1、数据库需要额外的维护外键自身的内部管理; 2、外键相当于把数据的一致性事务的实现,全部交给了数据库服务器来完成; 3、有了外键以后,当做一些涉及到外键字段的增,删,改操作时 ,需要触发相关操作去检查,而不得不消耗资源; 4、每次更新数据,都需要额外的检查另外一张表的数据,容易造成死锁; 总结: 1、互联网行业场景中不推荐使用外键,用户量大,并发度高,如果使用外键,数据库服务器很容易产生性能瓶颈 2、传统行业可以使用,强调数据强一致性,而且用户数量有限,可控。 基于此,互联网场景中都是不建议使用外键的,外键与级联更新适用于单机低并发,不适合分布式、高并发集群。
03 潜在影响 可能你会想,如果主库此时利用replace操作插入一个不冲突的新的数据记录,这个从库的自增值不就又同步了么。似乎对整个架构没什么影响??? 这个想法是不对的。 4 | aaa | 4 | +----+------+------+ 3 rows in set (0.13 sec) 但是新主库的auto_increment值是4,意味着新主库上下一个不指定自增
PHPickerConfiguration,进行配置,再传给 PHPickerViewController,完成调用环节,代码如下: var config = PHPickerConfiguration() // 可选择的资源数量,0表示不设限制 可选择的资源类型 // 只显示图片(注:images 包含 livePhotos) config.filter = .images // 显示 Live Photos 和视频(注:livePhotos 不包含 case savedPhotosAlbum = 2 }复制代码 另外 AssetsLibrary 早在几年前被废弃,如果还在使用 AssetsLibrary 请尽快使用新的 API。 PHPicker 的缺点 为什么不推荐使用 PHPicker,虽然说 PHPicker 有一些优点,但同时也有一些缺点: 加载 iCloud 资源时没有进度回调 不支持图片编辑(比如选择头像要将图片裁剪成正方形 总结 新出的 PHPicker 个人觉得一般,如果对 Picker 要求不多的朋友可以考虑使用。
使用 Hoxton.RC1 版本需要配置 spring 仓库 <repository> <id>spring-milestones</id> <name>Spring Milestones</name snapshots> <enabled>false</enabled> </snapshots> </repository> spring boot admin 未发布 2.2.0 适配版本 解决方法: 使用快照版本 enabled>false</enabled> </releases> </repository> 升级中遇到的问题 spring boot 2.2.0 bug ,造成 和mybatis 3.5.2 不兼容 总结 由于使用的 Spring Cloud RC 版本未同步到 阿里云等国内镜像厂库 mvn clean install 可能会出现失败,建议重复执行几次即可 ---- 鉴于Spring Boot 2.2.0 和 mybatis 的不兼容问题,2.2.1 会修复这个问题,建议暂时不要升级2.2.0 直接使用 2.2.1 2.2.1 已经发布,请直接升级到2.2.1 即可解决兼容问题 (2019年11月07
在使用过程中,笔者感觉Lambda并非万能良方,有其设计和功能上的限制,所以根据项目的使用情况和体验,梳理了Lambda适合和不适合的场景,分享给大家,供大家在技术选型时进行参考。 在大型项目中不同模块请务必使用不同的帐号,以隔离对并发的需求,避免单模块workload的波动影响到整个系统的稳定性。 使用异步模式时可以设置重试次数,并且如果重试后仍然不能成功,可以通过设置将失败的请求发送到另外的地方,比如SNS的Topic。 从价格方面来考虑,Lambda使用的是基于调用次数计费的模型,当调用次数增长到一定的阈值以上,其成本有效性必定会低于基于使用资源时长计费的模型。 感兴趣的读者可以使用AWS Pricing Calculator自行计算。
我们大家可能都碰到过这种情况:在Linux下,MySQL的表名区分大小写,而在Windows下是不区分,从Windows下导出的数据脚本中使用的是小写,而Hibernate生成的SQL中表名是大写的,所以查不出数据 这个时候怎么办呢,显然改程序是不行的,时间上也不允许,所以只能设置MySQL数据库不区分大小写了,大家看以下步骤: 1、查询MySQL是否设置了区分大小写 show variables like "%case 其中lower_case_table_names代表了:0是区分大小写; 1是不区分大小写。显然我这个MySQL是区分大小写的。 已经不区分大小写了: ? 拓展知识 MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的: 1、数据库名与表名是严格区分大小写的; 2、表的别名是严格区分大小写的; 3、列名与列的别名在所有的情况下均是忽略大小写的
对于 mysql,不推荐使用子查询和 join 是因为本身 join 的效率就是硬伤,一旦数据量很大效率就很难保证,强烈推荐分别根据索引 单表取数据,然后在程序里面做 join,merge 数据。 数据库是最底层的,瓶颈往往是数据库。建议数据库只是作为数据 store 的工具,而不要添加业务上去。 让缓存的效率更高。许多应用程序可以方便地缓存单表查询对应的结果对象。 在应用层做关联,可以更容易对数据库进行拆分,更容易做到高性能和可扩展。 查询本身效率也可能会有所提升。 更进一步,这样做相当于在应用中实现了哈希关联,而不是使用 MySQL 的嵌套循环关联。某些场景哈希关联的效率要高很多。 这种时候是不建议跨库 join 的。目前 mysql 的分布式中间件,跨库 join 表现不良。 3.
源码精品专栏 原创 | Java 2021 超神之路,很肝~ 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 RocketMQ 源码解析 数据库中间件 五、查询使用问题 1、线上Redis禁止使用Keys正则匹配操作 六、其他 1、redis同步工具 2、大key查询 ---- 在公司项目中,redis属于高频使用,在使用中,我们遇到了各种各样的redis 3.合理评估业务场景,并设置最大内存以及内存淘汰策略(maxmemory和maxmemory-policy) 目前我们用的阿里云redis,不太存在这个问题 4.使用带有连接池的数据库,可以有效控制连接 3、注意key的过期时间设置 在报名等高峰期的时候,key值设置过短容易造成缓存穿透,导致大量请求直接打到mysql数据库。 4、小心缓存穿透 经常使用会只给有数据的结果进行缓存,结果导致空数据无法缓存,相同查询直接每次都到达数据库,所以空值也应该被缓存。
最近项目中遇到的存储过程问题,让我想起了去年在武汉出差时一位同事的发问: 我觉得存储过程挺好用的,为什么你不建议用? 所以我应将是否有无Job,Certification,Disclosure的判断逻辑写在数据库,最终通过网络从数据库传到web服务器的仅是true或false,节省网络流量,这样最好不过了。 也对。 为了实现这一目的,首先想到的是使用临时表,将返回结果集存入临时表,再对其进行count(*)的计数操作: CREATE PROCEDURE [dbo]. 但对于业务逻辑的通用方法,非常不推荐将其写在存储过程中,代码复用、扩展与客户端语言比,相差甚远。也许终究能实现,但代价与风险比客户端语言要高,得不偿失。
现在老师上课基本上不怎么讲goto语句,很多文章也提到不建议使用,那到底是为什么呢? 首先,可以证明,任何一个程序都可以使用三种基本的结构来构成,goto语句是多余的。 有,合理恰当使用goto可以优化程序设计,提高可读性。 任何一个结构化程序在编译以后都是需要用机器语言中的直接转移指令语句(同goto完全是一回事)来实现其结构的。 滥用goto是会破坏程序的可读性,但合理地使用goto语句,除了能提高程序的效率外,还是有可能增加程序的可读性的。 总的来说,对于初学者,还是应该尽量避免。
也许是因为这个原因,他们往往被过度使用,实际上被误用了。在本文中,我们将使用一些模式和反模式的示例来说明何时使用抽象方法,何时不使用。 抽象类可以 - 通常也可以 - 定义一个或多个抽象方法,这些抽象方法本身不包含主体。相反,需要具体的子类来实现抽象方法。 由于他们使用MVC框架,他们在UserController 类中使用端点方法支持他们的第一个面向用户的网页 。 ? 开发人员创建第二个网页,因此将新端点添加到控制器。 我们也可以使用与字符串操作相关的方法创建一个类,另一个使用与我们的应用程序当前经过身份验证的用户相关的方法等。 另请注意,此方法也非常适合组合而不是继承的原则。 继承和抽象类是一个强大的构造。 但是,它能帮助我快速判断使用特定的设计是否是朝着正确的方向发展。 事实证明,在考虑使用抽象类时,有一个很好的经验法则。
在公司项目中,Redis 属于高频使用,在使用中,我们遇到了各种各样的Redis 问题,于是针对自身情况梳理了一个redis使用规范。 一、键名设计 1、key名设计 1. '则内部使用raw类型。 3.合理评估业务场景,并设置最大内存以及内存淘汰策略(maxmemory和maxmemory-policy) 目前我们用的阿里云redis,不太存在这个问题 4.使用带有连接池的数据库,可以有效控制连接 3、注意key的过期时间设置 在报名等高峰期的时候,key值设置过短容易造成缓存穿透,导致大量请求直接打到mysql数据库。 4、小心缓存穿透 经常使用会只给有数据的结果进行缓存,结果导致空数据无法缓存,相同查询直接每次都到达数据库,所以空值也应该被缓存。
假设不使用join,那就只能用单表查询: select * from t1 查出t1所有数据,这里有100行。 小结 使用join语句,性能比强行拆成多个单表执行SQL语句的性能要好 如果使用join语句的话,需要让小表做驱动表。 这些结论的前提是“可以使用被驱动表的索引”。 若被驱动表用不上索引呢? 当然,MySQL也没有使用这个Simple Nested-Loop Join算法,而使用“Block Nested-Loop Join”算法,BNL。 综上: 能不能使用join 若使用INL,当可以用被驱动表的索引,是没问题的。 若使用BNL,扫描行数就会过多。尤其是在大表上的join,这样可能要扫描被驱动表很多次,会占用大量的系统资源。 所以判断要不要使用join,就是看explain结果里面,Extra字段里面有没有出现“Block Nested Loop”。 若使用join,大表or 小表做驱动表?
数据库管理是一个高效,安全,可靠的数据库一站式管理平台,为用户提供库表级操作、实时监控、实例会话管理、SQL 窗口、数据管理为一体的数
扫码关注腾讯云开发者
领取腾讯云代金券