Ubuntu使用记录 置顶! 有更新!

家里电脑的 win10 为了折腾某个游戏让我整崩溃了,虽然还能用,但是时不时会突然卡主然后就死机了。 索性就换个 Ubuntu,毕竟做开发的话,Linux 应该是足够的,并且有些东西要么 Mac 要么 Linux,win 下并不好使 本文是为了记录使用过程中遇到的问题和解决办法(以前也折腾过,皆因为没有记录让自己重复踩坑) 切换系统语言到中文,然后更改文件夹名为英文 需要如下三个指令: export LANG=en_US # 切换语言到英文 xdg-user-dirs-gtk-update # 修改文件目录为语言指定 export LANG=zh_CN.UTF-8 # 切回语言到中文 刚改完的时候文件管理器保留着原中文文件的链接并且提示无法访问,注销重新登录即可 无法输入中文 这篇文章本来使用英语写的,直到我装上了搜狗才得以改成中文。 搜狗拼音 for Linux 安装好后,并不会自己出现在输入法中,需要在输入法配置中添加 但是系统界面上那个入口并不好找,我也不知道怎么就找到了,然后加上了搜狗,删除了原有的,结果出现了新的问题 只能输入中文无法输入英文了。 再一搜终于找到了那个输入法管理的入口,指令如....

阅读全文 »

为Java程序员而准备的Go指南 置顶! 有更新!

为 Java 程序员而准备的 Go 指南 本文原作者为 Stephen Nillson,由 ZephyrJung 翻译,原文链接如下: https://www.nada.kth.se/% 7Esnilsson/go_for_java_programmers/ 鉴于水平有限,未免有很多不合适之处甚至错误,欢迎各位批评指证,GitHub 地址在这里,交流请到黑客派社区,更多精彩等你发现 本文从 Java 视角来理解 Go,帮助 Java 程序员们迅速的掌握 Go 语言。 Hello Stack (example) 为了激发你的兴趣,我们将以一个麻雀虽小五脏俱全的典型案例开始,即 Stack.java Go 语言实现如下: // Package collection implements a generic stack. package collection // The zero value for Stack is an empty stack ready to use. type Stack struct { data []interface{} } // Push adds x to the top of the ....

阅读全文 »

2018 年度总结

生活 今年是非常重要的一年 我的女儿,在 8 月 6 号 4 时 2 分的时候,来到了这个世界 那天晚上是我人生中的第一次完整地通宵(希望也别有下一次。。。),承蒙苍天保佑,以及医院的工作人员的尽职尽责。 老实讲我还没有多少当父亲的觉悟,又因为孩子在老家我在北漂而没尽多少责任,如今的生活还没有太多的变化,依然是上班睡觉打农药 当然,比起过去,又多了一份牵挂 工作 今年在技术上的成长感觉不算特别大,平时忙于写业务代码,或者一些小玩意儿,在深度上依然没有什么提高 不过那次分享的经历依然深深印在我脑海,以后我要多做分享式总结,哪怕只给自己讲,也应该去做 今后的重心,要放在技术深度上,因为学习的时候容易没有方向,但是如果想着如何去介绍给大家的话,思路就会清晰点 感谢 Leader 给我的这次机会,也深感幸运能够在这个小组,铿锵六人行 2019 明年,自然是为了我的家人,挣更多的钱,当然也要保证自己的身体健康,可持续发展 多看书,我看书还行,但是有时候还是更想打游戏,不过我坚决不能在陪孩子的时候玩游戏 想想那些孩子坐父亲打 LOL 的图,我不觉得好笑,只觉得要引以为戒,即便要玩,也起码是能跟孩子互动的。 今年的阅读记录....

阅读全文 »

用Spock单元测试框架替代JUnit 有更新!

Spock 是一个 Java 及 Groovy 应用的测试框架。它之所以能从众多框架中脱颖而出,是由于它富有表现力的语言。通过 JUnit runner,Spock 能够与大多数 IDE、构建工具及集成测试服务兼容。Spock 的诞生受到了 JUnit, jMock, RSpec, Groovy, Scala, Vulcans 的启发。 Groovy VS Java 此处不做细节上的比较,只提在写单元测试中用到的代码 类型推断 orderData.setOrderId(123456L) orderMoney.setInitFactPrice(new BigDecimal("3.2")); orderData.orderId = 123456 orderMoney.initFactprice = 3.2 输出结果 System.out.println("Hello world"); println("Hello world") 创建 List List<String> list = new ArrayList<>(); list.add("test1"); list....

阅读全文 »

一个小问题的分析

今天线上出现了一个字符超长引起 MySQL 抛出异常的问题 问题本身不大,上游系统有 bug,传递的字符串没有做 trim 处理,导致报文节点中的字段远远超出预留长度 反应给领导的时候,领导对我的汇报并不满意 我说,这个问题是由于上游传下的数据过长 领导说,这是表象,出现这个问题的根本原因是什么?为什么在上游传下来的时候没有校验住,而使错误的数据流入系统了引起报警呢 之后的对话有点记不清了,我提出这个校验应该由上游系统做,于是叫来了上游系统的负责人,在一旁的组长也加入了讨论 讨论中大体涉及到了如下几点: 错误的数据是前端下传的,还是系统 bug 引起的 前端控件是否有限制,是否有校验,是否有提示 是否应对数据长度添加校验 讨论中还是感到了自己表述能力的匮乏。讨论中提到的点,我也大都能想到,但是当我向领导汇报的时候,我似乎只能说个,上游系统问题,上游应当校验,听起来倒有点推卸责任的感觉 我所思考的内容是: 这个数据到本系统时,已经分发到了多个其他系统,所以类似异常数据的处理,肯定不在本系统做,做了其他系统也要做,如果处理逻辑差异较大,会造成数据不一致 而上游若要对字段长度做校验,那理论上所有字段都....

阅读全文 »

VIM实战笔记

记录了《VIM 实战》中的常用指令,高级主题部分未涉及 模式 普通模式 . 重复上次修改 u 撤销 dd 删除整行 >G 当前行到文档末尾向右缩进,>> 当前行向右缩进。反之用 < A 移动到行尾并插入 <=> $a /pattern<CR> 文档中查找下一处匹配项 ?pattern<CR> 文档中查找上一处匹配项 s 删除当前位置的字符并进入插入模式 :s/target/replacement 将当前行的 target 替换为 replacement,通过&重复执行 * 定位到下一个当前单词通过:set hls 高亮,:set hls!取消高亮(其他单词匹配指令类似) o 在当前行的下一行插入新的一行并进入插入模式 I 定位到行首并进入插入模式 daw delete a word,删除光标所在单词。 <C-a> 当前数字加 1,<C-x> 当前数字减 1,10<C-a> 当前数字加 10 yyp 复制当前行 gUaw 当前单词大写,guaw 当前单词小写。gUU 当前行大写,guu 当前行小写,g....

阅读全文 »

JHost进化 -> KHostAdmin 有更新!

之前用 JavFX 以及第三方 UI 库 JFoenix 写了一个 JHosts 结果因为有 bug 以及跟 Chrome 插件一样而且不如后者好用而抛弃了 现推出新版,使用朴素的 UI,实现的 KHostAdmin KHostAdmin 使用 Kotlin 编写的 Host 管理工具 虽然 Chrome 插件可以切换,但是由于一个项目的启动可能依赖其他项目,相应的 IP 地址也可能需要配置多个 为了方便批量切换,产生 profile 概念,先将 host 进行环境分类,再通过选中与否进行批量更换 同时,只在应用启动时 host 生效,应用关闭时即恢复初始状态,如此避免 host 混乱,可以在原 host 文件中,只写入常用的必须的 host 配置,而在 profile 加入临时的配置 Git 地址: KHostAdmin 使用说明 主界面如下 左侧为 profile 列表,右侧为 host 列表,默认为空 应用启动时,将在用户目录下的.khost 文件夹中,生成一个 host 文件的备份,并在关闭时还原 点击 Add Profile 出现如下图的对话框 填入 Profile 名称后即可在左侧点击,并在右侧点击 AddHost 可出现如下对话框 此时即可添加 host,默认....

阅读全文 »

2017 年度总结

好久没在这里发帖子了,今年是忙碌的一年 关于离职 17 年 4 月底,颇为不舍的离开了上家公司,无缝衔接的来到了新公司,和群里的大神 @Wylyeak 成为了同事 16 年,在上家公司,还是比较清闲的,做的依然是 CRUD,没有什么特别高端的操作。到了 17 年初,领导要给我换组,那个到时要开始接触一些非 CRUD 的任务了,然而就在这时,我拿到了新的 Offer,生计所迫,虽然不舍,但还是毅然决然的离开了。事后,某个对我离职略微不爽的项目经理问我,离开后悔么,TA 可能是听我说这里加班比较多,认为我会回答后悔,但我的答案是,虽有遗憾,但不后悔。 关于加班 第一波加班在项目刚启动一段时间时,在 L 哥的带领下,输出了一波,一般会赶上末班公车,第二波加班,是不是需要打车回家了,第三波,也是近期的封闭,加班那个凶猛,猛到有一天我到公司的时候,居然因为会议室太闷感觉要晕倒了。于是请了半天假回家休息,周末也歇足了双休。不得不佩服 L 哥,加班程度比我还强,居然扛得住。据他所言,他之所以能 hold 住,都是靠喝够了水。另外还有同组的小帅哥,刚毕业,跟 L 哥的加班度基本一致,也 hold 了下来,对于这个,我只能说年轻人就是厉害呀……今....

阅读全文 »

魅族Pro5,进入开发者模式

魅族的开发者模式隐藏太特喵的深了,在同事的提醒下终于给找到了 1. 设置,关于手机,点击版本号(Flyme……),点几下后会提醒要进入开发者模式,最终提示,已进入开发者模式 然鹅,你以为这就是开发者模式了么,图样图森破! 2. 设置,辅助功能,最下面,开发者选项(藏得太特么意想不到了),进入后,打开 USB 调试 其他设置根据官方文档即可,原文如下: 一、Ubuntu 环境 1. 建立或修改文件 ~/.android/adb_usb.ini,在文件开头或末尾添加一行,内容是 0x2a45。 2. 建立或修改文件 /etc/udev/rules.d/51-android.rules 2.1 修改文件权限: sudo chmod a+rx /etc/udev/rules.d/51-android.rules 2.2 在文件中添加一行内容: SUBSYSTEM=="usb", ATTR{idVendor}=="2a45", MODE="0666", GROUP="plugdev" 4. 确保你在用户组"plugdev" sudo adduser plugdev 5. 按下面流程重启 udev 服务或直接....

阅读全文 »

记使用Ubuntu的一次故障——无法进入桌面系统,不停闪屏

周末开开心心来加班,由于有些事情没有得到确认暂时无法进行工作,想着之前领导说全组要学习下 Android 原生开发,加之本来就对 Android 一直心心念念,于是折腾起来 这都不叫事儿,然而大家都知道,虚拟机启动贼慢,更倾向于真机开发,于是对着我这个 pro5 看了半天没找到开发者调试选项,后来在内置光盘中,看到了两个文档,似乎是跟开发有关的,于是照着做了起来 在 adb 相关的文档中,魅族给出了原文链接:https://developer.android.com/studio/run/device.html,从这里找到了魅族 pro5 进入开发者的方法,点击版本号 7 次(彩蛋变成了开发者模式。。。) 然而我就是没事儿找事儿啊,看到旁边还有个 mtp 配置什么的,也就照做了,完事儿重新启动了一下,就废了,一直无法进入桌面系统,不停的闪啊闪 一开始看到的提示是(请自行启动模糊匹配):/dev/sda2: clean, 2934234/2397429, 293874239/2398472 blocks. 这个 blocks 有阻塞的意思,还以为是文件有了什么问题,到处搜,按照搜索结果执行什么 fsck(在此发现了我的 U....

阅读全文 »

宋词三百首 有更新!

宴山亭 · 北行见杏花 赵佶 裁剪冰绡,轻叠数重,淡着燕脂匀注。 新样靓妆,艳溢香融,羞杀蕊珠宫女。 易得凋零,更多少,无情风雨。 愁苦,问院落凄凉,几番春暮。 凭寄离恨重重,者双燕何曾,会人言语。 天遥地远,万水千山,知他故宫何处。 怎不思量,除梦里,有时曾去。 无据,和梦也新来不做。 木兰花 钱惟演 城上风光莺语乱,城下烟波春拍岸。 绿杨芳草几时休,泪眼愁肠先已断。 情怀渐觉成衰晚,鸾镜朱颜惊暗换。 昔年多病厌芳尊,今日芳尊惟恐浅。 苏幕遮 范仲淹 碧云天,黄叶地,秋色连波,波上寒烟翠。 山映斜阳天接水,芳草无情,更在斜阳外。 黯乡魂,追旅思,夜夜除非,好梦留人睡。 明月楼高休独倚,酒入愁肠,化作相思泪。 御街行 范仲淹 纷纷坠叶飘香砌,夜寂静,寒声碎。 真珠帘卷玉楼空,天淡银河垂地。 年年今夜,月华如练,长是人千里。 愁肠已断无由醉,酒未到,先成泪。 残灯明灭枕头欹,谙尽孤眠滋味。 都来此事,眉间心上,无计相回避。 千秋岁 张先 数声鶗鴂,又报芳菲歇。惜春更选残红折,雨轻风色暴,梅子青时节。 永丰柳,无人尽日花飞雪。 莫把幺弦拨,怨极弦能说。天不老,情难绝。心似双丝网,中....

阅读全文 »

Maven 项目使用 Tomcat 插件自定义 context.xml 有更新!

Java 界的三大 IDE,IntelliJ Idea,Eclipse,Netbeans,如今暂且决定用 IntelliJ Idea,因为成功部署了公司及私人项目。 本文可能莫名其妙的嵌入了不少样式,这是为了测试新版 Markdown 的效果 😁 说起来,D 大一直强推的 Netbeans,用了一段时间,对于 Symphony 来说没有任何问题,但对于公司项目的话,由于 JNDI 的设置写在了 Tocmat 的 context.xml 中,一直没有找到解决办法,也就无法将 Netbeans 用在公司项目,加之上周出现了莫名其妙的错误,彻底无法使用了。 Netbeans 有几点确实比 Eclipse 好,然而发现这几个小点儿在 Idea 中也存在,看来Idea 排名第二,NB 排名第三,也不是没有道理的。 是时候跟 Eclipse 说 bye bye 了 ~ (可惜了今年刚学会的不少快捷键 orz) 我使用的是 Community 版,没有 JavaEE 支持,不过想来现在大部分项目都是 maven(自从会导入 maven 项目了,就开始鄙视并抵制非 maven 项目 😂 ),使用 Tomcat Maven plugin 就可以免于....

阅读全文 »

全新的Todo进行中

之前的实现方式是文件读写 此番改成了基于 Redis 的实现(然而我对这个也不是很了解,功能虽然实现了,但是不知道有没有引起连接问题) Redis 的备份需要对 Redis 进行配置,本项目没有处理 改版后,实现功能更为方便一些,除了以前的指令: - todo new <typeName> : 添加新类型 - todo <num>: 选中指定序号的类型 - todo add <todo message>:添加 todo 任务 - todo done <num>: 完成指定序号的任务 - todo undone <num>: 指定序号的任务标记为未完成 - todo list: 显示当前类型下的所有任务 等之外,添加了如下新的指令: - todo doing <num>: 指定序号的任务标记为进行中 - todo export <filepath>: 将所有任务导出到指定目录下,名称为 TodoList.json - todo generate <filepath>: 将所有任务导出到指定目录下,名称为 Tod....

阅读全文 »

Idea插件开发手记

Idea 有很多实用的插件,极大地方便了码农的搬砖工作 但有些功能求人不如求己,毕竟每个人的习惯和遇到的问题是不一样的。 问题背景 有的时候(然而我已经忘了什么时候),会想知道某段代码多少行,之前的做法是复制出来放到新建的文本编辑器中查看,后来感觉这种事情应当可以写插件来实现,于是诞生了这个项目——计算代码行数。 这是个极为简单的功能,但是写插件这种事情我是一头雾水,于是第一步,搜索 GitHub,浏览了许多,发现了一个插件,作用是给一段文本排序:LinesSorter,想想恰好能改为我想要的功能,果断 FORK 下来。 在之前的工作中,经常会犯一种低级错误——set 错字段,因为两个字段的单词首字母很接近(可能头两个字母都是一样的),恰好类型有一样,一个不注意,setOrderId 可能就 set 成了 OrnotId(意会),于是产生了第二个想法——标记行内相同的单词。如此只要标记下,就能很直观的看到是否 set 正确了。 轻车熟路,搜索 GitHub,发现插件 MultiHighlight,果断 FORK。 环境搭建 环境搭建很容易,安装 intelliJ SDK 插....

阅读全文 »

我与大神——集合类型转换

本文是我的代码和大神代码的对比。当大神问我,既然用了 Java 8 怎么不这么这么写时,我的内心是崩溃的 😂 我的代码 public List<Student> getStudentByName(String name) { List<People> peoples = peopleService.getPeopleByName(name); List<Student> students = new ArrayList<>(); for(People people : peoples){ Student student = new Student(); students.add(convertStudent(people)); } return students; } private Student convertStudent(People people){ if(people == null){ return null; } Student student = new Student(); student.setName(pe....

阅读全文 »

Go by Example

本文收集了 Go By Example 的示例,并将注释写于代码之上,最后几节参考了其他人的翻译 GitHub 地址:原版 everyx 中文翻译 Go by Example Hello World 我们第一个程序就是打印经典的“hello world”,下面是完整的代码 package main import "fmt" func main(){ fmt.Println("hello world") } 要运行这个程序,将代码保存为 hello-world.go,然后使用 go run 有时候我们想让程序编译成二进制文件,可以使用 go build,然后就可以直接运行了。 Values Go 有多种值的类型,包括 string,integer,float,boolean 等。如下是几个基本例子。 package main import "fmt" func main(){ //string 可以使用 + 连接在一起 fmt.Println("go"+"lang") fmt.Println("1+1=",1+1) fmt.Pritnln("7.0/3.0=",7.0/3.0) fmt.Println(tr....

阅读全文 »

工作学习汇总(持续更新)

使用 Lombok 的 Data 注解,可以省略 Setter 和 Getter 的书写 SpringBoot 的配置文件具有有优先级的关系,低优先级的可以继承高优先级的配置,并且可以覆盖上层定义过的配置 对于数据表的单元测试,应当加上事务回滚(@Transactional,@Rollback)来保证反复测试的垃圾数据不会真正插入表中造成测试数据杂乱 MyBatis 可以添加 map-underscore-to-camel-case 配置来实现免 resultmap 等配置

阅读全文 »

通过case when进行行转列

行转列这个问题感觉经常会出现,但我一直没有 get 到,这次借着群里的小伙伴再次提到,解锁这一成就 😂 样本如下: 目标结果如下: 代码如下: select username, sum(case when bookname='X' then price end) as 'X', sum(case when bookname='Y' then price end) as 'Y', sum(case when bookname='Z' then price end) as 'Z' from test group by username 说明 可以看到,关键在于 case when 和聚合 通过多个 case when,来讲 bookname 列重复成多列,满足条件才显示,否则就是 null: 然后根据 username 进行聚合,将 null 的部分合并,就可以得到预期结果

阅读全文 »

优选帖子推荐算法测试 有更新!

为了验证社区的优选帖子算法而写的测试类,实现了下 Comparable 接口,算是学习了。Reddit 这个算法是 D 大借鉴的,其中的道理完全看不懂,所谓的睁眼瞎就是这个样子了…… package org.b3log.symphony.util; import org.testng.annotations.Test; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Random; /** * Created by Zephyr on 2017/2/18. */ public class redditScoreTest { @Test public void redditScore(){ List votes=new ArrayList(); Random random=new Random(); for(int i=0;i<100;i++){ int up=random.nextInt(100); int down=random.nextI....

阅读全文 »

技术群的推广反思

酒香不怕巷子深? 是金子总会发光的 酒香不怕巷子深 桃李不言 下自成蹊 这些话想必大家也是耳熟能详,我也曾经如此认为。可是随着姿势的增长,渐渐发现似乎事实并非如此。以 Solo,symphony 为例,D 老大一直在发愁推广与运营的事情。其实以我个人的标准而言已经很有知名度了……不过以个人工作过程中的直观感受来讲,能说会道的程序员,往往更得到领导的看中。你可能很有代码能力,但你可能根本不会得到施展的机会。(我倒不是以此自比,我的水平还差很远……) 总之,talk is cheap, show me the code,并不适用于我们这个社会。如果一味等待着发掘,恐怕早已深深的埋没在百花丛中。最近看了一点武则天传记,更感如此,这位女皇帝上位后很英明,造就了一番伟业,然而为了上位也是无所不用其极,没有机会也要创造机会。 推广还是耍流氓? 大家一定见过街头上发传单的。就我个人所见有如下几种: 随便发发的,手臂伸出来都很无力,你爱要不要 发的很用力,眼神很殷切,你不要都不好意思 发给你,你如果不接还则罢了,你要接了他还会跟着你,更奇葩的是如果你拒绝留下联系方式,他还把你收的传单拿回去了。(这么多....

阅读全文 »