学习笔记

PL真有意思(七):数据抽象和面向对象

前言# 在之前的名字、作用域那篇提到模块类型,它使程序员可以从一个给定抽象出发,通过实例化产生多个实例;再后面是类,它使程序员可以定义一族相关的抽象。 在这一篇里,我们会来看一下面向对象程序设计及其三个基本概念、动态方法约束、多重继承等等 面向对象程序设计# 随着软件变得越来越复杂,数据抽象已经变成了软件工程中最重要的部分。由模块和模块类型提供的这种抽象至少带来了如下三个好处: 它可以减少程序员必须同时考虑的细节量,减少了人的概念负担 它起到一种故障遏制作用,可以防止程序员以不适当的方式使用程序的各种部件。也限制了查找程序错误必须考虑的程序的部分 ...

推荐几个不错的console调试技巧

 在我们的日常前端开发中,使用最频繁的莫过于使用console.log在浏览器的控制台中打印出我们需要调试的信息,但是大部分人可能跟之前的我一样,没有意识到其实console除了log方法以外,还有很多实用的方法,这些方法可以使我们的调试过程更加容易,也表达得更加直观,更加丰富多彩,下面我们就来看看有哪些实用的方法吧!...

mybatis源码学习(一) 原生mybatis源码学习

最近这一周,主要在学习mybatis相关的源码,所以记录一下吧,算是一点学习心得 个人觉得,mybatis的源码,大致可以分为两部分,一是原生的mybatis,二是和spring整合之后的mybatis源码学习(也就是mybatis-spring这个jar包的相关源码),这边笔记,主要来学习原生mybatis; 还是先用描述一下,原生mybatis从解析xml到执行SQL的一个流程: 1.第一步:首先会通过sqlSessionFactoryBuilder来build一个SQLSessionFactory,在build的过程中,会对mybatis的配置文件、mapper.xml文件进行解析, ...

Redis系列(二):Redis高可用集群

 一、集群模式  Redis集群是一个由多个主从(主从在Redis系列(四):Redis高级特性中详细介绍,这里先有个概念 )节点组成的高可用集群,它具有复制、高可用和分片等特性...

大并发热点行更新的两个骚操作

要想db操作的性能足够高,巧妙的设计很重要,事务的操作范围要尽量的小。一般情况下我们都是使用某个orm框架来操作db,这一类框架多数的实现方式都是夸网络多次交互来开启事务上下文和执行sql操作,是个黑盒子,包括对 autocommit 设置的时机也会有一些差异,稍微不注意就会踩坑。 在大并发的情况下加上夸网络多次交互,就不可避免的由于网络延迟、丢包等原因导致事务的执行时间过长,出现雪崩概率会大大增加。建议在性能和并发要求比较高的场景下尽量少用orm,如果非要用尽量控制好事务的范围和执行时间。 ...

Android 如何动态添加 View 并显示在指定位置。

 引子最近,在做产品的需求的时候,遇到 PM 要求在某个按钮上添加一个新手引导动画,引导用户去点击。作为 RD,我哗啦啦的就写好相关逻辑了。自测完成后,提测,PM Review 效果。...

开始你的api:NetApiStarter

在此之前,写过一篇 给新手的WebAPI实践 ,获得了很多新人的认可,那时还是基于.net mvc,文档生成还是自己闹洞大开写出来的,经过这两年的时间,netcore的发展已经势不可挡,自己也在不断的学习,公司的项目也转向了netcore。大部分也都是前后分离的架构,后端api开发居多,从中整理了一些东西在这里分享给大家。 源码地址:https://gitee.com/loogn/NetApiStarter,这是一个基于netcore mvc 3.0的模板项目,如果你使用的netcore 2.x,除了引用不通用外,代码基本是可以复用的。下面介绍一下其中的功能。 ...

分布式系统下,分布式数据库遇到的挑战

   分布式系统下,当访问关系型数据库的i/o占用过高,内存不足,访问过慢的情况下,可以考虑流流行的分库分表的策略,但是这样也会到来很多新的技术挑战。...

ithub上传大文件(超过100M)

上传大文件(超过100M)到Github 笔者上传操作100M的文件到Github,结果在push的时候会自动终止。然后提示无法上传大文件,就算删除再提交也是报错。 于是,本人写这篇博客就是为了解决这个问题。 前言 1.在开始之前,必须删除以前提交的文件。需要注意的是,此时commits中仍然还有大文件的跟踪track信息,并没有被提交 2.我的解决方案是,先移除提交的文件,再使用reset重置为正确的提交信息 使用git log命令查看最近提交的信息,找到其中的16进制id,再使用git reset id ...

vue学习笔记(八)组件校验&通信

前言 在上一章博客的内容中vue学习笔记(七)组件我们初步的认识了组件,并学会了如何定义局部组件和全局组件,上一篇内容仅仅只是对组件一个简单的入门,并没有深入的了解组件当中的其它机制,本篇博客将会带大家深入了解组件的其它知识,组件的校验,组件的通信等等。 本章目标 学会组件简单的校验 学会父组件向子组件传递数据 学会子组件向父组件传递数据 父组件向子组件传递数据 父组件向子组件传递数据实现的方式特别简单,只用使用props进行数据传递就可以了。 语法:props['属性1',‘属性2’,...] ...

【RocketMQ源码学习】- 5. 消息存储机制

前言 面试官:你了解RocketMQ是如何存储消息的吗? 我:额,,,你等下,我看下这篇文字, (逃 由于这部分内容优点多,所以请哥哥姐姐们自备茶水,欢迎留言! RocketMQ存储设计是高可用和高性能的保证, 利用磁盘存储来满足海量堆积能力。Kafka单机在topic数量在100+的时候,性能会下降很多,而RocketMQ能够在多个topic存在时,依然保持高性能 下面主要从存储结构、存储流程、存储优化的技术来形成文字 基于的版本是RocketMQ4.5.2 存储架构图 ...
青岛软件培训

可能你正在寻找一家靠谱的IT培训机构,学习一些专业的软件开发技术,找一份得体的工作。恰巧我们就是一家踏踏实实做教育的IT人才培养机构,我们咨询电话是 0532-85025005,如果你确实对IT感兴趣,我们不妨交流一下。

申请免费试听课程