• 关于

    PU怎么用

    的搜索结果

回答

一个函数的调用开销抵得上上千个CPU指令周期!! 我们写普通应用时应该以可读性为主,仅在必要的时候才进行性能优化。但这种非常low-level的代码必须严格对待效率问题。所以这个问题用宏来实现是最好的方式。 相比if语句,用宏+查表法实现可能第一次执行会比if语句慢,因为要把整张表加载到高速缓存,但之后的每一次调用都将比if语句快,更比函数方式快N倍。 补充回答 首先,“查表查表”,指的是什么样的一张表呢?是这么一张表: static const short ctype_tab[257] = { 0, / EOF / _BB, _BB, _BB, _BB, _BB, _BB, _BB, _BB, _BB, _CN, _CN, _CN, _CN, _CN, _BB, _BB, _BB, _BB, _BB, _BB, _BB, _BB, _BB, _BB, _BB, _BB, _BB, _BB, _BB, _BB, _BB, _BB, _SP, _PU, _PU, _PU, _PU, _PU, _PU, _PU, _PU, _PU, _PU, _PU, _PU, _PU, _PU, _PU, XDI, XDI, XDI, XDI, XDI, XDI, XDI, XDI, XDI, XDI, _PU, _PU, _PU, _PU, _PU, _PU, _PU, XUP, XUP, XUP, XUP, XUP, XUP, _UP, _UP, _UP, _UP, _UP, _UP, _UP, _UP, _UP, _UP, _UP, _UP, _UP, _UP, _UP, _UP, _UP, _UP, _UP, _UP, _PU, _PU, _PU, _PU, _PU, _PU, XLO, XLO, XLO, XLO, XLO, XLO, _LO, _LO, _LO, _LO, _LO, _LO, _LO, _LO, _LO, _LO, _LO, _LO, _LO, _LO, _LO, _LO, _LO, _LO, _LO, _LO, _PU, _PU, _PU, _PU, _BB, };此数组长度257,实际只初始化了前面129个元素。但是实际用来判断的_Ctype是截取了该数组的后面256个元素: const short *_Ctype = &ctype_tab[1];忽略掉那个EOF的0,注意看上面的128个元素。这实际上是对整个ASCII表进行了归类。比如_LO表示小写字母,_UP表示大写字母,_DI表示数字,这些宏常量都已经在前面定义了的。注意对于数字,他并不是用的_DI,而是XDI,这代表这些数字同时代表十进制数字+十六进制数字,同理,字母中的A-F和a-f也不是_UP或_LO而是XUP和XLO,表示它们即是字母又是十六进制数字。 这样分类之后,它又是怎么判断一个字符的属性的呢?主要的技巧是每个类别的常量之间是互斥的,把它们的值转成二进制以后,每个常量的1的位置是不同的。例如_LO的值是0x10,二进制是1 0000,1在右数第五位,而其他的几个常量中的1全部与它不同,不信你可以自己验证一下(几个组合常量除外)。 实际上,它是从_XD(代表十六进制数字的常量)到_XA(代表编码超过128的那些ASCII超集字符),每个常量都是前一个的2倍。2倍在二进制中相当于把1向左挪动了一位,这样每一个常量中的1就错开了。 这种技巧在编程中有一个专门的名字:掩码,英文名字是Mask,它除了可以判断一个值是不是某个我期望的值之外,还能很容易地进行组合判断。比如g是小写字母,而a不仅是小写字母,还是一个十六进制数字。 判断的时候,只要把实际值与预先定义的掩码进行与操作,然后判断结果是否不为0即可。 例如,你拿到一个小写字母g,它在该表中对应的值是_LO即0x10,二进制为1 0000,(请自行对照着ASCII码表来看),此时把它与_LO相与,即10000 & 10000,由于第五位都是1,所以结果不为0,表示它是一个小写字母。 如果你拿到的不是一个小写字母,例如是大写字母G,它在该表中对应的值是_UP即0x02(二进制10),此时把它与_LO相与,即10 & 10000,结果为0,表示它不是一个小写字母。其他同理。 如果你拿到一个具有组合属性的字符,例如a,它在表中对应的值是XLO,这是一个由_XD和_LO进行或操作得到的组合值,即10 | 10000,得到的结果为10010,也就是十六进制的0x12。多个掩码之间进行或操作就相当于为它们赋予了多重属性,因为它们的二进制上有多个位置同时为1,这样它们就可以在多种判断中返回不为0的结果。以a为例,它与_LO进行与操作时结果不为0,表示它是一个小写字母,同时它与_XD进行与操作时结果也不为0,因此它也是一个十六进制数字。 基本原理就是这样。掩码其实很常见,比如对IP地址的网段的判断(子网掩码)、Windows的GDI编程中为画刷设置属性、某些系统中对角色权限的判断,等等。 最后,对于你的为什么要使用十六进制来定义的疑惑,实际上是为了清晰,一看就知道这些定义的是掩码。如果用二进制则太长,用十进制则不够直观(别忘了我们是程序员,天生对十六进制更加敏感)。

a123456678 2019-12-02 02:41:25 0 浏览量 回答数 0

回答

Reisv获取授权企业信息提示:41031 搞毛啊!不管怎么编辑,发出来就都没有图了 ------------------------- Reisv获取授权企业信息提示:41031 能私聊吗? ------------------------- Reisv获取授权企业信息提示:41031 之前测试用好的,我们的几个测试公司信息也都正常拿到了,今天在优化时,却报错了。不会和临时授权码一样,成功一次后就再也不给了吧! ------------------------- Reisv获取授权企业信息提示:41031 我用了另一个测试公司的auth_corpid和permanent_code尝试获取可以拿到信息,但就是昨天的那个不行仍然报错: com.alibaba.dingtalk.openapi.demo.OApiException: error code: 41031, error message: auth_corpid和permanent_code不匹配 {"errcode":41031,"errmsg":"auth_corpid和permanent_code不匹配"},同样的auth_corpid和permanent_code我确可以获取到公司的access_token,目前只能先忽略这个问题,先整其他的。 以下是我去除大量堆栈错误后的报错信息: get_auth_info args is:{"auth_corpid":"ding043af38159c80beb","suite_key":"suitedqrsirbgphjxunou","permanent_code":"k5pU6yDYQD67SettNaPK8hvqXBS0w2iqc8ztgucBp6ydxOLng6OSpgYCgxrue7Z2"} request url=https://oapi.dingtalk.com/service/get_auth_info?suite_access_token=142cd9933bf53a4f92ccfd0341cc986b,return value= com.alibaba.dingtalk.openapi.demo.OApiException: error code: 41031, error message: auth_corpid和permanent_code不匹配 {"errcode":41031,"errmsg":"auth_corpid和permanent_code不匹配"}      ++++++++++++++++++++++++++++++++++++++++++++++     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) ++++++++++++++++++获取企业access——token+++++++++++++++++++++     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) ++++++++++++++++++++++++++++++++++++++++++++++      corpToken is :{"auth_corpid":"ding043af38159c80beb","permanent_code":"k5pU6yDYQD67SettNaPK8hvqXBS0w2iqc8ztgucBp6ydxOLng6OSpgYCgxrue7Z2"}      获取到的token为:0ecfd01eb85f376aa277ebe84548f1a7 ------------------------- Reisv获取授权企业信息提示:41031 这个测试公司之前添加过其他微应用,后来把那个删了,重修添加了目前的微应用(方便从头开始进行系统性测试),不清楚和这个有没有关系。目前问题依然存在。 ------------------------- Reisv获取授权企业信息提示:41031 在新改版的开发者平台中可以测试了,已不存在上面的问题,谢谢!

lifeyoyo 2019-12-02 01:19:55 0 浏览量 回答数 0

回答

动过/etc/environment? ######装jdk的时候,自己配置,动了 /etc/environment,就会出现这个问题,以前我也经常被这个问题弄了###### 肯定是某个配置文件大意了~ 也许是bashrc啊也许是profile啊也许是bashprofile啊什么的涉及到登陆后载入的用户个性配置(~/.xxxx)或者是登陆后用户的总配置(/etc/xxxx) 可能你少了个分号什么的大意原因结果挂了。 尝试进入文字界面终端:Ctrl+Alt+F1~F7,如果进不去那就证明可能真是用户配置文件了 那就只有在grub里选恢复模式 或者直接在grub启动init 3 / bash 等等干净的进入文字系统 检查之前改的总配置文件和用户个性配置文件 如果总文件没问题又确定不了用户个性启动配置文件的问题所在,那就干脆放弃这个用户,重建一个用户。 ---- 其实在使用linux之初,应该建立几个用户以备不同需要,同时尽量不去动总配置文件,因为几乎所有的软件和系统相关配置都可以相对于用户去个性配置。。。这样即使出错也能快速定位甚至嫌麻烦直接舍弃某个被自己搞死的账号。O(∩_∩)O ######啊,越发觉得英语的世界里资料尤其丰富得多——而且,也更加钦佩 Google了,这是我所找到的与自己的问题相同的问题,只不过,我这里是由于改环境变量时少了个在$号,而导致整个环境变量完全没有了, after 12.04 upgrade: can't log in although password is correct 不过,至少我记起了ctl+alt+F1等操作 ###### 引用来自“明月照大江”的答案 装jdk的时候,自己配置,动了 /etc/environment,就会出现这个问题,以前我也经常被这个问题弄了 嗯,动过/etc/profile,里面的path设置动过,问题原因是找到了,但是怎么解决这个问题呢? ###### 引用来自“hdzw_Rock”的答案 肯定是某个配置文件大意了~ 也许是bashrc啊也许是profile啊也许是bashprofile啊什么的涉及到登陆后载入的用户个性配置(~/.xxxx)或者是登陆后用户的总配置(/etc/xxxx) 可能你少了个分号什么的大意原因结果挂了。 尝试进入文字界面终端:Ctrl+Alt+F1~F7,如果进不去那就证明可能真是用户配置文件了 那就只有在grub里选恢复模式 或者直接在grub启动init 3 / bash 等等干净的进入文字系统 检查之前改的总配置文件和用户个性配置文件 如果总文件没问题又确定不了用户个性启动配置文件的问题所在,那就干脆放弃这个用户,重建一个用户。 ---- 其实在使用linux之初,应该建立几个用户以备不同需要,同时尽量不去动总配置文件,因为几乎所有的软件和系统相关配置都可以相对于用户去个性配置。。。这样即使出错也能快速定位甚至嫌麻烦直接舍弃某个被自己搞死的账号。O(∩_∩)O 是的,后来在英文网站里找到相同问题及其解决方法,可惜的是:当我改为原来的PATH环境后,重启,还是进不去,采用虚拟终端进去后,发现环境变量又恢复为其默认的错误PATH环境! ######http://forum.ubuntu.org.cn/viewtopic.php?t=377149######http://m.baidu.com/bd_page_type=1/pu=sz%401320%5F1001%2Cusm%400%2Cta%40iphone%5F2%5F2%2E3%5F3%5F533/uid=C2875365951B482C9053DF9A09989B0A/t=iphone/w=0_10_%E5%AE%8C%E7%BE%8E%E8%A7%A3%E5%86%B3+ubuntu+%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E5%90%8E%E4%B8%8D%E8%83%BD%E7%99%BB+%E5%BD%95/ssid=0/from=844b/l=3/tc?pn=15&m=8&sec=24976&di=a40ffd9d1a694f45&src=hi%2Ebaidu%2Ecom%2F%25B2%25A9%25B2%25C5anan%2Fblog%2Fitem%2F720356dd1052cbaecd1166c6%2Ehtml######用12.04安装java的时候遇到过这个问题,也是由于将环境变量配置在 /etc/envirenment造成的,换个地方配置就可以了######ssh远程登录修改 /etc/envirenment或者用ubuntu 光盘用live模式进入修改/etc/envirenment

kun坤 2020-06-06 14:55:01 0 浏览量 回答数 0

阿里云试用中心,为您提供0门槛上云实践机会!

0元试用32+款产品,最高免费12个月!拨打95187-1,咨询专业上云建议!

回答

PHP利用ICU扩展intl快速实现汉字转拼音 ICU只能处理Unicode编码,所以你可以把GB2312转成UTF-8后再进行操作,比如:   <?php //文件编码为gb2312 header('Content-Type: text/html; charset=gb2312'); echo transliterator_transliterate( 'Any-Latin; Latin-ASCII; Lower()', mb_convert_encoding('魅蓝', 'UTF-8', 'GB2312') ); //输出mei lan  ######回复 @亿智蘑菇 : ICU转换对多音字而言不保证绝对正确,这点需要注意.######回复 @亿智蘑菇 : 不想要空格,用str_replace替换掉就好了,何必纠结呢?######转换结果是正确的######你好!我刚才尝试了一下这个方法,然后输出的内容中有空格,请问能否直接修改他转换的结果,让这个方法不返回带空格的吗? 只能用替换的方式去除空格吗?######你转换的方法可能有问题,方法要可以转换字符串###### 努力提高自身基础,勿盲目轻信网上所谓帖子,一切以实际情况为准,还有就是你这提的也真是够可以的,“魅蓝”两字转拼音,成功了lan,发生这问题具体中间环节怎么样都不说明(也不知道是用了什么第三方类库或者什么软件),不是行家,真很难给你答复###### class gbpinyin{ public static function utf8_to($s, $isfirst = false) { return self::to($s, $isfirst); } // 字符串必须为GB2312编码 public static function to($s, $isfirst = false) { $res = ''; $len = strlen($s); $pinyin_arr = self::get_pinyin_array(); for($i=0; $i<$len; $i++) { $ascii = ord($s{$i}); if($ascii > 0x80) { $ascii2 = ord($s{++$i}); $ascii = $ascii * 256 + $ascii2 - 65536; } if($ascii < 255 && $ascii > 0) { if(($ascii >= 48 && $ascii <= 57) || ($ascii >= 97 && $ascii <= 122)) { $res .= $s{$i}; // 0-9 a-z }elseif($ascii >= 65 && $ascii <= 90) { $res .= strtolower($s{$i}); // A-Z }else{ $res .= '_'; } }elseif($ascii < -20319 || $ascii > -10247) { $res .= '_'; }else{ foreach($pinyin_arr as $py=>$asc) { if($asc <= $ascii) { $res .= $isfirst ? $py{0} : $py; break; } } } } return $res; } public static function to_first($s) { $ascii = ord($s{0}); if($ascii > 0xE0) { $s = self::utf8_to_gb2312($s{0}.$s{1}.$s{2}); }elseif($ascii < 0x80) { if($ascii >= 65 && $ascii <= 90) { return strtolower($s{0}); }elseif($ascii >= 97 && $ascii <= 122) { return $s{0}; }else{ return false; } } if(strlen($s) < 2) { return false; } $asc = ord($s{0}) * 256 + ord($s{1}) - 65536; if($asc>=-20319 && $asc<=-20284) return 'a'; if($asc>=-20283 && $asc<=-19776) return 'b'; if($asc>=-19775 && $asc<=-19219) return 'c'; if($asc>=-19218 && $asc<=-18711) return 'd'; if($asc>=-18710 && $asc<=-18527) return 'e'; if($asc>=-18526 && $asc<=-18240) return 'f'; if($asc>=-18239 && $asc<=-17923) return 'g'; if($asc>=-17922 && $asc<=-17418) return 'h'; if($asc>=-17417 && $asc<=-16475) return 'j'; if($asc>=-16474 && $asc<=-16213) return 'k'; if($asc>=-16212 && $asc<=-15641) return 'l'; if($asc>=-15640 && $asc<=-15166) return 'm'; if($asc>=-15165 && $asc<=-14923) return 'n'; if($asc>=-14922 && $asc<=-14915) return 'o'; if($asc>=-14914 && $asc<=-14631) return 'p'; if($asc>=-14630 && $asc<=-14150) return 'q'; if($asc>=-14149 && $asc<=-14091) return 'r'; if($asc>=-14090 && $asc<=-13319) return 's'; if($asc>=-13318 && $asc<=-12839) return 't'; if($asc>=-12838 && $asc<=-12557) return 'w'; if($asc>=-12556 && $asc<=-11848) return 'x'; if($asc>=-11847 && $asc<=-11056) return 'y'; if($asc>=-11055 && $asc<=-10247) return 'z'; return false; } public static function get_pinyin_array() { static $py_arr; if(isset($py_arr)) return $py_arr; $k = 'a|ai|an|ang|ao|ba|bai|ban|bang|bao|bei|ben|beng|bi|bian|biao|bie|bin|bing|bo|bu|ca|cai|can|cang|cao|ce|ceng|cha|chai|chan|chang|chao|che|chen|cheng|chi|chong|chou|chu|chuai|chuan|chuang|chui|chun|chuo|ci|cong|cou|cu|cuan|cui|cun|cuo|da|dai|dan|dang|dao|de|deng|di|dian|diao|die|ding|diu|dong|dou|du|duan|dui|dun|duo|e|en|er|fa|fan|fang|fei|fen|feng|fo|fou|fu|ga|gai|gan|gang|gao|ge|gei|gen|geng|gong|gou|gu|gua|guai|guan|guang|gui|gun|guo|ha|hai|han|hang|hao|he|hei|hen|heng|hong|hou|hu|hua|huai|huan|huang|hui|hun|huo|ji|jia|jian|jiang|jiao|jie|jin|jing|jiong|jiu|ju|juan|jue|jun|ka|kai|kan|kang|kao|ke|ken|keng|kong|kou|ku|kua|kuai|kuan|kuang|kui|kun|kuo|la|lai|lan|lang|lao|le|lei|leng|li|lia|lian|liang|liao|lie|lin|ling|liu|long|lou|lu|lv|luan|lue|lun|luo|ma|mai|man|mang|mao|me|mei|men|meng|mi|mian|miao|mie|min|ming|miu|mo|mou|mu|na|nai|nan|nang|nao|ne|nei|nen|neng|ni|nian|niang|niao|nie|nin|ning|niu|nong|nu|nv|nuan|nue|nuo|o|ou|pa|pai|pan|pang|pao|pei|pen|peng|pi|pian|piao|pie|pin|ping|po|pu|qi|qia|qian|qiang|qiao|qie|qin|qing|qiong|qiu|qu|quan|que|qun|ran|rang|rao|re|ren|reng|ri|rong|rou|ru|ruan|rui|run|ruo|sa|sai|san|sang|sao|se|sen|seng|sha|shai|shan|shang|shao|she|shen|sheng|shi|shou|shu|shua|shuai|shuan|shuang|shui|shun|shuo|si|song|sou|su|suan|sui|sun|suo|ta|tai|tan|tang|tao|te|teng|ti|tian|tiao|tie|ting|tong|tou|tu|tuan|tui|tun|tuo|wa|wai|wan|wang|wei|wen|weng|wo|wu|xi|xia|xian|xiang|xiao|xie|xin|xing|xiong|xiu|xu|xuan|xue|xun|ya|yan|yang|yao|ye|yi|yin|ying|yo|yong|you|yu|yuan|yue|yun|za|zai|zan|zang|zao|ze|zei|zen|zeng|zha|zhai|zhan|zhang|zhao|zhe|zhen|zheng|zhi|zhong|zhou|zhu|zhua|zhuai|zhuan|zhuang|zhui|zhun|zhuo|zi|zong|zou|zu|zuan|zui|zun|zuo'; $v = '-20319|-20317|-20304|-20295|-20292|-20283|-20265|-20257|-20242|-20230|-20051|-20036|-20032|-20026|-20002|-19990|-19986|-19982|-19976|-19805|-19784|-19775|-19774|-19763|-19756|-19751|-19746|-19741|-19739|-19728|-19725|-19715|-19540|-19531|-19525|-19515|-19500|-19484|-19479|-19467|-19289|-19288|-19281|-19275|-19270|-19263|-19261|-19249|-19243|-19242|-19238|-19235|-19227|-19224|-19218|-19212|-19038|-19023|-19018|-19006|-19003|-18996|-18977|-18961|-18952|-18783|-18774|-18773|-18763|-18756|-18741|-18735|-18731|-18722|-18710|-18697|-18696|-18526|-18518|-18501|-18490|-18478|-18463|-18448|-18447|-18446|-18239|-18237|-18231|-18220|-18211|-18201|-18184|-18183|-18181|-18012|-17997|-17988|-17970|-17964|-17961|-17950|-17947|-17931|-17928|-17922|-17759|-17752|-17733|-17730|-17721|-17703|-17701|-17697|-17692|-17683|-17676|-17496|-17487|-17482|-17468|-17454|-17433|-17427|-17417|-17202|-17185|-16983|-16970|-16942|-16915|-16733|-16708|-16706|-16689|-16664|-16657|-16647|-16474|-16470|-16465|-16459|-16452|-16448|-16433|-16429|-16427|-16423|-16419|-16412|-16407|-16403|-16401|-16393|-16220|-16216|-16212|-16205|-16202|-16187|-16180|-16171|-16169|-16158|-16155|-15959|-15958|-15944|-15933|-15920|-15915|-15903|-15889|-15878|-15707|-15701|-15681|-15667|-15661|-15659|-15652|-15640|-15631|-15625|-15454|-15448|-15436|-15435|-15419|-15416|-15408|-15394|-15385|-15377|-15375|-15369|-15363|-15362|-15183|-15180|-15165|-15158|-15153|-15150|-15149|-15144|-15143|-15141|-15140|-15139|-15128|-15121|-15119|-15117|-15110|-15109|-14941|-14937|-14933|-14930|-14929|-14928|-14926|-14922|-14921|-14914|-14908|-14902|-14894|-14889|-14882|-14873|-14871|-14857|-14678|-14674|-14670|-14668|-14663|-14654|-14645|-14630|-14594|-14429|-14407|-14399|-14384|-14379|-14368|-14355|-14353|-14345|-14170|-14159|-14151|-14149|-14145|-14140|-14137|-14135|-14125|-14123|-14122|-14112|-14109|-14099|-14097|-14094|-14092|-14090|-14087|-14083|-13917|-13914|-13910|-13907|-13906|-13905|-13896|-13894|-13878|-13870|-13859|-13847|-13831|-13658|-13611|-13601|-13406|-13404|-13400|-13398|-13395|-13391|-13387|-13383|-13367|-13359|-13356|-13343|-13340|-13329|-13326|-13318|-13147|-13138|-13120|-13107|-13096|-13095|-13091|-13076|-13068|-13063|-13060|-12888|-12875|-12871|-12860|-12858|-12852|-12849|-12838|-12831|-12829|-12812|-12802|-12607|-12597|-12594|-12585|-12556|-12359|-12346|-12320|-12300|-12120|-12099|-12089|-12074|-12067|-12058|-12039|-11867|-11861|-11847|-11831|-11798|-11781|-11604|-11589|-11536|-11358|-11340|-11339|-11324|-11303|-11097|-11077|-11067|-11055|-11052|-11045|-11041|-11038|-11024|-11020|-11019|-11018|-11014|-10838|-10832|-10815|-10800|-10790|-10780|-10764|-10587|-10544|-10533|-10519|-10331|-10329|-10328|-10322|-10315|-10309|-10307|-10296|-10281|-10274|-10270|-10262|-10260|-10256|-10254'; $key = explode('|', $k); $val = explode('|', $v); $py_arr = array_combine($key, $val); arsort($py_arr); return $py_arr; } } 上面是我试用的工具类,是这样调用的: require_once DT_ROOT.'/include/gbpinyin.class.php'; $do = new gbpinyin(); var_dump($do->utf8_to("魅蓝"));  

爱吃鱼的程序员 2020-06-01 14:14:13 0 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站