首页 文章 精选 留言 我的

精选列表

搜索[lang],共4882篇文章
优秀的个人博客,低调大师

java.lang.IndexOutOfBoundsException and drawPosText

package com.example.canvastest; import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; import android.util.AttributeSet; import android.view.View; /** * Created by 700 on 2018/7/31. */ public class DrawText_DrawPosText extends View{ private Paint mTextPaint; private float[] offset = new float[10]; public DrawText_DrawPosText(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } public DrawText_DrawPosText(Context context, AttributeSet attrs) { super(context, attrs); } public DrawText_DrawPosText(Context context) { super(context); } private void initView(){ for(int i = 0; i<10; i+=2){ offset[i] = 100; offset[i+1] = 250+150*i/2; } mTextPaint = new Paint(); mTextPaint.setColor(getResources().getColor( android.R.color.holo_blue_light )); mTextPaint.setTextSize(20);//设置文字大小 // mTextPaint.setTextAlign(Paint.Align.CENTER);//设置居中 } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); initView(); canvas.drawText("hehehehehedadadadadadadada",100,100,mTextPaint); canvas.drawPosText("hehehehehedadadadadadadada",offset,mTextPaint); } } 郁闷。。报错的原因是数组超范围了。。 还以为是for语句写错了,看了半天。。。没错啊。。。 后来聚焦在了drawPosText()上面,觉得不太对劲,看了下源码,额。。。。。。, 意思是干嘛呢,drawPosText()不是第一个参数是字符串嘛,drawPosText()这个方法就是把这个字符串拆成一个一个字符,按顺序对应好第二个参数的位置放好。。。,也就是说我第二个参数offset这个数组长度是10,即包含着五个xy坐标对,只能描述五个位置,所以第一个参数只能是一个五字符的字符串,不然就跟数组不匹配,便会报错了。。。 喏,第一个参数改成是一个五字符的字符串: 也便成功运行了:

优秀的个人博客,低调大师

java.lang.UnsatisfiedLinkError异常

显然,这是由于读取不到so文件导致的异常。 我尝试了如下方法: 1.检查了jniLibs目录下的文件结构和so文件,都稳稳的躺在那儿; 2.试图使用如下方式重新指定目录,依然无果 sourceSets { main { jniLibs.srcDirs = ['libs'] } } 3.请教提供so文件的开发同学是否与targetSdkVersion等有关系,并且试图配置了和他们一样的version 4.Clean Project 和 Rebuild Project 5.反编译查看apk中的libs目录下确实也存在so文件 然而,并无卵用! 奇怪的是这个异常在真机(OnePlus2,HUAWEI MATE8)上有,而在模拟器上却安然无恙。 于是乎,查看到OnePlus2的CPU架构是CPU_ABI=arm64-v8a。 翻阅到一篇相关文章描述到: 对于一个cpu是arm64-v8a架构的手机,它运行app时,进入jnilibs去读取库文件时,先看有没有arm64-v8a文件夹: 如果没有该文件夹,去找armeabi-v7a文件夹,如果没有,再去找armeabi文件夹,如果连这个文件夹也没有,就抛出异常如果有arm64-v8a文件夹,那么就去找特定名称的.so文件,注意:如果没有找到,不会再往下(armeabi-v7a文件夹)找了,而是直接抛出异常 如上图1,本地库不存在arm64-v8a文件夹,反编译apk后发现确实存在此目录,显然是由于其他aar的引入会生成此目录存放相关so文件。 过滤掉此目录 defaultConfig { //省略其余配置 ndk { //这句话的意思是指定ndk需要兼容的架构,其余文件夹so文件全部过滤掉 abiFilters "armeabi", "armeabi-v7a", "x86" } } 这么个问题,两天的光景没了!蓝瘦,香菇。 关于abiFilters的使用

优秀的个人博客,低调大师

Carbon Lang —— C++ 继任语言

Carbon 自称是“下一代 C++” (An experimental successor to C++),目前由谷歌开发和维护。 特性 Introducer 关键字和简单语法 函数输入参数为只读值 指针提供间接访问和变体 使用表达式来命名类型 软件包为 root 命名空间 通过包名导入API 用显式对象参数进行方法声明 单继承;默认使用最终类 强大且经过定义检查的泛型 类型可显式实现接口 示例代码

优秀的个人博客,低调大师

Qi lang —— 轻量级中文编程语言

气 (Qi) 是一种轻量级、快速、开源的中文编程语言。 特征 气在中文基础上。说英语的人通常不会想当然地认为他们所学的编程语言都是基于他们已经很流利的母语。以英语为母语的人可以通过阅读关键字(“if”、“int”、“while” 等)合理地推断 Python 代码的功能。让这种语言以外语为基础,可以让全球更多的人更容易地使用编程。 气速度很快。气使用单通道编译器编译出高效的字节码,这种字节码可以异常精确地运行。以及各种优化,例如Nan Boxing通过哈希表探测,气的速度与竞争对手的动态语言相当。 气是轻的。由于不到 5000 行代码,整个项目可以在一天内阅读。虽然代码很短,但所有内容都格式良好,易于理解。最终的可执行文件大小只有约 140 kb,允许您在几乎任何可以想象的设备上运行它。 气是面向对象的。将类放在前面和中心,面向对象编程提供了一个清晰的模块化结构,通过抽象和封装等概念,它在处理复杂性方面比函数式编程要好得多。 示例 Hello World:使用 Qi 编写的 "Hello, World!" 程序: 系统。打印行("你好,世界") 保留关键字 打断 继续 类 切换 案例 预设 否则 功能 而 对于 如果 空 返回 超 真 假 这 变量 和 或 等 不等 打等 小等 性能

优秀的个人博客,低调大师

Melody Lang —— 面向 JS 的新兴编程语言

Melody 是一种可将代码编译为 ECMAScript 正则表达式的语言,旨在更易于阅读和维护。 例子 注意:这些是当前支持的语法,可能会改变 Batman Theme 16 of "na"; 2 of match { <space>; "batman"; } // 🦇🦸 ♂️ 转变成 (?:na){16}(?: batman){2} Twitter Hashtag "#"; some of <word>; // #melody 转变成 #\\w+ Introductory Courses some of <alphabetic>; <space>; "1"; 2 of <digit>; // classname 1xx 转变成 [a-zA-Z]+ 1\\d{2} Indented Code (2 spaces) some of match { 2 of <space>; } some of <char>; ";"; // let value = 5; 转变成 (?: {2})+.+; 安装 Cargo cargo install melody_cli 从源代码 git clone https://github.com/yoav-lavi/melody.git cd melody cargo install --path crates/melody_cli Binary macOS binaries (aarch64 and x86_64) 可从 release 页面下载

优秀的个人博客,低调大师

Gleam Lang —— Rust 实现的函数式编程语言

Gleam 是 Rust 实现的函数式编程语言,构建于 Erlang 虚拟机之上,被编译为 Erlang(或 JavaScript),支持与其他 BEAM 语言(如 Erlang、Elixir 和 LFE)互操作,主要用于构建类型安全、可扩展的系统。 特性 基于 actor 的多核并发 代数数据类型 Erlang 风格的容错 快速编译 全类型推断 泛型 有用的错误信息 不可变数据结构 默认没有异常 no null 没有未定义的行为 可靠的包管理 小而一致的语言设计 与 Erlang、Elixir 等语言的零成本互操作 示例代码 Hello, World! import gleam/io pub fn main() { io.println("Hello, world!") } 简易 Web 服务器 import gleam/io import gleam/bit_builder import gleam/http/elli import gleam/http/response pub fn my_service(_req) { let body = bit_builder.from_string("Hello, world!") response.new(200) |> response.set_body(body) } pub fn main() { elli.become(my_service, on_port: 3000) } 多线程 hello world import gleam/io import gleam/int import gleam/list import gleam/string import gleam/otp/process pub fn main() { list.range(0, 1000) |> list.map(start_process) |> list.map(process.monitor_process) |> list.each(process.receive(_, 3)) // Wait for them to finish } fn start_process(i) { process.start(fn() { let message = string.append("Hello world: ", int.to_string(i)) io.println(message) }) }

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册