Day07 后台管理与发布文章

源代码: https://github.com/ltoddy/flask-tutorial

技术交流群:630398887(欢迎一起吹牛)

写在前面的话:如果你实在不会写页面,复制粘贴你会吧.

https://getbootstrap.com/docs/3.3/examples/theme/

这个页面是,bootstrap样式表的例样,

http://getbootstrap.com/docs/4.0/examples/

这个页面是,你进去看那个页面合适,你点进去,然后右键查看网页源代码,复制就好了,顺便说一下,别忘了把CSS也复制了.

我们来定义下我们的文章模型,文章内容放到数据库里面,然后通过查询文章标题来,在主页建立文章链接。

app/models.py

class Article(db.Model):
    __tablename__ = 'articles'
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(64))
    content = db.Column(db.Text)

文章模型很简单,一个id,一个文章标题,一个文章的内容这三个字段。
content = db.Column(db.Text),这里,回顾一下或者百度一下SQLAlchemy的列模型。

因为我们文章内容可不是几个字,而是很多上千上万字说不定,所以就不能再用简单的db.String来处理了。
我们使用db.Text这个,他对长文本做了优化.

当我们有了这个数据库的文章模型之后,为了给数据库添加数据,那么我们还需要相对应的表单:

app/admin/forms.py

class PostForm(FlaskForm):
    title = StringField('文章标题:', validators=[Required()])
    content = TextAreaField('文章内容', validators=[Required()])
    submit = SubmitField('发布')

你看注意看变量的名字,我们最可能的让表单和文章模型中的变量去相同的名字,这样方便。

OK,继续。我们有了表单,要在页面中呈现出来。

app/admin/views.py

from ..models import Article

@admin.route('/', methods=['GET', 'POST'])
def index():
    form = PostForm()
    if not current_user.is_authenticated:
        return redirect(url_for('admin.login'))
    if form.validate_on_submit():
        try:
            article = Article(title=form.title.data, content=form.content.data)
            db.session.add(article)
            form.title.data = ''
            form.content.data = ''
            flash('发布成功')
        except:
            flash('文章标题有重复')
    return render_template('admin/index.html', form=form)

这段代码也没什么难度,先去创建一个表单form,然后判断一下你是否登录了,没登录的话就会重定向到登录界面。
继续往下,让你提交表单的时候,这里用到了一个try - catch语句,其实这里原因是,我最初想把那个数据库文章模型中title字段设置成unique的,title = db.Column(db.String(64),unique=True),后来想想算了,所不定有相同标题的文章呢。然后就是从表单中获取数据,来构件新的文章,然后存到数据库里面。
flash就是用来做一个提示,方便你自己知道你都干了啥事。

OK,把我们的HTML页面也说一下。

{% extends 'admin/base.html' %}
{% import 'bootstrap/wtf.html' as wtf %}

{% block navbar %}
    
{% endblock %}

{% block page_content %}
    
{% endblock %}

唯一做出了更改的地方就是 {% block page_content %}这里,里面加入了一个表单.
OK,启动一下我们的项目看看效果。

Day07 后台管理与发布文章_第1张图片

当然你可能会出现一个SQLAlchemy的异常,如何解决:

$ python3 manage.py shell
>>> from manage import * 
>>> db.drop_all()
>>> db.create_all()
>>> exit()

更新一下我们的数据库结构,毕竟我们更改了数据库模型,添加了文章这个模型。
注意哦,每当我们更改了app/models.py这个文件,我们最好都要重新设置一下数据库.

我们现在已经可以把文章放到数据库了,现在我们要把数据库的文章显示出来。
在这里,我修改了一下templates/base.html页面:

{% extends 'bootstrap/base.html' %}

{% block title %}Just for fun{% endblock %}

{% block navbar %}
    
{% endblock %}

{% block content %}
    {% for message in get_flashed_messages() %}
        
{{ message }}
{% endfor %}
{% block page_content %}{% endblock %}
{% block slider %}{% endblock %}
{% endblock %}

只更改了最后,我把

,切成了两个块,第一个块来放文章的内容,第二个块来放文章目录。

改完templates/base.html,我们在改一下templates/index.html,这是我们的主页,总显示一句话不好看,所以我们改一改。

{% extends 'base.html' %}
{% import 'bootstrap/wtf.html' as wtf %}
{% block page_content %}
    

欢迎来到我的blog

技术交流群:630398887


如下内容凑的字数


登鹳雀楼

白日依山尽,黄河入海流。

欲穷千里目,更上一层楼。


论语

子谓公冶长:“可妻也,虽在缧绁之中,非其罪也!”以其子妻之。

子谓南容:“邦有道不废;邦无道免于刑戮。”以其兄之子妻之。

子谓子贱:“君子哉若人!鲁无君子者,斯焉取斯?”

子贡问曰:“赐也何如?”子曰:“女器也。”曰:“何器也?”曰:“瑚琏也。”

或曰:“雍也仁而不佞。”子曰:“焉用佞?御人以口给,屡憎于人。不知其仁,焉用佞?”

子使漆雕开仕,对曰:“吾斯之未能信。”子说。

子曰:“道不行,乘桴浮于海,从我者其由与?”子路闻之喜,子曰:“由也好勇过我,无所取材。”

孟武伯问:“子路仁乎?”子曰:“不知也。”又问,子曰:“由也,千乘之国,可使治其赋也,不知其仁也。”“求也何如?”子曰:“求也,千室之邑、百乘之家,可使为之宰也,不知其仁也。”“赤也何如?”子曰:“赤也,束带立于朝,可使与宾客言也,不知其仁也。”

子谓子贡曰:“女与回也孰愈?”对曰:“赐也何敢望回?回也闻一以知十,赐也闻一以知二。”子曰:“弗如也,吾与女弗如也!”

宰予昼寝,子曰:“朽木不可雕也,粪土之墙不可杇也,于予与何诛?”子曰:“始吾于人也,听其言而信其行;今吾于人也,听其言而观其行。于予与改是。”

子曰:“吾未见刚者。”或对曰:“申枨。”子曰:“枨也欲,焉得刚。”

子贡曰:“我不欲人之加诸我也,吾亦欲无加诸人。”子曰:“赐也,非尔所及也。”

子贡曰:“夫子之文章,可得而闻也;夫子之言性与天道,不可得而闻也。”

子路有闻,未之能行,唯恐有闻。

子贡问曰:“孔文子何以谓之文也?”子曰:“敏而好学,不耻下问,是以谓之文也。”

子谓子产:“有君子之道四焉:其行己也恭,其事上也敬,其养民也惠,其使民也义。”

子曰:“晏平仲善与人交,久而敬之。”

子张问曰:“令尹子文三仕为令尹,无喜色,三已之无愠色,旧令尹之政必以告新令尹,何如?”子曰:“忠矣。”曰:“仁矣乎?”曰:“未知,焉得仁?”“崔子弑齐君,陈文子有马十乘,弃而违之。至于他邦,则曰:‘犹吾大夫崔子也。’违之。之一邦,则又曰:‘犹吾大夫崔子也。’违之,何如?”子曰:“清矣。”曰:“仁矣乎?”曰:“未知,焉得仁?”

{% endblock %} {% block slider %}
  1. 文章列表

  2. {% for article in articles %}
  3. {{ article.title }}
  4. {% endfor %}
{% endblock %}

当然,大部分内容去百度复制粘贴的,不过这里你要看一下这一段代码。

{% block slider %}
    
  1. 文章列表

  2. {% for article in articles %}
  3. {{ article.title }}
  4. {% endfor %}
{% endblock %}

我们利用一个for循环,通过视图函数传过来的参数,做了一个文章列表,效果如下:

Day07 后台管理与发布文章_第2张图片

为了把效果实现出来,我们需要在视图函数中把参数传进来,然后让Jinja2引擎渲染一下。
还记得之前提到Jinja2引擎的时候,它可以想在python里面一样可以解析复杂的数据类型,比如咱这个article。

from ..models import Article


@main.route('/', methods=['GET', 'POST'])
def index():
    articles = Article.query.all()
    return render_template('index.html', articles=articles)

也很简单拉,把所有文章从数据库获取一下,传进去就好了。

能显示文章列表了,我们需要单独把文章显示出来。

  • {{ article.title }}
  • 其实阿,这段代码,是我已经把代码都写好了的,因为这个时候你可能还没有把相关的html页面写好。所以说那个
    a标签中的href属性可以先不写,然后等会在写就好。

    app/templates/article.html

    {% extends 'base.html' %}
    
    {% block page_content %}
        
        
    {{ content }}
    {% endblock %}

    文章的页面也很简单,一个标题,一个内容。两个变量。

    再看一下视图函数:

    @main.route('/article/')
    def article(title):
        article = Article.query.filter_by(title=title).first()
        return render_template('article.html', title=title, content=article.content)
    </code></pre> 
     <p>你看这里,还记得动态路由么,这里用到了动态路由,通过文章的标题来从数据库把这篇文章数据获取出来。<br> 然后把标题和文章内容传参到HTML页面就可以了。</p> 
     <p>这个时候,你就可以把app/templates/index.html页面中那个文章列表的a标签的href属性补全了。</p> 
     <p>这里说一下,你看啊,我们的功能在不断的增加,可是基本上都没有大幅度改动我们的原先的代码,而是为新功能写好代码,添加进去。这是一个非常好的表现,增加新功能而又不与原先代码有冲突。</p> 
    </article>
                                </div>
                            </div>
                        </div>
                        <!--PC和WAP自适应版-->
                        <div id="SOHUCS" sid="1237403151313727488"></div>
                        <script type="text/javascript" src="/views/front/js/chanyan.js"></script>
                        <!-- 文章页-底部 动态广告位 -->
                        <div class="youdao-fixed-ad" id="detail_ad_bottom"></div>
                    </div>
                    <div class="col-md-3">
                        <div class="row" id="ad">
                            <!-- 文章页-右侧1 动态广告位 -->
                            <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                                <div class="youdao-fixed-ad" id="detail_ad_1"> </div>
                            </div>
                            <!-- 文章页-右侧2 动态广告位 -->
                            <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                                <div class="youdao-fixed-ad" id="detail_ad_2"></div>
                            </div>
                            <!-- 文章页-右侧3 动态广告位 -->
                            <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                                <div class="youdao-fixed-ad" id="detail_ad_3"></div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <div class="container">
            <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(Day07 后台管理与发布文章)</h4>
            <div id="paradigm-article-related">
                <div class="recommend-post mb30">
                    <ul class="widget-links">
                        <li><a href="/article/1884190189849473024.htm"
                               title="AI智能制造软件有什么用处" target="_blank">AI智能制造软件有什么用处</a>
                            <span class="text-muted">雪叶雨林</span>
    <a class="tag" taget="_blank" href="/search/%E8%A1%8C%E4%B8%9A%E8%B5%84%E8%AE%AF/1.htm">行业资讯</a><a class="tag" taget="_blank" href="/search/AI/1.htm">AI</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E5%88%B6%E9%80%A0/1.htm">制造</a>
                            <div>随着信息技术与制造业的深度融合,人工智能(AI)逐渐成为提升制造效率和灵活性的重要工具。AI智能制造软件通过集成数据分析、机器学习和自动化流程,为企业提供了优化生产、降低成本和提高质量的新途径。生产过程优化实时监控与反馈AI智能制造软件能够实时收集生产线上的各类数据,如温度、压力、速度等参数,并通过机器学习算法进行分析处理。一旦检测到异常情况,系统会立即发出警报并提供改进建议,帮助企业快速响应问题</div>
                        </li>
                        <li><a href="/article/1884189811405811712.htm"
                               title="Rockchip --- 放音设备调试" target="_blank">Rockchip --- 放音设备调试</a>
                            <span class="text-muted">臻一</span>
    <a class="tag" taget="_blank" href="/search/Rockchip/1.htm">Rockchip</a><a class="tag" taget="_blank" href="/search/ALSA/1.htm">ALSA</a>
                            <div>文章目录(一)aplay工具1.显示帮助信息2.列出所有放音设备3.播放音频:(二)amixer工具1.查看帮助信息2.查看声卡设置3.设置音量4.静音和取消静音5.保存和加载混音器设置(一)aplay工具aplay是Linux系统中ALSA(AdvancedLinuxSoundArchitecture)提供的一个命令行工具,用于播放音频文件。以下是一些常用的aplay命令及其参数:1.显示帮助信</div>
                        </li>
                        <li><a href="/article/1884189558862573568.htm"
                               title="NumPy与Matplotlib库" target="_blank">NumPy与Matplotlib库</a>
                            <span class="text-muted">我是一名好学者</span>
    <a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a>
                            <div>NumPy1.1导入NumPy库importnumpyasnpPython中使用import导入库,这里的意思是将numpy作为np导入。通过这样的形式,之后NumPy相关的方法均可通过np调用。1.2生成NumPy数组importnumpyasnpx=np.array([1.0,2.0,3.0])print(x)print(type(x))输出结果:[1.2.3.]使用np.array()方法接</div>
                        </li>
                        <li><a href="/article/1884189305816018944.htm"
                               title="ModuleNotFoundError: No module named ‘pywin32_bootstrap‘解决方案" target="_blank">ModuleNotFoundError: No module named ‘pywin32_bootstrap‘解决方案</a>
                            <span class="text-muted">爱编程的喵喵</span>
    <a class="tag" taget="_blank" href="/search/Python%E5%9F%BA%E7%A1%80%E8%AF%BE%E7%A8%8B/1.htm">Python基础课程</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/ModuleNotFound/1.htm">ModuleNotFound</a><a class="tag" taget="_blank" href="/search/win32_bootstap/1.htm">win32_bootstap</a><a class="tag" taget="_blank" href="/search/%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/1.htm">解决方案</a>
                            <div>  大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的知识进行总结与归纳,不仅形成深入且独到的理解,而且能够帮助新手快速入门。  本文主要介绍了ModuleNotFoundErro</div>
                        </li>
                        <li><a href="/article/1884188424001351680.htm"
                               title="Heritrix网络爬虫与Tomcat服务器部署指南" target="_blank">Heritrix网络爬虫与Tomcat服务器部署指南</a>
                            <span class="text-muted">Rubix-Kai</span>
    
                            <div>本文还有配套的精品资源,点击获取简介:Heritrix是一款功能强大的开源网络爬虫工具,由互联网档案馆开发,适用于大规模网页抓取。本文将指导读者如何下载、安装Heritrix,并在Tomcat服务器上进行部署和运行。内容包括Heritrix的基本概念、下载与安装步骤、集成到Eclipse的过程、配置Heritrix、构建与运行、部署到Tomcat以及如何访问Heritrix的Web界面。此外,还包</div>
                        </li>
                        <li><a href="/article/1884187289412759552.htm"
                               title="Window平台Git-Bash的主题配置" target="_blank">Window平台Git-Bash的主题配置</a>
                            <span class="text-muted">SpeculateCat</span>
    <a class="tag" taget="_blank" href="/search/Coding/1.htm">Coding</a><a class="tag" taget="_blank" href="/search/Note/1.htm">Note</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/cmd/1.htm">cmd</a><a class="tag" taget="_blank" href="/search/git/1.htm">git</a><a class="tag" taget="_blank" href="/search/git-bash/1.htm">git-bash</a>
                            <div>通过这篇文章,可以了解到:为什么要使用Git-Bash,以及Git-Bash的优点Git-Bash的外观主题配置Git-Bash的优点在开发的过程中,我们可能需要使用大量的命令行工具,或者远程连接到服务器进行操作。然而,由于Window自带的CMD和PowerShell都不太好用,而且在Window下的命令又与Linux和MacOS的命令不太一样,如果需要经常跨平台操作,学习Window的命令行命</div>
                        </li>
                        <li><a href="/article/1884187160433717248.htm"
                               title="python中的数组与列表,python中的数组和列表" target="_blank">python中的数组与列表,python中的数组和列表</a>
                            <span class="text-muted">程新皓</span>
    <a class="tag" taget="_blank" href="/search/python%E4%B8%AD%E7%9A%84%E6%95%B0%E7%BB%84%E4%B8%8E%E5%88%97%E8%A1%A8/1.htm">python中的数组与列表</a>
                            <div>#环境win64+anaconda+python3.6list&array(1)list不具有array的全部属性(如维度、转置等)代码1:#eg1_1importnumpyasnpa=np.array([[1,2,0,1],[1,6,9,55],[7,8,9,5]])#a为数组print(a.T)#Result:[[117][268][099][1555]]#eg1_2a=[[1,2,0,1],</div>
                        </li>
                        <li><a href="/article/1884187034118057984.htm"
                               title="GSEA - Gene set enrichment analysis 基因集富集 | ORA - Over-Representation Analysis 分析原理与应用..." target="_blank">GSEA - Gene set enrichment analysis 基因集富集 | ORA - Over-Representation Analysis 分析原理与应用...</a>
                            <span class="text-muted">weixin_30294709</span>
    <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                            <div>R批量做GSEA分析还没有官方的包,但是clusterprofiler可以做,它调用了最新的gfsea包。GeneSetTestingforRNA-seq-fgsea教程RNA-seq是利器,大部分做实验的老板手下都有大量转录组数据,所以RNA-seq的分析需求应该是很大的(大部分的生信从业人员应该都差不多要沾边吧)。普通的转录组套路并不多,差异表达基因、富集分析、WGCNAnetwork以及一些</div>
                        </li>
                        <li><a href="/article/1884186152257253376.htm"
                               title="VMware ESXi 8.0U3c macOS Unlocker & OEM BIOS Dell (戴尔) 定制版" target="_blank">VMware ESXi 8.0U3c macOS Unlocker & OEM BIOS Dell (戴尔) 定制版</a>
                            <span class="text-muted">sysinside</span>
    <a class="tag" taget="_blank" href="/search/VMware/1.htm">VMware</a><a class="tag" taget="_blank" href="/search/Dell/1.htm">Dell</a><a class="tag" taget="_blank" href="/search/OEM/1.htm">OEM</a><a class="tag" taget="_blank" href="/search/ESXi/1.htm">ESXi</a><a class="tag" taget="_blank" href="/search/macOS/1.htm">macOS</a>
                            <div>VMwareESXi8.0U3cmacOSUnlocker&OEMBIOSDell(戴尔)定制版ESXi8.0U3c标准版,Dell(戴尔)、HPE(慧与)、Lenovo(联想)、Inspur(浪潮)、Cisco(思科)、Hitachi(日立)、Fujitsu(富士通)、NEC(日电)、Huawei(华为)、xFusion(超聚变)OEM定制版请访问原文链接:https://sysin.org/b</div>
                        </li>
                        <li><a href="/article/1884186025929011200.htm"
                               title="学霸带你游戏化协作学习打造团队如同组队打副本" target="_blank">学霸带你游戏化协作学习打造团队如同组队打副本</a>
                            <span class="text-muted">Snow Hide(雪诺海德)</span>
    <a class="tag" taget="_blank" href="/search/%E7%BA%BD%E9%9B%AA%E6%BE%B3%E8%AF%BA%E5%8A%A0%E6%B5%B7%E7%BE%8E%E5%BE%B7/1.htm">纽雪澳诺加海美德</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E9%9C%B8%E6%8C%BA%E6%8B%94/1.htm">学霸挺拔</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E9%9C%B8%E6%8C%BA%E6%8B%94/1.htm">学霸挺拔</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E6%9C%AF%E4%BA%92%E5%8A%A9/1.htm">学术互助</a><a class="tag" taget="_blank" href="/search/%E7%A4%BE%E5%8C%BA%E6%88%90%E9%95%BF/1.htm">社区成长</a><a class="tag" taget="_blank" href="/search/%E7%9F%A5%E8%AF%86%E8%BE%93%E5%87%BA/1.htm">知识输出</a><a class="tag" taget="_blank" href="/search/%E4%B8%93%E4%B8%9A%E7%A7%AF%E7%B4%AF/1.htm">专业积累</a>
                            <div>学术互助的成长之路在学霸社区中,学术互助不仅是分享知识,更是汲取成长动力的重要途径。从高质量提问到构建个人品牌,这一切都关乎如何更高效地融入社区,提升自身能力。在这里,协作与学习相辅相成,每一个互动都可能成为成长的关键节点。精准提问是开启学习的钥匙通过明确问题背景、精炼语言和提供支持数据,精准提问能帮助你更快获取专业解答,像《传送门2》(Portal2)中的任务设计一样,让每一步都有方向。高质量回</div>
                        </li>
                        <li><a href="/article/1884184259896340480.htm"
                               title="Nginx(二):主配置文件 nginx.conf 6个指令块" target="_blank">Nginx(二):主配置文件 nginx.conf 6个指令块</a>
                            <span class="text-muted">shyuu_</span>
    <a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4%E5%BC%80%E5%8F%91/1.htm">运维开发</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E8%AE%A1%E7%AE%97/1.htm">云计算</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                            <div>文章目录主配置文件nginx.conf详解1.全局块2.events块(I/O事件块)3.HTTP块4.Server块5.Location块6.Upstream块1.全局块2.events块(I/O事件块)3.HTTP块4.Server块5.Location块6.Upstream块主配置文件nginx.conf详解文件位置:/usr/local/nginx/conf/nginx.conf概述:全局</div>
                        </li>
                        <li><a href="/article/1884184007730589696.htm"
                               title="LAMP(Linux、Apache、MySQL、PHP)环境搭建和项目部署 编译安装 全流程!" target="_blank">LAMP(Linux、Apache、MySQL、PHP)环境搭建和项目部署 编译安装 全流程!</a>
                            <span class="text-muted">shyuu_</span>
    <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/apache/1.htm">apache</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E8%AE%A1%E7%AE%97/1.htm">云计算</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/php/1.htm">php</a>
                            <div>文章目录LAMP架构LAMP架构组件LAMP架构的工作流程LAMP组件的安装顺序编译安装ApacheHTTP服务器1.关闭防火墙并准备安装所需软件包2.安装环境依赖包3.配置软件模块4.编译及安装5.优化配置文件路径6.添加httpd服务到系统服务管理7.修改httpd服务配置文件8.浏览器访问验证编译安装MySQLd服务1.准备安装包2.安装环境依赖包3.配置软件模块4.编译及安装5.创建MyS</div>
                        </li>
                        <li><a href="/article/1884184006807842816.htm"
                               title="Linux下BIND安装与配置详解:正向解析、反向解析、主从域名服务器的搭建" target="_blank">Linux下BIND安装与配置详解:正向解析、反向解析、主从域名服务器的搭建</a>
                            <span class="text-muted">shyuu_</span>
    <a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E8%AE%A1%E7%AE%97/1.htm">云计算</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a>
                            <div>文章目录案例:BIND安装与配置详解一、安装BIND软件包二、配置BIND主服务器(正向解析)三、配置反向解析四、配置主从DNS服务器及自动同步案例:BIND安装与配置详解一、安装BIND软件包安装BIND软件包通过网络源或挂载的光盘安装BIND:yuminstallbind-y或者通过RPM包安装,前提是挂载系统盘ISO镜像:rpm-ivhbind-x.x.x-x.el7.x86_64.rpm查</div>
                        </li>
                        <li><a href="/article/1884183754734366720.htm"
                               title="安装CentOS时的分区方法" target="_blank">安装CentOS时的分区方法</a>
                            <span class="text-muted">shyuu_</span>
    <a class="tag" taget="_blank" href="/search/centos/1.htm">centos</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                            <div>【系列】真机安装CentOSStream8问题第一步解决安装过程报错第二步分区(❗︎本节内容❗︎)第三步配置软件源第四步安装显卡驱动第五步挂载U盘第六步解决没有1920x1080分辨率的问题文章目录【系列】真机安装CentOSStream8问题一、分区描述1.1分区建议1.2手动分区步骤1.3分区示例二、其余硬盘总结一、分区描述在CentOS安装的过程中需要分区,尤其是在生产环境或者真实机器安装,</div>
                        </li>
                        <li><a href="/article/1884183501545205760.htm"
                               title="Android Studio 打包APK方法" target="_blank">Android Studio 打包APK方法</a>
                            <span class="text-muted">爱桃酥的沐晨</span>
    <a class="tag" taget="_blank" href="/search/Android/1.htm">Android</a><a class="tag" taget="_blank" href="/search/AndroidStudio%E6%89%93%E5%8C%85/1.htm">AndroidStudio打包</a><a class="tag" taget="_blank" href="/search/apk%E6%89%93%E5%8C%85/1.htm">apk打包</a>
                            <div>AndroidStudio是谷歌推出一个Android集成开发工具,基于IntelliJIDEA。它类似于EclipseADT,AndroidStudio提供了集成的Android开发工具用于开发和调试。那么今天我们就来讲讲如何通过AndroidStudio打包APK文件,相信有很多用户还不是非常了解,下面通过这篇文章给大家介绍一下。前面一直使用的是out文件夹里面的那个apk文件(debug版本</div>
                        </li>
                        <li><a href="/article/1884181988554895360.htm"
                               title="快手粉丝暴涨秘籍,私信获客技巧大揭秘" target="_blank">快手粉丝暴涨秘籍,私信获客技巧大揭秘</a>
                            <span class="text-muted">qianli654</span>
    <a class="tag" taget="_blank" href="/search/rpa/1.htm">rpa</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                            <div>在数字营销的海洋中,如何有效地吸引粉丝、提升品牌影响力,成为每个内容创作者和企业关注的重点。今天,我们要探讨的是一个高效获客的策略——利用快手平台进行自动私信推广,这一策略能让你的粉丝数量实现飞跃式的增长。快手作为一个短视频与直播平台,汇聚了海量的用户群体。其强大的用户粘性和社交属性让众多品牌和个体看到了巨大的市场潜力。而私信功能则是连接用户与内容创作者的桥梁,通过精准的自动私信,可以有效触达潜在</div>
                        </li>
                        <li><a href="/article/1884181105549045760.htm"
                               title="项目集成Nacos" target="_blank">项目集成Nacos</a>
                            <span class="text-muted">S-X-S</span>
    <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/Nacos/1.htm">Nacos</a>
                            <div>文章目录1.环境搭建1.创建模块sunrays-common-cloud-nacos-starter2.目录结构3.pom.xml4.自动配置1.NacosAutoConfiguration.java2.spring.factories5.引入cloud模块通用依赖2.测试1.创建模块sunrays-common-cloud-nacos-starter-demo2.目录结构3.pom.xml4.a</div>
                        </li>
                        <li><a href="/article/1884181106643759104.htm"
                               title="vscode通过ssh连接github仓库(git+ssh+github+vscode详细步骤)" target="_blank">vscode通过ssh连接github仓库(git+ssh+github+vscode详细步骤)</a>
                            <span class="text-muted">en你好</span>
    <a class="tag" taget="_blank" href="/search/vscode/1.htm">vscode</a><a class="tag" taget="_blank" href="/search/ssh/1.htm">ssh</a><a class="tag" taget="_blank" href="/search/github/1.htm">github</a><a class="tag" taget="_blank" href="/search/git/1.htm">git</a>
                            <div>vscode如何通过ssh连接github仓库(详细步骤)文章目录vscode如何通过ssh连接github仓库(详细步骤)前言1.ssh2.github一、安装Git二、获取ssh密钥三、在github配置ssh密钥四、在vscode上添加远程仓库总结前言首先我们先来了解一下什么是ssh和github1.sshSSH(SecureShell)是一种网络协议,用于在不安全的网络中安全地传输数据和执</div>
                        </li>
                        <li><a href="/article/1884180095891992576.htm"
                               title="【微服务与分布式实践】探索 Sentinel" target="_blank">【微服务与分布式实践】探索 Sentinel</a>
                            <span class="text-muted">Forest 森林</span>
    <a class="tag" taget="_blank" href="/search/%E5%BE%AE%E6%9C%8D%E5%8A%A1%E4%B8%8E%E5%88%86%E5%B8%83%E5%BC%8F%E5%AE%9E%E8%B7%B5/1.htm">微服务与分布式实践</a><a class="tag" taget="_blank" href="/search/sentinel/1.htm">sentinel</a>
                            <div>参数设置熔断时长、最小请求数、最大RTms、比例阈值、异常数熔断策略慢调⽤⽐例当单位统计时⻓内请求数⽬⼤于设置的最⼩请求数⽬,并且慢调⽤的⽐例⼤于阈值,则接下来的熔断时⻓内请求会⾃动被熔断异常⽐例当单位统计时⻓内请求数⽬⼤于设置的最⼩请求数⽬,并且异常的⽐例⼤于阈值,则接下来的熔断时⻓内请求会⾃动被熔断异常数当单位统计时⻓内的异常数⽬超过阈值之后会⾃动进⾏熔断熔断规则熔断条件接口异常率超过10%,</div>
                        </li>
                        <li><a href="/article/1884179969697968128.htm"
                               title="【微服务与分布式实践】探索 Dubbo" target="_blank">【微服务与分布式实践】探索 Dubbo</a>
                            <span class="text-muted">Forest 森林</span>
    <a class="tag" taget="_blank" href="/search/%E5%BE%AE%E6%9C%8D%E5%8A%A1%E4%B8%8E%E5%88%86%E5%B8%83%E5%BC%8F%E5%AE%9E%E8%B7%B5/1.htm">微服务与分布式实践</a><a class="tag" taget="_blank" href="/search/dubbo/1.htm">dubbo</a>
                            <div>核心组件服务注册与发现原理服务提供者启动时,会将其服务信息(如服务名、版本、所在节点的网络地址等)注册到注册中心。服务消费者则可以从注册中心发现可用的服务提供者列表,并与之通信。注册中心会存储服务的信息,并将这些信息广播给已经订阅了该服务的服务消费者。服务消费者会将获取到的服务提供者列表缓存到本地,以便后续直接访问。心跳检测机制:服务提供者会定期向注册中心发送心跳消息,注册中心根据这些心跳消息判断</div>
                        </li>
                        <li><a href="/article/1884178833934970880.htm"
                               title="shell sed多行文本处理" target="_blank">shell sed多行文本处理</a>
                            <span class="text-muted">刘静飞</span>
    <a class="tag" taget="_blank" href="/search/shell/1.htm">shell</a><a class="tag" taget="_blank" href="/search/%E5%8E%9F%E5%88%9B/1.htm">原创</a><a class="tag" taget="_blank" href="/search/shell/1.htm">shell</a><a class="tag" taget="_blank" href="/search/sed%E5%A4%9A%E6%96%87%E6%9C%AC%E5%A4%84%E7%90%86/1.htm">sed多文本处理</a>
                            <div>3.sed多行文本处理问题本案例要求使用sed工具来完成下列任务操作:修改主机名配置文件修改hosts文件,添加两条映射记录:192.168.4.5与svr5.tarena.com、svr5,还有119.75.217.56与www.baidu.com方案sed工具的多行文本处理操作:i:在指定的行之前插入文本a:在指定的行之后追加文本c:替换指定的行步骤实现此案例需要按照如下步骤进行。步骤一</div>
                        </li>
                        <li><a href="/article/1884177951994474496.htm"
                               title="100个高质量ChatGPT学术论文写作提示词分享--系列(二)" target="_blank">100个高质量ChatGPT学术论文写作提示词分享--系列(二)</a>
                            <span class="text-muted">迪娜学姐</span>
    <a class="tag" taget="_blank" href="/search/%E8%AE%BA%E6%96%87%E9%98%85%E8%AF%BB/1.htm">论文阅读</a><a class="tag" taget="_blank" href="/search/%E8%AE%BA%E6%96%87%E7%AC%94%E8%AE%B0/1.htm">论文笔记</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/chatgpt/1.htm">chatgpt</a>
                            <div>我是娜姐@迪娜学姐,一个SCI医学期刊编辑,探索用AI工具提效论文写作和发表。ChatGPT学术论文写作高质量提示词分享,之前分享过50个,涵盖论文写作、文献综述、研究方法设计、数据分析、学术演讲准备等方面:100个高质量ChatGPT学术论文写作提示词分享--系列(一)今天继续分享50个,包括论文修改与编辑、写作技巧与提升、参考文献引用及编辑、论文投稿和课题申请:6论文修改与编辑(ThesisR</div>
                        </li>
                        <li><a href="/article/1884177698515906560.htm"
                               title="概念一: python 中列表 ,数组, 集合,字典;" target="_blank">概念一: python 中列表 ,数组, 集合,字典;</a>
                            <span class="text-muted">ZhengXinTang</span>
    <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/python%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">python数据结构</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/list/1.htm">list</a>
                            <div>1.python基本数据类型首先python3中自带的有六个标准的数据结构类型:Number(数字)String(字符串)Tuple(元组)List(列表)Set(集合)Dictionary(字典)不可变数据(3个):Number(数字)、String(字符串)、Tuple(元组);可变数据(3个):List(列表)、Dictionary(字典)、Set(集合)。2.数据类型各自的特点2.1数组与</div>
                        </li>
                        <li><a href="/article/1884177699140857856.htm"
                               title="SQLAlchemy 使用(一)创建单一model" target="_blank">SQLAlchemy 使用(一)创建单一model</a>
                            <span class="text-muted">dehaili6776</span>
    <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                            <div>前言最近项目等待前端接接口,比较空闲.就想学习一些新东西.学啥呢?考虑到ORM的易用性,还是学习一下ORM.那么与Flask搭配的ORM有flask-sqlalchemy但是该组件专为Flask定制.如JWT与Flask-JWT,考虑到适用性,还是觉得学SQLAlchemy好一些.正文安装要想使用SQLAlchemy,首当其冲的当然是安装啦pipinstallsqlalchemy建立model文件</div>
                        </li>
                        <li><a href="/article/1884177064286810112.htm"
                               title="常用的前端4种请求方式" target="_blank">常用的前端4种请求方式</a>
                            <span class="text-muted">紫水木鱼</span>
    <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                            <div>文章目录一、GET请求1.1使用方式1.2优缺点1.3应用场景二、POST请求2.1使用方式2.2优缺点2.3应用场景三、PUT请求3.1使用方式3.2优缺点3.3应用场景四、DELETE请求4.1使用方式4.2优缺点4.3应用场景五.总结一、GET请求GET请求用于向指定资源发出请求,请求中包含了资源的URL和请求参数。服务器端通过解析请求参数来返回相应的资源,不会修改服务器端的状态。1.1使用</div>
                        </li>
                        <li><a href="/article/1884175926342774784.htm"
                               title="mbedtls | 06 - 非对称加密算法的配置与使用(RSA算法)" target="_blank">mbedtls | 06 - 非对称加密算法的配置与使用(RSA算法)</a>
                            <span class="text-muted">Mculover666</span>
    <a class="tag" taget="_blank" href="/search/mbedtls/1.htm">mbedtls</a><a class="tag" taget="_blank" href="/search/RSA/1.htm">RSA</a>
                            <div>mbedtls系列文章mbedtls|01-移植mbedtls库到STM32的两种方法mbedtls|02-伪随机数生成器(ctr_drbg)的配置与使用mbedtls|03-单向散列算法的配置与使用(MD5、SHA1、SHA256、SHA512)mbedtls|04-对称加密算法的配置与使用(AES算法)mbedtls|05-消息认证码的配置与使用(HMAC算法、GCM算法)Demo工程源码ht</div>
                        </li>
                        <li><a href="/article/1884174159441883136.htm"
                               title="我转世到1995年写JavaScript称霸程序员-时空裂缝中的初识" target="_blank">我转世到1995年写JavaScript称霸程序员-时空裂缝中的初识</a>
                            <span class="text-muted">HYP_Coder</span>
    <a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/ecmascript/1.htm">ecmascript</a>
                            <div>第一章:时空裂缝中的初识——穿越到1995年,开始编写JavaScript目录第一章:时空裂缝中的初识——穿越到1995年,开始编写JavaScript一切从零开始——了解JavaScript的基础走向深处——控制流与循环结构历史的车轮——预见未来深入探索:函数——代码的核心力量对象与数组——掌握数据结构的钥匙浏览器与DOM——向网页世界进发结语——开始征程雨,淅淅沥沥地拍打着窗户,夜色也随之变得</div>
                        </li>
                        <li><a href="/article/1884174157755772928.htm"
                               title="在Visual Studio Code中配置C/C++开发环境——从零开始" target="_blank">在Visual Studio Code中配置C/C++开发环境——从零开始</a>
                            <span class="text-muted">HYP_Coder</span>
    <a class="tag" taget="_blank" href="/search/c/1.htm">c</a><a class="tag" taget="_blank" href="/search/vscode/1.htm">vscode</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/ide/1.htm">ide</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E8%BE%91%E5%99%A8/1.htm">编辑器</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a>
                            <div>如何在VisualStudioCode中配置C/C++开发环境——从零开始引言在学习C/C++编程时,一个高效的开发环境可以极大地提升你的编程体验和效率。VisualStudioCode(VSCode)是一个流行的代码编辑器,它以其强大的功能和灵活的配置而闻名。即使你之前从未编写过任何代码,这篇文章也将带你一步步了解如何在VSCode中配置C/C++开发环境,让你能够顺利地开始编写、编译和调试C/</div>
                        </li>
                        <li><a href="/article/1884173779882536960.htm"
                               title="2025年软件工程/计算机科学与技术最新毕业设计专题精选推荐" target="_blank">2025年软件工程/计算机科学与技术最新毕业设计专题精选推荐</a>
                            <span class="text-muted">小五java毕设</span>
    <a class="tag" taget="_blank" href="/search/java%E6%AF%95%E8%AE%BE%E9%80%89%E9%A2%98%E6%8E%A8%E8%8D%90%E6%A1%88%E4%BE%8B/1.htm">java毕设选题推荐案例</a><a class="tag" taget="_blank" href="/search/%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/1.htm">软件工程</a><a class="tag" taget="_blank" href="/search/%E8%AF%BE%E7%A8%8B%E8%AE%BE%E8%AE%A1/1.htm">课程设计</a><a class="tag" taget="_blank" href="/search/%E6%AF%95%E4%B8%9A%E8%AE%BE%E8%AE%A1/1.htm">毕业设计</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                            <div>选题指导:近期开题的同学越来越多,很多同学不知道怎么选题,不知道老师分配的题目应该怎么做,指导老师分享的信息不多,无从下手?选题避坑:毕设选题实际上对很多同学来说一个大坑,每年挖坑给自己跳的人太多太多,选题选得好后面的答辩以及论文撰写会轻松很多,选的不好就是一个无穷无尽的折磨难度把控:其实这主要是由于大部分同学对某种具体场景所需要的技术不清晰而导致的,定题的时候想当然的觉得某种功能是很好实现的,但</div>
                        </li>
                        <li><a href="/article/1884172142308814848.htm"
                               title="Android Studio APK打包(签名),【大牛系列教学】" target="_blank">Android Studio APK打包(签名),【大牛系列教学】</a>
                            <span class="text-muted">2401_84150187</span>
    <a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/studio/1.htm">studio</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a>
                            <div>release版本的未签名的apk文件,在某些手机上无法安装,比如OPPOdebug版和release版的区别:debug版包含调试信息,往往没有任何优化,适合程序调试release版是发布版,供用户使用,往往进行了各种优化一、新建项目本着实践的态度,新建一个GenerateAPK项目创建完成后,你可以运行一下,运行在趁机或者虚拟机都可以二、生成Debug和Release包当你看到这个页面的时候,</div>
                        </li>
                                    <li><a href="/article/58.htm"
                                           title="多线程编程之理财" target="_blank">多线程编程之理财</a>
                                        <span class="text-muted">周凡杨</span>
    <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">多线程</a><a class="tag" taget="_blank" href="/search/%E7%94%9F%E4%BA%A7%E8%80%85/1.htm">生产者</a><a class="tag" taget="_blank" href="/search/%E6%B6%88%E8%B4%B9%E8%80%85/1.htm">消费者</a><a class="tag" taget="_blank" href="/search/%E7%90%86%E8%B4%A2/1.htm">理财</a>
                                        <div>      现实生活中,我们一边工作,一边消费,正常情况下会把多余的钱存起来,比如存到余额宝,还可以多挣点钱,现在就有这个情况:我每月可以发工资20000万元 (暂定每月的1号),每月消费5000(租房+生活费)元(暂定每月的1号),其中租金是大头占90%,交房租的方式可以选择(一月一交,两月一交、三月一交),理财:1万元存余额宝一天可以赚1元钱,</div>
                                    </li>
                                    <li><a href="/article/185.htm"
                                           title="[Zookeeper学习笔记之三]Zookeeper会话超时机制" target="_blank">[Zookeeper学习笔记之三]Zookeeper会话超时机制</a>
                                        <span class="text-muted">bit1129</span>
    <a class="tag" taget="_blank" href="/search/zookeeper/1.htm">zookeeper</a>
                                        <div>首先,会话超时是由Zookeeper服务端通知客户端会话已经超时,客户端不能自行决定会话已经超时,不过客户端可以通过调用Zookeeper.close()主动的发起会话结束请求,如下的代码输出内容 
    Created /zoo-739160015 
    CONNECTEDCONNECTED 
    .............CONNECTEDCONNECTED 
    CONNECTEDCLOSEDCLOSED 
    </div>
                                    </li>
                                    <li><a href="/article/312.htm"
                                           title="SecureCRT快捷键" target="_blank">SecureCRT快捷键</a>
                                        <span class="text-muted">daizj</span>
    <a class="tag" taget="_blank" href="/search/secureCRT/1.htm">secureCRT</a><a class="tag" taget="_blank" href="/search/%E5%BF%AB%E6%8D%B7%E9%94%AE/1.htm">快捷键</a>
                                        <div>ctrl + a : 移动光标到行首ctrl + e :移动光标到行尾crtl + b: 光标前移1个字符crtl + f: 光标后移1个字符crtl + h : 删除光标之前的一个字符ctrl + d :删除光标之后的一个字符crtl + k :删除光标到行尾所有字符crtl + u : 删除光标至行首所有字符crtl + w:  删除光标至行首</div>
                                    </li>
                                    <li><a href="/article/439.htm"
                                           title="Java 子类与父类这间的转换" target="_blank">Java 子类与父类这间的转换</a>
                                        <span class="text-muted">周凡杨</span>
    <a class="tag" taget="_blank" href="/search/java+%E7%88%B6%E7%B1%BB%E4%B8%8E%E5%AD%90%E7%B1%BB%E7%9A%84%E8%BD%AC%E6%8D%A2/1.htm">java 父类与子类的转换</a>
                                        <div>    最近同事调的一个服务报错,查看后是日期之间转换出的问题。代码里是把 java.sql.Date 类型的对象 强制转换为 java.sql.Timestamp 类型的对象。报java.lang.ClassCastException。 
      
        代码: 
                </div>
                                    </li>
                                    <li><a href="/article/566.htm"
                                           title="可视化swing界面编辑" target="_blank">可视化swing界面编辑</a>
                                        <span class="text-muted">朱辉辉33</span>
    <a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a><a class="tag" taget="_blank" href="/search/swing/1.htm">swing</a>
                                        <div>      今天发现了一个WindowBuilder插件,功能好强大,啊哈哈,从此告别手动编辑swing界面代码,直接像VB那样编辑界面,代码会自动生成。 
          首先在Eclipse中点击help,选择Install New Software,然后在Work with中输入WindowBui</div>
                                    </li>
                                    <li><a href="/article/693.htm"
                                           title="web报表工具FineReport常用函数的用法总结(文本函数)" target="_blank">web报表工具FineReport常用函数的用法总结(文本函数)</a>
                                        <span class="text-muted">老A不折腾</span>
    <a class="tag" taget="_blank" href="/search/finereport/1.htm">finereport</a><a class="tag" taget="_blank" href="/search/web%E6%8A%A5%E8%A1%A8%E5%B7%A5%E5%85%B7/1.htm">web报表工具</a><a class="tag" taget="_blank" href="/search/%E6%8A%A5%E8%A1%A8%E8%BD%AF%E4%BB%B6/1.htm">报表软件</a><a class="tag" taget="_blank" href="/search/java%E6%8A%A5%E8%A1%A8/1.htm">java报表</a>
                                        <div>文本函数 
    CHAR 
    CHAR(number):根据指定数字返回对应的字符。CHAR函数可将计算机其他类型的数字代码转换为字符。 
    Number:用于指定字符的数字,介于1Number:用于指定字符的数字,介于165535之间(包括1和65535)。 
    示例: 
    CHAR(88)等于“X”。 
    CHAR(45)等于“-”。 
      
    CODE 
    CODE(text):计算文本串中第一个字</div>
                                    </li>
                                    <li><a href="/article/820.htm"
                                           title="mysql安装出错" target="_blank">mysql安装出错</a>
                                        <span class="text-muted">林鹤霄</span>
    <a class="tag" taget="_blank" href="/search/mysql%E5%AE%89%E8%A3%85/1.htm">mysql安装</a>
                                        <div>[root@localhost ~]# rpm -ivh MySQL-server-5.5.24-1.linux2.6.x86_64.rpm Preparing...                #####################</div>
                                    </li>
                                    <li><a href="/article/947.htm"
                                           title="linux下编译libuv" target="_blank">linux下编译libuv</a>
                                        <span class="text-muted">aigo</span>
    <a class="tag" taget="_blank" href="/search/libuv/1.htm">libuv</a>
                                        <div>下载最新版本的libuv源码,解压后执行: 
    ./autogen.sh 
      
    这时会提醒找不到automake命令,通过一下命令执行安装(redhat系用yum,Debian系用apt-get): 
    # yum -y install automake 
    # yum -y install libtool 
      
      
    如果提示错误:make: *** No targe</div>
                                    </li>
                                    <li><a href="/article/1074.htm"
                                           title="中国行政区数据及三级联动菜单" target="_blank">中国行政区数据及三级联动菜单</a>
                                        <span class="text-muted">alxw4616</span>
    
                                        <div>近期做项目需要三级联动菜单,上网查了半天竟然没有发现一个能直接用的! 
    呵呵,都要自己填数据....我了个去这东西麻烦就麻烦的数据上. 
    哎,自己没办法动手写吧. 
    现将这些数据共享出了,以方便大家.嗯,代码也可以直接使用 
      文件说明 
     
     lib\area.sql -- 县及县以上行政区划分代码(截止2013年8月31日)来源:国家统计局 发布时间:2014-01-17 15:0</div>
                                    </li>
                                    <li><a href="/article/1201.htm"
                                           title="哈夫曼加密文件" target="_blank">哈夫曼加密文件</a>
                                        <span class="text-muted">百合不是茶</span>
    <a class="tag" taget="_blank" href="/search/%E5%93%88%E5%A4%AB%E6%9B%BC%E5%8E%8B%E7%BC%A9/1.htm">哈夫曼压缩</a><a class="tag" taget="_blank" href="/search/%E5%93%88%E5%A4%AB%E6%9B%BC%E5%8A%A0%E5%AF%86/1.htm">哈夫曼加密</a><a class="tag" taget="_blank" href="/search/%E4%BA%8C%E5%8F%89%E6%A0%91/1.htm">二叉树</a>
                                        <div> 在上一篇介绍过哈夫曼编码的基础知识,下面就直接介绍使用哈夫曼编码怎么来做文件加密或者压缩与解压的软件,对于新手来是有点难度的,主要还是要理清楚步骤; 
      
    加密步骤: 
     1,统计文件中字节出现的次数,作为权值 
      
    2,创建节点和哈夫曼树 
      
    3,得到每个子节点01串 
      
    4,使用哈夫曼编码表示每个字节 
      
    </div>
                                    </li>
                                    <li><a href="/article/1328.htm"
                                           title="JDK1.5 Cyclicbarrier实例" target="_blank">JDK1.5 Cyclicbarrier实例</a>
                                        <span class="text-muted">bijian1013</span>
    <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/thread/1.htm">thread</a><a class="tag" taget="_blank" href="/search/java%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">java多线程</a><a class="tag" taget="_blank" href="/search/Cyclicbarrier/1.htm">Cyclicbarrier</a>
                                        <div>CyclicBarrier类 
    一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在释放等待线程后可以重用,所以称它为循环的 barrier。 
    CyclicBarrier支持一个可选的 Runnable 命令,</div>
                                    </li>
                                    <li><a href="/article/1455.htm"
                                           title="九项重要的职业规划" target="_blank">九项重要的职业规划</a>
                                        <span class="text-muted">bijian1013</span>
    <a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a>
                                        <div>一. 学习的步伐不停止        古人说,活到老,学到老。终身学习应该是您的座右铭。        世界在不断变化,每个人都在寻找各自的事业途径。        您只有保证了足够的技能储</div>
                                    </li>
                                    <li><a href="/article/1582.htm"
                                           title="【Java范型四】范型方法" target="_blank">【Java范型四】范型方法</a>
                                        <span class="text-muted">bit1129</span>
    <a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                        <div>范型参数不仅仅可以用于类型的声明上,例如 
      
    package com.tom.lang.generics;
    
    import java.util.List;
    
    public class Generics<T> {
        private T value;
        public Generics(T  value) {
            this.value = </div>
                                    </li>
                                    <li><a href="/article/1709.htm"
                                           title="【Hadoop十三】HDFS Java API基本操作" target="_blank">【Hadoop十三】HDFS Java API基本操作</a>
                                        <span class="text-muted">bit1129</span>
    <a class="tag" taget="_blank" href="/search/hadoop/1.htm">hadoop</a>
                                        <div>  
    package com.examples.hadoop;
    
    import org.apache.hadoop.conf.Configuration;
    
    import org.apache.hadoop.fs.FSDataInputStream;
    import org.apache.hadoop.fs.FileStatus;
    import org.apache.hadoo</div>
                                    </li>
                                    <li><a href="/article/1836.htm"
                                           title="ua实现split字符串分隔" target="_blank">ua实现split字符串分隔</a>
                                        <span class="text-muted">ronin47</span>
    <a class="tag" taget="_blank" href="/search/lua+split/1.htm">lua split</a>
                                        <div>LUA并不象其它许多"大而全"的语言那样,包括很多功能,比如网络通讯、图形界面等。但是LUA可以很容易地被扩展:由宿主语言(通常是C或 C++)提供这些功能,LUA可以使用它们,就像是本来就内置的功能一样。LUA只包括一个精简的核心和最基本的库。这使得LUA体积小、启动速度快,从 而适合嵌入在别的程序里。因此在lua中并没有其他语言那样多的系统函数。习惯了其他语言的字符串分割函</div>
                                    </li>
                                    <li><a href="/article/1963.htm"
                                           title="java-从先序遍历和中序遍历重建二叉树" target="_blank">java-从先序遍历和中序遍历重建二叉树</a>
                                        <span class="text-muted">bylijinnan</span>
    <a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                        <div>
    
    public class BuildTreePreOrderInOrder {
    
    	/**
    	 * Build Binary Tree from PreOrder and InOrder
    	 *  _______7______
           /              \
        __10__          ___2
       /      \        /
       4</div>
                                    </li>
                                    <li><a href="/article/2090.htm"
                                           title="openfire开发指南《连接和登陆》" target="_blank">openfire开发指南《连接和登陆》</a>
                                        <span class="text-muted">开窍的石头</span>
    <a class="tag" taget="_blank" href="/search/openfire/1.htm">openfire</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97/1.htm">开发指南</a><a class="tag" taget="_blank" href="/search/smack/1.htm">smack</a>
                                        <div>第一步 
        官网下载smack.jar包 
        下载地址:http://www.igniterealtime.org/downloads/index.jsp#smack 
    第二步 
        把smack里边的jar导入你新建的java项目中 
     
    开始编写smack连接openfire代码 
     
    p</div>
                                    </li>
                                    <li><a href="/article/2217.htm"
                                           title="[移动通讯]手机后盖应该按需要能够随时开启" target="_blank">[移动通讯]手机后盖应该按需要能够随时开启</a>
                                        <span class="text-muted">comsci</span>
    <a class="tag" taget="_blank" href="/search/%E7%A7%BB%E5%8A%A8/1.htm">移动</a>
                                        <div>    看到新的手机,很多由金属材质做的外壳,内存和闪存容量越来越大,CPU速度越来越快,对于这些改进,我们非常高兴,也非常欢迎 
     
         但是,对于手机的新设计,有几点我们也要注意 
     
         第一:手机的后盖应该能够被用户自行取下来,手机的电池的可更换性应该是必须保留的设计,</div>
                                    </li>
                                    <li><a href="/article/2344.htm"
                                           title="20款国外知名的php开源cms系统" target="_blank">20款国外知名的php开源cms系统</a>
                                        <span class="text-muted">cuiyadll</span>
    <a class="tag" taget="_blank" href="/search/cms/1.htm">cms</a>
                                        <div>内容管理系统,简称CMS,是一种简易的发布和管理新闻的程序。用户可以在后端管理系统中发布,编辑和删除文章,即使您不需要懂得HTML和其他脚本语言,这就是CMS的优点。 
    在这里我决定介绍20款目前国外市面上最流行的开源的PHP内容管理系统,以便没有PHP知识的读者也可以通过国外内容管理系统建立自己的网站。 
    1. Wordpress 
    WordPress的是一个功能强大且易于使用的内容管</div>
                                    </li>
                                    <li><a href="/article/2471.htm"
                                           title="Java生成全局唯一标识符" target="_blank">Java生成全局唯一标识符</a>
                                        <span class="text-muted">darrenzhu</span>
    <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/uuid/1.htm">uuid</a><a class="tag" taget="_blank" href="/search/unique/1.htm">unique</a><a class="tag" taget="_blank" href="/search/identifier/1.htm">identifier</a><a class="tag" taget="_blank" href="/search/id/1.htm">id</a>
                                        <div>How to generate a globally unique identifier in Java 
     
     
     
    http://stackoverflow.com/questions/21536572/generate-unique-id-in-java-to-label-groups-of-related-entries-in-a-log 
     
     
    http://stackoverflow</div>
                                    </li>
                                    <li><a href="/article/2598.htm"
                                           title="php安装模块检测是否已安装过, 使用的SQL语句" target="_blank">php安装模块检测是否已安装过, 使用的SQL语句</a>
                                        <span class="text-muted">dcj3sjt126com</span>
    <a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a>
                                        <div>       
    SHOW [FULL] TABLES [FROM db_name] [LIKE 'pattern'] 
    SHOW TABLES列举了给定数据库中的非TEMPORARY表。您也可以使用mysqlshow db_name命令得到此清单。 
    本命令也列举数据库中的其它视图。支持FULL修改符,这样SHOW FULL TABLES就可以显示第二个输出列。对于一个表,第二列的值为BASE T</div>
                                    </li>
                                    <li><a href="/article/2725.htm"
                                           title="5天学会一种 web 开发框架" target="_blank">5天学会一种 web 开发框架</a>
                                        <span class="text-muted">dcj3sjt126com</span>
    <a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/%E6%A1%86%E6%9E%B6/1.htm">框架</a><a class="tag" taget="_blank" href="/search/framework/1.htm">framework</a>
                                        <div>web framework层出不穷,特别是ruby/python,各有10+个,php/java也是一大堆 根据我自己的经验写了一个to do list,按照这个清单,一条一条的学习,事半功倍,很快就能掌握 一共25条,即便很磨蹭,2小时也能搞定一条,25*2=50。只需要50小时就能掌握任意一种web框架 
    各类web框架大同小异:现代web开发框架的6大元素,把握主线,就不会迷路 
    建议把本文</div>
                                    </li>
                                    <li><a href="/article/2852.htm"
                                           title="Gson使用三(Map集合的处理,一对多处理)" target="_blank">Gson使用三(Map集合的处理,一对多处理)</a>
                                        <span class="text-muted">eksliang</span>
    <a class="tag" taget="_blank" href="/search/json/1.htm">json</a><a class="tag" taget="_blank" href="/search/gson/1.htm">gson</a><a class="tag" taget="_blank" href="/search/Gson+map/1.htm">Gson map</a><a class="tag" taget="_blank" href="/search/Gson+%E9%9B%86%E5%90%88%E5%A4%84%E7%90%86/1.htm">Gson 集合处理</a>
                                        <div>转载请出自出处:http://eksliang.iteye.com/blog/2175532 一、概述 
           Map保存的是键值对的形式,Json的格式也是键值对的,所以正常情况下,map跟json之间的转换应当是理所当然的事情。 二、Map参考实例 
    package com.ickes.json;
    
    import java.lang.refl</div>
                                    </li>
                                    <li><a href="/article/2979.htm"
                                           title="cordova实现“再点击一次退出”效果" target="_blank">cordova实现“再点击一次退出”效果</a>
                                        <span class="text-muted">gundumw100</span>
    <a class="tag" taget="_blank" href="/search/android/1.htm">android</a>
                                        <div>基本的写法如下: 
     
    
    
    document.addEventListener("deviceready", onDeviceReady, false);
    			
    function onDeviceReady() {
    	//navigator.splashscreen.hide();
            document.addEventListener("b</div>
                                    </li>
                                    <li><a href="/article/3106.htm"
                                           title="openldap configuration leaning note" target="_blank">openldap configuration leaning note</a>
                                        <span class="text-muted">iwindyforest</span>
    <a class="tag" taget="_blank" href="/search/configuration/1.htm">configuration</a>
                                        <div>hostname // to display the computer name 
    hostname <changed name> // to change 
    go to: /etc/sysconfig/network, add/modify HOSTNAME=NEWNAME to change permenately 
    dont forget to change /etc/hosts</div>
                                    </li>
                                    <li><a href="/article/3233.htm"
                                           title="Nullability and Objective-C" target="_blank">Nullability and Objective-C</a>
                                        <span class="text-muted">啸笑天</span>
    <a class="tag" taget="_blank" href="/search/Objective-C/1.htm">Objective-C</a>
                                        <div>https://developer.apple.com/swift/blog/?id=25 
      
    http://www.cocoachina.com/ios/20150601/11989.html 
      
    http://blog.csdn.net/zhangao0086/article/details/44409913 
      
    http://blog.sunnyxx</div>
                                    </li>
                                    <li><a href="/article/3360.htm"
                                           title="jsp中实现参数隐藏的两种方法" target="_blank">jsp中实现参数隐藏的两种方法</a>
                                        <span class="text-muted">macroli</span>
    <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/jsp/1.htm">jsp</a>
                                        <div>在一个JSP页面有一个链接,//确定是一个链接?点击弹出一个页面,需要传给这个页面一些参数。//正常的方法是设置弹出页面的src="***.do?p1=aaa&p2=bbb&p3=ccc"//确定目标URL是Action来处理?但是这样会在页面上看到传过来的参数,可能会不安全。要求实现src="***.do",参数通过其他方法传!//////</div>
                                    </li>
                                    <li><a href="/article/3487.htm"
                                           title="Bootstrap A标签关闭modal并打开新的链接解决方案" target="_blank">Bootstrap A标签关闭modal并打开新的链接解决方案</a>
                                        <span class="text-muted">qiaolevip</span>
    <a class="tag" taget="_blank" href="/search/%E6%AF%8F%E5%A4%A9%E8%BF%9B%E6%AD%A5%E4%B8%80%E7%82%B9%E7%82%B9/1.htm">每天进步一点点</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E6%B0%B8%E6%97%A0%E6%AD%A2%E5%A2%83/1.htm">学习永无止境</a><a class="tag" taget="_blank" href="/search/bootstrap/1.htm">bootstrap</a><a class="tag" taget="_blank" href="/search/%E7%BA%B5%E8%A7%82%E5%8D%83%E8%B1%A1/1.htm">纵观千象</a>
                                        <div>Bootstrap里面的js modal控件使用起来很方便,关闭也很简单。只需添加标签 data-dismiss="modal" 即可。 
    可是偏偏有时候需要a标签既要关闭modal,有要打开新的链接,尝试多种方法未果。只好使用原始js来控制。 
      
    <a href="#/group-buy" class="btn bt</div>
                                    </li>
                                    <li><a href="/article/3614.htm"
                                           title="二维数组在Java和C中的区别" target="_blank">二维数组在Java和C中的区别</a>
                                        <span class="text-muted">流淚的芥末</span>
    <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/c/1.htm">c</a><a class="tag" taget="_blank" href="/search/%E4%BA%8C%E7%BB%B4%E6%95%B0%E7%BB%84/1.htm">二维数组</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E7%BB%84/1.htm">数组</a>
                                        <div>Java代码: 
      
    public class test03 {
    	public static void main(String[] args) {
    		int[][] a = {{1},{2,3},{4,5,6}};
    		System.out.println(a[0][1]);
    	}
    } 
     运行结果: 
    Exception in thread "mai</div>
                                    </li>
                                    <li><a href="/article/3741.htm"
                                           title="systemctl命令用法" target="_blank">systemctl命令用法</a>
                                        <span class="text-muted">wmlJava</span>
    <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/systemctl/1.htm">systemctl</a>
                                        <div>对比表,以 apache / httpd 为例   任务 旧指令 新指令   使某服务自动启动 chkconfig --level 3 httpd on systemctl enable httpd.service   使某服务不自动启动 chkconfig --level 3 httpd off systemctl disable httpd.service   检查服务状态 service h</div>
                                    </li>
                    </ul>
                </div>
            </div>
        </div>
    
    <div>
        <div class="container">
            <div class="indexes">
                <strong>按字母分类:</strong>
                <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a
                    href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a
                    href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a
                    href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a
                    href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a
                    href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a
                    href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a
                    href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a
                    href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a>
            </div>
        </div>
    </div>
    <footer id="footer" class="mb30 mt30">
        <div class="container">
            <div class="footBglm">
                <a target="_blank" href="/">首页</a> -
                <a target="_blank" href="/custom/about.htm">关于我们</a> -
                <a target="_blank" href="/search/Java/1.htm">站内搜索</a> -
                <a target="_blank" href="/sitemap.txt">Sitemap</a> -
                <a target="_blank" href="/custom/delete.htm">侵权投诉</a>
            </div>
            <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved.
    <!--            <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>-->
            </div>
        </div>
    </footer>
    <!-- 代码高亮 -->
    <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script>
    <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script>
    <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script>
    <link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/>
    <script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script>
    
    
    
    
    
    </body>
    
    </html>