static

Swift override static method compile error

[亡魂溺海] 提交于 2020-02-23 08:59:39
问题 I have these two swift classes: class A { static func list(completion: (_ result:[A]?) -> Void) { completion (nil) } static func get(completion: (_ result:A?) -> Void) { completion (nil) } } class B: A { static func list(completion: (_ result:[B]?) -> Void) { completion (nil) } static func get(completion: (_ result:B?) -> Void) { completion (nil) } } Trying to compile this raise the error "overriding declaration requires an 'override' keyword" but just for the 'get' method of class B. 'list'

01 03Java中级之static关键字

荒凉一梦 提交于 2020-02-23 03:30:36
文章目录 1 声明static属性 2 声明static方法 3 static应用案例   static是一个关键字,主要可以用来定义属性和方法。 1 声明static属性   在一个类中,所有的属性一旦定义了,实际上内容都交由各自的堆内存空间所保存。加static会将类中属性变为公共属性。   对static属性的访问需要注意一点:由于其本身是一个公共的属性,虽然可以通过对象进行访问,但是最好的做法是通过所有对象的最高代表(类)来进行访问,所有static属性可以由类名称直接调用。static属性可以在没有实例化对象的时候使用。   static设计原则:在以后进行类设计的时候首选的一定是非static属性(95%),而考虑到公共信息存储的时候才会使用到static属性(5%),非static属性必须在实例化对象产生之后才可以使用,而static属性可以在没有实例化对象产生的情况下直接通过类名称进行调用。 2 声明static方法 static方法的特点在于其可以直接由类名称在没有实例化对象情况下进行调用。这个时候对于程序而言就有了两种方法:static方法和非static方法,这两个方法之间在调用上就有了限制。 static方法只允许调用static属性或static方法; 非static方法允许调用static属性和static方法。

我们常说的 CAS 自旋锁是什么

[亡魂溺海] 提交于 2020-02-23 03:27:57
https://www.cnblogs.com/fengzheng/p/9018152.html https://www.jianshu.com/p/f714c440d0cb CAS在jdk应用 ConcurrentHashMap1.7使用lock锁实现,1.8使用cas+synchronized CAS(Compare and swap),即比较并交换,也是实现我们平时所说的自旋锁或乐观锁的核心操作。 它的实现很简单,就是用一个预期的值和内存值进行比较,如果两个值相等,就用预期的值替换内存值,并返回 true。否则,返回 false。 保证原子操作 任何技术的出现都是为了解决某些特定的问题, CAS 要解决的问题就是保证原子操作。原子操作是什么,原子就是最小不可拆分的,原子操作就是最小不可拆分的操作,也就是说操作一旦开始,就不能被打断,直到操作完成。在多线程环境下,原子操作是保证线程安全的重要手段。举个例子来说,假设有两个线程在工作,都想对某个值做修改,就拿自增操作来说吧,要对一个整数 i 进行自增操作,需要基本的三个步骤: 1、读取 i 的当前值; 2、对 i 值进行加 1 操作; 3、将 i 值写回内存; 假设两个进程都读取了 i 的当前值,假设是 0,这时候 A 线程对 i 加 1 了,B 线程也 加 1,最后 i 的是 1 ,而不是 2。这就是因为自增操作不是原子操作

内部类&API

限于喜欢 提交于 2020-02-23 01:32:00
内部类 在一个类中定义一个类。举例:在一个类A的内部定义一个类B,类B就被称为内部类 内部类的访问特点 内部类可以直接访问外部类的成员,包括私有 外部类要访问内部类的成员,必须创建对象 按照内部类再类中的位置不同,可以分为两种: 在类的成员位置:成员内部类 在类的局部位置:局部内部类 成员内部类 成员内部类的定义位置 在类中方法,跟成员变量是一个位置 外界创建成员内部类格式 格式:外部类名.内部类名 对象名 = 外部类对象.内部类对象; 举例:Outer.Inner oi = new Outer().new Inner(); 成员内部类的推荐使用方案 将一个类,设计为内部类的目的,大多数都是不想让外界去访问,所以内部类的定义应该私有化,私有化之后,再提供一个可以让外界调用的方法,方法内部创建内部类对象并调用。 局部内部类 局部内部类定义位置 局部内部类是在方法中定义的类 局部内部类方式方式 局部内部类,外界是无法直接使用,需要在方法内部创建对象并使用 该类可以直接访问外部类的成员,也可以访问方法内的局部变量 匿名内部类 匿名内部类的前提 存在一个类或者接口,这里的类可以是具体类也可以是抽象类 匿名内部类的格式 格式:new 类名 ( ) { 重写方法 } new 接口名 ( ) { 重写方法 } new Inter ( ) { @Override public void

koa包教不包会

a 夏天 提交于 2020-02-22 20:50:01
koa 基础教学 课程包教不包会 有任何问题可以联系本人。本人微信公众号"前端攻城狮" 本人邮箱yq979292@163.com 1安装 npm i koa-router -S 路由嵌套 const koa = require ( 'koa' ) ; const app = new koa ( ) ; // Router 实例化路由对象 const Router = require ( 'koa-router' ) ; var router = new Router ( ) router . get ( '/' , async function ( ctx ) { ctx . body = 'koa is ok ' } ) // 实例化子路由; var userRouter = new Router ( ) ; userRouter . get ( '/' , function ( ctx ) { ctx . body = 'user 路由' } ) // 实例化3级路由; var adimin = new Router ( ) adimin . get ( '/' , function ( ctx ) { ctx . body = '三级路由的内容ADMIN' } ) var compony = new Router ( ) compony . get ( '/' ,

静态成员变量和成员函数

[亡魂溺海] 提交于 2020-02-22 19:09:50
  若将成员变量声明为static,则为静态成员变量,与一般的成员变量不同,无论建立多少对象,都只有一个静态成员变量的拷贝,静态成员变量属于一个类,所有对象 共享 。静态变量在编译阶段就分配了空间,对象还没创建时就已经分配了空间,放到 全局静态区 。 静态成员变量   注意事项 :(1)最好是类内声明,类外初始化(以免类名访问静态成员访问不到);(2)无论公有,私有,静态成员都可以在类外定义,但私有成员仍有访问权限;(3)非静态成员类外不能初始化;(4)静态成员数据是共享的。 1 class Person{ 2 public: 3 static int m_age;//静态成员变量,会共享数据,对象保有的是最后一次修改的值 4 //最好类内声明,类外初始化 5 6 //静态成员建议在类外进行初始化,但在类内也可以初始化,只是通过类名访问静态成员的属性时,访问不到 7 //所以一般不这么做 8 public: 9 Person(){ 10 m_age = 10; 11 } 12 13 private: 14 int other; 15 static int m_other; 16 }; 17 int Person::m_age = 0; 18 int Person::other = 10; //非静态成员不能在类外部定义 19 int Person::m_other = 20; /

c++学习笔记之类和对象(三、static静态成员变量和静态成员函数)

此生再无相见时 提交于 2020-02-22 19:08:53
一、static静态成员变量 对象的内存中包含了成员变量,不同的对象占用不同的内存,这使得不同对象的成员变量相互独立,它们的值不受其他对象的影响。是有时候我们希望在多个对象之间共享数据,对象 a 改变了某份数据后对象 b 可以检测到。共享数据的典型使用场景是计数。 在C++ 中,我们可以使用静态成员变量来实现多个对象共享数据的目标。 静态成员变量是一种特殊的成员变量,它被关键字 static 修饰。 static 成员变量属于类,不属于某个具体的对象,即使创建多个对象,也只为其分配一份内存,所有对象使用的都是这份内存中的数据。当某个对象修改了 静态成员变量 ,也会影响到其他对象。 #include <iostream> using namespace std; class Student{ public: Student(char *name, int age, float score); void show(); private: static int m_total; //静态成员变量 private: char *m_name; int m_age; float m_score; }; //初始化静态成员变量 int Student::m_total = 0; Student::Student(char *name, int age, float score): m_name

C++ 静态对象

独自空忆成欢 提交于 2020-02-22 19:03:09
一:什么是静态对象? 对象的存储方式是静态的。 局部静态对象和类的静态对象。 局部静态对象:一个变量在函数内部定义,其生命周期跨越了该函数的多次调用。局部对象确保不迟于在程序执行流第 一次经过该对象的定义语句时进行初始化。这样的对象一旦被创建,在程序结束之前都不会销毁。在定义局部静态对象的函数执行完毕后,该静态对象不会撤销。当该函数被多次调用的过程中,静态局部对象会持续存在并保存它的值。 静态成员对象:静态成员对象存储在全局存储区,静态成员对象的作用域在类的作用域中。其可以避免与其他类成员或全局对象名字冲突。可以封装为私有的,而全局对象不可以。 二:定义及初始化 允许对构造类静态局部量赋初值。若未赋以初值,则由系统自动赋值。数值型变量自动赋初值0,字符型变量赋空字符。 对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量 不赋初值,则其值是不定的。 局部静态对象: int fun(int i){ static int a = 10; a = a+i; return a;}int main(int argc, char *argv[]){ for(int i=0;i<3;i++) { cout <<fun(i)<<endl; }} 静态类成员对象 声明 :类的静态成员变量声明前加static,其也遵守公有/私有访问规则。 因为 static

static关键字修饰类

寵の児 提交于 2020-02-21 05:48:13
可以将一个类的定义放在另一个类的内部定义,这样的类就被称为嵌套类,包含嵌套类的类被称为外部类(outer class),也可以叫做封闭类。 嵌套类可以分为两种: 静态嵌套类(Static Nested Classes):使用static声明,一般称为嵌套类(Nested Classes); 非静态嵌套类(Non-static Nested Classes):非static声明,一般称为内部类(Inner Classes); 嵌套类是它的外部类的成员。非静态嵌套类(内部类)可以访问外部类的其他成员,即使该成员是私有的,而静态嵌套类只能访问外部类的静态成员。 嵌套类作为外部类的一个成员,可以被声明为:private, 包访问,protected,public (注意:外部类只能被声明为 public 或者包范围)。 使用嵌套类的主要优点有以下几个方面: 嵌套类可以访问外部类的数据成员和方法,即使它是私有的; 提高可读性和可维护性:因为如果一个类只对另外一个类可用,那么将它们放在一起,这更便于理解和维护; 提高封装性:给定两个类A和B,如果需要访问A类中的私有成员,则可以将B类封装在A类中,这样不仅可以使得B类可以访问A类中的私有成员,并且可以在外部隐藏B类本身; 减少代码的编写量; 静态嵌套类可以使用外部类的名称来访问它。例如: OuterClass.StaticNestedClass

synchronized 修饰static方法

五迷三道 提交于 2020-02-21 05:42:33
•1.依靠对象锁锁定 初始化一个对象时,自动有一个 对象锁。 synchronized {普通方法}依靠对象锁工作,多线程访问synchronized方法,一旦某个进程抢得锁之后,其他的进程只有排队对待。 synchronized void method{} 功能上,等效于: void method{ synchronized(this) {     ... } } •2.针对每个类,也有一个锁(作为类的Class对象的一部分), 所以synchronized static方法可以在类范围内防止对static数据的并发访问。 synchronized {static方法} 此代码块等效于: void method{ synchronized(Obj.class) } } 使用该类的 类对象的锁 定去做线程的共享互斥 java编程思想 p677(p713) http://www.cnblogs.com/yanghuahui/p/3365922.html#undefined 来源: https://www.cnblogs.com/ydxblog/p/5594684.html