`
文章列表

[置顶] 手写RPC框架

    博客分类:
  • RPC
rpc 
  源码地址:https://github.com/ItGeneral/code-framework 微信公众号原文:https://mp.weixin.qq.com/s/z1kIqvlX92oun1Cpm71Tsw   RPC(Remote Procedure Call Protocol)远程过程调用协议,采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息的到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待 ...
微信公众号文章列表:关注公众号(coding_song)阅读更清晰 微信原文地址:https://mp.weixin.qq.com/s/fx1tDzezuE3NWqGpIOU7og   现象 Controller类中调用Service类中标有@Async或@Transactional注解的方法,此方法上的@Async或@Transactional会生效,而在Service类中A方法直接调用标有@Async或@Transactional注解的B方法,B方法上的@Async或@Transactional注解不会生效;如果A方法中重新通过动态代理生成一个Service Bean类,再通过这个 ...
微信公众号文章列表:关注公众号(coding_song)阅读更清晰,附件为微信二维码   Queue 队列接口,是一个为在处理前保存元素而设计的集合 Queue接口方法
微信公众号文章列表:关注公众号(coding_song)阅读更清晰,附件为微信二维码     本文微信公众号原文链接:https://mp.weixin.qq.com/s/socZ7J3xSH3HXeoEjIQxtg Tomcat server.xml配置 <Servershutdown="SHUTDOWN"port="8005">
微信公众号文章列表:关注公众号(coding_song)阅读更清晰,附件为微信二维码 应用场景 一个服务下有多个Module,启动当前服务,每个Module生成一个Docket文档,方便分别查看每个Module下的接口 功能描述 (1)获取项目服务中的所有的请求URL (2)获取每个请求URL对应的Controller所在的包,保存包名称到Set集合中,并且排除spring框架和springfox框架的包 (3)如果每个Module下的所有Controller类,都定义在同一个包下,则Set集合中的一条数据对应一个Module (4)遍历Set集合,一条数据生成一个 ...
微信公众号文章列表:关注公众号(coding_song)阅读更清晰,附件为微信二维码 原文链接:https://mp.weixin.qq.com/s/c3uU_t2pejZe4ybQ-wVcOg   Swagger依赖 <dependency>
微信公众号文章列表:关注公众号(coding_song)阅读更清晰,附件为微信二维码 一次Http请求都经历了什么:  浏览器请求/响应报文分析 TCP建立连接及关闭连接(三次握手和四次挥手) Tomcat监听并接受Socket连接流程(Tomcat N ...

[置顶] 初识Linux

原文请参考微信公众号(欢迎关注公众号:coding_song):https://mp.weixin.qq.com/s/uxC3m8t6TM6CgDkkahtEdQ  阅读格式比下文清晰   Linux启动过程 启动流程:操作系统->/boot -> init进程 -> 运行级别 -> /etc/rc.d->
原文请参考微信公众号(欢迎关注公众号:coding_song):https://mp.weixin.qq.com/s/R50Eh4kTDtA031i-yMUZAw    Callable&Future Callbale描述的是抽象的计算任务,有明确的起点,并且最终会结束;   @FunctionalInterface public interface Callabl ...
原文请参考微信公众号:https://mp.weixin.qq.com/s/RWYeM-n0k7IPVzqMH8vBIw  原创: 后端技术笔记 后端技术笔记 前天 1、double和long是64位数值变量,JVM允许(非volatile类型的double和long)将64位的读操作或写操作分解为两个32位的操作。当读取一个非volatile类型的long变量时,如果对该变量的读操作和写操作在不同的线程中执行,name很可能读取到某个值的高32位和另一个值得低32位;因此在多线程情况下,用volatile变量修饰double和long,或用锁才能保证其线程安全。 2 ...
redis分布式锁原理 redis命令 setnx(key,value):SET if Not eXists,当且仅当key不存在时,value值才能成功设值,返回成功;当key已存在,则设值失败,返回失败 getSet(key,value):将给定key 的值设为value,并返回key的旧值 expire(key,timeout,timeUnit):设值key的过期时间 delete(key):删除key 加锁 调用setnx(key, value)返回成功,则表明成功获取到锁,获取到锁后,设置key的过期时间;调用setnx(key, value)返回失败,则表明别的线程已占有该锁,需等 ...
通过微信公众号查看本文,效果更明显哦,文章链接:https://mp.weixin.qq.com/s/VeSCrZ-dlPdLKGTY2xoZ7w 一、zookeeper介绍 zookeeper是一个分布式的、开放源码的分布式应用程序协调服务,是Hadoop和Hbase的重要组件。在zook中,znode是一个跟Unix文件系统路径相似的节点,可以往这个节点存储或获取数据,通过客户端可对znode进行增删查改操作,还可以注册watcher监控znode的变化。 Zookeeper节点类型:持久节点、持久顺序节点、临时节点、临时顺序节点 对于持久节点和临时节点,同一个znode下,节点名称是唯一 ...
本文从4个方面来分析HashMap: 一、初始化HashMap 二、HashMap的put方法源码 三、HashMap的get方法源码 四、为什么HashMap是线程不安全的 具体内容请参考我在微信公众号中的文章:https://mp.weixin.qq.com/s/ZPl2ND9j2phSBBpod4fGSg
可以参考微信公众号中的文章,格式比较清晰,链接:http://mp.weixin.qq.com/s/eZpFfLtpJ4zE24HLYliUyA 欢迎关注微信公众号 1、配置配置文件,扫描mapper文件  <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">     <property name="dataSource" ref="dataSource"/>     <prope ...
可在微信公众中查看该文章:http://mp.weixin.qq.com/s/qKR04b2aGBVdk30TsDZXdw 1、虚拟机的类加载机制:虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型; 2、在java语言中,类的加载、连接和初始化过程都是在程序运行期间完成的;缺点:令类加载时增加性能开销;优点:会为java应用程序提供高度的灵活性,可动态加载类和动态连接; 3、类加载生命周期:加载、验证、准备、解析、初始化、使用、卸载;验证、准备、解析这3个过程统称为连接; 4、触发初始化阶段:遇到new、getsta ...
Global site tag (gtag.js) - Google Analytics