询问typecho使用Sqlite2和Sqlite3的区别

询问typecho使用Sqlite2和Sqlite3的区别,第1张

直接看官方的changelog就可以看出区别了,主要是能存储更多类型,增加万国码支持等等。而且从配图上看,Typecho程序中,2x使用的是原生的函数,类似mysqli_connect之类的函数,而3x使用的是PDO连接数据库。

虽然没有实际使用过,不过从各种区别来看,似乎使用SQLite 3x应该是不错的选择呢。

大概2005年就开始折腾博客了,从第一次用自己开发的aps+html网站,到看了网上到处都是现成的网站,自己辛苦几星期甚至几个月弄出来的东西,其实都已经有了,你想到的或没想到的功能都有了,甚至需要扩展功能只需要花几分钟增加一个插件就搞定。

于是开始使用现成的cms系统,一开始接触是使用动易的cms系统,因为使用的asp和aspx开发,自己略懂一些,可以看懂代码自己二次修改。

但是,动易的界面设计不符合个人审美,还有模板就那几个,于是开始接触到帝国cms,WordPress,也开始摸索PHP,中间也还尝试过zblog、emlog、typecho等。不过最终还是觉得WordPress是最好用:

易于安装维护;模板多如牛毛,无论国内的国外的都很多,哪天看不爽了在用着的主题或发现更好看的主题,换,最多半天的事情,就可以“大装修”完;教程也是满天飞,使用过程中遇到什么问题,随时一搜,基本上都能找到解决办法;海量的功能插件,需要扩展目前流行的一些功能,基本都能找到相应的插件来实现。有着全球那么多程序员大神帮你不断的更新和完善功能、漏洞、美化、优化

所以,有什么理由不选WordPress?我目前还剩下两个博客,也都是使用的WordPress搭建的。

众所周知,java在处理数据量比较大的时候,加载到内存必然会导致内存溢出,而在一些数据处理中我们不得不去处理海量数据,在做数据处理中,我们常见的手段是分解,压缩,并行,临时文件等方法;

例如,我们要将数据库(不论是什么数据库)的数据导出到一个文件,一般是Excel

或文本格式的CSV;对于Excel来讲,对于POI和JXL的接口,你很多时候没有办法去控制内存什么时候向磁盘写入,很恶心,而且这些API在内存构

造的对象大小将比数据原有的大小要大很多倍数,所以你不得不去拆分Excel,还好,POI开始意识到这个问题,在384的版本后,开始提供

cache的行数,提供了SXSSFWorkbook的接口,可以设置在内存中的行数,不过可惜的是,他当你超过这个行数,每添加一行,它就将相对行数前

面的一行写入磁盘(如你设置2000行的话,当你写第20001行的时候,他会将第一行写入磁盘),其实这个时候他些的临时文件,以至于不消耗内存,不过

这样你会发现,刷磁盘的频率会非常高,我们的确不想这样,因为我们想让他达到一个范围一次性将数据刷如磁盘,比如一次刷1M之类的做法,可惜现在还没有这

种API,很痛苦,我自己做过测试,通过写小的Excel比使用目前提供刷磁盘的API来写大文件,效率要高一些,而且这样如果访问的人稍微多一些磁盘

IO可能会扛不住,因为IO资源是非常有限的,所以还是拆文件才是上策;而当我们写CSV,也就是文本类型的文件,我们很多时候是可以自己控制的,不过你

不要用CSV自己提供的API,也是不太可控的,CSV本身就是文本文件,你按照文本格式写入即可被CSV识别出来;如何写入呢?下面来说说。。。

在处理数据层面,如从数据库中读取数据,生成本地文件,写代码为了方便,我们未必要

1M怎么来处理,这个交给底层的驱动程序去拆分,对于我们的程序来讲我们认为它是连续写即可;我们比如想将一个1000W数据的数据库表,导出到文件;此

时,你要么进行分页,oracle当然用三层包装即可,mysql用limit,不过分页每次都会新的查询,而且随着翻页,会越来越慢,其实我们想拿到一

个句柄,然后向下游动,编译一部分数据(如10000行)将写文件一次(写文件细节不多说了,这个是最基本的),需要注意的时候每次buffer的数据,

在用outputstream写入的时候,最好flush一下,将缓冲区清空下;接下来,执行一个没有where条件的SQL,会不会将内存撑爆?是的,这个问题我们值得去思考下,通过API发现可以对SQL进行一些 *** 作,例如,通过:PreparedStatement

statement =

connectionprepareStatement(sql),这是默认得到的预编译,还可以通过设置:PreparedStatement

statement = connectionprepareStatement(sql ,

ResultSetTYPE_FORWARD_ONLY ,

ResultSetCONCUR_READ_ONLY);

来设置游标的方式,以至于游标不是将数据直接cache到本地内存,然后通过设置statementsetFetchSize(200);设置游标每次遍历的大小;OK,这个其实我用过,oracle用了和没用没区别,因为oracle的jdbc

API默认就是不会将数据cache到java的内存中的,而mysql里头设置根本无效,我上面说了一堆废话,呵呵,

我只是想说,java提供的标准API也未必有效,很多时候要看厂商的实现机制,还有这个设置是很多网上说有效的,但是这纯属抄袭;对于oracle上面

说了不用关心,他本身就不是cache到内存,所以java内存不会导致什么问题,如果是mysql,首先必须使用5以上的版本,然后在连接参数上加上

useCursorFetch=true这个参数,至于游标大小可以通过连接参数上加上:defaultFetchSize=1000来设置,例如:

jdbc:mysql://xxxxxxxxxxxx:3306/abczeroDateTimeBehavior=convertToNull&useCursorFetch=true&defaultFetchSize=1000

上次被这个问题纠结了很久(mysql的数据老导致程序内存膨胀,并行2个直接系统

就宕了),还去看了很多源码才发现奇迹竟然在这里,最后经过mysql文档的确认,然后进行测试,并行多个,而且数据量都是500W以上的,都不会导致内

存膨胀,GC一切正常,这个问题终于完结了。

我们再聊聊其他的,数据拆分和合并,当数据文件多的时候我们想合并,当文件太大想要

拆分,合并和拆分的过程也会遇到类似的问题,还好,这个在我们可控制的范围内,如果文件中的数据最终是可以组织的,那么在拆分和合并的时候,此时就不要按

照数据逻辑行数来做了,因为行数最终你需要解释数据本身来判定,但是只是做拆分是没有必要的,你需要的是做二进制处理,在这个二进制处理过程,你要注意

了,和平时read文件不要使用一样的方式,平时大多对一个文件读取只是用一次read *** 作,如果对于大文件内存肯定直接挂掉了,不用多说,你此时因该每

次读取一个可控范围的数据,read方法提供了重载的offset和length的范围,这个在循环过程中自己可以计算出来,写入大文件和上面一样,不要

读取到一定程序就要通过写入流flush到磁盘;其实对于小数据量的处理在现代的NIO技术的中也有用到,例如多个终端同时请求一个大文件下载,例如视频

下载吧,在常规的情况下,如果用java的容器来处理,一般会发生两种情况:

其一为内存溢出,因为每个请求都要加载一个文件大小的内存甚至于更多,因为java

包装的时候会产生很多其他的内存开销,如果使用二进制会产生得少一些,而且在经过输入输出流的过程中还会经历几次内存拷贝,当然如果有你类似nginx之

类的中间件,那么你可以通过send_file模式发送出去,但是如果你要用程序来处理的时候,内存除非你足够大,但是java内存再大也会有GC的时

候,如果你内存真的很大,GC的时候死定了,当然这个地方也可以考虑自己通过直接内存的调用和释放来实现,不过要求剩余的物理内存也足够大才行,那么足够

大是多大呢?这个不好说,要看文件本身的大小和访问的频率;

其二为假如内存足够大,无限制大,那么此时的限制就是线程,传统的IO模型是线程是

一个请求一个线程,这个线程从主线程从线程池中分配后,就开始工作,经过你的Context包装、Filter、拦截器、业务代码各个层次和业务逻辑、访

问数据库、访问文件、渲染结果等等,其实整个过程线程都是被挂住的,所以这部分资源非常有限,而且如果是大文件 *** 作是属于IO密集型的 *** 作,大量的CPU

时间是空余的,方法最直接当然是增加线程数来控制,当然内存足够大也有足够的空间来申请线程池,不过一般来讲一个进程的线程池一般会受到限制也不建议太多

的,而在有限的系统资源下,要提高性能,我们开始有了new

IO技术,也就是NIO技术,新版的里面又有了AIO技术,NIO只能算是异步IO,但是在中间读写过程仍然是阻塞的(也就是在真正的读写过程,但是不会

去关心中途的响应),还未做到真正的异步IO,在监听connect的时候他是不需要很多线程参与的,有单独的线程去处理,连接也又传统的socket变

成了selector,对于不需要进行数据处理的是无需分配线程处理的;而AIO通过了一种所谓的回调注册来完成,当然还需要OS的支持,当会掉的时候会

去分配线程,目前还不是很成熟,性能最多和NIO吃平,不过随着技术发展,AIO必然会超越NIO,目前谷歌V8虚拟机引擎所驱动的nodejs就是类

似的模式,有关这种技术不是本文的说明重点;

将上面两者结合起来就是要解决大文件,还要并行度,最土的方法是将文件每次请求的大

小降低到一定程度,如8K(这个大小是经过测试后网络传输较为适宜的大小,本地读取文件并不需要这么小),如果再做深入一些,可以做一定程度的

cache,将多个请求的一样的文件,cache在内存或分布式缓存中,你不用将整个文件cache在内存中,将近期使用的cache几秒左右即可,或你

可以采用一些热点的算法来配合;类似迅雷下载的断点传送中(不过迅雷的网络协议不太一样),它在处理下载数据的时候未必是连续的,只要最终能合并即可,在

服务器端可以反过来,谁正好需要这块的数据,就给它就可以;才用NIO后,可以支持很大的连接和并发,本地通过NIO做socket连接测试,100个终

端同时请求一个线程的服务器,正常的WEB应用是第一个文件没有发送完成,第二个请求要么等待,要么超时,要么直接拒绝得不到连接,改成NIO后此时

100个请求都能连接上服务器端,服务端只需要1个线程来处理数据就可以,将很多数据传递给这些连接请求资源,每次读取一部分数据传递出去,不过可以计算

的是,在总体长连接传输过程中总体效率并不会提升,只是相对相应和所开销的内存得到量化控制,这就是技术的魅力,也许不要太多的算法,不过你得懂他。

类似的数据处理还有很多,有些时候还会将就效率问题,比如在HBase的文件拆分和

合并过程中,要不影响线上业务是比较难的事情,很多问题值得我们去研究场景,因为不同的场景有不同的方法去解决,但是大同小异,明白思想和方法,明白内存

和体系架构,明白你所面临的是沈阳的场景,只是细节上改变可以带来惊人的效果。

-

首页在模板目录建立一个 category 文件夹,将分类模板文件放到这个目录内,如 Printsphp

以下是分类模板样本:

<php $this->need('headerphp'); > 头部

<div class="main_zpliebiao1">

<php if ($this->have()): > 不可删

<php while($this->next()): > 不可删

<a href="<php $this->permalink() >" title="<php $this->title() >"><php $this->content(); ></a>

<php endwhile; > 结尾

<php else: >

<php endif; >

<php $this->need('footerphp'); > 底部

然后在后台创建分类,分类的缩略名必需是分类模板的名字如分类模板名为Printsphp那么分类缩略名必需是Prints才行。然后在postphp页调用以下代码。

<!-- blog -->

<php if ($this->category == 'blog') { >

<div><h4><php $this->title() ></h4></div>

<div><php $this->author(); > <php ('October'); ><php $this->date('F j, Y'); ></div>

<div><php $this->content('Continue Reading'); ></div>

<div class="clear"></div>

<php if (empty($this->options->sidebarBlock) || in_array('ShowRecentPosts', $this->options->sidebarBlock)): >

<php $this->need('footerphp'); >

<php endif; >

<!-- zhoupin -->

<php } elseif ($this->category == 'zhoupin') { >

<div><span><php $this->content(); ></span></div>

<!-- end #zhoupin-->

<php $this->need('footerphp'); >

<php } elseif ($this->category == 'Prints') { >

<div><span><php $this->content(); ></span></div>

<php $this->need('footerphp'); >

<!-- end #Prints -->

<php } >

<php if ($this->category == 'News') { >

<div><h2><php $this->title() > <br/><php ('October'); ><php $this->date('F j, Y'); ></h2></div>

<div><php $this->content(); ></div>

<!-- News -->

<php if (empty($this->options->sidebarBlock) || in_array('ShowRecentPosts', $this->options->sidebarBlock)): >

<php $this->need('footerphp'); >

<php endif; >

<php } >

创建分类方法二

一、不同分类输出不同模板

先在当前模板目录下建立一个 category 目录,然后比如你要给 slug 为 default 的分类专门建立模板,那么就在 category 目录下创建一个名为 defaultphp 的文件,这样程序在访问 default 分类时会自动调用这个模板文件。

使用 $this->categories 和 $this->category 这两个变量就可以满足你的需要了,不过需要你自己手动循环输出。你可以 print_r 一下这两个变量,看看它们的结构。

二、post页调用方法

<php if ($this->category == "分类A的缩略名"): > 固定给某一个分类的模板

// 这里是分类A的样式

<php elseif ($this->category == "分类B的缩略名"): > 固定给某一个分类的模板可添加N个,只需复制即可

// 这里是分类B的样式

<php else: >

// 这里是分类C的样式 这里写的是通用模板样式

<php endif; >

附:分类名称调用

<php $this->category(','); > //带连接的分类名称,逗号为多分类时的间隔符

<php $this->category(',', false); > //不带连

如何建立网站平台?建立一个网站平台大概多少钱?一个网站是由很多部分组成的,自然一个网站的价格也由多个部分组成。而每个人做的网站会有自己的特色,有不同的要求,所以想要将建站费用具体化,那么只有结合实际步骤和要求,算好各个部分的费用再加起来。

一、网站域名

域名方面,有一些短域名或是特殊号码域名全是十分高的价钱。不过绝大多数刚注册的的域名不用那样的价格,一般几十块、百来块一年。

二、网络服务器

网络服务器也分许多类型和方式,价钱有可能相差甚远,这里说说一般公司常见的云主机和空间。空间得话相对较为划算,而云主机相对较为稳定,一般价钱几百元到几千元。普通的企业网站,用几百元一年的网络服务器也是足够的。

三、网站构建

网站构建是建网站的一个关键成本,自助建站的价钱相对较低一些,一般几百到几千元以内。定制得话大部分需要过万的花费。自助建站大部分是有一个固定的价格,定制得话就还必须跟企业本身的要求来判断,网站规模不一样,价钱当然也会出现出入。

例如这家>>在线自助建站公司

四、办理备案

一般办理备案不用花钱的,很多网站建设公司会提供免费办理备案的服务。自然也是有一小部分的公司会扣除一些办理备案的花费,具体看大家的实际情况。

建立一个网站平台可以利用模板创建是比较快,大家可以参考一下喔!

typecho 2 wordpress下载:

1本程序将typecho数据转换到wordpress,强烈建议在本地环境进行转换,并且做好原数据的备份。

2测试条件:typecho 08 & WordPress 312

3wordpress版本要求:> 30建议使用最新版本。

4重要:程序目前只能够全新转换,将清空除wp_users,wp_usermeta,wp_options,wp_links以外的所有表,请将重要数据备份。

5程序将转换你的全部文章,包括附件,你只需要复制usr/uploads文件夹下文件到wordpress的wp-content/uploads下即可。

6程序将转换你的全部评论,分类和全部tag,没有使用的tag将不被转换。

流行的博客系统主要分为以下几种:

①WordPress

1是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。也可以把 WordPress当作一个内容管理系统(CMS)来使用。

2WordPress是一款个人博客系统,并逐步演化成一款内容管理系统软件,它是使用PHP语言和MySQL数据库开发的。用户可以在支持 PHP 和 MySQL数据库的服务器上使用自己的博客。

3WordPress有许多第三方开发的免费模板,安装方式简单易用。不过要做一个自己的模板,则需要你有一定的专业知识。比如你至少要懂的标准通用标记语言下的一个应用HTML代码、CSS、PHP等相关知识。

②emblog(现收费下载,可去源码之家免费下载源码)

1它是一款基于PHP语言和MySQL数据库的开源、免费、功能强大的个人或多人联合撰写的博客系统(blog)。基于PHP和MySQL的功能强大的博客及CMS建站系统

③zblog(asp和PHP版)

1支持主题、插件等功能和配置,打造个性化博客;

2zblogasp版本支持Access+MYSQL双数据库,可实现静态化、伪静态、动态页面;

3zblogphp版本[1] 支持支持MySQL(MariaDB)和SQLite双数据库,可实现伪静态、动态页面;

4广泛支持IE(最新版后台不支持IE6)、Chrome、Firefox、Opera、Safari多种浏览器;

④typecho(代码只有4KB超轻博客系统)

1、Magike博客程序是基于MagikeFramework开发,保证了程序的效率和安全性,但是这个MVC的框架结构比较复杂,更适合用于开发大型项目,如果在博客程序开发中可以精简掉MagikeFramework自带的模板引擎以及其他一些代码,就可以提供给用户一个更精巧的程序,这与我们希望代码越少越好的初衷一致,这直接推动了新版本从内核开始重 写。

2、作为一个使用GPL V2发布的开源程序来说,虽然我们极力保证代码的规范性,但还是存在一些不足,比如程序注释不够详细,加上开发团队在对国际化的理解上走了一点弯路,与其逐步完善,不如从根本上重来,让新程序的开源血统更加纯洁

推荐:

wordpress开源程序!

优点:

1、WordPress 功能强大、扩展性强,这主要得益于其插件众多,易于扩充功能,既有seo推广插件All in one seo插件也有静态缓存插件cos-html-cache,基本上一个完整网站该有的功能,通过其第三方插件都能实现所以功能;

2、wordpress搭建的博客对seo搜索引擎友好,收录也快,排名靠前(尤其是安装谷歌网站地图插件Google XML Sitemaps和百度网站地图插件Baidu-Sitemap后,效果更佳!);

3、适合DIY,如果你是喜欢丰富内容的网站,那么wordpress可以很好地符合你的胃口。

4、现成主题很多,网站上一大片都是wordpress的主题,各色各样,应有尽有!

缺点:

1、wordpress源码系统初始内容基本只是一个框架,需要时间自己搭建;

2、插件虽多,但是不能安装太多插件,否则会拖累网站速度和降低用户体验;

3、服务器空间选择自由较小,由于是php语言搭建的,在windows主机空间上并不能完美支持 wordpress,所以一般都选择完美支持php语言的linux主机空间!而在国内大多数服务器都是windows系统的,而境外较多linux系 统,所以很多站长只能买境外空间,网站速度自然比不上国内空间速度!

4、wordpress备份和网站转移比较繁琐,需要涉及到数据库!

5、静态化较差,确切地说是真正静态化做得不好,如果要想对整个网站生成真正静态化页面,目前还做不好,最多只能生成首页和文章页静态页面,所以只能对整站实现伪静态化!

以上就是关于询问typecho使用Sqlite2和Sqlite3的区别全部的内容,包括:询问typecho使用Sqlite2和Sqlite3的区别、个人博客选择wordpress还是typecho好呢、typecho对于大数据负载能力如何比如1000万数据,有谁测试过吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10101130.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存