自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(73)
  • 资源 (1)
  • 收藏
  • 关注

原创 MySQL数据库——检索数据(一)

为了使用SELECT检索表的数据,必须至少给出两条信息:(1)想选择什么(2)从什么地方选择part 1:检索单个列SELECT userName FROM yellowriver需要说明的是这是还没有排序的检索并且数据也没有进行过滤 。 多条SQL语句必须以;分隔。 并且SQL语句是不区别大小写的 我们提倡对所有SQL关键字使用大写 而对所有列和表名使用小写,这样使代码更易于阅读和调试。part

2017-12-07 00:58:03 10426

原创 并发编程——关于任务的执行(Task Execution)

1.多线程套接字编程中的不足 记得之前做过学校的一个实验,是关于多线程套接字编程地,在那次实验中,我们采用了如下的代码:ServerSocket server = new ServerSocket(80);while(true){ //新建线程 new Thread(xxx).start; }在上方代码,我们为了提升服务器的效率,我们使用了多线程编程,但是...

2018-06-12 00:33:14 1308

原创 并发编程——构建高效切可伸缩的结果缓存

使用HsahMap 首先我们定义一个Computable接口,该接口包含一个compute()方法,该方法是一个耗时很久的数值计算方法。Memoizer1是第一个版本的缓存,该版本使用hashMap来保存之前计算的结果,compute方法将首先检查需要的结果是否已经在缓存中,如果存在则返回之前计算的值,否则重新计算并把结果缓存在HashMap中,然后再返回。interface Comp...

2018-06-06 16:15:47 284

原创 并发编程————基础模块的介绍

一、同步容器类 同步容器类包括Vector和Hashtable,二者之外还包括在JDK1.2中添加的一些功能类似的类,就是那些以Collection.synchronizedXxxx等工厂方法创建的同步的封装器类。这些类实现线程安全的方式是:将他们的状态封装起来,并对每个公有方法都进行方法同步,使得每次只有一个线程能访问容器的状态。1.1同步容器类的问题 同步容器类都是线程安全地,但是在某...

2018-06-06 16:09:17 234

原创 并发编程——创建线程安全的类,对象组合

1.1 实例封闭 我们时常需要创建一个线程安全的类,那么第一步,收集同步需求,并将同步策略写成正式文档。例如:1.状态变量的上届和下届值,范围;2.依赖状态的操作:比如某些方法中,包含一些先验条件,再删除某个元素前,队列必须处于非空状态。如果某个对象不是线程安全的,那么可以通过多种技术在多线程程序中安全地使用。我们可以确保该对象智能由单个线程访问(线程封闭),或者通过一个锁来保护对该对象的所...

2018-06-04 00:26:02 725

原创 并发——对象的共享

1.1可见性的理解 我们已经知道了同步代码块和同步方法可以确保以原子性的方式执行操作,但是,同步还有另一方面的重要作用:内存可见性。我们希望一个线程在修改了对象状态后其他线程能够看到发生的状态变化。这就是说,为了确保多个线程之间对内存写入操作的可见性,必须使用同步机制。可见性,是针对处理器来说的,让处理器能过及时地看到变化。造成变量状态可见性失效,不可见的原因可能是我们没有使用同步块,其...

2018-06-01 22:36:33 256

原创 并发基础知识(一·)

1.1 什么是线程安全性 当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的。1.2 原子性//存在于类A中的变量count++count;现在假设有两个线程,他们都将运行上方 count++的代码,那么在当前的多线程环境下,他很会可能出错,那是因为...

2018-05-30 03:00:26 309

原创 动态规划——合唱团

题目: 有 n 个学生站成一排,每个学生有一个能力值,从这 n 个学生中按照顺序选取 k 名学生,要求相邻两个学生的位置编号的差不超过 d,使得这 k 个学生的能力值的乘积最大,返回最大的乘积。 每个输入包含 1 个测试用例。每个测试数据的第一行包含一个整数 n (1 <= n <= 50),表示学生的个数,接下来的一行,包含 n 个整数,按顺序表示每个学生的能力值 ai(-50 ...

2018-02-23 19:06:09 937

原创 递归-网格走法

题目描述 有一个X*Y的网格,小团要在此网格上从左上角到右下角,只能走格点且只能向右或向下走。请设计一个算法,计算小团有多少种走法。给定两个正整数int x,int y,请返回小团的走法数目。 输入描述: 输入包括一行,逗号隔开的两个正整数x和y,取值范围[1,10]。 输出描述: 输出包括一行,为走法的数目。#include<iostream>#include<...

2018-02-21 16:06:20 407

原创 小易喜欢的单词(简单比较)

题目描述 小易喜欢的单词具有以下特性: 1.单词每个字母都是大写字母 2.单词没有连续相等的字母 3.单词没有形如“xyxy”(这里的x,y指的都是字母,并且可以相同)这样的子序列,子序列可能不连续。 例如: 小易不喜欢”ABBA”,因为这里有两个连续的’B’ 小易不喜欢”THETXH”,因为这里包含子序列”THTH” 小易不喜欢”ABACADA”,因为这里包含子序列”AAAA” ...

2018-02-19 23:04:32 635 1

原创 寻找舞伴(动态规划)

题目描述 舞蹈队要参加央视春节晚会了,这可是天大的好消息。节目要求男女生组成一对一的舞伴,并且舞伴的身高要相同。例如男生的身高为2、3、4,女生为1、2、3,其中身高为“2”和“3”的同学能找到合适的舞伴,即最多有两对舞伴。 你能帮他们计算出最多有多少对舞伴吗?#include<iostream>using namespace std;int temp1[999],te...

2018-02-11 23:31:24 362

原创 MySQL——触发器

触发器,顾名思义,就是说MySQL响应一下任意语句而自动执行的一条MySQL语句(也可能位于BEGIN和END语句之间的一组语句): 1.DELETE 2.INSERT 3.UPDATE其他MySQL语句不支持触发器。part 1 创建触发器 在创建触发器时,我们应该给出 唯一的触发器名 ,触发器关联的表 ,触发器应该相应的活动(DELETE、INSERT、或UPDATE)

2018-01-03 16:14:00 287

原创 MySQL数据库——存储过程

简单介绍下存储过程:就是将一系列复杂的SQL语句打包成一个过程,通过开始和结束的特殊字符让系统知道应该读到哪里。 对于存储过程存在的原因,大家都了解,将复杂的存储封装成一个过程有利于我们进行操作,并且由于这种批处理打包行为,在性能上也有提高,写好的存储过程还能保证用户不会出错,安全性能也能提高。基于以上原因,我们有了存储过程这一东西。part 1 创建存储过程和调用 CREATE PROCEDURE

2018-01-02 12:13:46 179

原创 MySQL数据库——视图

视图是虚拟的表。 给我的感觉好像是原来表的投影一样,可以只投影一部分。视图只包含使用时动态检索数据的查询。 11.视图简介 理解视图,要从一个例子说起:SELECT cust_name, cust_city,cust_state FROM customers现在,假如可以把整个查询包装成一个名为productcustomers的虚拟表,那就可以如下轻松地检索出相同的数据:SELECT cust_

2017-12-27 01:26:20 945

原创 MySQL数据库——创建和操纵表

本节将讲述表的创建、更改、和删除的内容1.表的创建一般我们有两种创建表的方法: 1.使用交互式创建和管理表的工具。(比如Navicat,MySQLworkBench) 2.直接使用MySQL的语句创建。1.1表的创建基础CREATE TABLE customers( 列 名 类型 是否可空 设置了自增 最后加上了逗号 cust_id int NOT NULL AUTO_

2017-12-26 21:01:34 262

原创 MySQL——插入、更新、删除数据

我们吧检索单独拉出去,是因为在JDBC中对于检索的处理,和对于插入,更新,删除操作是不同的。现在我们将分别介绍MySQL的INSERT插入语句,UPDATE更新语句,DELETE删除语句。part 1.1

2017-12-21 00:40:34 340

原创 MySQL数据库——组合查询

这一次说下如何利用UNION操作符实现组合查询,即将多条SELECT语句组合成一个结果集。我们目前每次使用数据库查询都是用单个SELECT来用的,但是MySQL也允许执行多个查询,就是说多个SELECT,但是是一个结果集。这样的组合查询称为并(union),也叫复合查询。有两种情况,我们需要用到组合查询: 1.在单个查询中从不同的表返回类似结构的数据; 2.对单个表执行多个查询,按单个查询返回数

2017-12-20 22:00:01 2399

原创 MySQL数据库——创建高级联结

我们上一次介绍了,联结的使用。现在,我们要更进一步:part 1 使用表别名SELECT code_id,state FROM coder AS c,git AS d WHERE c.ID = d.id ;需要注意的是,只有WHERE时候,才可以使用表别名。如上所示,我们的别名,除了用在列名和计算字段外,我们还可以用在表的身上。 我们这样做有两个理由:1.缩短SQL语句 2.允许在单挑SEL

2017-12-19 21:25:05 241

原创 MySQL数据库——联结表

本节,我们将介绍SQL最强大的功能之一,就是在数据检索查询的执行中联结表。联结是利用SQL的SELECT能执行的最重要的操作。 part 1 关系型数据 和 查询他的外部联结 但是在开始之前,我们要先了解一些知识,作为储备!我们先要介绍一下,关系型数据库: 想一想如下情况,我们有一堆产品,他的信息有,价格,产品供应商名。 那我们应该如何存储这些信息呢? 我们应该将这些数据和产品信息分开存储!因

2017-12-19 20:12:09 1026

原创 MySQL数据库——使用子查询

**SELCET语句是SQL的查询。迄今为止我们所看到的所有SELCET都是简单查询,即从单个数据库表中检索数据的单条语句。 SQL还允许创建子查询,就是嵌套在其他查询内的查询!**part 1 使用子查询进行过滤SELECT coder.code_id FROM coder WHERE ID IN (SELECT coder.ID FR

2017-12-19 15:21:56 822

原创 MySQL数据库——分组数据

上一节我们说到,SQL聚集函数可以用来汇总数据。这使我们能够对 行 进行计数 ,计算和 与 平均值 ,获得 最大 和 最小 值 而不用检索所有数据!到目前来说,我们的所有数据都要匹配WHERE子句的数据 基础上来进行。 例如 我们要返回 id 为 5 的行 where users_id = 5 但是,如果要返回年纪为15的行的 代码作品,或者返回具有10个以上作品的 行(程序员) 怎么办?这时候就能

2017-12-18 20:39:33 1211

转载 Java(9-1)输入与输出(二)

上节我们关注了 文本形式的读入和写出的操作(UTF-8编码)。 这回,我们要看看在Java中如何对文件以 010101 二进制的形式 来进行读写 。Part 1.1 DataInput 和 DataOutput接口的介绍DataOutput接口中定义了用二进制格式读取,数组、字符、boolean值和字符串的方法; 例如,writeInt总是将一个正数写出为4字节的二进制数量值,而不管他有多少位

2017-12-18 00:58:52 195

原创 Java(9-1)输入与输出(一)

我们将会介绍如何在JAVA中进行输入和输出操作。part 1 大体介绍输入输出流 在JavaAPI中,可以从其中读入一个字节序列的对象称作输入流,而可以向其中写入一个字节序列的对象称为输出流。这些字节序列的来源和目的地可以是文件,也可以是网络连接,甚至内存块。**抽象类!**InputStream 和 OutputStream 构成了输入和输出各类层次的基础。part 2.1 读写字节虚

2017-12-17 16:23:01 288

原创 MySQL数据库——汇总数据(聚集函数)

本节介绍什么事SQL的聚集函数以及如何利用他们汇总表的数据。在实际操作中,我们经常需要一些特点数据的,比如: 1.我们常常要确定表中的行数; 2. 获得表中行组的和 ; 3.找出表列(或所有行或某些特定的行)的最大值、最小值和平均值。上面那些例子都是都是需要对表的数据,而不是实际表中的数据。 因此根据表中的实际数据项目返回来统计处理,是对资源和时间的一种浪费。而我们想要的其实是关于表本身的信息的汇总

2017-12-17 00:24:55 8714 1

原创 MySQL数据库——使用数据处理函数

函数,大家肯定都了解,SQL支持利用函数来处理数据,函数一般是在数据上执行的,他给数据的转换和处理提供了方便 。 但是需要说明,函数的移植性没有SQL语句好,但是使用起来很有效,所以如果决定了使用函数,应该保证好代码注释,以便以后其他人都能知道所编写的SQL代码的意义。part 1 文本处理函数 我们其实已经见过一个文本处理函数了,就是我们去掉空格的那个函数。 这里我们再看一个例子:SELECT

2017-12-11 22:08:18 407

原创 MySQL数据库——创建计算字段

本节将介绍什么事计算字段,如何创建计算字段以及怎样从应用程序中使用别名引用他们 。 简单说,计算字段其实就是一段各个列的信息集合,这个集合实际并不存在与数据库表中吗计算字段是运行时在SELECT语句内创建的 。Tip: 字段: 基本上与列的意思相同,经常互换使用,不过数据库列一般称为列,而属于字段通常用在计算字段的连接上。part 1 拼接字段 上面说到计算字段是一个集合,这个集合能够按照我们需要

2017-12-11 21:33:42 3101

原创 MySQL数据库——用通配符和正则表达式过滤数据(二)

上面说了通配符的用法(下划线 和 % ),但是我们要知道,通配符只能完成最基本的过滤,但是随着过滤条件的复杂性的增加,我们就需要用到正则表达式啦 。 正则表达式是用来匹配文本的特殊的串(字符集合)。更关键的是所有种类的程序语言,文本编辑器,操作系统都支持正则表达式,我们应该学习这种表达文本的方法!正则表达式是用这则表达式语言来建立的,正则表达式语言是用来完成文本匹配的一种特殊语言,有自己的特殊的语法

2017-12-09 01:03:16 555

原创 MySQL数据库——用通配符和正则表达式过滤数据(一)

前面我们介绍过关于如何过滤数据,但是那些都是对已经确定的值进行过滤的。在实际生活中,我们很可能需要类似这样的搜索,列出文本中包含关键字“Freeman”的语句。 显然,我们用之前的简单操作肯定是不行地,必须使用通配符!通配符:用来匹配值一部分的特殊字符搜索模式: 由字面值、通配符或两者组合成的搜索条件。通配符本身实际是SQL的WHERE子句中有特殊汉子的字符,在搜索子句中使用通配符,必须使用LIK

2017-12-08 23:20:53 1174

原创 MySQL数据库——过滤数据(一)

数据库一般包含大量的数据,但是我们大部分情况下并不需要检索所有的数据,只要检索部分数据就行了。只检索所需要数据需要指定搜索条件,搜索条件也称为过滤条件。part 1 使用WHERE 子句 在SELECT子句中,数据根据WHERE子句中指定的搜索条件进行过滤。WHERE子句在表名(FROM子句)之后给出,如下所示:SELECT users.user_name, users.user_age FROM

2017-12-07 17:29:11 3268

原创 Java(8-5)阻塞队列与线程安全集合

上一次,我们讨论了java多线程的一些细节问题,包括死锁,读写锁等等。这一节,我们要介绍关于阻塞队列以及如何使用并且操作线程安全的集合 。 Part 1 阻塞队列对于许多线程问题,可以通过一个或多个队列以优雅且安全的方式将其形式化。想一下,生产者线程向队列插入元素,消费者线程取出他们。使用队列可以安全地从一个线程向另一个线程传递数据。例如,我们从银行转账,转账线程将转账转账指令对象(命令模式?) 插

2017-12-06 20:22:11 855

原创 Java(8-4)多线程各种细节问题1

上一次我们介绍了Volatile,监视器还有synchronized锁关键字的使用。这一次我们要说下关于final在多线程的作用,原子性的使用,死锁以及Java中的应对方案,线程的局部变量 和 读写锁的介绍 。 Part 1 关于final变量在多线程的使用我们如今已经了解到,除非使用锁或volatile修饰符,否则无法从多个线程安全地读取一个域。 但是还有一种情况可以安全的访问一个共享域,

2017-11-28 15:28:35 217

原创 Java(8-3 01)多线程同步

上一次,我们说了关于同步和条件对象的使用原因和使用方法,这一次,我们接着上回的问题来说,这一节,我们将会讨论关于synchronized关键字的作用和用法,同步阻塞的用法,监视器的概念,以及Volatile域的作用,使用原因和用法。Part 1 synchronized关键字先回顾下上一节,我们知道了锁对象的使用,以及在线程进入锁对象后,如何用条件对象处理那些暂时还不能运行的代码。Java的这种机制

2017-11-27 11:00:54 225

原创 Java(8-2)多线程的同步和条件对象

这一节,我们要一口气介绍完多线程同步和条件对象的原因,锁机制,条件对象的使用以及我们之前写的那个银行转钱系统的剩余代码 。 Part 1 同步 为什么要有同步呢? 我们从之前多线程的一个例子来看:有很多用户都分别在进行交易,假若其中一个线程,在正在进行存钱操作,但是还未结束的时候,它在CPU的时间片就已经用完了,这个线程被中断了!而他还没把存的钱写入记录!却转而去运行其他线程了,等下一次他的

2017-11-25 22:16:16 310

原创 Java(8-1-x)

我们上次介绍了关于线程的创建和使用,并解释了只要有sleep就要捕获错误的原因。这一次,我们需要介绍一些建成的理论知识,可能有些枯燥,但确实必要。Part 1 线程的状态:线程的状态有6种,(1)New,新创建;(2)Runnable,可运行;(3)Blocked,被阻塞;(4)Waiting,等待;(5)Timed waiting,计时等待;(6)Terminated,被终止,如果我们要确定一个线

2017-11-21 22:06:11 170

原创 Java(8-1)

不知道多久了,这次该说多线程了。 Part 1如何设置一个多线程: ①将任务代码移到实现了Runnable接口的类的run方法中。这个接口非常简单,只有一个方法:public interface Runnable{ void run();}//这里由于Runnable是一个函数式接口,所以我们可以使用lambda表达式。//当然,现在来说公司中用的更多地是匿名类来实现这个②由Ru

2017-11-19 21:32:26 200

原创 Java(7-4)

集合的最后一回了,这次要说说视图和包装器,说实话,视图还好说,我知道他们可以对进程的同步,映射部分内容的承接(keySet返回一个实现Set接口的包含键的类,方便我们从键的角度对原映射进行操作。),但是包装器能干什么呢?我们先看看这个。Part1 轻量级集合包装器 实例:Arrays类的静态方法asList将返回一个包装了普通Java数组的List包装器。这个方法可以将数组转化成一个列表或集合参数

2017-11-02 22:36:13 285

原创 Java(7-3)

Part1 7-2介绍的是集合中的集,现在我们要说一下关于集合的映射:Java类库为映射提供了两个通用的实现,HashMap和TreeMap。这两个类都实现了Map接口。 散列映射对建进行散列,树映射用键的整体顺序对元素进行排序,并将其组织成搜索树。散列和比较函数只能用于键 ,与键关联的值不能进行散列或比较。Tips: 每当往映射中添加元素对象时,必须提供一个键值。 每当想要检

2017-11-02 15:00:06 481

原创 Java(7-2 迭代器和链表详细说明)

下面几回我们会介绍具体的集合: 这一节我们主要说下集合框架中的链表(LinkedList)。 首先,在Java中,所有的链表实际上都是双向链表,即每个节点还存放着至向前驱结点的引用。下面是一个示例,我们会先添加三个元素,然后将第二个元素删除:List staff = new LinkedList;staff.add("Amy");staff.add("Bob");staff.ad

2017-11-01 01:31:41 941

原创 Java(7-2)

Part1:集合框架中的接口。 在图中(看不见的可能是空间图片无法上传,加我2923370475),我们可以看见,集合有两个基本接口:Collection和Map。由于Collection,我们可以用以下方法在集合插入元素:boolean add(E element) 不过,由于映射包含键/值对,所以要用put方法来插入:V put(K key,V value) 要从集合读取元素,可以用迭代器

2017-10-31 15:03:13 349

原创 Java(7-1)

今天开始,要说Java内,非常重要的一个东西,就是集合,java著名的集合框架。Part1:将Java集合框架的接口和类库分开! 我们来举一个关于队列接口,Queue的例子: 队列接口的最简单形式可能是这样:public interface Queue<E>{ void add(E element); E remove(); int size();}那我们就可以通过I

2017-10-30 15:31:24 304

spring文档之一

这是spring文档的源文件,可以用来阅读源码,帮助大家理解spring

2018-02-25

空空如也

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

TA关注的人

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