首页 文章 精选 留言 我的

精选列表

搜索[解释器],共10000篇文章
优秀的个人博客,低调大师

大模型风险识别的可解释闭环:从候选召回到人工复核和反馈学习

在舆情监测中,风险识别不是简单的情感分类。企业真正关心的是一条内容是否与自身相关,是否描述了事实性问题,是否正在形成传播事件,是否需要通知客服、公关、法务或业务负责人。大模型可以帮助理解上下文和隐含表达,但如果直接让模型对全量内容进行开放式判断,成本、稳定性和可审计性都难以满足生产要求。

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

Cloudflare CEO 公开解释裁员逻辑:用 AI 替代员工,“度量者”是首要替代目标

Cloudflare 首席执行官 Matthew Prince 近日在《华尔街日报》发表了一篇观点鲜明的署名文章,题目就是《我是如何决定用 AI 替代哪些员工的》。文章发布的同时,Cloudflare 刚刚宣布裁减约 20% 的员工(约 1100 人),而这家公司的财务数据恰恰处于历史最好时期。 "我们创下了创纪录的营收增长,拥有强劲的自由现金流,在全球范围内吸引着前所未有的客户数量……" Prince 在文章中写道,"但业务正在发生变化,Cloudflare 要赢得未来,就必须随之改变。" 让这个逻辑成立的核心论据是:Cloudflare 内部 AI 使用量在三个月内增长了超过 600%。正是这一数据,让 Prince 得出了"用 AI 替代部分岗位是合理选择"的结论。 谁是"可替代"的? Prince 在文章中直接点明了判断标准:中层管理者、运营岗位,以及那些"纯粹做度量工作"的角色,是 AI 替代的首要目标。他没有回避这一点,甚至用了"replace with AI"这样的表述作为文章标题——这是一种罕见的坦诚。 其逻辑在于:如果 AI 工具能够完成此前需要人工完成的协调、监控、汇报等工作,而这些工作本身并不直接创造客户价值,那么用更少的人加更强的工具来运营公司,就是合理的商业决策。 "不是公司出了问题,而是必须提前变" Prince 反复强调,此次裁员并非因为 Cloudflare 经营困难。恰恰相反,裁员发生在公司增长最健康的阶段。这种"预防性调整"的思路,是这一轮 AI 驱动裁员潮中最值得注意的信号:企业不再等到危机出现才动手,而是在现金流充裕时主动重构组织,以期在格局初定之前建立成本优势。 他还在文章中预测:"我猜测,2027 年我们的员工数量会比 2026 年任何时候都多。"在他看来,AI 替代的是特定岗位,而那些"拥抱这些工具的人"生产率会大幅提升,公司规模反而可能扩张。 科技行业的新范式:营收增长与裁员并行 Cloudflare 并不是孤例。Meta、微软、亚马逊等科技巨头在 AI 驱动生产力提升的背景下,相继宣布裁员但财务数据却持续向好。AI 替代的叙事正在从"威胁论"变成"效率论"——用更少的人做更多的产出,成为科技公司向股东交代增长故事的新语言。 但 Prince 的文章之所以引发广泛关注,正是因为他把这一逻辑从会议室搬到了媒体广场,亲自做了那道"谁来被替代"的判断题。对于仍在科技行业工作的人来说,这篇文章是一个信号:AI 的影响不是未来的威胁,而是正在发生的现实。 参考来源:https://www.wsj.com/opinion/how-i-choose-which-cloudflare-employees-to-replace-with-ai-40a197e5

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

在 Android 系统中直接调用 SO文件(包含System.loadLibrary加载so的路径解释)

Android虚拟机不能直接调用底层设备,如果要对底层设备进行调用,就需要用到so使 用 C语言或C++编写完成,利用NDK进行编译,直接运行在Linux内核中,按jni调用 so时, 基本类型可以直接交互。 在 apk里打包进.so文件的方法有两种,一 是在 Android.mk文件里增加 “LOCAL_JNI_SHARED_LIBRARIES := libxxx”,这样在编译的时候,NDK 自动会把这个libxxx打 包进apk,放在xxx/lib/目录下;二是在应用的目录下手工建libs/armeabi目录,然后把libxxx.so 拷贝到这个目录下,NDK也会自动把这个libxxx.so打包进apk,位置还是在xxx/lib/目录下。 在代码里,使用System.loadLibrary("xxx");就可以加载这个动态库了。这里要注意,参数 只写xxx就可以了,不需要写libxxx,也不需要写libxxx.so。 还有一点要说明,System.loadLibrary这个函数会在如下路径搜索libxxx.so文件: /system/lib /data/data/xxx apk package/lib 如果libxxx.so还依赖其它.so文件,比如libyyy.so,则System.loadLibrary只会在/system/lib 目录下查找,如果没找到,不会自动到/data/data/xxx apk package/lib 下去找,这个时候就会 报动态库没找到的错误。解决方法是在load libxxx.so之前,先load libyyy.so,具体如下: System.loadLibrary("yyy"); System.loadLibrary("xxx"); 本文结合使用实例进行说明。 创建 jni目录.libs目录 在工程根目录下创建 jni 目录,libs 目录不用手动建立,如图 1 所示。注意,这里使用 的是 ndk_R7,所以不需要用jdk去生成C 文件。 图1 Java编写接口文件(Device.java) Device.java的代码实现如下: public class Device { static { System.loadLibrary("device"); } public native String deviceTestString(String test); } 方法名必须使用native关键字声明,并且必须使用system.loadLibrary("SO文件名")承载 C 类库。 编写C文件(devices.c) 这里编写的C代码属于Linux C 范畴,实现代码如下: #include <string.h> #include <jni.h> char* jstringTostrM(JNIEnv* env, jstring jstr) { char* pStr = NULL; jclass jstrObj = (*env)->FindClass(env, "java/lang/String"); jstring encode = (*env)->NewStringUTF(env, "utf-8"); jmethodID methodId = (*env)->GetMethodID(env, jstrObj, "getBytes", "(Ljava/lang/String;)[B"); jbyteArray byteArray = (jbyteArray)(*env)->CallObjectMethod(env, jstr, methodId, encode); jsize strLen = (*env)->GetArrayLength(env, byteArray); jbyte *jBuf = (*env)->GetByteArrayElements(env, byteArray, JNI_FALSE); if (jBuf > 0) { pStr = (char*)malloc(strLen + 1); if (!pStr) { return NULL; } memcpy(pStr, jBuf, strLen); pStr[strLen] = 0; } (*env)->ReleaseByteArrayElements(env, byteArray, jBuf, 0); return pStr; } jstring Java_com_jack_Device_deviceTestString(JNIEnv* env,jclass clazz,jstring path){ //system("echo devices.so test > /sdcard/log/log.txt"); char * test = jstringTostrM(env,path); return (*env)->NewStringUTF(env, test); } 注意C 的函数命名规则,Java的jni标准必须有,com_jack_Device是Device.java文件的 全 名 , 再下来才是 C 函数名 , jstringTostrM 函数必须写在 Java_com_jack_Device_deviceTestString函数前,如果不是,必须要在C 文件头进行声明,声 明代码为: char* jstringTostrM(JNIEnv* env, jstring jstr); 编写 Android.mk和编译android.mk Android.mk的代码如下: LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := device LOCAL_SRC_FILES := device.c include $(BUILD_SHARED_LIBRARY) 如果要编译成可执行文件,还需包含代码include $(BUILD_EXECUTABLE),之后按照图2 所示编译即可。 图 2 编写 Java代码进行C函数调用 Device device = new Device(); String test = device.deviceTestString("你好~!!!"); Toast toast = Toast.makeText(Jack_ndk_jstringActivity.this, test, Toast.LENGTH_LONG); toast.setGravity(Gravity.TOP,0,150); toast.show(); TextView text = (TextView) findViewById(R.id.text1); text.setText(test); 注意,最后在AndroidManifest.xml文件中要加入文件控制权限,代码如下: <!-- 文件权限 --> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

资源下载

更多资源
Mario

Mario

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

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

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

Rocky Linux

Rocky Linux

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

用户登录
用户注册