Django基础七之CBV装饰器和中间件

Python微信订餐小程序课程视频

https://edu.csdn.net/course/detail/36074

Python实战量化交易理财系统

https://edu.csdn.net/course/detail/35475

Django基础七之CBV装饰器和中间件

目录* Django基础七之CBV装饰器和中间件
+ 1. CBV加装饰器
+ 2. Django中间件
- 2.1 Django中间件介绍
- 2.2 自定义中间件
- 2.2.1 自定义中间件
- 2.2.2 自定义中间件总结
- 2.2.3 其他中间件函数
- 2.3 新版本中间件写法
+ 3.Csrf中间件

1. CBV加装饰器

CBV加装饰器有三种方法,

案例:要求登录(不管get请求还是post请求)后才可以访问

HTML代码

index.html

html>


    
    Titletitle>

head>
<body>

<div>
    <p>Hello Indexp>
div>

body>
html>

</code></pre> 
  <p><code>login.html</code></p> 
  <pre><code>html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Titletitle>
head>
<body>
<div>
    <form action="" method="post">
        <p>username:<input type="text" name="username">p>
        <p>password:<input type="password" name="password">p>
        <p><input type="submit" value="提交">p>
    form>

div>
body>
html>

</code></pre> 
  <p><code>views.py</code></p> 
  <pre><code># CBV加装饰器方法一:
from django.shortcuts import render, HttpResponse, redirect

from django.views import View

from django.utils.decorators import method_decorator  # django提交加装饰器方法


# Create your views here.

# 装饰器
def login\_auth(func):
    def inner(request, *args, **kwargs):
        if request.session.get("is\_login"):
            res = func(*args, **kwargs)
            return res
        else:
            return redirect('/login/')

    return inner


class Index(View):
    # 方法一在每个需要验证的地方都加上装饰器
 @method\_decorator(login\_auth)
    def get(self, request):
        print("get 请求")
        return render(request, "index.html")
	# 个需要验证的地方加上装饰器
 @method\_decorator(login\_auth)
    def post(self, request):
        print("post 请求")
        return HttpResponse("post")


def login(request):
    if request.method == "POST":
        name = request.POST.get("username")
        password = request.POST.get("password")
        if name == "hans" and password == "123":
            request.session['is\_login'] = True
            print("登录成功")

    return render(request, "login.html")



# CBV加装饰器方法二:
from django.shortcuts import render, HttpResponse, redirect

from django.views import View

from django.utils.decorators import method_decorator


# Create your views here.
# 装饰器
def login\_auth(func):
    def inner(request, *args, **kwargs):
        if request.session.get("is\_login"):
            res = func(*args, **kwargs)
            return res
        else:
            return redirect('/login/')

    return inner

# 方法二 在类的上面加上,name为具体要加的函数
@method\_decorator(login\_auth, name='post')
@method\_decorator(login\_auth, name='get')
class Index(View):
    def get(self, request):
        print("get 请求")
        return render(request, "index.html")


    def post(self, request):
        print("post 请求")
        return HttpResponse("post")


def login(request):
    if request.method == "POST":
        name = request.POST.get("username")
        password = request.POST.get("password")
        if name == "hans" and password == "123":
            request.session['is\_login'] = True
            print("登录成功")

    return render(request, "login.html")


# CBV加装饰器方法三:

from django.shortcuts import render, HttpResponse, redirect

from django.views import View

from django.utils.decorators import method_decorator


# Create your views here.
# 装饰器
def login\_auth(func):
    def inner(request, *args, **kwargs):
        if request.session.get("is\_login"):
            res = func(*args, **kwargs)
            return res
        else:
            return redirect('/login/')

    return inner

class Index(View):
    #方法三 使用dispatch给所有的方法添加装饰器
 @method\_decorator(login\_auth)
    def dispatch(self, request, *args, **kwargs):
        return super().dispatch(request, *args, **kwargs)

    def get(self, request):
        print("get 请求")
        return render(request, "index.html")


    def post(self, request):
        print("post 请求")
        return HttpResponse("post")


def login(request):
    if request.method == "POST":
        name = request.POST.get("username")
        password = request.POST.get("password")
        if name == "hans" and password == "123":
            request.session['is\_login'] = True
            print("登录成功")

    return render(request, "login.html")


</code></pre> 
  <p><code>urls.py</code></p> 
  <pre><code>from django.contrib import admin
from django.urls import path

from wrapperMidd  import views
urlpatterns = [
    path('admin/', admin.site.urls),
    path('index/', views.Index.as_view()),
    path('login/', views.login),
]

</code></pre> 
  <p>访问地址:http://127.0.0.1:8000/index</p> 
  <p><code>get</code>的请求使用<code>POSTMAN</code>工具</p> 
  <h2>2. Django中间件</h2> 
  <h3>2.1 Django中间件介绍</h3> 
  <p>中间件是 <code>Django</code> 请求/响应处理的钩子框架。它是一个轻量级的、低级的“插件”系统,用于全局改变 <code>Django</code> 的输入或输出。</p> 
  <p>每个中间件组件负责做一些特定的功能,<code>Django</code>中自带了七个中间件</p> 
  <pre><code>MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',   # 安全中间件,为请求/响应周期提供了若干安全增强功能。每一项都可以通过设置独立地启用或禁用。
    'django.contrib.sessions.middleware.SessionMiddleware', # 启用会话支持
    'django.middleware.common.CommonMiddleware', # “通用”中间件
    'django.middleware.csrf.CsrfViewMiddleware', # CSRF 保护中间件,通过在 POST 表单中添加隐藏的表单字段,并检查请求的正确值,增加对跨站点伪造请求的保护。
    'django.contrib.auth.middleware.AuthenticationMiddleware', # 验证中间件,将代表当前登录的用户的 user 属性添加到每个传入的 HttpRequest 对象中
    'django.contrib.messages.middleware.MessageMiddleware', # 消息中间件,启用基于 cookie 和会话的消息支持
    'django.middleware.clickjacking.XFrameOptionsMiddleware', # X-Frame-Options 中间件,简单的 通过 X-Frame-Options 头的点击劫持保护。
]

</code></pre> 
  <p>中间件(<code>Middleware</code>)在整个<code>Django</code>的<code>request/response</code>处理机制中的角色如下所示:</p> 
  <blockquote> 
   <p><strong>HttpRequest -> Middleware(request) -> View -> Middleware(response) -> HttpResponse</strong></p> 
  </blockquote> 
  <p>中间件常用于权限校验、限制用户请求、打印日志、改变输出内容等多种应用场景.而且中间件对Django的输入或输出的改变是全局的。</p> 
  <p><code>Django</code> 中间件作用:</p> 
  <ul> 
   <li>修改请求,即传送到 view 中的 HttpRequest 对象。</li> 
   <li>修改响应,即 view 返回的 HttpResponse 对象。</li> 
  </ul> 
  <p>中间件执行顺序:</p> 
  <p><a href="http://img.e-com-net.com/image/info8/5ee452848f734b2e81fcd8b2117d64ee.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/5ee452848f734b2e81fcd8b2117d64ee.jpg" alt="Django基础七之CBV装饰器和中间件_第1张图片" width="650" height="505" style="border:1px solid black;"></a></p> 
  <h3>2.2 自定义中间件</h3> 
  <p>中间件可以定义四个方法:</p> 
  <ul> 
   <li>process_request(self,request)</li> 
   <li>process_view(self, request, view_func, view_args, view_kwargs)</li> 
   <li>process_exception(self, request, exception)</li> 
   <li>process_response(self, request, response)</li> 
  </ul> 
  <p>主要为<code>process_request</code>和<code>process_response</code></p> 
  <h3>2.2.1 自定义中间件</h3> 
  <p>在应用目录下新建一个 py 文件,名字自定义。</p> 
  <pre><code>在应用目录下创建myMiddle.py
myMiddle.py:

from django.utils.deprecation import MiddlewareMixin

class myMinddle(MiddlewareMixin):
    def process\_request(self, request):  # 在视图之前执行
        print("这是自定义中间件 请求1")

    def process\_response(self,request, response):  #在视图之后执行
        print("这是自定义中间件 响应1")
        return response


</code></pre> 
  <p>把自定义的中间件注册到<code>setting.py</code>的 <code>MIDDLEWARE</code>里面:</p> 
  <pre><code>setting.py:

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'wrapperMidd.myMinddle.myMinddle',  # 自定义中间件
]

</code></pre> 
  <p>测试:</p> 
  <pre><code>views.py:
    
from django.shortcuts import render, HttpResponse, redirect
def testMinddle(request):
    print("testMinddle")
    return HttpResponse("TEST")

urls.py:
    
from django.contrib import admin
from django.urls import path

from appName  import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('testMinddle/', views.testMinddle),
]

# 访问:http://127.0.0.1:8000/testMinddle/
# 结果:
"""
这是自定义中间件 请求1
testMinddle
这是自定义中间件 响应1
"""

</code></pre> 
  <p>增加两个自定义中间件,执行过程:</p> 
  <pre><code>myMiddle.py:

from django.utils.deprecation import MiddlewareMixin

class myMinddle(MiddlewareMixin):
    def process\_request(self, request):
        print("这是自定义中间件 请求1")

    def process\_response(self,request, response):
        print("这是自定义中间件 响应1")
        return response


class myMinddle2(MiddlewareMixin):
    def process\_request(self, request):
        print("这是自定义中间件 请求2")

    def process\_response(self,request, response):
        print("这是自定义中间件 响应2")
        return response


setting.py:
MIDDLEWARE = [
    ......
    'wrapperMidd.myMinddle.myMinddle',
    'wrapperMidd.myMinddle.myMinddle2',
]

# 访问:http://127.0.0.1:8000/testMinddle/
# 结果
"""
这是自定义中间件 请求1
这是自定义中间件 请求2
testMinddle
这是自定义中间件 响应2
这是自定义中间件 响应1
"""

</code></pre> 
  <p>如果在第一个中间件直接返回,执行顺序如果:</p> 
  <pre><code>myMiddle.py:

from django.utils.deprecation import MiddlewareMixin
from django.shortcuts import HttpResponse

class myMinddle(MiddlewareMixin):
    def process\_request(self, request):
        print("这是自定义中间件 请求1")
        return HttpResponse("request")   """在这里直接返回"""
    def process\_response(self,request, response):
        print("这是自定义中间件 响应1")
        return response


class myMinddle2(MiddlewareMixin):
    def process\_request(self, request):
        print("这是自定义中间件 请求2")

    def process\_response(self,request, response):
        print("这是自定义中间件 响应2")
        return response

# 访问:http://127.0.0.1:8000/testMinddle/
# 结果:
网页上显示:request
后台显示:
"""
这是自定义中间件 请求1
这是自定义中间件 响应1
"""


</code></pre> 
  <h3>2.2.2 自定义中间件总结</h3> 
  <ol> 
   <li>自定义中间件先执行<code>process_request</code>再执行<code>views.py</code>里的视图函数,最后再执行<code>process_response</code>,而且<code>process_response</code>函数必须要返回 <code>return response</code></li> 
   <li>如果有多个自定义中间件,则执行顺序按<code>settings.py</code>里自上而下执行,写在上面的先执行。执行顺序</li> 
  </ol> 
  <pre><code>自定义中间件1 process_request--->自定义中间件2 process_request-->视图函数-->自定义中间件2 process_response -->自定义中间件1 process_response

</code></pre> 
  <ol start="3"> 
   <li>如果自定义中间件的<code>process_request</code>里有<code>return</code>返回,而这个中间件还是在上面,则它会执行自己定义的<code>process_request</code>和<code>process_response</code>,则视图函数和其他的中间件都不执行</li> 
   <li>如果自定义中间件的<code>process_request</code>里有<code>return</code>返回,而这个中间件上面还有其他的中间件,则会自上而下执行,执行到自定义中间件的<code>process_request</code>后就会执行<code>process_response</code>,则视图函数和它下面的中间件都不执行</li> 
  </ol> 
  <pre><code>MIDDLEWARE = [
    ...其他中间件...
    '自定义中间件1',
    '自定义中间件2',  # 自定义中间件2里使用return直接返回 
    '自定义中间件3',
]

执行顺序:
"""
其他中间件 process\_request --> 自定义中间件1 process\_request --> 自定义中间件2 process\_request --> 自定义中间件2 process\_response --> 自定义中间件1 process\_response -->其他中间件 process\_response
"""
视图函数和自定义中间件3是不执行的

</code></pre> 
  <h3>2.2.3 其他中间件函数</h3> 
  <p><code>process_view</code></p> 
  <pre><code>process_view在process_request之后,路由转发到视图,执行视图之前执行。

process_view() 只在 Django 调用视图前被调用。它应该返回 None 或 HttpResponse 对象。如果它返回 None ,Django 将继续处理这个请求,执行任何其他的 process_view() ,然后执行相应的视图。如果它返回 HttpResponse 对象,Django 不会去影响调用相应的视图;它会将响应中间件应用到 HttpResponse 并返回结果。


函数定义:
process_view(request, view_func, view_args, view_kwargs)
request 是一个 HttpRequest 对象。
view_func 是一个 Django 将要使用的 Python 函数。(这是一个真实的函数对象,不是函数的名称);view_args 是一个用来传递给视图的位置参数列表,;
view_kwargs 是一个用来传递给视图的关键字参数字典。
view_args 和 view_kwargs 都不包含第一个视图参数 ( request )。

</code></pre> 
  <p><code>process_exception</code></p> 
  <pre><code>视图执行中发生异常时执行。

当视图引发异常时,Django 会调用 process_exception()。process_exception() 应该返回 None 或 HttpResponse 对象。如果它返回一个 HttpResponse 对象,模板响应和响应中间件将被应用且会将结果响应返回浏览器。否则,就会开始默认异常处理( default exception handling )。

再次,中间件在响应阶段会按照相反的顺序运行,其中包括 process_exception 。如果异常中间件返回一个响应,那么中间件之上的中间件类的 process_exception 方法根本不会被调用。

函数定义:
process_exception(request, exception)
request 是一个 HttpRequest 对象。 exception 是一个由视图函数引发的 Exception 对象。

</code></pre> 
  <p><code>process_template_response</code></p> 
  <pre><code>视图函数刚执行完毕,process_response之前执行。


process_template_response() 在视图被完全执行后调用,如果响应实例有 render() 方法,表明它是一个 TemplateResponse 或等效对象。

它必须返回一个实现了 render 方法的响应对象。它可以通过改变``response.template_name`` 和 response.context_data 来改变给定的 response ,或者它可以创建和返回全新的 TemplateResponse 或等效对象。

不需要显式地渲染响应——一旦所有模板中间件被调用,响应会被自动渲染。

中间件会在响应阶段按照相反的顺序运行,其中包括 process_template_response() 。


函数定义:
process_template_response(request, response)

request 是一个 HttpRequest 对象。
response 是 TemplateResponse 对象(或者等效对象),它通过 Django 视图或中间件返回。


</code></pre> 
  <pre><code>from django.utils.deprecation import MiddlewareMixin
from django.shortcuts import HttpResponse

class myMinddle(MiddlewareMixin):
    def process\_request(self, request):
        print("这是自定义中间件 请求1")

    def process\_response(self,request, response):
        print("这是自定义中间件 响应1")
        return response

    def process\_view(self,request, view\_func, view\_args, view\_kwargs):
        print("视图函数之前执行")

    def process\_exception(self,request,exception):
        print("处理视图函数")
        
访问http://127.0.0.1:8000/testMinddle/
结果:
这是自定义中间件 请求1
视图函数之前执行
testMinddle
这是自定义中间件 响应1


# 视图函数出错示例:
这是自定义中间件 请求1
视图函数之前执行
testMinddle
处理视图函数错误
这是自定义中间件 响应1

</code></pre> 
  <h3>2.3 新版本中间件写法</h3> 
  <p>官网上给的示例:</p> 
  <pre><code>class SimpleMiddleware:
    def \_\_init\_\_(self, get\_response):
        self.get_response = get_response
        # 配置和初始化

    def \_\_call\_\_(self, request):
        # 在这里编写视图和后面的中间件被调用之前需要执行的代码,即process\_request()
        response = self.get_response(request)

        # 在这里编写视图调用后需要执行的代码,即process\_response()

        return response

</code></pre> 
  <p>案例:</p> 
  <pre><code>使用官网上的写法不用继承 MiddlewareMixin

class SimpleMiddleware:
    def \_\_init\_\_(self, get\_response):
        self.get_response = get_response
        # One-time configuration and initialization.

    def \_\_call\_\_(self, request):
        # Code to be executed for each request before
        # the view (and later middleware) are called.
        print("这是自定义中间件 SimpleMiddleware的请求")
        response = self.get_response(request)

        # Code to be executed for each request/response after
        # the view is called.
        print("这是自定义中间件 SimpleMiddleware的响应")

        return response

# 执行结果:
这是自定义中间件 SimpleMiddleware的请求
testMinddle
这是自定义中间件 SimpleMiddleware的响应


</code></pre> 
  <p><strong>注意</strong></p> 
  <p><code>__init__(get_response)</code></p> 
  <p>中间件必须接受 <code>get_response</code> 参数。还可以初始化中间件的一些全局状态。记住两个注意事项:</p> 
  <ul> 
   <li>Django仅用 <code>get_response</code> 参数初始化您的中间件,因此不能定义 <code>__init__()</code> ,因为需要其他参数。</li> 
   <li>与每次请求都会调用 <code>__call__()</code> 方法不同,当 Web 服务器启动后,<code>__init__()</code> 只被调用<em>一次</em></li> 
  </ul> 
  <p>上面只定义了<code>process_request</code>和<code>process_response</code> 其中<code>process_view</code>和<code>process_exception</code>还是要写。</p> 
  <pre><code>class SimpleMiddleware:
    def \_\_init\_\_(self, get\_response):
        self.get_response = get_response
       
    def \_\_call\_\_(self, request):

        print("这是自定义中间件 SimpleMiddleware的请求")
        response = self.get_response(request)
        
        print("这是自定义中间件 SimpleMiddleware的响应")

        return response

    def process\_view(self,request, view\_func, view\_args, view\_kwargs):
        print("视图函数之前执行")

    def process\_exception(self,request,exception):
        print("处理视图函数错误")

</code></pre> 
  <h2>3.Csrf中间件</h2> 
  <p>使用<code>Django</code>框架使用<code>django.middleware.csrf.CsrfViewMiddleware</code>中间件,在前端页面提交操作的时候,会报错:</p> 
  <pre><code>Forbidden (403)
CSRF verification failed. Request aborted.

</code></pre> 
  <p>解决方法:</p> 
  <pre><code>如果使用form提交,则在前端页面里加入:
    {% csrf_token %}
如:

 
 {% csrf\_token %}
 username: 
 password:
 
 



如果是Ajax提交:
"""一定要导入jquery"""


 username: 
 password:
 



 $('#btn').click(function (){
 $.ajax({
 url: "",
 method: "post",
 data: {username: $('#user').val(), password: $('#pwd').val(), csrfmiddlewaretoken: '{{csrf\_token}}'},

 success: function (data) {
 console.log(data)

 }
 })

 })




# 使用cookie:
使用cookie 则要导入"""jquery.cookie.min.js"""


const csrftoken = $.cookie('csrftoken');

使用:


 username: 
 password:
 



 $('#btn').click(function (){
 const csrftoken = $.cookie('csrftoken');
 $.ajax({
 url: "",
 headers:{'X-CSRFToken': csrftoken}, // 加请求头。
 method: "post",
 data: {username: $('#user').val(), password: $('#pwd').val()},
 success: function (data) {
 console.log(data)

 }
 })

 })





</code></pre> 
  <p>全局使用csrf局部函数使用,或全局不使用,局部函数使用csrf</p> 
  <pre><code>from django.views.decorators.csrf import csrf_exempt,csrf_protect
# 全局使用,局部不使用
@csrf\_exempt
def xxx()

# 全局不使用(禁用掉),局部使用
@csrf\_protect
def yyy()

</code></pre> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1529852562826620928"></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">你可能感兴趣的:(python,计算机)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1892644389407223808.htm"
                           title="跟我一起学Python数据处理(七十五):网页抓取之网页分析技巧" target="_blank">跟我一起学Python数据处理(七十五):网页抓取之网页分析技巧</a>
                        <span class="text-muted">lilye66</span>
<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><a class="tag" taget="_blank" href="/search/pandas/1.htm">pandas</a><a class="tag" taget="_blank" href="/search/matplotlib/1.htm">matplotlib</a>
                        <div>跟我一起学Python数据处理(七十五):网页抓取之网页分析技巧大家好呀!在Python数据处理的学习道路上,我深知独自摸索可能会遇到不少困难,所以希望通过这些博客,能和大家一起学习、共同进步,让我们都能更熟练地掌握这门技术。今天,咱们接着深入探讨网页抓取中的关键环节——分析网页。一、网页抓取与网页分析的关联网页抓取是获取网络数据的重要手段,在数据处理流程里占据着关键位置。而网页分析则是网页抓取的</div>
                    </li>
                    <li><a href="/article/1892639847051489280.htm"
                           title="人工智能专业毕业设计题目精选:推荐合集" target="_blank">人工智能专业毕业设计题目精选:推荐合集</a>
                        <span class="text-muted">HaiLang_IT</span>
<a class="tag" taget="_blank" href="/search/%E6%AF%95%E4%B8%9A%E8%AE%BE%E8%AE%A1%E9%80%89%E9%A2%98/1.htm">毕业设计选题</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89/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/%E7%9B%AE%E6%A0%87%E6%A3%80%E6%B5%8B/1.htm">目标检测</a>
                        <div>目录前言毕设选题开题指导建议更多精选选题选题帮助最后前言大家好,这里是海浪学长毕设专题!大四是整个大学期间最忙碌的时光,一边要忙着准备考研、考公、考教资或者实习为毕业后面临的升学就业做准备,一边要为毕业设计耗费大量精力。学长给大家整理了计算机专业最新精选选题,如遇选题困难或选题有任何疑问,都可以问学长哦(见文末)!对毕设有任何疑问都可以问学长哦!更多选题指导:最新最全计算机专业毕设选题精选推荐汇总</div>
                    </li>
                    <li><a href="/article/1892639845923221504.htm"
                           title="跨语言语义理解与生成:多语言预训练方法及一致性优化策略" target="_blank">跨语言语义理解与生成:多语言预训练方法及一致性优化策略</a>
                        <span class="text-muted">网罗开发</span>
<a class="tag" taget="_blank" href="/search/AI/1.htm">AI</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%A8%A1%E5%9E%8B/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/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1/1.htm">负载均衡</a>
                        <div>网罗开发(小红书、快手、视频号同名)  大家好,我是展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、HarmonyOS、Java、Python等方向。在移动端开发、鸿蒙开发、物联网、嵌入式、云原生、开源等领域有深厚造诣。图书作者:《ESP32-C3物联网工程开发实战》图书作者:《SwiftUI入门,进阶与实战》超级个体:CO</div>
                    </li>
                    <li><a href="/article/1892637954677993472.htm"
                           title="编程语言" target="_blank">编程语言</a>
                        <span class="text-muted">難釋懷</span>
<a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>在当今数字化的时代,编程语言作为人与计算机交流的桥梁,扮演着至关重要的角色。无论是开发一款手机应用、创建一个网站还是实现复杂的数据分析,选择合适的编程语言都是成功的关键之一。本文将带你走进编程语言的世界,探索它们的基本概念、类型以及如何根据项目需求选择最合适的工具。一、什么是编程语言?编程语言是一种用于编写计算机程序的形式化语言,它定义了一套规则和语法,让开发者能够指示计算机执行特定任务。编程语言</div>
                    </li>
                    <li><a href="/article/1892637262924017664.htm"
                           title="Python 抽象基类 ABC :从实践到优雅" target="_blank">Python 抽象基类 ABC :从实践到优雅</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>今天我们来聊聊Python中的抽象基类(AbstractBaseClass,简称ABC)。虽然这个概念在Python中已经存在很久了,但在日常开发中,很多人可能用得并不多,或者用得不够优雅。让我们从一个实际场景开始:假设你正在开发一个文件处理系统,需要支持不同格式的文件读写,比如JSON、CSV、XML等。初始版本:简单但不够严谨我们先来看看最简单的实现方式:classFileHandler:de</div>
                    </li>
                    <li><a href="/article/1892637261648949248.htm"
                           title="Python 并发编程实战:优雅地使用 concurrent.futures" target="_blank">Python 并发编程实战:优雅地使用 concurrent.futures</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>在Python多线程编程中,concurrent.futures模块提供了一个高层的接口来异步执行可调用对象。今天,我们将通过一个循序渐进的案例,深入了解如何使用这个强大的工具。从一个模拟场景开始假设我们需要处理一批网络请求。为了模拟这个场景,我们使用sleep来代表耗时操作:importtimeimportrandomdefslow_operation(task_id):"""模拟一个耗时的网络</div>
                    </li>
                    <li><a href="/article/1892637133265498112.htm"
                           title="shutil 标准库: Python 文件操作的万用刀" target="_blank">shutil 标准库: Python 文件操作的万用刀</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>今天来聊一个被低估的Python标准库-shutil。工作中我们用Python(尤其是写一些短小轻快的脚本)虽然经常和文件打交道,却很少用到shutil。但实际上,shutil提供了比os模块更高级的文件操作接口,能让我们写出更Pythonic的代码。从一个真实场景说起最近在整理项目代码时,需要将散落在各处的配置文件归类到统一目录。按以往的习惯,我会这样写:importos#创建目标目录ifnot</div>
                    </li>
                    <li><a href="/article/1892637134586703872.htm"
                           title="Python 自带的日期日历处理大师:calendar 库" target="_blank">Python 自带的日期日历处理大师:calendar 库</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>在Python开发中,我们经常需要处理日期和时间。虽然datetime库是最常用的选择,但其实Python标准库中的calendar模块也是一个强大的工具,特别适合处理日历相关的计算和展示。从一个真实场景开始假设你正在开发一个会议室预订系统,需要:展示月度视图计算工作日处理节假日逻辑让我们看看如何用calendar来优雅地解决这些问题。基础用法:生成日历importcalendar#创建日历对象c</div>
                    </li>
                    <li><a href="/article/1892637132065927168.htm"
                           title="Python性能优化的幕后功臣: __pycache__与字节码缓存机制" target="_blank">Python性能优化的幕后功臣: __pycache__与字节码缓存机制</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>在日常Python开发中,我们经常会看到项目目录下神秘的__pycache__文件夹和.pyc文件。作为经验丰富的Python开发者,今天让我们深入理解这个性能优化机制。从一个性能困扰说起最近在优化一个数据处理微服务时,发现每次启动服务都需要2-3秒的预热时间。通过profile可以发现大量时间花在了Python模块的加载上。Python的编译过程与大多数人的认知不同,Python并不是纯解释型语</div>
                    </li>
                    <li><a href="/article/1892636877719138304.htm"
                           title="Python Generator:一个被低估的性能利器" target="_blank">Python Generator:一个被低估的性能利器</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>调用OpenAI的API时,设置stream=True,接着forchunkincompletion:我们就可以“流式”地获取响应的内容。而非等待远程的模型将所有内容生成完毕,再返回给我们(这通常要等很久)。本文讨论这背后的PythonGenerator。从一个经典问题开始假设我们要处理一个超大的日志文件,需要按行读取并分析。传统的做法是:defread_log_file(filename):re</div>
                    </li>
                    <li><a href="/article/1892636878990012416.htm"
                           title="Python `__slots__` 进阶指南:不止于节省内存,从原理到实践" target="_blank">Python `__slots__` 进阶指南:不止于节省内存,从原理到实践</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>相信不少Python开发者都听说过__slots__,知道它可以帮助节省内存。但你是否思考过它背后的原理,以及在实际开发中的其他妙用?让我们一起深入探讨。从一个性能问题说起假设你的一个系统需要处理大量的订单对象:classOrder:def__init__(self,order_id,symbol,price,quantity):self.order_id=order_idself.symbol=</div>
                    </li>
                    <li><a href="/article/1892636876469235712.htm"
                           title="Python 元类(Meta Class):解密 Python 面向对象编程的幕后推手" target="_blank">Python 元类(Meta Class):解密 Python 面向对象编程的幕后推手</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AFpython/1.htm">后端python</a>
                        <div>在Python编程中,我们每天都在和类打交道,但是你是否也和我一样想过:类本身是什么?是谁创建了类?元类(MetaClass)就是用来创建类的"类"。今天让我们一起深入理解这个强大而神秘的特性。从一个简单的类说起classPerson:def__init__(self,name):self.name=namedefgreet(self):returnf"Hello,I'm{self.name}"#</div>
                    </li>
                    <li><a href="/article/1892636567688769536.htm"
                           title="langchain系列(二)- 提示词模板以及消息" target="_blank">langchain系列(二)- 提示词模板以及消息</a>
                        <span class="text-muted">码--到成功</span>
<a class="tag" taget="_blank" href="/search/%E5%A4%A7%E8%AF%AD%E8%A8%80%E6%A8%A1%E5%9E%8B/1.htm">大语言模型</a><a class="tag" taget="_blank" href="/search/langchain/1.htm">langchain</a>
                        <div>导读环境:OpenEuler、Windows11、WSL2、Python3.12.3langchain0.3背景:前期忙碌的开发阶段结束,需要沉淀自己的应用知识,过一遍LangChain时间:20250212说明:技术梳理提示词模板理论说明提示模板将用户输入和参数转换为语言模型的指令,以此来实现模型的响应,帮助它理解上下文并生成相关且连贯的基于语言的输出。其接受一个字典作为输入,其中每个键代表提示</div>
                    </li>
                    <li><a href="/article/1892636441335361536.htm"
                           title="langchain系列 - FewShotPromptTemplate 少量示例" target="_blank">langchain系列 - FewShotPromptTemplate 少量示例</a>
                        <span class="text-muted">码--到成功</span>
<a class="tag" taget="_blank" href="/search/%E5%A4%A7%E8%AF%AD%E8%A8%80%E6%A8%A1%E5%9E%8B/1.htm">大语言模型</a><a class="tag" taget="_blank" href="/search/langchain/1.htm">langchain</a>
                        <div>导读环境:OpenEuler、Windows11、WSL2、Python3.12.3langchain0.3背景:前期忙碌的开发阶段结束,需要沉淀自己的应用知识,过一遍LangChain时间:20250220说明:技术梳理,针对FewShotPromptTemplate专门来写一篇博客概念说明few-shot最初来源于机器学习的概念,还有one-shot、zero-shot概念,概念如下:机器学习</div>
                    </li>
                    <li><a href="/article/1892634926885433344.htm"
                           title="nginx ngx_http_module(9) 指令详解" target="_blank">nginx ngx_http_module(9) 指令详解</a>
                        <span class="text-muted">s_fox_</span>
<a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a><a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a><a class="tag" taget="_blank" href="/search/http/1.htm">http</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>nginxngx_http_module(9)指令详解nginx模块目录nginx全指令目录一、目录1.1模块简介ngx_http_uwsgi_module:uWSGI支持模块,允许Nginx与uWSGI服务器进行通信。uWSGI是一种应用服务器协议,广泛用于PythonWeb应用的部署。通过该模块,Nginx可以将动态请求转发给uWSGI服务器处理,并将响应返回给客户端。常用的指令包括uwsgi</div>
                    </li>
                    <li><a href="/article/1892633161351884800.htm"
                           title="sql注入之python脚本进行时间盲注和布尔盲注" target="_blank">sql注入之python脚本进行时间盲注和布尔盲注</a>
                        <span class="text-muted">温柔小胖</span>
<a class="tag" taget="_blank" href="/search/sql/1.htm">sql</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/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/1.htm">网络安全</a>
                        <div>一、什么是时间盲注和布尔盲注?答:时间盲注是攻击者通过构造恶意sql语句利用sleep()等延迟函数来观察数据库响应时间差异来进行推断信息和条件判断。如果条件为真,数据库会执行延时操作,如果为假则立即返回。响应时间较短。SELECTIF(1=1,SLEEP(5),0);如果条件为真、数据库会暂停5s如果条件为假、数据库会立即返回布尔盲注通过观察数据库返回的不同响应(如真或假)来推断信息。攻击者构造</div>
                    </li>
                    <li><a href="/article/1892632025945403392.htm"
                           title="Python中的生成器表达式(generator expression)" target="_blank">Python中的生成器表达式(generator expression)</a>
                        <span class="text-muted">Java资深爱好者</span>
<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>Python中的生成器表达式(generatorexpression)是一种类似于列表解析(listcomprehension)的语法结构,但它返回的是一个生成器(generator)对象,而不是一个完整的列表。生成器对象是一个迭代器,它可以逐个产生元素,而不是一次性生成所有元素,从而节省内存空间。生成器表达式在形式上与列表解析非常相似,但是它们使用圆括号()而不是方括号[]。当你迭代生成器表达式</div>
                    </li>
                    <li><a href="/article/1892631521408380928.htm"
                           title="Ollama部署大模型,本地调用" target="_blank">Ollama部署大模型,本地调用</a>
                        <span class="text-muted">居7然</span>
<a class="tag" taget="_blank" href="/search/android/1.htm">android</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><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</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/AI%E7%BC%96%E7%A8%8B/1.htm">AI编程</a>
                        <div>Ollama简单介绍Ollama是一个强大的大型语言模型平台,它允许用户轻松地下载、安装和运行各种大型语言模型。在本文中,我将指导你如何在你的本地机器上部署Ollama,并展示如何使用Python进行简单的API调用以访问这些模型最近很多人在学习大模型的时候,也遇到这个问题了,Ollama下载的模型,如果不想在命令行里面直接使用,而是想用Python去调用大模型该如何去使用?这是Ollama的官网</div>
                    </li>
                    <li><a href="/article/1892630388057108480.htm"
                           title="PyInstaller参数大揭秘:一文读懂打包神器的核心密码" target="_blank">PyInstaller参数大揭秘:一文读懂打包神器的核心密码</a>
                        <span class="text-muted">Abossss</span>
<a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>一、引言在Python开发的广阔领域中,我们常常会面临这样一个问题:如何将自己精心编写的Python脚本,分享给那些没有Python环境的小伙伴,或者部署到生产环境中呢?这时候,PyInstaller库就如同一位救星,闪亮登场。PyInstaller是一个功能强大的跨平台打包工具,它可以将Python脚本及其所有依赖项,打包成一个独立的可执行文件。这意味着,无论目标系统是否安装了Python环境,</div>
                    </li>
                    <li><a href="/article/1892627361837412352.htm"
                           title="VM ubuntu20.04虚拟机找不到可移动设备怎么解决" target="_blank">VM ubuntu20.04虚拟机找不到可移动设备怎么解决</a>
                        <span class="text-muted">苏三福</span>
<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>你的虚拟机已经安装了VMwareTools。我使用了客户机与主机时间同步解决了!Step1:出现这种情况先查看计算机中的虚拟机的VMwareUSBArbitrationService是否启用(注意是VMwareUSBArbitrationService)。具体查询方法如下:右击计算机-管理-服务和应用程序-服务-找到VMwareUSBArbitrationService(可选中任意项输入字母“V”</div>
                    </li>
                    <li><a href="/article/1892617650920550400.htm"
                           title="量化交易策略都有哪些?怎么运用?" target="_blank">量化交易策略都有哪些?怎么运用?</a>
                        <span class="text-muted">股票程序化交易接口</span>
<a class="tag" taget="_blank" href="/search/Python%E8%82%A1%E7%A5%A8%E9%87%8F%E5%8C%96%E4%BA%A4%E6%98%93/1.htm">Python股票量化交易</a><a class="tag" taget="_blank" href="/search/%E8%82%A1%E7%A5%A8API%E6%8E%A5%E5%8F%A3/1.htm">股票API接口</a><a class="tag" taget="_blank" href="/search/%E9%87%8F%E5%8C%96%E4%BA%A4%E6%98%93/1.htm">量化交易</a><a class="tag" taget="_blank" href="/search/%E9%87%8F%E5%8C%96%E4%BA%A4%E6%98%93%E7%AD%96%E7%95%A5/1.htm">量化交易策略</a><a class="tag" taget="_blank" href="/search/%E5%9D%87%E5%80%BC%E5%9B%9E%E5%BD%92/1.htm">均值回归</a><a class="tag" taget="_blank" href="/search/%E5%8A%A8%E9%87%8F%E7%AD%96%E7%95%A5/1.htm">动量策略</a><a class="tag" taget="_blank" href="/search/%E9%A3%8E%E9%99%A9%E6%8E%A7%E5%88%B6/1.htm">风险控制</a><a class="tag" taget="_blank" href="/search/%E8%82%A1%E7%A5%A8%E9%87%8F%E5%8C%96%E6%8E%A5%E5%8F%A3/1.htm">股票量化接口</a><a class="tag" taget="_blank" href="/search/%E8%82%A1%E7%A5%A8API%E6%8E%A5%E5%8F%A3/1.htm">股票API接口</a>
                        <div>Python股票接口实现查询账户,提交订单,自动交易(1)Python股票程序交易接口查账,提交订单,自动交易(2)股票量化,Python炒股,CSDN交流社区>>>均值回归策略:寻找价格的回归点均值回归的原理均值回归策略是基于一种市场现象,即价格不会永远偏离其长期的平均值。从市场的历史数据来看,无论是股票、期货还是其他金融资产,价格总是围绕着一个均值上下波动。这就像一个有弹性的绳子,当价格被拉伸</div>
                    </li>
                    <li><a href="/article/1892614879488045056.htm"
                           title="【全栈】SprintBoot+vue3迷你商城-细节解析(2):分页" target="_blank">【全栈】SprintBoot+vue3迷你商城-细节解析(2):分页</a>
                        <span class="text-muted">杰九</span>
<a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>【全栈】SprintBoot+vue3迷你商城-细节解析(2):分页往期的文章都在这里啦,大家有兴趣可以看一下后端部分:【全栈】SprintBoot+vue3迷你商城(1)【全栈】SprintBoot+vue3迷你商城(2)【全栈】SprintBoot+vue3迷你商城-扩展:利用python爬虫爬取商品数据【全栈】SprintBoot+vue3迷你商城(3)【全栈】SprintBoot+vue3</div>
                    </li>
                    <li><a href="/article/1892614501472202752.htm"
                           title="有需要2025年参加蓝桥杯比赛的同学往下看!!!" target="_blank">有需要2025年参加蓝桥杯比赛的同学往下看!!!</a>
                        <span class="text-muted">岱宗夫up</span>
<a class="tag" taget="_blank" href="/search/%E6%95%99%E7%A8%8B/1.htm">教程</a><a class="tag" taget="_blank" href="/search/%E8%93%9D%E6%A1%A5%E6%9D%AF/1.htm">蓝桥杯</a><a class="tag" taget="_blank" href="/search/%E8%81%8C%E5%9C%BA%E5%92%8C%E5%8F%91%E5%B1%95/1.htm">职场和发展</a>
                        <div>有需要2025年参加蓝桥杯比赛的同学往下下看!!!以下是关于近两年(2023年和2024年)蓝桥杯Python组考点的详细总结:一、2023年蓝桥杯Python考点分析在2023年的蓝桥杯Python竞赛中,考点主要集中在基础算法、数据结构、动态规划、数学、高精度计算以及二分查找等方面。(一)基础算法基础算法是竞赛的基石,包括枚举、排序(如冒泡排序、选择排序、插入排序等)、搜索(如BFS和DFS)</div>
                    </li>
                    <li><a href="/article/1892610718528761856.htm"
                           title="Ubuntu22 安装多个版本的python" target="_blank">Ubuntu22 安装多个版本的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/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>前言使用pyenv是一个很好的选择,尤其是在需要管理多个Python版本时。它提供了一个简单的方法来安装、切换和管理多个版本的Python,而不必依赖系统的包管理器或update-alternatives。特别是当你需要在同一系统中频繁切换Python版本时,pyenv会显得更加方便。目录前言为什么使用`pyenv`安装`pyenv`1.安装依赖2.安装`pyenv`3.配置shell环境4.安装</div>
                    </li>
                    <li><a href="/article/1892609079671582720.htm"
                           title="python的继承" target="_blank">python的继承</a>
                        <span class="text-muted">zhangbeizhen18</span>
<a class="tag" taget="_blank" href="/search/L01-%E5%9F%BA%E7%A1%80/1.htm">L01-基础</a>
                        <div>记录:备忘录。1.继承classPerson(object):def__init__(self,p_name,p_addr,p_age):self.name=p_nameself.addr=p_addrself.age=p_ageclassGirl(Person):def__init__(self,g_name,g_addr,g_age,g_bra_cup):Person.__init__(sel</div>
                    </li>
                    <li><a href="/article/1892602269673779200.htm"
                           title="计算机网络(4)TCP断开" target="_blank">计算机网络(4)TCP断开</a>
                        <span class="text-muted">tian-ming</span>
<a class="tag" taget="_blank" href="/search/tcp%2Fip/1.htm">tcp/ip</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/1.htm">计算机网络</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a>
                        <div>1、TCP断开连接四次挥手流程TCP断开连接是通过四次挥手方式。双方都可以主动断开连接,断开连接后主机中的「资源」将被释放。2、为什么TIME_WAIT等待的时间是2MSL?3、为什么需要TIME_WAIT状态?4、拔掉网线后,原本的TCP连接还存在吗?可能有人觉得网线都被拔掉了,那说明物理层被断开了,那在上层的传输层理应也会断开,所以原本的TCP连接就不会存在的了。就好像,我们拨打有线电话的时候</div>
                    </li>
                    <li><a href="/article/1892601637646692352.htm"
                           title="【MySQL】表空间丢失处理(Tablespace is missing for table 错误处理)" target="_blank">【MySQL】表空间丢失处理(Tablespace is missing for table 错误处理)</a>
                        <span class="text-muted">m0_74824823</span>
<a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF/1.htm">学习路线</a><a class="tag" taget="_blank" href="/search/%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4/1.htm">阿里巴巴</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a>
                        <div>问题背景最近,我在运行一个基于Python爬虫的项目时,爬虫需要频繁与MySQL数据库交互。不幸的是,在数据爬取过程中,Windows系统突然强制更新并重启。这次意外中断导致MySQL数据库的三个表格(2022年、2023年和2024年的数据表)出现了“Tablespaceismissing”的错误。起初,我尝试了常规的CHECKTABLE和REPAIRTABLE方法,但这些都没有解决问题。最终,</div>
                    </li>
                    <li><a href="/article/1892592057378205696.htm"
                           title="Python 继承详解" target="_blank">Python 继承详解</a>
                        <span class="text-muted">江湖一条鱼</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>继承是面向对象编程(OOP)的一个重要特性,允许一个类(子类)从另一个类(父类)继承属性和方法。继承可以提高代码的重用性,增强程序的可扩展性和可维护性。目录一、继承的作用二、继承的语法1.单继承2.多继承三、子类扩展1.添加新功能2.重写父类方法3.调用父类方法四、继承的特殊情况1.子类初始化父类2.方法解析顺序(MRO)五、抽象类与接口1.抽象类2.接口3.ABC类4.使用方法1.定义抽象基类2</div>
                    </li>
                    <li><a href="/article/1892591678297010176.htm"
                           title="【如何学习商城源码】" target="_blank">【如何学习商城源码】</a>
                        <span class="text-muted">启山智软 商城 源码</span>
<a class="tag" taget="_blank" href="/search/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F/1.htm">微信小程序</a><a class="tag" taget="_blank" href="/search/%E5%B0%8F%E7%A8%8B%E5%BA%8F/1.htm">小程序</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>学习商城源码是一个系统而深入的过程,需要掌握多种方法和技巧。以下是一些建议,帮助你有效地学习商城源码:一、搭建学习环境准备开发工具编程语言相关:根据商城源码使用的编程语言,安装相应的集成开发环境(IDE)。例如,若源码是Java语言编写的,可安装IntelliJIDEA或Eclipse;若是Python语言,可选择PyCharm等。这些IDE能帮助你高效地编辑、调试代码,提供语法高亮、自动补全等功</div>
                    </li>
                    <li><a href="/article/1892591552073625600.htm"
                           title="从零创建一个 Django 项目" target="_blank">从零创建一个 Django 项目</a>
                        <span class="text-muted">m0_74824823</span>
<a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF/1.htm">学习路线</a><a class="tag" taget="_blank" href="/search/%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4/1.htm">阿里巴巴</a><a class="tag" taget="_blank" href="/search/django/1.htm">django</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a>
                        <div>1.准备环境在开始之前,确保你的开发环境满足以下要求:安装了Python(推荐3.8或更高版本)。安装pip包管理工具。如果要使用MySQL或PostgreSQL,确保对应的数据库已安装。创建虚拟环境在项目目录中创建并激活虚拟环境,保证项目依赖隔离:#创建虚拟环境python-mvenvenv#激活虚拟环境#WindowsenvScriptsactivate#Linux/Macsourceenv/</div>
                    </li>
                                <li><a href="/article/116.htm"
                                       title="ViewController添加button按钮解析。(翻译)" target="_blank">ViewController添加button按钮解析。(翻译)</a>
                                    <span class="text-muted">张亚雄</span>
<a class="tag" taget="_blank" href="/search/c/1.htm">c</a>
                                    <div><div class="it610-blog-content-contain" style="font-size: 14px"></div>//  ViewController.m 
//  Reservation software 
// 
//  Created by 张亚雄 on 15/6/2. 
</div>
                                </li>
                                <li><a href="/article/243.htm"
                                       title="mongoDB 简单的增删改查" target="_blank">mongoDB 简单的增删改查</a>
                                    <span class="text-muted">开窍的石头</span>
<a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a>
                                    <div>   在上一篇文章中我们已经讲了mongodb怎么安装和数据库/表的创建。在这里我们讲mongoDB的数据库操作 
      在mongo中对于不存在的表当你用db.表名 他会自动统计 
下边用到的user是表明,db代表的是数据库 
 
      添加(insert): 
</div>
                                </li>
                                <li><a href="/article/370.htm"
                                       title="log4j配置" target="_blank">log4j配置</a>
                                    <span class="text-muted">0624chenhong</span>
<a class="tag" taget="_blank" href="/search/log4j/1.htm">log4j</a>
                                    <div>1) 新建java项目 
2) 导入jar包,项目右击,properties—java build path—libraries—Add External jar,加入log4j.jar包。 
3) 新建一个类com.hand.Log4jTest 
 

package com.hand;

import org.apache.log4j.Logger;


public class </div>
                                </li>
                                <li><a href="/article/497.htm"
                                       title="多点触摸(图片缩放为例)" target="_blank">多点触摸(图片缩放为例)</a>
                                    <span class="text-muted">不懂事的小屁孩</span>
<a class="tag" taget="_blank" href="/search/%E5%A4%9A%E7%82%B9%E8%A7%A6%E6%91%B8/1.htm">多点触摸</a>
                                    <div>多点触摸的事件跟单点是大同小异的,上个图片缩放的代码,供大家参考一下 
 


import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener</div>
                                </li>
                                <li><a href="/article/624.htm"
                                       title="有关浏览器窗口宽度高度几个值的解析" target="_blank">有关浏览器窗口宽度高度几个值的解析</a>
                                    <span class="text-muted">换个号韩国红果果</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a>
                                    <div>1 元素的 offsetWidth 包括border padding  content  整体的宽度。 
clientWidth  只包括内容区 padding 不包括border。 
clientLeft =  offsetWidth -clientWidth  即这个元素border的值 
offsetLeft  若无已定位的包裹元素</div>
                                </li>
                                <li><a href="/article/751.htm"
                                       title="数据库产品巡礼:IBM DB2概览" target="_blank">数据库产品巡礼:IBM DB2概览</a>
                                    <span class="text-muted">蓝儿唯美</span>
<a class="tag" taget="_blank" href="/search/db2/1.htm">db2</a>
                                    <div>IBM DB2是一个支持了NoSQL功能的关系数据库管理系统,其包含了对XML,图像存储和Java脚本对象表示(JSON)的支持。DB2可被各种类型的企 业使用,它提供了一个数据平台,同时支持事务和分析操作,通过提供持续的数据流来保持事务工作流和分析操作的高效性。 DB2支持的操作系统 
DB2可应用于以下三个主要的平台: 
  
 
 工作站,DB2可在Linus、Unix、Windo</div>
                                </li>
                                <li><a href="/article/878.htm"
                                       title="java笔记5" target="_blank">java笔记5</a>
                                    <span class="text-muted">a-john</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>控制执行流程: 
1,true和false 
   利用条件表达式的真或假来决定执行路径。例:(a==b)。它利用条件操作符“==”来判断a值是否等于b值,返回true或false。java不允许我们将一个数字作为布尔值使用,虽然这在C和C++里是允许的。如果想在布尔测试中使用一个非布尔值,那么首先必须用一个条件表达式将其转化成布尔值,例如if(a!=0)。 
2,if-els</div>
                                </li>
                                <li><a href="/article/1005.htm"
                                       title="Web开发常用手册汇总" target="_blank">Web开发常用手册汇总</a>
                                    <span class="text-muted">aijuans</span>
<a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a>
                                    <div>一门技术,如果没有好的参考手册指导,很难普及大众。这其实就是为什么很多技术,非常好,却得不到普遍运用的原因。
 正如我们学习一门技术,过程大概是这个样子:
 ①我们日常工作中,遇到了问题,困难。寻找解决方案,即寻找新的技术;
 ②为什么要学习这门技术?这门技术是不是很好的解决了我们遇到的难题,困惑。这个问题,非常重要,我们不是为了学习技术而学习技术,而是为了更好的处理我们遇到的问题,才需要学习新的</div>
                                </li>
                                <li><a href="/article/1132.htm"
                                       title="今天帮助人解决的一个sql问题" target="_blank">今天帮助人解决的一个sql问题</a>
                                    <span class="text-muted">asialee</span>
<a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a>
                                    <div>            今天有个人问了一个问题,如下: 
type     AD      value           
A  </div>
                                </li>
                                <li><a href="/article/1259.htm"
                                       title="意图对象传递数据" target="_blank">意图对象传递数据</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/%E6%84%8F%E5%9B%BEIntent/1.htm">意图Intent</a><a class="tag" taget="_blank" href="/search/Bundle%E5%AF%B9%E8%B1%A1%E6%95%B0%E6%8D%AE%E7%9A%84%E4%BC%A0%E9%80%92/1.htm">Bundle对象数据的传递</a>
                                    <div>学习意图将数据传递给目标活动; 初学者需要好好研究的 
   
   1,将下面的代码添加到main.xml中 
   
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http:/</div>
                                </li>
                                <li><a href="/article/1386.htm"
                                       title="oracle查询锁表解锁语句" target="_blank">oracle查询锁表解锁语句</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/object/1.htm">object</a><a class="tag" taget="_blank" href="/search/session/1.htm">session</a><a class="tag" taget="_blank" href="/search/kill/1.htm">kill</a>
                                    <div>一.查询锁定的表 
如下语句,都可以查询锁定的表 
语句一: 
select a.sid,
       a.serial#,
       p.spid,
       c.object_name,
       b.session_id,
       b.oracle_username,
       b.os_user_name
  from v$process p, v$s</div>
                                </li>
                                <li><a href="/article/1513.htm"
                                       title="mac osx 10.10 下安装 mysql 5.6 二进制文件[tar.gz]" target="_blank">mac osx 10.10 下安装 mysql 5.6 二进制文件[tar.gz]</a>
                                    <span class="text-muted">征客丶</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/osx/1.htm">osx</a>
                                    <div>场景:在 mac osx 10.10 下安装 mysql 5.6 的二进制文件。 
 
环境:mac osx 10.10、mysql 5.6 的二进制文件 
 
步骤:[所有目录请从根“/”目录开始取,以免层级弄错导致找不到目录] 
1、下载 mysql 5.6 的二进制文件,下载目录下面称之为 mysql5.6SourceDir; 
下载地址:http://dev.mysql.com/downl</div>
                                </li>
                                <li><a href="/article/1640.htm"
                                       title="分布式系统与框架" target="_blank">分布式系统与框架</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F/1.htm">分布式</a>
                                    <div>RPC框架 Dubbo 
什么是Dubbo 
  
Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。其核心部分包含:    远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。    集群容错: 提供基于接</div>
                                </li>
                                <li><a href="/article/1767.htm"
                                       title="那些令人蛋痛的专业术语" target="_blank">那些令人蛋痛的专业术语</a>
                                    <span class="text-muted">白糖_</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/SSO/1.htm">SSO</a><a class="tag" taget="_blank" href="/search/IOC/1.htm">IOC</a>
                                    <div> 
 spring 
 
【控制反转(IOC)/依赖注入(DI)】: 
由容器控制程序之间的关系,而非传统实现中,由程序代码直接操控。这也就是所谓“控制反转”的概念所在:控制权由应用代码中转到了外部容器,控制权的转移,是所谓反转。 
简单的说:对象的创建又容器(比如spring容器)来执行,程序里不直接new对象。 
 
 Web 
 
【单点登录(SSO)】:SSO的定义是在多个应用系统中,用户</div>
                                </li>
                                <li><a href="/article/1894.htm"
                                       title="《给大忙人看的java8》摘抄" target="_blank">《给大忙人看的java8》摘抄</a>
                                    <span class="text-muted">braveCS</span>
<a class="tag" taget="_blank" href="/search/java8/1.htm">java8</a>
                                    <div>函数式接口:只包含一个抽象方法的接口 
lambda表达式:是一段可以传递的代码 
  
  
  
你最好将一个lambda表达式想象成一个函数,而不是一个对象,并记住它可以被转换为一个函数式接口。 
事实上,函数式接口的转换是你在Java中使用lambda表达式能做的唯一一件事。 
  
方法引用:又是要传递给其他代码的操作已经有实现的方法了,这时可以使</div>
                                </li>
                                <li><a href="/article/2021.htm"
                                       title="编程之美-计算字符串的相似度" target="_blank">编程之美-计算字符串的相似度</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/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E4%B9%8B%E7%BE%8E/1.htm">编程之美</a>
                                    <div>

public class StringDistance {

	/**
	 * 编程之美 计算字符串的相似度
	 * 我们定义一套操作方法来把两个不相同的字符串变得相同,具体的操作方法为:
	 * 1.修改一个字符(如把“a”替换为“b”);
	 * 2.增加一个字符(如把“abdd”变为“aebdd”);
	 * 3.删除一个字符(如把“travelling”变为“trav</div>
                                </li>
                                <li><a href="/article/2148.htm"
                                       title="上传、下载压缩图片" target="_blank">上传、下载压缩图片</a>
                                    <span class="text-muted">chengxuyuancsdn</span>
<a class="tag" taget="_blank" href="/search/%E4%B8%8B%E8%BD%BD/1.htm">下载</a>
                                    <div>/**
	 * 
	 * @param uploadImage --本地路径(tomacat路径)
	 * @param serverDir   --服务器路径
	 * @param imageType   --文件或图片类型
	 * 此方法可以上传文件或图片.txt,.jpg,.gif等
	 */
	public void upload(String uploadImage,Str</div>
                                </li>
                                <li><a href="/article/2275.htm"
                                       title="bellman-ford(贝尔曼-福特)算法" target="_blank">bellman-ford(贝尔曼-福特)算法</a>
                                    <span class="text-muted">comsci</span>
<a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/F%23/1.htm">F#</a>
                                    <div>Bellman-Ford算法(根据发明者 Richard Bellman 和 Lester Ford 命名)是求解单源最短路径问题的一种算法。单源点的最短路径问题是指:给定一个加权有向图G和源点s,对于图G中的任意一点v,求从s到v的最短路径。有时候这种算法也被称为 Moore-Bellman-Ford 算法,因为 Edward F. Moore zu 也为这个算法的发展做出了贡献。 
 
与迪科</div>
                                </li>
                                <li><a href="/article/2402.htm"
                                       title="oracle ASM中ASM_POWER_LIMIT参数" target="_blank">oracle ASM中ASM_POWER_LIMIT参数</a>
                                    <span class="text-muted">daizj</span>
<a class="tag" taget="_blank" href="/search/ASM/1.htm">ASM</a><a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/ASM_POWER_LIMIT/1.htm">ASM_POWER_LIMIT</a><a class="tag" taget="_blank" href="/search/%E7%A3%81%E7%9B%98%E5%B9%B3%E8%A1%A1/1.htm">磁盘平衡</a>
                                    <div>ASM_POWER_LIMIT 
该初始化参数用于指定ASM例程平衡磁盘所用的最大权值,其数值范围为0~11,默认值为1。该初始化参数是动态参数,可以使用ALTER  SESSION或ALTER  SYSTEM命令进行修改。示例如下: 
 
SQL>ALTER  SESSION  SET   Asm_power_limit=2; 
</div>
                                </li>
                                <li><a href="/article/2529.htm"
                                       title="高级排序:快速排序" target="_blank">高级排序:快速排序</a>
                                    <span class="text-muted">dieslrae</span>
<a class="tag" taget="_blank" href="/search/%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F/1.htm">快速排序</a>
                                    <div>
    public void quickSort(int[] array){
        this.quickSort(array, 0, array.length - 1);
    }
    
    public void quickSort(int[] array,int left,int right){
        if(right - left <= 0</div>
                                </li>
                                <li><a href="/article/2656.htm"
                                       title="C语言学习六指针_何谓变量的地址 一个指针变量到底占几个字节" target="_blank">C语言学习六指针_何谓变量的地址 一个指针变量到底占几个字节</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/C%E8%AF%AD%E8%A8%80/1.htm">C语言</a>
                                    <div># include <stdio.h>

int main(void)
{
	/*
	1、一个变量的地址只用第一个字节表示
	2、虽然他只使用了第一个字节表示,但是他本身指针变量类型就可以确定出他指向的指针变量占几个字节了
	3、他都只存了第一个字节地址,为什么只需要存一个字节的地址,却占了4个字节,虽然只有一个字节,
		但是这些字节比较多,所以编号就比较大,
		</div>
                                </li>
                                <li><a href="/article/2783.htm"
                                       title="phpize使用方法" target="_blank">phpize使用方法</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a>
                                    <div>phpize是用来扩展php扩展模块的,通过phpize可以建立php的外挂模块,下面介绍一个它的使用方法,需要的朋友可以参考下 
安装(fastcgi模式)的时候,常常有这样一句命令: 
代码如下: 
/usr/local/webserver/php/bin/phpize 
  
一、phpize是干嘛的? 
phpize是什么? 
phpize是用来扩展php扩展模块的,通过phpi</div>
                                </li>
                                <li><a href="/article/2910.htm"
                                       title="Java虚拟机学习 - 对象引用强度" target="_blank">Java虚拟机学习 - 对象引用强度</a>
                                    <span class="text-muted">shuizhaosi888</span>
<a class="tag" taget="_blank" href="/search/JAVA%E8%99%9A%E6%8B%9F%E6%9C%BA/1.htm">JAVA虚拟机</a>
                                    <div> 
 本文原文链接:http://blog.csdn.net/java2000_wl/article/details/8090276 转载请注明出处! 
 无论是通过计数算法判断对象的引用数量,还是通过根搜索算法判断对象引用链是否可达,判定对象是否存活都与“引用”相关。 
 引用主要分为 :强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Wea</div>
                                </li>
                                <li><a href="/article/3037.htm"
                                       title=".NET Framework 3.5 Service Pack 1(完整软件包)下载地址" target="_blank">.NET Framework 3.5 Service Pack 1(完整软件包)下载地址</a>
                                    <span class="text-muted">happyqing</span>
<a class="tag" taget="_blank" href="/search/.net/1.htm">.net</a><a class="tag" taget="_blank" href="/search/%E4%B8%8B%E8%BD%BD/1.htm">下载</a><a class="tag" taget="_blank" href="/search/framework/1.htm">framework</a>
                                    <div>  
Microsoft .NET Framework 3.5 Service Pack 1(完整软件包)  
http://www.microsoft.com/zh-cn/download/details.aspx?id=25150 
Microsoft .NET Framework 3.5 Service Pack 1 是一个累积更新,包含很多基于 .NET Framewo</div>
                                </li>
                                <li><a href="/article/3164.htm"
                                       title="JAVA定时器的使用" target="_blank">JAVA定时器的使用</a>
                                    <span class="text-muted">jingjing0907</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/timer/1.htm">timer</a><a class="tag" taget="_blank" href="/search/%E7%BA%BF%E7%A8%8B/1.htm">线程</a><a class="tag" taget="_blank" href="/search/%E5%AE%9A%E6%97%B6%E5%99%A8/1.htm">定时器</a>
                                    <div>1、在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作等。 
对于这样的操作最方便、高效的实现方式就是使用java.util.Timer工具类。 
privatejava.util.Timer timer; 
timer = newTimer(true); 
timer.schedule( 
newjava.util.TimerTask() { public void run() 
</div>
                                </li>
                                <li><a href="/article/3291.htm"
                                       title="Webbench" target="_blank">Webbench</a>
                                    <span class="text-muted">流浪鱼</span>
<a class="tag" taget="_blank" href="/search/webbench/1.htm">webbench</a>
                                    <div>首页下载地址 http://home.tiscali.cz/~cz210552/webbench.html 
Webbench是知名的网站压力测试工具,它是由Lionbridge公司(http://www.lionbridge.com)开发。 
Webbench能测试处在相同硬件上,不同服务的性能以及不同硬件上同一个服务的运行状况。webbench的标准测试可以向我们展示服务器的两项内容:每秒钟相</div>
                                </li>
                                <li><a href="/article/3418.htm"
                                       title="第11章 动画效果(中)" target="_blank">第11章 动画效果(中)</a>
                                    <span class="text-muted">onestopweb</span>
<a class="tag" taget="_blank" href="/search/%E5%8A%A8%E7%94%BB/1.htm">动画</a>
                                    <div>index.html 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/</div>
                                </li>
                                <li><a href="/article/3545.htm"
                                       title="windows下制作bat启动脚本." target="_blank">windows下制作bat启动脚本.</a>
                                    <span class="text-muted">sanyecao2314</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/cmd/1.htm">cmd</a><a class="tag" taget="_blank" href="/search/%E8%84%9A%E6%9C%AC/1.htm">脚本</a><a class="tag" taget="_blank" href="/search/bat/1.htm">bat</a>
                                    <div>java -classpath C:\dwjj\commons-dbcp.jar;C:\dwjj\commons-pool.jar;C:\dwjj\log4j-1.2.16.jar;C:\dwjj\poi-3.9-20121203.jar;C:\dwjj\sqljdbc4.jar;C:\dwjj\voucherimp.jar com.citsamex.core.startup.MainStart </div>
                                </li>
                                <li><a href="/article/3672.htm"
                                       title="Java进行RSA加解密的例子" target="_blank">Java进行RSA加解密的例子</a>
                                    <span class="text-muted">tomcat_oracle</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>加密是保证数据安全的手段之一。加密是将纯文本数据转换为难以理解的密文;解密是将密文转换回纯文本。     数据的加解密属于密码学的范畴。通常,加密和解密都需要使用一些秘密信息,这些秘密信息叫做密钥,将纯文本转为密文或者转回的时候都要用到这些密钥。     对称加密指的是发送者和接收者共用同一个密钥的加解密方法。     非对称加密(又称公钥加密)指的是需要一个私有密钥一个公开密钥,两个不同的密钥的</div>
                                </li>
                                <li><a href="/article/3799.htm"
                                       title="Android_ViewStub" target="_blank">Android_ViewStub</a>
                                    <span class="text-muted">阿尔萨斯</span>
<a class="tag" taget="_blank" href="/search/ViewStub/1.htm">ViewStub</a>
                                    <div>public final class ViewStub extends View 
 
 
 java.lang.Object 
   
   android.view.View 
     
     android.view.ViewStub 
      
    
 
 类摘要: ViewStub 是一个隐藏的,不占用内存空间的视图对象,它可以在运行时延迟加载布局资源文件。当 ViewSt</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>