首页 文章 精选 留言 我的

精选列表

搜索[代理式开发],共10000篇文章
优秀的个人博客,低调大师

BookChatApp v1.1 发布,uni-app 开发的书籍阅读APP,实现平板适配

介绍 BookChatApp,通用的书籍阅读 APP,BookChat 的 uni-app 实现版本,支持多端分发编译生成 Android 和 iOS 手机 APP 以及各平台的小程序。 使用 BookChatApp,您可以轻松地将您的电子书、文档手册和在线书籍分发到各个小程序平台,以及编译生成手机 APP 发布到各大手机软件市场供用户下载和使用。 升级日志 内容阅读页面代码块显示优化 Banner等HTTP链接允许外部打开 APP版本升级提示(仅针对Android,iOS有App Store,不需要升级提示) 书架,长按可以将书籍从书架中移除 平板适配 目录页 /pages/menu/menu 书籍阅读页 /pages/read/read 用户中心页 /pages/ucenter/ucenter 首页 /pages/index/index 分类页 /pages/cate/cate 书架页 /pages/bookshelf/bookshelf 列表页 /pages/list/list 个人主页 /pages/me/me 书签页 /pages/bookmarks/bookmarks 搜索结果页 /pages/search/search 内容点评页 /pages/comment/comment 404页 /pages/notfound/notfound 登录页 /pages/login/login 注册页 /pages/register/register 书籍介绍页 /pages/intro/intro 平板适配微调 tab 内边距太大 书架中书籍名称行高调整 搜索输入框优化 相关链接 BookChatApp 开源地址 Gitee: https://gitee.com/truthhun/BookChatApp GitHub: https://github.com/truthhun/BookChatApp BookStackApp 官网:https://www.bookstack.cn BookChatApp 下载体验 目前BookChatApp iOS 版本已经上架APP Store,可以在APP Store 搜索BookChat或BookChatApp进行下载体验。 Android 版本并未上架到各大Android市场,临时下载体验地址: https://www.bookstack.cn/app 图片预览

优秀的个人博客,低调大师

三年Java开发面试,16道MySQL面试题集锦(附答案)

说一下mysql比较宏观的面试,具体咋写sql的这里就不过多举例了。后面我还会给出一个关于mysql面试优化的试题,这里主要说的索引和B+Tree结构,很少提到我们的集群配置优化方案。 1.索引是什么?有什么作用以及缺点 答:索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。也可以理解为索引就是一本书的目录,创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚集索引那么需要的空间就会更大。 2.索引的目的是什么 答:为了高效的查找得到我们所需要的数据,减少分组和排序时间,提高我们的mysql的性能 3.索引对数据库系统的负面影响 答:虽然索引对于数据库的查询提高了效率,但一定程度上增加了空间的占用,同时写入的速度降低了不少,和原有写入数据相比较,多了一步去维护索引的操作。 4.建立索引的原则 答:选择唯一性索引,为经常需要查询、排序、分组和联合操作的字段建立索引,限制索引的数目,最左前缀匹配原则(非常重要的原则),尽量选择区分度高的列作为索引,字段尽力设置不为null,索引列上不计算。 5.主键、外键和唯一索引的区别 答:定义: 主键:唯一标识一条记录,不能有重复的,不允许为空 外键:表的外键是另一表的主键, 外键可以有重复的, 可以是空值 索引:该字段没有重复值,但可以有空值 作用: 主键:用来保证数据完整性 外键:用来和其他表建立联系用的 索引:是提高查询排序的速度 个数: 主键:主键只能有一个 外键:一个表可以有多个外键 索引:一个表可以有多个唯一索引 6.MySQL底层实现,MySQL有什么引擎 答:mysql底层采用B+tree的存储结构,也就是只有叶子节点携带真实数据,每个节点大小为16Kb,大致三层的B+tree就可以存2000W左右的数据,大大的减少了磁盘的IO。我们常见的存储引擎有InnoDB和MyISAM。 7.InnoDB和MyISAM区别,InnoDB替代了MyISAM,那么MyISAM是否一无是处。 答:InnoDB支持事务,支持行锁,在磁盘上只存两个文件,一个是索引文件,另一个是数据文件,在B+Tree的主键索引上,叶子节点携带全部数据,MyISAM不支持事务,不支持行锁,磁盘上存了三个文件,一个是索引文件,另一个是数据文件,还有一个存放的对应关系文件,从查询的角度来说,InnoDB没有MyISAM的单条查询速度高,MyISAM采用Hash存储回行得到数据的查询过程,单MyISAM对于范围查询不是很友好。因此我们可以看出InnoDB用的更广一些,但同时MyISAM对于非范围查询的高效还是有很大用处的,而且MyISAM对于表内的总数查询,维护了单独的数据,也是很高效的。 8.什么是事务,事务特性 答:事务是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。在我们的mysql里也是如此,也就是我们的ACID原则。A原子性,把一系列的动作视为一个最小的操作(原子操作)C一致性,从一个状态到另一个状态是一致的,I隔离性:事务与事务之间是不可见相互隔离的,D持久性:一旦事务提交,则所做修改就会被永久保存到数据库中。可以简单说一下可重复读的MVCC机制,面试官也懵圈。 9.如何设计一个高并发的系统(对于mysql来讲) 答:这个后面会结合别的技术来说,只讲mysql不太好说。大致就是我们首先应该考虑到的是读写分离操作(过几天博客里会详细说这个),再就是我们常见的分库分表操作,水平切分垂直切分。还可以加入缓存redis操作。合理使用索引,explain进行sql优化。 10.锁的优化策略 答:优化,也就是最小力度的锁我们的数据,也就是行锁,InnoDB的行锁其实是加在索引字段的,避免行锁的升级为表锁,再就是我们尽量避免间隙锁,尽量避免我们的范围修改,如果真的必须范围修改,那么我应该尽可能的缩小到最小的范围。 11.优化SQL的方法 答:设置一个主键索引,需主要主键索引一般没有真正业务含义,使用int类型自动增长的,而且不能为null,非主键索引字段优先考虑区分度高的业务情况和最左前缀原则,设置为null。如果真的数据量不大,不建议加索引,反而会影响效率的。选取最适用的字段属性,尽可能减少定义字段宽度,尽量把字段设置NOTNULL,使用连接(JOIN)来代替子查询,适用联合(UNION)来代替手动创建的临时表。学会使用explain进行SQL分析,实在不行可以打开trace进行分析SQL情况,用完记得关闭。 12.谈谈三大范式,什么时候使用反范式设计 答:第一范式(1NF):确保每列保持原子性即列不可分 第二范式(2NF):属性完全依赖于主键,也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。 第三范式(3NF):属性和主键不能间接相关(减少数据冗余,这样就可以通过主外键进行表之间连接) 比如我们表比较多,需要关联时,但我们的A表只需要关联B表的一个字段,而且每次都需要关联查询你,这时我们可以采用A表放置一个冗余字段来存B表的那个字段。这个操作其实就是一个反范式的。 13.说几个mysql中你常用的函数答: 答:sum、count 、avg、min、max 14.varchar(100)和varchar(200)的区别 答:占用内存空间大小肯定是不一致的,但是占用我们磁盘的大小是一致的,我们存储字符串"abc",完全是一样的磁盘空间,但是对于varchar(100)来说,接收到的字符串长度太长了就会报错的。后面的数字代表可存储的字节数。 15.varchar(20)和int(20)中的20含义一样吗 答:显然不一致,int(M) M表示的不是数据的最大长度,只是数据宽度,并不影响存储多少位长度的数据;varchar(M) M表示的是varchar类型数据在数据库中存储的最大长度,超过则不存; 16.如何开启慢日志查询? 答:有2种方式,一是修改mysql的配置文件,二是通过set global语句来实现。slow_query_log = ON,打开日志,long_query_time = 2,设置时间,2秒就算是慢查询,然后重启mysql服务即可,进入mysql控制台,输入SET GLOBAL slow_query_log = 'ON';SET GLOBAL long_query_time = X;不需要重启服务就可以得到慢查询日志。 需要java学习路线图的私信笔者“java”领取哦!另外喜欢这篇文章的可以给笔者点个赞,关注一下,每天都会分享Java相关文章!还有不定时的福利赠送,包括整理的学习资料,面试题,源码等~~

优秀的个人博客,低调大师

开发者也需要了解的知识产权、知识共享与文章翻译

一、缘起 前不久,我在翻译 Guido van Rossum(Python之父)的文章时,给他留言,申请非商业用途的翻译授权。 过程中起了点小误会,略去不表,最终的结果是:他的文章以CC BY-NC-SA 4.0 许可协议进行授权。部分对话如下: CC 协议是一种授权许可协议,我曾看到过几次,但了解不多,所以便查阅了相关的内容。 本文主要是作个记录,既是加深自己的理解,也给有需要的同学一个参考。 二、著作权、著佐权与自由版权 对于知识产权,通常有如下几种说法: All Rights Reserved(保留所有权利) Some Rights Reserved(保留部分权利) All Rights Reversed(撤销所有权利) 注意最后一条的“Reversed”,它长得很像“Reserved”,但意思截然相反。 它们对权利的诉求由强转弱,从一个极端走向另一个极端。 有几个与此相关的概念: copyright,即版权、著作权 copyleft,即著作传、著佐权 copywrong,即反版权、自由版权 版权制度起源于十五世纪中期,那时西方发明了铅活字印刷术(古登堡,现代印刷术之父),出现了大量盗版,为了保护出版商的利益,政府出台了版权法。 此后版权法在世界各地普及,演化出了很多门类,它们普遍限定了一个有效期限,在此期限内,版权方受到垄断保护(即 All Rights Reserved )。超出期限后,知识作品才会进入公共领域(public domain),才变成自由版权。 copyright 是一种限制性协议,有利于保护版权方的个体权益,但是也阻碍了知识作品的传播,不利于社会的公共利益。 我们经常会听到一个词“专利流氓”,说的就是版权被过度使用而造成的社会问题。举个例子,某家商业公司竟然曾“拥有”国旗国徽的版权。 copyleft 则是一种较为宽松的协议,对应的思想是 Some Rights Reserved(保留部分权利),使用者只要遵守少数的列明条款即可。 copyleft 之所以会译作“著作传 ”,因为有“减少屏蔽,自由流传 ”之义。 另外还翻译为“著佐权”,也是一字之差,跟英文原词神似,非常有趣。 最后还有一个 copywrong(还有类似的“copyfree”、“copycenter”叫法),它属于另一个极端,无视版权,无拘无束。 copyleft 与 copywrong 都是对 copyright 的某种矫正,只是矫正的力度不同,总体而言,它们的目的都是促进知识作品的传播,增进整体的社会利益。 在互联网时代,它们随处可见(可能不直接用这些叫法),极大地促进了自由软件与开源社区的发展。 上图中的 6 种主流的开源许可证,你应该有所耳闻吧,在我们免费使用的各种软件或代码库中,很可能就藏着它们的身影。 右侧的 3 种(BSD、MIT、Apache)属于宽松式许可证(permissive license),对使用者几乎没有限制,接近于极端的 All Rights Reversed(撤销所有权利)。 左侧的 3 种(LGPL、Mozilla、GPL)则属于 copyleft 许可证,仅保留了少数关键的权利,此外不予限制。 三、知识共享许可协议 经过一段简要的铺垫,几个概念算是讲清楚了,接着看 Python 之父在本文开头所提到的那种许可协议吧。 CC 也是 copyleft 的一种,全称为 Creative Commons license ,译作知识共享许可协议 ,发布于 2002.12.16,目前已发展到 4.0 版本。 > 官网地址:https://creativecommons.org/licenses CC 协议是一个统称,它有不同的实指,区别在于所保留的权利不同。 它声明的基本权利有 4 种: 署名(Attribution,简写 BY):注明原作者 相同方式共享(ShareAlike,简写 SA):允许演绎,但需以相同许可协议发布 非商业性使用(Noncommercial,简写 NC):不得用于商业目的 禁止演绎(No Derivative Works,简写 ND):不得演绎,也作“非衍生” (注:还有一些基本要求,例如,使用者不可添加法律条款或技术手段来限制别人的合理使用。限于篇幅,这些内容就不多介绍了,详见官网。) 按照是否保留某项权利,它们可以排出 16 种组合,其中 4 种因为同时包含“SA”与“ND”,互斥而无效,还有 5 种不要求署名,基本没人使用。 所以,只有 7 种常用的 CC 协议: 上图只列出了 6 种,还有 1 种特殊的是 CC0 协议,它不要求任何权利,是“No Rights Reserved”,无版权要求,属于自由版权。 这些协议被广泛用于各类互联网产品中(主要是网站、视频、图片或文章),例如: CC0:Pexels图片、Unsplash图片、SoundCloud音乐 CC BY-SA:维基百科内容、Stack Overflow内容 CC BY-NC-ND:TED 演讲视频 CC BY-NC-SA:可汗学院视频、斯坦福公开课视频 很多个人网站或文章,基本采用了"CC BY-NC-ND"或者"CC BY-NC-SA"之一。Guido 最初给我回复的是 ND 这种,后来才澄清为 SA。 这几种权利中,BY(署名)是不言而喻的,也就是我们常见的“转载时请注明作者和出处”,体现了对于原作者的最起码的尊重。 另外的 3 种权利,值得再细细地辨析一下: SA/ND,是否允许演绎。演绎包括“再混合、转换或基于该作品创作”,基本可概括为不允许改动原作品,而且不允许翻译(这点很关键) NC,非商业用途。什么算是商业用途呢?官方笼统地概括为“出于商业利益或金融补偿”的用途,还说这取决于具体情况和使用者的意图 四、关于翻译的几个问题 本文缘起于翻译,快结束了,我再补充几个跟翻译相关的问题吧,并附上我的理解。 1、翻译别人的文章会导致侵权么? 翻译权是著作财产权的一种,属于著作人所有,它的基本含义是:著作权人享有自行翻译其作品和允许他人翻译其作品的权利。所以,未经作者授权或者许可的作品,就不要翻译了,翻译了也不应发布,否则就侵权了。 2、CC 协议下的作品可自由翻译么? 如果作者许可的是 ND,即禁止演绎,那么,该作品是不允许被翻译的;如果许可的是 SA,即是允许翻译,但注意需“以相同方式共享”,即翻译后的作品需支持他人继续作出演绎;其它情况,对翻译行为不作约束。 3、译者对翻译的作品拥有版权么? 根据我国《著作权法》第十二条所述: > 改编、翻译、注释、整理已有作品而产生的作品,其著作权由改编、翻译、注释、整理人享有,但行使著作权时不得侵犯原作品的著作权。 即在不侵犯原作版权的前提下,翻译作品的版权归译者所有。 4、翻译的作品算是原创么? 从狭义的概念上看,翻译属于二次创作、属于衍生、其“灵魂”是由原作品所赋予的,所以不能算是原创。原创应指独立创作、全新发明,所以在此含义上看,翻译不算是原创。 但是,还有一种具体的情境,例如在公众号发文时标注的“原创”,此原创并非是要作概念上的区分,而是要保护作者的版权,防止文章被人侵权转载(甚至是被抢去标注原创),在此情境下,我认为可以标“原创”(有“翻译”标记就更好了)。 所以,综合来看,翻译作品不是原创,但在特殊情况下,又可以是“原创”。 5、如何理解非商业用途呢? 维基百科对于商业行为概括有 4 个要点:(1)以营利为目的(2)发生交易行为(3)出于双方自愿(4)符合法律规范 CC 协议所约定的 NC 条款,应参照如上解释。所以,基于 NC 条款许可的翻译作品,不应用于知识付费,也不应用于其它买卖交易,此外,一般而言, 捐助或者赞赏等行为都不算是商业用途,则不受此限制。 作者简介: 豌豆花下猫,生于广东毕业于武大,现为苏漂程序员,有一些极客思维,也有一些人文情怀,有一些温度,还有一些态度。公众号:Python猫 公众号【Python猫 】, 本号连载优质的系列文章,有喵星哲学猫系列、Python进阶系列、好书推荐系列、技术写作、优质英文推荐与翻译等等,欢迎关注哦。

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册