AI之 提示词
提示词设计大原则相关性是指提示词应该与当前话题或内容相关。这是因为无关的提示词会分散注意力并增加沟通的困难。在设计提示词时,我们可以考虑使用具体和相关的术语和短语来表达所需的信息。例如,如果您正在寻求关于旅游的建议,您可以使用相关的提示词,如“景点推荐”、“路线规划”等。
确定焦点是指提示词应该能够引起人们的注意力并帮助他们专注于重点。由于我们经常面临大量信息和复杂的情境,因此在与AI进行交互时,需要使用针对性强、易于理解的提示词来减少干扰。例如,在与我交流时,您可以使用“文案建议”、“写作技巧”等直接表达您的需求,而不是使用更泛泛的提示词,如“关于写作方面的问题”。
为了确保chatgpt能够理解你的提示,并能够生成适当的响应,那重要的就是要使用具体和相关的语言。就要避免用一些非常专业的术语啊,或者一些模糊的语言,那这就会导致它的混淆或者误解。
清晰度是指提示词应该能够明确传达出想要表达的意思。这是因为模糊的提示词可能会让人们产生误解或混淆,从而降低了通信的效率。为了确保提示词足够清晰,我们可以使用简洁明了的语言来表达想法,并避免使用过于复杂或含糊的术语。例如,如果你想询问有关健 ...
AI之 panda
pandas 是python中的一个 数据分析库,填补了python在数据分析中的不足,同 numpy 、matplotlib一起 为python的小规模数据分析提供强大的支持。
** 数据分析的一般步骤**
数据整理和清洗
数据分析与建模
数据可视化和制表
pandas 在数据的处理方面表现卓越.
数据结构seriesseries (系列),在pandas中可以表示所有的由一维数据组成的数据结构。
123456789import pandas as pdl = [0,1,7,9,np.NAN,None,1024,512]# ⽆论是numpy中的NAN还是Python中的None在pandas中都以缺失数据NaN对待s1 = pd.Series(data = l) # pandas⾃动添加索引s2 = pd.Series(data = l,index = list('abcdefhi'),dtype='float32') # 指定⾏索引# 传⼊字典创建, key⾏索引s3 = pd.Series(data = {'a ...
AI之 python 基础
为什么是python
语法极简
数据分析领域极度火热
流行语言排名1
其他资料直接ai,metaso
4行代码,实现一万数据的正态分布显示。
1234import matplotlib.pyplot as pltimport numpy as npplt.hist(np.random.randn(10000), bins=40)plt.show()
安装
安装帖子多如牛毛,找资料安装即可
python2 已不建议使用
对于初学者和数据分析领域建议安装 anconda
IDE
vscode、cursor
jupyter notebook
pychem (idea同源)
主要语法变量变量即可变的量,在python中,可以直接定义
123a = 100b='zifuc'print(a)
命名规则
字母、数字、下划线
数字不做开头
区分大小写
python 约定俗成
普通变量建议小写
不建议 字母+数字的命名方式;
驼峰写法 or 下划线写法 (统一即可)
关键字1234567False await else import passNone break ...
1g内存如何存储1亿数据
1g内存如何存储1亿数据假设每条地址数据包含如下字段:1234567public class Location { String city; // 城市,如"北京市" String region; // 区域,如"海淀区" String countryCode;// 国家代码,如"CN" double longitude; // 经度 double latitude; // 纬度 }
一、原始数据结构:内存爆炸的根源123456public class Location { private String city; // 20字节 private String region; // 20字节 private String countryCode;// 4字节 private double ...
上亿号码去重方案
40亿个qq号,如何实现去重,限制内存1g的情况下。从QQ号和内存限制说起QQ号其实是一串数字,范围是4字节的无符号正整数,也就是32位,理论上最大值接近43亿。所以,如果单纯存储这40亿个QQ号,需要耗费多少内存呢?
简单计算一下:
14000000000*4 /1024/1024/1024 ≈ 15GB
总共需要15GB的内存,显然远远超过了题目给的1GB限制。这就需要我们换个思路,不能“硬塞”,要想办法巧妙地存储和处理这些QQ号。
所以问题的本质就是“在内存非常有限的情况下,高效实现重复数据的去重”。
解决方案有很多,但是主流的方案有两种:
方案1:使用BitMap
方案2:使用布隆过滤器
两者各有千秋,但在本题中,我们使用BitMap更加合适。
2.解决方案:用BitMap的精妙之处化繁为简2.1 什么是BitMap?所谓位图(BitMap)其实就是一个bit数组,即每一个位置都是一个bit,其中的取值可以是0或者1。
通俗点说,BitMap就像一个超级节省空间的“登记簿”。
如果某个QQ号存在,就在对应的“格子”上标记为1;
如果不存在,则是0。
比如,我们需要记录 ...
java中的各种锁
1、锁选择维度选择适合的锁通常依赖于特定的应用场景和并发需求。以下是一个表格,概述了不同锁类型的关键特性和选择它们的考量维度:
锁类型
适用场景
锁模式
性能特点
公平性
锁的粗细
条件支持
阻塞策略
用途举例
synchronized
简单的同步需求,无需复杂控制
独占式
适中,偏向锁、轻量级锁优化
无公平策略
粗粒度锁
不支持
阻塞等待
单例模式、简单的计数器
ReentrantLock
需要灵活的锁控制,如可中断、超时、尝试锁定等
独占式
高,支持多种锁定方式
可配置公平性
细粒度锁
支持
可中断、超时、尝试
同步代码块或方法、复杂同步控制
ReadWriteLock
读多写少的场景
共享-独占式
高,提高读操作并发性
不支持公平性
细粒度锁
不支持
阻塞等待
缓存系统、文件系统
StampedLock
读多写多,需要乐观读和悲观写的场景
乐观读-悲观写
高,提供读写锁的扩展
可配置公平性
细粒度锁
支持
可中断、超时、尝试
高性能计数器、数据缓存
CountDownLatch
需要等待一组操作完成的场景
无
低,一次性
不支持公平性
粗粒度锁
不支持 ...
seate中的tcc
Alibaba-Seata TCC1. 什么是TCC
TCC 基于分布式事务中的二阶段提交协议实现,它的全称为 Try-Confirm-Cancel,即资源预留(Try)、确认操作(Confirm)、取消操作(Cancel),他们的具体含义如下:
Try:对业务资源的检查并预留;
Confirm:对业务处理进行提交,即 commit 操作,只要 Try 成功,那么该步骤一定成功;
Cancel:对业务处理进行取消,即回滚操作,该步骤回对 Try 预留的资源进行释放。
XA是资源层面的分布式事务,强一致性,在两阶段提交的整个过程中,一直会持有资源的锁。
TCC是业务层面的分布式事务,最终一致性,不会一直持有资源的锁。
TCC 是一种侵入式的分布式事务解决方案,以上三个操作都需要业务系统自行实现,对业务系统有着非常大的入侵性,设计相对复杂,但优点是 TCC 完全不依赖数据库,能够实现跨数据库、跨应用资源管理,对这些不同数据访问通过侵入式的编码方式实现一个原子操作,更好地解决了在各种复杂业务场景下的分布式事务问题。
常见开源TCC框架:
Seata TCC
Hmily
Tcc ...
java中CAS
1.CAS介绍什么是 CASCAS(Compare And Swap,比较与交换),是非阻塞同步的实现原理,它是CPU硬件层面的一种指令,从CPU层面能保证”比较与交换”两个操作的原子性。CAS指令操作包括三个参数:内存值(内存地址值)V、预期值E、新值N,当CAS指令执行时,当且仅当预期值E和内存值V相同时,才更新内存值为N,否则就不执行更新,无论更新与否都会返回否会返回旧的内存值V,上述的处理过程是一个原子操作。
用Java代码等效实现一下CAS的执行过程:
-
123456789101112131415161718192021public class CASDemo { // 内存中当前的值 private volatile int ramAddress; /** * @param expectedValue 期望值 * @return newValue 更新的值 **/ public synchronized int compareAndSwap(int e ...
cpu打到100的分析
CPU 飙升是一个常见的问题。
CPU100%定位的两大神器
想要定位到具体是哪一行的代码导致, 一般都会使用下面的两大神器
通常使用的jvm自带的工具jstack,
还有一种就是开源神器arthas,
一般而言,arthas还有其它的功能,所以选择它多一点.
CPU 飙升100%的解决思路****与方法论
使用jstack 解决CPU 100%问题实操使用jstack 解决CPU 100%问题,在方法论上要用到两个命令,
top 命令查看TOP N线程,
jstack命令查看堆栈信息
1.jstack命令讲解命令jstack是java堆栈的跟踪工具,可以打印出程序中所有线程的堆栈信息,包括线程状态,调用栈信息,锁信息等。
jstack可以诊断线程死锁、内存泄漏等问题
命令格式: jstack [options] pid
常用例子: jstack -l pid,查看线程的堆栈信息
堆栈信息解读:
123456789101112131415161718192021222324252627282930313233343536[root@192-168-65 ...