Table des matières
这里是Classroom的添加页面
这里是Classroom的管理页面
这里是Classroom--{{name}}的修改页面
Maison base de données tutoriel mysql Python+Django+SAE系列课程13-MySQL记录的添删改

Python+Django+SAE系列课程13-MySQL记录的添删改

Jun 07, 2016 pm 04:25 PM
série 课程

Python+Django+SAE系列教程13-----MySQL记录的添\删\改 建立了数据库后,我们就来做一个简单的表( person_classroom )的添加、删除、修改的操作。 首先我们建立一个添加的页面的模板 Classroom_Add.html(添加的表单) 并把它放在 Bidding\templates\person

Python+Django+SAE系列教程13-----MySQL记录的添\删\改

建立了数据库后,我们就来做一个简单的表(person_classroom)的添加、删除、修改的操作。

首先我们建立一个添加的页面的模板Classroom_Add.html(添加的表单)并把它放在Bidding\templates\person中:

Classroom_Add.html



    <title>数据库操作简单表的添加</title>


    <h1 id="这里是Classroom的添加页面">这里是Classroom的添加页面</h1>
    {% if error %}
        <p style="color: red;">请输入班级名称和导师姓名</p>
    {% endif %}
   
Copier après la connexion
项目 内容
班级名称:
导师姓名:

Classroom_Add_results.html


    <title>查询用户结果页</title>


    
Copier après la connexion
Copier après la connexion
Copier après la connexion
班级:{{name}}添加成功 !
点击返回
上面的 这个文件时添加后的结果页。

然后建立对应的view,我们修改person/views.py 文件

Views.py

# -*- coding: utf-8 -*-
from django.shortcuts import render_to_response
from django.db import connection,transaction
from person.models import *

def ClassroonAdd(request):
    if 'name' in request.GET and request.GET['name'] and 'tutor' in request.GET and request.GET['tutor']:
        name = request.GET['name']
        tutor = request.GET['tutor']

        cursor=connection.cursor()
        sql='insert into person_classroom (name,tutor) values (\''+name+'\',\''+tutor+'\')'
        cursor.execute(sql)
        transaction.commit_unless_managed()
        cursor.close()
        
        return render_to_response('person/Classroom_Add_results.html',
            {'name': name})
    else:
        return render_to_response('person/Classroom_Add.html', {'error': True})
Copier après la connexion

在修改一下urls.py文件:

from django.conf.urls import patterns, include, url


# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
# admin.autodiscover()

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'Bidding.views.home', name='home'),
    # url(r'^Bidding/', include('Bidding.foo.urls')),

    # Uncomment the admin/doc line below to enable admin documentation:
    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
    # url(r'^admin/', include(admin.site.urls)),
    url(r'^hello/$', 'Bidding.views.hello'),
    url(r'^time/$', 'Bidding.views.current_datetime'),
    url(r'^time/plus/(\d{1,2})/$', 'Bidding.views.hours_ahead'),
    url(r'^hello_base/$', 'Bidding.views.hello_base'),
    url(r'^request_test/$', 'Bidding.views.request_test'),
    url(r'^UsersSearch/$', 'Bidding.Users.views.search_form'),
    url(r'^search/$', 'Bidding.Users.views.search'),
    url(r'^ClassRoom/add/$', 'person.views.ClassroonAdd'),
)
Copier après la connexion

这时我们的添加就做好了,访问一下classroom/add这个 页面,就可以看到结果了。




不过上面我们所说的办法是执行一个原始的sql语句,这个方式其实并不是Django推荐的,我们可以直接使用models操作数据库的方法,改造一下ClassroomAdd这个视图:


def ClassroonAdd(request):
    if 'name' in request.GET and request.GET['name'] and 'tutor' in request.GET and request.GET['tutor']:
        name = request.GET['name']
        tutor = request.GET['tutor']
        c = ClassRoom(name=name,tutor=tutor)
        c.save()
        
        return render_to_response('person/Classroom_Add_results.html',
            {'name': name})
    else:
        return render_to_response('person/Classroom_Add.html', {'error': True})
Copier après la connexion

这样的方法即简单,有不用我们很多sql的语法,并且最重要的是如果更换数据库类型(sqlserver->oracle),也不会因为受sql语法不一致的影响。

在接下来,我们来做一个列表页,把数据库中的Classroom表的记录以一个表格的形式显示出来。还是从模板先入手,建立一个Classroom_List.html,放入Bidding\templates\person文件夹下:

Classroom_List.html



    <title>数据库操作简单表的添加</title>


    <h1 id="这里是Classroom的管理页面">这里是Classroom的管理页面</h1>
        
Copier après la connexion
Copier après la connexion
Copier après la connexion
{% for myclass in ClassroonList%} {% endfor %}
序号 班级名称 导师姓名
{{ myclass.id }} {{ myclass.name }} {{ myclass.tutor }}

添加视图:

# -*- coding: utf-8 -*-
from django.shortcuts import render_to_response
from django.db import connection,transaction
from person.models import *

def ClassroonAdd(request):
    if 'name' in request.GET and request.GET['name'] and 'tutor' in request.GET and request.GET['tutor']:
        name = request.GET['name']
        tutor = request.GET['tutor']

        cursor=connection.cursor()
        sql='insert into person_classroom (name,tutor) values (\''+name+'\',\''+tutor+'\')'
        cursor.execute(sql)
        transaction.commit_unless_managed()
        cursor.close()
        
        return render_to_response('person/Classroom_Add_results.html',
            {'name': name})
    else:
        return render_to_response('person/Classroom_Add.html', {'error': True})


def ClassroonAdd(request):
    if 'name' in request.GET and request.GET['name'] and 'tutor' in request.GET and request.GET['tutor']:
        name = request.GET['name']
        tutor = request.GET['tutor']
        c = ClassRoom(name=name,tutor=tutor)
        c.save()
        
        return render_to_response('person/Classroom_Add_results.html',
            {'name': name})
    else:
        return render_to_response('person/Classroom_Add.html', {'error': True})





def ClassroonList(request):
        cursor=connection.cursor()
        sql='select id,name,tutor from person_classroom'
        ClassroonList=ClassRoom.objects.raw(sql)
        return render_to_response('person/Classroom_List.html',
            {'ClassroonList': ClassroonList})
Copier après la connexion

配置urls.py:

from django.conf.urls import patterns, include, url


# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
# admin.autodiscover()

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'Bidding.views.home', name='home'),
    # url(r'^Bidding/', include('Bidding.foo.urls')),

    # Uncomment the admin/doc line below to enable admin documentation:
    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
    # url(r'^admin/', include(admin.site.urls)),
    url(r'^hello/$', 'Bidding.views.hello'),
    url(r'^time/$', 'Bidding.views.current_datetime'),
    url(r'^time/plus/(\d{1,2})/$', 'Bidding.views.hours_ahead'),
    url(r'^hello_base/$', 'Bidding.views.hello_base'),
    url(r'^request_test/$', 'Bidding.views.request_test'),
    url(r'^UsersSearch/$', 'Bidding.Users.views.search_form'),
    url(r'^search/$', 'Bidding.Users.views.search'),
    url(r'^ClassRoom/add/$', 'person.views.ClassroonAdd'),
    url(r'^ClassRoom/list/$', 'person.views.ClassroonList'),
)
Copier après la connexion

如同上述讨论的一样,我们现在的视图执行的是一个原始的sql,现在我们需要用models来修改一下:

def ClassroonList(request):
        cursor=connection.cursor()
        ClassroonList=ClassRoom.objects.all()
        #ClassroonList=ClassRoom.objects.filter(name__icontains='大')
        return render_to_response('person/Classroom_List.html',
            {'ClassroonList': ClassroonList})  
Copier après la connexion

如果需要执行where或者order by等操作可以这样:

 ClassroonList=ClassRoom.objects.filter(name__icontains='').order_by(‘name’)

这里还有很多关于选择的内容以后我们逐渐会介绍到。

做完了列表页,我们在来做一个修改的页面,思路是这样的:在列表页中的每一行的后面添加一列“修改”按钮,点击按钮后跳转到修改页面,首先以此条记录的主键专递到修改页面,在修改页面中要先读取出数据库中的信息,然后点击确定按钮以后执行修改操作。

我们首先来修改这个管理页面的模板:

Classroom_List.html



    <title>数据库操作简单表的添加</title>


    <h1 id="这里是Classroom的管理页面">这里是Classroom的管理页面</h1>
        
Copier après la connexion
Copier après la connexion
Copier après la connexion
{% for myclass in ClassroonList%} {% endfor %}
序号 班级名称 导师姓名 操作
{{ myclass.id }} {{ myclass.name }} {{ myclass.tutor }}

建立一个Classroom_Modify.html模板,把它放在Bidding\templates\person文件夹下

Classroom_Modify.html



    <title>数据库操作简单表的修改</title>


    <h1 id="这里是Classroom-name-的修改页面">这里是Classroom--{{name}}的修改页面</h1>
    {% if error %}
        <p style="color: red;">请输入班级名称和导师姓名</p>
    {% endif %}
   
Copier après la connexion
项目 内容
班级名称:
导师姓名:

Classroom_Modify_results.html


    <title>查询用户结果页</title>


    
Copier après la connexion
Copier après la connexion
Copier après la connexion
  修改前 修改后
班级名称: {{old_name}} {{new_name}}
导师姓名: {{old_tutor}} {{new_tutor}}
修改成功!
点击返回

添加视图:

def ClassroonModify(request,id1):
    cursor=connection.cursor()
    sql='select id,name,tutor from person_classroom where id='+id1
    ClassroonList=ClassRoom.objects.raw(sql)
    old_name = ClassroonList[0].name
    old_tutor = ClassroonList[0].tutor
    if 'name' in request.GET and request.GET['name'] and 'tutor' in request.GET and request.GET['tutor']:
        new_name = request.GET['name']
        new_tutor = request.GET['tutor']
        cursor=connection.cursor()
        sql='update person_classroom set name=\''+new_name+'\',tutor=\''+new_tutor+'\' where id=\''+id1+'\''
        cursor.execute(sql)
        transaction.commit_unless_managed()
        cursor.close()
        return render_to_response('person/Classroom_Modify_results.html',
            {'old_name': old_name,'old_tutor':old_tutor,'new_name':new_name,'new_tutor':new_tutor})
    else:
        return render_to_response('person/Classroom_Modify.html', {'error': True,'id':id1,'name':old_name,'tutor':old_tutor})
Copier après la connexion

编辑urls.py,这里面需要注意的是正则的写法,这个之前的章节已经说过了,这里我们可以再复习一遍:

from django.conf.urls import patterns, include, url


# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
# admin.autodiscover()

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'Bidding.views.home', name='home'),
    # url(r'^Bidding/', include('Bidding.foo.urls')),

    # Uncomment the admin/doc line below to enable admin documentation:
    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
    # url(r'^admin/', include(admin.site.urls)),
    url(r'^hello/$', 'Bidding.views.hello'),
    url(r'^time/$', 'Bidding.views.current_datetime'),
    url(r'^time/plus/(\d{1,2})/$', 'Bidding.views.hours_ahead'),
    url(r'^hello_base/$', 'Bidding.views.hello_base'),
    url(r'^request_test/$', 'Bidding.views.request_test'),
    url(r'^UsersSearch/$', 'Bidding.Users.views.search_form'),
    url(r'^search/$', 'Bidding.Users.views.search'),
    url(r'^ClassRoom/add/$', 'person.views.ClassroonAdd'),
    url(r'^ClassRoom/list/$', 'person.views.ClassroonList'),
    url(r'^ClassRoom/modify/(\d+)/$', 'person.views.ClassroonModify'),
)
Copier après la connexion

如同添加时候的问题,我们这里面使用的仍然是最原始的sql语句,我们同样可以给他修改成为model的方式:

def ClassroonModify(request,id1):
    cursor=connection.cursor()
    Classroon=ClassRoom.objects.get(id=id1)
    old_name = Classroon.name
    old_tutor = Classroon.tutor
    cursor.close()
    if 'name' in request.GET and request.GET['name'] and 'tutor' in request.GET and request.GET['tutor']:
        new_name = request.GET['name']
        new_tutor = request.GET['tutor']
        Classroon.name=new_name
        Classroon.tutor=new_tutor
        Classroon.save()
        return render_to_response('person/Classroom_Modify_results.html',
            {'old_name': old_name,'old_tutor':old_tutor,'new_name':new_name,'new_tutor':new_tutor})
    else:
        return render_to_response('person/Classroom_Modify.html', {'error': True,'id':id1,'name':old_name,'tutor':old_tutor})
Copier après la connexion

这样看起来是不是简便多了?我们打开 页面看看效果吧 :




接下来我们来做删除的功能,首先修改列表页的模板,加入一列删除按钮:



    <title>数据库操作简单表的添加</title>


    <h1 id="这里是Classroom的管理页面">这里是Classroom的管理页面</h1>
        
Copier après la connexion
Copier après la connexion
Copier après la connexion
{% for myclass in ClassroonList%} {% endfor %}
序号 班级名称 导师姓名 操作
{{ myclass.id }} {{ myclass.name }} {{ myclass.tutor }}

Classroom_Delete_results.html:


    <title>查询用户结果页</title>


    
Copier après la connexion
Copier après la connexion
Copier après la connexion
班级:{{name}}删除成功 !
点击返回

修改视图:

def ClassroonDelete(request,id1):
    cursor=connection.cursor()
    Classroon=ClassRoom.objects.get(id=id1)
    old_name = Classroon.name
    Classroon.delete()
    ClassroonList=ClassRoom.objects.all()
    cursor.close()
  return render_to_response('person/Classroom_Delete_results.html',{'name':old_name})
Copier après la connexion

配置urls.py:

from django.conf.urls import patterns, include, url


# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
# admin.autodiscover()

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'Bidding.views.home', name='home'),
    # url(r'^Bidding/', include('Bidding.foo.urls')),

    # Uncomment the admin/doc line below to enable admin documentation:
    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
    # url(r'^admin/', include(admin.site.urls)),
    url(r'^hello/$', 'Bidding.views.hello'),
    url(r'^time/$', 'Bidding.views.current_datetime'),
    url(r'^time/plus/(\d{1,2})/$', 'Bidding.views.hours_ahead'),
    url(r'^hello_base/$', 'Bidding.views.hello_base'),
    url(r'^request_test/$', 'Bidding.views.request_test'),
    url(r'^UsersSearch/$', 'Bidding.Users.views.search_form'),
    url(r'^search/$', 'Bidding.Users.views.search'),
    url(r'^ClassRoom/add/$', 'person.views.ClassroonAdd'),
    url(r'^ClassRoom/list/$', 'person.views.ClassroonList'),
    url(r'^ClassRoom/modify/(\d+)/$', 'person.views.ClassroonModify'),
    url(r'^ClassRoom/delete/(\d+)/$', 'person.views.ClassroonDelete'),
)
Copier après la connexion


到此,我们就做好了一个简单的表的添加、删除、修改的操作。


Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Les noms de code complets de la série Xiaomi 15 révélés : Dada, Haotian, Xuanyuan Les noms de code complets de la série Xiaomi 15 révélés : Dada, Haotian, Xuanyuan Aug 22, 2024 pm 06:47 PM

La série Xiaomi Mi 15 devrait être officiellement lancée en octobre, et les noms de code de sa série complète ont été exposés dans la base de code MiCode des médias étrangers. Parmi eux, le produit phare Xiaomi Mi 15 Ultra porte le nom de code « Xuanyuan » (qui signifie « Xuanyuan »). Ce nom vient de l'Empereur Jaune dans la mythologie chinoise, qui symbolise la noblesse. Le Xiaomi 15 porte le nom de code « Dada », tandis que le Xiaomi 15Pro s'appelle « Haotian » (qui signifie « Haotian »). Le nom de code interne du Xiaomi Mi 15S Pro est « dijun », qui fait allusion à l'empereur Jun, le dieu créateur du « Classique des montagnes et des mers ». Couvertures de la série Xiaomi 15Ultra

Le meilleur moment pour acheter la série Huawei Mate 60, la nouvelle élimination de l'IA + mise à niveau de l'image et profiter des promotions d'automne Le meilleur moment pour acheter la série Huawei Mate 60, la nouvelle élimination de l'IA + mise à niveau de l'image et profiter des promotions d'automne Aug 29, 2024 pm 03:33 PM

Depuis la mise en vente de la série Huawei Mate60 l’année dernière, j’utilise personnellement le Mate60Pro comme téléphone principal. En près d'un an, le Huawei Mate60Pro a subi plusieurs mises à niveau OTA et l'expérience globale a été considérablement améliorée, donnant aux gens le sentiment d'être constamment nouveaux. Par exemple, récemment, la série Huawei Mate60 a de nouveau reçu une mise à niveau majeure de ses capacités d'imagerie. Le premier est la nouvelle fonction d'élimination de l'IA, qui peut éliminer intelligemment les passants et les débris et remplir automatiquement les zones vides. Deuxièmement, la précision des couleurs et la clarté du téléobjectif de la caméra principale ont été considérablement améliorées. Étant donné que c'est la rentrée scolaire, la série Huawei Mate60 a également lancé une promotion d'automne : vous pouvez profiter d'une réduction allant jusqu'à 800 yuans lors de l'achat du téléphone, et le prix de départ est aussi bas que 4 999 yuans. Produits couramment utilisés et souvent nouveaux avec une grande valeur

Comment choisir entre iPhone 15 et iPhone 15 Pro ? Neuf différences majeures à la fois Comment choisir entre iPhone 15 et iPhone 15 Pro ? Neuf différences majeures à la fois Sep 14, 2023 am 08:01 AM

L'iPhone15 et l'iPhone15Pro ont été officiellement lancés aujourd'hui. Cependant, en tant que modèles haut de gamme, la série Pro a non seulement un prix plus élevé, mais possède également de nombreuses fonctionnalités exclusives. Les consommateurs doivent reconnaître les différences avant d'acheter, afin de ne pas en découvrir après avoir acheté l'iPhone15. . La fonction est uniquement disponible dans la série Pro. Bien que les moniteurs soient équipés du même panneau d'affichage, la technologie de fréquence de mise à jour adaptative automatique ProMotion et la fonction d'affichage permanent sont toujours exclusives à la série Pro. Le reste des séries iPhone 15 et iPhone 15 Pro sont les mêmes en termes de résolution, de contraste, de luminosité maximale, etc. Bouton d'action Le bouton d'action est actuellement une conception exclusive pour la série iPhone 15 Pro, permettant aux utilisateurs de le personnaliser.

Quelles séries y a-t-il au Hall of Fame ? Quelles séries y a-t-il au Hall of Fame ? Feb 04, 2024 am 09:18 AM

De nombreux utilisateurs souhaitant acheter des clés USB souhaitent savoir quelle série de clés USB possède la marque GALAX Hall of Fame. En fait, cette marque propose actuellement trois séries, à savoir l'édition limitée HOFEXTREME, HOFEXTREME et HOFPORGB. Quelles sont les séries de mémoire Hall of Fame : A : édition limitée HOFEXTREME, HOFEXTREME, HOFPORGB. Ces trois modules de mémoire ont tous des performances relativement bonnes. Parmi eux, l'édition limitée HOFEXTREME a les meilleures performances. Par rapport aux deux modèles précédents, le HOFPRORGB est légèrement plus faible mais les performances sont également très bonnes. Introduction à l'extension de mémoire Hall of Fame : 1. Utilisation de particules Samsung B-die, qui sont le roi des particules de mémoire et ont une longue durée de vie.

Les 12 pages de notes d'algèbre linéaire figuraient sur la liste chaude de GitHub et ont également reçu une inscription du grand Gilbert Strang. Les 12 pages de notes d'algèbre linéaire figuraient sur la liste chaude de GitHub et ont également reçu une inscription du grand Gilbert Strang. Jul 25, 2023 pm 08:13 PM

Les points clés de l’algèbre linéaire ont déjà été dessinés par quelqu’un. Il n’y a que 12 pages au total, et la moitié d’entre elles sont illustrées, donc les novices n’ont pas à craindre de ne pas comprendre ! Désormais, cette note a reçu plus de 4 000 étoiles sur GitHub et figure également sur la hot list. La note dans l'image s'appelle "L'art de l'algèbre linéaire" et est basée sur "L'algèbre linéaire pour tous" du professeur Gilbert Strang, expert du MIT. Picture L'érudit japonais Kenji Hiranabe a condensé ce chef-d'œuvre de 368 pages en illustrations, a réalisé cet ensemble de notes et l'a rendu open source gratuitement, et a ensuite été traduit en chinois par l'internaute national kfliu. Le résultat a non seulement reçu une bonne réponse sur GitHub, mais a également été confirmé par l'auteur original et inclus dans l'intérêt de la page d'introduction du livre original.

Aperçu des nouvelles améliorations des iPhone 15 Pro et 15 Pro Max Aperçu des nouvelles améliorations des iPhone 15 Pro et 15 Pro Max Sep 12, 2023 pm 10:45 PM

Apple lancera quatre nouveaux modèles d'iPhone à 1 heure du matin le 13 septembre, à savoir les iPhone 15, 15 Plus, 15 Pro et 15 Pro Max. Les iPhone 15 Pro et Pro Max haut de gamme utiliseront un nouveau design et le matériau des côtés passera de l'acier inoxydable au titane. Les couleurs de la série Pro incluent le gris, le noir, le bleu foncé, le blanc et d'autres options. Les écrans des iPhone 15 Pro et Pro Max seront légèrement plus grands cette année que ceux des 14 Pro et 14 Pro Max de l’année dernière. Ce changement est dû à l'adoption par Apple d'une nouvelle technologie de procédé appelée LIPO (surmoulage à faible pression d'injection), qui réduit l'épaisseur du cadre de l'écran d'environ un tiers. Les modèles haut de gamme passeront au titane avec une texture mate

Comment acheter des cours d'enseignement public chinois Comment acheter des cours d'enseignement public chinois Mar 13, 2024 pm 12:22 PM

Zhonggong Education est un logiciel qui se concentre sur les connaissances en matière d'enseignement professionnel et vise à fournir aux utilisateurs des ressources d'apprentissage complètes et riches. Que vous soyez sur le point de passer un examen professionnel ou que vous souhaitiez améliorer vos compétences professionnelles, China Public Education peut répondre à vos besoins. Notre contenu de connaissances couvre différents types et étapes et est principalement présenté sous forme de cours pour aider les utilisateurs à apprendre et à maîtriser systématiquement les connaissances requises. Alors, comment acheter les cours en ligne dont vous avez besoin dans l’application China Public Education ? Pour les utilisateurs qui ne le savent pas encore, continuez à lire ci-dessous ! Comment acheter des cours en ligne auprès de China Public Education ? 1. Entrez l'éducation publique chinoise sur votre téléphone mobile et entrez des mots-clés. 2. Sélectionnez le type de cours en ligne. 3. Cliquez sur Acheter maintenant dans le coin inférieur droit. 4. Enfin, sélectionnez le mode de paiement et cliquez pour confirmer le paiement.

Ressources d'apprentissage recommandées pour les collections simultanées Java : livres, cours et didacticiels en ligne Ressources d'apprentissage recommandées pour les collections simultanées Java : livres, cours et didacticiels en ligne Feb 19, 2024 pm 05:00 PM

Les collections simultanées Java sont une bibliothèque de classes de collection dans le langage de programmation Java utilisée pour gérer l'accès simultané aux données partagées. Les collections simultanées Java fournissent diverses structures de données, telles que des files d'attente, des piles, des cartes et des collections. Ces structures de données sont thread-safe et peuvent être utilisées dans des environnements multithread. Pour apprendre les collections simultanées Java, vous pouvez vous référer aux livres, cours et tutoriels en ligne suivants : Livre : "Java Concurrent Programming in Practice" Il s'agit d'un livre classique dans le domaine de la programmation simultanée Java, co-écrit par Brian Goetz et Tim Peierls. . Ce livre présente en détail les méthodes et techniques d'utilisation des collections simultanées Java, couvrant la sécurité des threads, les verrous, les opérations atomiques, la visibilité de la mémoire, etc. Le livre "The Art of Concurrent Programming in Java" est écrit par Doug Le

See all articles