Artikel ini melihat dengan cepat aspek utama Perpustakaan ECTO. Walaupun ia ditulis untuk Ecto 1.x, contoh -contoh dalam artikel ini disesuaikan dengan Ecto 2, dan di mana percanggahan terletak, mereka disebutkan. Pengetahuan asas elixir dan campuran diandaikan.
Takeaways Key
Ecto adalah perpustakaan yang mantap di Elixir untuk mengendalikan operasi pangkalan data, menyediakan API biasa untuk interaksi pangkalan data, versi, dan pemprosesan data.
- Proses persediaan melibatkan membuat aplikasi campuran baru, mengkonfigurasi kebergantungan, dan mengintegrasikan modul repositori ECTO ke dalam pokok pengawasan aplikasi untuk pengurusan pangkalan data yang berkesan. Ciri -ciri Migrasi ECTO membolehkan versi pangkalan data bersama kod aplikasi, memudahkan perubahan pengesanan dan penggunaan keadaan pangkalan data yang berbeza.
- skema dan perubahan ECTO adalah penting untuk menentukan struktur data dan pengendalian pengesahan data, memastikan bahawa hanya data yang sah dimanipulasi dan disimpan.
- Artikel menunjukkan membina aplikasi CRUD yang mudah menggunakan ECTO, menggambarkan cara melakukan operasi pangkalan data seperti membuat, membaca, mengemaskini, dan memadam rekod.
- Aplikasi
Membuat aplikasi baru
mari kita mulakan dengan menghasilkan aplikasi campuran baru:
Bendera -S -up menghasilkan beberapa kod boilerplate tambahan yang diperlukan untuk aplikasi OTP. Permohonan ini perlu mempunyai pokok penyeliaan, kerana ECTO memerlukannya (lebih banyak lagi dalam satu minit).
mix new notex <span>--sup </span>Menyediakan kebergantungan
Sekarang, mari kita kemas kini fail Mix.exs kami dengan beberapa kebergantungan aplikasi. Untuk ini, kami akan mahu menentukan Ecto dan salah satu penyesuainya. Saya telah memilih untuk menggunakan MySQL untuk ini, jadi kita perlu menentukan Perpustakaan Mariaex (ECTO menyokong beberapa pangkalan data).
Kemas kini fungsi aplikasi/0 dalam fail mix.exs dengan yang berikut:
dan kemas kini DEPS/0 dengan yang berikut:
<span>def <span>application</span> do </span> <span>[applications: [:logger, :ecto, :mariaex], </span> <span>mod: {Notex, []}] </span><span>end </span>
sekarang mengambil kebergantungan dengan campuran deps.get.
defp deps <span>do </span> <span>[{:ecto, <span>"~> 1.1.5"</span>}, # or "~> 2.0" for Ecto 2 </span> <span>{:mariaex, <span>"~> 0.6.0"</span>}] # or "~> 0.7.0" for Ecto 2 </span><span>end </span>Seterusnya, kita perlu mengintegrasikan kebergantungan ini ke dalam aplikasi kami. Ini akan melibatkan mewujudkan modul pembalut baru untuk repositori ECTO, mengemas kini pokok pengawasan aplikasi kami untuk memulakan dan mengawasi modul baru, dan mengkonfigurasi maklumat sambungan penyesuai.
mari pertama mulakan dengan menentukan modul notex.repo di lib/notex/repo.ex dengan kod berikut:
mix new notex <span>--sup </span>
Lokasi modul ini (lib/app_name/repo.ex) adalah konvensional. Bila -bila masa kami menggunakan perintah campuran Ecto, ia akan lalai untuk mencari repositori yang ditentukan di appname.repo. Kami boleh meletakkannya di tempat lain, tetapi ia akan menjadi kesulitan untuk menentukan lokasinya menggunakan bendera -r (atau -repo).
Modul Notex.repo di atas membolehkan kami bekerja dengan pangkalan data menggunakan ECTO. Ia melakukan ini dengan fungsi suntikan pertama dari modul repo ECTO (yang menyediakan API pertanyaan pangkalan data) dan dengan menamakan aplikasi OTP kami sebagai: NotEx.
Repositori Ecto memberikan kami antara muka yang sama untuk berinteraksi dengan pangkalan data yang mendasari (yang diputuskan oleh penyesuai yang digunakan). Oleh itu, sementara Ecto menggunakan repo terminologi, ia tidak mengikuti corak reka bentuk repositori, kerana ia pembungkus di sekitar pangkalan data, bukan jadual.
Sekarang kita telah menentukan modul Notex.repo, kita mesti menambah ini ke pokok penyeliaan kita dalam modul NOTEX (di lib/notex.ex). Kemas kini fungsi Start/2 dengan yang berikut:
<span>def <span>application</span> do </span> <span>[applications: [:logger, :ecto, :mariaex], </span> <span>mod: {Notex, []}] </span><span>end </span>
kami telah menambah modul Notex.repo sebagai penyelia kanak -kanak (kerana ia sendiri merupakan aplikasi OTP yang menyelia). Ini bermakna ia akan diawasi oleh permohonan OTP kami, dan permohonan kami akan bertanggungjawab untuk memulakannya semasa permulaan permohonan.
setiap sambungan yang dibuat dengan Ecto menggunakan proses yang berasingan (di mana proses ditarik dari kolam proses menggunakan perpustakaan yang dipanggil Poolboy). Ini dilakukan supaya pertanyaan kami dapat melaksanakan secara serentak, dan juga berdaya tahan dari kegagalan (mis. Timeouts). Oleh itu, permohonan kami memerlukan OTP, kerana ECTO mempunyai proses sendiri yang memerlukan penyeliaan (termasuk pokok pengawasan yang menyelia sekumpulan sambungan pangkalan data). Ini dapat dilihat menggunakan perpustakaan pemerhati Erlang, yang membolehkan kita memvisualisasikan proses dalam aplikasi.
Setelah menambah repo ke proses pekerja kami untuk diawasi, kami perlu mengkonfigurasi penyesuai akhirnya supaya ia dapat berkomunikasi dengan pangkalan data kami. Letakkan kod berikut pada akhir fail `config/config.exs` (mengemas kini butiran yang diperlukan):mix new notex <span>--sup </span>Di sini, kami menentukan nama aplikasi OTP kami (: NOTEX) dan nama modul kami yang baru ditakrifkan (NOTEX.REPO) untuk membolehkan komunikasi dengan pangkalan data. Pilihan konfigurasi yang lain harus cukup jelas. ECTO 2 menghendaki kami juga menentukan senarai repos ECTO yang kami gunakan dalam aplikasi kami.
Ecto sebenarnya memberikan kita pintasan untuk menubuhkan modul repo di atas sebagai tugas campuran: campuran ecto.gen.repo. Ini menjana modul repositori untuk kami dan mengemas kini fail config.exs dengan beberapa konfigurasi asas (modul repo masih perlu ditambah secara manual ke pokok pengawasan walaupun). Saya mengelakkan menggunakannya di sini terutamanya untuk alasan didaktik untuk menunjukkan cara untuk menubuhkan Ecto secara manual (itu, dan hakikat bahawa penjana repo menganggap anda menggunakan postgres, jadi kita perlu mengemas kini penyesuai dalam konfigurasi pula).
Sebelum bergerak, mari kita lihat dengan cepat pada hierarki proses. .
<span>def <span>application</span> do </span> <span>[applications: [:logger, :ecto, :mariaex], </span> <span>mod: {Notex, []}] </span><span>end </span>menavigasi ke tab Aplikasi, kita dapat melihat proses aplikasi, termasuk yang mana penyelia:
Jadi itulah sebabnya aplikasi ini perlu menjadi aplikasi OTP. Tetapi itu sejauh ini lubang arnab kita akan pergi berkenaan dengan proses dan OTP dalam artikel ini. Mereka akan ditutup dengan lebih terperinci dalam artikel kemudian yang akan datang.
Membuat pangkalan data dan jadual
Sekarang dengan persediaan itu, kami boleh membuat pangkalan data dan jadual kami. Untuk membuat pangkalan data, jalankan arahan berikut:
Untuk membuat jadual, kami akan menggunakan ciri migrasi Ecto. Migrasi membolehkan kita untuk versi pangkalan data bersama kod sumber, membolehkan perubahan dijejaki dan negara -negara yang berbeza digunakan. Oleh itu, kami membuat migrasi baru setiap kali kami ingin mengubah struktur pangkalan data.
defp deps <span>do </span> <span>[{:ecto, <span>"~> 1.1.5"</span>}, # or "~> 2.0" for Ecto 2 </span> <span>{:mariaex, <span>"~> 0.6.0"</span>}] # or "~> 0.7.0" for Ecto 2 </span><span>end </span>
Penghijrahan baru boleh dibuat dengan perintah campuran ecto.gen.migrasi seperti berikut:
di atas harus membuat folder migrasi baru di priv/repo/migrasi, serta fail penghijrahan baru. Fail ini dipraktikkan dengan tarikh dan masa yang dibuat (untuk pesanan direktori mudah), bersama dengan nama penghijrahan kami. Buka fail itu dan ubah suai kepada yang berikut:
defmodule Notex<span>.Repo do </span> use Ecto<span>.Repo, otp_app: :notex </span><span>end </span>
mix new notex <span>--sup </span>
Menjaga perkara yang mudah, kami menggunakan makro Create untuk menentukan jadual baru (dipanggil nota) dengan dua bidang: note_name dan note_content. Kunci utama dibuat secara automatik untuk kami (bernama ID). Walaupun kedua -dua bidang kami ditakrifkan sebagai rentetan mudah, Ecto menyokong banyak jenis - yang boleh anda periksa dalam dokumentasinya.
Dengan penghijrahan kami selesai, kami kini boleh menjalankan penghijrahan dengan arahan berikut:
<span>def <span>application</span> do </span> <span>[applications: [:logger, :ecto, :mariaex], </span> <span>mod: {Notex, []}] </span><span>end </span>
ini akan membuat jadual nota kami dengan 3 medan (medan ketiga menjadi ID, kunci utama).
Dengan jadual yang dibuat, kini sudah tiba masanya untuk membuat model untuk jadual. Model ini digunakan untuk menentukan bidang meja dan jenis masing -masing. Ini akan digunakan oleh aplikasi dan DSL pertanyaan ECTO apabila menghantar dan mengesahkan data. Definisi model juga mungkin mengandungi medan maya (tidak seperti definisi penghijrahan), yang digunakan untuk memegang data yang biasa -biasa saja yang kita tidak mahu bertahan (seperti kata laluan yang tidak dicuci).
Dalam bentuk yang paling asas, model notex.note kami (terletak di lib/notex/note.ex) akan kelihatan seperti berikut:
defp deps <span>do </span> <span>[{:ecto, <span>"~> 1.1.5"</span>}, # or "~> 2.0" for Ecto 2 </span> <span>{:mariaex, <span>"~> 0.6.0"</span>}] # or "~> 0.7.0" for Ecto 2 </span><span>end </span>
Kami menyuntik modul ecto.schema supaya kami dapat menggunakan makro skema untuk menentukan bidang dan jenis mereka. Definisi ini akan menjadi penting kemudian apabila kami menggunakan perubahan Ecto. Sesuatu yang lain Skema Macro lakukan untuk kami adalah menentukan struktur jenis sebagai modul semasa (dalam kes ini, ia adalah %notex.note {}). Struktur ini akan membolehkan kita membuat perubahan baru (lebih lanjut mengenai ini tidak lama lagi) dan memasukkan data ke dalam jadual.
dengan hanya di atas, kita boleh membakar IEX dan mula menanyakan pangkalan data kami:
defmodule Notex<span>.Repo do </span> use Ecto<span>.Repo, otp_app: :notex </span><span>end </span>
(Maklumat Debugging Console Redacted.)
Modul pertanyaan ECTO diimport untuk membuat semua makro DSL pertanyaan (seperti dari) yang tersedia untuk kami di dalam shell. Kami kemudian membuat pertanyaan mudah untuk mengembalikan semua rekod (menggunakan semua/1), memilih hanya medan note_name. Ini mengembalikan senarai kosong, kerana kami tidak mempunyai rekod dalam pangkalan data. Mari buat perubahan baru dan masukkannya ke dalam jadual:
<span>def <span>start</span>(_type, _args) do </span> import Supervisor<span>.Spec, warn: false </span> children <span>= [ </span> supervisor<span>(Notex.Repo, []), </span> <span>] </span> opts <span>= [strategy: :one_for_one, name: Notex.Supervisor] </span> Supervisor<span>.start_link(children, opts) </span><span>end </span>
(Maklumat Debugging Console Redacted.)
kita mulakan dengan mengimport ecto.Query sekali lagi, yang diperlukan untuk operasi terakhir (khusus untuk dari makro). Kami kemudian menggunakan fungsi Perubahan/1 dari ecto.Changeset untuk membuat perubahan baru menggunakan notex.note {} struct. Perubahan ini kemudian dimasukkan, dan kemudian diambil.
perubahan adalah apa yang kita gunakan ketika bekerja dengan rekod. Mereka membolehkan kita mengesan perubahan kepada data sebelum dimasukkan, serta mengesahkan perubahan tersebut dan menghantar nilai mereka kepada jenis data yang betul (mengikut definisi skema kami). Seperti yang dapat kita lihat dari atas, struktur �to.changeset {} mengandungi sejumlah ahli yang akan berguna untuk melihat jika perubahan itu sah (changeet.valid?), Apa kesilapan jika mereka tidak (changetet .errors), dan sebagainya.
mari kita mengemas kini model notex.note untuk menunjukkan beberapa perubahan dan operasi pertanyaan, sejak melaksanakannya di IEX mendapat sedikit kemas:
mix new notex <span>--sup </span>
mari kita melalui setiap lima fungsi baru. Fungsi Insert_Note/1 mencipta nota baru untuk kami. Fungsi pelakon/4 mengendalikan pemutus data dari medan input ke jenis medan masing -masing (mengikut definisi skema kami), serta memastikan bahawa semua bidang yang diperlukan mempunyai nilai. Perubahan yang dikembalikan dari cast/4 kemudian dimasukkan ke dalam pangkalan data. Perhatikan bahawa dalam Ecto 2, fungsi Cast/3 dan Validate_Required/3 harus digunakan dan bukannya Cast/4.
fungsi get_notes/0 mengembalikan senarai tupel semua nota dalam jadual. Ini dilakukan melalui pencocokan corak dalam pernyataan pilih. .
fungsi get_note/1 mengambil satu nota tunggal dari jadual mengikut id nota. Ini dilakukan melalui GET! fungsi, yang sama ada mengembalikan nota apabila berjaya atau melemparkan kegagalan.fungsi update_note/1 mengemas kini nota mengikut ID nota yang dibekalkan. Perhatikan kekunci rentetan dalam peta tandatangan fungsi (kekunci ID). Ini adalah konvensyen yang saya ambil dari rangka kerja Phoenix, di mana data yang tidak berasas (biasanya pengguna dibekalkan) diwakili dalam peta dengan kekunci rentetan, dan data sanitized diwakili dalam peta dengan kekunci atom. Untuk melaksanakan kemas kini, kami mula -mula mengambil nota mengikut IDnya dari pangkalan data, kemudian gunakan fungsi Cast/4 untuk memohon perubahan pada rekod sebelum akhirnya memasukkan perubahan yang dikemas kini kembali ke pangkalan data.
fungsi Delete_Note/1 membuang nota dari pangkalan data. Kami mula -mula mengambil nota dari pangkalan data melalui IDnya (sama dengan fungsi update_note/1), dan kemudian padamkannya menggunakan struktur nota yang dikembalikan.
Dengan operasi CRUD di atas, mari kita melompat kembali ke IEX dan mencubanya:
<span>def <span>application</span> do </span> <span>[applications: [:logger, :ecto, :mariaex], </span> <span>mod: {Notex, []}] </span><span>end </span>(Maklumat Debugging Console Redacted.)
dan di sana kami memilikinya, aplikasi CRUD asas menggunakan ECTO! Kita boleh menjadikan output dan menjadikan API lebih baik untuk menanyakan, tetapi saya akan meninggalkannya sebagai lanjutan, kerana mereka adalah tangen terhadap apa yang kita tutupi (dan artikel ini cukup lama, saya fikir).
Kesimpulan
Artikel ini telah melihat asas -asas Ecto dengan membuat aplikasi CRUD mudah dari awal. Kami telah melihat banyak kebolehan Ecto Packs untuk menguruskan rekod dan perubahan pangkalan data, termasuk migrasi, skema, dan DSL pertanyaannya, bersama -sama dengan menyentuh topik tangen seperti OTP. Saya harap ini telah menjadi primer yang baik bagi mereka yang ingin bangun untuk mempercepatkan bekerja dengan pangkalan data di Elixir!
Dalam artikel saya yang seterusnya, saya melihat asas -asas Elixir's Ecto Query DSL.Soalan Lazim (Soalan Lazim) Mengenai Perpustakaan ELIXIR
Apakah tujuan Perpustakaan ELIXIR ELIXIR? Ia direka untuk mengendalikan semua tugas manipulasi data dalam aplikasi, menyediakan API bersatu untuk berinteraksi dengan pangkalan data. ECTO membolehkan anda membuat, membaca, mengemas kini, dan memadam rekod, serta melakukan pertanyaan, transaksi, dan migrasi yang kompleks. Ia menyokong pangkalan data yang berbeza, termasuk PostgreSQL dan MySQL, menjadikannya alat yang serba boleh bagi mana -mana pemaju Elixir. . Perubahan adalah struktur data yang memegang perubahan yang akan dibuat ke pangkalan data, bersama -sama dengan kesilapan, pengesahan, dan jenis maklumat pemutus. Perubahan Memastikan hanya data yang sah disimpan ke pangkalan data, memberikan mekanisme yang mantap untuk pengesahan data dan pengendalian ralat. Itu membolehkan anda menulis pertanyaan kompleks dengan cara yang boleh dibaca dan cekap. Anda boleh menggunakan kata kunci dari kata kunci untuk memulakan pertanyaan, dan rantai fungsi lain seperti pilih, di mana, order_by, dan bergabung untuk membina pertanyaan. Ecto juga menyokong subqueries, agregasi, dan ciri -ciri SQL lanjutan yang lain. data. Ia memetakan data dari aplikasi Elixir anda ke jadual pangkalan data anda dan sebaliknya. Dengan ecto.schema, anda boleh menentukan bidang data anda, jenis mereka, dan sebarang persatuan antara skema yang berbeza. untuk mengendalikan migrasi pangkalan data. Migrasi adalah skrip yang mengubah struktur pangkalan data anda dari masa ke masa. Mereka boleh membuat atau menjatuhkan jadual, menambah atau mengeluarkan lajur, membuat indeks, dan sebagainya. Ciri penghijrahan Ecto memastikan bahawa perubahan ini dilakukan dengan cara yang terkawal dan boleh diterbalik pangkalan data melalui penggunaan penyesuai. Walau bagaimanapun, beberapa ciri seperti migrasi dan pertanyaan yang kompleks mungkin tidak disokong sepenuhnya atau mungkin berfungsi secara berbeza bergantung pada pangkalan data NoSQL tertentu dan penyesuai yang digunakan. dan API yang kuat untuk mengendalikan transaksi. Anda boleh menggunakan fungsi ecto.repo.Transaction untuk memulakan urus niaga, dan sebarang perubahan yang dibuat dalam transaksi akan komited ke pangkalan data jika fungsi kembali: OK, atau digulung jika ia kembali: Ralat.
Apakah ecto.multi?
ecto.Multi adalah ciri ECTO yang membolehkan anda mengumpulkan pelbagai operasi bersama -sama. Ia berguna apabila anda perlu melakukan pelbagai operasi dalam satu transaksi, dan anda mahu semuanya berjaya atau gagal secara keseluruhan. Ecto.Multi Memastikan konsistensi data dan membuat pengendalian ralat lebih mudah. Phoenix menggunakan ECTO untuk semua keperluan manipulasi datanya, dan menyediakan penjana yang memudahkan untuk membuat skema ECTO, perubahan, dan migrasi. Anda juga boleh menggunakan API pertanyaan ECTO secara langsung dalam pengawal dan pandangan Phoenix anda. Ia menyediakan panduan yang komprehensif untuk semua ciri ECTO, bersama -sama dengan contoh dan amalan terbaik. Anda juga boleh menemui banyak tutorial dan catatan blog dalam talian yang meliputi pelbagai aspek ECTO dengan lebih terperinci.
Atas ialah kandungan terperinci Perpustakaan Ecto. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kebangkitan kuasa teknologi wanita Cina dalam bidang AI: kisah di sebalik kerjasama Honor dengan sumbangan wanita DeepSeek ke bidang teknologi menjadi semakin penting. Data dari Kementerian Sains dan Teknologi China menunjukkan bahawa bilangan pekerja sains wanita dan teknologi sangat besar dan menunjukkan kepekaan nilai sosial yang unik dalam pembangunan algoritma AI. Artikel ini akan memberi tumpuan kepada telefon bimbit menghormati dan meneroka kekuatan pasukan wanita di belakangnya menjadi yang pertama untuk menyambung ke model besar DeepSeek, menunjukkan bagaimana mereka dapat mempromosikan kemajuan teknologi dan membentuk semula sistem koordinat nilai pembangunan teknologi. Pada 8 Februari 2024, Honor secara rasmi melancarkan model besar versi penuh darah DeepSeek-R1, menjadi pengeluar pertama di kem Android untuk menyambung ke Deepseek, membangkitkan sambutan bersemangat dari pengguna. Di sebalik kejayaan ini, ahli pasukan wanita membuat keputusan produk, penemuan teknikal dan pengguna

DeepSeek mengeluarkan artikel teknikal mengenai Zhihu, memperkenalkan sistem inferensi DeepSeek-V3/R1 secara terperinci, dan mendedahkan data kewangan utama untuk kali pertama, yang menarik perhatian industri. Artikel ini menunjukkan bahawa margin keuntungan kos harian sistem adalah setinggi 545%, menetapkan keuntungan model AI besar global yang tinggi. Strategi kos rendah DeepSeek memberikan kelebihan dalam persaingan pasaran. Kos latihan modelnya hanya 1% -5% daripada produk yang serupa, dan kos latihan model V3 hanya AS $ 5.576 juta, jauh lebih rendah daripada pesaingnya. Sementara itu, harga API R1 hanya 1/7 hingga 1/2 OpenAIO3-Mini. Data -data ini membuktikan kelayakan komersil laluan teknologi DeepSeek dan juga mewujudkan keuntungan yang cekap model AI.

Midea tidak lama lagi akan melepaskan penghawa dingin pertama yang dilengkapi dengan model besar DeepSeek - Midea Fresh and Clean Air Machine T6. Penghawa dingin ini dilengkapi dengan sistem memandu pintar udara maju, yang boleh menyesuaikan parameter dengan bijak seperti suhu, kelembapan dan kelajuan angin mengikut alam sekitar. Lebih penting lagi, ia mengintegrasikan model besar DeepSeek dan menyokong lebih daripada 400,000 arahan suara AI. Langkah Midea telah menyebabkan perbincangan yang hangat dalam industri, dan sangat prihatin terhadap kepentingan menggabungkan barangan putih dan model besar. Tidak seperti tetapan suhu mudah penghawa dingin tradisional, mesin udara segar dan bersih T6 dapat memahami arahan yang lebih kompleks dan samar -samar dan secara bijak menyesuaikan kelembapan mengikut persekitaran rumah, dengan ketara meningkatkan pengalaman pengguna.

Pembinaan laman web hanyalah langkah pertama: kepentingan SEO dan backlinks Membina laman web hanyalah langkah pertama untuk mengubahnya menjadi aset pemasaran yang berharga. Anda perlu melakukan pengoptimuman SEO untuk meningkatkan keterlihatan laman web anda di enjin carian dan menarik pelanggan yang berpotensi. Backlinks adalah kunci untuk meningkatkan kedudukan laman web anda, dan ia menunjukkan Google dan enjin carian lain kuasa dan kredibiliti laman web anda. Tidak semua pautan balik bermanfaat: mengenal pasti dan mengelakkan pautan yang berbahaya Tidak semua pautan balik bermanfaat. Pautan yang berbahaya boleh membahayakan kedudukan anda. Pemeriksaan backlink percuma yang sangat baik memantau sumber pautan ke laman web anda dan mengingatkan anda tentang pautan yang berbahaya. Di samping itu, anda juga boleh menganalisis strategi pautan pesaing anda dan belajar dari mereka. Alat Pemeriksaan Backlink Percuma: Pegawai Perisikan SEO anda

DeepSeek-R1 memberi kuasa kepada Perpustakaan Baidu dan Netdisk: Integrasi Perfaikan dan Tindakan yang sempurna telah diintegrasikan dengan cepat ke dalam banyak platform dalam masa satu bulan sahaja. Dengan susun atur strategik yang berani, Baidu mengintegrasikan Deepseek sebagai rakan model pihak ketiga dan mengintegrasikannya ke dalam ekosistemnya, yang menandakan kemajuan besar dalam strategi ekologi "carian model besar". Platform Pintar Pintar Wenxin dan Wenxin adalah yang pertama menyambung ke fungsi carian Deep dari model besar DeepSeek dan Wenxin, yang menyediakan pengguna dengan pengalaman carian AI percuma. Pada masa yang sama, slogan klasik "Anda Akan Tahu Apabila Anda Pergi ke Baidu", dan versi baru aplikasi Baidu juga mengintegrasikan keupayaan model besar Wenxin dan Deepseek, melancarkan "AI Search" dan "Refinement Rangkaian Wide Rangkaian"

Pengimbas kelemahan rangkaian berasaskan GO ini dengan cekap mengenal pasti kelemahan keselamatan yang berpotensi. Ia memanfaatkan ciri konkurensi Go untuk kelajuan dan termasuk pengesanan perkhidmatan dan pemadanan kelemahan. Mari kita meneroka keupayaan dan etika

AI Prompt Engineering untuk Generasi Kod: Panduan Pemaju Landskap pembangunan kod bersedia untuk peralihan yang ketara. Menguasai model bahasa yang besar (LLM) dan kejuruteraan segera akan menjadi penting bagi pemaju pada tahun -tahun akan datang. Th


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Pelayar Peperiksaan Selamat
Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

ZendStudio 13.5.1 Mac
Persekitaran pembangunan bersepadu PHP yang berkuasa

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

EditPlus versi Cina retak
Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod