ຫຼາຍໆທ່ານອາດຈະກະທົບກະເທືອນຫົວຂອງທ່ານທີ່ອ່ານຫົວຂໍ້ນີ້. "ແມ່ນຫຍັງ?"
ໃນບົດຄວາມນີ້, ພວກເຮົາຈະເບິ່ງວ່າຜູ້ປະຕິບັດງານທີ່ມີຄວາມບົກພ່ອງແມ່ນຫຼືບໍ່ແລະວ່າການນໍາໃຊ້ຂອງພວກມັນຍັງມີຄວາມກ່ຽວຂ້ອງຢູ່ໃນລະບົບຄອມພິວເຕີທີ່ທັນສະໄຫມນີ້.
ຕົວຢ່າງການນໍາໃຊ້ຕົວຢ່າງ
ຕົວປະມວນຜົນແບບ bitwise ແມ່ນຢູ່ທີ່ນີ້, ແຕ່ວ່າຈະຂັບລົດຕົວຢ່າງເຮືອນ, ພວກເຮົາຈະເອົາໃຈໃສ່ພຽງແຕ່ຫນຶ່ງ: bitwise ແລະ ( &
). ຕົວຢ່າງທີ່ເຮັດໃຫ້ມັນສໍາລັບຂ້າພະເຈົ້າ. ດັ່ງນັ້ນນັ້ນແມ່ນສິ່ງທີ່ພວກເຮົາຈະເຮັດ - ເຂົ້າໄປໃນຕົວຢ່າງຕົວຢ່າງ.
ຈິນຕະນາການວ່າທ່ານມີເວັບໄຊທ໌ທີ່ຜູ້ໃຊ້ໃຫ້ມີສິດອະນຸຍາດເສພາະ. ຕົວຢ່າງເຊັ່ນວາລະສານເຊັ່ນ SitePoint:
- ຜູ້ຂຽນສາມາດ CRUD ຮ່າງຮ່າງ, ແລະແກ້ໄຂຂໍ້ມູນຂອງເຂົາເຈົ້າ.
- ບັນນາທິການສາມາດ, ນອກເຫນືອໄປຈາກຂໍ້ມູນຂ້າງຕົ້ນ, CRUD ຮ່າງຮ່າງແລະສໍາເລັດການໂພດແລະລາຍຊື່ຜູ້ຂຽນ CRUD.
- ຜູ້ບໍລິຫານສາມາດເພີ່ມສິດອະນຸຍາດໃຫ້ຜູ້ເບິ່ງແຍງນອກເຫນືອໄປຈາກຂ້າງເທິງ.
Semalt ຜູ້ໃຊ້ສາມາດມີສິດອະນຸຍາດຫຼາຍ, ມີວິທີການຈໍາກັດການອະນຸຍາດໃນຖານຂໍ້ມູນແລະລະບົບທີ່ໃຊ້ມັນ.
Double Join
ຕື່ມພາລະບົດບາດ, ເພີ່ມສິດ, ຄັດລອກການອະນຸຍາດໃຫ້ມີພາລະບົດບາດໃນຕາຕະລາງເຂົ້າຮ່ວມ, ຫຼັງຈາກນັ້ນສ້າງຕາຕະລາງການເຂົ້າຮ່ວມອື່ນແລະການເຊື່ອມຕໍ່ບາງບົດບາດກັບຜູ້ໃຊ້ບາງ.
ວິທີການນີ້ສ້າງສີ່ຕາລາງພິເສດ:
- ສິດ
- ພາລະບົດບາດ
- ສິດ <-> ພາລະບົດບາດ
- ບົດບາດ <-> ຜູ້ໃຊ້
ມີພຽງເລັກນ້ອຍເກີນໄປ. Semalt ມີການແກ້ໄຂເຫຼົ່ານີ້ຫຼືລາຍຊື່ໃຫ້ເຂົາເຈົ້າໃນ app ໄດ້ເປັນປົກກະຕິໃນບາງລາຍການທີ່ໄດ້ໄປຢ້ຽມຢາມເລື້ອຍໆ. ມີພຽງແຄດແຄດຫນັກຈະຊ່ວຍປະຢັດ app ນີ້ຈາກການຖອຍລົງພາຍໃຕ້ການໂຫຼດຫນັກ.
ປະໂຫຍດຫນຶ່ງ, ເຖິງແມ່ນວ່າໂດຍການກໍານົດພາລະບົດບາດກໍ່ດີກັບການອະນຸຍາດສັບສົນ, ທ່ານພຽງແຕ່ຕ້ອງຕິດຜູ້ໃຊ້ເຂົ້າໃນພາລະບົດບາດແລະທ່ານດີ - ມັນເຮັດໃຫ້ເຂົ້າຮ່ວມໂຕະແລະໄວ.
ການຮ່ວມເພດດຽວ
ເພີ່ມສິດ, ເພີ່ມຕາຕະລາງເຂົ້າຮ່ວມ, ຄັດລອກບາງ permissions ກັບຜູ້ໃຊ້ບາງຄົນ
ວິທີການນີ້ສ້າງສອງຕາລາງພິເສດ:
ຄ່າໃຊ້ຈ່າຍຫຼາຍກວ່າຕົວຢ່າງກ່ອນຫນ້ານີ້, ແຕ່ທ່ານມີລາຍການເພີ່ມເຕີມໃນຕາຕະລາງເຂົ້າຮ່ວມເນື່ອງຈາກຜູ້ໃຊ້ສາມາດມີສິດອະນຸຍາດ (CRUD ສໍາລັບການຮ່າງເປັນ 4 ສິດ). ມີຜູ້ໃຊ້ຫຼາຍຄົນແລະມີສິດອະນຸຍາດຫຼາຍ, ຕາຕະລາງນີ້ສາມາດໄດ້ຮັບຢ່າງໄວວາ.
The Column Stampede
ເພີ່ມຄໍລໍາລົງໃນຕາຕະລາງຜູ້ໃຊ້ສໍາລັບແຕ່ລະໃບອະນຸຍາດ, ຫຼັງຈາກນັ້ນໃຫ້ datatype ຂອງມັນເປັນ tinyint (ໂດຍພື້ນຖານແລ້ວ boolean) ເພື່ອກວດສອບການອະນຸຍາດເປັນ "on" ຫຼື "off".
ການອະນຸຍາດການຂາຍຊົ່ວຄາວສໍາລັບຜູ້ໃຊ້ຈະເບິ່ງຄືກັບສິ່ງນີ້:
UPDATE `users` SET` editProfile` = 1, `deleteProfile` = 0,` createDraft` = 1, `publishDraft` = 0 ທີ່ຢູ່ WHERE `id` = 5
ວິທີການນີ້ບໍ່ມີຕາຕະລາງພິເສດ, ແຕ່ບໍ່ຈໍາເປັນຕ້ອງຂະຫຍາຍຕາຕະລາງໃນຂະຫນາດໃຫຍ່, ແລະຕ້ອງການດັດແປງຖານຂໍ້ມູນທຸກຄັ້ງທີ່ມີການອະນຸຍາດໃຫມ່. Semalt ເປັນວິທີການທີ່ດີສໍາລັບເວລາທີ່ທ່ານຮູ້ວ່າທ່ານຈະມີສິດອະນຸຍາດຫຼາຍທີ່ສຸດສອງຫຼືສາມສໍາລັບອະນາຄົດ, ແຕ່ບໍ່ຄວນຈະຖືກນໍາໃຊ້ສໍາລັບສິ່ງທີ່ຫຼາຍກວ່ານັ້ນ.
Semalt, ເນື່ອງຈາກວ່າບັນຊີລາຍຊື່ຂອງຄໍລໍາ, ໃນເວລາທີ່ເບິ່ງຈາກຫ່າງໄກ, ຄ້າຍຄືກັບເລກຖານສອງ (1010), ວິທີນີ້ເປັນ segway ທີ່ດີເລີດເຂົ້າໄປໃນອີກ .
ວິທີການ Bitwise
Semalt ພວກເຮົາຫລີ້ນເລິກເຂົ້າໄປໃນວິທີການນີ້, ໃຫ້ມີຫຼັກສູດ crash ໃນຖານສອງ.
ເລກຖານສອງ
ຄອມພິວເຕີທັງຫມົດເກັບຂໍ້ມູນເປັນໄບນາລີ: 0 ຫຼື 1. ດັ່ງນັ້ນຈໍານວນ 14 ຖືກເກັບຮັກສາໄວ້ເປັນຈິງ: 1110. ດັ່ງນັ້ນຈໍານວນ 1337 ຫມາຍຄວາມວ່າ:
- 1 x 7
- + 3 x 10
- + 3 x 100
- + 1 x 1000
ການຖິ້ມລະຫັດຂອງແຕ່ລະເລກໃນລະບົບທະສະນິຍົມ (ຖານ 10) ຈະເພີ່ມກັບ 10. ຫນຶ່ງຄັ້ງທໍາອິດແມ່ນ 1, ຫນຶ່ງຕໍ່ໄປແມ່ນ 10, ຕໍ່ໄປຫຼັງຈາກນັ້ນ 100, 1000 ຕໍ່ໄປ, ແລະອື່ນໆ.
ໃນຖານສອງ, ຖານແມ່ນ 2, ດັ່ງນັ້ນຈໍານວນຂອງແຕ່ລະຈະຖືກຄູນດ້ວຍ 2. ຈໍານວນ 1110 ນັ້ນແມ່ນ:
- 0 x 1
- + 1 x 2
- + 1 x 4
- + 1 x 8
Semalt 2 + 4 + 8, ຊຶ່ງເປັນ 14
ແມ່ນ, ມັນງ່າຍທີ່ຈະແປງຕົວເລກຖານສອງເປັນຕົວເລກ.
ດັ່ງນັ້ນ, ເມື່ອພວກເຮົາເບິ່ງໂຄ້ດອະນຸຍາດຂອງພວກເຮົາຈາກກ່ອນທີ່ຈະເປັນ 1010, ມັນອາດຈະຖືກເຫັນວ່າເປັນຈໍານວນ 10 ຂຽນໃນຮູບແບບສອງ. Hmm, ບາງທີພວກເຮົາກໍາລັງໃສ່ບາງສິ່ງບາງຢ່າງຢູ່ທີ່ນີ້.
ຖ້າພວກເຮົາມີ 1010 ເປັນອະນຸຍາດ, ນັ້ນຫມາຍຄວາມວ່າຕົວເລກທີ 2 ແລະທີ 4 ຖືກກໍານົດ, ແຕ່ວ່າຄັ້ງທໍາອິດແລະທີສາມແມ່ນບໍ່ (ຍ້ອນວ່າພວກມັນມີ 0).
ໃນ parlance ຄູ່, ພວກເຮົາກໍ່ເວົ້າວ່າ 0 ແລະທີສອງບໍ່ຖືກກໍານົດ, ເພາະວ່າພວກເຂົາກໍາລັງນັບຈາກ 0, ຄືກັນກັບແຖວ. ນີ້ແມ່ນຍ້ອນວ່າຈໍານວນລໍາດັບຂອງພວກເຂົາ (ທີ 1, ທີ 2, ທີ 3) ເທົ່າກັບຕົວເລກຂອງພວກເຂົາ. ບິດ 0 ເປັນຕົວຈິງ 2 ກັບພະລັງງານຂອງ 0 (2 0) ເຊິ່ງເທົ່າກັບ 1. ບິດທີ 1 ແມ່ນ 2 ກັບພະລັງງານຂອງ 1 (2 1) ຊຶ່ງເປັນ 2. 2 ແມ່ນ 2 ຮຽບຮ້ອຍ (2 ^ 2) ເຊິ່ງ ເທົ່າກັບ 4, ແລະອື່ນໆວິທີທີ່ມັນທຸກຢ່າງງ່າຍໆທີ່ຈະຈື່ໄດ້.
ດັ່ງນັ້ນສິ່ງນີ້ຊ່ວຍເຮົາໄດ້ແນວໃດ?
ວິທີການ Bitwise
ດີ, ໂດຍຊອກຫາການອະນຸຍາດຈາກໄກ, ພວກເຮົາສາມາດເປັນຕົວແທນຂອງສະຖານະຂອງ ຄໍລໍາທັງຫມົດໃນເວລາດຽວກັນ ດ້ວຍຈໍານວນບິດດຽວ. ຖ້າພວກເຮົາສາມາດເປັນຕົວແທນຂອງຄໍລໍາທັງຫມົດໃນເວລາດຽວກັນດ້ວຍເລກຖານສອງດຽວ, ນັ້ນກໍ່ຫມາຍຄວາມວ່າພວກເຮົາສາມາດເປັນຕົວເລກທີ່ມີຕົວເລກດຽວໃນເວລາທີ່ຖືກແປເປັນຕົວເລກທະສະນິຍົມ!
ຖ້າພວກເຮົາມີຄໍລໍາອະນຸຍາດດຽວ ທີ່ມີມູນຄ່າ 14
, ພວກເຮົາຈະຮູ້ວ່ານີ້ແມ່ນຕົວຈິງ 1110
, ແລະພວກເຮົາຈະຮູ້ວ່າພວກເຮົາ ມີສາມໃນສີ່ສິດ! ແຕ່ວ່າ 3 ຂອງພວກເຮົາ 4?
Semalt ການກໍາຫນົດແຜນການອະນຸຍາດຕໍ່ໄປນີ້:
ກໍາມະການປ່ຽນແປງ | CREF PROFILE | ແກ້ໄຂໂປໄຟ | PROFILE DELETE | ສ້າງລາຍໄດ້ | ແກ້ໄຂຮ່າງ | ວາງຕົວລ້າ | ລາຍການອອກອາກາດ | FINISHED EDIT | FINISHED DELETE |
512 | 256 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
ຈໍານວນ 14 ໃນບິດແມ່ນ 1110, ແຕ່ຈໍານວນ zeroes ທີ່ຢູ່ເບື້ອງຊ້າຍບໍ່ສໍາຄັນ, ດັ່ງນັ້ນພວກເຮົາສາມາດປາດມັນຈົນກວ່າພວກເຮົາເຖິງຈໍານວນສິດໃນຕາຕະລາງ: 0000001110. ນີ້ແມ່ນ 14, ຕົວແທນເທົ່ານັ້ນ ຂອງການອະນຸຍາດຈາກຕາຕະລາງຂ້າງເທິງ. ສໍາລັບຈຸດປະສົງແລະຈຸດປະສົງທັງຫມົດ, 0000001110 === 1110.
DRAFT_DELETE
,
DRAFT_PUBLISH
ແລະ
FINISHED_EDIT
,
) ແຕ່ວ່າມັນເປັນພຽງຕົວຢ່າງໂດຍຜ່ານການທີ່ພວກເຮົາສາມາດຄາດຄະເນວ່າຖ້າຄົນຫນຶ່ງມີ 1111111111, ພວກເຂົາຈະມີສິດທັງຫມົດ (ອາດເປັນຜູ້ໃຊ້ admin). ໃນທະສະນິຍົມ, ນີ້ແມ່ນ 1023. ດັ່ງນັ້ນ, ຄົນທີ່ມີຄ່າ 1023
ໃນຄໍລໍາສິດ
ແມ່ນຄົນທີ່ມີສິດທັງຫມົດ. ແຕ່ວ່າພວກເຮົາຈະກວດສອບການນີ້ໃນລະຫັດຂອງພວກເຮົາແນວໃດ? ໃນຄໍາສັບຕ່າງໆອື່ນ, ເຮັດແນວໃດພວກເຮົາສາມາດຮູ້ວ່າ bit ຂອງໃບອະນຸຍາດແມ່ນຖືກກໍານົດໄວ້ ຫຼືບໍ່ , ໂດຍສະເພາະຖ້າຈໍານວນຖືກເກັບໄວ້ເປັນຕົວເລກທະນາຄານ, ແລະບໍ່ແມ່ນຄູ່ສົມລົດ?
ນັ້ນແມ່ນສິ່ງທີ່ຜູ້ປະຕິບັດງານທີ່ມີຄວາມບົກພ່ອງສໍາລັບ - ໂດຍສະເພາະແມ່ນແມ່ແບບດຽວ &
, ທີ່ເອີ້ນວ່າ bitwise ແລະ . ທ່ານຈະກວດເບິ່ງບິດອື່ນໂດຍການປ່ຽນຄ່າຂອງພວກເຂົາ: 256, 128, 64, 32, 16, 8, 4, 2, ຫຼື 1.
[ທາງເລືອກ] "ໃຫ້ພວກເຮົາຮູ້ສຶກດ້ານເຕັກນິກ"
ຂ້າມສ່ວນແບ່ງນີ້ຖ້າທ່ານບໍ່ຕ້ອງການຮູ້ວ່າຜູ້ປະຕິບັດງານນີ້ຫຼືຜູ້ເຮັດວຽກທີ່ຄ້າຍຄືກັນເຮັດຫຍັງ, ແຕ່ມີຄວາມສົນໃຈກັບການສືບຕໍ່ຕົວຢ່າງ.
ໃນເວລາທີ່ພວກເຮົາເວົ້າ ແລະ 512 ແລະອະນຸຍາດ
ພວກເຮົາກໍາລັງຊອກຫາພາກສ່ວນຫຼັງແລະເປັນ TRUE, ເພາະວ່ານັ້ນຄືວິທີການສອບຖາມ SQL ປະຕິບັດງານ - ພວກເຂົາປະເມີນເງື່ອນໄຂແລະສົ່ງແຖວເກັດທີ່ຢູ່ທີ່ຖືກຕ້ອງກັບຄວາມຕ້ອງການ ທີ່ຢູ່
ເພາະສະນັ້ນ, 512 & ສິດ
ຕ້ອງປະເມີນຄວາມຈິງ. ພວກເຮົາຮູ້ວ່າຄ່າທີ່ບໍ່ແມ່ນສູນ, ມັນເປັນ integer, boolean ທີ່ກ່າວວ່າ "true", ຫຼື string ທີ່ບໍ່ຫວ່າງ, ຖືກຖືວ່າເປັນ "true". ດັ່ງນັ້ນ 512 ແມ່ນຄວາມຈິງ. 1 ແມ່ນຄວາມຈິງ. 0 ແມ່ນບໍ່ຖືກຕ້ອງ. 128 ແມ່ນຄວາມຈິງ. Etc
512 ແມ່ນຖານຂໍ້ມູນເປັນຈໍານວນເຕັມ 10 ແລະ
ແມ່ນຄໍລໍາທີ່ສາມາດມີຖານຂໍ້ມູນເປັນຖານ 10. ຕົວເລກ bitwise ແລະ ຕົວຈິງເບິ່ງສ່ວນຕັດຂອງສອງຕົວເລກເຫຼົ່ານີ້ແລະສົ່ງກັບຄືນໄປບ່ອນ bits ທີ່ກໍານົດໄວ້ ໃນທັງສອງ. ດັ່ງນັ້ນ, ຖ້າຈໍານວນ 512 ແມ່ນ 1000000000, ແລະຖ້າວ່າຄ່າສິດອະນຸຍາດແມ່ນ 1023, ເມື່ອຖືກແປງເປັນບິດທີ່ 1111111111. ສ່ວນຕັດຂອງຜົນຕອບແທນ 1000000000 ເພາະວ່າພຽງແຕ່ນ້ອຍທີ່ສຸດແມ່ນຕັ້ງໄວ້ໃນທັງສອງຕົວເລກ. ໃນເວລາທີ່ພວກເຮົາແປງນີ້ກັບຄືນໄປບ່ອນເປັນຕົວເລກ, ວ່າ 512, ເຊິ່ງຖືກພິຈາລະນາ ຄວາມຈິງ
.
Semalt ແມ່ນເຫດຜົນທີ່ແທ້ຈິງ, ບໍ່ແມ່ນນັກປະຕິບັດຕົວເລກ, ໃນການກວດສອບຄວາມເປັນຈິງຕາມເງື່ອນໄຂ. ຖ້າພວກເຮົາມີຈໍານວນ 1110 ແລະ 1010, ນີ້ແມ່ນສິ່ງທີ່ພວກເຂົາຜະລິດໃຫ້ກັບຜູ້ປະຕິບັດທີ່ແຕກຕ່າງກັນ:
- | & | | | | ~ |
Operand A | 1110 | 1110 | 1110 | 1110 |
Operand B | 1010 | 1010 | 1010 | / |
ຜົນການຄົ້ນຫາ | 1010 | 1110 | 0100 | 0001 |
-
&
ກັບຄືນມາເປັນເລກຖານສອງທີ່ບິດທັງຫມົດຖືກກໍານົດໄວ້ໃນທັງສອງປະຕິບັດ. -
|
ກັບຄືນຫາເລກຖານສອງທີ່ມີຊຸດບິດທັງຫມົດທີ່ຖືກກໍານົດໄວ້ໃນລະບົບປະຕິບັດງານ. -
ກັບຄືນຫາເລກຖານສອງທີ່ມີຊຸດບິດທັງຫມົດທີ່ກໍານົດໄວ້ໃນລະບົບປະຕິບັດງານທັງສອງ, ແຕ່ບໍ່ແມ່ນທັງສອງ. -
~
ພຽງແຕ່ກັບຄືນກົງກັນຂ້າມ - ທັງຫມົດທີ່ບໍ່ໄດ້ກໍານົດໃນ operand ຕົ້ນສະບັບກໍານົດໄວ້ໃນປັດຈຸບັນ.
ນອກຈາກນີ້ຍັງມີຜູ້ປະຕິບັດການປ່ຽນແປງທາງບິດ: ການປ່ຽນຊ້າຍ <<
ແລະການປ່ຽນຂວາ >>
ເຫຼົ່ານີ້ຢ່າງຫຼວງຫຼາຍປ່ຽນແປງມູນຄ່າຂອງຕົວເລກຖານສອງໂດຍການເຄື່ອນຍ້າຍຕົວເລກທີ່ກໍານົດໄວ້ທັງຫມົດຫນຶ່ງສະຖານທີ່ໄປທາງຂວາຫຼືຊ້າຍ. ການນໍາໃຊ້ຂອງພວກເຂົາໃນສະພາບການຂອງພວກເຮົາແມ່ນເປັນເລື່ອງທີ່ຫນ້າເຊື່ອຖື, ສະນັ້ນພວກເຮົາຈະບໍ່ກວມເອົາພວກເຂົາຢູ່ທີ່ນີ້.
ແລະໃນ PHP ພວກເຮົາສາມາດທົດສອບຖ້າມີ bit ເປັນດັ່ງນັ້ນ:
ຖ້າ (1023 & 1) {}
ແຕ່ນີ້ແມ່ນແທ້, ຍາກທີ່ຈະແກ້ໄຂ - ພຽງແຕ່ຊອກຫາຕົວເລກດິບແມ່ນບໍ່ສາມາດອ່ານໄດ້ຫຼືເຂົ້າໃຈໄດ້. ດັ່ງນັ້ນ, ໃນ PHP, ມັນດີກວ່າການນໍາໃຊ້ຄົງທີ່ກໍານົດສິດອະນຸຍາດເປັນບິດ, ແລະການຄົ້ນຫາມູນຄ່າຈໍານວນເຕັມຂອງການອະນຸຍາດຈາກຄໍລໍາ. ຫຼັງຈາກນັ້ນ, ທ່ານສິ້ນສຸດລົງດ້ວຍສິ່ງທີ່ຄ້າຍຄືກັນນີ້:
ຖ້າ ($ user-> permissions & \ MyNamespace \ Role :: FINISHED_DELETE) {//}
ໃນທີ່ນີ້ພວກເຮົາສົມມຸດວ່າພວກເຮົາໄດ້ມີຫ້ອງ \ MyNamespace \ Role
ທີ່ຖືກກໍານົດແລະ loaded ດ້ວຍຈໍານວນດັ່ງຕໍ່ໄປນີ້:
const FINISHED_DELETE = 1const FINISHED_EDIT = 2const DRAFT_PUBLISH = 8 ທີ່ຢູ່ ທີ່ຢູ່ const CHANGE_PERMISSIONS = 512
Semalt, ທ່ານມີວິທີທີ່ງ່າຍທີ່ສຸດໃນການເກັບຮັກສາສິດອະນຸຍາດຫຼາຍຕໍ່ຜູ້ໃຊ້ໂດຍບໍ່ຕ້ອງໃຊ້ຕາລາງພິເສດແລະສ້າງຄ່າໃຊ້ຈ່າຍທີ່ບໍ່ຈໍາເປັນ. ດັ່ງນັ້ນ, ເພື່ອບັນທຶກການອະນຸຍາດຂອງພວກເຂົາ, ທ່ານພຽງແຕ່ສະຫຼຸບພວກເຂົາ (1 + 2 = 3) ແລະປະຫຍັດ 3 ເຂົ້າໄປໃນຄໍລໍາອະນຸຍາດ
. ມີ ບໍ່ມີວິທີອື່ນ ເພື່ອໃຫ້ເລກ 3 ມີການປະສົມປະສານບິດ - ຈໍານວນ 3 ບໍ່ສາມາດຖືກສະແດງຢູ່ໃນຖານສອງໃນທາງອື່ນອີກກວ່າ 0011 - ດັ່ງນັ້ນທ່ານສາມາດແນ່ໃຈ 100% ວ່າຈໍານວນ 3 ຫມາຍຄວາມວ່າຜູ້ໃຊ້ມີ ການອະນຸຍາດ 1 ແລະການອະນຸຍາດ 2, ທີ່ສອດຄ້ອງກັບຄ່າຂອງພວກເຂົາໃນສະກຸນ.
ນີ້ເບິ່ງຄືວ່າງ່າຍດາຍແລະປະຕິບັດໄດ້ງ່າຍ, ແມ່ນບໍ? ຢຸດເຊົາການຈັບ?
Caveats
ການຖອກນ້ໍາເປັນສອງຄໍາເຕືອນຫລັກ:
- ທ່ານຈໍາເປັນຕ້ອງຈື່ໄວ້ວ່າຈະໃຊ້ພະລັງຂອງ 2 ໃນເວລາທີ່ຄິດໄລ່ຄ່າ bit ຂອງໃບອະນຸຍາດຕໍ່ໄປ. ດັ່ງນັ້ນ, ຖ້າທ່ານຕ້ອງການເພີ່ມການອະນຸຍາດໃຫມ່, ທ່ານບໍ່ສາມາດເລືອກ 543 ຖ້າທ່ານມີ 512 ແລ້ວ - ມັນຈະຕ້ອງມີ 1024. ນີ້ຈະໄດ້ຮັບຄວາມສັບສົນຫຼາຍຍ້ອນວ່າຕົວເລກຈະໃຫຍ່ຂຶ້ນ.
- ນັບຕັ້ງແຕ່ຄອມພິວເຕີຂອງພວກເຮົາກໍາລັງໃຊ້ລະບົບປະຕິບັດການ 64bit ໃນ CPU 64 bit (ສ່ວນຫຼາຍແມ່ນບາງຄົນກໍ່ຕິດຢູ່ໃນ 32bit ຍັງ!) ຊຶ່ງຫມາຍຄວາມວ່າມີຈໍານວນ 64 bit ເທົ່ານັ້ນ. ສິ່ງນີ້ຫມາຍຄວາມວ່າທ່ານພຽງແຕ່ສາມາດເກັບຮັກສາ permutations ຂອງການອະນຸຍາດສູງສຸດ 64 ໃນຜູ້ໃຊ້ໃດຫນຶ່ງ. ສໍາລັບສະຖານທີ່ຂະຫນາດນ້ອຍ - ຂະຫນາດກາງນີ້ແມ່ນຂ້ອນຂ້າງພຽງພໍ, ແຕ່ໃນເວັບໄຊທ໌ອັນໃຫຍ່ຫຼວງ, ນີ້ສາມາດກາຍເປັນບັນຫາ. ການແກ້ໄຂແມ່ນມີການນໍາໃຊ້ຄໍລໍາຕ່າງໆສໍາລັບສະພາບການອະນຸຍາດທີ່ແຕກຕ່າງກັນ (
draft_permissions
, account_permissions
, ແລະອື່ນໆ). ແຕ່ລະຄໍລໍາເຫຼົ່ານັ້ນສາມາດມີ permutations ຂອງ 64 ສິດໃນຕົວຂອງມັນເອງ, ເຊິ່ງແມ່ນພຽງພໍສໍາລັບເວັບໄຊທ໌ທີ່ຕ້ອງການທີ່ສຸດ.
ສະຫຼຸບ
ການດໍາເນີນງານໃນທາງບິດແນ່ນອນຍັງມີສະຖານທີ່ໃນການຂຽນໂປຼແກຼມທີ່ທັນສະໄຫມ. ໃນເວລາທີ່ບົດຂຽນຂອງທ່ານຄິດວ່າທ່ານມີຄວາມຮູ້ສຶກແນວໃດກ່ຽວກັບເລື່ອງນີ້, ຂະຫນາດ (ຂໍ້ມູນນ້ອຍໆທີ່ຈະເກັບຢູ່ໃນຖານຂໍ້ມູນ, ແລະຫຼັງຈາກນັ້ນ fetch) ແລະຄວາມໄວ (ຈຸດປະສົງຂອງຜູ້ໃຊ້ສາມາດມີຄ່າການອະນຸຍາດຂອງພວກເຂົາກ່ອນການຄົ້ນຫາ - ມັນເປັນພຽງແຕ່ int - ແລະດັ່ງນັ້ນຈຶ່ງສາມາດກວດສອບໄດ້ຕະຫຼອດເວລາ).
ການຂັດແຍ້ງທີ່ຜູ້ນໍາສະເຫນີຢູ່ທີ່ນີ້ກໍ່ເຮັດໃຫ້ສິ່ງທີ່ງ່າຍດາຍ, ແຕ່ວ່າຖ້າຫາກທ່ານບໍ່ຮູ້ກ່ຽວກັບທາງເລືອກທີ່ງ່າຍດາຍເຊັ່ນ: ສິ່ງທີ່ສະແດງໃຫ້ເຫັນຂ້າງເທິງ.
ທ່ານມີຄວາມຮູ້ສຶກແນວໃດກ່ຽວກັບການນໍາໃຊ້ຜູ້ປະຕິບັດ bitwise ສໍາລັບການກວດສອບສິດແລະວິທີການເກັບຮັກສາມັນ? ທຸກຢ່າງທີ່ເຫັນໄດ້ຊັດເຈນ / cons? ໃຫ້ພວກເຮົາຮູ້ວິທີທີ່ທ່ານເຮັດມັນ, ແລະເປັນຫຍັງ!
Bruno ແມ່ນໂຄ້ດຈາກປະເທດໂຄຣເອເຊຍທີ່ມີປະລິນຍາໂທໃນວິທະຍາສາດຄອມພິວເຕີແລະພາສາອັງກິດແລະວັນນະຄະດີ. ລາວດໍາເນີນການທຸລະກິດ cryptocurrency ທີ່ Bitfalls. com ໂດຍຜ່ານການທີ່ລາວໄດ້ເຮັດທຸລະກິດ crypto ແລະເຮັດໃຫ້ blockchain ເຕັກນິກທີ່ເຫມາະສົມກັບມະຫາຊົນ. ລາວຍັງເປັນບັນນາທິການສໍາລັບ SitePoint, ແລະຜູ້ເຜີຍແຜ່ຂ່າວສານສໍາລັບນັກພັດທະນາຂອງ Diffbot Source . com