- 博客(35)
- 收藏
- 关注
原创 00 开发环境搭建
我们来着手在本地计算机环境安装 TensorFlow 最新版本框架。TensorFlow 框架支持多种常见的操作系统,如 Windows 10、Ubuntu 18.04、Mac OS 等等,同时也支持运行在 NVIDIA 显卡上的 GPU 版本和仅适用 CPU 完成计算的 CPU 版本。我们以最为常见 Windows 10 系统,NVIDIA GPU,Python 语言环境为例,介绍...
2020-05-14 18:43:00
162
原创 00 PyTorch 开发环境搭建
我们来着手在本地计算机环境安装 TensorFlow 最新版本框架。TensorFlow 框架支持多种常见的操作系统,如 Windows 10、Ubuntu 18.04、Mac OS 等等,同时也支持运行在 NVIDIA 显卡上的 GPU 版本和仅适用 CPU 完成计算的 CPU 版本。我们以最为常见 Windows 10 系统,NVIDIA GPU,Python 语言环境为例,介绍...
2020-05-14 18:43:00
138
原创 Java 面试题
hashcode相等两个类一定相等吗?equals呢?相反呢?能否介绍一下集合框架?HashMap、HashTable底层实现什么区别?HashTable和ConcurrentHashTable呢?HashMap和TreeMap什么区别?低层数据结构是什么?线程池用过吗?都有什么参数?底层如何实现的?Sychonized和Lock什么区别?Sychonize 什么...
2020-05-13 12:15:00
236
原创 HashMap 源码深入
一提到HashMap我们再熟悉不过,HashMap也是我经常使用的一种容器,常用来存储一些属性值。HashMap常作为局部变量,或者并发性比较小的环境使用,因为HashMap是非线程安全的。学了这么久的Java,只是知道如何使用并不知道其内部原理,只有了解内部编码和实现方式,才能写出高效的代码和功能。那么接下来我们就进一步学习HashMap的源码。。。。。 一、构造函数 ...
2018-05-06 19:52:00
101
原创 CentOS下安装Redis
一、了解一下Redis Redis是一个开源、支持网络、基于内存、键值对的Key-Value数据库,使用ANSI C编码,并提供多种语言的API,它上手非常地简单,只需要几分钟我们就能完成安装工作,并让它开始与应用程序集成协作。只需肯投入一小部分时间与精力,大家就能获得立竿见影且效果极佳的性能提升,可以说它是一个非常简单缓存解决方案。它支持存储的Value值类型不仅限于字符串,...
2018-05-06 19:45:00
78
原创 JavaMail 实现邮件发送与收取
已使用 163 邮箱测试通过,且支持 SSL 连接。发送邮件示例:Jack 发送一封邮件给 Rose。 public class SendMail { public static void main(String[] args) { boolean isSSL = true; String host = "smtp.163...
2018-03-18 20:19:00
161
原创 100个高质量Java开发者博客
从事开发就要有一个积极进取的心,走上了技术这条路你就要认为这是不归的,既然这样那就大胆的继续走下去反正回不了头了。向大牛学习,向神一样的存在膜拜,用一个虔诚的心拥抱技术。ImportNew注:原文中还没有100个。作者希望大家一起来推荐高质量的Java开发博客,然后不段补充到这个列表。欢迎你也参与推荐优质的Java开发博客。 本文的主要目的是收集全球范围内100个高质量Java...
2018-03-02 12:20:00
100
原创 轻量级分布式RPC框架
RPC,即 Remote Procedure Call(远程过程调用),说得通俗一点就是:调用远程计算机上的服务,就像调用本地服务一样。 RPC可基于HTTP或TCP协议,Web Service就是基于HTTP协议的RPC,它具有良好的跨平台性,但其性能却不如基于TCP协议的 RPC。会两方面会直接影响RPC的性能,一是传输方式,二是序列化。 众所周知,TCP是传输层协议,HT...
2018-02-23 21:01:00
106
原创 负载均衡层设计方案(3)--Nginx进阶
上篇文章《负载均衡层设计方案(2)--Nginx安装》中,我们介绍了Nginx的核心设计思想、基本安装和使用。本来准备继续介绍Nginx的几个使用特性,但是奈何博文篇幅太长,只有将一篇文章拆成两篇。本文我们将承接上文,继续讲解Nginx的实用特性,包括gzip功能、rewirte功能和一个第三方的节点监测模块。本文我们还将提到Taobao团队对Nginx的深度改造Tengine。...
2018-02-23 20:56:00
138
原创 负载均衡层设计方案(1)--负载场景和解决方式
从本片文章开始,我们将首先详细讲解负载均衡层的架构原理和选型场景。 1、不同的负载场景 我们知道负载均衡层的作用是“将来源于外部的处理压力通过某种规律/手段分摊到内部各个处理节点上”,那么不同的业务场景需要的负载均衡方式又是不一样的,架构师还要考虑架构方案的成本、可扩展性、运维难易度等问题。下面我们先介绍几种典型的不同业务场景,大家也可以先想一下如果是您,会怎么架设这些场...
2018-02-23 20:55:00
263
原创 负载均衡层设计方案(2)--Nginx安装
前一篇文章中我们描述了要搭设负载均衡层的业务场景和负载均衡层搭建和扩展思路。从这篇文章开始的后几篇文章,我们将详细介绍Nginx、LVS和Nginx+Keepalived、LVS+Keepalived和LVS+Nginx+Keepalived的安装细节,以及它们的性能优化方式。 Nginx和LVS都是可以独立工作的,Keepalived作为检测机制,不但可以和Nginx、LVS...
2018-02-23 20:55:00
90
原创 MySQL的Innodb引擎中的MVCC
一、MVCC简介 MVCC (Multiversion Concurrency Control),即多版本并发控制技术,它使得大部分支持行锁的事务引擎,不再单纯的使用行锁来进行数据库的并发控制,取而代之的是把数据库的行锁与行的多个版本结合起来,只需要很小的开销,就可以实现非锁定读,从而大大提高数据库系统的并发性能 读锁:也叫共享锁、S锁,若事务T对数据对象A加上S锁,则事...
2018-02-23 20:54:00
155
原创 InnoDB存储引擎redo和undo log
1、Undo Log Undo Log 是为了实现事务的原子性,在MySQL数据库InnoDB存储引擎中,还用Undo Log来实现多版本并发控制(简称:MVCC)。 事务的原子性(Atomicity) 事务中的所有操作,要么全部完成,要么不做任何操作,不能只做部分操作。如果在执行的过程中发生了错误,要回滚(Rollback)到事务开始前的状态,就像这个事务从来没有...
2018-02-23 20:54:00
144
原创 00 设计模式的准则
1、开闭原则(Open Close Principle) 开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点。 2、里氏代换原则(Liskov Substitution Princi...
2018-02-23 20:52:00
108
原创 Java开发必知的代码片段
Java开发过程中看似很简单,但是往往存在一些需要注意的细节,掌握这些简单的技巧和代码块,就能让你在编码上面高人一筹。那就让我来学习一下这些必须知道的代码片段,下面我们进入正题。 实现equals()class Person { String name; int birthYear; byte[] raw; public bool...
2018-02-23 20:51:00
97
原创 MySQL的事务隔离级别
一、锁的种类 MySQL中锁的种类很多,有常见的表锁和行锁,也有新加入的Metadata Lock等等。表锁是对一整张表加锁,虽然可分为读锁和写锁,但毕竟是锁住整张表,会导致并发能力下降,一般是做ddl处理时使用。行锁则是锁住数据行,这种加锁方法比较复杂,但是由于只锁住有限的数据,对于其它数据不加限制,所以并发能力强,MySQL一般都是用行锁来处理并发事务。 二、锁粒度...
2018-02-23 20:50:00
77
原创 MySQL的乐观锁
一、乐观锁介绍 乐观锁( Optimistic Locking ) 相对悲观锁而言,乐观锁假设认为数据一般情况下不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检查,乐观锁适用于大量读的应用类型,这样可以提高吞吐量,像数据库如果提供类似于write_condition机制的其实都是提供的乐观锁。类似SVN 二、实现方式 1、使用数据版本(Ve...
2018-02-23 20:49:00
164
原创 MySQL的悲观锁
关于mysql中的锁 在并发环境下,有可能会出现脏读(Dirty Read)、不可重复读(Unrepeatable Read)、 幻读(Phantom Read)、更新丢失(Lost update)等情况,所以mysql引入了很多锁的概念。MySQL InnoDB对数据行的锁定类型一共有四种:共享锁(读锁,S锁)、排他锁(写锁,X锁)、意向共享锁(IS锁)和意向排他锁(IX锁)...
2018-02-23 20:48:00
103
原创 Windows下MySQL解压安装
环境准备 1. 下载安装包 到Mysql官网下载想要的版本,我们下载的是mysql- 5.6.38-winx64 2. 解压MySQL压缩包 将以下载的MySQL压缩包解压到自定义目录下,我的解压目录是:"D:\Program Files\MySQL\mysql-5.6.38-winx64" 将解压目录下默认文件 my-default.ini 拷贝一份...
2018-02-23 20:48:00
76
原创 01 UML类图几种关系的总结
在UML类图中,常见的有以下几种关系:泛化(Generalization),实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)。 1.泛化(Generalization) 【泛化关系】:是一种继承关系,它指定了子类如何特化父类的所有特征和行为例如:老虎是动物的一种;...
2018-02-23 11:24:00
238
原创 CentOS下安装mysql
1、mysql文件下载: 到mysql官网下载mysql编译好的二进制安装包,在下载页面Select Platform:选项选择linux-generic,然后把页面拉到底部,64位系统下载Linux - Generic (glibc 2.5) (x86, 64-bit),32位系统下载Linux - Generic (glibc 2.5) (x86, 32-bit)2、解...
2018-01-20 14:48:00
56
原创 CentOS下安装Nginx
安装所需环境 Nginx 是使用C语言开发,C语言的特点就是贴近底层,执行速度就自然不用说了。Nginx我们建议在Linux服务器上运行服务,这样就可以利用Linux的I/O特性,如果知识玩玩也可以安装Windows版本Nginx,本文将使用 Centos 7 作为安装环境,介绍一下如何安装Nginx服务器。下面开始进入正文。 1、gcc 安装 为什么要安装gcc呢...
2018-01-20 00:35:00
58
原创 CentOS下安装Tomcat
上文中我们已经讲解了在Linux服务器安装Java环境,我们选择了一个8.0版本的JDK,并且安装成功能够查询到Java的版本信息。简单运行Java web程序所需工具就是JDK、Tomcat,现在已经拥有了Java运行所需的环境JDK,那么接下来就需要安装服务器了。下面我们就来讲解一下如何在前置机安装Tomcat,其实真的很简单奥,我们马上进入正题。 1、下载Tomcat ....
2018-01-19 23:19:00
107
原创 eclipse项目上传码云
本文将介绍如何将本地的项目提交到开源中国的码云上,提到码云大家是不是想到了咱们大佬“马云”?呵呵,这个也挺强大的不过不是一个人而是一个版本控制器。改教程讲解过程比较详细,跟着做实现起来很简单。由于自己本身也是一个新手,所以不做过多的解释,只是单纯的描述了该如何去做,大家一起学习共同进步。 1、在开源中国上面新建一个空项目 到这里码云上面创建项目也就...
2018-01-19 10:33:00
87
原创 CentOS下安装JDK
我们操作远程的Linux服务器需要一些客户端工具,方便在命令行下通过命令操作服务器,也方便文件的上传和下载。以下所有在 CentOS 系统下的操作全部使用的是Xshell5和Xftp4,之后的文章就不再继续介绍了。我们使用 Xshell 登录上CentOS服务器,使用Xftp来向CentOS上面上传文件,现在就可以开始CentOS下的Java之旅了,首先我们先准备Java开发环境JD...
2018-01-18 01:10:00
79
原创 TCP 滑窗管理
在《TCP协议与流通信》中,我们建立了滑窗(sliding window)的基本概念。通过滑窗与ACK的配合,我们一方面实现了TCP传输的可靠性,另一方面也一定程度上提高了效率。然而,之前的解释只是概念性的。TCP为了达到更好的传输效率,对上面的工作方式进行了许多改进。The devil is in the details. 我们需要深入到细节,才能看清楚TCP协议的智慧所在。 ...
2018-01-15 21:25:00
73
原创 TCP 协议与流通信
TCP(Transportation Control Protocol)协议与IP协议是一同产生的。事实上,两者最初是一个协议,后来才被分拆成网络层的IP和传输层的TCP。我们已经在傀儡 UDP协议(戳我)中介绍过,UDP协议是IP协议在传输层的“傀儡”,用来实现数据包形式的通信。而TCP协议则实现了“流”形式的通信。 TCP的内容非常丰富。不能在一篇文章中将TCP讲完。这一篇...
2018-01-15 21:22:00
238
原创 每天一个Linux命令:cd
cd命令可以说是Linux中最基本的命令语句,其他的命令语句要进行操作,都是建立在使用cd命令基础上的。 所以,要学习Linux好其他常用命令,首先就要学好cd命令的使用方法技巧。 1.命令格式:cd[目录名] 2.命令功能:切换当前目录至dirName 3.常用范例: 例1:进入系统根目录 命令: cd/ [root@l...
2018-01-14 22:35:00
61
原创 每天一个Linux命令:ls
ls命令 学习的第一个命令就是ls,ls是list的缩写形式。ls命令是linux下最常用的命令,缺省值下ls用来打印出当前目录的清单。如果ls指定了其他目录,那么就会显示指定目录里的文件及文件夹清单。通过ls命令不仅可以查看linux文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限)、查看目录信息等等。ls命令在日常的linux操作中用的很多。 ...
2018-01-14 20:24:00
59
原创 负载均衡应用技术
1、DNS负载均衡 DNS负载均衡最早的负载均衡技术是通过DNS来实现的,在DNS中为多个地址配置同一个名字,因而查询这个名字的客户机将得到其中一个地址,从而使得不同的客户访问不同的服务器,达到负载均衡的目的。DNS负载均衡是一种简单而有效的方法,但是它不能区分服务器的差异,也不能反映服务器的当前运行状态。 2、代理服务器负载均衡 代理服务器负载均衡使用代理服务器,...
2018-01-14 19:43:00
84
原创 分布式系统:RPC 原理
在学校期间大家都写过不少程序demo,比如写个hello world服务类,然后供本地其他方法调用。这些程序的特点是服务消费方和服务提供方是本地调用关系。而一旦踏入公司尤其是大型互联网公司就会发现,公司的系统都由成千上万大大小小的服务组成,各服务部署在不同的机器上,由不同的团队负责。这时就会遇到两个问题: 1)要搭建一个新的服务供人调用,免不了需要依赖他人的服务,而现在他人的服务...
2018-01-14 18:51:00
237
原创 CentOS下开启SSH Server服务
无论是CentOS系统的虚拟电脑还是服务器,始终感觉直接在命令行中操作不方便;比如全选、复制、粘贴、翻页等等。比如服务器就需要在机房给服务器接上显示器、键盘才操作感觉更麻烦。所以就可借助SSH(安全外壳协议)远程操作和管理系统,不仅方便而且安全可靠。 1、登录Centos6.4系统。 示例:使用root用户登录。 注:若为非root用户登录,输入执行某些命权限不够时...
2018-01-14 16:59:00
114
原创 VMware 虚拟机三种网络模式
由于Linux目前被应用的越来越广泛,在很多公司都将Linux作为生产服务器,所以需要在Linux环境下运维系统,使得越来越多的人在学习Linux,但是买一台服务放家里来学习有些不太可能。那么如何解决这个问题?使用虚拟机软件是很好的选择,常用的虚拟机软件有VMware Workstations和VirtualBox等。在使用虚拟机软件的时候,很多初学者都会遇到很多问题,而VMware...
2018-01-14 16:46:00
69
原创 CentOS下防火墙开放端口
本文是针对CentOS 7的防火墙的配置,7版本之后与之前的版本在防火墙配置上有些不同,主要是因为没有使用默认的iptables 做端口的限制。后面我们也捎带讲解一下通过iptables的方式进行防火墙的配置的方式。1、查看已经开放的端口列表:firewall-cmd --list-ports2、开启对应端口,比如开放8080端口firewall-cmd ...
2018-01-14 15:51:00
114
原创 CentOS下之静态IP设置
本文主要是针对CentOS 7进行配置,笔者主要是为了学习Linux的配置和应用,并使用Linux搭建分布式应用环境。笔者通过虚拟机的方式安装Linux系统,想要系统之间可以互相访问,就需要对每个Linux系统进行IP配置,配置成静态的IP地址。 1、编辑 ifcfg-eth33文件,vim 最小化安装时没有被安装,需要自行安装不描述。# cd /etc/sysconf...
2018-01-14 15:22:00
75
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人