一、可见性
什么是可见性?
Java线程安全需要防止某个线程正在使用对象状态而另一个线程在同时修改该状态,而且需要确保当一个线程修改了对象的状态后,其他线程可以看到发生的状态变化。 后者就是可见性的描述即多线程可以实时获取其他线程修改后的状态。
*** 待补充 两个工人同时记录生产产品总数问题
1. 失效数据
可见性出现问题就是其他线程没有获取到修改后的状态,更直观...
分类:
编程语言 时间:
2014-05-24 22:17:11
阅读次数:
246
一、什么是线程安全性
编写线程安全的代码
核心在于要对状态访问操作进行管理。
共享,可变的状态的访问 - 前者表示多个线程访问, 后者声明周期内发生改变.
线程安全性
核心概念是正确性。某个类的行为与其规范完全一致。
多个线程同时操作共享的变量,造成线程安全性问题。
* 编写线程安全性代码的三种方法:
不在线程之间共享该状态变量
将状态变量修改为不可变的变量
在访问...
分类:
编程语言 时间:
2014-05-26 05:31:40
阅读次数:
282
模板与泛型编程--重载与函数模板引言: 函数模板可以重载:可以定义有相同名字但参数数目或类型不同的多个函数模板,也可以定义与函数模板有相同名字的普通非模板函数。 但是,声明一组重载函数模板不保证可以成功调用它们,重载的函数模板可能会导致二义性。一、函数匹配与函数模板如果重载函数中既有普通函数又有函数模板,确定函数调用的步骤如下:1.为这个函数名建立候选函数集合,包括: a.与被调用函数名字相同的任...
分类:
编程语言 时间:
2014-05-26 04:34:12
阅读次数:
317
模板与泛型编程--模板特化[续]三、特化成员而不特化类 除了特化整个模板之外,还可以只特化push和pop成员。我们将特化push成员以复制字符数组,并且特化pop成员以释放该副本使用的内存:template<>
void Queue::push(const char *const &val)
{
char *new_item = new char[sizeof(val) + 1];
...
分类:
编程语言 时间:
2014-05-24 14:16:21
阅读次数:
339
第一种方法:
#include
void dectobin(int n);
int main()
{
int x=0;
scanf("%d",&x);//只能正数
dectobin(x);
printf("\n");
return 0;
}
void dectobin(int n)
{
if(n/2>0)
{
dectobin(n...
分类:
编程语言 时间:
2014-05-26 04:43:00
阅读次数:
322
假定每个单词用空格隔开。
例子:
输入:how are you!
输出:3
两种方法:
一:
#include
#include
#define SIZE 20
int main()
{
char str[SIZE]={'\0'};
int count=0;
printf("please input the string\n");
gets(str);
put...
分类:
编程语言 时间:
2014-05-26 03:44:36
阅读次数:
284
#include
int main()
{
int a;
while(1)
{
printf("please input the number:\n");
scanf("%d",&a);
if(a&1)
{
printf("%d是奇数\n",a);
}
else
{
printf("%d是偶数\n",a);
}
}
return 0;
}这...
分类:
编程语言 时间:
2014-05-26 03:36:15
阅读次数:
367
overwrite与overload的区别,慎用overload...
分类:
编程语言 时间:
2014-05-26 05:32:00
阅读次数:
272
'''
【程序81】
题目:809*??=800*??+9*??+1 其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。
1.程序分析:
2.程序源代码
这个程序实在是奇怪
0 = 1 :(
就写个程序而已,不去追究了
'''
a = 809
for i in range(10,100):
b = i * a + 1
...
分类:
编程语言 时间:
2014-05-24 14:15:21
阅读次数:
321
'''
【程序71】
题目:编写input()和output()函数输入,输出5个学生的数据记录。
1.程序分析:
2.程序源代码:
使用list来模拟结构(不使用class)
stu = [string,string,list]
'''
N = 3
#stu
# num : string
# name : string
# score[4]: list
student =...
分类:
编程语言 时间:
2014-05-26 04:11:00
阅读次数:
440
本文主要通过3个例子论述了final修饰基本类型变量及引用变量时的差异,特别是final修饰引用变量时要注意的安全问题,否则容易被黑客利用。最后从前面的例子及博客中讨论Java中String被设计成不可变类的深层次原因...
分类:
编程语言 时间:
2014-05-26 04:59:16
阅读次数:
347
泛型概述
在Java中存入容器中的对象再取出时需要转换类型,因为对象加入容器会被转换成Object类型,而取出时要转换成实际类型。但向 下类型转换都是存在潜在危险的,因此应该尽量避免它们。
Java的泛型:
所谓泛型就是在定义(类、方法、形参、成员变量等等)的时候,指 定它们为通用类型,也就是数据类型可以是任意类型。
泛型为提高大型程序的类型安全和维护带来了很大的潜力。...
分类:
编程语言 时间:
2014-05-24 20:42:35
阅读次数:
319
25.Collections类:
Collections类是一个工具类,用来对集合进行操作,它主要是提供一些排序算法,包括随机排序、反相排序等。
Collections类提供了一些静态方法,实现了基于List容器的一些常用算法。
Collections的一些方法列表:
· void sort(List): 对List内的元素进行排序。
· void shuffle(List):...
分类:
编程语言 时间:
2014-05-25 01:47:51
阅读次数:
319
首先,在之前,我不是一个 Python玩家,我只是一个使用者,需要即取,现在,我要认真学习和记录,正确称为一个Python的玩家。
说明,这明显不是教程,是我自己理解并记录的笔记而已。
Python有五个标准的数据类型:
Numbers(数字)String(字符串)List(列表)Tuple(元组)Dictionary(字典)
数字有四种数值类型:int,long ,float...
分类:
编程语言 时间:
2014-05-24 23:07:59
阅读次数:
387
24.Map接口:
Map接口定义了存储“键(key)-值(value)映射对”的方法,Map
中不能有重复的“键”,Map实现类中储存的”键-值“映射对是通过
键来唯一标识的,Map底层的”键“使用Set来存放的,所以Map
中的映射对的”键”对应的类必须重写hashCode()和equals()方法,
常用String作为Map的“键”。
Map的添加、删除操作...
分类:
编程语言 时间:
2014-05-26 05:47:05
阅读次数:
348
manually set an authenticated user in Spring Security
在spring security手动 自定义 用户认证 SecurityContextHolder
//存放authentication到SecurityContextHolder
SecurityContextHolder.getContext().setAuthentication(authentication);
HttpSession session = request.getSession...
分类:
编程语言 时间:
2014-05-24 19:30:39
阅读次数:
4235
概念理解:
反射是指一类应用,它们能够自描述和自控制。也就是说,这类应用通过采用某种机制来实现对自己行为的描述(self-representation)和检测(examination),并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。
Java中的反射是一个强大的工具,他能够创建灵活的代码,这些代码可以在运行时装配,无需在组件之间进...
分类:
编程语言 时间:
2014-05-24 23:03:49
阅读次数:
266
1.链栈结构
typedef struct StackNode
{
SElemType data;
struct StackNode *next;
}StackNode,*LinkStackPtr;
typedef struct
{
LinkStackPtr top;
int count;
}LinkSta...
分类:
编程语言 时间:
2014-05-24 23:35:39
阅读次数:
429
Checkbox类:
1.实现checkbox的全选功能
//全选checkbox:1、当全选checkbox勾选,子checkbox(name为'ids'的checkbox)自动全部勾选
// 2、当全选checkbox取消勾选,子checkbox自动全部取消勾选
function checkAll(){
if($("#checkall")[0].checked){...
分类:
编程语言 时间:
2014-05-24 21:03:13
阅读次数:
376
在学习Java的过程中,我们时常会遇到这样一个概念——不可变类。本文旨在对此做一简单的解释。
1. 不可变类:创建该类的实例后,该实例的属性是不可改变的,java提供的包装类和java.lang.String类都是不可变类。当创建它们的实例后,其实例的属性是不可改变的。...
分类:
编程语言 时间:
2014-05-26 03:20:06
阅读次数:
339