- 博客(109)
- 收藏
- 关注

原创 scala下DSL的设计与开发
我们考虑scala下的DSL实现,scala有一些特性可方便的支持内部DSL开发:函数curry化、隐式转换、对象方法调用无需点号和圆括号。 假设有下面的DSL: + 支持int、string、bool类型的字面量 + 支持in、not in操作,判断是否在一个tuple中,例如:”baba” in (“baba”, 1, 2) + 支持and、or操作符 + 字面量支持size方法 我
2017-08-18 20:59:18
3483
原创 apache连接池机制讨论
server一般会配置keep-alive超时时间,过了这个时间还没新请求到来,则关闭连接。那么一个连接是如何判定不新鲜(stale)的呢?fillInputBuffer方法会尝试从socket里读取字节,返回值为读取的字节数,若返回-1,说明连接已关闭。顺带说一下,实测发现,。
2025-03-27 15:48:04
621
原创 mysql DDL可重入讨论
mysql的bug:当执行 MySQL online DDL 时,期间如有其他并发的 DML 对相同的表进行增量修改,比如 update、insert、insert into …on duplicate key、replace into 等,且增量修改的数据违背唯一约束,那么 DDL 最后都会执行失败,报错主键冲突。这里的“增量修改的数据违背唯一约束”,从实践来看即使insert into on duplicate执行成功,依然有可能触发DDL报错,并非一定要DML执行失败。
2025-01-27 15:13:14
447
原创 文本分类问题讨论
其accuracy也达到了90%,但对于故障集则全部预测错误,其precise、recall、f1-score都是0,非常差的指标,即使accuracy高达90%也不能掩盖分类器的失败。降采样就是去掉部分正样本,使得正负样本均衡,但如果负样本的绝对数量很小,会导致降采样后的总样本数变得很小,造成“欠拟合”,算法的分类效果会大大下降。升采样就是人造一批负样本,把正负样本比例升上去,一旦正负样本均衡了,分类效果就会变好,但由于有“伪造”的数据,不排除过拟合的可能。recall则是从实际结果来看的。
2025-01-02 19:42:12
465
原创 文本向量化技术
可见,词t在文档里出现的越少,idf值越大,该词的影响力就越大。+1主要是确保那些在所有文档里出现的词(显然,此时df(d, t)=N,所以log [ N / df(d, t) ] = 0)不会完全被忽略。也可使用tf-idf方法完成文本向量化,该方法是在词袋法的基础上考虑了idf,即“逆向文档频率”,削弱了那些在多个文档中频繁出现的词的影响(这些词往往不那么重要,因为它们无法区分文档)。这样的向量,向量元素是某个单词在文档里出现的次数。d为文档,idf(d, t)为逆文档频率。t为词,tf(t)为词频;
2024-12-30 16:52:01
417
原创 spring RestTemplate使用说明
rest-template是spring对httpclient的逻辑封装,它底层还是基于httpclient,所以一些配置其实跟httpclient是强相关的。
2024-12-17 15:13:54
262
原创 llvm开发心得
entry:注意后面2个indice=0的参数,第一个0表示,getelementptr从[2 x i8]*里取得第一个也是唯一一个元素(索引为0),其类型是[2 x i8],第二个0表示再取这个char array的第一个元素的地址,相当于C里的&arr[0],返回的自然是i8*。可见,getelementptr是很强大的,它可以取得一个嵌套结构里的任意成员。使用IR构建DSL的过程,就像用汇编开发程序的过程。
2024-10-14 11:40:36
204
原创 python AST机制讨论
我们这里1+2是一个表达式,故使用eval模式解析。解析出的AST树可以传入compile函数,该函数不带标记时,默认编译为python code object,最后用eval执行python code object得到结果。python2里有个compiler.ast模块,用于分析、构建python ast。这个模块在python3里移除了,其能力分散到compile()函数+ast模块里。最近在python3下考虑把其它语言转成python字节码执行,为此,研究了python3的AST机制。
2024-09-16 10:26:34
288
原创 如何制作ubuntu启动U盘
当尝试在大于32GB的存储设备上使用FAT32格式化时,会遇到“卷大小太大”的错误。但过程很艰辛,遇到很多问题,特别记录一下。
2024-09-15 15:02:20
911
原创 ubuntu使用心得
入手了一台新机,装了ubuntu,总的说来,现在的linux桌面基本可用,虽然距windows的易用性还有一定距离。顺便记录一下使用心得。
2024-09-15 11:27:38
1301
原创 PBE加密算法说明
上述代码里的salt + str2byte(password)就是准密钥,经过SHA256安全散列算法生成kek,这里我们为简单起见,只做了一次散列,实际是可以做多次的。kek我们不用存,因为它可以通过salt+口令计算生成,但msg_key我们要加密后存储,这里我们将salt和msg_key放到了一个单独的secret.bin文件里,这个secret.bin文件也要保护起来(通过权限或口令)。但对于攻击者而言,他是要用大量的候选key进行尝试的,再叠加多次散列算法执行,那就是一个很大的负担。
2024-09-07 16:56:55
435
原创 AES加密算法说明
首先,我们得了解AES加密算法的一些基本概念。AES是一种对称加密算法,所谓对称,是说它的加密、解密过程使用相同的密钥。还有非对称加密算法,例如RSA,加密解密使用的是公私钥对。AES同时是一种分组加密算法,分组的长度一般是16字节(128bit)。分组是什么意思呢?假设我有一段很长的明文T,我没法用AES加密整个T,只能将T分成若干16byte的明文组,接着对这些明文组逐个进行加密,得到一堆密文组,把密文组组合起来,才是最终的密文。
2024-09-06 19:47:57
864
原创 rust语法细节讨论
入门中文教程链接:https://kaisery.github.io/trpl-zh-cn/ch02-00-guessing-game-tutorial.html字节是u8,一个字节;字符是unicode编码,占4个字节。字符串的字节序列用as_bytes()返回,字符序列用chars()返回。字符串的len()返回的是字节数,而非字符数。字符数用s.chars().count()来获得。用+可以,但推荐使用format!宏。例如:常量常量在编译时被求值,它们的值会在使用的地方被内联。常量初始化时不能调
2024-08-26 14:38:17
1122
4
原创 用python做DDL的静态分析
顺带说一个小窍门,就是DDLParser有一个silent=True选项,默认是关闭的,跳过语法错。但如果发现有的DDL解析不出来,可以临时打开该选项,看看究竟是哪一处语法不支持,非常快捷。最近在用python做DDL SQL的分析,用的是simple_ddl_parser1.5.1。遇到了一些问题,记录一下。这种情况需要我们对DDL做一些预处理,才能获得表结构的信息。会被输出为我们需要的t_testtbl。
2024-07-06 17:03:49
379
原创 关于Spring Cacheable注解的讨论
Cacheable注解中,value或cacheNames表示缓存名,key表示缓存里的主键名,unless表示某些条件下不存缓存,condition表示只在某些条件下才存缓存(即unless的否定条件)。这里要特别注意:key属性使用的是SpEL表示,而非普通字符串。表示key名为key1,SpEL里字符串必须用单引号括起来。如果不使用SpEL指定key,,生成规则是:AppID+subAppID+@Cacheable.value+入参字符串。
2024-06-11 12:07:06
569
1
原创 SpEL讨论
SpEL是spring框架提供的表达式语言(expression language),用作spring框架或注解的一些配置。因为近期在做代码分析,需用PLY对SpEL做语法解析,所以着重研究了一下SpEL的语法。记录一下,以便查阅。
2024-05-29 11:45:37
280
原创 PLY使用心得
越靠前的,算符优先级越低,同一层的算符优先级相同。当优先级相同的算符连续出现时,就要看是左结合还是右结合(代码里left和right所表示的含义),比如+和-是左结合,那么a + b - c执行顺序是(a+b)-c;再比如赋值是右结合,那么a=b=c的执行顺序是a=(b=c)会导致将关键字and和or也解析为ID,这不是我们想要的行为。最近在利用python做语法解析,使用了PLY,就是pyton里的lex+yacc。
2024-05-21 15:38:17
282
原创 spring bean的注册讨论
注册spring bean的方法总结在类上加@Component、@Service、@Named等注解。在类上加@Configuration注解,类成员方法上加@Bean。在spring.factories里配置EnableAutoConfiguration对应的类,在类方法上定义@Bean。应该算是@Configuration+@Bean的特化处理吧。EnableAutoConfiguration能根据应用程序的依赖和类路径自动配置所需的bean 。在BeanFactoryPostProcess
2024-05-16 16:47:00
174
原创 对rust语言的一些理解
近来在研究rust语言,作为老牌的C++程序员及拥有近10年经验的java程序员,觉得有必要通过语言间的对比来加深对rust的理解。
2024-05-13 17:24:50
1091
原创 用python做java语言的静态分析
我们可以把javalang解析出的语法树进行再加工,生成我们需要的元信息,再结合校验规则,做一些常见编码问题的分析。最近在对java语言做静态分析,发现javalang这个好用的python包。这就是lint类工具的一般性原理。
2024-03-08 17:13:54
660
原创 正则表达式的一些高级用法
不允许出现某个单词,使用?!(?!Pattern).\.matches表示.matches之前的不能是Pattern非贪婪匹配,在匹配项后加?matches\((.*?)\)这里在.*后加问号,表示尽可能少的匹配。防范redos攻击,可使用Cyber-Redos-Terminator检查开发使用的正则表达式
2024-02-20 16:49:43
1635
原创 java语言深度讨论
我们会看到,try-with-resource依然会翻译为try-finally,在finally里面,是要明确判断构造对象parser是否为null,不为null,才会调用其close方法的。一旦构造器抛异常,parser肯定是null,所以其close不会调用。所以,如果构造器里涉及某些资源创建(例如文件),同时可能抛异常,就要在构造器里做好异常下的资源清理,而不能指望close方法自动完成。逻辑上很好理解,你对象都没成功创建,我为啥要调close啊。这样的处理逻辑跟C++也是一样的。
2024-01-29 11:53:43
429
原创 swagger标签说明
指定了x-ref-external的数据结构里的properties只是起到一个方便阅读的作用,并不会根据properties真的生成属性。
2024-01-16 16:09:53
561
原创 lombok注解说明
@Data是包含了@EqualsAndHashCode和@ToString的@EqualsAndHashCode默认是不比较父类的属性的,如需比较,设置callSuper=true
2024-01-16 11:39:30
406
原创 springboot下rest接口抛异常的定制处理
主要是定制ExceptionMapper,作为jaxrs框架的provider,即可将rest接口实现里抛的异常截住,并转化为Response发送给前台。
2023-12-08 15:25:52
603
原创 xss漏洞及排查
它直接返回前端输入的名字。界面会弹出domain域的对话框。上述攻击是后端将前端的输入未做任何处理,直接返回到web界面上造成,称之为反射型xss。还有一种存储型xss,后端对前端输入未做处理,存到数据库中。后续每个用户来访问页面,数据库的数据都会加载到界面上,从而形成xss攻击。这两种xss,客观上形成了一种动态页面或非法链接,造成浏览器解释非法脚本。
2023-10-11 10:48:53
283
原创 跨域问题讨论
。也就是说,一旦允许跨域,意味着允许恶意网站随意攻击可信网站,带来安全风险。这里面有一个前提:用户必须先登录可信站点A才行(登录cookie会保存在客户本地)。SOP:same-origin policy,同源策略现代浏览器默认遵循同源策略,即网站A的请求不能去访问网站B。但,、、所以,即使在浏览器支持SOP的情况下,前例中的恶意网站仍可以构造例如img src这样的恶意代码,绕过浏览器的SOP规则,访问正常网站A。不受SOP限制的资源清单:脚本文件 js图片资源样式资源cssiframe展示其他的
2023-09-28 10:55:36
319
原创 预防Dos攻击
Dos----拒绝服务攻击,一般是构造特殊的输入,使得后台的处理耗时远超正常水平,随着请求越来越多,后台服务越发疲于奔命,最后因资源耗尽,无法再接受新的请求,最终造成拒绝服务的效果。对于后者,往往是在post请求里,可以做一个filter来处理所有的incoming request。对于前者,做一个公共函数检查pageSize的大小,确定合理的范围即可。分页查询时传一个很大的pageSize;入参是一个很大的集合。
2023-09-11 16:29:28
576
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人