Flask web开发-基于Python的Web应用开发实战-MacOS

第一章 安装

1.安装virtualenv

$ pip install virtualenv  // or $ sudo easy_install virtualenv 
$ virtualenv --version

2.Clone source code to local

$ cd flask-2017   //create a folder named flask-2017
$ git clone  [email protected]:baby4bamboo/flasky.git 
$ cd flasky
$ git checkout 1a

3.虚拟环境

$ virtualenv venv  //创建虚拟环境
$ source venv/bin/activate  //启动虚拟环境
$ deactivate //关闭虚拟环境

4.需要安装的Flask 相关的包:

$ pip install flask //MarkupSafe, Jinja2, click, Werkzeug, itsdangerous, flask

5.python 命令行:

$ python
>>> import flask   //检查某个包是否安装好
>>> exit()  //退出python命令行

第二章 程序的基本结构

Web 服务器使用一种名为 Web 服务器网关接口
(Web Server Gateway Interface,WSGI)的协议,把接收自客户端的所有请求都转交给这个对象处理。

git checkout 2b

from flask import Flask
app = Flask(__name__)

@app.route('/')
def index():
    return '

Hello World!

' @app.route('/user/') def user(name): return '

Hello, %s!

' % name if __name__ == '__main__': app.run(debug=True)

__name__=='__main__'是 Python 的惯常用法,在这里确保直接执行这个脚本时才启动开发Web 服务器。如果这个脚本由其他脚本引入,程序假定父级脚本会启动不同的服务器,因此不会执行 app.run()

python hello.py  //启动程序
Ctrl + C //退出程序

然后浏览器访问
http://127.0.0.1:5000/

请求上下文

Flask web开发-基于Python的Web应用开发实战-MacOS_第1张图片
请求上下文.png
>>> app_ctx = app.app_context()
>>> app_ctx.push()
>>> current_app.name
'hello'
>>> app_ctx.pop()
路由调度

Flask 使用 app.route 修饰器或者非修饰器形式的 app.add_url_rule() 生成映射。

 $ python
>>> from hello import app
>>> app.url_map
Map([ index>,
 ' (HEAD, OPTIONS, GET) -> static>,
 ' (HEAD, OPTIONS, GET) -> user>])
Hook
• before_first_request:注册一个函数,在处理第一个请求之前运行。
• before_request:注册一个函数,在每次请求之前运行。
• after_request:注册一个函数,如果没有未处理的异常抛出,在每次请求之后运行。
• teardown_request:注册一个函数,即使有未处理的异常抛出,也在每次请求之后运行
响应

Flask将视图函数的返回值,作为响应结果,通常就是一个字符串
也可以接受第二个参数,为响应的状态码,例如200,404等
也可以接受第三个参数,是一个由首部(header)组成的字典

@app.route('/')
def index():
 return '

Bad Request

', 400

当然,更好的选择是返回一个respones对象

from flask import make_response
@app.route('/')
def index():
 response = make_response('

This document carries a cookie!

') response.set_cookie('answer', '42') return response

有一种特殊的响应,叫做重定向(14章会有例子)

from flask import redirect
@app.route('/')
def index():
 return redirect('http://www.example.com')

还有一种特殊的响应,由abort()函数生成,用来处理错误
abort 不会把控制权交还给调用它的函数,而是抛出异常把控制权交给 Web 服务器

from flask import abort
@app.route('/user/')
def get_user(id):
 user = load_user(id)
 if not user:
 abort(404)
 return '

Hello, %s

' % user.name
Flask扩展
$ pip install flask-script

文件的改动:

from flask.ext.script import Manager
manager = Manager(app)
# ...
if __name__ == '__main__':
 manager.run()

这个扩展的初始化方法也适用于其他很多扩展:把程序实例作为参数传给构造函数,初始化主类的实例。创建的对象可以在各个扩展中使用。在这里,服务器由 manager.run() 启动,启动后就能解析命令行了。

python hello.py runserver --host 0.0.0.0  //监听所有窗口

第三章 模板

面对一个请求,其实server做了两件事情,分成‘业务逻辑’和‘表现逻辑’

例如用户输入了账号密码,点击登录
业务逻辑:在检查账号密码是否匹配,如果匹配成功则登录
表现逻辑:跳转到已经登录用户的首页

Jinja2模板引擎

Jinja有两种定界符。{% ... %}和{{ ... }}。前者用于执行像for循环或赋值等语句,后者向模板输出一个表达式的结果。
参见: http://jinja.pocoo.org/docs/templates/#synopsis

Flask web开发-基于Python的Web应用开发实战-MacOS_第2张图片
Jinja2变量过滤器.png

if

{% if user %}
 Hello, {{ user }}!
{% else %}
 Hello, Stranger!
{% endif %}

for

    {% for comment in comments %}
  • {{ comment }}
  • {% endfor %}

macro

{% macro render_comment(comment) %}
 
  • {{ comment }}
  • {% endmacro %}
      {% for comment in comments %} {{ render_comment(comment) }} {% endfor %}

    单独文件导入

    {% import 'macros.html' as macros %}
    
      {% for comment in comments %} {{ macros.render_comment(comment) }} {% endfor %}

    模板继承

    base.html

    
    
     {% block head %}
     {% block title %}{% endblock %} - My Application
     {% endblock %}
    
    
     {% block body %}
     {% endblock %}
    
    
    

    extend.html

    {% extends "base.html" %}
    {% block title %}Index{% endblock %}
    {% block head %}
     {{ super() }}
     
    {% endblock %}
    {% block body %}
    

    Hello, World!

    {% endblock %}
    模板渲染

    Hello, {{ name }}!

    @app.route('/user/')
    def user(name):
     return render_template('user.html', name=name)
    

    name=name,左边的name表示模板中的占位符,右边的name表示url中传进来的参数

    使用Flask-Bootstrap集成Twitter Bootstrap
     $ pip install flask-bootstrap
    

    hello.py:初始化 Flask-Bootstrap

    from flask.ext.bootstrap import Bootstrap
    # ...
    bootstrap = Bootstrap(app)
    

    doc 整个 HTML 文档
    html_attribs 标签的属性
    html 标签中的内容
    head 标签中的内容
    title 标签中的内容<br> metas 一组 <meta> 标签<br> styles 层叠样式表定义<br> body_attribs <body> 标签的属性<br> body <body> 标签中的内容<br> navbar 用户定义的导航条<br> content 用户定义的页面内容<br> scripts 文档底部的 JavaScript 声明</p> </blockquote> <h6>链接</h6> <pre><code>url_for('index') //得到相对路径,这里会得到'/' url_for('index', _external=True) //得到绝对路径,这里是'http://localhost:5000/'。(外部使用的时候要用,例如邮件) url_for('user', name='john', _external=True) //返回结果是 http://localhost:5000/user/john。 url_for('index', page=2) // 返回结果是 /?page=2 </code></pre> <h6>使用Flask-Moment本地化日期和时间</h6> <p>1.安装</p> <pre><code>pip install flask-moment </code></pre> <p>2.hello.py 中初始化Moment:</p> <pre><code>from flask.ext.moment import Moment moment = Moment(app) </code></pre> <p>3.基模板(templates/base.html)中引入moment.js</p> <pre><code>{% block scripts %} {{ super() }} {{ moment.include_moment() }} {% endblock %} </code></pre> <p>4.把变量current_time 传入模板进行渲染</p> <pre><code>from datetime import datetime @app.route('/') def index(): return render_template('index.html',current_time=datetime.utcnow()) </code></pre> <p>5.在模板中渲染 current_time<br> templates/index.html</p> <pre><code>{% block page_content %} //page_content 表示显示的内容,之前错误的放在了{% block scripts %}中,发现不能在页面显示 <p>The local date and time is {{ moment(current_time).format('LLL') }}</p> <p>That was {{ moment(current_time).fromNow(refresh=True) }}</p> {% endblock %} </code></pre> <h1>第四章 web表单</h1> <p>Flask-WTF 能保护所有表单免受跨站请求伪造(Cross-Site Request Forgery,CSRF)的攻击<br> hello.py</p> <pre><code>app = Flask(__name__) app.config['SECRET_KEY'] = 'hard to guess string' </code></pre> <pre><code> $ pip install flask-wtf </code></pre> <div class="image-package"> <div class="image-container" style="max-width: 700px; max-height: 716px;"> <div class="image-view"> <a href="http://img.e-com-net.com/image/info10/3ed7d0c363854117baae9b766297c59f.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info10/3ed7d0c363854117baae9b766297c59f.jpg" width="650" height="665" alt="Flask web开发-基于Python的Web应用开发实战-MacOS_第3张图片" style="border:1px solid black;"></a> </div> </div> <div class="image-caption"> WTForms支持的HTML字段类型.png </div> </div> <div class="image-package"> <div class="image-container" style="max-width: 700px; max-height: 626px;"> <div class="image-view"> <a href="http://img.e-com-net.com/image/info10/d3d9b694d86243f3ba38b399f4a9d1ff.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info10/d3d9b694d86243f3ba38b399f4a9d1ff.jpg" width="650" height="410" alt="Flask web开发-基于Python的Web应用开发实战-MacOS_第4张图片" style="border:1px solid black;"></a> </div> </div> <div class="image-caption"> WTForms验证函数.png </div> </div> <h4>M</h4> <pre><code>from flask.ext.wtf import Form from wtforms import StringField, SubmitField from wtforms.validators import Required class NameForm(Form): name = StringField('What is your name?', validators=[Required()]) submit = SubmitField('Submit') </code></pre> <h4>T</h4> <p>templates/index.html</p> <pre><code>{% extends "base.html" %} {% import "bootstrap/wtf.html" as wtf %} {% block title %}Flasky{% endblock %} {% block page_content %} <div class="page-header"> <h1>Hello, {% if name %}{{ name }}{% else %}Stranger{% endif %}!</h1> </div> {{ wtf.quick_form(form) }} {% endblock %} </code></pre> <h4>V</h4> <p>hello.py:</p> <pre><code>@app.route('/', methods=['GET', 'POST']) def index(): name = None form = NameForm() //建一个M if form.validate_on_submit(): name = form.name.data form.name.data = '' return render_template('index.html', form=form, name=name) //把得到的数据传给T </code></pre> <p>MTV:<br> M是Model,数据结构,<br> T是template,模板,最后渲染出来的页面的样子<br> V是view,先建一个M,然后通过一系列的逻辑和运算,得到需要的数据,传给T</p> <p>注:这里我写的时候出现了三个错误</p> <pre><code>app.config['SECRET_KEY'] = 'hard to guess string' //这句忘记加了 {{ wtf.quick_form(form) }} //写成了{% wtf.quick_form(form) %} name = form.name.data //写成了 name = form.name.data() </code></pre> <p>session and 重定向</p> <pre><code>from flask import Flask, render_template, session, redirect, url_for @app.route('/', methods=['GET', 'POST']) def index(): form = NameForm() if form.validate_on_submit(): session['name'] = form.name.data return redirect(url_for('index')) return render_template('index.html', form=form, name=session.get('name')) </code></pre> <p>hello.py flash消息</p> <pre><code>from flask import Flask, render_template, session, redirect, url_for, flash @app.route('/', methods=['GET', 'POST']) def index(): form = NameForm() if form.validate_on_submit(): old_name = session.get('name') if old_name is not None and old_name != form.name.data: flash('Looks like you have changed your name!') session['name'] = form.name.data return redirect(url_for('index')) return render_template('index.html',form = form, name = session.get('name')) </code></pre> <p>base.html</p> <pre><code>{% block content %} <div class="container"> {% for message in get_flashed_messages() %} <div class="alert alert-warning"> <button type="button" class="close" data-dismiss="alert">× </button> {{ message }} </div> {% endfor %} {% block page_content %}{% endblock %} </div> {% endblock %} </code></pre> <h1>第七章 web表单</h1> <p>项目结构</p> <br> <div class="image-package"> <div class="image-container" style="max-width: 422px; max-height: 1463px;"> <div class="image-view"> <a href="http://img.e-com-net.com/image/info10/eaf6705c146d4a9fb09d44aec677e8f5.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info10/eaf6705c146d4a9fb09d44aec677e8f5.jpg" width="422" height="882" alt="Flask web开发-基于Python的Web应用开发实战-MacOS_第5张图片" style="border:1px solid black;"></a> </div> </div> <div class="image-caption"> 最基础的目录结构 </div> </div> <h2>工厂函数</h2> <p><code>app/__init__.py</code> :</p> <pre><code> bootstrap = Bootstrap() mail = Mail() moment = Moment() db = SQLAlchemy() def create_app(config_name): app = Flask(__name__) //实例化一个Flask对象,命名为app app.config.from_object(config[config_name]) //把我们配置的config,设置给这个app config[config_name].init_app(app) //config中定义的初始化函数 bootstrap.init_app(app) mail.init_app(app) moment.init_app(app) db.init_app(app) from .main import main as main_blueprint //在app中,注册blueprint app.register_blueprint(main_blueprint) return app </code></pre> <h2>blueprint</h2> <p><code>app/main/__init__.py</code>:创建蓝本:</p> <pre><code>from flask import Blueprint main = Blueprint('main', __name__) from . import views, errors </code></pre> <p>实例化一个蓝本,命名为main,接受两个参数,第一个是蓝本的名字,第二个是蓝本所在的包或模块,一般都是<code>__name__</code><br> views(路由设定),errors(错误处理)必须在创建蓝本之后导入,以防止循环依赖。</p> <p>app/main/view.py:</p> <pre><code># from ... @main.route('/', methods=['GET', 'POST']) def index(): form = NameForm() if form.validate_on_submit(): #... return redirect(url_for('.index')) return render_template('index.html',form=form, name=session.get('name'),known=session.get('known', False)) </code></pre> <pre><code>1)不再像单文件@route('/'),有了蓝本 以后,路由都是由蓝本提供,所以前面要加上蓝本的名字 @main.route('/', methods=['GET', 'POST'])。 2)url_for 不再像单文件的url_for('index'),现在需要指明相应的蓝本url_for('main.index') url_for实际上就是根据后面的参数来生成url的,以便程序跳转,所以一般都这样用redirect(url_for('.index')) 3)蓝本的端点都是有命名空间的,其实就是蓝本的名字,这样可以避免冲突。例如main.index和auth.index就是两个页面,可以同时存在。 4)url_for('main.index')可以简写成url_for('.index'),这里省略的命名空间就是当前请求所在的蓝本,例如现在的main,跨蓝本的重定向必须带有命名空间的端点名。 </code></pre> <p>7.5 需求文件</p> <pre><code>(venv) $ pip freeze >requirements.txt //生成需求文件 (venv) $ pip install -r requirements.txt //使用需求文件去安装各种包 </code></pre> </article> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1386827965366620160"></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">你可能感兴趣的:(Flask web开发-基于Python的Web应用开发实战-MacOS)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1892471978577686528.htm" title="【HarmonyOS NEXT】是否有监听键盘显隐的方法" target="_blank">【HarmonyOS NEXT】是否有监听键盘显隐的方法</a> <span class="text-muted">Mayism123</span> <a class="tag" taget="_blank" href="/search/harmonyos/1.htm">harmonyos</a> <div>关键字监听/键盘/输入法框架/窗口问题描述是否有监听键盘显隐的方法?解决方案可选择以下任一方案:方案一:通过输入法框架模块(@ohos.inputMethod)来监听软键盘状态。用InputMethodController实例的on('sendKeyboardStatus')方法来监听,直接在inputMethodController.on('sendKeyboardStatus',callbac</div> </li> <li><a href="/article/1892471976795107328.htm" title="前端导出word文件—包含canvas(echarts图表)" target="_blank">前端导出word文件—包含canvas(echarts图表)</a> <span class="text-muted">Liuer_Qin</span> <a class="tag" taget="_blank" href="/search/js/1.htm">js</a><a class="tag" taget="_blank" href="/search/canvas/1.htm">canvas</a><a class="tag" taget="_blank" href="/search/echarts/1.htm">echarts</a><a class="tag" taget="_blank" href="/search/echarts/1.htm">echarts</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a> <div>一、使用的插件html-docx-js二、整体思路因为canvas是运行在内存中的,所以不能简单的通过dom获取canvas图片,需要手动的先将canvas转为image。三、实现先克隆要下载的DOM的副本。因为canvas是运行在内存中的,所以也不能通过cloneNode方法克隆下来(克隆下来是空的)。我们这里将原DOM中的canvas转成图片,然后插入到副本的对应位置,这样操作不会影响原DOM</div> </li> <li><a href="/article/1892471850370396160.htm" title="HarmonyOS全栈开发指南:从入门到精通,构建万物智联的未来生态(一)" target="_blank">HarmonyOS全栈开发指南:从入门到精通,构建万物智联的未来生态(一)</a> <span class="text-muted">林钟雪</span> <a class="tag" taget="_blank" href="/search/Harmonyos/1.htm">Harmonyos</a><a class="tag" taget="_blank" href="/search/harmonyos/1.htm">harmonyos</a><a class="tag" taget="_blank" href="/search/%E5%8D%8E%E4%B8%BA/1.htm">华为</a> <div>一、HarmonyOS基础认知篇1.HarmonyOS发展历程与核心使命内容摘要:HarmonyOS,由华为公司于2019年首次公开发布,标志着华为在操作系统领域的深度布局。从最初的智能物联网设备操作系统定位,到如今面向万物智联时代的分布式全场景操作系统,HarmonyOS经历了多次迭代与升级。发展历程:初期探索:2019年,华为正式推出HarmonyOS,旨在打造一个适用于智能物联网设备的操作系</div> </li> <li><a href="/article/1892471346366050304.htm" title="侯捷 C++ 课程学习笔记:C++ 面向对象开发的艺术" target="_blank">侯捷 C++ 课程学习笔记:C++ 面向对象开发的艺术</a> <span class="text-muted">孤寂大仙v</span> <a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a> <div>在侯捷老师的C++系列课程中,《C++面向对象开发》这门课程让我对面向对象编程有了更深入的理解。面向对象编程(OOP)是现代软件开发中最重要的编程范式之一,而C++作为支持OOP的语言,提供了强大的工具和特性。侯捷老师通过系统的讲解和实战案例,帮助我掌握了如何在C++中高效地使用面向对象技术。以下是我对这门课程的学习笔记和心得体会。一、课程核心内容:C++面向对象开发的关键特性![侯捷老师的课程详</div> </li> <li><a href="/article/1892470464907898880.htm" title="语聊房软件开发流程与基础功能" target="_blank">语聊房软件开发流程与基础功能</a> <span class="text-muted">ALLSectorSorft</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a> <div>开发一款语聊房软件需要系统的规划和多领域技术整合。以下是关键流程、基础功能及示例代码:---一、开发流程1.需求分析-明确目标用户(社交/游戏/教育)-竞品分析(Clubhouse/Discord/狼人杀)-核心功能优先级排序2.技术选型-实时语音:声网Agora(推荐)/腾讯云TRTC/WebRTC-即时通讯:Socket.io/Sendbird/Firebase-后端框架:Node.js/Sp</div> </li> <li><a href="/article/1892470086778810368.htm" title="Transformer 模型架构" target="_blank">Transformer 模型架构</a> <span class="text-muted">2401_89793006</span> <a class="tag" taget="_blank" href="/search/%E7%83%AD%E9%97%A8%E8%AF%9D%E9%A2%98/1.htm">热门话题</a><a class="tag" taget="_blank" href="/search/transformer/1.htm">transformer</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/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>Transformer是一种模型架构(ModelArchitecture),而不是一个软件框架(Framework)。它的定位更接近于一种设计蓝图,类似于建筑中的结构设计方案。以下是详细解释:1.架构vs框架的区别概念定义示例模型架构定义神经网络的结构设计Transformer、CNN、RNN开发框架提供实现模型的工具和库PyTorch、TensorFlow2.Transformer作为架构的核心</div> </li> <li><a href="/article/1892469834516590592.htm" title="网络安全常识" target="_blank">网络安全常识</a> <span class="text-muted">网络安全Ash</span> <a class="tag" taget="_blank" href="/search/web%E5%AE%89%E5%85%A8/1.htm">web安全</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a> <div>一、网络安全常识什么是网络安全?网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的原因而遭到破坏、更改、泄露,系统可以连续可靠正常地运行,网络服务不被中断。什么是计算机病毒?计算机病毒(ComputerVirus)是指编制者在计算机程序中插入的破坏计算机功能或者破坏数据,影响计算机使用并且能够自我复制的一组计算机指令或者程序代码。什么是木马?木马是一种带有恶意性质的远程</div> </li> <li><a href="/article/1892469833619009536.htm" title="linux网络安全" target="_blank">linux网络安全</a> <span class="text-muted">网络安全Max</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/web%E5%AE%89%E5%85%A8/1.htm">web安全</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a> <div>Linux网络安全一直是IT行业中备受关注的话题,而红帽作为Linux操作系统的知名发行版,在网络安全领域也扮演着重要的角色。红帽公司一直致力于为用户提供安全可靠的Linux解决方案,以帮助用户建立强大的网络安全防护体系。首先,红帽操作系统本身具有较高的安全性。作为一款开源操作系统,Linux具有代码透明、强大的权限管理和丰富的安全功能等特点,这使得Linux相对于其他闭源操作系统更加安全可靠。而</div> </li> <li><a href="/article/1892468952072777728.htm" title="Vue.js 基础与实战指南:从入门到跑路" target="_blank">Vue.js 基础与实战指南:从入门到跑路</a> <span class="text-muted">王嘉俊705</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/visual/1.htm">visual</a><a class="tag" taget="_blank" href="/search/studio/1.htm">studio</a><a class="tag" taget="_blank" href="/search/code/1.htm">code</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a> <div>一、Vue的两种使用方式扩展核心包开发直接通过引入Vue.js,适用于简单页面或局部功能增强。优点:轻量,无需构建工具。缺点:难以管理复杂项目,缺少工程化支持。工程化开发使用VueCLI、Vite等工具创建项目,结合Webpack/Vite构建。支持单文件组件(.vue文件),结构清晰(`,,)。插件生态丰富(如VueRouter、Vuex、Pinia)。二、Vue实例的深入理解核心配置项 new</div> </li> <li><a href="/article/1892468950785126400.htm" title="SQL 注入攻击" target="_blank">SQL 注入攻击</a> <span class="text-muted">黄亚磊11</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a> <div>SQL注入攻击了解吗?攻击者在HTTP请求中注入恶意的SQL代码,服务器使用参数构建数据库SQL命令时,恶意SQL被一起构造,并在数据库中执行。用户登录,输入用户名lianggzone,密码123or1=1,如果此时使用参数构造的方法,就会出现select*fromuserwherename='lianggzone'andpassword='123'or'1'='1';不管用户名和密码是什么内容,</div> </li> <li><a href="/article/1892468446730448896.htm" title="MVCC(多版本并发控制)机制讲解" target="_blank">MVCC(多版本并发控制)机制讲解</a> <span class="text-muted">十五001</span> <a class="tag" taget="_blank" href="/search/%E5%9F%BA%E7%A1%80/1.htm">基础</a><a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</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/mysql/1.htm">mysql</a> <div>MVCC(Multi-VersionConcurrencyControl,多版本并发控制)这是一个在数据库管理系统中非常重要的技术,尤其是在处理并发事务时。别担心,我会用简单易懂的方式来讲解,让你轻松掌握它的原理和作用。1.什么是MVCC?定义MVCC是一种数据库技术,用于通过保留数据的多个版本来提高并发性能,同时避免事务之间的冲突。简单来说,它允许数据库在读取和写入操作时,同时存在多个版本的数据</div> </li> <li><a href="/article/1892468194430480384.htm" title="使用rknn进行yolo11-pose部署" target="_blank">使用rknn进行yolo11-pose部署</a> <span class="text-muted">点PY</span> <a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E6%A8%A1%E5%9E%8B%E9%83%A8%E7%BD%B2/1.htm">深度学习模型部署</a><a class="tag" taget="_blank" href="/search/pytorch/1.htm">pytorch</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/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>文章目录概要生成ONNX生成RKNN实测效果概要使用RKNN进行YOLOv11Pose部署的必要性在于,RKNN能将YOLOv11Pose模型转化为适合Rockchip硬件平台(如RV1109、RV1126)执行的格式,充分利用其AI加速功能,显著提高推理速度和效率。此外,RKNN提供模型优化(如量化)功能,有助于减少计算资源消耗,提升实时处理能力,特别适合在嵌入式设备上进行高效、低功耗的姿态估计</div> </li> <li><a href="/article/1892468193570648064.htm" title="使用Python和OpenCV实现图像像素压缩与解压" target="_blank">使用Python和OpenCV实现图像像素压缩与解压</a> <span class="text-muted">东方佑</span> <a class="tag" taget="_blank" href="/search/%E9%87%8F%E5%AD%90%E5%8F%98%E6%B3%95/1.htm">量子变法</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/opencv/1.htm">opencv</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>在本文中,我们将探讨如何使用Python和OpenCV库来实现一种简单的图像像素压缩算法。我们将详细讨论代码的工作原理,并提供一个具体的示例来演示该过程。1.引言随着数字媒体的普及,图像处理成为了一个重要的领域。无论是为了减少存储空间还是加快网络传输速度,图像压缩技术都扮演着至关重要的角色。这里,我们提出了一种基于像素重复模式的简单压缩算法,它适用于具有大量连续相同像素值的图像。2.技术栈介绍2.</div> </li> <li><a href="/article/1892468067355652096.htm" title="【Python系列】Python 解释器的站点配置" target="_blank">【Python系列】Python 解释器的站点配置</a> <span class="text-muted">Kwan的解忧杂货铺@新空间代码工作室</span> <a class="tag" taget="_blank" href="/search/s1/1.htm">s1</a><a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。推荐:kwan的首页,持续学习,不断总结,共同进步,活到老学到老导航檀越剑指大厂系列:全面总结java核心技术点,如集合,jvm,并发编程redis,kafka,Spring,微服务,Netty等常用开发工具系列:罗列常用的开发工具,如IDEA,M</div> </li> <li><a href="/article/1892466933626892288.htm" title="DeepSeek如何重塑我的编程学习:计算机新生的AI实践" target="_blank">DeepSeek如何重塑我的编程学习:计算机新生的AI实践</a> <span class="text-muted">EnigmaCoder</span> <a class="tag" taget="_blank" href="/search/DeepSeek/1.htm">DeepSeek</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/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>目录前言邂逅DeepSeek:从困惑到惊喜初学编程的困境DeepSeek的优势️DeepSeek在编程学习中的运用注释算法逐步分析调试帮助跨语言迁移学习AI时代学习方法论革新知识获取方式转变新型学习能力培养反思与展望反思展望总结前言大家好!我是EnigmaCoder,本文我将介绍我的AI编程学习之旅。春节期间,DeepSeek横空出世,迅速登顶热榜。它功能强大,精准答疑、高效创作,瞬间点燃大众热情</div> </li> <li><a href="/article/1892466934134403072.htm" title="SQL面试题集:累计值与1000差值最小的记录" target="_blank">SQL面试题集:累计值与1000差值最小的记录</a> <span class="text-muted">数星星的阿波罗</span> <a class="tag" taget="_blank" href="/search/Sql%E8%83%BD%E5%8A%9B%E9%80%9A%E5%85%B3/1.htm">Sql能力通关</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</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/%E6%95%B0%E6%8D%AE%E4%BB%93%E5%BA%93/1.htm">数据仓库</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/1.htm">数据分析</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a> <div>一、题目描述司机累计收入首次接近目标值的订单定位,滴滴平台计划优化司机奖励策略的触发机制,需精准识别司机在接单过程中累计收入首次接近特定目标值1000元的订单节点。该分析用于动态调整奖励发放规则,提升司机接单积极性。样例数据假设表t_sales结构如下:driver_idorder_idincomeorder_time11012002025-02-1909:00:0011023002025-02-</div> </li> <li><a href="/article/1892466429802901504.htm" title="深入解析JVM性能问题定位与优化" target="_blank">深入解析JVM性能问题定位与优化</a> <span class="text-muted">测试不打烊</span> <a class="tag" taget="_blank" href="/search/%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95/1.htm">性能测试</a><a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a><a class="tag" taget="_blank" href="/search/%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/1.htm">性能优化</a> <div>JVM性能问题定位与优化详解:架构、内存、Linux命令与监控工具的全面解析引言Java虚拟机(JVM)是运行Java应用程序的核心组件,它管理内存、执行字节码,并提供垃圾回收机制等功能。然而,随着应用规模的增长,JVM的性能问题时常会成为系统瓶颈。为了有效定位和优化JVM性能问题,我们需要从JVM架构、内存管理、Linux系统命令,以及监控工具入手,对JVM的各类指标进行详尽的分析和优化。本文将</div> </li> <li><a href="/article/1892466302790987776.htm" title="J-Link系列下载器的烧录问题彻底解决" target="_blank">J-Link系列下载器的烧录问题彻底解决</a> <span class="text-muted">1zero10</span> <a class="tag" taget="_blank" href="/search/%E5%8D%95%E7%89%87%E6%9C%BA/1.htm">单片机</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E7%89%87%E6%9C%BA/1.htm">单片机</a> <div>1.确保成功安装好keil5方法:按照此链接中课程1.1准备安装环境进行操作【铁头山羊stm32入门教程【新版】-哔哩哔哩】https://b23.tv/wb5XUGo2.安装J-link驱动2-1从jlink官网下载最新版本驱动2-2按照此链接视频中jlink对应部分进行操作【STM32常用程序烧录方法,KeilIDE,ST-Link,Jlink-OB,DAPLink,串口(Uart)-哔哩哔哩</div> </li> <li><a href="/article/1892466303373996032.htm" title="青龙面板 京东cookies工具" target="_blank">青龙面板 京东cookies工具</a> <span class="text-muted">zhiyi_1</span> <a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/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>新增了一些功能,主要是有些老版本的适配,解决原先的bug更新方式,替换文件,config文件可以不替换,则保留配置使用方式:1.运行JD_Get.exe2.登录京东3.点击获取获取到cookie会在右侧显示4.点击发送到青龙面板(如果配置了青龙参数)下载地址:夸克网盘分享</div> </li> <li><a href="/article/1892466301994070016.htm" title="安装与部署openeuler 的HA" target="_blank">安装与部署openeuler 的HA</a> <span class="text-muted">VX-IT BANG</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/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>实现原理LinuxHA(HighAvailability,高可用性)是指利用Linux操作系统构建的高可用集群解决方案,旨在确保关键业务服务在面临硬件故障、软件错误、网络中断等各种异常情况时,依然能够持续、稳定地运行,尽量减少服务中断时间,提高系统的可靠性和可用性。以下从几个方面详细介绍:关键组件和技术心跳监测(Heartbeat)这是LinuxHA系统中最基础也是最重要的组件之一。它通过在节点之</div> </li> <li><a href="/article/1892465546335678464.htm" title="Ubuntu切换终端快捷键" target="_blank">Ubuntu切换终端快捷键</a> <span class="text-muted">yangsong4353</span> <a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a><a class="tag" taget="_blank" href="/search/shell/1.htm">shell</a><a class="tag" taget="_blank" href="/search/term/1.htm">term</a> <div>在Ubuntu系统中,使用终端(Terminal)进行操作时,掌握一些快捷键可以大大提高工作效率。以下是一些常用的终端快捷键及其功能:打开和关闭终端打开终端:Ctrl+Alt+T关闭终端:Ctrl+D标签页操作新建标签页:Ctrl+Shift+T关闭标签页:Ctrl+Shift+W切换标签页:Alt+数字键(如Alt+1,Alt+2等)或Ctrl+PageUp/PageDown复制和粘贴复制:Ct</div> </li> <li><a href="/article/1892465292462845952.htm" title="【java基础】Java 中的 this 关键字" target="_blank">【java基础】Java 中的 this 关键字</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/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>前言在Java的编程世界里,this关键字宛如一把神奇的钥匙,看似简单,却蕴含着强大的功能。它在对象的创建、方法的调用以及成员变量的访问等方面都发挥着至关重要的作用。1.this关键字的基本概念this关键字是Java中的一个引用变量,它指向当前对象。在一个类的方法或构造器内部,this关键字可以用来引用调用该方法或构造器的对象实例。简单来说,this代表了当前正在执行操作的对象本身。哪个对象调用</div> </li> <li><a href="/article/1892465293255569408.htm" title="【Java基础】Java 中的 static 关键字" target="_blank">【Java基础】Java 中的 static 关键字</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/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>一、前言在Java的编程世界里,static关键字是一个非常重要且实用的特性。它就像是一把神奇的钥匙,能够改变变量、方法、代码块和内部类的性质和行为。二、static修饰成员变量2.1静态变量的基本概念在Java里,当我们使用static关键字修饰成员变量时,这个变量就变成了静态变量,也叫类变量。普通的成员变量(实例变量)是每个对象都有一份独立的副本,而静态变量不同,它属于整个类,无论创建多少个该</div> </li> <li><a href="/article/1892465294098624512.htm" title="B4158 [BCSP-X 2024 小学高年级组] 质数补全" target="_blank">B4158 [BCSP-X 2024 小学高年级组] 质数补全</a> <span class="text-muted">wwjjjww</span> <a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a> <div>题目描述Alice在纸条上写了一个质数,第二天再看时发现有些地方污损看不清了。在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数称为质数请你帮助Alice补全这个质数,若有多解输出数值最小的,若无解输出−1。例如纸条上的数字为1∗(∗代表看不清的地方),那么这个质数有可能为11,13,17,19,其中最小的为11。输入格式第一行1个整数t,代表有t组数据。接下来t行,每行1个字符串s代表</div> </li> <li><a href="/article/1892464914392477696.htm" title="关于个人财务系统的javaweb小项目" target="_blank">关于个人财务系统的javaweb小项目</a> <span class="text-muted">竹木有心</span> <a class="tag" taget="_blank" href="/search/tomcat/1.htm">tomcat</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>个人财务管理系统-项目计划书1.项目背景与目的随着现代社会的进步与人们收入水平的提高,个人财务的管理变得越来越重要。如何有效地记录、管理、分析个人的收支状况,成为了很多人关注的焦点。本项目旨在设计并实现一个基于JavaWeb技术的个人财务管理系统,通过该系统,用户可以轻松管理自己的收入与支出,查看财务统计分析,帮助用户进行财务规划与控制。本系统适用于大三学生的课程设计要求,涉及JavaWeb技术、</div> </li> <li><a href="/article/1892464284550623232.htm" title="如何将Docker容器打包并在其他服务器上运行" target="_blank">如何将Docker容器打包并在其他服务器上运行</a> <span class="text-muted">IT小辉同学</span> <a class="tag" taget="_blank" href="/search/%E6%8A%80%E5%B7%A7%E6%80%A7%E5%B7%A5%E5%85%B7%E6%A0%8F/1.htm">技巧性工具栏</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F%E4%BA%91%E9%83%A8%E7%BD%B2/1.htm">分布式云部署</a><a class="tag" taget="_blank" href="/search/%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E/1.htm">搜索引擎</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</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/%E5%AE%B9%E5%99%A8/1.htm">容器</a> <div>如何将Docker容器打包并在其他服务器上运行我会幻想很多次我们的相遇,你穿着合身的T恤,一个素色的外套,搭配一条蓝色的牛仔裤,干净的像那天空中的云朵,而我,还是一个的傻傻的少年,我们相识而笑,默默不语,如此甚好!Docker容器使得应用程序的部署和管理变得更加简单和高效。有时,我们可能需要将一个运行中的Docker容器打包,并在其他服务器上运行。本文将详细介绍如何实现这一过程。1.提交容器为镜像</div> </li> <li><a href="/article/1892463905377153024.htm" title="已经commit但是没有push,想撤回本次commit" target="_blank">已经commit但是没有push,想撤回本次commit</a> <span class="text-muted">逐云之巅</span> <a class="tag" taget="_blank" href="/search/git/1.htm">git</a><a class="tag" taget="_blank" href="/search/git/1.htm">git</a> <div>使用gitreset命令撤回提交,有三种模式可选:1.gitreset--softHEAD~(推荐)#将HEAD指针移动到上一个提交,但保留暂存区和工作区的更改。这意味着你可以重新提交这些更改,但不需要重新gitadd。2.gitreset(--mixed)HEAD~#不带参数或者带参数--mixed;撤销提交,将更改的文件和目录恢复到工作区,需要手动暂存和更改3.gitreset--hardHE</div> </li> <li><a href="/article/1892463401469276160.htm" title="揭秘 CSS Houdini:用浏览器魔法解锁 CSS 的终极潜力" target="_blank">揭秘 CSS Houdini:用浏览器魔法解锁 CSS 的终极潜力</a> <span class="text-muted">寒鸦xxx</span> <a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/houdini/1.htm">houdini</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>一、为什么我们需要CSSHoudini?1.1传统CSS的困境当我们试图用CSS实现一个波浪形边框时,通常会经历这样的挣扎:/*传统实现方案*/.wave-border{position:relative;overflow:hidden;}.wave-border::after{content:'';position:absolute;/*需要复杂计算和多个伪元素拼接*/}这种实现方式存在三个致命</div> </li> <li><a href="/article/1892463275187171328.htm" title="Ubuntu终端常用快捷键总结" target="_blank">Ubuntu终端常用快捷键总结</a> <span class="text-muted">机器人那些事儿</span> <a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83/1.htm">开发环境</a><a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a> <div>基本导航快捷键:Ctrl+A:将光标移到行首Ctrl+E:将光标移到行尾Ctrl+U:删除光标前的所有字符Ctrl+K:删除光标后的所有字符Ctrl+L:清屏(相当于执行clear命令)编辑命令行:Ctrl+W:删除光标前的一个单词Ctrl+Y:粘贴之前使用Ctrl+U或Ctrl+K删除的文本Ctrl+_:撤销上一步的操作历史命令:Ctrl+R:逆向搜索历史命令Ctrl+G:退出历史命令搜索模式C</div> </li> <li><a href="/article/1892463022924951552.htm" title="利用Beautiful Soup和Pandas进行网页数据抓取与清洗处理实战" target="_blank">利用Beautiful Soup和Pandas进行网页数据抓取与清洗处理实战</a> <span class="text-muted">傻啦嘿哟</span> <a class="tag" taget="_blank" href="/search/pandas/1.htm">pandas</a> <div>目录一、准备工作二、抓取网页数据三、数据清洗四、数据处理五、保存数据六、完整代码示例七、总结在数据分析和机器学习的项目中,数据的获取、清洗和处理是非常关键的步骤。今天,我们将通过一个实战案例,演示如何利用Python中的BeautifulSoup库进行网页数据抓取,并使用Pandas库进行数据清洗和处理。这个案例不仅适合初学者,也能帮助有一定经验的朋友快速掌握这两个强大的工具。一、准备工作在开始之</div> </li> <li><a href="/article/45.htm" title="安装数据库首次应用" target="_blank">安装数据库首次应用</a> <span class="text-muted">Array_06</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a> <div>可是为什么再一次失败之后就变成直接跳过那个要求 enter full pathname of java.exe的界面 这个java.exe是你的Oracle 11g安装目录中例如:【F:\app\chen\product\11.2.0\dbhome_1\jdk\jre\bin】下的java.exe 。不是你的电脑安装的java jdk下的java.exe! 注意第一次,使用SQL D</div> </li> <li><a href="/article/172.htm" title="Weblogic Server Console密码修改和遗忘解决方法" target="_blank">Weblogic Server Console密码修改和遗忘解决方法</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/Welogic/1.htm">Welogic</a> <div>        在工作中一同事将Weblogic的console的密码忘记了,通过网上查询资料解决,实践整理了一下。 一.修改Console密码         打开weblogic控制台,安全领域 --> myrealm -->&n</div> </li> <li><a href="/article/299.htm" title="IllegalStateException: Cannot forward a response that is already committed" target="_blank">IllegalStateException: Cannot forward a response that is already committed</a> <span class="text-muted">Cwind</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/Servlets/1.htm">Servlets</a> <div>对于初学者来说,一个常见的误解是:当调用 forward() 或者 sendRedirect() 时控制流将会自动跳出原函数。标题所示错误通常是基于此误解而引起的。 示例代码: protected void doPost() { if (someCondition) { sendRedirect(); } forward(); // Thi</div> </li> <li><a href="/article/426.htm" title="基于流的装饰设计模式" target="_blank">基于流的装饰设计模式</a> <span class="text-muted">木zi_鸣</span> <a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a> <div>当想要对已有类的对象进行功能增强时,可以定义一个类,将已有对象传入,基于已有的功能,并提供加强功能。 自定义的类成为装饰类 模仿BufferedReader,对Reader进行包装,体现装饰设计模式 装饰类通常会通过构造方法接受被装饰的对象,并基于被装饰的对象功能,提供更强的功能。 装饰模式比继承灵活,避免继承臃肿,降低了类与类之间的关系 装饰类因为增强已有对象,具备的功能该</div> </li> <li><a href="/article/553.htm" title="Linux中的uniq命令" target="_blank">Linux中的uniq命令</a> <span class="text-muted">被触发</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>Linux命令uniq的作用是过滤重复部分显示文件内容,这个命令读取输入文件,并比较相邻的行。在正常情 况下,第二个及以后更多个重复行将被删去,行比较是根据所用字符集的排序序列进行的。该命令加工后的结果写到输出文件中。输入文件和输出文件必须不同。如 果输入文件用“- ”表示,则从标准输入读取。 AD: uniq [选项] 文件 说明:这个命令读取输入文件,并比较相邻的行。在正常情况下,第二个</div> </li> <li><a href="/article/680.htm" title="正则表达式Pattern" target="_blank">正则表达式Pattern</a> <span class="text-muted">肆无忌惮_</span> <a class="tag" taget="_blank" href="/search/Pattern/1.htm">Pattern</a> <div>正则表达式是符合一定规则的表达式,用来专门操作字符串,对字符创进行匹配,切割,替换,获取。   例如,我们需要对QQ号码格式进行检验 规则是长度6~12位  不能0开头  只能是数字,我们可以一位一位进行比较,利用parseLong进行判断,或者是用正则表达式来匹配[1-9][0-9]{4,14} 或者 [1-9]\d{4,14} &nbs</div> </li> <li><a href="/article/807.htm" title="Oracle高级查询之OVER (PARTITION BY ..)" target="_blank">Oracle高级查询之OVER (PARTITION BY ..)</a> <span class="text-muted">知了ing</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a> <div>一、rank()/dense_rank() over(partition by ...order by ...) 现在客户有这样一个需求,查询每个部门工资最高的雇员的信息,相信有一定oracle应用知识的同学都能写出下面的SQL语句: select e.ename, e.job, e.sal, e.deptno from scott.emp e, (se</div> </li> <li><a href="/article/934.htm" title="Python调试" target="_blank">Python调试</a> <span class="text-muted">矮蛋蛋</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/pdb/1.htm">pdb</a> <div>原文地址: http://blog.csdn.net/xuyuefei1988/article/details/19399137 1、下面网上收罗的资料初学者应该够用了,但对比IBM的Python 代码调试技巧: IBM:包括 pdb 模块、利用 PyDev 和 Eclipse 集成进行调试、PyCharm 以及 Debug 日志进行调试: http://www.ibm.com/d</div> </li> <li><a href="/article/1061.htm" title="webservice传递自定义对象时函数为空,以及boolean不对应的问题" target="_blank">webservice传递自定义对象时函数为空,以及boolean不对应的问题</a> <span class="text-muted">alleni123</span> <a class="tag" taget="_blank" href="/search/webservice/1.htm">webservice</a> <div>今天在客户端调用方法 NodeStatus status=iservice.getNodeStatus(). 结果NodeStatus的属性都是null。 进行debug之后,发现服务器端返回的确实是有值的对象。 后来发现原来是因为在客户端,NodeStatus的setter全部被我删除了。 本来是因为逻辑上不需要在客户端使用setter, 结果改了之后竟然不能获取带属性值的</div> </li> <li><a href="/article/1188.htm" title="java如何干掉指针,又如何巧妙的通过引用来操作指针————>说的就是java指针" target="_blank">java如何干掉指针,又如何巧妙的通过引用来操作指针————>说的就是java指针</a> <span class="text-muted">百合不是茶</span> <div>C语言的强大在于可以直接操作指针的地址,通过改变指针的地址指向来达到更改地址的目的,又是由于c语言的指针过于强大,初学者很难掌握, java的出现解决了c,c++中指针的问题 java将指针封装在底层,开发人员是不能够去操作指针的地址,但是可以通过引用来间接的操作:   定义一个指针p来指向a的地址(&是地址符号):         </div> </li> <li><a href="/article/1315.htm" title="Eclipse打不开,提示“An error has occurred.See the log file ***/.log”" target="_blank">Eclipse打不开,提示“An error has occurred.See the log file ***/.log”</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a> <div>打开eclipse工作目录的\.metadata\.log文件,发现如下错误: !ENTRY org.eclipse.osgi 4 0 2012-09-10 09:28:57.139 !MESSAGE Application error !STACK 1 java.lang.NoClassDefFoundError: org/eclipse/core/resources/IContai</div> </li> <li><a href="/article/1442.htm" title="spring aop实例annotation方法实现" target="_blank">spring aop实例annotation方法实现</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/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/AOP/1.htm">AOP</a><a class="tag" taget="_blank" href="/search/annotation/1.htm">annotation</a> <div>        在spring aop实例中我们通过配置xml文件来实现AOP,这里学习使用annotation来实现,使用annotation其实就是指明具体的aspect,pointcut和advice。1.申明一个切面(用一个类来实现)在这个切面里,包括了advice和pointcut AdviceMethods.jav</div> </li> <li><a href="/article/1569.htm" title="[Velocity一]Velocity语法基础入门" target="_blank">[Velocity一]Velocity语法基础入门</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/velocity/1.htm">velocity</a> <div>用户和开发人员参考文档 http://velocity.apache.org/engine/releases/velocity-1.7/developer-guide.html   注释 1.行级注释## 2.多行注释#*  *#   变量定义 使用$开头的字符串是变量定义,例如$var1, $var2,   赋值 使用#set为变量赋值,例</div> </li> <li><a href="/article/1696.htm" title="【Kafka十一】关于Kafka的副本管理" target="_blank">【Kafka十一】关于Kafka的副本管理</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/kafka/1.htm">kafka</a> <div>1. 关于request.required.acks   request.required.acks控制者Producer写请求的什么时候可以确认写成功,默认是0, 0表示即不进行确认即返回。 1表示Leader写成功即返回,此时还没有进行写数据同步到其它Follower Partition中 -1表示根据指定的最少Partition确认后才返回,这个在   Th</div> </li> <li><a href="/article/1823.htm" title="lua统计nginx内部变量数据" target="_blank">lua统计nginx内部变量数据</a> <span class="text-muted">ronin47</span> <a class="tag" taget="_blank" href="/search/lua+nginx%E3%80%80+%E7%BB%9F%E8%AE%A1/1.htm">lua nginx  统计</a> <div>server { listen 80; server_name photo.domain.com; location /{set $str $uri; content_by_lua ' local url = ngx.var.uri local res = ngx.location.capture(</div> </li> <li><a href="/article/1950.htm" title="java-11.二叉树中节点的最大距离" target="_blank">java-11.二叉树中节点的最大距离</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div> import java.util.ArrayList; import java.util.List; public class MaxLenInBinTree { /* a. 1 / \ 2 3 / \ / \ 4 5 6 7 max=4 pass "root" </div> </li> <li><a href="/article/2077.htm" title="Netty源码学习-ReadTimeoutHandler" target="_blank">Netty源码学习-ReadTimeoutHandler</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/netty/1.htm">netty</a> <div> ReadTimeoutHandler的实现思路: 开启一个定时任务,如果在指定时间内没有接收到消息,则抛出ReadTimeoutException 这个异常的捕获,在开发中,交给跟在ReadTimeoutHandler后面的ChannelHandler,例如 private final ChannelHandler timeoutHandler = new ReadTim</div> </li> <li><a href="/article/2204.htm" title="jquery验证上传文件样式及大小(好用)" target="_blank">jquery验证上传文件样式及大小(好用)</a> <span class="text-muted">cngolon</span> <a class="tag" taget="_blank" href="/search/%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0/1.htm">文件上传</a><a class="tag" taget="_blank" href="/search/jquery%E9%AA%8C%E8%AF%81/1.htm">jquery验证</a> <div><!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script src="jquery1.8/jquery-1.8.0.</div> </li> <li><a href="/article/2331.htm" title="浏览器兼容【转】" target="_blank">浏览器兼容【转】</a> <span class="text-muted">cuishikuan</span> <a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/%E6%B5%8F%E8%A7%88%E5%99%A8/1.htm">浏览器</a><a class="tag" taget="_blank" href="/search/IE/1.htm">IE</a> <div>浏览器兼容问题一:不同浏览器的标签默认的外补丁和内补丁不同 问题症状:随便写几个标签,不加样式控制的情况下,各自的margin 和padding差异较大。 碰到频率:100% 解决方案:CSS里    *{margin:0;padding:0;} 备注:这个是最常见的也是最易解决的一个浏览器兼容性问题,几乎所有的CSS文件开头都会用通配符*来设</div> </li> <li><a href="/article/2458.htm" title="Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数" target="_blank">Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/shell/1.htm">shell</a><a class="tag" taget="_blank" href="/search/%24%23/1.htm">$#</a><a class="tag" taget="_blank" href="/search/%24%3F/1.htm">$?</a><a class="tag" taget="_blank" href="/search/%E7%89%B9%E6%AE%8A%E5%8F%98%E9%87%8F/1.htm">特殊变量</a> <div>前面已经讲到,变量名只能包含数字、字母和下划线,因为某些包含其他字符的变量有特殊含义,这样的变量被称为特殊变量。例如,$ 表示当前Shell进程的ID,即pid,看下面的代码: $echo $$ 运行结果 29949   特殊变量列表 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个</div> </li> <li><a href="/article/2585.htm" title="程序设计KISS 原则-------KEEP IT SIMPLE, STUPID!" target="_blank">程序设计KISS 原则-------KEEP IT SIMPLE, STUPID!</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/unix/1.htm">unix</a> <div>翻到一本书,讲到编程一般原则是kiss:Keep It Simple, Stupid.对这个原则深有体会,其实不仅编程如此,而且系统架构也是如此。 KEEP IT SIMPLE, STUPID! 编写只做一件事情,并且要做好的程序;编写可以在一起工作的程序,编写处理文本流的程序,因为这是通用的接口。这就是UNIX哲学.所有的哲学真 正的浓缩为一个铁一样的定律,高明的工程师的神圣的“KISS 原</div> </li> <li><a href="/article/2712.htm" title="android Activity间List传值" target="_blank">android Activity间List传值</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/Activity/1.htm">Activity</a> <div>第一个Activity: import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import a</div> </li> <li><a href="/article/2839.htm" title="tomcat 设置java虚拟机内存" target="_blank">tomcat 设置java虚拟机内存</a> <span class="text-muted">eksliang</span> <a class="tag" taget="_blank" href="/search/tomcat+%E5%86%85%E5%AD%98%E8%AE%BE%E7%BD%AE/1.htm">tomcat 内存设置</a> <div>转载请出自出处:http://eksliang.iteye.com/blog/2117772 http://eksliang.iteye.com/ 常见的内存溢出有以下两种: java.lang.OutOfMemoryError: PermGen space java.lang.OutOfMemoryError: Java heap space   ------------</div> </li> <li><a href="/article/2966.htm" title="Android 数据库事务处理" target="_blank">Android 数据库事务处理</a> <span class="text-muted">gqdy365</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>使用SQLiteDatabase的beginTransaction()方法可以开启一个事务,程序执行到endTransaction() 方法时会检查事务的标志是否为成功,如果程序执行到endTransaction()之前调用了setTransactionSuccessful() 方法设置事务的标志为成功则提交事务,如果没有调用setTransactionSuccessful() 方法则回滚事务。事</div> </li> <li><a href="/article/3093.htm" title="Java 打开浏览器" target="_blank">Java 打开浏览器</a> <span class="text-muted">hw1287789687</span> <a class="tag" taget="_blank" href="/search/%E6%89%93%E5%BC%80%E7%BD%91%E5%9D%80/1.htm">打开网址</a><a class="tag" taget="_blank" href="/search/open%E6%B5%8F%E8%A7%88%E5%99%A8/1.htm">open浏览器</a><a class="tag" taget="_blank" href="/search/open+browser/1.htm">open browser</a><a class="tag" taget="_blank" href="/search/%E6%89%93%E5%BC%80url/1.htm">打开url</a><a class="tag" taget="_blank" href="/search/%E6%89%93%E5%BC%80%E6%B5%8F%E8%A7%88%E5%99%A8/1.htm">打开浏览器</a> <div>使用java 语言如何打开浏览器呢? 我们先研究下在cmd窗口中,如何打开网址 使用IE 打开 D:\software\bin>cmd /c start iexplore http://hw1287789687.iteye.com/blog/2153709 使用火狐打开 D:\software\bin>cmd /c start firefox http://hw1287789</div> </li> <li><a href="/article/3220.htm" title="ReplaceGoogleCDN:将 Google CDN 替换为国内的 Chrome 插件" target="_blank">ReplaceGoogleCDN:将 Google CDN 替换为国内的 Chrome 插件</a> <span class="text-muted">justjavac</span> <a class="tag" taget="_blank" href="/search/chrome/1.htm">chrome</a><a class="tag" taget="_blank" href="/search/Google/1.htm">Google</a><a class="tag" taget="_blank" href="/search/google+api/1.htm">google api</a><a class="tag" taget="_blank" href="/search/chrome%E6%8F%92%E4%BB%B6/1.htm">chrome插件</a> <div>Chrome Web Store 安装地址: https://chrome.google.com/webstore/detail/replace-google-cdn/kpampjmfiopfpkkepbllemkibefkiice 由于众所周知的原因,只需替换一个域名就可以继续使用Google提供的前端公共库了。 同样,通过script标记引用这些资源,让网站访问速度瞬间提速吧</div> </li> <li><a href="/article/3347.htm" title="进程VS.线程" target="_blank">进程VS.线程</a> <span class="text-muted">m635674608</span> <a class="tag" taget="_blank" href="/search/%E7%BA%BF%E7%A8%8B/1.htm">线程</a> <div>资料来源: http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001397567993007df355a3394da48f0bf14960f0c78753f000 1、Apache最早就是采用多进程模式 2、IIS服务器默认采用多线程模式 3、多进程优缺点 优点: 多进程模式最大</div> </li> <li><a href="/article/3474.htm" title="Linux下安装MemCached" target="_blank">Linux下安装MemCached</a> <span class="text-muted">字符串</span> <a class="tag" taget="_blank" href="/search/memcached/1.htm">memcached</a> <div>前提准备:1. MemCached目前最新版本为:1.4.22,可以从官网下载到。2. MemCached依赖libevent,因此在安装MemCached之前需要先安装libevent。2.1 运行下面命令,查看系统是否已安装libevent。[root@SecurityCheck ~]# rpm -qa|grep libevent libevent-headers-1.4.13-4.el6.n</div> </li> <li><a href="/article/3601.htm" title="java设计模式之--jdk动态代理(实现aop编程)" target="_blank">java设计模式之--jdk动态代理(实现aop编程)</a> <span class="text-muted">Supanccy2013</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/DAO/1.htm">DAO</a><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a><a class="tag" taget="_blank" href="/search/AOP/1.htm">AOP</a> <div>    与静态代理类对照的是动态代理类,动态代理类的字节码在程序运行时由Java反射机制动态生成,无需程序员手工编写它的源代码。动态代理类不仅简化了编程工作,而且提高了软件系统的可扩展性,因为Java 反射机制可以生成任意类型的动态代理类。java.lang.reflect 包中的Proxy类和InvocationHandler 接口提供了生成动态代理类的能力。 &</div> </li> <li><a href="/article/3728.htm" title="Spring 4.2新特性-对java8默认方法(default method)定义Bean的支持" target="_blank">Spring 4.2新特性-对java8默认方法(default method)定义Bean的支持</a> <span class="text-muted">wiselyman</span> <a class="tag" taget="_blank" href="/search/spring+4/1.htm">spring 4</a> <div>2.1 默认方法(default method) java8引入了一个default medthod; 用来扩展已有的接口,在对已有接口的使用不产生任何影响的情况下,添加扩展 使用default关键字 Spring 4.2支持加载在默认方法里声明的bean 2.2 将要被声明成bean的类 public class DemoService { </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>