2020
文章平均质量分 52
飞凡可期
Stop dreaming,start doing
展开
-
Viterbi算法
简介和示例理解Viterbi算法是典型的动态规划算法,通过中间节点的优选来大为简化整体复杂度。关键点在于隐藏状态的判断。根据观察值,转移概率来推测真实状态(隐藏状态)。注意到中间的节点所有状态都是保留的,只在最后一个观察值来最终判断哪一条路径(那个序列)是最优的就是最终的答案。比如生病、健康状态,医生每天观察到的是正常、发烧、头晕这样症状,病人每天的健康、生病状态转移有一点概率(假设平稳不变),则由发烧-健康康复的过程中每个状态点(对应观察时刻点)就是隐藏状态。我们需要知道的是医生判断出的病人每个健康状原创 2021-03-26 14:33:53 · 638 阅读 · 0 评论 -
C++中值传递、引用reference和指针pointer的区别
1 code演示,体会下差异://============================================================================// Name : pointerVsCiteUsage.cpp// Author : perfey// Version :// Copyright : Your copyright notice// Description : compare value、pointer an原创 2021-03-03 20:47:47 · 183 阅读 · 1 评论 -
cholsky分解 正定对称矩阵的三角矩阵“开平方”结果
"""cholsky decomp :A = L * L'or A = U' * U' means conjugate transpose"""import numpy as npC = [[4, -2, 4], [-2, 5, 0], [4, 0, 6]]print('C:\n', C, 'C tranpose:\n', np.array(C).T)L = np.linalg.cholesky(C) #对额米特正定矩阵的开平方,得到一个三角阵列;print('Low mat:\n'原创 2021-01-30 19:30:35 · 486 阅读 · 0 评论 -
平衡线共模抑制原理和距离
一句话概括:双(或4)平衡线的物理式设计(共模抑制)、差分信号的数字式抑制噪声的原理都是统一的,大多数的外在干扰都对相似(相同距离、相同阻抗等)的信号产生同样的干扰影响;—— 平衡线传输靠末端的共模信号相消,差分信号靠两个信号反向相消,两者同样能实现干扰对消的目的;因为平衡线倾向于物理,差分信号倾向于数字,所以两者不是同一纬度的东西; 平衡线可以差分传输,也可以共模传输等,差分信号也不仅仅用于平衡线,也可用于非平衡线(如同轴电缆);平衡线一例:双绞线双绞线共模传输 - 更好的屏蔽双绞线Rj-45接原创 2021-01-21 17:09:50 · 1347 阅读 · 0 评论 -
Python LeetCode 10正则表达式
第一版:p的2各字符一组匹配,分析.,x状况"""10. 正则表达式匹配给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配。'.' 匹配任意单个字符'*' 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。示例 1:输入:s = "aa" p = "a"输出:false解释:"a" 无法匹配 "aa" 整个字符串。示例 2:输入:s = "aa" p = "a*"输出:true解释:因为原创 2021-01-14 10:05:01 · 139 阅读 · 0 评论 -
Python高级操作第一弹:heapq的妙用
1 基础操作"""1)基础:入堆、出堆、替换操作;heapq.heappush(heapq, item)/heapq.heappop(heapq, item)/ .heappushpop(压入一个,弹出一个)/.heapreplace(先弹出堆顶,再压入元素,和heappushpop顺序相反) 初始化:创建堆用[]的列表,或者heapify()来将填充的列表转化为堆 操作:.merge(迭代对象,key,reverse)合并多个输入,.nlarget(n,迭代,key=non原创 2021-01-11 21:51:04 · 453 阅读 · 0 评论 -
Leetcode的第2题,持续改进算法到cleancode
这是非常典型的,同样是编代码完成一样的功能,基础也够,但是写出来的速度、容易度、可阅读性、简洁性差异极大。这得看天赋和经验,绝不是简单搬砖。这是历来强调clean code和代码质量的一个原因。方法上教训自己的就是多看、多读、编码前多构思,不要凭着冲劲儿蛮干。titile给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外原创 2021-01-11 15:03:24 · 149 阅读 · 0 评论 -
java多线程sync同步 和 安全
package MultiThread.peng;/* 拼手速抽奖案例.1.现有一个集合装了10个奖品在里面,分别是:{“电视机”,“电冰箱”,“电脑”,“游戏机”,“洗衣机”,“空调”,“手机”,“平板电脑”,“电动车”,“电饭煲”};2.假如有3个人同时去抽这10个奖品.最后打印出来.三个人各自都抽到了什么奖品.例如:张三: “电视机”,”电冰箱”,”电脑”,”游戏机”,”洗衣机”李四: ”空调”,”手机”,”平板电脑”,王五: ”电动车”,”电饭煲要求:1:3个人同原创 2021-01-08 17:17:25 · 442 阅读 · 2 评论 -
Java反射机制生成实例和普通实话化对比
package Reflect.Peng;/* 对比正常new对象和reflect创建对象,假设存在str_obj中对象运行中未知,从外部导入*/import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;class Apple{ private float price; public String type =原创 2021-01-07 11:40:37 · 138 阅读 · 0 评论 -
反射机制:ClassLoader类加载器 和 reflect中的array使用
ClassLoader加载、连接、初始化原理加载以JVM进程为基本单位1) 每个程序(public class方法都会开辟一个新的JVM进程;故不同程序的内存不会共享(哪怕是静态方法));2)加载二进制数据,来源有class文件,jar包总class文件,网络方法,java源文件动态编译 4种加载方法;note:final修饰的类变量相对于“宏变量”,java编码器编译时候已经替换完毕,不会有初始化问题(加载时候已经没这个变量了)3) boot的专业意思是开机、靴子; reboot重启;原创 2021-01-07 10:58:01 · 183 阅读 · 0 评论 -
java runable接口synchronized(this){}模块实现线程同步
/** 利用synchronize进行线程同步,访问稀缺资源,同一时刻只能一个线程访问关键资源,刷新资源状态;** task:10个人抢着通过1个山洞,每个人穿山洞耗时1s;* 1)打印出穿越山洞的人,并显示它是通过的次序,名称* */public class threadSync0105 {//通过runable接口重写来实现,synchronize(this)同步//new runable接口传递给10个新建的线程, runable overwrite public stati原创 2021-01-05 16:01:26 · 213 阅读 · 0 评论 -
java匿名线程Thread的三种方式:lambda,run重写,Runable接口和run重写
/** 匿名Thread几种方法:* 1) 重写run方法:通过new Thread(){}.start() 直接new一个实例后实现并start, 实现里面重写run方法* 2) 调用runable接口:new Thread( new Runable(){} ).start()* 3) 通过lambda传参给Thread: new Thread( () -> {}).start()** Task:* “yyyy-MM-dd HH:mm:ss”的格式打印当前系统时间,总循环10次,每1.原创 2021-01-05 15:34:01 · 2385 阅读 · 0 评论 -
python程序:学校考勤系统
main.py'''目标:做一个电子考勤系统,实现学生登录信息的增删改查、学生考勤信息的增删改查结构:-mian.py-func.py-stu_infos.csv #学生登录信息,(id,name,code) 3元组为一行记录-attendance.csv #考勤信息 (id,name,state, time) 4元组为一行记录'''from func import *def login(): info_dics = get_info('stu_infos')原创 2020-12-30 15:29:30 · 3388 阅读 · 2 评论 -
python高级特性之二:描述器初探
前置认识'''学习用python的高级特性2:描述器descriptor'''# 1 exampleclass Ten: def __get__(self, instance, owner): return 10class A: x = 5 y = Ten()print(A.x, A.y)#描述器A.y和属性差别就是 直接调用了 __get__; 相当于每次.()引用属性就调用get, call方法?# 2 listdir, 统计数目的get原创 2020-12-24 16:58:04 · 125 阅读 · 4 评论 -
装饰器使用
前置认识'''学习装饰器,python重要特性之一;用函数修改函数'''# 1 函数内定义函数:只能函数内部访问def hi(name = 'greet'): print('S1: Inside hi function!' ) def greet(): return 'now in greet function' def hello(): return 'now in hello func!' print(greet())原创 2020-12-23 21:45:02 · 136 阅读 · 0 评论 -
python3.8的好玩新特性,python logging日志记录教程
funny features'''python 3.8 引入不少好玩的新特性:比如判断条件里可以赋值的海象运算:=,限定位置/,限定关键字*f-string说明符,'''# 1 position *,/ 海象运算def fun(a, b, /, c, d): return a + bprint(fun(2, 3, c=5, d=6))for i in [6, 4]: if (x := 3) > 2: print('x = ', x)原创 2020-12-22 15:40:47 · 387 阅读 · 0 评论 -
AI那些事儿之验证集、shuffle作用
验证集干啥的?验证集合测试集哪个更重要?一句话:训练集用于“自动地”训练调整模型中网络参数(weights)、验证集用于调超参数(epochs轮数,几层比较合适,啥时候过拟合,要不要dropout,要多大程度)、测试集测试模型泛化能力;验证集和测试集都应当和训练集是同分布的数据,都不会进入网络中,直接训练网络模型(根BP或前向传播都没关系); 那么为啥有两个?为啥train-test两种模型更广为人知?实际上,验证集是AI炼丹士的自留地,每次跑完一轮,验证一下识别率,1)差异太大赶紧调过拟合 2)不收敛原创 2020-12-17 15:36:15 · 2033 阅读 · 1 评论 -
python数学画图之双曲函数系列
code:"""sinhx = (e^x - e^(-x)) /2cosh x = (e^x + e^(-x)) /2tanh x = sinh x/ cosh x = (e^x - e^(-x)) / (e^x + e^(-x))coth x = cosh x/ sinh x = (e^x + e^(-x)) / (e^x - e^(-x))sech x = 1/coshxcsc x = 1/sinhx"""import numpy as npimport matplotlib.py原创 2020-12-12 14:50:53 · 2361 阅读 · 1 评论 -
AI网络之最简编写方法:autokeras
偶然翻keras翻到的封装版autokeras,按照分类器做:1. 4行代码图像分类距离"""autokeras ,keras ecologyTarget: construct a fast & simple nn"""import autokeras as akfrom tensorflow.keras.datasets import mnistimport numpy as np(x_train, y_train), (x_test, y_test) = mnist.lo原创 2020-12-05 18:38:10 · 898 阅读 · 0 评论 -
linux小问题汇集
1 linux 报错xxDir.moduls.file找不到因为在工程子目录下运行,通过根目录export导出到python系统路径去解决:export PYTHONPATH=.2 linux报错 no mmodule named:"…/xxdir/" 根目录没法查找的临时解决方案:文件路径去掉"…"父目录,并开头统一添加sys目录,翻转到根目录上去;Import syssys.path.append(’…/’)3 超级权限SuCode4 激活tensorflowConda activ原创 2020-12-02 12:06:28 · 140 阅读 · 1 评论 -
go牛刀小试之互斥锁 vs 状态协程
互斥锁/*目的:通过大并发读写同一个map变量,来展示go的大并发能力;实现:设定go map变量,互斥锁Mutex, 改100个读协程,10个写协程; atomic纪录读写总次数;方法:sync.Mutex{}, map [int] int ; */package mainimport ( "fmt" "math/rand" "sync" "sync/atomic" "time")func main() { var state = make(map [int] in原创 2020-11-14 19:06:03 · 111 阅读 · 0 评论 -
资料整理之语言学习
Python名称网址点评廖雪峰python教程https://www.liaoxuefeng.com/wiki/1016959663602400入门之用python编程从入门到实践–基础语法和小游戏项目python3 cook-bookhttps://python3-cookbook.readthedocs.io/zh_CN/latest/c12/p04_locking_critical_sections.html详细、python相关的功能;吾进阶所用原创 2020-11-14 14:42:56 · 119 阅读 · 0 评论 -
go牛刀小试之原子计数: 大并发的奇怪问题,最终读取的数早一点读和晚一点可能不一样
说明大量并发的操作有可能超出计算机的读写能力;所以最终完成后的,读取的操作未必是最终状态(最后一波数可能在CPU缓存里,没有刷到内存中)code/*目标:大量并发发生,如何安全修改状态;以原子计数器(原子钟?)为例;方法:var ato uint64; 大并发中,使用atomic.add修改,安全改变状态;回顾:sync.WaitGroup使用; 1 定义var wg wg; 2 wg.add() 3 routine:wg.done() 4 main: wg.wait() */packag原创 2020-11-10 18:01:49 · 236 阅读 · 0 评论 -
go牛刀小试之waitGroup等待协程完成(多组同步),速率控制
WaitGroup 完成所有协程/*目标:利用sync包中的waitGroup对象来 等待各个协程gorutine完成;方法:1) 定义变量sync.WatiGroup 2)传递给go routine,并每传递一次,waitgroup++, 3)go rutine内部设置延迟万层 defer wg.Done()函数4)主线程中wg.Wait()总结:设立外套Group 》给go routine刷计数器 》 内部设置延迟完成,返回才减数 》等待线程等;典型的set-wait模式在一个组应用(关键原创 2020-11-10 17:14:12 · 323 阅读 · 0 评论 -
python小试牛刀: K-best算法
"""k-best解决的问题:n个珠宝价值vi和重量wi;求保留k个珠宝的单位价值最大化n,vi,wi 值域。。。"""def k_best(v_ls,w_ls,k): l,r = 0.0, 1e5 #maximun 10,0000 while abs(r-l) > 1e-6: mid = (l + r)/2.0 vw_ls = [v - mid * w for v,w in zip(v_ls, w_ls)] choose原创 2020-11-04 11:30:32 · 3319 阅读 · 0 评论 -
python小试牛刀:抢手机/抢票神器
codeimport timefrom splinter.browser import Browser#url = "https://item.jd.com/100013976326.html"def login(b): #登录京东 b.click_link_by_text("你好,请登录") time.sleep(3) b.click_link_by_text("账户登录") b.fill("loginname","xxx") #填写账户密码 b.fill原创 2020-11-01 20:46:32 · 1352 阅读 · 2 评论 -
k-means聚类算法: python实现
codeimport numpy as npimport matplotlib.pyplot as pltimport randomdef kMeans(daSet, K): centerPoint = random.sample(daSet, K) center_dis = 9999 iterNum = 0 while np.mean(center_dis) > 1e-6: ind = assignment(daSet, centerP原创 2020-10-31 10:58:44 · 271 阅读 · 0 评论 -
matplotliba画有意思的3D图,主3D加xyz轴方向投影
from mpl_toolkits.mplot3d import axes3dimport matplotlib.pyplot as pltfrom matplotlib import cmimport numpy as npdef draw3Dcontour(func, s= "x^2 + y^3"): x = np.arange(-2*np.pi, 2*np.pi, 0.5) y = np.arange(-2*np.pi, 2*np.pi, 0.5) X, Y = n原创 2020-10-27 19:56:16 · 1237 阅读 · 0 评论 -
python小试牛刀:多线程通过condition来同步
背景并发线程是为了效率,多个无关联子任务并发执行,加速明显。但是很多任务的开启是有逻辑依赖关系。比如A线程搬移完数据,BCD线程才能进一步处理数据。codefrom threading import Threadimport threadingimport time#创建一个period线程,周期性启动threading.condition() .wati()设置来设置一波时序;# 通过时序控制两个线程数数;class periodTick: def __init__(self,i原创 2020-10-26 20:28:28 · 159 阅读 · 0 评论 -
python, scipy.optimize.minimize进行等式不等式约束优化 非常强大
codeimport numpy as npfrom scipy.optimize import minimize# optimize 1# f(x) = 2xy + 2x - x^2 - 2y^2; x^3 - y = 0; y - 1 >=0def func(x, sign=1.0): return sign * (2*x[0]*x[1] + 2*x[0] -x[0]**2 -2*x[1]**2)def func_deriv (x, sign=1.0): dfdx0原创 2020-10-25 20:59:08 · 5153 阅读 · 2 评论 -
Git error: head is detached at e34520(hash value),git push失败一直有unstage东西的处理
问题git add,commit都很顺利,但是远程仓提交git push,因为一个文件超出10M被reject;撤销git reset --soft HEAD^等等措施都没法搞定;再次push,还会出现那个10M的文件;方法https://www.git-tower.com/learn/git/faq/detached-head-when-checkout-commit/上面一个链接里面最终找到了解决方法原因是push的东西,那个文件所在的stage需要存放;新建一个branch,存下来,然后原创 2020-10-24 17:50:54 · 262 阅读 · 0 评论 -
go牛刀小试:go的打点器ticker,可停止
codepackage main// ticker 打点器,import ( "fmt" "time")func main() { ticker := time.NewTicker(400 * time.Millisecond)//microSecond //打点间隔500ms done := make(chan bool) //双通道 选择 打点,或者完成结束; go func() { for { select { case tick := <- tick原创 2020-10-20 08:18:33 · 361 阅读 · 0 评论 -
c小荷尖尖:打表方法解决字符串的组合的统计问题
问题一个不超过10万的长字符串,统计某些组合的总可行数。此处以PAT组合为例,若输入PAATT,输出4个;为了防止数目过大,最终只输出总数模1000000007code#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int MAXN = 100010;const int MOD = 1000000007; //10; //char str原创 2020-10-11 12:35:04 · 153 阅读 · 0 评论 -
go小试牛刀-select通道选择和超时处理
通道选择//go小试牛刀-s通道选择package mainimport ( "fmt" "time")func main () { msgch1 := make(chan string) msgch2 := make(chan string) go func(){ time.Sleep(time.Second * 1) msgch1 <- "1 goroutine" fmt.Println("first msg tx ed") }() go func() {原创 2020-10-11 12:25:00 · 160 阅读 · 0 评论 -
keras练手的好东西 https://github.com/keras-team/keras/tree/master/examples 收藏AI东西
linkhttps://github.com/keras-team/keras/tree/master/examples修改报错的话,试试所有的import keras.xxx 改为 import tensorflow.kersas xxximport keras 改为 import tensorflow.keras as keras原创 2020-10-10 14:08:18 · 275 阅读 · 0 评论 -
AttributeError: module...ops‘ has no attribute ‘_TensorLike‘, ValueError: `updates` argument..eager
目的keras和tensorflow结合使用很方便,然而坑点好多,好坑爹;*问题是:AttributeError: module ‘tensorflow.python.framework.ops’ has no attribute ‘_TensorLike’原因在于keras导入的和tensorflow.keras导入的主次不同,结构有差异;修改*修改前from keras.models import Sequentialfrom keras.layers import Dense, Dro原创 2020-10-10 12:05:09 · 2510 阅读 · 7 评论 -
go channel 协程同步小例子
目的程序完成有步骤依赖,时序关系,存储关系的需要阻塞-同步等待方法1 正常同步package main//练习协程goroutine之间的协同(同步),同步一定是降低效率的,//异步和并发才可以提升性能;但是流程上,许多依赖的接口和顺序执行,//储存的依赖关系,必须要同步和等待机制;import ( "fmt" "time")func routineWork(chFlag chan bool) { fmt.Println("Start working...") time.Sl原创 2020-10-07 10:56:00 · 297 阅读 · 0 评论 -
二元搜索解优化问题
#include <stdio.h>//binSearch计算x^2=2的近似解,精度1e-5; 证明二元搜索的快速低复杂度寻优能力float func(float x) { return x * x - 2;}float binSearch(float beg, float end, float acc) { float mid; while ( end - beg > acc) { mid = (end + beg) / 2;原创 2020-10-05 12:31:01 · 295 阅读 · 0 评论 -
很奇怪,快速幂两种方法,计算结果居然有时候不一样
code#include <stdio.h>//快速幂方法,用于递归/迭代那些快速计算方法;类似 a^b %m这种问题快速解决 复杂度 log(b)long long fastMi(long long a, long long b, long long m) { if (b <= 0) { return a % m; } if (b & 1 == 1) { return a * fastMi(a, b-1, m) % m原创 2020-10-02 22:41:27 · 140 阅读 · 0 评论 -
python小工具:自动解压缩包, cannot find tool 问题
目的解开当前文件夹下的每一个.rar压缩包,各放入同文件名的文件夹下。方法工具python rarfile:主要语法为 rarFile.RARFile(FileName.rar).extractall(path)codeimport rarfileimport osdef unRar(rarFileName): rar = rarfile.RarFile(rarFileName + ".rar") if rarFileName not in os.listdir原创 2020-09-30 10:59:38 · 750 阅读 · 0 评论