- 博客(171)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 【算法】KMP-快速文本匹配
字符串s的next数组为int数组,长度等于s的长度。next[i]表示在s中下标i之前子串的前缀和后缀的最大匹配长度(不包含整体)以字符串"aabaabs"为例。
2024-03-28 01:12:06 361
原创 【算法】pdqsort
pdqsort(Pattern-defeating quicksort)是一种融合插入排序堆排序和优化后的快排的新型排序算法,rust和go1.19中采用;
2023-03-29 01:18:34 492 1
原创 【Go】条件编译
多标签:一个源码文件可以包含多个构建标签。是 Go 1.17 中引入的新条件编译指令格式。为何要采用新的格式呢?可以添加编译标签,以满足不同场景不同编译的需求。设置tags,避免编译器报错。
2022-11-20 16:40:59 313
原创 【Linux】终端用户名颜色高亮
终端用户名高亮修改.bashrc文件;在最后加上//设置u为颜色为紫色,@为紫色,h为紫色,“:”为红色,w为蓝色,“$”为绿色,后面打出来的字为白色PS1='${debian_chroot:+($debian_chroot)}\[\033[01;35;1m\]\u\[\033[00;35;1m\]@\[\033[01;35;1m\]\h\[\033[00;31;1m\]:\[\033[00;34;1m\]\w \[\033[01;32;1m\]\$ \[\033[0;37;1m\]'手动加载.b
2022-05-28 23:52:09 966 1
原创 【网络】fiddler
1. 跳过证书检查2. websocket数据解压在图中位置添加代码if (oSession.RequestHeaders.ExistsAndContains ("Sec-WebSocket-Extensions", "permessage-deflate")) { oSession.RequestHeaders.Remove ( "Sec-WebSocket-Extensions"); }.........
2022-05-28 23:51:11 133
原创 【Go】自定义json序列化
一、忽略字段我们知道,通过tag,可以有条件地实现定制Go JSON序列化的方式,比如json:"abc,omitempty", 当字段的值为空的时候,我们可以在序列化后的数据中不包含这个值,而json:"-"可以直接不被JSON序列化,如果想被序列化key-,可以设置tag为json:"-,",加个逗号二、改变一个字段显示有下面这个结构体type MyUser struct { ID int64 `json:"id"` Name string `json:"n
2022-05-28 23:24:14 2033
原创 【圆锥曲线】双曲线
定义与方程1. 定义到两定点F1(−c,0),F2(c,0)(c>0)距离之差的绝对值等于定值2a的点的轨迹即为双曲线到两定点F_1(-c, 0), F_2(c, 0)(c>0)距离之差的绝对值等于定值2a的点的轨迹即为双曲线到两定点F1(−c,0),F2(c,0)(c>0)距离之差的绝对值等于定值2a的点的轨迹即为双曲线2. 标准方程x2a2−y2b2=1\frac{x^2}{a^2}-\frac{y^2}{b^2}=1a2x2−b2y2=1性质和结论1. 离
2022-05-23 00:56:49 327
原创 【Go】sql拼接库
sql拼接库在一些web项目开发中,涉及到数据库操作,使用原生的sql或者接近原生的sqlx,会有大量的sql语句,又丑又难维护。而类似于gorm这样的ORM框架又太笨重了。下面介绍的这个库就介于原生和ORM框架,用这个库可以对sql语句和参数进行动态拼接https://github.com/elgris/sqrl // 线程不安全这个库是从另外一个库fork的https://github.com/Masterminds/squirrel // 线程安全两者的区别是,前者是线程不安全,后者是
2022-04-19 02:10:12 1997
原创 【Go】sqlx操作
sqlx使用指南安装sqlxgo get -u github.com/jmoiron/sqlx基本使用连接数据库var db *sqlx.DBfunc initDB() (err error) { dsn := "user:password@tcp(127.0.0.1:3306)/sql_test?charset=utf8mb4&parseTime=True" // 也可以使用MustConnect连接不成功就panic db, err = sqlx.Connect("mysq
2022-04-19 02:09:14 1105
原创 【圆锥曲线】抛物线
一、定义与方程定义:到定点F(p2,0)和直线x=−p2距离相等的运动轨迹,F点被称为焦点,直线被称为准线定义:到定点F(\frac{p}{2},0)和直线x=-\frac{p}{2}距离相等的运动轨迹,F点被称为焦点,直线被称为准线定义:到定点F(2p,0)和直线x=−2p距离相等的运动轨迹,F点被称为焦点,直线被称为准线方程:y2=2px方程:y^2=2px方程:y2=2px二、切线方程已知抛物线方程:y2=2px以及曲线上一点P(x0,y0),求过P点的切线方程已知抛物线方程:y^2=2
2022-03-11 23:33:51 1387
原创 【圆锥曲线】椭圆
一、椭圆定义与标准方程1. 椭圆定义椭圆定义:到两顶点距离之和为定值的曲线椭圆定义:到两顶点距离之和为定值的曲线椭圆定义:到两顶点距离之和为定值的曲线2. 标准方程标准方程:x2a2+y2b2=1标准方程:\frac{x^2}{a^2}+\frac{y^2}{b^2}=1标准方程:a2x2+b2y2=13. 证明等价为了方便计算,从定义到标准方程,即证明:到两点F1(−c,0),F2(c,0)距离之和为定值2a的运动轨迹满足方程:x2a2+y2b2=1(b2=a2−c2)证明:
2022-03-11 23:32:57 1405
原创 【圆锥曲线】圆
一、切线方程问题如图:点M(x0,y0)在圆x2+y2=r2求:过M点的切线l如图:点M(x_0,y_0)在圆x^2+y^2=r^2\\求:过M点的切线l如图:点M(x0,y0)在圆x2+y2=r2求:过M点的切线l解法一因为OM⊥l,所以kOMkl=−1kOM=y0x0,可求出kl=−x0y0因此切线方程为y−y0=−x0y0(x−x0)化简可得y0y−y02=−x0x+x02y0y+x0x=x02+y02=r2因为OM\perp{l},所以k_{OM}k_l=-1\\k_{OM}=\fra
2022-03-11 23:20:39 263
原创 【Vim】学习笔记(二)光标移动
文章目录一、方向移动二、单词跳跃三、行间跳转四、find跳转一、方向移动二、单词跳跃只需要记住b、e就足够了,w和ge都可以用b、e组合得到,w=bb/b、ge = bbe/be三、行间跳转一般不用0,而是使用^四、find跳转f只能在当行t和T一般很少用到,可以仅使用f、;、,和少量的F...
2021-10-04 19:05:05 188
原创 【Vim】学习笔记(一)模式切换
文章目录一、插入模式1. 普通模式==>插入模式2. 插入模式==>普通模式二、可视模式1. 普通模式==>可视模式2. 可视模式==>普通模式三、命令模式在Vim中,普通模式相当与桥梁,所有模式都是可以和普通模式互相切换,下面介绍各种模式与普通模式的转换一、插入模式1. 普通模式==>插入模式2. 插入模式==>普通模式esc/ctrl+[二、可视模式1. 普通模式==>可视模式2. 可视模式==>普通模式三、命令模式...
2021-10-04 18:31:48 280
原创 【Cmder】设置默认打开目录
文章目录打开设置win + alt + p选择Startup-Task,修改{cmd::Cmder}项把*cmd /k "%ConEmuDir%\..\init.bat" -new_console:d:%USERPROFILE%修改为cmd /k "%ConEmuDir%\..\init.bat" -new_console:d:D:\
2021-09-30 00:39:29 601
原创 【Linux】学习笔记
文章目录--help软链接pwd -P修改文件权限查看磁盘使用查看当前目录占用空间查看系统状态–help–help可以查看命令帮助man + 命令和info + 命令也可以软链接当前路径创建test 引向/var/www/test 文件夹ln –s /var/www/test test删除软链接和删除普通文件是一样的,rm test // 不要 rm -rf test/千万不要在test后面加/pwd -P如果使用软链接,pwd默认是"-L"会显示软链接的路径,要真实路径就使用
2021-09-30 00:03:41 85
原创 【window】显示最近应用
文章目录问题解决问题当win+r打开运行时,期望是可是显示上次运行的应用,但是,现在却没有解决将 设置>个性化>开始 里面的显示最常用的应用打开就可以但是这里的按钮是灰的将 设置>隐私 里面的允许windows跟踪。。开启即可...
2021-09-29 22:19:26 173
原创 【Java】协变与逆变
文章目录一、定义二、数组协变,泛型不变1. 数组的协变性2. 泛型的不变性3. 泛型有界的副作用\<? extends T>\<? super T>总结3. PECS原则一、定义若类A是类B的子类,则记作A ≦ B。设有变换f(),若:当A ≦ B时,有f(A)≦ f(B),则称变换f()具有协变性。当A ≦ B时,有f(B)≦ f(A),则称变换f()具有逆变性。当A ≦ B时,f(A)与f(B)无关,则称变换f()具有不变性。二、数组协变,泛型不变1. 数组的协
2021-09-23 00:33:00 702
原创 【Go】内存同步
文章目录一、现象二、说明三、解决四、扩展as-if-serial 语义happens-before 语义一、现象思考如下代码片段的输出 var x, y int go func() { x = 1 // A1 fmt.Print("y:", y, " ") // A2 }() go func() { y = 1 // B1 fmt.Print("x:", x, " ") // B2 }()因为两个协程
2021-09-14 01:41:20 494 2
原创 【Go】数据竞争探究
文章目录一、引入二、解释(未完成)一、引入观察如下程序var val = 0func main() { go add() go add() time.Sleep(1 * time.Second) fmt.Println(val)}func add() { for i := 0; i < 100; i++ { val++ }}在Java中,如果两个线程同一个变量加100次,那么结果是未知的,但是绝大数情况下val的值是小于200的。但是运行结果却是200(我试了好
2021-09-12 01:29:48 125
原创 【Go】字符串趣题
文章目录问题思路代码问题给定一个字符串s和一个下标i,返回下标i对应的那个字节所在的字符。字符串在Go中的底层是byte数组,Ascii范围内的字符使用一个字节表示,但是超过Ascii表示范围时字节数就不一定了,比如中文就是使用三个字节。但是,可以确定的是Go是采用UTF-8编码的,而UTF-8编码有如下规律// UTF-8最多可用到6个字节, 实际位数最多有31位,即下表中x所表示的位// 1字节 0xxxxxxx// 2字节 110xxxxx 10xxxxxx// 3字节 1110xxxx
2021-09-12 01:21:35 94
原创 【Go】优雅上下线(二)
文章目录关闭一、子协程关闭二、主协程等待所有子协程关闭三、对子协程个数的限制关闭上一篇已经讲了如何捕获Unix信号,这一篇我们来探究一下在多个协程工作的情况下如何正确关闭程序。一般在项目中不会仅一个协程处理任务,而是主协程做完初始化后,启动若干个子协程去处理各自的业务,甚至子协程继续开启子协程。如此一来,在关闭程序就有两个问题需要解决:子协程如何收到关闭信号主协程如何知道所有子协程都完成了主协程需要等待所有子协程都完成后才能退出,因为主协程退出后,子协程会被强制关闭。准确来说,第二个是比较
2021-09-12 01:11:18 139
原创 【Go】优雅上下线(一)
文章目录什么是优雅上下线代码什么是优雅上下线当你有一个运行在服务器上的程序需要停止时,因为要保持数据的一致性,不能直接杀死程序(kill -9),而是需要做一些“善后”处理,一般来说就是把当前处理的任务完成,这往往涉及多个协程之间协作(后续会展开)。那应该怎么处理这种情况呢?我们注意到,在关闭程序(并非kill9强制杀死程序)时,Go可以收到Unix信号,一般来说是两个syscall.SIGINT, syscall.SIGTERM,pm2发送SIGINT(2),k8s发送SIGTERM(15)。依据
2021-09-12 00:02:01 155
原创 【Go】Slice和Map
Slice的append可能会修改地址Map和Slice为nil时都可以遍历Map为nil时不能取值和设置Slice为nil也不能取值和设置但是Slice可以append和取切片[:],但是切片只能0:0或者默认0:len(A)Map可以delete
2021-08-01 11:08:12 188
原创 【git】番外~~佛主
今天分享一下如何在git commit时插入表情首先win+.调出window自带的表情包,或者输入中文时,候选词框最后一个选择这个表情这样就可以请求佛主保佑没有bug了
2021-06-27 17:33:09 112 2
原创 vscode中使用cmder
打开用户设置文件ctrl shift p ===> 输入setting json将下面代码复制到设置文件中 "terminal.integrated.shell.windows": "C:\\Windows\\system32\\cmd.exe", "terminal.integrated.shellArgs.windows": [ "/k %CMDER_ROOT%\\vendor\\init.bat" ]...
2021-06-27 17:17:50 882 2
原创 【Go】Idea快捷键
ctrl j 代码提示// 展开/合并操作ctrl +/- 展开ctrl shift +/- 全部展开ctrl alt +/- 递归展开// 前后行操作ctrl shift j 向下合并行(或者合并选中的多行)ctrl shift/alt enter 向上/下插入一行shift enter 向下插入一行(不会补全括号,分号等)ctrl enter 将光标后面的内容另起一行// 代码结构ctrl u 找到实现的接口/方法 ctrl +
2021-06-27 14:00:22 384
原创 【window】实用快捷键
Win+Ctrl+D:新建桌面Win+Ctrl+F4:关闭正在使用的桌面Win+Ctrl+左/右:在已打开的桌面之间进行切换Win+Pause:打开系统属性Win+逗号:启动AerPeek,窥探桌面Alt+空格+S:改变窗口大小Alt+空格+M:移动窗口Alt+空格+X:最大化当前窗口Alt+空格+N:最小化当前窗口Alt+空格+C:关闭窗口Alt+回车:查看文件属性...
2021-06-27 13:27:47 72
原创 cmder光标错位
文章目录问题原因解决方法问题我输入的git submodule然后删除完原因前面的 λ 或者> 导致的,换成# 就行了新版的 Cmder 的光标像是插入模式,打了以后自动在后面好像多了个空格,往前移动一下 光标还在最后一个字母后面但是其实输入的话已经是在最后一个字幕之前了解决方法在 Cmder 下的 verndor 目录里,修改 clink.lua 文件大约50行前后,把符号 λ 改为 # 保存即可光标的样式怎么从竖线改成方块:vscode中Settings->
2021-06-27 01:06:39 1500
原创 【go】Goland中使用cmder
打开设置将Shell path 内容改为(需要设置环境变量CMDER_ROOT)"cmd.exe" /k ""%CMDER_ROOT%\vendor\init.bat""或者使用Git bash%GIT_ROOT%\bin\bash.exeGIT_ROOT是git的安装路径
2021-06-27 00:10:31 472
原创 【go】goland的终端无法输入
文章目录问题描述解决过程问题描述goland的终端无法输入内容解决过程感谢Sven Eberth的帮助打开的GoLand的日志(Help|Show Log in Exploer)发现报了错误could not initialize class com.pty4j.windows.winpty然后继续搜索到了https://youtrack.jetbrains.com/issue/IDEA-175703...
2021-06-26 23:46:15 1514
为什么这个没有数据竞争(输出一直都是200)
2021-09-15
TA创建的收藏夹 TA关注的收藏夹
TA关注的人