- 博客(34)
- 资源 (1)
- 收藏
- 关注
原创 Go语言常见序列化协议全面对比
从易用性、性能、内存占用、编码后大小等几个方面综合考虑 ProtoBuf 胜出。Gob 从性能和 I/O 带宽占用上都和 ProtoBuf 差不多,唯一劣势是编解码时内存占用较多。考虑到不用再写 IDL 带来的易用性,如果整个系统内不存在使用除 Go 以外其他语言的服务,是更合适的选择。
2024-07-25 17:57:28
1466
原创 如何优雅的让Webstorm按照eslint规则reformat
前端项目中经常会有不同的规范,比如Airbnb的stardend标准,要求每行结尾不加分号、字符串必须使用单引号等。但Webstorm中有自己的一套代码规范,格式化的时候根本不按照eslint来,怎么才能让Webstorm遵循eslint的规则呢?...
2022-07-13 12:02:40
2327
原创 在MacOS中将HMCL添加到Launchpad启动台
在Mac上玩Minecraft,官方的启动器又慢又不方便管理Mod。所以需要搞一个启动器,看了一下HMCL是个不错的启动器,但是它只提供了Jar包,没有打包成Application。执行起来不够优雅和方便。所以稍微研究了一下怎么包装成一个Application。...
2022-07-04 20:22:06
4225
3
翻译 FreeCAD快速开始
前言FreeCAD是一个三维参数化建模应用程序。它主要用于机械设计,但也适用于其他所有需要精确3D建模和控制模型历史的用途。FreeCAD从2002年开始开发,提供了大量的功能,虽然功能还有待继续完善,但对于业余爱好者和小型工作室来说也已经足够了。FreeCAD forum社区用户活跃,你可以找到大量的高质量项目示例。如果要在生产中使用FreeCAD,建议看看这个。像所有的自由软件项目一样,FreeCAD的发展离不开其社区的支持。如果你喜欢,你可以通过各种方式捐赠和帮助FreeCAD,比如写文档和翻译
2021-08-11 14:16:38
7747
2
原创 计算机的时间魔法(定时器)
5月组内月度分享的时候,大家讨论到了在Java里时间轮是靠什么驱动运作的。这引发了我对时间驱动力的探索。这个世界本质上就是时间驱动的,这是自然的真实反映。试想如果时间停滞,所有的动作也都会暂停。计算机系统本质上也是时间驱动的。计算机系统的时间概念是由电子振荡器的反复振荡产生的。我们从计算机最底层的硬件讲起,再到操作系统,再到Java,一步一步探究时间驱动力的奥秘。由于篇幅太长…………所以我们分几篇来讲。链接链接链接链接链接...
2021-06-28 18:02:34
455
原创 计算机的时间魔法(定时器)——总结
从硬件层面到Java层面,理顺整个流程是一件很爽的事情,阅读这些源码让你有一种醍醐灌顶的感觉。心中有数仿佛自己也能写个操作系统了的自信(错觉)。为了大家更好的回顾整个流程,我用图示的方式从头到尾整理了一遍,希望能够对大家有所帮助。整篇文章都是基于我自己的理解来做的,难免有些错误、疏漏,还请大家指正。最后的最后,还有一个相对哲学的问题,振荡器是通过电来驱动的。如果时间停止,振荡器还能工作吗?...
2021-06-28 18:01:04
220
1
原创 Java中的定时器
一、Timer和TimerTaskTimer是jdk中提供的一个定时器工具,使用的时候会在主线程之外起一个单独的线程执行指定的计划任务,可以指定执行一次或者反复执行多次。TimerTask是一个实现了Runnable接口的抽象类,代表一个可以被Timer执行的任务。1. 使用schedule(TimerTask task, long delay, long period)延迟 delay 执行,并每隔period 执行一次public static void main(String[] ar
2021-06-28 17:53:31
791
原创 从Java Thread到OS Thread
我们从Java的线程开始,分析一些多年以来的疑问,到底Java的Thread和系统的Thread有什么关系呢?一、线程的表现形式1. 从Thread开始我们从Thread类看起。在Java里,Thread类就用来表示一条线程。但很明显,Java的Thread只是在应用层面的表象,如何真正创建一条线程,是在JVM中完成的。public class Thread implements Runnable { // ... public synchronized void star
2021-06-28 17:49:31
647
原创 操作系统对定时器的应用
到了在操作系统层面,可以依靠硬件产生的定时器中断做很多事情,同时,操作系统的定时器怎么实现呢?我们来分析一下。1. 硬件定时器现在的Linux对时间的管理是很复杂的,大体可以分为高精度时钟和低精度时钟。两者互不兼容。在 Linux 2.6.16 之前,内核只支持低精度时钟。内核围绕着 tick 时钟来实现所有的时间相关功能。tick 是一个定期触发的中断,一般由 PIT 提供,大概 10ms 触发一次 (100HZ),精度比较低。如果频率设置的太高,就会严重影响系统性能。(1) tick以 x86
2021-06-28 17:40:33
2132
原创 计算机的定时器实现(下)
(在上篇中,我们通过简单的8051芯片,初步窥探了一下定时器的原理和如何驱动。这篇我们来探讨更实际的x86架构)5. x86的定时器实现(1)发展历程x86架构已经有几十年的历史了,随着科技不断进步,定时器的实现也是经历了几个阶段的发展的。PICIntel的传奇中断控制芯片8259在1976年就被用在8085系列产品中。PC在1981年出生时借鉴了这种思想,8259的升级版8259A被用于中断控制,而其统治PC长达近10年,直到486电脑的诞生。APIC80486DX在1990年上市,其
2021-06-28 17:35:00
616
2
原创 计算机的定时器实现(上)
1. 计算机基本组成冯·诺依曼体系架构下的计算机,是由运算器、控制器和存储器组成的。现代计算机通常还会有外部存储器和各种外围的I/O设备组成。限于篇幅,我们只能简单的聊一聊运算器、控制器和存储器,不敢深入原理,否则就是另外一个专题了。大家如果有兴趣,我们后面可以再搞一个专题专门来聊一聊。我以前上学的时候,听过一种很奇怪的说法,说是冯·诺依曼体系就是二进制计算机。其实冯·诺依曼跟二进制没啥关系,真要说二进制体系,那是香农的功劳。(1)运算器和控制器大家都知道现在这俩东西合起来被称为了CPU。因为他
2021-06-28 17:28:29
1488
2
原创 基于SDCC的工程化实践
基于SDCC的工程化实践一、上位机环境MacBook Pro系统:macOS Big Sur编译器:SDCC烧录器:stcgal二、总结先说结论:由于sdcc对中文的支持不好,我尝试了各种办法均无解,不想浪费太多时间在趟坑上面,所以暂时放弃了探索。转而使用Windows的PC机作为开发机,重点是使用Keil C编译器。(为什么需要用到中文?因为要向屏幕上输出中文…… 有些液晶屏驱动还不带中文字库,需要自己维护字库,就需要维护charcode和代码对应关系,如果都是用unicode编码来替代
2021-02-20 15:12:26
1466
2
原创 常见开源规则引擎对比分析
0x00 目的背景电商会员服务的等级、积分、权益等模块中,都使用了大量的规则判断。范式基本上是 达成xxx条件,执行xxx行为 。这很符合规则引擎那一套,因此下面选取了几个业界常见的规则引擎进行分析。我们分别都从使用角度、原理角度两个方面进行分析。0x01 easy-rules项目地址:https://github.com/j-easy/easy-rules1. 规则模型
Django REST Framework官方教程6–视图集和路由器(ViewSets & Routers)
2017-04-01 10:14:16
2182
翻译 OpenAPI Specification 2.0
OpenAPI规范OpenAPI的前身是swagger规范。Swagger是一套有助于前后端分离,接口管理和测试工具集。
2017-03-23 09:42:34
11848
翻译 教程3--基于类的视图
除了使用基于函数的视图,我们也可以使用基于类的视图。由于类视图的可复用性,我们可以缩减很多代码,这也体现了DRY原则。 这一篇主要内容就是改写之前的写的视图,各种花式改编,最后你就会发现,原来一个基于模型的视图类原来可以寥寥几行代码就搞定了。
2017-03-16 10:45:22
346
原创 IDEA中maven项目webapp目录未被识别
本来不想发上来的,不过今天又遇到了这个问题,发上来提醒一下同样粗心的同僚们。maven项目中默认的web root 目录就是main/webapp目录。如果发现你的webapp目录没有被idea识别。不要试图通过project structure强行配置。肯定是你的项目结构或者pom.xml的配置有问题导致的。 首先检查项目结构:是在src/main/webapp目录,还要注意是webapp不是w
2016-12-31 17:12:41
15093
8
原创 在Windows下使用JNI技术.md
Java Native Interface技术用来调用本地接口。在Windows系统中,使用的是dll动态链接库技术。TIPS:静态库和动态库区别静态库在link时会被整合到二进制文件中,而动态库则不会,它在运行时独立存在,独立地被调用。 想想Java是一种半编译半解释型的语言,编译的最终产物是class文件,我们肯定不能将C++的库文件编译到class中去,所以一定使用的是动态库。一、定义接口首
2016-10-26 14:32:45
991
原创 在Windows上使用CMake编译64位dll
使用cmake编译64的dll一开始使用cmake --build .来生成了dll,在导入到java项目中使用的时候,才发现是32位的。导致程序不能正常运行,报错如下:Exception in thread "main" java.lang.UnsatisfiedLinkErrorCan't load IA 32-bit .dll on a AMD 64-bit platform即由于在AMD6
2016-10-26 14:30:58
15786
原创 Spring Security的加载过程
Spring Security是我一直想要研究的一个开源项目,之前也尝试着用它做个几个小小的demo,但是总觉得不得要领。所以干脆从源码入手,来分析一下它的加载过程。
2016-09-23 11:19:58
3248
原创 每天学点儿树莓派(番外一)——AirPlay播放器
这两天手头暂时没有什么可以折腾的东西,公司里也比较忙。思来想去不如放下脚步写点儿树莓派好玩的东西。所以就搞了个番外篇,以后也会不定期的写几篇番外篇来介绍树莓派的各种好玩的用法。 AirPlay是苹果公司推出的一套无线音乐解决方案。现在我们手里的iPhone、iPad甚至是Apple Watch等设备还有电脑上的iTunes都支持AirPlay。但是支持AirPlay功能的音响设备都贵得要死,作为屌
2015-10-22 23:13:31
2961
原创 每天学点儿树莓派(三)——使用IDE提高效率
今天我们继续来讨论关于使用Java编程语言通过pi4j开源库来进行树莓派编程的问题。 之前或许大家有注意到,我们所有的java程序的源码都是在vim中写的,虽说vim是linux下最好的编辑器了,但是它毕竟不适合Java程序员,动不动就写错的长长的类名,大量本来无需记忆的变量名,以及编译命令的使用,都大大降低了我们的编程效率。那么能不能在我们所熟知的IDE中来编译树莓派的程序呢?答案当然是可以。一
2015-10-20 01:02:52
9348
原创 每天学点儿树莓派(二)——光敏控制LED
一、光敏电阻的接法我这里使用到的光敏电阻就是我们最常见的光敏电阻模块 你手里如果有光敏电阻,估计也和我的差不多,如果你是用的是红外光敏,用法也应该是大同小异。 光敏电阻模块有三个引脚,分别是VCC、GND和DQ,其工作电压应为3.3V-5V,所以在树莓派上接3.3和接5V都是正确的,接法如下: 光敏电阻 树莓派 VCC 5V GND Ground DQ GPIO
2015-10-18 23:36:59
7592
原创 每天学点儿树莓派(一)——开山篇
首先,说明一点,我基本上来说就是个电路白痴,在学习考试从来没及格过。奈何一个软件工程师总是与硬件也有着不解的情缘。毕竟硬件是躯干,软件是灵魂,二者总是不可分割的。所以,前几天实在是没忍住入手了一台树莓派,想着先学着,一边看一边学,同时做做笔记。有空的时候我就把它整理出来放到博客上来。一是希望和我一样想要学习树莓派,但是却在软件或者硬件的某一个方面欠缺的同学能够从中获益,二也是希望能够以此鞭策自己每天
2015-10-18 20:22:45
1443
原创 使用阿里云服务器搭建Android自动构建平台Jenkins
使用阿里云服务器搭建Android自动构建平台Jenkins 欢迎转载,但是不要忘记写明出处哟~ 阿里云服务器推出了一个15天试用计划,以前从来没玩过云服务器这么先进的东西,于是申请了一个玩玩,之前在树莓派上有搭过一次CI的平台,结果因为Android SDK没有ARM版的,最终无奈终止了尝试。现在正好在云服务器上搭一个玩玩。 万事开头难,搭建和配置环境大概是最麻烦最容易出各种
2015-10-18 19:41:11
7416
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人