能力说明:
精通JVM运行机制,包括类生命、内存模型、垃圾回收及JVM常见参数;能够熟练使用Runnable接口创建线程和使用ExecutorService并发执行任务、识别潜在的死锁线程问题;能够使用Synchronized关键字和atomic包控制线程的执行顺序,使用并行Fork/Join框架;能过开发使用原始版本函数式接口的代码。
能力说明:
通过课程学习与实战项目,熟练掌握Python的语法知识与编程技能,具备Python语言的函数、面向对象、异常处理等能力,常用开发框架的实际应用和开发能力,具备使用,掌握Python数据分析三剑客Matplotlib、Numpy、Pandas的概念与应用场景,掌握利用Python语言从数据采集到分析的全流程相关知识。
能力说明:
能够开发出高质量的代码。能够熟练使用Golang的高级特性,各种应用框架和测试框架。
能力说明:
掌握企业中如何利用常见工具,进行前端开发软件的版本控制与项目构建和协同。开发方面,熟练掌握Vue.js、React、AngularJS和响应式框架Bootstrap,具备开发高级交互网页的能力,具备基于移动设备的Web前端开发,以及Node.js服务器端开发技能。
能力说明:
理解微服务架构与单体应用架构在开发模式与运维上的区别,了解分布式、容器、DevOps在微服务架构中的应用,理解微服务的设计原则与服务组件。了解Service Mesh概念与Istio基础知识。
能力说明:
熟练掌握Linux常用命令、文件及用户管理、文本处理、Vim工具使用等,熟练掌握企业IP规划、子网划分、Linux的路由、网卡、以及其他企业级网络配置技术,可进行Web服务器(Nginx),以及数据库(My SQL)的搭建、配置、应用,可根据需求编写Shell脚本,通过常用工具进行linux服务器自动化运维。
能力说明:
掌握Java开发环境下所需的MySQL高级技巧,包括索引策略、innodb和myisam存储引擎,熟悉MySQL锁机制,能熟练配置MySQL主从复制,熟练掌握日常SQL诊断和性能分析工具和策略。可对云数据库进行备份恢复与监控、安全策略的设置,并可对云数据库进行性能优化。掌握主要NOSQL数据库的应用技术。
硕士,毕业于中国矿业大学,徐州软件协会副理事长,从业十余年,发表论文数十篇,著书四本。
重点讲解python如何利用requests库来进行常见的post请求,这里涉及到三种常见的方式:application/x-www-form-urlencoded ;application/json 和 multipart/form-data 。
本文基于Ubuntu 20.04 LTS版本用实例来讲解如何配置开机自启动服务。
OpenVINO是英特尔推出的一款AI工具套件,可以用于快速部署AI应用和解决方案,支持计算机视觉的CNN网络结构超过150余种。它可以兼容多种主流的开源框架如PyTorch,Tensorflow,Keras,mxnet、Caffe和ONNX,并可以将上述开源框架训练好的模型,轻松的通过工具转换到OpenVINO框架上,并支持将预训练模型部署到英特尔的CPU、GPU和VPU上。
本文以图文并茂的方式介绍如何在Visual Studio Code上快速搭建C++开发环境。
一般来说,常见的物联网通讯协议众多,如蓝牙、Zigbee、WiFi、ModBus、PROFINET、EtherCAT、蜂窝等。而在众多的物联网通讯协议中,Modbus是当前非常流行的一种通讯协议。它一种串行通信协议,是Modicon公司于1979年为使用可编程逻辑控制器(PLC)通信而制定的,可以说,它已经成为工业领域通信协议的业界标准。
Linux操作系统目前在各类云服务器中被广泛使用,目前开源的Linux操作系统比比较多,常见的有CentOS和Ubuntu等,而当前在Web企业级应用中,Java语言占用非常重要的地位。基于Java语言开发的Web应用,常常需要与Tomcat服务器进行搭配使用。因此,在Linux操作系统上进行Tomcat服务器的安装和运维是必须要掌握的知识点。
Linux操作系统目前在各类云服务器中被广泛使用,很多大数据框架,如Spark、Flink、Hadoop等多数被部署到Linux操作系统中。Linux操作系统作为非常重要的服务器类系统,日常的运维和管理,以及各类基础软件的安装等工作,都需要与Linux操作系统中的文件和目录打交道,因此,Linux操作系统的文件和目录相关操作的Shell命令是必须要掌握的知识点。
GDI+的核心是 Graphics 对象,Graphics 类定义了绘制和填充图形对象的方法和属性。Graphics 类的属性(字段)很多,具体可参见 MSDN。Graphics 类的方法分为三类:绘制、填充及其他。
在开始正式介绍如何开发自定义控件之前,有必要先了解一下控件开发的基础知识。下面从控件的概念、分类和开发模式上对控件做一个基本的概述。
本文将利用C#中的GDI+技术,自动绘制相关的UI元素,实现Window Form的步骤条控件。
WPF中的控件,有不少都是需要绑定数据的,例如ComboBox控件可以绑定数据,从下拉列表中进行选择。默认情况下,ComboBox控件绑定的数据从显示上比较单一,只能显示固定的文本信息。而为了更好的突出数据展现效果,这里需要使用到WPF中的另一种强大的功能,即数据模板(DataTemplate )
在不少的应用程序中,有时候需要使用ListView控件来显示一组集合数据,这样可以从一组数据中进行选择,让数据更加的规范,便于统计和分析。本文将介绍一下自定义的列表控件FlatListView,它与FlatCheckBox实现过程非常类似,它是继承自ListView,但使用自定义的UI样式来美化界面。
按钮在很多应用程序中都是必不可少的控件,如果给按钮控件添加一些动画效果,比如单击它后会显示一个水波纹扩散的动画效果,那么感觉上更加的高级。本文将介绍一下自定义水波纹按钮控件FlatWaveButton,它是一个UserControl(FlatButton)控件,自身携带UI样式和后台逻辑。
在不少的应用程序中,用户中心的个人页面经常需要显示头像,这个当前主流的做法就是用户上传一个图片,系统进行截取并显示为一个圆形的轮廓,即圆形的照片。本文将介绍一下自定义的图片控件FlatRoundImage,它是一个UserControl控件,自身携带UI样式和后台逻辑。
本文将介绍一下自定义的文本框控件FlatTextBox,它与FlatCheckBox实现过程非常类似,它是继承自TextBox,但使用自定义的UI样式来美化界面,并添加了特有的一些依赖属性。
中WPF中的RotateTransform实现UI元素的旋转,并模拟钟表的秒针、分针和时针。
结合Photoshop和WPF,共同创建一个矢量的个性化进度条。
某些场景下,我们确实需要创建新的控件。此时,理解 WPF不同控件的创建方法就显得非常重要。 WPF 提供3个用于创建控件的方法,每个方法都提供不同的灵活度。
随着Node.js和Ionic等框架的出现,现在感觉JavaScript有一统Web、Mobile、PC三大平台应用开发的能力。在Windows Form 上,利用开源浏览器内核Chromium Embedded Framework (CEF),CEF可以实现C#调用JS,JS调用C#,可以很好的与Web进行应用交互。
二维码是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的,常见的有PDF417、QR Code、Code 49、Code 16K、Code One等。二维码技术已经被广泛应用于公安、外交、军事等部门对各类证件的管理等。本文介绍一种如何种C#语言生成二维码的技术。
数据库可以定义表不同列之间的计算公式,进行自动公式计算,但如何实现行上的动态公式计算呢?行由于可以动态扩展,在某些应用场景下将能很好的解决实际问题。本文就探讨一下如何在WPF中实现一种基于行字段的动态公式计算。
在Quartz.NET中主要有两种类型的 job:无状态的(stateless)和有状态的(stateful)。对于同一个 trigger 来说,有状态的 job 不能被并行执行,只有上一次触发的任务被执行完之后,才能触发下一次执行。无状态任务一般指可以并发的任务,即任务之间是独立的,不会互相干扰。一个 job 可以被多个 trigger 关联,但是一个 trigger 只能关联一个 job。某些任务需要对数据库中的数据进行增删改处理 , 这些任务不能并发执行,就需要用到无状态的任务 , 否则会造成数据混乱。
Quartz.NET提供了插件技术,可以通过在XML文件中对Job和Trigger的参数进行配置,然后定期去加载配置文件来实例化任务和Trigger。
在Quartz.NET中可以用JobDataMap进行参数传递。本例用Quartz.NET的任务来定期轮询数据库表,当数据库的条目达到一定的数目后,进行预警。
CronTriggers比SimpleTrigger更加的灵活和有用,对于比较复杂的任务触发规则。
Quartz.NET是一个被广泛使用的开源作业调度框架 , 由于是用C#语言创建,可方便的用于winform和asp.net应用程序中。Quartz.NET提供了巨大的灵活性但又兼具简单性。开发人员可用它快捷的创建并执行一个自动化作业。Quartz.NET有很多特征,如:数据库支持,集群,插件,支持cron-like表达式等。
本文将介绍如何在Window窗体上自定义一个自定义事件(custom event) ,并通过订阅事件来进行事件的通知。
既然javascript closure如此重要,那么问题来了,什么是closure呢?closure有什么作用?本文将结合我自己对closure的理解,用尽量通俗易懂的方式来进行阐述。
本文重点通过实例来讲解Javascript Hoisting的内部细节原理。
JavaScript 中的 this 关键字,就是一个比较容易混乱的概念,在不同的场景下,this会化身不同的对象。有一种观点认为,只有正确掌握了 JavaScript 中的 this 关键字,才算是迈入了 JavaScript 这门语言的门槛。
如果CentOS所在的服务器限于安全原因,客户并未给我们配置访问外网的权限,那么如何安装PostgreSQL数据库呢?本文将通过具体步骤来详细讲解如何在CentOS7 系统上离线安装PostgreSQL12数据库。
在不少的应用程序中,经常需要使用下拉框(ComboBox)控件来从类别字段中选择,这样可以限定值的范围,让数据更加的规范,便于统计和分析。本文将介绍一下自定义的下拉框控件FlatComboBox,它与FlatCheckBox实现过程非常类似,它是继承自ComboBox,但使用自定义的UI样式来美化界面。下面将详细介绍具体的实现细节。
本文重点介绍WPF中如何实现自定义ToggleButton控件,它是一个开关控件,通过单击来进行状态的快速切换。
本文通过在WPF中引入Font Awesome图标字体来实现自定义FlatRadioButton控件的UI绘图。用户只需要在窗体上引入自定义的FlatRadioButton控件即可使用具有Flat UI效果的控件,非常方便。
本文通过在WPF中引入Font Awesome图标字体来实现自定义FlatCheckBox控件的UI绘图。用户只需要在窗体上引入自定义的FlatCheckBox控件即可使用具有Flat UI效果的控件,非常方便。
最近几年,多数应用都在采用一种矢量图图标,且它作为一种字体,可以非常方便进行整合,当使用某个图标时,只需要通过文本进行制定具体的图标编码即可使用,这里比较熟知的有Font Awesome。它给我们提供了一套可缩放的矢量图标字体,它可以被指定大小、颜色、阴影以及任何可以用CSS进行定义的样式。
传统的编码方式来开发应用程序虽然简单快捷,但是也有一定的不足,具体的不足体现在面对不同客户的个性化需求上,硬编码方式不能根据客户的需求进行动态的配置,来满足个性化需求。本文给出市场为什么需要低代码的理由。
主要介绍一下WPF如何实现自定义控件,通过继承Button控件,和自定义样式来实现Flat样式的漂亮Button。虽然这个FlatButton也可以通过内置的样式达到同样的效果,但自定义控件可以更好的封装和重用,使用起来更加的方便。
Flink大数据项目可以通过Scala语言进行构建,本文主要介绍一下如何通过Maven命令来快速生成Scala语言的Flink初始项目,并给出一个启动示例项目。
不少工程问题中涉及的微分方程,我们很难求出方程的解析解,或者说根本不存在精确的解析解。此时,我们需要利用电脑,结合数值分析的方法来近似求出微分方程的相关解,并研究其性质。通过求出多个自变量的值,并求出对应的解,那么可以绘制出图形来辅助研究方程的特征。本文将介绍F#实现Runge–Kutta算法求解微分方程。
微软的C#中虽然有RSA算法,但是格式和OpenSSL生成的公钥/私钥文件格式并不兼容。这个也给贯通前后台的RSA加密解密带来了难度。为了兼容OpenSSL生成的公钥/私钥文件格式,贯通javascript和C#的RSA加密解密算法,必须对C#内置的方法进行再度封装。
利用F#实现对用户输入一个文本类型的数学公式进行解析,且自动解析成Expr类型,然后根据求导规则进行符号求导计算。最终实现控制台输入sin(2*x) 求导系统即可自动计算出(cos((2*x))*2)。
本文用F#解析器库FParsec对数学公式进行解析,如将(x+2)^7 => Pow (Add (Var "x", CstF 2.0), CstF 7.0),此转换操作对于数学公式的后续推导以及求值等都具有重要的作用。
FParsec 是一个F#语言构建的解析器组合库,主要用于解析文本,并结构化输出,可以为形式语法实现递归下降文本解析器。本文给出简单的解析器示例。
如何用F#对数学公式进行不定积分(x^3)-x => (0.25*x^4)-(0.5*x^2)
用F#实现一个简单的表达式求导推理: diff(sin(x^3-x)) => cos(x^3-x) * (3*x^2-1)
在数学上,有时候需要计算阶乘,即n! = 1 * 2 * 3 * ... (n - 1) * n ,由于int类型的长度限制,当n比较大的时候,则n!可能就无法得出正确的计算结果。此时就需要用到大整数类型bigint。
数学软件Matlab或者Maple等软件可以对数学表达式进行展开操作,如Matlab软件中可以用 expand((x-2)*(x-4))对表达式(x-2)*(x-4)进行展开,即x^2 - 6*x + 8。那么这种抽象的数学表达式是如何实现的呢?本文就用F#语言来简单的讲解一下思路。实现expand(sin(3+x)-sin(3-x)) => 2*cos(3)*sin(x) 。
如果使用过Matlab或者Maple等软件,应该知道这类数学软件的符号计算引擎非常强大,可以进行数学公式的推导,比如可以对数学公式进行化简。当然,实现一个功能完备的化简引擎还是不容易的。这里用F# 实现一个简单的化简函数: ( a + x )+( a - x ) => 2 * a