自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 收藏
  • 关注

原创 Ruby的初学感想

很久没有更新博客了,因为忙着毕业,论文,还有与导师斗智斗勇。最近由于入职的需要,需要暂时放弃java和c++,投入Ruby的怀抱了。在网上买的云主机ubuntu系统开始自己捣鼓ruby on rails。有几个经验要告诉大家:1、绝对绝对不要用windows来开发Ruby,你会面临无数的坑,包括但不仅限于依赖的包的无法安装等;2、刚开始学Ruby,最好找mac系统或者linux系统,哪怕网...

2019-03-16 09:58:30 320 1

原创 连接wifi没有验证页面

在一些公众场所连接wifi,特别是在酒店中,有时候会自动弹出验证页面,需要验证手机号才能上网,但是有时候手机却没办法登上这个验证界面,就算在手机浏览器中随便打开一个网页,也没法自动跳转,这个时候怎么办呢?试验了很多方法,我总结是用欧朋浏览器,然后随便登陆一个网站就会跳出验证页面了。其他浏览器例如uc都没办法。...

2018-10-15 10:19:16 13753

原创 intellij 编译出现找不到符号或者找不到包的情况

在项目中有一次发现没有做什么,编译突然就出现找不到包和找不到符号的报错。网上说的并不管用。最后得出的方法是,rebuild一下就恢复正常了。

2018-09-04 15:45:19 2656

原创 如何读C++指针复杂声明?

很多人都会被C++指针的复杂声明搞混了。其实,读C++指针声明的过程,我们可以遵循2个原则:1、从名字开始,右->左->右->左->右这样来读;2、不断对指针内容进行补完(对于指针,我们要知道指针的类型,知道了指针的类型也就是补完了;对于函数,我们要知道函数的参数和返回值,知道了也算是补完了)。举个例子:float (*(* fp)(int,int,int))(int)1、...

2018-06-19 15:21:40 448

原创 Java中int的表示方法及其作用

在Java中,int是使用32位表示,long使用64位表示。这两个基本类型都是整形,没有其他的表示方法了。他们内部是怎么表示的呢?是采用补码表示。由于我们经常在做题中会遇到Java的位运算,Java的位运算只能用于int和long型。所以我们有理由好好分析Java内部是怎么用二进制表示的。这里只举int为例子,long是一样的。1、int的范围int在Java内部是用32位来表示的,而最高位是表...

2018-06-16 23:09:26 19954

原创 Java设计模式2:各个设计模式(模板模式、单例模式、工厂模式、代理模式、装饰器模式、适配器模式、策略模式、观察者模式、迭代器模式)

一、模板模式(Template Pattern)模板模式指的是一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。模板模式事实上才是使用得最多的设计模式,几乎所有OOP的代码都会有意无意碰到。我们以来修房子作为一个例子。public class DesignPattern { public static void main(String...

2018-06-13 14:02:19 681

原创 Java设计模式1:面向对象编程的四大特征和设计模式的六大原则

这篇博文算是对《设计模式之禅》的读书笔记。这本书写得非常好,通俗易懂,强烈推荐!另外,也参考了很多其他的资料,包括http://www.runoob.com/design-pattern/design-pattern-tutorial.html以及网上一些博客等,再次表示感谢!之后,我会针对几个重点的设计模式,写一些代码,自己操作熟悉一遍,而其他一些设计模式就在概念上知道即可。一、设计模式...

2018-06-11 14:49:19 2146

原创 Java同步和多线程2:JUC锁

通过前面的文章我们知道了,可以通过synchronized关键字来进行同步,实现对竞争资源的互斥访问的锁。同步锁的原理是,对于每一个对象,有且仅有一个同步锁;不同的线程能共同访问该同步锁,但是在同一个时间点,该同步锁能且只能被一个线程获取到。这样,获取到同步锁的线程就能进行CPU调度,从而在CPU上执行;而没有获取到同步锁的线程,必须进行等待,直到获取到同步锁之后才能继续运行。这就是,多线程通过同...

2018-06-10 20:32:44 202

原创 Java同步和多线程1:多线程的基本操作及synchronized的应用

其实Java多线程中,锁只是一个很抽象的概念。锁是为了实现互斥和同步而设的。“锁”打个比方,获取锁可认为是“获取做某个事情的权限”,而“释放锁”可以认为是把做某件事情的权限交给别人了。也可以这样认为,“锁”锁住的是某个事物。获取锁指的是获得解开这个锁的钥匙,可以对这个事情进行操作,而释放锁是把这条钥匙给别人,或者放回某个钥匙柜子里,等别人来取。Java中锁的机制,是为了在多线程中实现同步互斥。如果...

2018-06-08 21:51:27 1531

原创 回溯算法超通俗易懂详尽分析和例题

        回溯法是很重要的一种算法,在it企业笔试中经常会遇到。事实上,在各种编程题中,大家或多或少都会接触到这些题目,但是很多人没有对这类题目有个系统性的总结。接下来就对回溯法进行详尽,通俗易懂的分析。        回溯法有通用解法的美称,对于很多问题,如迷宫等都有很好的效果。回溯算法实际上一个类似枚举的深度优先搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,...

2018-06-06 19:22:02 39333 14

原创 图总结

在求职和面试中,图也是很重要的一个领域。而这里面尤其重要的是深度优先搜索、广度优先搜索、最小生成树、最短路径、拓补排序的内容。在这里,我们只抽象地对图及各种算法进行分析,尽量不涉及代码实现。(参考:《Java数据结构和算法》)一、图...

2018-06-05 13:56:43 654

原创 树总结

在这里,我们详细分析各种树的性质和操作。树形结构的特点是一个数据元素可以有很多个直接后继,但只有一个直接前驱。

2018-06-02 16:14:47 2254

原创 查找算法

对于查找算法,耳熟能详的就是二分查找了。对于查找算法来说,由于在实际应用中会把数据以一定的数据结构(如二叉树,红黑树等)组织起来,很少会直接使用一个数组或链表对数据直接存储。因此,对数据的查找算法没有排序算法那样多样性,而是都包含在各个数据结构中了。这里的查找算法,仅针对有序的数组的查找。(参考:https://www.cnblogs.com/yw09041432/p/5908444.htmlht...

2018-06-02 15:03:04 217

原创 另外一些排序算法:希尔排序、基数排序、桶排序

一、希尔排序希尔排序,其实属于一种特殊的插入排序,是简单排序算法里面的直接插入排序的改进版。希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。希尔排序是基于插入排序的以下两点性质而提出改进方法的:插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率;插入排序一般来说...

2018-06-01 11:28:57 684

原创 三个高级排序算法:快速排序、归并排序、堆排序

接下来的三个高级排序算法,是在实践中经常使用的算法,比起基于比较和交换的三个简单的排序算法,有更快的速度。快速排序和归并排序都属于递归排序算法,对于递归排序算法来说很重要的就是对递归树的理解。一、快速排序快速排序使用了分治法的策略。它的基本思想是,选择一个基准数,通过一趟排序将要排序的数据分割成独立的两部分;其中一部分的所有数据都比另外一部分的所有数据都要小。然后,再按此方法对这两部分数据...

2018-05-30 21:15:26 6900

原创 三个简单排序算法:冒泡排序、选择排序、插入排序

以下从基础开始,逐步详细复习各个排序算法。先从三个最基础最简单的排序算法开始。他们分别是冒泡排序、选择排序、插入排序。以下都是java代码,并且认为升序是有序。一、冒泡排序1、代码public class Main{//冒泡排序 public static void main(String[] args){ int[] a=new int[]{1,3,1,2,0,4,5,2,6,2,0};...

2018-05-30 20:46:02 7422

原创 Java中容器排序

Java中经常需要对容器(一般是ArrayList)进行排序,使用的是Collections类的静态方法Sort。Sort有两个参数,一个接收该容器,另一个是一个Comparator接口。最好在ArrayList中存储的类都必须实现了Comparable接口,且覆盖了compareTo方法(一般Java中大多数类都已经实现过了)。Sort也可以只有一个参数,这个时候是默认升序排序。常用的方法:Ar...

2018-05-17 17:02:43 3202

原创 java中BigDecimal类的使用

在Java的各种机试题中,经常会出现一些计算,这些计算的结果和运算数可能会超过内置数据类型的大小。这个时候就需要使用BigDecimal类,它可以进行大数的运算;1、BigDecimal类的初始化有两种方法初始化,一种是使用double类型,一种是使用String类型BigDecimal aDouble =new BigDecimal(1.22);System.out.println("cons...

2018-05-17 16:11:33 8346

原创 数据库学习6高级应用

一、存储过程存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。它有点像内置函数。使用存储过程的好处有以下几点。换句话说就是三点,简单、安全、高性能:提高性能。因为使用存储过程比使用单独的SQL语句要快;通过把处理封装在...

2018-05-16 17:15:41 418

原创 数据库学习5操纵表

一、创建表

2018-05-16 16:09:36 164

原创 数据库学习4数据插入、更新和删除

w

2018-05-14 16:32:38 641

原创 数据库学习3联结

前面我们说的都是在一个表中的查询操作。而就算在子查询,也并没有把多个表关联起来,也实际上是对一个表的单独操作。而联结(在很多地方称为连接,其实是一样的)。联结是利用SQL的SELECT能执行的最重要的操作。简单地说,联结是一种机制,用来在一条SELECT语句中关联表,因此称之为联结。使用特殊的语法,可以联结多个表返回一组输出,联结在运行时关联表中正确的行。联结的功能是关系型数据库的一个巨大的优势。...

2018-05-14 15:21:16 607

原创 数据库学习2查询

一般来说SQL语句是不区分大小写的。虽然SQL是不区分大小写的,但有些标识符(如数据库名、表名、列名)可能不同:在MySQL 4.1及之前的版本中,这些标识符默认是区分大小写的;在MySQL 4.1.1版本中,这些标识符默认是不区分大小写的。这样设置的原因可能是因为不想让人把表间可以以大小写区分,让人们取更具有辨识度的名字。但是为了方便辨认,一般都把SQL关键字写成大写,对表名和列名写成小写。另外...

2018-05-14 11:19:00 734

原创 数据库学习1一些基本概念

主要参考《MySQL必知必会》以及网络上一些资料一、数据库(Database)数据库是保存有组织的数据的容器(通常是一个文件或一组文件)。要与数据库软件区分开。数据库软件应称为DBMS(数据库管理系统),它是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库。数据库是通过DBMS创建和操控的。二、表(Table)表是某种特定类型数据的结构化清单。存储在表中的数据是一种类型的数据或一个清单。...

2018-05-12 09:44:42 171

原创 2018华为软件精英挑战赛2

预测部分,我们使用的是GRU,也就是简化版的LSTM。其实根据我们的经验,这次赛事使用神经网络效果并不好,因为神经网络需要大量的数据喂食和训练,而这次比赛提供的训练数据量太少了。...

2018-05-11 15:11:02 540

原创 2018华为软件精英挑战赛1

本次华为2018软件精英挑战赛,趁着空余时间参加了一下,很幸运江山赛区初赛36名压线进了江山赛区决赛,决赛名次是25名,应该说已经达到预期了。一来没有花很多时间,二来本身也非科班出身。现在放上部分代码以及本人的一些思考。直接从复赛赛题开始吧,因为复赛的赛题和初赛其实区别不大。代码很大程度上参考了github上的https://github.com/Root-lee/Put_Flavors_SA和h...

2018-05-11 10:31:33 366

转载 计算中缀表达式

转载自https://blog.csdn.net/qq_26286193/article/details/80214805“计算中缀表达式”可以称得上是一个特别经典的关于栈的算法题,几乎在所有数据结构教材中都会涉及,而且很多公司面试或者笔试的时候都会把这道题作为一个考察点。可以说,这是一道必须要掌握的算法题。中缀表达式、后缀表达式等概念在这里就不赘述了,让我们直奔主题。题目:输入一个中缀表达式,计...

2018-05-10 20:57:03 44119 8

原创 正则表达式简要学习

综合了Ben Forta《正则表达式必知必会》以及http://www.runoob.com中的一些正则表达式教程,特别是http://www.runoob.com/regexp/regexp-tutorial.html正则表达式是一些用来匹配和处理文本的字符串。正则表达式由一些普通字符和一些元字符(metacharacters)组成。普通字符包括大小写的字母和数字,而元字符则具有特殊的含义。注意...

2018-05-10 19:35:39 676

原创 计算机网络学习5应用层和下一代因特网

 在这里,我们了解几个重要的应用层协议即可,包括万维网(WWW),电子邮件(SMTP),远程登录(TELNET),文件传输(FTP)。在此之前,先了解一下DNS(Domain Name System,域名系统)1、DNS...

2018-05-10 11:24:14 671

原创 计算机网络学习4传输层

传输层最重要的两个主要协议就是TCP和UDP。TCP提供可靠的通信传输,UDP常用于让广播和细节控制交给应用的通信传输。要根据通信的具体特征,选择合适的传输层协议。TCP比UDP复杂得多,TCP的各种机制,如面向连接的可靠服务、流量控制、拥塞控制等,以及TCP连接管理和状态图等,必须非常熟。运输层为应用进程之间提供端到端的逻辑通信(不同于网络层,网络层是为主机之间提供逻辑通信)。运输层向高层用户屏...

2018-05-09 20:55:54 661

原创 计算机网络学习2物理层和数据链路层

物理层这里不做过多阐述,主要是涉及硬件与具体物理实现的内容。1、物理层的基本概念物理层的主要任务是确定与物理传输媒体的接口的一些特征,如机械特征,电气特征,功能特征,过程特征等。物理层处理的是0、1比特的数据,它把二进制的0、1转换成实际的通信媒介的物理现象,如电压的高低、光的闪灭、电波的强弱等,从而通过更下层的物理媒介来进行实际数据传输。2、物理层下的传输媒体双绞线、同轴电缆、光缆、无线电传输等...

2018-05-09 19:39:32 4092

原创 计算机网络学习3网络层

1、网络层提供的服务网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。如果主机中的进程之间的通信需要是可靠的,那么就由运输层负责。采用这种设计的好处是路由器可以做得比较简单,价格低廉,网络造价大大降低,运行方式灵活,能够适应多种应用。它会造成:(1)网络在发送分组(IP数据报)时不需要先建立连接;(2)每一个分组独立发送,与前后的分组无关;(3)所传送的分组有可能出错、丢失、重复和...

2018-05-06 23:24:03 645

原创 计算机网络学习1协议和分层概述

参考了各个网络的资料、《图解TCP/IP》、《TCP/IP详解》、谢希仁的《计算机网络》等1、网络协议分层(1)传统上,我们所知道的是开放系统互连参考模型 (Open System Interconnect 简称OSI)的七层模型。但是事实上,作为法律上的国际标准OSI并没有得到市场的认可。但是我们依旧是有必要了解一下。它的结构以及各层功能如下:一些经常使用的各层协议如下:物理层:RJ45、CLO...

2018-05-02 20:33:35 4402 1

原创 操作系统学习9进程间通信和文件系统

进程间通信进程间通信,简称IPC,Inter Process Communication。传统上我们认为,进程间要保持相对独立,地址空间是独立的。然而,进程之间需要协作完成一些大型任务。所以进程间要在保持相对独立的同时,有相互的沟通。进程间通信提及的信号,和之前的信号量是不一样的。1、通信模型2、直接与间接通信左边是间接通信,右边是直接通信。左边进程A先把消息发送到内核,内核再把消息发给B。对于直...

2018-05-01 22:51:45 379

原创 操作系统学习8同步互斥问题

回顾一下同步互斥的概念:现代操作系统基本都是多任务操作系统,即同时有大量可调度实体在运行。在多任务操作系统中,同时运行的多个任务可能:都需要访问/使用同一种资源多个任务之间有依赖关系,某个任务的运行依赖于另一个任务这两种情形是多任务编程中遇到的最基本的问题,也是多任务编程中的核心问题,同步和互斥就是用于解决这两个问题的。互斥:是指散步在不同任务之间的若干程序片断,当某个任务运行其中一个程序片段时,...

2018-04-29 22:59:02 930

原创 操作系统学习7CPU调度

CPU调度与进程有很密切的联系1、上下文切换和CPU调度的关系既然要进行上下文切换,就必须回答一个问题:什么时候进行上下文切换?挑选哪些来进行切换?这就是CPU调度需要学习的内容。2、 什么时候进行调度?从一个状态到另一个状态变化的时候就会触发一次调度,特别是跟运行态相关的状态变化。因为这个时候就涉及到是否让当前进程执行,或者把当前进程换出内存。3、内核运行调度程序的条件:调度程序是在内核中执行的...

2018-04-29 16:18:29 266

原创 操作系统学习6进程和线程管理

这些内容是操作系统中相当重要的,进程(Process)和线程(Thread)要区分1、进程的一些概念(1)进程的定义:狭义定义:进程是正在运行的程序的实例(an instance of a computer program that is being executed)。 广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次动态执行过程。它是操作系统动态执行的基本单元,在传统的操作系统...

2018-04-26 16:08:50 204

原创 操作系统学习5

页面置换算法以下是局部页面算法。为什么叫局部?因为针对的是一个进程,也就是一个程序。1、页面置换算法的功能和目标:2、最优页面置换算法:可以用作其他算法的性能评价依据,也就是在一个模拟器上运行某个程序,并记录每一次的页面访问情况,在第二遍运行时即可使用最优算法。理论上很难使用这个算法,但是这个算法本身是最优的,可以得到最少次数的缺页中断,所以可以尽量逼近这个最好的结果。3、先进先出算法:所谓Bel...

2018-04-24 00:08:48 426

原创 操作系统学习4

地址空间与地址生成1、地址空间:物理地址空间和逻辑地址空间物理地址空间:硬件支持的地址空间逻辑地址空间:一个运行的程序所拥有的内存范围2、逻辑地址的生成连续内存分配:内存碎片与分区的动态分配(内存分配很重要)1、内存碎片问题:空闲内存不能被使用,包括外部碎片和内部碎片,这都是要尽力避免的2、分区的动态分配,有三种内存分配算法:首次适配,最优适配,最差适配3、首次适配:首次适应算法从空闲分区表的第一...

2018-04-21 17:08:02 240

原创 操作系统学习3计算机体系结构及内存分层体系

1、CPU里面有运算器,寄存器,控制器,缓存(Cache),存储管理单元(MMU)2、内存3、外设I/O设备,磁盘等4、总线把上面三者连接起来5、内存的层次结构6、虚拟内存:虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。7、操作系统在内...

2018-04-14 22:34:28 707 1

空空如也

空空如也

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

TA关注的人

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