翡翠小屋

Thinking will not overcome fear but action will.

解决 Hibernate 连接 Oracle 导致的 ORA-02289: sequence does not exist

用 Spring boot 连接 Oracle 的时候,尝试插入数据的时候提示了 ORA-02289: sequence does not exist 。 这是由于 Spring 使用了 Hibernate 来连接数据库,而 Oracle 的自增字段和表是独立的,因此你必须在明确的给表指明 sequence,或者创建一个名为 hibernate_sequence 的默认 sequence。...

用 webpack 单独编译 vue 组件

最近由于需要做一些管理用的界面,所以在研究 vue,这是一个很不错的一个前端框架,但问题是我早已有了不少页面,并不想全体重写开个新工程,但又想使用 vue 来写一些组件,就有了下面看起来有点奇怪的需求: 我希望能单独编译一个个 *.vue 文件,然后导入到某个页面中去。页面使用 script 引入 vue 的方式,而不使用 vue_cli 之类的来编译整个工程。 参考了 webp...

安全的提交到 Github

用 gpg 加密 git 提交

偶尔在知乎上看到了一个问题 为什么Github允许冒充别人的身份Commit? , 决定给我的 Github 账户也添加 GPG 签名,以便让我的提交更安全(其实是觉得提交多个 Verified 标签会比较帅)。 我是 Windows 10 系统,当我尝试在命令行输入 gpg 的时候,却发现已经有这个命令了,也不知道什么时候安装的…… 怀疑是安装 git 的时候附带的,当然,如何你还没有,...

解决RestControler 无法返回 Iterable 类型的列表的问题

当使用 Spring 的 MVC 尝试返回 JSON 的过程中,碰到了一个奇怪的问题,我在 Spring boot 的程序里,@RestControler 的类,直接返回 Iterable 类型的对象,是 Ok,但在另一个存 Spring 的程序里就只返回了空值。 尝试更新版本等方法无效以后,通过调试终于发现了原因。Spring 注册 MessageConverter 的时候,会判断是否存...

踩坑记:httpComponents 的 EntityUtils

今天写的一个服务程序,有人报告获得的数据中文乱码,而我是用 apache 通过 httpComponents 去取得数据的,于是开启日志的 debug 级别。 在日志里果然发现中文不见了,有乱码出现: 2014-07-02 16:35:01.348 DEBUG [Wire.java:86] http-outgoing-8 << "<?xml version="1.0" ...

少写了 @ResponseBody 引发的古怪问题

最近在 Tomcat 里写一个异步的 HTTP 服务端,出于方便的考虑使用了 Spring MVC 注解来搞定,然后就发生了诡异的结果。 代码如下: @RequestMapping("/test") public DeferredResult<String> test( final @RequestParam(required = tru...

也谈生成不重复的随机数系列(洗牌算法)

偶尔看到有人在讨论如何生成不重复的随机数系列(洗牌算法),发现他们用的方法复杂度十分高,要抛大量的随机数,因此把我以前用的洗牌算法也拿出来秀秀。 假设需要生成 1~54 的随机数,那么把 1~54 放入“数组”,抛 0~53 的随机数,把指定序号的牌,和最后一张牌交换。 下一步,抛 0~52 的随机数…… 重复 53 次就可以洗完牌,只需要53个随机数,53次交换,复杂度相当低,可以在...

基于状态机思想的 Xml SAX解析器

学习状态机的练习之作,使用 switch 的方式。 保存在 github 上:https://github.com/jadedrip/lugce/blob/master/lugce/xml/simple_sax.hpp 不多说,看代码: /** * Auctor: Chen Wang ( From China ) * Email: jadedrip@gmail.com * * This...

Lockfree 习作:最多保存56个对象的简单容器

练习作品: // 最多可以存放 56 个数值的容器 template< typename T > class SafeValuePool { public: SafeValuePool() : _mark(0) {} uint8 lock() { for( ;; ){ for( int i=0; i<56; ++i ){ asse...

无锁的 ( lock-free ) 线程安全算法

无锁的 ( lock-free ) 线程安全算法 友情提示:对 Lock-free 算法没概念的朋友,请先看下面的参考。 算法描述 Lock-free 算法的基础是 CAS (Compareand-Swap) 原子操作。当某个地址的原始值等于某个比较值时,把值改成新值,无论有否修改,返回这个地址的原始值。目前的cpu 支持最多64位的CAS。并且指针 p 必须对齐。 ** 注:原子操...