Paxos算法
Paxos算法
Paxos 算法是莱斯利·兰波特(Leslie Lamport)提出的一种基于消息传递的分布式共识算法。【维基百科说过:Paxos常被误称为“一致性算法”。但是“一致性(consistency)”和“共识(consensus)”并不是同一个概念。Paxos是一个共识(consensus)算法。】
分布式系统中的节点通信存在两种模型:共享内存(Shared memory)和消息传递(Messages passing)。
基于消息传递通信模型的分布式系统,不可避免的会发生以下错误:进程可能会慢、被杀死或者重启,消息可能会延迟、丢失、重复。
在最普通的 Paxos 场景中,先不考虑可能出现“消息篡改”。(即拜占庭错误的情况:允许军中可能有叛徒,又要保证战争胜利,引申到计算机领域,成为一种容错理论)Paxos 算法解决的问题是在一个可能发生消息延迟、丢失、重复的分布式系统中,如何对某个值的看法相同,保证无论发生以上任何异常,都不会破坏决议的共识机制。
为描述Paxos算法,Lamport虚拟了一个叫做Paxos的希腊城邦,这个岛按照议会民主制的政治模式制订法律,但是没有人愿意 ...
ImageMagick图像编辑
ImageMagick官网:ImageMagick
GitHub:ImageMagick·github
简介ImageMagick是一套功能强大、稳定而且开源的工具集和开发包,可以用来读、写和处理超过89种基本格式的图片文件,包括流行的TIFF、JPEG、GIF、 PNG、PDF以及PhotoCD等格式。利用ImageMagick,可以根据web应用程序的需要动态生成图片, 还可以对一个(或一组)图片进行改变大小、旋转、锐化、减色或增加特效等操作,并将操作的结果以相同格式或其它格式保存,对图片的操作,即可以通过命令行进行,也可以用C/C++、Perl、Java、PHP、Python或Ruby编程来完成。
现在有许多优秀的图像编辑器可用,你可能会想知道为什么有人会选择一个非 GUI 的、基于命令行的程序,如 ImageMagick。一方面,它非常可靠。但更大的好处是,它允许你建立一个以特定的方式编辑大量图像的方式。
安装步骤1、首先第一步肯定是去官网下载安装包:http://www.imagemagick.org/script/download.php
2、下载完成之后(这里使用的操 ...
Threadlocal相关问题
ThreadLocal是什么?ThreadLocal类提供线程局部变量。这些变量与普通的对应变量的不同之处在于:每个访问一个变量的线程(通过它的get或set方法)都有自己独立初始化的变量副本。ThreadLocal实例通常是类中的私有静态字段,它们希望将状态与线程相关联(例如,用户ID或事务ID)。
只要线程是存活的,并且ThreadLocal实例是可访问的,每个线程都持有对其线程局部变量副本的隐式引用;在一个线程消失后,它的所有线程本地实例副本都要服从垃圾收集(除非存在对这些副本的其他引用)。
ThreadLocal.set()方法整体流程如下:
每次进入set()方法,都会调用Thread.currentThread()方法获取到当前的线程对象;
然后调用 getMap(t)获取当前线程中的ThreadLocalMap对象,通过源码调试,我们知道ThreadLocalMap类型的threadLocals引用位于java.lang.Thread类中,这样对可以断定,每个Thread都持有一个ThreadLocalMap;
getMap(t)后会判断结果是否为空,非空则调用Thr ...
BeanUtils.copyProperties()
org.springframework.beans.BeanUtils
利用反射机制对JavaBean的属性进行处理,对对象进行属性值的复制。如果 两个对象之间存在名称不相同的属性,则 BeanUtils 不对这些属性进行处理,需要程序手动处理。
减少大量get/set代码,方便阅读。
对象a拷贝到对b
1BeanUtils.copyProperties(a, b);
注意:(org.apache.commons.beanutils.BeanUtils)中的BeanUtils.copyProperties(A,B)方法是将B中的值赋值给A。
MyBatis 高级
一. MyBatis 多表操作
创建之后用到的表 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758create database db4;use db4;create table card( id int primary key auto_increment, number varchar(20), pid int, constraint cp_fk foreign key (pid) references person(id));insert into card values (null,'12345',1);insert into card values (null,'23456',2);inse ...
MyBatis入门
◉MyBatis
一、MyBatis简介
1.什么是MyBatis
MyBatis 是一款优秀的持久层框架,用于简化 JDBC 开发。
MyBatis 本是 Apache 的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。
官网:https://mybatis.org/mybatis-3/zh/index.html
2.持久层
负责将数据到保存到数据库的那一层代码。
JavaEE三层架构:表现层、业务层、持久层。
3.什么是框架
框架就是一个半成品软件,是一套可重用的、通用的、软件基础代码模型。
在框架的基础之上构建软件编写更加高效、规范、通用、可扩展。
二、MyBatis快速入门
1.环境准备
创建数据库和数据表,并添加测试数据
-- 创建mybatis数据库
CREATE DATABASE mybatis;
-- 使用mybatis数据库
USE mybatis;
– 创建用户表CREATE TABLE tb_us ...
Notion
ALL-IN-ONE超赞的视频教程!
Notion 中文文档
(官方中文在路上)
Notion 官方支持
https://ruddy-wedelia-91f.notion.site/Personal-Dashboard-5b714053197f4913b13f0ca69afcede8
放一波美图😍
更衣人偶坠入爱河
Dress-up darling
BEIJING1989
///
想去
Norway
(function(){var player = new DPlayer({"container":document.getElementById("dplayer1"),"theme":"#FADFA3","loop":true,"video":{"url":"https://link.ap1.storjshare.io/jubhjvxksshv6hhzl7tf4vdjv6zq/blog%2FNorway.mp4?view","pic":"https://res.cloudinary.com/di22igym7/image/upload/v1634522771/samples/blog/norway_hivlcw.png"}});window.dplayers||(window.dplayers=[]);window.dplayers.push(player);})()