转自:http://blog.csdn.net/jeamking/article/details/7183958 有时我们在同一个类中都是使用同一种日期格式,又或者为了减少new SimpleDateFormat次数,自然而然的就会出现如下代码: private static SimpleDateFormat sdf = newSimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 但是这样做在多线程并发下会存在安全隐患.SimpleDateFormat 类并…
知识点学习 类 const作用 C语言的const限定符的含义为"一个不能改变值的变量",C++的const限定符的含义为"一个有类型描述的常量": const修饰指向的实体类型被称为常量指针,限定指针必须指向一个地址 const int * p = &a; //与上一条语句等价 int const * dp = &b; const修饰指针*cp被称为 指针常量,限定指针值不能修改: int * const cp = &b const加在函数…
一.多线程安全隐患 资源共享  一块资源可能会被多个线程共享,也就是多个线程可能会访问到一块资源 比如多个线程访问同一个对象,同一个变量,同一个文件. 当多线程访问同一块资源的时候,很容易引发数据错乱和数据安全问题二.原子和非原子属性 1>OC 在定义属性的时候有nonatomic和atomic两种选择      * atomic:原子属性,为 setter 方法加锁      * nonatomic:非原子属性,不会为 setter 方法加锁        普通情况下都是在主线程做操作,所以一…
JS中的公有成员,私有成员和静态成员 a.实现类的公有成员 b.实现类的私有成员 c.实现类的静态成员 a.实现类的公有成员 之前定义的任何类型成员都属于公有成员的范畴,该类的任何实例都对外公开这些属性和方法. 注意在JS中,其实没有私有的概念~ b.实现类的私有成员 //私有成员 /* * 私有成员即在类的内部实现中可以共享的成员,不对外公开. * JS中并没有特殊的机制来定义私有成员,但可以用一些技巧来实现这个功能. */ /* * 这个技巧主要是通过变量的作用域性质来实现的,在JS中,一个…
常变量.常对象.常引用.指向常对象或常变量的指针等在定义时都使用了const关键字,这是C++语言引入的一种数据保护机制,称为const数据保护机制.例如通过const关键字主动地将被调函数形参进行限定,限定被调函数不能修改主调函数传递过来的数据. 下面通过一个出租车类(Taxi),更好的理解常成员和常函数成员: class Taxi //定义出租车类 { private: int price; //出租车里程单价 int fare; //出租车收费总额 public: void SetPric…
一.前言 惰性十足,这篇2月19号就开始写了,拖到了现在,就是不愿意花时间把看过的东西整理一下,其它的任何事都比写博客要有吸引力,我要反省自己. 从这篇开始,是关于JS对象创建模式的探讨,JS语言简单直观,并没有模块,包,私有属性,静态成员等语法特性.而这一大章将介绍一些有用的模式,例如命名空间,依赖声明,模块模式以及沙箱模式等.这些能帮助我们更好的组织代码,减轻全局污染问题. 二.命名空间模式(Namespace Pattern) 命名空间可以减少全局变量的数量,还能有效避免命名冲突以及名称前…
一 静态数据成员: 1.静态数据成员的定义. 静态数据成员实际上是类域中的全局变量.所以,静态数据成员的定义(初始化)不应该被放在头文件中,因为这样做会引起重复定义这样的错误.即使加上#ifndef #define #endif或者#pragma once也不行.  其定义方式与全局变量相同.举例如下:  xxx.h文件  class base{ private: static const int _i;//声明,标准c++支持有序类型在类体中初始化,但vc6不支持. }; xxx.cpp文件 …
独立的命名空间   1可以避免全局变量污染. 全局变量污染不是 说 被全局变量污染,而是说不会污染全局变量.   2实现私有成员. 在js中函数 就可以满足独立的命名空间的两点需求.   如:     function lib(){} 但是通常我们都是使用立即执行的匿名函数来实现 独立的命名空间. 通过向window注册一个变量来暴露命名空间.   立即执行的匿名函数 (function(){})();   我个人认为是因为,二者并没有差别,后者显的b格高点.     私有成员|静态成员 1 因…
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; //线程同步与多线程程序中的隐患 namespace Multithreading_hazard { class Program { ; static void Main(string[] args) { Thread thread1 = new Thread(SaleTicke…
[简介] 1.静态数据成员在类中声明,在源文件中定义并初始化: 2.静态成员函数没有this指针,只能访问静态数据成员: 3.调用静态成员函数:(1)对象.(2)直接调用: 4.静态成员函数的地址可用普通函数指针储存,可作为回调函数的参数. [1.静态数据成员] 1.静态数据成员与全局变量一样都是静态分配存储空间的,在编译时,就要为类的静态数据成员分配存储空间.但全局变量在程序中的任何位置都可以访问它,而静态数据成员受到访问权限的约束.必须是public权限时,才可能在类外进行访问. 2.静态数…