RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-207316

SerikStartAndroid's questions

Martin Hope
SerikStartAndroid
Asked: 2022-09-24 19:29:10 +0000 UTC

在 Spring Boot 上实现两阶段提交(2PC)

  • 0

大家好。我实现了两阶段提交(2PC)

有 2 个阶段 - 准备、提交和有一个阶段以防回滚

通信 - REST API(/prepare、/commit、/rollback 端点)

根据 /prepare 阶段 2pc 的规范,我需要在数据库中阻塞一行。

在当前的实现中,我将布尔字段锁定在参与表中的每个微服务中,并在第一阶段将值设置为 true,在第二阶段设置为 false。

我知道我的实现非常简单而且不太正确。

我的问题是:如何在第一阶段阻止表格中的一行?

已经尝试过:

  1. select ... for update - 但它不起作用,因为它只在一个事务级别阻塞,我需要阻塞到第二阶段

  2. 我在考虑 dbms_lock (基本级别锁),但我不完全确定这是否是正确的解决方案。

我的堆栈:Java、Spring Data、MySql

如何在第一阶段锁定行以使其保持到分布式事务中的整个提交(第二阶段)完成为止是正确的。

P/S SAGA 实现我知道(非常有趣的 2PC 实现)

非常感谢。

mysql
  • 0 个回答
  • 0 Views
Martin Hope
SerikStartAndroid
Asked: 2020-08-18 23:06:02 +0000 UTC

如何向所有 RabbitMQ 侦听器发送消息,Spring boot

  • 0

船运:

@Service
public class ProducerImp implements Producer {
    @Autowired
    private AmqpTemplate amqpTemplate;

    @Value("${jsa.rabbitmq.exchange}")
    private String exchange;

    @Value("${jsa.rabbitmq.routingkey}")
    private String routingKey;


    @Override
    public void produceMsg(MessageDTO msg) {
        amqpTemplate.convertAndSend(exchange, routingKey, msg);
        System.out.println("Send msg = " + msg);
    }
}

监听器(其余相同):

@Component
public class SubscribeServiceImpl {
    @RabbitListener(queues="jsa.queue")
    public void recievedMessage(MessageDTO msg) {
        System.out.println("Recieved Message: " + msg.getMessage());
    }

}

问题是该消息仅到达其中一个听众。如何做到让每个人都来?

spring
  • 1 个回答
  • 10 Views
Martin Hope
SerikStartAndroid
Asked: 2020-10-23 12:48:39 +0000 UTC

Jackson 按 id 序列化

  • 1

有2个对象

   @Entity
@Table(name = "real_estate", schema="data1c")
@Proxy(lazy = false)
public class RealEstate {
    @Id
    @Column(name = "id")
    UUID id;
    @Column(name = "name")
    String name;
    @ManyToOne(cascade={CascadeType.PERSIST, CascadeType.MERGE}, fetch = FetchType.EAGER)
    @JoinColumn(name="city", nullable = false)
    private City city;
    @Column(name = "website")
    String website;
    @Column(name = "logo")
    String logo;
    @Column(name = "logo_web")
    String logoWeb;
    @Column(name = "foto")
    String foto;
    @Column(name = "foto_web")
    String fotoWeb;
    @Column(name = "longitude")
    Double longitude;
    @Column(name = "latitude")
    Double latitude;


    public UUID getId() {
        return id;
    }

    public void setId(UUID id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public City getCity() {
        return city;
    }

    public void setCity(City city) {
        this.city = city;
    }

    public String getWebsite() {
        return website;
    }

    public void setWebsite(String website) {
        this.website = website;
    }

    public String getLogo() {
        return logo;
    }

    public void setLogo(String logo) {
        this.logo = logo;
    }

    public String getLogoWeb() {
        return logoWeb;
    }

    public void setLogoWeb(String logoWeb) {
        this.logoWeb = logoWeb;
    }

    public String getFoto() {
        return foto;
    }

    public void setFoto(String foto) {
        this.foto = foto;
    }

    public String getFotoWeb() {
        return fotoWeb;
    }

    public void setFotoWeb(String fotoWeb) {
        this.fotoWeb = fotoWeb;
    }

    public Double getLongitude() {
        return longitude;
    }

    public void setLongitude(Double longitude) {
        this.longitude = longitude;
    }

    public Double getLatitude() {
        return latitude;
    }

    public void setLatitude(Double latitude) {
        this.latitude = latitude;
    }


    @Override
    public String toString() {
        return "RealEstate{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", city=" + city +
                ", website='" + website + '\'' +
                ", logo='" + logo + '\'' +
                ", logoWeb='" + logoWeb + '\'' +
                ", foto='" + foto + '\'' +
                ", fotoWeb='" + fotoWeb + '\'' +
                ", longitude=" + longitude +
                ", latitude=" + latitude +
                '}';
    }
}

城市对象:

@Entity
@Table(name = "city", schema="data1c")
@Proxy(lazy = false)
public class City  {
    @Id
    @Column(name = "id")
    private UUID id;
    @Column(name = "name")
    private String name;

    public UUID getId() {
        return id;
    }

    public void setId(UUID id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }


    @Override
    public String toString() {
        return "City{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}

我需要从 api 中获取数据并将其上传到数据库。

一个示例 json 是这样的:

 {
            "id": "c67ec057-ea71-11e5-b9a5-b4b52f5405e7",
            "name": "Проект очереди 1",
            "city": "a4874e7c-2906-11e9-80d9-00155d101f25",
            "website": "",
            "logo": "",
            "logoWeb": "",
            "foto": "",
            "fotoWeb": "",
            "longitude": 0,
            "latitude": 0
        }

问题是 city 不是作为一个对象出现的,而是作为一个 id(标识符)出现的。我如何序列化?帮助

我正在尝试这样的事情:

public RealEstate serializerealrest() throws IOException {
        String body = "{\n" +
                "            \"id\": \"c67ec057-ea71-11e5-b9a5-b4b52f5405e7\",\n" +
                "            \"name\": \"Проект очереди 1\",\n" +
                "            \"city\": \"a4874e7c-2906-11e9-80d9-00155d101f25\",\n" +
                "            \"logo\": \"\",\n" +
                "            \"logoWeb\": \"\",\n" +
                "            \"foto\": \"\",\n" +
                "            \"fotoWeb\": \"\",\n" +
                "            \"longitude\": 0,\n" +
                "            \"latitude\": 0\n" +
                "        }";
        RealEstate realEstate = mapper.readValue(body, new TypeReference<RealEstate>(){});
        return realEstate;
    }
java
  • 1 个回答
  • 10 Views
Martin Hope
SerikStartAndroid
Asked: 2020-04-25 15:46:49 +0000 UTC

更新 Angular 中的变量

  • 0

有一个控制器,其中有一个第三方库(是的,在 javastrip 上))))“dhtmlXTreeObject”,它绘制一棵树。他有自己的 ClickHandler。我正在为 click 函数中的全局变量赋值。但问题是变量没有更新。请帮助变量type1 type2。tonclick_checks 和 tonclick 函数。

我了解连接js库不好,tonclick_checks和tonclick在控制器范围内不起作用。但是如何更新变量。非常感谢您提前。

Import {
  AfterViewInit, Component, DoCheck, EventEmitter, NgModule, NgZone, OnDestroy, OnInit,
  Output
} from '@angular/core';

declare var dhtmlXTreeObject: any;


@Component({
  selector: 'ngx-treemo',
  styleUrls: ['./treemo.component.scss'],
  templateUrl: './treemo.component.html',
})
export class TreemoComponent implements AfterViewInit, OnDestroy, OnInit, DoCheck {
  type: ChartType;
  graphic: boolean;
  table: boolean;
  chartTypes: ChartType[];
  data: any;
  modael1: any;
  model: any;
  modaltree: any;
  type1: string;
  type2: string;
  newtype1: string;
  newtype2: string;
  options: any = {};
  themeSubscription: any;

  constructor(private http: HttpClient,
              private theme: NbThemeService,
              private zone: NgZone ) {
    this.graphic = true;
    this.table = false;
    this.chartTypes = ['Bar', 'Line', 'Radar'];
    this.type = 'Bar';
    this.type1 = '523';
    this.type2 = '1t1';
    this.newtype1 = '523';
    this.newtype2 = '0t';

  }


  onChange(deviceValue) {
  }

  ngOnInit(): void {

    const myTree_checks = new dhtmlXTreeObject('treeboxbox_tree_checks', '100%', '100%', 0);
    myTree_checks.setImagePath('../../../../assets/skinstree/web/imgs/dhxtree_web/');
    myTree_checks.enableDragAndDrop(true);
    myTree_checks.setOnClickHandler(this.tonclick_checks);
    myTree_checks.enableMultiLineItems('100%');


    const myTree1 = new dhtmlXTreeObject('treeboxbox_tree_types', '100%', '100%', 0);
    myTree1.setImagePath('../../../../assets/skinstree/web/imgs/dhxtree_web/');
    myTree1.enableDragAndDrop(true);
    myTree1.setOnClickHandler(this.tonclick);
    myTree1.enableMultiLineItems('100%');

    }


  tonclick_checks(id)   {
    this.type1 = id;
   // console.log(this.type1);
  }
  tonclick(id) {
    this.type2 = id;
   // console.log(this.type2);
  }
}
angular2
  • 2 个回答
  • 10 Views
Martin Hope
SerikStartAndroid
Asked: 2020-08-04 13:21:48 +0000 UTC

C# 使用 base64 并保存 pdf 文件

  • 0

有代码

static void Main(string[] args)
    {
        String line=string.Empty;
        for (int i = 1; i < 8; i++)
        {
            using (StreamReader sr = new StreamReader(@"C:\Users\Serik\Desktop\pdf_test\"+i+".txt"))
            {
                line =line+ sr.ReadToEnd();
            }
        }
            byte[] bytes = Convert.FromBase64String(line);
            FileStream stream =
            new FileStream(@"C:\Users\Serik\Desktop\pdf_test\file.pdf", FileMode.CreateNew);
            System.IO.BinaryWriter writer =
                new BinaryWriter(stream);
            writer.Write(bytes, 0, bytes.Length);
            writer.Close();

从 base64 字符串生成一个 pdf 文件。但是有一个假设,如果存储 base64 的字符串对我来说太长(大 pdf 文件),那么程序将无法运行(因为字符串有允许的长度)如何处理这个?除了字符串还能用什么?

c#
  • 1 个回答
  • 10 Views
Martin Hope
SerikStartAndroid
Asked: 2020-08-01 17:17:59 +0000 UTC

在 javascript 中使用数组和 json

  • 0

有json

{"Data": [{"Uzel": "asd","Number": "1","Parent": "0","Update": "3"},{"Uzel": "asd","Number": "1.1","Parent": "1","Update": "2"},{"Uzel": "asd","Number": "2.2.1.2.1.2","Parent": "2.2.1.2.1","Update": "0"},{"Uzel": "asd","Number": "1.1.1","Parent": "1.1","Update": "2"},{"Uzel": "asd","Number": "1.1.2","Parent": "1.1","Update": "0"},{"Uzel": "zxc","Number": "1.1.3","Parent": "1.1","Update": "0"},{"Uzel": "ert","Number": "1.1.4","Parent": "1.1","Update": "0"},{"Uzel": "fgh","Number": "1.2","Parent": "1","Update": "0"},{"Uzel": "cvb","Number": "1.2.1","Parent": "1.2","Update": "0"},{"Uzel": "2012 год ","Number": "1.2.2","Parent": "1.2","Update": "0"},{"Uzel": "uio","Number": "1.2.3","Parent": "1.2","Update": "0"},{"Uzel": "2014 год ","Number": "1.2.4","Parent": "1.2","Update": "0"},{"Uzel": "xxx","Number": "1.2.5","Parent": "1.2","Update": "0"},{"Uzel": "xxx","Number": "1.3","Parent": "1","Update": "0"},{"Uzel": "zzz","Number": "1.3.1","Parent": "1.3","Update": "0"},{"Uzel": "aaa","Number": "1.3.2","Parent": "1.3","Update": "0"},{"Uzel": "qqq","Number": "1.3.3","Parent": "1.3","Update": "0"},{"Uzel": "vvv","Number": "1.3.4","Parent": "1.3","Update": "0"},{"Uzel": "vvv","Number": "1.4","Parent": "1","Update": "0"},{"Uzel": "www","Number": "1.4.1","Parent": "1.4","Update": "0"},{"Uzel": "eee","Number": "1.4.2","Parent": "1.4","Update": "0"},{"Uzel": "uuu","Number": "1.4.3","Parent": "1.4","Update": "0"},{"Uzel": "iii","Number": "1.4.4","Parent": "1.4","Update": "0"},{"Uzel": "ttt","Number": "1.4.5","Parent": "1.4","Update": "0"},{"Uzel": "uuu","Number": "1.4.6","Parent": "1.4","Update": "0"},{"Uzel": "nnn","Number": "1.5","Parent": "1","Update": "0"},{"Uzel": "ooo","Number": "1.5.1","Parent": "1.5","Update": "0"},{"Uzel": "nnn","Number": "1.5.2","Parent": "1.5","Update": "0"},{"Uzel": "ppp","Number": "1.5.3","Parent": "1.5","Update": "0"},{"Uzel": "bbb","Number": "1.5.4","Parent": "1.5","Update": "0"},{"Uzel": "fff","Number": "1.5.5","Parent": "1.5","Update": "0"},{"Uzel": "jjj","Number": "1.5.6","Parent": "1.5","Update": "0"},{"Uzel": "lll","Number": "2","Parent": "0","Update": "0"},{"Uzel": "mmm","Number": "2.1","Parent": "2","Update": "0"},{"Uzel": "eee","Number": "2.1.1","Parent": "2.1","Update": "0"},{"Uzel": "rrr","Number": "2.1.1.1","Parent": "2.1.1","Update": "0"},{"Uzel": "opop","Number": "2.1.1.1.1","Parent": "2.1.1.1","Update": "0"},{"Uzel": "asd","Number": "2.1.1.1.2","Parent": "2.1.1.1","Update": "0"},{"Uzel": "asd","Number": "2.1.1.1.3","Parent": "2.1.1.1","Update": "0"},{"Uzel": "asd","Number": "2.1.1.2","Parent": "2.1.1","Update": "0"},{"Uzel": "asd","Number": "2.1.1.2.1","Parent": "2.1.1.2","Update": "0"},{"Uzel": "fgh","Number": "2.1.1.2.2","Parent": "2.1.1.2","Update": "0"},{"Uzel": "tyu","Number": "2.1.1.3","Parent": "2.1.1","Update": "0"},{"Uzel": "uio","Number": "2.1.1.4","Parent": "2.1.1","Update": "0"},{"Uzel": "zxc","Number": "2.1.1.5","Parent": "2.1.1","Update": "0"},{"Uzel": "dsa","Number": "2.1.1.5.1","Parent": "2.1.1.5","Update": "0"},{"Uzel": "poi","Number": "2.1.2","Parent": "2.1","Update": "0"},{"Uzel": "qaxz","Number": "2.1.2.1","Parent": "2.1.2","Update": "0"},{"Uzel": "ert","Number": "2.1.2.1.1","Parent": "2.1.2.1","Update": "0"}]}

它需要转换成这个

 {"Data": [{"Uzel": "asd","Number": "1","Parent": "0","Update": "3", children:[{"Uzel": "asd","Number": "1.1","Parent": "1","Update": "2","children":[{"Uzel": "asd","Number": "1.1.1","Parent": "1.1","Update": "2"},{"Uzel": "asd","Number": "1.1.2","Parent": "1.1","Update": "0"},{"Uzel": "zxc","Number": "1.1.3","Parent": "1.1","Update": "0"},{"Uzel": "ert","Number": "1.1.4","Parent": "1.1","Update": "0"}],{"Uzel": "fgh","Number": "1.2","Parent": "1","Update": "0"}}]}]}

也就是再增加一个参数children,把parent与另一个元素的编号相关联的数组的所有元素都放到这个元素里面。

嵌套是多层次的——孩子可以有自己的孩子,他有自己的孩子,等等。

我明白递归,但我做不到,请帮忙。我不发送代码,因为根不正确。JavaScript

javascript
  • 1 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5