技术文章

遍历循环输出map的几种方式

一笑奈何 提交于 2021-02-20 07:40:12
package 常用的遍历方法.forTest; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; public class CircleTest { public static void main(String[] args) { Map<String,Object> map = new HashMap<String,Object>(); map.put("accident", "意外险"); map.put("properties", "财产险"); map.put("biz", "商业险"); map.put("force", "交强险"); //1、迭代器 Iterator<Map.Entry<String, Object>> iter = map.entrySet().iterator(); //判断往下还有没有数据 while(iter.hasNext()){ //有的话取出下面的数据 Entry<String, Object> entry = iter.next(); String key = entry.getKey(); String value = (String)entry.getValue(); if(

初学JavaScript之颜色小游戏

自古美人都是妖i 提交于 2021-02-20 07:39:55
/*老师布置的的颜色小游戏的作业,根据问题显示的文字找出对应的颜色判断小游戏,可能有很多需要改进的代码,后面会多多改进的,谢谢2018-07-15 12:45:59*/ <! DOCTYPE html > < html > < head > < meta charset ="utf-8" /> < title > 颜色小游戏 </ title > < style type ="text/css" > .container { width : 400px ; height : 550px ; margin : 0 auto ; border : 1px solid black ; position : relative ; background-color : #F0F0F0 ; } .info { overflow : hidden ; } .time { margin : 20px 20px ; float : left ; } .score { margin : 20px 20px ; float : right ; } .question { width : 100% ; height : 80px ; font-size : 60px ; text-align : center ; margin-top : 140px ; color : blue ; } .reset {

Nginx + Tomcat + HTTPS 配置不需要在 Tomcat 上启用 SSL 支持

我只是一个虾纸丫 提交于 2021-02-20 07:39:19
Nginx SSL+tomcat集群 Nginx tomcat no 不用https 最近做了个Web项目, 架构上使用了 Nginx +tomcat 集群, 且全站HTTPS,用nginx 做负载,nginx和tomcat 使用内网http通信,遇到http css,js静态资源被浏览器拦截问题,网上搜索到的很多文章在描述 Nginx + Tomcat 启用 HTTPS 支持的时候,都必须在 Nginx 和 Tomcat 两边同时配置 SSL 支持,今天做个总结。 遇到问题 nginx强制使用https访问(http跳转到https) http的js,css 等静态资源被浏览器拦截(http不被信任) 最后的解决方案 首先解决 第一个问题 全站https 参考 三种方式,跟大家共享一下 nginx的rewrite方法 server { listen 192.168.1.111:80; server_name test.com; rewrite ^(.*)$ https://$host$1 permanent; } nginx的497状态码,我选择了这种方式 server { listen 192.168.1.11:443; #ssl端口 listen 192.168.1.11:80; #用户习惯用http访问,加上80,后面通过497状态码让它自动跳到443端口 server

白话burp suite渗透测试利器的英文(入门版)

不想你离开。 提交于 2021-02-20 07:39:05
技术博客的可读性非常重要,这也是技术博客写作的重要原则。 电脑系统是kali linux2018.1版本,64位 burpsuite_pro_v1.7.11破解版(含下载) 链接:http://www.freebuf.com/sectool/121992.html 虽然我很支持使用正版,但是如果有破解版可以尝试入门,实在是太好了。 除了这个连接,还有独自等待博客 BurpSuitePro v1.7.31及注册机下载 链接:https://www.waitalone.cn/burpsuite1731-keygen.html BurpSuitePro v1.7.32及注册机下载 链接:https://www.waitalone.cn/burpsuite-v1732.html 我想这些完全足够使用了。 我用的是第一个下载源,下载解压,编写脚本命名为burp.sh,脚本所在文件夹启动脚本即可sh burp.sh,默认安装就好。 #!/bin/bash java -jar /root/burpsuite/BurpHelper.jar 这里不说如何使用,因为这个工具的使用是有很多可以研究的。这里想说说上面的英语单词的意思,因为这个是全英文版的。 burp suite官方网站:https://portswigger.net/burp/,社区免费版,专业版两种可以选择,后者是每年每人349美元。

Java内存泄漏分析系列之二:jstack生成的Thread Dump日志结构解析

被刻印的时光 ゝ 提交于 2021-02-20 07:38:42
原文地址:http://www.javatang.com 一个典型的thread dump文件主要由一下几个部分组成: 上图将JVM上的线程堆栈信息和线程信息做了详细的拆解。 第一部分:Full thread dump identifier 这一部分是内容最开始的部分,展示了快照文件的生成时间和JVM的版本信息。 2017-10-19 10:46:44 Full thread dump Java HotSpot(TM) 64-Bit Server VM (24.79-b02 mixed mode): 第二部分:Java EE middleware, third party & custom application Threads 这是整个文件的核心部分,里面展示了JavaEE容器(如tomcat、resin等)、自己的程序中所使用的线程信息。这一部分详细的含义见 Java内存泄漏分析系列之四:jstack生成的Thread Dump日志线程状态分析 。 "resin-22129" daemon prio=10 tid=0x00007fbe5c34e000 nid=0x4cb1 waiting on condition [0x00007fbe4ff7c000] java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe

LeetCode:交替打印【1115】

主宰稳场 提交于 2021-02-20 07:38:29
LeetCode:交替打印【1115】 题目描述 我们提供一个类: class FooBar { public void foo() { for (int i = 0; i < n; i++) { print("foo"); } } public void bar() { for (int i = 0; i < n; i++) { print("bar"); } } } 两个不同的线程将会共用一个 FooBar 实例。其中一个线程将会调用 foo() 方法,另一个线程将会调用 bar() 方法。 请设计修改程序,以确保 "foobar" 被输出 n 次。 示例 1: 输入: n = 1 输出: "foobar" 解释: 这里有两个线程被异步启动。其中一个调用 foo() 方法, 另一个调用 bar() 方法,"foobar" 将被输出一次。 示例 2: 输入: n = 2 输出: "foobarfoobar" 解释: "foobar" 将被输出两次。 题目分析   在解决1114问题按序打印时,我们曾引入了一个Java多线程工具类倒计时器(CountDownLatch),这里要介绍另外一个工具类信号量(Semaphore)。 了解更多   信号量(Semaphore)由一个值和一个指针组成,指针指向等待该信号量的进程。信号量的值表示相应资源的使用情况。信号量S≥0时

SQL Server等待事件—PAGEIOLATCH_EX

陌路散爱 提交于 2021-02-20 07:37:47
什么是 PAGEIOLATCH_EX 等待事件? 下面我们将对 PAGEIOLATCH_EX 等待事件的相关资料做一个简单的归纳、整理。关于 PAGEIOLATCH_EX ,官方文档的简单介绍如下: PAGEIOLATCH_EX : Occurs when a task is waiting on a latch for a buffer that is in an I/O request. The latch request is in Exclusive mode. Long waits may indicate problems with the disk subsystem. 在任务等待 I/O 请求中缓冲区的闩锁时发生。 闩锁请求处于 “ 独占 ” 模式。 长时间的等待可能指示磁盘子系统出现问题。 In SQL Server, a latch is a short-term lightweight synchronization object. Buffer latches including the PAGEIOLATCH_EX wait type are used to synchronize access to BUF structures and associated pages in the SQL Server database. The most

Kafka 使用Java实现数据的生产和消费demo

我的梦境 提交于 2021-02-20 07:37:27
前言 在 上一篇 中讲述如何搭建kafka集群,本篇则讲述如何简单的使用 kafka 。不过在使用kafka的时候,还是应该简单的了解下kafka。 Kafka的介绍 Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 Kafka 有如下特性: 以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间复杂度的访问性能。 高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条以上消息的传输。 支持Kafka Server间的消息分区,及分布式消费,同时保证每个Partition内的消息顺序传输。 同时支持离线数据处理和实时数据处理。 Scale out:支持在线水平扩展。 kafka的术语 Broker:Kafka集群包含一个或多个服务器,这种服务器被称为broker。 Topic:每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。(物理上不同Topic的消息分开存储,逻辑上一个Topic的消息虽然保存于一个或多个broker上但用户只需指定消息的Topic即可生产或消费数据而不必关心数据存于何处) Partition:Partition是物理上的概念,每个Topic包含一个或多个Partition。 Producer:负责发布消息到Kafka broker。 Consumer

WPF学习笔记

余生长醉 提交于 2021-02-20 07:37:12
笔记 布局控件 Canvas——该控件允许以任何合适的方式放置子控件。它不会对子控件的位置施加任何限制,但不会对位置摆放提供任何辅助。 DockPanel——该控件可让其中的子控件贴靠到自己四条边中的任意一边。最后一个子控件则可以充满剩余区域。 Grid——该控件让子控件的定位变得比较灵活。可将该控件的布局分为若干行和若干列,这样就可以在网格布局中对齐控件。 StackPanel——该控件能够按照水平方向或垂直方向依次对子控件进行排列。 WrapPanel——与StackPanel一样,该控件也能按照水平方向或垂直方向依次对子控件进行排列,但它不是按照一行或一列来排序,而是根据可用空间大小以多行多列的方式来排列。 标签 Window ResizeMode="CanResizeWithGrip" ResizeMode属性被设置为CanResizeWithGrip,这可以让窗口的右下角出现一个小手柄标志,让用户知道该窗口的大小是可以调整的。 Button <Button Content="_OK"/> OK文本前加下划线“_”即可为该按钮创建Alt+O快捷键 数据绑定 ObservableCollection 这个类的方法,对数据的操作很少,重点放在了当自己本事变化的时候(不管是属性,还是集合)会调用发出通知的事件。(一般用于更新UI) 来源: oschina 链接: https:/

Qt事件过滤器

你。 提交于 2021-02-20 07:36:59
事件过滤器比较强大 bool FormSearch::eventFilter(QObject *obj, QEvent *event) { if (obj == this->lineEdit) { if(event->type() == QEvent::FocusIn) this->clearText(); if(event->type() == QEvent::MouseButtonDblClick) this->clearText(); QKeyEvent *e = static_cast<QKeyEvent*>(event); if(e->key() == Qt::Key_Space && (e->modifiers() & Qt::ShiftModifier)) this->clearText(); } return QWidget::eventFilter(obj,event); } 过滤器,是针对某个特定的控件,来定义行为。包括键盘,鼠标移入移出等行为。 QEvent下的如FocusIn是由众多的小事件构成的。 还可以针对某一个特定的事件,就是吧event转换成QKeyEvent或者是QMouseEvent类指针。如果是多键组合而成。那么就是类似上方代码。 最后在把事件分发出去。 然后选择控件去installEventFilter(QObject *obj);