-
十分钟完成的操作系统att版本
十分钟完成的操作系统at&t版本-《一个操作系统的实现》以前看了《一个操作系统的实现》这本书,使用了nasm汇编和bochs虚拟机来编写一个“操作系统”。做了清华大学ucore实验后,我感觉使用at&t汇编和qemu虚拟机来实现一个“操作系统”更加容易调试操作系统,因此改写了成at&t版本。at&t汇编版本代码如下:.code16.section .text.global _start _start: movw %cs, %ax movw %ax, %d...…
-
WSL图形界面
WSL图形界面我的电脑是windows系统,以前我使用Linux都是跑在virtualbox虚拟机下。后来有了vagrant很容易就能安装Linux虚拟机。所以一直停留在virtualbox阶段。虽然知道微软Linux子系统WSL,但是一直认为它是阉割版的linux,所以没打算转移到WSL上来。最近学习动手编写操作系统,需要安装qemu虚拟机来调试操作系统,这是完全使用命令行来启动的虚拟机,运行时会弹出一个图形界面。同时vagrant和本地的windows互发文件也不方便,因此就把注意力转...…
-
Zookeeper源码调试环境踩坑记录
Zookeeper源码调试环境踩坑记录1. 下载源码本文基于zookeeper源码3.6.1版本。zookeeper的源码在github上,国内下载极慢,还好国内代码托管平台gitee克隆了github上著名的开源项目,从这里下载快多了2. maven下载jar包项目clone到idea后,maven开始自动下载依赖的jar包。没想到速度竟然可以这么慢,索性直接改了maven的settings.xml配置,换成阿里云的maven仓库,果然速度蹭蹭蹭一下子下载完毕。3. 找入口类zookee...…
-
Netty源码服务器启动流程
Netty源码服务器启动流程看到这篇文章的应该都用过Netty吧。Netty服务端的模板代码如下,我们分析下它是怎么启动的。不要纠结没有关闭连接的代码,毕竟我们只是用这段代码来debug。这篇文章我主要写的是Netty服务端的启动流程。读完这篇文章你会知道: Netty的几大组件的关系是什么?包括NioEventLoopGoup, NioEventLoop, Channle, ChannelHandler, Pipeline Netty是怎么注册感兴趣的事件的? Netty服务的bo...…
-
轻松理解Shiro与实战
轻松理解Shiro与实战后端管理系统登录一般都涉及到权限控制,权限管理组件用的最多的就是Apache的Shiro了,任何系统的登录模块,基本都可以使用shiro来实现我们的功能。相信看到这篇文章的肯定知道了Shiro的作用,废话不多说,直入主题吧。Spring Boot整合Shiro首先来思考一下正常需要权限控制的网站它的登录流程是什么样的?大概流程如下。 设置页面拦截。系统中有些页面可以直接访问,有些页面需要登录才能访问,有些页面不仅需要登录还需要登录的用户有相关权限才能访问,这是第一...…
-
写给后端的前端快速搭建笔记
写给后端的前端快速搭建笔记迫于平时学习了前端之后没有形成体系,并且我是做后端的,没打前端的代码会生疏,下次又不知道怎么搭建前端框架了。因此这里记录一个前端的搭建过程,并写一个能用就行的前端界面。这里按照前端工程化的搭建流程来梳理技术栈,以Vue + ElementUI为例。 NodeJS:NodeJS是前端工程化的重要支柱,他使得JS脱离了浏览器环境,使得JS可以像脚本一样在主机上运行。 npm:NPM是随NodeJS安装的包管理工具,类似后端的Maven,使用npm install命...…
-
从RocketMQ源码了解其系统设计
从RocketMQ源码了解其系统设计文章写作时间:2020年7月30日 07点50分本篇文章RocketMQ代码基于最新的源码:rocketmq-all-4.7.1。工作中经常用到RocketMQ,只知道使用却不知道他的原理,有时候排查问题都不知从何处下手。所以最近研究了一下RocketMQ的源码,了解其系统设计,使用起来也得心应手了。读了这篇文章,你会了解到RockeMQ的架构和解决RocketMQ以下疑问。 RocketMQ消费者消费失败后为什么会重试? RocketMQ延时队列的...…
-
docker安装部署rocketmq和SpringBoot小实例
docker安装部署rocketmq和SpringBoot小实例rocketmq模型如上图所示,分为如下几个部分: NameServer:主要用作注册中心,用于管理Topic信息和路由信息的管理 Broker:负责存储、消息tag过滤和转发。需将自身信息上报给注册中心NameServer Producer:生产者 Consumer:消费者由上各部分角色的功能可知,我们需要先安装启动NameServer,再启动Broker即可搭建完RocketMQ1. 部署NameServer首先下...…
-
优雅地使用SpringBoot注解写代码 SpringBoot常用注解
优雅的使用SpringBoot注解写代码 SpringBoot常用注解本篇文章想写一下SpringBoot注解的优雅使用方法。我们所有的工程都离不开配置,那就从配置涉及到的注解开始写起吧。假设我们的项目是一个数据表结构的迁移项目,用到了两个数据源,一个MySQL的和一个PostgreSQL的。我们项目的目的就是读取MySQL的表结构,生成PostgreSQL的ddl建表语句,生成表结构。那么第一步,我们就需要配置数据源属性。1. 配置文件application.yml配置文件jdbc: ...…
-
从Spring启动过程来理解IoC、AOP和bean的生命周期
从Spring启动过程来理解IoC、AOP和bean的生命周期Spring的基本功能就是IoC和AOP,我们的bean都是交给Spring管理的。那么Spring IoC是怎么生成这些bean、又怎么为指定的bean进行AOP代理增强呢?答案就在Spring的启动流程中。1. Spring IoC1.1. 鸟瞰Spring IoC为了方便,这里使用注解版的写法来启动Spring IoC容器。如下图。这里先说总结再讲解源码,先理清脉络再深入细节才不会迷失在细节当中。如上图所示,Spring的...…
-
uniapp开发小程序总结
uniapp开发小程序总结1. 新建UI项目首先,我们的UI是基于ColorUI,当ColorUI没有的样式,就基于Uniapp自带的UI。所以项目的开始要引入这两个UI框架。如下,新建一个uni-ui项目。再建立一个ColorUI项目。如果需要观看ColorUI的效果以便直到自己需要用哪些组件,可以将其运行起来,如下。uni-ui同理。这样只要我们需要的样式都可以在这两个UI取材了。2. 搭建自己的项目新建一个自己的uniapp项目,建立完成后。项目结构如下。接着先引入ColorUI样式...…
-
Spring揭秘-王福强-人民邮电出版
Spring揭秘-王福强-人民邮电出版第3章 掌管大局的IoC Service ProviderIoC Service Provider两个职责: 业务对象的构建管理 业务对象间的依赖绑定Spring的IoC Service Provider是BeanFactory,Spring的IoC容器不仅提供IoC Service Provider,还提供了其他的如线程管理、Aop支持等功能。BeanFactory和ApplicationContext BeanFactory:只提供基本的Io...…
-
Postman神操作总结:一分钟写带登录态的爬虫
Postman神操作总结:一分钟写带登录态的爬虫最近发现的一个Postman神操作,借助Postman的导入请求功能,一分钟不到、并且一行代码都不用写就能实现带登录态的爬虫了,这篇文章算是对web的各种工具的综合运用的总结吧。废话不多说,我就以掘金的沸点热门为例子,来抓取所有热门的帖子吧。1. 分析请求获取api地址如下图所示,打开chrome的F12分析到掘金沸点的数据接口。在api地址上右键 => Copy => Copy as cURL(bash),第一步结束。简单吧。2...…
-
手把手教你读财报-唐朝-中国经济出版社
手把手教你读财报-唐朝-中国经济出版社本书副标题——财报是用来排除企业的。所以“财报是用来证伪的,不是用来证实的”。所以不要想着从财报中掘金。本书用了一份真实报表”贵州茅台“2013年报来实操,建议阅读本书时在网上下载该年报配合一起查看。第一章:你必须学会读财报财报可能会被操纵作假,你需要学会读财报证伪。财报大框架:财报阅读入门我国要求上市公司按自然年划分经营年度,并按季度披露财报。分为: 一季报,需在季度结束后一个月内披露 半年报(也称“中报”),需在上半年结束后两个月披露 三季报...…
-
指数基金投资指南-银行螺丝钉-中信出版集团
指数基金投资指南-银行螺丝钉-中信出版集团封面写着,不懂股票、不看财报、不怕下跌,所以研究股票的人还是需要研究财报的。在我眼里,指数基金是很稳妥的投资理财方式了,买指数就是买国运。虽然我已经不是纯小白的投资用户了,但是还是决定看看这本书,吸取精华。这本书中讲到一点,或许你已经进入股市,但厮杀多年也没找到可靠的、可复制的盈利路径,请阅读这本书。1. 投资新手的建议这一章的一些概念我很认同。要想理财,你得攒资产少消费,多储蓄,并把攒下来的钱投入到能带来收入的资产上。能够为我们“生钱”的就是资产...…
-
项目中框架源码debug跟踪
项目中框架源码debug跟踪最近在项目中遇到了一个多数据源无法切换的问题,项目的框架使用的是Mybatis + Hibernate + baomidou/dynamic-datasource-spring-boot-starter(github开源项目),框架的思想是使用Mybatis编写sql语句,利用Mybatis拦截器(Mybatis叫做插件,其实就是一个Interceptor类)将sql语句拦截转Hibernate来执行。dynamic-datasource是baomidou开源的...…
-
算法-美-塞奇威克-人民邮电出版社
算法-美-塞奇威克-人民邮电出版社基础本章介绍的是学习算法和数据结构所需要的基本工具。本书的算法是使用Java语言实现的,因此这一章讲了一些Java语言的基础。我们关注的大多数算法都需要适当的组织数据,这就产生了数据结构,数据结构是算法的副产品或是结果。排序leetcode排序题目:https://leetcode-cn.com/problems/sort-an-array/submissions/排序很重要。在计算时代早期,大家普遍认为30%的计算周期用在了排序上,如果今天这个比例降低了...…
-
git bash安装tmux实现多标签
git bash安装tmux实现多标签众所周知,git bash下是不能实现多标签页的,每次使用git bash的ssh连接多台机器时,需要打开多个git bash程序。而tmux能解决这个问题,并且tmux比这个还要强大。tmux是一个终端复用器(terminal mutilplexer)。何谓终端复用器呢?平时我们的使用git bash终端通过ssh连接到远程之后,会话就开始了,当关闭终端时,会话就结束,远程正在执行的任务也会结束,即会话和终端窗口是绑定在一起的。tmux就是为了解决这...…
-
RabbitMQ实战指南-朱忠华-电子工业出版社
RabbitMQ实战指南-朱忠华-电子工业出版社RabbitMQ简介消息中间件的作用: 解耦 冗余(存储) 拓展性 削峰 可恢复性:处理消息的机器宕机之后,消息中间件可以存储消息 顺序保证 缓冲 异步通信:消息中间件可以延迟消费RabbitMQ具体特点: 可靠性:消息确认发布、传输确认,持久化 灵活的路由 拓展性:可以拓展为集群 高可用:可以设置队列镜像,单一RabbitMQ挂机后,有镜像提供服务 多种协议 多语言客户端 管理界面 插件机制RabbitMQ入...…
-
windows下的Linux环境(Cygwin同类对比)
windows下的Linux环境(Cygwin同类对比)因为平时在win下做开发,但已经习惯了使用linux下一些方便的命令,并且git基本上每个程序员都必备的,所以现在基本使用git bash终端来代替cmd终端了。所以想一探git bash的究竟。以前有了解过Cygwin,也安装过cmder这种终端工具,但速度都没有git bash快,因此就一直使用git bash了。POSIX想来讲讲为什么会有Cygwin这种工具。现在主流的操作系统是微软的Windows和类unix系统,如果各系统...…