框架

跟大家聊聊我们为什么要学习源码?学习源码对我们有用吗?(源码感悟)

白昼怎懂夜的黑 提交于 2020-03-07 23:33:41
1 前言 由于现在微服务很流行,越来越多企业采用了SpringCloud微服务架构,而SpringBoot则是快速构建微服务项目的利器。于是 源码笔记 以此为切入点,将SpringBoot作为我们源码分析的第一个开源项目,之后还会对更多开源项目进行源码分析。要进行源码分析,笔者结合自身经历来跟大家聊聊 我们为什么要学习源码 这个话题,大家一起探讨学习。 我们程序员在开发代码时每天都在使用别人写好的框架,无论你是在使用Spring生态的Spring核心,SpringMVC,SpringBoot和SpringCloud等框架,还是在使用阿里系的Dubbo,RocketMQ,Seata,Druid等中间件框架,亦或你是搞大数据的,在使用Apache组织的Zookeeper,Hadoop,Hive,Spark等大数据组件框架,这些开源框架都给我们的项目编码带来了极大的方便,促进了我们的开发效率。是的,这些都是开源大神们帮我们造好的轮子,我们直接使用即可,而且用起来很少出bug,因为这些框架一般都是经过考验的才能流行起来。 可能大部分人会认为,这些轮子都已经造好了,我们直接用即可。是的,这些开源框架对我们使用来说是透明的,它们就像一个个黑盒子。至于这些黑盒里面装的是什么东西,里面是怎样构造的,如果没有去探究这些黑盒的话,我们无从得知。但是,我们做开发的天天跟这些黑盒打交道

在windows上极简安装GPU版AI框架

≯℡__Kan透↙ 提交于 2020-03-07 22:22:10
在windows上极简安装GPU版AI框架 如果我们想在windows系统上安装GPU版本的AI框架,比如GPU版本的tesnorflow,通常我们会看到类似下面的安装教程 官方版本 安装CUDA 安装cuDNN 配置环境变量 安装python环境 安装gpu版的tensorflow开发包 咋看上去好像不是很复杂,但是其中坑多到你怀疑人生。 下载的cuDNN时候需要注册,而且因为cuDNN文件在外网,下载速度很慢。 比如不同版本的tensorflow和CUDA(cuDNN)的版本是有匹配关系的,那你可能会说我先查好他们的这个依赖关系,然后找好合适的版本再安装。 比如对于windows系统而言,显卡驱动的版本决定了你能够安装的CUDA版本,有部分教程会忽略这一点。 ...... 假如你幸运地把上面的这些坑全部趟过了,那你还可能会遇到一个问题,就是如果你用pip去安装tensorflow-gpu,还是有可能会报各种神奇的错误。事实上,在windows系统上安装AI框架,最好的方法是用conda,而不是用原生的pip。 总结了上面的这些常见的问题,下面我们开始介绍如何在windows上极简安装GPU版AI框架: 极简版本 安装Anaconda 新建conda虚拟环境(建议用python3.6,可换国内源) 安装显卡驱动(官网下载或者用驱动助手软件)

Python第三章

吃可爱长大的小学妹 提交于 2020-03-07 20:03:40
文章目录 Python第三章 一、课程计划 二、定时器 三、代理的使用 四、使用selenium+无头浏览器 五、综合案例 Python第三章 一、课程计划 网络爬虫: 抓取页面:请求url响应html HttpClient 解析页面: 使用Jsoup 爬虫框架: webmagic: Downloader:下载器 PageProcess:页面解析的业务逻辑 Pipeline:数据持久化。 Scheduler:url队列 课程计划: 爬虫的高级技术: 1)定时器 2)代理的使用 3)selenium+无头浏览器 4)综合案例 二、定时器 Timer Quartz:定时框架 功能强大,使用繁琐。 package cn . sgwks . crawler ; import org . springframework . boot . SpringApplication ; import org . springframework . boot . autoconfigure . SpringBootApplication ; import org . springframework . scheduling . annotation . EnableScheduling ; @SpringBootApplication //开启定时器 @EnableScheduling public

程序猿“一键续命”秘笈

耗尽温柔 提交于 2020-03-07 11:07:44
“程序员小哥哥,可以麻烦您个事吗(满怀期待的眼神)?” 3分钟没有回复的话,那么程序员小哥哥一定是在编程; 1小时之后,还没有回复,那么程序员哥哥一定还在编程; 1天之后消息依然没有提醒,那么程序员哥哥一定还在写代码…… 假设生活欺骗了你, 就去问问程序员为什么编程 假设工作让你心情宕机, 就去问问程序员BUG改完了吗 程序员大概是被我们调侃最多的职业了,但其实程序员对工作的要求正如他们对生活品质的要求:枸杞红枣保温杯,捏脚捶背样样全,一周一次大保健,20岁还是壮小伙,25岁已成油腻男。抵不住写代码的辛苦。收入是越高,可是头发越少,想来他们一定是因为压力山大,才发际线渐渐消失的吧~ 来讲述一个在深圳的程序老鸟的故事。 大城市普遍的现象就是较高的物价,高消费、高房租,谈了个女朋友连商场都不敢去逛(穷),几个月不出门宅在家里找工作。现在工作难找啊,大公司看资历竞争也大,一不小心就给淘汰了,小公司工作压力大啊,对程序猿更是早秃的直升机。 好不容易进了一家各方面都满意的公司,想着我应该是稳定下来了,现在就是努力工作提高业绩,一步步的往上爬。一段时间后,对公司的任务也算是得心应手,公司也器重我不断的加大工作难度,可工资是迟迟不上涨,我决定跟老板理论,可他给我来了个“帽子戏法”,之后我便跳槽到另一家公司。 第一次跳槽就让我尝到了甜头——我的工资翻倍了,之后又因为种种原因我陷入不断跳槽的深渊中

15类Android通用流行框架

不羁岁月 提交于 2020-03-07 10:05:39
15类Android通用流行框架 Android流行框架 缓存 DiskLruCache Java实现基于LRU的磁盘缓存 图片加载 Android Universal Image Loader 一个强大的加载,缓存,展示图片的库 Picasso 一个强大的图片下载与缓存的库 Fresco 一个用于管理图像和他们使用的内存的库 Glide 一个图片加载和缓存的库 图片处理 Picasso-transformations 一个为Picasso提供多种图片变换的库 Glide-transformations 一个为Glide提供多种图片变换的库 Android-gpuimage 基于OpenGL的Android过滤器 网络请求 Android Async HTTP Android异步HTTP库 AndroidAsync 异步Socket,HTTP(客户端+服务器),WebSocket,和socket.io库。基于NIO而不是线程。 OkHttp 一个Http与Http/2的客户端 Retrofit 类型安全的Http客户端 Volley Google推出的Android异步网络请求框架和图片加载框架 网络解析 Gson 一个Java序列化/反序列化库,可以将JSON和java对象互相转换 Jackson Jackson可以轻松地将Java对象转换成json对象和xml文档

springboot05-日志的配置

浪子不回头ぞ 提交于 2020-03-07 09:23:15
SpringBoot选用SLF4j和logback; SLF4j是抽象层,logback实现层 1、SLF4j使用 以后开发的时候,日志记录方法的调用,不应该来直接调用日志的实现类,而是调用抽象接口类。 给系统里面导入slf4j的jar和logback的实现jar package com . example . demo ; import org . slf4j . Logger ; import org . slf4j . LoggerFactory ; public class HelloWorld { public static void main ( String [ ] args ) { Logger logger = LoggerFactory . getLogger ( HelloWorld . class ) ; logger . info ( "HelloWorld" ) ; } } 每一个日志的实现框架都有自己的配置文件。 使用了slf4j以后, 配置文件还是做成日志实现框架的自己本身配置文件 。 2.遗留问题 a(slf4j+logback):Spring、Hibernate、MyBatis、xxxx:每一个框架的底层又使用了不同的日志框架。 我们要做到的就是:统一日志记录,即使是别的框架和我一起统一使用slf4j输出。 我们来看一下slf4j的legacy

MFC的消息机制

橙三吉。 提交于 2020-03-07 08:56:29
  众所周知,windows是基于消息驱动的,作好消息处理是WINDOWS编程的关键任务之一,用VC制作WINDOWS程式同样离不开消息的处理。这就要求我们对 VC中消息的处理有一个比较清淅的认识。只有这样才可能在必要的时候亲自动手完成一些复杂的消息映射处理。   在MFC中消息是通过一种的消息映射机制来处理的。其实质是一张消息及其处理函数的一一对应表以及分析处理这张表的应用框架内部的一些程序代码.这样的好处是可以避免像早期的SDK编程一样需要罗列一大堆的CASE语句来处理各种消息。由于不同种类的消息其处理方法是不同的,所以我们有必要先弄清楚 WINDOWS消息的种类。    WINDOWS 消息的种类:   1、标准WINDOWS消息:这类消息是以WM_为前缀,不过WM_COMMAND例外。 例如: WM_MOVE、WM_QUIT等。   2、命令消息:命令消息以WM_COMMAND为消息名。在消息中含有命令的标志符ID,以区分具体的命令。由菜单,工具栏等命令接口对象产生。   3、控件通知消息:控件通知消息也是以WM_COMMAND为消息名。由编辑框、列表框和子窗口发送给父窗口的通知消息。在消息中包含控件通知码,以区分具体控件的通知消息。   其中从CWnd派生的类可以接受上面的三种消息,从CCmdTarget派生的类能够接收命令消息

Django进阶 messages框架

无人久伴 提交于 2020-03-07 04:38:23
在 web 应用程序中,通常需要在处理表单或其他类型的用户输入之后,向用户显示一个通知消息(也称为 flash message)。对于这个功能,Django 提供基于 Cookie 和会话的消息,无论是匿名用户还是认证的用户。 消息框架允许临时将消息存储在请求中,并在下一个请求中提取它们并显示。 每个消息都带有一个特定 level 标签,表示其优先级。 启用消息框架 消息框架的实现通过一个中间件类和对应的上下文处理器。django-admin startproject 命令 创建的默认 settings.py 已经包含启用消息框架功能需要的所有的设置: INSTALLED_APPS django.contrib.messages MIDDLEWARE django.contrib.sessions.middleware.SessionMiddleware django.contrib.messages.middleware.MessageMiddleware 默认的后端存储依赖 sessions。 所以中间件中必须启用 SessionMiddleware 并出现在 MessageMiddleware 之前。 TEMPLATES context_processors 选项包含 django.contrib.messages.context_processors.messages

java日志架构

自古美人都是妖i 提交于 2020-03-07 02:58:37
第一章介绍 1.1 为什么有日志及框架? 跟踪用户对系统访问 统计 Debug 1.2 日志框架 市场上存在非常多的日志框架。 JUL(java.util.logging),JCL(Jakarta Commons Logging),Log4j,Log4j2,Logback(具体框架,springboot使用)、SLF4j、jboss-logging等。 Spring 在框架内部使用JCL。 Log4j被apache收购,升级,改为log4j2,框架改动很大,只是借用之名。 Log4j,Logback,SLF4j都是同一个作者。 1.3 优选slf4j+logback 第二章 原理 2.1 如何在系统中使用slf4j+logback https://www.slf4j.org 2.2 使用slf4j+其他实现 第三章 历史遗留问题 3.1 遗留问题解决 如何将这些框架统一日志记录,统一使用slf4j进行输出? springboot(slf4j+logback): Spring(commons-logging)、Hibernate(jboss-logging)、MyBatis、xxxx https://www.slf4j.org/legacy.html 3.2 想将应用中所使用的日志框架commons-logging排除掉 3.3 引入jcl转换为slf4j依赖包(偷梁换柱)

前后端分离技术特性,软件技术爱好者了解必看

牧云@^-^@ 提交于 2020-03-06 23:46:59
首先,Spring Cloud 是我们专注最用心的快速开发平台。 我在后台总是收到一些技术爱好者的疑问,说小白怎么了解前后端分离,怎么使用前后端分离技术。后面整理出来我们的技术特性给大家了解一下,再此多谢大家的支持啦!需要的朋友们也可以私信我找社区链接。 网站: 让天下无再难的开发技术 我们用了什么技术? 1.环境 Java SDK 1.8 Servlet 3.0/3.1 Apache Maven 3.x NodeJS 8.9.0 2.主框架 Spring Boot 2.0.4.RELEASE Spring Framework 5.0.10.RELEASE 3.持久层 Apache MyBatis 3.5.0 Hibernate Validation 5.0.1.Final Alibaba Druid 1.1.15 4.视图层 Spring MVC 5.0 Vue 2.6.10 CSS框架: sass 1.23.6 animate 3.7.2 normalize 8.0.1 JS框架及组件: element-ui 2.12.0 camunda-bpmn-moddle 4.3.0 vue-i18n 8.15.0 vue-router 3.1.3 vuex 3.1.2 vuedraggable 2.23.2 qs 6.9.1 pinyin4js 1.3.18 axios 0.19.0