首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Rust语言学习交流

    【Rust日报】2022-12-04 比较 u64 与比较字符串的性能

    比较 u64 与比较字符串的性能 出于好奇,我正在查看本周发布在这里的一个库的源代码,我注意到短字符串被转换为u64,如下所示 let mut key: u64 = 0; let =b'Z' if shift < 64 => { key |= ((ch - b'A' + b'a') as u64) << shift; ::MAX; shift = 64; } } } 然后作为整数进行比较: pub(crate) const A: u64 = b'a' as u64; pub(crate) const B: u64 = b'b' as u64; pub(crate) const BH: u64 = (b'b' as u64) | ((b'h ' as u64) << 8); match key { A => { // do something for A }

    62510编辑于 2023-02-10
  • 来自专栏申龙斌的程序人生

    通过欧拉计划学Rust编程(第650题)

    {}", va, vb, index); va.remove(index); } } fn comb_factors(m: u64, n: u64) -> Vec<u64> { , u64>, a: &HashMap<u64, u64>, times: u64) { for (f, count) in a { let v = map.get(f).cloned , u64>, a: &HashMap<u64, u64>, times: u64) { for (f, count) in a { let v = map.get(f).cloned , u64>, a: &HashMap<u64, u64>, times: u64) { for (f, count) in a { let v = map.get(f).cloned , u64>, a: &HashMap<u64, u64>, times: u64) { for (f, count) in a { let v = map.get(f).cloned

    96610发布于 2020-02-17
  • 来自专栏c语言与cpp编程

    深入探究C++虚函数表——从内存的角度

    typedef long long u64; typedef void(*func)(); A a; u64* p = (u64*)&a; 然后我们再 u64* arr = (u64*)*p; ; typedef void(*func)(); A a; u64* p = (u64*)&a; u64* arr = (u64*)*p; func * p = (u64*)&b; u64* arr = (u64*)*p; func fa = (func)arr[0]; func fb = (func)arr[1]; func fc = (func) arr[2]; fa(); fb(); fc(); 输出 A a() B b() A c() 我们来对比下二者的虚函数的指向 A a; u64* pa = (u64*)&a; u64* arra = (u64*)*pa; B b; u64* pb = (u64*)&b; u64* arrb = (u64*)*pb; for (int i = 0; i < 3; i++) { cout <<

    61320编辑于 2023-04-30
  • 来自专栏Rust语言学习交流

    【连载】两百行Rust代码解析绿色线程原理(五)附录:支持 Windows

    , r15: u64, r14: u64, r13: u64, r12: u64, rbx: u64, rbp: u64, rdi: u64, , r15: u64, r14: u64, r13: u64, r12: u64, rbx: u64, rbp: u64, rdi: u64, , r15: u64, r14: u64, r13: u64, r12: u64, rbx: u64, rbp: u64, rdi: u64, , r15: u64, r14: u64, r13: u64, r12: u64, rbx: u64, rbp: u64, } impl Thread , r15: u64, r14: u64, r13: u64, r12: u64, rbx: u64, rbp: u64, rdi: u64,

    81220发布于 2020-02-12
  • 来自专栏申龙斌的程序人生

    用欧拉计划学Rust编程(第92题)

    解题思路: 1)各位数字的平方和 fn square_sum(n: u64) -> u64 { n.to_string() .chars() .map(|x| x.to_digit (10).unwrap().pow(2) as u64) .sum::<u64>() } 可以用整数运算提高效率。 fn square_sum(n: u64) -> u64 { let mut m = n; let mut s = 0; while m ! ("{}", count); } fn square_chain_arrive(n: u64) -> u64 { let mut x = n; while x != 1 && x !

    53020发布于 2019-10-08
  • 来自专栏DPDK VPP源码分析

    learning:vet/classify(1)

    [0] = (data64[0 + skip_u64] & ((u64 *) mask)[0]) ^ ((u64 *) key)[0]; result.as_u64[1] = (data64[1 + skip_u64] & ((u64 *) mask)[1]) ^ ((u64 *) key)[1]; switch (t->match_n_vectors) { case 5: result.as_u64[0] |= (data64[8 + skip_u64] & ((u64 *) mask)[8]) ^ ((u64 *) key)[8]; result.as_u64[1] |= (data64[9 + skip_u64] & ((u64 *) mask)[9]) ^ ((u64 *) key *) mask)[6]) ^ ((u64 *) key)[6]; result.as_u64[1] |= (data64[7 + skip_u64] & ((u64 *)

    1.1K10编辑于 2023-03-07
  • 来自专栏Serverless+

    使用 BPF 进行 HTTPS 抓包 —— 以 Golang 和 cURL 为例

    BPF_PERF_OUTPUT(trace); inline int crack_https(struct pt_regs *ctx) { u8 buf[256] = {0}; u64 * addr = (u64*)ctx->sp; u64 val = 0; bpf_probe_read(&val, sizeof(val), addr + 2); if (val return 0; } val = 0; bpf_probe_read(&val, sizeof(val), addr + 3); addr = (u64 val = 0; // Curl_send_buffer** u64* addr = (u64*)ctx->di; // Curl_send_buffer* bpf_probe_read (val), addr); addr = (u64*)val; // Curl_send_buffer.buffer bpf_probe_read(buf, sizeof(buf

    3.2K110发布于 2021-02-25
  • 来自专栏Rust语言学习交流

    【Rust每周一库】sled - 嵌入式数据库

    tree.flush(); 处理结构体 use { byteorder::{BigEndian, LittleEndian}, zerocopy::{ byteorder::U64 , AsBytes, FromBytes, LayoutVerified, Unaligned, }, }; // 键结构体 // zerocopy::byteorder::U64保证了数据对齐问题 #[derive(FromBytes, AsBytes, Unaligned)] #[repr(C)] struct Key { a: U64<BigEndian>, b: U64<BigEndian >, } // 值结构体 #[derive(FromBytes, AsBytes, Unaligned)] #[repr(C)] struct Value { count: U64<LittleEndian >, whatever: [u8; 16], } let key = Key { a: U64::new(21), b: U64::new(890) }; // 取得键所对应的值,并对其施加给定函数灿做

    2.1K30发布于 2020-06-04
  • 来自专栏深入浅出区块链技术

    6.MOVE从入门到实战-简单的ERC20

    be approved by the module owner. public fun mint(module_owner: &signer, mint_addr: address, amount: u64 acquires Balance { ... } /// Returns the balance of `owner`. public fun balance_of(owner: address): u64 = 0; const EINSUFFICIENT_BALANCE: u64 = 1; const EALREADY_HAS_BALANCE: u64 = 2; const ACCOUNT_INITIALIZED : u64 = 3; struct Coin has store { value: u64 } /// Struct representing the balance public fun mint(module_owner: &signer, mint_addr: address, amount: u64) acquires Balance { // Only

    56830编辑于 2022-11-07
  • 来自专栏Rust语言学习交流

    【每周一库】- cached - 缓存结构型、辅助函数记忆化

    的缓存 /// 默认情况下,缓存的名称与函数相同,但用全大写字母命名 /// 下一行代码与#[cached(name = "FIB", unbound)]效果相同 #[cached] fn fib(n: u64 ) -> u64 { if n == 0 || n == 1 { return n } fib(n-1) + fib(n-2) } use std::thread::sleep; use { FIB; fn fib(n: u64) -> u64 = { if n == 0 || n == 1 { return n } fib(n-1) + { COMPUTE: SizedCache<(u64, u64), u64> = SizedCache::with_size(50); fn compute(a: u64, b: u64 { MULT: UnboundCache<(u64, u64), u64> = UnboundCache::new(); // 类型必须被指定 fn mult(a: u64, b: u64)

    53430发布于 2020-09-15
  • 来自专栏Rust语言学习交流

    通过欧拉计划学习Rust编程(第13~16题)

    fn collatz_len(x: u64) -> u64 { if x == 1 { return 1; } let y; if x % 2 == 0 { y fn collatz_len(x: u64) -> u64 { if x == 1 { return 1; } let y = if x % 2 == 0 { x / 2 } else ("{}", path_fast(&mut v, 20, 20)); } fn path_fast(v: &mut Vec<u64>, m: usize, n: usize) -> u64 { let mut prod = BigUint::from(1 as u64); for _i in 0..1000 { prod *= BigUint::from(2 as u64); } let let pow2_1000 = (0..1000).fold(BigUint::from(1 as u64), |p, _a| p*BigUint::from(2 as u64)); println!

    71210发布于 2019-09-24
  • 来自专栏云云众生s

    如何利用eBPF程序监控Kubernetes

    #include <linux/bpf.h> #include <linux/if_ether.h> #include <linux/ip.h> BPF_TABLE("hash", u64u64, packet_count, 256); int count_packets(struct __sk_buff *skb) { u64 *value; u64 key = 0; struct #include <linux/bpf.h> #include <linux/perf_event.h> #include <linux/sched.h> BPF_HASH(pod_cpu, u64, u64); BPF_HASH(pod_memory, u64, u64); TRACEPOINT_PROBE(sched, sched_process_exit) { u64 pid = bpf_get_current_pid_tgid (); u64 cpu_usage = bpf_perf_counter_value(pod_cpu, &pid); u64 memory_usage = bpf_perf_counter_value

    55310编辑于 2024-03-28
  • 来自专栏申龙斌的程序人生

    通过欧拉计划学习Rust编程(第13~16题)

    fn collatz_len(x: u64) -> u64 { if x == 1 { return 1; } let y; if x % 2 == 0 { y fn collatz_len(x: u64) -> u64 { if x == 1 { return 1; } let y = if x % 2 == 0 { x / 2 } else { ("{}", path_fast(&mut v, 20, 20)); } fn path_fast(v: &mut Vec<u64>, m: usize, n: usize) -> u64 { let mut prod = BigUint::from(1 as u64); for _i in 0..1000 { prod *= BigUint::from(2 as u64); } let let pow2_1000 = (0..1000).fold(BigUint::from(1 as u64), |p, _a| p*BigUint::from(2 as u64)); println!

    1K10发布于 2019-08-22
  • 来自专栏大数据互联网思维

    使用 BPF 进行 HTTPS 抓包 —— 以 Golang 和 cURL 为例

    BPF_PERF_OUTPUT(trace); inline int crack_https(struct pt_regs *ctx) { u8 buf[256] = {0}; u64 * addr = (u64*)ctx->sp; u64 val = 0; bpf_probe_read(&val, sizeof(val), addr + 2); if (val return 0; } val = 0; bpf_probe_read(&val, sizeof(val), addr + 3); addr = (u64 val = 0; // Curl_send_buffer** u64* addr = (u64*)ctx->di; // Curl_send_buffer* bpf_probe_read (val), addr); addr = (u64*)val; // Curl_send_buffer.buffer bpf_probe_read(buf, sizeof(buf

    1.6K20发布于 2021-03-01
  • 来自专栏深入浅出区块链技术

    5.MOVE从入门到实战-发布新模块

    新建模块 // sources/Test.move module 0x2::Test { use std::signer; struct Resource has key { i: u64 signer) { move_to(account, Resource { i: 10 }) } public fun write(account: &signer, i: u64 ) { B0: 0: MoveLoc[1](Arg1: u64 "1") 1: MoveLoc[0](Arg0: &signer "0") 2: Call "3"): address) 3: MutBorrowGlobal[0](Resource "0") 4: MutBorrowField[0](Resource.i: u64 ) { B0: 0: MoveLoc[1](i: u64 "1") 1: MoveLoc[0](account: &signer "0") 2: Call

    47220编辑于 2022-11-07
  • 来自专栏CSDNToQQCode

    Rust专项——算法专项:斐波那契数列——递归实现与优化

    生成斐波那契数列(迭代器风格) 使用 Rust 迭代器生成无限序列: struct Fibonacci { prev: u64, curr: u64, } impl Iterator fn fibonacci(n: u32) -> u64 { /* ... */ } 错误2:负数输入 // ❌ 错误:未处理负数 fn fibonacci(n: i32) -> u64 { /* .. HashMap fn fibonacci_memo(n: u32, memo: HashMap<u32, u64>) -> u64 { /* ... */ } // ✅ 修复:使用可变引用 fn fibonacci_memo (n: u32, memo: &mut HashMap<u32, u64>) -> u64 { /* ... */ } 10. else { n as u64 * factorial(n - 1) } } // 迭代版本 fn factorial_iter(n: u32) -> u64 { (1

    21110编辑于 2025-12-16
  • 来自专栏申龙斌的程序人生

    通过欧拉计划学Rust编程(第684题)

    fn fs(n: u64) -> u64 { let a = n % 9; let b = n / 9; let mut s = BigUint::from(a + 1); , start.elapsed()); } fn ten_power_mod(n: u64) -> u64 { let m = n % (PRIME - 1); ARRAY[m as usize] } fn fs(n: u64) -> u64 { let a = n % 9; let b = n / 9; let s = (a + 1) * ten_power_mod (b) - 1; s % PRIME } fn sum_group(m: u64) -> u64 { let temp = (9 * m) % PRIME; let s = 5 * ten_power_mod(m) + PRIME - temp - 5; s % PRIME } fn fss(n: u64) -> u64 { let m = n / 9;

    68120发布于 2020-01-15
  • 来自专栏全栈程序员必看

    sched.h (版本4.16.7全部内容)

    wait_start; u64 wait_max; u64 wait_count; u64 wait_sum ; u64 iowait_count; u64 iowait_sum; u64 sleep_start; u64 u64 exec_max; u64 slice_max; u64 nr_migrations_cold; u64 ; u64 nr_forced_migrations; u64 nr_wakeups; u64 nr_wakeups_sync; exec_start; u64 sum_exec_runtime; u64 vruntime; u64

    58630编辑于 2022-11-03
  • 来自专栏区块链大本营

    Libra硬刚微信、支付宝? 你也试试!

    12 return T{value: 0}; 13 } 14 15 // 返回 Token的值 16 public value(token_ref: &R#Self.T): u64 // 返回交易发起者的Token 余额. 33 public balance(): u64 {} 34 35 // 将 `to_deposit` 的token 存入 the `payee`\ ): R#Self.T {} 38 // 将Token从交易发起者转到收款人 39 public transfer(payee: address, amount: u64) {} 40} a 19public balance(): u64 { 20 let sender: address; 21 let balance_val: u64; 22 sender = get_txn_sender 因此整个 transfer 函数如下: 1public transfer(payee: address, amount: u64) { 2 let to_pay: &mut R#Self.T;

    60210发布于 2019-07-23
  • 来自专栏申龙斌的程序人生

    用欧拉计划学习Rust编程(第40~45题)

    let mut penta: Vec<u64> = vec! fn is_penta(p: u64) -> bool { let t = ((1 + 24 * p) as f64).sqrt() as u64; // sqrt(b*b - 4*a*c) let mut min_d = std::u64::MAX; // 改为2.. let mut tri: Vec<u64> = vec! []; for i in 1..100000 { tri.push(i * (i + 1) / 2); } let mut penta: Vec<u64> = vec!

    1.1K20发布于 2019-09-29
领券