在前面的学习中,我们的系统并没的登录设置,这样对于我们系统来说是不安全的。我们需要指定用户或注册的用户可以登录我们系统。由于我们这个系统并没有用到数据库,我们以我就在代码中指定用户可以登录我们的系统。正常情况是要数据库来管理注册用户。
1.登录页面
使用SprigMVC来处理系统安全是非常快捷的,我们只添加依赖架包就可行了。在build.gradle的文件中添加下面的代码:
compile'...
分类:
编程语言 时间:
2016-06-12 03:23:39
阅读次数:
303
前面笔者已经说了,我们应用程序只是一个简单的例子,所以我们没有加入数据库的管理,只是简单在程序中限制用户的登入的名称和密码。这样做不是很好,最好还是用数据库,当然,实际商用系统当然要用到数据库了。为了弥补这个方面的不足,笔者双加入了Twitter的应用,也就是我们可以用Twitter的账号来登录了。
1.申请Twitter授权
在学习的一开始,笔者就已经说了,你的OS可以上国外的网站。当然还需...
分类:
编程语言 时间:
2016-06-12 03:23:50
阅读次数:
253
??
原文链接 译文连接
作者:Pankaj 译者:郑旭东 校对:方腾飞
多线程和并发问题是Java技术面试中面试官比较喜欢问的问题之一。在这里,从面试的角度列出了大部分重要的问题,但是你仍然应该牢固的掌握Java多线程基础知识来对应日后碰到的问题。(校对注:非常赞同这个观点)
Java多线程面试问题
1. 进程和线程之间有什么不同?
一个进程是一个独立(self ...
分类:
编程语言 时间:
2016-06-12 03:21:49
阅读次数:
259
1.说明
如果读者有下载笔者的源码的话,而且要尝试运行,可能会有一点问题。因为笔者在项目中加入了Redis的应用。由于笔者时间有限,所以就没的讲解了,有兴趣和读者可以自己看代码。加入了Redis的应用,所以要想通过Tomcat启动项目,首先是先启动Redis.启动的命令如下。(下载链接:http://pan.baidu.com/s/1nv3uy4x 密码:rg0i)笔者是将软件放到了D盘下。
...
分类:
编程语言 时间:
2016-06-12 03:23:01
阅读次数:
170
这一章节我们来讨论一下使用volatile声明的变量的各种操作是非原子性的。1.上一章节我们已经提到,volatile把工作内存里面变量的改变同步到主内存, 使得各个线程能够把该变量当成是整体的状态控制2.但是,使用volatile声明的变量的写操作是非原子性的代码清单:package com.ray.deepintothread.ch03.topic_2;
public class Volat...
分类:
编程语言 时间:
2016-06-12 03:23:41
阅读次数:
149
JAVA之旅(十四)——静态同步函数的锁是class对象,多线程的单例设计模式,死锁,线程中的通讯以及通讯所带来的安全隐患,等待唤醒机制
JAVA之旅,一路有你,加油!
一.静态同步函数的锁是class对象
我们在上节验证了同步函数的锁是this,但是对于静态同步函数,你又知道多少呢?
我们做一个这样的小实验,我们给show方法加上static关键字去修饰
private stat...
分类:
编程语言 时间:
2016-06-12 03:19:39
阅读次数:
244
简介由于其他项目中断了几天更新,继续~~
这一篇主要是讲光照的(包含漫反射和高光以及多光源的处理)
还是先来看看具体效果(多光源后面单独展示)
有了基本的光照处理之后越来越有立体感了有不有 ╮(╯▽╰)╭...
分类:
编程语言 时间:
2016-06-12 03:19:54
阅读次数:
264
1、当有多个参数时,使用构建器模式
常用的场景是,查询时,有多个参数。因此构建查询参数对象时,考虑使用Builder模式。
public class QueryBuilder {
//查询的每个参数,不需要set方法
private String userName;
private String mobile;
private int cityId;...
分类:
编程语言 时间:
2016-06-12 03:15:47
阅读次数:
265
Exchanger是自jdk1.5起开始提供的工具套件,一般用于两个工作线程之间交换数据。在本文中我将采取由浅入深的方式来介绍分析这个工具类。首先我们来看看官方的api文档中的叙述:A synchronization point at which threads can pair and swap elements within pairs. Each thread presents some ob...
分类:
编程语言 时间:
2016-06-12 03:16:07
阅读次数:
138
??
一,巡防算法
for_each(容器起始地址,容器结束地址,要执行的方法)
#include
#include
#include
using namespace std;
template
struct plus2
{
void operator()(T&x)const
{
x+=2;
}
};
void printElem(int...
分类:
编程语言 时间:
2016-06-12 03:15:04
阅读次数:
155
我们每个人都会在我们的生活或者工作中遇到各种各样的最优化问题,比如每个企业和个人都要考虑的一个问题“在一定成本下,如何使利润最大化”等。最优化方法是一种数学方法,它是研究在给定约束之下如何寻求某些因素(的量),以使某一(或某些)指标达到最优的一些学科的总称。随着学习的深入,博主越来越发现最优化方法的重要性,学习和工作中遇到的大多问题都可以建模成一种最优化模型进行求解,比如我们现在学习的机器学习算法...
分类:
编程语言 时间:
2016-06-12 03:11:51
阅读次数:
283
题目来源:
HihoCoder1312
题目描述:
给出一个九宫格的拼图游戏的棋局,求完成拼图最少需要一定的步数。
解答:
·规则:
首先简要说明游戏规则。
游戏的棋局如下:
九宫格中放置8个标有不同数字的棋子,其中一个位置为空,通过移动棋子,使得数字有序排列,则游戏完成,如下:
在移动的过程中,只有...
分类:
编程语言 时间:
2016-06-12 03:14:21
阅读次数:
273
我们在并发编程创建线程时,常常是创建一些Runnable对象,然后创建对应的Thread对象执行它们,但是如果程序需要并发执行大量的任务时,需要为每个任务都创建一个Thread,进行管理,这将会影响程序的执行效率,并且创建线程过多将会使系统负载过重。Java 5之后通过了一套Executor框架能够解决这些问题,能够分解任务的创建和执行过程。该框架包括Executor,ExecutorService...
分类:
编程语言 时间:
2016-06-12 03:11:50
阅读次数:
140
在上一篇文章中我们已经了解了Executor框架进行线程管理,这篇文章将学习Executor框架的另一个特性,我们知道执行Runnable任务是没有返回值得,但Executor可以运行并发任务并获得返回值,Concurrent包提供下面两个接口实现这个功能:
Callable接口:这个接口声明call(),类似于Runnable的run(),可以在这个方法里实现任务的具体逻辑操作。Callable是...
分类:
编程语言 时间:
2016-06-12 03:13:14
阅读次数:
145
时间片的概念大家应该都了解过,windows为每个进程分配时间片,当一个程序的时间片结束时,就会轮到下一个程序执行,当轮流速度比较快的时候,就好像多个进程同时执行一样,这就是windows多任务的方式,本次介绍的多线程其实跟这个很像,只不过线程是在进程内又划分的更小的可执行单位,windows为每个线程分配时间片,当轮到某个进程的某个线程执行的时候,该线程才开始执行,就好像是进程间的多任务一样,线...
分类:
编程语言 时间:
2016-06-12 03:11:58
阅读次数:
185
线程可以处于一个或多个状态,由ThreadState枚举表示。使用Thread类中的一些方法后状态会随之变化。枚举成员如下:
线程的生存期如下:
一、线程睡眠
若线程想要访问的资源不可使用,只能期望隔段时间后,重新尝试讯问资源,这时就要让该线程睡眠等待,线程就会处WaitSleepJoin状态。
Imports System.Threading
Pub...
分类:
编程语言 时间:
2016-06-12 03:10:32
阅读次数:
305
三Socket通信
(1)Socket
套接字Socket是网络通信的基础,简单来说,可以认为是IP地址+端口,用来区分实现不同应用程序的通信。
两个Java应用程序可通过一个双向的网络通信连接实现数据交换,这个双向链路的一段称为一个Socket。Socket
通常用来实现client-server连接。
java.net包中定义的...
分类:
编程语言 时间:
2016-06-12 03:09:36
阅读次数:
152