祥_venux

个人博客


  • 首页

  • 归档

  • 书籍

  • 分类

  • 标签

  • 关于

  • 公益404

  • 搜索

Java环境变量配置

发表于 2018-03-25 | 分类于 01.编程语言 , 02.Java

1 Java下载

2 环境变量配置

  1. JAVA_HOME:C:\Program Files\Java\jdk1.8.0_144(注:结尾不加分号)
  2. PATH:%JAVA_HOME%\bin;
  3. CLASS_PATH:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

3 测试

  • java-version:版本号
  • java:Java环境
  • javac:Java编译器
阅读全文 »

Java基础知识01

发表于 2018-03-25 | 分类于 01.编程语言 , 02.Java

1 Hello World 示例

1
2
3
4
5
public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello World");
}
}

ps:

  • Java 中类名(CamelCase 风格)要与文件名保持一致;
  • Java 中方法名 camelCase 风格;
  • main 主函数参数默认为 String [];
阅读全文 »

CLR-21垃圾回收

发表于 2017-12-27 | 分类于 01.编程语言 , 01.CSharp

1 访问资源步骤

  1. 调用 IL 指令 newobj,为代表资源的类型分配内存(C# 一般使用 new);
  2. 初始化内存,设置资源的初始状态并使资源可用。类型的实例构造器负责设置初始状态;
  3. 访问类型的成员来使用资源(有必要可重复);
  4. 摧毁资源的状态以便清理;
  5. 释放内存(垃圾回收)。
    阅读全文 »

职业生涯相关文章收藏

发表于 2017-10-18 | 分类于 09.职业生涯

职业生涯文章收藏

  • 程序员吃的是青春饭?本质上取决于……

收藏

发表于 2017-10-18 | 分类于 07.收藏

编程思想

依赖注入(DI)

  • Inversion of Control Containers and the Dependency Injection pattern by Martin Fowler
  • Service Locator is an Anti-Pattern by Mark Seemann

前端网站

  • Modernizr
  • Can I Use
  • w3c
  • Mozilla开发者网络

架构

  • QPS从0到4000请求每秒,谈达达后台架构演化之路

杂乱

  • 如何阅读项目源代码(github)

UML

发表于 2017-10-15 | 分类于 03.工具

1 UML介绍

UML(Unified Modeling Language)又称统一建模语言或标准建模语言,一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规格,到构造和配置。

阅读全文 »

缓存解决方案

发表于 2017-10-15 | 分类于 06.解决方案

1 NoSQL总览

1.1 介绍

NoSQL(Not Only SQL),意即“不仅仅是SQL”,非关系型的数据库

1.2 分类

  • 键值(key-value)存储数据库
  • 列存储数据库
  • 文档型数据库
  • 图形(Graph)数据库
阅读全文 »

高并发网站解决方案

发表于 2017-10-15 | 分类于 06.解决方案

1 服务器

  • 使用高性能CPU主机
  • 数据库使用物理机,避免虚拟机,提升IO性能
  • 使用SSD磁盘,提升IO性能
  • 提升带宽

2 数据库

2.1 读写分离

主从同步,实时将主库的数据增量复制到从库,而且一个主库可以连接多个从库同步。

  • 减轻主库(写)压力
  • 从库(读)可水平扩展(加从库机器)
  • 避免主从同步延迟
    • 优化MySQL参数,比如增大innodb_buffer_pool-size,让更多操作在内存中完成,减少磁盘操作
    • 硬件推荐的方案
    • 业务代码优化,将实时性要求高的某些操作,使用主库做读操作

2.2 垂直分库

按业务拆分成不同的业务数据库,每个系统仅访问对应业务的数据库,避免或减少跨库访问。

  • 禁用或少用join操作,应在程序中组装数据,让SQL更简单,一方面为以后进一步拆分业务做准备,另一方面也避免了 MySQL 中 join 的性能较低问题。

2.3 水平分库(sharding)

单表数据量过大影响读写性能,而又不能进一步垂直拆分时,考虑将数据按字段分类(如 ID,城市)拆分为多个表,即水平分库,拆分时需要考虑数据分布是否均匀、数据聚合度是否较高、冗余表等。

3 缓存

参见缓存解决方案

4 消息队列

5 代码

5.1 异步编程(async/await)

6 前端

6.1 HTML静态化

7 负载均衡、反向代理(nginx)

8 内容分发网络(CDN)

通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络“边缘”,使用户可以就近取得所需的内容,提高用户访问网站的响应速度。

9 分布式集群

  • 服务器按功能划分:Web服务器(集群)、数据库服务器(集群)、缓存服务器(集群)、附件服务器(集群)等。

10 镜像

CDN的实现分为三类:镜像、高速缓存、专线。

  • 镜像站点(Mirror Site),是最常见的,它让内容直接发布,适用于静态和准动态的数据同步。但是购买和维护新服务器的费用较高,还必须在各个地区设置镜像服务器,配备专业技术人员进行管理与维护。对于大型网站来说,更新所用的带宽成本也大大提高了。
  • 高速缓存,成本较低,适用于静态内容。Internet的统计表明,超过80%的用户经常访问的是20%的网站的内容,在这个规律下,缓存服务器可以处理大部分客户的静态请求,而原始的服务器只需处理约20%左右的非缓存请求和动态请求,于是大大加快了客户请求的响应时间,并降低了原始服务器的负载。  CDN服务一般会在全国范围内的关键节点上放置缓存服务器。
  • 专线,让用户直接访问数据源,可以实现数据的动态同步。

其他

  • 二八定律:80%的业务访问集中在20%的数据上。

参考

  • QPS从0到4000请求每秒,谈达达后台架构演化之路
  • 高并发量网站解决方案

线程笔记

发表于 2017-10-13 | 分类于 01.编程语言 , 01.CSharp

1 基础知识

1.1 进程&线程

  • 进程:应用程序的实例要使用的资源的集合。
    • 每个进程都被赋予一个虚拟地址空间,确保进程中的数据和代码无法由另一个进程访问,确保了应用程序实例的健壮性;
    • 进程无法访问OS内核代码,保证系统稳定性和安全性。
  • 线程
    阅读全文 »

面试

发表于 2017-10-10 | 分类于 01.编程语言 , 01.CSharp

1. C#和.NET

1.1 C#基础知识

访问修饰符

  • private【Private】 私有(定义类型、嵌套类型)
  • protected【Family】 保护(定义类型、嵌套类型、不同程序集中的派生类型)
  • C#不支持【Family and Assembly】(定义类型、嵌套类型、同一程序集中的派生类型)
  • internal【Assembly】 内部(同一程序集中的所有类型)
  • protected internal【Family or Assembly】(定义类型、嵌套类型、同一程序集中的所有类型,不同程序集中的派生类型)
  • public【Public】 公有

PS:

  • 【】中为CLR术语。
  • C#派生类型重写基类型定义的成员,C#编译器要求两者具有相同可访问性,CLR允许放宽但不允许收紧成员的可访问性。
阅读全文 »
1…4567
祥_venux

祥_venux

.NET

70 日志
23 分类
39 标签
RSS
GitHub 网易云音乐
友情链接
  • Martin Fowler
  • Jeffrey Richter
  • Jon Skeet
  • 张善友
  • 老A
  • 老赵
  • 赛冷思
© 2017 — 2018 祥_venux
由 Hexo 强力驱动
|
主题 — NexT.Pisces v5.1.2