董昊的个人博客 - 技术培训
type: channel
link: https://www.minws.com/tag/技术培训/
items: java试题
items: 基础培训-前端初探
items: 基础培训-餐评系统开发
items: 基础培训-项目的正确打开方式
items: 基础培训-使用git及可视化工具sourcetree

java试题
type: item
date: 2017-07-10T08:06:54+08:00
description: 一、判断题： String是最基本的数据类型。 new String(“abc”).equals(newString(“abc”)的结果为true。 new StringBuffer(“abc”).equals(newStringBuffer(“abc”)的结果为true。 接口可继承接口。 抽象类不可以实现(implements)接口。 抽象类可继承具体类(concrete class)。 抽象类中可以有静态的main方法。 抽象类不能创建实例对象和允许有abstract方法。 二、选择题：1.下列那些是正确的JAVA字符串？多选（） A. """" B. "Oxzabc" C. """ D. "\t\t\r\n" E. "boolean"52.欲构造ArrayList类的一个实例，此类继承了List接口，下列哪个方法是正确的 ？ A、 ArrayList myList=new Object(); B、 List myList=new ArrayList(); C、 ArrayList myList=new List(); D、 List myList=new List();3.下列关于Java知识点哪些说法是正确的？（） A. 局部内部类不能访问外部类的变量和方法 B. 内部类可以嵌套使用 C. 成员内部类不能定义静态内部类 D. 内部类不可以继承类三、程序题：1,将输入的数组数字从小到达进行排序并且去掉重复数据，如数组 [3,3,4,5,1,4] 排序和去重后为[1,3,4,5]。请写出代码实现:2,给定一个int 数组，求出所有元素的最大值，最小值，平均值，和值，并输出出来。3,打印:package com.acxiom.java.base; public class Exam1 { int id; Integer age; public static void main(String[] args) { Exam1 exam = new Exam1(); System.out.println(exam.id); System.out.println(exam.age); Integer a = new Integer(1); Integer b = 1; int c = 1; Integer d = 1; System.out.println("a == b ? " + (a == b)); System.out.println("a equals b ? " + (a.equals(b))); System.out.println("a == c ? " + (a == c)); System.out.println("c == b ? " + (c == b)); System.out.println("d == b ? " + (d == b)); Integer dd = 200; Integer ee = 200; System.out.println("dd == ee ? " + (dd == ee)); Integer ff = 3 + new Integer(3); Integer gg = new Integer(6); Integer hh = 6; System.out.println("ff == gg ? " + (ff == gg)); System.out.println("ff == hh ? " + (ff == hh)); } } 4,打印:package com.acxiom.java.base; public class Exam3 { static class A { public void show(C obj) { print("A + C"); } public void show(A obj) { print("A + A"); } } static class B extends A { public void show(B obj) { print("B + B"); } public void show(A obj) { print("B + A"); } } static class C extends B {} static class D extends B { } public static void main(String[] args) { A a = new A(); B b = new B(); C c = new C(); a.show(a); a.show(c); b.show(a); b.show(b); b.show(c); c.show(a); c.show(b); A a2 = new B(); a2.show(a); a2.sho…

基础培训-前端初探
type: item
date: 2017-07-06T16:20:19+08:00
description: 前端最最基本的三个核心技能：HTML、JS、CSS,其中最能代表前端的就是Javascript了。 概念前端开发入门学习有：HTML、CSS、JavaScript（简称JS）这三个部分。所以在学习之前我们需要先明确三个概念： HTML——内容层，它的作用是表示一个HTML标签在页面里是个什么角色。 CSS——样式层，它的作用是表示一块内容以什么样的样式（字体、大小、颜色、宽高等）显示。 JS——行为层，它的作用是当用户触发某些行为时，会给内容和样式带来什么样的改变。 学习路线图API快速查找工具http://devdocs.io/ 盒模型盒子模型是css中一个重要的概念，理解了盒子模型才能更好的排版。其实盒子模型有两种，分别是 ie 盒子模型和标准 w3c 盒子模型。Jquery模糊选择器1. name前缀为aa的所有div的jquery对象 $("div[name^='aa']"); 2. name后缀为aa的所有div的jquery对象 $("div[name$='aa']"); 3. name中包含aa的所有div的jquery对象 $("div[id*='aa']"); 4. input标签类型是text，name="aa"的对象 $("input:text[name='aa']") 以上返回的都是jquery的集合对象，因此都可以用each方法进行遍历。Ajax$.ajax({ type: 'GET', // 这是请求的方式 可以是GET方式也可以是POST方式, 默认是GET url: ' xxx.php ', // 这是请求的连接地址 一般情况下这个地址是后台给前端的一个连接，直接写就可以 dataType: 'json', // 这是后台返回的数据类型 一般情况下都是一个json数据， 前端遍历一下就OK async: true, // 默认为true，默认为true时，所有请求均为异步请求，如果需要发送同步请求，需设置为false, timeout: 8000, // 设置请求超时时间（毫秒）。此设置将覆盖全局设置 data: { // 要传递的参数 'xxx' : 'xxx' }, beforeSend: function () { // 在发送请求前就开始执行 （一般用来显示loading图） }， success: function (data) { // 发送请求成功后开始执行，data是请求成功后，返回的数据 }, complete: function () { //当请求完成后开始执行，无论成功或是失败都会执行 （一般用来隐藏loading图） }， error: function (xhr, textStatus, errorThrown) { // 请求失败后就开始执行，请求超时后，在这里执行请求超时后要执行的函数 } }).done(function () { // 这个函数是在ajax数据加载完之后，对数据进行的判断，在涉及到对ajax数据进行操作无效时，在这个函数里面写是可以起到效果的 });

基础培训-餐评系统开发
type: item
date: 2017-07-05T14:58:16+08:00
description: 这次的java基础培训我们将学到一个午餐点评网站完整的开发，这里会学到Spring Boot+Mybatis+freemarker+swagger+druid等技术，希望本次培训对大家有所帮助。脚手架代码码云 http://git.oschina.net/dhso/springboot-startkit [点击访问]Spring Boot介绍Spring Boot是由Pivotal团队提供的全新框架，其设计目的是用来简化新Spring应用的初始搭建以及开发过程。 该框架使用了特定的方式来进行配置，从而使开发人员不再需要定义样板化的配置。Spring Boot 官方文档 [点击访问]Mybatis介绍MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。 MyBatis 可以对配置和原生Map使用简单的 XML 或注解，将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。Mybatis 官方文档 [点击访问]FreeMarker模板引擎FreeMarker 官方文档 [点击访问]Freemarker 是一款模板引擎，是一种基于模版生成静态文件的通用 工具，它是为Java程序员提供的一个开发包，或者说是一个类库，它不是面向最终用户的，而是为程序员提供了一款可以嵌入他们开发产品的应用程序。虽然FreeMarker具有一些编程的能力，但通常由Java程序准备要显示的数据，由FreeMarker生成页面，通过模板显示准备的数据（如下图）##FreeMarker特性 1. 通用目标 能够生成各种文本：HTML、XML、RTF、Java源代码等等 易于嵌入到你的产品中：轻量级；不需要Servlet环境 插件式模板载入器：可以从任何源载入模板，如本地文件、数据库等等 你可以按你所需生成文本：保存到本地文件；作为Email发送；从Web应用程序发送它返回给Web浏览器 2. 强大的模板语言 所有常用的指令：include、if/elseif/else、循环结构 在模板中创建和改变变量 几乎在任何地方都可以使用复杂表达式来指定值 命名的宏，可以具有位置参数和嵌套内容 名字空间有助于建立和维护可重用的宏库，或者将一个大工程分成模块，而不必担心名字冲突 输出转换块：在嵌套模板片段生成输出时，转换HTML转义、压缩、语法高亮等等；你可以定义自己的转换 3. 通用数据模型 FreeMarker不是直接反射到Java对象，Java对象通过插件式对象封装，以变量方式在模板中显示 你可以使用抽象（接口）方式表示对象（JavaBean、XML文档、SQL查询结果集等等），告诉模板开发者使用方法，使其不受技术细节的打扰 4. 为Web准备 在模板语言中内建处理典型Web相关任务（如HTML转义）的结构 能够集成到Model2 Web应用框架中作为JSP的替代 支持JSP标记库 为MVC模式设计：分离可视化设计和应用程序逻辑；分离页面设计员和程序员 5. 智能的国际化和本地化 字符集智能化（内部使用UNICODE） 数字格式本地化敏感 日期和时间格式本地化敏感 非US字符集可以用作标识（如变量名） 多种不同语言的相同模板 6. 强大的XML处理能力 <#recurse> 和<#visit>指令（2.3版本）用于递归遍历XML树 在模板中清楚和直接的访问XML对象模型 SwaggerSwagger 官方网站 [点击访问]Swagger 是一款RESTFUL接口的文档在线自动生成+功能测试功能软件。Swagger 是一个规范和完整的框架，用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。Swagger 的总体目标是使客户端和文件系统作为服务器以同样的速度来更新文件的方法，参数和模型紧密集成到服务器端的代码，允许API来始终保持同步。本项目脚手架已经集成了swagger，可访问路径http://127.0.0.1:8080/swagger-ui.html 查看DruidDruid Wiki文档Druid是一个JDBC组件，它包括三部分： DruidDriver 代理Driver，能够提供基于Filter－Chain模式的插件体系。 DruidDataSource 高效可管理的数据库连接池。 SQLParser sql解析处理 Druid可以做什么？ 可以监控数据库访问性能，Druid内置提供了一个功能强大的StatFilter插件，能够详细统计SQL的执行性能，这对于线上分析数据库访问性能有帮助。 替换DBCP和C3P0。Druid提供了一个高效、功能强大、可扩展性好的数据库连接…

基础培训-项目的正确打开方式
type: item
date: 2017-07-05T13:47:33+08:00
description: 在我们拿到Git代码后，应该怎么去正确使用呢？这篇文章就是讲如何导入一个maven项目。将代码下载到workspace我们将Git项目在sourcetree里面的本地路径改成eclipse的workspace路径，补上项目名称比如叫做projectOne，然后执行克隆，将代码下载到eclipse的workspace中。将代码导入到eclipse中在eclipse左侧Project Explorer里右击空白处，选择菜单import...然后在import向导里面选择maven > Exisiting Maven Project选择browse...，选择将要导入的项目文件夹，然后就能看到pom文件信息。点击Finish完成。然后就可以看到底下的进度条，等待项目导入成功。maven项目的初始化拿到maven项目，我们先要确保项目的jdk版本是否正确。选择Build Path > Configure Build Path然后检查下jdk版本是否正确如果没有看到正常的项目结构。我们可以使用 Update Project 功能。在项目的根目录上右击选择 maven > Update Project 等待maven build完成。然后我们使用Maven clean ，Maven install来初始化项目。在项目的根目录上右击选择 Run as > Maven clean && Maven install然后等待maven依赖下载完成。ok，项目就可以运行了。

基础培训-使用git及可视化工具sourcetree
type: item
date: 2017-07-04T12:00:58+08:00
description: Git Git是一个开源的分布式版本控制系统，用于敏捷高效地处理任何或小或大的项目。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。 Git 与常用的版本控制工具 CVS, Subversion 等不同，它采用了分布式版本库的方式，不必服务器端软件支持。 Git 与 SVN 区别GIT不仅仅是个版本控制系统，它也是个内容管理系统(CMS),工作管理系统等。 如果你是一个具有使用SVN背景的人，你需要做一定的思想转换，来适应GIT提供的一些概念和特征。Git 与 SVN 区别点： 1、GIT是分布式的，SVN不是：这是GIT和其它非分布式的版本控制系统，例如SVN，CVS等，最核心的区别。 2、GIT把内容按元数据方式存储，而SVN是按文件：所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs等的文件夹里。 3、GIT分支和SVN的分支不同：分支在SVN中一点不特别，就是版本库中的另外的一个目录。 4、GIT没有一个全局的版本号，而SVN有：目前为止这是跟SVN相比GIT缺少的最大的一个特征。 5、GIT的内容完整性要优于SVN：GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性，确保在遇到磁盘故障和网络问题时降低对版本库的破坏。 Git一些名词解释克隆(clone)：从远程仓库URL加载创建一个与远程仓库一样的本地仓库 提交(commit)：将暂存文件上传到本地仓库（我们在Finder中对本地仓库做修改后一般都得先提交一次，再推送） 检出(checkout)：切换不同分支 添加（add）：添加文件到缓存区 移除（remove）：移除文件至缓存区 暂存(git stash)：保存工作现场 重置(reset)：回到最近添加(add)/提交(commit)状态 合并(merge)：将多个同名文件合并为一个文件，该文件包含多个同名文件的所有内容，相同内容抵消 抓取(fetch)：从远程仓库获取信息并同步至本地仓库 拉取(pull)：从远程仓库获取信息并同步至本地仓库，并且自动执行合并（merge）操作，即 pull=fetch+merge 推送(push)：将本地仓库同步至远程仓库，一般推送（push）前先拉取（pull）一次，确保一致 分支(branch)：创建/修改/删除分枝 标签(tag):给项目增添标签 工作流(Git Flow):团队工作时，每个人创建属于自己的分支（branch），确定无误后提交到master分支 终端(terminal):可以输入git命令行 Git简明指南[链接]http://www.runoob.com/manual/git-guide/Git 完整命令手册 SourceTreeSourceTree 是 Windows 和Mac OS X 下免费的 Git 和 Hg 客户端，拥有可视化界面，容易上手操作。同时它也是Mercurial和Subversion版本控制系统工具。支持创建、提交、clone、push、pull 和merge等操作。SourceTree下载[[官网链接]https://www.sourcetreeapp.com/](https://www.sourcetreeapp.com/)SourceTree实践登陆github，在欢迎页点击“+ New repository“创建我们的仓库或点击右上角的“+”，然后再New repository亦可 按照个人需要填写仓库名、仓库描述等，建议勾选“Initialize this repository with a README”，填写完成后点击Create repository 至此，我们的仓库已经创建成功。创建成功后，我们在页面的右下角找到链接，点击复制 打开我们的SourceTree，点击：“+新仓库”，选择：“从URL克隆” 粘贴我们的仓库链接至源URL，SourceTree会自动帮我们生成目标路径（本地仓库路径）以及名称，点击克隆 克隆成功后，SourceTree会为我们自动打开我们刚才克隆的仓库，选择master选项，这里我们可以看到我们仓库里的所有文件 接下来我们想要上传一个项目至我们的远程Github仓库内。我们点击右上角“在Finder/在文件夹”中显示。然后SourceTree会帮我们打开我们的本地仓库，我们将需要上传的项目复制到本地的文件夹内，然后关闭文件夹，回到主页面。我们会发现工作副本出现了更改提示 我们点击工作副本，然后我们发现我们刚才上传的文件都在未暂存文件当中，此时，我们勾选“未暂存文件” 发现我们的文件变成了已暂存文件。此时，我们可以输入更新信息，然后，点击提交按钮 我们切换回master分支，会发现master…