Amp

char, wchar_t与STL的字符串格式化format

匆匆过客 提交于 2020-08-09 03:59:07
最近一直在写序列化类,希望把一些游戏过程中的场景数据信息存储到硬盘。因为需要处理的数据很多,所以我写了一个工具类,其中包括字符串的序列化,问题来了: 公司原先的代码参差不齐,有使用AString的(使用ANSI char作为字符单元,相当于std::string),也有考虑到unicode问题而采用AWString的(使用wchar_t作为字符单元,相当于std::wstring),同时考虑到根据编译环境自动视别的问题,也定义有一个宏ACString,即:如果定义有UNICODE环境变量,则自动替换为AWString,否则使用AString。好吧,自作聪明的我使用了ACString来写工具函数,测试时没有任何问题,但一旦加入到真正的运行环境中就会出现“把const char*转化为bool,性能警告”的错误,几经检查,发现在游戏环境下,传入的参数是AString类型,而我用的ACString则被自动转化成了AWString,找不到参数匹配的,所以只有默认转化了。 看来,解决办法只能是同时提供AString与AWString两种类型的工具函数,因为你不知道你的客户传给你的将是哪一种,除非大家都铁了心的一致使用ACString,然而在现实的编码中,这却是不切实际的。 这让我想起前两天为STL写的格式化函数(STL没有,只好自己写了-_-),当时我也想自作聪明的把std:

BuildRun平台升级 | 支持Helm v3兼容Helm v2

十年热恋 提交于 2020-08-09 02:53:12
Helm 是目前云原生技术体系中进行应用管理最被广泛使用的开源项目,可以帮助管理Kubernetes应用程序。通过Helm Charts,可以快速定义、安装和升级复杂的Kubernetes应用程序。 本文将简短介绍一下Helm v2与v3之间的区别,以及如何将BuildRun低代码开发平台的实例升级到helm v3上。 01 Helm v2和Helm v3的区别 Helm设计之初不仅仅作为一个包管理工具,同时也试图作为一个微型的PaaS平台,因此添加了Tiller服务端,在Tiller服务端中有一整套管理流程和更新策略用以支持其作为PaaS平台的设定,但Tiller的存在却与Kubernetes概念产生了一些重合和冲突。 Tiller的存在导致release名称需要保持全局唯一性,故而不能像Kubernetes一样按照Namespace进行隔离。对于熟悉Kubernetes的用户来说,Tiller就显得有点多余,它的存在不仅提高了部署的复杂度,还含有一些安全隐患。 Helm v3在v2的基础上移除了tiller,变成了一个纯客户端工具,除此之外,还有如下一些变化: 部署实例依赖于用户在对应集群中所拥有的权限 支持使用secret存储实例信息,更加安全 实例按照namespace进行隔离,无需全局唯一 移除requirements.yaml,直接在chart.yaml中定义依赖 ..

Android Stability

非 Y 不嫁゛ 提交于 2020-08-08 23:47:25
Tombstone日志的生成 Android默认是不会抓取coredump文件的,AOSP在进程发生内存访问异常的时候一般会在 data/tombstones/ 下面生成“tombstone_0x”形式命名的文件,这个文件是debuggerd进程来抓取的,在可执行文件被加载的时候会执行到bionic/linker/debugger.cpp这个文件的debuggerd_init函数,在这个函数里面注册了信号处理函数为debuggerd_signal_handler,所以当这个进程接收到SIGABRT、SIGBUS、SIGSEGV等signal的时候kernel都会回调debuggerd_signal_handler这个函数来处理. __LIBC_HIDDEN__ void debuggerd_init ( ) { struct sigaction action ; memset ( & action , 0 , sizeof ( action ) ) ; sigemptyset ( & action . sa_mask ) ; action . sa_sigaction = debuggerd_signal_handler ; action . sa_flags = SA_RESTART | SA_SIGINFO ; // Use the alternate signal stack

别再用if-else了,用注解去代替他吧

自作多情 提交于 2020-08-08 23:02:04
以下文章来源于咖啡拿铁 ,作者谢英豪 咖啡拿铁 致力于后端开发,架构分析,java代码,用喝一杯咖啡的时间学习更多的知识 策略模式 经常在网上看到一些名为“别再if-else走天下了”,“教你干掉if-else”等之类的文章,大部分都会讲到用策略模式去代替if-else。策略模式实现的方式也大同小异。主要是定义统一行为(接口或抽象类),并实现不同策略下的处理逻辑(对应实现类)。客户端使用时自己选择相应的处理类,利用工厂或其他方式。 注解实现 本文要说的是用注解实现策略模式的方式,以及一些注意点。 话不多说,还是以最常 见的订单处理为例。首先定义这样一个订单实体类: @Data public class Order { /** * 订单来源 */ private String source; /** * 支付方式 */ private String payMethod; /** * 订单编号 */ private String code; /** * 订单金额 */ private BigDecimal amount; // ...其他的一些字段 } 假如对于不同来源(pc端、移动端)的订单需要不同的逻辑处理。项目中一般会有OrderService这样一个类,如下,里面有一坨if-else的逻辑,目的是根据订单的来源的做不同的处理。 @Service public class

【放大招!】Mentor DDRx 接口一站式解决方案促销计划

回眸只為那壹抹淺笑 提交于 2020-08-08 22:51:22
HyperLynx® DDRx仿真验证专家套包DDRx 接口设计验证提供了强大的集成电气设计规则检查,信号完整性、串扰和时序分析于一体的验证平台,显著缩短PCB的设计和调试周期。 通过详尽的预设DDRx接口规则接口,用户可以迅速完成DDRx接口PCB设计质量评估。自动布线后仿真从提取PCB 设计数据中提取"布线后"电路拓扑,执行全面的全接口分析,在生产PCB样本之前,详细验证所有信号、信号组信号完整性和时序关系。 为方便大家更好地了解、使用HyperLynx® DDRx仿真验证功能, 即日起,截止至2020年9月30号,Mentor提供3种DDRx接口验证解决方案促销计划: DDR3 仿真验证专家套包 促销价:$15K 以一套PCB设计工具的价格,将获得一个完整DDR3 PCB设计验证平台。 HyperLynx® DDR3仿真验证专家套包DDR3 接口设计验证提供了强大的集成电气设计规则检查,信号完整性、串扰和时序分析,直流压降分析,板级热分析于一体的验证平台,显著缩短PCB的设计和调试周期。 • 预设完整DDR3接口PCB设计验证规则 • 分析电源平面分割等导致铜损耗造成的电压降 • 自动布线后 DDR3 接口信号完整性和时序验证 • 分析所有信号组和耦合关系的集成信号完整性, 串扰和系统级时序仿真分析 • 与Mentor Xpedition/ PADS紧密集成

mysql备份脚本

落爺英雄遲暮 提交于 2020-08-08 22:49:14
脚本内容: db_user="root" db_passwd="123456" db_name="db_name" time="$(date +"%Y%m%d%H%M%S")" backupdir=/home/wbxt/mysql_backup /usr/local/mysql/bin/mysqldump -u$db_user -p$db_passwd $db_name >>$backupdir/$db_name$time.sql find $backupdir -name "$db_name*.sql" -type f -mtime +7 -exec rm {} ; > /dev/null 2>&1 脚本解释: 首先定义一个变量NOW取当前的年月日, 在定义一个目录的变量DATA_DIR, 然后使用mysqldump命令将要备份的库备份到指定的目录, 最后使用find命令找到指定目录的sql文件,并且将7天之外的文件删除。 -mtime + 就是找到7天之外的文件 -mtime – 就是找到7天之内的文件 -exec就是执行后边的命令 最后根据需求配置定时任务 crontab -e 00 02 * * * /home/wbxt/backupdb.sh 来源: oschina 链接: https://my.oschina.net/wuaiting/blog/4291180

简单聊聊SpringMVC

喜欢而已 提交于 2020-08-08 21:50:37
前言 只有光头才能变强。 文本已收录至我的GitHub精选文章,欢迎Star : https://github.com/ZhongFuCheng3y/3y 这篇 SpringMVC 被催了很久了,这阵子由于做整合系统的事,所以非常非常地忙。这周末早早就回了公司肝这篇文章了。 如果关注三歪的同学会发现,三歪最近写的很多文章都是结合了现有的系统去写的。这些问题都是真实开发场景会遇到的、用的上的,这些案例对未工作的同学帮助应该还是蛮大的。 不多BB了,还是进入今天的正题吧「 SpringMVC 」 先简单聊聊SpringMVC 如果你们玩知乎,很可能会看到我的身影。我经常会去知乎水回答。在知乎有很多初学者都会问的一个问题:「 我学习SpringMVC需要什么样的基础 」 我一定会让他们先学Servlet,再学SpringMVC的。虽然说我们在现实开发中几乎不会写原生Servlet的代码了,但我始终认为学完Servlet再学SpringMVC,对理解SpringMVC是有好处的。 三歪题外话:我当时在学SpringMVC之前其实已经接触过另外一个web框架(当然了Servlet也是学了的),那就是「大名鼎鼎」的Struts2。只要是Struts2有的功能,SpringMVC都会有。 当时初学Struts2的时候用的是XML配置的方式去开发的,再转到SpringMVC注解的时候

在什么场合里,你会使用PHP消息队列呢

北慕城南 提交于 2020-08-08 19:37:55
1. 什么是消息队列 消息队列(英语:Message queue)是一种进程间通信或同一进程的不同线程间的通信方式 2. 为什么使用消息队列 消息队列技术是分布式应用间交换信息的一种技术。消息队列可驻留在内存或磁盘上,队列存储消息直到它们被应用程序读出。通过消息队列,应用程序可独立地执行,它们不需要知道彼此的位置、或在继续执行前不需要等待接收程序接收此消息。 3. 什么场合使用消息队列 你首先需要弄清楚,消息队列与远程过程调用的区别,在很多读者咨询我的时候,我发现他们需要的是RPC(远程过程调用),而不是消息队列。 消息队列有同步或异步实现方式,通常我们采用异步方式使用消息队列,远程过程调用多采用同步方式。 MQ与RPC有什么不同? MQ通常传递无规则协议,这个协议由用户定义并且实现存储转发;而RPC通常是专用协议,调用过程返回结果。 4. 什么时候使用消息队列 同步需求,远程过程调用(PRC)更适合你。 异步需求,消息队列更适合你。 目前很多消息队列软件同时支持RPC功能,很多RPC系统也能异步调用。 消息队列用来实现下列需求 存储转发 分布式事务 发布订阅 基于内容的路由 点对点连接 以下是一个消息队列的运用实例 <?php /** * Created by PhpStorm. * User: lin * Date: 2017/6/9 * Time: 11:19 *

将十进制转为二进制

谁说我不能喝 提交于 2020-08-08 19:24:49
将十进制转为二进制 如输入:13 输出:1101 #include<stdio.h> int fact(int n) { if (n < 2) { return n; } else { return fact(n / 2) * 10 + n % 2; } } int dectobin(int n){ int result = 0, k = 1, i, temp; temp = n; while (temp){ i = temp % 2; result = k * i + result; k = k * 10; temp = temp / 2; } return result; } int main(void) { int n; printf("Entern:"); scanf("%d", &n); printf("%d", fact(n)); return 0; } 来源: oschina 链接: https://my.oschina.net/u/3839076/blog/4312647

图解 Promise 实现原理(四)—— Promise 静态方法实现

╄→尐↘猪︶ㄣ 提交于 2020-08-08 18:59:24
本文首发于 vivo互联网技术 微信公众号 链接: https://mp.weixin.qq.com/s/Lp_5BXdpm7G29Z7zT_S-bQ 作者:Morrain Promise 是异步编程的一种解决方案,它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了Promise对象。更多关于 Promise 的介绍请参考阮一峰老师的 ES6入门 之 Promise 对象 。 很多同学在学习 Promise 时,知其然却不知其所以然,对其中的用法理解不了。 本系列文章由浅入深逐步实现 Promise,并结合流程图、实例以及动画进行演示,达到深刻理解 Promise 用法的目的。 本系列文章有如下几个章节组成: 图解 Promise 实现原理(一)—— 基础实现 图解 Promise 实现原理(二)—— Promise 链式调用 图解 Promise 实现原理(三)—— Promise 原型方法实现 图解 Promise 实现原理(四)—— Promise 静态方法实现 一、前言 上一节中,实现了 Promise 的原型方法。包括增加异常状态,catch以及 finally。截至目前,Promise 的实现如下: class Promise { callbacks = []; state = 'pending';//增加状态 value = null;/