手机卫士项目(第一天)

1.获取应用版本信息

try {
	//获取包管理器
	PackageManager pm = getPackageManager();
	//获取包信息(AndroidManifest.xml文件里的所有信息都封装在PackageInfo类里)    参数一:清单文件里的包名  参数二:写0即可
	PackageInfo info = pm.getPackageInfo(getPackageName(), 0);
	return info.versionName;
} catch (NameNotFoundException e) {
	e.printStackTrace();
	return "";
}

2.handler.postDelay()执行延时动作  下面这个例子就是延时5秒再弹出吐司

/*
 * handler.postDelayed   这个方法的作用是在新线程中延迟指定时间去做某个操作
 * 第一个参数:需要延迟做的操作
 * 第二个参数:延迟的时间
 */
handler.postDelayed(new Runnable() {
	@Override
	public void run() {
		Toast.makeText(getApplicationContext(), "哈哈哈",Toast.LENGTH_SHORT).show();
	}
}, 5000);

3.如果希以下两个属性作用于TextView上并且生效,那么就需要自定义一个TextView,继承TextView类,覆写父类的构造方法,最后再覆写isFocused方法,永远返回true即可。

android:ellipsize="marquee"
android:focusableInTouchMode="true"

4.状态选择器  手指按下 离开的时候显示不同颜色或者图片

在res目录下创建drawable文件夹,创建颜色选择器xml文件(home_item_selector.xml)

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/gray" android:state_pressed="true"/>
    <!-- pressed -->
    <item android:drawable="@color/gray" android:state_focused="true"/>
    <!-- focused -->
    <item android:drawable="@android:color/transparent"/>
    <!-- default -->
</selector>

home_item_selector.xml这个文件里引用的颜色是values文件夹下的colors.xml文件里定义的颜色

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="gray">#33000000</color>
</resources>

最后将home_item_selector.xml文件引入到某个布局文件,例如这个项目中就是引入到九宫格的grid_home_item.xml文件中

android:background="@drawable/home_item_selector"


5.自定义的组合控件:

(1).创建一个自定义的组合控件,继承一个布局RelativeLayout或者LinearLayout等

(2).实现父类的构造函数,创建一个initView方法(用于来显示自定义的控件布局)  在每个构造函数里都要使用下。

View view = View.inflate(getContext(), R.layout.ui_setting_view,this);//this表示挂载到当前自定义组合控件上

(3).声明命名空间  res/应用程序里清单文件的包名   xmlns:自定义名称

xmlns:xxc="http://schemas.android.com/apk/res/com.example.mobilesaf"
(4).在自定义组件里添加自定义属性:  例如   xxc:title="我是标题"

(5).在valuse文件夹下创建attrs.xml   在里面声明自定义的属性

<?xml version="1.0" encoding="utf-8"?>
<resources>
     <declare-styleable name="SettingView"><!-- 这个name值在引用的时候加在attr的name前边  例如SettingView_title -->
        <attr name="title" format="string" />
        <attr name="desc_on" format="string" />
        <attr name="desc_off" format="string" />
    </declare-styleable>
</resources>
(6).在自定义组合控件的java代码里,在两个参数的构造方法里添加如下代码

将自定义的属性  xxc:title之类的  和attrs集合建立对应关系    第二个参数是在R文件里自动生成的,是一个数组,只封装了自定义的属性,名字和attrs.xml中declare-styleab标签中的name属性一致

TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.SettingView);
获取自定义属性,设置到原始组件上   参数是attrs.xml中declare-styleab标签中的name属性  + _  attr标签中name属性

String title = a.getString(R.styleable.SettingView_title);
tv_setting_title.setText(title);


项目中SettingView.java  自定义组合控件

import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.view.View;
import android.widget.CheckBox;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.example.mobilesaf.R;

/**
 * 设置界面里的自定义组件
 * 里面有个Title,Content,CheckBox
 */
public class SettingView extends RelativeLayout {

	private TextView tv_setting_title;
	private TextView tv_setting_desc;
	private CheckBox cb_setting_state;
	private String desc_on;
	private String desc_off;

	public SettingView(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
		initView();
	}

	public SettingView(Context context, AttributeSet attrs) {
		super(context, attrs);
		initView();
		TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.SettingView);
		String title = a.getString(R.styleable.SettingView_title);
		tv_setting_title.setText(title);
		desc_on = a.getString(R.styleable.SettingView_desc_on);
		desc_off = a.getString(R.styleable.SettingView_desc_off);
	}

	public SettingView(Context context) {
		super(context);
		initView();
	}

	public void initView(){
		View view = View.inflate(getContext(), R.layout.ui_setting_view, this);//this表示挂载到当前自定义组合控件上
		tv_setting_title = (TextView) view.findViewById(R.id.tv_setting_title);
		tv_setting_desc = (TextView) view.findViewById(R.id.tv_setting_desc);
		cb_setting_state = (CheckBox) view.findViewById(R.id.cb_setting_state);
	}
	
	/**
	 * 设置标题内容
	 * @param text
	 */
	public void setTitle(String text){
		tv_setting_title.setText(text);
	}
	
	/**
	 * 设置描述内容
	 * @param text
	 */
	public void setDesc(String text){
		tv_setting_desc.setText(text);
	}
	
	/**
	 * 获取多选框选中状态
	 * @return
	 */
	public boolean isChecked(){
		return cb_setting_state.isChecked();
	}
	
	/**
	 * 设置复选框状态,并设置相应的描述信息
	 * @param checked
	 */
	public void setCheck(boolean checked){
		cb_setting_state.setChecked(checked);
		if(checked){
			setDesc(desc_on);
		}else{
			setDesc(desc_off);
		}
	}
}





资源下载链接为: https://pan.quark.cn/s/140386800631 通用大模型文本分类实践的基本原理是,借助大模型自身较强的理解和推理能力,在使用时需在prompt中明确分类任务目标,并详细解释每个类目概念,尤其要突出类目间的差别。 结合in-context learning思想,有效的prompt应包含分类任务介绍及细节、类目概念解释、每个类目对应的例子和待分类文本。但实际应用中,类目和样本较多易导致prompt过长,影响大模型推理效果,因此可先通过向量检索缩小范围,再由大模型做最终决策。 具体方案为:离线时提前配置好每个类目的概念及对应样本;在线时先对给定query进行向量召回,再将召回结果交给大模型决策。 该方法不更新任何模型参数,直接使用开源模型参数。其架构参考GPT-RE并结合相关实践改写,加入上下文学习以提高准确度,还使用BGE作为向量模型,K-BERT提取文本关键词,拼接召回的相似例子作为上下文输入大模型。 代码实现上,大模型用Qwen2-7B-Instruct,Embedding采用bge-base-zh-v1.5,向量库选择milvus。分类主函数的作用是在向量库中召回相似案例,拼接prompt后输入大模型。 结果方面,使用ICL时accuracy达0.94,比bert文本分类的0.98低0.04,错误类别6个,处理时添加“家居”类别,影响不大;不使用ICL时accuracy为0.88,错误58项,可能与未修改prompt有关。 优点是无需训练即可有较好结果,例子优质、类目界限清晰时效果更佳,适合围绕通用大模型api打造工具;缺点是上限不高,仅针对一个分类任务部署大模型不划算,推理速度慢,icl的token使用多,用收费api会有额外开销。 后续可优化的点是利用key-bert提取的关键词,因为核心词语有时比语意更重要。 参考资料包括
内容概要:本文详细介绍了哈希表及其相关概念和技术细节,包括哈希表的引入、哈希函数的设计、冲突处理机制、字符串哈希的基础、哈希错误率分析以及哈希的改进与应用。哈希表作为一种高效的数据结构,通过键值对存储数据,能够快速定位和检索。文中讨论了整数键值和字符串键值的哈希方法,特别是字符串哈希中的多项式哈希及其优化方法,如双哈希和子串哈希的快速计算。此外,还探讨了常见的冲突处理方法——拉链法和闭散列法,并提供了C++实现示例。最后,文章列举了哈希在字符串匹配、最长回文子串、最长公共子字符串等问题中的具体应用。 适合人群:计算机科学专业的学生、算法竞赛选手以及有一定编程基础并对数据结构和算法感兴趣的开发者。 使用场景及目标:①理解哈希表的工作原理及其在各种编程任务中的应用;②掌握哈希函数的设计原则,包括如何选择合适的模数和基数;③学会处理哈希冲突的方法,如拉链法和闭散列法;④了解并能运用字符串哈希解决实际问题,如字符串匹配、回文检测等。 阅读建议:由于哈希涉及较多数学知识和编程技巧,建议读者先熟悉基本的数据结构和算法理论,再结合代码实例进行深入理解。同时,在实践中不断尝试不同的哈希策略,对比性能差异,从而更好地掌握哈希技术。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值