- 博客(25)
- 收藏
- 关注
原创 RPC框架的基本原理
如果消费者每次rpc调用都要查注册中心,那么效率就太低了,因此消费者会有一个本地缓存,存储注册中心的注册信息副本,这样每次都去本地缓存拿注册信息,提高效率。此时仅通过RPC框架就做不到了:因为框架会打成一个jar包,被消费者和提供者引用,消费者和提供者在实际启动中,肯定是在两个进程空间中,如果框架jar包中提供注册中心的功能,即使提供者注册了,只在提供者的进程空间内能拿到,而消费者肯定拿不到,这样的话消费者拿不到服务注册的内容,无效注册。3、服务注册(对于提供者而言),服务发现(对于消费者而言);
2024-11-01 14:47:41
395
原创 Spring学习笔记02-Transactional注解原理及失效情况分析
当我们在外面通过Spring拿到Bean对象之后,调用m1方法,其实是通过代理对象访问了m1方法,这个方法中增强了原对象的m1方法,即前后包裹了事务处理,但真正执行业务逻辑时,当然,这里是说m2上的事务在这里失效了,但是m1的事务仍然有效的,m2在m1中被调用,仍然是被包裹在m1上标识的事务之内的,示例代码中m1和m2都使用了默认的事务传播机制。,而target对象并不是代理对象,Spring就不会对m2包裹上事务的处理,m2上的Transactional在这种调用的情况下,就失效了。
2024-09-07 00:07:35
482
1
原创 Spring学习笔记01-解决循环依赖
以上会生成两个a的半成品代理对象,出现冲突,因此需要在(1)执行时,记录入一个map中,然后(2)执行时,从这个map中取值,看是否存在,如果存在,则不执行,只使用已创建的a半成品代理对象,这个map就是二级缓存。引入一个 map(暂时命名myMap),该map记录半成品bean,然后a对象注入b时,发现b未创建,此时创建b,而创建时发现需要依赖a,那么此时不再直接创建a,而是去myMap中查找是否有a,如果有a则拿出。a对象注入b,b初始化需要注入a,此时a正在创建,由此形成循环依赖。
2024-09-06 23:27:47
230
原创 Pthread线程同步总结——APUE学习笔记
扩展一下,如果本来不止AB两个线程在阻塞,而是多个线程在阻塞,那么因为使用if,所有的线程可能都被唤醒,接着不管条件x是否满足,全都往下执行,则发生了“惊群效应”。首次判断时x==1,此时进入if块内,执行wait函数,当前线程阻塞。以上,不管是为了防止虚假唤醒或是惊群效应,本质都是由于线程被唤醒是一回事、条件满足是另一回事,被唤醒不代表条件一定被满足,因此唤醒后需要再检查一遍条件,只有使用while才能在循环中再判断一次,而if不能,所以pthread_cond_wait函数常与while搭配使用。
2023-06-29 18:25:02
267
1
原创 迭代(非递归)遍历二叉树
详解在代码注释,后序遍历比较复杂,主要因为在将某一点加入结果集时,需要判定它的左右子节点是否被访问过(已加入结果集),因此将访问过的节点值设为999,以便压栈时检查。// 迭代先序vector<int> preorderTraversal(TreeNode* root) { vector<int> ret; stack<TreeNode*> stk; // 辅助栈 while (root || !stk.empty()) {
2022-03-24 10:06:09
661
原创 Linux IO多路复用(多路转接)
IO多路复用(多路转接)在没有IO多路复用技术前,进程在同一时间只能监控一个IO状态(一个文件描述符的状态),例如A和B两个文件在操作,定的顺序是A前B后,那么在A阻塞过程中、B在后面也是不能被操作的,这样会造成资源浪费、响应缓慢。IO多路复用:同时监控多个IO文件描述符状态,如果没有准备好的描述符、则进程始终处于睡眠状态;如果有准备好的描述符、则告诉进程,进程开始处理就绪的描述符。///////////////////////////////////////////////////////////
2021-03-17 15:48:56
361
原创 Mysql导出表、导入表相关操作
导出数据1、备份全部数据库的数据和表结构mysqldump -uroot -ppassword -A >all.sql2、只备份表结构,不备份数据mysqldump -uroot -ppassword -A -d > database.sql3、只备份数据库,不备份表结构mysqldump -uroot -ppassword -A -t > data.sql4、备份单个数据库的数据和表结构(只备份数据或者表结构可以用-t或者-d)mysqldump -uro
2020-12-16 09:01:38
316
1
原创 Mysql查询慢sql
# 查询慢sql语句:show variables like 'slow_query_log'; -- 查询是否开启记录慢sql语句结果如下:+----------------+-------+| Variable_name | Value |+----------------+-------+| slow_query_log | ON |+----------------+-------+如果是OFF,则执行以下语句:set global slow_query_log='...
2020-10-30 10:37:08
368
转载 签名验签原理(转载)
一、公钥加密假设一下,我找了两个数字,一个是1,一个是2。我喜欢2这个数字,就保留起来,不告诉你们(私钥),然后我告诉大家,1是我的公钥。我有一个文件,不能让别人看,我就用1加密了。别人找到了这个文件,但是他不知道2就是解密的私钥啊,所以他解不开,只有我可以用 数字2,就是我的私钥,来解密。这样我就可以保护数据了。我的好朋友x用我的公钥1加密了字符a,加密后成了b,放在网上。别人偷到了这个文件,但是别人解不开,因为别人不知道2就是我的私钥, 只有我才能解密,解密后就得到a。这样,我们就可以传送加
2020-05-13 13:50:47
8763
1
原创 理解 hashCode 和 equals 方法的概念与联系
来源:hashCode和equals方法都是 Object类所带的方法,所以在日常工作中,要么我们不会动这两个方法,要么就是Override(重载)这两个方法。默认值: (1)hashCode方法返回值是用Object对象的存储地址; (2)equals方法也是以Object对象的存储地址作为比较,判定结果为true/false;理解概念: (1)hashCode方法...
2020-05-05 19:30:53
296
原创 Docker基本知识
Docker常用命令镜像:docker search [镜像名] # 示例: docker search redis # 搜索redis的镜像docker pull [镜像名]:[版本号] # 示例: docker pull redis:3.2 # 下载redis3.2版本的镜像,如果版本号没写,则默认latest,也就是最新版本docker images ...
2020-02-20 11:11:25
286
转载 Golang项目结构
出自 https://www.cnblogs.com/ghgyj/p/4051768.html其实golang的工程管理还是挺简单的,完全使用目录结构还有package名来推导工程结构和构建顺序。当然,首先要说的是环境变量GOPATH,项目构建全靠它。这么说吧,想要构建一个项目,就要将这个项目添加到GOPATH,项目构建全靠它。这么说吧,想要构建一个项目,就要将这个项目添加到GOPAT...
2019-06-22 19:50:03
1241
转载 ubuntu上传代码github
一、Ubuntu下安装GitUbuntu12.04 LTS默认是已经安装Git的,可以使用 git --version 测试是否安装。如果没有安装,使用命令: sudo apt-get install git git-core 安装git二、ssh认证在Ubuntu下使用ssh命令连接github.com的SSH服务,登录名为git@github.com(所有Git
2016-04-11 16:38:55
542
转载 Tmux快捷键
类似各种平铺式窗口管理器,tmux使用键盘操作,常用快捷键包括:Ctrl+b激活控制台;此时以下按键生效系统操作?列出所有快捷键;按q返回d脱离当前会话;这样可以暂时返回Shell界面,输入tmux attach能够重新进入之前的会话D选择要脱离的会话;在同时
2015-07-01 17:26:17
430
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人