草庐IT

PowerDotNet平台化软件架构设计与实现系列(02):数据库管理平台

为了DB复用和简化管理,我们对常见应用依赖的DB模块进行更高级的提取和抽象。虽然一些ORM可以简化DB开发,但是我们还是需要进行改进和优化,否则应用越多,后期管理运维越混乱。根据常见开发需要,数据库连接串、数据库元数据管理基本上是合格的开发人员必须要用到的功能。一、数据库连接数据库连接串管理起来不难,但是写法随意可能造成编程开发的混乱。通常我们写的应用程序,如果要访问数据库,除了调用远程API服务,基本都会配置一个或多个数据库连接串,有数据库密码安全需要的还需要配置安全模块。随着应用增多,数据库连接串使用容易失控。我个人在某厂碰到过某大型CS结构的应用程序,WinForm客户端赫然写着各种数据

PowerDotNet平台化软件架构设计与实现系列(02):数据库管理平台

为了DB复用和简化管理,我们对常见应用依赖的DB模块进行更高级的提取和抽象。虽然一些ORM可以简化DB开发,但是我们还是需要进行改进和优化,否则应用越多,后期管理运维越混乱。根据常见开发需要,数据库连接串、数据库元数据管理基本上是合格的开发人员必须要用到的功能。一、数据库连接数据库连接串管理起来不难,但是写法随意可能造成编程开发的混乱。通常我们写的应用程序,如果要访问数据库,除了调用远程API服务,基本都会配置一个或多个数据库连接串,有数据库密码安全需要的还需要配置安全模块。随着应用增多,数据库连接串使用容易失控。我个人在某厂碰到过某大型CS结构的应用程序,WinForm客户端赫然写着各种数据

我的Go并发之旅、02 基本并发原语

注:本文所有函数名为中文名,并不符合代码规范,仅供读者理解参考。GoroutineGo程不是OS线程,也不是绿色线程(语言运行时管理的线程),而是更高级别的抽象,一种特殊的协程。是一种非抢占式的简单并发子goroutine(函数、闭包、方法)。不能被中断,但有多个point可以暂停或重新进入。goroutine在它们所创建的相同地址空间内执行,特别是在循环创建go程的时候,推荐将变量显式映射到闭包(引用外部作用域变量的函数)中。fork-join并发模型Fork在程序中的任意节点,子节支可以与父节点同时运行。join在将来某个时候这些并发分支会合并在一起,这是保持程序正确性和消除竞争条件的关键

我的Go并发之旅、02 基本并发原语

注:本文所有函数名为中文名,并不符合代码规范,仅供读者理解参考。GoroutineGo程不是OS线程,也不是绿色线程(语言运行时管理的线程),而是更高级别的抽象,一种特殊的协程。是一种非抢占式的简单并发子goroutine(函数、闭包、方法)。不能被中断,但有多个point可以暂停或重新进入。goroutine在它们所创建的相同地址空间内执行,特别是在循环创建go程的时候,推荐将变量显式映射到闭包(引用外部作用域变量的函数)中。fork-join并发模型Fork在程序中的任意节点,子节支可以与父节点同时运行。join在将来某个时候这些并发分支会合并在一起,这是保持程序正确性和消除竞争条件的关键

day02-容器功能

容器功能1.Spring注入组件的注解Spring中的传统注解@Component、@Controller、@Service、@Repository,在SpringBoot中仍然有效。2.@Configuration@Configuration是Spring3.0添加的一个注解,用来代替原先Spring中的applicationContext.xml容器配置文件,所有这个配置文件里面能做到的事情都可以通过这个注解所在类来进行注册。在SpringBoot项目中,依然可以使用Spring的容器文件来注入bean/获取bean,但是不推荐使用2.1应用实例例子:使用SpringBoot的注解@Con

day02-容器功能

容器功能1.Spring注入组件的注解Spring中的传统注解@Component、@Controller、@Service、@Repository,在SpringBoot中仍然有效。2.@Configuration@Configuration是Spring3.0添加的一个注解,用来代替原先Spring中的applicationContext.xml容器配置文件,所有这个配置文件里面能做到的事情都可以通过这个注解所在类来进行注册。在SpringBoot项目中,依然可以使用Spring的容器文件来注入bean/获取bean,但是不推荐使用2.1应用实例例子:使用SpringBoot的注解@Con

OpenWrt 20.02.2 小米路由器3G配置CP1025网络打印

家里的施乐CP116w工作快五年了终于罢工了.黑粉报错,自己也不会拆,只能搁置了.后来换了个HPCP1025.这个打印机也不错,墨盒便宜没什么废粉,就是启动慢一点,而且--没有网络,打印不太方便.今天用一个刷好OpenWrt20.02.2的小米路由器3G,配置了网络打印,记录一下过程.硬件准备小米路由器3G(或者其它带USB口的,能运行OpenWrt的路由器),如何刷机可以参考前面的笔记打印机CP1025安装软件SSH登录到小米路由器3G上,opkgupdateopkginstallkmod-usb-printeropkginstallp910ndluci-app-p910nd重启路由器,登录

OpenWrt 20.02.2 小米路由器3G配置CP1025网络打印

家里的施乐CP116w工作快五年了终于罢工了.黑粉报错,自己也不会拆,只能搁置了.后来换了个HPCP1025.这个打印机也不错,墨盒便宜没什么废粉,就是启动慢一点,而且--没有网络,打印不太方便.今天用一个刷好OpenWrt20.02.2的小米路由器3G,配置了网络打印,记录一下过程.硬件准备小米路由器3G(或者其它带USB口的,能运行OpenWrt的路由器),如何刷机可以参考前面的笔记打印机CP1025安装软件SSH登录到小米路由器3G上,opkgupdateopkginstallkmod-usb-printeropkginstallp910ndluci-app-p910nd重启路由器,登录

STM32与物联网02-网络数据收发

在上一节中,介绍了ESP8266的使用方法。不过上一节中都是通过串口调试工具手动发送信息的方式来操作ESP8266,这肯定不能用于实际开发。因此,本节介绍如何编写合适的程序来和ESP8266交互,从而收发并解析网络数据。TCP服务器在TCP服务器下,可以使用移动设备主动连接ESP8266提供的WiFi。如果编写正确的程序,那么可以使用移动设备控制ESP8266。建立TCP服务器从上一节的介绍可以了解到,程序和ESP8266的交互主要是通过发送AT指令完成的,因此程序中首要的任务就是编写合适的程序向ESP8266发送指令。不过在发送指令后,可能还需要判断指令是否被成功接收。一般来说,ESP826

STM32与物联网02-网络数据收发

在上一节中,介绍了ESP8266的使用方法。不过上一节中都是通过串口调试工具手动发送信息的方式来操作ESP8266,这肯定不能用于实际开发。因此,本节介绍如何编写合适的程序来和ESP8266交互,从而收发并解析网络数据。TCP服务器在TCP服务器下,可以使用移动设备主动连接ESP8266提供的WiFi。如果编写正确的程序,那么可以使用移动设备控制ESP8266。建立TCP服务器从上一节的介绍可以了解到,程序和ESP8266的交互主要是通过发送AT指令完成的,因此程序中首要的任务就是编写合适的程序向ESP8266发送指令。不过在发送指令后,可能还需要判断指令是否被成功接收。一般来说,ESP826