分类 默认分类 下的文章
keytool获取不到 keystore 中的md5
首先google,
https://www.cnblogs.com/architectforest/p/17318174.html
这篇文章说,jdk8 不行,必须jdk7 或者6。
于是我换成了 jdk6,但是提示 keystore 格式不支持,然后我把 keystore ,转换成了 .jks ,通过下面这个命令
keytool -importkeystore -srckeystore xxx.keystore -destkeystore xxx.jks -srcstoretype PKCS12 -deststoretype JKS
然后 再使用 keytool -list -v -keystore wensanshi.keystore
方案2
KeyStore Explorer,通过 这个软件,导入 keystore,点击导入的数据,点击 fingerprint 切换到 md5
这次问题,我的收获是
1、一直要保持清醒
2、不要盲目尝试,而是有一定的逻辑推理
3、各种方案都试试,尽量采用直观、可验证的方案
4、至少要有两种测试出来的结果是一致的,才算是比较可靠的
sql优化
判断是否存在
select count(1) from (select 1 from t_budget_unit where service_id = #{param1} and manager_id = #{param2} limit 1) a
select 1 from t_budget_unit where service_id = #{param1} and manager_id = #{param2} limit 1
修复qq机器人
在本地windows,下载运行 go-cqhttp,
对config.yml文件
修改qq配置,qq号,无密码
参照cq服务,修改每个机器人对应的端口
把device.json config.yml 和 session 文件,放入云服务器
关于回滚的设置
哪些情况需要回滚
操作多张表格
涉及到第三方的api
要让不可回滚的操作,放到最后。比如 支付宝支付,要放到最后,先操作数据库,在调用支付。
备份
101.43.126.63/share/temp/线上.apk
101.43.126.63/share/temp/连我本地.apk
记录go http 消息多发bug 的解决过程
记录go http 消息多发bug 的解决过程
1、定位,打日志
2、判断消息多发的情况,是由于本地会重复一次,因此过滤掉本地的请求即可
备忘
1、给罗晓雯出教资题目
2、续费的计算
3、人生持久化目录
常见排序算法
冒泡排序
冒泡排序的原理很简单,就是每次都把当前无序序列中最大(或者最小)的元素移动到序列的开头(或者结尾),之后再对除该元素之外的剩余序列做同样的操作。当所有的元素都冒泡完毕之后,整个序列就会变得有序。冒泡排序的过程正如它的名字一般,每次都把序列中最大的元素移动到末尾(假设我们选择了这种规则),这种操作就好像水中的泡泡不断地从水中浮到水面一般。
冒泡排序的实现如下,简单观察就可以知道它的时间复杂度为 O (n2)
1
2
3
4
5
6
def bubble_sort(arr):
length = len(arr)
for i in range(length - 1):
for j in range(length - 1 - i):
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
选择排序
原理上类似于冒泡排序,区别在于冒泡排序比较的是相邻元素的大小,选择排序则会与一个固定的数值进行大小比较,省去了一些没有必要的比较过程。同样是获取一个无序序列的最小值并放到开头,冒泡排序是逐个比较并交换值,而选择排序会以第一个元素作为基准值进行比较,获取到最小值后只需要把最小值和开头元素进行交换即可。
选择排序实现如下,复杂度为 O (n2)
1
2
3
4
5
6
7
8
def select_sort(arr):
length = len(arr)
for i in range(length):
min_num_index = i
for j in range(i, length):
if arr[j] < arr[min_num_index]:
min_num_index = j
arr[min_num_index], arr[i] = arr[i], arr[min_num_index]
插入排序
插入排序是将序列分为两部分,一部分有序,一部分无序。每次从无序序列选择一个元素插入到有序序列中的正确位置,保证有序序列仍然有序,就好像打牌的时候不断地抓牌把牌插入到正确的位置一般。在这里我们把序列的前半段当做有序序列,后半段当做无序序列。
插入排序实现如下,复杂度为 O (n2)
1
2
3
4
5
6
7
8
9
def insert_sort(arr):
length = len(arr)
for i in range(1, length):
value = arr[i]
j = i - 1
while j >= 0 and value < arr[j]: # 元素向前挪动
arr[j + 1] = arr[j] # 全部向后移一位
j -= 1
arr[j + 1] = value
归并排序
归并排序是将两个有序序列合并为一个序列,而合并前的有序序列又可以由两个有序序列合并得到,如此反复最终实现排序。
归并排序实现如下,复杂度为 O (NlogN)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
def merge_sort(arr):
def _merge_sort(_arr, left, right):
if left >= right:
return
# 计算中间位置
mid = (left + right) // 2
# 获得左半边的有序序列
_merge_sort(_arr, left, mid)
# 获得右半边的有序序列
_merge_sort(_arr, mid + 1, right)
tmp = []
i = left
j = mid + 1
while i <= mid or j <= right: # 遍历
if i > mid: # i已经到了尽头,只存j
tmp.append(_arr[j])
j += 1
continue
if j > right: # j已经到了尽头,只存i
tmp.append(_arr[i])
i += 1
continue
# 取较小的那个值
if _arr[i] < _arr[j]:
tmp.append(_arr[i])
i += 1
else:
tmp.append(_arr[j])
j += 1
_arr[left: right + 1] = tmp # 将这一段序列设为有序
_merge_sort(arr, 0, len(arr) - 1)
快速排序
快速排序和归并排序类似,都是使用分治法。区别在于归并排序是先创建两个有序的子序列,而快速排序是随机选取一个主元(pivot),然后将大于该元素的值放在其右边,小于该元素的值放在其左边。如此反复,最终序列就变得有序了。
快速排序实现如下,复杂度为 O (NlogN)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def quick_sort(arr):
def _quick_sort(_arr, left, right):
if left >= right:
return
pivot = random.randint(left, right) # 随机一个pivot
_arr[pivot], _arr[right] = _arr[right], _arr[pivot] # 把这个值放到最右边
j = left
for i in range(left, right):
if _arr[i] < _arr[right]: # 如果当前这个值小于pivot对应的值
_arr[i], _arr[j] = _arr[j], _arr[i] # 将这个值放到左边去
j += 1
_arr[j], _arr[right] = _arr[right], _arr[j] # 最后把这个值放在小值和大值的中间
# 对左右两边的值进行分治
_quick_sort(_arr, left, j - 1)
_quick_sort(_arr, j + 1, right)
_quick_sort(arr, 0, len(arr) - 1)
包含所有排序算法和测试的完整代码如下
highlight python
执行结果如下
get_array: 1.08ms
[606, 969, 12, 732, 279, 820, 962, 752, 989, 594, 789, 83, 818, 555, 872, 266, 863, 800, 953, 879, 371, 685, 171, 325, 868, 141, 209, 581, 660, 252, 426, 731, 672, 360, 913, 427, 44, 272, 399, 291, 492, 957, 921, 315, 65, 10, 745, 343, 832, 144, 550, 403, 634, 579, 863, 164, 730, 562, 487, 23, 755, 957, 906, 378, 656, 18, 337, 446, 315, 36, 530, 826, 788, 384, 687, 760, 769, 161, 424, 57, 572, 506, 954, 192, 765, 111, 184, 732, 220, 602, 815, 930, 915, 284, 347, 441, 530, 378, 938, 246, 434, 848, 334, 259, 535, 747, 125, 137, 77, 881, 403, 390, 758, 298, 268, 440, 428, 793, 871, 364, 688, 180, 184, 957, 398, 300, 336, 981, 212, 650, 986, 742, 182, 553, 149, 898, 805, 796, 489, 727, 253, 333, 512, 464, 310, 688, 241, 533, 49, 31, 338, 500, 359, 403, 328, 277, 259, 844, 4, 802, 715, 209, 889, 596, 177, 521, 707, 435, 970, 960, 800, 990, 749, 833, 837, 845, 993, 585, 961, 783, 649, 677, 134, 517, 784, 491, 974, 668, 442, 200, 692, 549, 506, 951, 175, 292, 585, 98, 637, 561, 178, 500, 673, 812, 22, 893, 701, 216, 575, 642, 183, 814, 544, 926, 280, 683, 3, 588, 743, 815, 707, 88, 666, 886, 775, 861, 421, 542, 204, 469, 462, 698, 698, 893, 748, 576, 154, 372, 253, 120, 377, 549, 415, 492, 613, 377, 160, 325, 960, 245, 581, 697, 782, 663, 431, 71, 83, 484, 283, 454, 913, 219, 192, 77, 202, 184, 733, 775, 582, 945, 7, 445, 143, 909, 507, 600, 189, 158, 19, 800, 304, 61, 874, 945, 763, 452, 996, 667, 70, 705, 953, 877, 864, 57, 467, 320, 361, 543, 645, 749, 312, 821, 139, 176, 667, 908, 506, 943, 738, 167, 267, 803, 502, 40, 598, 699, 40, 259, 74, 28, 761, 482, 200, 402, 784, 878, 189, 405, 384, 260, 248, 354, 265, 26, 89, 685, 964, 618, 546, 424, 604, 339, 621, 343, 68, 401, 534, 69, 476, 826, 747, 497, 594, 553, 863, 238, 856, 787, 723, 18, 680, 797, 945, 822, 455, 0, 822, 245, 715, 184, 399, 597, 78, 780, 913, 85, 825, 873, 969, 550, 776, 729, 704, 582, 227, 723, 923, 120, 104, 207, 885, 977, 66, 393, 672, 236, 812, 85, 659, 36, 900, 46, 763, 481, 806, 545, 974, 312, 757, 66, 538, 689, 806, 632, 284, 717, 358, 490, 375, 873, 203, 601, 276, 121, 544, 16, 450, 310, 255, 274, 232, 520, 822, 908, 806, 254, 357, 365, 41, 967, 258, 894, 174, 764, 656, 906, 212, 362, 154, 371, 836, 365, 237, 651, 767, 126, 85, 361, 434, 399, 58, 362, 846, 343, 293, 492, 172, 451, 962, 293, 100, 777, 28, 788, 179, 10, 292, 53, 479, 126, 0, 433, 850, 525, 723, 276, 611, 66, 401, 536, 570, 798, 231, 993, 222, 171, 737, 961, 222, 430]
bubble_sort: 181.51ms
select_sort: 51.87ms
insert_sort: 29.96ms
merge_sort: 3.12ms
quick_sort: 2.97ms
参考
十大常见排序算法
常见的基本排序算法
Data Structure Visualizations
Comparison Sorting Algorithms
VisuAlgo
假如死亡临近,我最想做什么
假如死亡临近,我最想做什么 30
- 照顾家人,陪伴。
- 照顾女朋友
这样一想,突然感觉,其实生活中很多事情,根本不需要太在意。
2022新年博客
2022年1月29日,被第一天聊天的女生表白
年初二去姑姑家拜年,姑姑给了我压岁钱,有点破防
跟姑姑提出了,去深圳打工的想法。因为想要改变状态
感觉2021过得真是失败,希望2022能好一点吧
游戏化微习惯打卡群,运营有点不正常,不知道为什么打卡的人越来越少了?难道是引入了几个高积分用户,导致会普通用户造成压力?
我确实遇到了,很大的问题。希望我能走出来吧
今天思考了娱乐的作用,想通过控制数量,来提高娱乐的性价比
节省时间应该也算一种抠门吧,毕竟钱没了还能挣,时间过去了就过去了
于是,我写了一个程序,每日搞笑视频推送,每天用几分钟收获快乐。
由于qq播放只能小屏幕+低画质,通过降低体验来抑制多巴胺。
把b站、抖音卸载掉,逃离算法推荐,每次看完一个视频,忍不住刷新,不知不觉时间就过去了,反而感到空虚
目标,每天只看一个搞笑视频 和 一个新奇视频。
正在实践中,过段时间来更新,看效果如何
给父母的礼物清单
粮油米面
鞋子、衣服
智能手机
拍套全家福 每年
【TED】睡眠是你的超能力
睡眠极其重要,睡好了效率才有保证
睡眠直接影响激素水平,容易衰老,记忆力下降, 无法真正记住知识,心脏病概率增加,免疫力极度下降,癌症概率增加,寿命缩短
好的睡眠可以:
增加创造力
提高注意力和专注力
降低发生事故的风险
降低患抑郁症的风险
规律睡眠,每天10点准时睡觉
骗局集合,防骗
- 一定不要随意登录别人的iCloud账号,因为你一旦登录了,你的设备在账号主人那就会出现。当时我的手机一定被对方点了丢失,所以被锁起来。勒索
- 刷单返现
- 代付
- 通过国家反诈中心,接到警报,打电话过去发现占线,于是通过支付宝转账备注信息来通知当事人
- 假冒警察
- 陌生人问路,借钱,一律不借
- 冒充亲友诈骗:利用木马程序盗取对方网络通讯工具密码,截取对方聊天视频资料后,冒充该通讯账号主人对其亲友以“患重病、出车祸”等紧急事情为名实施诈骗
- 冒充公司老总诈骗:犯罪分子通过打入企业内部通信群,了解老总及员工之间信息交流情况,通过一系列伪装,再冒充公司老总向员工发送转账汇款指令
- 伪造身份诈骗:犯罪分子伪装成“高富帅”或“白富美”,加为好友骗取感情和信任后,随即以资金紧张、家人有难等各种理由骗取钱财
- 医保、社保诈骗:犯罪分子冒充医保社保工作人员,谎称受害人账户出现异常,之后冒充司法机关工作人员以公正调查、便于核查为由,诱骗受害人向所谓的安全账户汇款实施诈骗
- 网络购物诈骗:犯罪分子通过开设虚假购物网站或网店,在事主下单后,便称系统故障需重新激活。后通过QQ发送虚假激活网址,让受害人填写个人信息,实施诈骗
- 点赞诈骗:犯罪分子冒充商家发布“点赞有奖”信息,要求参与者将姓名、电话等个人资料发至社交平台上,套取足够的个人信息后,以获奖需缴纳保证金等形式实施诈骗
- 二维码诈骗:以降价、奖励为诱饵,要求受害人扫描二维码加入会员,实则附带木马病毒。一旦扫描安装,木马就会盗取受害人的银行账号、密码等个人隐私信息。【千万不要安装来路不明的软件到手机上】
- 冒充房东短信诈骗:犯罪分子冒充房东群发短信,称房东银行卡已换,要求将租金打入其他指定账户内。
- 公共场所山寨Wifi:在公共场合放出钓鱼免费WiFi,当事主连接上这些免费网络后,通过流量数据的传输,将手机里的照片、电话号码、各种密码盗取,对机主进行敲诈勒索
- 银行卡莫名收到一笔钱,对方说转错;其实是它用你的信息借了网贷;当你把多出来的钱转回对方时,你却欠下了贷款
- 不要妄想不通过劳动赚钱
- 电话诈骗行业。他们会给你打很多骚扰电话,收集你的语音信息,然后合成AI语音打给你家里人,说你出事啦。
- 假冒好友,让你帮忙解封,需要输入你的个人信息
好用软件记录
windows
- 语音输入CapsWriter
- autohotkey :按键组合作为触发条件,可以打开特定的py、exe,配合罗技鼠标的自定义按键功能,可以实现鼠标一键执行python
- 屏幕检查程序:我自己写的,不定时屏幕截图,通过企业微信上传,每天能具体回顾起今天干了哪些,分心了多少次。好处是 通过这个程序给自己划条线,避免时间浪费
- 定时护眼程序:每隔一段时间,强制锁定屏幕x分钟 下载地址
Android
- tasker
- 快贴,剪贴板同步
- 钱迹
- 时间记录软件
刷单骗局记录
1、广撒网
通过qq邮箱 ,发布联系的qq号
2、建群,第一次丢鱼饵
- 进群即人人发红包 5元
- 抖音点赞任务,每次点赞截图发3元,一共两次
- 转移鱼儿到骗子专门开发的聊天app
3、第二次丢鱼饵
每隔10分钟,进行一次淘宝单(订阅特定的淘宝店)一次2元
- 信任培养
- 让你习惯于不劳而获,轻松赚钱
每隔一小时,进行一次主播单(给抖音主播刷礼物,其实是假的)
- 一开始可能是真的
- (如果你上来就转账3000,人家可能立即就收网了,不要有侥幸心理)并且人家还会说,再转xx元,就能给你一起返钱,表面上陷入进退两难,其实你已经是死鱼了
- 不断勾起贪念,单子越来越大
- 想要提现,就要继续转账做单,【但继续做单,也不可能提现了,变成死鱼】(沉没成本)
鱼儿阶层划分
4、进行主播单
服从性培养,or 思考剥夺
- 不断催你,搞快点,订单在2分钟内就要关闭了
- 每天两单主播单 + 24个淘宝单,第二天可以领取133元 (事实上,第一天似乎一共只有23个淘宝单)
骗局进行中,后续将持续更新
5、第二天
早上,直接给我发了133元,(我没做两单主播单,其实是拿不到的,可能是骗子为了让我以为它很糊涂,让我轻时它)此时累积 210元
主播单开始了,为了模拟贪婪心理,我开始加倍了,买了100的主播单。
此时骗子终于开始收割了
骗子的所有话,都不能相信,一旦你跟着骗子的思路来,你就完蛋了
- 于是我选择不做了,因为骗子的话根本就是假的,做了就会越陷越深,他根本就不可能让你赚钱的。记住骗子的话,要反着读
- 但是这时候骗子已经把我禁言了,我没有办法去群里提醒别人了。只要你一做主播单,他就会把你禁言。为的就是彻底控制你,避免你醒悟之后去通知其他人。
- 骗子的话术,“第二个任务没做完,所以不能提现”,其实就是要骗你更多的钱,你转账了也绝对不可能提现。
- 一旦不能提现,就表示收割开始了,骗子已经把你当成死鱼来宰了,这时候无论你继续转账多少,都不可能提现,你只能及时止损,否则必定亏得更多。
5、总结
- 第一天,做了一次主播单,50返65,总共得到80元
- 第二天,收到133,买100元单子,全部亏损
- 总计 +110,结束
- 最后我在国家反诈中心app上,举报了骗子app,骗子的银行卡账户太多了,举报不过来,只要你转账,骗子的洗钱机器就开始了
为什么我要进行实时记录
- 没经历过骗局,想体验一下,打个预防针
- 记录骗局,避免更多人受骗
提醒
- qq兼职群,几乎全是刷单骗局。我已经专门加过很多,qq群是两天建一个,表面是2000人群,其实里面都是托和机器人
- 不要用支付宝扫任何二维码
- 不要抱着上来吃个甜头就走的想法,这是国家反诈中心上的例子,刷单8000一口没
- 豆瓣上还有很多不同类型的骗局,内心单纯的朋友可以多看看
- 总结还是老话,天上不可能掉馅饼,除非你已经做好了把钱丢海里的打算,否则一律不要转账。
骗局核心模型
代付
- 它会给你看视频,说你支付完后,会有短信验证,由他们代付。其实直接就已经转入对方账号了
- 然后说,是因为系统问题 or 其他,你需要继续转账,才能把之前的钱退给你
刷单 打赏 返佣金-养鱼
- 先用小任务,例如 淘宝订阅、抖音点赞,一次2元,来吸引你,让你放下戒心,让你主动看群里的骗子消息
- 然后开始 返佣金,第一单如果你是小单,可能会返给你;如果你是大单,会直接吃掉。最后还是会说,必须要连做两单、三单,才能一起提现,这时候骗局就真正开始了。你已经不可能提现了。
相似的骗局
毕设进展
2021年12月16日
- 论文已写37页,目标55页
- 实验做完了1/3左右
- 看软件分流代码
下一步:
- 看一下之前代码怎么写的,把逻辑图画出来
- 把软件分流的对比实验完成
- 看制定全局对比实验方案
我的云服务器用途
- 博客
- api,连通手机tasker app,存储时间数据
- 定时运行python,b站抽奖
- qq机器人,go-cqhttp,qq发消息api
- pc 文字通过qq传输到手机
- 每日搞笑视频推送服务
- 网盘,分享文件,代替百度云
- 挂京东签到脚本
- 写项目练手
每日搞笑视频推送
看到新闻:腾讯 90 后程序员毛星云跳楼身亡,系游戏开发大神:梦想做出中国 3A
我在考虑做一个公益 api ,每次随机返回一个 b 站搞笑短视频,帮助改善心情。不知道有没有这样的轮子。搜索了一下,似乎没有现成的。
视频链接来源:
- 去 GitHub 上找到了一个爬虫。但我觉得这样没有灵魂
- 用户分享链接 + 类型 tag
- 我自己积攒
目前我可以实现的推送形式,自定义 每天几点
- 推送到邮箱
目前人数不多,我就在手机上用tasker 调用qq推送。
希望我能长期坚持这个事情,至少对我自己,是有帮助的
想要这个推送的朋友,请加qq 1390614734
我的tasker 使用记录
tasker是什么
安卓自动化软件,公开的配置分享站
我的tasker经历
- 起初是从 nfc打卡,开始使用这款软件的
- 后面专门找到很多教程,收集了很多有用的功能配置
实用的tasker触发条件
- 定时执行,根据手机通知,nfc
- logcat:可以实现根据不同指纹触发;可以获取系统语音助手识别到的文字
实用的tasker任务
- 天气预报
- 快速打开微信扫一扫
我最喜欢的配置
- 指纹打开 微信扫一扫
- 通过小爱语音控制执行tasker任务
- 提取短信验证码,发给企业微信
- pc通过qq发送剪贴板 到手机,手机自动复制到剪贴板
- 手机 长按时 触发 :如果3s后剪贴板改变,则将复制内容发给企业微信
- 任务打卡,通过pc一键把任务发给qq,再解析,存到云服务器上