Skip to content

Instantly share code, notes, and snippets.

View wangzaixiang's full-sized avatar

wangzaixiang wangzaixiang

View GitHub Profile
@wangzaixiang
wangzaixiang / SensitiveWordUtil.scala
Last active July 9, 2021 12:59
一个高效的敏感词过滤实现,同时也演示一下 FP 的简洁和强大
package demo
import java.lang
import java.util.regex.Pattern
import scala.annotation.tailrec
import scala.collection.{BitSet, mutable}
import scala.io.Source
trait SensitiveEngine {
import java.lang.management.{ManagementFactory, MemoryUsage}
import java.util.concurrent.CountDownLatch
import java.util.concurrent.atomic.AtomicInteger
object Main {
def main(args: Array[String]): Unit = {
Thread.startVirtualThread { () =>
println(s"Hello ${Thread.currentThread()}")
@wangzaixiang
wangzaixiang / RegExpTest.scala
Created December 10, 2019 02:35
A simple compare for HyperScan and JavaPattern. It looks the Java Pattern is faster than HS. what is the problem?
import java.util
import java.util.regex.Pattern
import com.gliwka.hyperscan.wrapper._
object Main {
val regexp = """(?s)\[(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}.\d{3})\] \[([^\[\]]+)\] \[([^\[\]]+)\] \[([^\[\]]+)\] - \[(traceId:|t:)(.*) (spanId:|s:)(-?[A-Fa-f0-9]*) (pSpanId:|p:)(-?[A-Fa-f0-9]*)] (.*)$"""
val line = "[2019-12-09 14:39:29.298] [INFO] [Logging-Thread-1] [com.yunji.scs.appprice.service.PriceApplicationForAppServiceImpl] - [t: s: p:] log msg"
@wangzaixiang
wangzaixiang / index.html
Created November 13, 2019 13:39
Webcomponent + Shadow DOM performance test
<meta name="viewport" content="width=device-width">
<script src="node_modules/@webcomponents/webcomponentsjs/webcomponents-bundle.js"></script>
<script type="module" src="my-element.js"></script>
<script type="module" src="sku.js"></script>
<script>
// document.onscroll = function(event){
// var msg = document.getElementById("msg");
// // console.info("document scroll " , event);
// msg.innerHTML = "scroll event: " + event.timeStamp;
@wangzaixiang
wangzaixiang / SelectorDemo.java
Last active November 26, 2017 11:51
这是一个很好的selector例子,也发现了一个bug,当连接一次后, selector会进入不等待死循环。原因是 accept后注册了 OP_CONNECT错误,但这个导致错误返回是否应该算JDK的一个bug呢?
package com.demo;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.*;
import java.util.Iterator;
/**
* Created by ever on 2017/11/24.
@wangzaixiang
wangzaixiang / test-webcomponents.html
Created December 8, 2016 07:50
Web Components (V1) Demo
<!-- only for polyfill
<script src="custom-elements/src/custom-elements.js"></script>
-->
<style>
body {
margin: 0;
}
/* Style the element from the outside */
package demo
import scala.tools.nsc.io.AbstractFile
import scala.tools.nsc.{Global, Phase}
import scala.tools.nsc.plugins.{Plugin, PluginComponent}
class DemoPlugin(val global: Global) extends Plugin {
import global._
override def init(options: List[String], error: String => Unit): Boolean = true
@wangzaixiang
wangzaixiang / mysql-lock-waiting.sh
Created November 24, 2016 12:19
a script to capture information for mysql lock waiting
#!/bin/bash
# crontab
# * * * * * /home/wangzx/mysql-lock-wait/mysql_lock_wait_check.sh
function run_lock_wait() {
now=`date +%s`
seq=$(( $now / 30 % 600 )) # rotate 600 log file in 5 hours
logfile=~/mysql-lock-wait/log/mysql_lock_wait-$seq.log
@wangzaixiang
wangzaixiang / VolatileTest.java
Created June 18, 2014 11:05
Just for test the anti-volatile example, see http://ifeve.com/java-memory-model-1/
package volatile_demo;
import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;
public class Test2 {
int a = 0;
int b = 0;
package fbw
object FizzBuzzWhizz {
implicit class RichBoolean(bool: Boolean) {
def option[T](value:T) = if(bool) Some(value) else None
}
implicit class RichOption[T](option:Option[T]) {
def elseFlatMap(value: =>Option[T]) = option match {
case Some(_) => option