分类 默认分类 下的文章

首先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、至少要有两种测试出来的结果是一致的,才算是比较可靠的

判断是否存在
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

在本地windows,下载运行 go-cqhttp,
对config.yml文件
修改qq配置,qq号,无密码
参照cq服务,修改每个机器人对应的端口
把device.json config.yml 和 session 文件,放入云服务器

哪些情况需要回滚

操作多张表格
涉及到第三方的api

要让不可回滚的操作,放到最后。比如 支付宝支付,要放到最后,先操作数据库,在调用支付。

冒泡排序
冒泡排序的原理很简单,就是每次都把当前无序序列中最大(或者最小)的元素移动到序列的开头(或者结尾),之后再对除该元素之外的剩余序列做同样的操作。当所有的元素都冒泡完毕之后,整个序列就会变得有序。冒泡排序的过程正如它的名字一般,每次都把序列中最大的元素移动到末尾(假设我们选择了这种规则),这种操作就好像水中的泡泡不断地从水中浮到水面一般。

冒泡排序的实现如下,简单观察就可以知道它的时间复杂度为 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

2022年1月29日,被第一天聊天的女生表白

年初二去姑姑家拜年,姑姑给了我压岁钱,有点破防

跟姑姑提出了,去深圳打工的想法。因为想要改变状态

感觉2021过得真是失败,希望2022能好一点吧

游戏化微习惯打卡群,运营有点不正常,不知道为什么打卡的人越来越少了?难道是引入了几个高积分用户,导致会普通用户造成压力?

我确实遇到了,很大的问题。希望我能走出来吧

节省时间应该也算一种抠门吧,毕竟钱没了还能挣,时间过去了就过去了

于是,我写了一个程序,每日搞笑视频推送,每天用几分钟收获快乐。

由于qq播放只能小屏幕+低画质,通过降低体验来抑制多巴胺。

把b站、抖音卸载掉,逃离算法推荐,每次看完一个视频,忍不住刷新,不知不觉时间就过去了,反而感到空虚

目标,每天只看一个搞笑视频 和 一个新奇视频。

正在实践中,过段时间来更新,看效果如何

睡眠是你的钞能力

睡眠极其重要,睡好了效率才有保证

睡眠直接影响激素水平,容易衰老,记忆力下降, 无法真正记住知识,心脏病概率增加,免疫力极度下降,癌症概率增加,寿命缩短

好的睡眠可以:
增加创造力
提高注意力和专注力
降低发生事故的风险
降低患抑郁症的风险

规律睡眠,每天10点准时睡觉

  • 一定不要随意登录别人的iCloud账号,因为你一旦登录了,你的设备在账号主人那就会出现。当时我的手机一定被对方点了丢失,所以被锁起来。勒索
  • 刷单返现
  • 代付
  • 通过国家反诈中心,接到警报,打电话过去发现占线,于是通过支付宝转账备注信息来通知当事人
  • 假冒警察
  • 陌生人问路,借钱,一律不借
  • 冒充亲友诈骗:利用木马程序盗取对方网络通讯工具密码,截取对方聊天视频资料后,冒充该通讯账号主人对其亲友以“患重病、出车祸”等紧急事情为名实施诈骗
  • 冒充公司老总诈骗:犯罪分子通过打入企业内部通信群,了解老总及员工之间信息交流情况,通过一系列伪装,再冒充公司老总向员工发送转账汇款指令
  • 伪造身份诈骗:犯罪分子伪装成“高富帅”或“白富美”,加为好友骗取感情和信任后,随即以资金紧张、家人有难等各种理由骗取钱财
  • 医保、社保诈骗:犯罪分子冒充医保社保工作人员,谎称受害人账户出现异常,之后冒充司法机关工作人员以公正调查、便于核查为由,诱骗受害人向所谓的安全账户汇款实施诈骗
  • 网络购物诈骗:犯罪分子通过开设虚假购物网站或网店,在事主下单后,便称系统故障需重新激活。后通过QQ发送虚假激活网址,让受害人填写个人信息,实施诈骗
  • 点赞诈骗:犯罪分子冒充商家发布“点赞有奖”信息,要求参与者将姓名、电话等个人资料发至社交平台上,套取足够的个人信息后,以获奖需缴纳保证金等形式实施诈骗
  • 二维码诈骗:以降价、奖励为诱饵,要求受害人扫描二维码加入会员,实则附带木马病毒。一旦扫描安装,木马就会盗取受害人的银行账号、密码等个人隐私信息。【千万不要安装来路不明的软件到手机上】
  • 冒充房东短信诈骗:犯罪分子冒充房东群发短信,称房东银行卡已换,要求将租金打入其他指定账户内。
  • 公共场所山寨Wifi:在公共场合放出钓鱼免费WiFi,当事主连接上这些免费网络后,通过流量数据的传输,将手机里的照片、电话号码、各种密码盗取,对机主进行敲诈勒索
  • 银行卡莫名收到一笔钱,对方说转错;其实是它用你的信息借了网贷;当你把多出来的钱转回对方时,你却欠下了贷款
  • 不要妄想不通过劳动赚钱
  • 电话诈骗行业。他们会给你打很多骚扰电话,收集你的语音信息,然后合成AI语音打给你家里人,说你出事啦。
  • 假冒好友,让你帮忙解封,需要输入你的个人信息

windows

  1. 语音输入CapsWriter
  2. autohotkey :按键组合作为触发条件,可以打开特定的py、exe,配合罗技鼠标的自定义按键功能,可以实现鼠标一键执行python
  3. 屏幕检查程序:我自己写的,不定时屏幕截图,通过企业微信上传,每天能具体回顾起今天干了哪些,分心了多少次。好处是 通过这个程序给自己划条线,避免时间浪费
  4. 定时护眼程序:每隔一段时间,强制锁定屏幕x分钟 下载地址

Android

  1. tasker
  2. 快贴,剪贴板同步
  3. 钱迹
  4. 时间记录软件

1、广撒网

通过qq邮箱 ,发布联系的qq号

2、建群,第一次丢鱼饵
  1. 进群即人人发红包 5元
  2. 抖音点赞任务,每次点赞截图发3元,一共两次
  3. 转移鱼儿到骗子专门开发的聊天app
3、第二次丢鱼饵
  1. 每隔10分钟,进行一次淘宝单(订阅特定的淘宝店)一次2元

    1. 信任培养
    2. 让你习惯于不劳而获,轻松赚钱
  2. 每隔一小时,进行一次主播单(给抖音主播刷礼物,其实是假的)

    1. 一开始可能是真的
    2. (如果你上来就转账3000,人家可能立即就收网了,不要有侥幸心理)并且人家还会说,再转xx元,就能给你一起返钱,表面上陷入进退两难,其实你已经是死鱼了
    3. 不断勾起贪念,单子越来越大
    4. 想要提现,就要继续转账做单,【但继续做单,也不可能提现了,变成死鱼】(沉没成本)
  3. 鱼儿阶层划分

    1. image-20211217204959671
4、进行主播单

服从性培养,or 思考剥夺

  1. 不断催你,搞快点,订单在2分钟内就要关闭了
  2. 每天两单主播单 + 24个淘宝单,第二天可以领取133元 (事实上,第一天似乎一共只有23个淘宝单)

骗局进行中,后续将持续更新

5、第二天

早上,直接给我发了133元,(我没做两单主播单,其实是拿不到的,可能是骗子为了让我以为它很糊涂,让我轻时它)此时累积 210元

主播单开始了,为了模拟贪婪心理,我开始加倍了,买了100的主播单。

此时骗子终于开始收割了

f70b2b090a5d48d66d9fbafe1470c2b

骗子的所有话,都不能相信,一旦你跟着骗子的思路来,你就完蛋了

  • 于是我选择不做了,因为骗子的话根本就是假的,做了就会越陷越深,他根本就不可能让你赚钱的。记住骗子的话,要反着读
  • 但是这时候骗子已经把我禁言了,我没有办法去群里提醒别人了。只要你一做主播单,他就会把你禁言。为的就是彻底控制你,避免你醒悟之后去通知其他人。
  • 骗子的话术,“第二个任务没做完,所以不能提现”,其实就是要骗你更多的钱,你转账了也绝对不可能提现。
  • 一旦不能提现,就表示收割开始了,骗子已经把你当成死鱼来宰了,这时候无论你继续转账多少,都不可能提现,你只能及时止损,否则必定亏得更多。
5、总结
  1. 第一天,做了一次主播单,50返65,总共得到80元
  2. 第二天,收到133,买100元单子,全部亏损
  3. 总计 +110,结束
  4. 最后我在国家反诈中心app上,举报了骗子app,骗子的银行卡账户太多了,举报不过来,只要你转账,骗子的洗钱机器就开始了
为什么我要进行实时记录
  1. 没经历过骗局,想体验一下,打个预防针
  2. 记录骗局,避免更多人受骗
提醒
  • qq兼职群,几乎全是刷单骗局。我已经专门加过很多,qq群是两天建一个,表面是2000人群,其实里面都是托和机器人
  • 不要用支付宝扫任何二维码
  • 不要抱着上来吃个甜头就走的想法,这是国家反诈中心上的例子,刷单8000一口没
  • 豆瓣上还有很多不同类型的骗局,内心单纯的朋友可以多看看
  • 总结还是老话,天上不可能掉馅饼,除非你已经做好了把钱丢海里的打算,否则一律不要转账。
骗局核心模型
  • 代付

    • 它会给你看视频,说你支付完后,会有短信验证,由他们代付。其实直接就已经转入对方账号了
    • 然后说,是因为系统问题 or 其他,你需要继续转账,才能把之前的钱退给你
  • 刷单 打赏 返佣金-养鱼

    • 先用小任务,例如 淘宝订阅、抖音点赞,一次2元,来吸引你,让你放下戒心,让你主动看群里的骗子消息
    • 然后开始 返佣金,第一单如果你是小单,可能会返给你;如果你是大单,会直接吃掉。最后还是会说,必须要连做两单、三单,才能一起提现,这时候骗局就真正开始了。你已经不可能提现了。
相似的骗局

2021年12月16日

  • 论文已写37页,目标55页
  • 实验做完了1/3左右
  • 看软件分流代码

下一步:

  1. 看一下之前代码怎么写的,把逻辑图画出来
  2. 把软件分流的对比实验完成
  3. 看制定全局对比实验方案

  1. 博客
  2. api,连通手机tasker app,存储时间数据
  3. 定时运行python,b站抽奖
  4. qq机器人,go-cqhttp,qq发消息api
  5. pc 文字通过qq传输到手机
  6. 每日搞笑视频推送服务
  7. 网盘,分享文件,代替百度云
  8. 挂京东签到脚本
  9. 写项目练手

看到新闻:腾讯 90 后程序员毛星云跳楼身亡,系游戏开发大神:梦想做出中国 3A

我在考虑做一个公益 api ,每次随机返回一个 b 站搞笑短视频,帮助改善心情。不知道有没有这样的轮子。搜索了一下,似乎没有现成的。

视频链接来源:

  1. 去 GitHub 上找到了一个爬虫。但我觉得这样没有灵魂
  2. 用户分享链接 + 类型 tag
  3. 我自己积攒

目前我可以实现的推送形式,自定义 每天几点

  1. 推送到邮箱
  2. qq

目前人数不多,我就在手机上用tasker 调用qq推送。

希望我能长期坚持这个事情,至少对我自己,是有帮助的

想要这个推送的朋友,请加qq 1390614734

tasker是什么

安卓自动化软件,公开的配置分享站

我的tasker经历

  1. 起初是从 nfc打卡,开始使用这款软件的
  2. 后面专门找到很多教程,收集了很多有用的功能配置

实用的tasker触发条件

  1. 定时执行,根据手机通知,nfc
  2. logcat:可以实现根据不同指纹触发;可以获取系统语音助手识别到的文字

实用的tasker任务

  1. 天气预报
  2. 快速打开微信扫一扫

我最喜欢的配置

  1. 指纹打开 微信扫一扫
  2. 通过小爱语音控制执行tasker任务
  3. 提取短信验证码,发给企业微信
  4. pc通过qq发送剪贴板 到手机,手机自动复制到剪贴板
  5. 手机 长按时 触发 :如果3s后剪贴板改变,则将复制内容发给企业微信
  6. 任务打卡,通过pc一键把任务发给qq,再解析,存到云服务器上