自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

CieloSun

一个Java新人

  • 博客(46)
  • 资源 (1)
  • 收藏
  • 关注

原创 [置顶]Java学习导航

由于最近在系统的重新学习Java,为了便于日后复习,给Java内容做一个目录,便于日后复习。JVMJava内存模型进程与线程(结合Java)Java线程间通信

2017-04-01 13:38:34 405

原创 线程与进程(结合Java)

实际上,线程和进程的区别,在学OS时必然是学习过的,所缺的不过是一些总结。一. 进程进程(process)是计算机中已运行程序的实体。在面向线程设计的系统中,进程本身不是基本运行单位,而是线程的容器。程序本身只是指令、数据及其组织形式的描述,进程才是程序(那些指令和数据)的真正运行实例。若干进程有可能与同一个程序相关系,且每个进程皆可以同步(循序)或异步(平行)的方式独立运行。现代计算机系统可

2017-04-01 13:38:29 293

原创 Java线程间通信

由前文Java内存模型我们熟悉了Java的内存工作模式和线程间的交互规范,本篇从应用层面讲解Java线程间通信。Java为线程间通信提供了三个相关的关键字volatile, synchronized和final。对于final,我们在博文Java中static关键字和final关键字中已经介绍。volatile一. 定义由volatile定义的变量其特殊性在于:一个线程对变量的写一定对之

2017-04-01 13:38:27 391

原创 Java内存模型

一. 引言考虑到计算机组成的内容:原始的计算机是CPU用于计算+硬盘用于存储,由于CPU的高速发展和硬盘的缓慢发展,高速的存储需要持续供电且价格昂贵,于是引入了由高速存储组成的内存作为中间的缓冲层。形成了CPU-RAM-Main Memory的金字塔结构。接下来,由于CPU的继续发展,内存也渐渐跟不上CPU的速度,于是引入了更小更高速的cache作为CPU和内存的缓冲。形成了我们现在熟悉的计

2017-04-01 13:38:22 325

原创 Windows10 ubuntu子系统的启用

Windows 10 在一周年更新后,本身集成一个不带有图形界面的ubuntu 14.04系统了,大大方便了Linux开发,并且本身使用很方便,像我这种Windows死忠,只会在Linux下跑一下一定用Linux才能跑的东西的人,很喜欢这个子系统。不过由于相关的使用资料缺乏以及没有图形界面,可能还是不能完全取代虚拟机。开启方法如下:1. 设置-更新和安全-针对开发人员,在“使用开发人员功能”中

2017-04-01 13:38:19 1192

原创 JVM

当我们第一次学习Java时这些原理上的东西就会被提到,但是很少有真正去学习。今天开始从头过一遍Java,打算从JVM开始。一. JVM是什么JVM是Java Virtual Mechine的缩写。它是一种基于计算设备的规范,是一台虚拟机,即虚构的计算机。JVM屏蔽了具体操作系统平台的信息(显然,就像是我们在电脑上开了个虚拟机一样),当然,JVM执行字节码时实际上还是要解释成具体操作平台的机器

2017-04-01 13:38:14 236

原创 前序,中序,后序问题

原本没觉得这个简单的数据结构问题我会出问题,今天笔试的时候还懵了一下,所以在这里写一笔强化一下记忆。前序:根节点-左节点-右节点中序:左节点-根节点-右节点后序:左节点-右节点-中节点

2017-04-01 13:38:09 307

原创 Java枚举enum以及应用:枚举实现单例模式

枚举作为一个常规的语言概念,一直到Java5才诞生不得不说有点奇怪,以至于到现在为止很多程序员仍然更喜欢用static final的形式去命名常量而不使用,一般情况下,Java程序员用这种方式去实现枚举:class EnumByClass{ public static final int RED=0; public static final int GREEN=1; p

2017-04-01 13:38:05 348

原创 Java单例模式(Singleton)以及实现

一. 什么是单例模式因程序需要,有时我们只需要某个类同时保留一个对象,不希望有更多对象,此时,我们则应考虑单例模式的设计。二. 单例模式的特点1. 单例模式只能有一个实例。2. 单例类必须创建自己的唯一实例。3. 单例类必须向其他对象提供这一实例。三. 单例模式VS静态类在知道了什么是单例模式后,我想你一定会想到静态类,“既然只使用一个对象,为何不干脆使用静态类?”,这里我会将单例模

2017-04-01 13:37:55 250

原创 Java构造器:级联调用,调用兄弟构造器

级联调用:class Father{ Father(){ System.out.println("Father birth"); } public void announce(){ System.out.println("Father"); }}class Child extends Father{ Child(){

2017-04-01 13:37:53 581

原创 Java父类对象调用子类实体:方法重写与动态调用

众所周知Java的handle和C++的ponter而不是object对应,我们很熟悉C++的父类pointer调用子类实体的例子,那么对于Java的handle是不是也可以这样呢?这里我先给一个例子class Father{ public void announce(){ System.out.println("Father"); }}class Chi

2017-04-01 13:37:50 3753

原创 Java接口和抽象类以及接口的意义,instanceof的利用

接口interface:1. 在接口中没有变量,成员无论如何定义,都是公共常量,public static final即使不显式声明也如此。2. 所有接口方法均隐含public abstract即使不显式声明也如此。(因而也不能使用protected和private修饰,不加修饰也不是默认权限)3. 接口可以继承其他接口但是不能继承类,不能设计父接口中的方法,不能实现别的接口。4. 任何类

2017-04-01 13:37:48 1760

原创 Java中static关键字和final关键字

static:1. 修饰变量,方法表示静态方法,静态变量。2. static修饰代码块static{}此种形式为静态代码块,用于初始化同时被final static修饰的变量。(当然,更常用的方式其实是在变量处直接赋值)静态代码块的内容会被直接在类加载时运行package com.main;/** * Created by 63289 on 2017/3/19. */

2017-04-01 13:37:45 318

原创 Java访问权限

最近发现很多Java基础都有遗漏,因此复习,一些小Tips简单整理一下。最低保护:public,可以被任意访问。次低保护:protected,可以被类内,包内,继承类的子类访问。次高保护:默认,可以被类内,包内访问,不能被子类访问。最高保护:private,只能类内访问。 相对于C++,Java多了默认权限,需要额外记忆一下。

2017-04-01 13:37:42 344

原创 Spring4托管Hibernate5并利用HibernateTemplate进行数据库操作

时隔半年,再次发布配置类的相关Blog,因为左手受伤原因先做一个简述。首先利用idea创建一个Spring+SpringMVC+Hibernate项目,注意的是因为我们要完全放弃Hibernate以及SessionFactory配置文件,所以Hibernate不需勾选配置文件。全部三个框架都要用Annotation的方式简化配置。按我的个人习惯,把配置文件集中在web.xml和applica

2017-04-01 13:37:38 5546

原创 构建基础的SpringMVC+Hibernate+SpringloC项目

一. SpringMVC阅读我的上一篇文章《使用MyEclipse2015构建SpringMVC项目》,知道基本的构建方法,先构建一个纯springmvc项目,再对web.xml按照本文中做法简单改动。二. Hibernate之后用类似方法添加hibernate框架,并生成hibernate.cfg.xml和HibernateSessionFactory.java这个工厂文件。进入

2017-04-01 13:37:32 237

原创 使用Myeclipse2015构建SpringMVC项目

1.新建web project2.右键项目,给项目添加spring框架如图,不需要勾选任何一个选项。3.在WebRoot/WEB-INF目录下添加web.xml内容如下:xml version="1.0" encoding="UTF-8"?>web-app version="3.0" xmlns="http://java.sun.com/xml/ns/j

2017-04-01 13:37:28 824

原创 基于DP的矩阵连乘问题

当多个连续可乘矩阵做乘法时,选择正确的做乘顺序可以有效减少做乘法的次数,而选择的方法可以很容易的通过DP实现。原理就是对于每一个所求矩阵,搜索所有可以相乘得到它的方法,比较它们的消耗,选取最小值作为采用的方法。例如,给出矩阵A1(30*35) A2(35*15) A3(15*5) A4(5*10) A5(10*20) A6(20*25)我们另m(i,j)表示从第i个矩阵乘到第j个矩阵,

2017-04-01 13:37:23 294

原创 基于DP的LCS(最长公共子序列)问题

最长公共子序列,即给出两个序列,给出最长的公共序列,例如:序列1 understand序列2 underground最长公共序列undernd,长度为7一般这类问题很适合使用动态规划,其动态规划描述如下:设序列1为s,序列2为t,则if s[i+1]==t[j+1] dp[i+1][j+1]=dp[i][j]+1else dp[i+1][j+1]=max(dp[i][j

2017-04-01 13:37:20 188

原创 剪枝搜索

剪枝搜索是搜索中常用的一个方法,Binary Search就是一个经典的剪枝搜索例子,在Biniary Search中int binarySearch(int A[], int low, int high, int key){ int mid; while (low high) { mid = (low + high) >> 1;

2017-04-01 13:37:15 536

原创 基于分支限界法的旅行商问题(TSP)二

和上篇一样,考前写写伪代码,考完了补上具体的解释和代码。  状态{矩阵,结果集,下界}全局结果集列表,全局上界初始为Infinite建立一个heap,存储状态,出堆规则为拥有最小的下界。利用reduced cost matrix 来把矩阵进行化简,把化简消耗作为下界,将初始状态加入heap当heap不为空时{  从heap中弹出一个状态,赋值给两个临时状态。

2017-04-01 13:37:11 4917

原创 用分支限界法解决人员安排问题(Personnel assignment problem)

最近考期博主比较忙,先把思路简单说说,图和代码考完试补。人员安排问题,即给出员工集合和工作集合,寻找最合理的安排。对于员工集合P,员工集合会依据某个f来给出某种顺序,需要按该顺序P(i)进行工作安排。对于工作集合J,可以进行偏序排序,有一个偏序来排列工作。对于每个员工对应每个工作C(i,j),给出对应的cost matrix,来表明所需要的时间/资源消耗(可以用Bool 变量X(i

2017-04-01 13:37:08 2641

原创 浅谈C++ STL中的优先队列(priority_queue)

从我以前的博文能看出来,我是一个队列爱好者,很多并不是一定需要用队列实现的算法我也会采用队列实现,主要是由于队列和人的直觉思维的一致性导致的。今天讲一讲优先队列(priority_queue),实际上,它的本质就是一个heap,我从STL中扒出了它的实现代码,大家可以参考一下。首先函数在头文件中,归属于命名空间std,使用的时候需要注意。队列有两种常用的声明方式:std::pr

2017-04-01 13:37:02 707

原创 哈夫曼树与哈夫曼编码

哈夫曼树是一种简单的树结构,建树过程如下:给出一组数据,不断选择最小的两个数,并用两个数的和作为它们的parent节点,再从数据中删除这两个数,将两个数的和加入数据中,直到所有的数据都被加入树结构,形成一颗树。这颗树的所有非叶子节点都有两个child,两个child的值的和则是这个节点的值,根节点是初始数据的总和。哈夫曼树有多种用途,这里讲解一下哈夫曼编码。哈夫曼编码是将所给数据生

2017-04-01 13:37:00 423

原创 Binary Search 的递归与迭代实现及STL中的搜索相关内容

与排序算法不同,搜索算法是比较统一的,常用的搜索除hash外仅有两种,包括不需要排序的线性搜索和需要排序的binary search。首先介绍一下binary search,其原理很直接,不断地选取有序数组的组中值,比较组中值与目标的大小,继续搜索目标所在的一半,直到找到目标,递归算法可以很直观的表现这个描述:int binarySearchRecursive(int A[], int

2017-04-01 13:36:57 791

原创 Prime 算法的简述

前面在介绍并查集时顺便提了Kruskal算法,既然已经说到了最小生成树问题,就没有道理不把Prime算法说了。这里面先补充下Kruskal算法的大概意思,Kruskal算法通过把所有的边从小到大排列后,不断取权值最小的边加入最小生成树(起初可能是离散的多个树,最终连成一个整体),并通过并查集来舍弃形成回路的边。Prime算法有所不同,Prime算法先将一个起点加入最小生成树,之后不断寻找与

2017-04-01 13:36:54 1897

原创 基于分支限界法的旅行商问题(TSP)一

旅行推销员问题(英语:Travelling salesman problem, TSP)是这样一个问题:给定一系列城市和每对城市之间的距离,求解访问每一座城市一次并回到起始城市的最短回路。它是组合优化中的一个NP困难问题,在运筹学和理论计算机科学中非常重要。分支限界法在上一篇Blog中我有简单说明,并给出了基于分支界限法的Dijkstra ,这篇文章里介绍一下基于分支限界法的TSP算法。对

2017-04-01 13:36:51 10286 1

原创 利用分支限界法求解单源最短路(Dijkstra)问题

分支限界法定义:采用Best fist search算法,并使用剪枝函数的算法称为分支界限法。分支限界法解释:按Best first的原则,有选择的在其child中进行扩展,从而舍弃不含有最优解的分支,不断重复这一过程,直到找到答案或者判定无解。分支界限法常常用到优先队列来选择最佳扩展节点,有时也会用到普通队列,以先进先出为原则来进行筛选。单源最短路问题定义:给定有向图和起点,寻找到达

2017-04-01 13:36:48 2357

原创 凸包问题——Graham Scan

Graham Scan 概述:对于凸多边形的定义不在这里做详细叙述,这里给出算法的实现原理。Step 1:找出x值最小的点的集合,从其中找出y值最小的点作为初始点Step 2:获得新序列后,p[n]=p[1]Step 3:把p[0],p[1],p[2]放入一个栈,从i=3循环到i=n-1,取栈顶两个元素和p[i]连线,如果未形成左旋,栈顶元素退栈,直到栈中元素仅剩两个。

2017-04-01 13:36:43 183

原创 并查集(union-find set)与Kruskal算法

并查集并查集处理的是集合之间的关系,即‘union' , 'find' 。在这种数据类型中,N个不同元素被分成若干个组,每组是一个集合,这种集合叫做分离集合。并查集支持查找一个元素所属的集合和两个元素分别所属的集合的合并。并查集支持以下操作:MAKE(X):建立一个仅有成员X的新集合。UNION(X,Y):将包含X和Y的动态集合合并为一个新集合S,此后该二元素处于同一集合。FI

2017-04-01 13:36:40 1093

原创 比较排序算法的简单介绍和复杂度分析

标题长坑,就拿最近有在用的来弄吧,先写个大概,以后逐渐完善。对于以下代码,默认包含头文件:#include 1.冒泡排序(Bubble Sort)先从课本上最常见的冒泡排序说起吧,C++代码如下(个人习惯介绍算法使用C++,比伪代码还通俗易懂.......)void BubbleSort(int *A, int n){ for (int i = 0

2017-04-01 13:36:37 233

原创 GitHub学习笔记三·分支管理

GitHub对于每个开发版本都需要有一个分支,默认的分支是master往往被大家保留下来作为主分支,分支类似于进程的一个指针,往往在master这个稳定的主干版本上分出一个或多个正在开发的分支版本,开发成熟后再整合过去。新建一个分支的方法是git branch BRANCH-NAME当你只输入git branch你能看到的是所有分支和你当前所在的分支当你新建后要切换到这个分支时

2017-04-01 13:36:35 150

原创 GitHub学习笔记一·本地操作部分

安装过程略,假设你已经注册好了Github, 已经有了一个准备好的程序。我们的一切工作都是基于Git Shell,与GUI客户端无关。在使用前你先要配置好config中的几个内容,主要是你自己的个人信息git config --global user.name "Cielo Sun"git config --global user.email [email protected]

2017-04-01 13:36:32 128

原创 GitHub学习笔记二·远程端的操控

对于远端,当你新建一个项目的时候,需要在网页处新建,在新建项目的页面,会有一段提示你上传本地项目到此远端方法的代码,直接拷贝粘贴到git shell就可以解决问题,不再详述。当你把代码上传到一个已经存在的代码时,首先你要先和远端建立联系git remote add REMOTE-NAME https://XXX.XXX.XXX建立联系后想要上传你本地的代码,只需要使用git pus

2017-04-01 13:36:29 194

原创 GenyMotion 配合 Android Studio 的安装

众所周知,Android Studio 自带的模拟器对内存和CPU消耗都很大却并没有很好的效果,简直是谷歌为了卖手机设计的。而Geny Motion 对机能的要求大大降低,又不会像自带模拟器那么卡。Geny Motion官方支持Android Studio,但是因为某种很缺心眼的原因.......安装过程中会出现大麻烦,这里讲讲。1.Android Studio 的安装太过宏大,不提,假设

2017-04-01 13:36:27 430

原创 学习笔记 C++ 链表

今天查了不少关于链表的资料大概理解了链表,为记录只用留笔于此。链表概述:动态的数据存储单元,可以比数组更加灵活。链表的组成:存储的数据,下一个节点。首先让我们用代码完成一个节点。class Node //节点类{public: Node() {}//三种不同的节点创建方式 Node(int n) { num = n; next = NULL; }

2017-04-01 13:36:24 418

原创 Qt中绘制五子棋棋盘

一个需要做大作业的同学问我相关内容,就顺手写了一个,贴出来。项目包含头文件 mainwindowh,源文件mainwindow.cpp和主函数main.cpp。如下:mainwindow.h#ifndef MAINWINDOW_H#define MAINWINDOW_H#include #include class MainWindow : public

2017-04-01 13:36:21 3601 1

原创 利用VMWare 11 在 Windows 8.1 下安装与优化 OS X 10.10

此文中相关工具点击我从百度网盘下载一.安装第一步安装参考百度经验:点击这里,鉴于其中提供的文件全部不能用,替换成了上面的,亲测Intel Core I5 4200M 可用。(绿色部分为我本人添加,有删改)无跳转见下: 有图有真相,哈哈 一、下载以上文件:见本博客开头处。  下载Vmare Workstation,以管理员身份运

2017-04-01 13:36:19 334

原创 万网主机使用wordpress发送邮件的方法

今天弄了一下午总算明白了,这里写一下具体过程。首先是邮箱,万网主机是不支持mail()函数的,所以默认的不可用,如果你想发送邮件的话,只能使用fsockopen()函数。首先进入万网主机管理平台,启用fsockopen。第二步是更改php文件,在wp-includes文件夹下找到class-smtp.php,用notepad++打开,拉到第202行,把$this->smtp_conn =

2017-04-01 13:36:16 712

原创 一些遇到的Qt程序在Windows平台间移植问题整理

今天尝试把Qt程序移植到各种虚拟机中测试,由于Qt的依赖库报告往往不能显示出全部依赖库。结果频频出现问题,好不容易全部解决了,这里给出一些套路。首先对于Qt版本,我用过很多,最终表示现阶段推荐MingGW的版本(此版自带MingGW)安装时要注意勾选上MinGW ,如果你没有的话。此版本可以在WindowsXP下运行。之后我要介绍一个工具:Process Explorer v16.01

2017-04-01 13:36:13 1497

mongodb-async-driver-2.0.1.jar.zip

YCSB需要这个已经废弃的旧库,可下载后自行添加到maven: ``` mvn install:install-file "-Dfile=mongodb-async-driver-2.0.1.jar" "-DgroupId=com.allanbank" "-DartifactId=mongodb-async-driver" "-Dversion=2.0.1" "-Dpackaging=jar" ```

2019-12-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除