详解java CountDownLatch和CyclicBarrier在内部实现和场景上的区别

2020-05-20
前言 CountDownLatch和CyclicBarrier两个同为java并发编程的重要工具类,它们在诸多多线程并发或并行场景中得到了广泛的应用.但两者就其内部实现和使用场景而言是各有所侧重的. 内部实现差异 前者更多依赖经典的AQS机制和CAS机制来控制器内部状态的更迭和计数器本身的变化,而后者更多依靠可重入Lock等机制来控制其内部并发安全性和一致性. public class { //Synchronization control For CountDownLatch. //Uses

Spring Security 实现“记住我”功能及原理解析

2020-05-20
这章继续扩展功能,来一个"记住我"的功能实现,就是说用户在登录一次以后,系统会记住这个用户一段时间,这段时间内用户不需要重新登录就可以使用系统. 记住我功能基本原理 原理说明 用户登录发送认证请求的时候会被UsernamePasswordAuthenticationFilter认证拦截,认证成功以后会调用一个RememberMeService服务,服务里面有一个TokenRepository,这个服务会生成一个Token,然后将Token写入到浏览器的Cookie同时会使用TokenR

Oracle SQLPlus导出数据到csv文件的方法

2020-05-20
时不时地我们需要导出一些数据用作备份.查看报表等,如果用Sql Developer导出会非常慢.而用SqlPlus,则速度非常快. 准备SQL执行文件export.sql: set colsep , set feedback off set heading off set newp none set pagesize 0 set linesize 200 set trimout on spool /data/export.csv select t.name||','||t.age||','||t

Docker搭建代码检测平台SonarQube并检测maven项目的流程

2020-05-20
1 前言 良好的代码习惯是一个优秀程序员应该具备的品质,但靠人的习惯与记忆来保证代码质量,始终不是一件靠谱的事.在计算机行业应该深知,只要是人为的,都会有操作风险.本文讲解如何通过Docker搭建代码检测平台SonarQube,并使用它来检测maven项目的代码. 2 Docker安装SonarQube 2.1 安装 通过Docker安装,方便快捷,不需要时直接删掉容器和镜像就好了. # 拉取Sonar镜像 docker pull sonarqube:8.3.1-community # 运行实例

Java8 Stream API 详细使用方法与操作技巧指南

2020-05-20
本文实例讲述了Java8 Stream API 详细使用方法与操作技巧.分享给大家供大家参考,具体如下: 1. 概述 Java 8 引入的一个重要的特性无疑是 Stream API.Stream 翻译过来是"流",突然想到的是大数据处理有个流式计算的概念,数据通过管道经过一个个处理器(Handler)进行筛选,聚合,而且流都具有向量性,强调的是对数据的计算处理,而集合强调的是数据集.Stream可以看做是一个可操作的数据集序列,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找.

520使用Python实现“我爱你”表白

2020-05-20
摘要: 每到情人节.七夕节,不少小伙伴大伙伴们都会遇到这样一个世纪问题--怎么给女朋友/老婆一个与众不同的节日惊喜.今天给大家分享一个独特的表白方法--用"我爱你"拼出心爱人的模样! 每到情人节.七夕节,不少小伙伴大伙伴们都会遇到这样一个世纪问题--怎么给女朋友/老婆一个与众不同的节日惊喜. 你说送花吧,到时候朋友圈里一划,全部都是送花的,女票:"没创意!",遂卒: 你说送礼物吧,要是送的礼物不合心意,女票:"你根本不懂我!",又卒: 你说逛街买

JavaScript实现猜数字游戏

2020-05-19
本博文源于js基础,旨在讨论如何实现猜随机数的小游戏. 题目重现 随机生成一个[0,100]区间的数字,不断重复用户输入,直到用户输入对为止. 实现原理 先用Math.random生成一个数字,欲得到[a,b]区间的随机整数,可采用以下公式: parseInt(Math.random()*(b-a+1))+a; 举个例子:得到[3,8] parseInt(Math.random()*6)+3; 然后循环里,多分支if判断一下,给用户提示一下 测试用例 玩的时候用二分法玩,二分法就是一次砍一半,比

Spring事务管理配置文件问题排查

2020-05-19
在开发中,遇到了sql语句报错,但是并没有回滚的情况. 经过几天的排查,终于找到了事务没有回滚的原因. 原来的项目用的是informix的数据库,原来针对事务回滚的机制都是好用的.我本地用的是mysql数据库. 先将程序代码与spring-mybatis.xml配置文件拿过来: 1.程序代码: 这个问题是在验证增删改查返回值时发现的. 两个操作,删除时,因为关联了外键,所以会报错,此时正常情况更新的语句也会回滚,但是并没有. /** *@Author: Administrator on 2020

Java如何将大文件切割成小文件

2020-05-19
运用Java编写代码将一个大文件切割成指定大小的小文件 思路: 对已知文件进行切割操作 –> 得到多个碎片文件 使用: 1. 1个字节输入流 –> 读取已知文件中的数据 2. 多个字节输出流 –> 生成多个碎片文件 思路补充: 创建一个指定大小的byte数组,将大文件读取到byte数组中,读满一次将byte数组写入一个新的小文件中,如此循环直到将大文件读取完毕 注意:此时最后一个小文件可能不足规定的内存大小,在从大文件读取最后一个byte数组时,可能还没读满byte数组,大文件就读取完毕

Sublime Text3 配置 NodeJs 环境的方法

2020-05-19
前言 大家都知道,Sublime Text 安装插件一般从 Package Control 中直接安装即可,当我安装 node js 插件时候,直接通过Package Control 安装,虽然插件安装成功了,但是找不到配置文件 Nodejs.sublime-build 来更改一些配置 .于是去 https://packagecontrol.io/packages/Nodejs 官网上查看,只提供一种安装方式. 安装 git安装 MacOSX git clone https://github.c

python3.6使用SMTP协议发送邮件

2020-05-19
本文实例为大家分享了python3.6使用SMTP协议发送邮件的具体代码,供大家参考,具体内容如下 代码如下: # !/usr/bin/python3 # coding: utf-8 import smtplib from email.header import Header from email.mime.text import MIMEText from email.utils import parseaddr from email.utils import formataddr def f

VMware vCenter 6.7 安装过程(图文教程)

2020-05-19
背景 我本来是要在VMware 官方download 一个6.7的Vcenter,但是除了VMware-VCSA-all-6.7 还看到一个 VMware-VIM-all-6.7 .VCSA 4G大小,VIM 2G大小,所以我两个都下载了.VCSA这么大4G肯定是vcenter集成Linux系統了,省事方便.VIM是基于Windows平台的安裝.接下來我簡單的两个都安裝一下. 安装VIM 一.VIM什么意思? vmware integrated managemen 的缩写 VIM,翻译过来就是

解决windows上安装tensorflow时报错,“DLL load failed: 找不到指定的模块”的问题

2020-05-19
最近打算开始研究一下机器学习,今天在windows上装tensorflow花了点功夫,其实前面的步骤不难,只要依次装好python3.5,numpy,tensorflow就行了,有一点要注意的是目前只有python3.5能装tensorflow,最新版的python3.6都不行. 装好tensorflow后,我建议大家不要直接用测试用例进行测试(如果没装好的话出现的错误一般都是:module 'tensorflow' has no attribute 'constant').第一次测试时可以在p

django在开发中取消外键约束的实现

2020-05-19
我就废话不多说了,大家还是直接看代码吧! # 在setting设置外键 'OPTIONS': { "init_command": "SET foreign_key_checks = 0;", } 补充知识:django-给外键关系传值,删除外键关系 反查: 在表关系里 related_name = '反查name',自己不设置,django也会默认设置为class的小写名字+_set , ex: book_set. 一对一关系赋值: class ModelStudy

基于Python脚本实现邮件报警功能

2020-05-19
使用了smtplib等第三方库,进行发送邮件,完成邮件报警功能 如下是实例 : #!/usr/bin/python import glob import operator from optparse import OptionParser import smtplib import email.MIMEText as MIMEText import email.Utils.formadate as formatdate msg = "" #主方法 def main(): global

在django中form的label和verbose name的区别说明

2020-05-19
如下所示: captcha = CaptchaField(label = u'验证码') captcha = CaptchaField(verbose_name = u'验证码') label是这个Field如果在form中的话会显示. verbose_name 在form中不会显示 只是一种说明而已 补充知识:django models verbose_name 的作用 一. verbose_name就是在后台显示对对应的名称,看图 对应后台字段如图 以上这篇在django中form的labe

Django中ORM找出内容不为空的数据实例

2020-05-19
在django操作数据库的时候如何找出内容不为空的数据呢? from django.db.models import Q class Index(VIew): def get(self, request): userObj = models.Asset.objects.filter(~Q(asset_id = '') return HttpResponse('yes') 上面代码中的models.Asset.objects.filter(~Q(nick = '')则是使用Q函数去找出nick不为

jquery html添加元素/删除元素操作实例详解

2020-05-19
本文实例讲述了jquery html添加元素/删除元素操作.分享给大家供大家参考,具体如下: 添加元素 添加新的 HTML 内容 将学习用于添加新内容的四个 jQuery 方法: append() - 在被选元素的结尾插入内容 prepend() - 在被选元素的开头插入内容 after() - 在被选元素之后插入内容 before() - 在被选元素之前插入内容 append() 方法 append() 方法在被选元素的结尾插入内容(仍然该元素的内部). $("p").append(

python Django 反向访问器的外键冲突解决

2020-05-19
我有两个继承一个基类的Django模型: - Request - Inquiry - Analysis 请求有两个外键到内置用户模型. create_user = models.ForeignKey(User, related_name='requests_created') assign_user = models.ForeignKey(User, related_name='requests_assigned') 由于某种原因,我得到的错误 "Analysis.assign_user&quo

Nodejs实现WebSocket代码实例

2020-05-19
一.环境配置 1.下载安装nodejs https://nodejs.org/en/download/ 2.安装完成后打开cmd命令,执行node --version,看看是否安装成功,如果提示没有此命令,去配置下环境变量,正常情况下安装后自动设置环境变量 二.配置nodejs模块 1.安装express模块 模块介绍:Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具. 安装方式:在项目路径下执行np