编程

  • Python2中datetime对象的timestamp方法的替代

    在Python3里,可以直接用datetime对象的timestamp方法得到对应的时间戳。但是Python2又没有,为了兼容,还是要找到替代品,完成同样的事情。

    于是就Google一下“python 2 datetime timestamp”,第一个结果给出了这样的回答: [crayon-5ba87b25db56905891321 […]

  • C#中new Task中使用async lambda表达式后start的一个坑

    C#中的async/await/Task机制是个非常方便的功能,可以将异步的功能写成像同步一样易懂。在其背后,编译器做了一些脏活,比如将async方法从await的地方切开成多个方法,按顺序在线程池中运行。这其中也暗藏了一些坑,如果不是非常有经验的程序员可能就掉进去了。 比如如下的程序,会输出什么呢?

    这个程序开了两个Task,第一 […]

  • 如何编写油猴脚本

    前言 说到浏览器插件,喜欢研究的人一定不会陌生。一般来说,浏览器的插件都是会改一些网站的页面,做到类似去广告、增加功能的事情。在逛论坛的时候,我发现这样一个插件:TamperMonkey,也就是油猴。和其他插件不同,这个插件相当于是一个引擎,用户可以在其中安装或者开发想要的脚本,以完成自己想要的事情。另外一个好处是,这个插件已经支持了目前所有的主流浏览器(当然,没有国产的浏览器……),所以只要写一 […]

  • 汉化游戏如何改程序

    前言 最近在玩一个叫《冥界狂想曲重制版》的游戏,苦于没有中文,其中又有许多难懂的词汇和句子,游戏体验不好。既然是重制版,那就会有原版,原版还是有汉化的。可要是去玩原版,这重制的意义何在?为了玩上有中文的游戏,何不如自己动手,丰衣足食一把? 汉化流程 不同的游戏肯定是使用不同的机制来呈现文本的,但基本就只有几类,汉化的方式也大体相同。要想汉化,就需要经过以下过程: 解包,找到文本和字库 修改文本和字 […]

  • 用aspectj实现日志记录

    简介 记录日志在很多情况下都是必需的。但很多时候,日志与逻辑的代码混杂,让人难以阅读代码。如果能将记录日志与代码逻辑分离,就可以在满足日志需求的同时,让代码更加简明了。可以使用aspectj来达到这一目的。 aspectj提供了面向切面编程的功能。他可以“切开”原本的代码,并在切面上插入另一些代码,达到更改代码的目的。这个功能正适合于记录日志的场景。 在项目中使用aspectj 因为aspectj […]

  • Java自带的性能分析工具

    Java,或者说JDK自带了以下性能分析工具。如已经安装了Java,则可以在cmd下使用以下命令来分析Java的运行状态。 jcmd:打印一个 Java 进程的类,线程以及虚拟机信息。适合用在脚本中。使用 jcmd - h 来查看使用方法。 jconsole:提供 JVM 活动的图形化展示,包括线程使用,类使用以及垃圾回收(GC)信息。 jhat:帮助分析内存堆存储。 jmap:提供 JVM 内存 […]

  • 如何制作NES模拟器

    前言 大约是一周半前,女朋友说她想要练习写Java。我想了一下,觉得要练一种编程语言,不如就用那种语言写点东西,在实践中学到这种语言的用法。于是我就提出,不如做一个NES模拟器吧。既练习了Java,又复习了一些底层相关的课程,又可以用来玩,岂不是一举三得?她欣然接受。然而,我没想到的是,编写模拟器并非如此简单,其中的坑非常多。 收集文档 毕竟是20多年前的主机,NES的相关资料并不难找,在网上搜一 […]

  • Scala对象初始化时访问成员的坑

    先看如下代码:

    以doTest为入口,这个程序的输出是: null 和期望不一样啊! 原因是Scala以整个类中的内容为构造方法,执行顺序是从基类到子类。运行method时,obj还没有初始化,于是就返回了null。 因为obj不可变,所以这里也不能直接初始化。真正的解决方法是使用lazy关键字,它可以让成员在第一次使用时被初始化。 […]

  • 用git布署网站的方法

    大家都知道github提供了搭建静态页面网站的方式,也就是github.io。其使用方式是建一个指定名称的版本库,以版本库的根目录作为网站的根目录。这样做有一些好处,比如很容易实现网站的版本控制,部署起来也相对方便。而且,不光是静态页面,对于一些脚本类网站,这个方式也是很不错的。(jsp就别想了)。 那么如果我有一台服务器(Windows或是Linux),可以用来架设网站,那么是不是也能像gith […]

  • 解决android studio Gradle: 警告:编码 GBK 的不可映射字符的真正方法

    首先,不是网上到处都可搜到的在build.gradle里加入以下语句的方法:

    也不是把Compile改成JavaCompile的版本:

    如果能注意到编译出现的以下信息,并点了More Info的话,就可以进入这个页面,看到答案了。 所以加入以下配置即可: [crayo […]

文章导航