转: Java开发不懂Docker,学尽Java也枉然,阿里P8架构师手把手带你玩转Docker实战 Docker简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口. 一个完整的Docker有以下几个部分组成: dockerClient客户端 Docker Daemon守护进程 Docker Image镜像 DockerContainer容器…
一.性能测试 Ⅰ.测试方法 微基准性能测试 可以精准定位到某个模块或者某个方法的性能问题,例如对比一个方法使用同步实现和非同步实现的性能差异 宏基准性能测试 宏基准性能测试是一个综合测试,需要考虑到测试环境.测试场景和测试目标 测试环境:模拟线上的真实环境 测试场景:在测试某个接口时,是否有其他业务的接口也在平行运行,进而造成干扰 测试目标 可以通过吞吐量和响应时间来衡量系统是否达标,如果不达标,就需要进行优化 如果达标,就继续加大测试的并发数,探底接口的TPS 除了关注接口的吞吐量和响应时间外…
一.什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速.比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒. 二.线程和进程有什么区别? 线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务.不同的进程使用不同的内存空间,而所有的线程共享一片相同的内存空间.每个线程都拥有单独的栈内存用来存储本地数据. 三.如何在Java中实现线程?…
什么是Java? 我从Java的官网上抄下来下面这段话:97% 的企业桌面运行 Java美国有 89% 的桌面(或计算机)运行 Java全球有 900 万 Java 开发人员开发人员的头号选择排名第一的部署平台有 30 亿部移动电话运行 Java100% 的蓝光盘播放器附带了 Java有 50 亿张 Java 卡在使用1.25 亿台 TV 设备运行 Java前 5 个原始设备制造商均提供了 Java ME Java 是几乎所有类型的网络应用程序的基础,也是开发和提供嵌入式和移动应用程序.游戏.基…
1.java基础 2.JSP+Servlet+JavaBean 环节主要 懂流程 MVC而已 别往深了研究 现 开发基本 用 模式 3.Struts+Hibernate+Spring 才 开发 主流技术 把每 都搞清楚 哪 框架 层 4.Ajax( 好学学 多公司都注重 ) 用3+4 做 例子 要实现功能 关键 要 知道 时候 该用 流程 样 面试会问及 些 何学习 Java 问题 我已经学习了J2SE 样才能转向J2EE? 我看完了Thinking in Java 学习J2EE了 ? 于 有了…
2019.06.19 <阿里巴巴Java开发手册>时隔一年,发布更新1.5.0华山版.同时,将更名为<Java开发手册>,涵盖史无前例的三大升级 1)鉴于本手册是社区开发者集体智慧的结晶,本版本移除阿里巴巴 Java 开发手册的限定词"阿里巴巴". 2)新增 21 条新规约.比如,switch 的 NPE 问题.浮点数的比较.无泛型限制.锁的使用方式.判断表达式.日期格式等. 3)修改描述 112 处.比如,IFNULL 的判断.集合的 toArray.日志处理…
 不为过去蹉跎,改变当下. 为什么开篇就送这么一句话给大家,我相信很多处于1-3年码龄的哥们儿们,在平时的编码历程中编码的个性可能是多彩的,每个人都有每个人特定的风格,但是我们现在这么随意写,以后这么随意写,好没问题,但是等你离开这个公司了或者是去开发别的项目了,再等别人过来接手维护你一手写出来的这段个性十足的代码时,那么你的右眼皮时不时地就会跳,因果我就不说了~~ 所以我建议看到这篇博文的朋友们,或许你稍微改变一下你的编码风格,遵从一套好的编码规约对己对人都是有好处的.可能朋友的公司也有专门的…
上一篇文章介绍了如何运行了第一个Java程序“Hello World”.然而这个开发环境看起来那么陌生,一个个名字符号完全不知道它们是干啥的呀,对于初学者来说,好比天书一般,多看几眼感觉都要走火入魔了.因此接下来还是好好分析一下Java工程的总体结构,理清这些文字符号的来龙去脉才好.话说宇宙原本一片混沌,分不清天南地北,多亏了盘古开天辟地,轻且清的物质上浮成为天空,重且浊的物质下沉变做地壳,于是才有了一个万物生长的星球.那在Java世界当中,这个星球便是工作空间,每次打开Eclipse,都会弹出…
1.JDK https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 目前主流的JDK版本还是JAVA8,我在阿里用的也是Java8. JDK里已经包含了JRE也就是Java虚拟机和运行环境,无需另外下载安装. 2.MySQL 和 Navicat for MySQL 数据库一般还是用免费的MySQL,这里推荐8.0以上的版本,具体怎么安装可以看这篇文章:https://mp.csdn.…
Java开发手册版本更新说明 专有名词解释 一. 编程规约 (一) 命名风格 (二) 常量定义 (三) 代码格式 (四) OOP 规约 (五) 集合处理 (六) 并发处理 (七) 控制语句 (八) 注释规约 (九) 其它 Java开发手册版本更新说明 版本号 版本名 更新日期 备注 1.3.0 终极版 2017.09.25 单元测试规约,IDE代码规约插件 1.3.1 纪念版 2017.11.30 修正部分描述 1.4.0 详尽版 2018.05.20 增加设计规约大类,共16条 1.5.0 华…
二.异常日志 (一) 异常处理 (二) 日志规约 三.单元测试 四.安全规约 五.MySQL数据库 (一) 建表规约 (二) 索引规约 (三) SQL语句 (四) ORM映射 六.工程结构 七.设计规约 个人小结 二.异常日志 (一) 异常处理 Java类库中定义的可以通过预检查方式规避的RuntimeException异常不应该通过catch的方式来处理,比如:NullPointerException,IndexOutOfBoundsException等等[说明:无法通过预检查的异常除外,比如…
微服务背后的大理念是将大型.复杂且历时长久的应用在架构上设计为内聚的服务,这些服务能够随着时间的流逝而演化.本文主要介绍了利用 Java 生态系统构建微服务的多种方法,并分析了每种方法的利弊. 快速预览 在 Java 生态系统中构建微服务的策略主要有:container-less, self-contained 和 in-container: Container-less 微服务把应用程序及其所有依赖打包成单一的 jar 文件: Self-contained 微服务也会将应用及其依赖打包成单一的…
Docker简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口.Docker动手实验平台:Play with Docker. Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,它是基于 dotCloud 公司多年云服务技术的一次革新,并于2013 年 3 月…
当然还是开源:https://github.com/xiaose1205/sigola     初学者有用,高手可以给点建议,勿喷啊.net转java,有些思想还没有那么快转.希望得到大家的支持啊 使用了dbutils1.5,数据库暂时支持mysql. 使用说明: Dao继承于BaseDao,Dto继承于BaseDto,IDao继承于IRepository(方便使用google.guicy); Dto需要实现BaseDto中的toMap()与getTbName(); public class d…
第6章--蜂巢 蜂巢简介 网站开发完,就需要测试.部署.在服务器上运行. 网易蜂巢: 采用Docker容器化技术的云计算平台 https://c.163.com 容器管理:容器可被视作为云主机的服务器 服务管理:服务可由多个容器组成,可以有多个副本 镜像仓库:可快速创建容器和服务 后端服务:blahblahblah 特点: 保证环境一致: 实际中开发环境.测试环境.生产环境等会不大相同 环境差异可能会导致业务代码运行得到不同结果 蜂巢底层采用Docker容器:把业务代码和运行环境打包成为一个镜像…
上一篇文章介绍了Java工程的帝国区划,末尾给出了一段Java代码例子,这个代码虽然勉强能看懂,但是有些细节令人不甚了了.比如说“// 参观朱雀台”为何能够直接跟在当前行后面?“System.out.println”又为何被点号绕了三道湾?显然这里面必定有一些规则需要遵守,好比到了一个国家就要入乡随俗,为了方便游客更好更快地适应当地的风俗,Java帝国特别设立了几个特殊官职,专门负责对内对外打交道的事情.其中有几个官吏经常露面,尤其需要初学者注意,他们是:翻译官.太史公.贸易官,接下来分别介绍如…
第4章--Maven Maven实战 Java Web应用的部署: 手动式: 编译:javac -cp $CATALINA_HOME/lib/servlet-api.jar web-inf/classes/package/NoodlesServlet.java 打包:jar cvf Restaurant.war . 移动:mv Restaurant.war .../webapps/ 项目复杂时:比如项目文件很多 -- IDE如eclipse --> IDE式:(如eclipse) 下载第三方依赖…
第3章--Tomcat Tomcat安装与运行 Tomcat:目前最常用的基于java的web应用服务器 本课程中所有的Java代码最终都需要部署到Tomcat中运行 Tomcat的配置文件是XML的 互联网公司基本上服务端程序都是跑在类Unix平台 Tomcat:源代码为Java:为开源软件 Apache Software Foundation(Apache软件基金会)出品:制作开源软件的非盈利组织: 安装: 1. 依赖JDK(源代码为Java) 2. 下载: http://tomcat.ap…
方法和加深 方法的定义 修饰符 返回类型 break:跳出switch,结束循环 和 return 的区别 方法名:注意规范 见名知意 参数列表(参数类型,参数名)- 异常抛出 // Demo01 类 public class Demo01 { // main 方法 public static void main(String[] args) { } /* 修饰符 返回值类型 方法名(--){ //方法体 return 返回值: } */ // return 结束方法,返回一个结果! publi…
秦始皇统一中国之后,实行“书同文,车同轨”,把货币和各种度量衡都统一起来,从而缔造了一个秩序井然的帝国.既然统一度量衡是每个帝国都要做的事情,Java帝国也不例外,对于人生地不熟的初学者来说,只有认识了Java帝国的各种度量衡,才能更好地入乡随俗. Java帝国的人名称呼若想在一个国家与当地人沟通交流,首先要理解当地的语言以及对人的称呼.在计算机世界里,Java帝国的编程语言主要采用英文字母书写,另外包括阿拉伯数字与半角的标点符号.至于各种实体的名称,则基本遵守以下的命名规范(非强制性,建议遵守…
今天看到两个面试题,居然都做错了.通过这两个面试题,也加深对三目运算是的自动类型转换的理解. 题目1.以下代码输出结果是(). public class Test { public static void main(String[] args) { int a=5; System.out.println("value is :"+((a<5)?10.9:9)); } } A.编译错误     B.10.9           C.9           D.以上答案都不对 我不假…
第5章--Git 版本控制简介 VCS (version control system) 版本控制系统:记录若干文件的修订记录的系统,帮助查阅/回到某个历史版本 LVCS本地 CVCS集中式(Central) -- e.g SVN (subversion), CVS (concurrent version system). 缺点,操作需要网络连接 DVCS分布式 distribute -- e.g git   大部分操作可以在本地进行 分支模型 分支:从目标仓库获得一份项目拷贝,每条拷贝都有和原…
第1章--Web应用开发概述 Web应用开发概述 浏览器-服务器架构(BS-architecture) browser/ App    ---- request ---->    server (database) <- response/data -- protocol: HTTP(Hyper-Text Transfer Protocol) have a try: cmd: sudo nc -l 80  -- listen at the port of 80(port 80 is used…
第2章--HTTP协议简介 HTTP协议简介 Abstract: HTTP协议的特性,HTTP请求/响应的过程,HTTP请求/响应的报文格式等知识,最后会演示如何通过Chrome提供的开发者工具,去跟踪调试一次HTTP请求. HTTP protocol: 请求响应式协议: client -->  server : HTTP 请求 client <--  server : HTTP 响应 一个HTTP请求和一个HTTP响应 -->  一次HTTP事务 任意两次HTTP事务都是indepen…
一.归并排序 归并排序是建立在归并操作上的一种有效的排序算法,该算法是採用分治法(Divide and Conquer)的一个很典型的应用.将已有序的子序列合并,得到全然有序的序列.即先使每一个子序列有序.再使子序列段间有序.若将两个有序表合并成一个有序表.称为二路归并. 归并过程为:比較a[i]和a[j]的大小.若a[i]≤a[j],则将第一个有序表中的元素a[i]拷贝到r[k]中,并令i和k分别加上1.否则将第二个有序表中的元素a[j]拷贝到r[k]中,并令j和k分别加上1.如此循环下去.直…
一.折半插入排序(二分插入排序) 将直接插入排序中寻找A[i]的插入位置的方法改为採用折半比較,就可以得到折半插入排序算法.在处理A[i]时,A[0]--A[i-1]已经按关键码值排好序.所谓折半比較,就是在插入A[i]时,取A[i-1/2]的关键码值与A[i]的关键码值进行比較,假设A[i]的关键码值小于A[i-1/2]的关键码值.则说明A[i]仅仅能插入A[0]到A[i-1/2]之间.故能够在A[0]到A[i-1/2-1]之间继续使用折半比較:否则仅仅能插入A[i-1/2]到A[i-1]之间…
1. 场景描述 最近在工作中碰到的几个问题,有点坑,记录下,遇到相同或类似问题的朋友可以参考下. 2. 解决方案 2.1 拼接sql后,多数据源执行 采用Spring+DruidDataSource数据源方式,程序中代码有点多,最简单的代码如下: DruidDataSource druidDataSource = new DruidDataSource(); druidDataSource.setUrl("jdbc:mysql://127.0.0.1:3306/ruanjianlaowang?u…
阅读这篇文章之前,建议先阅读和这篇文章关联的内容. 1. 详细剖析分布式微服务架构下网络通信的底层实现原理(图解) 2. (年薪60W的技巧)工作了5年,你真的理解Netty以及为什么要用吗?(深度干货) 3. 深度解析Netty中的核心组件(图解+实例) 4. BAT面试必问细节:关于Netty中的ByteBuf详解 5. 通过大量实战案例分解Netty中是如何解决拆包黏包问题的? 6. 基于Netty实现自定义消息通信协议(协议设计及解析应用实战) 7. 全网最详细最齐全的序列化技术及深度解…
楼主2007年从一家天津的三流大学毕业.毕业前报了一个职位培训,毕业后可以推荐工作.因为推荐的公司都是北京的,所以就来北京了. 找了一个月工作,没有找到要我的,就在出租屋里宅了起来,打着考研的旗号,又耗了一年.研究生肯定没有考上,这下没有退路了,又开始找工作了.记得宅出租屋的那年,过年没有回家.正好我有一个姑姑在石家庄过年,就非要我过去.过完年,姑姑回家和老妈说,我穿了一条破牛仔裤,头发长长的.言外之意,我在北京日子不好过. 后来老妈给我打电话,我都说,挺好的,没事儿,我姑姑就是好几年没见我了,…
1. 关于这篇系列 这篇系列不是Play框架的Hello World,由于这样的文章网上已经有非常多. 这篇系列会首先结合实际代码介绍Play的特点以及适用场景.然后会有几篇文章介绍Play与Spring,JPA(Hibernate)的集成,以及一些Play应用的最佳实践. 这期间会在Github上提供一个脚手架项目.方便感兴趣的朋友直接动手尝试. 最后会简单分析Play的部分源码.帮助大家理解黑盒子的内部机制. 我水平有限,有错误欢迎指出. 2. Play介绍 Play Framework是一…