Entry

聊聊claudb的importRDB

有些话、适合烂在心里 提交于 2020-10-02 20:36:27
序 本文主要研究一下claudb的importRDB importRDB claudb-1.7.1/src/main/java/com/github/tonivade/claudb/DBServerState.java public class DBServerState { //...... public void importRDB(InputStream input) throws IOException { RDBInputStream rdb = new RDBInputStream(input); Map<Integer, Map<DatabaseKey, DatabaseValue>> load = rdb.parse(); for (Map.Entry<Integer, Map<DatabaseKey, DatabaseValue>> entry : load.entrySet()) { databases.get(entry.getKey()).overrideAll(ImmutableMap.from(entry.getValue())); } } //...... } importRDB方法创建RDBInputStream,然后执行其parse方法进行解析,之后遍历解析结果,挨个执行databases.get(entry.getKey())

Java集合——HashMap扩容的死锁问题

我的梦境 提交于 2020-10-02 20:06:43
Java集合——HashMap扩容的死锁问题 摘要:本文主要了解了HashMap在多线程并发情况下扩容产生的死锁问题。 死锁问题 在JDK的1.7版本进行扩容时,因为是头插法插入节点,并且在一个线程扩容后会替换掉之前的数组,所以在多线程环境下可能会产生死锁。 1 // 扩容。 2 void resize( int newCapacity) { 3 // 判断是否需要扩容。 4 Entry[] oldTable = table; 5 int oldCapacity = oldTable.length; 6 if (oldCapacity == MAXIMUM_CAPACITY) { 7 threshold = Integer.MAX_VALUE; 8 return ; 9 } 10 // 创建扩容后的新数组,并且在扩容后替换老数组。 11 Entry[] newTable = new Entry[newCapacity]; 12 transfer(newTable, initHashSeedAsNeeded(newCapacity)); 13 table = newTable; 14 threshold = ( int )Math.min(newCapacity * loadFactor, MAXIMUM_CAPACITY + 1 ); 15 } 16 17 // 扩容。 18

PHP系列之钩子

て烟熏妆下的殇ゞ 提交于 2020-10-02 12:53:48
PHP 提供的钩子 PHP 和 Zend Engine 为扩展提供了许多不同的钩子,这些扩展允许扩展开发人员以 PHP userland 无法提供的方式控制 PHP 运行时。 本章将展示各种钩子和从扩展钩子到它们的常见用例。 钩子到 PHP 功能的一般模式是 PHP 核心提供的扩展覆盖函数指针。然后扩展函数通常执行自己的工作并调用原始 PHP 核心函数。使用此模式,不同的扩展可以覆盖同一个钩子而不会导致冲突。 挂钩到函数的执行 userland和内部函数的执行由Zend引擎中的两个函数处理,您可以用自己的实现替换这两个函数。覆盖此钩子的扩展的主要用例是通用函数级评测、调试和面向方面的编程。 钩子在 Zend/zend_execute.h 中定义: ZEND_API extern void (*zend_execute_ex)(zend_execute_data *execute_data);ZEND_API extern void (*zend_execute_internal)(zend_execute_data *execute_data, zval *return_value); 如果要覆盖这些函数指针,则必须在 Minit 中执行此操作,因为 Zend Engine 中的其他决策是根据指针是否被覆盖这一事实提前做出的。 覆盖的通常模式是这样的: static void (

FastAPI 工程管理(四) 工程示例

倾然丶 夕夏残阳落幕 提交于 2020-10-02 09:04:49
作者:麦克煎蛋 出处:https://www.cnblogs.com/mazhiyong/ 转载请保留这段声明,谢谢! 结合前期学习的过程,整理了一份工程实例模板,在基于FastAPI框架的前提下,参考了Flask的一些业务逻辑和文件配置。 在测试环境和生产环境都经过了实际测试,个人认为可以实际应用于正式环境了。 代码地址: https://github.com/zhiyongma/fastproject 工程目录结构 ├── app │ ├── auth # JWT Authorization │ ├── models # database models │ ├── routers # api routers │ └── util # utility │ ├── __init__ .py # entry file │ ├── config.py # project config │ ├── database.py # database ├── deploy # deploy tools │ ├── gunicorn_fast.service # service sample │ ├── test_user.sql # user db sample ├── gunicorn.py # gunicorn config ├── local.py # for development

不同数据库数据同步(不同环境的数据库同步 例如测试环境的数据库数据同步到正式环境的库中)

给你一囗甜甜゛ 提交于 2020-10-02 05:42:31
package com.jtl.device.controller ; import cn.hutool.db.handler.BeanListHandler ; import com.jtl.common.config.idgen.SequenceInitForApplication ; import com.jtl.common.config.idgen.SequenceNextUtil ; import com.jtl.common.result.BaseResult ; import com.jtl.device.common.util.SnowflakeIdWorker ; import com.xuanner.seq.sequence.Sequence ; import io.swagger.annotations. Api ; import io.swagger.annotations. ApiImplicitParam ; import io.swagger.annotations. ApiImplicitParams ; import io.swagger.annotations. ApiOperation ; import lombok.extern.slf4j. Slf4j ; import org.apache.commons.collections4

SwiftUI 中的 App 要领

醉酒当歌 提交于 2020-10-02 00:21:58
Python实战社群 Java实战社群 长按识别下方二维码, 按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群 ▲ 作者:倾寒,iOS 开发者,目前就职于阿里巴巴,手淘 iOS 架构组 Session:https://developer.apple.com/videos/play/wwdc2020/10037/ 概述 这个主题主要讲述使用 SwiftUI 构建 APP 的核心概念。在 SwiftUI 可以使用 Views 简洁强大的 API 快速构建 App, 今年 SwiftUI 将声明式 API 扩展到了更大的场景 如 Scenes 和 Apps,有了这些 API,整个 APP 可以在不导入平台框架(UIKIt/APPKit)的前提下,完成整个 APP 的编写,下面会针对各部分做详细讲解。 Views scenes and apps Views View 在 SwiftUI 是什么?View 代表了用户界面的一部分,在一个 App 中,所有可见的部分都是 View, 如某个图像或者文本,以及承载他们的容器都是 View。实际上,你在当前设备中看到的任何一个像素都是某个 View 的一部分。 scenes 但是在当前设备的屏幕上并不是所有的 View 都来自同一个应用,应用无法直接控制整个屏幕,操作系统控制了应用可以在屏幕上显示的特定区域。在

基于stm32f103c8t6浊度计

别来无恙 提交于 2020-10-01 20:57:39
基于stm32f103c8t6浊度计 前言 本次设计的基于stm32f103c8t6浊度计主要由硬件部分加软件部分组成 硬件部分主要是IR333光源发射部分+红外接收管光源接受部分+放大电路+stm32f103c8t6主控芯片+lcd1602显示模块组成 软件部分主要是通过stm32cubemx配置管脚之后添加adc通道函数、lcd1602写命令函数、lcd1602读数据函数等生成的 一、硬件部分 发射接收及放大电路硬件部分: LCD102显示硬件部分: 其中最主要的是信号放大电路,由于红外接收管接受的光信号过小,所以在他输入ad转换器之前必须进行信号的放大放大芯片可以选用LM324,部分仿真图如下图所示: 二、软件部分(主要函数块及总代码) 1.主函数部分 int main(void) { /* USER CODE BEGIN 1 */ /* USER CODE END 1 / / MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /*

Istio Pilot 源码分析(二)

元气小坏坏 提交于 2020-10-01 13:18:34
张海东, ‍多点生活(成都)云原生开发工程师。 本篇主要介绍 Pilot 源码中的 ServiceEntryStore 及其推送 xDS 的流程。 本文为 Istio Pilot 源码分析系列的第二篇文章。 Istio Pilot 源码分析(一) 了解了 Pilot 源码的基本结构和启动流程之后,我们可以深入探索 Pilot 究竟是怎么下发 xDS 协议的,以及协议的生成逻辑。相信大家都会有这些疑问:控制面与数据面详细的交互过程是什么?到底什么时候才会增量推送?增量推送判断的逻辑是什么?非 Kubernetes 原生的服务(如存在于虚拟机的服务、 Dubbo 服务等)到底是怎么注册并且经过一系列转化下发至数据面的? 带着这些问题,开始我们今天对 Pilot 的探索。 注:本文基于 istio release-1.7 分支分析,其他版本的代码结构会有所不同。 ServiceEntryStore 在多点落地 ServiceMesh 的过程中,大量的用到了 ServiceEntry ,每一个 Dubbo 服务都会映射一个 ServiceEntry 创建在 Kubernetes 里。 ServiceEntry 的作用就是将集群外部的服务注册到 Pilot 中,再统一由 ServiceController 进行管理。相应的,管理外部服务实例的对象为 WorkloadEntry ,

一图读懂 Swift 5.3

你离开我真会死。 提交于 2020-10-01 07:39:51
Python实战社群 Java实战社群 长按识别下方二维码, 按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群 ▲ 作者 | Holly Borla 来源 | swift.org/blog Swift 5.3 正式发布,Amy Tsai 绘制了一张素描图,列出了 Swift 5.3 的主要新特性。这张图描述了 Swift 5.3 的一些新特性以及目标:继续专注于语言改进,开发体验以及扩展 Swift 生态系统,以让 Swift 适用于更多场景。 语言和标准库 新特性和改进 Swift 5.3 在语言方面做了不少改进,改善了 Swift 编码体验。这些更新的重点是减少样板和冗余代码,以及在标准库中定义更多功能,从而提高 Swift 程序员的生产力。 Swift Evolution 中的以下条款在 Swift 5.3 中得以实现: SE-0263 - Add a String Initializer with Access to Uninitialized Storage SE-0266 - Synthesized Comparable conformance for enum types SE-0267 - where clauses on contextually generic declarations SE-0268 - Refine

设计模式(18) 中介者模式

有些话、适合烂在心里 提交于 2020-10-01 06:53:35
一个软件系统中往往包含了很多的类,这些类之间会存在互相的调用,随着系统的升级、功能的扩展,这些相互调用关系会变得非常复杂,,大量的相互连接使得这样一个类型系统不太可能在没有其他类支持的情况下独立完成工作,久而久之这些类将变得像一个不可分割的整体,内部有着错综复杂的关联。这会导致后期维护特别困难,对系统或模块的任何较大的变动都可能造成无法预知的问题。 中介者模式 中介者模式可以解决这种问题。它通过提供一个中介类,来处理不同类之间的通信,这样可以降低多个类之间的通信复杂度,使代码更易于维护。中介者模式属于行为型模式。通过应用Mediator模式,可以将类与类之间的多对多的关系转化成一对多的关系,从而降低了类之间的耦合。 GOF对中介者模式描述为: Define an object that encapsulates how a set of objects interact. Mediator promotes loose coupling by keeping objects from referring to each other explicitly, and it lets you vary their interaction independently.. — Design Patterns : Elements of Reusable Object-Oriented