<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Vaskka的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Vaskka</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Vaskka]]></copyright><item><title><![CDATA[【paddleocr】paddleocr服务端部署（CPU版）]]></title><link>https://blog.youkuaiyun.com/Vaskka/article/details/125029571</link><guid>https://blog.youkuaiyun.com/Vaskka/article/details/125029571</guid><author>Vaskka</author><pubDate>Sun, 29 May 2022 13:36:11 +0800</pubDate><description><![CDATA[paddleocr基于hubserving服务端部署实践。CPU版]]></description><category></category></item><item><title><![CDATA[【驼峰转短线】驼峰命名法转换短线命名]]></title><link>https://blog.youkuaiyun.com/Vaskka/article/details/114756546</link><guid>https://blog.youkuaiyun.com/Vaskka/article/details/114756546</guid><author>Vaskka</author><pubDate>Sat, 13 Mar 2021 18:33:23 +0800</pubDate><description><![CDATA[最近干活的时候遇到了从驼峰命名的样式转换为css版本的短线命名，记录一下这里用到的算法。

问题描述
讲给定的字符串中以大写字母做分隔的字符串变为以短线分隔，非大写字母均认为是小写字母
。
思路
思路：
1. 查找大写的位置，相邻的位置合并，被合并的大写位置变小写
2. 剩下的大写索引位置插入’-’，同时大写变小写
复杂度：O(N)O(N)O(N)
实现
def chg_to_short_line(hump: str):
    """
    类驼峰转短线连接
    :param hump: 类驼峰名.]]></description><category></category></item><item><title><![CDATA[@ConfigurationProperties注解的使用经验]]></title><link>https://blog.youkuaiyun.com/Vaskka/article/details/108432429</link><guid>https://blog.youkuaiyun.com/Vaskka/article/details/108432429</guid><author>Vaskka</author><pubDate>Sun, 06 Sep 2020 15:48:42 +0800</pubDate><description><![CDATA[@ConfigurationProperties注解的使用经验

开发时遇到The Element [] were left unbound. 问题，记录一下解决过程

项目想使用springboot方便的properties文件配置功能，先介绍一下使用方式：
使用方式
现在Applcaition类入口添加@ConfigurationProperties，并传入想要自动绑定配置的类，例如：
@SpringBootApplication
@EnableConfigurationProperties({Aliy]]></description><category></category></item><item><title><![CDATA[SpringBoot可以进代码却返回404问题]]></title><link>https://blog.youkuaiyun.com/Vaskka/article/details/107924005</link><guid>https://blog.youkuaiyun.com/Vaskka/article/details/107924005</guid><author>Vaskka</author><pubDate>Mon, 10 Aug 2020 22:44:14 +0800</pubDate><description><![CDATA[SpringBoot可以进代码却返回404问题
问题核心
@RestController 与 @Controller 的区别。从名字就能看出rest不是为了返回view而设计的，因此方法返回值类型会直接映射为http请求体，相反没有rest的是为了返回view，因此如果方法的返回值类型不能映射为一个view那么就会返回404，即使我们的代码已经进入controller中的方法开始执行。
因此，如果我们想让我们的方法直接映射为httpbody，那么使用 @RestController 或使用 @Respons]]></description><category></category></item><item><title><![CDATA[【源码编译gcc/g++】记一次interesting的环境配置]]></title><link>https://blog.youkuaiyun.com/Vaskka/article/details/106816753</link><guid>https://blog.youkuaiyun.com/Vaskka/article/details/106816753</guid><author>Vaskka</author><pubDate>Wed, 17 Jun 2020 22:06:26 +0800</pubDate><description><![CDATA[帮助其他部门的兄弟配置二次开发过的jupyter-notebook（带有登录验证码功能，具体操作在我的博客中有记载）。在部署环境的时候，出现了很多神奇的问题，再次记录一下。

yum源问题
项目的环境需要node、py3，py3好解决，node在环境中没有，于是yum安装了一下，发现报了aliyuncs.com的dns找不到…很奇葩，本着本地先解决的思路，我尝试换源，先后换了清华的源、中科大的源，都存在404的问题。最后换了163的源终于没啥问题了。每次换完记得sudo yum makecache。
gc.]]></description><category></category></item><item><title><![CDATA[【Swagger】swagger-ui只有界面没有内部函数解决办法]]></title><link>https://blog.youkuaiyun.com/Vaskka/article/details/106774584</link><guid>https://blog.youkuaiyun.com/Vaskka/article/details/106774584</guid><author>Vaskka</author><pubDate>Tue, 16 Jun 2020 00:36:37 +0800</pubDate><description><![CDATA[深夜看了同学的一个bug，swagger-ui能显示界面，页面内函数却不能显示（注解配置）。


首先想到是swagger的配置有问题，检查一遍没发现明显问题。
查看controller，发现了url的路径配置的小问题，但是不是问题核心。
猜测浏览器问题，更换没缓存的浏览器再次访问，问题依旧出现。
开始检查“无关”的类，点开main函数发现包名不对，猜测跟spring的依赖注入有关，包名相差一级配置没有读取。修改包名，问题解决。


...]]></description><category></category></item><item><title><![CDATA[【Dubbo】Dubbo使用小记]]></title><link>https://blog.youkuaiyun.com/Vaskka/article/details/106771448</link><guid>https://blog.youkuaiyun.com/Vaskka/article/details/106771448</guid><author>Vaskka</author><pubDate>Mon, 15 Jun 2020 21:33:15 +0800</pubDate><description><![CDATA[上文我们搭建好了服务器上的zookeeper服务，暴露在&lt;公网ip&gt;:2182下。接下来就可以使用zookeeper作为注册中心进行rpc调用了。

这里主要记录一下使用注解的方式配置。还有xml和Api的方式，这篇文章https://segmentfault.com/a/1190000019896723讲的很详细，可以作为参考。
和SofaRpc一样，服务提供者和服务消费者都需要保证接口的包名完全一致，如果接口返回对象，也需要实现java.io.Serializable，而且尽可能保证包名类.]]></description><category></category></item><item><title><![CDATA[【Zookeeper】Zookeeper服务搭建（单体服务简易版）]]></title><link>https://blog.youkuaiyun.com/Vaskka/article/details/106770527</link><guid>https://blog.youkuaiyun.com/Vaskka/article/details/106770527</guid><author>Vaskka</author><pubDate>Mon, 15 Jun 2020 21:07:37 +0800</pubDate><description><![CDATA[在最近的一个项目中，涉及到多端接口的交互，原本的rest方式调用复杂度大大增加。因此考虑使用注册中心和RPC等组件来实现，经过挑选，选择了Zookeeper作为注册中心配合Dubbo实现rpc调用。

Zookeeper简述
Apache为了解决分布式环境中资源配置问题的解决方案。分布式应用程序可以基于 ZooKeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。
环境安装

在进行之前，我们需要保证服务器中带有jdk1.8的.]]></description><category></category></item><item><title><![CDATA[【Jupyter二次开发】为Jupyter Notebook的登录加上验证码]]></title><link>https://blog.youkuaiyun.com/Vaskka/article/details/106522449</link><guid>https://blog.youkuaiyun.com/Vaskka/article/details/106522449</guid><author>Vaskka</author><pubDate>Wed, 03 Jun 2020 14:26:47 +0800</pubDate><description><![CDATA[最近接到一个小需求，需要为Jupyter的登陆界面加上验证码，因为是二次开发、又不熟悉Tornado，刚开始遇到很多问题，在这里记录一下。

需求
需求提的很明确，在jupyter的登陆界面为登陆加上验证码，图片和滑块的类型都可。由于是第一次尝试，最后我选择了思路更清晰的图片验证码。
二次开发环境准备
主要都是参照github.com/jupyter/notebook 官方给出的环境进行配置。这里简单总结一下。

准备node和npm的环境，我这里用的是 node v12.13.2 和 npm v6.13.]]></description><category></category></item><item><title><![CDATA[【微信小程序】解决InnerAudioContext.onTimeUpdate不执行的问题]]></title><link>https://blog.youkuaiyun.com/Vaskka/article/details/105326977</link><guid>https://blog.youkuaiyun.com/Vaskka/article/details/105326977</guid><author>Vaskka</author><pubDate>Sun, 05 Apr 2020 14:58:25 +0800</pubDate><description><![CDATA[问题描述
微信小程序在较新版本的音频接口中推荐使用InnerAudioContext对象实现音频的播放、暂停、跳转等功能，通过监听接口回调实现。
InnerAudioContext.onTimeUpdate(function callback)为监听播放进度更新的接口，在拖动进度条时或跳转播放后此回调不触发。
问题分析
经测试，在触发onWaiting回调后会导致onTimeUpdate失效，此问...]]></description><category></category></item><item><title><![CDATA[【计算机网络】链路层-2]]></title><link>https://blog.youkuaiyun.com/Vaskka/article/details/103162096</link><guid>https://blog.youkuaiyun.com/Vaskka/article/details/103162096</guid><author>Vaskka</author><pubDate>Wed, 20 Nov 2019 16:20:41 +0800</pubDate><description><![CDATA[LAN

use MAC address


子网内部
MAC地址长度：48bit
IP地址由ICAN分配，MAC地址由IEEE分配。
唯一
伴随设备不会变

ARP

address resolution protocal

IP节点和主机都有ARP table。
结构：
IP-&gt;MAC-&gt;TTL
过程：
ARP sender：Im xx.xx.xx.xx， I want to kn...]]></description><category></category></item><item><title><![CDATA[【计算机网络】链路层-1]]></title><link>https://blog.youkuaiyun.com/Vaskka/article/details/103048366</link><guid>https://blog.youkuaiyun.com/Vaskka/article/details/103048366</guid><author>Vaskka</author><pubDate>Wed, 13 Nov 2019 16:25:39 +0800</pubDate><description><![CDATA[介绍

node：任何运行链路层协议的设备。

主机
路由器
交换机
无线接入点AP


链路：把相邻节点连接起来的信道。
分组：帧frame。

链路层功能


组装frame

添加头尾。
共享介质解析。
mac地址解析。



两个节点的可靠传输。


差错探测

无线干扰较大



错误修正


半双工（早期）、全双工


链路层的实现
网卡实现链路层，implemented in “ad...]]></description><category></category></item><item><title><![CDATA[【编译原理】LR(0)分析举例]]></title><link>https://blog.youkuaiyun.com/Vaskka/article/details/103046396</link><guid>https://blog.youkuaiyun.com/Vaskka/article/details/103046396</guid><author>Vaskka</author><pubDate>Wed, 13 Nov 2019 12:57:24 +0800</pubDate><description><![CDATA[方便复习用

题目
文法: E→(L)∣aE\rightarrow (L) | aE→(L)∣a L→EL∣EL\rightarrow EL | EL→EL∣E
分别求：DFA、parsing table、和串(a(a))的分析过程。
DFA
先拆分和扩张文法：1.E′→E1. E'\rightarrow E1.E′→E 2.E→(L)2. E\rightarrow (L)2.E→(L) 3.E...]]></description><category></category></item><item><title><![CDATA[【软件构造】代码优化]]></title><link>https://blog.youkuaiyun.com/Vaskka/article/details/103033456</link><guid>https://blog.youkuaiyun.com/Vaskka/article/details/103033456</guid><author>Vaskka</author><pubDate>Tue, 12 Nov 2019 18:28:13 +0800</pubDate><description><![CDATA[代码重构
在不改变软件外部行为的前提下，对齐内部结构进行改变，使之更容易理解。
目的：提升代码质量，易于维护 。
理由

内聚性差
接口层次不一致
数据成员public
成员函数使用过多的其他类特征（弱内聚）
某个类没什么用
耦合性过强
子程序冗长
子程序命名不恰当
参数列表过长
代码重复
case语句需要做相同的修改
全局变量
超前设计

不准确
不完备
可能没有用处
复杂性



如何重构
数...]]></description><category></category></item><item><title><![CDATA[【系统级编程】优化]]></title><link>https://blog.youkuaiyun.com/Vaskka/article/details/103021789</link><guid>https://blog.youkuaiyun.com/Vaskka/article/details/103021789</guid><author>Vaskka</author><pubDate>Tue, 12 Nov 2019 10:08:40 +0800</pubDate><description><![CDATA[80/20 rule: 大部分的时间花在小部分代码上。

性能度量
What are we need in CS

OS: 分时系统
Hardware: CPU wait for IO
measuring  program performance

time type:

wall clock time: the overall time needed to run a particular p...]]></description><category></category></item><item><title><![CDATA[【计算机网络】网络层易错点整理]]></title><link>https://blog.youkuaiyun.com/Vaskka/article/details/102957004</link><guid>https://blog.youkuaiyun.com/Vaskka/article/details/102957004</guid><author>Vaskka</author><pubDate>Thu, 07 Nov 2019 17:01:26 +0800</pubDate><description><![CDATA[ICMP

Internet Control Message Protocol

分类

差错报文

终点不可达：路由器或主机不能交付数据。
超时：生存时间为0或规定时间没拿到全部数据片。
参数问题：首部字段数据不正确。
改变路由：通知主机下次发送到另一个路由。
源点抑制：因拥塞而丢弃数据报。


询问报文：

回送请求和回答：向特定主机发送询问，收到的主机要给予应答。（PING）
时间戳请求和回...]]></description><category></category></item><item><title><![CDATA[【计算机网络】互联网的路由选择协议]]></title><link>https://blog.youkuaiyun.com/Vaskka/article/details/102936594</link><guid>https://blog.youkuaiyun.com/Vaskka/article/details/102936594</guid><author>Vaskka</author><pubDate>Wed, 06 Nov 2019 16:20:45 +0800</pubDate><description><![CDATA[RIP

路由信息协议


使用距离向量算法。cost定义为跳数。
最大15跳（16不可达）
30s进行一次交换。
最多25个目标子网。
使用毒性逆转防止乒乓传递。（routing loop）
UDP，port: 520

OSPF

开放最短路径优先


链路状态算法。
每个节点维护一个整个网络的拓扑结构。
IP承载
频率30min

特征

security： 所有的OSPF都是经过认证的。（...]]></description><category></category></item><item><title><![CDATA[【计算机网络】距离向量算法]]></title><link>https://blog.youkuaiyun.com/Vaskka/article/details/102935839</link><guid>https://blog.youkuaiyun.com/Vaskka/article/details/102935839</guid><author>Vaskka</author><pubDate>Wed, 06 Nov 2019 15:25:42 +0800</pubDate><description><![CDATA[解决更新路由表的问题

路由表数据结构

目标网络
距离
下一跳

算法步骤

路由器X发送路由表给路由器Y，现在确定Y的新路由表


接到邻居节点的路由表，先把全部table-item的下一跳改为发送方X。并将距离+1。对于Y来说X的路由表中的距离都应该是先到X再到目的地，所以应该+1。
对于X的路由表的每个table-item来说，如果Y中不存在就append；如果存在而且下一跳相同，则更新...]]></description><category></category></item><item><title><![CDATA[【编译原理】自底向上]]></title><link>https://blog.youkuaiyun.com/Vaskka/article/details/102928300</link><guid>https://blog.youkuaiyun.com/Vaskka/article/details/102928300</guid><author>Vaskka</author><pubDate>Wed, 06 Nov 2019 10:45:40 +0800</pubDate><description><![CDATA[LR(K)
Step

Shift: 将输入串最前面的字符入栈。
Reduce: 查看栈顶的字符是否符合文法，符合将其换为对应的非终结符。(往左换)

增广: S′→SS' \rightarrow SS′→S
Reduce的时机

when the handle occur

Handle: 分析树中最左边具有父子两代的子树的树叶节点。
describe

L: from left to righ...]]></description><category></category></item><item><title><![CDATA[【编译原理】消除左递归与提取左因子]]></title><link>https://blog.youkuaiyun.com/Vaskka/article/details/102923902</link><guid>https://blog.youkuaiyun.com/Vaskka/article/details/102923902</guid><author>Vaskka</author><pubDate>Tue, 05 Nov 2019 23:23:19 +0800</pubDate><description><![CDATA[消除左递归
快速消除左递归
原文法（保证β\betaβ不含PPP）：P→Pα1∣Pα2∣Pα3∣...∣Pαn∣β1∣β2∣β3∣...∣βnP \rightarrow P\alpha_1|P\alpha_2|P\alpha_3|...|P\alpha_n|\beta_1|\beta_2|\beta_3|...|\beta_nP→Pα1​∣Pα2​∣Pα3​∣...∣Pαn​∣β1​∣β2​∣β3...]]></description><category></category></item></channel></rss>