加密解密UTF8编码的BASE64串 无 GOCREATE FUNCTION [dbo].[c_GetUTF8Code] ( @char Nchar )RETURNS intAS--UTF8转码BEGIN Declare @Code int Select @Code=Cast(Unicode(@char) as int) Declare @Utf8Code int Set @Utf8Code=0 if(@Code128) begin --0-127 --
加密解密UTF8编码的BASE64串
GO CREATE FUNCTION [dbo].[c_GetUTF8Code] ( @char Nchar ) RETURNS int AS --UTF8转码 BEGIN Declare @Code int Select @Code=Cast(Unicode(@char) as int) Declare @Utf8Code int Set @Utf8Code=0 if(@Code<128) begin --0-127 --0000-007F --0xxxxxxx --01100010 Unocide --01100010 UTF-8 Set @Utf8Code=@Code end else if(@Code>127 and @Code<2048) begin --128-2047 --0080-07FF --110xxx xx10xx xxxx --110 7 F F Declare @C1 int Declare @C2 int Declare @C3 int Select @C1=@Code/0x100 Select @C2=(@Code%0x100)/0x10 Select @C3=@Code%0x10 Select @Utf8Code=0xC080+0x400*@C1+0x100*(@C2/4)+0x10*(@C2%4)+@C3 end else if(@Code>2047 and @Code<65536) begin --2047-65535 --0110 0010 0001 0001 --1110 xxxx 10xx xxxx 10xx xxxx --1110 0110 1000 1000 1001 0001 Declare @C11 int Declare @C12 int Declare @C13 int Declare @C14 int Select @C11=@Code/0x1000 Select @C12=(@Code%0x1000)/0x100 Select @C13=(@Code%0x100)/0x10 Select @C14=@Code%0x10 Select @Utf8Code=0xE08080+0x10000*@C11+0x400*@C12+0x100*(@C13/4)+0x10*(@C13%4)+@C14 end return @Utf8Code End GO CREATE FUNCTION [dbo].[base64_utf8encode] ( @plain_text varchar(max) ) RETURNS varchar(max) AS BEGIN --Base64解密 DECLARE @output varchar(max) DECLARE @block_start integer DECLARE @map char(64) SET @map='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' SET @output='' SET @block_start=0 Declare @plain_textLength int Set @plain_textLength=Len(@plain_text) Declare @RestTransfer int--转码数累积 Declare @RestTransferLenth int Set @RestTransfer=0 Set @RestTransferLenth=0 Declare @CodeInt int Declare @block_val BINARY(3) WHILE @block_start<@plain_textLength BEGIN Set @CodeInt=0 SELECT @CodeInt= [dbo].[c_GetUTF8Code](SubString(@plain_text,@block_start+1,1)) Declare @CodeTransfer int Set @CodeTransfer=0 --0-127 1位 --128-2047 2位 --2047-65535 3位 if(@CodeInt<128) begin --+1位 if(@RestTransferLenth=0 or @RestTransferLenth=1) begin Set @RestTransfer=@RestTransfer*0x100+@CodeInt Set @RestTransferLenth=@RestTransferLenth+1 end else if(@RestTransferLenth=2) begin Set @CodeTransfer=@RestTransfer*0x100+@CodeInt Set @RestTransfer=0 Set @RestTransferLenth=0 end end else if(@CodeInt>127 and @CodeInt<2048) begin --+2位 if(@RestTransferLenth=0) begin Set @RestTransfer=@CodeInt Set @RestTransferLenth=2 end else if(@RestTransferLenth=1) begin Set @CodeTransfer=0x10000*@RestTransfer+@CodeInt Set @RestTransfer=0 Set @RestTransferLenth=0 end else if(@RestTransferLenth=2) begin Set @CodeTransfer=0x100*@RestTransfer+@CodeInt/0x100 Set @RestTransfer=@CodeInt%0x100 Set @RestTransferLenth=1 end end else if(@CodeInt>2047) begin --+3位 if(@RestTransferLenth=0) begin Set @CodeTransfer=@CodeInt Set @RestTransfer=0 Set @RestTransferLenth=0 end else if(@RestTransferLenth=1) begin Set @CodeTransfer=0x10000*@RestTransfer+@CodeInt/0x100 Set @RestTransfer=@CodeInt%0x100 Set @RestTransferLenth=1 end else if(@RestTransferLenth=2) begin --剩余部分十六进制右移两位与新数据前两位之和 Set @CodeTransfer=0x100*@RestTransfer+@CodeInt/0x10000 Set @RestTransfer=@CodeInt%0x10000 Set @RestTransferLenth=2 end end ---累积到3位,执行加密转换 if(@CodeTransfer>0x100000) begin SET @block_val = CAST(@CodeTransfer AS BINARY(3)) SET @output = @output + SUBSTRING(@map , @block_val/262144 +1,1) + SUBSTRING(@map ,(@block_val/4096&63)+1,1) + SUBSTRING(@map ,(@block_val/64 &63)+1,1) + SUBSTRING(@map ,(@block_val&63) +1,1) end SET @block_start=@block_start+1 END IF @RestTransferLenth>0 BEGIN SET @block_val=Cast(@RestTransfer*(Case @RestTransferLenth When 1 Then 65536 Else 256 end) as BINARY(3)) SET @output=@output +SUBSTRING(@map , @block_val/262144+1, 1) +SUBSTRING(@map ,(@block_val/4096 &63)+1,1) +CASE WHEN @RestTransferLenth =1 THEN REPLACE(SUBSTRING(@map ,(@block_val/64&63)+1,1),'A','=') ELSE SUBSTRING(@map ,(@block_val/64&63)+1,1) END +CASE WHEN @RestTransferLenth=1 THEN '=' ELSE REPLACE(SUBSTRING(@map ,(@block_val&63)+1,1),'A','=') END END RETURN @output END GO CREATE FUNCTION [dbo].[base64_utf8decode] ( @encoded_text varchar(max) ) RETURNS varchar(max) AS BEGIN --BASE64加密 DECLARE @output varchar(max) DECLARE @block_start int DECLARE @encoded_length int DECLARE @decoded_length int DECLARE @mapr binary(122) SET @output = '' SET @mapr = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -- 1-33 +0xFFFFFFFFFFFFFFFFFFFF3EFFFFFF3F3435363738393A3B3C3DFFFFFF00FFFFFF -- 33-64 +0x000102030405060708090A0B0C0D0E0F10111213141516171819FFFFFFFFFFFF -- 65-96 +0x1A1B1C1D1E1F202122232425262728292A2B2C2D2E2F30313233-- 97-122 SET @encoded_length=LEN(@encoded_text) SET @decoded_length=@encoded_length/4*3 SET @block_start=1 Declare @Code int Set @Code=0 Declare @CodeLength int--累计连接数,1,2,3 Set @CodeLength =0 WHILE @block_start<@encoded_length BEGIN Declare @Integer Integer Set @Integer=substring(@mapr,Unicode(substring(@encoded_text,@block_start ,1)),1)*262144 + substring(@mapr,Unicode(substring(@encoded_text,@block_start+1,1)),1)*4096 + substring(@mapr,Unicode(substring(@encoded_text,@block_start+2,1)),1)*64 + substring(@mapr,Unicode(substring(@encoded_text,@block_start+3,1)),1) Declare @C1 int Declare @C2 int Declare @C3 int --0xFF FF FF Set @C1=@Integer/0x10000 Set @C2=(@Integer/0x100)%0x100 Set @C3=@Integer%0x100 -------------------------------------@C1 if(@C1<0x80) begin if(@CodeLength=2) begin --128-2047 --0080-07FF --110x xx xx 10xx xxxx Set @Code=((@Code%0x2000)/0x100)*0x10+@Code%0x40 SET @output=@output+NCHAR(@Code) --print @Code Set @Code=0 Set @CodeLength=0 end SET @output=@output+CAST(Cast(@C1 AS BINARY(1))AS VARCHAR(1)) end else begin --码字连接 Set @Code=@Code*0x100+@C1 SET @CodeLength=@CodeLength+1 if(@CodeLength=3) begin --0110 0010 0001 0001 --1110 xxxx 10xx xxxx 10xx xxxx --1110 0110 1000 1000 1001 0001 Set @Code=((@Code%0x100000)/0x10000)*0x1000+((@Code%0x4000)/0x100)*0x40+@Code%0x40 SET @output=@output+NCHAR(@Code) Set @Code=0 Set @CodeLength=0 end end -------------------------------------@C2 if(@C2<0x80) begin if(@CodeLength=2) begin --128-2047 --0080-07FF --110x xx xx 10xx xxxx Set @Code=((@Code%0x2000)/0x100)*0x10+@Code%0x40 SET @output=@output+NCHAR(@Code) --print @Code Set @Code=0 Set @CodeLength=0 end SET @output=@output+CAST(Cast(@C2 AS BINARY(1))AS VARCHAR(1)) end else begin --码字连接 Set @Code=@Code*0x100+@C2 SET @CodeLength=@CodeLength+1 if(@CodeLength=3) begin --0110 0010 0001 0001 --1110 xxxx 10xx xxxx 10xx xxxx --1110 0110 1000 1000 1001 0001 Set @Code=((@Code%0x100000)/0x10000)*0x1000+((@Code%0x4000)/0x100)*0x40+@Code%0x40 SET @output=@output+NCHAR(@Code) Set @Code=0 Set @CodeLength=0 end end -------------------------------------@C3 if(@C3<0x80) begin if(@CodeLength=2) begin --128-2047 --0080-07FF --110x xx xx 10xx xxxx Set @Code=((@Code%0x2000)/0x100)*0x10+@Code%0x40 SET @output=@output+NCHAR(@Code) --print @Code Set @Code=0 Set @CodeLength=0 end SET @output=@output+CAST(Cast(@C3 AS BINARY(1))AS VARCHAR(1)) end else begin --码字连接 Set @Code=@Code*0x100+@C3 SET @CodeLength=@CodeLength+1 if(@CodeLength=3) begin --0110 0010 0001 0001 --1110 xxxx 10xx xxxx 10xx xxxx --1110 0110 1000 1000 1001 0001 Set @Code=((@Code%0x100000)/0x10000)*0x1000+((@Code%0x4000)/0x100)*0x40+@Code%0x40 SET @output=@output+NCHAR(@Code) Set @Code=0 Set @CodeLength=0 end end SET @block_start = @block_start + 4 END IF RIGHT(@encoded_text,2)='==' SET @decoded_length=@decoded_length-2 ELSE IF RIGHT(@encoded_text,1)='=' SET @decoded_length=@decoded_length-1 RETURN LEFT(@output ,@decoded_length) END

Untuk mengoptimumkan pertanyaan perlahan MySQL, SlowQuerylog dan Performance_Schema perlu digunakan: 1. Dayakan SlowQueryLog dan tetapkan ambang untuk merakam pertanyaan perlahan; 2. Gunakan Performance_Schema untuk menganalisis butiran pelaksanaan pertanyaan, cari kesesakan prestasi dan mengoptimumkan.

MySQL dan SQL adalah kemahiran penting untuk pemaju. 1.MYSQL adalah sistem pengurusan pangkalan data sumber terbuka, dan SQL adalah bahasa standard yang digunakan untuk mengurus dan mengendalikan pangkalan data. 2.MYSQL menyokong pelbagai enjin penyimpanan melalui penyimpanan data yang cekap dan fungsi pengambilan semula, dan SQL melengkapkan operasi data yang kompleks melalui pernyataan mudah. 3. Contoh penggunaan termasuk pertanyaan asas dan pertanyaan lanjutan, seperti penapisan dan penyortiran mengikut keadaan. 4. Kesilapan umum termasuk kesilapan sintaks dan isu -isu prestasi, yang boleh dioptimumkan dengan memeriksa penyataan SQL dan menggunakan perintah menjelaskan. 5. Teknik pengoptimuman prestasi termasuk menggunakan indeks, mengelakkan pengimbasan jadual penuh, mengoptimumkan operasi menyertai dan meningkatkan kebolehbacaan kod.

MySQL Asynchronous Master-Slave Replikasi membolehkan penyegerakan data melalui binlog, meningkatkan prestasi baca dan ketersediaan yang tinggi. 1) Rekod pelayan induk berubah kepada binlog; 2) Pelayan hamba membaca binlog melalui benang I/O; 3) Server SQL Thread menggunakan binlog untuk menyegerakkan data.

MySQL adalah sistem pengurusan pangkalan data sumber terbuka. 1) Buat Pangkalan Data dan Jadual: Gunakan perintah Createdatabase dan Createtable. 2) Operasi Asas: Masukkan, Kemas kini, Padam dan Pilih. 3) Operasi lanjutan: Sertai, subquery dan pemprosesan transaksi. 4) Kemahiran Debugging: Semak sintaks, jenis data dan keizinan. 5) Cadangan Pengoptimuman: Gunakan indeks, elakkan pilih* dan gunakan transaksi.

Pemasangan dan operasi asas MySQL termasuk: 1. Muat turun dan pasang MySQL, tetapkan kata laluan pengguna root; 2. Gunakan arahan SQL untuk membuat pangkalan data dan jadual, seperti CreateTatabase dan Createtable; 3. Melaksanakan operasi CRUD, gunakan memasukkan, pilih, kemas kini, padamkan arahan; 4. Buat indeks dan prosedur tersimpan untuk mengoptimumkan prestasi dan melaksanakan logik kompleks. Dengan langkah -langkah ini, anda boleh membina dan mengurus pangkalan data MySQL dari awal.

Innodbbufferpool meningkatkan prestasi pangkalan data MySQL dengan memuatkan data dan halaman indeks ke dalam ingatan. 1) Halaman data dimuatkan ke dalam bufferpool untuk mengurangkan cakera I/O. 2) Halaman kotor ditandakan dan disegarkan ke cakera secara teratur. 3) Pengurusan Data Pengurusan Algoritma LRU Penghapusan. 4) Mekanisme pembacaan memuatkan halaman data yang mungkin terlebih dahulu.

MySQL sesuai untuk pemula kerana mudah dipasang, kuat dan mudah untuk menguruskan data. 1. Pemasangan dan konfigurasi mudah, sesuai untuk pelbagai sistem operasi. 2. Menyokong operasi asas seperti membuat pangkalan data dan jadual, memasukkan, menanyakan, mengemas kini dan memadam data. 3. Menyediakan fungsi lanjutan seperti menyertai operasi dan subqueries. 4. Prestasi boleh ditingkatkan melalui pengindeksan, pengoptimuman pertanyaan dan pembahagian jadual. 5. Sokongan sokongan, pemulihan dan langkah keselamatan untuk memastikan keselamatan data dan konsistensi.

Pengimbasan jadual penuh mungkin lebih cepat dalam MySQL daripada menggunakan indeks. Kes -kes tertentu termasuk: 1) jumlah data adalah kecil; 2) apabila pertanyaan mengembalikan sejumlah besar data; 3) Apabila lajur indeks tidak selektif; 4) Apabila pertanyaan kompleks. Dengan menganalisis rancangan pertanyaan, mengoptimumkan indeks, mengelakkan lebih banyak indeks dan tetap mengekalkan jadual, anda boleh membuat pilihan terbaik dalam aplikasi praktikal.


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

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

Dreamweaver Mac版
Alat pembangunan web visual

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

MantisBT
Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan