又一年啦,才读了46本书,而这些书中,又能有多少用于实践呢。

6bc0d328.png 55800500.png 26d343f9.png

很久之前就用过maven了,各种版本兼容性问题多多。
后来Gradle出现了,很是清新,只是出来的时间比较短,问题也不少,现在成熟了很多。

先说结论

除了墙的问题外,Gradle要比Maven好用,Maven目前有较大的存量市场。

下面是官方的文章部分翻译

灵活性(flexibility)

google 选择 Gradle 作为 Android 的官方构建工具,因为 Gradle 的构建模式易于扩展
Maven 的构建模式比较僵硬,在自定义方面比较繁琐,有时甚至无法做到。

性能(performance)

Gradle有三个主要的特性使编译时间比Maven要短

  • 增量编译
  • 编译缓存:重复使用输出结果
  • Gradle Daemon:守护进程保证构建信息在内存中时新的

用户体验(user experience)

  • IDE方面:持续改进,支持Kotlin-based DSL
  • CLI方面:提供完善的支持
  • 交互式的Web UI调试,优化构建系统

依赖管理(dependency management)

Maven只能通过版本来覆盖依赖
Gradle提供了自定义的起来选择和替换规则,可以声明一次,在整个项目中有效

头文件定义消息

#define WM_MYMSG (WM_USER+100)

LRESULT OnMyMsg(UINT uMsg, WPARAM wp, LPARAM lp, BOOL & bHandled);

//HostWnd真实窗口消息处理
BEGIN_MSG_MAP_EX(CDlgLogin)
MESSAGE_HANDLER(WM_MYMSG, OnMyMsg)
MSG_WM_CREATE(OnCreate)
...


LRESULT CDlgLogin::OnMyMsg(UINT uMsg, WPARAM wp, LPARAM lp, BOOL & bHandled)
{
return 0;
}

在线程中发送消息

::PostMessage(pwnd->m_hWnd, WM_MYMSG, 2, 0);

数据库事务的几个特性:
原子性(Atomicity),一致性(Consistency),隔离性或独立性(Isolation)和持久性(Durabilily),简称就是ACID

原子性

事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。

一致性

事务应确保数据库的状态从一个一致状态转变为另一个一致状态。一致状态的含义是数据库中的数据应满足完整性约束。
举例:在转账之前,A和B的账户中共有500+500=1000元钱。在转账之后,A和B的账户中共有400+600=1000元。

隔离性

多个事务并发执行时,一个事务的执行不应影响其他事务的执行。

持久性

一个事务一旦提交,他对数据库的修改应该永久保存在数据库中。

阅读全文 »

参考

简短的解释:按照业务范围建立独立的服务,多个服务组成一个完整的业务模型,各服务之间通过RPC,HTTP等方式通信。
适合在记录型系统和交互型系统中使用。

下面是详细的说明。

阅读全文 »

Swindow有直接判断鼠标指针是否在它的矩形范围内 或者是鼠标指针处于悬浮状态在Swindow的范围内

48b9ccf9.png

vs2019 编译问题

1>cpu.c
1>D:\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(2487,1): error C2118: negative subscript

修改项目的 win SDK 版本,降低或者升高可以解决。

这是常用操作,数据库的相关配置信息,debug 和 release 下面的配置信息是不同的。
还有其他不一样的信息。可以通过条件编译来实现。

初步调研了一下有两种方式:

通过ldflags设置变量

这个方式是通过编译参数来设置初始变量的值。

go build -ldflags "-X main.VERSION=1.0.0 -X 'main.BUILD_TIME=`date`' -X 'main.GO_VERSION=`go version`'"

引用环境变量的方式:
export TAG=v1.b.50
go build -ldflags "-X main.version='$TAG' -X main.conf=release"

“包名.变量名” 的形式
package main
...
var version = "unknown"
var conf string
...

goland设置参考如下:
dfb87b15.png

通过-tags的方式

这个目前还没好用,不知道问题在哪里,空行也有了,但是还是提示重复声明 redeclared in this block

类似编译宏定义。

在文件的第一行,注意和 package 之间有个空行。下面表示支持在 osx linux 下面编译

// +build darwin linux !debug

package main

go build -tags "debug"

一个API接口,都可以很认真的写一本书,很有专研精神,里面的内容也不错。希望每个提供API的人都能够看一看,减少些使用者的痛苦(我是受害者)。
我绝对不会让使用我的API的人,遭受和我同样的经历。

8d35ec77.png

复制

dict.copy()
返回一个字典的浅复制
bd09Points += resp['result'].copy()

打印

for key,value in dict.items():
print('{key}:{value}'.format(key = key, value = value))
阅读全文 »

取整

parseInt(5/2)

//向上取整,有小数,则整数部分加1
Math.ceil(5/2)

//四舍五入
Math.round(5/2)

//向下取整
Math.floor(5/2