- 博客(43)
- 收藏
- 关注
原创 golang 使用WaitGroup的注意事项
var wg = sync.WaitGroup{}func main() { c := make(chan int, 3) for i := 0; i<3; i++ { go func(i int) { wg.Add(1) defer wg.Done() c <- i }(i) } wg.Wait() close(c) fmt.Println("done")}如上所示,将wg.Add(1)写在go协程里面时,运行程序可能会出现“panic: sen
2021-10-10 13:05:55
822
原创 maven isntall “无效的目标版本”
问题:使用maven install命令将工程打包发布到本地maven仓库时,出现“Fatal error compiling: 无效的目标发行版: 12”,而且修改idea的jdk版本和 modules的jdk版本使其与安装的jdk版本保持一致后依然出现这个问题解决方法:父工程的pom文件中指定编译版本<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-
2020-10-05 12:56:53
301
原创 java 函数超时处理
1 问题描述在应用软件的开发中,经常会遇到这样的一种需求:需要实现一个方法来执行某种任务,而这个方法的执行时间不能超过指定值,如果超时,则调用者不管这个方法将来是否可能执行成功,都要中断它的执行,或者让这个方法返回。这就是超时处理问题。根据执行任务的方法是否异步,可以把问题从两个方面分析:如果方法顺序执行,则方法执行时整个程序的控制权在执行任务的方法中,方法调用者对于任务的超时无能为力,只能寄希望于执行任务的方法能够在任务的每轮循环中判断是否超时,以便随时自己返回;如果任务方法异步执行,即执行任务的方法
2020-08-01 15:07:53
2655
转载 IO多路复用:select、poll、epoll
一、简介IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。IO多路复用适用如下场合: 1. 当客户处理多个描述符时(一般是交互式输入和网络套接口),必须使用I/O复用。 2. 当一个客户同时处理多个套接口时,而这种情况是可能的,但很少出现。 3. 如果一个TCP服务器既要处理监听套接口,又要处理已连接套接口,一般也要用到I/O复用。 4. 如果一个服务器即要处理TCP,又要处理UDP,一般要使用I/O复用。 5. 如果一个服务器要
2020-07-21 17:04:50
190
原创 java中利用流stream将 List 转为数组
List<Integer> list = new ArratList<>();// 将list转为int数组list.stream().mapToInt(Integer::intValue).toArray();
2020-07-13 10:05:10
6831
原创 Thread.Sleep(0)的作用
Thread.Sleep(0)的作用,就是“触发操作系统立刻重新进行一次CPU竞争”。竞争的结果也许是当前线程仍然获得CPU控制权,也许会换成别的线程获得CPU控制权。这也是我们在大循环里面经常会写一句Thread.Sleep(0) ,因为这样就给了其他线程比如Paint线程获得CPU控制权的权力,这样界面就不会假死在那里。详情点击此处...
2020-06-19 15:52:30
156
转载 操作系统中的中断是什么?
1 中断机制的产生早期计算机各个程序只能串行执行、系统资源利用低。为了解决上述问题,人们就发明了操作系统,引入了中断机制,实现了多道程序的并发执行,提高了系统资源的利用率。中断是多程序并发执行的前提条件。(1) 以两个进程并发运行为例,进程1在用户态运行了一段时间后,CPU会接收到计时部件(操作系统内核的时钟管理部件)发出的中断信号,表示进程1已经用完了一个时间片,CPU会切换到核心态,把CPU的使用权限交还给操作系统,操作系统内核就会对刚才的中断进行处理,操作系统知道进程1的时间片用完,就需要切换进程
2020-06-18 21:29:48
4023
转载 布隆过滤器BloomFilter
Bloom Filter 概念布隆过滤器(Bloom Filter)是1970年由一个叫布隆的小伙子提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。Bloom Filter 原理布隆过滤器的原理是,当一个元素被加入集合时,通过K个散列函数将这个元素映射成一个位数组中的K个点,把它们置为1。检索时,我们只要看看这些点是不是都是1就(大约)知道集合中有没有它了:如
2020-05-25 21:50:44
151
转载 JVM即时编译与优化措施
一、 热点代码当虚拟机发现某个方法或代码块的运行特别频繁时,就会把这些代码认定为“热点代码”。热点代码的分类:被多次调用的方法:一个方法被调用得多了,方法体内代码执行的次数自然就多,成为“热点代码”是理所当然的。被多次执行的循环体:一个方法只被调用过一次或少量的几次,但是方法体内部存在循环次数较多的循环体,这样循环体的代码也被重复执行多次,因此这些代码也应该认为是“热点代码”。如何检测热点代码?判断一段代码是否是热点代码,是否需要触发即使编译,这样的行为称为热点探测,热点探测并不一定
2020-05-23 23:03:24
248
原创 关于 script 标签的写法
错误写法:<script type="text/javascript" src="jquery.js" />正确写法:<script type="text/javascript" src="jquery.js" > </script>。浏览器不认<script type="text/javascript" src="jquery.js" /> 写法,它们会将紧接在<script />标签后面的内容都当作脚本内容来处理,直到遇见下一个<
2020-05-15 18:53:07
1105
原创 关于HttpSession
HttpSession原理当客户端第一次访问服务器的时候,此时客户端的请求中不携带任何标识给服务器,所以此时服务器无法找到与之对应的session,所以会创建一个新的session对象,当服务器进行响应的时候,服务器会将session标识(即SessionID)放到响应头的Set-Cookie中,会以key-value的形式返回给客户端,例:JSESSIONID=7F149950097E7B5B...
2020-05-07 15:31:33
354
原创 java 保留指定数量的小数
例如保留两位小数:import java.text.DecimalFormat;public class Main3 { public static void main(String[] args) { DecimalFormat df = new DecimalFormat("0.00"); System.out.println(df.format(...
2020-04-26 22:11:49
150
原创 springboot 2.x static目录下的静态资源无法加载的解决方法
问题static目录结构如下:通过thymeleaf的 th:href="@{/css/me.css}"方式引入static目录下的静态资源时,网页无法加载静态资源,经查询貌似是springboot2会拦截静态资源。解决方案自定义一个配置类,配置资源映射:package com.dwc.blog;import org.slf4j.Logger;import org.slf4j.L...
2020-04-19 09:50:53
1409
原创 算法——回溯算法
解决一个回溯问题,实际上就是一个决策树的深度优先遍历过程。你只需要思考 3 个问题:1、路径:也就是已经做出的选择。2、选择列表:也就是你当前可以做的选择。3、结束条件:也就是到达决策树底层,无法再做选择的条件。回溯算法的模板:result = []def backtrack(路径, 选择列表): if 满足结束条件: result.add(路径) ...
2020-04-14 11:26:18
127
原创 算法——动态规划
动态规划要点典型题目一、最长公共子序列题目地址:LeetCode1143给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,"ace" 是 "abcde" 的子序列,但 "aec" 不是 "abcde" 的子序...
2020-04-13 12:03:49
259
原创 算法——二分查找
一、查找小于给定目标值的最大值int binarysearch(int target, int[] arr){ int left = 0; int right = arr.length-1; while(left < right){ int mid = (left + right)/2 + 1; //注意 if(arr[mid]...
2020-04-12 21:34:42
167
1
原创 使用SSM框架进行web开发时jsp中的样式表及照片无法正常加载
在jsp中引用了bootstrap和jQuery框架搭建前端页面,引用路径设置正确,如下所示:但是前端框架无法起作用,照片也无法正常加载,最后发现问题出在web.xml文件中,删掉<url-pattern>/</url-pattern>后页面即可正常加载。原因在于:前台是先获取页面(jsp、html等)然后根据页面上应用的js和css再向后台请求相应的js和css文件...
2019-12-19 21:41:43
594
原创 错误记录
TomcatApplication Server was not connected before run configuration stop, reason:Unable to ping server at localhost:1099: 原因是Tomcat的版本和jdk版本不符合(我使用Tomcat9搭配jdk7使用,而Tomcat9要求jdk至少为8,换成Tomcat7即可)...
2019-10-28 22:13:43
121
原创 jvm参数
一、Trace 跟踪参数在Eclipse中,如何设置jvm运行时参数:选择菜单栏Run -> Run Configurations -> Java Application -> 选择自己的项目 -> 在右侧找到Arguments选项卡 -> 在VM arguments中填写参数-verbose:gc(打开GC的跟踪日志)-XX:+printGC(打开GC...
2019-10-13 17:02:57
78
原创 spring项目的pom.xml依赖配置大全
<properties> <spring.version>5.0.2.RELEASE</spring.version></properties> <dependencies> <!-- spring --> <dependency> <group...
2019-09-25 14:37:45
652
原创 将本地jar包发布到本地仓库
命令如下:mvn install:install-file -Dfile=E:\softwares\zookeeper-3.4.10\zookeeper-3.4.10.jar -DgroupId=org.apache.zookeeper -DartifactId=zookeeper -Dversion=3.4.10 -Dpackaging=jar其中,Dfile为本地jar包路径,Dgrou...
2019-09-12 16:45:18
109
原创 git 使用教程
提交代码到GitHub远程仓库的步骤前提条件:安装git在GitHub创建仓库(即远程仓库)在电脑上新建一个文件夹,并初始化为本地仓库:git init在本地仓库添加要提交到远程仓库的文件将本地仓库添加到缓存中:4.1 git add .4.2 git commit -m "在此添加说明"配置远程仓库:git remote add origin url(其中,o...
2019-09-10 12:20:32
92
原创 SSM(spring-springMVC-mybatis)整合
第一章:搭建整合环境整合说明:SSM整合可以使用多种方式,咱们会选择XML + 注解的方式整合的思路先搭建整合的环境先把Spring的配置搭建完成再使用Spring整合SpringMVC框架最后使用Spring整合MyBatis框架创建数据库和表结构create database ssm;use ssm;create table account(id int primar...
2019-08-31 18:57:15
166
转载 JSP中#,%,$取值符号的说明
取值符号主要分两类:第一类为在jsp标签中使用的 el 表达式: ${}第二类为在struts标签中使用的 ONGL 表达式:%{},#第一类举例直接在action中定义的变量:<a>${username}</a>通过request.put()保存的变量:<a>${requestCode.username}</a>第二类举例直接...
2019-08-30 11:50:16
4238
原创 hibernate HQL
HQL(Hibernate Query Language) 是面向对象的查询语言, 它和 SQL 查询语言有些相似. 在 Hibernate 提供的各种检索方式中, HQL 是使用最广的一种检索方式. 它有如下功能:在查询语句中设定各种查询条件;支持投影查询, 即仅检索出对象的部分属性;支持分页查询;支持连接查询;支持分组查询, 允许使用 HAVING 和 GROUP BY 关键字;...
2019-08-29 15:06:22
90
原创 使用Ehcache实现账号锁定功能
需求:添加账号锁定功能,账号一段时间内多次失败则锁定账号,过一段时间后将自动解锁账号(比如锁定5分钟),可再次进行登录。思路:使用缓存Ehcache来记录用户密码错误次数,若超过限定次数则锁定该用户,并记录锁定的时间,一定时间后方可解锁。关键代码:import vision.apollo.cas.adaptors.common.cache.ehcache.EhCacheServiceIm...
2019-08-23 16:59:12
744
原创 nginx 配置文件nginx.conf
nginx.conf示例:#window系统下一般不用配置用户#user nobody;#工作的子进程数量(通常等于CPU数量或者2倍于CPU)worker_processes 4;#error_log logs/error.log;#error_log logs/error.log notice;#错误日志存放路径error_log logs/error.log ...
2019-08-19 15:58:32
337
原创 springMVC详细教程
一、三层架构与MVC1. 三层架构开发服务器端程序,一般都基于两种形式,一种C/S架构程序,一种B/S架构程序;使用Java语言基本上都是开发B/S架构的程序,B/S架构又分成了三层架构。三层架构:3. 表现层:WEB层,用来和客户端进行数据交互的。表现层一般会采用MVC的设计模型4. 业务层:处理公司具体的业务逻辑的5. 持久层:用来操作数据库的2. MVC模型MVC全名是...
2019-08-18 00:46:29
926
原创 web项目jsp文件中引用文件的路径问题
web项目中的路径都是以项目路径为根目录。在jsp中引用文件时,最好使用绝对路径(即以项目路径为根目录的路径)。项目完整根目录为:http://ip:port/applicationContext/ (其中,applicationContext为配置artifact时填写的路径,如下图所示)例如 http://10.20.82.19:8087/apollo-web/web/hell...
2019-08-16 11:16:59
3132
原创 jsp中使用struts2标签
在jsp页面中使用struts标签需要引用标签库 <%@ taglib prefix=“s” uri="/struts-tags" %>此句表示导入struts标签,并以s为前缀。即以s为前缀的标签均来自struts标签库。普通用法<div > <label class="control-label">日志内容:</label> &l...
2019-08-15 17:04:08
1031
原创 设计模式
参考:《Head First设计模式》命令模式定义:命令模式将“请求”封装成对象,实现统一的接口,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式支持可撤销的操作。原理:命令模式中有三种对象:命令对象、接收者、调用者。命令对象中绑定了命令的接收者,接收者可以执行一个或一组动作。命令对象只对外暴露execute()方法,调用该方法,接收者就会执行相应动作。调用者可以使用不同...
2019-08-13 19:52:36
64
原创 网络中的防盗链是指什么?
什么是盗链?比如,别人上传的东西,你直接拿了LINK去,贴到别的论坛或者网站,宣称"有好东西,快来下载",又或者告诉你的朋友"你要这个文件?俺有连接,快下",然后在那里接受别人的滔滔不绝的景仰之情。“盗链” 的定义是:此内容不在自己服务器上,而通过技术手段,绕过别人放广告的最终页,直接在自己的有广告有利益的页面上向最终用户提供此内容。 常常是一些名不见经传的小网站来盗取一些有实力的大网站的地...
2019-08-13 14:49:36
2125
原创 springMVC 解决post请求中文乱码问题
只需要在 src/main/webapp/WEB-INF/web.xml 添加过滤器转换编码方式即可:<!--配置解决中文乱码的过滤器--> <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springfram...
2019-08-11 12:00:26
368
原创 Java中import和import static的区别
一.import①.导入某个包中的任何一个声明为public的类或者接口②.仅导入声明目录下面的类或者接口而不导入子包下的③.默认会导入java.lang包下的二、import static 从JDK1.5开始(导入后可直接调用相应的静态方法或者属性)①.导入类下的静态方法或者静态属性 (范围修饰符不能为private,否则会报错)②.写法为导入某个类下的所有静态变量或者方法...
2019-08-07 10:01:52
193
原创 IDEA 快捷键大全(未完)
搜索Shift+Shift:搜索任何东西,可搜索类、资源、配置项、方法等,还能搜索路径Ctrl+N:按名字搜索类Ctrl+Shift+N:按名字搜索文件Alt+F7:查找类或方法在哪被使用Ctrl+F:在当前文件按给定字符查找Ctrl+Shift+F:在全局按给定字符查找类关系Ctrl + H:查看类的继承关系Ctrl + Alt+B:查看子类方法实现Ctrl + B ...
2019-08-05 19:16:56
118
原创 注解大全(未完,待续)
@PostConstruct & @PreDestroy从Java EE5规范开始,Servlet中增加了两个影响Servlet生命周期的注解,@PostConstruct和@PreDestroy,这两个注解被用来修饰一个非静态的void()方法。写法有如下两种方式:@PostConstructpublic void someMethod(){}public @PostConst...
2019-08-05 15:45:27
122
原创 XML(可扩展标记语言)
XML是什么?XML 指可扩展标记语言(EXtensible Markup Language)。XML 是一种很像HTML的标记语言。XML 的设计宗旨是传输数据,而不是显示数据。XML 标签没有被预定义。您需要自行定义标签。XML 被设计为具有自我描述性。XML 是 W3C 的推荐标准。XML 和 HTML 之间的区别?XML 不是 HTML 的替代。XML 和 HTML 为...
2019-07-31 11:07:43
172
原创 单点登录SSO与CAS
什么是单点登录?单点登录的英文名叫做:Single Sign On(简称SSO)。在以前的时候,一般就是单系统,所有的功能都在同一个系统上。后来,我们为了合理利用资源和降低耦合性,于是把单系统拆分成多个子系统。回顾:分布式基础知识比如阿里系的淘宝和天猫,很明显这是两个系统,但是你在使用的时候,登录了天猫,淘宝也会自动登录。简单来说,单点登录就是在多个系统中,用户只需一次登录,各个系统即...
2019-07-28 23:27:49
529
转载 Java Servlet 是什么?
本资料由知乎整理而来链接:[https://www.zhihu.com/question/21416727/answer/690289895]Servlet是Server Applet的缩写,意为“运行在服务端的小程序”。Servlet本身在Tomcat中是“非常被动”的一个角色,处理的事情也很简单,即负责处理具体的业务逻辑。网络请求与响应不是他的主要职责,所谓的Request和Respons...
2019-06-28 21:55:04
586
转载 矩阵乘法
一个行向量乘以一个列向量称作向量的内积,又叫作点积,结果是一个数;一个列向量乘以一个行向量称作向量的外积,外积是一种特殊的克罗内克积,结果是一个矩阵,假设和b分别是一个行向量和一个列向量,那么内积、外积分别记作aT和,,为了讨论方便,假设每个向量的长度为2。注意:外积在不同的地方定义方式不太一样,这里不详细讨论定义了内积和外积以后,我们讨论矩阵的乘法。矩阵是由向量组成的,因此对矩阵不同角...
2019-06-23 11:07:53
2408
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人