Timzhouyes's Blog

纸上学来终觉浅,绝知此事要躬行。

数据库设计和一些业务注意的要点

包括数据库索引设计

数据库在任何的业务之中都非常重要,尤其是对于互联网企业的业务,大部分都是“数据密集型”,说白了,不同于游戏等“计算密集型”业务,其主要就是将数据传输和搬运给需要的人,那么这种场合下面,数据库的设计就更重要了。 本文之中,我对于数据库的索引,结构和一些其他需要注意的细节方面做一些简要的梳理。下文的很多情况是针对于互联网公司的,高并发访问、低频写入、高频读取、产生大量日志、单个业务逻辑简单、分...

学习Shell

Shell简析和基本操作介绍

已经想不出该在这里说什么了,开工…… 参考:http://www.runoob.com/linux/linux-shell.html 1. Shell 简介和 Shell 环境 Shell 既是一种命令语言,又是一种程序设计语言。 Shell 提供了一个应用程序,其提供了一个界面,用户通过这个界面进行访问操作系统内核 的操作。 1.1 Shell 环境 本教程之中所说的 Shel...

MyBatis 入门

对于XML和annotation的SQL语句做一些梳理和总结

高产似母猪之中的母猪…… MyBatis 因为其支持定制化 SQL,存储过程等等,而且避免了几乎所有的JDBC 代码和手动设置参数,以及获取结果集等等这些操作,深受广大被折磨的程序员的欢迎. 由于环境配置已经存在,那么我就直接略过环境配置的环节,直接上干货啦! 1. XML 映射文件 官方说明是:由于MyBatis 的映射语句的强大,其映射器的XML 文件变得相对简单,相对于同功能的...

学习 Groovy

包括Groovy基本知识和闭包(clousure)相关

Groovy 是一门基于 JVM 的动态语言,既可以面向对象编程,又可以用作纯粹的脚本语言。在学习 Java 语法的情况下会很容易学习,下面就是 Groovy 和 Java 语法的不同之处的学习。 学习教程:https://www.kancloud.cn/kancloud/learnxinyminutes/58931 Groovy基础 1. 与Java的异同 Groovy可以作为 J...

高性能,高可用网站架构研究

对高性能网站的一点梳理

看到一篇文章,手把手教你构建一个高性能、高可用的大型分布式网站,其中将 大型分布式网站 的架构做了一个梳理,那就自己看着学习一下。 1. 大型网站的特点与架构目标 下面是一般的大型网站的特点: 用户多,分布广泛 大流量,高并发 海量数据,服务 高可用 安全环境恶劣,易受网络攻击 功能较多,迭代较快,发布比较频繁 从小到大,采取渐进发展的发展方式 大型网站架...

Linux基础知识

在后端开发过程之中需要知道的 Linux 基础知识

要做一个合格的后端开发,只会一点 Java 是远远不够的。Linux 作为一种历史”长远“的操作系统,若想将每个细节都说清楚属实太难,本篇文章之中,将一些基础的 Linux 概念和使用方法进行一定的梳理,感谢下面的参考资料: 后端程序员必备的Linux基础知识 1. 从认识操作系统开始 ……这里就不多讲了,再多讲就像科普了…… 1.1 操作系统简介 下面是作者的四点操作系统介绍: ...

Spring AOP 之中的JDK 和 CGLib 动态代理哪个效率更高

对不同用法的一点比较研究

无意之间看到了一篇文章,里面对于Spring AOP 之中 JDK 和 CGLib 二者动态代理哪个效率更高做了测试,于是在自己博客之中记一下笔记,算是兴趣的一点探究。 一、基本概念 首先,针对Spring 的两个特点:AOP和ROC之中的AOP,底层实现有两种方式:一种是 JDK 动态代理,一种是 CGLib 的方式。 自从 Java 1.3 开始,Java 提供了动态代理技术,允许...

Java相关知识点梳理(二)

容器相关

忙里偷闲,扎实基础才是正经事。 8说了,开冲! 18. Java 容器都有哪些? Java 容器分为 Collection 和 Map 两大类,其下又有很多子类,如下所示: Collection List ArrayList LinkedList Vecto...

对MQ的一些梳理

总结一个MQ的GitChat

在看了一个GitChat之后,在自己的blog里面做一下notes和写一下自己的想法。 推荐”石杉的架构笔记“,也是这篇文章的出处。 1. 概述 消息中间件(Message Queue,简称 MQ)是我们平时经常用到的一个东西,但是对于业务而言,可能我们平时更多的是在于会实现生产信息,消费信息。但是深入思考之后可能发现下面的几个问题我们从未认真思考过: 为何要使用MQ 使用...

Java相关知识点梳理(一)

Java基础,包括Java环境,Java基本类型,抽象类与接口等等

忙里偷闲,扎实基础才是正经事。 8说了,开冲! 1. JDK和JRE有什么区别 这个知识点我想只要搞Java的都知道…… JDK:Java Development Kit的简称,Java开发工具包,提供了Java的开发环境和运行环境(JRE) JRE: Java Runtime Environment 的简称,Java 运行环境 JDK之中其实包含了JRE还有javac,...

Redis浅析

对Redis的概念和用法的简析,以及分布式数据库和缓存双写一致性分析

参考资料: 为什么我们做分布式使用 Redis ? - 程序之心 丁仪的文章 - 知乎 https://zhuanlan.zhihu.com/p/50392209 http://www.runoob.com/redis/redis-tutorial.html 1. 为什么要使用redis 在项目之中使用redis,主要的考虑角度是性能和并发。 性能 由于在数据库之中查询数据是一项特别耗费资...

Salesforce Trailhead

Walk through the 18 hours tutorial

Here is the note for Salesforce Basics tutorial on Trailhead. Get Started with the Salesforce Platform What does Salesforce Platform offer? Develop custom data models and applications for des...

Learn Django

Do a Demo on offical guide

Follow the tutorial of official website and do a Demo on Github Django at a glance Here are summaries of what Django is better. Design the model The ORM(Object-relational mapper) can make user ...

学习Python

《learn python the hard way》

Yes. Learn Python the hard way. So this blog is a studying note for me to record things I think important or difficult :) And also a place for me to write down my own thinking. Let’s Go! Codes:...

后端面试之中的部分知识点梳理

OS,网络以及数据库等等的大杂烩

针对一些问题做一下梳理。 1. 操作系统和网络 1.1 进程和线程有什么区别? 进程(process) 和线程(thread) 之间的区别为: 一个程序下至少有一个进程,一个进程下至少有一个线程。 一个 process 也可以有多个 thread 来加快程序的执行速度 1.2 进程(process) 之间有哪些通信方式? 参考:https://www.jianshu.com/p...

Shopee 后端一面准备与一道负载均衡的后端面试题

使用HashMap达到O(1)复杂度

分享一道后端的负载均衡面试题和我自己的做法。使用 java 实现。 根据 nodes 写一个 SLB(负载均衡),按 weight 来做粗略划分,注意 nodes 并不是固定的,给出的代码为了说明才固定了 3 个值。nodes 结构如下: nodes = [ { 'id': 1, 'weight': 100, # 32 core 'coun...

浅谈MySql之中的引擎

包含MySql之中的索引以及B+树的实现

作为一款被广泛使用的数据库,MySql在很多的地方都有使用。今天在这里主要是针对其中的数据库引擎,包括不同引擎的锁的力度,还有MySql之中的索引技术进行一点简要的分析和总结。 下面是参考文章链接: https://blog.csdn.net/zgrgfr/article/details/74455547 https://zhuanlan.zhihu.com/p/42106761 一...

浅谈Java之中的HashMap

基于JDK 1.8的源码解析

Hashmap不管是在我们日常的编程过程之中经常用于降低复杂度,在面试之中也经常被考察。 我在最近的学习过程之中也看到了一些很好的资料,包括源码解析或者宏观层面的讲解。在这里写下来自己的一些心得体会。 附上资料地址: https://blog.csdn.net/login_sonata/article/details/76598675 https://blog.csdn.net/v1...

Angular编程风格总结

Angular官方风格指南

浩明老哥说编程风格指南非常重要,那就咱也整一个! 在官方的风格指南里面,所有的做法都附上了原因,不论是好的还是坏的。编程风格,更像是一种程序员之间约定俗成的规定,统一的约定可以极大程度的减小阅读他人代码时候所带来的困难。 1.单一功能原则 在面向对象编程领域中,单一功能原则(Single responsibility principle)规定每个类都应该有一个单一的功能,并且该功能应该...

JavaScript基础学习(2)

从第十一节-this 开始

11-this 解析器在调用函数每次都会向函数内部传递进一个隐含的参数,这个隐含的参数就是this,this指向的是一个对象,这个对象我们称为函数执行的 上下文对象。 根据函数的调用方式的不同,this会指向不同的对象:【重要】 1.以函数的形式调用时,this永远都是window。比如fun();相当于window.fun(); 2.以方法的形式调用时,this是调用方法的...

JavaScript基础学习(1)

以GitHub上一个项目为基础

作为一个前端,要是不会 JavaScript ,那就是个笑话。 不说了,开冲 https://github.com/qianguyihao/Web/wiki 01-JS简介 JavaScript 的组成 JavaScript 分为三个部分: ECMAScript: JavaScript 的语法标准。 DOM:文档对象模型,操作网页上的元素,例如让盒子移动,变色,轮播图 ...

学习Angular官方SuperHero tutorial

附带在做项目的过程之中遇到的问题和解决方法

开始学习 Angular 。下面是对于官方教程之中自认为难点或者重点的梳理。 在文章的最后是在项目之中所遇到的问题和解决方法,持续更新~ 快速上手 Components are the fundamental building blocks of Angular applications.所以在 Angular 之中,承担功能的基本单位就是 Components。 使用 Ang...

《Spring Boot 42讲》学习笔记(4)

构建RESTful API服务

第2-8课:Spring Boot 构建一个 RESTful Web 服务 RESTful 的核心概念是“资源”,从 RESTful 的角度来看,网络之中,无论一段文本,图片,歌曲,服务等等都对应一个特定的URI,并且用URI进行表示,访问这个URI就可以得到这个资源。 资源可以有多种表现形式,也就是资源的“表述(Representation)。 此处教程所举的例子是一张图片,既可以是...

基本算法和数据结构

对自己在学习基础算法和数据结构之中的一些个人问题的记录

在给自己弥补算法和数据结构基础时候,作为小白经常有一些问题,或者是质疑算法,或者是质疑数据结构的设计,但是最后总是被自己打脸……开一个post,将这些“奇思妙想”记录下来,也防止自己以后再犯一样的错误。 1. 循环队列 循环队列,使用两个指针进行判断,一个是front队首,指向的就是队列之中的第一个元素,一个是tail队尾,指向的是队列之中的最后一个元素的后一位。这就导致了,如果只想使用一个...

《Spring Boot 42讲》学习笔记(3)

模板引擎Thymeleaf使用

第2-3课:模板引擎Thymeleaf基础使用 1. 什么是模板引擎? 模板引擎,是为了用户界面和业务数据(内容)分离而成的,其可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档。 模板引擎的实现有“置换引擎”(将模板内容之中的特定标记替换,但效率底下),“解释型”模板引擎和“编译型”模板引擎等。 2. Thymeleaf介绍与其特点 具体介绍网上很多,个人理...

浅谈MVC,MVP和MVVM

对重点和差异点做一些分析

在寻找Angular教程的过程之中,发现网上有声音认为Angular是MVVM,突然觉得自己对于这些架构的区别还不够明晰,因此在这里系统的学习和总结一下,MVC,MVP,MVVM三者之间的区别和重点。 1 . MVC MVC,也就是 Model, View, Controller 三层。 谈谈MVC模式,下面是对于M,V,C的具体介绍: 1)最上面的一层,是直接面向最终用户的”...

《Spring Boot 42讲》学习笔记(2)

构建基本项目与Spring之中annotation的浅析

第2-1课:Spring Boot对基础Web开发的支持(上) Spring Boot对于Web的开发的支持很全面,包括开发,测试和部署都有支持。Spring-boot-starter-wew是spring Boot对于Web开发提供支持的组件,其主要包括RESTful,参数校验,使用Tomcat作为内嵌容器。下面是介绍: JSON的支持 JSON(JavaScript Object ...

《Spring Boot 42讲》学习笔记(1)

从Hello world开始……

第 1-1 课:Spring Boot产生的背景及其设计理念 Spring是Rod Johnson在不满当时的Java EE和EJB过于臃肿,不是所有的项目都需要这种大型框架的情况下自行开发的。在其interface21一炮走红之后,一对一的J2EE设计和开发开始流行起来。2003年,其和同伴在这个基础上开发了一个全新的框架,命名为Spring。随后Spring的发展进入了快车道。 到底...

Docker初探

初步学习Docker及相关知识

1. 什么是Docker Docker的英文定义是:Docker is a computer program that performs operating-system-level virtualization. 在阅读了资料之后,我认为Docker最开始的版本是一个使用了Linux Kernel的特性,例如cgroups和namespaces,来进行资源虚拟和封装的软件。其提供一个额外...

浅析JavaScript之中的let和const

在ES6之中,新增了let和const的变量形式,在阅读了阮一峰老师的ES6教程之后,做一点基础的分析和总结。 先上一张表格: 声明方式 变量提升 暂时性死区 重复声明 初始值 作用域 var 允许 不存在 允许 ...

使用Node.js和express实现https传输

迁移已有项目至HTTPS

折腾了一阵,实现了将已有项目迁至HTTPS。下面是主要步骤。 1. 环境: Win 10 Node.js : v8.9.4 Npm : 6.9.0 2. 准备工作 由于是将已有项目迁移至HTTPS, 因此本文不涉及初始化和创建项目,默认在已有项目的入口,本文是对 index.js 来进行操作。 2.1 安装express npm install express 2.2...

JWT相关

Studying JWT

After reading a toturial of Mr.Ruan, just make some notes to memory. 1. What is JWT ? JWT is a way for users to save information in client side, so that in server side, we don’t need to save sessi...

《网络是怎样连接的》书摘与笔记(一)

网络是怎样连接的

今天开始看《网络是怎样连接的》,有所感想的地方,记录在此,以备复习。 1. 浏览器生成消息——探索浏览器内部 热身问答 浏览器等网络应用程序并不具备网络控制功能,而是委托操作系统来控制。 本章内容 生成HTTP请求信息 向DNS服务器查询Web服务器的IP地址 DNS服务器的接力查询 委托协议栈(操作系统之中)发送消息 1.1 生成HTTP请求消息 1.1....

学习AngularJS:PhoneCat 与3月27日日常记录

官方Tutorial的一点总结和体会,版本1.3.16

教程地址在这,此处放的是1.3.16版本 1. 初始化环境的准备 1.1 npm install有什么作用? npm install这个命令读取了angular-phonecat的package.json文件(因此有很多时候提示package.json文件缺失报错),并且把以下的工具下载到node_modules目录之中。 Bower-客户端代码包管理器 Http-Serv...

梳理TCP,HTTP,HTTPS,HTTP/2

对一些面试之中可能考察的知识点做一点复习

本文对于Web岗面试之中关于网络的各种问题进行了一点整理,欢迎大家讨论。 1. TCP 1.1 TCP的三次握手 转载至TCP 三次握手四次挥手 在我看来,TCP的各种机制设计都是因为网络报文传输的不确定性(延迟了, 丢包了,网线断了 etc),因此看似繁琐的报文重复传输和字段的重复包括(每一个都有ACK)是牺牲了部分的传输效率来保证其是一个可靠的文件传输协议。在看的时候处处感叹,真...

Daily record (Angular.js)

To study Angular.js

0. 今日工作遇到问题 mongoDB要在mongoDB的Bin文件夹下面开,而不是在所要开启的项目文件夹下面开启 在Angular.js之中一定要注意好所在函数的作用域,不然会有问题,今日因为忽视了作用域,直接导致debugger死活进不去。以后要注意。 1. 梳理一下基本的Angular.js传值步骤 如何在Angular.js之中做到同步传值?按照之前所说,A...

Angular study

To study Angular

1. What is Angular Angular is a framework for people to do the data-binding and changes on website of UI more easily. AngularJS is the 1st edition of Angular. The difference between AngularJS and...

VSM 与每日记录

Studying Git

Today’s record: In Angular, the basic logic is that one component/one thing is composed of one .js file and one .html file .The .js file contains functions of the thing , and the .html file cont...

SHA Study

1.前言 也算是开始了正式的工作,这才发现计算机这个东西真的是越学东西越多,但是也越有趣吧。在学习Git的过程之中对于Snapshot机制有疑问,在上网查找的过程之中发现疑问越来越多,设计的概念,东西也越来越多。因此在这里做一个整理,记录一下每天收获。 2.RPC RPC,全程Remote Process Call, 是用来解决服务器集群之中分布式结构的各个子系统相互通信的问题。服务器的结构...

Git Study

Studying Git

找到了一个超好的教程,放在下面与大家共享 https://blog.coding.net/blog/principle-of-git 学习心得 1.snapshot到底是个啥?怎么用? 在版本修改之中,并不是每一次都修改了所有文件,如果每一次commit都将所有的数据保存一遍,那么会造成很大的开销。 所以在git之中,每个文件的修改版本会单独存放,但是在每一次commit的提交记录之中,只...

Record of intern

Just record

11/03/2019 Analysis the demand of event app (Eventbrite and Pigeonhole) Search on google & Github if there is similar projects 16/04/2019 今日经验总结: 如果想在浏览器上,当用户点击时弹出提示且一段时间自动消失并跳转到其他网页,...

Markdown basic grammer

Basic grammer of Markdown

对了Markdown没有缩进……缩进是CSS的事情,或者说将输入法切换成全角之后用力双击两下空格也是土办法hhh 1.Title Markdown mark the title with “# “, notice there is a space after ‘#’. And if you want to create multilevel of titles, such as Second...

Zhou's 1st blog

Hello World, Hello Blog

Hey 这是我的第一篇博客。 进入你的博客主页,新的文章将会出现在你的主页上.