<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[typdef_C的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/typdef_C</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; typdef_C]]></copyright><item><title><![CDATA[分布式锁解决方案]]></title><link>https://blog.youkuaiyun.com/typdef_C/article/details/107216201</link><guid>https://blog.youkuaiyun.com/typdef_C/article/details/107216201</guid><author>typdef_C</author><pubDate>Wed, 08 Jul 2020 22:00:49 +0800</pubDate><description><![CDATA[常用的分布式锁的实现有三种方式：基于redis实现、基于MySQL实现、基于Zookeeper实现。
分布式锁要解决的问题有：
1、在分布式系统环境下一个方法同一时间只能被一个机器的一个线程执行
2、锁是可重入锁
3、锁是阻塞锁（根据业务需要决定）
4、锁是公平锁，也是根据业务需要爵士那个
5、有高可用的获取锁和释放锁的功能
6、 获取锁和释放锁的性能要好
MySQL 实现分布式锁
基于MySQL实现的分布式锁，基于MySQL的InnoDB的行锁来实现，有两种实现方式：悲观锁和乐观锁。
直接创建一张锁表，通]]></description><category></category></item><item><title><![CDATA[父子进程&孤儿进程&僵尸进程小小总结]]></title><link>https://blog.youkuaiyun.com/typdef_C/article/details/107216121</link><guid>https://blog.youkuaiyun.com/typdef_C/article/details/107216121</guid><author>typdef_C</author><pubDate>Wed, 08 Jul 2020 21:56:07 +0800</pubDate><description><![CDATA[unix/linux中，子进程通过父进程创建。子进程的结束和父进程的运行是异步状态，在一个进程工作终止后他的父进程需要调用wait或waitpid系统调用取得子进程的终止状态。
孤儿进程
：一个父进程退出，而它的一个或多个子进程还在运行，那么这些子进程将成为孤儿进程。孤儿进程将位init进程（pid=1）收养，并有init进程对他们进行状态的收集工作
孤儿进程的收集任务交由init进程处理，每当出现孤儿进程，内核将孤儿进程的父进程设置为init进程， init进程会循环wait他的子进程。因此孤儿进程没有什]]></description><category></category></item><item><title><![CDATA[SSO单点登录总结]]></title><link>https://blog.youkuaiyun.com/typdef_C/article/details/107215853</link><guid>https://blog.youkuaiyun.com/typdef_C/article/details/107215853</guid><author>typdef_C</author><pubDate>Wed, 08 Jul 2020 21:41:26 +0800</pubDate><description><![CDATA[Single Sign On单点登录
单系统登录：用户登录时验证用户账号密码，将Token写入Cookie中；用户数据保存在session；请求时带上cookie，检查有没有登录。
多系统登录：为了合理利用资源和降低耦合性，将单系统拆分为多个子系统。单点登录就是在多个系统中用户只需登录一次，就可以访问所有相互信任的系统。
多系统登录问题：
1、 session不共享：Session信息（Token）存储在Redis中。
2、 Cookie跨域：A系统登录后返回给用户A的cookie，访问B系统时不会带此co]]></description><category></category></item><item><title><![CDATA[分布式事务方案总结]]></title><link>https://blog.youkuaiyun.com/typdef_C/article/details/107180790</link><guid>https://blog.youkuaiyun.com/typdef_C/article/details/107180790</guid><author>typdef_C</author><pubDate>Wed, 08 Jul 2020 21:37:17 +0800</pubDate><description><![CDATA[事务的不同操作位于不同节点上，需要保证事务的ACID特性。
1、2PC
两阶段提交Two-phase Commit，2PC，通过引入协调者来协调参与者的行为。并最终决定参与着是否要真正执行事务。

准备阶段：协调者给每个参与者发送prepare消息，参与者事务执行失败返回失败，或执行本地事务，写本地的redo和undo日志但是不提交，参与者回发事务执行结果。
提交阶段：如果每个参与者上事务都执行成功，事务协调者发出通知让参与者提交事务，否则发送通知回滚事务。
存在问题：
● 同步阻塞：所有事务参与者在等待其]]></description><category></category></item><item><title><![CDATA[Git一些命令与总结]]></title><link>https://blog.youkuaiyun.com/typdef_C/article/details/107137199</link><guid>https://blog.youkuaiyun.com/typdef_C/article/details/107137199</guid><author>typdef_C</author><pubDate>Sun, 05 Jul 2020 12:17:01 +0800</pubDate><description><![CDATA[Git
Git简介
Git是一个开源的分布式版本控制系统，同时也是内容管理系统，工作管理系统。
Git与SVN区别：
1、 Git是分布式的，SVN是集中式的
2、 Git吧内容按元数据方式存储，SVN按文件
3、 Git分支和SVN分支不同
4、 Git没有一个全局的版本号，SVN有
5、 Git内容完整性优于SVN
中心服务器：中心服务器用来交换每个用户的修改，没有中心服务器也能工作，GitHub就是一个中心服务器。
Git工作流
Git工作流程：
1、 克隆Git资源作为工作目录
2、 在克隆资源上添]]></description><category></category></item><item><title><![CDATA[守护进程一点点知识]]></title><link>https://blog.youkuaiyun.com/typdef_C/article/details/107137137</link><guid>https://blog.youkuaiyun.com/typdef_C/article/details/107137137</guid><author>typdef_C</author><pubDate>Sun, 05 Jul 2020 12:09:04 +0800</pubDate><description><![CDATA[进程组
● 每个进程属于一个进程组
● 每个进程组都有一个进程组好，该号等于该进程组组长的PID
● 一个进程智能为自己或子进程设置进程组ID号
会话期
会话期session是一个或多个进程组的集合
建立一个会话期：setsid()，调用该函数的进程不是一个进程组组长，则创建一个新的会话期：
● 此进程变成该session首进程
● 此进程变成一个新进程组的组长进程
● 此进程无控制终端。若调用前有，则与终端联系被解除，若该进程为一个进程组组长则返回错误。
守护进程
守护进程是在后台运行不受终端控制的进程。]]></description><category></category></item><item><title><![CDATA[关于JMM（java内存模型）]]></title><link>https://blog.youkuaiyun.com/typdef_C/article/details/107137123</link><guid>https://blog.youkuaiyun.com/typdef_C/article/details/107137123</guid><author>typdef_C</author><pubDate>Sun, 05 Jul 2020 12:07:05 +0800</pubDate><description><![CDATA[JMM（java内存模型）
JMM的全程是Java&nbsp;Memory&nbsp;Model&nbsp;java内存模型。
&nbsp;&nbsp; &nbsp;JVM定义java内存模型来屏蔽各种硬件和操作系统的内存访问差异，以实现java程序在任何平台下达到一致的访问效果。其主要目标是定义程序中各个变量的访问规则，即在虚拟机中将变量存储到内存和从内存中取出变量的底层细节。
&nbsp; &nbsp; JMM设计系统中存在主内存和工作内存。所有的变量都存储在主内存中，对于所有线程共享。每条线程有自己的]]></description><category></category></item><item><title><![CDATA[堆排序]]></title><link>https://blog.youkuaiyun.com/typdef_C/article/details/102611137</link><guid>https://blog.youkuaiyun.com/typdef_C/article/details/102611137</guid><author>typdef_C</author><pubDate>Fri, 18 Oct 2019 09:33:17 +0800</pubDate><description><![CDATA[1.大顶堆与小顶堆
2.堆排序介绍
3.堆排序过程示意
4.堆排序数据结构实现
5.java代码

]]></description><category></category></item><item><title><![CDATA[快速排序]]></title><link>https://blog.youkuaiyun.com/typdef_C/article/details/102605846</link><guid>https://blog.youkuaiyun.com/typdef_C/article/details/102605846</guid><author>typdef_C</author><pubDate>Thu, 17 Oct 2019 15:51:12 +0800</pubDate><description><![CDATA[1.理解
*方法基本思路——分治法
1.在数列中取出一个数作为基准数
2.分区，找到基准数存储的位置i,使基准数前全部是小于它的数，后面全部是大于他的数。数列中第i+1小的数即为此基准数
3.对基准数的前后两分区递归调用第二部。知道各个区间只剩一个为止

数组a,i=0,j=9,基准数tmp=5,此时a[0]为止空出存入tmp位置
基准数后面的数需要大于基准数，从后向前寻找a[j】&lt; tmp...]]></description><category></category></item><item><title><![CDATA[IPFS pubsub功能的使用]]></title><link>https://blog.youkuaiyun.com/typdef_C/article/details/102365906</link><guid>https://blog.youkuaiyun.com/typdef_C/article/details/102365906</guid><author>typdef_C</author><pubDate>Tue, 08 Oct 2019 09:46:29 +0800</pubDate><description><![CDATA[什么是 pubsub？
发布订阅模式(Publish–subscribe pattern)，最早是由苹果公司在 Mac OS 引入。
消息的发送者（publishers）不直接将消息发送给接收者(subscriber)。而是将消息分门别类，发送者并不知道也无需知道接收者的存在。而接收者只需要订阅一个或者多个类别的消息类，只接收感兴趣的消息，不知道也无需知道发布者的存在。（https://en.wi...]]></description><category></category></item><item><title><![CDATA[Ubuntu“有线未托管”问题]]></title><link>https://blog.youkuaiyun.com/typdef_C/article/details/101343091</link><guid>https://blog.youkuaiyun.com/typdef_C/article/details/101343091</guid><author>typdef_C</author><pubDate>Wed, 25 Sep 2019 08:24:39 +0800</pubDate><description><![CDATA[Linux里面有两套管理网络连接的方案：
/etc/network/interfaces（/etc/init.d/networking）
Network-Manager
两套方案是冲突的，不能同时共存。
第一个方案适用于没有桌面的环境，如：服务器；或者那些完全不需要改动连接的场合。
第二套方案使用于有桌面的环境，特别是网络连接情况随时会变的情况。
这两个为了避免冲突，又能共享配置，就有了下面的解决...]]></description><category></category></item><item><title><![CDATA[openstack创建云主机问题]]></title><link>https://blog.youkuaiyun.com/typdef_C/article/details/101064064</link><guid>https://blog.youkuaiyun.com/typdef_C/article/details/101064064</guid><author>typdef_C</author><pubDate>Fri, 20 Sep 2019 16:09:48 +0800</pubDate><description><![CDATA[创建云主机一直失败，查了日志只有nova-conductor.log出现error如下
ERROR nova.scheduler.utils [req-17e50154-2c8b-48b3-8788-0000051bc45e bef013ac1ed5430ead16590618821576 597b213656ff43889490bd26dfc8a238 - default default] [i...]]></description><category></category></item><item><title><![CDATA[Ubuntu更改网卡IP地址后主机ping不同内网主机]]></title><link>https://blog.youkuaiyun.com/typdef_C/article/details/101054928</link><guid>https://blog.youkuaiyun.com/typdef_C/article/details/101054928</guid><author>typdef_C</author><pubDate>Fri, 20 Sep 2019 11:26:22 +0800</pubDate><description><![CDATA[Ubuntu主机修改了网段，从10.109.252.0/24 换成了10.109.253.0/24,修改了/etc/network/interfaces之后，主机能够ping通百度，但是怎么也ping不同学校内网其他主机。
是网卡还有原来252网段的IP地址：
ip address show enp11s0f0  查看网卡信息

发现还有原来网段的IP地址
ip addr del 10.109.2...]]></description><category></category></item><item><title><![CDATA[Xshell连接服务器卡顿问题]]></title><link>https://blog.youkuaiyun.com/typdef_C/article/details/100985913</link><guid>https://blog.youkuaiyun.com/typdef_C/article/details/100985913</guid><author>typdef_C</author><pubDate>Wed, 18 Sep 2019 15:55:11 +0800</pubDate><description><![CDATA[Xshell连接Ubuntu系统的服务器突然变得极度卡顿，打字一个字一个字往出蹦，命令回车直接卡死，参考网上类似sshd_config文件UseDNS = no的方法也没用。网络时延很正常。
最后直接卸载openssh-server重新安装了一遍。感人的OK了
卸载以及重装ssh：
1.卸载ssh
apt-get purge openssh-server
2.安装ssh
sudo apt-get ...]]></description><category></category></item><item><title><![CDATA[Ubuntu连接校园网命令]]></title><link>https://blog.youkuaiyun.com/typdef_C/article/details/100924516</link><guid>https://blog.youkuaiyun.com/typdef_C/article/details/100924516</guid><author>typdef_C</author><pubDate>Tue, 17 Sep 2019 14:02:50 +0800</pubDate><description><![CDATA[校园网关页面

curl -d “user=学号” -d “pass=******” http://10.3.8.211/login

]]></description><category></category></item><item><title><![CDATA[IPFS的路由系统]]></title><link>https://blog.youkuaiyun.com/typdef_C/article/details/100781924</link><guid>https://blog.youkuaiyun.com/typdef_C/article/details/100781924</guid><author>typdef_C</author><pubDate>Thu, 12 Sep 2019 19:52:56 +0800</pubDate><description><![CDATA[ipfs系统的节点查找有两个需求：

第一找到其他节点地址
第二找到存储有特定数据的节点
IPFS路由层数据结构使用的是S/Kademlia和Coral技术的分布式松散哈希表（DSHT），IPFS的DSHT结构会根据所存数据的大小值进行区分：小的值（等于或小于1KB）直接存储在DHT上，更大的值，DHT只存储值索引，这个索引就是一个对等节点的NodeId，该对等节点可以提供对该类型值的具体服务
I...]]></description><category></category></item><item><title><![CDATA[IPFS小汇总]]></title><link>https://blog.youkuaiyun.com/typdef_C/article/details/100781818</link><guid>https://blog.youkuaiyun.com/typdef_C/article/details/100781818</guid><author>typdef_C</author><pubDate>Thu, 12 Sep 2019 19:45:55 +0800</pubDate><description><![CDATA[一．IPFS简介及提出动机
星际文件系统IPFS（Inter-Planetary File System）是一个面向全球的、点对点的分布式版本文件系统，目标是为了补充甚至是取代目前统治互联网的超文本传输协议（HTTP），将所有具有相同文件系统的计算设备连接在一起。原理用基于内容的地址替代基于域名的地址，也就是用户寻找的不是某个地址而是储存在某个地方的内容，不需要验证发送者的身份，而只需要验证内容的...]]></description><category></category></item><item><title><![CDATA[IPFS私有网络搭建]]></title><link>https://blog.youkuaiyun.com/typdef_C/article/details/100775983</link><guid>https://blog.youkuaiyun.com/typdef_C/article/details/100775983</guid><author>typdef_C</author><pubDate>Thu, 12 Sep 2019 16:42:11 +0800</pubDate><description><![CDATA[1. 安装IPFS Windows&amp;Ubuntu：
https://blog.youkuaiyun.com/typdef_C/article/details/100775365
2. 各个节点共享同一个密钥，在其中一个节点创建密钥：
Ubuntu：
安装go-lang :
sudo apt-get install golang
安装git
sudo apt-get install git
创建密钥：
...]]></description><category></category></item><item><title><![CDATA[Windows&Ubuntu 安装IPFS]]></title><link>https://blog.youkuaiyun.com/typdef_C/article/details/100775365</link><guid>https://blog.youkuaiyun.com/typdef_C/article/details/100775365</guid><author>typdef_C</author><pubDate>Thu, 12 Sep 2019 16:23:12 +0800</pubDate><description><![CDATA[Windows

https://dist.ipfs.io/#go-ipfs 下载Windows对应版本


2. 解压文件
3. 打开命令行，进入解压出的go-ipfs目录


4. 初始化IPFS节点 ： ipfs init
5. 启动ipfs节点： ipfs daemon
6. 另起一命令行，进入go-ipfs目录，使用ipfs
Ubuntu
1.安装ipfs
sudo snap insta...]]></description><category></category></item></channel></rss>