cari
RumahJavajavaTutorialPeraturan diagnostik baharu dalam PVS-Studio 4

Keluaran PVS-Studio 7.34 telah memperkenalkan sekumpulan peraturan diagnostik baharu ke dalam penganalisis: analisis taint untuk Java, peraturan diagnostik khusus Unity untuk C#, menyelam mendalam ke dalam OWASP dan banyak lagi! Artikel ini akan merangkumi kesemuanya.

New diagnostic rules in PVS-Studio 4

C

Dalam keluaran ini, pasukan C menumpukan pada peraturan diagnostik Analisis Am dan sokongan untuk pelbagai piawaian pembangunan perisian.

Tetapi pegang topi anda, ini baru permulaan! Pasukan merancang untuk merangkumi lebih banyak lagi peraturan diagnostik standard MISRA, jadi nantikan berita lanjut :)

Dan buat masa ini, mari kita lihat peraturan utama dalam keluaran 7.34.

V1116

Mencipta objek pengecualian tanpa mesej penjelasan boleh mengakibatkan pengelogan tidak mencukupi.

Peraturan diagnostik ini direka bentuk untuk mengesan pengecualian yang dibuat tanpa mesej penjelasan.

Ketiadaan mesej mungkin menghalang proses pengesanan dan pembetulan ralat, serta kebolehbacaan kod keseluruhan.

Berikut ialah contoh kod yang menjadikan penganalisis PVS-Studio menjana amaran:

void SomeCheck(const char *val)
{
  if (!val) throw std::runtime_error { "" };
  ....
}

void Foo()
{
  const char *val = ....;
  try
  {
    SomeCheck(val);              // 



<p>Jika ralat berlaku, fungsi SomeCheck membuang pengecualian dengan mesej kosong, yang akan dikendalikan dalam fungsi Foo. Semasa pemprosesan, std::cerr dijangka mengandungi maklumat tentang sebab pengecualian, tetapi tidak.</p>

<p>Dengan menulis kod dengan cara ini, pembangun menghantar ucapan "selamat penyahpepijatan" kepada rakan sekerja. Ini menghalang pemahaman apa sebenarnya yang menyebabkan kegagalan.  </p>

<p>Peraturan ini berfungsi untuk pengecualian standard. Anda boleh menggunakan mekanisme anotasi tersuai untuk mengeluarkan amaran bagi pengecualian tersuai.</p>

<blockquote>
<p>Lihat dokumentasi untuk mendapatkan butiran lanjut tentang peraturan diagnostik ini.</p>
</blockquote>

<h3>
  
  
  V1117 [Untuk bahasa C]
</h3>

<h4>
  
  
  Jenis fungsi yang diisytiharkan adalah kelayakan cv. Tingkah laku semasa menggunakan jenis ini tidak ditentukan.
</h4>

<p>Peraturan diagnostik ini hanya digunakan pada bahasa C.</p>

<p>Ia bertujuan untuk mengesan kes definisi jenis fungsi yang menggunakan const atau penentu yang tidak menentu.  </p>

<p>Mengikut standard C23 (titik ke-10 perenggan 6.7.4.1), menggunakan jenis ini membawa kepada tingkah laku yang tidak ditentukan.</p>

<p>Contoh kod yang menjadikan penganalisis PVS-Studio menjana amaran:<br>
</p>

<pre class="brush:php;toolbar:false">typedef int fun_t(void);

typedef const fun_t const_qual_fun_t;          // 



<blockquote>
<p>Lihat dokumentasi untuk mendapatkan butiran lanjut tentang peraturan diagnostik ini.</p>
</blockquote>

<h3>
  
  
  V2022 [Untuk bahasa C]
</h3>

<h4>
  
  
  Penukaran jenis tersirat daripada jenis integer kepada jenis enum.
</h4>

<p>Satu lagi peraturan diagnostik untuk bahasa C yang boleh membantu semasa pemfaktoran semula dan penyahpepijatan.</p>

<p>Peraturan ini membolehkan penganalisis mengesan hantaran tersirat jenis integer kepada jenis enum. </p>

<p>Contoh kod dengan amaran PVS-Studio:<br>
</p><pre class="brush:php;toolbar:false">void SomeCheck(const char *val)
{
  if (!val) throw std::runtime_error { "" };
  ....
}

void Foo()
{
  const char *val = ....;
  try
  {
    SomeCheck(val);              // 



<p>Kod ini menggunakan pengendali bersyarat (?:) untuk memilih antara dua pembolehubah integer posOne dan postTwo, menghasilkan hantaran tersirat.</p>

<blockquote>
<p>Lihat dokumentasi untuk mendapatkan butiran lanjut tentang peraturan diagnostik ini.</p>
</blockquote>

<h3>
  
  
  V5014 [OWASP Standard]
</h3>

<h4>
  
  
  OWASP. Fungsi kriptografi ditamatkan. Penggunaannya boleh membawa kepada isu keselamatan. Pertimbangkan untuk bertukar kepada fungsi baharu yang setara.
</h4>

<p>Berikut ialah peraturan diagnostik baharu yang memfokuskan pada keselamatan, sejajar dengan prinsip SAST.</p>

<p>Peraturan ini direka bentuk mengikut piawaian pengesahan keselamatan OWASP.</p>

<p>Ia bertujuan untuk mengesan panggilan fungsi kriptografi usang. Penggunaannya boleh menyebabkan masalah keselamatan perisian yang kritikal.</p>

<p>Contoh kod dengan amaran PVS-Studio:<br>
</p>

<pre class="brush:php;toolbar:false">typedef int fun_t(void);

typedef const fun_t const_qual_fun_t;          // 



<p>Menurut dokumentasi Microsoft, fungsi CryptoImportKey dan CryptoDestroyKey tidak digunakan lagi. Ini harus digantikan dengan rakan sejawat daripada Cryptography Next Generation (BCryptoImportKey dan BCryptoDestroyKey).</p>

<blockquote>
<p>Lihat dokumentasi untuk mendapatkan butiran lanjut tentang peraturan diagnostik ini.</p>
</blockquote>

<p>Tetapi itu hanya pemanasan badan! Pasukan C dan C merancang untuk merangkumi lebih banyak peraturan diagnostik pada pelbagai piawaian pembangunan perisian. Perhatian khusus akan diberikan kepada standard MISRA. Jadi, tunggu beritanya :)</p>

<h2>
  
  
  C
</h2>

<p>Dalam keluaran PVS-Studio 7.34 baharu, pasukan C# menumpukan pada mencipta peraturan diagnostik khusus Perpaduan tetapi juga tidak melupakan peraturan Analisis Umum. </p>

<p>Mari kita mulakan dengan yang terakhir.</p>

<h3>
  
  
  V3207
</h3>

<h4>
  
  
  Corak logik 'bukan A atau B' mungkin tidak berfungsi seperti yang diharapkan. Corak 'bukan' dipadankan hanya dengan ungkapan pertama daripada corak 'atau'.
</h4>

<p>Peraturan diagnostik baharu ini bertujuan untuk mengesan penggunaan corak bukan A atau B yang salah. Masalahnya berpunca daripada kekeliruan pembangun tentang keutamaan operasi.</p>

<p>Contoh kod dengan amaran PVS-Studio:<br>
</p>

<pre class="brush:php;toolbar:false">Orientation GetOrientation (bool b)
{
  int posOne = 1;
  int posTwo = 2;
  return b ? posOne : posTwo;    // V2022
}

Pada permulaan kaedah, kunci parameter input disemak untuk rentetan kosong atau nol.

Tetapi terdapat ralat dalam logik ungkapan bersyarat. Keutamaan pengendali bukan adalah lebih tinggi daripada pengendali atau. Akibatnya, penolakan tidak digunakan pada sebelah kanan ungkapan. Selain itu, jika kunci ditetapkan kepada null, syarat tersebut akan menjadi benar.

Lihat dokumentasi untuk mendapatkan butiran lanjut tentang peraturan diagnostik ini.

V3208 [Enjin Perpaduan]

Enjin Perpaduan. Menggunakan 'WeakReference' dengan 'UnityEngine.Object' tidak disokong. GC tidak akan menuntut semula memori objek kerana ia dipautkan kepada objek asli.

Ini ialah peraturan diagnostik pertama dalam siri baharu peraturan khusus Perpaduan.

Ia bertujuan untuk mengesan penggunaan UnityEngine.Object (atau objek lain yang diwarisi daripadanya) bersama-sama dengan System.WeakReference.

Disebabkan oleh penggunaan tersirat contoh oleh enjin itu sendiri, gelagat rujukan yang lemah mungkin berbeza daripada yang dijangkakan.

Contoh kod dengan amaran PVS-Studio:

void SomeCheck(const char *val)
{
  if (!val) throw std::runtime_error { "" };
  ....
}

void Foo()
{
  const char *val = ....;
  try
  {
    SomeCheck(val);              // 



<p>Dalam contoh, kita boleh melihat rujukan yang lemah kepada objek kelas GameObject. Walaupun pengarang belum mencipta rujukan yang kukuh kepada objek ini, pemungut sampah tidak akan dapat membersihkannya.</p>

<blockquote>
<p>Lihat dokumentasi untuk mendapatkan butiran lanjut tentang peraturan diagnostik ini.</p>
</blockquote>

<h3>
  
  
  V3209 [Enjin Perpaduan]
</h3>

<h4>
  
  
  Enjin Perpaduan. Menggunakan tunggu pada objek 'Ditunggu' lebih daripada sekali boleh menyebabkan pengecualian atau kebuntuan, kerana objek tersebut dikembalikan ke kolam selepas ditunggu.
</h4>

<p>Dalam peraturan diagnostik lain untuk Unity, penganalisis mencari tempat dengan berbilang kegunaan objek UnityEngine.Awaitable yang sama dengan operator menunggu. </p>

<p>Objek disimpan dalam kumpulan objek untuk tujuan pengoptimuman. </p>

<p>Pada panggilan tunggu, objek Ditunggu dikembalikan ke kolam. Selepas itu jika tunggu digunakan pada objek yang sama sekali lagi, kita mendapat pengecualian. Dalam sesetengah kes, kebuntuan juga mungkin berlaku.</p>

<p>Contoh kod dengan amaran PVS-Studio:<br>
</p>

<pre class="brush:php;toolbar:false">typedef int fun_t(void);

typedef const fun_t const_qual_fun_t;          // 



<p>Dalam kod ini, kami mendapat pengecualian atau kebuntuan. Biar saya terangkan sebabnya. Kami mendapat nilai menggunakan panggilan tunggu menunggu. Kemudian kita mulakan pembolehubah hasil dengan nilai ini. Kebuntuan berlaku, kerana penantian sebelum ini telah digunakan untuk menunggu dalam pembinaan bersyarat.</p>

<blockquote>
<p>Lihat dokumentasi untuk mendapatkan butiran lanjut tentang peraturan diagnostik ini.</p>
</blockquote>

<h3>
  
  
  V3210 [Enjin Perpaduan]
</h3>

<h4>
  
  
  Enjin Perpaduan. Unity tidak membenarkan mengalih keluar komponen 'Transform' menggunakan kaedah 'Destroy' atau 'DestroyImmediate'. Panggilan kaedah akan diabaikan.
</h4>

<p>Peraturan diagnostik ini bertujuan untuk mengesan anomali yang berkaitan dengan panggilan kaedah Destroy atau DestroyImmediate kelas UnityEngine.Object. </p>

<p>Masalah berlaku dalam situasi apabila hujah jenis UnityEngine.Transform digunakan. Ini menyebabkan ralat semasa panggilan kaedah. Mengalih keluar komponen Transform daripada objek permainan tidak dibenarkan dalam Unity.</p>

<p>Contoh kod dengan amaran PVS-Studio:<br>
</p>

<pre class="brush:php;toolbar:false">Orientation GetOrientation (bool b)
{
  int posOne = 1;
  int posTwo = 2;
  return b ? posOne : posTwo;    // V2022
}

Harta transform daripada kelas asas MonoBehaviour mengembalikan tika kelas Transform, yang dihantar sebagai hujah kepada kaedah Destroy.

Apabila memanggil kaedah dengan cara ini, Unity akan memberikan mesej ralat, tetapi komponen itu sendiri tidak akan dimusnahkan.

Lihat dokumentasi untuk mendapatkan butiran lanjut tentang peraturan diagnostik ini.

V4007 [Enjin Perpaduan]

Enjin Perpaduan. Elakkan mencipta dan memusnahkan objek UnityEngine dalam konteks sensitif prestasi. Pertimbangkan untuk mengaktifkan dan menyahaktifkannya.

Peraturan diagnostik ini menyasarkan pelbagai ralat yang berbeza—isu prestasi.

Jika anda berminat dengan cara analisis statik boleh membantu mengoptimumkan projek Unity, saya menjemput anda untuk membaca artikel ini.

Tujuan peraturan ini adalah untuk membantu penganalisis mengesan penciptaan objek Unity dalam kaedah yang kerap dilaksanakan.

Penciptaan/pemusnahan objek permainan secara tetap bukan sahaja memuatkan CPU, tetapi juga membawa kepada peningkatan kekerapan panggilan pemungut sampah. Ini menjejaskan prestasi.

Contoh kod dengan amaran PVS-Studio:

void SomeCheck(const char *val)
{
  if (!val) throw std::runtime_error { "" };
  ....
}

void Foo()
{
  const char *val = ....;
  try
  {
    SomeCheck(val);              // 



<p>Di sini dalam kaedah Kemas kini, objek _instance permainan dibuat dan dimusnahkan. Memandangkan Kemas kini dilaksanakan setiap kali bingkai dikemas kini, adalah disyorkan untuk mengelakkan operasi ini di dalamnya jika boleh.  </p>

<blockquote>
<p>Lihat dokumentasi untuk mendapatkan butiran lanjut tentang peraturan diagnostik ini.</p>
</blockquote>

<p>Dengan cara ini, diagnostik Unity yang lain masih belum datang! Bersedia untuk berita baik daripada pasukan kami :)</p>

<h3>
  
  
  Lagi satu...
</h3>

<p>Kami tidak boleh tidak memberitahu anda tentang satu peningkatan penting dalam penganalisis C#—menjejaki perubahan nilai pulangan kaedah antara panggilan. Apakah yang berubah? Jom pecahkan.</p>

<p>Lihat contoh ini:<br>
</p>

<pre class="brush:php;toolbar:false">typedef int fun_t(void);

typedef const fun_t const_qual_fun_t;          // 



<p>Kaedah Contoh() menyemak nilai pulangan Foo() untuk null. Kaedah Foo() kemudian dipanggil semula dalam kandungan keadaan dan nilai pulangannya dinyahrujuk.</p>

<p>Terdahulu, penganalisis akan menjana amaran dalam kes ini kerana ia tidak mempertimbangkan konteks seruan, hanya memfokuskan pada kod pengisytiharannya. Penganalisis digunakan untuk membayangkan bahawa null boleh dikembalikan.</p>

<p>Kini penganalisis memahami bahawa Foo() mengembalikan nilai yang sama dalam kedua-dua kes dan tidak akan ada amaran.</p>

<p>Tetapi mari kita lihat contoh dengan kod yang diubah suai sedikit...<br>
</p>

<pre class="brush:php;toolbar:false">Orientation GetOrientation (bool b)
{
  int posOne = 1;
  int posTwo = 2;
  return b ? posOne : posTwo;    // V2022
}

Daripada pengisytiharan kaedah Foo(), kita boleh mendapatkannya apabila _condition == benar, kaedah mengembalikan bukan batal.

Penganalisis akan melihat medan _condition berubah sebelum seruan kedua dan akan membuat andaian: jika medan yang digunakan di dalam Foo() telah berubah, nilai pulangan Foo() mungkin telah berubah juga.

Akibatnya, amaran tentang kemungkinan dereference akan kekal.

Penganalisis C# kini menyokong analisis projek .NET 9! Ketahui lebih lanjut tentang ini dan ciri baharu yang lain dalam PVS-Studio 7.34 di sini.

Jawa

Dengan keluaran PVS-Studio 7.34, penganalisis Java kini mempunyai mekanisme untuk analisis taint!

Mekanisme ini menjadi asas untuk peraturan diagnostik pertama—cari suntikan SQL. Kemas kini masa hadapan bagi penganalisis Java akan memfokuskan pada SAST, senarai 10 Teratas OWASP bagi potensi kerentanan yang paling biasa dan peraturan diagnostik lain yang berkaitan dengan noda.

Sekarang, mari kita mulakan dengan beberapa peraturan Analisis Am baharu, kerana ia juga berbaloi.

V6123

Nilai operan yang diubah suai tidak digunakan selepas operasi kenaikan/penurunan.

Peraturan diagnostik baharu ini menyerlahkan kawasan dalam kod di mana nilai operasi postfix tidak digunakan.

Masalahnya ialah sama ada operasi berlebihan atau, lebih serius, operasi bercampur aduk dan pembangun mahu menggunakan awalan.

Contoh kod dengan amaran PVS-Studio:

void SomeCheck(const char *val)
{
  if (!val) throw std::runtime_error { "" };
  ....
}

void Foo()
{
  const char *val = ....;
  try
  {
    SomeCheck(val);              // 



<p>Pengendali tidak akan menjejaskan nilai yang kaedah hitungSesuatu akan dikembalikan.</p>

<blockquote>
<p>Lihat dokumentasi untuk mendapatkan butiran lanjut tentang peraturan diagnostik ini.</p>
</blockquote>

<h3>
  
  
  V6124
</h3>

<h4>
  
  
  Menukar literal integer kepada jenis dengan julat nilai yang lebih kecil akan mengakibatkan limpahan.
</h4>

<p>Seperti yang anda boleh lihat daripada nama peraturan diagnostik ini, ia mengesan kemungkinan limpahan.</p>

<p>Contoh kod dengan amaran PVS-Studio:<br>
</p>

<pre class="brush:php;toolbar:false">typedef int fun_t(void);

typedef const fun_t const_qual_fun_t;          // 



<p>Pembolehubah jenis integer telah diberikan nilai di luar julat yang sah, yang akan menyebabkan limpahan.</p>

<p>Pembolehubah jelas akan menyimpan nilai yang berbeza daripada nilai yang cuba ditetapkan oleh pembangun.</p>

<blockquote>
<p>Lihat dokumentasi untuk mendapatkan butiran lanjut tentang peraturan diagnostik ini.</p>
</blockquote>

<h3>
  
  
  V6125
</h3>

<h4>
  
  
  Memanggil kaedah 'tunggu', 'beritahu' dan 'notifyAll' di luar konteks yang disegerakkan akan membawa kepada 'IllegalMonitorStateException'.
</h4>

<p>Diagnostik ini membantu mengenal pasti masalah penyegerakan.</p>

<p>Contoh kod dengan amaran PVS-Studio:<br>
</p>

<pre class="brush:php;toolbar:false">Orientation GetOrientation (bool b)
{
  int posOne = 1;
  int posTwo = 2;
  return b ? posOne : posTwo;    // V2022
}

Penganalisis melihat menunggu, memberitahu dan memberitahuSemua kaedah, kerana kaedah itu mungkin dipanggil dalam konteks tidak disegerakkan. Mereka beroperasi dengan monitor objek yang penyegerakan berlaku. Iaitu, seruan mereka adalah betul hanya dalam konteks yang disegerakkan dan hanya pada objek yang penyegerakan berlaku.

Jika tunggu, maklumkan atau maklumkanSemua kaedah dipanggil dalam konteks yang tidak disegerakkan atau pada objek yang salah, kami mendapat pengecualian IllegalMonitorStateException.

Lihat dokumentasi untuk mendapatkan butiran lanjut tentang peraturan diagnostik ini.

V5309 [standard OWASP]

OWASP. Kemungkinan suntikan SQL. Data yang berpotensi tercemar digunakan untuk mencipta arahan SQL.

Peraturan diagnostik berkaitan noda pertama bagi penganalisis Java! Lebih khusus lagi, penganalisis kini boleh mengesan kemungkinan suntikan SQL.

Suntikan SQL ialah kelemahan yang membolehkan penyerang menyuntik kod mereka ke dalam pertanyaan SQL. Jika pertanyaan menggunakan data luaran, tanpa mengesahkannya dengan betul, seseorang itu akan mempertaruhkan integriti dan kerahsiaan maklumat yang disimpan dalam pangkalan data.

void SomeCheck(const char *val)
{
  if (!val) throw std::runtime_error { "" };
  ....
}

void Foo()
{
  const char *val = ....;
  try
  {
    SomeCheck(val);              // 



<p>Sekiranya pengguna ternyata berniat jahat dan nilai param adalah lebih kurang seperti berikut:- "111' atau 1=1; drop table users; pilih ' ",—anda boleh mengucapkan selamat tinggal kepada jadual pengguna. Oleh itu, adalah penting untuk menyemak data luaran. </p>

<blockquote>
<p>Lihat dokumentasi untuk mendapatkan butiran lanjut tentang peraturan diagnostik ini.</p>
</blockquote>

<p>Terima kasih kerana membaca!</p>

<p>Jika anda mempunyai permintaan untuk artikel atau soalan, jangan teragak-agak untuk menghantarnya melalui borang maklum balas. Akhir sekali, kami ingin mendengar pendapat anda dalam ulasan:)</p>


          

            
        

Atas ialah kandungan terperinci Peraturan diagnostik baharu dalam PVS-Studio 4. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Prestasi jvm vs bahasa lainPrestasi jvm vs bahasa lainMay 14, 2025 am 12:16 AM

JVM'sperformanceiscompetitiveWithotherRuntimes, menawarkanbalanceofspeed, keselamatan, dan produktiviti.1) jvmusesjitcompilationfordynamiciptimizations.2) c menawarkanSnativePerformanceButLacksjvm'sSafetyFeatures.3) pythonissloweSiSiSiSiSiSiS.3) pythonissloweSiSiSiSiSiS.3) pythonissloweSiSiSiSiSiS.3)

Kemerdekaan Platform Java: Contoh PenggunaanKemerdekaan Platform Java: Contoh PenggunaanMay 14, 2025 am 12:14 AM

Javaachievesplatformindependencethroughthejavavirtualmachine (jvm), membenarkancodetorunonanyplatformwithajvm.1) codeiscompiledintobytecode, notmachine-specificcode.2) byteCodeisinterpretedbybspretedbspretedbspretedbspretedbspretspretedbspretspret

Senibina JVM: menyelam mendalam ke mesin maya JavaSenibina JVM: menyelam mendalam ke mesin maya JavaMay 14, 2025 am 12:12 AM

TheJVMisanabstractcomputingmachinecrucialforrunningJavaprogramsduetoitsplatform-independentarchitecture.Itincludes:1)ClassLoaderforloadingclasses,2)RuntimeDataAreafordatastorage,3)ExecutionEnginewithInterpreter,JITCompiler,andGarbageCollectorforbytec

JVM: Adakah JVM berkaitan dengan OS?JVM: Adakah JVM berkaitan dengan OS?May 14, 2025 am 12:11 AM

Jvmhasacloserelationshipwiththeosasittranslatesjavabytecodeintomachine-specificinstructions, managesmemory, andhandlesgarbagecollection.Thisrelationshipallowsjavatorunonvariousosenvi,

Java: Tulis sekali, jalankan di mana sahaja (wora) - menyelam mendalam ke dalam kemerdekaan platformJava: Tulis sekali, jalankan di mana sahaja (wora) - menyelam mendalam ke dalam kemerdekaan platformMay 14, 2025 am 12:05 AM

Pelaksanaan Java "Tulis Sekali, Jalankan Di Mana -mana" disusun menjadi bytecode dan dijalankan pada mesin maya Java (JVM). 1) Tulis kod Java dan menyusunnya ke dalam bytecode. 2) Bytecode berjalan pada mana -mana platform dengan JVM dipasang. 3) Gunakan antara muka asli Java (JNI) untuk mengendalikan fungsi khusus platform. Walaupun terdapat cabaran seperti konsistensi JVM dan penggunaan perpustakaan khusus platform, Wora sangat meningkatkan kecekapan pembangunan dan fleksibiliti penempatan.

Kemerdekaan Platform Java: Keserasian dengan OS yang berbezaKemerdekaan Platform Java: Keserasian dengan OS yang berbezaMay 13, 2025 am 12:11 AM

Javaachievesplatformindependencethroughthejavavirtualmachine (JVM), membenarkancodetorunondifferentoperatingsystemswithoutmodification.thejvmcompilesjavacodeintoplatform-bebastbytecode, yang mana-mana

Ciri -ciri apa yang menjadikan Java masih kuatCiri -ciri apa yang menjadikan Java masih kuatMay 13, 2025 am 12:05 AM

Javaispowerfulduetoitsplatformindantrectence, orientednature orientednature, richstandardlibrary, perfanksapabilities, andstrongSecurityfeatures.1) PlatformIndendenceAllowsApplicationStorAnanydeviceViceViceViceViceViceViceViceViceViceViceViceViceViceViceViceViceViceViceViceViceViceViceViceViceViceViceViceViceViceViceDeviceViceDeviceViceViceViceViceViceViceViceViceViceViceViceViceViceViceViceViceViceD

Ciri -ciri Java Teratas: Panduan Komprehensif untuk PemajuCiri -ciri Java Teratas: Panduan Komprehensif untuk PemajuMay 13, 2025 am 12:04 AM

Fungsi Java teratas termasuk: 1) pengaturcaraan berorientasikan objek, menyokong polimorfisme, meningkatkan fleksibiliti kod dan pemeliharaan; 2) mekanisme pengendalian pengecualian, meningkatkan keteguhan kod melalui blok percubaan-catch-finally; 3) pengumpulan sampah, memudahkan pengurusan memori; 4) generik, meningkatkan keselamatan jenis; 5) Ekspresi AMBDA dan pengaturcaraan berfungsi untuk menjadikan kod lebih ringkas dan ekspresif; 6) Perpustakaan standard yang kaya, menyediakan struktur data dan algoritma yang dioptimumkan.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Nordhold: Sistem Fusion, dijelaskan
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

MinGW - GNU Minimalis untuk Windows

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.

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini