起因 评论中增加了Emoji表情,结果写入的时候报错了,找了半天原因,原来是数据库utf8和utf8mb4的区别问题。 区别 utf8:通常指的是 utf8(也称为 utf8_general_ci 或 utf8_bin),它支持标准的 Unicode 字符,但不支持四个字节的字符(如 Emoji、某些表情符号和其他复杂字符 utf8mb4:这是一种扩展的 UTF-8 编码,它可以支持所有 Unicode 字符,包括四个字节的字符(如 Emoji)。 Typecho配置 在config.inc.php中数据库参数的配置中有charset的配置,可以配置为utf8或utf8mb4。 代码判断 在不关心具体数据库的判断中可以直接通过配置中的charset判断是否为utf8mb4。
日期时间格式解析、格式化 9、java8 时间类与Date类的相互转化 ---- 在Java 8以前,日期和时间处理一直被广大java程序员抱怨太难用,首先是java.util和java.sql中,都包含 同时java.util.Date中既包含了日期,又包含了时间,所以java8新的日期和时间库,很好的解决了以前日期和时间类的很多弊端。并且也借鉴了第三方日期库joda很多的优点。 :只包含时间,比如:23:12:10 LocalDateTime:包含日期和时间,比如:2016-10-20 23:14:21 Period:时间段 ZoneOffset:时区偏移量,比如:+8:00 8、日期时间格式解析、格式化 在java8之前,我们进行时间格式化主要是使用SimpleDateFormat,而在java8中,主要是使用DateTimeFormatter,java8中,预定义了一些标准的时间格式 时间类与Date类的相互转化 在转换中,我们需要注意,因为java8之前Date是包含日期和时间的,而LocalDate只包含日期,LocalTime只包含时间,所以与Date在互转中,势必会丢失日期或者时间
所以..的前面和后面均可以为空。 所以..也可以单独使用,代表整个索引范围(0..arr.Length):arr[..]是arr的完整拷贝。 深拷贝还是浅拷贝需要看元素是值类型还是引用类型。 Range Range用来从集合中取出 指定索引范围 的元素来生成新的集合。 该索引可以用来从集合中取出指定索引处的元素,是单个元素。 乍一看,Index与int类型的索引没啥区别。嗯。。确实是这样,因为Index要与^操作符结合起来才能发挥更大的作用。 组合使用 Range 和 Index 完整拷贝数组的3种方式 int[] arr = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; int[] arr01 = arr - Range 和 Index(范围和索引):https://mp.weixin.qq.com/s?
=的区别 上面分析了创建对象的整个内存过程,那么接下来理解is和==的区别就好多了 is:用于判断两个变量引用对象是否为同一个,既比较对象的地址。 需要注意的是,这仅仅是在命令行中执行,而在Pycharm或者保存为文件执行,结果是不一样 的,这是因为解释器做了一部分优化(范围是[-5,任意正整数])。 当字符串对象a需要驻留时,先在interned检测是否存在,若存在则指向存在的字符串对象,a的引用计数减1; 若不存在,则记录a到interned中 为什么要字符串驻留? 字符串长度为0和1时,默认都采用了驻留机制。 >>> a is b True >>> 最后,当不满足标识符规则时,则不会启用驻留机制,当然这只出现在命令行中,如果你使用pycharm则不会出现这样的情况,pycharm内部已经帮我们做了处理 发布者
Java7/8 中的 HashMap 全解析 转自https://www.javadoop.com/post/hashmap#toc7 部分内容转自 http://www.jasongj.com/java 网上关于 HashMap 和 ConcurrentHashMap 的文章确实不少,不过缺斤少两的文章比较多,所以才想自己也写一篇,把细节说清楚说透,尤其像 Java8 中的 ConcurrentHashMap Java8 的 HashMap 和 ConcurrentHashMap 都有相应的要求,只不过实现的代码稍微有些不同,后面再看到的时候就知道了。 为了降低这部分的开销,在 Java8 中,当链表中的元素达到了 8 个时,会将链表转换为红黑树,在这些位置进行查找的时候可以降低时间复杂度为 O(logN)。 来一张图简单示意一下吧: ? Java7 中使用 Entry 来代表每个 HashMap 中的数据节点,Java8 中使用 Node,基本没有区别,都是 key,value,hash 和 next 这四个属性,不过,Node 只能用于链表的情况
1.前言 Java 8 提供了非常好用的 Stream API ,可以很方便的操作集合。 今天我们探讨两个 Stream 中间操作 map 和 flatMap 2. map 操作 map 操作是将流中的元素进行再次加工形成一个新流。这在开发中很有用。 放在 Java 8 之前 我们要通过新建一个集合然后通过遍历学生集合来消费元素中的年龄属性。现在我们通过很简单的流式操作就完成了这个需求。 示意图: ? flatMap 不同于 map 地方在于 map 只是提取属性放入流中,而 flatMap 先提取属性放入一个比较小的流,然后再将所有的流合并为一个流。有一种 “聚沙成塔” 的感觉。 扩展一下知识,其实Java 8 中 不光 Stream 中存在这两种操作,其实 Optional<T> 中也存在这两种操作,作用都差不多。
它们通常具有 XML 文件形式,包含用户界面布局、png 或 svg 文件形式的图像和图标以及包含样式和主题等内容的值。请参阅 Google 文档以深入了解 Android 资源。 旧系统存在一些影响应用程序大小和启动性能的问题。在旧系统中,每个 Android 程序集都有自己的一组Resource类。所以我们实际上到处都有重复的代码。 测试表明我们可以将启动时间缩短约 8%。整体封装尺寸大约减少 2%-4%。 Xamarin.Legacy.Sdk是不受支持的,所以它只能作为用户升级到 .NET 8 时的权宜之计。 但是,如果您使用 .nuspec,则需要手动将 .aar 文件添加到要包含的文件列表中。 与.aar文件和嵌入文件相关的更改在OneDotNetEmbeddedResources.md中有文档记录。
前言 Java 8 Stream API 中的skip()和limit()方法具有类似的作用。它们都是对流进行裁剪的中间方法。今天我们来探讨一下这两个方法。 当 n=4 时,打印了 5 和 6 ,由此可推断当我们取值大于等于流的大小时肯定什么也没有了,对于流来说肯定是个空流。经过检验确实count=0 。 n=8 时,打印了所有元素。感觉跟 mysq 的分页有异曲同工之妙。 4. 区别 这两个方法都是截取了流。但是它们有一些区别 skip 操作必须时刻监测流中元素的状态。才能判断是否需要丢弃。 总结 今天对Java Stream API 的 skip() 和limit()方法进行了探讨。不知道你会想到在什么场景下会分别用到它们呢,不妨留言告诉我。
8 和 Java 9中 concurrent 包有了一些改变, 本文对这些改变做了汇总。 Java 8 中 Concurrent package的改变 java.util.concurrent中新的类和接口 增加了两个新接口和4个新类: 接口 CompletableFuture.AsynchronousCompletionTask ConcurrentHashMap.KeySetView 类 CountedCompleter 类 CompletionException java.util.concurrent.ConcurrentHashMap的新方法 集合框架 在Java 8中做了修订 https://docs.oracle.com/javase/8/docs/technotes/guides/concurrency/changes8.html Java 9′s other new 和 Java 9中 concurrent 包有了一些改变, 本文对这些改变做了汇总。
8 和 Java 9中 concurrent 包有了一些改变, 本文对这些改变做了汇总。 Java 8 中 Concurrent package的改变 java.util.concurrent中新的类和接口 增加了两个新接口和4个新类: 接口 CompletableFuture.AsynchronousCompletionTask ConcurrentHashMap.KeySetView 类 CountedCompleter 类 CompletionException java.util.concurrent.ConcurrentHashMap的新方法 集合框架 在Java 8中做了修订 https://docs.oracle.com/javase/8/docs/technotes/guides/concurrency/changes8.html Java 9′s other new 和 Java 9中 concurrent 包有了一些改变, 本文对这些改变做了汇总。
我们都知道 JDK 8 以后开始使用了新的 joda 日期处理 API。 在这个 API 中,新增了 Period 和 Duration 这 2 个类,用于计算 2 个日期之间的间隔。 下面对这 2 个类进行一些比较和说明,从使用上来说,如果你不需要秒或者纳秒一级的比较的话,就用 Period ,Period 的比较粒度更粗,通常只能精确到,天(Days),月(Months)和 年(Years 线程安全和可变 这 2 个类都是: 线程安全(thread-safe) 不可变(immutable) 对比和区别 2 个类比较的精度不不同。 " + p.getDays() + " days old. (" + p2 + " days total)"); 代码将会输出为: You are 41 years, 8 https://www.ossez.com/t/jdk-8-jdk-period-duration/13709
引言C++20 标准引入了对 UTF-8 编码的更好支持,其中包括两个重要的函数:std::c8rtomb 和 std::mbrtoc8。 这两个函数分别用于将 UTF-8 编码的字符转换为窄多字节字符表示,以及将窄多字节字符转换为 UTF-8 编码。这些功能对于处理多语言文本和国际化应用非常关键。 如果 c8 不是编码点表示中的最后一个编码单元,则函数不会写入 s 指向的数组,只更新 *ps。 如果 c8 不是编码点的 UTF-8 表示中的最后一个编码单元,则返回值可以为零。 总结C++20 通过引入 std::c8rtomb 和 std::mbrtoc8,为处理 UTF-8 编码和窄多字节字符提供了强大的支持。
三个字节的 UTF-8 最大能编码的 Unicode 字符是 0xffff,也就是 Unicode 中的基本多文种平面(BMP)。 包括 Emoji 表情(Emoji 是一种特殊的 Unicode 编码,常见于 ios 和 android 手机上),和很多不常用的汉字,以及任何新增的 Unicode 字符等等。 是 Mysql 中的一种字符集,只支持最长三个字节的 UTF-8字符,也就是 Unicode 中的基本多文本平面。 最初的 UTF-8 格式使用一至六个字节,最大能编码 31 位字符。 最新的 UTF-8 规范只使用一到四个字节,最大能编码21位,正好能够表示所有的 17个 Unicode 平面。 Mysql 中的 utf8 为什么只支持持最长三个字节的 UTF-8字符呢? Mysql 中的字符串长度算的是字符数而非字节数,对于 CHAR 数据类型来说,需要为字符串保留足够的长。
◆ ◆ ◆ LED灯篮板:时间到篮板随着发光 LED灯篮板,这个发源于NBA的“高科技”早已是全世界职业联赛的标配;除此之外,可以追踪场上球员一举一动的摄像头追踪系统,神乎其技的转播回放中心,360度3D 影像回放技术;以及未来会被应用的压力感应、Beacon和虚拟现实技术,NBA球馆一直是高科技的先锋实验田,也总是在为篮球这项运动树立新标杆。 和传统的转播车相比,回放中心就是一群更专业的人在专职做比赛回放的事。在裁判走向场边时,好几个角度的回放视频已经在飞速制作中。我们上面提到回放中心位于新泽西州,所以保证视频快速传输到球馆也是一个大问题。 ◆ ◆ ◆ 运动员追踪系统:让球员的一举一动变成数据 现在的腾讯NBA直播中,你经常能看到转播镜头中附上一张以圆点代表球员的统计表,球员的投球点,是否进球一目了然。这都是球员追踪系统的功劳。 ◆ ◆ ◆ 未来科技:压力感应地板、VR Steve Hellmuth是负责运营和技术的NBA副总裁,回放中心和球员追踪系统就是在他的主导下应用的。
那么Python 2.x中的字符串究竟是个什么呢? 基本编码知识 在了解Python中字符串(String)的本质前,我们需要知道ASCII、GBK、UTF-8和Unicode的关系究竟几何。 具体细节可参考维基:http://zh.wikipedia.org/wiki/UTF-8 Unicode是一种定长的编码方式(同ASCII),不过它是每2字节认为是一个字符,如ASCII中0x61表示 由于Unicode编码的字符串体积很大,因此一般来说Unicode编码只是文字在内存中的内在形式,具体的存储(如文件、网页等)都需要靠外在的编码(UTF-8、GBK等)诠释。 Python2.x中字符串的本质 Python中实际上有两种字符串,分别是str类型和unicode类型,这两者都是basestring的派生类。 原文地址:Python中GBK, UTF-8和Unicode的编码问题, 感谢原作者分享。
人脸检测和识别可以用来改善访问和安全性,就像最新的Apple Iphone一样,允许在没有物理卡的情况下处理付款 - iphone也这样做!,启用犯罪识别并允许个性化的医疗保健和其他服务。 人脸检测和识别是一个研究很多的话题,网上有大量的资源。已经尝试了多个开源项目,以找到最准确实现的项目。还创建了一个管道,用于在加载图像后只需8行代码就任何输入图像进行检测,识别和情感理解! 情绪检测 人类习惯于从面部情绪中获取非语言暗示。现在计算机也越来越好地阅读情感。那么如何检测图像中的情绪呢? 情绪可分为7类 - 快乐,悲伤,恐惧,厌恶,愤怒,中立和惊讶。 emotion_detector_models/model.hdf5") predicted_class = np.argmax(model.predict(face_image) 结论 这个博客演示了在应用程序中实现面部检测和识别模型是多么容易
K8sMeetup 在数据库中保存集群状态 API 接收并检查 Pod 定义,然后将其存储在 etcd 数据库中。另外,Pod 将被添加到调度程序的队列中。 K8sMeetup Pod 和 Service 在创建 Service 时,我们需要注意两点信息: selector:指定接收流量的 Pod。 targetPort:通过 Pod 端口接收流量。 我们可以使用以下方法进行验证: Endpoint 对象会从 Pod 中收集所有的 IP 地址和端口,而且不仅一次。 K8sMeetup 宽限期和滚动更新 优雅停机适用于要删除的 Pod,但如果我们不删除 Pod,会怎么样?其实即使我们不做,Kubernetes 也会删除 Pod。 宽限期越长,同时具有“运行”和“终止”的 Pod 也就越多。 K8sMeetup 终止长时间运行的任务 如果我们要对大型视频进行转码,是否有任何方法可以延迟停止 Pod?
在这个领域,Kubernetes 用 Helm 的来管理和打包应用,但是 Helm 并不是十全十美的,在使用过程中我们发现它并不能完全满足我们的需求,所以在 Helm 的基础上,我们自己研发了一套编排组件 我查阅了 Wiki 百科,了解到我们常说的编排的英文单词为 “Orchestration”,它常被解释为: 本意:为管弦乐中的配器法,主要是研究各种管弦乐器的运用和配合方法,通过各种乐器的不同音色,以便充分表现乐曲的内容和风格 而在云的时代,微服务和容器大行其道,除了为我们显示出了它们在敏捷性,可移植性等方面的巨大优势以外,也为我们的交付和运维带来了新的挑战:我们将单体式的架构拆分成越来越多细小的服务,运行在各自的容器中,那么该如何解决它们之间的依赖管理 如 Kubernetes 通过不同的 controller 将 Pod 调度到合适的 node 上,并且负责管理它们的生命周期; 服务编排 - 负责服务发现和高可用等,如 Kubernetes 中可用通过 Release 创建 当 Release CRD 被创建出来,controller 为它创建一个新的 Release History, 然后将 Release 中的 Chart 和 Configuration
一.简述 Date对象表示特定的日期和时间,而LocalDate(Java8)对象只包含没有任何时间信息的日期。 因此,如果我们只关心日期而不是时间信息,则可以在Date和LocalDate之间进行转换。
由于这个原因,零售网络和多模式物流网络的库存可见性对高科技公司和他们的交易伙伴社区而言都很重要。 与汽车行业的公司一样,许多高科技公司也将其业务全球化,以利用全球许多新兴市场中的低成本供应商。 供应链结构 高科技产业是所有产业部门中供应链结构最复杂的。汽车行业有一个分层和相当合理的结构,而相比之下,高科技行业的结构非常矩阵化。 这种模式现在在许多高科技公司中很常见,包括世界上领先的高科技消费品牌之一——苹果,也是如此。 为了尝试解释高科技供应链的结构,下文的示意图说明了整个供应和需求链的关键参与者。 该图显示了高科技行业中EDI的供求情况 能够在相对复杂和快速变化的供需链中交换业务文档对于这些高科技业务的平稳运行非常重要。 由于价值链中涉及的合同制造商,设计合作伙伴,物流合作伙伴和零售商等的数量众多(遍及地理位置分散的工厂和办公室),意味着与能够支持这样一个复杂的全球价值链的EDI或B2B供应商合作是很重要的。