javascript
参考自
对象及函数对象创建对象对象直接使用键值对的方式进行定义var xiaoming = { name: '小明', birth: 1990, school: 'No.1 Middle School', height: 1.70, weight: 65, score: null age: function () { var y = new Date().getFullYear(); return y - this.birth; } 'middle-school': 'No.1 Middle School'};xiaoming['middle-school']; // 'No.1 Middle School'xiaoming.age();如果键时字符串的话必须使用[]的方式进行访问,例如middle-school
如果想判断某个属性是否在这 ...
OpenMP并行编程
基础OpenMP是一种面向共享内存以及分布式共享内存的多处理器多线程并行编程模型。它支持c++, c, Fortran语言。
它在最开始的时候只有主线程,在需要的时候又可以分出多个线程进行计算,计算完毕之后又可以变成一个线程。
它的头文件是omp.h
一个例子:#include <omp.h>int main(){ double res[1000]; #pragma omp parallel for for(int i=0; i<1000; i++) { do_huge_comp(res[i]); }}
编译制导语句同步与作用域
#pragma omp master: 表明该区域只能由主线程执行
#pragma omp critical (name): 临界区,一次只能由一个线程执行
#pragma omp barrier: 用来同步所有线程,先到达的会等待,直到所有线程到达
#pragma omp atomic: 表明该语句是原子指令
#pragma ...
GPU编程
GPU结构每个GPU中有若干个GPC(图形计算簇),每个GPC中又有若干个TPC(Texture Processing cluster), 每个TPC中有若干个SM(Stream Multiprocessor),每个SM中有若干个block,在block中有各种各样的核和寄存器。
在GPU编程中,通常把cpu称作host,把gpu称作device。
计算过程:
数据从cpu拷贝到gpu显存中
加载GPU程序并运行
将运行完后的数据又送回CPU中
CUDA编程基本结构:malloc();cudamalloc(); //分配显存cudaMemcpy(): //将内存中的内容放到显存中kernelName<<<gridSize, blockSize>>>(input_params);//计算过程,input_params是运行的函数cudaMemcpy();cudaFree();
例如:__global__ void add(int *a, int *b, int *c){ *c = *a + *b;}int main(v ...
java 集合,列表,队列,映射
概念
Set(集),集合中对象不以特定方式排序(有的实现类可以),没有重复元素
List(列表),按照索引排序,可以有重复对象。List和数组类似。
Queue(队列),先进先出
Map(映射): 有键值对。没有重复键对象,可以有重复值对象
定义:
Set<String> set = new HashSet<String>();
Collection 和 Interator接口Collection声明了上面这些数据结构(不包含map)通用的方法。
方法
描述
boolean add(Object o)
加入对象
void clear()
删除所有对象
boolean contains(Object o)
判断集合中是否有特定对象
boolean isEmpty()
Iterator iterator()
返回一个Iterator对象(迭代器)
boolean remove(Object o)
int size()
返回数目
Object[] toArray()T[]toArray(T[] a)
返回一个数组,包含 ...
java 操作符
基础c++中没有 >>>(逻辑右移)操作符,这是在java中才有的。c++想要实现逻辑右移的功能要么进行更复杂的运算要么用unsigned。这篇博客中详细讲了算术右移和逻辑右移
浮点数不支持移位运算。并且如果其中一个浮点数是double型,结果就是double型。
逻辑运算符(部分)
操作
&&
短路与
&
非短路与
两竖线
短路或
一竖线
非短路或
短路与非短路的区别是对于短路运算符如果左边可以判断,那么就不会去判断右边。非短路运算符无论条件如何都会执行两边。
非短路运算符的作用是有时我们先要进行一些运算再判断,非短路运算符可以确保运算的执行。例如 if(b == true & (output+=10) == 20 ).其中output+=10就是运算,
==操作符在对象中当==操作符在对象中时,两个引用变量必须是引用同一个对象,结果才为true。
例:Integer int1 = new Integer(1);Integer int2 = new Integer(1);Integer int3 = ...
java 类的生命周期
类的加载连接和初始化
加载: 查找并加载类的二进制数据
链接: 包括验证,准备和解析类的二进制数据
验证: 确保加载类的正确性。
准备: 为类的静态变量分配内存,将其初始化为默认值(也就是0)
解析: 将类的符号引用变成直接引用 1
初始化: 把类的静态变量赋予正确的初始值。
类的加载类的加载是指把类的.class文件中的二进制数据读入到内存中,把它存放在方法区中。然后再去装载一个java.lang.Class对象,用来封装类在方法区的数据结构。通俗的来讲就是把代码加载到内存中。
类的加载是由虚拟机自带的加载器来完成的,但是我们也可以自己去定义。用java.lang.ClassLoader类的子类的实例。
类加载器允许某个类将要被使用时预先加载它。如果预先加载过程中遇到了.class的错误。那么类加载器在首次主动使用这个类的时候报错(LinkageError)
类的链接类的验证
类的验证主要验证一下内容:
类文件格式, 看看后缀是否符合
语义检查 看看是否符合java语义(例如把一个String给int或final是否有子类)
字节码验证,字节码代表java方法。
二进制 ...
git操作
git status: 查看当前工作区修改状态
git add: 添加到暂存区
git commit -m “…”: 将暂存区内容添加到仓库
git diff + 文件名: 查看当前文件和上次提交文件的不同
git log: 查看提交历史
git reflog: 查看命令历史,来确定要回到未来某个版本
git reset —hard commit_id: 回退到某个版本,commit_id可以通过git log或git reflog查看。回退之后也可以使用这个命令回到未来的版本。
git reset —hard HEAD^: 表示回退到上一个版本,一个^表示上一个.如果是HEAD^^则是上上个版本。用HEAD~100表示上一百个版本。
git checkout — file: 回退到上一次提交的版本(如果用了add就是在暂存区的内容,如果没用就是仓库中的内容)。file是文件名。
git rm: 将删除文件的命令提交到暂存区。当然如果在工作区删除了文件的话使用git add也是可以的。
远程仓库:
git remote add origin git@github.com:xinh ...
无线网络与移动网络
基础名词
无线链路: 决定无线链路好坏的有两个特性: 覆盖区域和链路速率
基站: 基站负责向与之关联的无限主机发送数据和从主机那里接受数据。但是和交换机或路由器还有些不同,它只负责传输数据,其他诸如路由选择,地址分配,DNS名称转换服务都是主机自己沟通。
无线网络和有线网络在信号上有着显著区别
递减信号强度: 穿过物体信号减弱
其他源干扰: 同一个频段的信号会相互干扰。
多径传播: 电磁波受物体反射和地面反射,会使发送方和接收方之间形成了许多长度不等的路径,使接收方收到的信号模糊。
信噪比(SNR)是收到的信号和噪声强度的比值,也就是说信噪比越高这个信号越可信。
比特差错率(BER)是接收方收到有错传输比特的概率。
比特传输率: 也可以认为是传输速度
对于一定信噪比来说,传输率越高,比特差错率越低。并且传输率越高,需要越高的信噪比才可以保证比特差错率,但是传输率越高越费电。
WIFI: 802.11
体系结构该体系结构基本模块为基本服务集(BSS)。一个BSS中有一或多个无线站点和一个叫接入点(AP)的中央基站。中央基站类似于以太网,都有MAC地址。
信道与关联每个无线站点要发 ...
骑砍2 mod类列举
基础参考1: 非官方文档
参考2: 有关保存数据的讨论
本文只是为了记录自己看到和使用的一些类的大致用途和一些主要方法,具体请使用dnspy等工具进行查看。
dnspy的分析功能很好用。还有程序集搜索功能
类
settlement: settlement是在战役地图中的村庄,城镇,城堡
MobileParty: 军队
TroopRoster: 军队花名册
PrisonRoster: 囚犯花名册
TickAi(): 最终决定ai的函数,下面的aibehavior不一定是最终的ai
Morale: 士气,通过DefaultPartyMoraleModel决定
DefaultBehavior: 当前的ai
ShortTermBehavior: 短期ai,用来设置追逐和逃跑行为
ItemRoster: 物品清单。
InventoryCapacity: 容量,通过InventoryCapacityModel得到
Tier: 部队的等阶,最高是6阶,英雄是0阶
GetBestInitiativeBehavior(): 里面有一些模拟战的行为
Army: 军团,也就是需要凝聚力的那个
Ho ...
位运算和移位运算
与运算这里的与运算并不是平常的bool运算,而是按位与。这种运算比加减法快
符号: &
例: 1010&1000=1000 1001&0110=0000
含义: 1&1=1,1&0=0,0&1=0,0&0=0,只要不是两个都是,1,那么结果就是0
应用:
替换指定位的值
一个典型应用就是大小写转换,如果平常转换我们可能要写一大堆,但是经过仔细观察后发现大写字母和小写字母之间差距只有第5位,如果第五位为0,就是大写字母,为1就是小写字母,所以只要a&0b11011111这一段代码就可以完成小写到大写的转换
清零
通过 a&0b00000000 ,可以快速的把某个数变成零
消去最后一位 1
x & (x-1) 例如 x 1010 x-1 1001 ,计算之后1000。减1就是让最小的那个1变成0然后后面全是1
找到最小一位1
x & (-x) 在lowbit函数中用到, -x=~(x-1),大于最小一位1的都由于取反变成0,然后最小一位1及其后面本来是0111…,取反变成1000…,而原 ...