自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(125)
  • 收藏
  • 关注

原创 css 起步

什么是 CSSCSS(Cascading Style Sheets,层叠样式表)是为 web 内容添加样式的代码。和 HTML 类似,CSS 也不是真正的编程语言,甚至不是标记语言。CSS 是一门样式表语言,可以用它来选择性地为 HTML 元素添加样式。一般在 HTML 文件中头部(也就是 head 标签之间)引入 CSS:<link href="styles/style.css...

2024-01-23 15:06:00 1094

原创 Make 起步

代码变成可执行文件,叫做编译(compile)先编译这个文件,然后编译那个文件(即编译的安排),叫做构建(build)

2023-12-28 18:13:15 396

原创 PHP 起步

PHP 是什么PHP 是一种服务器端脚本语言,用来创建动态交互性站点。PHP 全称:Hypertext Preprocessor,即超文本预处理器。PHP 脚本在服务器上执行。PHP 文件是什么PHP 文件可包含文本、HTML、JavaScript 代码和 PHP 代码。PHP 代码在服务器上执行,结果以纯 HTML 形式返回给浏览器。PHP 文件的默认文件扩展名是 .php。PH...

2023-12-05 14:03:00 367

原创 TypeScript 数据类型

数组的类型有两种写法。TypeScript 数组有一个根本特征:所有成员的类型必须相同,但是成员数量是不确定的,可以是无限数量的成员,也可以是零成员。TypeScript 继承了 JavaScript 的类型设计,以上8种类型可以看作 TypeScript 的基本类型。类型代表 JavaScript 里面的狭义对象,即可以用字面量表示的对象,只包含对象、数组和函数,不包括原始类型的值。运算符移植到了类型运算,它的操作数依然是一个值,但是返回的不是字符串,而是该值的 TypeScript 类型。

2023-10-19 11:45:14 125

原创 TypeScript 语法

TypeScript 项目里面,其实存在两种代码,一种是底层的「值代码」,另一种是上层的「类型代码」。前者使用 JavaScript 语法,后者使用 TypeScript 的类型语法。TypeScript 官方提供的编译器叫做 tsc,可以将 TypeScript 脚本编译成 JavaScript 脚本。它们是可以分离的,TypeScript 的编译过程,实际上就是把「类型代码」全部拿掉,只保留「值代码」。TypeScript 代码最明显的特征,就是为 JavaScript 变量加上了类型声明。

2023-10-19 11:43:24 118

原创 NestJs 起步

npm 是 Node.js 的包管理器,安装 Node.js 之后,npm 也随之安装了。Windows 环境下下载 msi 后缀的安装包,点击下一步直接安装完成。先安装 Node.js 环境,进入 Node.js 官网。通过 npm 来安装 NestJs 工具。等待一会儿后,就可看到创建的项目。原文来自 NestJs 官方教程。

2023-10-18 18:14:56 121

原创 TypeScript 起步

TypeScript(简称 TS)是微软公司开发的一种基于 JavaScript (简称 JS)语言的编程语言。它的目的并不是创造一种全新语言,而是增强 JavaScript 的功能,使其更适合多人合作的企业级项目。TypeScript 可以看成是 JavaScript 的超集(superset),即它继承了后者的全部语法,所有 JavaScript 脚本都可以当作 TypeScript 脚本(但是可能会报错),此外它再增加了一些自己的语法。

2023-10-18 16:16:47 78

原创 JavaScript 数据类型

为了避免这种歧义,JavaScript 引擎的做法是,如果遇到这种情况,无法确定是对象还是代码块,一律解释为代码块。JavaScript 语言规定,对象的键名一律为字符串,所以,数组的键名其实也是字符串。通常,数值、字符串、布尔值这三种类型,合称为原始类型(primitive type)的值,即它们是最基本的数据类型,不能再细分了。所以,1 与 1.0 是相同的,是同一个数。对象则称为合成类型(complex type)的值,因为一个对象往往是多个原始类型的值的合成,可以看作是一个存放各种值的容器。

2023-10-18 13:27:59 91

原创 JavaScript 基本语法及概念

JavaScript 引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行地运行。这造成的结果,就是所有的变量的声明语句,都会被提升到代码的头部,这就叫做变量提升(hoisting)。源码中被 JavaScript 引擎忽略的部分就叫做注释,它的作用是对代码进行解释。命令来说,JavaScript 的区块不构成单独的作用域(scope)。JavaScript 使用大括号,将多个相关的语句组合在一起,称为区块(block)。变量的声明和赋值,是分开的两个步骤。变量是对「值」的具名引用。

2023-10-17 17:46:22 120

原创 JavaScript 导论

JavaScript 本身不提供任何与 I/O(输入/输出)相关的 API,都要靠宿主环境(host)提供,所以 JavaScript 只合适嵌入更大型的应用程序环境,去调用宿主环境提供的底层 API。总结,ECMAScript 是规格,JavaScript 是 ECMAScript 的一种实现(另外的 ECMAScript 方言还有 JScript 和 ActionScript),日常场合,这两个词是可以互换的。近年来,JavaScript 的使用范围,慢慢超越了浏览器,正在向通用的系统语言发展。

2023-10-17 15:41:06 69

原创 计算机的启动过程

本文是书籍《x86 汇编语言:从实模式到保护模式》读书笔记。

2023-10-13 11:52:32 31

原创 freemarker 通过 URL 获取模板文件导出

通过远程模板文件导出 word 或其他格式文件。示例是 Spring Boot 整合 freemarker。

2023-04-23 14:55:01 483 1

原创 Spring Security:(八)WebSecurity与HttpSecurity初始化

调用WebSecurity的 build()方法返回一个FilterChainProxy实例。调用HttpSecurity的build()方法返回一个SecurityFilterChain实例(DefaultSecurityFilterChain是 SecurityFilterChain的唯一实现类)。WebSecurity和HttpSecurity是如何初始...

2022-03-27 17:17:00 23

原创 Spring Security:(七)通过HttpSecurity构建SecurityFilterChain

调用HttpSecurity的 build()方法可以返回一个SecurityFilterChain实例。继承关系图HttpSecurity的 build()方法在顶层接口SecurityBuilder中定义的。调用关系图1. AbstractSecurityBuilder实现了SecurityBuilder的 build()方法,在其方法体内 build(...

2022-03-26 22:15:00 49

原创 Spring Security:(六)过滤器链SecurityFilterChain

Spring Security的功能点入口是FilterChainProxy,在FilterChainProxy中管理着多个过滤器链 SecurityFilterChain。Spring Security中是通过调用 HttpSecurity的 build()方法实例化SecurityFilterChain。过滤器链SecurityFilterChain是多个过滤器的集合...

2022-03-26 21:40:00 147

原创 Spring Security:(五)通过WebSecurity构建FilterChainProxy

调用 WebSecurity的 build()方法可以返回一个FilterChainProxy实例。继承关系图WebSecurity的build()方法是在顶层接口SecurityBuilder中定义的。调用关系图1. AbstractSecurityBuilder实现了SecurityBuilder的 build()方法,在其方法体内 build()调用...

2022-03-26 15:39:00 16

原创 Spring Security:(四)启动时初始化FilterChainProxy

Spring Security通过创建一个FilterChainProxy的实例来实现所有功能,FilterChainProxy是所有Spring Security功能的入口,一旦FilterChainProxy初始化完成,Spring Security启动也就完成了。FilterChainProxy实现Filter接口,因此FilterChainProxy就是一个过...

2022-03-26 00:05:00 44

原创 Docker:官网文档 Get Started 笔记

本文是Docker官网文档中Get Started的阅读笔记。官方文档地址 https://docs.docker.com/get-started/1 概览根据使用的操作系统安装docker服务,我这里用的是CentOS 7,官方安装文档十分详尽,用 yum命令即可简单安装成功,然后用 systemctl start docker启动docker服务。然后使用 doc...

2022-01-08 16:58:00 19

原创 Spring Security:(三)DelegatingFilterProxy与FilterChainProxy关系

官方文档地址Spring Security官方文档地址其中重点章节是Servlet Applications这一章节从Spring Security架构到使用都讲述十分详尽。本文是官方文档的阅读笔记。三个重要类Spring Security的初始化和认证授权是围绕下面三类展开的:DelegatingFilterProxyFilterChainProxySecurit...

2022-01-01 22:00:00 42

原创 kkFileView 启动报错 Error creating bean with name 'officePluginManager'

kkFileView简介kkFileView为文件文档在线预览解决方案,其源码地址https://gitee.com/kekingcn/file-online-preview详细特点可以看官网说明。问题本文中的代码运行环境是 windows,后文也是基于此环境说明。其他环境可以作个参考。下载源码后,导入到eclipse后,启动服务,控制台报如下错误:Error starti...

2021-12-18 23:05:00 316

原创 Flowable:简介

Flowable是什么Flowable 是一个流行的轻量级的采用 Java 开发的业务流程引擎。通过 Flowable 流程引擎,我们可以部署 BPMN 2.0 的流程定义(一般为XML文件),通过流程定义创建流程实例,查询和访问流程相关的实例与数据,等等。Flowable 可以灵活地添加到我们的服务、应用、架构中,可以通过引入Flowable jar 包,或者直接使用 Flowabl...

2021-12-17 22:41:00 22

原创 Spring Security:(二)设置账号密码三种方式

概述上一篇文章中,引入Spring Security后,项目就被保护起来。但账号只有一个 user,密码也是每次启动项目时生成的。这样不符合实际项目需求,下面介绍其他配置账号密码的方式。Spring Security有三种配置账号和密码的方式,分别是:通过配置文件通过配置类自定义编写实现类下面分别说明三种方式。通过配置文件在项目的application.properti...

2021-11-26 21:57:00 60

原创 Spring Security:(一)入门案例

Spring Security 简介Spring Security is a framework that provides authentication, authorization, and protection against common attacks. With first class support for both imperative and reactive applica...

2021-11-24 22:31:00 16

原创 Redis:基础

简介Redis是一种运行在内存中数据结构存储,可用作数据库缓存消息中间件。Redis是键值型数据库。特点支持数据的持久化,可将内存中的数据保存在磁盘中,重启后可再次加载使用;是基于内存的,因此读写性能极高,其读写速度约是关系型数据库的几倍至几十倍。其读的速度是十一万次每秒,写的速度是八万次每秒;丰富的数据类型;所有的操作都是原子性的,且支持流水线(pipline)技术;...

2021-04-24 14:27:00 12

原创 后端主动向前端推送消息 Server-Sent Events

后端向前端推送消息的常见方式有 websocket、轮询等方式。还有一种方式:Server-Sent Event (简称SSE)。SSE本质严格说,HTTP 协议无法做到服务器主动推送消息。但是,有一种变通方法,就是服务器向客户端声明,接下来要发送的是流消息(streaming)。也就是说,发送的不是一次性的数据包,而是一个数据流,会连续不断地发送过来。这时,客户端不会关闭连接,会一直等...

2021-02-27 22:43:00 72

原创 PostgreSQL:with recursive使用

先从 with 关键字开始,with 提供了一种编写子查询的方法,这种子查询用于 select 查询语句中。可以将这些子查询(通常被称为Common Table Expressions 简称 CTE )视为定义了仅用于此查询的临时表。with 的一种用途是将复杂的查询分解成简单的查询语句。例如下面的示例WITH regional_sales AS (     SELECT re...

2020-06-05 11:13:00 50

原创 Java:Object类

Object类是Java中所有类的始祖,在Java中每个类都是由它拓展而来。但是并不需要用extends 声明。可以使用Object类型变量引用任何类型的对象。equals方法用于检测一个对象是否等于另外一个对象,在 Object类中这个方法用于判断两个对象是否具有相同的引用。如果两个对象具有相同的引用,它们一定是相等的。hashcode方法散列码 hashcod...

2020-05-31 15:04:00 17

原创 Java:将值传递给方法的方式

各种程序设计语言中方法传递方式有如下几种:按值调用call by value按引用调用 call by reference按名称调用call by nameJava中是按值调用。方法参数一般有两种类型:基本数据类型(数字、布尔值)对象引用基本数据类型是按值调用这个很好理解,例如下面的方法 public static void tripleValue(doub...

2020-05-31 11:16:00 12

原创 Maven:学习笔记

Maven 是一个跨平台的项目管理工具,主要服务于基于 Java平台的项目构建、依赖管理和项目信息管理。坐标Maven定义了这样这样一组规则:世界上任何一个构件都可以用Maven坐标唯一标识,Maven坐标元素包括:groupIdartifactIdversionpackagingclassifier我们自己开发的项目也要为其定义适当的坐标,这是Maven强制要...

2020-05-17 21:30:00 12

原创 Java:将 rtf 或 doc 转成 html 格式

什么是 rtf格式?rtf是一种富文本格式Rich Text Format,可以包含文字图片等内容。rtf可以用word或者wps直接打开,也可以用文本编辑器打开,如果用文本编辑器打开则可以显示其源码。rtf源码格式解析可以参考这里。用Java代码解析rtf格式,可以用Apache Tika解析,且支持rtf格式,但是网上可参考的文档较少。但是网上d...

2020-01-02 10:24:00 117

原创 Python:通过pywin32模块批量将rtf或docx另存为doc格式

Python 中 pywin32 模块可以调用 Windows API,可以在 windows 系统下打开 word excel 等应用,然后编辑保存另存为等操作,可以用来批量编辑文件。环境是 Python3,先安装 pywin32 包:pip install pywin32,然后导入 pywin32 包中的 win32com 模块。例如现在文件夹 D:\develop\temp\origi...

2019-12-30 20:29:00 59

原创 Spring:JTA transaction unexpectedly rolled back (maybe due to a timeout) 事务超时

采用spring框架时,在 Service 层的方法中加上注解 @Transactional 就可以将这个方法加上事务管理。如果这个方法中处理的业务逻辑比较多,比较耗时,那么可能会出现事务超时的异常JTA transaction unexpectedly rolled back (maybe due to a timeout)如果出现这个异常,解决办法是在@Transactional 中加...

2019-12-23 14:26:00 195

原创 Excel:在日期中月份前面补0

现有日期格式 2019.1.1 2019-1-1 2019/1/1 等格式,要求统一转化成 2019.01.01 的格式,需要用到 excel 中如下两个函数。先说明一下两个函数的用法。VLOOKUPVLOOKUP 函数有四个参数:VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)lookup_value 查找值,拿...

2019-12-20 15:41:00 113

原创 MyBatis:动态SQL

MyBatis的真正强大之处在于它的映射语句,这也是它的魔力所在。由于它的映射语句异常强大,映射器的XML文件就显得相对简单。在 XML中添加一个select元素,写一个查询的SQL,再做一些简单的配置,就可以将查询的结果直接映射到对象中。selectselect标签的常用属性有:id命名空间中这条SQL的唯一标识;parameterType将要传入这条语句的参数类...

2019-12-07 20:22:00 16

原创 Spring Boot:异常统一处理

异常的统一处理:在用 springboot 搭建项目,返回 json 数据时,例如某个接口需要查询用户 id 为 10 的个人信息。假如查询 id 为 20 的用户,而这个用户不存在,那么需要返回友好的处理信息。这时可以编写一个自定义异常,在未查询到结果的时候,抛出这个异常,并在异常中添加产生的原因等信息。创建一个项目,目录结构如下:先看看 controller 层中的代码,只有一个方法,...

2019-11-17 18:40:00 16

原创 windows查看被占用的端口号

如何查看 windows 系统下端口被占用的情况?按 win + r 弹出运行功能,输入 cmd,进行命令行页面。然后输入 netstat -ano ,可以看到下图:然后打开任务管理器,选择 详细信息,找到对应的 PID 关闭进程,即可释放其占用的端口号。这样就可释放被占用的端口号了。...

2019-10-25 09:42:00 12

原创 MyBatis:MyBatis Generator的使用

简述MyBatis Generator (简称 MBG)is a code generator for MyBatis. 可以根据数据库中的表生成相应的实体类以及一些常用的增删改查方法。使用 MBG 会生成以下三类文件:Java POJOs that match the table structureMyBatis/iBATIS Compatible SQL Map XML Files...

2019-10-17 19:59:00 25

原创 Vue:安装创建构建部署

记录一次从零使用 vue 的经过(在 window 环境下):安装 nodejs,官网下载安装包,安装。安装 Vue CLI,打开命令行工具,执行:npm install -g @vue/cli ,安装成功后通过 vue --version 查看其版本。创建一个项目,执行 vue create hello-world ,选取默认 preset 就可以创建一个项目。运行项目,在项目所在目录...

2019-09-17 17:03:00 17

原创 Nginx:使用

Nginx 常用的三大场景:提供静态内容(Serving Static Content)nginx 作为 web 服务器提供静态文件,诸如图片或者 html 等文件。例如下面的配置:location /images/ { root /data;}例如以 /images/ 开头的请求将会被拦截,例如:http://localhost:80/images/example.png...

2019-09-17 14:44:00 13

原创 Vue:Vue CLI 3的学习

定义Vue CLI官方定义:Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统,提供诸多功能。例如:通过 @vue/cli搭建交互式的项目脚手架;通@vue/cli + @vue/cli-service-global快速开始零配置原型开发;一个丰富的官方插件集合,集成了前端生态中最好的工具组成Vue CLI有几个独立的部分组成,包含多个单独的包:CLI(@vue/cl...

2019-09-16 15:41:00 10

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除