package CAK; public class AK { public static void main(String[] args) { int[] arr = new int[3]; System.out.println(arr);//内存地址 System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]); } } 数组会为储存空间添加默认值
栈内存:存局部变量,定义在方法中的变量,使用完毕,立即消失。
堆内存 :数组在初始化后,添加默认值,每一个new出的东西都会有一个地址值,使用完毕会在垃圾回收器空闲时候被回收。
package CAK; public class AK { public static void main(String[] args) { int[] arr = new int[3]; for (int i = 0; i <= 2; i++) { arr[i] = i * 100; } System.out.println(arr);// System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]); int[] arr2 = arr; System.
task1_1.py
with open('data1_1.txt', 'r', encoding = 'utf-8') as f: data = f.readlines() n = 0 for line in data: if line.strip('\n') == '': continue n += 1 print(f'共{n}行') task1_2.py
1 with open('data1_1.txt', 'r', encoding = 'utf-8') as f: 2 data = f.readlines() 3 4 n = 0 5 for line in data: 6 if line.strip('\n') == '': 7 continue 8 n += 1 9 print(f'共{n}行') task1_3.py
1 with open('data1_2.txt', 'r', encoding = 'utf-8') as f: 2 n = 0 3 for line in f: 4 if line.
搭建一个FinClip社区版docker运行环境,安装设置Rust开发编译iOS代码的环境,设置xcode的项目配合,集成FinClip SDK,准备好实现从FinClip小程序到Rust算法逻辑的端到端融合。
上文《FinClip小程序+Rust(一)》介绍了“夹心饼架构”:应用场景用小程序实现、算法逻辑用 Rust,两方面都实现了跨终端跨平台、一次开发多处使用,中间一层为以操作系统原生技术实现的“宿主”,粘合、桥接了这两侧,宿主代码保持相对简单和稳定。
本篇以 iOS 为例介绍开发环境的准备。 从零到一:构建一个能运行小程序的App 我们先从FinClip官网下载最新的FinClip SDK,解压后应获得 FinApplet.framework、FinAppletExt.framework、FinAppletWebRTC.framework、FinAppletBLE.framework 等一系列库。
用 xcode 创建一个新项目,简单起见我们建一个基于 Objective-C 的 Storyboard。
此处注意,我们要小心命名这个 App 并记住它的 Bundle ID,如下图,我们这个App 的 Bundle ID 是 com.finogeeks.rustful.clip。
然后把FinClip SDK 解压包里的 FinApplet.framework 添加至工程里,注意勾选“Copy items if needed”。
在macOS 11.1以上使用xcode较新的版本(笔者所用版本为13.0)编译上述项目,会出现报错无法继续,如果你有这个情况,可在项目Build Settings处作以下配置。
clip.xcodeproj Building for iOS Simulator, but the linked and embedded framework 'FinApplet.framework' was built for iOS + iOS Simulator 报错信息
Apple 从 Xcode 12.3 开始推荐使用 xcframework 替代 Framework,本文所依赖的FinClip SDK 2.
with open('data3.txt','r',encoding='utf-8') as f: data=f.readlines() f.close() with open('data3_proxessed.txt','w',encoding='utf-8') as b: a=['四舍五入后数据'] for i in range(len(data)): data[i]=data[i].strip('\n') for i in data[1:]: a.append(str(round(eval(i)))) for i in range(len(data)): b.write(data[i]+'\t'+a[i]+'\n') b.close() ys=[] zz=[] for i in data[1:]: i=eval(i.strip('\n')) ys.append(i) print(f'原始数据:\n',ys) for i in data[1:]: i=round(eval(i)) zz.append(i) print('四舍五入后数据:\n',zz) with open('data4.txt', 'r+', encoding='utf-8')as f: a = [i.strip('\n').split('\t') for i in f] b = a[0] a.pop(0) a.sort(key=lambda x: (x[2], -int(x[-1]))) # 第三列升序,第四列降序 with open('data4_progressed.txt', 'w+', encoding='utf-8')as f: f.
#include<iostream>
using namespace std;
typedef struct Link_Node{ int data; Link_Node* next;} ;
// 单链表的插i入操作,插入到第K个元素后面,link_list 是单链表的首指针// 有可能List,int insert_data(Link_Node *link_list,int k,int data){ Link_Node *p_node = link_list; int i = 0; while(p_node&&i<k){ i++; p_node = p_node->next; } if(!p_node) return 0; // 没有第K个元素,插入位置无效 // 已经到了第k个元素,把新值放在第K 个值 后面。 //p_node 是第K个节点,将data放在 p_node 之后。 Link_Node *next_k_node = (Link_Node*)malloc(sizeof(Link_Node)); next_k_node->next = p_node->next; next_k_node->data = data; p_node->next = next_k_node; return 1; }
int delete_data(Link_Node *link_list,int k){ int i = 0; Link_Node *p_node = link_list; while(p_node&&i<k-1){ i++; p_node = p_node->next; } if(!
一个加密货币钱包,主要依赖加密算法构建。这部分逻辑无关iOS还是Android,特别适合用Rust去实现。我们看看如何实现一个生成一个模拟钱包,准备供小程序开发采用
前言 在之前的内容我们介绍了整个端到端开发环境的搭建。
其中,我们用 Xcode 开发一个 iOS native App 的“壳”,并集成了 FinClip SDK让这个“壳应用”具备运行小程序的能力,我们并采用 FinClip.com 的线上企业端、运营端生成 SDK 使用时所需的 App ID 和 Secret;想自己拥有本地小程序中心的朋友,则可以安装 FinClip 服务器端的 docker 镜像,并以本地的企业端、运营端生成 SDK 使用时所需的 App ID 和 Secret - 一切都在你自己的电脑本地发生。
我们又介绍了 Rust 的编译环境针对 iOS 进行编译构建代码所需要安装的相关工具。要端到端开发一个完整的应用,确实涉及到比较多的东西,有学习了解技术工具的学习成本,有时其繁琐性让人却步。但只要搭建起来,就一劳永逸,我们可以开始聚焦应用逻辑本身。
万事俱备,开搞开搞 万事俱备,那就让我们开干吧。作为一个范例,我们需要找一个逻辑比较简单又确实适合用 Rust 来实现的场景。在这里,我们选择实现一个加密钱包。设想是这样的:
用 Rust 来实现密钥对的生成、加密存储、交易签名。加密算法,背后都是数学逻辑,显然在什么硬件、操作系统上实现,都应该是一样通用的对吧? 用小程序来实现各种 dApp 的前端,可以是账户余额、交易历史、支付转账之类的账户管理小程序,也可以是各种 DeFi、GameFi 应用,也可以是 NFT 相关工具... 在 Web3 世界里,限制我们的只是想象力 当然,本文焦点不在于这些内容的具体实现,简单起见我们只象征性的实现一个密钥对的生成,其他剩余的事情,有待感兴趣的朋友去发掘。
特别提醒:加密货币钱包是 Web3 技术的基础,没有了它你什么 Web3 技术都试验不了,了解 Web3,从加密技术常识开始。 项目目录结构 我们姑且把这个项目称之为 finclip-rust,它的目录结构包含了以下内容:
finclip-rust |---- ios (ios相关代码子目录、xcodeproj子目录,生成项目的iOS Wrapper App) |---- android (Android版的 wrapper app,本文不覆盖。有兴趣的同学自行尝试) |---- desktop (Mac/Linux/Windows版wrapper app,可能是一个Qt或者Electron应用。本文阙如,有时间再继续探讨) |---- mini-app (一个FinClip小程序,主要负责设备端的人机交互) |---- rust (Rust部分的代码,编译构建出来的应该是目标架构下的静态库,输出.
#task3 with open('data3.txt','r',encoding='utf-8')as f1: with open('data3_processed.txt','w',encoding='utf-8')as f2: a=f1.read().split('\n') a.pop(0) c=[] d=[eval(i) for i in a] for i in a: x=eval(i) if x-int(x)<0.5: c.append(int(eval(i))) else: c.append(int(eval(i))+1) d2=[int(i)for i in c] f2.write(f'原始数据\t四舍五入后的数据\n') for i in range(len(d)): f2.write(f'{d[i]}\t\t{d2[i]}\n') print(f'原始数据:\n{d}\n四舍五入后的数据:\n{c}') #task4 with open('data4.txt','r',encoding='utf-8') as f: data=f.readlines() data.remove(data[0]) x0=[] for i in data: a=i.split() x0.append(a) x1=sorted(x0,key=(lambda x:x[2])) x2=[x1[i] for i in range(0,8)] x3=sorted(x2,key=(lambda x:x[3]),reverse=True) x4=[x1[i] for i in range(8,10)] x5=sorted(x4,key=(lambda x:x[3]),reverse=True) y=x3+x5 y1=[] for i in y: b='\t'.
问题 debug代码发现某个值偶发变为-NaN需要定位具体位置。
尝试 基本可以判断是除0引起,想当然尝试了val < -10000的条件断点,无法捕捉。
解决 查阅文献
NaN is designed to propagate through all calculations, infecting them like a virus, so if somewhere in your deep, complex calculations you hit upon a NaN, you don't bubble out a seemingly sensible answer.
因此根据NaN的特性,一句简单的断言即可命中:
assert(val == val); 参考 floating point - Why is NaN not equal to NaN? - Stack Overflow
一、环境安装 1、VirtualBox安装 https://www.virtualbox.org/ 2、Vagrant安装 https://www.vagrantup.com/
Random Events比赛题目 题目统计全部提交 时间限制:C/C++ 2000MS,其他语言 4000MS内存限制:C/C++ 256MB,其他语言 512MB描述
Ron is a happy owner of a permutation a of length n.
A permutation of length n is an array consisting of n distinct integers from 1 to n in arbitrary order. For example, [2,3,1,5,4] is a permutation, but [1,2,2] is not a permutation (2 appears twice in the array) and [1,3,4] is also not a permutation (n=3 but there is 4 in the array).