企业微信 查不到该手机号的所属企业 的解决办法

使用企业微信,提示“查不到该手机号的所属企业”,该怎么办呢?
其实这是因为你的手机没有成为别的企业的成员。

解决办法:
访问 https://work.weixin.qq.com/ 注册一个企业。可以使用腾讯企业邮箱创建,也可以使用微信企业号创建。
建立以后在“企业微信”的通讯录里添加成员就可以了。

gradle学习总结

gradle和maven类似,是管理项目依赖和编译发布的工具。可以一理解为maven的升级版
首先推荐书籍:
https://dongchuan.gitbooks.io/gradle-user-guide-/content/tutorials/index.html

安装运行安卓项目一般是两步:
在项目目录下执行:
./gradlew clean assembleDebug
./gradlew installDebug

命令后面的clean installDebug等都是task,更多task在这里:http://tools.android.com/tech-docs/new-build-system/user-guide

gradlew在android studio中新建项目是会自动创建,是Gradle Wrapper的简称,也就是封装了一下gradle,对目录、环境变量、编译参数等进行了设置。文件最后就是调用了类 org.gradle.wrapper.GradleWrapperMain。这个类会解析gradle的配置文件,下载依赖文件等,最后由android插件生成apk文件。

关于swift中的强引用 弱引用 无主引用

好文推荐:
https://numbbbbb.gitbooks.io/-the-swift-programming-language-/content/chapter2/16_Automatic_Reference_Counting.html

精彩语句摘录:

在实例的生命周期中,如果某些时候引用没有值,那么弱引用可以阻止循环强引用。如果引用总是有值,则可以使用无主引用,在无主引用中有描述。在上面Apartment的例子中,一个公寓的生命周期中,有时是没有“居民”的,因此适合使用弱引用来解决循环强引用。

无主引用不会牢牢保持住引用的实例。和弱引用不同的是,无主引用是永远有值的。因此,无主引用总是被定义为非可选类型(non-optional type)。你可以在声明属性或者变量时,在前面加上关键字unowned表示这是一个无主引用。

由于无主引用是非可选类型,你不需要在使用它的时候将它展开。无主引用总是可以被直接访问。不过 ARC 无法在实例被销毁后将无主引用设为nil,因为非可选类型的变量不允许被赋值为nil。

弱引用必须被声明为变量,表明其值能在运行时被修改。弱引用不能被声明为常量。

Person和Apartment的例子展示了两个属性的值都允许为nil,并会潜在的产生循环强引用。这种场景最适合用弱引用来解决。

Customer和CreditCard的例子展示了一个属性的值允许为nil,而另一个属性的值不允许为nil,并会潜在的产生循环强引用。这种场景最适合通过无主引用来解决。

然而,存在着第三种场景,在这种场景中,两个属性都必须有值,并且初始化完成后不能为nil。在这种场景中,需要一个类使用无主属性,而另外一个类使用隐式解析可选属性。

连接aws ec2提示Operation timed out的解决办法

ssh连接aws ec2时提示:
ssh: connect to host amazonaws.com port 22: Operation timed out

官方给出的解决办法在这里:
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html#TroubleshootingInstancesConnectionTimeout

我的原因是因为安全组设置不正确。用的这个解决方案里的第一条解决办法。
1、打开管理控制台 https://console.aws.amazon.com/ec2/.
2、在左侧选择实例,然后选中右侧有问题的实例。
3、下面会出现几个TAB,选描述,在这个描述里的右侧偏上的地方,有一个“安全组:default. 查看规则”,点击default
4、在出现的页面里,选中一个安全组,查看下面TAB中的入站规则,我的这里没有22端口,所以连接不上。点击“编辑”,弹出窗口中选“添加规则”
5、类型选”ssh”,协议TCP,端口22,来源选任何位置,当然如果自己有固定IP,可以选择“我的IP”
6、提交
7、在SSH重新连接试试看好没。

c++ 堆栈及创建对象

栈(stack),先进后出,位于一级缓存中,操作系统自动分配释放 ,存放函数的参数值,局部变量的值等,被调用时处于存储空间中,调用完毕立即释放。
堆(heap),堆包含一个链表来维护已用和空闲的不连续的内存块,存放在二级缓存中,一般由程序员分配释放。

快速记忆方式:
一级缓存比二级缓存快,栈是一个先进后出列表,存取非常快,所以栈是在一级缓存中。
栈中不能随机取数据,只能取最上面的一个,存放的内容必然要有严格的存取顺序,所以适合函数调用时的形参、局部变量。
栈空间有限,一般PC一级缓存就几M,所以其中的数据也是快速使用,快速删除。像形参、局部变量,在函数调用结束系统就会把数据主动销毁了。
堆空间大,由程序员维护,系统不会主动销毁。

示例代码(参考自:http://blog.csdn.net/cscmaker/article/details/7019977):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>

using namespace std;

class TestNew
{
private:
    int ID;
public:
    TestNew(int ID);
    ~TestNew();
};

TestNew::TestNew(int ID)
{
    this->ID = ID;
}

TestNew::~TestNew()
{
    std::cout<<"对象 "<<this->ID<<" 执行析构函数"<<std::endl;
}
void Test()
{
    TestNew test(1);//创建对象1,不使用new,存储在栈中
    TestNew *pTest = new TestNew(2);//创建对象2,使用new,存储在堆中
    //delete pTest;
}

int main()
{
    Test();//这个地方有点问题,pTest没有进行处理,会导致内存泄露,实际应用中要注意呀
}

输出结果:
对象 1 执行析构函数

说明函数调用结束,对象1被系统主动销毁了。
如果把Test()方法中,delete前的注释去掉。输出:
对象 2 执行析构函数
对象 1 执行析构函数